Điểm:1

Làm cách nào để tạo khóa cho AES với độ dài khóa 192 bit từ mật khẩu?

lá cờ mu

Hãy nói rằng tôi có một mật khẩu. Và nó an toàn. Nhưng đó là một chuỗi 10 ký tự.

Vì vậy, nếu tôi muốn tạo khóa AES cho phiên bản 128-bit của thuật toán, tôi chỉ cần băm nó bằng MD5. Hoặc nếu tôi muốn phiên bản 256 của thuật toán, tôi sẽ băm nó với bất kỳ hàm băm nào có độ dài 256, chẳng hạn như Sha_256. Nhưng tôi không thể tìm thấy bất kỳ hàm băm nào (ngoài một số tên là Tiger) tạo ra đầu ra 192 bit.Bất kể muối hay các bước trước đó trong quy trình tạo khóa, bước cuối cùng dường như luôn là hàm băm trả về khóa có độ dài mong muốn.

Là giải pháp thông thường để luôn sử dụng cùng một hàm băm (giả sử Sha256) và chỉ lấy số bit cần thiết cho khóa? Nếu không, thì làm thế nào cho 192?

Marc Ilunga avatar
lá cờ tr
Thực sự không nên sử dụng md5 của sha256 để tạo khóa từ mật khẩu. Trừ khi mật khẩu được tạo ngẫu nhiên, tốt nhất là sử dụng hàm băm mật khẩu chậm như argon2 (https://en.wikipedia.org/wiki/Argon2). Điều này cũng cho phép bạn chọn độ dài của đầu ra. Ngoài ra, đầu ra của hàm băm mật khẩu an toàn có thể được cắt bớt theo độ dài mong muốn.
lá cờ mu
Vâng. Cảm ơn về thông tin bạn vừa nhập!
Điểm:2
lá cờ in

Hãy nói rằng tôi có một mật khẩu. Và nó an toàn. Nhưng đó là một chuỗi 10 ký tự.

Nếu chúng tôi cho rằng tất cả 10 ký tự đều là ASCII (không mở rộng), bạn sẽ nhận được nhiều nhất Không gian tìm kiếm 64-bit cho kẻ tấn công. Điều này có nghĩa là bạn đang sử dụng hiệu quả khóa 64 bit cho AES-128. quy tắc là

  • Không chỉ kích thước khóa mà cả entropy của nguồn khóa cũng quan trọng.

Cách phổ biến là tạo 128 bit ngẫu nhiên thống nhất cho khóa AES-128. Điều này thật dễ dàng nếu bạn đang sử dụng một trao đổi khóa như DH (cuối cùng cũng băm nó - Nó làm rò rỉ Legendre) hoặc ECDH (cũng băm nó, các điểm không đồng nhất ngẫu nhiên)

Nếu bạn đang sử dụng mật khẩu, thì bạn cũng cần một nguồn entropy tốt cho mật khẩu của mình. Sử dụng diwewire với 10 từ để có entropy 128-bit. Khi bạn đã có thứ này, việc sử dụng thuật toán băm mật khẩu để làm chậm những kẻ tấn công không thực sự quan trọng vì bạn đã có 128-bit (bạn vẫn cần băm mật khẩu vì nó rất dài). Nếu bạn đang sử dụng băm mật khẩu thì cách của kẻ tấn công sẽ là cách nhanh nhất; họ sẽ cưỡng bức khóa chứ không phải mật khẩu.

Bây giờ, nếu bạn không có cơ hội tăng nguồn entropy của mật khẩu thì bạn chắc chắn cần các thuật toán băm mật khẩu như băm Argon2 và Balloon. Chúng có các thông số như

  • sự lặp đi lặp lại; tăng thời gian tấn công tỷ lệ thuận với lần lặp.
  • độ cứng bộ nhớ; loại bỏ/giảm tìm kiếm mật khẩu lớn của tìm kiếm ASIC/PFGA/GPU nơi bộ nhớ không bị ràng buộc như CPU
  • và, máy đếm sợi; làm giảm song song hóa các chương trình tìm kiếm mật khẩu.

Tất cả các tham số cần được điều chỉnh để đạt được mục tiêu bảo mật của bạn. Ví dụ: nếu mật khẩu của bạn có bảo mật 100-bit thì bạn cần $2^{28}$ lặp lại để buộc kẻ tấn công tìm kiếm 128-bit.

Làm cách nào để tạo khóa cho AES với độ dài khóa 192 bit từ mật khẩu?

  • Sử dụng 15 từ Dicewire, băm nó sau đó cắt thành 192 bit hoặc

  • Sử dụng mật khẩu của bạn với muối và băm mật khẩu bằng thuật toán băm mật khẩu như Argon2 với các tham số được điều chỉnh tốt. Chúng đã được thiết kế và bạn có thể tìm thấy thư viện độ dài đầu ra mong muốn đó (hãy nhớ rằng Bảo mật của Argon2 bị giới hạn bởi 512-bit ). Và;

    • Sử dụng muối duy nhất cho mỗi khóa được tạo
    • Sử dụng càng nhiều entropy càng cao
    • Sử dụng càng nhiều thông số càng cao
lá cờ mu
Cám ơn vì đã giải thích. Bản thân mật khẩu sẽ không được tạo bởi con người mà là một thuật toán bảo mật bằng mật mã (ít nhất là theo php) và mật khẩu này sẽ được chuyển thành 512 bit được biểu thị dưới dạng chuỗi hex. Tôi đã sử dụng mật khẩu làm ví dụ vì thiếu hiểu biết. Bởi vì những gì tôi muốn biết là làm thế nào để có được độ dài thích hợp. Nhưng nếu tôi hiểu chính xác lời giải thích của bạn, thì chỉ cần băm chuỗi hoặc loại bỏ các bit ở cuối để sử dụng làm khóa là đủ, phải không?
kelalaka avatar
lá cờ in
Có, về lý thuyết, tất cả các bit của đầu ra của hàm băm mật mã tốt đều phụ thuộc vào tất cả các giá trị đầu vào. Cắt xén là một cách phổ biến như SHA512/256 được cắt xén SHA-512 (với các giá trị ban đầu khác nhau để phân tách miền).

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