KR102446985B1 - Key management mechanism for cryptocurrency wallet - Google Patents
Key management mechanism for cryptocurrency wallet Download PDFInfo
- Publication number
- KR102446985B1 KR102446985B1 KR1020200133635A KR20200133635A KR102446985B1 KR 102446985 B1 KR102446985 B1 KR 102446985B1 KR 1020200133635 A KR1020200133635 A KR 1020200133635A KR 20200133635 A KR20200133635 A KR 20200133635A KR 102446985 B1 KR102446985 B1 KR 102446985B1
- Authority
- KR
- South Korea
- Prior art keywords
- private key
- database
- key
- transaction
- cryptocurrency
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- 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/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0822—Key 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 key encryption key
-
- 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/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
Abstract
본원 발명은 암호화폐 지갑을 위한 키 관리 메커니즘에 관한 것이다. 일실시예에 따른 암호화폐 거래소 서버의 키 관리 방법은 사용자의 암호화폐 지갑에 대응하여 생성된 개인 키를 암호화하여 제1 데이터베이스에 저장하는 단계, 개인 키의 복호화 키를 제2 데이터베이스에 저장하는 단계 및 미리 정해진 갱신 조건에 기초하여, 제1 데이터베이스에 저장된 암호화된 개인 키 및 제2 데이터베이스에 저장된 복호화 키를 갱신하는 단계를 포함한다.The present invention relates to a key management mechanism for a cryptocurrency wallet. A key management method of a cryptocurrency exchange server according to an embodiment includes encrypting a private key generated in response to a user's cryptocurrency wallet and storing it in a first database, storing the decryption key of the private key in a second database and updating the encrypted private key stored in the first database and the decryption key stored in the second database based on the predetermined update condition.
Description
암호화폐 지갑을 위한 키 관리 메커니즘에 관한 것이다.It is about a key management mechanism for cryptocurrency wallets.
암호화폐의 유통 및 사용이 널리 보편화되고 있다. 이러한 암호화폐는 독립 거래의 대상으로 여러 시스템을 통해 거래가 이루어지고 있다. The distribution and use of cryptocurrencies are becoming widespread. These cryptocurrencies are subject to independent transactions and are being traded through several systems.
암호화폐 지갑은 블록체인을 통해 암호화폐의 거래가 가능하도록 하는 본인 지갑의 개인키를 관리하는 소프트웨어 프로그램을 의미한다. 개인키를 알면 지갑의 소유권을 갖게 되고, 개인키가 외부에 노출될 경우 타인에 의한 암호화폐 거래가 가능하기 때문에 이를 관리하는 암호화폐 지갑은 해킹으로부터 안전하게 관리되어야 할 필요성이 있다. 기존의 보안을 위한 방안으로 네트워크를 외부와 분리시켜 접근을 차단하는 방법 등이 있으나 내부자에 의한 방어에는 취약한 단점이 있어 보안을 강화하기 위한 기술이 개발되고 있다.A cryptocurrency wallet is a software program that manages the private key of one's own wallet that enables cryptocurrency transactions through the block chain. If you know the private key, you have ownership of the wallet, and if the private key is exposed to the outside, cryptocurrency transactions are possible by others, so the cryptocurrency wallet that manages it needs to be managed safely from hacking. Existing security measures include a method of isolating the network from the outside and blocking access, but there is a weakness in defense by insiders, so technologies to strengthen security are being developed.
실시예는 암호화폐 거래소에서 암호화폐 거래와 관련된 키를 안전하게 관리하는 기술을 제공할 수 있다.The embodiment may provide a technology for securely managing keys related to cryptocurrency transactions in a cryptocurrency exchange.
다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.However, the technical problems are not limited to the above-described technical problems, and other technical problems may exist.
일 측에 따른 암호화폐 거래소 서버의 키 관리 방법은, 상기 서버와 관련하여 미체결된 암호화폐 거래가 있는지 여부를 확인하는 단계; 상기 거래가 없는 경우, 상기 서버에 등록된 임의의 사용자의 암호화폐 지갑에 대응하여 제1 데이터베이스에 저장된 암호화된 개인 키를 갱신하는 단계; 및 상기 임의의 사용자의 암호화폐 지갑에 대응하여 제2 데이터베이스에 저장된 상기 암호화된 개인 키의 복호화 키를 갱신하는 단계; 및 상기 거래가 있는 경우, 상기 거래에 대응하는 암호화폐 지갑의 개인 키에 기초하여 상기 거래를 수행하는 단계를 포함한다.A key management method of a cryptocurrency exchange server according to one side includes the steps of: checking whether there is an outstanding cryptocurrency transaction in relation to the server; if there is no transaction, updating the encrypted private key stored in the first database corresponding to the cryptocurrency wallet of any user registered in the server; and updating the decryption key of the encrypted private key stored in a second database corresponding to the user's cryptocurrency wallet; and if there is the transaction, performing the transaction based on the private key of the cryptocurrency wallet corresponding to the transaction.
상기 암호화된 개인 키를 갱신하는 단계는 상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여, 해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하는 단계; 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하는 단계; 상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계; 상기 획득된 복호화 키를 변경하는 단계; 및 상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는 단계를 포함할 수 있다.The updating of the encrypted private key may include: corresponding to each of the encrypted private keys stored in the first database, obtaining a corresponding encrypted private key from the first database; obtaining a decryption key corresponding to the obtained encrypted private key from the second database; decrypting the obtained encrypted private key with the obtained decryption key; changing the obtained decryption key; and re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing the decrypted private key in the first database.
상기 복호화 키를 갱신하는 단계는 상기 변경된 복호화 키를 상기 제2 데이터베이스에 저장하는 단계를 포함할 수 있다.The updating of the decryption key may include storing the changed decryption key in the second database.
상기 거래를 수행하는 단계는 상기 제1 데이터베이스에서 상기 거래에 대응하는 암호화된 개인 키를 획득하는 단계; 상기 제2 데이터베이스에서 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 획득하는 단계; 상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계; 상기 복호화된 개인 키에 기초하여, 상기 거래를 수행하는 단계; 및 상기 수행된 거래의 내역을 저장하는 단계를 포함할 수 있다.The performing of the transaction may include: obtaining an encrypted private key corresponding to the transaction from the first database; obtaining a decryption key corresponding to the obtained encrypted private key from the second database; decrypting the obtained encrypted private key with the obtained decryption key; performing the transaction based on the decrypted private key; and storing the details of the performed transaction.
상기 제2 데이터베이스는 네트워크 보안에 기초하여 접근 대상이 제한될 수 있다.The access target of the second database may be restricted based on network security.
상기 암호화폐 거래소 서버의 키 관리 방법은 제1 사용자의 요청에 반응하여, 상기 제1 사용자의 제1 암호화폐 지갑 및 상기 제1 암호화폐 지갑에 대응하는 개인 키를 생성하는 단계; 상기 생성된 개인 키를 암호화하여 상기 제1 데이터베이스에 저장하는 단계; 및 상기 생성된 개인 키의 복호화 키를 상기 제2 데이터베이스에 저장하는 단계를 더 포함할 수 있다.The key management method of the cryptocurrency exchange server includes the steps of: in response to a request of a first user, generating a first cryptocurrency wallet of the first user and a private key corresponding to the first cryptocurrency wallet; encrypting the generated private key and storing it in the first database; and storing the decryption key of the generated private key in the second database.
상기 개인 키를 생성하는 단계는 상기 제1 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공하는 단계를 더 포함할 수 있다.The generating of the private key may further include providing mnemonic words for recovery of the private key to the first user.
일 측에 따른 암호화폐 거래소 서버의 키 관리 방법은, 사용자의 암호화폐 지갑에 대응하여 생성된 개인 키를 암호화하여 제1 데이터베이스에 저장하는 단계; 상기 개인 키의 복호화 키를 제2 데이터베이스에 저장하는 단계; 및 미리 정해진 갱신 조건에 기초하여, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 및 상기 제2 데이터베이스에 저장된 복호화 키를 갱신하는 단계를 포함한다.A key management method of a cryptocurrency exchange server according to one side includes: encrypting a private key generated in response to a user's cryptocurrency wallet and storing it in a first database; storing a decryption key of the private key in a second database; and updating the encrypted private key stored in the first database and the decryption key stored in the second database based on a predetermined update condition.
상기 갱신하는 단계는 상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여, 해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하는 단계; 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하는 단계; 상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계; 상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하는 단계; 및 상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는 단계를 포함할 수 있다.The updating may include: corresponding to each of the encrypted private keys stored in the first database, obtaining a corresponding encrypted private key from the first database; obtaining a decryption key corresponding to the obtained encrypted private key from the second database; decrypting the obtained encrypted private key with the obtained decryption key; changing the obtained decryption key and storing it in the second database; and re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing the decrypted private key in the first database.
상기 제1 데이터베이스에 저장하는 단계는 상기 사용자의 암호화폐 지갑에 대응하는 상기 개인 키를 생성하는 단계; 및 상기 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공하는 단계를 더 포함할 수 있다.The storing in the first database may include: generating the private key corresponding to the user's cryptocurrency wallet; and providing mnemonic words for recovery of the private key to the user.
상기 갱신 조건은 미체결된 암호화폐 거래의 유무와 관련된 제1 조건; 및 미리 정해진 갱신 주기와 관련된 제2 조건 중 적어도 하나를 포함할 수 있다.The update condition includes a first condition related to the presence or absence of an outstanding cryptocurrency transaction; and a second condition related to a predetermined update period.
상기 암호화폐 거래소 서버의 키 관리 방법은 갱신 주기와 관련된 제1 조건 및 거래 유무와 관련된 제2 조건이 만족됨에 따라 상기 갱신하는 단계가 수행되는 도중, 거래 요청을 수신하는 단계; 상기 거래 요청에 반응하여, 상기 갱신하는 단계의 진행을 중단하는 단계; 상기 거래 요청을 처리하는 단계; 및 상기 거래 요청의 처리로 인하여 상기 제2 조건이 다시 충족된 경우, 상기 갱신하는 단계의 진행을 재개하는 단계를 더 포함할 수 있다.The method for managing a key of the cryptocurrency exchange server includes: receiving a transaction request while the updating is performed as a first condition related to an update cycle and a second condition related to whether or not a transaction is made are satisfied; stopping the progress of the updating step in response to the transaction request; processing the transaction request; and when the second condition is satisfied again due to the processing of the transaction request, resuming the updating step.
상기 제2 데이터베이스는 네트워크 보안에 기초하여 접근 대상이 제한될 수 있다.The access target of the second database may be restricted based on network security.
일 측에 따른 암호화폐 거래소 서버는, 상기 서버와 관련하여 미체결된 암호화폐 거래가 있는지 여부를 확인하고, 상기 거래가 없는 경우, 상기 서버에 등록된 임의의 사용자의 암호화폐 지갑에 대응하여, 제1 데이터베이스에 저장된 암호화된 개인 키 및 제2 데이터베이스에 저장된 상기 암호화된 개인 키의 복호화 키를 갱신하며, 상기 거래가 있는 경우, 상기 거래에 대응하는 암호화폐 지갑의 개인 키에 기초하여 상기 거래를 수행하는, 적어도 하나의 프로세서를 포함한다.The cryptocurrency exchange server according to one side checks whether there is an outstanding cryptocurrency transaction in relation to the server, and if there is no transaction, in response to the cryptocurrency wallet of any user registered in the server, the first updating the encrypted private key stored in the database and the decryption key of the encrypted private key stored in the second database, and if there is the transaction, performing the transaction based on the private key of the cryptocurrency wallet corresponding to the transaction, at least one processor.
상기 프로세서는, 상기 갱신함에 있어서, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여, 해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하고, 상기 해당하는 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하고, 상기 획득된 복호화 키로 상기 해당하는 암호화된 개인 키를 복호화하고, 상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하며, 상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장할 수 있다.In the updating, in response to each encrypted private key stored in the first database, the processor acquires a corresponding encrypted private key from the first database, and decrypts the corresponding encrypted private key. obtaining a key from the second database, decrypting the corresponding encrypted private key with the obtained decryption key, changing the obtained decryption key and storing it in the second database, and encrypting corresponding to the changed decryption key The decrypted private key may be re-encrypted with the key and stored in the first database.
상기 프로세서는 상기 거래를 수행함에 있어서, 상기 제1 데이터베이스에서 상기 거래에 대응하는 암호화된 개인 키를 획득하고, 상기 제2 데이터베이스에서 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 획득하고, 상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하고, 상기 복호화된 개인 키에 기초하여, 상기 거래를 수행하며, 상기 수행된 거래의 내역을 저장할 수 있다.In performing the transaction, the processor obtains an encrypted private key corresponding to the transaction from the first database, obtains a decryption key corresponding to the obtained encrypted private key from the second database, and It is possible to decrypt the obtained encrypted private key with the obtained decryption key, perform the transaction based on the decrypted private key, and store details of the performed transaction.
상기 제2 데이터베이스는 네트워크 보안에 기초하여 접근 대상이 제한될 수 있다.The access target of the second database may be restricted based on network security.
일 측에 따른 암호화폐 거래소 서버는, 사용자의 암호화폐 지갑에 대응하여 생성된 개인 키를 암호화하여 제1 데이터베이스에 저장하고, 상기 개인 키의 복호화 키를 제2 데이터베이스에 저장하며, 미리 정해진 갱신 조건에 기초하여, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 및 상기 제2 데이터베이스에 저장된 복호화 키를 갱신하는, 적어도 하나의 프로세서를 포함한다.The cryptocurrency exchange server according to one side encrypts the private key generated in response to the user's cryptocurrency wallet and stores it in the first database, stores the decryption key of the private key in the second database, and a predetermined update condition based on the at least one processor for updating the encrypted private key stored in the first database and the decryption key stored in the second database.
상기 프로세서는, 상기 갱신함에 있어서, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여, 해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하고, 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하고, 상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하고, 상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하며, 상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장할 수 있다.In the updating, in response to each of the encrypted private keys stored in the first database, the processor acquires a corresponding encrypted private key from the first database, and decrypts the encrypted private key corresponding to the obtained encrypted private key. obtain a key from the second database, decrypt the obtained encrypted private key with the obtained decryption key, change the obtained decryption key and store it in the second database, and encrypt corresponding to the changed decryption key The decrypted private key may be re-encrypted with the key and stored in the first database.
상기 프로세서는, 상기 제1 데이터베이스에 저장함에 있어서, 상기 사용자의 암호화폐 지갑에 대응하는 상기 개인 키를 생성하며, 상기 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공할 수 있다.The processor, in storing in the first database, may generate the private key corresponding to the user's cryptocurrency wallet, and may provide mnemonic words for recovery of the private key to the user. .
도 1은 일실시예에 따른 암호화폐 거래소 시스템을 설명하기 위한 도면.
도 2는 일실시예에 따른 키 갱신 알고리즘의 순서도.
도 3은 일실시예에 따른 암호화폐 거래소 서버의 동작을 설명하기 위한 순서도.
도 4는 일실시예에 따른 암호화폐 거래소 시스템의 구성을 도시한 도면.
도 5는 일실시예에 따른 장치의 구성의 예시도.1 is a diagram for explaining a cryptocurrency exchange system according to an embodiment.
2 is a flowchart of a key update algorithm according to an embodiment;
3 is a flowchart for explaining the operation of a cryptocurrency exchange server according to an embodiment.
4 is a diagram showing the configuration of a cryptocurrency exchange system according to an embodiment.
5 is an exemplary diagram of a configuration of an apparatus according to an embodiment;
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for purposes of illustration only, and may be changed and implemented in various forms. Accordingly, the actual implementation form is not limited to the specific embodiments disclosed, and the scope of the present specification includes changes, equivalents, or substitutes included in the technical spirit described in the embodiments.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as first or second may be used to describe various elements, these terms should be interpreted only for the purpose of distinguishing one element from another. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.When a component is referred to as being “connected” to another component, it may be directly connected or connected to the other component, but it should be understood that another component may exist in between.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression includes the plural expression unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, and includes one or more other features or numbers, It should be understood that the possibility of the presence or addition of steps, operations, components, parts or combinations thereof is not precluded in advance.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. 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 specification. does not
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. In the description with reference to the accompanying drawings, the same components are assigned the same reference numerals regardless of the reference numerals, and the overlapping description thereof will be omitted.
도 1은 일실시예에 따른 암호화폐 거래소 시스템을 설명하기 위한 도면이다.1 is a diagram for explaining a cryptocurrency exchange system according to an embodiment.
일실시예에 따른 암호화폐 거래소 시스템은 암호화폐 거래를 위한 키 관리 메커니즘이 수행되는 시스템으로, 암호화폐 거래소 서버(110) 및 암호화폐 거래소와 관련된 데이터가 저장되는 데이터베이스(120, 130)를 포함할 수 있다. 서버(110)를 구성하는 적어도 하나의 프로세서는 사용자의 암호화폐 지갑에 대응하여 생성된 개인 키를 관리하기 위한 키 관리 메커니즘의 동작을 수행할 수 있다.The cryptocurrency exchange system according to an embodiment is a system in which a key management mechanism for cryptocurrency transactions is performed, and includes a
일실시예에 따른 키 관리 메커니즘에서 관리의 대상이 되는 ‘개인 키(private key)’는 암호화폐 거래 시 디지털 서명하는 데 사용되는 암호화 키에 해당할 수 있다. 개인 키는 사용자의 암호화폐 지갑이 생성될 때 암호화폐 지갑에 대응하여 생성될 수 있다.A 'private key' to be managed in the key management mechanism according to an embodiment may correspond to an encryption key used for digitally signing a cryptocurrency transaction. The private key may be generated corresponding to the cryptocurrency wallet when the user's cryptocurrency wallet is created.
일실시예에 따를 때, 서버(110)는 사용자(101)의 요청에 반응하여, 사용자(101)의 암호화폐 지갑을 생성할 수 있다. 서버(110)는 암호화폐 지갑 생성 시 암호화폐 지갑의 퍼블릭 주소(public address) 및 퍼블릭 주소에 대응하는 개인 키를 생성할 수 있다. 서버(110)는 사용자(101)의 암호화폐 지갑에 대응하는 개인 키 생성 시, 이를 복구할 수 있는 니모닉(Mnemonic) 코드를 사용자에게 제공할 수 있다. 니모닉 코드는 텍스트로 구성되며, 예를 들어 적어도 하나의 단어를 포함하는 단어열(니모닉 워드, 니모닉 워드 리스트, 니모닉 워드 시퀀스 등)로 구성될 수 있다.According to an embodiment, the
일실시예에 따른 서버(110)는 암호화폐 지갑에 대응하여 생성된 개인 키를 암호화하여 데이터베이스(120)에 저장할 수 있다. 서버(110)에서 암호화 키로 개인 키를 암호화하여 생성된 암호문이 저장되므로, 개인 키가 본인 및/또는 타인에게 노출되지 않을 수 있다. 암호화된 개인 키는 암호화 키에 대응하는 복호화 키로 복호화될 수 있으며, 암호화 키 및 복호화 키는 암호화 알고리즘에 따라 생성될 수 있다. 개인 키를 암호화할 때 사용되는 암호화 알고리즘은 암호화 키와 복호화 키가 동일한 암호화 알고리즘(또는, 대칭 키 알고리즘)이 사용될 수 있으며, 실시예에 따라 암호화 키와 복호화 키가 상이한 비대칭키 알고리즘이 사용될 수도 있다. 사용자의 암호화폐 지갑에 대응하는 개인 키의 암호화는 사용자 별로 또는 암호화폐 지갑 별로 서로 다른 암호화 방법을 사용하거나, 사용자의 그룹별로 또는 암호화폐 지갑의 그룹 별로 서로 다른 암호화 방법을 사용하거나, 모두 동일한 암호화 방법을 사용하여 할 수 있다.The
일실시예에 따를 때, 암호화된 개인 키의 복호화 키는 데이터베이스(130)에 저장될 수 있다. 암호화된 개인 키가 저장되는 데이터베이스 및 암호화된 개인 키의 복호화 키가 저장되는 데이터베이스는 구분될 수 있으며, 이하에서, 암호화된 개인 키가 저장되는 데이터베이스(120)는 제1 데이터베이스로, 암호화된 개인 키의 복호화 키가 저장되는 데이터베이스(130)는 제2 데이터베이스로 지칭될 수 있다. 개인 키가 대칭 키로 암호화된 경우, 제2 데이터베이스(130)에 저장되는 복호화 키는 개인 키를 암호화하는 데 이용된 암호화 키와 동일한 키에 해당할 수 있다. 개인 키가 비대칭 키로 암호화된 경우, 제2 데이터베이스(130)에 저장되는 복호화 키는 개인 키를 암호화하는 데 이용된 암호화 키와 상이하며, 암호화 키에 대응되는 복호화 키에 해당할 수 있다. According to an embodiment, the decryption key of the encrypted private key may be stored in the
일실시예에 따를 때, 복호화 키 보관의 보안을 강화하기 위하여, 암호화된 개인키의 복호화 키가 저장된 데이터베이스(130)는 접근이 제한된 별도의 네트워크로 구성될 수 있다. 예를 들어, 복호화 키가 저장되는 데이터베이스(130)는 네트워크 보안 기술을 이용하여 구성된 보안된 네트워크를 통해 연결되는 데이터베이스에 해당할 수 있으며, 보안된 네트워크는 서버(110)의 액세스만을 허용하고, 이를 제외한 허가되지 않은 액세스를 제한할 수 있다. According to an embodiment, in order to strengthen the security of storage of the decryption key, the
일실시예에 따를 때, 암호화된 개인키의 복호화 키는 별도의 복호화 키 관리 시스템에서 관리될 수 있다. 암호화된 개인키의 복호화 키는 사용자 별로 또는 암호화폐 지갑 별로 관리되거나, 사용자의 그룹별로 또는 암호화폐 지갑의 그룹 별로 관리될 수 있다. 실시예에 따라 모든 지갑의 개인 키가 동일한 키로 암호화된 경우, 단일 복호화 키로 관리될 수도 있다.According to an embodiment, the decryption key of the encrypted private key may be managed in a separate decryption key management system. The decryption key of the encrypted private key may be managed for each user or each cryptocurrency wallet, or may be managed for each user group or cryptocurrency wallet group. According to an embodiment, when the private keys of all wallets are encrypted with the same key, they may be managed with a single decryption key.
일실시예에 따를 때, 서버(110)는 서버와 관련된 블록체인을 탐색하면서, 서버와 관련된 암호화폐의 거래(transaction)를 수행할 수 있다. 서버와 관련된 블록체인은 서버(110)가 네트워크를 통해 관리할 수 있는 블록체인을 의미할 수 있다. 블록체인은 공유 범위에 따라 퍼블릭 블록체인(public blockchain), 프라이빗 블록체인(private blockchain), 컨소시엄 블록체인(consortium blockchain)의 종류로 구분될 수 있으며, 블록체인의 종류에 따라 블록체인 네트워크의 참여 가능 범위가 달라질 수 있다. 예를 들어, 퍼블릭 블록체인의 경우 별도의 승인없이 네트워크 참여 및 탈퇴가 가능하고, 프라이빗 블록체인의 경우 특정 주체에 의해 승인된 주체만 블록체인 네트워크에 참여 가능하다.According to an embodiment, the
네트워크 서버와 관련된 암호화폐 거래는 사용자의 암호화폐와 관련된 거래 또는 사용자가 발생시킨 거래에 해당할 수 있으며, 서버(110)에서 수행하는 거래에 해당할 수 있다. 여기서, 사용자는 서버(110)에서 생성된 암호화폐 지갑을 보유한 사용자로, 예를 들어, 암호화폐 거래소의 회원들에 해당할 수 있다. 서버(110)는 블록체인을 탐색하면서, 서버(110)와 관련하여 미체결된 암호화폐 거래가 있는지 여부를 확인할 수 있으며, 미체결된 암호화폐 거래가 있는 경우 해당 거래를 수행할 수 있다.The cryptocurrency transaction related to the network server may correspond to a transaction related to the user's cryptocurrency or a transaction generated by the user, and may correspond to a transaction performed by the
일실시예에 따른 서버(110)는 미체결된 암호화폐 거래에 대응하는 암호화된 개인 키를 대응하는 복호화 키로 복호화하여, 개인 키로 거래에 서명함으로써, 암호화폐 거래를 수행할 수 있다. 암호화폐 거래에 대응하는 암호화된 개인 키는 암호화폐 거래가 발생한 암호화폐 지갑에 대응하는 암호화된 개인 키에 해당할 수 있으며, 암호화된 개인 키는 제1 데이터베이스(120)에서 획득될 수 있다. 암호화된 개인 키에 대응하는 복호화 키는 복호화 키를 저장하는 제2 데이터베이스(130)에서 획득될 수 있다. The
일실시예에 따를 때, 서버(110)는 암호화폐 거래를 수행하여, 해당 거래 내역을 서버(110)에서 접근 가능한 데이터베이스에 기록할 수 있다. 일실시예에 따른 암호화폐의 거래 내역은 상술한 제1 데이터베이스 및 제2 데이터베이스와 구분되는 제3 데이터베이스에 저장될 수 있다. 이하에서, 거래 내역이 저장되는 데이터베이스는 제3 데이터베이스로 지칭될 수 있다. 제3 데이터베이스는 버퍼 또는 큐처럼 활용될 수 있으며, 수행된 거래는 블록체인 네트워크에 기록되므로, 제3 데이터베이스에 저장된 수행된 거래의 내역은 로그 정보처럼 활용될 수 있다.According to an embodiment, the
일실시예에 따른 서버(110)는 미리 정해진 갱신 조건에 기초하여, 제1 데이터베이스(120)에 저장된 암호화된 개인 키 및 제2 데이터베이스(130)에 저장된 복호화 키를 갱신할 수 있다. 보다 구체적으로, 서버(110)는 갱신 조건에 따라 반복적으로 제2 데이터베이스(130)에 저장된 복호화 키를 변경하고, 제1 데이터베이스(120)에 저장된 암호화된 개인 키를 변경된 복호화 키에 대응하는 암호화 키로 재암호화한 암호문으로 변경할 수 있으며, 이러한 갱신 과정을 갱신 조건이 발생할 때마다 반복적으로 수행할 수 있다. 일실시예에 따를 때, 저장된 복호화 키 및 암호화된 개인 키가 반복적으로 변경되는 키 갱신 알고리즘을 통해 암호화폐 지갑의 보안을 강화할 수 있다. 일실시예에 따른 암호화된 개인 키 및 복호화 키는 서로 다른 데이터베이스에 저장되며, 반복적으로 변경되므로, 외부에서 개인 키를 알기 위해서는 키 갱신 알고리즘이 수행되기 전 제1 데이터베이스 및 제2 데이터베이스에 접근하여야 한다.The
일실시예에 따른 키 갱신 알고리즘의 구체적인 단계는 이하의 도 2를 참조하여 상술한다.Specific steps of the key update algorithm according to an embodiment will be described in detail with reference to FIG. 2 below.
도 2는 일실시예에 따른 키 갱신 알고리즘의 순서도이다.2 is a flowchart of a key update algorithm according to an embodiment.
도 2를 참조하면, 일실시예에 따른 키 갱신 알고리즘은 제1 데이터베이스에 저장된 암호화된 개인 키를 획득하는 단계(210), 획득된 암호화된 개인 키에 대응하는 복호화 키를 제2 데이터베이스에서 획득하는 단계(220), 획득된 복호화 키로 획득된 암호화된 개인 키를 복호화하는 단계(230), 획득된 복호화 키를 변경하여 제2 데이터베이스에 저장하는 단계(240) 및 변경된 복호화 키에 대응하는 암호화 키로 복호화된 개인 키를 재암호화하여 제1 데이터베이스에 저장하는 단계(250)를 포함할 수 있다. 일실시예에 따른 키 갱신은 저장된 키를 변경하여 변경된 키를 변경되기 이전의 키를 대신하여 저장하는 것으로, 데이터베이스에 저장된 기존 키에 변경된 키를 덮어쓰는 과정으로 이해할 수 있다.2, the key update algorithm according to an embodiment obtains an encrypted private key stored in a first database (210), and obtains a decryption key corresponding to the obtained encrypted private key from a
일실시예에 따를 때, 키 갱신 알고리즘은 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여 수행될 수 있다. 예를 들어, 제1 데이터베이스에 제1 암호화폐 지갑에 대응하는 제1 개인 키 및 제2 암호화폐 지갑에 대응하는 제2 개인 키가 암호화되어 저장되어 있는 경우, 암호화된 제1 개인 키 및 암호화된 제1 개인 키의 복호화 키가 키 갱신 알고리즘에 따라 갱신되고, 암호화된 제2 개인 키 및 암호화된 제2 개인 키의 복호화 키가 키 갱신 알고리즘에 따라 갱신될 수 있다. 실시예에 따라, 암호화된 제1 개인 키 및 암호화된 제1 개인 키의 복호화 키의 갱신과 암호화된 제2 개인 키 및 암호화된 제2 개인 키의 복호화 키의 갱신은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수도 있다. 또한, 실시예에 따라 암호화된 제1 개인 키 및 암호화된 제1 개인 키의 복호화 키의 갱신과 암호화된 제2 개인 키 및 암호화된 제2 개인 키의 복호화 키의 갱신은 동일한 프로세서에 의해 수행될 수도 있고, 서로 다른 프로세서에 의해 수행될 수도 있다.According to an embodiment, the key update algorithm may be performed corresponding to each encrypted private key stored in the first database. For example, when the first private key corresponding to the first cryptocurrency wallet and the second private key corresponding to the second cryptocurrency wallet are encrypted and stored in the first database, the encrypted first private key and the encrypted The decryption key of the first private key may be updated according to the key update algorithm, and the encrypted second private key and the decryption key of the encrypted second private key may be updated according to the key update algorithm. According to an embodiment, the update of the decryption key of the encrypted first private key and the encrypted first private key and the update of the decryption key of the encrypted second private key and the encrypted second private key may be performed in parallel, and , may be performed sequentially. Further, according to the embodiment, the update of the decryption key of the encrypted first private key and the encrypted first private key and the update of the decryption key of the encrypted second private key and the encrypted second private key may be performed by the same processor. It may also be performed by different processors.
일실시예에 따른 키 갱신 알고리즘은 미리 정해진 갱신 조건이 만족되는 경우 수행될 수 있다. 갱신 조건의 예는 미체결된 암호화폐 거래의 유무와 관련된 조건, 미리 정해진 갱신 주기와 관련된 조건 등이 있으며, 이외에도 서버에서 인식 가능한 다양한 이벤트가 갱신 조건으로 설정될 수 있다. 갱신 조건은 복수의 조건들을 포함할 수 있으며, 복수의 조건들이 모두 만족된 경우 키 갱신 알고리즘이 수행될 수도 있고, 복수의 조건들 중 적어도 하나가 만족된 경우 키 갱신 알고리즘이 수행될 수도 있다. 예를 들어, 갱신 조건이 제1 조건 및 제2 조건을 포함하는 경우, 키 갱신 알고리즘은 제1 조건 및 제2 조건이 모두 만족됨에 따라 수행될 수도 있고, 제1 조건 또는 제2 조건이 만족됨에 따라 수행될 수도 있다.The key update algorithm according to an embodiment may be performed when a predetermined update condition is satisfied. Examples of the update condition include a condition related to the presence or absence of an unconcluded cryptocurrency transaction, a condition related to a predetermined update cycle, etc. In addition, various events recognizable by the server may be set as the update condition. The update condition may include a plurality of conditions. When all of the plurality of conditions are satisfied, the key update algorithm may be performed, or when at least one of the plurality of conditions is satisfied, the key update algorithm may be performed. For example, when the update condition includes the first condition and the second condition, the key update algorithm may be performed as both the first condition and the second condition are satisfied, and when the first condition or the second condition is satisfied may be performed accordingly.
이하에서, 갱신 조건으로 제1 조건 및 제2 조건 중 적어도 하나를 포함하는 경우를 예로 들어 키 갱신 알고리즘에 따른 키 갱신 과정에 관한 시나리오를 설명한다.Hereinafter, a scenario related to a key update process according to a key update algorithm will be described by taking as an example a case in which at least one of the first condition and the second condition is included as the update condition.
일실시예에 따를 때, 키 갱신 과정이 제1 조건이 만족됨에 따라 수행되는 경우, 키 갱신의 수행 도중 제1 조건이 불만족되면 키 갱신 과정의 수행이 중단되고, 다시 제1 조건이 만족됨에 따라 중단된 키 갱신 과정이 다시 수행될 수 있다. 예를 들어, 제1 데이터베이스에 저장된 10개의 암호화된 개인 키 각각에 대해서 순차적으로 키 갱신 알고리즘이 수행되는 경우, 5번째 암호화된 개인 키 및 대응하는 복호화 키의 갱신 도중 제1 조건이 불만족되는 경우, 5번째 암호화된 개인 키 및 복호화 키의 갱신 과정이 중단되고, 제1 조건이 다시 만족됨에 따라 다시 5번째 암호화된 개인 키 및 복호화 키의 갱신 과정이 재개될 수 있다. 제1 조건이 만족된 상태가 계속 유지되는 경우, 10번째 암호화된 개인 키 및 대응하는 복호화 키의 갱신이 완료된 후 키 갱신 과정이 종료될 수 있다.According to an embodiment, when the key update process is performed according to the satisfaction of the first condition, if the first condition is not satisfied during the key update, the key update process is stopped, and the first condition is satisfied again. The interrupted key update process may be performed again. For example, when a key update algorithm is sequentially performed for each of ten encrypted private keys stored in the first database, when the first condition is not satisfied during the update of the fifth encrypted private key and the corresponding decryption key, The renewal process of the fifth encrypted private key and the decryption key is stopped, and as the first condition is satisfied again, the renewal process of the fifth encrypted private key and the decryption key may be resumed. If the first condition is continuously maintained, the key update process may be terminated after the update of the tenth encrypted private key and the corresponding decryption key is completed.
예를 들어, 제1 조건이 미체결된 거래가 없는 경우 만족되는 조건인 경우, 미체결된 거래가 없어 키 갱신 알고리즘이 수행되는 도중 미체결된 거래가 발생하면(다시 말해, 제1 조건이 불만족 되면), 갱신 과정이 중단되고, 미체결된 거래가 수행된 후 다시 미체결된 거래가 없는 제1 조건이 만족됨에 따라, 중단된 갱신 과정이 다시 수행될 수 있다.For example, if the first condition is a condition that is satisfied when there is no outstanding transaction, if there is no outstanding transaction and an outstanding transaction occurs while the key update algorithm is being executed (that is, if the first condition is not satisfied), The update process is interrupted, and the interrupted update process may be performed again as the first condition in which there is no outstanding transaction is satisfied after the outstanding transaction is performed.
일실시예에 따를 때, 키 갱신 과정이 제1 조건 및 제2 조건이 모두 만족됨에 따라 수행되는 경우, 키 갱신 과정의 수행 도중 제1 조건이 불만족되면, 키 갱신 과정이 중단되고, 제1 조건이 다시 만족됨에 따라 중단된 키 갱신 과정이 다시 수행될 수 있다.According to an embodiment, when the key update process is performed as both the first condition and the second condition are satisfied, if the first condition is not satisfied during the key update process, the key update process is stopped and the first condition As this is satisfied again, the interrupted key update process may be performed again.
예를 들어, 제1 조건이 미체결된 거래가 없는 경우 만족되는 조건이고, 제2 조건이 갱신 주기에 해당하는 경우 만족되는 조건인 경우, 미체결된 거래가 없고, 갱신 주기에 해당하면, 키 갱신 과정이 수행될 수 있다. 키 갱신 알고리즘의 수행 도중, 서버에서 거래 요청이 수신된 경우 제1 조건이 불만족되므로 키 갱신 과정이 중단될 수 있다. 거래 요청의 처리로 인하여 제1 조건 및 제2 조건이 다시 만족됨에 따라, 키 갱신 과정이 다시 재개될 수 있다.For example, if the first condition is a condition that is satisfied when there is no outstanding transaction, and if the second condition is a condition that is satisfied when there is no outstanding transaction, the key update process This can be done. When a transaction request is received from the server during execution of the key update algorithm, the first condition is not satisfied, and thus the key update process may be stopped. As the first condition and the second condition are satisfied again due to the processing of the transaction request, the key update process may be resumed again.
일실시예에 따를 때, 키 갱신 과정이 제1 조건 및 제2 조건 중 적어도 하나가 만족됨에 따라 수행되는 경우, 키 갱신 과정의 수행 도중 어느 하나의 조건이 불만족되더라도, 다른 조건이 만족되면 키 갱신 과정이 중단되지 않고 계속 수행될 수 있다.According to an embodiment, when the key update process is performed as at least one of the first condition and the second condition is satisfied, even if any one condition is not satisfied during the key update process, the key update is performed when the other condition is satisfied The process can be continued without interruption.
예를 들어, 제1 조건이 미체결된 거래가 없는 경우 만족되는 조건이고, 제2 조건이 갱신 주기에 해당하는 경우 만족되는 조건인 경우, 미체결된 거래가 발생하더라도, 미리 정해진 갱신 주기마다 미체결된 거래의 수행에 우선하여 키 갱신 과정이 수행될 수 있다.For example, if the first condition is a condition satisfied when there is no outstanding transaction and the second condition is a condition that is satisfied when there is no outstanding transaction A key update process may be performed prior to performing a transaction.
도 3은 일실시예에 따른 암호화폐 거래소 서버의 동작을 설명하기 위한 순서도이다.3 is a flowchart for explaining the operation of a cryptocurrency exchange server according to an embodiment.
도 3을 참조하면, 일실시예에 따른 암호화폐 거래소 서버의 동작 과정은 서버와 관련하여 미체결된 암호화폐 거래가 있는지 여부를 확인하는 단계(310), 미체결된 암호화폐 거래가 없는 경우, 서버에 등록된 임의의 사용자의 암호화폐 지갑에 대응하여 제1 데이터베이스에 저장된 암호화된 개인 키를 갱신하는 단계(320) 및 임의의 사용자의 암호화폐 지갑에 대응하여 제2 데이터베이스에 저장된 암호화된 개인 키의 복호화 키를 갱신하는 단계(330)를 포함하고, 미체결된 암호화폐 거래가 있는 경우, 거래에 대응하는 암호화폐 지갑의 개인 키에 기초하여 거래를 수행하는 단계(340)를 포함할 수 있다.Referring to FIG. 3 , the operation process of the cryptocurrency exchange server according to an embodiment includes a
도 3에 도시된 암호화폐 거래소 서버의 동작 과정은 상술한 갱신 조건이 미체결된 거래가 없는 경우 만족되는 경우, 서버에 의해 키 갱신 알고리즘이 수행되는 동작으로 이해할 수 있다.The operation process of the cryptocurrency exchange server shown in FIG. 3 can be understood as an operation in which the key update algorithm is performed by the server when the above-described update condition is satisfied when there is no outstanding transaction.
일실시예에 따른 미체결된 암호화폐 거래가 있는지 여부를 확인하는 단계(310)는 블록체인을 탐색하면서, 서버에서 수행되는 미체결된 암호화폐 거래를 식별하는 단계를 포함할 수 있다.The
일실시예에 따른 단계(320) 및 단계(330)에서 임의의 사용자의 암호화폐 지갑은 서버에 등록된 사용자(들)의 암호화폐 지갑(들) 중 적어도 일부의 임의의 암호화폐 지갑을 의미할 수 있다.In
일실시예에 따른 암호화된 개인 키를 갱신하는 단계(320)는 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여, 해당하는 암호화된 개인 키를 제1 데이터베이스에서 획득하는 단계, 획득된 암호화된 개인 키에 대응하는 복호화 키를 제2 데이터베이스에서 획득하는 단계, 획득된 복호화 키로 획득된 암호화된 개인 키를 복호화하는 단계, 획득된 복호화 키를 변경하는 단계, 및 변경된 복호화 키에 대응하는 암호화 키로 복호화된 개인 키를 재암호화하여 제1 데이터베이스에 저장하는 단계를 포함할 수 있고, 일실시예에 따른 복호화 키를 갱신하는 단계(330)는 변경된 복호화 키를 제2 데이터베이스에 저장하는 단계를 포함할 수 있다.The
일실시예에 따른 거래를 수행하는 단계(340)는 제1 데이터베이스에서 거래에 대응하는 암호화된 개인 키를 획득하는 단계, 제2 데이터베이스에서 획득된 암호화된 개인 키에 대응하는 복호화 키를 획득하는 단계, 획득된 암호화된 개인 키를 획득된 복호화 키로 복호화하는 단계, 복호화된 개인 키에 기초하여, 거래를 수행하는 단계를 포함할 수 있다. 거래에 대응하는 암호화된 개인 키는 거래가 발생한 암화화폐 지갑에 대응하는 암호화된 개인 키를 의미할 수 있다.Performing the transaction (340) according to an embodiment may include: obtaining an encrypted private key corresponding to the transaction from a first database; obtaining a decryption key corresponding to the encrypted private key obtained from a second database; , decrypting the obtained encrypted private key with the obtained decryption key, and performing a transaction based on the decrypted private key. The encrypted private key corresponding to the transaction may mean an encrypted private key corresponding to the cryptocurrency wallet in which the transaction occurred.
일실시예에 따를 때, 체결된 거래는 블록체인 네트워크에 기록되며, 서버는 수행된 거래의 내역을 제3 데이터베이스에 저장할 수 있다.According to one embodiment, the concluded transaction is recorded in the blockchain network, and the server may store the details of the performed transaction in a third database.
도 4는 일실시예에 따른 암호화폐 거래소 시스템의 구성을 도시한 도면이다.4 is a diagram illustrating the configuration of a cryptocurrency exchange system according to an embodiment.
도 4를 참조하면, 일실시예에 따른 암호화폐 거래소 시스템(410)은 상술한 키 관리 메커니즘을 수행하는 '블록아이' 서버(411), 암호화된 개인 키를 저장하는 데이터베이스(413)를 포함할 수 있으며, 네트워크(420)를 통해 등록된 사용자(401)로부터 암호화폐 거래 요청을 수신하여, 블록체인(402)을 관리할 수 있다. 블록체인(402)의 종류에 따라 네트워크(420)의 구성이 달라질 수 있으나, 이하에서 설명의 편의를 위해 퍼블릭 블록체인의 경우를 예로 들어 설명한다.Referring to FIG. 4 , the
일실시예에 따를 때, 시스템(410)은 지갑 생성기(414)를 더 포함할 수 있다. '지갑 생성기'(414)는 사용자의 최초의 지갑 생성 시 지갑의 퍼블릭 주소(public address) 및 퍼블릭 주소에 대응하는 개인 키를 생성하는 구성에 해당할 수 있다. 사용자의 개인 키는 사용자가 직접 생성할 수 없으며 지갑 생성기(414)를 통해서 생성할 수 있다. 지갑 생성기(414)는 사용자의 개인키 생성 시, 이를 복구할 수 있는 니모닉 코드(혹은 니모닉 워드, 니모닉 워드 리스트, 니모닉 워드 시퀀스 등)를 사용자에게 제공할 수 있다. According to one embodiment,
'Grow Wallet DB'(413)는 사용자의 암호화된 개인 키가 저장되는 데이터베이스에 해당할 수 있다. 사용자의 암호화된 개인 키가 저장되는 데이터베이스(413)에는 다수 사용자의 다수 암호화된 개인 키가 저장될 수 있다. The 'Grow Wallet DB' 413 may correspond to a database in which a user's encrypted private key is stored. A plurality of encrypted private keys of a plurality of users may be stored in the
일실시예에 따를 때, 시스템(410)은 거래 내역을 저장하는 데이터베이스를 더 포함할 수 있다. 'Transaction DB'(412)는 후술할 '블록아이'(411)가 블록체인(402) 네트워크로부터 탐색한 거래의 내역이 저장되는 데이터베이스에 해당할 수 있다.According to one embodiment, the
일실시예에 따를 때, 암호화된 개인 키의 복호화 키를 저장하는 데이터베이스는 별도의 시스템에서 관리될 수 있다. ‘복호화 키 관리 시스템’(430)은 보안된 네트워크(440)를 이용하는 별도의 시스템에 해당할 수 있다. 복호화 키 관리 시스템(430)은 보안된 네트워크(440)를 사용함으로써 접속할 수 있는 대상을 제한하여 저장된 데이터의 보안을 강화할 수 있다. 예를 들어, 복호화 키 관리 시스템(430)은 후술할 '블록아이'(411)로 접근 대상이 제한될 수 있다.According to an embodiment, the database storing the decryption key of the encrypted private key may be managed in a separate system. The 'decryption key management system' 430 may correspond to a separate system using the
‘블록아이’(411)는 블록체인(402)을 탐색하면서, 암호화폐의 거래를 수행하는 구성에 해당할 수 있다. 블록아이(411)는 암호화폐 거래 내역을 저장하는 데이터베이스(412), 암호화된 개인키를 저장하는 데이터베이스(413), 및 복호화 키 관리 시스템(430) 내 암호화된 개인키의 복호화 키를 저장하는 데이터베이스 등에 접근하여 저장된 내용을 불러올 수도 있고 덮어쓸 수도 있다. 블록아이(411)가 중지된 경우 복호화 키를 저장하는 복호화 키 관리 시스템(430)의 서버를 차단(seal)하여 복호화 키의 노출을 방지할 수 있다. 또한, 블록아이(411) 구성의 코드가 변경되었는지를 확인하는 무결성 체크를 통하여 해킹 등에 의한 블록아이(411) 구성의 변경이 있는지 여부를 확인함으로써 보안을 강화할 수 있다.The 'block eye' 411 may correspond to a configuration for performing a cryptocurrency transaction while exploring the
일실시예에 따를 때, 갱신 조건이 수행해야할 암호화폐 거래가 없어야 하는 조건인 경우, 도 4에 도시된 시스템에서 상술한 키 갱신 알고리즘에 따라 저장된 암호화된 개인 키 및 복호화 키를 갱신하는 과정을 아래에서 상술한다.According to one embodiment, if the update condition is a condition that there should be no cryptocurrency transaction to be performed, the process of updating the stored encrypted private key and decryption key according to the key update algorithm described above in the system shown in FIG. 4 is described below. detailed.
(1) 블록아이(411)는 블록체인(402)을 탐색하면서 수행해야할 암호화폐 거래가 있는지 확인한다. 수행해야할 암호화폐 거래는 사용자(예를 들어, 거래소의 회원들)의 암호화폐와 관련된 거래 또는 사용자(예를 들어, 거래소의 회원들)가 발생시킨 거래에 해당할 수 있다.(1) The
(2) 수행해야할 거래가 있는 경우 블록아이(411)는 복호화 키 관리 시스템(430) 서버에 접속하여 사용자의 암호화된 개인 키의 복호화 키를 불러온다. 블록아이(411)는 불러온 복호화 키를 이용하여 암호화된 개인키가 저장된 데이터베이스(413)에 접근하여 사용자의 개인키를 복원한다. 블록아이(411)는 복원된 개인키로 수행해야할 거래에 서명하여 거래를 수행한다. 또한, 블록아이(411)는 해당 거래 내역을 데이터베이스(412)에 저장할 수 있다.(2) When there is a transaction to be performed, the
(3) 수행해야할 거래가 없는 경우 블록아이(411)는 복호화 키 관리 시스템(430) 서버에 접속하여 저장되어 있는 복호화 키 전체를 변경한다. 이 때 복호화 키는 블록아이(411)에 의해서도 변경될 수 있고, 복호화 키 관리 시스템(430) 자체에 의해 변경될 수도 있다. 예를 들어, 블록아이(411)는 복호화 키 관리 시스템(430)에 접속하여 현 시점의 복호화 키(들)을 획득하고, 현 시점의 복호화 키(들)을 이용하여 암호화된 개인 키들을 복호화할 수 있다. 블록아이(411) 또는 복호화 키 관리 시스템(430)은 현 시점의 복호화 키(들)을 변경하고, 블록아이(411)는 변경된 복호화 키(들)에 대응하는 새로운 암호화 키(들)로 개인 키들을 재 암호화하여 재 암호화된 개인 키들을 데이터베이스(413)에 저장할 수 있다. 이 때, 변경된 복호화 키(들)은 복호화 키 관리 시스템(430)에 저장된다. 재 암호화된 개인 키들은 재 암호화되기 이전의 암호화된 개인 키들을 대체하여 저장될 수 있으며, 변경된 복호화 키(들)은 변경되기 이전의 복호화 키(들)을 대체하여 저장될 수 있다.(3) When there is no transaction to be performed, the
미리 정해진 주기(예를 들어, 매초)마다 상술한 (1) 내지 (3)의 과정을 반복함으로써, 반복적으로 키 갱신 과정이 수행될 수 있다. By repeating the above-described processes (1) to (3) every predetermined period (eg, every second), the key update process may be repeatedly performed.
실시예에 따라, 수행해야할 거래의 존재 여부와 무관하게, 미리 정해진 주기에 키 갱신 알고리즘이 수행될 수도 있다. 예를 들어, 수행해야할 거래가 있음에도 불구하고, 미리 정해진 주기가 되면 해당 거래의 수행이 홀딩된 채로 키 갱신 알고리즘이 우선적으로 수행될 수 있다. 이 경우, 키 갱신 알고리즘의 수행이 완료된 후 홀딩된 해당 거래의 수행이 재개될 수 있다.According to an embodiment, the key update algorithm may be performed at a predetermined period regardless of whether a transaction to be performed exists. For example, even though there is a transaction to be performed, when a predetermined period occurs, the key update algorithm may be preferentially performed while the execution of the transaction is held. In this case, after the execution of the key update algorithm is completed, the execution of the held transaction may be resumed.
또는, 키 갱신 알고리즘의 수행 도중에 수행해야할 거래가 발생한 경우, 키 갱신 알고리즘의 수행이 홀딩된 채로 발생한 거래가 우선적으로 수행될 수 있다. 이 경우, 발생한 거래의 수행이 완료된 후 홀딩된 키 갱신 알고리즘의 수행이 재개될 수 있다.Alternatively, when a transaction to be performed occurs while the key update algorithm is being executed, the transaction generated while the key update algorithm is being executed may be preferentially performed. In this case, the execution of the held key update algorithm may be resumed after the execution of the generated transaction is completed.
또는, 키 갱신 알고리즘의 수행을 하기 위하여 미리 정해진 시간 슬롯을 초과하는 시간이 요구되는 경우, 블록아이(411) 혹은 복호화 키 관리 시스템(430)은 데이터베이스(413)에 저장된 암호화된 개인키들 중 일부에 해당하는 복호화 키(들)을 갱신한 뒤, 다음 시간 슬롯에서 나머지 일부의 암호화된 개인키들에 해당하는 복호화 키(들)을 갱신할 수 있다.Alternatively, when a time exceeding a predetermined time slot is required to perform the key update algorithm, the
이상에서 설명한 키 갱신 알고리즘은 블록아이(411)가 수행하여야 할 거래가 없는 경우 암호화된 개인키의 복호화 키를 미리 정해진 주기(예를 들어, 매초)마다 갱신하여 사용자의 개인 키를 재 암호화함으로써, 보안이 강화된 암호화폐 지갑의 키를 관리하는 시스템을 제공할 수 있다. 예를 들어, 외부에서 암호화된 사용자의 개인 키가 저장된 데이터베이스(413)에 접근하더라도 복호화 키를 보안된 네트워크(440)를 이용한 별도의 시스템에 저장함으로써 외부의 접근으로부터 복호화 키의 유출을 1차적으로 방어할 수 있다. 또한, 저장된 복호화 키를 매초마다 변경함으로써, 암호화된 사용자의 개인키가 저장된 데이터베이스(413) 및 복호화 키가 저장된 데이터베이스에 동시에 접근하는 경우를 제외하고는 사용자의 개인키를 복원할 수 없도록 하는 2차적인 방어를 통해 보안을 더욱 강화할 수 있다.The key update algorithm described above re-encrypts the user's private key by re-encrypting the user's private key by updating the decryption key of the encrypted private key at a predetermined period (eg, every second) when there is no transaction to be performed by the
도 4에 도시된 구성들은 일실시예에 따른 키 관리 메커니즘이 수행되는 암호화폐 거래소 시스템의 구성의 일 예시에 불과하며, 일실시예에 따른 키 관리 메커니즘을 수행하는 주체를 물리적으로 구분되는 각 구성으로 한정하는 것은 아니다. 상술한 바와 같이, 도 4에 도시된 구성들에 의해 수행되는 동작은 서버에 포함된 적어도 하나의 프로세서에 의해 수행될 수 있다.The configurations shown in FIG. 4 are only an example of a configuration of a cryptocurrency exchange system in which a key management mechanism according to an embodiment is performed, and each configuration that physically separates a subject performing a key management mechanism according to an embodiment is not limited to As described above, operations performed by the components illustrated in FIG. 4 may be performed by at least one processor included in the server.
도 5는 일실시예에 따른 장치의 구성의 예시도이다.5 is an exemplary diagram of a configuration of an apparatus according to an embodiment.
도 5를 참조하면, 장치(500)는 프로세서(501), 메모리(503) 및 입출력 장치(505)를 포함한다.Referring to FIG. 5 , the
일실시예에 따른 장치(500)는 상술한 키 관리 방법을 수행하는 장치로, 서버 및 사용자의 디바이스(예를 들어, 휴대폰, 컴퓨터 등)를 포함할 수 있다. 프로세서(501)는 도 1 내지 도 4를 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(503)는 키 관리 방법과 관련된 정보를 저장하거나 상술한 키 관리 방법이 구현된 프로그램을 저장할 수 있다. 메모리(503)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.The
프로세서(501)는 프로그램을 실행하고, 장치(500)를 제어할 수 있다. 프로 세서(501)에 의하여 실행되는 프로그램의 코드는 메모리(503)에 저장될 수 있다. 장치(500)는 입출력 장치(505)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다.The
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using a general purpose computer or special purpose computer. The processing device may execute an operating system (OS) and a software application running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in a computer-readable recording medium.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions 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, etc. alone or in combination, and the program instructions recorded on the medium are specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software. may be Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute 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 devices described above may be configured to operate as one or a plurality of software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, a person skilled in the art may apply various technical modifications and variations based thereon. For example, the described techniques are performed in an order different from the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.
Claims (20)
미리 정해진 주기로 상기 서버와 관련된 블록체인의 탐색에 기초하여, 미체결된 암호화폐 거래가 있는지 여부를 확인하는 단계;
상기 거래가 없는 경우,
상기 서버에 등록된 임의의 사용자의 암호화폐 지갑에 대응하여 제1 데이터베이스에 저장된 암호화된 개인 키를 갱신하는 단계;
상기 암호화된 개인 키의 갱신에 반응하여, 상기 임의의 사용자의 암호화폐 지갑에 대응하여 제2 데이터베이스에 저장된 상기 암호화된 개인 키의 복호화 키를 갱신하는 단계; 및
상기 미체결된 암호화폐 거래가 발생한 경우, 상기 암호화된 개인 키를 갱신하는 단계 및 상기 암호화된 개인 키의 복호화 키를 갱신하는 단계를 중단하는 단계; 및
상기 거래가 있는 경우,
상기 거래에 대응하는 암호화폐 지갑의 개인 키에 기초하여 상기 거래를 수행하는 단계
를 포함하고,
상기 제2 데이터베이스는 상기 제1 데이터베이스와 구분되는 네트워크를 통해 연결되고,
상기 수행된 거래는 상기 블록체인에 기록되는,
암호화폐 거래소 서버의 키 관리 방법.
In the key management method of the cryptocurrency exchange server,
checking whether there is an outstanding cryptocurrency transaction based on a search of a block chain related to the server at a predetermined period;
In the absence of the above transaction,
updating the encrypted private key stored in the first database in response to the cryptocurrency wallet of any user registered in the server;
in response to updating the encrypted private key, updating a decryption key of the encrypted private key stored in a second database corresponding to the cryptocurrency wallet of the arbitrary user; and
stopping the updating of the encrypted private key and the updating of the decryption key of the encrypted private key when the unconfirmed cryptocurrency transaction occurs; and
If the above transaction exists,
performing the transaction based on the private key of the cryptocurrency wallet corresponding to the transaction
including,
The second database is connected through a network separated from the first database,
The performed transaction is recorded in the blockchain,
How to manage keys in cryptocurrency exchange servers.
상기 암호화된 개인 키를 갱신하는 단계는
상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여,
해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하는 단계;
상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하는 단계;
상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계;
상기 획득된 복호화 키를 변경하는 단계; 및
상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는 단계
를 포함하고,
상기 복호화 키를 갱신하는 단계는
상기 변경된 복호화 키를 상기 제2 데이터베이스에 저장하는 단계
를 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
According to claim 1,
The step of updating the encrypted private key is
Corresponding to each encrypted private key stored in the first database,
obtaining a corresponding encrypted private key from the first database;
obtaining a decryption key corresponding to the obtained encrypted private key from the second database;
decrypting the obtained encrypted private key with the obtained decryption key;
changing the obtained decryption key; and
re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing it in the first database
including,
The step of updating the decryption key is
Storing the changed decryption key in the second database
containing,
How to manage keys in cryptocurrency exchange servers.
상기 거래를 수행하는 단계는
상기 제1 데이터베이스에서 상기 거래에 대응하는 암호화된 개인 키를 획득하는 단계;
상기 제2 데이터베이스에서 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 획득하는 단계;
상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계;
상기 복호화된 개인 키에 기초하여, 상기 거래를 수행하는 단계; 및
상기 수행된 거래의 내역을 저장하는 단계
를 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
According to claim 1,
The step of performing the transaction is
obtaining an encrypted private key corresponding to the transaction from the first database;
obtaining a decryption key corresponding to the obtained encrypted private key from the second database;
decrypting the obtained encrypted private key with the obtained decryption key;
performing the transaction based on the decrypted private key; and
Storing the details of the performed transaction
containing,
How to manage keys in cryptocurrency exchange servers.
상기 제2 데이터베이스는 네트워크 보안에 기초하여 접근 대상이 제한되는,
암호화폐 거래소 서버의 키 관리 방법.
According to claim 1,
The second database is an access target is restricted based on network security,
How to manage keys in cryptocurrency exchange servers.
제1 사용자의 요청에 반응하여, 상기 제1 사용자의 제1 암호화폐 지갑 및 상기 제1 암호화폐 지갑에 대응하는 개인 키를 생성하는 단계;
상기 생성된 개인 키를 암호화하여 상기 제1 데이터베이스에 저장하는 단계; 및
상기 생성된 개인 키의 복호화 키를 상기 제2 데이터베이스에 저장하는 단계
를 더 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
According to claim 1,
in response to a request of a first user, generating a first cryptocurrency wallet of the first user and a private key corresponding to the first cryptocurrency wallet;
encrypting the generated private key and storing it in the first database; and
Storing the decryption key of the generated private key in the second database
further comprising,
How to manage keys in cryptocurrency exchange servers.
상기 개인 키를 생성하는 단계는
상기 제1 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공하는 단계
를 더 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
6. The method of claim 5,
The step of generating the private key is
providing the first user with mnemonic words for recovery of the private key;
further comprising,
How to manage keys in cryptocurrency exchange servers.
상기 개인 키의 복호화 키를 제2 데이터베이스에 저장하는 단계; 및
미리 정해진 갱신 조건에 기초하여, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 및 상기 제2 데이터베이스에 저장된 복호화 키를 갱신하는 단계
를 포함하고,
상기 갱신 조건은 미체결된 암호화폐 거래의 유무와 관련된 제1 조건 및 미리 정해진 갱신 주기와 관련된 제2 조건을 포함하고,
상기 개인 키는 상기 미체결된 암호화폐 거래의 수행에 이용되고, 상기 개인 키를 이용하여 수행된 암호화폐 거래는 암호화폐 거래소 서버와 관련된 블록체인에 기록되는,
암호화폐 거래소 서버의 키 관리 방법.
Encrypting the private key generated in response to the user's cryptocurrency wallet and storing it in a first database;
storing a decryption key of the private key in a second database; and
updating the encrypted private key stored in the first database and the decryption key stored in the second database based on a predetermined update condition;
including,
The update condition includes a first condition related to the presence or absence of an outstanding cryptocurrency transaction and a second condition related to a predetermined update cycle,
The private key is used to perform the unconfirmed cryptocurrency transaction, and the cryptocurrency transaction performed using the private key is recorded in a blockchain related to a cryptocurrency exchange server,
How to manage keys in cryptocurrency exchange servers.
상기 갱신하는 단계는
상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여,
해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하는 단계;
상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하는 단계;
상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하는 단계;
상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하는 단계; 및
상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는 단계
를 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
8. The method of claim 7,
The updating step is
Corresponding to each encrypted private key stored in the first database,
obtaining a corresponding encrypted private key from the first database;
obtaining a decryption key corresponding to the obtained encrypted private key from the second database;
decrypting the obtained encrypted private key with the obtained decryption key;
changing the obtained decryption key and storing it in the second database; and
re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing it in the first database
containing,
How to manage keys in cryptocurrency exchange servers.
상기 제1 데이터베이스에 저장하는 단계는
상기 사용자의 암호화폐 지갑에 대응하는 상기 개인 키를 생성하는 단계; 및
상기 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공하는 단계
를 더 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
8. The method of claim 7,
The step of storing in the first database is
generating the private key corresponding to the user's cryptocurrency wallet; and
providing the user with mnemonic words for recovery of the private key;
further comprising,
How to manage keys in cryptocurrency exchange servers.
갱신 주기와 관련된 제1 조건 및 거래 유무와 관련된 제2 조건이 만족됨에 따라 상기 갱신하는 단계가 수행되는 도중, 거래 요청을 수신하는 단계;
상기 거래 요청에 반응하여, 상기 갱신하는 단계의 진행을 중단하는 단계;
상기 거래 요청을 처리하는 단계; 및
상기 거래 요청의 처리로 인하여 상기 제2 조건이 다시 충족된 경우, 상기 갱신하는 단계의 진행을 재개하는 단계
를 더 포함하는,
암호화폐 거래소 서버의 키 관리 방법.
8. The method of claim 7,
receiving a transaction request while the updating is performed as the first condition related to the update cycle and the second condition related to the existence of a transaction are satisfied;
stopping the progress of the updating step in response to the transaction request;
processing the transaction request; and
When the second condition is satisfied again due to the processing of the transaction request, resuming the progress of the updating step;
further comprising,
How to manage keys in cryptocurrency exchange servers.
상기 제2 데이터베이스는
네트워크 보안에 기초하여 접근 대상이 제한되는,
암호화폐 거래소 서버의 키 관리 방법.
8. The method of claim 7,
The second database is
Access is restricted based on network security,
How to manage keys in cryptocurrency exchange servers.
A computer program stored on a medium in combination with hardware to execute the method of any one of claims 1 to 9, 11 and 12.
미리 정해진 주기로 상기 서버와 관련된 블록체인의 탐색에 기초하여, 미체결된 암호화폐 거래가 있는지 여부를 확인하고,
상기 거래가 없는 경우, 상기 서버에 등록된 임의의 사용자의 암호화폐 지갑에 대응하여, 제1 데이터베이스에 저장된 암호화된 개인 키를 갱신하고, 상기 암호화된 개인 키의 갱신에 반응하여, 상기 임의의 사용자의 암호화폐 지갑에 대응하여 제2 데이터베이스에 저장된 상기 암호화된 개인 키의 복호화 키를 갱신하고, 상기 미체결된 암호화폐 거래가 발생한 경우, 상기 암호화된 개인 키를 갱신하는 단계 및 상기 암호화된 개인 키의 복호화 키를 갱신하는 단계를 중단하며,
상기 거래가 있는 경우, 상기 거래에 대응하는 암호화폐 지갑의 개인 키에 기초하여 상기 거래를 수행하는,
적어도 하나의 프로세서를 포함하고,
상기 제2 데이터베이스는 상기 제1 데이터베이스와 구분되는 네트워크를 통해 연결되고,
상기 수행된 거래는 상기 블록체인에 기록되는,
암호화폐 거래소 서버.
In the cryptocurrency exchange server,
Based on the search of the block chain related to the server at a predetermined period, it is checked whether there is an outstanding cryptocurrency transaction,
If there is no transaction, the encrypted private key stored in the first database is updated in response to the cryptocurrency wallet of any user registered in the server, and in response to the update of the encrypted private key, the user's Renewing the decryption key of the encrypted private key stored in the second database corresponding to the cryptocurrency wallet, and when the unconfirmed cryptocurrency transaction occurs, updating the encrypted private key and decrypting the encrypted private key aborts the step of renewing the key;
If there is the transaction, performing the transaction based on the private key of the cryptocurrency wallet corresponding to the transaction,
at least one processor;
The second database is connected through a network separated from the first database,
The performed transaction is recorded in the blockchain,
Cryptocurrency exchange server.
상기 프로세서는,
상기 갱신함에 있어서,
상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여,
해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하고,
상기 해당하는 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하고,
상기 획득된 복호화 키로 상기 해당하는 암호화된 개인 키를 복호화하고,
상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하며,
상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는,
암호화폐 거래소 서버.
15. The method of claim 14,
The processor is
In the update,
Corresponding to each encrypted private key stored in the first database,
obtaining a corresponding encrypted private key from the first database;
obtaining a decryption key corresponding to the corresponding encrypted private key from the second database;
Decrypt the corresponding encrypted private key with the obtained decryption key,
Change the obtained decryption key and store it in the second database,
re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing it in the first database,
Cryptocurrency exchange server.
상기 프로세서는
상기 거래를 수행함에 있어서,
상기 제1 데이터베이스에서 상기 거래에 대응하는 암호화된 개인 키를 획득하고,
상기 제2 데이터베이스에서 상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 획득하고,
상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하고,
상기 복호화된 개인 키에 기초하여, 상기 거래를 수행하며,
상기 수행된 거래의 내역을 저장하는,
암호화폐 거래소 서버.
15. The method of claim 14,
the processor
In carrying out the transaction,
obtaining an encrypted private key corresponding to the transaction from the first database;
obtaining a decryption key corresponding to the obtained encrypted private key from the second database;
Decrypt the obtained encrypted private key with the obtained decryption key,
Based on the decrypted private key, performing the transaction,
storing the details of the performed transaction,
Cryptocurrency exchange server.
상기 제2 데이터베이스는 네트워크 보안에 기초하여 접근 대상이 제한되는,
암호화폐 거래소 서버.
15. The method of claim 14,
The second database is an access target is restricted based on network security,
Cryptocurrency exchange server.
상기 개인 키의 복호화 키를 제2 데이터베이스에 저장하며,
미리 정해진 갱신 조건에 기초하여, 상기 제1 데이터베이스에 저장된 암호화된 개인 키 및 상기 제2 데이터베이스에 저장된 복호화 키를 갱신하는,
적어도 하나의 프로세서를 포함하고,
상기 갱신 조건은 미체결된 암호화폐 거래의 유무와 관련된 제1 조건 및 미리 정해진 갱신 주기와 관련된 제2 조건을 포함하고,
상기 개인 키는 상기 미체결된 암호화폐 거래의 수행에 이용되고, 상기 개인 키를 이용하여 수행된 암호화폐 거래는 암호화폐 거래소 서버와 관련된 블록체인에 기록되는,
암호화폐 거래소 서버.
The private key generated in response to the user's cryptocurrency wallet is encrypted and stored in the first database,
storing the decryption key of the private key in a second database;
updating the encrypted private key stored in the first database and the decryption key stored in the second database based on a predetermined update condition;
at least one processor;
The update condition includes a first condition related to the presence or absence of an outstanding cryptocurrency transaction and a second condition related to a predetermined update cycle,
The private key is used to perform the unconfirmed cryptocurrency transaction, and the cryptocurrency transaction performed using the private key is recorded in a blockchain related to a cryptocurrency exchange server,
Cryptocurrency exchange server.
상기 프로세서는,
상기 갱신함에 있어서,
상기 제1 데이터베이스에 저장된 암호화된 개인 키 각각에 대응하여,
해당하는 암호화된 개인 키를 상기 제1 데이터베이스에서 획득하고,
상기 획득된 암호화된 개인 키에 대응하는 복호화 키를 상기 제2 데이터베이스에서 획득하고,
상기 획득된 복호화 키로 상기 획득된 암호화된 개인 키를 복호화하고,
상기 획득된 복호화 키를 변경하여 상기 제2 데이터베이스에 저장하며,
상기 변경된 복호화 키에 대응하는 암호화 키로 상기 복호화된 개인 키를 재암호화하여 상기 제1 데이터베이스에 저장하는,
암호화폐 거래소 서버.
19. The method of claim 18,
The processor is
In the update,
Corresponding to each encrypted private key stored in the first database,
obtaining a corresponding encrypted private key from the first database;
obtaining a decryption key corresponding to the obtained encrypted private key from the second database;
Decrypt the obtained encrypted private key with the obtained decryption key,
Change the obtained decryption key and store it in the second database,
re-encrypting the decrypted private key with an encryption key corresponding to the changed decryption key and storing it in the first database,
Cryptocurrency exchange server.
상기 프로세서는,
상기 제1 데이터베이스에 저장함에 있어서,
상기 사용자의 암호화폐 지갑에 대응하는 상기 개인 키를 생성하며,
상기 사용자에게 상기 개인 키의 복구를 위한 니모닉 워드(Mnemonic words)를 제공하는,
암호화폐 거래소 서버.
19. The method of claim 18,
The processor is
In storing in the first database,
generating the private key corresponding to the user's cryptocurrency wallet,
providing the user with mnemonic words for recovery of the private key,
Cryptocurrency exchange server.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190128526 | 2019-10-16 | ||
KR20190128526 | 2019-10-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210045326A KR20210045326A (en) | 2021-04-26 |
KR102446985B1 true KR102446985B1 (en) | 2022-09-26 |
Family
ID=75733684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200133635A KR102446985B1 (en) | 2019-10-16 | 2020-10-15 | Key management mechanism for cryptocurrency wallet |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102446985B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102432139B1 (en) * | 2021-11-02 | 2022-08-16 | 최민호 | Cryptocurrency wallet system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130145160A1 (en) * | 2011-12-05 | 2013-06-06 | Certicom Corp. | System and method for mounting encrypted data based on availability of a key on a network |
KR101954863B1 (en) * | 2018-07-09 | 2019-03-06 | 서울대학교산학협력단 | Online wallet apparatus, and method for generating and verifying online wallet |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3425738B2 (en) * | 1996-12-06 | 2003-07-14 | 株式会社エヌ・ティ・ティ・データ | Electronic money system, transaction information generation method, and recording medium |
KR101936272B1 (en) * | 2016-08-04 | 2019-01-08 | 주식회사 한컴시큐어 | Data encryption management apparatus for supporting life-cycle management of the encryption key and operating method thereof |
KR20190018377A (en) * | 2017-08-14 | 2019-02-22 | 김일영 | Method and apparatus for storing mnemonic of hardware bitcoin wallet, and computer readable recording medium |
KR20190095843A (en) * | 2018-02-07 | 2019-08-16 | 남기원 | Crypto-Currency Exchanges Managing System and Method of the same |
-
2020
- 2020-10-15 KR KR1020200133635A patent/KR102446985B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130145160A1 (en) * | 2011-12-05 | 2013-06-06 | Certicom Corp. | System and method for mounting encrypted data based on availability of a key on a network |
KR101954863B1 (en) * | 2018-07-09 | 2019-03-06 | 서울대학교산학협력단 | Online wallet apparatus, and method for generating and verifying online wallet |
Also Published As
Publication number | Publication date |
---|---|
KR20210045326A (en) | 2021-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7912223B2 (en) | Method and apparatus for data protection | |
JP4902207B2 (en) | System and method for managing multiple keys for file encryption and decryption | |
US9158933B2 (en) | Protection of encryption keys in a database | |
KR100737628B1 (en) | Attestation using both fixed token and portable token | |
US20170024425A1 (en) | Client computer for updating a database stored on a server via a network | |
US8874922B2 (en) | Systems and methods for multi-layered authentication/verification of trusted platform updates | |
US8181028B1 (en) | Method for secure system shutdown | |
US20130124866A1 (en) | Client-server system with security for untrusted server | |
EP3101645A1 (en) | Secret calculation method, secret calculation system, secret calculation server, registrant terminal, user terminal and program | |
US10250387B1 (en) | Quantum computer resistant algorithm cryptographic key generation, storage, and transfer device | |
CN107040520B (en) | Cloud computing data sharing system and method | |
JP2022531497A (en) | Transfer of digital asset ownership over a one-way connection | |
WO2022206453A1 (en) | Method and apparatus for providing cross-chain private data | |
JP2023535040A (en) | Master key escrow process | |
KR20180010482A (en) | Method and apparatus for security of internet of things devices | |
CA3028091C (en) | Securing data at rest utilizing cloud provider service agnostic encrypted data transportability | |
KR102446985B1 (en) | Key management mechanism for cryptocurrency wallet | |
Pavan Kumar et al. | Server security in cloud computing using block-chaining technique | |
US10261920B2 (en) | Static image RAM drive | |
US9436849B2 (en) | Systems and methods for trading of text based data representation | |
CN110914826A (en) | System and method for distributed data mapping | |
JP6318305B2 (en) | How to manage subscriptions on the provisioning server | |
US11921877B2 (en) | Efficient random tokenization in the cloud | |
KR102496436B1 (en) | Method of storing plurality of data pieces in storage in blockchain network and method of receiving plurality of data pieces | |
KR102199464B1 (en) | Method of authentication among nodes participating in consortium blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |