Điểm:3

Băm nhiều lần sẽ an toàn hơn, ít hơn hay tương tự như băm một lần

lá cờ br

Băm nhiều lần sẽ nhiều hơn, ít hơn hoặc an toàn tương tự như băm một lần?

tuôn ra câu hỏi này:

  • Tôi thấy yêu cầu này:
  • Đối với tôi, có vẻ như những gì bạn đang cố gắng thực hiện trong quá trình thử lại là làm chậm một cuộc tấn công vũ phu.
  • Mặc dù vấn đề về ngày sinh nhật có thể áp dụng cho nhiều hàm băm, nhưng có vẻ như vấn đề này sẽ áp dụng như nhau cho ví dụ đầu tiên (mà người đó gắn nhãn là "không làm điều này"), cũng như ví dụ thứ hai (mà người đó cảm thấy thoải mái hơn).
  • Trong cả hai ví dụ, một khi xung đột được tìm thấy, thì việc băm lại tại điểm đó sẽ không cần thiết (vì nó sẽ tái tạo các kết quả giống nhau giữa hàm băm và xung đột của nó).
  • Kịch bản cụ thể cho câu hỏi này là: ví dụ của người mà tôi đã đưa ra trong câu hỏi ở trên có đúng với khẳng định của họ không - rằng ví dụ 2 sẽ làm cho va chạm, nói theo xác suất, xảy ra ít thường xuyên hơn?

Những gì tôi đang tìm kiếm trong một câu trả lời:

  • Đây không phải là lĩnh vực chuyên môn của tôi (đó là lý do tại sao tôi hỏi nó ở đây, nơi đó là chuyên môn của bạn). Xin vui lòng sửa chữa những hiểu lầm và giả định có vấn đề của tôi.
  • Tôi quan tâm đến cả giải thích kỹ thuật chi tiết miễn là nó đi kèm với lời giải thích của một giáo dân về các bước và đặc biệt là phần kết luận (với điểm nhấn là giải thích của giáo dân).
  • Về mặt lý thuyết, tôi đang hỏi về tất cả các hàm băm một chiều (nếu có sự khác biệt giữa các loại thuật toán băm rộng, xin vui lòng chỉ ra những điều đó trong khi hiểu rằng ý nghĩa của câu trả lời của bạn thực tế sẽ được áp dụng từ phía tôi đối với thuật toán băm tương tự thành SHA-2, SHA-3 hoặc bcrypt).
  • Tôi đã xem qua 10 câu hỏi và câu trả lời khác nhau của crypto.stackexchange.com có ​​vẻ rất giống với câu hỏi này, nhưng chúng xử lý các trường hợp sử dụng cụ thể đã định hình câu trả lời cho trường hợp sử dụng hoặc chúng đưa ra bằng chứng lý thuyết mà không giải thích trong giáo dân về những gì bằng chứng của họ đã thực sự làm và kết luận của một giáo dân cho câu trả lời của họ.
    • Đối với mục đích của câu hỏi này, giả sử phép tính của tôi không đạt chuẩn, tôi cũng không thường đọc về các biến toán học được sử dụng trong mật mã, nhưng giả sử rằng tôi có thể theo dõi đại số và có thể loại bỏ phép tính của mình nếu bạn cho tôi biết các biến đó là gì đại diện cho (hoặc liên kết đến giải thích của họ).

Cảm ơn bạn trước sự giúp đỡ của bạn với câu hỏi này.

lá cờ jp
Nó phụ thuộc vào những gì bạn đang sử dụng hàm băm cho. Băm mật khẩu (và lấy khóa từ bí mật entropy thấp) khác rất nhiều so với hầu hết các ứng dụng khác và có các cân nhắc bảo mật rất khác.
kelalaka avatar
lá cờ in
Mục đích của bạn là gì? Bạn muốn đạt được những gì? Những câu hỏi và câu trả lời nào không làm bạn hài lòng?
Điểm:5
lá cờ ng

ví dụ của người mà tôi đã đưa ra trong câu hỏi của tôi ở trên có đúng trong khẳng định của họ không - rằng ví dụ 2 sẽ làm cho va chạm, nói theo xác suất, xảy ra ít thường xuyên hơn?

Nhiều khẳng định được đưa ra ở đó:

Một khẳng định là chức năng 1 của mật khẩu + muối năng suất băm Được định nghĩa bởi

hàm băm = sha512(mật khẩu + muối); 
for (i = 0; i < 1000; i++) {
    băm = sha512(băm); // <-- KHÔNG làm điều này!
}

có nhiều khả năng va chạm hơn chức năng 2 của mật khẩu + muối năng suất băm Được định nghĩa bởi

hàm băm = sha512(mật khẩu + muối);
for (i = 0; i < 1000; i++) {
    băm = sha512(băm + mật khẩu + muối);
}

