Điểm:2

Argon2 được sử dụng như thế nào để tạo dẫn xuất khóa?

lá cờ us

Theo hiểu biết của tôi, dẫn xuất khóa là khi bạn lấy một số dữ liệu, nói mật khẩu và sử dụng một hàm để chuyển đổi nó thành một số có thể được sử dụng làm khóa bí mật trong mật mã đường cong elip. Argon2 sử dụng một loại muối ngẫu nhiên khi băm, điều này đòi hỏi hàm băm phải khác nhau mỗi lần mặc dù sử dụng cùng một mật khẩu. Nếu hàm băm khác nhau, làm thế nào nó có thể được sử dụng để đại diện cho cùng một khóa bí mật?

kelalaka avatar
lá cờ in
Điều này có trả lời câu hỏi của bạn không? [Mã hóa tệp bằng AES bằng khóa bí mật bắt nguồn từ Argon2](https://crypto.stackexchange.com/questions/75021/encrypt-a-file-with-aes-using-a-secret-key-derived-with -argon2) và bạn lưu trữ thông tin bổ sung.
DannyNiu avatar
lá cờ vu
Những gì bạn mô tả trong câu hỏi thực sự phổ biến với tất cả các KDF hỗ trợ muối.@kelalaka Mặc dù tôi đồng ý rằng câu hỏi được liên kết có một số điểm trùng lặp với câu hỏi này, nhưng cài đặt và bối cảnh hoàn toàn khác so với góc độ hiểu.
kelalaka avatar
lá cờ in
@DannyNiu Tôi đã đề cập rằng _keep thông tin này với..._, nếu OP hỏi tại sao chúng ta nhớ muối, thì câu trả lời là hiển nhiên, PBKDF và KDF đều mang tính xác định, vì vậy nếu bạn nhập các giá trị giống nhau bạn sẽ nhận được kết quả tương tự. Đây là những gì chúng tôi muốn từ Random Oracles, một khi chúng tôi nhận được một giá trị cho một đầu vào, chúng tôi muốn có cùng một giá trị khi chúng tôi hỏi với cùng một đầu vào. và phần cuối cùng `luôn sử dụng một loại muối ngẫu nhiên để băm`... Tôi nghĩ rằng tôi đã đề cập đến tất cả.
kelalaka avatar
lá cờ in
@DannyNiu đã viết một bài để bao gồm tất cả, có thể tôi đã bỏ sót một số phần, mặc dù một số cần phải sao chép và dán...
Manglemix avatar
lá cờ us
@kelalaka câu hỏi đó thực sự trả lời câu hỏi của tôi, cảm ơn
Điểm:2
lá cờ in

Theo hiểu biết của tôi, dẫn xuất khóa là khi bạn lấy một số dữ liệu, nói mật khẩu và sử dụng một hàm để chuyển đổi nó thành một số có thể được sử dụng làm khóa bí mật trong mật mã đường cong elip.

Vâng, điều này đúng, tuy nhiên, hãy nhớ rằng mật khẩu của bạn phải có đủ độ mạnh để bảo vệ khỏi hành vi cưỡng bức. Một cách phổ biến là sử dụng xúc xắc hoặc bip39 như cơ chế mật khẩu, xem trong xkc936.

Khi bạn lấy được chìa khóa $k$, thì đây là khóa riêng của bạn và $[k]G$ là khóa công khai của bạn trong ECC với điểm cơ sở $G$ của đường cong. Xóa $k$ sau khi sử dụng, thậm chí không lưu nó vào bộ nhớ và giữ an toàn cho mật khẩu của bạn!

Argon2 sử dụng một loại muối ngẫu nhiên khi băm, điều này đòi hỏi hàm băm phải khác nhau mỗi lần mặc dù sử dụng cùng một mật khẩu.

Vâng, điều đó cũng đúng. Bạn có thể coi điều này giống như với tất cả các tham số của Argon2, bạn chạy một chức năng xác định. Cùng một đầu vào sẽ dẫn đến cùng một đầu ra. Đây là những gì chúng tôi muốn từ các hàm băm, hàm băm mật khẩu và Oracles ngẫu nhiên; mang tính quyết định; cùng một đầu vào phải dẫn đến cùng một đầu ra.

Sử dụng các loại muối khác nhau được sử dụng để lấy nhiều khóa từ mật khẩu. Đồng thời, muối là một biện pháp đối phó tốt với các bảng cầu vồng nếu có.

Nếu hàm băm khác nhau, làm thế nào nó có thể được sử dụng để đại diện cho cùng một khóa bí mật?

Để có được cùng một khóa, bạn cần sử dụng các tham số giống nhau; cùng một mật khẩu, cùng một loại muối, cùng một lần lặp lại, cùng một mức sử dụng bộ nhớ và cùng một quá trình song song hóa. Các tham số ngoài mật khẩu của bạn không nhất thiết phải là bí mật, chúng có thể được lưu trữ công khai. Ví dụ, loại thông tin này được lưu trữ trong tiêu đề LUKS, phần quan trọng là luôn giữ bí mật mật khẩu của bạn.

Người ta phải lưu trữ các tham số này khi lấy khóa từ mật khẩu.

Argon2 được sử dụng như thế nào để tạo dẫn xuất khóa?

Đầu tiên, quyết định bảo mật mục tiêu của bạn; I E.bao nhiêu bạn muốn cuộc sống của kẻ tấn công là khó khăn. Điều chỉnh số lần lặp lại, mức độ song song hóa và mức sử dụng bộ nhớ theo mục tiêu bảo mật của bạn. Khi bạn đã quyết định, hãy tạo một loại muối ngẫu nhiên thống nhất. Xác định kích thước khóa mong muốn, chẳng hạn như 256 bit (hoặc 32 byte). Bây giờ bạn đã sẵn sàng sử dụng Argon2 với thông tin này.

Bạn cung cấp thông tin của mình cho Argon và quyết định mục tiêu bảo mật của mình;

Cách sử dụng: ./argon2 [-h] muối [-i|-d|-id] [-t lần lặp] [-m bộ nhớ] [-p song song] [-l độ dài hàm băm] [-e|-r] [- v(10|13)]
        Mật khẩu được đọc từ stdin
Thông số:
        salt Loại muối sử dụng, ít nhất 8 ký tự
        -i Sử dụng Argon2i (đây là mặc định)
        -d Sử dụng Argon2d thay vì Argon2i
        -id Sử dụng Argon2id thay vì Argon2i
        -t N Đặt số lần lặp lại thành N (mặc định = 3)
        -m N Đặt mức sử dụng bộ nhớ là 2^N KiB (mặc định 12)
        -p N Đặt tính song song cho N luồng (mặc định 1)
        -l N Đặt độ dài đầu ra hàm băm thành N byte (mặc định 32)
        -e Hàm băm chỉ được mã hóa đầu ra
        -r Chỉ xuất ra các byte thô của hàm băm
        -v (10|13) Phiên bản Argon2 (mặc định là phiên bản mới nhất, hiện tại là 13)
        -h In sử dụng argon2

Lưu ý rằng Argon2 có ba loại;

  • Argon2d nhanh hơn và sử dụng quyền truy cập bộ nhớ phụ thuộc vào dữ liệu. Sự phụ thuộc dữ liệu ngay lập tức kích hoạt kênh phụ. Điều này phù hợp với tiền điện tử và các ứng dụng không có mối đe dọa từ các cuộc tấn công kênh phụ.

  • Argon2i sử dụng quyền truy cập bộ nhớ độc lập với dữ liệu và điều này được ưu tiên cho việc băm mật khẩu và dẫn xuất khóa dựa trên mật khẩu.

  • Argon2id Trong nửa đầu của lần lặp đầu tiên hoạt động như Argon2i và phần còn lại hoạt động như Argon2d. Điều này cho phép bảo vệ cả kênh phụ và đánh đổi bộ nhớ thời gian.

và hình thức dự thảo-irtf-cfrg-argon2-03;

Nếu bạn không biết sự khác biệt giữa chúng hoặc bạn coi các cuộc tấn công kênh bên là mối đe dọa khả thi, hãy chọn Argon2id.

Điểm:2
lá cờ cn

Đó là sự thật, bạn sử dụng muối được tạo ngẫu nhiên với argon2i/argon2d/argon2id. Tuy nhiên, muối ngẫu nhiên đó chỉ cần được tạo một lần duy nhất. Bạn cần biết muối và các tham số được sử dụng trong quá trình tạo hàm băm argon2 để xác thực hàm băm đó sau này.

Một số thư viện cung cấp đầu ra hàm băm được mã hóa cho argon2. Đầu ra được mã hóa lưu trữ tất cả hàm băm/tham số/muối trong một chuỗi.Sau đó, chuỗi được mã hóa này có thể được chia thành hàm băm/params/muối tại thời điểm bạn xác minh hàm băm.

Cuộc nói chuyện về Defcon này hơi gần đây và giải thích một số triển khai kỹ thuật liên quan đến argon2: https://youtu.be/4Tn71-1GN20?t=1271

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