Điểm:1

Là băm đệ quy theo chu kỳ?

lá cờ cn

Nếu tôi đưa đầu ra của H trở lại H thì nó có bao phủ toàn bộ không gian đầu ra của H trước khi lặp lại không?

Hãy xem xét tình huống sau:

A=1;
Trong khi(){
   A=H(A);
   in(A)
}

Sẽ có chu kỳ ngắn? Ví dụ. Có các giá trị của A mà H(A) = A (chu kỳ 1) Các giá trị của A trong đó H(A) = B và H(B) = A (chu kỳ 2)

Có cách nào để chứng minh rằng không có chu kỳ nào như vậy tồn tại đối với một hàm băm nhất định hoặc đặt giới hạn dưới cho chu kỳ ngắn nhất.

Douglas Hofstadter trong một trong những cuốn sách của ông (Tôi nghĩ là "Tôi của Tâm trí", hoặc "Tôi nghĩ là "Những chủ đề siêu toán học") có một câu

Câu này có một 'a', một 'b', ...

Vấn đề là tìm ra các giá trị làm cho nó đúng. Nếu bạn chỉ đếm phần cắt xén hiện tại, sửa câu và lặp lại, thì câu sẽ hội tụ thành một câu đúng khá nhanh.

Vậy làm thế nào để điều này kết nối với mật mã.

Tôi nghi ngờ, nhưng chưa chứng minh, rằng 'người thu hút kỳ lạ' ở trên là khá độc đoán.

{Toàn văn Chiến tranh và Hòa bình} Tuyên bố này có...

cũng sẽ hội tụ về một mệnh đề đúng.

Hãy xem xét một hàm băm, H. Giả sử rằng có các chu kỳ ngắn của H. Cũng sẽ có các chu kỳ của (D+H) trong đó D là một đoạn dữ liệu tùy ý. Chúng sẽ có cùng độ dài? (Tôi không thấy lý do chính đáng tại sao họ nên như vậy)

Nếu một phần đáng kể của hàm băm là thành viên của một chu kỳ ngắn (đối với một số giá trị ngắn: 1 triệu? 1 tỷ?) thì lỗ hổng sau sẽ tồn tại:

Lấy hồ sơ D.

  • Sửa đổi D cho phù hợp với mục đích của bạn. Một phần của quá trình này phải được rút ngắn theo độ dài (giá trị băm) Gọi tệp này là D'

+ đứng hoặc nối

  • Tính A = H(D)
  • Tính A2 = H(A+D')
  • Tính A3 = H(A2+D')

Nếu A là tuần hoàn, cuối cùng bạn sẽ đạt được một số A_n mà lần lặp tiếp theo tạo ra A.

  • Thay thế tệp D bằng A_n+D'

Về mặt bảo mật, chúng ta cần biết xác suất của một A đã cho có chu kỳ trong thời gian hợp lý là bao nhiêu. Tất nhiên hợp lý phụ thuộc vào mức độ quan trọng của tài liệu. Nhưng nếu bạn có thể chỉ ra rằng có một xác suất cực kỳ nhỏ để tìm thấy một chu kỳ dưới 10^15 hoặc hơn, thì kiểu tấn công này không thực tế. Nếu có 2% khả năng một hàm băm nhất định sẽ hoạt động theo chu kỳ dưới một triệu lần lặp lại, thì có một vấn đề tiềm ẩn.

lá cờ cn
Các chu kỳ ngắn tồn tại, nhưng chúng chỉ bao phủ một phần rất nhỏ của không gian, vì vậy bạn sẽ không bao giờ tìm thấy chúng.
fgrieu avatar
lá cờ ng
Phần _"Nếu một phần đáng kể của giá trị băm là thành viên của một chu kỳ ngắn..."_ cần phải được định dạng lại. Băm là một hàm, không phải là giá trị mà hàm băm đó đạt được, đó là giá trị có thể thuộc về chu kỳ của hàm băm đó. Có lẽ điều đó có nghĩa là: _nếu một hàm băm cụ thể sao cho một phần đáng kể của các giá trị mà nó đạt được khi băm đầu vào từ tập hợp đầu ra có thể của nó là thành viên của một chu kỳ ngắn..._. Giả thuyết được định dạng lại đó là có ý nghĩa, nhưng hầu như không có khả năng xảy ra đối với hàm băm mật mã.
Điểm:2
lá cờ ng

Khi nghiên cứu vấn đề như vậy, các nhà mật mã học đồng hóa một hàm băm mật mã $H$ đến một chức năng ngẫu nhiên hoặc tiên tri ngẫu nhiên (hoặc ánh xạ ngẫu nhiên mặc dù đó là một chút ngày) lặp đi lặp lại. Xác suất được tính trên tập hợp tất cả các giá trị băm có thể. Đó là một phép tính gần đúng, nhưng nếu kết quả thực tế khác biệt rõ rệt, thì đó sẽ là một cách để phân biệt hàm băm với một hàm ngẫu nhiên, do đó phá vỡ hàm băm theo các định nghĩa hiện đại. Do đó, phép tính gần đúng đã nói là thỏa đáng và càng có thể có một hàm băm mật mã không bị phá vỡ càng tốt.

Sẽ có chu kỳ ngắn?

Rất có thể, và càng nhiều hơn khi chúng ta nới lỏng định nghĩa về ngắn hạn. Nhưng (ngoại trừ các giá trị băm rất nhỏ), không có khả năng đạt được một chu kỳ ngắn từ một điểm bắt đầu ngẫu nhiên $A$; và (đối với các hàm băm mật mã tiêu chuẩn có đầu ra đủ lớn để chúng có khả năng chống va chạm), chúng tôi không thể thể hiện bất kỳ chu kỳ nào, bất kể kích thước của nó.

Có giá trị của $A$ như vậy mà $H(A)=A$ (chu kỳ 1)

Nếu tập đích của hàm băm có kích thước $n$ (ở đâu $n=2^b$ cho một $b$-bit băm, ví dụ: $n=2^{256}$ đối với SHA-256), thì xác suất có một chu kỳ có kích thước 1 được tính toán dễ dàng như phần bù của xác suất không có chu kỳ nào trong số $n$ chỉ băm vào chính nó, đó là $p_1(n)=1-(1-1/n)^n$. Điều này bắt đầu từ $p_1(1)=1$, $p_1(2)=3/4=0,75$, $p_1(3)=19/27\approx0,7037$, và $p_1$ nhanh chóng hội tụ về $1-1/e\approx0,6321$.

Do đó, có >63,2% xác suất tồn tại một chu kỳ có kích thước 1 trong hàm băm mật mã nhất định như SHA-256, SHA-384 hoặc SHA-512. Và chúng tôi không thể nói tốt hơn cho bất kỳ giá trị băm nào trong số này.

Tôi không biết làm thế nào để làm điều tương tự cho các chu kỳ có kích thước 2, nhưng không nghi ngờ gì về điều đó là khả thi và xác suất là khá lớn đối với $n\ge2$.

Có thể tính toán giá trị dự kiến ​​của nhiều đặc điểm của chu kỳ cho một hàm/hàm băm ngẫu nhiên được lặp lại. Đặc biệt, đối với diện tích lớn $n$, số bước dự kiến ​​trước khi chạm vào giá trị trước đó bắt đầu từ một điểm ngẫu nhiên là $\approx\sqrt{\pi\,n/2}$, và độ dài dự kiến ​​của chu kỳ đạt được là một nửa. Một tài liệu tham khảo cổ điển là Philippe Flajolet và Andrew M. Odlyzko, Thống kê ánh xạ ngẫu nhiên, Trong thủ tục tố tụng của Eurocrypt 1989, và Báo cáo Nghiên cứu RR-1114, INRIA, 1989.

Có cách nào để chứng minh rằng không có chu kỳ nào như vậy tồn tại đối với một hàm băm nhất định hoặc đặt giới hạn dưới cho chu kỳ ngắn nhất.

Không, đối với hàm băm mật mã không bị phá vỡ có kích thước đầu ra đủ lớn để nó có khả năng chống va chạm (nghĩa là $\sqrt n$ lớn đến mức không thể tính được số lượng băm này); giả sử, bất kỳ hàm băm không bị gián đoạn nào 256-bit trở lên. Đối với một phần của câu hỏi là có thể chứng minh rằng không có chu trình nào như vậy tồn tại hay không, chúng ta thậm chí cần phải tính toán $n$ băm (cho đến lần cuối cùng chúng tôi không thể chắc chắn không có chu kỳ kích thước 1), do đó, bất kỳ hàm băm 128 bit không bị phá vỡ nào hoặc rộng hơn sẽ làm được.

Vậy làm thế nào để (cấu trúc lặp đi lặp lại của Douglas Hofstadter) kết nối với mật mã?

Một kỹ thuật tương tự được sử dụng để tấn công một số hệ thống mật mã. Chúng tôi xây dựng một hàm, lặp lại nó cho đến khi tìm thấy một chu trình (do đó ngắn, nếu không thì chúng tôi không thể tìm thấy nó) và điểm vào trong chu trình tạo ra xung đột và xung đột giải quyết vấn đề vì hàm được xây dựng với điều đó rõ ràng mục đích. Đó là trái tim của Pollard's rho phương pháp để giải Bài toán logarit rời rạc, đây là cách tấn công lý thuyết tốt nhất mà chúng tôi có cho bài toán này trong một số nhóm được sử dụng trong mật mã.

Lưu ý rằng cả hàm ở trên và hàm do Douglas Hofstadter xây dựng đều không tạo thành hàm băm mật mã an toàn. Đó là bởi vì chúng không phải là chúng ta có thể tìm thấy một chu kỳ và giải quyết vấn đề trong tầm tay.

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