Điểm:1

Số ngẫu nhiên thực sự theo tỷ lệ - Chip bộ nhớ quá tải tạo ra các số thực sự ngẫu nhiên để mã hóa

lá cờ eg

Trong nhiều năm, những con số thực sự ngẫu nhiên ở quy mô đã khó nắm bắt. Vì vậy, tôi đọc nghiên cứu gần đây này https://www.newscientist.com/article/2303984-overloaded-memory-chips-generate-truly-random-numbers-for-encryption/https://cacm.acm.org/news/257835-overloaded-memory-chips-generate-truly-random-numbers-for-encryption với những âm mưu, dự đoán và phấn khích tuyệt vời.

Câu hỏi đầu tiên của tôi: Những khó khăn liên quan đến việc tạo số ngẫu nhiên thực sự là gì? Chi phí, thực tế như tiêu thụ điện năng?

Câu hỏi thứ hai: Cái gì và ai có thể là người phân xử về tính ngẫu nhiên thực sự? tức là ai quyết định con số cụ thể này thực sự được tạo ngẫu nhiên?

A. Hersean avatar
lá cờ cr
Có thể tìm thấy hướng dẫn `RDSEED` trên bất kỳ bộ vi xử lý x64 nào gần đây.Xem https://en.wikipedia.org/wiki/RDRAND Ngoài ra, chip ARM thường có khả năng [tương tự](https://stackoverflow.com/a/39390306/7035309), nhưng nó chưa được chuẩn hóa.
Nathan Aw avatar
lá cờ eg
được rồi đó là mát mẻ để biết! tại sao mọi người không tận dụng điều đó vì nó được phổ biến rộng rãi?
A. Hersean avatar
lá cờ cr
Họ làm. Linux CSPRNG (/dev/urandom và /dev/random) sử dụng nó (trong số các nguồn khác) khi có sẵn. Người ta cho rằng Windows cũng làm như vậy, nhưng vì nó là nguồn đóng nên thông tin này không được công khai.
Điểm:2
lá cờ cn

Trong nhiều năm, những con số thực sự ngẫu nhiên ở quy mô đã khó nắm bắt.

Không, đây là sự cường điệu 100%. Tạo số ngẫu nhiên rất dễ dàng. Có rất nhiều kỹ thuật được biết đến để làm điều đó. âTỷ lệâ không phải là vấn đề liên quan đến số lượng số ngẫu nhiên, bởi vì tính ngẫu nhiên âtrueâ chỉ cần thiết để tạo ra một trình tạo giả ngẫu nhiên an toàn bằng mật mã (CSPRNG). Đầu ra của CSPRNG không thể phân biệt được với ngẫu nhiên thực.

Câu hỏi đầu tiên của tôi: Những khó khăn liên quan đến việc tạo số ngẫu nhiên thực sự là gì? Chi phí, thực tế như tiêu thụ điện năng?

Một khó khăn với việc tạo ngẫu nhiên là nó yêu cầu phần cứng chuyên dụng tốn một phần đáng kể xu để sản xuất hàng loạt. Đây là mối quan tâm đối với các thiết bị có giá theo thứ tự độ lớn của một xu trên mỗi đơn vị. Khó khăn này ngày nay đã được giải quyết phần lớn: giá đã giảm so với một thập kỷ trước và nhiều bộ vi điều khiển giá rẻ bao gồm TRNG.

Ngẫu nhiên, tạo số ngẫu nhiên thông qua bộ xử lý và bộ nhớ jitter là một kỹ thuật nổi tiếng không thể được sử dụng trong các thiết bị rất rẻ vì chúng quá chậm và ổn định. Và nó không phải là một kỹ thuật rất hữu ích trên các thiết bị lớn hơn vì đối với những thiết bị đó, chi phí gia tăng của một TRNG chuyên dụng là không đáng kể. Ví dụ, tất cả các bộ xử lý PC và điện thoại thông minh hiện đại đều bao gồm một TRNG chuyên dụng.

Tiêu thụ điện năng không phải là vấn đề lớn vì TRNG chỉ cần chạy trong một khoảng thời gian rất ngắn. độ trễ có thể là một vấn đề khi bộ xử lý khởi động.

Là một nhà thiết kế hệ thống nhúng, người không biết nhiều về cách thức hoạt động của phần cứng (công việc của tôi chắc chắn ở cấp độ phần mềm và hệ thống), những cải tiến mà tôi muốn thấy trong việc tạo ngẫu nhiên phần cứng là rẻ hơn để sản xuất hàng loạt (để chúng có trong mọi thiết bị), để có ít độ trễ hơn và đáng tin cậy hơn trước những nhiễu loạn của môi trường (ví dụ: sự thay đổi về nhiệt độ và công suất).

