본문 바로가기
KERD
논문KCI 등재

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

High-Speed Implementation and Efficient Memory Usage of Min-Entropy Estimation Algorithms in NIST SP 800-90B

1

조회

0

다운로드

3

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

최근 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로감소하는 효과를 보인다.

Abstract

NIST(National Institute of Standards and Technology) has recently published SP 800-90B second draft which is thedocument for evaluating security of entropy source, a key element of a cryptographic random number generator(RNG), andprovided a tool implemented on Python code. In SP 800-90B, the security evaluation of the entropy sources is a process of estimating min-entropy by several estimators. The process of estimating min-entropy is divided into IID track and non-IID track. In IID track, the entropy sources are estimated only from MCV estimator. In non-IID Track, the entropy sources areestimated from 10 estimators including MCV estimator. The running time of the NIST’s tool in non-IID track is approximately 20 minutes and the memory usage is over 5.5 GB. For evaluation agencies that have to perform repeatedly evaluations on various samples, and developers or researchers who have to perform experiments in various environments, it may be inconvenient to estimate entropy using the tool and depending on the environment, it may be impossible to execute. In this paper, we propose high-speed implementations and an efficient memory usage technique for min-entropy estimationalgorithm of SP 800-90B. Our major achievements are the three improved speed and efficient memory usage reduction methods which are the method applying advantages of C++ code for improving speed of MultiMCW estimator, the method effectively reducing the memory and improving speed of MultiMMC by rebuilding the data storage structure, and the methodimproving the speed of LZ78Y by rebuilding the data structure. The tool applied our proposed methods is 14 times fasterand saves 13 times more memory usage than NIST’s tool.

참고문헌 (12)

  1. E. Barker, "Recommendation for Random Bit Generator (RBG) Constructions, (Second Draft) NIST SP 800-90C", ~ (2016)
  2. E. Barker, "Recommendation for Random Number Generation Using Deterministic Random Bit Generators, NIST SP 800-90A Revision 1", ~ (2015)
  3. M.S. Turan, "Recommendation for the Entropy Sources Used for Random Bit Generation, (Second Draft) NIST SP 800-90B", ~ (2016)
  4. "NIST, SP 800-90B_EntropyAssessment", ~
  5. H.C. Shin, "Python3.2 programming, 3rd Ed" (2015), Wikibook
  6. J. Kelsey, "Predictive Models for Min-Entropy Estimation", International Workshop on Cryptographic Hardware and Embedded Systems - CHES 2015, pp.373~392 (2015)
  7. "issues #31 : noniid_main.py Memory leak?"[URL]
  8. "A speed comparison test of C, Julia, Python, Numba, and Cython LUFactorization"[URL]
  9. "PerformancePython that is an article of scipy.org"[URL]
  10. E. Barker, "Recommendation for the Entropy Sources Used for Random Bit Generation, (First Draft) NIST SP 800-90B", ~ (2012)
  11. "Information of TrueRNG2"[URL]
  12. "Cython homepage"[URL]

관련 논문AI추천

이 간행물의 다른 논문 (22건)