KR20210094866A - 스마트 컨트랙트에서의 난수 생성 방법 및 장치 - Google Patents

스마트 컨트랙트에서의 난수 생성 방법 및 장치 Download PDF

Info

Publication number
KR20210094866A
KR20210094866A KR1020200008632A KR20200008632A KR20210094866A KR 20210094866 A KR20210094866 A KR 20210094866A KR 1020200008632 A KR1020200008632 A KR 1020200008632A KR 20200008632 A KR20200008632 A KR 20200008632A KR 20210094866 A KR20210094866 A KR 20210094866A
Authority
KR
South Korea
Prior art keywords
parameter
time point
random number
hash value
seed data
Prior art date
Application number
KR1020200008632A
Other languages
English (en)
Inventor
김주영
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200008632A priority Critical patent/KR20210094866A/ko
Publication of KR20210094866A publication Critical patent/KR20210094866A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

스마트 컨트랙트에서의 유사 난수 생성 방법 및 장치가 제공된다. 난수 생성 장치는, 난수 생성을 위한 시드(seed) 데이터를 포함하는 제1 매개 변수를 수신하고, 또한 제2 매개 변수를 수신한다. 그리고 제1 매개 변수 및 제2 매개 변수가 설정된 순서대로 수신된 경우, 시드 데이터를 이용하여 난수를 생성한다.

Description

