Điểm:0

AES GCM với PBKDF2 100 nghìn lần lặp lại có còn ổn kể từ năm 2022 không?

lá cờ us

Việc sử dụng AES GCM với PBKDF2 và 100 000 lần lặp có còn được coi là an toàn kể từ năm 2022 không?

Trong mô hình mối đe dọa của chúng tôi, nếu chúng tôi bỏ qua các rủi ro liên quan đến điện toán lượng tử, điều này có an toàn không?

Đây là một ví dụ về triển khai Python đang hoạt động:

nhập Crypto.Random, Crypto.Protocol.KDF, Crypto.Cipher.AES
bản rõ = b"xin chào thế giới xin chào thế giới xin chào thế giới xin chào thế giới xin chào thế giới"
mật khẩu = b"ghim pin ngựa chính xác"
nonce = Crypto.Random.new().read(16)
khóa = Crypto.Protocol.KDF.PBKDF2(mật khẩu, nonce, đếm=100000)
cipher = Crypto.Cipher.AES.new(key, Crypto.Cipher.AES.MODE_GCM, nonce=nonce, mac_len=16)
ciphertext = (nonce,) + cipher.encrypt_and_digest(plaintext) # nonce | bản mã | nhãn
in (bản mã)

Lưu ý: sử dụng cùng noncePBKDF2AES.new(...) dường như không có vấn đề gì nếu chúng ta không bao giờ sử dụng lại cái này nonce để mã hóa trong tương lai, xem Tái sử dụng muối PBKDF2 cho AES/GCM dưới dạng IV: nguy hiểm?

forest avatar
lá cờ vn
Những phẩm chất nào cần thiết để nó "vẫn ổn" đối với mô hình mối đe dọa của bạn? Tốt hơn là sử dụng KDF cứng bộ nhớ vì PBKDF2 dễ dàng song song hóa, nhưng nó không giống như nó bị hỏng.
lá cờ us
@forest Bằng "OK", giả sử chống lại kẻ tấn công có ngân sách 1 triệu đô la sức mạnh tính toán tính đến năm 2022 cho nhiệm vụ cụ thể là bẻ khóa một tệp được bảo vệ bằng mật khẩu nhất định :) (và không có quyền truy cập vào điện toán lượng tử).
forest avatar
lá cờ vn
Sau đó, nó phụ thuộc vào mức độ mạnh của mật khẩu. 100.000 vòng PBKDF2 cho một hàm băm nhất định sẽ thêm $\log_2(100000) \approx 16,6$ bit entropy so với một vòng duy nhất của hàm băm đó. Nếu bản thân mật khẩu đã rất mạnh, thì bạn thậm chí không _cần_ PBKDF2. Mục đích duy nhất của KDF chậm là cải thiện tính bảo mật của mật khẩu có độ mạnh cận biên. Nếu mật khẩu của bạn chỉ có 64 bit entropy, thì 1000.000 lần lặp lại có thể sẽ khiến nó nằm ngoài tầm với của kẻ tấn công mà bạn đã mô tả.
lá cờ us
@forest Giả sử mật khẩu là 10 ký tự chữ và số ngẫu nhiên (`a-zA-Z0-9`). Ngày nay, 100 nghìn lần lặp lại PBKDF2 có khiến nó nằm ngoài tầm với của những kẻ tấn công không? Tái bút: Tôi nghĩ nhận xét cuối cùng của bạn có thể được chuyển thành câu trả lời.
Maarten Bodewes avatar
lá cờ in
Bạn có thể tự tính toán, xem ví dụ: [tại đây](https://www.wolframalpha.com/input?i=log_2%28%2826+%2B+26+%2B+10%29+%5E+10%29). Vì vậy, ~59,5 + ~16,6 = 76,1 bit bảo mật, nhưng điều đó giả định rằng mật khẩu hoàn toàn ngẫu nhiên, không chỉ * tìm kiếm ngẫu nhiên * đối với kẻ tấn công. Lưu ý rằng ở trên dựa trên tìm kiếm đầy đủ, do đó, trung bình bạn có ít bảo mật hơn 1 chút (tôi thực sự nên loại bỏ một chút đó).
lá cờ us
Có @MaartenBodewes, tôi tò mò muốn biết có bao nhiêu bit entropy được coi là "mạnh" đối với mật khẩu ngày nay. > 70 bit có vẻ ổn, phải không?
Maarten Bodewes avatar
lá cờ in
Phụ thuộc vào người mà bạn đang chống lại, nhưng hãy nói rằng tôi không nghĩ rằng một hacker thông thường sẽ cố gắng phá vỡ điều đó. Bạn sẽ cần một tổ chức lớn, mạng botnet hoặc chính phủ để hack chỉ một mật khẩu (giả sử bạn đang sử dụng muối ngẫu nhiên), do đó sẽ có quá nhiều chu kỳ CPU bị lãng phí. Một vấn đề là con người không giỏi ghi nhớ mật khẩu hoàn toàn ngẫu nhiên gồm 10 ký tự - và nếu bạn sử dụng trình quản lý khóa thì bạn cũng có thể sử dụng một mật khẩu thậm chí còn mạnh hơn.
forest avatar
lá cờ vn
Đã viết câu trả lời dựa trên một trong những nhận xét của tôi, vì đây có vẻ là cách tốt nhất có thể thực hiện dựa trên thông tin được cung cấp.
Điểm:1
lá cờ vn

Nó hoàn toàn phụ thuộc vào độ mạnh của mật khẩu. 100.000 vòng PBKDF2 cho một mật khẩu có hàm băm nhất định sẽ thêm tương đương với $\log_2(100000) \khoảng 16,6$ các bit entropy so với một vòng duy nhất của hàm băm đó. Nếu bản thân mật khẩu đã rất mạnh, thì bạn thậm chí không cần PBKDF2. Mục đích duy nhất của KDF chậm là cải thiện tính bảo mật của mật khẩu có độ mạnh cận biên. Nếu mật khẩu của bạn chỉ có 64 bit entropy, thì 1000.000 lần lặp lại có thể sẽ khiến kẻ tấn công có \$1 triệu tài sản không thể truy cập mật khẩu đó, vì 64 + 16,6 = 80,6 bit, có thể sẽ tốn nhiều hơn \ 1 triệu đô la để phá vỡ.

Tốt hơn là sử dụng KDF cứng bộ nhớ. Điều này không phải do PBKDF2 bị hỏng mỗi gia nhập, mà là bởi vì kẻ tấn công có thể dễ dàng mở rộng quy mô tấn công hơn do bản thân hàm băm cho phép tính song song cực độ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.