Điều đó đúng về mặt lý thuyết và có thể quan sát được trong thực tế đối với hàm băm hẹp, ví dụ: 80 bit.

Một cách để thấy nó là

  • tập đầu ra của hàm ngẫu nhiên cố định $H$ lặp đi lặp lại $n$ thời gian có xu hướng thu hẹp như $n$ phát triển (lập luận: nó không bao giờ có thể tăng lên khi $n$ và một số kết quả thu hẹp do va chạm của hàm băm lặp lại, ở đây SHA-512);
  • xác suất va chạm của một hàm ngẫu nhiên đối với hai đầu vào riêng biệt ngẫu nhiên là nghịch đảo của kích thước của tập hợp đầu ra của nó.

Do đó, điều này có thể hiểu được (mặc dù lặp lại một chức năng ngẫu nhiên $n$ lần có thể không hoàn toàn mang lại một hàm ngẫu nhiên đối với phần còn lại của tập đầu ra) mà xác suất va chạm của $H^n(x)$ cho hai phân biệt ngẫu nhiên $x$ tăng với $n$.

Điều đó hạn chế khả năng chống va chạm của chức năng 1 mà vòng lặp lặp đi lặp lại $H: h\mapsto\operatorname{SHA-512}(h)$. Trong khi ở 2, chức năng lặp lại thay đổi khi đầu vào mật khẩu + muối thay đổi, do đó bộ đầu ra thu hẹp lại với $n$ phụ thuộc vào đầu vào đó. Theo mô hình hàm băm dưới dạng hàm ngẫu nhiên, 2 cũng là một hàm ngẫu nhiên có khả năng đạt đến toàn bộ và đó là xác suất va chạm đối với các đầu vào khác nhau mật khẩu + muối không tăng như $n$ làm.


Người ta cũng khẳng định rằng vì lý do này, trong thực tế, chúng ta nên sử dụng 2 thay vì 1 và điều đó không chính xác vì một số lý do:

  • Ít nhất là đối với bất kỳ hàm băm nào có khả năng chống va chạm, chẳng hạn như SHA-512, chúng ta hoàn toàn không cần lo lắng về va chạm hoặc chu kỳ.
  • Trong ngữ cảnh (ứng dụng băm mật khẩu), chống va chạm của chức năng lặp tổng thể không phải là một vấn đề. sức đề kháng trước Là. Và ngay cả đối với SHA-1, không có khả năng chống va chạm và bất kỳ thực tế nào $n$, chúng ta không cần lo lắng rằng việc phá vỡ 1 sẽ yêu cầu đánh giá hàm băm ít hơn đáng kể so với phá vỡ 2, kể cả với tính toán trước thực tế.

Ưu điểm của 2 là: khó triển khai hơn một chút trong phần cứng vì phần cứng cần sử dụng mật khẩu và muối ở mỗi lần lặp, do đó phải được lưu trữ. Do đó, ASIC để tăng tốc 2 sẽ phức tạp hơn so với 1. Đó là lý do duy nhất tôi thấy 2 ít tệ hơn 1 trong thực tế. Nó vẫn tệ, bởi vì $n=1000$ các lần lặp lại không đủ chậm đối với ASIC hoặc GPU khi thực hiện tìm kiếm mật khẩu; và bởi vì toàn bộ điều này không đưa bộ nhớ vào sử dụng, do đó mất khả năng bảo vệ bổ sung chống lại tìm kiếm mật khẩu vũ phu mà các hàm băm mật khẩu khó nhớ hiện đại (như mật mã hoặc Argon2) cho.


Băm nhiều lần sẽ an toàn hơn băm một lần

