Điểm:0

Sử dụng bcrypt để luôn tạo ra cùng một hàm băm như SHA, MD

lá cờ tr

Tôi muốn tận dụng thuộc tính chậm của bcrypt để băm một đầu vào nhưng cũng muốn nhận cùng một giá trị băm cho cùng một đầu vào mọi lúc giống như SHA, MD, v.v.

Vì vậy, để làm được điều đó, thay vì sử dụng một loại muối tĩnh, tôi tin là kém an toàn hơn, tôi có nghĩ đến việc sử dụng đầu vào làm muối không? Đầu ra sẽ là giá trị băm trừ bit muối phía trước (rõ ràng là chính đầu vào).

Về cơ bản Cho một đầu vào m, bcrypt(cost, m, m) -> ctext, không nối ở cuối.

Vì vậy, câu hỏi đặt ra là việc sử dụng đầu vào vì cả muối và mật khẩu có làm cho bước dẫn xuất khóa kém an toàn hơn dựa trên thuộc tính của bcrypt không?

lá cờ et
Tại sao một loại muối tĩnh không tạo ra cùng một hàm băm?
lá cờ tr
@ user93353 không nói là không, nó chỉ kém an toàn hơn nếu bạn làm mất nó, bạn có thể cần gia hạn từng hàm băm trong hệ thống của mình
lá cờ et
Muối là mỗi mật khẩu. tức là 1 muối cho mỗi mật khẩu. Nó tĩnh đối với trường hợp mật khẩu đó. Nó không phổ biến trên các mật khẩu.
lá cờ tr
@ user93353 có thể tôi không rõ hoặc bạn bỏ lỡ điểm chính của câu hỏi này. Nếu bạn tạo một muối cho mỗi mật khẩu, bạn sẽ nhận được hàm băm khác nhau mỗi lần. Nếu bạn có một muối tĩnh cho một mật khẩu cụ thể, nghĩa là bạn có `f(m)->s` cho một tin nhắn nhất định, giống như câu hỏi của tôi, chỉ là `f(m)->m` của tôi là một chức năng giống hệt nhau.
lá cờ et
`Nếu bạn tạo một muối cho mỗi mật khẩu, bạn sẽ nhận được hàm băm khác nhau mỗi lần`. Không, đối với một mật khẩu, bạn chỉ tạo 1 muối. tức là khi user1 tạo pwd1, bạn sử dụng salt1 trong khi tạo tài khoản. Và sau đó trong khi kiểm tra mật khẩu của anh ấy, bạn sử dụng cùng một loại muối1, vì vậy bạn sẽ nhận được cùng một hàm băm. Mỗi khi bạn sử dụng cùng một kết hợp pwd1 & salt1, bạn sẽ nhận được cùng một hàm băm ((nếu bạn đang sử dụng cùng một số vòng mỗi lần, bạn nên làm như vậy).
lá cờ tr
@ user93353 bạn vẫn chưa hiểu ý chính của câu hỏi. Không có đề cập đến việc kiểm tra mật khẩu ở đây. Kịch bản là bạn có một giá trị mà bạn muốn băm (sử dụng biến thể bcrypt này), bạn băm nó, nhận được giá trị băm, những ngày hạnh phúc. Ngày hôm sau, bạn có cùng một giá trị mà bạn muốn băm, bạn băm nó và bạn mong đợi thu được cùng một giá trị băm.
SAI Peregrinus avatar
lá cờ si
bcrypt là một hàm băm mật khẩu. Nó KHÔNG phải là một hàm băm mật mã bình thường và thường không an toàn khi sử dụng nó như một (các cuộc tấn công DoS có thể xảy ra).
SAI Peregrinus avatar
lá cờ si
Ngoài ra, muối là mỗi cặp (người dùng, mật khẩu): miễn là người dùng giữ cùng một mật khẩu, họ sẽ giữ cùng một loại muối. Nếu mật khẩu thay đổi, muối sẽ thay đổi. Nếu người dùng khác, họ PHẢI có một loại muối khác.
Điểm:1
lá cờ cn

Như đã đề cập trong các nhận xét, bcrypt là hàm băm mật khẩu và có những hạn chế đáng kể so với hàm băm mật mã chung.

Sử dụng nó như dự định, để nhập mật khẩu, nhưng với muối giống như đầu vào, sẽ an toàn như không sử dụng muối. Mục đích của muối là ngăn chặn các cuộc tấn công đa mục tiêu và ngăn chặn việc sử dụng bảng cầu vồng. Nếu muối giống với đầu vào, điều này cho phép các cuộc tấn công đó, vì kẻ tấn công hiện biết bất kỳ loại muối nào sẽ là gì đối với một mật khẩu mục tiêu nhất định.

Sử dụng nó như một hàm băm chung sẽ gặp phải một loạt vấn đề hoàn toàn khác, tệ nhất là xung đột. bcrypt có giới hạn đầu vào là 72 byte đối với văn bản đầu vào, nếu bạn băm các phần dữ liệu lớn thì nó sẽ có cùng hàm băm như tiền tố 72 byte của nó. bcrypt cũng lặp lại các đầu vào ngắn cho đến khi nó lấp đầy mảng trạng thái 72 byte, do đó, mật khẩu 18 ký tự sẽ có cùng đầu ra với mật khẩu đó được lặp lại 4 lần. Việc triển khai có thể băm trước đầu vào bằng một cái gì đó như SHA-512 trước khi nó được chuyển sang bcrypt, điều này ngăn chặn các sự cố đó. Mặc dù trong trường hợp đó, mặc dù nó chậm, nhưng đầu ra của nó vẫn chỉ có độ dài 192 bit, điều này hạn chế đáng kể khả năng chống va chạm của nó để sử dụng trong những thứ như chữ ký số.

Với tất cả những hạn chế đó, rõ ràng có những lựa chọn tốt hơn nếu bạn muốn làm chậm hàm băm, điều rõ ràng nhất là chỉ cần chạy lại đầu ra của hàm băm nhiều lần. Điều này cũng ít phức tạp hơn bcrypt và có thể cho phép bạn sử dụng lại các chức năng hiện có trong cả phần mềm và phần cứng. Nếu bạn lo lắng về việc bị mắc kẹt trong chuỗi băm vì một lý do nào đó, bạn luôn có thể thêm một từ bộ đếm lặp đơn giản vào đầu vào.Đối với một số hàm băm được tham số hóa, bạn cũng có thể tăng số vòng bên trong. Ví dụ: Keccak có thể dễ dàng được mở rộng để sử dụng nhiều vòng hơn, một số triển khai tạo khóa vòng theo thuật toán có thể chỉ yêu cầu thay đổi một dòng mã.

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