NIST 통계 테스트 스위트 재구현 및 난수 발생기 성능 비교 연구
초록
본 논문은 NIST 통계 테스트 스위트를 독립적으로 C 언어로 구현하고, 구현 코드의 정확성을 NIST가 제공한 표준 테스트 데이터와 비교하여 검증한다. 완성된 코드를 Windows 환경에서 실행 가능한 패키지 형태로 제공하고, 세 가지 난수 발생기인 Park Miller 방식 LCG, Knuth 방식 LCG, 그리고 Blum Blum Shub Generator(BBSG)를 동일한 테스트 절차에 적용한다. 실험 결과 BBSG가 두 LCG에 비해 통계적 무작위성 지표에서 현저히 우수함을 확인하였다.
상세 분석
이 연구는 NIST SP 800‑22에 정의된 15개의 통계 테스트를 하나하나 분석하고, 각 알고리즘의 수학적 원리를 완전히 이해한 뒤 C 언어로 독자적으로 구현하는 과정을 상세히 기술한다. 구현 단계에서는 난수 시퀀스의 길이, 비트 변환 방식, 그리고 p‑값 계산에 사용되는 근사식과 누적 분포 함수(CDF)의 정확성을 확보하기 위해 고정 소수점 연산과 double‑precision 부동소수점 연산을 적절히 혼용하였다. 특히, Approximate Entropy, Linear Complexity, 그리고 Random Excursions Test와 같이 복잡한 통계량을 요구하는 테스트에서는 기존 구현을 참고하지 않고 자체적인 난수 블록 분할 및 FFT 기반 계산 모듈을 설계하였다.
코드 검증은 NIST 문서에 제시된 표준 입력 파일과 기대 p‑값을 이용해 수행했으며, 모든 테스트에서 오차가 10⁻⁶ 이하로 수렴함을 확인하였다. 이는 구현이 원본 알고리즘과 수치적으로 일치함을 의미한다. 검증이 완료된 후, 연구팀은 Windows GUI 프론트엔드와 명령줄 인터페이스를 모두 제공하는 통합 패키지를 제작하였다. 사용자는 입력 파일 경로와 원하는 테스트 집합을 선택하면 자동으로 결과 보고서를 생성할 수 있으며, 각 테스트별 p‑값과 합격/실패 여부가 명시된다.
패키지를 이용한 실험에서는 세 가지 난수 발생기(PRNG)를 동일한 1 GB 길이의 비트 스트림으로 테스트하였다. Park Miller LCG는 2³¹‑1 모듈러 연산을 기반으로 하여 빠른 속도를 제공하지만, Frequency Test와 Runs Test에서 낮은 p‑값을 보이며 주기성 문제가 드러났다. Knuth LCG는 파라미터를 개선했음에도 불구하고 Linear Complexity Test와 Serial Test에서 일관된 비정상 패턴을 나타냈다. 반면, BBSG는 대수적 난수 생성 방식으로, 모든 15개 테스트에서 p‑값이 0.05 이상을 유지하며 통계적 무작위성을 충분히 만족시켰다. 특히, Approximate Entropy와 Random Excursions Test에서 가장 높은 p‑값을 기록해, 복잡한 의존 구조를 효과적으로 억제함을 보여준다.
이러한 결과는 BBSG가 보안 민감 응용 분야에서 요구되는 높은 무작위성 수준을 제공한다는 기존 인식을 실험적으로 재확인한다는 점에서 의미가 크다. 또한, 독자적인 구현과 검증 과정을 통해 NIST 테스트 스위트의 내부 동작을 명확히 이해하고, 향후 새로운 PRNG나 암호학적 알고리즘을 평가할 때 신뢰할 수 있는 기준 도구로 활용할 수 있음을 시사한다.
댓글 및 학술 토론
Loading comments...
의견 남기기