Điểm:3

Bỏ qua đầu ra đầu tiên của mật mã dòng

lá cờ tf
Tom

Tôi nhớ đã đọc ở đâu đó rằng đôi khi trong một số mật mã dòng, cần phải bỏ qua các giá trị đầu tiên mà chúng tạo ra. Tôi không thể tìm thấy bất kỳ thông tin về điều này ngay bây giờ.

Nhưng nó có vẻ có ý nghĩa. Giống như một hàm băm cần thực hiện nhiều vòng trước khi trả về một kết quả ngẫu nhiên, CSPRNG cần một số lần lặp để không thể lấy thông tin gốc và thông tin chính từ các kết quả đầu tiên.

Làm thế nào để bạn xác định có bao nhiêu lần lặp lại này? Hoặc có những cách khác để giải quyết vấn đề này? Để các kết quả là ngẫu nhiên từ các lần lặp đầu tiên, chỉ cần khởi tạo đúng với một khóa và hạt ngẫu nhiên (cũng có thể được coi là một khóa) là đủ. Nhưng tôi không nghĩ điều này giải quyết được vấn đề về kết quả của trình tạo đầu tiên. Bạn vẫn có thể đọc một số thuộc tính chính từ những kết quả đầu tiên đó, chính xác như thể bạn không thực hiện đủ số vòng trong hàm băm.

PS Ý tưởng của tôi để kiểm tra xem chúng ta phải bỏ qua bao nhiêu lần lặp lại là coi CSPRNG là một hàm băm có khóa và cung cấp cho nó theo số $1,2,3,...$ làm hạt giống với một số phím, đặc biệt được chọn đặc biệt để làm cho chúng có vẻ yếu (nhưng cũng có các phím ngẫu nhiên). Sau đó, xem liệu một hàm băm như vậy có vượt qua các bài kiểm tra thống kê, chẳng hạn như PractRand hay không. Đây sẽ là một điều kiện tối thiểu. Vẫn không loại trừ rằng sẽ có các phương pháp tấn công mật mã tinh vi sẽ chọn ra các bit của khóa từ các số tìm kiếm PractRand dưới dạng số ngẫu nhiên.

Maarten Bodewes avatar
lá cờ in
Một mật mã dòng tốt không nên có các loại thuộc tính đó. Các mật mã luồng cũ hơn/không tốt như RC4 có các thuộc tính phân biệt trong luồng khóa đầu ra của chúng. Một số trong số này chỉ ra một vấn đề với các byte đầu ra nói chung, nhưng một số khác phụ thuộc vào mối quan hệ với trạng thái bên trong của thuật toán và tất nhiên những vấn đề đó là thuật toán cụ thể. Đây là loại vấn đề: trước hết, một số vấn đề có thể xảy ra có thể không phát hiện được bằng phân tích đầu ra "đơn giản" ngay từ đầu. Đối với những người khác, cuộc tấn công phụ thuộc hoàn toàn vào thuật toán. Vì vậy số lần lặp phụ thuộc.
Điểm:3
lá cờ cn

Tôi nhớ đã đọc ở đâu đó rằng đôi khi trong một số mật mã dòng, cần phải bỏ qua các giá trị đầu tiên mà chúng tạo ra.

Không phải một số mật mã luồng, mà là một mật mã cụ thể: RC4. RC4 ra đời từ thời kỳ trước khi các thuật toán nguyên thủy về mật mã không được xem xét kỹ lưỡng - trên thực tế, nó ban đầu là một thuật toán bí mật. Sau khi thiết kế của RC4 được công khai, một số điểm yếu đã được phát hiện. Điểm yếu chính là sự sai lệch ở phần đầu của dòng khóa. RC4 phổ biến vào thời điểm một cuộc tấn công dựa trên xu hướng này lần đầu tiên được phát hiện và biện pháp đối phó là loại bỏ một vài byte đầu tiên. Theo thời gian, phân tích sai lệch đã được cải thiện, khiến số lượng loại bỏ không đủ và RC4 dần mất đi tính phổ biến.

RC4 có thiết kế rất đơn giản: mỗi vòng bao gồm một số xáo trộn đơn giản về trạng thái bên trong và phát ra một byte đầu ra. Nó chỉ ra rằng cho đến khi có đủ vòng, đầu ra có thể dự đoán được phần nào.

Hầu hết các mật mã thực hiện nhiều vòng xáo trộn trước khi phát ra bất kỳ đầu ra nào. Và các mật mã được sử dụng phổ biến đã được cộng đồng nghiên cứu mật mã xác nhận qua nhiều năm nghiên cứu.

Giống như một hàm băm cần thực hiện nhiều vòng trước khi trả về một kết quả ngẫu nhiên, CSPRNG cần một số lần lặp để không thể lấy thông tin gốc và thông tin chính từ các kết quả đầu tiên.

Có và không. Đúng là một CSPRNG cần có đủ sự xáo trộn từ hạt giống.Nhưng sự xáo trộn đó được tích hợp vào các thành phần cơ bản của thuật toán. CSPRNG hiện đại điển hình dựa trên hàm băm (đã có nhiều vòng bên trong) hoặc trên mật mã khối hoặc luồng (đã có nhiều vòng bên trong).

Ý tưởng của tôi để kiểm tra xem chúng ta phải bỏ qua bao nhiêu lần lặp là coi CSPRNG như một hàm băm với một khóa và cung cấp cho nó các số 1,2,3,... như một hạt giống với một số khóa

Đây là một cách tiếp cận hợp lệ và phổ biến cho các hàm phái sinh chính â tạo ra vật liệu giả ngẫu nhiên một cách xác định từ một hạt giống. (Lưu ý rằng tôi đang nói về dẫn xuất khóa từ vật liệu có entropy cao, không phải dẫn xuất khóa dựa trên mật khẩu, còn được gọi là kéo dài khóa, có các yêu cầu khác nhau.) Ví dụ về thuật toán dẫn xuất khóa tuân theo mô hình này là NIST SP 800-108 KDF ở chế độ bộ đếmHKDF.

Tuy nhiên, với tư cách là một trình tạo ngẫu nhiên, cách tiếp cận này thiếu một thứ — mà nhân tiện, RC4 cũng thiếu (điều này khiến nó trở thành một lựa chọn tồi cho CSPRNG, mặc dù nó phổ biến). Nó thiếu kháng cự: thuộc tính mà nếu trạng thái bị xâm phạm, thì điều này sẽ ảnh hưởng đến đầu ra RNG trong tương lai chứ không phải đầu ra trong quá khứ. Khả năng chống quay lui yêu cầu chuyển đổi một chiều trạng thái của RNG mỗi khi nó phát ra đầu ra. Bất kỳ cấu trúc nào sử dụng biến bí mật không đổi và biến công khai để tạo đầu ra đều thiếu khả năng chống quay lui.

kelalaka avatar
lá cờ in
Bạn cần một sự điều chỉnh. Xem [tại đây](https://chat.stackexchange.com/transcript/message/61198977#61198977)
Gilles 'SO- stop being evil' avatar
lá cờ cn
@kelalaka Bạn (tốt, Squamish Ossifrage) có thể vui lòng mở rộng hoặc cung cấp tài liệu tham khảo không? AFAIK ARC4 được xuất bản vào năm 1994 và các bất thường thống kê được biết đến khá nhanh nhưng không phải trong vòng 24 giờ, nhưng các cuộc tấn công đã không xuất hiện cho đến đầu những năm 2000 (đáng chú ý là https://www.mattblaze.org/papers/others/rc4_ksaproc.pdf vào năm 2001 - có phần "các cuộc tấn công trước đó" trích dẫn các bài báo năm 1997 và 1998 mà 1. không dẫn đến cuộc tấn công thực tế và 2. xuất hiện sau khi RC4 phổ biến, ví dụ: nó đã được sử dụng trong SSL).
kelalaka avatar
lá cờ in
[Bob Jenkins, ngày 15 tháng 9 năm 1994, 6:51:50 chiều](https://groups.google.com/g/sci.crypt/c/JsO3xEATGFA/m/-wO4ttv7BCYJ) nói về Xu hướng trên Sci.Crypt .
Gilles 'SO- stop being evil' avatar
lá cờ cn
@kelalaka À, cảm ơn.Tôi hiểu rồi, vâng, tôi đã viết về sự thiên vị nhưng có nghĩa là các cuộc tấn công (thực tế) dựa trên sự thiên vị đó, mất vài năm.
Điểm:1
lá cờ sa

Hầu hết các mật mã dòng truyền thống đều có trạng thái $S=(s_1,\ldots,s_n)$ kích thước $n$ bit, chức năng cập nhật trạng thái $\phi:S\rightarrow S$, được khởi tạo bằng vật liệu khóa ngẫu nhiên, giả sử $S_0=(k_1,\ldots,k_n)$ và lặp lại trạng thái là $S_{t+1}=\phi(S_t),$$t=1,2,\ldots.$ Họ cũng có một chức năng đầu ra $f:S\rightarrow \{0,1\}^\ell,$ đầu ra nào $\ell$ bit cùng một lúc. Thông thường chúng ta có thể có $\ell=1,$ hoặc $\ell=8.$

Vì vậy, một số lần lặp nhất định được yêu cầu cho bất kỳ mối tương quan dễ tính toán nào từ vật liệu chính để tiêu tan trong chuỗi dòng khóa được quan sát. $f(S_t),f(S_{t+1}),\ldots$ (giả sử bản mã đã biết hoặc bản rõ đã biết và một mật mã bổ sung trong đó bản rõ được XOR với dòng khóa).

Theo truyền thống, ánh xạ $\phi$ có dạng $$ \phi(s_1,\ldots,s_n)=(s_2,\ldots,s_n,s_{n+1}),\quad s_{n+1}=g(s_1,\ldots,s_n) $$

vì lý do hiệu quả, như trong thanh ghi thay đổi. Vì vậy, bạn sẽ cần bội số không đổi của $n$ lặp lại trước khi thực sự sử dụng dòng khóa.

Như trong các nhận xét, trong mật mã dòng hiện đại, một số biện pháp như sử dụng IV hoặc Nonces hoặc sử dụng các chế độ hoạt động khác nhau của mật mã dòng, có thể sử dụng dòng khóa ngay lập tức mà không cần vứt bỏ bất kỳ mã nào. Ví dụ: nếu IV là ngẫu nhiên và độc lập với khóa và có cùng độ dài bit với trạng thái và nó được XOR thành trạng thái ban đầu (trong khi ở chế độ công khai) thì điều này có tác dụng làm trắng và làm cho dòng khóa độc lập với khóa.

Tom avatar
lá cờ tf
Tom
Cảm ơn, câu trả lời này làm cho chủ đề này trở nên rõ ràng hơn đối với tô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.