NIST SP 800-90B의 최소 엔트로피 추정 알고리즘에 대한 고속 구현 및 효율적인 메모리 사용 기법

Vol. 28, No. 1, pp. 25-39, 2월. 2018
10.13089/JKIISC.2018.28.1.25, Full Text:
Keywords: SP 800-90B, Min-Entropy estimation, High-Speed implementation, Memory reduction, Entropy source
Abstract

최근 NIST에서는 암호학적 난수발생기의 핵심 요소인 엔트로피 소스의 안전성을 평가하기 위한 방법을 다루고 있는 SP 800-90B 문서의 두 번째 수정안과 이를 Python으로 구현한 코드를 제공하였다. SP 800-90B에서의 엔트로피 소스에 대한 안전성 평가는 엔트로피 소스의 출력 표본 수열로부터 도출한 여러 가지 추정량(estimator)에 기반 하여 최소 엔트로피를 추정하는 과정이다. 최소 엔트로피 추정 과정은 IID 트랙과 non-IID 트랙으로 대별되어 진행된다. IID 트랙의 경우 MCV 추정량만을 사용하여 속도 측면에서 무리가 없다. 반면 non-IID 트랙에서는 MCV를 포함한 총 10 가지의 추정량을 적용해 최소 엔트로피를 추정하게 된다. NIST의 코드에서 non-IID 트랙의 1 회 구동 시간은 약 20 분이 소요되고, 사용되는 메모리는 5.5 GB를 넘긴다. 이는 다양한 잡음원으로 반복적인 평가를 수행해야 하는 평가 기관 또는 여러 환경에서 실험을 수행해야 하는 개발자나 연구자 입장에서는 NIST에서 제공한 Python 코드를 이용하는 것이 불편할 수 있으며, 환경에 따라 실행이 불가할 수도 있다. 본 논문에서는 SP 800-90B의 최소 엔트로피 추정 방법에 대한 고속 구현과 효율적인 메모리 사용 기법을 제시 한다. 주요 연구 결과로 MultiMCW 추정 방법에 C++ 코드의 장점을 적용한 고속화 방법, MultiMMC 추정 방법의 데이터 저장 방식을 재구성하여 메모리 사용량을 현저하게 감소시킴과 동시에 고속화한 방법, LZ78Y 추정 방법에 데이터 저장 방식의 재구성을 통한 고속화 기법 등을 제안한다. 우리의 개선된 방법이 종합적으로 적용된C++ 코드는 NIST에서 제공한 기존의 Python 코드와 비교할 때, 속도는 14 배 빠르고 메모리 사용량은 1/13로감소하는 효과를 보인다.

Statistics
Show / Hide Statistics

Statistics (Cumulative Counts from December 1st, 2017)
Multiple requests among the same browser session are counted as one view.
If you mouse over a chart, the values of data points will be shown.


Cite this article
[IEEE Style]
W. Kim, Y. Yeom, J. Kang, "High-Speed Implementation and Efficient Memory Usage of Min-Entropy Estimation Algorithms in NIST SP 800-90B," Journal of The Korea Institute of Information Security and Cryptology, vol. 28, no. 1, pp. 25-39, 2018. DOI: 10.13089/JKIISC.2018.28.1.25.

[ACM Style]
Wontae Kim, Yongjin Yeom, and Ju-Sung Kang. 2018. High-Speed Implementation and Efficient Memory Usage of Min-Entropy Estimation Algorithms in NIST SP 800-90B. Journal of The Korea Institute of Information Security and Cryptology, 28, 1, (2018), 25-39. DOI: 10.13089/JKIISC.2018.28.1.25.