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.