Điểm:1

Nhược điểm đối với mật mã dòng dựa trên hàm băm

lá cờ al

Trong một câu trả lời của đây ai đó đề cập:

nếu bạn có hàm băm với quyền hạn tiên tri, thì khá dễ dàng để tạo luồng giả ngẫu nhiên từ khóa bí mật, bằng cách băm K||n trong đó K là khóa bí mật và n là bộ đếm. Bằng cách XOR luồng giả ngẫu nhiên phụ thuộc khóa này với dữ liệu cần mã hóa, bạn có một mật mã luồng.

Trong cùng một bài đăng cũng có phần này liên quan đến việc sử dụng các hàm băm mật mã để tạo mật mã luồng:

Hàm băm mật mã là một hàm chống lại tiền ảnh, tiền ảnh thứ hai và va chạm. Theo như tôi biết, người ta chưa chứng minh được rằng những điều kiện này là đủ để xây dựng mật mã luồng.

Theo như tôi biết, tất cả các thuật toán đối xứng hiện có, đặc biệt là AES, chỉ được cho là an toàn. Bằng chứng duy nhất mà chúng tôi có liên quan đến tính bảo mật của chúng là việc sử dụng chúng trong thực tế và các cuộc tấn công đã được thử cho đến nay không làm giảm nghiêm trọng tính bảo mật của các thuật toán đó.

Có phải vấn đề "chưa được chứng minh rằng những điều kiện này là đủ để xây dựng mật mã luồng" thực sự là vấn đề duy nhất? Các vấn đề khác với mật mã luồng do hàm băm gây ra là gì? Có lẽ họ kém an toàn hơn? Có lẽ họ chậm hơn? Có lẽ họ đang sử dụng nhiều bộ nhớ? Có phải chỉ là có những thuật toán mã hóa khác được nghiên cứu hứa hẹn kết quả tốt hơn?

Tôi cho rằng một hàm băm có kích thước khối lớn hơn có lợi thế là có thể sử dụng các khóa dài hơn hoặc các nonce dài hơn. Đối với SHA-512, người ta có thể sử dụng khóa có độ dài 384 bit và độ dài 128 bit. Một khả năng khác là tiếp tục sử dụng khóa 256 bit, sử dụng khóa 128 bit và có kích thước thông báo tối đa tốt hơn là 2^128 khối (hoặc 2^137 bit cho SHA-512) so với ~2^39 bit cho AES-GCM với chỉ nonces 96 bit (theo ý kiến ​​​​của tôi sẽ là một mục tiêu tốt).

kelalaka avatar
lá cờ in
Liên quan [SHA-256 có an toàn dưới dạng mật mã khối CTR không?](https://crypto.stackexchange.com/q/1656/18298) và [Chúng tôi có thể sử dụng một loại hàm âhashâ trong chế độ CTR thay thế không của một mật mã khối?](https://crypto.stackexchange.com/q/37566/18298)
Điểm:7
lá cờ us

Có phải vấn đề "chưa được chứng minh rằng những điều kiện này là đủ để xây dựng mật mã luồng" thực sự là vấn đề duy nhất?

Vì vậy, khả năng chống va chạm thực sự là không đủ để xây dựng mật mã luồng an toàn, ví dụ tiêu chuẩn sẽ là sử dụng hàm băm chống va chạm và nối thêm 128 $0$ bit tới đầu ra.Điều này rõ ràng kế thừa khả năng chống va chạm nhưng cũng không cung cấp đầu ra không thể phân biệt được với ngẫu nhiên.

Có lẽ họ chậm hơn?

Điều này thường được xác định là vấn đề cốt lõi. Tính toán các hàm băm thường chậm hơn 3-10 lần so với tính toán các cấu trúc đối xứng chuyên dụng như AES. Điều này rất có thể là do bản chất của hàm băm có mô hình mối đe dọa "mạnh hơn", phải cung cấp bảo mật khi đối mặt với kẻ thù biết tất cả các giá trị trong các phép tính trong khi AES chỉ cần cung cấp bảo mật khi kẻ thù không biết một đầu vào - chìa khóa.

Có lẽ họ kém an toàn hơn?

Mặc dù chúng tôi có thể sử dụng các hàm băm không cung cấp tính giả ngẫu nhiên trong đầu ra của chúng, nhưng các cấu trúc tiêu chuẩn mà chúng tôi sử dụng đã được thiết kế cẩn thận để cung cấp đầu ra trông ngẫu nhiên thống nhất.
Các đối số chi tiết phụ thuộc vào cấu trúc cơ bản, nhưng nhìn chung chúng ta có thể xây dựng một trình tạo dòng khóa an toàn dưới dạng một số biến thể của $H(k\|p\|n\|\text{ctr})$ cho các hàm băm hiện đại với phần đệm thích hợp $p$.
Giả định bảo mật cơ bản sau đó tương tự như giả định của HMAC, yêu cầu hàm nén bên trong của hàm băm Merkle-Damgard phải là PRF đầu vào kép và hoán vị bên trong của hàm băm dựa trên Sponge là một hoán vị ngẫu nhiên đã được giả định để chống va chạm.

Maarten Bodewes avatar
lá cờ in
Một điều khác có thể không *bắt buộc* đối với các hàm băm là khóa đó cần được bảo vệ chống lại, ví dụ: các cuộc tấn công kênh bên. Đó cũng không phải là vấn đề với hầu hết các hàm băm (nếu không thì HMAC sẽ gặp sự cố) nhưng điều này có thể không rõ ràng từ việc triển khai/chức năng băm *bất kỳ* nào.
kelalaka avatar
lá cờ in
Ngoài ra, PRF là một cách và có thể cung cấp nhiều chức năng thay vì PRP.
Điểm:6
lá cờ us

Hàm băm mật mã là một hàm chống lại tiền ảnh, tiền ảnh thứ hai và va chạm. Theo như tôi biết, người ta chưa chứng minh được rằng những điều kiện này là đủ để xây dựng mật mã luồng.

Đầu ra của hàm băm mật mã, có khả năng chống va chạm và tiền hình ảnh không nhất thiết có nghĩa là chúng tạo ra đầu ra không thể phân biệt được với ngẫu nhiên.Bởi vì với một cuộc tấn công bằng văn bản đã chọn, luồng được tạo có thể được trích xuất dễ dàng. Nếu luồng có thể phân biệt được, thì mẫu rõ ràng có thể tiết lộ thông tin về văn bản thuần túy. Theo như tôi biết (những người khác sửa lỗi cho tôi nếu tôi sai), không có vấn đề nào như vậy xảy ra với bất kỳ hàm băm nào hiện đang được sử dụng. [Và như những người khác đã chỉ ra, có thể là do không có phân tích mã hóa nào như vậy đối với các hàm băm được sử dụng làm trình tạo luồng đã được thực hiện đủ nghiêm ngặt vì nó không bao giờ được dự định sử dụng theo cách đó]

Có một số vấn đề với cách câu hỏi của bạn đã được trình bày. Có nonce, counter và key. Bạn đang nói về nonce bên dưới nhưng không có bộ đếm và phương trình bạn đã trích dẫn $H(k\mathbin\|n)$ từ câu trả lời has got counter nhưng không có nonce nên bạn chưa nói rõ bạn sử dụng chúng như thế nào.

Dù sao theo như chúng tôi biết, $H(k\mathbin\|n\mathbin\|\text{ctr})$ ở đâu $n$$\text{ctr}$ tương ứng, nonce và counter có thể là một trình tạo luồng tốt cho hầu hết các hàm băm mà tôi đoán, miễn là $k$, $n$$\text{ctr}$ tất cả đều có độ dài cố định (bạn không phải lo lắng về các cuộc tấn công kiểu mở rộng độ dài đối với đầu vào có độ dài cố định). Nhưng nói chung, bạn phải sử dụng các hàm được cho là hàm giả ngẫu nhiên (như HMAC) để đảm bảo an toàn hợp lý nếu bạn muốn sử dụng luồng dựa trên hàm băm. Như trong $\operatorname{HMAC}_k(n\mathbin\|\text{ctr})$ . Và bởi vì HMAC sử dụng hàm băm kép và mật mã khối như AES có khả năng tối ưu hóa cao, nên tôi đoán rằng nó không mang lại hiệu suất mà các luồng hiện đại (chacha, AES-CTR/GCM) mang lại ngay cả khi nó đủ an toàn.

kelalaka avatar
lá cờ in
Tấn công mở rộng độ dài hoạt động như thế nào trên chế độ CTR?
Manish Adhikari avatar
lá cờ us
@kelalaka Tôi đã nói "MAY". Trên thực tế, tôi đã không nghĩ nhiều về cách thực sự làm điều đó khi tôi viết câu trả lời.Tôi không thể nghĩ ra một kịch bản thực tế cho điều đó nhưng có thể tưởng tượng một kịch bản hoang dã trong đó n có thể có độ dài tùy ý (tức là nhiều khối) và kẻ tấn công có thể kiểm soát IV nhưng không thể lặp lại nó. Vì vậy, anh ấy tạo ra thứ gì đó như $n' = n\|i\|padding$ và kéo dài độ dài từ đó. Hoặc tìm một số mật mã có nonce lớn và định dạng phù hợp cho điều đó, đồng thời thực hiện CPA với quyền kiểm soát đối với nonce (sử dụng nonce nhỏ), nhận luồng và thực hiện mở rộng độ dài để nhận luồng ban đầu
Manish Adhikari avatar
lá cờ us
Tất nhiên, thử nó trên giá trị truy cập sẽ không còn nghi ngờ gì nữa
Manish Adhikari avatar
lá cờ us
@kelalaka Nghĩ về một kịch bản ít "hoang dã" hơn, một hệ thống có một lỗ hổng khiến rất có thể nó chọn IV có định dạng phù hợp như mô tả ở trên và dễ bị tấn công bằng bản mã đã chọn. Bản mã cần được xác thực bằng MAC nhưng không xác thực IV. IV được thêm vào trước bản mã đã chọn và hệ thống sẽ không giải mã bản mã đích (bản mã sử dụng IV ở định dạng phù hợp). Một CCA2 trong trường hợp này có thể tiết lộ luồng khóa cho bản mã đích thông qua phần mở rộng độ dài.
kelalaka avatar
lá cờ in
Điều này là không thực tế trong Mật mã học hiện đại. Tại sao chúng ta cần xác định độ dài thay đổi để làm phức tạp quá trình phân tích và bảo mật? Chúng tôi đã biết các vấn đề xung quanh nó, có rất nhiều bài tập về điều này và các PRF tương tự.
Manish Adhikari avatar
lá cờ us
Tôi nghĩ có, tôi nên diễn đạt nó tốt hơn. Chỉnh sửa câu trả lời của tôi một chút

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