난수 검증

난수 생성기 통계 시험 결과를 읽는 방법

통계 시험은 스트림의 편향과 상관관계, 구조적 결함을 발견하는 데 유용합니다. 난수 코어에 필요한 증거이지만 한 번의 통과 결과가 미래 출력의 예측 불가능성이나 구현 보안을 영구적으로 인증하지는 않습니다.

업데이트

핵심 정리

  • 시험 묶음마다 찾는 약점이 다르므로 여러 독립 도구를 함께 사용합니다.
  • 다른 검토자가 결과를 해석할 수 있도록 버전, 매개변수, 표본 크기, 원본 로그를 보관합니다.
  • 통계 시험과 함께 설계 검토, 안전한 시드, 장애 처리, 운영 모니터링을 확인합니다.

Rantropy 코어에 적용한 시험

Rantropy는 여러 난수 시험 도구의 결과를 보관하고 있습니다. PractRand는 256GB 연속 스트림 구간을 시험했습니다. ENT는 평가 표본에서 바이트당 8.000000비트의 엔트로피 프로파일을 보였습니다. Dieharder는 대부분의 평가에서 FAIL 없이 통과한 결과 발췌를 보관하며, NIST STS는 2,000개 시퀀스를 배치 단위로 실행했습니다.

TestU01 BigCrush도 실행해 주요 서브테스트 출력을 검토할 수 있게 보관했습니다. 이 결과는 시험한 빌드와 입력 조건, 표본을 설명합니다. 모든 미래 출력이 인증됐거나 통계 시험이 암호학적 보안을 증명한다는 표현으로 줄여서는 안 됩니다.

하나의 시험 묶음만으로 부족한 이유

ENT는 빠른 프로파일 확인에 유용하지만 종합 인증은 아닙니다. PractRand는 긴 스트림을 단계적으로 검사하며 표본이 커질 때 드러나는 문제를 찾을 수 있습니다. Dieharder와 NIST STS는 각기 다른 매개변수와 해석 기준을 가진 시험 모음입니다. BigCrush는 작은 검사에서 놓친 결함을 찾을 수 있는 폭넓고 강도 높은 시험 묶음입니다.

많은 시험을 실행하면 우연히 극단적인 p값이 일부 나올 수 있습니다. 개별 값 하나를 결함으로 단정하기 전에 도구의 지침, 반복 실행, 결과의 군집, 재현 가능성을 함께 봐야 합니다.

통계 시험이 증명하지 못하는 것

예측 가능한 시드, 키 노출, 내부 상태 재사용, 잘못된 접근 통제, 구현 오류가 있어도 표본 스트림은 통계 시험을 통과할 수 있습니다. 반대로 결과 재현이 필요한 시뮬레이션용 결정론적 출력은 해당 목적에는 적절해도 보안 비밀값 생성에는 사용하면 안 됩니다.

  • 생성기 구조와 엔트로피 입력 경로를 검토합니다.
  • 시작, 재시작, 프로세스 분기, 스케일링, 의존성 장애를 시험합니다.
  • 키와 내부 상태를 보호하고 교체와 사고 대응 절차를 정합니다.
  • 빌드 산출물을 고정하고 시험 로그에 체크섬을 남깁니다.

시험 보고서를 유지 가능한 증빙으로 만들기

소스 커밋, 빌드 체크섬, 시험 도구 버전, 명령어, 매개변수, 플랫폼, 시작과 종료 시각, 출력 체크섬을 함께 기록합니다. 코어 알고리즘, 컴파일러, 엔트로피 경로, 배포 구조가 달라지면 합의한 시험을 다시 실행합니다. 그래야 고객과 감사인이 어떤 소프트웨어를 시험했는지 확인할 수 있습니다.

통과 문구보다 생성기 뒤의 자료를 확인하세요

기술 실사에서는 관련 시험 범위와 빌드 맥락, 연동 통제를 요청할 수 있습니다. 필요한 검토 자료를 안내해드립니다.

기술 검토 문의