블록체인 2.0은 프로그래밍 가능한 스마트계약을 사용하여 다양한 DApp(Distributed Application) 개발을 지원한다. 하지만 스마트계약이 동작하는 환경은 블록 높이, 블록 해쉬, 트랜잭션 해쉬 등 결정된 데이터만 접근할 수 있어서 블록체인 기반 복권, 배팅, 키 생성 등 난수를 필요로 하는 응용은 블록체인 외부에서 데이터를 가져 올 수 있는 오라클 서비스를 이용해야 한다. 본 논문에서는 난수 생성 오라클 서비스를 개발하였다. 또한 난수 생성을 위해 비정형 빅데이터를 entropy source로 사용하였다. 이렇게 생성된 난수를 NIST SP800-22 난수 테스트하여 난수로 사용할 수 있음을 확인하였다. 또한, 물리적 세계를 entropy source로 사용하는 기존의 진성난수 생성기에 비해서 비용측면에서 유리함을 설명한다.
블록체인 2.0은 프로그래밍 가능한 스마트계약을 사용하여 다양한 DApp(Distributed Application) 개발을 지원한다. 하지만 스마트계약이 동작하는 환경은 블록 높이, 블록 해쉬, 트랜잭션 해쉬 등 결정된 데이터만 접근할 수 있어서 블록체인 기반 복권, 배팅, 키 생성 등 난수를 필요로 하는 응용은 블록체인 외부에서 데이터를 가져 올 수 있는 오라클 서비스를 이용해야 한다. 본 논문에서는 난수 생성 오라클 서비스를 개발하였다. 또한 난수 생성을 위해 비정형 빅데이터를 entropy source로 사용하였다. 이렇게 생성된 난수를 NIST SP800-22 난수 테스트하여 난수로 사용할 수 있음을 확인하였다. 또한, 물리적 세계를 entropy source로 사용하는 기존의 진성난수 생성기에 비해서 비용측면에서 유리함을 설명한다.
Blockchain 2.0 supports programmable smart contract for the various distributed application. However, the environment of running smart contract is limited in the blockchain, so the smart contract only get the deterministic information, such as block height, block hash, and so on. Therefore, some app...
Blockchain 2.0 supports programmable smart contract for the various distributed application. However, the environment of running smart contract is limited in the blockchain, so the smart contract only get the deterministic information, such as block height, block hash, and so on. Therefore, some applications, which requires random information, such as lottery or batting, should use oracle service that supply the information outside of blockchain. This paper develops a random number generator oracle service. The random number generator oracle service use irregular big data as entropy source. This paper tests the randomness of bits sequence generated from oracle service using NIST SP800-22. This paper also describes the advantages of irregular big data in our model in perspective of cost comparing hardware entropy source.
Blockchain 2.0 supports programmable smart contract for the various distributed application. However, the environment of running smart contract is limited in the blockchain, so the smart contract only get the deterministic information, such as block height, block hash, and so on. Therefore, some applications, which requires random information, such as lottery or batting, should use oracle service that supply the information outside of blockchain. This paper develops a random number generator oracle service. The random number generator oracle service use irregular big data as entropy source. This paper tests the randomness of bits sequence generated from oracle service using NIST SP800-22. This paper also describes the advantages of irregular big data in our model in perspective of cost comparing hardware entropy source.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
생성된 난수가 가지는 통계적 테스트를 통하여 난수 생성기가 맞는 지 확인하는 방법은 무한의 방법이 있을 수있다. 본 논문에서는 NIST SP800-22에 제시된 15가지 통계적 테스트를 통하여 본 논문에서 사용한 난수 생성기가 난수 생성을 하는지 확인하였다. 난수 테스트는 python으로 NIST SP800-22 구현 [17]을 이용하였다.
블록체인 월드 컴퓨터에서 동작하는 프로그램을 주로 스마트계약[5]이라고 부른다. 본 논문에서는 스마트계약을 법률적인 계약을 의미하지 않고 블록체인에서 동작하는 프로그램을 의미한다.
이렇게 생성한 난수가 난수의 통계적 특성이 있는 지는 NIST SP800-22[10]의 난수 테스트 15개를 돌려서 확인하였다. 본 논문은 블록체인 환경에서 비정형 빅데이터를 난수의 entropy source로 쓸 수 있는지 실용적 관점에서 살펴보는 것이다.
본 논문은 블록체인의 스마트계약이 직접 구할 수 없는 난수를 블록체인 오라클 서비스로 제공하는 난수생성용 블록체인 오라클 서비스를 구축하였다. 또한 본 논문은 실용적으로 사용할 수 있는 비정형 빅데이터를 entropy source로 사용하였다.
제안 방법
인스타그램에 접속하고 entropy를 얻는 것은 시간이 소요되는 작업이다. 1회당 30분간 entropy를 획득하고 실험을 3회를 실시하여 초당 entropy의 획득 비트 수를 얻었다. Table 2는 이를 보여 준다.
두 번째로는 블록체인을 비정형 빅데이터에 기반한 진성 난수 생성기의 응용으로 선택하고 진성난수 생성용 블록체인 오라클 구조를 밝히고 실질적으로 구현하여 해당 구조를 바탕으로 인스타그램 뿐 아니라 다양한 빅데이터를 entropy source로 사용하는 블록체인 오라클 서비스구축을 위한 단초를 제공한다.
본 논문은 블록체인의 스마트계약이 직접 구할 수 없는 난수를 블록체인 오라클 서비스로 제공하는 난수생성용 블록체인 오라클 서비스를 구축하였다. 또한 본 논문은 실용적으로 사용할 수 있는 비정형 빅데이터를 entropy source로 사용하였다. 좀 더 구체적으로는 인스타그램의 사진을 entropy source로 사용하였다.
본 논문에서 usingOraclize를 상속받아 RNG Contract를 이더리움 공식 언어인 solidity 0.5.0 버전으로 Fig. 2와 같이 만들었다.
블록체인의 난수에 관한 기존 연구는 주로 난수를 생성할 때 발생되는 fairness 문제를 중심으로 연구가 되어 있고 생성한 난수 그 자체가 얼마만큼 안전한 난수인지에 대한 연구는 아직 없다. 본 논문에서 중요한 점은 안전한 난수를 생성하는 것이며 그 응용으로써 블록체인 오라클을 선택한 것이다. 따라서, 본 논문에서 제안하는 비정형 데이터, 인스타그램을 이용한 안전한 난수는 어떤 응용에서도 사용할 수 있다.
본 논문에서는 5개의 계정 중에서 랜덤하게 선택하여 인스타그램에 로그인한다. 인스타그램은 개인화된 페이지를 보여주기 때문에 계정이 다르면 보여지는 사진도 달라진다.
본 논문에서는 비정형 빅데이터를 entropy source, 즉 진성난수생성기(TRNG: True Random Number Generator)로 사용하였다. 해당 진성난수가 bias되어 있을 수 있어 de-skewing[8]을 하여 보정한 값을 난수로 사용하고자 한다.
본 논문에서는 인스타그램을 entropy source로 이용하였다. 인스타그램만 사용하는 경우 일정 시간이 지나야 로그인되며 빠른 속도로 접근할 때 일시적으로 차단되는 특성이 있었다.
본 논문이 기여하는 첫 번째는 온라인상에 있는 빅데이터를 entropy source, 즉 TRNG로 사용할 수 있음을 보이는 것이다. 본 논문에서는 인스타그램에서 받은 사진 이미지의 임의의 위치에 있는 비트 열들을 받아서 난수성 테스트를 통하여 실용적 관점에서 진성난수로 사용할 수 있음을 보인다.
인스타그램에서 난수를 획득하면 한 줄에 하나씩 before_de-skewing 파일에 저장하고 저장한 난수를 de-skewing하고 한줄에 하나씩 de-skewing 난수를 after_de-skewing 파일에 저장하였다. before_de-skewing 파일의 저장 위치와 after_de-skewing 파일의 저장 위치를 [17] 구현의 입력 파라미터로 넣으면 자동으로 난수성을 테스트한다.
대상 데이터
본 논문에서는 이더리움 기반으로 네 개의 node로 구성된 PoA(Proof-of-Authority)[11] 기반 private network을 구성하였다.
이론/모형
따라서 해당 값을 de-skewing한다. de-skewing하는 다양한 방법[8]이 있지만 본 논문에서는 SHA-256 해쉬함수[16]로 해시를 하여 얻어진 값을 난수로 저장한다. 이렇게 생성된 난수를 30MByte가 될 때까지 지속적으로 생성하여 난수 pool에 저장하고 난수 요청이 들어오면 난수 pool에서 읽어서 제공해 준다.
본 논문에서는 NIST SP800-22에 제시된 15가지 통계적 테스트를 통하여 본 논문에서 사용한 난수 생성기가 난수 생성을 하는지 확인하였다. 난수 테스트는 python으로 NIST SP800-22 구현 [17]을 이용하였다.
본 논문에서는 간단히 난수생성을 테스트하기 위하여 Oraclize[12]를 활용하였다. Oraclize가 특별한 이유는 스마트계약에 제공되는 모든 데이터에 대해 신뢰성을 입증하기 때문이다[13].
블록체인 오라클은 즉시 읽기, 게시-구독, 요청-응답의 세 가지 방법으로 서비스할 수 있다. 본 논문에서는 즉기 읽기 방식을 사용하였다. 즉시 읽기 방식은 즉각적으로 필요한 정보를 조회하고 그 결과를 요청하는 스마트계약 저장소에 저장하는 방식이다.
본 논문에서는 비정형 빅데이터를 entropy source, 즉 진성난수생성기(TRNG: True Random Number Generator)로 사용하였다. 해당 진성난수가 bias되어 있을 수 있어 de-skewing[8]을 하여 보정한 값을 난수로 사용하고자 한다. 좀 더 구체적으로 본 논문에서 인스타그램[9]을 entropy source로 이용한다.
성능/효과
또한, 오라클 서비스가 획득한 이미지의 특정 부분을 de-skewing하여 난수 pool에 저장하고 있다가 난수 생성 요청이 들어오면 제공하는 방식을 사용하여 사용자가 요청한 시점에 제공되는 난수가 어떤 시간에 어떤 이미지의 어떤 위치의 값을 de-skewing했는지 전혀 예측할 수 없다. 따라서, 비정형 빅데이터를 entropy source로 실용적으로 이용할 수 있다는 것을 본 논문에서 보여준다.
본 논문에서는 인스타그램에서 받은 사진 이미지의 임의의 위치에 있는 비트 열들을 받아서 난수성 테스트를 통하여 실용적 관점에서 진성난수로 사용할 수 있음을 보인다. 따라서, 진성난수 생성기는 대기의 화이트 노이즈 등 물리적인 세계에서 구한다는 관점, 즉 하드웨어적으로 구현해야 한다는 관점을 뒤집어 소프트웨어적으로도 진성난수를 구할 수 있음을 보인다. 따라서, 고가의 난수 생성 하드웨어를 구매할 필요가 없다.
즉 본 논문의 난수생성용 블록체인 오라클에 난수를 요청한 노드와 다른 노드에서 PoW(Proof of Work)나 PoS(Proof of Stack) 등으로 합의할 때 해당 스마트계약의 저장소에 난수가 저장되어 있어 동일한 연산이 가능하여 어떤 노드나 최종 연산 결과 동일한 EVM의 상태머신(State Machine)을 가지게 되어 합의가 가능하게 된다. 또한, 전술한 TLSNotary를 통하여 스마트계약의 저장소에 저장된 해당 난수가 변경되어 않았음을 확인할 수 있게 된다.
마지막으로 NIST SP800-22 통계적 난수 테스트를 이용하여 온라인으로부터 획득한 비정형 빅데이터를 바로 사용할 수 없고 de-skewing을 해야만 한다는 사실도 본 논문은 보여준다.
본 논문이 기여하는 첫 번째는 온라인상에 있는 빅데이터를 entropy source, 즉 TRNG로 사용할 수 있음을 보이는 것이다. 본 논문에서는 인스타그램에서 받은 사진 이미지의 임의의 위치에 있는 비트 열들을 받아서 난수성 테스트를 통하여 실용적 관점에서 진성난수로 사용할 수 있음을 보인다. 따라서, 진성난수 생성기는 대기의 화이트 노이즈 등 물리적인 세계에서 구한다는 관점, 즉 하드웨어적으로 구현해야 한다는 관점을 뒤집어 소프트웨어적으로도 진성난수를 구할 수 있음을 보인다.
예를들어, 배팅이나 복권 같은 경우 누구나 결과를 확인할 필요가 있을 때 사용한다. 즉 본 논문의 난수생성용 블록체인 오라클에 난수를 요청한 노드와 다른 노드에서 PoW(Proof of Work)나 PoS(Proof of Stack) 등으로 합의할 때 해당 스마트계약의 저장소에 난수가 저장되어 있어 동일한 연산이 가능하여 어떤 노드나 최종 연산 결과 동일한 EVM의 상태머신(State Machine)을 가지게 되어 합의가 가능하게 된다. 또한, 전술한 TLSNotary를 통하여 스마트계약의 저장소에 저장된 해당 난수가 변경되어 않았음을 확인할 수 있게 된다.
후속연구
본 논문에서 중요한 점은 안전한 난수를 생성하는 것이며 그 응용으로써 블록체인 오라클을 선택한 것이다. 따라서, 본 논문에서 제안하는 비정형 데이터, 인스타그램을 이용한 안전한 난수는 어떤 응용에서도 사용할 수 있다.
따라서, 아주 빠르게 난수를 생성할 수 없는 문제점이 있으며 만약 블록체인 오라클에 매우 빠른 속도로 난수 요청이 들어오면 난수 pool이 소진될 문제점이 있다. 이 문제를 해결하기 위해서 향후에는 페이스북, 유튜브 등 다양한 비정형 빅데이터를 동시에 사용하여 좀 더 빠르게 난수를 획득하는 방안을 적용 해 볼 계획이다.
질의응답
핵심어
질문
논문에서 추출한 답변
블록체인 오라클은 어떤 방법으로 서비스 할 수 있는가?
블록체인 오라클은 즉시 읽기, 게시-구독, 요청-응답의 세 가지 방법으로 서비스할 수 있다. 본 논문에서는 즉기 읽기 방식을 사용하였다.
본 논문에서의 스마트계약은 무엇을 의미하는가?
블록체인 월드 컴퓨터에서 동작하는 프로그램을 주로 스마트계약[5]이라고 부른다. 본 논문에서는 스마트계약을 법률적인 계약을 의미하지 않고 블록체인에서 동작하는 프로그램을 의미한다.
이더리움이 비결정적인 정보를 사용하지 못하는 이유는 무엇인가?
하지만 이더리움의 경우 Ethereum Virtual Machine (EVM)[4]에서 동작하는 스마트계약은 블록의 높이, 블록 해쉬 등 결정된 정보 (Deterministic Information)만 획득할 수 있어 비결정적인 정보(Non-Deterministic information), 예를 들어, 난수 등을 사용하지 못하는 문제가 있다. 그 이유는 스마트 계약을 연산하는 블록체인 노드마다 서로 다른 난수를 사용하게 되면 동일한 월드 상태를 가지지 않게 되기 때문이다[6].
참고문헌 (23)
신동진, 박창섭, "Hyperledger Fabric을 이용한 중첩형 무한 해시체인 기반의 클라이언트 인증기법", 융합보안논문지, 제18권제4호, pp. 3-10, 2018.
G. Wood, "Ethereum: A secure decentralised generalised transaction ledger.Ethereum Project," Yellow Paper, 2014.
N. Szabo, "Smart Contract," http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html, 1994.
A. M. Antonopoulos and G. Wood, "Mastering Ethereum," O'Reilly, Dec. 2018.
Quanta, www.quanta.im
Katz, J., Menezes, A. J., Van Oorschot, P. C., & Vanstone, S. A. "Handbook of applied cryptography," CRC press, 1996.
Instagram, https://www.instagram.com/
R. Andrew, et al. "A statistical test suite for random and pseudorandom number generators for cryptographic applications," Booz-Allen and Hamilton Inc Mclean Va, 2001.
Ethereum Smart-Contracts: Most of them are rarely used !, https://hackernoon.com/ethereumsmart-contracts-most-of-them-are-rarelyused-f45749730d3e
randao.org, "RANDAO : A DAO working as RNG of Ethereum," Feb. 2019, https://github.com/randao/randao.
Chatterjee, Krishnendu, Amir Kafshdar Goharshady, and Arash Pourdamghani. "Probabilistic Smart Contracts: Secure Randomness on the Blockchain." arXiv preprint arXiv:1902.07986 (2019).
Randomness and Integrity Services, "True random number services," https://www.random.org
※ AI-Helper는 부적절한 답변을 할 수 있습니다.