KR102520066B1 - The private key management and recovery system that storing distributed the key backup data - Google Patents
The private key management and recovery system that storing distributed the key backup data Download PDFInfo
- Publication number
- KR102520066B1 KR102520066B1 KR1020210023712A KR20210023712A KR102520066B1 KR 102520066 B1 KR102520066 B1 KR 102520066B1 KR 1020210023712 A KR1020210023712 A KR 1020210023712A KR 20210023712 A KR20210023712 A KR 20210023712A KR 102520066 B1 KR102520066 B1 KR 102520066B1
- Authority
- KR
- South Korea
- Prior art keywords
- code
- key
- private key
- client device
- generating
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
키 백업 정보가 분산 저장된 개인키 관리 및 복구 시스템이 제공된다. 상기 개인키 관리 및 복구 시스템은, 서버 장치, 클라이언트 장치, 및 제1 내지 제3 데이터베이스 장치를 포함하는 개인키 관리 및 복구 시스템으로서, 마스터키 생성에 필요한 랜덤한 제1 코드(S1)를 생성하고, 상기 제1 코드(S1)를 상기 클라이언트 장치 및 상기 제1 데이터베이스 장치로 전달하는 서버 장치, 니모닉 코드 단어(mnemonic code words) 생성에 필요한 랜덤한 제2 코드(S2)를 생성하고, 자식키 생성에 필요한 패스(path)를 설정하기 위한 랜덤한 제3 코드(S3)를 생성하고, 상기 제2 코드(S2) 및 상기 제3 코드(S3)를 상기 서버 장치로 전달하는 클라이언트 장치, 상기 서버 장치로부터 상기 제1 코드(S1)를 전달받아 저장하는 제1 데이터베이스 장치, 상기 서버 장치로부터 상기 제2 코드(S2)를 전달받아 저장하는 제2 데이터베이스 장치, 및 상기 서버 장치로부터 상기 제3 코드(S3)를 전달받아 저장하는 제3 데이터베이스 장치를 포함하고, 상기 제1 내지 제3 데이터베이스 장치는 별개의 서로 다른 저장 공간을 갖는 장치이고, 상기 클라이언트 장치는 상기 제2 코드(S2)를 이용하여 상기 니모닉 코드 단어를 생성하고, 상기 생성한 니모닉 코드 단어와 상기 제1 코드(S1)를 이용하여 마스터 시드(master seed)를 생성하고, 상기 마스터 시드를 이용하여 상기 마스터키를 생성하고, 상기 마스터키를 이용하여 HD 월렛을 생성하고, 상기 마스터키로부터 자식키를 생성하기 위한 인덱스(index)를 설정하고, 상기 자식키 생성을 위한 패스(path)를 설정하고, 상기 설정한 패스에 따라 상기 자식키를 생성한다.A private key management and recovery system in which key backup information is distributed and stored is provided. The private key management and recovery system is a private key management and recovery system including a server device, a client device, and first to third database devices, and generates a random first code (S1) necessary for generating a master key, , A server device that transmits the first code (S1) to the client device and the first database device, generates a random second code (S2) necessary for generating mnemonic code words, and generates a child key. A client device for generating a random third code (S3) for setting a path required for the server device and transmitting the second code (S2) and the third code (S3) to the server device, the server device A first database device for receiving and storing the first code (S1) from, a second database device for receiving and storing the second code (S2) from the server device, and the third code (S3) from the server device ) and a third database device for receiving and storing, wherein the first to third database devices are devices having separate and different storage spaces, and the client device uses the second code (S2) to obtain the mnemonic A code word is generated, a master seed is generated using the generated mnemonic code word and the first code (S1), the master key is generated using the master seed, and the master key is To create an HD wallet, set an index for generating a child key from the master key, set a path for generating the child key, and generate the child key according to the set path. generate
Description
본 발명은 키 백업 정보가 분산 저장된 개인키 관리 및 복구 시스템에 관한 것이다. 더욱 상세하게는, 탈중앙화된 개인키 복구 서비스를 통해 보안성을 강화하고, 사용자측에서 생성한 데이터를 이용하여 개인키 복구를 수행함으로써 보안성을 더욱 강화할 수 있는 키 백업 정보가 분산 저장된 개인키 관리 및 복구 시스템에 관한 것이다. The present invention relates to a private key management and recovery system in which key backup information is distributed and stored. More specifically, security is enhanced through a decentralized private key recovery service, and private key management with distributed and stored key backup information that can further strengthen security by performing private key recovery using user-generated data. and a recovery system.
블록체인(blockchain)은 네트워크에 참여하는 모든 사용자가 관리 대상이 되는 모든 데이터를 분산하여 저장하는 데이터 분산처리기술을 의미한다. 거래 정보가 담긴 원장(原帳)을 거래 주체나 특정 기관에서 보유하는 것이 아니라 네트워크 참여자 모두가 나누어 가지는 기술이라는 점에서 '분산원장기술(DLT:Distributed Ledger Technology)' 또는 '공공거래장부'라고도 한다. 블록체인은 거래 내용이 담긴 블록(block)을 사슬처럼 연결(chain)한 것이라 하여 붙여진 명칭이다. 이러한 블록체인은 거래 내용의 위변조와 같은 해킹을 막기 위한 기술이며, 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다. Blockchain refers to a data distribution processing technology that distributes and stores all data to be managed by all users participating in the network. It is also called 'Distributed Ledger Technology (DLT)' or 'Public Transaction Ledger' in that the ledger containing transaction information is shared by all network participants, rather than held by transaction entities or specific institutions. . Blockchain is the name given because it is a chain of blocks that contain transactions. This blockchain is a technology to prevent hacking such as forgery and falsification of transaction details, and uses a method to prevent data forgery by sending transaction details to all users participating in transactions and comparing them for each transaction.
블록체인은 금융기관에서 모든 거래를 담보하고 관리하는 기존의 금융 시스템에서 벗어나 P2P(Peer to Peer;개인 대 개인) 거래를 지향하는, 탈(脫)중앙화를 핵심 개념으로 한다. P2P란 서버나 클라이언트 없이 개인 컴퓨터 사이를 연결하는 통신망을 말하며, 연결된 각각의 컴퓨터가 서버이자 클라이언트 역할을 하며 정보를 공유하는 방식이다. 다수의 노드가 같은 데이터를 공유하고 검증하는 방식을 통해 디지털 상에 신뢰관계를 형성하게 된다. 이러한 환경은 중개자 없이 P2P로 편리하게 계약을 체결하고 수정할 수 있는 스마트 컨트랙트를 실현 가능하게 한다.The core concept of blockchain is decentralization, which aims for P2P (Peer to Peer; person-to-person) transactions, breaking away from the existing financial system in which financial institutions secure and manage all transactions. P2P refers to a communication network that connects personal computers without a server or client, and each connected computer acts as both a server and a client to share information. A trust relationship is formed digitally through a method in which multiple nodes share and verify the same data. This environment makes it possible to realize smart contracts that can conveniently conclude and modify contracts P2P without intermediaries.
기존 금융 시스템에서는 금융회사들이 중앙 서버에 거래 기록을 보관해 온 반면, P2P 방식을 기반으로 하는 블록체인에서는 거래 정보를 블록에 담아 차례대로 연결하고 이를 모든 참여자가 공유한다.In the existing financial system, financial companies have kept transaction records in the central server, but in the blockchain based on the P2P method, transaction information is stored in blocks and connected in turn, and all participants share it.
그리고, 블록체인 상의 모든 거래 정보가 블록에 기록되기 위해서는 유효한 서명이 있어야 하고, 이러한 서명은 유효한 디지털 키에 의해 수행된다. 디지털 키는 개인키(private key)와 공개키(public key) 쌍으로 구성되는데, 공개키는 은행의 계좌번호 역할을 하고, 개인키는 계좌의 비밀번호 역할을 한다. 따라서, 개인키 관리는 중요한 문제이며, 개인키의 분실 시 문제가 발생할 가능성이 있기 때문에 높은 주의를 요구한다. 그러나, 개인키를 분실하는 경우 복구가 상당히 어렵거나 불가능하여 해당 디지털 자산에 대한 권리를 상실하게 된다. 이에 따라, 본 발명에서는 분실한 개인키를 복구하고 다시 생성하기 위한 방법을 제안한다. And, in order for all transaction information on the blockchain to be recorded in a block, there must be a valid signature, and this signature is performed by a valid digital key. A digital key consists of a pair of private key and public key. The public key serves as a bank account number, and the private key serves as a password for the account. Therefore, private key management is an important issue, and high attention is required because there is a possibility that a problem may occur when the private key is lost. However, if the private key is lost, it is very difficult or impossible to recover, resulting in the loss of the right to the corresponding digital asset. Accordingly, the present invention proposes a method for recovering and regenerating a lost private key.
본 발명이 해결하고자 하는 기술적 과제는, 블록체인 네트워크 내에서 거래 정보 기록을 위해 이용하는 디지털 키인 개인키를 분실하는 경우를 대비하여, 사용자측에서 생성한 데이터와 서버측에서 생성한 데이터를 이용하여 마스터 시드를 생성하고, 상기 마스터 시드와 사용자측에서 생성한 패스(path) 설정용 코드를 이용하여 자식키 생성을 통한 개인키 복구를 수행함으로써 개인키 복구의 보안성을 강화한 개인키 관리 및 복구 시스템을 제공하는 것이다. The technical problem to be solved by the present invention is to prepare for the case of losing the private key, which is a digital key used for recording transaction information in a blockchain network, by using data generated on the user side and data generated on the server side to master seed Provides a private key management and recovery system that enhances the security of private key recovery by generating and performing private key recovery through child key generation using the master seed and the code for setting the path generated by the user will be.
본 발명이 해결하고자 하는 다른 기술적 과제는, 개인키 복구를 위한 백업 데이터를 각각 다른 데이터베이스에 저장한 후 개인키 복구 시에 백업 데이터를 이용하여 미리 설정된 패스(path)를 따라 자식키를 생성함으로써, 하나의 데이터베이스가 해킹 또는 백업 정보가 유출되어도 키 복구가 불가능하도록 하여 보안성을 강화한 개인키 관리 및 복구 시스템을 제공하는 것이다. Another technical problem to be solved by the present invention is to store backup data for private key recovery in different databases, and then generate a child key along a preset path using the backup data during private key recovery, It is to provide a private key management and recovery system with enhanced security by preventing key recovery even if one database is hacked or backup information is leaked.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 개인키 관리 및 복구에 있어서 HD 지갑을 이용하므로, 특정 키 쌍의 인덱스 정보가 유출되어도 다른 인덱스의 키 쌍은 유추가 불가능하므로 보안성을 강화할 수 있는 개인키 관리 및 복구 시스템을 제공하는 것이다. Another technical problem to be solved by the present invention is to use an HD wallet for private key management and recovery, so even if the index information of a specific key pair is leaked, it is impossible to infer the key pair of another index, so security can be strengthened It is to provide a private key management and recovery system.
다만, 본 발명이 해결하고자 하는 기술적 과제들은 상기 과제들로 한정되는 것이 아니며, 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있다. However, the technical problems to be solved by the present invention are not limited to the above problems, and can be variously expanded without departing from the technical spirit and scope of the present invention.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 개인키 관리 및 복구 시스템은, 서버 장치, 클라이언트 장치, 및 제1 내지 제3 데이터베이스 장치를 포함하는 개인키 관리 및 복구 시스템으로서, 마스터키 생성에 필요한 랜덤한 제1 코드(S1)를 생성하고, 상기 제1 코드(S1)를 상기 클라이언트 장치 및 상기 제1 데이터베이스 장치로 전달하는 서버 장치, 니모닉 코드 단어(mnemonic code words) 생성에 필요한 랜덤한 제2 코드(S2)를 생성하고, 자식키 생성에 필요한 패스(path)를 설정하기 위한 랜덤한 제3 코드(S3)를 생성하고, 상기 제2 코드(S2) 및 상기 제3 코드(S3)를 상기 서버 장치로 전달하는 클라이언트 장치, 상기 서버 장치로부터 상기 제1 코드(S1)를 전달받아 저장하는 제1 데이터베이스 장치, 상기 서버 장치로부터 상기 제2 코드(S2)를 전달받아 저장하는 제2 데이터베이스 장치, 및 상기 서버 장치로부터 상기 제3 코드(S3)를 전달받아 저장하는 제3 데이터베이스 장치를 포함하고, 상기 제1 내지 제3 데이터베이스 장치는 별개의 서로 다른 저장 공간을 갖는 장치이고, 상기 클라이언트 장치는 상기 제2 코드(S2)를 이용하여 상기 니모닉 코드 단어를 생성하고, 상기 생성한 니모닉 코드 단어와 상기 제1 코드(S1)를 이용하여 마스터 시드(master seed)를 생성하고, 상기 마스터 시드를 이용하여 상기 마스터키를 생성하고, 상기 마스터키를 이용하여 HD 월렛을 생성하고, 상기 마스터키로부터 자식키를 생성하기 위한 인덱스(index)를 설정하고, 상기 자식키 생성을 위한 패스(path)를 설정하고, 상기 설정한 패스에 따라 상기 자식키를 생성한다. A private key management and recovery system according to an embodiment of the present invention for solving the above problems is a private key management and recovery system including a server device, a client device, and first to third database devices, and generates a master key. A server device that generates a random first code (S1) necessary for the server device and transmits the first code (S1) to the client device and the first database device, A second code (S2) is generated, a random third code (S3) is generated for setting a path necessary for generating a child key, and the second code (S2) and the third code (S3) are generated. A client device for transmitting to the server device, a first database device for receiving and storing the first code (S1) from the server device, and a second database for receiving and storing the second code (S2) from the server device device, and a third database device for receiving and storing the third code S3 from the server device, wherein the first to third database devices are devices having separate and different storage spaces, and the client device generates the mnemonic code word using the second code (S2), generates a master seed using the generated mnemonic code word and the first code (S1), and generates the master seed The master key is generated using the master key, an HD wallet is generated using the master key, an index for generating a child key is set from the master key, and a path for generating the child key is set. set, and the child key is generated according to the set path.
본 발명에 따른 몇몇 실시예에서, 상기 클라이언트 장치가 자식키를 생성하기 위한 상기 인덱스 값은 0 ~ 231-1의 4byte의 숫자값을 가질 수 있다. In some embodiments according to the present invention, the index value for generating a child key by the client device may have a 4-byte numeric value of 0 to 2 31 -1.
본 발명에 따른 몇몇 실시예에서, 상기 클라이언트 장치가 자식키를 생성하기 위해 설정하는 상기 패스는, 128bit의 상기 제3 코드(S3)를 32bit의 4개의 부호화 정수(signed integer)로 분할하여 설정될 수 있다. In some embodiments according to the present invention, the path set by the client device to generate a child key is set by dividing the third code (S3) of 128 bits into four signed integers of 32 bits. can
본 발명에 따른 몇몇 실시예에서, 상기 클라이언트 장치는 상기 서버 장치에서 본인 인증을 수행한 후 상기 제1 내지 제3 데이터베이스 장치에 접속하여 상기 제1 내지 제3 코드(S1, S2, S3)를 전달받고, 상기 클라이언트 장치는 상기 제1 코드(S1) 및 상기 제2 코드(S2)를 이용하여 마스터키를 생성하고, 상기 마스터키와 상기 제3 코드(S3)를 이용하여 원하는 인덱스로 자식키를 생성하여 복구할 수 있다. In some embodiments according to the present invention, the client device performs identity authentication in the server device, and then accesses the first to third database devices and transfers the first to third codes (S1, S2, S3). receive, the client device generates a master key using the first code (S1) and the second code (S2), and generates a child key with a desired index using the master key and the third code (S3). can be created and restored.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Other specific details of the invention are included in the detailed description and drawings.
본 발명에 따르면, 블록체인 네트워크 내에서 거래 정보 기록을 위해 이용하는 개인키를 분실하더라도 복구가 가능하며, 개인키 분실에 따른 유/무형 자산에 대한 권리를 상실하게 될 염려를 줄일 수 있다. According to the present invention, even if a private key used for recording transaction information in a blockchain network is lost, it is possible to recover it, and it is possible to reduce the fear of losing the right to tangible/intangible assets due to the loss of the private key.
또한, 본 발명에 따르면, 사용자측에서 생성한 데이터와 서버측에서 생성한 데이터를 이용하여 자식키 생성을 통한 개인키 복구를 수행함으로써 보안성이 강화된 탈중앙화 개인키 복구 시스템을 구현할 수 있다. In addition, according to the present invention, a decentralized private key recovery system with enhanced security can be implemented by performing private key recovery through child key generation using data generated on the user side and data generated on the server side.
또한, 본 발명에 따르면, 개인키 복구를 위한 백업 데이터를 각각 다른 데이터베이스에 저장하므로, 어느 하나의 데이터베이스가 해킹되거나 키 백업 정보가 유출되더라도 키 복구가 불가능하도록 하여 보안성을 강화할 수 있다. In addition, according to the present invention, since backup data for private key recovery is stored in different databases, security can be strengthened by preventing key recovery even if one database is hacked or key backup information is leaked.
또한, 본 발명에 따르면, 개인키 관리 및 복구에 있어서 HD 지갑을 이용하므로 특정 키 쌍의 인덱스 정보가 유출되어도 다른 인덱스의 키 쌍은 유추가 불가능하여 보안성을 강화할 수 있다. In addition, according to the present invention, since the HD wallet is used for private key management and recovery, even if the index information of a specific key pair is leaked, it is impossible to infer the key pair of another index, so security can be strengthened.
다만, 본 발명의 효과는 상기 효과들로 한정되는 것이 아니며, 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있다. However, the effects of the present invention are not limited to the above effects, and can be variously extended without departing from the technical spirit and scope of the present invention.
도 1은 BIP39에 따른 니모닉 코드 생성 및 마스터 시드 생성과정을 설명하기 위한 도면이다.
도 2는 BIP44에 따른 지갑 생성시 입력값에 대한 프로토콜을 설명하기 위한 도면이다.
도 3은 본 발명에 따른 기술적 사상이 적용될 수 있는 블록체인을 이용한 분산처리 시스템을 도시한 도면이다.
도 4 및 도 5는 블록체인 시스템에서 이용되는 블록의 연결을 도시한 블록도이다.
도 6은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템을 도시한 블록도이다.
도 7은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템에서 자식키를 생성 및 백업하는 동작을 나타낸 블록도이다.
도 8은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템에서 자식키를 복구하는 동작을 나타낸 블록도이다.
도 9는 본 발명의 실시예에 따른 노드의 컴퓨팅 장치의 구성도이다.1 is a diagram for explaining a mnemonic code generation and master seed generation process according to BIP39.
2 is a diagram for explaining a protocol for an input value when creating a wallet according to BIP44.
3 is a diagram showing a distributed processing system using a block chain to which the technical idea according to the present invention can be applied.
4 and 5 are block diagrams showing the connection of blocks used in the blockchain system.
6 is a block diagram illustrating a private key management and recovery system according to an embodiment of the present invention.
7 is a block diagram illustrating an operation of generating and backing up a child key in the private key management and recovery system according to an embodiment of the present invention.
8 is a block diagram illustrating an operation of recovering a child key in a private key management and recovery system according to an embodiment of the present invention.
9 is a block diagram of a computing device of a node according to an embodiment of the present invention.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. Advantages and features of the present invention, and methods of achieving them, will become clear with reference to the detailed description of the following embodiments taken in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below and will be implemented in various forms different from each other, only these embodiments make the disclosure of the present invention complete, and common knowledge in the art to which the present invention pertains. It is provided to completely inform the person who has the scope of the invention, and the present invention is only defined by the scope of the claims.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.Terms used in this specification are for describing the embodiments and are not intended to limit the present invention. In this specification, singular forms also include plural forms unless specifically stated otherwise in a phrase. As used herein, "comprises" and/or "comprising" means that a stated component, step, operation, and/or element is present in the presence of one or more other components, steps, operations, and/or elements. or do not rule out additions.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms (including technical and scientific terms) used in this specification may be used in a meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in commonly used dictionaries are not interpreted ideally or excessively unless explicitly specifically defined.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예들을 보다 상세하게 설명하고자 한다. 도면 상의 동일한 구성요소에 대해서는 동일한 참조 부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention will be described in more detail. The same reference numerals are used for the same components in the drawings, and redundant descriptions of the same components are omitted.
BIP는 "Bitcoin Improvement Proposals"의 약자로서, 비트코인 기능개선을 위한 제안을 담은 문서이다. 비트코인이 공식적인 구조를 가지고 있지 않기 때문에 BIP는 아이디어를 전달하는 표준방식이다. 즉, BIP는 비트코인의 기술을 논의하기 위해 작성하거나 공개된 제안 양식이다. BIP stands for “Bitcoin Improvement Proposals,” and is a document containing proposals to improve Bitcoin functionality. Since Bitcoin has no formal structure, BIP is a standard way of conveying ideas. In other words, a BIP is a proposal form written or published to discuss the technology of Bitcoin.
BIP의 유형과 관련해서는 ① 표준 트랙 BIP로서, 비트코인 네트워크 프로토콜, 블록 또는 트랜잭션 유효성 검사에 적합한 BIP이다. 이러한 유형의 BIP는 비트코인의 기본 기술의 핵심이다. ② 정보 BIP는 주로 디자인 및 일반 지침과 같은 문제를 중심으로 한다. 즉, 솔루션 확장, 블록 변경 또는 해싱 프로토콜 변경과 같은 사안에 대한 제안이다. ③ 프로세스 BIP는 비트코인 프로세스에 대한 제안 변경이다. 프로세스 BIP는 표준 트랙 BIP와 유사하나, 프로세스 BIP는 비트코인 프로토콜 외부에서만 적용된다는 차이점이 있다. Regarding the type of BIP, ① It is a standard track BIP, which is suitable for Bitcoin network protocol, block or transaction validation. This type of BIP is at the heart of Bitcoin's underlying technology. ② Information BIP mainly focuses on issues such as design and general guidelines. That is, proposals for issues such as solution extensions, block changes, or hashing protocol changes. ③ Process BIP is a proposed change to the Bitcoin process. Process BIPs are similar to standards track BIPs, with the difference that process BIPs only apply outside of the Bitcoin protocol.
BIP의 종류와 관련하여, BIP32는 정보 BIP로서, HD 지갑(Hierarchical Deterministic Wallet)의 일반적인 형식과 HD 지갑을 구축하는 방법을 설명한 문서이다. HD 지갑을 이용한 다중 계정 구조(공개키, 개인키 쌍)를 만들기 위해서는 ⅰ) 니모닉 코드 단어(Mnemonic code words), ⅱ) 패스(path)의 2가지가 필요하다. Regarding the type of BIP, BIP32 is an information BIP, a document that describes the general format of HD wallets (Hierarchical Deterministic Wallets) and how to build HD wallets. In order to create a multi-account structure (public key, private key pair) using HD wallet, two things are needed: i) mnemonic code words and ii) path.
또한, BIP39는 표준 트랙 BIP로서, 니모닉 코드(Mnemonic Code)를 만들어서 HD 지갑을 쉽게 복구하는 방법을 설명한 문서이다. In addition, BIP39 is a standard track BIP, which explains how to easily recover an HD wallet by creating a mnemonic code.
또한, BIP44는 표준 트랙 BIP로서, 미리 정의된 다섯 가지 트리 레벨의 구조로 다중화폐 및 다중계정 구조를 제안하는 문서이다. 본 발명은 상술한 BIP들을 활용하여 개인키 관리 및 복구 서비스를 제공하는 KMS(Key Management Service) 시스템을 제안한다.Also, BIP44 is a standard track BIP, a document that proposes a multi-currency and multi-account structure with a structure of five predefined tree levels. The present invention proposes a Key Management Service (KMS) system that provides private key management and recovery services by utilizing the above BIPs.
도 1은 BIP39에 따른 니모닉 코드 생성 및 마스터 시드 생성과정을 설명하기 위한 도면이다. 도 2는 BIP44에 따른 지갑 생성시 입력값에 대한 프로토콜을 설명하기 위한 도면이다. 1 is a diagram for explaining a mnemonic code generation and master seed generation process according to BIP39. 2 is a diagram for explaining a protocol for an input value when creating a wallet according to BIP44.
도 1 및 도 2를 참조하여, 상기 BIP들에 대해 구체적으로 설명하면, (1) BIP39는 니모닉 코드를 생성하고, 마스터 시드를 생성한다. Referring to FIGS. 1 and 2, the BIPs are described in detail. (1) BIP39 generates a mnemonic code and a master seed.
① 니모닉 코드의 생성과정은, 랜덤하게 0과 1로 이루어진 192비트 시퀀스를 생성한다. 생성된 시퀀스를 SHA-256 해쉬함수를 통해 해쉬값을 생성한다. 생성된 해쉬값의 앞에서부터 6비트를 이전에 생성한 시퀀스 뒤에 이어 붙인다. 총 198비트의 시퀀스가 생성되고 이 시퀀스를 앞에서부터 11비트씩 나눈다. 각각 나눈 시퀀스들을 미리 정의된 워드리스트 테이블에 매핑시켜 18개의 단어를 생성한다.① In the mnemonic code generation process, a 192-bit sequence consisting of 0 and 1 is randomly generated. The generated sequence generates a hash value through the SHA-256 hash function. 6 bits from the front of the generated hash value are concatenated after the previously generated sequence. A sequence of 198 bits in total is generated, and this sequence is divided by 11 bits from the front. Each divided sequence is mapped to a predefined word list table to generate 18 words.
이때, 상기 테이블은 00000000000 ~ 11111111111의 비트를 인덱스로 하여 각각 다른 단어들로 맵핑 되어있다. 예를 들어, 4비트의 시퀀스에서 앞에서 2비트씩 나누었을 경우 시퀀스가 0010이라면 매핑 테이블은 < 00 - abandon, 01 - ability, 10 - army, 11 - zoo >이고, 결과값은 abandon, army가 된다(도 1 참조). In this case, the table is mapped to different words by indexing bits from 00000000000 to 11111111111. For example, in a 4-bit sequence, if the sequence is 0010 when the previous 2 bits are divided, the mapping table is <00 - abandon, 01 - ability, 10 - army, 11 - zoo>, and the result is abandon, army. (See Fig. 1).
② 마스터 시드의 생성 과정은, 앞에서 생성된 니모닉 코드와 솔트(Salt)로 HMAC-SHA512 해쉬함수를 2048번 실행하여 512비트의 마스터 시드를 생성한다. 여기에서 솔트의 값은 mnemonic + (암호문)으로 사용한다. ② In the master seed generation process, a 512-bit master seed is generated by executing the HMAC-
(2) BIP32는 지갑 생성 과정을 나타낸다. 지갑 생성 과정은 우선, CKD(Child Key Derivation) 함수를 재귀적으로 5번 사용하여 지갑 주소를 생성한다. CKD 함수는 두 개의 입력값을 받으며, 첫 번째 입력값은 부모키 값이고, 두 번째 입력값은 0과 231-1사이의 임의의 수이다. (2) BIP32 represents the wallet creation process. In the wallet creation process, first, the CKD (Child Key Derivation) function is recursively used 5 times to create a wallet address. The CKD function receives two input values, the first input value is the parent key value, and the second input value is a random number between 0 and 2 31 -1.
CKD 함수는 결과값으로 자식키를 생성한다. CKD(m,3) = b, CKD(b,5) = c 일 때 CKD(CKD(m,3),5)라고 쓸 수 있고 이것을 간편하게 m/3/5 라고 쓴다. 재귀적이란 이전 CKD의 결과값을 다음 CKD 함수의 첫 번째 입력값으로 삽입하는 것이다. 더욱 구체적으로, 5번 중 첫 번째 수행에서 입력값으로 마스터 시드를 입력하고 결과값으로 마스터 개인키가 생성된다. 마스터 개인키를 통해 마스터 공개키를 생성한다. 이후 함수에는 두 키 쌍을 각각 CKD 함수의 입력값으로 넣어 자식 개인키와 자식 공개키 쌍을 생성한다.The CKD function creates a child key as a result. When CKD(m,3) = b and CKD(b,5) = c, it can be written as CKD(CKD(m,3),5), which is conveniently written as m/3/5. Recursion means inserting the result of the previous CKD as the first input of the next CKD function. More specifically, in the first of five runs, a master seed is input as an input value and a master private key is generated as a result value. The master public key is generated through the master private key. Afterwards, the two key pairs are input to the CKD function, respectively, to generate a child private key and child public key pair.
(3) BIP44는 지갑 생성시 입력값에 대한 프로토콜이다. 상기 BIP32에서 지갑 주소를 생성할 때 입력값을 정의해 놓은 것이다. BIP44의 구조는 m / 목적 / 코인 종류 / 계정 / 잔액 주소 여부 / 사용 가능한 주소 인덱스이며, m은 시드값이고, 목적은 BIP44에 의해 44로 고정한다. 코인 종류는 암호화폐의 유형을 지정하며, SLIP0044라는 표준 문서에 여러 암호화폐가 정의되어 있다. 본 발명은 이더리움 기반으로 60으로 사용한다. 계정에는 일반적으로 계정을 식별할 수 있는 값이 들어간다. 본 발명은 이 항목에 사용자 노드의 PIN CODE를 사용한다. 잔액 주소 여부는 비트코인을 제외한 모든 블록체인은 일반적으로 0을 사용한다. 주소 인덱스는 0 과 231-1사이의 임의의 수로 i번째 지갑 주소를 의미한다.(3) BIP44 is a protocol for input values when creating a wallet. This is the input value defined when creating a wallet address in BIP32. The structure of BIP44 is m / purpose / coin type / account / balance address / usable address index, m is the seed value, and the purpose is fixed at 44 by BIP44. The coin type specifies the type of cryptocurrency, and several cryptocurrencies are defined in a standard document called SLIP0044. The present invention uses 60 based on Ethereum. An account usually contains a value that identifies the account. The present invention uses the PIN CODE of the user node for this item. As for the balance address, all blockchains except Bitcoin generally use 0. The address index is a random number between 0 and 2 31 -1 and means the i-th wallet address.
블록체인 기술에 있어서 유저의 개인키 관리 이슈는 대단히 중요하다. 하지만, 탈중앙성을 해치지 않으면서 유저의 개인키를 복구하는 것은 매우 어렵다. 따라서, 본 발명은 탈중앙화와 중앙화 사이의 효율적인 절충안을 택하여 개인키 복구 서비스를 제공한다.In blockchain technology, the issue of user's private key management is very important. However, it is very difficult to recover a user's private key without compromising decentralization. Therefore, the present invention provides a private key recovery service by taking an efficient compromise between decentralization and centralization.
먼저, 기존의 개인키 복구 서비스의 경우 유저의 개인키를 특정 키로 암호화하여 서버에 저장하여 복구해주는 프로세스를 이용한다. 이때, 개인키를 암호화하는 특정 키는 어떻게 관리되는 것인지, 서비스 제공업체에서 이 키를 어떻게 불러와서 사용하는지에 따라 해당 키를 중앙 통제 가능한지 불가능한지가 결정된다. 아마도 대부분의 개인키 복구 서비스는 중앙화 되어있다고 표현할 수 있다. First, in the case of an existing private key recovery service, a process of encrypting a user's private key with a specific key, storing it in a server, and restoring it is used. At this time, depending on how the specific key encrypting the private key is managed and how the service provider retrieves and uses this key, whether or not the key can be centrally controlled is determined. Perhaps most private key recovery services can be described as being centralized.
탈중앙화된 개인키 복구 서비스는 중앙화된 서버 없이 개인키 복구에 필요한 모든 데이터를 유저가 기입해야하는 서비스를 의미한다. 일반적으로 탈중앙화된 개인키 복구 서비스를 제공하기 위해서는 니모닉 코드를 사용한다. 이 경우 유저는 반드시 12 ~ 24개의 나열된 단어 리스트를 기억해야만 한다. 만약 단어 리스트를 잊어버린다면 개인키는 절대 복구할 수 없다. 따라서 복잡한 글자로 구성된 개인키를 대신하여 상대적으로 기억하기 쉬운 니모닉 코드를 사용한다고 해도 단어 리스트를 온전히 기억하기는 쉽지 않다. 따라서, 몇몇의 유저는 보다 더 간편하게 단말기의 종속성없이 언제 어디서나 쉽게 개인키 복구가 가능한 시스템을 요구하게 된다. Decentralized private key recovery service means a service in which users must enter all data necessary for private key recovery without a centralized server. In general, mnemonic codes are used to provide decentralized private key recovery services. In this case, the user must remember a list of 12 to 24 listed words. If you forget the word list, the private key can never be recovered. Therefore, even if a relatively easy-to-remember mnemonic code is used instead of a private key composed of complicated letters, it is not easy to remember the word list completely. Accordingly, some users require a system that can easily recover a private key anytime, anywhere without depending on a terminal more conveniently.
이하에서는 우선, 본 발명의 개념이 적용될 수 있는 블록체인을 이용한 분산처리 시스템에 관해 설명하기로 한다. Hereinafter, first, a distributed processing system using a block chain to which the concept of the present invention can be applied will be described.
도 3은 본 발명에 따른 기술적 사상이 적용될 수 있는 블록체인을 이용한 분산처리 시스템을 도시한 도면이다.3 is a diagram showing a distributed processing system using a block chain to which the technical idea according to the present invention can be applied.
도 3을 참조하면 블록체인을 이용한 분산처리 시스템(100)은 복수의 노드들(110-170)로 이루어진 분산형 네트워크(distributed network) 시스템이다. 상기 분산형 네트워크(100)를 구성하는 노드들(110-170)은 컴퓨터, 이동 단말기, 전용 전자 장치 등 연산 능력이 있는 전자 장치일 수 있다.Referring to FIG. 3, a distributed
일반적으로 분산형 네트워크(100)는 블록체인이라 불리는 블록(block)의 연결 묶음 내에 모든 참여 노드에 공통으로 알려진 정보를 저장하고 참조할 수 있다. 상기 노드들(110-170)은 상호간 통신이 가능하며 블록체인을 저장, 관리 및 전파를 담당하는 완전 노드(full node)와 단순하게 트랜잭션에만 참여할 수 있는 간이 노드(light node)로 구분될 수 있다. 본 명세서에서 별다른 설명 없이 노드에 대하여 언급되는 경우, 이는 분산형 네트워크에 참여하며 블록체인을 생성, 저장 또는 검증하는 동작을 수행하는 완전 노드를 지칭하는 경우가 많으나, 이에 한정되는 것은 아니다. In general, the distributed
상기 블록체인에 연결되어 있는 각 블록들은 일정 기간 내의 거래 내역, 즉 트랜잭션(transaction)들을 포함한다. 상기 노드들은 각각 역할에 따라 블록체인을 생성, 저장 또는 검증함으로써 트랜잭션들을 관리할 수 있다.Each block connected to the block chain includes transaction details, that is, transactions, within a certain period of time. The nodes can manage transactions by creating, storing, or verifying a blockchain according to their respective roles.
실시 형태에 따라 상기 트랜잭션은 다양한 형태의 거래를 나타낼 수 있다. 일 실시예에서 상기 트랜잭션은 암호화폐의 소유 상태 및 그 변동을 나타내기 위한 금융 거래에 해당할 수 있다. 다른 실시예에서 상기 트랜잭션은 물건의 소유 상태 및 그 변동을 나타내기 위한 실물 거래에 해당할 수 있다. 또 다른 실시예에서 상기 트랜잭션은 정보의 기록, 저장 및 이송을 나타내기 위한 정보 공유 과정에 해당할 수 있다. 상기 분산형 네트워크(100)에서 거래를 수행하는 노드들은 각각의 암호학적 연관관계가 있는 개인키(private key) 및 공개키(public key) 쌍을 가질 수 있다.Depending on the embodiment, the transaction may represent various types of transactions. In one embodiment, the transaction may correspond to a financial transaction to indicate the ownership status of cryptocurrency and its fluctuation. In another embodiment, the transaction may correspond to a real transaction to indicate the state of possession of an object and its change. In another embodiment, the transaction may correspond to an information sharing process to represent the recording, storage and transfer of information. Nodes performing transactions in the distributed
도 4 및 도 5는 블록체인 시스템에서 이용되는 블록의 연결을 도시한 블록도이다.4 and 5 are block diagrams showing the connection of blocks used in the blockchain system.
도 4를 참조하면 블록체인(200)은 순차적으로 연결된 하나 이상의 블록들(210, 220, 230)의 분산 데이터베이스의 일종이다. 상기 블록체인(200)은 블록체인 시스템 내 사용자의 거래 내역을 저장하고 관리하기 위해 사용되며, 상기 블록체인 시스템의 네트워크에 참여하는 각 노드가 블록을 생성하여 상기 블록체인(200)에 연결한다. 도 4에는 제한된 수의 블록들(210, 220, 230)이 도시되어 있으나 블록체인에 포함될 수 있는 블록의 수는 이에 제한되지 아니한다.Referring to FIG. 4, the
상기 블록체인(200)에 포함된 각 블록은 블록 헤더(211)와 블록 바디(213)를 포함하도록 구성될 수 있다. 상기 블록 헤더(211)는 각 블록들간의 연결 관계를 나타내기 위하여 이전 블록(220)의 해시 값을 포함할 수 있다. 상기 블록체인(200)이 유효한지 검증하는 과정에서 상기 블록 헤더(211) 내의 연결 관계가 사용된다. 상기 블록 바디(213)는 상기 블록(210)에 저장되고 관리되는 데이터, 예를 들어 트랜잭션 리스트 또는 트랜잭션 체인을 포함할 수 있다.Each block included in the
도 5를 참조하면, 상기 블록 헤더(211)는 이전 블록의 해시(2112), 현재 블록의 해시(2113), 넌스(Nonce)(2114)를 포함할 수 있다. 또한, 상기 블록 헤더(211)는 블록 내의 트랜잭션 리스트의 헤더를 나타내는 루트(2115)를 포함할 수 있다.Referring to FIG. 5 , the
전술된 바와 같이, 상기 블록체인(200)은 연결된 하나 이상의 블록들을 포함할 수 있다. 상기 하나 이상의 블록들은 상기 블록 헤더(211) 내의 해시 값에 기초하여 연결된다. 상기 블록 헤더(211)에 포함된 이전 블록의 해시 값(2112)은 직전 블록(220)에 대한 해시 값으로서 직전 블록(220)에 포함된 현재 해시(2213)와 동일한 값이다. 상기 하나 이상의 블록들은 각 블록 헤더 내의 이전 블록의 해시 값에 의하여 연쇄적으로 연결된다. 상기 분산형 네트워크에 참여하는 노드들은 상기 하나 이상의 블록들에 포함된 이전 블록의 해시 값에 기반하여 블록의 유효성을 검증하므로 악의적인 단일 노드가 이미 생성된 블록의 내용을 위조 또는 변조하는 행위가 불가능하다.As described above, the
상기 블록 바디(213)는 트랜잭션 리스트(2131)를 포함할 수 있다. 상기 트랜잭션 리스트(2131)는 블록체인 기반의 거래의 목록이다. 예를 들면, 상기 트랜잭션 리스트(2131)는 상기 블록체인 기반의 금융 시스템에서 이루어진 금융 거래에 대한 기록을 포함할 수 있다. 상기 트랜잭션 리스트(2131)는 트리(tree) 형태로 표현될 수 있으며, 예를 들어, 사용자 A가 사용자 B에게 전송한 금액을 목록 형태로 기록하며, 블록 내의 저장 길이는 현재 블록에 포함된 트랜잭션의 수에 기초하여 증감될 수 있다.The
그리고, 블록(210)은 블록 헤더(211)와 블록 바디(213)에 포함된 정보 이외의 기타 정보(2116)를 포함할 수 있다. Also, the
분산형 네트워크에 참여하는 노드들은 동일한 블록체인을 가지며, 블록에는 동일한 트랜잭션이 저장된다. 트랜잭션 목록이 포함된 블록이 네트워크에 공유되므로 모든 참여자가 검증할 수 있다.Nodes participating in the decentralized network have the same block chain, and the same transaction is stored in the block. A block containing a list of transactions is shared on the network so that all participants can verify it.
이하에서는, 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템에 대하여 설명하기로 한다. 본 발명에서 설명하는 개인키 관리 및 복구 방법은 컴퓨팅 장치에서 실행되는 알고리즘이다.Hereinafter, a private key management and recovery system according to an embodiment of the present invention will be described. The private key management and recovery method described in the present invention is an algorithm executed in a computing device.
도 6은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템을 도시한 블록도이다. 도 7은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템에서 자식키를 생성 및 백업하는 동작을 나타낸 블록도이다. 6 is a block diagram illustrating a private key management and recovery system according to an embodiment of the present invention. 7 is a block diagram illustrating an operation of generating and backing up a child key in the private key management and recovery system according to an embodiment of the present invention.
도 6 및 도 7을 참조하면, 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템(300)은 서버 장치(310), 클라이언트 장치(320), 제1 내지 제3 데이터베이스 장치(330, 340, 350)를 포함하여 구성된다. 6 and 7, the private key management and
서버 장치(310)는 우선, 마스터키 생성에 필요한 128bit의 랜덤한 S1 코드를 생성하며, 이를 클라이언트 장치(320)로 전달한다. 그리고, 서버 장치(310)는 상기 S1 코드를 제1 데이터베이스 장치(330)에 전달하여 저장한다. 제1 내지 제3 데이터베이스 장치(330, 340, 350)는 키 백업 시스템에 포함되는 장치로서 키 복원을 위해 정보를 저장할 수 있는 장치이다. 또한, 제1 내지 제3 데이터베이스 장치(330, 340, 350)는 별개의 서로 다른 저장 공간으로서 물리적으로 분리된 서로 다른 장치일 수 있고, 각각 서로 다른 데이터를 저장한다. The
클라이언트 장치(320)는 니모닉 코드 단어(mnemonic code words)를 생성하기 위해 필요한 256bit의 랜덤한 S2 코드를 생성하며, 이를 서버 장치(310)를 통해 제2 데이터베이스 장치(340)로 전달하여 상기 S2 코드를 제2 데이터베이스 장치(340)에 저장한다. The
그리고, 클라이언트 장치(320)는 자식키 생성에 필요한 패스(path)를 설정하기 위한 값으로서 128bit의 랜덤한 S3 코드를 생성하며, 이를 서버 장치(310)를 통해 제3 데이터베이스 장치(350)로 전달하여 상기 S3 코드를 제3 데이터베이스 장치(350)에 저장한다. Then, the
클라이언트 장치(320)는 상기 S2 코드를 이용하여 니모닉 코드 단어를 생성하고, 상기 생성한 니모닉 코드 단어와 상기 S1 코드를 이용하여 512bit의 마스터 시드(master seed)를 생성한다. The
클라이언트 장치(320)는 상기 마스터 시드를 이용하여 마스터키 생성 후, 상기 마스터키를 이용하여 HD 월렛을 생성한다. 즉, 클라이언트 장치(320)는 상기 마스터 시드를 이용하여 마스터 개인키, 마스터 공개키를 생성한다. After generating a master key using the master seed, the
클라이언트 장치(320)는 상기 마스터키로부터 자식키를 생성하기 위해 인덱스(index)를 설정한다. 클라이언트 장치(320)가 자식키 생성을 위해 이용하는 인덱스는 4byte(0 ~ 231-1)의 숫자값을 갖는다. The
그리고, 클라이언트 장치(320)는 자식키 생성을 위한 패스(path)를 설정하는데, 상기 패스(path)는 마스터키에서 자식키를 유도하기 위한 경로를 의미한다. 상기 패스(path)는 128bit(16byte)의 S3 코드를 32bit의 4개의 부호화 정수(signed integer)로 분할하여 다음과 같이 설정한다. Then, the
S3 = s1 - s2 - s3 - s4 S3 = s1 - s2 - s3 - s4
m / companyCode / s1 / s2 / s3 / s4 / indexm/companyCode/s1/s2/s3/s4/index
클라이언트 장치(320)는 상기 설정한 패스(path)에 따라 CKD(Child Key Derivation) 함수를 이용하여 HD 월렛에서 자식키를 생성한다. 클라이언트 장치(320)의 자식키 생성 결과 한 쌍의 개인키 및 공개키 쌍이 생성된다. The
클라이언트 장치(320)는 자신의 S1 코드, S2 코드, S3 코드 값을 서버 장치(310)를 통해 각각 제1 내지 제3 데이터베이스 장치(330, 340, 350)로 전달하여 저장한다. The
도 8은 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템에서 자식키를 복구하는 동작을 나타낸 블록도이다. 8 is a block diagram illustrating an operation of recovering a child key in a private key management and recovery system according to an embodiment of the present invention.
도 8을 참조하면, 본 발명의 실시예에 따른 개인키 관리 및 복구 시스템(300)은 서버 장치(310), 클라이언트 장치(320), 제1 내지 제3 데이터베이스 장치(330, 340, 350)를 포함하여 구성된다. Referring to FIG. 8, the private key management and
본 발명의 실시예에 따른 개인키 관리 및 복구 시스템(300)은 자식키 복구를 위해, 클라이언트 장치(320)에 키 복구용 애플리케이션을 설치한다. 클라이언트 장치(320)는 상기 키 복구용 애플리케이션을 이용하여 서버 장치(310)를 통해 제1 내지 제3 데이터베이스 장치(330, 340, 350)에 접속한다. The private key management and
즉, 클라이언트 장치(320)는 상기 키 복구용 애플리케이션을 이용하여 서버 장치(310)에서 본인 인증을 수행하고, 본인 인증 후 제1 내지 제3 데이터베이스 장치(330, 340, 350)에 접속하여 백업용 데이터(S1 코드, S2 코드, S3 코드)를 각각 요청하고, 이를 전달받는다. That is, the
제1 내지 제3 데이터베이스 장치(330, 340, 350)는 각각 S1 코드, S2 코드, S3 코드를 클라이언트 장치(320)로 전달한다. 그리고, 클라이언트 장치(320)는 상기 S1 코드, 상기 S2 코드를 이용하여 마스터키를 생성한다. 클라이언트 장치(320)는 상기 마스터키와 상기 S3 코드를 이용하여 원하는 인덱스로 자식키를 생성 가능하다. The first to
더 구체적으로, 클라이언트 장치(320)는 상기 S1 코드 및 상기 S2 코드를 이용하여 마스터 시드(master seed)를 생성한다. More specifically, the
클라이언트 장치(320)는 상기 마스터 시드를 이용하여 마스터키 생성 후, 상기 마스터키를 이용하여 HD 월렛을 생성한다. 즉, 클라이언트 장치(320)는 상기 마스터 시드를 이용하여 마스터 개인키, 마스터 공개키를 생성한다. After generating a master key using the master seed, the
클라이언트 장치(320)는 상기 마스터키로부터 자식키를 생성하기 위해 인덱스(index)를 설정한다. 클라이언트 장치(320)가 자식키 생성을 위해 이용하는 인덱스는 4byte(0 ~ 231-1)의 숫자값을 갖는다. The
그리고, 클라이언트 장치(320)는 자식키 생성을 위한 패스(path)를 설정하는데, 상기 패스(path)는 128bit(16Byte)의 S3 코드를 32bit의 4개의 부호화 정수(signed integer)로 분할하여 다음과 같이 설정한다. Then, the
S3 = s1 - s2 - s3 - s4 S3 = s1 - s2 - s3 - s4
m / companyCode / s1 / s2 / s3 / s4 / indexm/companyCode/s1/s2/s3/s4/index
클라이언트 장치(320)는 상기 설정한 패스(path)에 따라 CKD(Child Key Derivation) 함수를 이용하여 HD 월렛에서 자식키를 생성한다. 클라이언트 장치(320)의 자식키 생성 결과 한 쌍의 개인키 및 공개키 쌍이 생성되며, 상기 과정을 통해 자식키가 복구된다. The
도 9를 참조하면, 본 발명의 실시예에 따른 노드의 컴퓨팅 장치(1000)는 프로세서(1100)와 메모리(1200)를 포함하고, 프로세서(1100)는 하나 이상의 코어(core) 및 그래픽 처리부 및/또는 다른 구성요소와 신호를 송수신하는 연결 통로(예를 들어, 버스(bus) 등)를 포함할 수 있다.Referring to FIG. 9 , a
일 실시예에 따른 프로세서(1100)는 메모리(1200)에 저장된 하나 이상의 인스트럭션을 실행함으로써, 도 6 내지 도 8과 관련하여 설명된 개인키 관리 및 복구 알고리즘의 동작을 실행한다. The
예를 들어, 프로세서(1100)는 메모리에 저장된 하나 이상의 인스트럭션을 실행함으로써 하나 이상의 노드에서 발생되는 사용자 식별인증 및 개인키 생성에 관한 정보들을 수집하고, 상기 수집된 정보들에 기초하여 트랜잭션을 발생시켜 적어도 하나의 노드에 대해 관련 정보를 제공한다. For example, the
한편, 프로세서(1100)는 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory) 및 롬(ROM: Read-Only Memory)을 더 포함할 수 있다. 또한, 프로세서(1100)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템온칩(SoC: system on chip) 형태로 구현될 수 있다. Meanwhile, the
메모리(1200)에는 프로세서(1100)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리(1200)에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다.The
본 발명의 실시예와 관련하여 설명된 시스템의 동작들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.Operations of a system described in connection with an embodiment of the present invention may be implemented directly in hardware, implemented in a software module executed by hardware, or a combination thereof. A software module may include random access memory (RAM), read only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, hard disk, removable disk, CD-ROM, or It may reside in any form of computer readable recording medium well known in the art to which the present invention pertains.
본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.Components of the present invention may be implemented as a program (or application) to be executed in combination with a computer, which is hardware, and stored in a medium. Components of the present invention may be implemented as software programming or software elements, and similarly, embodiments may include various algorithms implemented as data structures, processes, routines, or combinations of other programming constructs, such as C, C++ , Java (Java), can be implemented in a programming or scripting language such as assembler (assembler). Functional aspects may be implemented in an algorithm running on one or more processors.
전술된 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해되어야 하며, 본 발명의 범위는 전술된 상세한 설명보다는 후술될 청구범위에 의해 나타내어질 것이다. 그리고 이 청구범위의 의미 및 범위는 물론, 그 등가개념으로부터 도출되는 모든 변경 및 변형 가능한 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.It should be understood that the foregoing embodiments are illustrative in all respects and not restrictive, and the scope of the present invention will be indicated by the claims which will follow rather than by the foregoing detailed description. And it should be construed that the meaning and scope of these claims, as well as all changes and transformable forms derived from their equivalent concepts, are included in the scope of the present invention.
100: 분산형 네트워크
110~170: 노드들
200: 블록체인
210, 220, 230: 블록
300: 개인키 관리 및 복구 시스템
310: 서버 장치
320: 클라이언트 장치
330, 340, 350: 제1 내지 제3 데이터베이스 장치100: decentralized network
110-170: Nodes
200: Blockchain
210, 220, 230: block
300: private key management and recovery system
310: server device
320: client device
330, 340, 350: first to third database devices
Claims (4)
마스터키 생성에 필요한 랜덤한 제1 코드(S1)를 생성하고, 상기 제1 코드(S1)를 상기 클라이언트 장치 및 상기 제1 데이터베이스 장치로 전달하는 서버 장치;
니모닉 코드 단어(mnemonic code words) 생성에 필요한 랜덤한 제2 코드(S2)를 생성하고, 자식키 생성에 필요한 패스(path)를 설정하기 위한 랜덤한 제3 코드(S3)를 생성하고, 상기 제2 코드(S2) 및 상기 제3 코드(S3)를 상기 서버 장치로 전달하는 클라이언트 장치;
상기 서버 장치로부터 상기 제1 코드(S1)를 전달받아 저장하는 제1 데이터베이스 장치;
상기 서버 장치로부터 상기 제2 코드(S2)를 전달받아 저장하는 제2 데이터베이스 장치; 및
상기 서버 장치로부터 상기 제3 코드(S3)를 전달받아 저장하는 제3 데이터베이스 장치;를 포함하고,
상기 제1 내지 제3 데이터베이스 장치는 별개의 서로 다른 저장 공간을 갖는 장치이고,
상기 클라이언트 장치는 상기 제2 코드(S2)를 이용하여 상기 니모닉 코드 단어를 생성하고, 상기 생성한 니모닉 코드 단어와 상기 제1 코드(S1)를 이용하여 마스터 시드(master seed)를 생성하고, 상기 마스터 시드를 이용하여 상기 마스터키를 생성하고, 상기 마스터키를 이용하여 HD 월렛을 생성하고, 상기 마스터키로부터 자식키를 생성하기 위한 인덱스(index)를 설정하고, 상기 자식키 생성을 위한 패스(path)를 설정하고, 상기 설정한 패스에 따라 상기 자식키를 생성하는, 개인키 관리 및 복구 시스템.A private key management and recovery system comprising a server device, a client device, and first to third database devices,
A server device generating a random first code (S1) required for generating a master key and transferring the first code (S1) to the client device and the first database device;
A second random code (S2) necessary for generating mnemonic code words is generated, a random third code (S3) is generated for setting a path necessary for generating a child key, and the second random code (S3) is generated. a client device that transmits the second code (S2) and the third code (S3) to the server device;
a first database device receiving and storing the first code (S1) from the server device;
a second database device receiving and storing the second code (S2) from the server device; and
A third database device for receiving and storing the third code (S3) from the server device; includes,
The first to third database devices are devices having separate and different storage spaces,
The client device generates the mnemonic code word using the second code (S2), generates a master seed using the generated mnemonic code word and the first code (S1), and Generate the master key using the master seed, create an HD wallet using the master key, set an index for generating a child key from the master key, and create a pass for generating the child key ( A private key management and recovery system for setting a path) and generating the child key according to the set path.
상기 클라이언트 장치가 자식키를 생성하기 위한 상기 인덱스 값은 0 ~ 231-1의 4byte의 숫자값을 갖는, 개인키 관리 및 복구 시스템. According to claim 1,
The index value for generating a child key by the client device has a 4-byte numeric value of 0 to 2 31 -1, private key management and recovery system.
상기 클라이언트 장치가 자식키를 생성하기 위해 설정하는 상기 패스는, 128bit의 상기 제3 코드(S3)를 32bit의 4개의 부호화 정수(signed integer)로 분할하여 설정되는, 개인키 관리 및 복구 시스템.According to claim 1,
The path set by the client device to generate a child key is set by dividing the third code (S3) of 128 bits into four signed integers of 32 bits, private key management and recovery system.
상기 클라이언트 장치는 상기 서버 장치에서 본인 인증을 수행한 후 상기 제1 내지 제3 데이터베이스 장치에 접속하여 상기 제1 내지 제3 코드(S1, S2, S3)를 전달받고,
상기 클라이언트 장치는 상기 제1 코드(S1) 및 상기 제2 코드(S2)를 이용하여 마스터키를 생성하고, 상기 마스터키와 상기 제3 코드(S3)를 이용하여 원하는 인덱스로 자식키를 생성하여 복구하는, 개인키 관리 및 복구 시스템.According to claim 1,
The client device performs identity authentication in the server device and then accesses the first to third database devices to receive the first to third codes (S1, S2, S3),
The client device generates a master key using the first code (S1) and the second code (S2), and generates a child key with a desired index using the master key and the third code (S3). Recovery, private key management and recovery system.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210023712A KR102520066B1 (en) | 2021-02-22 | 2021-02-22 | The private key management and recovery system that storing distributed the key backup data |
PCT/KR2022/001442 WO2022177201A1 (en) | 2021-02-22 | 2022-01-27 | Private key management and recovery system having key backup information stored distributedly |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210023712A KR102520066B1 (en) | 2021-02-22 | 2021-02-22 | The private key management and recovery system that storing distributed the key backup data |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220120059A KR20220120059A (en) | 2022-08-30 |
KR102520066B1 true KR102520066B1 (en) | 2023-04-10 |
Family
ID=82930915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210023712A KR102520066B1 (en) | 2021-02-22 | 2021-02-22 | The private key management and recovery system that storing distributed the key backup data |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102520066B1 (en) |
WO (1) | WO2022177201A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240077654A (en) | 2022-11-24 | 2024-06-03 | 서강대학교산학협력단 | Private key recovery system based on authentication of ownership of personal devices and method thereof |
KR20240085445A (en) | 2022-12-08 | 2024-06-17 | 논스랩 주식회사 | Apparatus for recovering a private key and method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019093808A1 (en) | 2017-08-14 | 2019-05-16 | 주식회사 코인즈월렛 | Method, apparatus, and computer-readable recording medium for safe storage of mnemonic of hardware bitcoin wallet |
KR102078566B1 (en) | 2019-03-19 | 2020-02-19 | 크립토 주식회사 | Method and system of preventing loss of a cryptocurrency |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101857223B1 (en) | 2017-11-13 | 2018-05-11 | 주식회사 온더 | Method and system for user identification based block chain token |
US11531985B2 (en) * | 2018-01-17 | 2022-12-20 | Tzero Ip, Llc | Multi-approval system using M of N keys to generate a sweeping transaction at a customer device |
KR20200001178A (en) * | 2018-06-27 | 2020-01-06 | 주식회사 비즈블록스 | Digital wallet operation method for applying Mnemonic code |
-
2021
- 2021-02-22 KR KR1020210023712A patent/KR102520066B1/en active IP Right Grant
-
2022
- 2022-01-27 WO PCT/KR2022/001442 patent/WO2022177201A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019093808A1 (en) | 2017-08-14 | 2019-05-16 | 주식회사 코인즈월렛 | Method, apparatus, and computer-readable recording medium for safe storage of mnemonic of hardware bitcoin wallet |
KR102078566B1 (en) | 2019-03-19 | 2020-02-19 | 크립토 주식회사 | Method and system of preventing loss of a cryptocurrency |
Also Published As
Publication number | Publication date |
---|---|
WO2022177201A1 (en) | 2022-08-25 |
KR20220120059A (en) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI706275B (en) | System and method for information protection | |
EP3812992A1 (en) | Block chain transaction method and apparatus | |
JP7231630B2 (en) | Blockchain-implemented security systems and methods for blinded consequent selection | |
US10700850B2 (en) | System and method for information protection | |
US20200111093A1 (en) | System and method for information protection | |
EP3664005B1 (en) | Credential generation and distribution method and system for a blockchain network | |
AU2018322507B2 (en) | System and method for information protection | |
TW202020711A (en) | System and method for information protection | |
Saini et al. | Security vulnerabilities in Information communication technology: Blockchain to the rescue (A survey on Blockchain Technology) | |
US20200213125A1 (en) | Computer-implemented system and method enabling secure storage of a large blockchain over a plurality of storage nodes | |
CN116670673A (en) | Transferring cryptocurrency from a remote limited access wallet | |
US20210073796A1 (en) | Method of selective authentication of a blockchain user with a smart contract | |
KR102520066B1 (en) | The private key management and recovery system that storing distributed the key backup data | |
EP3857814A1 (en) | Computer-implemented system and method for transferring access to digital resource | |
CN111324881A (en) | Data security sharing system and method fusing Kerberos authentication server and block chain | |
KR102483369B1 (en) | The user data storage and sharing system based on DID | |
CN115147111A (en) | Key generation method and device, electronic device and storage medium | |
KR102354044B1 (en) | The method of recovering private key using mnemonic code | |
KR20220142254A (en) | Multi-signature wallet system in blockchain using the bloom filter | |
KR102494873B1 (en) | Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification | |
WO2022240353A1 (en) | Method and apparatus for secure file storage in blockchains | |
CN112258169A (en) | Parallel signature system and method based on key generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |