KR20220063591A - Publicly verifiable blockchain wallet key custody method and apparatus thereof - Google Patents

Publicly verifiable blockchain wallet key custody method and apparatus thereof Download PDF

Info

Publication number
KR20220063591A
KR20220063591A KR1020200149623A KR20200149623A KR20220063591A KR 20220063591 A KR20220063591 A KR 20220063591A KR 1020200149623 A KR1020200149623 A KR 1020200149623A KR 20200149623 A KR20200149623 A KR 20200149623A KR 20220063591 A KR20220063591 A KR 20220063591A
Authority
KR
South Korea
Prior art keywords
key
value
partial
equation
key storage
Prior art date
Application number
KR1020200149623A
Other languages
Korean (ko)
Other versions
KR102426078B1 (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 KR1020200149623A priority Critical patent/KR102426078B1/en
Publication of KR20220063591A publication Critical patent/KR20220063591A/en
Application granted granted Critical
Publication of KR102426078B1 publication Critical patent/KR102426078B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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

Abstract

Disclosed are a blockchain wallet key storage method for verifying and managing a partial key in a public verification method so that key storage servers equal to or greater than the recovery threshold number accurately store partial keys, and a device thereof. The blockchain wallet key storage method is a publicly verifiable blockchain wallet key storage method performed by a user program loaded on a user terminal. The method includes the steps of: dividing a user encryption key by a key distribution/restoration execution unit loaded on a user program to generate a partial key with a final value; encrypting the partial key with the public key of the distributed key storage server together with the final value; and forwarding the partial key encrypted with the public key to the distributed key storage server.

Description

공개 검증 가능한 블록체인 지갑 키 보관 방법 및 장치{PUBLICLY VERIFIABLE BLOCKCHAIN WALLET KEY CUSTODY METHOD AND APPARATUS THEREOF}Method and device for storing publicly verifiable blockchain wallet keys

본 발명은 분산 암호화 키 보관 기술에 관한 것으로, 보다 상세하게는 복원 임계값 개수 이상의 키 보관 서버들이 부분 키를 정확하게 보관하도록 공개 검증 방식으로 검증하고 관리하는 블록체인 지갑 키 보관 방법 및 장치에 관한 것이다.The present invention relates to a distributed encryption key storage technology, and more particularly, to a blockchain wallet key storage method and apparatus for verifying and managing in a public verification method so that key storage servers greater than or equal to a restoration threshold number accurately store partial keys. .

블록체인 서비스는 탈중앙화 특성을 가지므로, 블록체인 기반 서비스에서 사용자 계정 정보 즉, 사용자 암호화키의 관리는 전적으로 사용자 책임이다. 반면, 전통적 인터넷 온라인 서비스 대부분의 경우 온라인 서비스 제공자가 사용자 계정 정보 즉, 암호화 키의 백업 및 복원 기능을 지원하고 있다. 따라서, 블록체인 기반 서비스 확산을 위해서 사용자 암호화 키 분실에 대응하여 키 백업 및 복원 기능을 제공하는 암호화 키 보관(custody) 문제는 반드시 해결해야 하는 문제이다.Since blockchain services have decentralized characteristics, the management of user account information, that is, user encryption keys, in blockchain-based services is entirely the responsibility of the user. On the other hand, in most cases of traditional Internet online services, online service providers support backup and restore functions of user account information, that is, encryption keys. Therefore, for the spread of blockchain-based services, the problem of encryption key custody, which provides a key backup and restore function in response to the loss of a user encryption key, is a problem that must be solved.

현재 블록체인 사용자 암호화 키 보관 서비스 대부분들은 대부분 비밀 값 공유 기법을 이용하여 암호 키를 분할하고 분산 보관한다. 즉, 부분 키를 키 보관 서비스 제공자들에게 분산 보관함으로써, 사용자 암호화키 유출을 방지하면서도, 사용자 암호화키가 분실되었을 경우 복원 임계값 개수 이상의 부분 키 정보를 통해 사용자 암호화 키를 복원한다.Currently, most of the blockchain user encryption key storage services use the secret value sharing technique to partition and distribute the encryption key. That is, by distributing partial keys to key storage service providers, leakage of user encryption keys is prevented, and when user encryption keys are lost, user encryption keys are restored through partial key information equal to or greater than the restoration threshold number.

따라서, 블록체인 사용자 암호화 키 보관 서비스에서는 복원 임계값 이상의 키 보관 서비스들이 정확한 부분 키 정보를 저장하고 있어야 하며, 사용자 입장에서 이를 검증하기 위해서는 복원 임계값 개수 이상의 부분 키 정보를 수집하여 사용자 암호화 키를 복원하는 과정을 진행해야 한다. 이런 과정은 실행 오버헤드가 크며, 또한 빈번한 암호화 키 복원 과정에서 암호화 키 유출 가능성을 높이는 문제를 가진다. 더욱이, 특정 키 보관 서비스 제공자에 대한 집중적 검증을 진행하기는 불가능하다.Therefore, in the blockchain user encryption key storage service, the key storage services above the restoration threshold must store accurate partial key information. You have to go through the restoration process. This process has a large execution overhead, and also has a problem of increasing the possibility of encryption key leakage in the frequent encryption key restoration process. Moreover, it is impossible to perform intensive verification on a specific key storage service provider.

본 발명은 상술한 문제점을 해결하기 위해 도출된 것으로, 본 발명의 목적은 부분 키 보관 서버들을 효과적으로 감시 및 검증하는 방법을 지원하는 분산 키 보관 시스템을 제공하는데 있다.The present invention was derived to solve the above problems, and an object of the present invention is to provide a distributed key storage system that supports a method for effectively monitoring and verifying partial key storage servers.

본 발명의 다른 목적은 PVSS(public verifiable secret sharing) 기법을 활용하여 각 부분 키 유효성을 감시하는, 공개적 검증 가능한 블록체인 지갑 키 보관 방법 및 장치를 제공하는데 있다.Another object of the present invention is to provide a publicly verifiable blockchain wallet key storage method and apparatus for monitoring the validity of each partial key by using a public verifiable secret sharing (PVSS) technique.

본 발명의 또 다른 목적은 항상 복원 임계 값 개수 이상의 부분 키를 읽을 수 있도록 유지하기 위해서, 개별 키 보관 서버 즉 분산 키 보관 서버에서 해당 부분 키 정보를 정상적으로 보관하고 있는지를 검증하고, 만일 특정 키 보관 서버에서 정상적으로 부분 키 정보를 보관하고 있지 않다면, 정상 동작하는 또 다른 키 보관 서버에 재저장함으로써, 항상 일정 개수 이상의 부분 키 보관 서버들이 정상 동작하도록 유지하는, 공개 검증 가능한 블록체인 지갑 키 보관 방법 및 장치를 제공하는데 있다.Another object of the present invention is to verify whether the partial key information is normally stored in an individual key storage server, that is, a distributed key storage server, in order to always keep the partial keys greater than the restoration threshold number readable, and if a specific key is stored If the server does not normally store partial key information, by re-storing it in another normally operating key storage server, a method for storing publicly verifiable blockchain wallet keys that always maintains more than a certain number of partial key storage servers to operate normally; to provide the device.

상술한 기술적 과제를 해결하기 위한 본 발명의 일 측면에 따른 블록체인 지갑 키 보관 시스템은, 사용자 프로그램과 키 보관 서비스 프로그램을 운영하는 복수의 분산 키 보관 서버를 포함한다. 분산 키 보관 서버는 서비스 제공자로서 사용자 응용 프로그램으로부터 암호화 키 보관 요청을 수신하는 보관 서비스 프로그램과 이를 통해 부분 키를 기록하는 데이터베이스를 포함한다. 사용자 프로그램은 응용 프로그램의 일종으로 암호화키를 분할하고 복원하는 키 분산/복원 실행부와 분산 키 보관 서버에 대한 키 보관 검증을 진행하는 감시/검증 실행부를 포함한다.A blockchain wallet key storage system according to an aspect of the present invention for solving the above technical problem includes a plurality of distributed key storage servers that operate a user program and a key storage service program. The distributed key storage server includes a storage service program that receives an encryption key storage request from a user application as a service provider, and a database that records partial keys through it. The user program is a kind of application program and includes a key distribution/restore execution unit that splits and restores an encryption key, and a monitoring/verification execution unit that performs key storage verification for the distributed key storage server.

일실시예에서, 키 분산/복원 실행부에서는 비밀 키 공유 기법을 통해 사용자 암호화 키를 분할하는 방법을 사용하는 환경에서 PVSS(public verifiable secret sharing) 기법을 활용하여 공개 검증 가능한 블록체인 지갑 키 보관 방안을 제시한다. 그리고 감시/검증 실행부는 특정 분산 키 보관 서버가 유효한 부분 키를 소유하는지 감시하고 유효한 부분 키를 소유하지 않았을 때, 해당 서버에 유효한 부분 키를 재생성해 전달해 주거나, 필요한 경우, 부분 키 재생성 및 서비스 서버 재구성을 통해 일정 수준의 사용자 암호화 키 보관 서비스의 신뢰성을 유지하는 것을 포함한다.In one embodiment, the key distribution/restoration execution unit uses a public verifiable secret sharing (PVSS) technique in an environment where a method of splitting a user encryption key through a secret key sharing technique is used to store a publicly verifiable block chain wallet key present And the monitoring/verification execution unit monitors whether a specific distributed key storage server owns a valid partial key, and when it does not possess a valid partial key, it regenerates and delivers a valid partial key to the server, or, if necessary, a partial key regeneration and service server It involves maintaining a certain level of reliability of the user encryption key storage service through reconfiguration.

일실시예에서, 상기 사용자 암호화 키 보관 서비스의 신뢰성을 유지하는 것은, 복원 신뢰 수준을 일정 수준으로 유지하는 것으로서, 유효한 부분키를 유지하지 않는 분산 키 보관 서버가 발견되는 경우, 해당 부분 키를 다시 생성하여 분산 키 보관 서버에 유효한 부분 키 정보를 다시 전달하는 것을 포함한다.In one embodiment, maintaining the reliability of the user encryption key storage service is to maintain the restoration trust level at a certain level, and when a distributed key storage server that does not maintain a valid partial key is found, the corresponding partial key is restored It involves generating and passing valid partial key information back to the distributed key storage server.

상술한 기술적 과제를 해결하기 위한 본 발명의 다른 측면에 따른 블록체인 지갑 키 보관 방법은, 사용자 단말에 탑재된 사용자 프로그램에 의해 수행되는 공개 검증 가능한 블록체인 지갑 키 보관 방법으로서, 사용자 프로그램에 탑재된 키 분산/복원 실행부에 의해 사용자 암호키를 분할하여 확정 값과 함께 부분 키를 생성하는 단계; 부분 키를 확정 값과 함께 분산 키 보관 서버의 공개키로 암호화하는 단계; 및 공개키로 암호화된 부분 키를 분산 키 보관 서버로 전달하는 단계를 포함한다.A block chain wallet key storage method according to another aspect of the present invention for solving the above technical problem is a publicly verifiable block chain wallet key storage method performed by a user program mounted on a user terminal, dividing the user encryption key by the key distribution/restoration execution unit to generate a partial key together with a confirmed value; encrypting the partial key with the public key of the distributed key storage server together with the confirmed value; and transmitting the partial key encrypted with the public key to the distributed key storage server.

일실시예에서, 블록체인 지갑 키 보관 방법은, 상기 전달하는 단계 후에, 분산 키 보관 서버가 유효한 부분 키를 소유하고 있는지 감시하거나 검증하는 단계를 더 포함한다.In one embodiment, the blockchain wallet key storage method further comprises, after the delivering, monitoring or verifying whether the distributed key storage server owns a valid partial key.

일실시예에서, 상기 검증하는 단계는, 분산 키 보관 서버의 보관 서비스 프로그램으로 검증 요청을 전송하는 단계; 분산 키 보관 서버로부터 무작위로 생성한 제1 상수 값을 받는 단계; 부분 키의 검증 확인 요청값으로 무작위로 생성한 제2 상수 값을 보관 서비스 프로그램에 전달하는 단계; 분산 키 보관 서버로부터 제1 상수 값, 제2 상수 값 및 기저장된 부분 키 값을 이용하여 생성한 증명 값을 받는 단계; 및 제1 상수 값, 제2 상수 값 및 증명 값을 이용하여 분산 키 보관 서버가 유효한 부분 키를 저장하고 있는지 여부를 검증하는 단계를 포함한다.In one embodiment, the verifying includes: transmitting a verification request to a storage service program of the distributed key storage server; receiving a first constant value randomly generated from a distributed key storage server; transmitting a second constant value randomly generated as a verification confirmation request value of the partial key to the storage service program; receiving a proof value generated using a first constant value, a second constant value, and a pre-stored partial key value from a distributed key storage server; and verifying whether the distributed key storage server stores a valid partial key by using the first constant value, the second constant value, and the proof value.

일실시예에서, 상기 여부를 검증하는 단계는, 분산 키 보관 서버로부터 부분 키를 받지 않고 분산 키 분산 서버에 유효한 부분 키가 저장되어 있음을 수학적으로 검증하는 단계를 포함한다.In one embodiment, the verifying whether or not includes mathematically verifying that a valid partial key is stored in the distributed key distribution server without receiving the partial key from the distributed key storage server.

상술한 기술적 과제를 해결하기 위한 본 발명의 또 다른 측면에 따른 블록체인 지갑 키 보관 장치는, 사용자 프로그램을 포함하는 공개 검증 가능한 블록체인 지갑 키 보관 장치로서, 사용자 프로그램에 탑재되는 키 분산/복원 실행부와 감시/검증 실행부를 포함한다. 감시/검증 실행부는 사용자 암호키를 분할하여 확정 값과 함께 부분 키를 생성하고, 부분 키를 확정 값과 함께 분산 키 보관 서버의 공개키로 암호화하고, 상기 공개키로 암호화된 부분 키를 상기 분산 키 보관 서버로 전달한다. 여기서 확정 값은 하기의 [수학식 1]의 다항식에서 각 차수 xi의 상수 ai에 대한 묶음값들로 정의된다.A block chain wallet key storage device according to another aspect of the present invention for solving the above technical problem is a publicly verifiable block chain wallet key storage device including a user program, and executes key distribution/restoration mounted in the user program It includes a department and a monitoring/verification execution part. The monitoring/verification execution unit divides the user encryption key to generate a partial key with a fixed value, encrypts the partial key together with the fixed value with the public key of the distributed key storage server, and stores the partial key encrypted with the public key as the distributed key forward to the server. Here, the definite value is defined as bundle values for the constant a i of each order x i in the polynomial of [Equation 1] below.

일실시예에서, 감시/검증 실행부는 확정 값을 생성한 후 상기 다항식 상에서의 한 점 (i, P(i))으로 i번째 부분 키를 생성한다.In one embodiment, the monitoring/verification execution unit generates an i-th partial key with a point (i, P(i)) on the polynomial after generating a definite value.

일실시예에서, 감시/검증 실행부는 부분 키를 받아 저장하는 분산 키 보관 서버가 유효한 부분 키를 소유하고 있는지를 감지하거나 검증한다.In one embodiment, the monitoring/verification execution unit detects or verifies whether the distributed key storage server that receives and stores the partial key possesses a valid partial key.

일실시예에서, 감시/검증 실행부는 유효한 부분 키의 검증을 위해 분산 키 보관 서버의 보관 서비스 프로그램으로 검증 요청을 전송하고; 분산 키 보관 서버로부터 무작위로 생성한 제1 상수 값을 받고; 부분 키의 검증 확인 요청값으로 무작위로 생성한 제2 상수 값을 보관 서비스 프로그램에 전달하고; 분산 키 보관 서버로부터 제1 상수 값, 제2 상수 값 및 기저장된 부분 키 값을 이용하여 생성한 증명 값을 받고; 제1 상수 값, 제2 상수 값 및 증명 값을 이용하여 분산 키 보관 서버가 유효한 부분 키를 저장하고 있는지를 검증한다.In one embodiment, the monitoring/verification execution unit sends a verification request to the storage service program of the distributed key storage server for verification of the valid partial key; receive a randomly generated first constant value from the distributed key storage server; passing a second constant value randomly generated as a verification confirmation request value of the partial key to the storage service program; receiving a proof value generated by using the first constant value, the second constant value, and the pre-stored partial key value from the distributed key storage server; It is verified whether the distributed key storage server stores a valid partial key using the first constant value, the second constant value, and the proof value.

일실시예에서, 감시/검증 실행부는 유효한 부분 키의 검증 과정에서 동형이산로그(discrete logarithm equality) 수학식으로부터 도출되는 값을 확정 값과 함께 이용한다.In one embodiment, the monitoring/verification execution unit uses a value derived from a discrete logarithm equality equation together with a definite value in the verification process of a valid partial key.

일실시예에서, 감시/검증 실행부는 상기 검증 과정에서 동형이산로그 수학식을 만족하는 경우, 분산 키 보관 서버로부터 부분 키를 받지 않고 분산 키 분산 서버에 유효한 부분 키가 저장되어 있음을 수학적으로 검증한다.In one embodiment, the monitoring/verification execution unit mathematically verifies that a valid partial key is stored in the distributed key distribution server without receiving the partial key from the distributed key storage server when the homogeneous discrete log equation is satisfied in the verification process do.

일실시예에서, 감시/검증 실행부는 상기 검증 과정을 통해 유효한 부분 키를 저장하고 있지 않은 재분배 대상 서버의 정보를 저장한다.In one embodiment, the monitoring/verification execution unit stores information of the redistribution target server that does not store a valid partial key through the verification process.

일실시예에서, 감시/검증 실행부는 복원 임계값 이하의 서버 개수에 대하여 유효한 부분 키의 저장 여부에 대한 검증이 각각 완료되면, 유효한 부분 키를 저장하고 있지 않은 분산 키 보관 서버의 정보에 기초하여 분산 키를 재분배할 수 있다.In one embodiment, the monitoring/verification execution unit is based on the information of the distributed key storage server that does not store the valid partial key when verification of whether or not valid partial keys are stored for the number of servers less than or equal to the restoration threshold is completed. The distribution key can be redistributed.

상술한 공개 검증 가능한 블록체인 지갑 키 보관 방법 및 장치를 사용하는 경우에는, 사용자 암호화 키를 분할하고 각 부분 키를 복수개의 분산 키 보관 서버들에 분산 저장하는 분산 키 보관 시스템에서, 개별 키 보관 시스템에서 보관하고 있는 부분 키 정보가 정상적 정보인지, 즉 복구 가능한지 여부를 해당 부분 키 정보를 노출하지 않으면서 공개적으로 검증할 수 있다.In the case of using the above-described publicly verifiable blockchain wallet key storage method and device, in a distributed key storage system that divides a user encryption key and distributes and stores each partial key in a plurality of distributed key storage servers, an individual key storage system Whether or not the partial key information stored in ' is normal, that is, recoverable, can be publicly verified without exposing the partial key information.

또한, 키 보관 서비스 서버 즉, 분산 키 보관 서버가 문제가 생겨 복원 임계값 미만의 부분 키들만 읽을 수 있는 경우, 암호화 키 복원이 불가능한데, 본 발명에서는 암호화 키 복구가 불가능할 경우를 대비하여, 예방적으로 분산 키 보관 서버의 동작 여부를 미리 검증하여, 다른 키 보관 서버를 이용하거나 부분 키 복구 과정을 진행시키는 등으로 대응함으로써, 항상 복원 임계값 이상의 부분 키 읽기가 가능하게 유지할 수 있고, 아울러 암호화 키 복구가 불가능한 상황을 사전에 예방할 수 있는 효과가 있다.In addition, if the key storage service server, that is, the distributed key storage server, has a problem and can only read partial keys less than the restoration threshold, the encryption key cannot be restored. In the present invention, in case encryption key recovery is not possible, prevent By verifying the operation of the distributed key storage server in advance and responding by using another key storage server or proceeding with the partial key recovery process, it is possible to always keep the partial key read above the restoration threshold possible, and also This has the effect of preventing in advance a situation in which key recovery is impossible.

본 발명에 의하면, 부분 키 보관 서버의 정상 동작 여부를 검증하는 방법을 제시하고, 필요시 암호화 키 재분할 및 재배치하는 방안을 제공할 수 있다.According to the present invention, it is possible to provide a method for verifying whether the partial key storage server is operating normally, and to provide a method for repartitioning and rearranging encryption keys when necessary.

도 1은 본 발명의 일실시예에 따른 감시 및 검증 가능한 분산 키 보관 시스템의 구성을 보여주는 도면이다.
도 2a 및 도 2b는 도 1의 시스템의 주요 작동 과정을 예시한 도면들이다.
도 3은 도 1의 시스템에서 사용자 프로그램상의 감시/검증 실행부와 분산 키 보관 서버의 보관 서비스 프로그램 간의 동작 프로토콜을 나타낸 도면이다.
도 4는 도 1의 시스템에 채용할 수 있는 블록체인 지갑 키 보관 방법에 대한 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 블록체인 지갑 키 보관 방법에 대한 흐름도이다.
도 6은 도 5의 방법의 검증 과정에 대한 상세 흐름도이다.
1 is a diagram showing the configuration of a distributed key storage system capable of monitoring and verifying according to an embodiment of the present invention.
2A and 2B are diagrams illustrating main operating processes of the system of FIG. 1 .
3 is a diagram illustrating an operation protocol between the monitoring/verification execution unit on the user program and the storage service program of the distributed key storage server in the system of FIG. 1 .
4 is a flowchart of a method for storing a block chain wallet key that can be employed in the system of FIG. 1 .
5 is a flowchart of a method for storing a blockchain wallet key according to another embodiment of the present invention.
6 is a detailed flowchart of a verification process of the method of FIG. 5 .

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Since the present invention can have various changes and can have various embodiments, specific embodiments are illustrated in the drawings and described in detail. However, this is not intended to limit the present invention to specific embodiments, and it should be understood to include all modifications, equivalents and substitutes included in the spirit and scope of the present invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.Terms such as first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may also be referred to as a first component. and/or includes a combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When an element is referred to as being “connected” or “connected” to another element, it is understood that it may be directly connected or connected to the other element, but other elements may exist in between. it should be On the other hand, when it is said that a certain element is "directly connected" or "directly connected" to another element, it should be understood that the other element does not exist in the middle.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly dictates otherwise. In the present application, terms such as “comprise” or “have” are intended to designate that a feature, number, step, operation, component, part, or combination thereof described in the specification exists, but one or more other features It should be understood that this does not preclude the existence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present application. does not

본 발명의 바람직한 실시예를 설명하기에 앞서 본 기술분야의 몇 가지 주요 용어와 표현을 본 실시예와 관련하여 설명하면 다음과 같다.Before describing the preferred embodiment of the present invention, some key terms and expressions in the present technical field will be described in relation to the present embodiment.

[암호 키][Passkey]

암호 키란 암호화 및 복호화를 수행하기 위해 암호화 기법 및 프로그램에서 사용하는 키를 말한다. 암호 키의 종류는 크게 대칭 키, 비 대칭 키 방식으로 나눌 수 있다. 대칭키 방식은 키 하나로 암호화 및 복호화하는 방법을 말한다. 비 대칭키 방식은 개인키와 공개키의 두 개의 키 쌍을 이용해 암호화 및 복호화하는 방법을 말한다. 본 실시예에서는 비 대칭 키 암호화 방식에서 개인이 소유한 개인 키를 암호키라고 칭한다. 특히, 블록체인에서 사용하는 개인 키를 칭하고 이를 보관하는 방법 및 장치를 제안한다.An encryption key refers to a key used in encryption techniques and programs to perform encryption and decryption. Types of encryption keys can be broadly divided into symmetric key and asymmetric key methods. The symmetric key method refers to a method of encrypting and decrypting with one key. The asymmetric key method refers to a method of encryption and decryption using two key pairs, a private key and a public key. In this embodiment, in the asymmetric key encryption method, a private key owned by an individual is referred to as an encryption key. In particular, it refers to the private key used in the block chain and proposes a method and device for storing it.

[비밀 값 공유][Share the secret value]

비밀 값 공유(secret sharing)는 특정한 비밀 값을 나누어 보관하는 방법으로서, 암호 키를 여러 부분 키로 나누어 분산 저장하는 방법을 지칭한다. 대표적인 방법으로는 샤미르(Shamir)의 비밀 값 공유와 Blakley의 비밀 값 공유 방법이 있다.Secret value sharing is a method of storing a specific secret value by dividing it, and refers to a method of dividing an encryption key into several partial keys and storing them in a distributed manner. Representative methods include Shamir's secret value sharing and Blakley's secret value sharing method.

본 실시예에서는 Shamir의 방법([문헌 1] 참조)을 이용하여 비밀 값을 공유한다. Shamir의 비밀 값 공유 방법은 다항식을 이용한다. 이 방법을 이용하기 위해서는 't'라는 장치 설정값이 필요하다. t는 다항식의 최고차항을 결정하며, 이는 비밀 값을 복구할 때 필요한 부분 키의 개수를 의미한다.In this embodiment, the secret value is shared using Shamir's method (see [Document 1]). Shamir's secret value sharing method uses polynomials. To use this method, a device setting value of 't' is required. t determines the highest degree of the polynomial, which means the number of partial keys required to recover the secret value.

본 실시예에서는 또한 t를 복원 임계값으로 정의한다. 따라서 비밀 키 K를 부분 키로 만들어 보관하기 위해 t-1차의 다항식 P(x)를 생성한다. 다항식은 다음의 [수학식 1]과 같이 표현되고, 부분 키는 P(x)의 한 점인 (x,P(x))가 된다.In this embodiment, t is also defined as a restoration threshold. Therefore, in order to make and store the secret key K as a partial key, a polynomial P(x) of order t-1 is generated. The polynomial is expressed as in [Equation 1], and the partial key becomes (x, P(x)) which is a point of P(x).

Figure pat00001
Figure pat00001

[문헌 1] Adi Shamir. How to share a secret, Communications of the ACM, 1979, Vol 22. 612-613pp.[Document 1] Adi Shamir. How to share a secret, Communications of the ACM, 1979, Vol 22. 612-613pp.

[공개 검증 가능한 키 공유(Publicly Verifiable Secret Sharing, PVSS)][Publicly Verifiable Secret Sharing (PVSS)]

기존 Shamir의 비밀 값 공유 방법은, 비밀 키로부터 부분 키들을 생성하고 보관할 때, 각 부분 키가 특정한 키로부터 생성된 부분 값임을 확인할 방법이 없다. 이를 해결하기 위해 PVSS[문헌2]에서는 다항식 P(x)를 생성할 때 만들어지는 확정(commitment) 값 C를 이용한다.In the existing Shamir secret value sharing method, when generating and storing partial keys from a secret key, there is no way to verify that each partial key is a partial value generated from a specific key. In order to solve this problem, PVSS [Document 2] uses the commitment value C created when generating the polynomial P(x).

확정 값 C는 [수학식 1]의 다항식에서 각 차수 xi의 상수 ai에 대한 묶음값들로 정의되며, 확정값 C를 통해 한 점이 특정 다항식 P(x) 상의 점인지 검증할 수 있다. 이에 대하여는 본 실시예의 상세한 설명에서 자세히 설명될 것이다.The definite value C is defined as bundle values for the constant a i of each order x i in the polynomial of [Equation 1], and it can be verified whether a point is a point on a specific polynomial P(x) through the definite value C. This will be described in detail in the detailed description of the present embodiment.

확정값 C를 활용한다면, 어떤 부분 값을 나타내는 한 점 (x,y)가 특정 다항식 P(x)로부터 계산된 점인지는 누구든지 확인할 수 있다. 상기의 PVSS 특징이 본 실시예에 적용되는 방식은 본 실시예의 예제와 함께 아래에서 자세히 설명하기로 한다.If the definite value C is used, anyone can check whether a point (x,y) representing a certain partial value is a point calculated from a specific polynomial P(x). A method in which the above PVSS feature is applied to this embodiment will be described in detail below along with an example of this embodiment.

[문헌 2] Markus Stadler. Publicly Verifiable Secret Sharing. EUROCRYPT'96: Proceedings of the 15th annual international conference on Theory and application of cryptographic techniques, 1996, ISBN 978-3-540-61186-8,190-199pp.[Document 2] Markus Stadler. Publicly Verifiable Secret Sharing. EUROCRYPT'96: Proceedings of the 15th annual international conference on Theory and application of cryptographic techniques, 1996, ISBN 978-3-540-61186-8,190-199pp.

[비밀 값 공유 기반 키 보관 서비스][Secret value sharing-based key storage service]

비밀 값 공유 기반 키 보관 서비스는 비밀 값 공유 기법을 이용하여 암호화키를 분할하여 분산 보관한다. 즉, 사용자 암호화 키를 분할하고, 개별 부분 키를 복수개의 키 보관 서버 혹은 서비스 제공자들에 분산 저장하고, 사용자 암호화 키가 분실되었을 경우, 복원 임계값 개수 이상의 부분 키 정보를 키 보관 서버들을 통해 읽어옴으로써 사용자 암호화 키를 복구한다.The secret value sharing-based key storage service divides and stores the encryption key using the secret value sharing technique. That is, the user encryption key is divided and individual partial keys are distributed and stored in a plurality of key storage servers or service providers. Recovers the user encryption key.

비밀값 공유 기반 키 보관 서비스가 정상적으로 동작하기 위해서는 항상 복원 임계값 개수 이상의 키 보관 서버들이 정확한 부분 키 정보를 저장하고 있음을 전제로 한다. 하지만, 사용자 입장에서는 이를 검증할 방법이 없다. 다시 말해 암호 키를 부분 키로 나누어 서버들이 보관할 때, 각 서버가 유효한 부분 키를 소유중인지 사용자 관점에서 유효성을 검증하기 위해서는 복원 임계값 개수 이상의 부분 키 값을 읽은 후 사용자 암호화 키를 복원해 보아야 한다. 이는 사용자 컴퓨팅 자원이나 네트워크 자원에 매우 큰 오버헤드를 가지며, 또한 빈번한 복원 과정에서 암호화 키 유출 가능성을 높이는 문제가 있다.In order for the secret value sharing-based key storage service to operate normally, it is premised on the assumption that key storage servers equal to or greater than the restoration threshold are always storing accurate partial key information. However, there is no way to verify this from the user's point of view. In other words, when an encryption key is divided into partial keys and stored by servers, in order to verify the validity from the user's point of view whether each server owns a valid partial key, it is necessary to restore the user encryption key after reading the partial key values greater than the restoration threshold number. This has a very large overhead for user computing resources or network resources, and also has a problem of increasing the possibility of encryption key leakage in the frequent restoration process.

[키 보관 방법 (중앙 집중식 서비스- one point failure)][Key storage method (centralized service- one point failure)]

중앙집중식 암호화키 관리 서비스는 암호화 키 생성부터 보관까지 담당하는 서비스로 이루어져 있다. 예를 들어 아마존 키 보관 서비스(https://aws.amazon.com/ko/kms/), 네이버 키 보관 서비스(https://www.ncloud.com/product/security/kms) 등이 존재한다. 따라서 해당 컴퓨터가 암호 키의 원본을 가지고 있으므로, 두 가지 문제가 발생하게 된다.The centralized encryption key management service consists of services from encryption key generation to storage. For example, Amazon key storage service (https://aws.amazon.com/en/kms/) and Naver key storage service (https://www.ncloud.com/product/security/kms) exist. Therefore, since the computer has the original encryption key, two problems arise.

첫번째로 해당 컴퓨터가 악의적인 공격에 의해 해킹당했을 경우이다. 해당 컴퓨터의 자료가 탈취당한 경우, 사용자의 암호 키 원본을 소유하는 중이므로 보안에 민감한 암호 키를 그대로 탈취당하게 된다.The first is when the computer is hacked by a malicious attack. If the data on the computer is stolen, the security-sensitive encryption key is stolen as it is in possession of the original encryption key of the user.

두번째로 해당 컴퓨터가 악의적인 공격 또는 여러 이유로 서비스 불가 상태가 되었을 경우이다. 서비스 불가는 해당 컴퓨터의 고장 또는 암호 키를 저장하고 있는 데이터베이스의 복구 불가능한 상태 등 저장된 키를 소실 상태를 뜻한다.The second is when the computer is out of service due to a malicious attack or other reasons. Service outage refers to a state in which the stored key is lost, such as a failure of the computer or an unrecoverable state of the database storing the encryption key.

본 실시예에서는 분산 키 보관 방법을 사용하므로 기본적으로 중앙 집중식 키 보관 서비스의 문제점을 가지지 않는다.In this embodiment, since a distributed key storage method is used, there is basically no problem of a centralized key storage service.

이하, 본 발명의 바람직한 실시예를, 첨부한 도면들을 참조하여 보다 상세하게 설명한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings.

도 1은 본 발명의 일실시예에 따른 감시 및 검증 가능한 분산 키 보관 시스템의 구성을 보여주는 도면이다. 그리고 도 2a 및 도 2b는 도 1의 시스템의 주요 작동 과정을 예시한 도면들이다.1 is a diagram showing the configuration of a distributed key storage system capable of monitoring and verifying according to an embodiment of the present invention. And FIGS. 2A and 2B are diagrams illustrating a main operation process of the system of FIG. 1 .

도 1, 도 2a 및 도 2b를 참조하면, 본 실시예에 따른 공개적 검증 가능한 블록체인 지갑 키 보관 장치는 복수의 분산 키 보관 서버(200a~200n) 및 분산 키 보관 서버와 연동하는 사용자 프로그램(100)을 포함한다.1, 2A and 2B, the publicly verifiable block chain wallet key storage device according to the present embodiment includes a plurality of distributed key storage servers 200a to 200n and a user program 100 interworking with the distributed key storage server. ) is included.

사용자 프로그램은 컴퓨팅 장치, 모바일 단말 등의 사용자 단말에 탑재되고 사용자 암호화 키를 분할하여 복수개의 부분 키를 생성한다.The user program is mounted on a user terminal such as a computing device or a mobile terminal, and generates a plurality of partial keys by dividing the user encryption key.

각 분산 키 보관 서버들은 사용자 프로그램(100)으로부터 전송된 부분 키를 각 데이터베이스(212a~212n)에 저장하는 보관 서비스 프로그램(210a~210n)을 포함한다.Each distributed key storage server includes a storage service program (210a ~ 210n) for storing the partial key transmitted from the user program (100) in each database (212a ~ 212n).

각 분산 키 보관 서버(200a~200n)는 공개키 인프라(Public Key Infrastructure, PKI)에서 정의하는 공개키/비밀키 쌍을 사용한다. 그리고 사용자 프로그램(100)은 부분 키를 각 분산 키 보관 서버의 공개키로 암호화하여 각 서버에 전달한다. 따라서 본 실시예에서는 사용자 프로그램(100)과 분산 키 보관 서버 간에 안전한 통신을 지원한다.Each distributed key storage server 200a to 200n uses a public key/private key pair defined in a public key infrastructure (PKI). And the user program 100 encrypts the partial key with the public key of each distributed key storage server and transmits it to each server. Therefore, in this embodiment, secure communication between the user program 100 and the distributed key storage server is supported.

각 분산 키 보관 서버(200a~200n)의 보관 서비스 프로그램(210a~210n), 데이터베이스(212a~212n), 및 보관되는 부분 키(112a~112n)의 기능은 동일하므로, 이하 에서는 일반적으로 i(임의의 자연수)번째 분산 키 보관 서버(200i)에 설치된 보관 서비스 프로그램(210i), 데이터베이스(212i) 및 부분 키(112i)를 기준으로 그 기능에 대해 설명하기로 한다. 그리고 이하에서는 설명 및 도시의 편의를 위해 분산 키 보관 서버(200i), 데이터베이스(212i), 및 부분키(112i)를 분산 키 보관서버(200), 데이터베이스(212) 및 부분 키(112)로 기재하기로 한다. Since the functions of the storage service programs 210a to 210n, the databases 212a to 212n, and the stored partial keys 112a to 112n of each distributed key storage server 200a to 200n are the same, in the following, generally i (any The function will be described based on the storage service program 210i, the database 212i, and the partial key 112i installed in the th distributed key storage server 200i. In the following, for convenience of explanation and illustration, the distributed key storage server 200i, the database 212i, and the partial key 112i are described as the distributed key storage server 200, the database 212 and the partial key 112. decide to do

먼저, 도 2a에 도시된 바와 같이, 사용자 프로그램(100)은 키 분산/복원 실행부(122)와 감시/검증 실행부(124)를 포함한다. 키 분산/복원 실행부(122)는 사용자 암호화 키(110)를 PVSS 기법을 이용하여 분할함으로써 복수개 부분 키(112a~112n)들을 생성한다. 개별 부분 키(112)는 분산 키 보관 서버(200)의 공개키로 부분 키를 암호화하여 전송되며, 결과적으로 복수의 분산 키 보관 서버들에게 개별적으로 부분 키들을 분산 저장한다.First, as shown in FIG. 2A , the user program 100 includes a key distribution/restoration execution unit 122 and a monitoring/verification execution unit 124 . The key distribution/restoration execution unit 122 generates a plurality of partial keys 112a to 112n by dividing the user encryption key 110 using the PVSS technique. The individual partial key 112 is transmitted by encrypting the partial key with the public key of the distributed key storage server 200, and as a result, the partial keys are individually distributed and stored in a plurality of distributed key storage servers.

또한 키 분산/복원 실행부(122)는 필요한 경우 분산 키 보관 서버(200)로부터 부분 키(112)를 전달받아 사용자의 암호 키(110)를 원상태로 복원하는 역할을 한다. 이때 사용자 암호화 키 분할 때 설정한 복원 임계값에 따라, 읽어야 하는 부분 키 개수가 결정된다.In addition, the key distribution/restoration execution unit 122 serves to restore the user's encryption key 110 to its original state by receiving the partial key 112 from the distributed key storage server 200 if necessary. At this time, the number of partial keys to be read is determined according to the restoration threshold set when dividing the user encryption key.

사용자 프로그램(100)은 감시/검증 실행부(124)를 통해 각 분산 키 보관 서버가 정상적으로 부분 키를 보관하고 있는지 검증하고, 사용자에게 필요하다면 부분키 재생성 및 분산 키 보관 서버 재구성을 통해 항상 복원 임계값을 상회하는 일정 개수 이상의 분산 키 보관 서버에서 정확한 부분 키 정보를 저장하게 함으로써, 사용자 암호화 키 보관 서비스 신뢰성을 보장한다.The user program 100 verifies whether each distributed key storage server normally stores the partial key through the monitoring/verification execution unit 124, and if necessary for the user, it is always critical to restoration through partial key regeneration and reconfiguration of the distributed key storage server The reliability of the user encryption key storage service is ensured by storing the correct partial key information in more than a certain number of distributed key storage servers exceeding the value.

구체적으로, 도 2b에 도시된 바와 같이, 키 분산/복원 실행부(122)는 PVSS 기법을 이용하여 사용자 암호키(110)를 분할하여 부분 키(112a~112n)를 생성하고, 확정 값 C를 함께 생성한다. PVSS 과정을 통해 부분 키를 생성하는 과정을 보다 자세히 서술하면 다음의 (1) 내지 (5)와 같다.Specifically, as shown in Fig. 2b, the key distribution/restoration execution unit 122 divides the user encryption key 110 by using the PVSS technique to generate partial keys 112a to 112n, and to determine the value C. create together The process of generating a partial key through the PVSS process is described in more detail as follows (1) to (5).

(1) 먼저 복원 임계값은 t 로 표현한다.(1) First, the restoration threshold is expressed as t.

(2) 암호키(110)를 K로 대입하여 t-1차 다항식을 구성한다. t-1차 다항식 P(x)는 [수학식 1]과 같다.(2) By substituting the encryption key 110 into K, a t-1st polynomial is constructed. The t-1st polynomial P(x) is the same as [Equation 1].

[수학식 1][Equation 1]

Figure pat00002
Figure pat00002

(3) P(x)에 기반하여 추후 검증을 위한 확정 값 C를 생성한다. 확정 값 C는 [수학식 2]와 같다.(3) Based on P(x), a definite value C for later verification is generated. The definite value C is the same as [Equation 2].

Figure pat00003
Figure pat00003

[수학식 2]에서, H는 일반적인 암호화에서 사용하는 큰 소수(prime number) 또는 타원 곡선(Elliptic Curve)에서 한 점이다. HK는 K를 타원곡선 상에서 H값을 기준으로 곱 연산한 것을 의미하며, HK와 H값으로 K를 유추할 수 없다.In [Equation 2], H is a point in a large prime number or elliptic curve used in general encryption. H K means that K is multiplied by the H value on the elliptic curve, and K cannot be inferred from H K and H value.

본 실시예에서는 타원곡선 암호화를 사용하는 것으로 H를 기준점으로 사용하는 것으로 서술하나, 이에 한정되지 않고, 암호학 특성을 따르는 다른 경우도 가능하다.In this embodiment, elliptic curve encryption is used and H is described as a reference point, but it is not limited thereto, and other cases according to cryptographic properties are possible.

(4) P(x) 상에서의 한 점 (i,P(i))으로 i번째 부분 키(112i)를 생성한다.(4) An i-th partial key 112i is generated with a point (i, P(i)) on P(x).

(5) 특정 부분 키(112)는 해당 확정 값 C와 함께 특정 분산 키 보관 서버(200)의 공개키로 암호화하여 해당 분산 키 보관 서버(200)로 전달된다. 이때 분산 키 보관 서버의 공개키를 X, 특정 데이터 D를 해당 공개키로 암호화한 것을 EX(D)로 나타내기로 한다. 따라서,

Figure pat00004
는 부분 키 Pi를 공개키로 암호화한 정보를 나타낸다.(5) The specific partial key 112 is encrypted with the public key of the specific distributed key storage server 200 together with the corresponding confirmed value C and transmitted to the corresponding distributed key storage server 200 . At this time, the public key of the distributed key storage server is represented by X, and the encrypted data D with the corresponding public key is represented by E X (D). thus,
Figure pat00004
denotes information obtained by encrypting the partial key Pi with the public key.

도 3은 도 1의 시스템에서 사용자 프로그램상의 감시/검증 실행부와 분산 키 보관 서버의 보관 서비스 프로그램 간의 동작 프로토콜을 나타낸 도면이다.3 is a diagram illustrating an operation protocol between the monitoring/verification execution unit on the user program and the storage service program of the distributed key storage server in the system of FIG. 1 .

도 3은 사용자 프로그램(100) 상의 감시/검증 실행부(124)와 분산 키 보관 서버에 탑재된 보관 서비스 프로그램(210i) 간의 동작 프로토콜을 서술한다.3 illustrates an operation protocol between the monitoring/verification execution unit 124 on the user program 100 and the storage service program 210i mounted on the distributed key storage server.

즉, 분산 키 보관 서버가 유효한 부분 키를 소유하고 있는지 감시/검증을 하기 위한 동작 순서는 감시/검증 실행부와 보관 서비스 프로그램 간 4단계 통신 순서로 진행될 수 있다.That is, the operation sequence for monitoring/verifying whether the distributed key storage server possesses a valid partial key may be performed in a 4-step communication sequence between the monitoring/verification execution unit and the storage service program.

구체적으로, 첫째, 검증 요청(S301)으로써, 감시/검증 실행부(124)는 분산 키 보관 서버(200)의 보관 서비스 프로그램(210i)으로 검증요청을 전송한다(S301).Specifically, first, as a verification request (S301), the monitoring/verification execution unit 124 transmits a verification request to the storage service program 210i of the distributed key storage server 200 (S301).

둘째, 보관 서비스 프로그램(210i)은 검증 요청(S301)에 대한 응답으로 무작위로 생성한 상수 값 w(이하 제1 상수 값이라고도 한다)를 감시/검증 실행부(124)로 전달한다(S302). 보관 서비스 프로그램(210i)은 상수 값 w를 서버의 저장부나 데이터베이스에 저장한다.Second, the storage service program 210i transmits a randomly generated constant value w (hereinafter also referred to as a first constant value) in response to the verification request (S301) to the monitoring/verification execution unit 124 (S302). The storage service program 210i stores the constant value w in the storage unit or database of the server.

셋째, 감시/검증 실행부(124)는 무작위로 생성한 상수 값 c(이하 제2 상수 값이라고도 한다)를 검증 확인 요청값으로 보관 서비스 프로그램(210i)에게 전달한다(S303). 감시/검증 실행부(124)는 보관 서비스 프로그램(210i)로부터 받은 제1 상수값과 보관 서비스 프로그램(210i)로 전송한 제2 상수값을 사용자 단말의 저장부나 데이터베이스에 저장한다.Third, the monitoring/verification execution unit 124 transmits a randomly generated constant value c (hereinafter also referred to as a second constant value) to the storage service program 210i as a verification confirmation request value (S303). The monitoring/verification execution unit 124 stores the first constant value received from the storage service program 210i and the second constant value transmitted to the storage service program 210i in the storage unit or database of the user terminal.

넷째, 보관 서비스 프로그램(210i)은 저장한 상수 값 w와 수신한 상수 값 c, 그리고 자체적으로 데이터베이스에 저장된 부분 키(112) 값을 이용하여 증명 값 r을 생성하고, 감시/검증 실행부(124)로 전달한다(S304).Fourth, the storage service program 210i generates a proof value r using the stored constant value w, the received constant value c, and the partial key 112 value stored in the database itself, and the monitoring/verification execution unit 124 ) to (S304).

i 번째 부분키를 저장하는 보관 서비스 프로그램(210i)에서 증명 값 r은 다음과 같은 [수학식 3]으로부터 도출한다.In the storage service program 210i that stores the i-th partial key, the proof value r is derived from the following [Equation 3].

Figure pat00005
Figure pat00005

이때 감시/검증 실행부(124)는 두 상수값 w 와 c, 그리고 증명값 r을 이용하여, 보관 서비스 프로그램(210i)을 실행하는 분산 키 보관 서버(200i)가 유효한 부분 키(112i)를 정확하게 저장하고 있는지 여부를 검증할 수 있다.At this time, the monitoring/verification execution unit 124 uses the two constant values w and c, and the proof value r, to accurately determine the valid partial key 112i of the distributed key storage server 200i executing the storage service program 210i. You can check whether it is being saved or not.

보다 자세히 설명하면, 감시/검증 실행부(124)에서 무작위 상수 값 w, c와 확정 값 C, 증명 값 r 및 공개키 Xi를 이용하여 유효한 부분 키를 소유하는지 검증하는 방법은 다음과 같은 동형이산로그(discrete logarithm equality) 수학식으로부터 도출된다.More specifically, the method of verifying that the monitoring/verification execution unit 124 possesses a valid partial key using the random constant values w and c and the definite value C, the proof value r and the public key X i is the following isomorphic It is derived from a discrete logarithm equality equation.

Figure pat00006
Figure pat00006

위의 [수학식 4]는 PVSS의 특징으로써,

Figure pat00007
의 경우
Figure pat00008
이므로 부분 키 P(i)를 공개키로 곱한 것을 의미하고,
Figure pat00009
의 경우 타원곡선 위의 한 점 H로 곱한 값이며 검증 과정에서 확정 값 C와 함께 이용하게 된다.[Equation 4] above is a characteristic of PVSS,
Figure pat00007
In the case of
Figure pat00008
So it means that the partial key P(i) is multiplied by the public key,
Figure pat00009
In the case of , it is a value multiplied by a point H on the elliptic curve and is used together with the final value C in the verification process.

위의 [수학식 4]를 만족한다면, 감시/검증 실행부(124)는 분산 키 보관 서버(200i)로부터 부분 키(112i)를 받지 않고 공개된 값인 분산 키 보관 서버의 공개키 Xi, 확정 값 C, 두 상수 값 w와 c 그리고 증명 값 r을 이용하여 해당 분산 키 보관 서버가 유효한 값을 가지고 있음을 수학적으로 검증할 수 있다. 이러한 검증 과정은 아래와 같은 [수학식 5] 및 [수학식 6]으로 증명할 수 있다.If the above [Equation 4] is satisfied, the monitoring/verification execution unit 124 does not receive the partial key 112i from the distributed key storage server 200i, and the public key X i of the distributed key storage server, which is a public value, is confirmed Using the value C, two constant values w and c, and the proof value r, it is possible to mathematically verify that the distributed key storage server has a valid value. This verification process can be proved by [Equation 5] and [Equation 6] as follows.

Figure pat00010
Figure pat00010

Figure pat00011
Figure pat00011

위의 [수학식 5]와 [수학식 6]을 모두 만족시킨다면, 감시/검증 실행부(124)는 분산 키 보관 서버(200i)로부터 받은 증명 값 r을 통해 해당 서버가 유효한 부분 키를 소유하는지 증명할 수 있다.If both [Equation 5] and [Equation 6] are satisfied, the monitoring/verification execution unit 124 determines whether the server owns a valid partial key through the proof value r received from the distributed key storage server 200i. can prove

[수학식 5]는 아래와 같은 [수학식 7] 내지 [수학식 10]의 수학적 계산 과정으로 확인 가능하다.[Equation 5] can be confirmed by the mathematical calculation process of [Equation 7] to [Equation 10] as follows.

Figure pat00012
Figure pat00012

이때, [수학식 7]에서 P(i)를 모르더라도

Figure pat00013
는 다음의 [수학식 8]과 같이 구할 수 있다.At this time, even if you do not know P(i) in [Equation 7]
Figure pat00013
can be obtained as in the following [Equation 8].

Figure pat00014
Figure pat00014

위의 [수학식 8]에서

Figure pat00015
은 확정 값 C에 포함되어 있으므로,
Figure pat00016
를 계산해낼 수 있다. 이때
Figure pat00017
와 r값에 문제가 없다면 아래와 같은 [수학식 9]가 성립한다.In [Equation 8] above
Figure pat00015
is contained in the definite value C, so
Figure pat00016
can be calculated. At this time
Figure pat00017
If there is no problem with the and r values, the following [Equation 9] holds.

Figure pat00018
Figure pat00018

또한, 위의 [수학식 5]의 확인 과정과 유사하게 [수학식 6]도 아래의 [수힉식 10]을 통해 확인 가능하다.In addition, similar to the confirmation process of [Equation 5] above, [Equation 6] can also be confirmed through [Equation 10] below.

Figure pat00019
Figure pat00019

위의 [수학식 10]에서

Figure pat00020
는 부분 키를 분산 키 보관 서버(200i)의 공개 키로 곱한 데이터로서, 최초 사용자 프로그램에서 부분 키 전달 시에 포함된 확정 값 C에서 추출하거나 검증과정에서 증명 값 r과 함께 분산 키 보관 서버에 요청할 수 있다. 이때
Figure pat00021
와 r값에 문제가 없다면 아래와 같은 [수학식 11]이 성립한다.In [Equation 10] above
Figure pat00020
is data obtained by multiplying a partial key by the public key of the distributed key storage server 200i there is. At this time
Figure pat00021
If there is no problem with and r values, the following [Equation 11] is established.

Figure pat00022
Figure pat00022

위에서 살핀 바와 같이, [수학식 5]와 [수학식 6] 모두를 만족한다면, 감시/감증 실행부는 분산 키 보관 서버는 유효한 부분키를 소유하고 있다고 판단할 수 있다.As discussed above, if both [Equation 5] and [Equation 6] are satisfied, the monitoring/decreasing execution unit may determine that the distributed key storage server possesses a valid partial key.

이와 같이, 본 실시예에 따르면 보관 서비스 프로그램(210i)을 통해 해당 서버가 특정 암호 키에 대한 유효한 부분 키를 소유하고 있는지 확인할 수 있으며, 이는 최초 암호 키에 대한 확정 값 C와 공개키 Xi를 알고 있는 감시/검증 실행부(124)를 통해 실행될 수 있다.As such, according to the present embodiment, it is possible to check whether the server owns a valid partial key for a specific encryption key through the storage service program 210i, which includes the confirmed value C for the initial encryption key and the public key X i It may be executed through a known monitoring/verification execution unit 124 .

이때, 암호키 특성상 공개키 Xi는 누구에게 든 공개되어 있고, 암호 키에 대한 확정 값 C로는 암호 키를 추측할 수 없으므로, 감시/검증 기능을 중요한 정보의 공유 없이 외부 주체에게 위임할 수 있음을 의미하고 이는 공개적으로 검증 가능함을 뜻한다.At this time, since the public key X i is open to anyone due to the nature of the encryption key, and the encryption key cannot be guessed from the final value C for the encryption key, the monitoring/verification function can be delegated to an external entity without sharing important information. means that it is publicly verifiable.

도 4는 도 1의 시스템에 채용할 수 있는 블록체인 지갑 키 보관 방법에 대한 흐름도이다.4 is a flowchart of a method for storing a block chain wallet key that can be employed in the system of FIG. 1 .

도 4를 참조하면, 본 실시예에 따른 블록체인 지갑 키 보관 방법은, 사용자 프로그램 상의 블록체인 지갑 키 보관 방법으로서, 일련의 단계들(S401 내지 S405)의 과정을 반복적으로 진행하여 전체 부분 키 중 유효한 부분 키가 몇 개가 되는지, 즉 몇 개의 분산 키 보관 서버가 정상적으로 부분 키 정보를 유지하고 있는지 모니터링할 수 있다.Referring to Figure 4, the block chain wallet key storage method according to the present embodiment is a block chain wallet key storage method on the user program. It is possible to monitor the number of valid partial keys, that is, how many distributed key storage servers normally maintain partial key information.

그리고, 감시/검증 실행부에서 어떤 분산 키 보관 서버에서 정상적으로 부분 키를 유지하지 못한다고 판단할 때는(S405), P(x) 상에서의 한 점 (i,P(i))으로 i 번째 부분 키를 생성하는 단계(S402)로 되돌아가서 해당 부분 키를 확정 값과 함께 해당 혹은 새로운 분산 키 보관 서버의 공개키로 암호화하여 해당 혹은 새로운 분산 키 보관 서버로 전달하고, 그 후에 검증과정을 진행하는 일련의 과정을 통해 비정상적 행위가 감지된 분산 키 보관 서버에게 유효한 부분 키를 다시 저장하게 하거나, 새로운 분산 키 보관 서버에 유효한 부분 키를 저장하거나, 또는 부분 키 전체를 새로 생성하여 모든 분산 키 보관 서버(200a~200n)에 재전달 할 수 있다.And, when the monitoring/verification execution unit determines that a certain distributed key storage server does not normally maintain the partial key (S405), the i-th partial key is set as a point (i, P(i)) on P(x). Returning to the generating step (S402), the partial key is encrypted with the confirmed value with the public key of the corresponding or new distributed key storage server, and delivered to the corresponding or new distributed key storage server, after which the verification process is performed. to have the distributed key storage server that detects abnormal behavior store the valid partial key again through the 200n) can be retransmitted.

