Điểm:0

Đưa khóa về 256 bit bằng thuật toán băm

lá cờ us

Ví dụ: nếu tôi sử dụng Rijndael để mã hóa, tôi phải chỉ định khóa có độ dài nhất định. Để thuận tiện cho người dùng, tôi muốn người dùng có thể sử dụng khóa có độ dài bất kỳ. Sau đó, để lấy khóa theo độ dài yêu cầu của thuật toán, tôi xây dựng giá trị băm, sau đó tôi sử dụng giá trị này để mã hóa và giải mã. Tính bảo mật của bản mã vẫn được đảm bảo nếu tôi sử dụng SHA-256 chẳng hạn? Tôi có nên đệm phím người dùng và rút ngắn các phím dài không? Cách tốt nhất để có độ dài khóa là 256 bit là gì?

SAI Peregrinus avatar
lá cờ si
Bạn đang sử dụng thư viện mật mã nào? Nó sẽ cung cấp Hàm dẫn xuất khóa (KDF) chẳng hạn như HKDF-SHA256 hoặc nếu bạn đang sử dụng mật khẩu người dùng thì Hàm dẫn xuất khóa dựa trên mật khẩu chẳng hạn như Argon2id. SHA256 không an toàn cho việc sử dụng riêng, nhưng có thể được sử dụng trong KDF, chẳng hạn như HKDF-SHA256. Ngoài ra tại sao Rijndael thay vì AES? Bạn đang sử dụng chế độ hoạt động nào, tại sao không phải là AES-GCM-SIV, AES-GCM hoặc ChaCha20-Poly1305? Mã hóa bằng bất kỳ thứ gì khác ngoài một trong 3 thứ đó là đáng ngờ và cần được chứng minh.
Luqus avatar
lá cờ us
Tôi sử dụng thư viện mật mã Java với thuật toán AES ở chế độ CBC (Rijndael).Tính bảo mật của thuật toán là đủ đối với tôi trong thời điểm hiện tại, tôi quan tâm đến hàm băm như một khóa.
SAI Peregrinus avatar
lá cờ si
Có rất nhiều thư viện mật mã Java. Chế độ CBC chưa được xác thực đó dường như dễ dàng có sẵn là một dấu hiệu xấu cho khả năng sử dụng và bảo mật của bất kỳ chế độ nào bạn chọn.
Luqus avatar
lá cờ us
Tôi đang sử dụng [thư viện javax.crypto.Cipher](https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html) tiêu chuẩn, rất có thể không độc hại.
SAI Peregrinus avatar
lá cờ si
Tôi không nói nó độc hại, tôi nói nó được thiết kế tồi. Nó cung cấp các lựa chọn không an toàn một cách dễ dàng (ví dụ: chế độ ECB & CBC là bắt buộc, nhưng các chế độ an toàn như GCM và SIV là tùy chọn) và thậm chí bao gồm các mật mã bị phá vỡ hoàn toàn như RC2 và RC4. Không phải là nó độc hại, mà là nó được thiết kế để dễ dàng làm hỏng một cách thảm khốc. So sánh với thứ gì đó như libsodium được thiết kế để làm cho nó khó bị hỏng, trong khi cả hai đều có thể có cùng mức độ bảo mật nếu bạn đưa ra lựa chọn tốt thì việc đưa ra lựa chọn tồi với libsodium sẽ khó hơn nhiều.
Điểm:2
lá cờ si

SHA-256 không phải là Hàm dẫn xuất khóa (KDF) và không nên được sử dụng làm hàm này.

SHA-256 có thể là một phần của KDF, chẳng hạn như HKDF-SHA256 sử dụng HMAC-SHA256 lần lượt sử dụng SHA256. HKDF phải tuân theo lạm dụng có thể phá vỡ tính bảo mật của nó, hãy chắc chắn rằng bạn đang sử dụng nó đúng cách (nếu bạn sử dụng nó).

HKDF là CHỈ PHÙ HỢP VỚI ĐẦU VÀO CÓ ENTROPY CAO, giống như các khóa khác hoặc là kết quả của sự trao đổi Elliptic Curve Diffie Hellman. Nếu bạn đang lấy khóa từ mật khẩu, bạn cần có chức năng tạo khóa dựa trên mật khẩu như Argon2id.

baro77 avatar
lá cờ gd
liên kết blog tuyệt vời! (y)
Điểm:0
lá cờ gd

Nếu bạn cần bảo mật được cung cấp bởi mật khẩu entropy 256 bit, thì việc băm một mình sẽ không giúp ích gì cho bạn nếu khóa bắt đầu < 256 bit entropy vì băm là các hàm nhanh, do đó, việc kiểm tra khóa gốc từ không gian kích thước đã giảm của nó hoặc khóa được băm gần như giống nhau . Hàm dẫn xuất khóa (còn gọi là CPU và/hoặc các hàm cứng bộ nhớ/lưu trữ) có thể giảm thiểu sự cố, nhưng chỉ từ quan điểm tính toán, không phải lý thuyết (vì vậy, điều quan trọng là bạn hy vọng được KDF trợ giúp trong bao lâu). Tất nhiên, nếu mật khẩu ban đầu> 256 bit và 256 bit là đủ cho bạn, thì SHA256 vẫn ổn, nhưng tôi đoán đó không phải là trường hợp người dùng thực tế;)

SAI Peregrinus avatar
lá cờ si
Bạn đã nhầm lẫn giữa KDF và PBKDF. KDF vẫn còn nhanh, PBKDF gặp khó khăn trong việc điều chỉnh.
baro77 avatar
lá cờ gd
Bạn nói đúng, xin lỗi OP và cảm ơn bạn đã làm rõ!

Đă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.