Thuật toán mật mã bị lỗi hoặc rủi ro

Danh mục OWASP: MASVS-CRYPTO: Mật mã học

Tổng quan

Mặc dù phương thức mã hoá được sử dụng rộng rãi để bảo vệ tính bảo mật và tính toàn vẹn của dữ liệu, nhưng vẫn có một rủi ro đáng kể khi nhà phát triển vô tình triển khai các thuật toán mã hoá yếu hoặc lỗi thời. Lỗ hổng này xuất phát từ những điểm yếu vốn có trong các thuật toán này, có thể bị những kẻ xấu có đủ sức mạnh tính toán hoặc kiến thức cần thiết khai thác. Hậu quả của việc khai thác như vậy có thể rất nghiêm trọng, có khả năng dẫn đến truy cập trái phép, rò rỉ dữ liệu và thao túng thông tin nhạy cảm.

Tác động

Dữ liệu nhạy cảm có thể bị lộ, sửa đổi hoặc giả mạo. Các thuật toán mật mã bị hỏng hoặc rủi ro có thể dẫn đến các lỗ hổng và có thể bị lợi dụng để giải mã thông tin nhạy cảm, giả mạo dữ liệu hoặc mạo danh các thực thể hợp pháp. Tác động của việc khai thác những lỗ hổng bảo mật như vậy có thể từ rò rỉ dữ liệu và tổn thất tài chính đến tổn hại danh tiếng và mất lòng tin của người dùng.

Rủi ro: Hàm băm mật mã yếu hoặc bị hỏng

Việc sử dụng các hàm băm mật mã yếu hoặc bị hỏng (chẳng hạn như MD5 hoặc SHA1) gây ra rủi ro đáng kể cho tính bảo mật và tính toàn vẹn của dữ liệu. Hàm băm được thiết kế để tạo dấu vân tay (băm) duy nhất có độ dài cố định cho dữ liệu đầu vào, giúp hàm này hữu ích cho nhiều mục đích, bao gồm cả xác minh tính toàn vẹn của dữ liệu, lưu trữ mật khẩu và chữ ký số. Tuy nhiên, khi các hàm băm yếu hoặc bị xâm nhập được sử dụng, một số lỗ hổng có thể phát sinh:

  • Tấn công xung đột: Các hàm băm yếu dễ bị tấn công xung đột, trong đó kẻ tấn công tìm thấy 2 đầu vào khác nhau tạo ra cùng một giá trị băm. Điều này có thể cho phép chúng thay thế dữ liệu độc hại bằng dữ liệu hợp pháp mà không bị phát hiện, làm ảnh hưởng đến tính toàn vẹn của dữ liệu.
  • Sự cố rò rỉ dữ liệu: Nếu mật khẩu được băm bằng một thuật toán yếu, thì việc xâm nhập thành công vào một hệ thống có thể dẫn đến việc lộ thông tin xác thực của người dùng. Sau đó, kẻ tấn công có thể sử dụng bảng cầu vồng hoặc các kỹ thuật khác để bẻ khoá mật khẩu, giành quyền truy cập trái phép vào tài khoản.
  • Chối bỏ chữ ký số: Các hàm băm yếu được dùng trong chữ ký số có thể bị khai thác để tạo chữ ký giả, gây khó khăn cho việc xác định tính xác thực và tính toàn vẹn của tài liệu hoặc thông báo.

Giải pháp giảm thiểu

Để giảm thiểu những rủi ro này, bạn cần sử dụng các hàm băm mật mã học mạnh mẽ, được kiểm tra kỹ lưỡng như SHA-2 hoặc SHA-3, đồng thời cập nhật các hàm này khi phát hiện thấy lỗ hổng bảo mật mới. Ngoài ra, việc áp dụng các phương thức bảo mật như thêm chuỗi ngẫu nhiên vào mật khẩu và sử dụng các thuật toán băm dành riêng cho mật khẩu như bcrypt hoặc Argon2 có thể tăng cường khả năng bảo vệ dữ liệu.


Rủi ro: Các hàm mã hoá yếu hoặc bị hỏng

Việc sử dụng các hàm mã hoá mật mã yếu hoặc bị hỏng (chẳng hạn như DES hoặc RC4) gây ra những rủi ro nghiêm trọng đối với tính bảo mật của dữ liệu nhạy cảm. Mã hoá được thiết kế để bảo vệ thông tin bằng cách chuyển đổi thông tin đó sang định dạng không đọc được, nhưng nếu thuật toán mã hoá có lỗi, thì những biện pháp bảo vệ này có thể bị bỏ qua:

  • Rò rỉ dữ liệu: Các thuật toán mã hoá yếu dễ bị tấn công theo nhiều cách, bao gồm cả tấn công dò tìm, tấn công văn bản gốc đã biết và kỹ thuật phân tích mật mã. Nếu thành công, những cuộc tấn công này có thể làm lộ dữ liệu đã mã hoá, cho phép truy cập trái phép vào thông tin nhạy cảm như thông tin cá nhân, hồ sơ tài chính hoặc dữ liệu bí mật của doanh nghiệp.
  • Thao tác và giả mạo dữ liệu: Ngay cả khi không thể giải mã hoàn toàn dữ liệu, kẻ tấn công vẫn có thể thao tác dữ liệu mà không bị phát hiện nếu thuật toán mã hoá yếu. Điều này có thể dẫn đến việc sửa đổi dữ liệu trái phép, có khả năng dẫn đến hành vi gian lận, trình bày sai hoặc các hoạt động độc hại khác.