이와 같이, 본 발명에 따르면 암호 키로부터 부분 키 생성(S401), 분배(S402~S403), 검증(S404) 및 재분배(S405)과정을 거쳐 분산 키 보관 시스템에 대한 모니터링 및 안정성을 확보할 수 있다.As described above, according to the present invention, it is possible to secure monitoring and stability of the distributed key storage system through the processes of partial key generation (S401), distribution (S402 to S403), verification (S404) and redistribution (S405) from the encryption key. .

도 5는 본 발명의 다른 실시예에 따른 블록체인 지갑 키 보관 방법에 대한 흐름도이다. 도 6은 도 5의 방법의 검증 과정에 대한 상세 흐름도이다.5 is a flowchart of a method for storing a blockchain wallet key according to another embodiment of the present invention. 6 is a detailed flowchart of a verification process of the method of FIG. 5 .

도 5를 참조하면, 본 실시예에 따른 블록체인 지갑 키 보관 방법은, 사용자 단말의 사용자 프로그램에서 수행되는 일련의 과정으로서, 먼저 장치 설정값(t)에 따라 다항식의 최고 차항을 결정한 후 분산 키 보관 서버들에 보관하고자 하는 암호 키로부터 부분 키를 생성한다(S501). 그리고, 생성한 부분 키들을 분산 키 보관 서버들에 분배한다(S502).Referring to Figure 5, the block chain wallet key storage method according to the present embodiment is a series of processes performed in the user program of the user terminal, and first determines the highest difference of the polynomial according to the device setting value (t) and then the distribution key A partial key is generated from the encryption key to be stored in the storage servers (S501). Then, the generated partial keys are distributed to distributed key storage servers (S502).

다음, 이후에 수행할 검증 과정의 모든 대상 서버에 대하여 검증이 완료되었는지를 판단할 수 있다(S503).Next, it may be determined whether verification has been completed for all target servers of a verification process to be performed later (S503).

모든 대상 서버의 검증이 완료되지 않았으면(S503의 아니오), 사용자 프로그램의 감시/검증 실행부는 특정 분산 키 보관 서버에 유효한 부분 키가 저장되어 있는지를 검증한다(S504). 해당 서버에 유효한 부분 키가 저장되어 있으면(S505의 예), 다시 상기의 판단 단계(S503)로 되돌아가 나머지 다른 서버들에 대한 검증 과정을 순차적으로 반복 진행한다.If the verification of all target servers is not completed (No in S503), the monitoring/verification execution unit of the user program verifies whether a valid partial key is stored in a specific distributed key storage server (S504). If a valid partial key is stored in the corresponding server (YES in S505), the process returns to the above determination step (S503) and the verification process for other servers is sequentially repeated.

그리고 상기의 단계(S504)의 검증 결과, 해당 서버에 유효한 부분 키가 저장되어 있지 않으면(S505의 아니오), 부분 키의 재분배 과정을 수행할 수 있다 (S506). 그런 다음, 상기의 판단 단계(S503)로 되돌아가 나머지 다른 서버들에 대한 검증 과정을 순차적으로 반복 진행한다.And, as a result of the verification in step S504, if a valid partial key is not stored in the corresponding server (No in S505), a redistribution process of the partial key may be performed (S506). Then, it returns to the determination step ( S503 ) and sequentially repeats the verification process for the other servers.

한편, 모든 대상 서버에 대하여 검증 과정을 완료한 것으로 판단되면(S503의 예), 모든 검증 대상 서버들에 대한 1회 검증 완료한 것으로 현재의 프로세스를 종료할 수 있다.On the other hand, if it is determined that the verification process for all target servers has been completed (Yes in S503), the current process may be terminated as the verification process for all the verification target servers has been completed once.

물론, 본 실시예에 따른 검증 과정은 분산 저장한 암호키의 일부 부분 키를 각각 보관하고 있는 모든 검증 대상 서버에 대하여 일정 회수 반복하도록 설정되거나 일정 시간 주기적으로 혹은 간헐적으로 반복 수행되도록 구현될 수 있다.Of course, the verification process according to the present embodiment may be set to repeat a predetermined number of times for all verification target servers each storing a partial key of the distributed encryption key, or may be implemented to be repeated periodically or intermittently for a predetermined time. .

한편, 전술한 검증 과정(S504)을 분산 키 보관 서버의 측면에서 바라보면 도 6에 도시한 바와 같다.On the other hand, when the above-described verification process (S504) is viewed from the side of the distributed key storage server, as shown in FIG. 6 .

먼저, 분산 키 보관 서버는 사용자 단말로부터 검증 요청을 수신한다(S541).First, the distributed key storage server receives a verification request from the user terminal (S541).

다음, 검증 요청에 응하여 무작위로 제1 상수 값을 생성하고, 제1 상수 값을 사용자 단말에 전달한다(S542). 제1 상수 값은 서버의 저장부나 데이터베이스에 저장된다.Next, a first constant value is randomly generated in response to the verification request, and the first constant value is transmitted to the user terminal (S542). The first constant value is stored in a storage unit of the server or a database.

다음, 사용자 단말에서 무작위로 생성된 제2 상수 값을 사용자 단말로부터 부분 키의 검증 확인 요청값으로 수신한다(S543).Next, a second constant value randomly generated in the user terminal is received from the user terminal as a verification confirmation request value of the partial key (S543).

다음, 제1 상수 값, 제2 상수 값과 기저장된 부분 키 값을 이용하여 생성한 증명 값을 사용자 단말로 전달한다(S544).Next, the proof value generated using the first constant value, the second constant value, and the pre-stored partial key value is transmitted to the user terminal (S544).

전술한 과정들(S541 내지 S544)에 의하면, 네트워크를 통해 분산 키 보관 서버에 연결되는 사용자 단말은 제1 상수 값, 제2 상수 값 및 증명 값을 이용하여 분산 키 보관 서버가 유효한 부분 키를 정확하게 저장하고 있는지 여부를 검증할 수 있고, 다수의 분산 키 보관 서버들은 사용자 단말의 사용자 프로그램과 연동하여 그것의 암호 키 혹은 블록체인 지갑 키 보관 방법을 지원할 수 있다.According to the above processes (S541 to S544), the user terminal connected to the distributed key storage server through the network uses the first constant value, the second constant value, and the proof value to accurately determine the valid partial key of the distributed key storage server. It can be verified whether or not it is stored, and a number of distributed key storage servers can support the storage method of its encryption key or blockchain wallet key by interworking with the user program of the user terminal.

한편, 본 실시예에 따른 블록체인 지갑 키 보관 방법은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수 있다.On the other hand, the block chain wallet key storage method according to the present embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the computer readable medium may be specially designed and configured for the present invention, or may be known and available to those skilled in the art of computer software.

컴퓨터 판독 가능 매체의 예에는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Examples of computer-readable media include hardware devices specially configured to store and carry out program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as at least one software module to perform the operations of the present invention, and vice versa.

이상과 같이 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described with reference to the embodiments as described above, it will be understood by those skilled in the art that various modifications and changes can be made to the present invention without departing from the spirit and scope of the present invention as set forth in the following claims. will be able

100: 사용자 프로그램
110: 사용자 키
112a ~ 112n: 사용자 부분 키
122: 사용자 키 분산 및 복원 실행 부
124: 부분 키 감시 및 검증 실행 부
130: 사용자
200a ~ 200n: 분산 키 보관 서버
210a ~ 210n: 키 보관 서비스 프로그램
212a ~ 212n: 데이터베이스
S301 ~ S304: 사용자 부분 키 보관 검증 과정
S401 ~ S404: 사용자 프로그램 진행 과정
100: user program
110: user key
112a to 112n: user part key
122: User key distribution and restoration execution unit
124: Partial key monitoring and validation execution unit
130: user
200a to 200n: Distributed Key Archive Server
210a to 210n: key storage service program
212a to 212n: database
S301 ~ S304: User partial key storage verification process
S401 ~ S404: User program progress

