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