Bảo mật nghiêm trọng: MD5 được coi là có hại – theo mức giá thông minh dữ liệu PlatoBlockchain trị giá 600,000 USD. Tìm kiếm dọc. Ái.

An ninh nghiêm trọng: MD5 được coi là có hại – với giá 600,000 đô la

Trong một cuộc thảo luận pháp lý hấp dẫn được đưa ra bởi cơ quan quản lý bảo vệ dữ liệu của Pháp CNIL (Ủy ban Nationale de l'Informatique et des Libertés), công ty năng lượng Électricité de France, viết tắt là EDF, đã bị phạt 600,000 EUR (khoảng $ 600,000).

Tuyên bố pháp lý, theo cách thức của những điều như vậy, khá dài và (ít nhất là đối với những người không phải là luật sư) về mặt ngôn ngữ, có nghĩa là bạn cần có trình độ tiếng Pháp hợp lý để hiểu tất cả các vấn đề trong và ngoài vấn đề, nhưng trường hợp tổng thể quy về bốn vi phạm.

Ba phần đầu tiên liên quan đến các tương tác liên quan đến dữ liệu chung với khách hàng, bao gồm:

  • Gửi email tiếp thị thương mại mà không có sự đồng ý thích hợp.
  • Thu thập dữ liệu mà không làm rõ những gì hoặc tại sao.
  • Không xử lý các yêu cầu một cách đáng tin cậy khi khách hàng yêu cầu xem dữ liệu của họ, hoặc yêu cầu xóa dữ liệu đó.

Nhưng đó là lời phàn nàn cuối cùng khơi gợi sự quan tâm của chúng tôi: Sur le manquement à l'obligation d'assurer la sécurité des données.

Trong tiếng Anh, điều này được dịch một cách lỏng lẻo là thất bại trong việc lưu trữ dữ liệu một cách an toànvà liên quan rất cụ thể đến việc xử lý mật khẩu không an toàn.

MD5 được coi là có hại

Cơ quan quản lý lưu ý, trong số những điều khác, rằng mặc dù tuyên bố rằng đó là mật khẩu muối và sau đó băm bằng thuật toán băm được chấp nhận, EDF vẫn có hơn 25,000 mật khẩu của người dùng được “bảo mật” bằng một hàm băm MD5 duy nhất vào tháng 2022 năm XNUMX.

Như bạn đã nghe nhiều lần về Naked Security, việc lưu trữ hàm băm mật mã của mật khẩu có nghĩa là bạn có thể xác thực mật khẩu khi nó được trình bày đơn giản bằng cách tính toán lại hàm băm của nó và so sánh nó với hàm băm của mật khẩu được chọn ban đầu.

Nếu các giá trị băm khớp với nhau, thì bạn có thể suy ra một cách an toàn rằng mật khẩu khớp với nhau mà không cần lưu trữ mật khẩu thực.

Khi được trình bày, mật khẩu chỉ cần được giữ tạm thời trong bộ nhớ và có thể bị hủy ngay sau khi hàm băm của nó được tính toán.

Miễn là thuật toán băm được coi là an toàn về mặt mật mã, nó không thể được “chạy ngược lại” một cách hữu ích, vì vậy bạn không thể làm việc ngược lại từ hàm băm để tiết lộ bất kỳ điều gì về chính mật khẩu. (Một hàm băm của loại này được biết đến trong biệt ngữ là một chức năng một chiều.)

Tương tự như vậy, một thuật toán băm phù hợp sẽ ngăn bạn bắt đầu với một hàm băm đã biết và tạo ra một số giá trị đầu vào – bất kỳ đầu vào nào, không nhất thiết phải là mật khẩu ban đầu – tạo ra hàm băm mong muốn.

Bạn sẽ cần phải thử đầu vào này đến đầu vào khác cho đến khi bạn gặp may mắn, điều này đối với các hàm băm thậm chí 128 bit sẽ mất quá nhiều thời gian để trở thành một cuộc tấn công khả thi. (Một hàm băm với biện pháp phòng ngừa an toàn không cho phép bạn tìm ra nhiều đầu vào với cùng một đầu ra được cho là chống va chạm.)

Nhưng MD5, như bạn có thể biết, có vấn đề nghiêm trọng với xung đột, cũng như người kế vị trực tiếp SHA-1 (cả hai hàm băm này đều xuất hiện vào đầu những năm 1990).

Ngày nay, không có thuật toán nào được khuyến nghị sử dụng ở mọi nơi, bởi bất kỳ ai, cho bất kỳ mục đích nào, vì có những giải pháp thay thế tương tự nhưng vẫn an toàn có thể dễ dàng sử dụng để thay thế chúng, chẳng hạn như SHA-256 và SHA-512:

Băm MD5 dài 128 bit hoặc 16 byte. SHA-256 và SHA-512 dài gấp 2 lần và gấp 4 lần. Nhưng không phải chỉ riêng chiều dài băm bổ sung này đã làm cho chúng phù hợp hơn. Ưu điểm chính của chúng so với MD5 là chúng không có bất kỳ vấn đề cụ thể nào đã biết về xung đột, do đó, tính an toàn mật mã của chúng thường không được coi là đáng nghi ngờ.

muối và kéo dài

Nói tóm lại, bạn sẽ không mong đợi bất kỳ công ty nào, chứ đừng nói đến một công ty khổng lồ trong lĩnh vực năng lượng như EDF, sử dụng MD5 cho bất kỳ mục đích mã hóa nào, chứ đừng nói đến việc bảo mật mật khẩu.

Tuy nhiên, tệ hơn nữa là việc thiếu ướp muối, là nơi mà một đoạn dữ liệu được chọn ngẫu nhiên cho mỗi người dùng được trộn lẫn với mật khẩu trước khi hàm băm của nó được tính toán.

Lý do của một loại muối rất đơn giản: nó đảm bảo rằng các giá trị băm của các mật khẩu tiềm năng không thể được tính toán trước và sau đó mang theo để trợ giúp cho một cuộc tấn công.

Không có muối, mỗi khi bất kỳ người dùng nào chọn mật khẩu 123456, những kẻ lừa đảo biết trước giá trị băm của nó sẽ là bao nhiêu.

Ngay cả khi người dùng chọn một mật khẩu phù hợp hơn, chẳng hạn như 34DF6467!Lqa9, bạn có thể biết trước rằng hàm băm MD5 của nó sẽ là 7063a00e 41866d47 f6226e60 67986e91.

Nếu bạn có một danh sách đủ dài gồm các mật khẩu được tính toán trước hoặc các mật khẩu được tính toán một phần (được gọi một cách khá hoa mỹ trong thuật ngữ là bàn cầu vồng), bạn có thể khôi phục mật khẩu qua bảng thay vì thử hàng nghìn tỷ kết hợp mật khẩu cho đến khi gặp may.

Salting có nghĩa là bạn sẽ cần một bảng cầu vồng hoàn chỉnh, được tính toán trước cho mọi người dùng (bảng được xác định bằng tổ hợp muối + mật khẩu) và bạn sẽ không thể tính toán từng bảng cầu vồng – một nhiệm vụ có thể mất vài tuần và chiếm hàng terabyte dung lượng ổ đĩa – cho đến khi bạn vẫn khôi phục được muối,

Nhưng bạn cần phải làm nhiều hơn nữa.

Ngay cả khi bạn bao gồm một muối, do đó không thể sử dụng “từ điển băm” được tính toán trước và bạn sử dụng thuật toán mã hóa đáng tin cậy như SHA-512, thì chỉ một phép tính băm cũng đủ nhanh để những kẻ tấn công có được cơ sở dữ liệu băm có thể vẫn thử hàng tỷ mật khẩu có thể có trong một giây hoặc thậm chí nhiều hơn.

Vì vậy, bạn nên sử dụng những gì được gọi là kéo dài đồng thời, nơi bạn không chỉ nhập mật khẩu ban đầu mà còn chuyển thông tin đầu vào qua thuật toán băm hàng nghìn lần trở lên trong một vòng lặp, do đó khiến các cuộc tấn công tốn nhiều thời gian hơn đáng kể đối với bất kỳ kẻ gian nào muốn thử.

Không giống như phép cộng lặp đi lặp lại, nơi bạn có thể sử dụng một phép nhân đơn lẻ làm phím tắt để thay thế, chẳng hạn như phép tính 5+5+5+5+5+5 bằng 6×5, không có phím tắt nào cho phép băm lặp lại. Để băm một đầu vào 1000 lần cần 1000 “lượt” xử lý tính toán mật mã.

Không chỉ là vấn đề MD5

Trớ trêu thay, có vẻ như mặc dù EDF chỉ có 25,800 mật khẩu được băm bằng MD5 và tuyên bố để bảo vệ rằng thay vào đó, nó chủ yếu sử dụng SHA-512, nhưng nó vẫn không phải lúc nào cũng muối hoặc kéo dài các hàm băm được lưu trữ.

Cơ quan quản lý báo cáo rằng 11,200,000 mật khẩu đã được muối và băm chính xác, nhưng vẫn có 2,400,000 mật khẩu chỉ được băm trực tiếp một lần, cho dù với MD5 hay SHA-512.

Rõ ràng, EDF hiện đã có kho lưu trữ mật khẩu đầy đủ, nhưng dù sao thì công ty cũng đã bị phạt 600,000 EUR và sẽ vẫn được niêm yết công khai trực tuyến trên “bước đi nghịch ngợm” của CNIL trong hai năm tới.

Chúng tôi không thể chắc chắn mức phạt nào sẽ được áp dụng nếu phán quyết chỉ liên quan đến việc băm kém và EDF cũng không phải trả lời về ba vi phạm bảo vệ dữ liệu khác được liệt kê ngay từ đầu…

…nhưng nó cho thấy rằng các lựa chọn mã hóa tồi có thể khiến bạn mất tiền theo nhiều cách!

Phải làm gì?

Lưu trữ mật khẩu của khách hàng của bạn an toàn!

Chi phí tính toán bổ sung của quá trình muối và kéo dài có thể được chọn để người dùng cá nhân không gặp bất tiện khi họ đăng nhập, nhưng những kẻ tấn công tiềm năng sẽ tăng tốc độ tấn công của họ lên vài bậc độ lớn.

Về lý thuyết, một cuộc tấn công khôi phục mật khẩu có thể mất một tuần để trích xuất 10% mật khẩu được lưu trữ dưới dạng băm một lần đơn giản, sẽ mất 200 năm (10,000 tuần) nếu bạn định tính chi phí tính toán cho mỗi mật khẩu dùng thử khó hơn gấp 10,000 lần .

đọc của chúng tôi bài viết giải thích xuất sắc về chính chủ đề này:

Tóm lại, chúng tôi khuyên bạn nên PBKDF2 thuật toán “kéo dài” với SHA-256 làm hàm băm cốt lõi của nó, với giá trị ngẫu nhiên cho mỗi người dùng salt of 16 bytes (128 bit) trở lên.

Điều này phù hợp với các khuyến nghị trong phán quyết mới nhất của CNIL.

CNIL không đưa ra lời khuyên về số lần lặp lại PBKDF2, nhưng như bạn sẽ thấy trong bài viết của chúng tôi, lời khuyên của chúng tôi (tháng 2022 năm XNUMX) là sử dụng 200,000 or more. (Bạn có thể thường xuyên tăng số vòng lặp để theo kịp sự gia tăng sức mạnh tính toán.)

Nếu bạn không muốn sử dụng PBKDF2, chúng tôi khuyên bạn nên đọc các thuật toán bcrypt, scryptArgon2 để giúp bạn có sự lựa chọn sáng suốt.

Đừng để bị cuốn vào bước nghịch ngợm mật mã!


Dấu thời gian:

Thêm từ An ninh trần trụi