Claims (19)

사용자 단말에 탑재된 사용자 프로그램에 의해 수행되는 공개 검증 가능한 블록체인 지갑 키 보관 방법으로서,
사용자 프로그램에 탑재된 키 분산/복원 실행부에 의해 사용자 암호키를 분할하여 확정 값과 함께 부분 키를 생성하는 단계;
상기 부분 키를 상기 확정 값과 함께 분산 키 보관 서버의 공개키로 암호화하는 단계; 및
상기 공개키로 암호화된 부분 키를 상기 분산 키 보관 서버로 전달하는 단계;를 포함하는 블록체인 지갑 키 보관 방법.
A publicly verifiable blockchain wallet key storage method performed by a user program mounted on a user terminal, comprising:
dividing the user encryption key by a key distribution/restoration execution unit mounted in the user program to generate a partial key together with a finalized value;
encrypting the partial key together with the confirmed value with a public key of a distributed key storage server; and
and transmitting the partial key encrypted with the public key to the distributed key storage server.
청구항 1에 있어서,
상기 생성하는 단계는 상기 부분 키의 생성 시 복원 임계값을 t로 하고, 암호키를 K로 대입하여 t-1차 다항식을 구성하고, 상기 t-1차 다항식에 기반하여 추후 검증을 위한 확정 값을 생성하는, 블록체인 지갑 키 보관 방법.
The method according to claim 1,
In the generating step, when the partial key is generated, the restoration threshold is set to t, the encryption key is substituted for K to form a t-1st polynomial, and a confirmed value for later verification based on the t-1st polynomial. A blockchain wallet key storage method that generates
청구항 2에 있어서,
상기 확정 값(C)은 아래의 [수학식 2]로 표현되고,
[수학식 2]
Figure pat00023

상기 [수학식 2]에서 상기 P(i)는 t-1차 다항식을, 상기 K는 암호키를, 상기 H는 타원곡선 암호화에서 H를 기준점으로 사용하는 큰 소수(prime number) 또는 타원 곡선(elliptic curve)의 한 점을, HK는 K를 타원곡선 상에서 H 값을 기준으로 곱 연산한 것을 각각 나타내는, 블록체인 지갑 키 보관 방법.
3. The method according to claim 2,
The confirmed value (C) is expressed by [Equation 2] below,
[Equation 2]
Figure pat00023

In Equation 2, P(i) is a t-1st polynomial, K is an encryption key, and H is a large prime number or elliptic curve using H as a reference point in elliptic curve encryption ( A block chain wallet key storage method that represents each point of the elliptic curve) and H K is calculated by multiplying K by the value of H on the elliptic curve.
청구항 2에 있어서,
상기 생성하는 단계는, 상기 확정 값을 생성한 후 상기 t-1차 다항식 상에서의 한 점 (i, P(i))으로 i번째 부분 키를 생성하는, 블록체인 지갑 키 보관 방법.
3. The method according to claim 2,
The generating step includes generating the i-th partial key with a point (i, P(i)) on the t-1st polynomial after generating the confirmed value.
청구항 1에 있어서,
상기 전달하는 단계 후에,
상기 분산 키 보관 서버가 유효한 부분 키를 소유하고 있는지 감시하거나 검증하는 단계를 더 포함하는, 블록체인 지갑 키 보관 방법.
The method according to claim 1,
After the step of delivering,
The method of storing a blockchain wallet key, further comprising the step of monitoring or verifying whether the distributed key storage server owns a valid partial key.
청구항 5에 있어서,
상기 검증하는 단계는,
상기 분산 키 보관 서버의 보관 서비스 프로그램으로 검증 요청을 전송하는 단계;
상기 분산 키 보관 서버로부터 무작위로 생성한 제1 상수 값을 받는 단계;
상기 부분 키의 검증 확인 요청값으로 무작위로 생성한 제2 상수 값을 상기 보관 서비스 프로그램에 전달하는 단계;
상기 분산 키 보관 서버로부터 상기 제1 상수 값, 상기 제2 상수 값 및 기저장된 부분 키 값을 이용하여 생성한 증명 값을 받는 단계; 및
상기 제1 상수 값, 상기 제2 상수 값 및 상기 증명 값을 이용하여 상기 분산 키 보관 서버가 유효한 부분 키를 저장하고 있는지 여부를 검증하는 단계;
를 포함하는 블록체인 지갑 키 보관 방법.
6. The method of claim 5,
The verification step is
transmitting a verification request to a storage service program of the distributed key storage server;
receiving a first constant value randomly generated from the distributed key storage server;
transmitting a second constant value randomly generated as a verification confirmation request value of the partial key to the storage service program;
receiving a proof value generated using the first constant value, the second constant value, and a pre-stored partial key value from the distributed key storage server; and
verifying whether the distributed key storage server stores a valid partial key using the first constant value, the second constant value, and the proof value;
A blockchain wallet key storage method, including
청구항 6에 있어서,
상기 증명 값은 아래의 [수학식 4]로부터 도출되고,
[수학식 3]
Figure pat00024

상기 [수학식 3]에서 r는 증명 값을, w는 제1 상수 값을, c는 제2 상수 값을, P(i)는 t-1차 다항식을 각각 나타내는, 블록체인 지갑 키 보관 방법.
7. The method of claim 6,
The proof value is derived from [Equation 4] below,
[Equation 3]
Figure pat00024

In [Equation 3], r represents a proof value, w represents a first constant value, c represents a second constant value, and P(i) represents a t-1st polynomial.
청구항 6에 있어서,
상기 여부를 검증하는 단계는, 동형이산로그(discrete logarithm equality) 수학식인 하기의 [수학식 4]로부터 도출되는 값을 검증 과정에서 확정 값과 함께 이용하며,
[수학식 4]
Figure pat00025

상기 [수학식 4]에서
Figure pat00026
Figure pat00027
에서 부분 키 P(i)를 공개키로 곱한 것을 의미하고,
Figure pat00028
는 타원 곡선 위의 한 점(H)로 곱한 값인, 블록체인 지갑 키 보관 방법.
7. The method of claim 6,
The step of verifying whether the above is, uses a value derived from the following [Equation 4], which is a discrete logarithm equality equation, together with a confirmed value in the verification process,
[Equation 4]
Figure pat00025

In the above [Equation 4]
Figure pat00026
Is
Figure pat00027
means that the partial key P(i) is multiplied by the public key,
Figure pat00028
is the value multiplied by a point (H) on the elliptic curve, the blockchain wallet key storage method.
청구항 8에 있어서,
상기 여부를 검증하는 단계는, 상기 수학식 5를 만족하는 경우, 상기 분산 키 보관 서버로부터 부분 키를 받지 않고 상기 분산 키 분산 서버에 유효한 부분 키가 저장되어 있음을 수학적으로 검증하는 단계를 포함하는, 블록체인 지갑 키 보관 방법.
9. The method of claim 8,
The verifying includes mathematically verifying that a valid partial key is stored in the distributed key distribution server without receiving the partial key from the distributed key storage server when Equation 5 is satisfied , a blockchain wallet key storage method.
청구항 9에 있어서,
상기 수학적으로 검증하는 단계는 하기의 [수학식 5] 및 [수학식 6]를 이용하여 검증하며,
[수학식 5]
Figure pat00029

[수학식 6]
Figure pat00030

상기 [수학식 5] 및 [수학식 6]에서 Xi는 공개된 값인 분산 키 보관 서버의 공개키를, c는 확정 값을, w는 제1 상수 값을, c는 제2 상수 값을, r은 증명 값을 각각 나타내는, 블록체인 지갑 키 보관 방법.
10. The method of claim 9,
The mathematical verification step is verified using the following [Equation 5] and [Equation 6],
[Equation 5]
Figure pat00029

[Equation 6]
Figure pat00030

