Điểm:1

Khi nào PRNG được sử dụng và khi nào CSPRNG được sử dụng

lá cờ ng

Tôi hiểu rằng PRNG là Trình tạo số ngẫu nhiên sử dụng thuật toán xác định dựa trên hạt giống.

Tôi cũng hiểu rằng CSRNG là PRNG an toàn về mặt mật mã để sử dụng để tạo số ngẫu nhiên.

Và bằng mật mã-đồng minh an toàn, tôi tin rằng điều này có nghĩa là ngay cả khi kẻ tấn công biết thuật toán xác định và hạt giống, chúng sẽ không thể dự đoán số ngẫu nhiên tiếp theo. Tôi hiểu điều này là do CSRNG cũng sử dụng một số trạng thái nội bộ.

Nếu có bất kỳ lỗi nào ở trên, tôi sẽ đánh giá cao việc làm rõ vì câu hỏi của tôi phụ thuộc vào tính chính xác của chúng.

Vì vậy, câu hỏi chính của tôi là, khi nào bạn cần PRNG? và khi nào bạn phải sử dụng CSPRNG?

Câu trả lời ban đầu của tôi cho điều đó là CSPRNG nên được sử dụng khi tạo khóa, nhưng khi tôi tìm kiếm "prng được sử dụng để làm gì", một trong những trang tôi tìm thấy là cái này trong đó nói rằng:

Trong mật mã học, PRNGâs được sử dụng để xây dựng khóa phiên và mật mã dòng

Điều này khiến tôi hơi bối rối, tại sao PRNG, thứ không mạnh về mặt mật mã lại được sử dụng cho các khóa? Tôi hy vọng CSPRNG sẽ được sử dụng thay thế.

Điều này khiến tôi nhận ra rằng có lẽ tôi chưa hiểu hết về PRNG và CSPRNG cũng như cách chúng được sử dụng. Do đó, câu hỏi này: Trong Mật mã học, khi nào PRNG được sử dụng chính xác và khi nào CSPRNG được sử dụng?

