Suy nghĩ của tôi quá dài để bình luận, vì vậy tôi sẽ tóm tắt chúng như một câu trả lời ...
Có một số vấn đề nghiêm trọng với hai câu trả lời còn lại, đến mức một số người trong chúng ta đã hiểu sai bài kiểm tra tính ngẫu nhiên là gì. Như các gạch đầu dòng: -
1.
"không tin tưởng vào bất kỳ thuật toán mã hóa nào từ NIST". Không có thuật toán được tạo bởi NIST trong FIPS. Chắc chắn không có sự phức tạp nào của Dual_EC_DRBG. Bài kiểm tra chạy và bài xì phé không phải là thuật toán độc quyền của Bộ Thương mại Hoa Kỳ (NIST). Chúng là các đặc điểm toán học của một phân phối ngẫu nhiên thống nhất. Nếu tôi cho rằng số lượng dự kiến sẽ là ~ 50%, điều đó có khiến tôi trở thành kẻ lật đổ không? Việc mở rộng giá trị trung bình của 0,5 với $n$ độ lệch chuẩn. $\mathcal{N}(\mu, \sigma^2)$ là hình thức tiêu chuẩn hóa cho bản phân phối đó và tôi không mong đợi bất kỳ điều gì không đầy đủ hơn. Kiểm tra các khối đầu ra lặp lại (Kiểm tra trình tạo số ngẫu nhiên liên tục) không phải là lật đổ, đó là lẽ thường.
2.
Tôi có thể cung cấp bài kiểm tra FIPS này làm bằng chứng không: -
$cat /dev/urandom | thử nghiệm
rngtest 5
Bản quyền (c) 2004 của Henrique de Moraes Holschuh
Đây là phần mềm miễn phí; xem nguồn để biết điều kiện sao chép. KHÔNG có bảo hành; thậm chí không vì KHẢ NĂNG BÁN ĐƯỢC hoặc SỰ PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ.
rngtest: bắt đầu kiểm tra FIPS...
rngtest: bit nhận được từ đầu vào: 8310580032
rngtest: FIPS 140-2 thành công: 415198
rngtest: Lỗi FIPS 140-2: 331
rngtest: FIPS 140-2(2001-10-10) Monobit: 41
rngtest: FIPS 140-2(2001-10-10) Xì phé: 53
rngtest: FIPS 140-2(2001-10-10) Số lần chạy: 123
rngtest: FIPS 140-2(2001-10-10) Dài hạn: 115
rngtest: FIPS 140-2(2001-10-10) Chạy liên tục: 0
rngtest: tốc độ kênh đầu vào: (min=10,703; avg=1976,720; max=19073,486)Mibits/s
rngtest: Tốc độ kiểm tra FIPS: (min=75,092; avg=199,723; max=209,599)Mibits/s
rngtest: Thời gian chạy chương trình: 43724402 micro giây
Tỷ lệ thất bại là p=0,0008. Điều đó rất tương đương với ngưỡng p=0,001 trong bộ thử nghiệm SP800 STS và của người chăm chỉ: -
LƯU Ý RÕ RÀNG: Trên thực tế, (các) đánh giá cho rngs có thể hoàn toàn
không chính xác hoặc gây hiểu nhầm. Cụ thể, giá trị p 'Yếu' sẽ xảy ra
một thử nghiệm trong một trăm và giá trị p 'Không thành công' sẽ xảy ra một thử nghiệm trong
một nghìn -- đó là ý nghĩa của p. Sử dụng chúng có nguy cơ của riêng bạn! Được cảnh báo!
Vì vậy, rõ ràng không gây tranh cãi.
3.
"Không xác định rằng các thử nghiệm này sẽ được chạy trên nguồn entropy không điều kiện". Dĩ nhiên là không. Đúng rồi. Không ai có các đặc điểm thống kê cho các phân phối nguồn entropy không điều kiện. Chúng có đủ hình dạng và vị trí. Một số trong số chúng thậm chí không có tên toán học (mẫu nhật ký kép bình thường, MOD bồn tắm $x$ v.v.) Chúng tôi chỉ có thể chạy các bài kiểm tra thống kê được tiêu chuẩn hóa trên đầu ra cuối cùng có điều kiện.
4.
"không thể phát hiện một trình tạo cửa hậu thành thạo chỉ từ đầu ra của nó". Một lần nữa, tất nhiên. Đó không phải là ý định của e.g. Thử nghiệm khởi động FIPS. Bạn cần lập trình viên và người viết mật mã cho điều đó. FIPS chỉ đơn giản là tự động hóa kiểm tra tính ngẫu nhiên và đưa ra các hướng dẫn cho lập trình bảo mật cơ bản như không có chuỗi ký tự để kiểm soát và mã có thể định vị lại. Tất cả đều rất bình thường.
Do đó, FIPS 140 không gây tranh cãi. Nói như vậy tương đương với việc nói rằng NIST đã mở cửa sau bản phân phối Bình thường hoặc công cụ cứng rắn đó là vô ích. FIPS không tuyệt vời ở một số thứ. Và thử nghiệm các khối 20.000 bit vừa vặn ở cuối thang đo để thử nghiệm tính ngẫu nhiên, ngay bên dưới nhập
(500.000 bit).