In [Equation 5] and [Equation 6], Xi is the public key of the distributed key storage server that is a public value, c is a confirmed value, w is a first constant value, c is a second constant value, r A method of storing a key in a blockchain wallet, each representing a proof value.
사용자 프로그램을 포함하는 공개 검증 가능한 블록체인 지갑 키 보관 장치로서,
사용자 프로그램에 탑재되는 키 분산/복원 실행부와 감시/검증 실행부를 포함하고,
상기 감시/검증 실행부는 사용자 암호키를 분할하여 확정 값과 함께 부분 키를 생성하고, 상기 부분 키를 상기 확정 값과 함께 분산 키 보관 서버의 공개키로 암호화하고, 상기 공개키로 암호화된 부분 키를 상기 분산 키 보관 서버로 전달하는, 블록체인 지갑 키 보관 장치.
A publicly verifiable blockchain wallet key storage device comprising a user program, comprising:
It includes a key distribution/restoration execution unit and a monitoring/verification execution unit mounted on the user program,
The monitoring/verification execution unit divides the user encryption key to generate a partial key with a fixed value, encrypts the partial key with the public key of the distributed key storage server with the determined value, and uses the encrypted partial key with the public key. A blockchain wallet key storage device that forwards to a distributed key storage server.
청구항 11에 있어서,
상기 감시/검증 실행부는 상기 확정 값을 생성한 후 t-1차 다항식 상에서의 한 점 (i, P(i))으로 i번째 부분 키를 생성하며, 여기서 t는 다항식의 최고차항을 결정하는 장치 설정값인, 블록체인 지갑 키 보관 장치.
12. The method of claim 11,
The monitoring/verification execution unit generates the i-th partial key as a point (i, P(i)) on the t-1st polynomial after generating the definite value, where t is a device for determining the highest order term of the polynomial A set value, a blockchain wallet key storage device.
청구항 11에 있어서,
상기 감시/검증 실행부는 상기 부분 키를 받아 저장하는 분산 키 보관 서버가 유효한 부분 키를 소유하고 있는지를 감지하거나 검증하는, 블록체인 지갑 키 보관 장치.
12. The method of claim 11,
The monitoring/verification execution unit detects or verifies whether a distributed key storage server that receives and stores the partial key possesses a valid partial key, a block chain wallet key storage device.
청구항 13에 있어서,
상기 감시/검증 실행부는 상기 유효한 부분 키의 검증을 위해 상기 분산 키 보관 서버의 보관 서비스 프로그램으로 검증 요청을 전송하고, 상기 분산 키 보관 서버로부터 무작위로 생성한 제1 상수 값을 받고, 상기 부분 키의 검증 확인 요청값으로 무작위로 생성한 제2 상수 값을 상기 보관 서비스 프로그램에 전달하고, 상기 분산 키 보관 서버로부터 상기 제1 상수 값, 상기 제2 상수 값 및 기저장된 부분 키 값을 이용하여 생성한 증명 값을 받고, 상기 제1 상수 값, 상기 제2 상수 값 및 상기 증명 값을 이용하여 상기 분산 키 보관 서버가 유효한 부분 키를 저장하고 있는지를 검증하는, 블록체인 지갑 키 보관 장치.
14. The method of claim 13,
The monitoring/verification execution unit transmits a verification request to the storage service program of the distributed key storage server to verify the valid partial key, receives a first constant value randomly generated from the distributed key storage server, and receives the partial key A second constant value randomly generated as a verification confirmation request value of A block chain wallet key storage device that receives a proof value and verifies whether the distributed key storage server stores a valid partial key using the first constant value, the second constant value, and the proof value.
청구항 14에 있어서,
상기 감시/검증 실행부는 상기 유효한 부분 키의 검증 과정에서 상기 유효한 부분 키의 검증 과정에서 동형이산로그(discrete logarithm equality) 수학식으로부터 도출되는 값을 상기 확정 값과 함께 이용하는, 블록체인 지갑 키 보관 장치.
15. The method of claim 14,
The monitoring/verification execution unit uses a value derived from a discrete logarithm equality equation in the verification process of the valid partial key in the verification process of the valid partial key together with the confirmed value, a block chain wallet key storage device .
청구항 15에 있어서,
상기 감시/검증 실행부는 상기 검증 과정에서 상기 동형이산로그 수학식을 만족하는 경우, 상기 분산 키 보관 서버로부터 부분 키를 받지 않고 상기 분산 키 분산 서버에 유효한 부분 키가 저장되어 있음을 수학적으로 검증하는, 블록체인 지갑 키 보관 장치.
16. The method of claim 15,
The monitoring/verification execution unit mathematically verifies that a valid partial key is stored in the distributed key distribution server without receiving the partial key from the distributed key storage server when the homogeneous discrete log equation is satisfied in the verification process , blockchain wallet key storage device.
청구항 16에 있어서,
상기 수학적으로 검증하는 것은 하기의 [수학식 5] 및 [수학식 6]를 이용하여 검증하며,
[수학식 5]
Figure pat00031

[수학식 6]
Figure pat00032

상기 [수학식 5] 및 [수학식 6]에서 Xi는 공개된 값인 분산 키 보관 서버의 공개키를, c는 확정 값을, w는 제1 상수 값을, c는 제2 상수 값을, r은 증명 값을 각각 나타내는, 블록체인 지갑 키 보관 장치.
17. The method of claim 16,
The mathematical verification is verified using the following [Equation 5] and [Equation 6],
[Equation 5]
Figure pat00031

[Equation 6]
Figure pat00032

In [Equation 5] and [Equation 6], Xi is the public key of the distributed key storage server that is a public value, c is a confirmed value, w is a first constant value, c is a second constant value, r A blockchain wallet key storage device, each representing a proof value.
청구항 15에 있어서,
상기 감시/검증 실행부는 상기 검증 과정을 통해 유효한 부분 키를 저장하고 있지 않은 재분배 대상 서버의 정보를 저장하는, 블록체인 지갑 키 보관 장치.
16. The method of claim 15,
The monitoring/verification execution unit stores the information of the redistribution target server that does not store a valid partial key through the verification process, a block chain wallet key storage device.
청구항 18에 있어서,
상기 감시/검증 실행부는 상기 복원 임계값 이하의 서버 개수에 대하여 유효한 부분 키의 저장 여부에 대한 검증이 각각 완료되면, 유효한 부분 키를 저장하고 있지 않은 분산 키 보관 서버의 정보에 기초하여 분산 키를 재분배하는, 블록체인 지갑 키 보관 장치.
19. The method of claim 18,
The monitoring/verification execution unit generates a distributed key based on information on a distributed key storage server that does not store a valid partial key when verification of whether or not valid partial keys are stored for the number of servers below the restoration threshold is completed. A redistributive, blockchain wallet key storage device.
KR1020200149623A 2020-11-10 2020-11-10 Publicly verifiable blockchain wallet key custody method and apparatus thereof KR102426078B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200149623A KR102426078B1 (en) 2020-11-10 2020-11-10 Publicly verifiable blockchain wallet key custody method and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200149623A KR102426078B1 (en) 2020-11-10 2020-11-10 Publicly verifiable blockchain wallet key custody method and apparatus thereof

Publications (2)

Publication Number Publication Date
KR20220063591A true KR20220063591A (en) 2022-05-17
KR102426078B1 KR102426078B1 (en) 2022-07-27

Family

ID=81803577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200149623A KR102426078B1 (en) 2020-11-10 2020-11-10 Publicly verifiable blockchain wallet key custody method and apparatus thereof

Country Status (1)

Country Link
KR (1) KR102426078B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101796690B1 (en) * 2016-06-28 2017-11-10 상명대학교 천안산학협력단 Firmware integrity verification system based on block chain and the method thereof
KR20180115701A (en) * 2016-02-23 2018-10-23 엔체인 홀딩스 리미티드 Secure manifold loss prevention of cryptographic keys for block-chain-based systems associated with wallet management systems Storage and transmission
KR20200028961A (en) * 2017-07-24 2020-03-17 엔체인 홀딩스 리미티드 Blockchain-implementation event-method and system for lock encryption

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180115701A (en) * 2016-02-23 2018-10-23 엔체인 홀딩스 리미티드 Secure manifold loss prevention of cryptographic keys for block-chain-based systems associated with wallet management systems Storage and transmission
KR101796690B1 (en) * 2016-06-28 2017-11-10 상명대학교 천안산학협력단 Firmware integrity verification system based on block chain and the method thereof
KR20200028961A (en) * 2017-07-24 2020-03-17 엔체인 홀딩스 리미티드 Blockchain-implementation event-method and system for lock encryption

Also Published As

Publication number Publication date
KR102426078B1 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
Maram et al. CHURP: dynamic-committee proactive secret sharing
CN109194466B (en) Block chain-based cloud data integrity detection method and system
CN108768978B (en) SGX-based remote storage service method and system
US9634831B2 (en) Role-based distributed key management
Kumar et al. An efficient and secure protocol for ensuring data storage security in cloud computing
US10528751B2 (en) Secure and efficient cloud storage with retrievability guarantees
CN111066285A (en) Method for recovering public key based on SM2 signature
US11050745B2 (en) Information processing apparatus, authentication method, and recording medium for recording computer program
WO2015173434A1 (en) Method for proving retrievability of information
US11930110B2 (en) System and method for key recovery and verification in blockchain based networks
US20210105136A1 (en) Method for securing a data exchange in a distributed infrastructure
US10447475B1 (en) System and method for managing backup of cryptographic keys
Harchol et al. Distributed SSH key management with proactive RSA threshold signatures
EP3232603B1 (en) Key-exchange method, key-exchange system, terminal device, and program
JP2018093363A (en) Verification system, verification method, and verification program
CN114629713A (en) Identity verification method, device and system
CN106257859A (en) A kind of password using method
KR102426078B1 (en) Publicly verifiable blockchain wallet key custody method and apparatus thereof
El Balmany et al. Secure virtual machine image storage process into a trusted zone-based cloud storage
KR102282788B1 (en) Blockchain system for supporting change of plain text data included in transaction
Li et al. Secure regenerating code
Kumar et al. An efficient distributed verification protocol for data storage security in cloud computing
JP2021525993A (en) Security Governance for Digital Request Processing
IIPS et al. Reliable and enhanced third party auditing in cloud server data storage
Maram et al. Dynamic-Committee Proactive Secret Sharing

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right