스마트 컨트랙트에서의 난수 생성 방법 및 장치{Method and apparatus for generating random number in smart contract}
본 발명은 난수를 생성하는 방법에 관한 것으로, 더욱 상세하게 말하자면, 스마트 컨트랙트에서 난수를 생성하는 방법 및 장치에 관한 것이다.
스마트 컨트랙트(smart contract)는 블록체인 기술을 기반으로 자동으로 계약을 이행하는 기술로써, 높은 신뢰성을 보장해야 한다. 스마트 컨트랙트에는 거래하고자 하는 대상(디지털 콘텐츠, 금융 등)에 대한 고유 해시(hash) 값이 포함되어야 한다. 스마트 컨트랙트의 특성상 모든 스마트 컨트랙트에 있는 모든 정보가 블록체인 상에서 공개된다.
한편, 난수(random number)는 암호, 보안, 시뮬레이션 등 컴퓨팅 기술의 중요 요소 중의 하나이다. 이러한 난수를 블록체인상에서 활용하기 위해서는 결정론적 난수 생성 방식인 PRNG(Pseudo-Random Number Generator)를 이용해서, 블록체인 사용자들이 생성된 유사 난수(pseudo-random number)에 대해 검증할 수 있어야 한다.
유사 난수를 생성하기 위해서는 시드(seed)가 되는 정보가 필요하다. 시드는 난수가 생성되기 전까지 공개되어서는 안 되는 비밀 값이지만 스마트 컨트랙트의 특성상 시드가 스마트 컨트랙트로 올라가는 순간 공개된다. 유사 난수 특성상 시드가 유출되면, 난수를 예측할 수 있게 된다.
이러한 스마트 컨트랙트에서의 난수 생성시, 일반적으로 미래의 블록 해시 값을 사용할 수 있는데, 이 경우 블록 해시값의 예측이 가능하여 난수를 예측할 수 있게 된다. 그러므로 보다 신뢰성 있는 난수 생성 방법이 요구된다.
또한 난수 생성을 위해 기존의 사용되는 방식 중 하나인 오라클(oracle)을 이용할 수 있다. 이 경우 오라클 서비스에 의존하여 제공되는 데이터를 이용하여 난수를 생성한다. 그러나, 이러한 방식은 외부로부터의 데이터를 이용하여 난수를 생성하기 때문에 블록 체인의 주요 특성인 신뢰성과 탈중앙화에 위배되며, 오라클 서비스로부터 잘못된 데이터가 전달되어 부정확한 난수 생성이 이루어지는 등의 문제가 발생한다.
본 발명이 해결하고자 하는 과제는, 스마트 컨트랙트에서 시드 유출 없이 신뢰성 있는 난수를 생성하는 방법 및 장치를 제공하는 것이다.
본 발명의 실시 예에 따르면 난수 생성 방법이 제공된다. 상기 방법은 스마트 컨트랙트(smart contract)를 위한 난수를 생성하는 방법으로서, 난수 생성 장치가, 난수 생성을 위한 시드(seed) 데이터에 관련된 정보를 포함하는 제1 매개 변수를 수신하는 단계; 상기 난수 생성 장치가, 제2 매개 변수를 수신하는 단계; 및 상기 난수 생성 장치가, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 시드 데이터를 이용하여 난수를 생성하는 단계를 포함한다.
일 구현 예에서, 상기 제1 매개 변수를 수신하는 단계는 상기 제1 매개 변수를 수신한 시점을 저장하는 단계를 포함하고, 상기 제2 매개 변수를 수신하는 단계는 상기 제2 매개 변수를 수신한 시점을 저장하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 난수를 생성하는 단계는, 상기 제1 매개 변수를 수신한 시점과 상기 제2 매개 변수를 수신한 시점을 이용하여 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었는지를 결정하는 단계; 및 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정되면, 상기 시드 데이터를 이용하여 난수를 생성하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 결정하는 단계는, 상기 제2 매개 변수를 수신한 시점이 상기 제1 매개 변수를 수신한 시점 이후인 경우에, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정할 수 있다.
일 구현 예에서, 상기 제2 매개 변수를 수신하는 단계 이전에, 상기 방법은, 상기 난수 생성 장치가, 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 전송하는 단계; 및 상기 블록의 해시값을 전송하는 것에 관련된 시점을 저장하는 단계를 더 포함할 수 있으며, 상기 설정 개수는 가변될 수 있다.
일 구현 예에서, 상기 결정하는 단계는, 상기 제2 매개 변수를 수신한 시점이 상기 블록의 해시값을 전송하는 것에 관련된 시점 이후이고, 상기 블록의 해시값을 전송하는 것에 관련된 시점이 상기 상기 제1 매개 변수를 수신한 시점 이후인 경우에, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정할 수 있다.
일 구현 예에서, 상기 블록의 해시값을 전송하는 것에 관련된 시점은 상기 블록의 해시값을 전송하는 콜백(call back) 함수가 실행된 시점 또는 상기 블록의 해시값을 전송한 시점일 수 있다.
일 구현 예에서, 상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함할 수 있으며, 상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함할 수 있다.
일 구현 예에서, 상기 난수를 생성하는 단계는, 상기 암호화 키를 사용하여 상기 암호화된 시드 데이터를 복호화하는 단계; 상기 복호화된 시드 데이터에 해시 함수를 적용하여 제2 해시값을 획득하는 단계; 상기 제2 해시값과 상기 블록의 해시값을 결합하여 난수 생성을 위한 최종 시드 데이터를 획득하는 단계; 및 상기 최종 시드 데이터에 해시 함수를 적용하여 난수를 생성하는 단계를 포함할 수 있다.
여기서, 상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함할 수 있으며, 상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함할 수 있다.
이 경우, 일 구현 예에서, 상기 난수를 생성하는 단계는 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하는 단계; 및 상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성하는 단계를 포함할 수 있다.
일 구현 예에서, 상기 제1 해시값의 유효성을 판단하는 단계는, 상기 암호화 키를 이용하여 상기 암호화된 시드 데이터를 복호화하여 획득한 복호화된 시드 데이터에 해시 함수를 적용하여 획득한 제2 해시값과, 상기 수신된 제1 매개 변수에 포함된 상기 제1 해시값이 일치하는 경우에, 상기 제1 해시값이 유효한 것으로 결정할 수 있다.
일 구현 예에서, 상기 제1 매개 변수는 상기 스마트 컨트랙트를 위한 대가를 지불하는 화폐 데이터를 더 포함할 수 있다. 상기 방법은, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되지 않은 것으로 결정되면, 상기 화폐 데이터가 상기 스마트 컨트랙트 작성자에게 할당되는 단계를 더 포함할 수 있다.
본 발명의 다른 실시 예에 따르면 스마트 컨트랙트를 위한 난수를 생성하는 방법이 제공된다. 상기 방법은, 난수 생성 장치가, 클라이언트 노드로부터 난수 생성을 위한 시드 데이터가 암호화된 시드 데이터를 포함하는 제1 매개 변수를 수신하면, 상기 제1 매개 변수를 수신한 시점에 대응하는 제1 시점을 저장하는 단계; 상기 난수 생성 장치가, 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 상기 클라이언트 노드에 전송하고, 상기 블록의 해시값을 전송하는 것에 관련된 시점인 제2 시점을 저장하는 단계; 상기 난수 생성 장치가, 상기 클라이언트 노드로부터 상기 시드 데이터를 암호화하는데 사용된 암호화 키를 포함하는 제2 매개 변수를 수신하면, 상기 제2 매개 변수를 수신한 시점에 대응하는 제3 시점을 저장하는 단계; 상기 난수 생성 장치가, 상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점을 이용하여, 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었지를 결정하는 단계; 및 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우 상기 시드 데이터를 이용하여 난수를 생성하는 단계를 포함한다.
일 구현 예에서, 상기 결정하는 단계는, 상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점이 설정된 조건을 만족하는 경우 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하며, 상기 설정된 조건은 상기 제3 시점이 상기 제2 시점 이후이고, 상기 제2 시점이 상기 제1 시점 이후인 조건일 수 있다.
일 구현 예에서, 상기 제1 매개 변수는 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값 그리고 상기 스마트 컨트랙트를 위한 대가를 지불하는 화폐 데이터를 포함할 수 있다. 이 경우, 상기 난수를 생성하는 단계 이전에, 상기 방법은, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하는 단계를 더 포함할 수 있으며, 상기 난수를 생성하는 단계는 상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성할 수 있다.
본 발명의 또 다른 실시 예에 따르면, 난수 생성 장치가 제공된다. 상기 장치는, 네트워크를 통해 클라이언트 노드와 통신하도록 구성된 인터페이스 장치; 및 상기 인터페이스 장치와 연결되어 있으며, 상기 스마트 컨트랙트를 위한 난수를 생성하도록 구성된 프로세서를 포함하며, 상기 프로세서는, 상기 인터페이스 장치를 통해 상기 클라이언트 노드로부터 난수 생성을 위한 시드 데이터를 포함하는 제1 매개 변수를 수신하면, 상기 제1 매개 변수를 수신한 시점에 대응하는 제1 시점을 저장하고; 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 상기 인터페이스 장치를 통해 상기 클라이언트 노드에 전송하고, 상기 블록의 해시값을 전송하는 것에 관련된 시점인 제2 시점을 저장하며; 상기 인터페이스 장치를 통해 상기 클라이언트 노드로부터 제2 매개 변수를 수신하면, 상기 제2 매개 변수를 수신한 시점에 대응하는 제3 시점을 저장하고; 상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점을 이용하여, 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었지를 결정하며; 그리고 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우 상기 시드 데이터를 이용하여 난수를 생성하도록 구성된다.
일 구현 예에서, 상기 프로세서는, 상기 제3 시점이 상기 제2 시점 이후이고, 상기 제2 시점이 상기 제1 시점 이후인 만족되면, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하도록 구성될 수 있다.
일 구현 예에서, 상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함하고, 상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함할 수 있다. 이 경우, 상기 프로세서는, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하고, 상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성하도록 구성될 수 있다.
일 구현 예에서, 상기 프로세서는 추가로, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 암호화 키를 이용하여 상기 암호화된 시드 데이터를 복호화하여 획득한 복호화된 시드 데이터에 해시 함수를 적용하여 획득한 제2 해시값과, 상기 수신된 제1 매개 변수에 포함된 상기 제1 해시값이 일치하는 경우에, 상기 제1 해시값이 유효한 것으로 결정하도록 구성되며, 또한, 상기 프로세서는 상기 제1 해시값이 유효한 것으로 결정되면, 상기 제2 해시값과 상기 블록의 해시값을 결합하여 난수 생성을 위한 최종 시드 데이터를 획득하고, 상기 최종 시드 데이터에 해시 함수를 적용하여 난수를 생성하도록 구성될 수 있다.
본 발명의 실시 예에 따르면, 블록 체인 기반 시스템의 스마트 컨트랙트에서 신뢰성 있는 난수를 생성할 수 있다. 특히, 난수 생성을 위한 매개 변수들이 설정된 순서로 전송된 경우에만 난수 생성이 수행됨으로써, 난수 생성을 위한 시드 데이터가 노출되지 않으며, 그 결과 다른 노드들이 난수를 예측할 가능성을 방지할 수 있다.
또한, 사용자가 클라이언트 노드를 거치지 않고 직접적으로 스마트 컨트랙트 노드에 접근하여 매개변수 전송 순서를 바꿀 경우, 저장된 타임스탬프들에 의해 부정행위가 걸러지게 된다. 따라서, 스마트 컨트랙트에서 신뢰성 높은 난수를 생성할 수 있다.
또한, 난수를 활용하는 보안서비스나 블록체인의 합의 프로토콜중 하나인 PoS(Proof of Stake)와 같은 기법에서도 난수가 반드시 필요하며, 본 발명의 실시 예에 따라 생성되는 신뢰성 있는 난수를 위와 같은 다양한 서비스들에 활용할 수 있다.
도 1은 일반적인 블록 체인 기반 시스템의 구조를 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 시스템의 구조를 나타낸다.
도 3은 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 방법의 흐름도이다.
도 4는 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 방법에서, 부정 행위를 확인하고 시드 데이터를 확인하여 난수를 생성하는 과정을 나타낸 흐름도이다.
도 5는 본 발명의 실시 예에 따른 난수 생성 장치의 구조를 나타낸 도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
또한, 본 발명의 실시 예에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 본 발명의 실시 예에 따른 스마트 컨트랙트에서의 난수 생성 방법 및 장치에 대하여 설명한다.
도 1은 일반적인 블록 체인 기반 시스템의 구조를 나타낸 도이다.
블록체인 기반 시스템은 하나 이상의 컴퓨팅 장치로 구현될 수 있다. 컴퓨팅 장치는, 예를 들어, 스마트 폰, 스마트 워치, 스마트 밴드, 태블릿 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터, 서버 등을 포함할 수 있다. 그러나 이러한 것에 한정되지 않으며, 컴퓨터 명령을 저장 및 실행할 수 있는 메모리 및 프로세서를 구비한 임의의 형태의 컴퓨터 장치가 포함될 수 있다.
블록체인 기반 시스템의 기능들은 단일 컴퓨팅 장치 상에서 모두 구현될 수도 있고, 복수의 컴퓨팅 장치 상에서 나누어 구현될 수도 있다. 예를 들어, 복수의 컴퓨팅 장치는 제1 컴퓨팅 장치 및 제2 컴퓨팅 장치를 포함할 수 있고, 블록체인 기반 시스템의 일부 기능은 제1 컴퓨팅 장치 상에 구현되고, 블록체인 기반 시스템의 다른 일부 기능은 제2 컴퓨팅 장치 상에 구현될 수 있다. 그리고 제1 컴퓨팅 장치와 제2 컴퓨팅 장치는 네트워크를 통해 서로 통신할 수 있다.
여기서, 네트워크는 셀룰러 네트워크, Wi-Fi 네트워크, 블루투스 네트워크 등을 비롯한 무선 네트워크, LAN(Local Area Network), WLAN(Wide Local Area Network) 등을 비롯한 유선 네트워크, 또는 무선 네트워크와 유선 네트워크의 조합을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 블록체인 기반 시스템은 복수의 노드(N1~Nn)를 포함한다. 복수의 노드(N1~Nn)가 P2P 네트워크를 형성할 수 있으며, 각 노드는 컴퓨터 장치로 이루어진다.
하나의 노드가 트랜잭션을 생성 또는 발생시킬 수 있으며, 트랜잭션 내역을 보관할 수 있다. 다른 노드들이 트랜잭션 내역을 보관하거나, 트랜잭션을 분산합의 과정을 통해 공유하거나, 트랜잭션을 실행 또는 승인할 수 있다.
스마트 컨트랙트(smart contract)는 트랜잭션 처리에 이용되는 각종 조건, 상태, 조건에 따른 행위를 프로그래밍 방식으로 작성한 스크립트 또는 프로그램 코드일 수 있으며, 예를 들어, 이더리움(Ethereum)의 스마트 컨트랙트, 하이퍼레져 패브릭(hyper ledger fabric) 체인 코드(chain code) 등을 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 시스템의 구조를 나타낸다.
본 발명의 실시 예에서는 도 1과 같은 블록체인 기반 시스템에서 스마트 컨트랙트를 처리하는 노드를 스마트 컨트랙트 노드라고 명명하며, 스마트 컨트랙트를 위한 난수 생성에 필요한 매개변수를 제공하는 노드를 클라이언트 노드라고 명명한다.
도 2를 참조하면, 스마트 컨트랙트 노드(1)는 스마트 컨트랙트를 위한 난수를 생성하며, 구체적으로, 네트워크를 통해 클라이언트 노드(2)로부터 제공되는 매개변수를 기반으로 스마트 컨트랙트를 위한 유사 난수를 생성한다.
클라이언트 노드(2)는 난수 생성에 필요한 매개변수를 스마트 컨트랙트 노드(1)에 전달하며, 사용자와 스마트 컨트랙트 노드(1)를 연결해 주는 역할을 수행한다.
매개 변수는 난수 생성을 위한 시드(seed)가 되는 정보인 시드 데이터, 시드 데이터를 암호화하는 데 사용되는 암호화 키(key), 시드 데이터를 해시(hash)한 해시 값을 포함하며, 이외에도 트랜잭션을 위한 대가를 지불하는 화폐 데이터 예를 들어, 이더리움의 이더(Ether, ETH)를 더 포함할 수 있다. 이하에서는 이더(Ether)를 예로 들어서 설명하며, 본 발명은 이에 한정되지 않는다.
클라이언트 노드(2)는 이러한 매개 변수를 미리 획득하여 저장하도록 구성된다. 예를 들어, 매개 변수를 별도의 인터페이스 장치(예를 들어, 키보드, 키패드 등)를 통해 미리 제공받거나, 다른 방식(예를 들어, 저장 매체로부터 저장된 매개 변수를 판독하여 획득하는 방식, 클라이언트 노드 상의 다른 처리 수단 예를 들어, 시드 데이터를 암호화하고 또한 시드 데이터에 해시 합수를 적용하는 처리를 수행하는 암호화 처리 프로세서로부터 처리 결과인 매개 변수를 제공받는 방식 등)으로 제공받아 저장할 수 있다.
도 3은 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 방법의 흐름도이다.
클라이언트 노드(2)는 매개 변수를 획득한다. 즉, 난수 생성을 위한 시드 데이터(seed)를 암호화한 암호화된 시드 데이터(Ek(seed)), 그리고 시드 암호화에 사용된 암호화 키(K), 시드 데이터에 해시 함수를 적용하여 획득한 해시 값(H(seed)), 그리고 이더(Ether)를 획득한다(S100). 획득된 매개 변수들은 클라이언트 노드(2)에 저장된 상태에서 이후의 절차가 수행되어, 사용자가 매개 변수를 변경하는 등의 조작이 이루어지는 것을 방지할 수 있다.
클라이언트 노드(2)는 획득된 매개 변수들 중에서 제1 매개 변수를 스마트 컨트랙트 노드(1)로 전송한다(S110). 여기서 제1 매개 변수는 암호화된 시드 데이터(Ek(seed)), 해시 값(H(seed)), 그리고 이더(Ether)를 포함한다.
스마트 컨트랙트 노드(1)는 클라이언트 노드(2)로부터 제1 매개변수를 수신하고, 제1 매개 변수를 수신한 시점 즉, 제1 시점(Timestamp1)을 저장한다(S120).
다음에 스마트 컨트랙트 노드(1)는 설정된 개수 x 만큼의 블록이 생성되면 해당 블록의 해시값을 콜백(call back) 함수를 통해 클라이언트 노드(2)에게 알려주고, 콜백 함수가 실행된 시점 즉, 제2 시점(Timestamp2)을 저장한다(S130). 이때, 스마트 컨트랙트 노드(1)는 해당 블록의 해시값 즉, 블록 해시값과 함께 제2 시점(Timestamp2)을 저장할 수 있다. 여기서, x는 변경 가능하다. 예를 들어, 이더리움의 경우, 통상적으로 6단계 이후의 블록 해시값은 예측이 불가능하다. 따라서 사용하는 블록 체인의 환경에 따라 x의 값을 조절할 수 있으며, 이에 따라 마이너(miner)가 난수 예측을 목적으로 오프라인 공격을 하기 매우 어렵게 되며, 난수를 예측하더라도 암호화된 시드 데이터를 마이너가 알지 못하기 때문에 난수를 예측하는 것이 매우 어렵게 된다.
이후, 클라이언트 노드(2)가 제2 매개 변수를 스마트 컨트랙트 노드(1)로 전송한다(S140). 여기서, 제2 매개 변수는 암호화 키(K)를 포함한다. 클라이언트 노드(2)는 스마트 컨트랙트 노드(1)로부터의 콜백 함수에 응답하여, 암호화 키(K)를 스마트 컨트랙트 노드(1)로 전송한다. 이와는 달리, 다른 가능한 구현으로, 클라이언트 노드(2)가 제1 매개 변수를 전송한 다음에 설정 시간이 경과된 이후에 제2 매개 변수를 전송할 수도 있다. 여기서 설정 시간은 스마트 컨트랙트 노드(1)에서 설정된 개수 x 만큼의 블록이 생성되는 시간을 고려하여 설정될 수도 있다.
한편, 스마트 컨트랙트 노드(1)는 제2 매개 변수인 암호화 키(K)를 수신하고, 암호화 키(K)를 수신한 시점 즉, 제3 시점(Timestamp3)을 저장한다(S150).
스마트 컨트랙트 노드(1)는 암호화 키(K)를 수신하면 부정 행위가 있었는지를 확인한다(S160). 스마트 컨트랙트 노드(1)는 제1 매개 변수와 제2 매개 변수가 설정된 순서대로 전송되어 수신되었는지를 판단하는 것을 통해 부정 행위가 있었는지를 확인할 수 있다. 이를 위해 저장된 제1 시점(Timestamp1), 제2 시점(Timestamp2), 제3 시점(Timestamp3)을 기반으로 현재까지 예를 들어, 단계(S100)에서부터 단계(S150) 사이에 부정 행위가 있었는지를 확인한다. 단계(S160)에서의 확인 결과, 부정 행위가 없었던 것으로 확인되면, 스마트 컨트랙트 노드(1)는 시드 데이터가 클라이언트 노드(1)가 전송한 시드 데이터가 맞는지를 확인한다(S170). 부정 행위를 확인하는 과정과 시드 데이터를 확인하는 과정에 대해서는 추후에 보다 구체적으로 설명하기로 한다.
부정 행위가 없었으며, 시드 데이터가 클라이언트 노드(1)가 전송한 시드 데이터가 맞는 것으로 확인되면, 스마트 컨트랙트 노드(1)는 난수를 생성한다(S180). 구체적으로, 복호화한 시드 데이터와 저장된 블록 해시값을 결합하여 난수 생성을 위한 시드 데이터(설명의 편의상 최종 시드 데이터라고도 명명함)를 생성하고, 최종 시드 데이터를 해시하여 난수를 생성한다. 그리고 난수를 전송한다(S190).
이러한 본 발명의 실시 예에서는 클라이언트 노드가 암호화 키(K)를 설정된 순서(제1 매개 변수를 전송한 이후 또는 제1 매개 변수를 전송한 이후에 스마트 컨트랙트 노드(1)로부터 블록 해시값을 수신한 이후)대로 전송하도록 한다. 이에 따라 스마트 컨트랙트 노드(1)에서 블록 해시값을 생성할 때까지 암호화 키가 노출되지 않아서 난수 생성을 위한 시드 데이터가 노출되지 않으며, 그 결과 다른 노드들(예를 들어, 블록 체인 기반 시스템 상에서의 마이너(miner)가 암호화된 시드 데이터(Ek(Seed))를 복호화하여 난수를 예측할 가능성을 방지할 수 있다.
도 4는 본 발명의 실시 예에 따른 스마트 컨트랙트를 위한 난수를 생성하는 방법에서, 부정 행위를 확인하고 시드 데이터를 확인하여 난수를 생성하는 과정을 나타낸 흐름도이다.
스마트 컨트랙트를 위한 난수를 생성하는데 있어서, 클라이언트 노드가 암호화 키(K)를 설정된 순서대로 보내지 않고 미리 보낼 경우 마이너들이 난수를 예측할 수 있다. 따라서 본 발명의 실시 예에서는 클라이언트 노드(2)와의 신호 송수신에 따른 시점들을 기반으로 매개 변수들이 설정된 순서대로 전송되었는지를 확인하여 부정 행위가 있었는지를 확인한다.
구체적으로, 첨부한 도 4에서와 같이, 스마트 컨트랙트 노드(1)는 클라이언트 노드(2)로부터 제1 매개 변수(암호화된 시드 데이터(Ek(seed)), 해시 값(H(seed)), 그리고 이더(Ether)를 수신한 제1 시점(Timestamp1)을 획득하고(S300), 블록 생성에 따라 랜덤 시드 즉, 블록 해시값을 클라이언트 노드(2)로 전송한 시점 또는 블록 해시값을 전달하는 콜백 함수가 실행된 시점인 제2 시점(Timestamp2)을 획득하며(S310), 그리고 클라이언트 노드(2)로부터 제2 매개 변수인 암호화 키(K)를 수신한 제3 시점(Timestamp3)을 획득하고(S320), 제1 시점(Timestamp1), 제2 시점(Timestamp2), 제3 시점(Timestamp3)를 비교하여 매개변수들이 설정된 순서로 전송되었는지를 확인한다(S330).
구체적으로, 제3 시점(Timestamp3) > 제2 시점(Timestamp2) > 제1 시점(Timestamp1)이 조건이 만족되면, 즉, 제2 시점(Timestamp2)이 제1 시점(Timestamp1) 이후이고, 제3 시점(Timestamp3)이 제2 시점(Timestamp2)이후인 조건이 만족되면, 매개 변수들이 설정된 순서대로 전송된 것으로 결정하여, 부정 행위가 없는 것으로 결정한다.
위의 조건이 만족되지 않아서 매개 변수들이 설정된 순서대로 전송되지 않은 결정되면, 부정 행위가 있었던 것으로 결정한다. 이 경우, 스마트 컨트랙트 노드(1)는 난수를 생성하지 않으며, 스마트 컨트랙트에 수신된 이더(Ether)를 스마트 컨트랙트 작성자가 가져갈 수 있다.
부정 행위가 없는 것으로 확인되면, 암호화 되어 전송된 시드 즉, 암호화된 시드 데이터(Ek(seed))가 클라이언트 노드(2)로부터 정확하게 수신된 시드 데이터가 맞는지를 확인한다. 이를 위해, 수신한 암호화 키(K)를 이용하여 암호화된 시드 데이터(Ek(seed))를 복호화하고, 복호화된 시드 데이터를 다시 해시하여 해시값을 획득하고, 획득한 해시값(H(Dk(Ek(seed))))과 수신한 해시 값(H(seed))을 비교하여 시드 데이터의 유효성 여부를 판단한다. 획득한 해시값과 수신한 해시 값(H(seed))이 일치하는 경우(H(Dk(Ek(seed)))==H(seed)), 암호화된 시드 데이터(Ek(seed))가 클라이언트 노드(2)로부터 정확하게 수신된 시드 데이터인 것으로 결정한다(S340).
그리고 부정 행위가 없는 것으로 확인되고, 암호화되어 전송된 시드 데이터가 클라이언트 노드(2)로부터 정확하게 수신된 시드 데이터가 맞는 것으로 확인되면, 난수를 생성한다. 즉, 난수 생성을 위한 랜덤 시드를 생성한다(S350). 복호화한 시드 데이터와 저장된 블록 해시값을 결합하여 난수 생성을 위한 시드 데이터 즉, 랜덤 시드를 생성할 수 있다.
이러한 본 발명의 실시 예에서, 사용자가 클라이언트 노드를 거치지 않고 직접적으로 스마트 컨트랙트 노드에 접근하여 매개변수 전송 순서를 바꿀 경우, 저장된 시점들 즉, 타임 스탬프들에 의해 부정행위가 걸러지게 된다. 또한 부정 행위가 발생하면 사용자가 제공한 이더(Ether)를 스마트 컨트랙트 작성자가 가져가므로, 사용자의 손실이 발생한다. 그러므로 사용자의 부정행위를 막는 결과를 가져올 수 있다. 따라서, 스마트 컨트랙트에서 신뢰성 높은 난수를 생성할 수 있다.
도 5는 본 발명의 실시 예에 따른 난수 생성 장치의 구조를 나타낸 도이다.
첨부한 도 5에 도시되어 있듯이, 본 발명의 실시 예에 따른 난수 생성 장치(100)는 프로세서(110), 메모리(120), 입력 인터페이스 장치(130), 출력 인터페이스 장치(140), 네트워크 인터페이스 장치(150) 및 저장 장치(160)를 포함하며, 이들은 버스(170)를 통해 통신할 수 있다.
프로세서(110)는 위의 도 2 내지 도 4를 토대로 설명한 방법들을 구현하도록 구성될 수 있다.
프로세서(110)는 중앙 처리 장치(CPU)이거나, 또는 메모리(120) 또는 저장 장치(160)에 저장된 명령을 실행하는 반도체 장치일 수 있다.
메모리(120)는 프로세서(110)와 연결되고 프로세서(110)의 동작과 관련한 다양한 정보를 저장한다. 메모리(120)는 프로세서(110)에서 수행하기 위한 명령어를 저장하고 있거나 저장 장치(160)로부터 명령어를 로드하여 일시 저장할 수 있다. 프로세서(110)는 메모리(120)에 저장되어 있거나 로드된 명령어를 실행할 수 있다. 메모리는 ROM(121) 및 RAM(122)를 포함할 수 있다.
본 발명의 실시 예에서 메모리(120)/저장 장치(160)는 프로세서(110)의 내부 또는 외부에 위치할 수 있고, 이미 알려진 다양한 수단을 통해 프로세서(110)와 연결될 수 있다.
입력 인터페이스 장치(130)는 입력되는 데이터를 제공받아 프로세서(110)로 전달하도록 구성될 수 있다. 출력 인터페이스 장치(140)는 프로세서(110)의 처리 결과를 출력하도록 구성될 수 있다.
네트워크 인터페이스 장치(150)는 네트워크를 통해 입력되는 데이터를 제공받아 프로세서(110)로 전달하거나, 프로세서(110)의 처리 결과를 네트워크를 통해 다른 장치로 전송하도록 구성될 수 있다. 예를 들어, 네트워크 인터페이스 장치(150)는 클라이언트 노드로부터 전송되는 데이터(제1 매개 변수, 제2 매개 변수 등)를 수신하여 프로세서(110)로 전달하거나, 프로세서(110)로부터의 데이터(예를 들어, 블록 해시값)을 클라이언트 노드로 전송하도록 구성될 수 있다.
이러한 구조로 이루어지는 본 발명의 실시 예에 따른 난수 생성 장치(100)는 블록 체인 기반 시스템의 스마트 컨트랙트 노드에 포함되는 형태로 구현될 수 있으며, 이에 한정되지는 않는다.
한편, 클라이언트 노드도 위에 기술된 바와 같이, 프로세서, 메모리 그리고 인터페이스 장치(입력 인터페이스 장치, 출력 인터페이스 장치, 네트워크 인터페이스 장치) 및 저장 장치를 포함하는 형태로 구현될 수 있다. 이 경우에, 프로세서는 위의 도 2 내지 도 4를 토대로 설명한 방법들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서는 매개 변수들을 획득하여 저장된 상태에서, 제1 매개 변수를 인터페이스 장치를 통해 스마트 컨트랙트 노드 즉, 난수 생성 장치로 전송하고, 이후 제2 매개 변수를 인터페이스 장치를 통해 난수 생성 장치로 전송하도록 구성될 수 있다. 또한, 프로세서는 제1 매개 변수를 수신한 후에 인터페이스 장치를 통해 난수 생성 장치로부터 블록 해시값을 수신하면 제2 매개 변수를 인터페이스 장치를 통해 난수 생성 장치로 전송하도록 구성될 수 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 스마트 컨트랙트(smart contract)를 위한 난수를 생성하는 방법으로서,
    난수 생성 장치가, 난수 생성을 위한 시드(seed) 데이터에 관련된 정보를 포함하는 제1 매개 변수를 수신하는 단계;
    상기 난수 생성 장치가, 제2 매개 변수를 수신하는 단계; 및
    상기 난수 생성 장치가, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 시드 데이터를 이용하여 난수를 생성하는 단계
    를 포함하는 생성 방법.
  2. 제1항에 있어서,
    상기 제1 매개 변수를 수신하는 단계는
    상기 제1 매개 변수를 수신한 시점을 저장하는 단계를 포함하고,
    상기 제2 매개 변수를 수신하는 단계는 상기 제2 매개 변수를 수신한 시점을 저장하는 단계를 포함하는, 생성 방법.
  3. 제2항에 있어서,
    상기 난수를 생성하는 단계는
    상기 제1 매개 변수를 수신한 시점과 상기 제2 매개 변수를 수신한 시점을 이용하여 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었는지를 결정하는 단계; 및
    상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정되면, 상기 시드 데이터를 이용하여 난수를 생성하는 단계
    를 포함하는, 생성 방법.
  4. 제3항에 있어서,
    상기 결정하는 단계는,
    상기 제2 매개 변수를 수신한 시점이 상기 제1 매개 변수를 수신한 시점 이후인 경우에, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하는, 생성 방법.
  5. 제3항에 있어서,
    상기 제2 매개 변수를 수신하는 단계 이전에,
    상기 난수 생성 장치가, 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 전송하는 단계; 및
    상기 블록의 해시값을 전송하는 것에 관련된 시점을 저장하는 단계
    를 더 포함하며, 상기 설정 개수는 가변되는, 생성 방법.
  6. 제5항에 있어서,
    상기 결정하는 단계는,
    상기 제2 매개 변수를 수신한 시점이 상기 블록의 해시값을 전송하는 것에 관련된 시점 이후이고, 상기 블록의 해시값을 전송하는 것에 관련된 시점이 상기 상기 제1 매개 변수를 수신한 시점 이후인 경우에, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하는, 생성 방법.
  7. 제5항에 있어서,
    상기 블록의 해시값을 전송하는 것에 관련된 시점은 상기 블록의 해시값을 전송하는 콜백(call back) 함수가 실행된 시점 또는 상기 블록의 해시값을 전송한 시점인, 생성 방법.
  8. 제5항에 있어서,
    상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함하고,
    상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함하는, 생성 방법.
  9. 제8항에 있어서,
    상기 난수를 생성하는 단계는
    상기 암호화 키를 사용하여 상기 암호화된 시드 데이터를 복호화하는 단계;
    상기 복호화된 시드 데이터에 해시 함수를 적용하여 제2 해시값을 획득하는 단계;
    상기 제2 해시값과 상기 블록의 해시값을 결합하여 난수 생성을 위한 최종 시드 데이터를 획득하는 단계; 및
    상기 최종 시드 데이터에 해시 함수를 적용하여 난수를 생성하는 단계
    를 포함하는, 생성 방법.
  10. 제1항에 있어서,
    상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함하고,
    상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함하는, 생성 방법.
  11. 제10항에 있어서,
    상기 난수를 생성하는 단계는
    상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하는 단계; 및
    상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성하는 단계
    를 포함하는, 생성 방법.
  12. 제11항에 있어서,
    상기 제1 해시값의 유효성을 판단하는 단계는,
    상기 암호화 키를 이용하여 상기 암호화된 시드 데이터를 복호화하여 획득한 복호화된 시드 데이터에 해시 함수를 적용하여 획득한 제2 해시값과, 상기 수신된 제1 매개 변수에 포함된 상기 제1 해시값이 일치하는 경우에, 상기 제1 해시값이 유효한 것으로 결정하는, 생성 방법.
  13. 제10항에 있어서,
    상기 제1 매개 변수는 상기 스마트 컨트랙트를 위한 대가를 지불하는 화폐 데이터를 더 포함하고,
    상기 생성 방법은,
    상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되지 않은 것으로 결정되면, 상기 화폐 데이터가 상기 스마트 컨트랙트 작성자에게 할당되는 단계
    를 더 포함하는 생성 방법.
  14. 스마트 컨트랙트를 위한 난수를 생성하는 방법으로서,
    난수 생성 장치가, 클라이언트 노드로부터 난수 생성을 위한 시드 데이터가 암호화된 시드 데이터를 포함하는 제1 매개 변수를 수신하면, 상기 제1 매개 변수를 수신한 시점에 대응하는 제1 시점을 저장하는 단계;
    상기 난수 생성 장치가, 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 상기 클라이언트 노드에 전송하고, 상기 블록의 해시값을 전송하는 것에 관련된 시점인 제2 시점을 저장하는 단계;
    상기 난수 생성 장치가, 상기 클라이언트 노드로부터 상기 시드 데이터를 암호화하는데 사용된 암호화 키를 포함하는 제2 매개 변수를 수신하면, 상기 제2 매개 변수를 수신한 시점에 대응하는 제3 시점을 저장하는 단계;
    상기 난수 생성 장치가, 상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점을 이용하여, 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었지를 결정하는 단계; 및
    상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우 상기 시드 데이터를 이용하여 난수를 생성하는 단계
    를 포함하는 생성 방법.
  15. 제13항에 있어서,
    상기 결정하는 단계는,
    상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점이 설정된 조건을 만족하는 경우 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하며,
    상기 설정된 조건은 상기 제3 시점이 상기 제2 시점 이후이고, 상기 제2 시점이 상기 제1 시점 이후인 조건인, 생성 방법.
  16. 제13항에 있어서,
    상기 제1 매개 변수는 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값 그리고 상기 스마트 컨트랙트를 위한 대가를 지불하는 화폐 데이터를 포함하고,
    상기 난수를 생성하는 단계 이전에, 상기 생성 방법은,
    상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하는 단계를 더 포함하고,
    상기 난수를 생성하는 단계는 상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성하는, 생성 방법.
  17. 스마트 컨트랙트를 위한 난수를 생성하는 장치로서,
    네트워크를 통해 클라이언트 노드와 통신하도록 구성된 인터페이스 장치; 및
    상기 인터페이스 장치와 연결되어 있으며, 상기 스마트 컨트랙트를 위한 난수를 생성하도록 구성된 프로세서
    를 포함하며,
    상기 프로세서는, 상기 인터페이스 장치를 통해 상기 클라이언트 노드로부터 난수 생성을 위한 시드 데이터를 포함하는 제1 매개 변수를 수신하면, 상기 제1 매개 변수를 수신한 시점에 대응하는 제1 시점을 저장하고; 설정 개수의 블록이 생성된 이후에, 생성된 블록의 해시값을 상기 인터페이스 장치를 통해 상기 클라이언트 노드에 전송하고, 상기 블록의 해시값을 전송하는 것에 관련된 시점인 제2 시점을 저장하며; 상기 인터페이스 장치를 통해 상기 클라이언트 노드로부터 제2 매개 변수를 수신하면, 상기 제2 매개 변수를 수신한 시점에 대응하는 제3 시점을 저장하고; 상기 제1 시점, 상기 제2 시점 그리고 상기 제3 시점을 이용하여, 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신되었지를 결정하며; 그리고 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우 상기 시드 데이터를 이용하여 난수를 생성하도록 구성되는, 생성 장치.
  18. 제17항에 있어서,
    상기 프로세서는, 상기 제3 시점이 상기 제2 시점 이후이고, 상기 제2 시점이 상기 제1 시점 이후인 만족되면, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 것으로 결정하도록 구성되는, 생성 장치.
  19. 제17항에 있어서,
    상기 제1 매개 변수는 상기 시드 데이터를 암호화한 암호화된 시드 데이터 및 상기 시드 데이터에 해시 함수를 적용하여 획득한 제1 해시값을 포함하고, 상기 제2 매개 변수는 상기 시드 데이터를 암호화하는 데 사용된 암호화 키를 포함하며,
    상기 프로세서는, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 제1 해시값의 유효성을 판단하고, 상기 제1 해시값이 유효한 것으로 결정되면 상기 시드 데이터를 이용하여 난수를 생성하도록 구성되는, 생성 장치.
  20. 제19항에 있어서,
    상기 프로세서는 추가로, 상기 제1 매개 변수 및 상기 제2 매개 변수가 설정된 순서대로 수신된 경우, 상기 암호화 키를 이용하여 상기 암호화된 시드 데이터를 복호화하여 획득한 복호화된 시드 데이터에 해시 함수를 적용하여 획득한 제2 해시값과, 상기 수신된 제1 매개 변수에 포함된 상기 제1 해시값이 일치하는 경우에, 상기 제1 해시값이 유효한 것으로 결정하도록 구성되며,
    상기 프로세서는 상기 제1 해시값이 유효한 것으로 결정되면, 상기 제2 해시값과 상기 블록의 해시값을 결합하여 난수 생성을 위한 최종 시드 데이터를 획득하고, 상기 최종 시드 데이터에 해시 함수를 적용하여 난수를 생성하도록 구성되는, 생성 장치.







KR1020200008632A 2020-01-22 2020-01-22 스마트 컨트랙트에서의 난수 생성 방법 및 장치 KR20210094866A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200008632A KR20210094866A (ko) 2020-01-22 2020-01-22 스마트 컨트랙트에서의 난수 생성 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200008632A KR20210094866A (ko) 2020-01-22 2020-01-22 스마트 컨트랙트에서의 난수 생성 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210094866A true KR20210094866A (ko) 2021-07-30

Family

ID=77148470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200008632A KR20210094866A (ko) 2020-01-22 2020-01-22 스마트 컨트랙트에서의 난수 생성 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20210094866A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230025968A (ko) * 2021-08-17 2023-02-24 한일석 난수 생성 방법
KR20240014271A (ko) 2022-07-25 2024-02-01 배민효 단위 컨트랙트의 선택적인 조합을 통한 합성 컨트랙트 모델 시스템
KR20240014270A (ko) 2022-07-25 2024-02-01 배민효 합의 그룹의 공유를 통해 컨트랙트 모델의 검증과 합의를 제공하는 단위 컨트랙트 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230025968A (ko) * 2021-08-17 2023-02-24 한일석 난수 생성 방법
KR20240014271A (ko) 2022-07-25 2024-02-01 배민효 단위 컨트랙트의 선택적인 조합을 통한 합성 컨트랙트 모델 시스템
KR20240014270A (ko) 2022-07-25 2024-02-01 배민효 합의 그룹의 공유를 통해 컨트랙트 모델의 검증과 합의를 제공하는 단위 컨트랙트 시스템

Similar Documents

Publication Publication Date Title
US11038679B2 (en) Secure multi-party computation method and apparatus, and electronic device
US11206132B2 (en) Multiparty secure computing method, device, and electronic device
CN110914851B (zh) 提高区块链网络与外部数据源之间的通信的完整性
US20210281402A1 (en) Multi-party security computing method and apparatus, and electronic device
KR20210094866A (ko) 스마트 컨트랙트에서의 난수 생성 방법 및 장치
CN109150499B (zh) 动态加密数据的方法、装置、计算机设备和存储介质
CN110245506A (zh) 基于区块链的智能合约管理方法及装置、电子设备
CN112669147B (zh) 基于区块链的服务请求方法及装置
US11405203B2 (en) System and method for securely transferring data using generated encryption keys
CN111522784B (zh) 一种非结构化数据文件的元数据同步方法、装置及设备
US20200195448A1 (en) Blockchain ledger authentication
CN112434326B (zh) 一种基于数据流的可信计算方法及装置
CN111476573A (zh) 一种账户数据处理方法、装置、设备及存储介质
JP2019009767A (ja) 情報処理装置
CN110717203A (zh) 基于fpga实现隐私区块链的方法及装置
CN112199697A (zh) 基于共享根密钥的信息处理方法、装置、设备及介质
CN111669434A (zh) 一种通信群组的建立方法、系统、装置及设备
US20140149744A1 (en) Method for obtaining encryption keys corresponding terminals, server and computer program products
CN112202555B (zh) 基于信息的属性生成随机数的信息处理方法、装置及设备
CN113296737B (zh) 随机数的生成系统、方法、装置和云端服务器
CN116455572B (zh) 数据加密方法、装置及设备
KR101922963B1 (ko) 블록 체인 생성 장치 및 방법
JP6087480B1 (ja) 認証装置、認証システム及び認証プログラム
CN110688651A (zh) 基于fpga实现状态更新的方法及装置
KR20200116434A (ko) 블록체인을 활용한 추첨 방법