[국내논문]NIST SP 800-90B의 최소 엔트로피 추정 알고리즘에 대한 고속 구현 및 효율적인 메모리 사용 기법 High-Speed Implementation and Efficient Memory Usage of Min-Entropy Estimation Algorithms in NIST SP 800-90B원문보기
최근 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로 감소하는 효과를 보인다.
최근 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로 감소하는 효과를 보인다.
NIST(National Institute of Standards and Technology) has recently published SP 800-90B second draft which is the document for evaluating security of entropy source, a key element of a cryptographic random number generator(RNG), and provided a tool implemented on Python code. In SP 800-90B, the secur...
NIST(National Institute of Standards and Technology) has recently published SP 800-90B second draft which is the document for evaluating security of entropy source, a key element of a cryptographic random number generator(RNG), and provided 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 are estimated 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 estimation algorithm 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 method improving the speed of LZ78Y by rebuilding the data structure. The tool applied our proposed methods is 14 times faster and saves 13 times more memory usage than NIST's tool.
NIST(National Institute of Standards and Technology) has recently published SP 800-90B second draft which is the document for evaluating security of entropy source, a key element of a cryptographic random number generator(RNG), and provided 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 are estimated 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 estimation algorithm 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 method improving the speed of LZ78Y by rebuilding the data structure. The tool applied our proposed methods is 14 times faster and saves 13 times more memory usage than NIST's tool.
암호시스템과 보안 응용 프로그램의 안전성을 위해 사용되는 난수는 예측 불가능성(unpredictability) 과 독립성(independence)을 만족하도록 암호학적 난수발생기에의해 생성된다. 암호학적 난수발생기는 진난수생성기(TRNG)와 의사난수발생기(PRNG)가 안전하게 결합하여 구성된다. 이 중에서 진난수생성기 부분은 초기 엔트로피를 생성하므로 보통 엔트로피 소스(entropy source)로 분류된다.
Cython 언어를 이용한 구현 방법이 필요해지는 기존 언어들의 문제점은 무엇인가?
현재 SP 800-90B 는 두 번째 드래프트 단계로 NIST는 [6]에서 머신 러닝을 이용한 프리딕터 엔트로피 추정법을 업데이트 예정 사항으로 언급하였고, Python에는 다양한 머신 러닝 프로그램이 구현되어 있기 때문에 NIST에서 SP 800-90B를 Python으로 구현하였다고 생각된다. 하지만 본문에서 언급한 것과 같이 Python에서 제공하는 함수는 엔트로피 추정 목적 이외의 기능을 수행하기 때문에 고속 구현에 적합하지 않다. 반면 C++의 경우 머신러닝관련 프로그램이 Python에 비해 상대적으로 부족하기 때문에 많은 기능을 모두 구현해야 하는 단점을 가진다. 이에 대한 해결책으로 Cython 언어를 이용한 구현 방법을 추후 연구 과제로 남긴다.
안전한 난수란?
암호학적으로 안전한 난수란 암호학적 난수발생기 에 의해서 생성되는 난수를 의미한다. 미국 NIST(National Institute of Standards and Technology)의 SP 800-90A, B, C에서는 이러한 암호학적 난수발생기를 구성하는 방법과 그 안전성에 대한 내용을 다루고 있다.
이 논문을 인용한 문헌
저자의 다른 논문 :
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
활용도 분석정보
상세보기
다운로드
내보내기
활용도 Top5 논문
해당 논문의 주제분야에서 활용도가 높은 상위 5개 콘텐츠를 보여줍니다. 더보기 버튼을 클릭하시면 더 많은 관련자료를 살펴볼 수 있습니다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.