it-swarm-vi.com

Muối nên lớn như thế nào?

Tôi sẽ sử dụng scrypt để lưu mật khẩu trong ứng dụng của mình. Như vậy, tôi sẽ sử dụng các loại tiền điện tử SHA-256 và Salsa20 (với PBKDF2).

Có suy nghĩ đó, tôi nên sử dụng muối lớn như thế nào? Nó có nên bằng kích thước của đầu ra SHA-256: 256 bit hay nó nên bằng số bit tôi sẽ lấy từ chức năng kéo dài mật khẩu này: 512 bit?

Xem xét rằng SSHA được sử dụng bởi OpenLDAP chỉ có muối 32 bit và mật mã Linux () sử dụng muối 48 bit, lượng muối của tôi có vẻ khá lớn ...

Nói chung: quy tắc của ngón tay cái đối với kích thước của muối là gì?


Liên quan:

Nên dùng gì làm muối?

Muối đủ tốt cho SaltedHash là gì?

30
Hubert Kario

Muối phải là duy nhất; đó là công việc duy nhất của họ. Bạn nên cố gắng hết sức có thể để không bao giờ sử dụng lại giá trị muối; việc tái sử dụng không thường xuyên hiếm khi then chốt nhưng vẫn nên tránh). Với các lược đồ mật khẩu được thiết kế hợp lý, không có tài sản hữu ích nào khác trong muối ngoài tính duy nhất; bạn có thể chọn chúng theo cách bạn muốn miễn là bạn không sao chép chính xác chuỗi bit đó. Tính duy nhất phải được hiểu trên toàn thế giới.

(Với các lược đồ băm mật khẩu được thiết kế kém, muối có thể có một số thuộc tính bổ sung bắt buộc, nhưng nếu bạn sử dụng lược đồ mật khẩu thiết kế xấu, bạn đã gặp vấn đề lớn hơn. Lưu ý rằng muối không hoàn toàn giống với Vector khởi tạo đối với mã hóa đối xứng, trong đó các yêu cầu nghiêm ngặt như tính ngẫu nhiên thống nhất không thể đoán trước thường được áp dụng.)

A cách phổ biến để có các giá trị muối duy nhất ít nhiều là tạo ra chúng một cách ngẫu nhiên, với một trình tạo tốt (giả sử, một công cụ phù hợp cho việc sử dụng mật mã, như /dev/urandom). Nếu muối đủ dài, rủi ro va chạm (nghĩa là tái sử dụng giá trị muối) là thấp. Nếu bạn sử dụng n - muối bit, khả năng xảy ra va chạm sẽ không đáng kể khi bạn đạt được khoảng 2n/2 giá trị được tạo. Có khoảng 7 tỷ người trên hành tinh này và có vẻ an toàn khi cho rằng trung bình họ sở hữu ít hơn 1000 mật khẩu, do đó, số lượng mật khẩu băm trên toàn thế giới phải thấp hơn một chút so với 242,7. Do đó, 86 bit muối nên là đủ. Vì chúng tôi loại như cái gọi là "lề bảo mật", và hơn nữa, vì các lập trình viên chỉ tình yêu quyền hạn của hai người, chúng ta hãy đi đến 128 bit . Theo phân tích ở trên, điều đó là quá đủ để đảm bảo tính duy nhất trên toàn thế giới với xác suất đủ cao và không có gì chúng tôi muốn từ một loại muối hơn là tính độc đáo.

Tính duy nhất cũng có thể được đảm bảo thông qua các phương tiện khác, ví dụ: bằng cách sử dụng muối để ghép tên máy chủ (hệ thống DNS trên toàn thế giới đã đảm bảo rằng mọi người đều có thể có tên máy chủ của riêng mình, khác với tên của bất kỳ ai khác trên hành tinh) và bộ đếm trên toàn máy chủ. Điều này đặt ra một số vấn đề thực tế, ví dụ: duy trì giá trị bộ đếm không lặp lại, ngay cả trong trường hợp máy chủ bị lỗi và khởi động lại, và/hoặc một số giao diện người dùng có cân bằng tải. Một muối có chiều dài cố định ngẫu nhiên là dễ dàng hơn.

33
Thomas Pornin

"Nó phải dài ít nhất tám octet (64 bit)." từ: http://www.ietf.org/rfc/rfc2898.txt

7
woliveirajr