Nhưng trên thực tế, vấn đề lớn nhất với việc tạo ngẫu nhiên không nằm ở phần cứng. Đó là trong hệ sinh thái phần mềm gặp khó khăn trong việc kết nối tất cả các bước giữa thiết kế phần cứng và thiết kế ứng dụng. Vấn đề là các hệ điều hành và giao diện ngôn ngữ lập trình nơi nhận các số ngẫu nhiên không an toàn thì dễ nhưng nhận các số ngẫu nhiên an toàn thì khó. Vấn đề là các hệ thống và ứng dụng được định cấu hình sai vượt qua các bài kiểm tra chức năng nhưng chưa được đánh giá bảo mật thích hợp.

Câu hỏi thứ hai: Cái gì và ai có thể là người phân xử về tính ngẫu nhiên thực sự? tức là ai quyết định con số cụ thể này thực sự được tạo ngẫu nhiên?

Vì bạn không thể biết mức độ ngẫu nhiên của một số bằng cách nhìn vào số đó, nên bạn phải xem quá trình tạo ra số đó.

lá cờ us
"chỉ cần tính ngẫu nhiên để tạo ... (CSPRNG)... CSPRNG không thể phân biệt được với **ngẫu nhiên thực**" Đừng đồng ý với điều đó. Dãy các biến ngẫu nhiên độc lập theo định nghĩa toán học đáp ứng mật mã dòng bảo toàn thông tin đầu vào; điều này không thể đạt được với hạt giống ngắn hơn vectơ đầu ra.
Gilles 'SO- stop being evil' avatar
lá cờ cn
@SamGinrich Trang web này nói về mật mã. Ý tôi là không thể phân biệt được với một đối thủ có sức mạnh tính toán thực tế, không phải là không thể phân biệt được về mặt toán học.
lá cờ us
Chắc chắn, tôi hiểu "không thể phân biệt". Hãy nghĩ rằng không cần phải phân bổ "ngẫu nhiên thực sự", mà mật mã luồng thực sự trái ngược với máy trạng thái, hiện thực hóa thuật toán ngẫu nhiên được tạo.
Điểm:1
lá cờ cn
  1. Khó khăn chính là tìm một nguồn entropy tốt. Đó là thước đo của "sự ngẫu nhiên". Vâng, nếu chúng ta có một giá trị $hạt giống$ như vậy mà $H(hạt giống)=n$, chúng tôi không thể tạo ra một chuỗi $x, |x|\geq|hạt|$ với entropy lớn hơn, tức là $\forall x : x=f(seed)\land|x|\geq|seed|\implies H(x)\leq H(seed)$, ở đâu $f$ là một số thuật toán xác định (PRNG). Entropy được định nghĩa như sau: $$ H(X)=-\sum_{x\ \in\ \text{Dom}(X)}\text{Pr}(x)\cdot\text{log}_2\text{Pr}(x) $$ ở đâu $X$ là một biến ngẫu nhiên. <removed>
    Nói cách khác, trong trường hợp tốt nhất, chúng ta nhận được một chuỗi dài hơn với cùng mức độ "ngẫu nhiên" trong đó như trong chuỗi ngắn nhất. Không có cách nào để tạo ra một có khả năng không giới hạn chuỗi ngẫu nhiên thực sự bằng cách sử dụng một số thuật toán từ một chuỗi hữu hạn mà không có bất kỳ nguồn entropy bổ sung nào.
    CẬP NHẬT: nó không hoàn toàn chính xác để sử dụng công thức cho trình tự. Nhưng ý nghĩa của đoạn này vẫn còn nguyên giá trị: bạn không thể tạo ra "sự ngẫu nhiên" từ con số không.

  2. Chà, đó là một câu hỏi hay, bởi vì chúng ta có thể nói, rằng liệu một chuỗi nào đó có ngẫu nhiên hay không với một xác suất nhất định. Cách duy nhất là sử dụng các bài kiểm tra thống kê. Một chuỗi ngẫu nhiên lý tưởng (hoặc thực sự) được định nghĩa như sau: $$ X_\to=\{\zeta_1, \zeta_2, ..., \zeta_n,...\} $$ ở đâu $\zeta_i, i\in\{1,2,...\}$ được phân phối đều trên một số tập hợp $X$ biến ngẫu nhiên và trong mỗi tập hợp con $\{\zeta_{i_1},...,\zeta_{i_k}\}$ tất cả các biến là độc lập. Có một chuỗi tùy ý, điều duy nhất chúng ta có thể làm là kiểm tra các thuộc tính thống kê của nó và nói rằng với xác suất cao (hoặc thấp), các yêu cầu này phù hợp với các biến này <redacted to make it more clear>.
    <removed>
    Trong tất cả các bài báo tôi đã đọc về các trình tạo ngẫu nhiên thực sự đều được kiểm tra theo thống kê.Thật không may, tôi không thể đọc bài báo mà bạn đã đề cập trong câu hỏi, nhưng tôi nghĩ rằng sẽ có loại nghiên cứu tương tự.


Chà, tôi cho rằng có thể có một phương pháp tiềm năng để chứng minh, rằng một trình tạo nào đó tạo ra một chuỗi có entropy tối đa có thể, nhưng tôi vẫn chưa thấy nó. Nhưng có lẽ không thể có phương pháp như vậy. Nếu có một, tôi muốn đọc về nó :)

CẬP NHẬT: entropy tối đa không cần thiết cho tính ngẫu nhiên thực sự. Đây là một số trích dẫn của @Paul Uszak:

Một trình tự như vậy [thực sự ngẫu nhiên] chỉ cần một lượng phức tạp Kolmogorov tăng dần một cách đơn điệu. Xu hướng/tương quan là không liên quan.

TRNG không được kiểm tra tính ngẫu nhiên thực sự. sự thậtâ của họ xuất phát từ sự hiểu biết về các quá trình vật lý không xác định tạo ra độ phức tạp Kolmogorov đầu ra.

CẬP NHẬT: tóm lại: TRNG sử dụng một số sự kiện vật lý không thể đoán trước để tạo ra một chuỗi, PRNG sử dụng thuật toán máy tính.

Paul Uszak avatar
lá cờ cn
Xin chào, nhưng một số vấn đề. 0) Không có nguồn entropy nào vượt qua nhiệt động lực học. Entropy mật mã chỉ được tạo bởi người quan sát trong quá trình lấy mẫu. 1) Công thức Shannon chỉ áp dụng cho dữ liệu IID và không áp dụng trong trường hợp chung của lấy mẫu nguồn entropy. 2) Các thử nghiệm thống kê chỉ kiểm tra tính đồng nhất và độc lập ở phía sau của trình trích xuất ngẫu nhiên. Không có thử nghiệm nào có thể phân biệt giữa TRNG và RNG. `dieharder` sẽ vượt qua Mersenne Twister, còn `ent` và FIPS 140 sẽ vượt qua bất kỳ kho lưu trữ .7z nào.
Paul Uszak avatar
lá cờ cn
3) Entropy tối đa có thể không cần thiết cho một chuỗi thực sự ngẫu nhiên. Một chuỗi như vậy chỉ cần một lượng phức tạp Kolmogorov tăng dần một cách đơn điệu. Xu hướng/tương quan là không liên quan. 4) TRNG không được kiểm tra tính ngẫu nhiên thực sự. sự thậtâ của họ xuất phát từ sự hiểu biết về các quá trình vật lý không xác định tạo ra độ phức tạp Kolmogorov đầu ra.
Điểm:-1
lá cờ cn

Những khó khăn liên quan đến việc tạo ra các số ngẫu nhiên thực sự là gì?

Không có khó khăn hữu hình nào với việc tạo ra vô số số ngẫu nhiên thực sự. Các đã có daemon tuyên bố sẽ tạo megabit/s entropy thực sự mà không cần bất kỳ phần cứng bên ngoài nào. Mặc dù vậy, tôi không chắc ý nghĩa thực tế của at scaleâ là gì. Đạp xe một khóa AES mỗi phút là tốc độ Kolmogorov <3 bit/s. Với sự tôn trọng, đó là trò chơi trẻ em ngay cả đối với những người tự làm. Nhìn vào những bức ảnh tiệc đêm trên điện thoại thông minh của bạn và tự hỏi tất cả những tiếng ồn hình ảnh đó là gì. Nếu bạn có ~3000 Euro, bạn có thể mua một TRNG 240 Mbps sử dụng công nghệ tách chùm. Nếu cuộc sống của bạn phụ thuộc vào nó, $2600 có quá nhiều không? Và các Yeolde /dev/ngẫu nhiên sẽ làm> 30 kB/giờ chỉ cần kiểm tra email. Nhân đôi số tiền đó nếu bạn đang nghiên cứu về PornHub.

Lý do vô hình có khả năng nhất mà tôi không được đi vào được phản ánh trong những điều sau đây; Các vận động viên đang được khuyên nên sử dụng điện thoại có ổ ghi ở Bắc Kinh.

Cái gì và ai có thể là trọng tài về tính ngẫu nhiên thực sự?

Chỉ có bạn.

Có một dòng dây đeo trang web rất nổi tiếng nói rằng An toàn entropy? Entropy của bạn.â Khái niệm về tính không thể phân biệt trong tính toán có nghĩa là đầu ra của Mersenne Twister trông khá giống với đầu ra của /dev/ngẫu nhiên. Đây là lấy đi từ đây.

Trình tạo số ngẫu nhiên phần cứng trên chip của Intel trông có vẻ ngẫu nhiên nhưng không ai trong cộng đồng *nix tin tưởng nó. Và vì vậy họ không nên đưa ra NOBUS đã được xác nhận công khai2 chính sách. Và thật không may cho bạn/chúng tôi, không thể thiết kế ngược một khuôn silicon nhiều lớp với hàng tỷ bóng bán dẫn.

Phần này trong câu trả lời của tôi có thể tiếp tục với hàng nghìn lần di chuột, vì vậy tôi sẽ kết thúc bằng việc cố gắng thuyết phục bạn tự xây dựng một nguồn entropy với một chút điốt (£2,08 + VAT/20).


2 Nhận một chiếc mũ thiếc. Loại gà tây Giáng sinh thật dày. Mục NOBUS đã bị xóa khỏi Wikipedia. Rút ra kết luận của riêng bạn. Vì vậy, tôi hướng dẫn bạn đến WAPO mạo từ với người đứng đầu CIA/NSA (cùng một người).

poncho avatar
lá cờ my
Tôi chưa bao giờ hiểu rõ những người không tin tưởng vào trng của Intel, nhưng lại tin tưởng mọi thứ khác mà Intel xây dựng. Nếu NSA có thể thuyết phục intel đặt một cửa hậu vào trng, thì họ cũng có thể thuyết phục họ xây dựng một CPU phát hiện khi các chuỗi lệnh nhất định (chẳng hạn như mã OpenSSL rng) đang chạy và cố tình diễn giải sai các lệnh đó.
lá cờ us
@poncho Tôi là một trong những người hoài nghi này :) Khi nói đến bảo mật, tôi không quan tâm đến hiệu suất: Không có NSA, không có Windows, không có Intel, không có OpenSSL và không có những người mô phạm với thái độ "Không bao giờ tạo ra các hệ thống bảo mật tự bản thân"
Paul Uszak avatar
lá cờ cn
@SamGinrich Nghe, nghe! Điều mà nhà bình luận trước đã không nhận ra là lời chỉ trích của anh ta là phi logic. Chúng tôi có thể tự tin rằng CPU Intel đang hoạt động chính xác vì nó có thể được xác minh dựa trên thông số kỹ thuật của nó thông qua thử nghiệm. Thử nghiệm bởi hàng triệu người dùng, ở tất cả các quốc gia, ở mọi cấp độ năng lực kỹ thuật. Khả năng không thể phân biệt bằng máy tính về mặt toán học loại trừ khả năng xác minh rằng TRNG bị cáo buộc của Intel tạo ra bất kỳ sự ngẫu nhiên nào của Kolmogorov. [Hơn nữa...](https://crypto.stackexchange.com/a/71584/23115).
lá cờ us
@Paul Chà, tôi không phản đối nhận xét của poncho: Nếu bạn có một con rắn có hai đầu, thì việc không tin một đầu và hy vọng đầu kia sẽ không cắn bạn là điều không hợp lý. Tương tự, nỗ lực giám sát của bạn vẫn ổn; những gì bạn cần để nhận ra nó, là triển khai giám sát độc lập và không tin tưởng vào các tập đoàn, ví dụ: đã hủy kết bạn với ông Snowden.
forest avatar
lá cờ vn
@poncho Tôi nghĩ điều đó rất khó xảy ra. PoC||GTFO đã có một bài viết hay về cách thực hiện điều đó (ít nhất là trong trình giả lập) và nó đã chứng tỏ _nhiều_ phức tạp và mong manh hơn một TRNG có cửa hậu chỉ kết hợp một số ngẫu nhiên 64 bit thực và một bí mật 128- giá trị cửa hậu bit và sử dụng giá trị đó làm hạt giống. Tôi nghĩ rằng Paul có quyền hoài nghi về RDRAND/RDTSC.

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