Điều này phụ thuộc chủ yếu vào mục tiêu, điều này chỉ ra hàm băm để sử dụng

  • Nếu chúng ta đang băm cho mục đích kéo dài phím, đó thường là khi băm mật khẩu hoặc cụm mật khẩu, vâng: bảo mật chống lại tìm kiếm vũ phu tăng tuyến tính theo số vòng. Nhưng một lần nữa, chúng ta nên sử dụng hàm băm mật khẩu khó nhớ.Đối với thời gian sử dụng như nhau, ngay cả lỗi thời bcrypt sẽ mang lại sự bảo mật cao hơn so với các công trình hoàn toàn lặp lại một hàm băm, như PBKDF2 hoặc các chức năng 1 và 2, vốn không được khuyến nghị trong thời đại của ASIC, FPGA và GPU cho bẻ khóa mật khẩu.
  • Nếu chúng tôi đang băm nhiều lần để củng cố một số hàm băm mật mã có khiếm khuyết (chẳng hạn như khả năng chống va chạm của nó bị hỏng), thì có thể là có. Ví dụ. chức năng 2 (với mật khẩu + muối được thay thế bằng thông báo thành hàm băm) sẽ khắc phục tất cả các lỗi bảo mật đã biết của MD5 hoặc SHA-1 bên cạnh chiều rộng đầu ra của chúng, ngay cả khi chúng tôi chỉ thực hiện thêm một vòng thay vì 1000. Tuy nhiên, đó là một cái giá rất lớn về hiệu suất và khả năng sử dụng, bởi vì chúng tôi cần băm tin nhắn hai lần, do đó, trong một số trường hợp, hãy lưu trữ nó.
  • Đối với các mục đích mật mã khác bao gồm chữ ký và dẫn xuất khóa từ khóa rộng bằng cách sử dụng hàm băm hiện đại, không. Chúng tôi có thể sử dụng SHA-2 hoặc SHA-3 (để đặt tên cho những câu hỏi trong câu hỏi) cho những mục đích này. Băm lặp đi lặp lại là không cần thiết và thậm chí có thể giảm nhẹ khả năng chống va chạm (nếu được thực hiện như trong 1), với một ngoại lệ: nếu hàm băm có thuộc tính mở rộng chiều dài (giống như SHA-2 có, nhưng SHA-3 thì không), và nếu điều đó là không mong muốn, thì việc băm lại một lần đầu ra của hàm băm là hợp lý (không yêu cầu lưu trữ thông báo hai lần).
Điểm:1
lá cờ us

Đây là một lời giải thích trực quan (so với nghiêm ngặt):

Một hàm băm xuất hiện ngẫu nhiên, nhưng nó không thực sự thêm bất kỳ entropy nào vào kết quả. Trên thực tế, nó loại bỏ entropy bởi thuộc tính mà nhiều đầu vào có thể dẫn đến cùng một đầu ra.(Chỉ hàm một đối một và hàm onto mới có thể duy trì entropy.) Do đó, mỗi ứng dụng của hàm băm cho đầu ra của chính nó sẽ loại bỏ entropy cho đến khi nó hội tụ thành một chu kỳ lặp lại (nhóm hữu hạn) có thứ tự có thể nhỏ hơn nhiều so với kích thước trường. Tôi không biết về bất kỳ bằng chứng nào về giới hạn theo thứ tự của một nhóm như vậy đối với hàm băm LSR.

Ví dụ thứ hai làm mới entropy với mỗi ứng dụng bằng cách thêm mật khẩu và muối. Bởi vì nó là một hoạt động khác nhau, nó có tác dụng chuyển sang một chu kỳ khác nhau (coset) mỗi vòng.

Vì vậy, làm việc ngược lại, chúng tôi bắt đầu với một trực giác về hàm băm dưới dạng một tập hợp nhiều chu kỳ chứ không phải là một bản đồ hoàn toàn ngẫu nhiên. Một hàm băm lý tưởng sẽ là một chu kỳ lớn và trong hàm đó, ví dụ đầu tiên sẽ ổn.

Nếu chúng ta vẽ một sự tương tự rất thô đối với một trường đại số đơn giản hơn, chúng ta có thể xem xét rằng chúng ta đang xem xét một trường tổng hợp bao gồm nhiều tập hợp của nhóm hạt nhân được xác định bởi ứng dụng của hàm băm, trong khi chỉ một trường nguyên tố mới có giá trị lớn nhất. trật tự.

Và một điều nữa, bởi vì tôi đã trộn lẫn các khái niệm về chu kỳ và sự mất mát entropy. LSR có khả năng hạn chế đối với entropy và mất đi một số phần dư thừa trong mỗi vòng. Điều đó có nghĩa là sự kết hợp của tất cả các tập hợp chu trình mà bất kỳ đầu vào nào cũng có thể kết thúc để tạo thành một trường nhỏ hơn nhiều so với chính đầu vào đó. Đặt các khái niệm này lại với nhau, ứng dụng lặp đi lặp lại từ từ giảm tất cả đầu vào thành một số lượng nhỏ các chu kỳ nhỏ, nghĩa là bạn sẽ tăng đáng kể khả năng xảy ra va chạm.

Nói một cách rõ ràng, cơ hội va chạm lớn hơn có nghĩa là cơ hội đoán đầu vào sẽ băm thành cùng một giá trị với mật khẩu và do đó cấp quyền truy cập cao hơn. Hãy nhớ rằng bản thân mật khẩu không liên quan, chỉ là khả năng cung cấp một giá trị băm thành cùng một giá trị với mật khẩu.

Hy vọng rằng ai đó có thể chỉ ra điều này với sự chặt chẽ hơn bằng cách sử dụng các định lý về đại số trừu tượng và các thuộc tính của nhóm băm LSR. Đang chờ nó.Cảm ơn vì câu hỏi.

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