Điểm:1

Trình tạo PRNG có thể lặp lại các khối

lá cờ tf
Tom

Hãy sử dụng AES làm mật mã luồng và hãy sử dụng làm số đầu vào $1,2,3,...$. Bằng cách này, chúng ta sẽ nhận được các khối ngẫu nhiên và mỗi khối sẽ khác nhau.

Nhưng tôi có một trình tạo khối giả ngẫu nhiên không phải lúc nào cũng tạo ra các khối khác nhau. Vì vậy, chúng tôi có thể nhận được khối $B$ một lần và sau đó một lần nữa chẳng hạn sau khi giả sử có hàng triệu khối, có thể lấy lại cùng một khối $B$ (nhưng nó có thể hiếm).

Nó vẫn là trình tạo khối ngẫu nhiên tốt (vượt qua tất cả các bài kiểm tra). Có vấn đề gì không nếu ai đó muốn sử dụng nó làm PRNG hoặc nếu ai đó muốn sử dụng nó làm luồng để mã hóa?

Hầu hết các mật mã đáp ứng điều kiện là chúng tạo ra các giá trị duy nhất, nhưng trong trường hợp này, chúng ta có thể nhận được cùng một mã hóa của cùng một khối sau ít hơn $2^{128}$ khối.

Maarten Bodewes avatar
lá cờ in
Nhân tiện, có nhiều cách để tạo mật mã dòng từ AES; có vẻ như bạn đang mô tả rõ ràng AES ở chế độ CTR, không phải ví dụ: CFB hoặc OFB.
Điểm:2
lá cờ in

Đối với CSPRNG, tôi muốn nói rằng thực tế là nó có thể lặp lại các khối là một điều tốt; dự đoán rằng một mô hình không thể lặp lại là vấn đề. Lý do duy nhất tại sao nó thường được chấp nhận là cơ hội lặp lại các khối lớn hơn là không đáng kể.

Giả sử bạn muốn sử dụng CSPRNG để tạo một tập hợp các khối 128 bit, kích thước khối của AES. một triệu là khoảng $2^{20}$. bạn sẽ mong đợi một cơ hội của $1 - (1 - {1 \over 2^{128}})^{1000000} \approx 2^{-108}$ để khối ban đầu được lặp lại và ${1000000 \over 2^{128}} \approx 2^{-(128 - 20)} = 2^{-108}$ đối với bất kỳ va chạm nào trong một triệu khối đầu tiên xảy ra. Lý do tại sao các giá trị này gần giống nhau là vì một triệu chẳng là gì đối với các giá trị 128 bit. Như bạn có thể thấy, khả năng xảy ra va chạm thấp đến mức có thể coi là không đáng kể. Đây là lý do tại sao mật mã dòng như AES-CTR có thể được coi là chính CSPRNG.

Nói chung, CSPRNG có trạng thái bên trong lớn, điều đó có nghĩa là không thể biết khi nào PRNG lặp lại. Quan trọng hơn, cơ hội mà họ đạt được một đi xe đạp cực kỳ thấp (nếu một chu kỳ bị tấn công thì CSPRNG sẽ tạo ra cùng một mẫu - lớn - lặp lại). Vì vậy, do tính không thể đoán trước, bạn có thể sử dụng CSPRNG làm mật mã luồng. Tất nhiên, điều này cũng đúng với AES / CTR, nếu bạn nhìn vào các mẫu khác với 128 bit ở chính xác đúng vị trí. Rõ ràng là một mẫu của một bit sẽ lặp lại cực kì thường xuyên - chỉ là bạn không thể biết mình sẽ tìm thấy giá trị bit nào ở một vị trí nhất định. Vấn đề với AES-CTR là nó sẽ đạt một chu kỳ chính xác sau khi bộ đếm đã cạn kiệt.

Tuy nhiên, vì nhiều CSPRNG triển khai chưa được thiết kế để tạo ra cùng một luồng xác định, bạn nên cực kỳ cẩn thận của việc sử dụng một như một mật mã dòng. Chẳng hạn, chúng có thể gieo lại, sử dụng hạt giống đã cho làm entropy bổ sung, tạo đầu ra khác khi các phương thức được gọi khác nhau hoặc thậm chí sửa đổi thuật toán. Nếu không may, bạn sẽ không bao giờ có thể tạo lại cùng một luồng khóa và dữ liệu của bạn sẽ bị mất (xem ví dụ: getRawKey() trên thiết bị Android).

Tất nhiên, AES-CTR nói chung cũng sẽ nhanh hơn rất nhiều so với CSPRNG. Nếu bạn không thích AES hoặc không có khả năng tăng tốc phần cứng thì mật mã luồng chẳng hạn như ChaCha thường là cách tốt nhất. Thông thường, bạn sẽ sử dụng các mật mã này trong chế độ được xác thực bằng GMAC (AES-GCM) hoặc Poly1305.

Trong tài liệu về mật mã, bạn sẽ thường thấy rằng các thuật ngữ "mật mã dòng" và "CSPRNG" được sử dụng thay thế cho nhau, nhưng hãy cẩn thận với những khác biệt thực tế trong hai phần cuố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.