Giải pháp giảm thiểu

Sử dụng thuật toán mật mã học mạnh trong các hàm mã hoá

Để giảm thiểu những rủi ro này, bạn cần sử dụng các thuật toán mã hoá mạnh, được kiểm tra kỹ lưỡng và làm theo các phương pháp hay nhất để quản lý khoá và triển khai hoạt động mã hoá. Việc cập nhật thường xuyên các thuật toán mã hoá và nắm bắt thông tin về các mối đe doạ mới nổi cũng rất cần thiết để duy trì tính bảo mật mạnh mẽ cho dữ liệu.

Một số thuật toán mặc định được đề xuất để sử dụng:

  • Mã hoá đối xứng:
    • AES-128/AES-256 ở chế độ GCM
    • Chacha20
  • Mã hoá bất đối xứng:
    • RSA-2048/RSA-4096 với khoảng đệm OAEP

Sử dụng các thành phần cơ bản bảo mật trong thư viện mật mã học để giảm các lỗi thường gặp

Mặc dù việc chọn một thuật toán mã hoá phù hợp là rất quan trọng, nhưng để thực sự giảm thiểu các lỗ hổng bảo mật, hãy cân nhắc sử dụng một thư viện mật mã học cung cấp API tinh giản và nhấn mạnh các cấu hình mặc định an toàn. Phương pháp này không chỉ tăng cường tính bảo mật cho các ứng dụng của bạn mà còn giảm đáng kể khả năng xuất hiện các lỗ hổng do lỗi mã hoá. Ví dụ: Tink đơn giản hoá các lựa chọn mã hoá bằng cách cung cấp 2 lựa chọn riêng biệt: mã hoá AEADHybrid, giúp nhà phát triển dễ dàng đưa ra quyết định sáng suốt về bảo mật.


Rủi ro: Các hàm chữ ký mật mã yếu hoặc bị hỏng

Việc sử dụng các hàm chữ ký mật mã yếu hoặc bị hỏng (chẳng hạn như RSA-PKCS#1 v1.5 hoặc các hàm dựa trên hàm băm yếu) gây ra những rủi ro nghiêm trọng cho tính toàn vẹn của dữ liệu và thông tin liên lạc. Chữ ký số được thiết kế để cung cấp tính năng xác thực, chống chối bỏ và tính toàn vẹn dữ liệu, đảm bảo rằng một thông báo hoặc tài liệu đến từ một người gửi cụ thể và không bị giả mạo. Tuy nhiên, khi thuật toán chữ ký cơ bản có lỗi, những đảm bảo này có thể bị xâm phạm:

  • Giả mạo chữ ký: Thuật toán chữ ký yếu có thể dễ bị tấn công, cho phép kẻ xấu tạo chữ ký giả mạo. Điều này có nghĩa là họ có thể mạo danh các pháp nhân hợp pháp, làm giả tài liệu hoặc giả mạo thư mà không bị phát hiện.
  • Chối bỏ chữ ký: Nếu một thuật toán chữ ký bị xâm nhập, người ký có thể tuyên bố sai rằng họ không ký một tài liệu, làm suy yếu nguyên tắc không thể chối bỏ và gây ra những thách thức về pháp lý và hậu cần.
  • Thao tác và giả mạo dữ liệu: Trong trường hợp chữ ký được dùng để bảo vệ tính toàn vẹn của dữ liệu, một thuật toán yếu có thể cho phép kẻ tấn công sửa đổi dữ liệu mà không làm mất hiệu lực chữ ký, dẫn đến việc giả mạo không bị phát hiện và có khả năng xâm phạm thông tin quan trọng.

Giải pháp giảm thiểu

Sử dụng các thuật toán chữ ký mật mã mạnh

Để giảm thiểu những rủi ro này, bạn cần sử dụng các thuật toán chữ ký mật mã học mạnh mẽ và được kiểm tra kỹ lưỡng:

  • RSA-2048/RSA-4096 với khoảng đệm PSS
  • Thuật toán chữ ký số đường cong elip (ECDSA) với các đường cong bảo mật

Sử dụng các thành phần cơ bản bảo mật trong thư viện mật mã học để giảm các lỗi thường gặp

Việc chọn đúng thuật toán chữ ký là điều cần thiết, nhưng để thực sự giảm thiểu các lỗ hổng bảo mật, hãy cân nhắc sử dụng một thư viện mật mã học cung cấp các biện pháp đảm bảo bảo mật mạnh mẽ theo mặc định. Ví dụ: Tink giúp đơn giản hoá các lựa chọn chữ ký bằng cách cung cấp ECDSA với các đường cong bảo mật làm lựa chọn mặc định, tất cả đều nằm trong một API đơn giản và toàn diện. Cách tiếp cận này không chỉ tăng cường tính bảo mật mà còn đơn giản hoá quá trình phát triển bằng cách loại bỏ nhu cầu về cấu hình hoặc việc đưa ra quyết định phức tạp.


Tài nguyên