kelalaka avatar
lá cờ in
[Sự khác biệt giữa CSPRNG và PRNG là gì?](https://crypto.stackexchange.com/questions/12436/what-is-the-difference-between-csprng-and-prng), [https://crypto. stackexchange.com/questions/60405/why-are-prng-in-programming-languages-not-cryptographically-secure-by-default/60407#60407](https://crypto.stackexchange.com/q/60405/18298 ), Bạn cũng nên xem trang web của chúng tôi. Đó là một số ví dụ.
Finlay Weber avatar
lá cờ ng
trong một trong các liên kết, câu hỏi nêu rõ rằng "Chúng tôi sử dụng PRNG để tạo khóa" có đúng không? PRNG có được sử dụng để tạo khóa không? hay CSPRNG được sử dụng?
Finlay Weber avatar
lá cờ ng
Tôi đã xem cả hai liên kết và tôi không chắc chúng trả lời câu hỏi cốt lõi của tôi: Trong Mật mã học, PRNG được sử dụng chính xác khi nào và CSPRNG được sử dụng khi nào?
kelalaka avatar
lá cờ in
Câu hỏi chính của bạn là thiếu bối cảnh. Câu trả lời đơn giản là sử dụng CSPRNG bất cứ khi nào có sẵn? Vì vậy, những gì hệ thống của bạn không có CSPRNG và những gì bạn có trong hệ thống của mình để hệ thống đích của bạn an toàn trước các cuộc tấn công x, y, z. Khác với câu hỏi của bạn là rộng, phải không? Câu trả lời của Thomas đã bao gồm những điều mơ hồ của bạn;
kelalaka avatar
lá cờ in
`Tính giả ngẫu nhiên như vậy có thể được bảo mật bằng mật mã hoặc không. Nó được bảo mật bằng mật mã nếu không ai có thể phân biệt một cách đáng tin cậy đầu ra với tính ngẫu nhiên thực sự, ngay cả khi thuật toán PRNG được biết một cách hoàn hảo (nhưng không biết trạng thái bên trong của nó). Một PRNG không bảo mật bằng mật mã sẽ đánh lừa các bài kiểm tra thống kê cơ bản nhưng có thể bị kẻ tấn công thông minh phân biệt với tính ngẫu nhiên thực sự.`
Maarten Bodewes avatar
lá cờ in
Không nằm trong các câu trả lời khác: "Và bằng mật mã-đồng minh an toàn, tôi tin rằng điều này có nghĩa là ngay cả khi kẻ tấn công biết thuật toán xác định và hạt giống, chúng sẽ không thể dự đoán số ngẫu nhiên tiếp theo. Tôi hiểu điều này là do CSRNG cũng sử dụng một số trạng thái nội bộ." Điều này là không chính xác, PRNG là một thuật toán và do đó mang tính quyết định. Nếu bạn biết hoặc có thể đoán các hạt giống (và khi chúng được trộn vào trạng thái) thì bạn có thể tính toán trạng thái bên trong và tất cả đầu ra. Nói cách khác: hạt giống là nguồn entropy của PRNG.
Điểm:2
lá cờ cr

Đầu tiên, một số định nghĩa:

  • PRNG là một trình tạo số giả ngẫu nhiên. Nó có thể là một cái rất kém, hoặc một cái có tính chất toán học rất mạnh. Nó không quan trọng đối với định nghĩa này.
  • CSPRNG là một PRNG bảo mật bằng mật mã. Nó là một PRNG, với một số yêu cầu mạnh mẽ.

trong bạn liên kết, tác giả đang viết về CSPRNG, nhưng gọi chúng là PRNG. Yếu tố "bảo mật bằng mật mã" được ngụ ý bởi yêu cầu này:

Các chuỗi bit được tạo sẽ "trông ngẫu nhiên" đối với kẻ thù.

Thật vậy, CSPRNG được yêu cầu khi đầu ra của PRNG phải không thể phân biệt được với tính ngẫu nhiên hoàn toàn đồng nhất (điều này có nghĩa là đầu ra không thể đoán trước). Điều này được yêu cầu bởi một số thuật toán mật mã.

Hầu hết CSPRNG do hệ điều hành cung cấp sẽ cập nhật trạng thái bên trong của chúng từ đầu vào ngẫu nhiên, do đó ngay cả khi hạt giống hoặc trạng thái bên trong bị rò rỉ tại một số điểm, nó sẽ tự động sửa thành trạng thái bảo mật. Nhưng đây không phải là yêu cầu đối với CSPRNG. Một số CSPRNG được cung cấp bởi các thư viện mật mã không tự động cập nhật trạng thái của chúng, trong khi những CSPRNG khác thì có.

CSPRNG luôn có thể được sử dụng thay cho PRNG khi không cần có khả năng tạo ra cùng một đầu ra hai lần. Ví dụ: khi tạo cấp độ trò chơi điện tử từ hạt giống hoặc khi lông tơ, điều quan trọng là có thể tái tạo đầu ra. Trong những trường hợp đó, nên sử dụng PRNG hoặc CSPRNG không tự động cập nhật trạng thái bên trong của nó từ các nguồn khác ngoài hạt giống ban đầu của nó. Mật mã luồng cũng có thể được sử dụng, nhưng một PRNG đơn giản có thể nhiều hơn đầy đủ và hơn thế nữa có hiệu quả, tùy theo yêu cầu.

Để trả lời trực tiếp các câu hỏi của bạn: bạn phải sử dụng CSPRNG khi nó được chỉ định bởi thuật toán mật mã (trường hợp này thường xảy ra). Và bạn phải sử dụng PRNG hoặc CSPRNG không tự động cập nhật trạng thái bên trong của nó khi cần sao chép đầu ra của nó. Đối với các trường hợp khác, hầu hết thời gian bạn sử dụng loại RNG nào không quan trọng.

Ngoài ra, nếu bạn bằng cách nào đó cần một đầu ra có thể lặp lại không thể phân biệt được với tính ngẫu nhiên hoàn toàn đồng nhất, thì bạn cần một dòng mật mã, không phải là PRNG.

A. Hersean avatar
lá cờ cr
@fgrieu Đó không chính xác là những gì tôi đã viết. Tuy nhiên, tôi đã sửa đổi câu trả lời của mình để rõ ràng hơn. Về TRNG, trong câu trả lời của tôi, tôi không phân biệt PRNG với quá trình tạo hạt giống của chúng, mà với việc cập nhật (hoặc thiếu nó) trạng thái bên trong của chúng sau khi chúng được tạo hạt giống, như được thực hiện bởi OpenSSL hoặc /dev/urandom trên Linux. Vì có sự mơ hồ về ý nghĩa của "true" trong TRNG (tùy thuộc vào người đang nói), tôi không bao giờ sử dụng thuật ngữ này.
fgrieu avatar
lá cờ ng
Tôi sẽ không gọi /dev/urandom là CSPRNG hoặc PRNG.Đối với tôi, PRNG mang tính xác định (điều đó được ngụ ý bởi Giả) và CSPRNG chỉ trở nên không thể đoán trước khi được kết hợp với một nguồn entropy thích hợp, biến nó thành CSRNG, viết tắt của Cryptographically Secure (Đúng, thường được ngụ ý thay vì nêu rõ) Số ngẫu nhiên Máy phát điện. Không phải tất cả các CSRNG đều bao gồm CSPRNG: người ta thường tạo RNG Đích thực Bảo mật bằng Mật mã từ hạt giống tốt có thử nghiệm trực tuyến tốt và một PRNG không bảo mật bằng mật mã, ví dụ: một LFSR cơ bản với một số thập phân.
A. Hersean avatar
lá cờ cr
@fgrieu Nếu tôi hiểu chính xác định nghĩa của bạn, một bộ xoắn Mersenne (MT19937) được tạo từ/dev/urandom sẽ trở thành CSRNG. Nhưng đầu ra của RNG này có thể được dự đoán từ việc quan sát 624 lần lặp lại. Đối với tôi (và Wikipedia), đây không thể là CS và nó mâu thuẫn với yêu cầu đã nêu của bạn về tính không thể đoán trước đối với CSRNG. Vì bạn có nhiều kinh nghiệm hơn tôi, tôi cảm thấy như mình đang thiếu thứ gì đó. Bạn có thể khai sáng cho tôi?
A. Hersean avatar
lá cờ cr
@fgrieu Có phải bạn cho rằng MT19937 đã được gieo bí mật một CSRNG không thể đoán trước với điều kiện tối đa 64x624 bit được tạo? Mặc dù các điều kiện tương tự được ngụ ý cho mọi RNG có trạng thái bên trong chỉ phụ thuộc vào một hạt giống, nhưng tôi nghĩ việc gọi MT19937 là CSRNG ở đây là lạm dụng. Lưu ý bên lề: cá nhân tôi sử dụng "giả" khi các bit được tạo bởi một thuật toán, vì vậy tôi không phân biệt giữa CSPRNG và CSRNG. Tôi sẽ bảo lưu việc thiếu "giả" (hoặc sử dụng "đúng") cho RNG phần cứng hoàn hảo tưởng tượng và tôi thích HRNG hơn cho các trình tạo phần cứng thực (thiên vị).
fgrieu avatar
lá cờ ng
Việc sử dụng "giả" bất cứ khi nào có liên quan đến thuật toán là điều hiển nhiên và tôi đồng ý gọi /dev/urandom là Pseudo-TRNG hoặc tuyên bố rằng nó _uses_ a (CS)PRNG; nhưng không phải nó _is_ một (CS)PRNG, có định nghĩa chính xác trong tiền điện tử hiện đại. Thật vậy, MT19937 không bảo mật bằng mật mã khi được sử dụng như bạn mô tả và do đó không phải là CSRNG khi được sử dụng một mình. Tuyên bố của tôi là về LFSR (ví dụ: trong chế độ [scrambler](https://en.wikipedia.org/wiki/Scrambler#Additive_(synchronary)_scramblers)) được cung cấp bằng nguồn entropy và quan trọng nhất là bằng số thập phân (để lại sản lượng ít hơn đáng kể hơn đầu vào).
Điểm:1
lá cờ cn

Nó thực sự khá đơn giản.

P. Trình tạo số ngẫu nhiên tạo ra các số tìm kiếm ngẫu nhiên (xem bên dưới). Đôi khi tất cả những gì được mong đợi là các con số không thể phân biệt bằng tính toán với tìm kiếm ngẫu nhiên (PRNG). Nếu bạn có thể dự đoán số tiếp theo theo thuật toán, điều đó không thành vấn đề. Ví dụ, Monte Carlo thí nghiệm. Các Xoắn Mersenne khá tốt và có lẽ là PRNG được sử dụng nhiều nhất trên thế giới (nó nằm trong Python), nhưng hoàn toàn có thể dự đoán được sau khi quan sát ~624 kết quả đầu ra. Do đó vô dụng để che giấu bí mật.

C. CSPRNG là một PRNG nâng cấp mà bạn không thể dự đoán số tiếp theo. Nó được gọi là kiểm tra bit tiếp theo, tức là bạn không thể dự đoán bit đầu ra tiếp theo bất kể bạn thực hiện quan sát nào (không biết trạng thái ẩn bên trong). Cho nên:-

$$ P(x_{i} = 1) = \frac{1}{2} + \epsilon $$

nơi thiên vị từ evens là (thường) $< 2^{-64}$. Sau đó, nếu bạn đưa ra các giả định về phần đầu tiên của văn bản mật mã, điều đó sẽ không giúp ích gì cho phần tiếp theo và bạn chẳng đi đến đâu cả. Đó là những gì chúng tôi muốn che giấu bí mật. Một ví dụ là salsa20 như một phần của mật mã dòng.

Trong mật mã học, PRNGâs được sử dụng để xây dựng khóa phiên và mật mã dòng

Chỉ là nói năng cẩu thả. Tôi gọi tất cả chúng là RNG trừ khi cần có định nghĩa hẹp hơn.


  1. Sắc thái: PRNG có thể tạo số với tất cả các loại kỳ quặc phân phối hữu ích cho khoa học và những thứ đó. Trong mật mã, chúng tôi tạo ra các bản phân phối thống nhất để che dấu các thông điệp của chúng tôi.

  2. có một cái nhìn tại https://vi.m.wikipedia.org/wiki/List_of_random_number_generators.

  3. Cũng lưu ý sự tồn tại của TRNG, là sự kết hợp của phần trên và phần cứng.

SAI Peregrinus avatar
lá cờ si
Tôi (như thường lệ) phản đối việc gọi HWRNG là TRNG. Không có gì "đúng" về chúng hơn bất kỳ CSPRNG nào. Đây là một phản đối siêu hình: các định luật vật lý phù hợp với một vũ trụ hoàn toàn tất định, vì vậy không có lý do gì để cho rằng có một nguồn entropy ẩn nào đó cho phép hoàn toàn không xác định thay vì chỉ là Hỗn loạn toán học dẫn đến việc không thể dự đoán các sự kiện trong tương lai. Không thực sự là một sự khác biệt thực tế, nhưng việc gọi chúng là TRNG có thể khiến mọi người có những ý tưởng sai lầm về cách thức hoạt động của entropy.
Paul Uszak avatar
lá cờ cn
@SAIPeregrinus Ôi trời - bạn làm tôi thất vọng ;-) Mồi nuốt và tiêu hóa. Hôm nay bạn đã rửa chưa? Không phải là một sự chỉ trích cá nhân, mà là khoa học. Nước chảy vòng vòng xuống lỗ cắm. Trong động lực học chất lỏng, nó được gọi là dòng chảy rối (không tầng). Trong khi nó đi theo chiều kim đồng hồ (ở hướng Bắc), bạn có nghĩ rằng nó làm như vậy với một sự ngẫu nhiên nhất định không? Những con sóng, những đường cong v.v. Một mô hình không thể đoán trước? Tuy nhiên, ở lại trong bồn rửa. Thanh hệ thống ống nước kém, nó không làm ngập căn gác mái của nhà bên cạnh. Điều này chứng tỏ rằng vi mô không xác định và vĩ mô có thể dự đoán được có thể cùng tồn tại mà không cần Vũ trụ bùng nổ.
Paul Uszak avatar
lá cờ cn
Xem [trang](http://www.reallyreallyrandom.com/zener/why-its-random/) của tôi để biết giải thích kỹ thuật hơn về tính bất định lượng tử và tại sao TRNG thực sự tồn tại. Ngoài ra, hãy xem xét rằng các CSPRNG hoàn toàn mang tính quyết định, có thể dự đoán được bởi một người nào đó, có đầu ra hữu hạn và có độ phức tạp ~ 0 Kolmogorov. Do đó, theo tải, CSPRNG $\ne$ TRNG. Và sau đó là công cụ đệm một lần. Hay những thứ đó cũng không tồn tại ..?
Paul Uszak avatar
lá cờ cn
Nhưng tôi không hiểu câu _"entropy"_ cuối cùng của bạn.
SAI Peregrinus avatar
lá cờ si
Bạn tin rằng Cơ học lượng tử là không tất định. Tôi không: giả sử tính không tất định là không cần thiết để tính toán. Vì vậy, tôi đang phân biệt giữa các quá trình ngẫu nhiên "thực sự" và những quá trình chỉ hỗn loạn. Không có cách nào để nói sự khác biệt từ đầu ra, vì vậy đó là một câu hỏi siêu hình. Giống như việc thực sự chạy "bài kiểm tra bit tiếp theo" trong vũ trụ vật chất là điều không thể.
SAI Peregrinus avatar
lá cờ si
Entropy của thông tin là về khối lượng mà một tập hợp các trạng thái nhất định của một hệ thống chiếm giữ trong không gian trạng thái của tất cả các trạng thái có thể có của hệ thống đó và xác suất của một đường dẫn nhất định qua không gian trạng thái đi vào khối lượng đó. Nó thường bị nhầm lẫn với "tính ngẫu nhiên" hoặc "tính không xác định" (các khái niệm khác nhau). Nhấn mạnh vào sự tồn tại của tính ngẫu nhiên "thực sự" có xu hướng gây nhầm lẫn, đặc biệt khi sử dụng entropy để mô tả các hệ thống dường như ngẫu nhiên.
Paul Uszak avatar
lá cờ cn
@SAIPeregrinus Heisenberg, Sinh ra, Bohr và người bạn đời của họ Schrödinger sẽ không đồng ý với bạn.
SAI Peregrinus avatar
lá cờ si
Và Bohm, Everett, và những người khác sẽ chỉ ra những công thức mang tính tất định. Tôi nghi ngờ Heisenberg, Born, hoặc Bohr sẽ nhấn mạnh một cách sai lầm rằng cách giải thích Copenhagen mà họ ưa thích là cách giải thích hợp lệ duy nhất, hoặc toán học yêu cầu thuyết bất định. Họ sẽ không đồng ý về những giả định nào đơn giản hơn, không phải về những thứ là giả định.

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