KR102364254B1 - A method and apparatus for management key of entity in blockchain - Google Patents

A method and apparatus for management key of entity in blockchain Download PDF

Info

Publication number
KR102364254B1
KR102364254B1 KR1020200052272A KR20200052272A KR102364254B1 KR 102364254 B1 KR102364254 B1 KR 102364254B1 KR 1020200052272 A KR1020200052272 A KR 1020200052272A KR 20200052272 A KR20200052272 A KR 20200052272A KR 102364254 B1 KR102364254 B1 KR 102364254B1
Authority
KR
South Korea
Prior art keywords
node
entity
key
hash
hash chain
Prior art date
Application number
KR1020200052272A
Other languages
Korean (ko)
Other versions
KR20210133547A (en
Inventor
박창섭
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020200052272A priority Critical patent/KR102364254B1/en
Publication of KR20210133547A publication Critical patent/KR20210133547A/en
Application granted granted Critical
Publication of KR102364254B1 publication Critical patent/KR102364254B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

블록 체인에서 엔티티의 키 관리 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 생성 방법은 블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하는 단계; 상기 i번째 개인키로부터 i번째 공개키를 획득하는 단계; 상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하는 단계; 상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하는 단계; 상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하는 단계; 상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하는 단계; 및 상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑하는 단계를 포함할 수 있다.A method and apparatus for managing an entity's key in a blockchain are disclosed. A key generation method performed by a specific entity constituting a block chain according to an embodiment of the present invention includes generating an i-th private key corresponding to a specific entity of the block chain; obtaining an i-th public key from the i-th private key; using the i-th public key and a hash function to generate an i-th hash chain consisting of consecutive nodes in one-way and corresponding to the specific entity; generating an i+1th private key corresponding to the specific entity; obtaining an i+1th public key from the i+1th private key; generating an i+1th hash chain corresponding to the specific entity using the i+1th public key and a hash function; and mapping the last node of the i+1th hash chain to the i-th hash chain.

Figure R1020200052272
Figure R1020200052272

Description

블록 체인에서 엔티티의 키 관리 방법 및 장치{A METHOD AND APPARATUS FOR MANAGEMENT KEY OF ENTITY IN BLOCKCHAIN}A METHOD AND APPARATUS FOR MANAGEMENT KEY OF ENTITY IN BLOCKCHAIN

본 발명은 블록 체인에서 엔티티의 키 관리 방법 및 장치에 관한 것으로, 블록 체인에서 무한한 해시 체인을 활용한 엔티티의 키 생성 방법, 엔티티의 키 등록 방법, 엔티티 간의 키 교환 방법, 엔티티의 키 업데이트 방법에 관한 것이다. The present invention relates to a method and apparatus for managing an entity's key in a block chain, and relates to a method for generating an entity's key using an infinite hash chain in a block chain, a method for registering an entity's key, a method for exchanging a key between entities, and a method for updating an entity's key it's about

분산 ID(decentralized identity)란 기존 신원확인 방식과 달리 중앙 시스템에 의해 통제되지 않으며 개개인이 자신의 정보에 통제권을 가질 수 있게 하는 블록 체인 기반의 기술이다. Unlike the existing identification method, decentralized identity is not controlled by a central system and is a blockchain-based technology that allows individuals to have control over their own information.

블록 체인에는 블록 체인을 이루는 각 엔티티(entity)에 대응하는 분산 ID 또는 공개키 등이 등록되어 있다. 이 때, 각 엔티티는 공개키-개인키 쌍을 가지고 있으며, 공개키-개인키 쌍은 유효한 엔티티임을 인증하기 위해 이용된다. In the block chain, a distributed ID or public key corresponding to each entity constituting the block chain is registered. At this time, each entity has a public key-private key pair, and the public key-private key pair is used to authenticate that it is a valid entity.

엔티티의 공개키-개인키 쌍은 암호의 안전성을 위하여 일정 주기마다 변경되어야 한다. 종래 엔티티의 공개키-개인키 쌍이 변경되거나 교체되면 분산 ID도 함께 교체되기 때문에 기존의 엔티티가 아닌 새로운 엔티티로 취급되며, 기존의 엔티티의 특징이나 성질을 보존하지 못하는 한계가 있다. An entity's public key-private key pair must be changed at regular intervals for cryptographic safety. When the public key-private key pair of a conventional entity is changed or replaced, the distributed ID is also replaced, so it is treated as a new entity rather than an existing entity, and there is a limitation in that the characteristics or properties of the existing entity cannot be preserved.

따라서, 이러한 문제를 해결하기 위한 블록 체인의 키 관리 기술이 요구된다. Therefore, the key management technology of the block chain to solve this problem is required.

본 발명은 블록 체인에서 엔티티의 공개키-개인키 쌍이 변경되거나 교체될 때 분산 ID가 교체되어 기존의 엔티티의 특징, 성질을 보존하지 못하고 새로운 엔티티로 취급되는 것을 해결하는 방법 및 장치를 제공한다. The present invention provides a method and apparatus for solving the problem that the distributed ID is replaced when an entity's public key-private key pair is changed or replaced in a block chain, thereby not preserving the characteristics and properties of an existing entity and treating it as a new entity.

또한, 본 발명은 무한한 해시 체인을 이용하여 엔티티들의 키를 관리함으로써 엔티티의 공개키-개인키 쌍이 교체되더라도 엔티티의 분산 ID의 교체 없이 엔티티의 특징, 성질을 보존하는 방법 및 장치를 제공한다.In addition, the present invention provides a method and apparatus for preserving the characteristics and properties of an entity without replacing the distributed ID of the entity even if the public key-private key pair of the entity is replaced by managing the keys of the entities using an infinite hash chain.

본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 생성 방법은 블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하는 단계; 상기 i번째 개인키로부터 i번째 공개키를 획득하는 단계; 상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하는 단계; 상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하는 단계; 상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하는 단계; 상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하는 단계; 및 상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑하는 단계를 포함할 수 있다.A key generation method performed by a specific entity constituting a block chain according to an embodiment of the present invention includes generating an i-th private key corresponding to a specific entity of the block chain; obtaining an i-th public key from the i-th private key; using the i-th public key and a hash function to generate an i-th hash chain consisting of consecutive nodes in one-way and corresponding to the specific entity; generating an i+1th private key corresponding to the specific entity; obtaining an i+1th public key from the i+1th private key; generating an i+1th hash chain corresponding to the specific entity using the i+1th public key and a hash function; and mapping the last node of the i+1th hash chain to the i-th hash chain.

상기 i가 1인 경우, 1번째 공개키 및 1번째 해시 체인의 마지막 노드를 해시 함수에 입력하여 상기 특정 엔티티에 대응하는 분산 ID를 생성하는 단계를 더 포함할 수 있다.When i is 1, the method may further include generating a distributed ID corresponding to the specific entity by inputting the first public key and the last node of the first hash chain into a hash function.

상기 i번째 해시 체인을 생성하는 단계는, 임의의 시드(seed) 및 상기 특정 엔티티에 대응하는 비밀키를 해시 함수에 입력하여 i번째 해시 체인의 n번째 노드를 획득하는 단계; 및 j번째 노드 및 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득하는 단계를 포함할 수 있다.The generating of the i-th hash chain may include: obtaining an n-th node of the i-th hash chain by inputting an arbitrary seed and a secret key corresponding to the specific entity into a hash function; and inputting the j-th node and the i-th public key into a hash function to obtain a j-1 th node.

본 발명의 일실시예에 따른 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 등록 방법은 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하는 단계; 상기 분산 ID가 블록 체인에 등록되어 있는지 판단하는 단계; 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하는 단계; 및 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록하는 단계를 포함할 수 있다.A method of registering a key in a block chain performed by a key management device according to an embodiment of the present invention is a distributed ID of the specific entity, a public key of the specific entity, and the specific entity from a specific entity in the block chain. obtaining a last node among consecutive nodes constituting a hash chain of ; determining whether the distributed ID is registered in a block chain; if the distributed ID is not registered in the block chain, registering the distributed ID and public key in the block chain as the distributed ID and public key of the specific entity; and when the distributed ID is not registered in the block chain, registering the last received node as a root node and a commitment node of the specific entity in the block chain.

상기 특정 엔티티의 공개키는, 상기 특정 엔티티에 대응하는 개인키로부터 생성되고, 상기 특정 엔티티의 해시 체인은, 상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성되고, 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티의 분산 ID는, 상기 특정 엔티티의 해시 체인의 마지막 노드 및 상기 특정 엔티티의 공개키가 해시 함수에 입력된 결과일 수 있다.The public key of the specific entity is generated from a private key corresponding to the specific entity, and the hash chain of the specific entity is generated using the public key and hash function of the specific entity, and is a one-way It is composed of consecutive nodes, and the distributed ID of the specific entity may be a result of inputting the last node of the hash chain of the specific entity and the public key of the specific entity into a hash function.

본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 교환 방법은 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하는 단계; 상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하는 단계; 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하는 단계; 및 상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하는 단계를 포함할 수 있다.In the key exchange method performed by a specific entity constituting a block chain according to an embodiment of the present invention, a public key and a commitment node of another entity registered in the block chain are exchanged from a key management device. obtaining; receiving, from the other entity, a previous node of a current node corresponding to a commitment node of the other entity in the hash chain of the other entity; sending the previous node of the current node corresponding to the commitment node of the specific entity in the hash chain of the specific entity to the other entity; and confirming whether a result of inputting the previous node of the other entity and the public key of the other entity into a hash function is the same as the commitment node of the other entity.

상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록될 수 있다.In the block chain, public keys of entities constituting the block chain are stored, and a current node among consecutive nodes constituting a one-way hash chain corresponding to the entities is a commitment node of the entities. can be registered.

상기 다른 엔티티의 공개키는, 상기 다른 엔티티에 대응하는 개인키로부터 생성되고, 상기 특정 엔티티의 해시 체인은, 상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성될 수 있다.The public key of the other entity may be generated from a private key corresponding to the other entity, and the hash chain of the specific entity may be generated using the public key and hash function of the specific entity.

상기 해시 함수에 입력한 결과와 상기 다른 엔티티의 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 특정 엔티티의 커미트먼트 노드로 업데이트할 것을 요청하는 단계를 더 포함할 수 있다.If the result input to the hash function is the same as the commitment node of the other entity, update the previous node of the current node corresponding to the commitment node of the specific entity in the hash chain of the specific entity to the commitment node of the specific entity It may further include the step of requesting.

본 발명의 일실시예에 따른 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 업데이트 방법은 상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하는 단계; 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하는 단계; 및 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트 하는 단계를 포함할 수 있다.A method for updating a key in a block chain performed by a key management device according to an embodiment of the present invention includes i) a request public key of the specific entity from a specific entity of the block chain, ii) a current hash chain ( a request commitment node for a hash chain); iii) obtaining a request root node for a next hash chain; checking whether the result of inputting the request commitment node and the requested public key into a hash function is the same as i) a registration commitment node of the specific entity registered in the block chain and ii) a registration root node of a next hash chain; and when the result of inputting the request commitment node and the request public key into the hash function is the same as the registration commitment node, updating the request commitment node of the specific entity to the registration commitment node.

상기 블록 체인은 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록되고, 상기 엔티티들의 해시 체인을 구성하는 연속된 노드들 중 마지막 노드가 루트 노드가 등록되고, 상기 엔티티들의 공개키는, 상기 엔티티들에 대응하는 개인키로부터 생성되고, 상기 엔티티들의 해시 체인은, 상기 엔티티들의 공개키 및 해시 함수를 이용하여 생성될 수 있다.In the block chain, public keys of entities constituting the block chain are stored, and a current node among consecutive nodes constituting a one-way hash chain corresponding to the entities is registered as a commitment node of the entities, and the entity The root node of the last node among consecutive nodes constituting the hash chain of the entities is registered, the public key of the entities is generated from the private key corresponding to the entities, and the hash chain of the entities is the public key of the entities. It can be generated using a key and a hash function.

상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 커미트먼트 노드로 등록된 현재 노드의 이전 노드로 계산되는 무결성 코드가 등록되고, 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 요청 커미트먼트 노드로 무결성 코드를 계산하여 블록 체인에 등록된 상기 특정 엔티티의 무결성 코드와 비교하는 단계를 더 포함할 수 있다.In the block chain, an integrity code calculated as a previous node of a current node registered as a commitment node among consecutive nodes constituting a one-way hash chain corresponding to entities constituting the block chain is registered, and the request commitment If the result of inputting the node and the request public key into the hash function is the same as the registration commitment node, calculating an integrity code with the request commitment node and comparing it with the integrity code of the specific entity registered in the block chain can

상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트하는 단계를 더 포함할 수 있다.If the result of inputting the request commitment node and the requested public key into the hash function is the same as the registration root node for the next hash chain of the specific entity, the requested public key is set as the registered public key of the specific entity registered in the block chain. The step of updating may be further included.

상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 루트 노드를 상기 특정 엔티티의 등록 루트 노드로 업데이트 하는 단계를 더 포함할 수 있다.If the result of inputting the request commitment node and the requested public key into the hash function is the same as the registration root node for the next hash chain of the specific entity, updating the request root node to the registration root node of the specific entity is further performed. may include

본 발명의 일실시예에 따른 컴퓨터에서 판독 가능한 기록 매체에 있어서, 상기 기록 매체는, 블록 체인(blockchain)을 구성하는 엔티티(entity)들 각각의 i) 분산 ID, ii) i번째 공개키, iii) i번째 해시 체인(hash chain)의 루트 노드(root node), iv) i번째 해시 체인에 대한 커미트먼트 노드(commitment node) 및 v) i+1번째 해시 체인의 루트 노드가 기록되고, 상기 엔티티들의 i번째 공개키는, 상기 엔티티들에 대응하는 i번째 개인키로부터 생성되고, 상기 엔티티들의 i번째 해시 체인은, 일방향(one-way)의 연속된 노드들로 구성되고, 상기 엔티티들의 i번째 공개키 및 해시 함수를 이용하여 생성되고, 상기 엔티티들의 i+1번째 해시 체인은, 일방향의 연속된 노드들로 구성되고, 상기 엔티티들의 i+1번째 공개키 및 해시 함수를 이용하여 생성되고, 상기 엔티티들의 분산 ID는, 상기 엔티티들의 0번째 해시 체인의 마지막 노드 및 상기 엔티티들의 0번째 공개키를 해시 함수에 입력하여 생성될 수 있다. In a computer-readable recording medium according to an embodiment of the present invention, the recording medium includes: i) a distributed ID of each of entities constituting a block chain, ii) an i-th public key, iii ) the root node of the i-th hash chain, iv) a commitment node for the i-th hash chain, and v) the root node of the i+1-th hash chain are recorded, and the The i-th public key is generated from the i-th private key corresponding to the entities, and the i-th hash chain of the entities is composed of one-way consecutive nodes, and the i-th public key of the entities is It is generated using a key and a hash function, and the i+1th hash chain of the entities is composed of consecutive nodes in one direction, and is generated using the i+1th public key and hash function of the entities, and the The distributed ID of entities may be generated by inputting the last node of the 0th hash chain of the entities and the 0th public key of the entities into a hash function.

본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서, 상기 특정 엔티티는 프로세서를 포함하고, 상기 프로세서는, 블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하고, 상기 i번째 개인키로부터 i번째 공개키를 획득하고, 상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하고, 상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하고, 상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하고, 상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하고, 상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑할 수 있다. In a specific entity constituting a block chain according to an embodiment of the present invention, the specific entity includes a processor, and the processor obtains an i-th private key corresponding to the specific entity of the block chain. generating, obtaining an i-th public key from the i-th private key, using the i-th public key and a hash function, consisting of continuous nodes in one-way, i corresponding to the specific entity A hash chain is generated, an i+1th private key corresponding to the specific entity is generated, an i+1th public key is obtained from the i+1th private key, and the i+1th private key is generated. An i+1-th hash chain corresponding to the specific entity may be generated using a public key and a hash function, and the last node of the i+1-th hash chain may be mapped to the i-th hash chain.

본 발명의 일실시예에 따른 블록 체인(blockchain)의 키 등록 방법을 수행하는 키 관리 장치에 있어서, 상기 키 관리 장치는 프로세서를 포함하고, 상기 프로세서는, 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하고, 상기 분산 ID가 블록 체인에 등록되어 있는지 판단하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록할 수 있다. In a key management apparatus for performing a method for registering a key in a block chain according to an embodiment of the present invention, the key management apparatus includes a processor, wherein the processor receives the information from a specific entity in the block chain. Obtaining the distributed ID of a specific entity, the public key of the specific entity, and the last node among consecutive nodes constituting the hash chain of the specific entity, and determining whether the distributed ID is registered in the block chain, If the distributed ID is not registered in the block chain, the distributed ID and public key are registered in the block chain as the distributed ID and public key of the specific entity, and if the distributed ID is not registered in the block chain, the receiving One last node can be registered in the block chain as a root node and a commitment node of the specific entity.

본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서, 특정 엔티티는 프로세서를 포함하고, 상기 프로세서는, 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하고, 상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하고, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하고, 상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하고, 상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록될 수 있다.In a specific entity constituting a block chain according to an embodiment of the present invention, the specific entity includes a processor, and the processor includes a public key of another entity registered in the block chain from a key management device. and obtaining a commitment node, and receiving, from the other entity, a previous node of a current node corresponding to a commitment node of the other entity in the hash chain of the other entity, wherein the specific entity in the hash chain of the specific entity Send the previous node of the current node corresponding to the commitment node of the other entity to the other entity, and check whether the result of inputting the previous node of the other entity and the public key of the other entity into a hash function is the same as the commitment node of the other entity and, in the block chain, public keys of entities constituting the block chain are stored, and a current node among consecutive nodes constituting a one-way hash chain corresponding to the entities is a commitment of the entities. It can be registered as a node.

본 발명의 일실시예에 따른 블록 체인(blockchain)의 키 업데이트 방법을 수행하는 키 관리 장치에 있어서, 상기 키 관리 장치는 프로세서를 포함하고, 상기 프로세서는, 상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하고, 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하고, 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트할 수 있다.In a key management apparatus for performing a method for updating a key in a block chain according to an embodiment of the present invention, the key management apparatus includes a processor, wherein the processor receives information from a specific entity in the block chain. Obtaining i) a request public key of the specific entity, ii) a request commitment node for the current hash chain, iii) a request root node for the next hash chain, and Confirm that the result of inputting the node and the request public key into the hash function is the same as the i) registration commitment node and ii) the registration root node of the next hash chain of the specific entity registered in the block chain, and the request commitment node and the request When the result of inputting the public key into the hash function is the same as the registration commitment node, the request commitment node of the specific entity may be updated as the registration commitment node.

상기 프로세서는 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트할 수 있다.If the result of inputting the request commitment node and the requested public key into the hash function is the same as the registration root node for the next hash chain of the specific entity, the processor applies the requested public key to the specific entity registered in the block chain. It can be updated with the registration public key.

본 발명의 일실시예 따르면 블록 체인에서 엔티티의 공개키-개인키 쌍이 변경되거나 교체될 때 분산 ID가 교체되어 기존의 엔티티의 특징, 성질을 보존하지 못하고 새로운 엔티티로 취급되는 것을 해결할 수 있다. According to an embodiment of the present invention, when the public key-private key pair of an entity in the block chain is changed or replaced, the distributed ID is replaced, so that the characteristics and properties of the existing entity cannot be preserved, and it can be solved as a new entity.

또한, 본 발명의 일실시예 따르면 무한한 해시 체인을 이용하여 엔티티들의 키를 관리함으로써 엔티티의 공개키-개인키 쌍이 교체되더라도 엔티티의 분산 ID의 교체 없이 엔티티의 특징, 성질을 보존할 수 있다. In addition, according to an embodiment of the present invention, by managing the keys of entities using an infinite hash chain, even if the public key-private key pair of the entity is replaced, the characteristics and properties of the entity can be preserved without replacing the distributed ID of the entity.

도 1은 본 발명의 일실시예에 따른 블록 체인의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 하나의 엔티티에 대응하는 무한한 해시 체인을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 과정을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 엔티티의 키 생성 방법에 대한 플로우 차트를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 엔티티의 키 등록 방법에 대한 플로우 차트를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 방법에 대한 플로우 차트를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 방법에 대한 플로우 차트를 도시한 도면이다.
1 is a diagram showing the structure of a block chain according to an embodiment of the present invention.
2 is a diagram illustrating an infinite hash chain corresponding to one entity according to an embodiment of the present invention.
3 is a diagram illustrating a key exchange process between entities according to an embodiment of the present invention.
4 is a diagram illustrating a key exchange process between entities according to an embodiment of the present invention.
5 is a diagram illustrating a key update process of an entity according to an embodiment of the present invention.
6 is a flowchart illustrating a method for generating a key of an entity according to an embodiment of the present invention.
7 is a flowchart illustrating a method for registering a key of an entity according to an embodiment of the present invention.
8 is a flowchart illustrating a method for exchanging keys between entities according to an embodiment of the present invention.
9 is a flowchart illustrating a method for updating a key of an entity according to an embodiment of the present invention.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, since various changes may be made to the embodiments, the scope of the patent application is not limited or limited by these embodiments. It should be understood that all modifications, equivalents and substitutes for the embodiments are included in the scope of the rights.

실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the examples are used for the purpose of description only, and should not be construed as limiting. 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 a feature, number, step, operation, component, part, or a combination thereof described in the specification exists, but one or more other features It should be understood that this does not preclude the existence or addition of numbers, steps, operations, components, parts, or combinations thereof.

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

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same components are given the same reference numerals regardless of the reference numerals, and the overlapping description thereof will be omitted. In describing the embodiment, if it is determined that a detailed description of a related known technology may unnecessarily obscure the gist of the embodiment, the detailed description thereof will be omitted.

도 1은 본 발명의 일실시예에 따른 블록 체인의 구조를 도시한 도면이다. 1 is a diagram showing the structure of a block chain according to an embodiment of the present invention.

도 1의 (a)는 복수의 엔티티(entity)(105)들로 구성되는 블록 체인(block chain)을 나타낸다. 블록 체인의 사용자는 하나 이상의 엔티티를 블록 체인에 등록할 수 있다. 블록 체인은 복수의 엔티티(105)들이 중앙 관리자 없이 네트워크 상에서 서로 연결되어 모든 엔티티들 간의 거래에 대한 데이터를 모든 엔티티(105)들이 가지는 구조이다.Figure 1 (a) shows a block chain (block chain) consisting of a plurality of entities (entity) (105). A user of a blockchain can register one or more entities on the blockchain. A block chain is a structure in which a plurality of entities 105 are connected to each other on a network without a central administrator, and all entities 105 have data about transactions between all entities.

본 발명에서 블록 체인을 구성하는 엔티티(105)들은 각각 사용자 단말에 포함되는 프로세서에 대응할 수 있다. 다만, 블록 체인의 사용자가 하나 이상의 엔티티(105)를 블록 체인에 등록할 수 있기 때문에, 복수의 엔티티(105)가 하나의 사용자 단말에 포함되는 프로세서에 대응할 수도 있다. 사용자 단말에 포함된 프로세서는 본 발명의 키 생성 방법 및 키 교환 방법을 수행할 수 있다. In the present invention, the entities 105 constituting the block chain may correspond to a processor included in each user terminal. However, since a user of the block chain can register one or more entities 105 in the block chain, a plurality of entities 105 may correspond to a processor included in one user terminal. The processor included in the user terminal may perform the key generation method and the key exchange method of the present invention.

또한, 본 발명에서 키 관리 장치는 블록 체인을 구성하는 각 엔티티들에 대응하는 사용자의 단말들에 포함된 프로세서 중 어느 하나의 프로세서에 대응할 수 있고, 블록 체인을 저장하거나 블록 체인 서비스를 제공하는 서비스 제공자의 단말에 포함된 프로세서에 대응할 수 있다. 사용자 단말에 포함된 프로세서나 서비스 제공자의 단말에 포함된 프로세서는 본 발명의 키 등록 방법 및 키 업데이트 방법을 수행할 수 있다.In addition, in the present invention, the key management device may correspond to any one of the processors included in the user's terminals corresponding to each entity constituting the block chain, and a service that stores the block chain or provides a block chain service It may correspond to a processor included in the provider's terminal. A processor included in a user terminal or a processor included in a terminal of a service provider may perform the key registration method and key update method of the present invention.

도 1의 (b)를 참조하면, 블록 체인의 각 엔티티(105)는 자신의 분산 ID(101), 개인키(103) 및 공개키(102)를 포함할 수 있다. 블록 체인에서 모든 엔티티들의 공개키(102)는 상호 간의 인증을 위해 공유될 수 있다. 다만, 엔티티(105)의 분산 ID(101)가 유효한 사용자인지 인증하기 위해 본 발명의 각 엔티티는 자신의 공개키(102)를 통해 생성한 일방향(one-way)의 무한한 해시 체인(infinite hash chain)을 포함한다.Referring to FIG. 1B , each entity 105 of the block chain may include its own distributed ID 101 , a private key 103 , and a public key 102 . The public key 102 of all entities in the blockchain can be shared for mutual authentication. However, in order to authenticate whether the distributed ID 101 of the entity 105 is a valid user, each entity of the present invention generates a one-way infinite hash chain through its public key 102 . ) is included.

여기서, 엔티티의 개인키(103)는 그 엔티티의 유효함을 인증하기 위한 것으로 각각의 엔티티는 자신의 개인키(103) 만을 갖는다. 또한, 개인키(103)는 공개키(102) 생성을 위해 이용된다. 엔티티는 랜덤으로 생성한 엔티티의 비밀키, 임의의 개인키(103) 시드(private key seed) 및 개인키(103)를 넘버링하기 위한 변수를 해시 함수(hash function)에 입력함으로써 개인키(103)를 획득한다. 그리고, 특정 엔티티의 개인키(103)는 갱신 주기에 교체될 수 있어야 하므로 추가로 생성될 수 있다. 구체적으로, 아래 수학식 1을 통해 엔티티의 개인키(103)가 생성된다. Here, the entity's private key 103 is for authenticating the validity of the entity, and each entity has its own private key 103 only. In addition, the private key 103 is used to generate the public key 102 . Entity is a private key 103 by inputting a randomly generated private key of the entity, a random private key seed (private key seed), and a variable for numbering the private key 103 into a hash function. to acquire And, since the private key 103 of a specific entity must be able to be replaced in an update period, it can be additionally generated. Specifically, the private key 103 of the entity is generated through Equation 1 below.

Figure 112020044425117-pat00001
Figure 112020044425117-pat00001

수학식 1에서 SKx (i)는 특정 엔티티 x의 i번째 개인키(103)를 의미한다. i는 개인키(103)를 넘버링하기 위한 변수를 의미하고, 1에서부터 1씩 증가한다. h는 해시 함수를 의미한다. 해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 본 발명에서 해시 함수는 모든 블록 체인의 엔티티에 의해 공통적으로 이용되며, 특별한 종류의 함수로 제한되지 않는다. "private key seed"는 임의의 개인키(103) 시드를 의미하고, 랜덤으로 생성될 수 있다. " || "은 논리 연산자 중 OR 연산을 의미한다. 또한, Kx는 랜덤으로 생성된 특정 엔티티의 비밀키를 의미한다. In Equation 1, SK x (i) means the i-th private key 103 of a specific entity x. i means a variable for numbering the private key 103, and increases from 1 to 1. h stands for hash function. A hash function is a function that maps data of an arbitrary length to data of a fixed length. In the present invention, the hash function is commonly used by all blockchain entities, and is not limited to a special kind of function. "private key seed" means a seed of an arbitrary private key 103, and may be randomly generated. " || " means OR operation among logical operators. In addition, K x means a randomly generated private key of a specific entity.

공개키(102)는 블록 체인의 엔티티 간에 공유되는 키로서 엔티티 간의 키 교환시 이용되며 개인키(103)를 이용하여 생성될 수 있다. 엔티티는 생성한 개인키(103)를 공개키(102) 생성 함수(public-key generation function)에 입력함으로써 공개키(102)를 획득할 수 있다. 공개키(102) 생성 함수는 출력 결과로부터 입력 결과를 도출할 수 없는 함수로서 특정한 함수로 제한되지 않는다. 구체적으로, 아래 수학식 2를 통해 특정 엔티티의 공개키(102)가 생성된다.The public key 102 is a key shared between entities in the block chain, and is used when exchanging keys between entities and may be generated using the private key 103 . The entity may obtain the public key 102 by inputting the generated private key 103 into a public-key generation function. The public key 102 generating function is a function that cannot derive an input result from an output result and is not limited to a specific function. Specifically, the public key 102 of a specific entity is generated through Equation 2 below.

Figure 112020044425117-pat00002
Figure 112020044425117-pat00002

수학식 2에서 PKx (i)는 특정 엔티티 x의 i번째 공개키(102)를 의미한다. pkGen은 공개키(102) 생성 함수를 의미한다. SKx (i)는 특정 엔티티 x의 i번째 개인키(103)를 의미한다.In Equation 2, PK x (i) means the i-th public key 102 of a specific entity x. pkGen refers to a public key 102 generating function. SK x (i) means the i-th private key 103 of a specific entity x.

일방향의 무한한 해시 체인은 공개키(102)와 해시 함수를 이용하여 생성된다. 여기서, 일방향의 해시 체인이란 해시 함수의 결과 값을 다시 해시 함수에 입력하여 생성되는 체인을 의미한다. 해시 함수의 특성상, 해시 함수의 결과 값으로부터 입력 값을 알 수 없고, 동일한 입력 값에 대해서는 항상 같은 결과를 출력하기 때문에 해시 체인은 일방향의 특징을 갖는다. A one-way infinite hash chain is created using the public key 102 and a hash function. Here, the one-way hash chain refers to a chain generated by inputting the result value of the hash function into the hash function again. Due to the nature of the hash function, the input value cannot be known from the result value of the hash function, and the same result is always output for the same input value, so the hash chain has a one-way feature.

해시 체인은 연속된 n+1개의 노드들로 구성된다. n은 0보다 큰 임의의 정수이고, 해시 체인 길이를 의미한다. 엔티티는 임의의 체인 시드(chain seed), 랜덤으로 생성한 엔티티의 비밀키 및 해시 체인을 넘버링하기 위한 변수를 해시 함수에 입력하여 n번째 노드를 획득한다. 구체적으로, 아래 수학식 3, 4을 통해 해시 체인을 구성하는 노드들이 생성된다.The hash chain consists of consecutive n+1 nodes. n is an arbitrary integer greater than 0 and means the length of the hash chain. The entity obtains the nth node by inputting a random chain seed, a secret key of a randomly generated entity, and a variable for numbering the hash chain into the hash function. Specifically, nodes constituting the hash chain are generated through Equations 3 and 4 below.

Figure 112020044425117-pat00003
Figure 112020044425117-pat00003

Figure 112020044425117-pat00004
Figure 112020044425117-pat00004

위 수학식 3은 특정 엔티티 x에서 i번째 공개키(102)에 대응하는 i번째 해시 체인의 n번째 노드를 생성하기 위한 식이다. 위 수학식 3에서 xn (i)는 특정 엔티티 x의 i번째 해시 체인을 구성하는 n 번째 노드를 의미한다. 수학식 3에 따르면, i번째 해시 체인에서 n번째 노드가 가장 먼저 생성된다. 여기서, i는 해시 체인을 넘버링 하기 위한 변수이다. h는 해시 함수를 의미한다. "chain seed"는 임의의 체인 시드를 의미한다. " || "은 논리 연산자 중 OR 연산을 의미한다. 또한, Kx는 랜덤으로 생성된 특정 엔티티의 비밀키를 의미한다.Equation 3 above is an expression for generating the n-th node of the i-th hash chain corresponding to the i-th public key 102 in a specific entity x. In Equation 3 above, x n (i) means the n-th node constituting the i-th hash chain of a specific entity x. According to Equation 3, the n-th node is first generated in the i-th hash chain. Here, i is a variable for numbering the hash chain. h stands for hash function. "chain seed" means any chain seed. " || " means OR operation among logical operators. In addition, K x means a randomly generated private key of a specific entity.

위 수학식 4는 특정 엔티티 x에서 생성한 n번째 노드 및 i번째 공개키(102)를 이용하여 i번째 해시 체인을 구성하는 나머지 노드들을 생성하기 위한 식이다. 위 수학식 4에서, hcx (i) 특정 엔티티 x의 i번째 해시 체인을 의미한다. 특정 엔티티는 j번째 노드 및 i번째 공개키(102)를 해시 함수에 입력하여 j-1번째 노드를 획득한다. j는 n부터 1까지 범위에 있는 임의의 정수이다. Equation 4 above is an expression for generating the remaining nodes constituting the i-th hash chain using the n-th node and the i-th public key 102 generated by the specific entity x. In Equation 4 above, hc x (i) means the i-th hash chain of a specific entity x. A specific entity obtains the j-1th node by inputting the j-th node and the i-th public key 102 into the hash function. j is any integer in the range n to 1.

엔티티의 분산 ID(101)는 블록 체인에서 중복된 엔티티가 발생하는 것을 방지하기 위한 것으로, 각 엔티티 별로 고유한 값을 가진다. 엔티티는 자신의 i) 첫번째 공개키(102)와 ii) 첫번째 공개키(102)를 이용하여 생성한 첫번째 해시 체인을 구성하는 노드들 중 마지막 노드를 해시 함수에 입력하여 자신의 분산 ID(101)를 생성한다. 구체적으로 수학식 5를 통해 분산 ID(101)가 생성된다. The entity's distributed ID 101 is to prevent duplicate entities from occurring in the block chain, and each entity has a unique value. The entity inputs its own i) first public key 102 and ii) the last node among the nodes constituting the first hash chain generated using the first public key 102 into the hash function to obtain its distributed ID 101 to create Specifically, the distributed ID 101 is generated through Equation 5.

Figure 112020044425117-pat00005
Figure 112020044425117-pat00005

cIDx는 특정 엔티티 x의 분산 ID(101)를 의미한다. h는 해시 함수를 의미한다. x0 (1)은 특정 엔티티 x의 첫 번째 해치 체인을 구성하는 0번째 노드를 의미한다. 일방향의 해시 체인의 특성상 0번째 노드는 해시 체인의 마지막 노드를 의미한다. " || "은 논리 연산자 중 OR 연산을 의미한다. 그리고, PKx (1)는 특정 엔티티 x의 첫 번째 공개키(102)를 의미한다. cID x means the distributed ID 101 of a specific entity x. h stands for hash function. x 0 (1) means the 0th node constituting the first hatch chain of a specific entity x. Due to the nature of the one-way hash chain, the 0th node means the last node of the hash chain. " || " means OR operation among logical operators. And, PK x (1) means the first public key 102 of a specific entity x.

본 발명에서 분산 ID(101)는 항상 첫번째 개인키(103)에 대응하는 공개키(102)를 이용하기 때문에 특정 엔티티의 개인키(103)가 갱신되거나 소진되더라도 분산 ID(101)가 변하지 않는다. 따라서, 특정 엔티티가 블록 체인 상에서 유효한 엔티티임을 인증하여 기존의 거래 기록을 조회하거나 다른 엔티티와 새로운 거래를 수행할 수 있다. In the present invention, since the distributed ID 101 always uses the public key 102 corresponding to the first private key 103, even if the private key 103 of a specific entity is updated or exhausted, the distributed ID 101 does not change. Therefore, by authenticating that a specific entity is a valid entity on the block chain, it is possible to inquire existing transaction records or perform new transactions with other entities.

그리고, 본 발명에서 엔티티는 수학식 1에서와 같이 개인키(103)를 넘버링하기 위한 변수 i를 이용하여 새로운 개인키(103)를 계속 생성할 수 있다. 또한, 새롭게 생성된 개인키(103)에 대응하는 공개키(102)를 이용하여 수학식 3, 4에서와 같이 새로운 해시 체인이 생성될 수 있다. 따라서, 본 발명은 특정 엔티티의 개인키(103)가 소진되거나, 갱신될 때에도 새로운 개인키(103)에 따른 새로운 해시 체인을 이용하기 때문에, 특정 엔티티는 새로운 해시 체인을 이용하여 유효한 엔티티임을 인증할 수 있다. And, in the present invention, the entity can continue to generate a new private key 103 by using the variable i for numbering the private key 103 as in Equation 1. In addition, a new hash chain may be generated as in Equations 3 and 4 by using the public key 102 corresponding to the newly generated private key 103 . Therefore, since the present invention uses a new hash chain according to the new private key 103 even when the private key 103 of a specific entity is exhausted or renewed, it is possible to authenticate that a specific entity is a valid entity using the new hash chain. can

구체적으로, 해시 함수의 특성상 해시 체인의 특정 노드를 알더라도 특정 노드를 생성하기 전의 노드들은 알 수 없다. 따라서, 엔티티는 블록 체인에 등록된 해시 체인의 현재 노드에 대한 이전 노드를 제시함으로써 유효한 엔티티임을 인증할 수 있다. Specifically, due to the nature of the hash function, even if a specific node in the hash chain is known, the nodes before the specific node is created cannot be known. Thus, an entity can verify that it is a valid entity by presenting the previous node to the current node of the hash chain registered in the blockchain.

도 2는 본 발명의 일실시예에 따른 하나의 엔티티에 대응하는 무한한 해시 체인을 도시한 도면이다. 2 is a diagram illustrating an infinite hash chain corresponding to one entity according to an embodiment of the present invention.

도 2는 하나의 엔티티에 포함된 분산 ID와 복수의 개인키 및 공개키에 따른 복수의 해시 체인들의 생성 과정을 나타낸다. 이러한 생성 과정은 블록 체인을 구성하는 엔티티에 의하여 수행될 수 있다. 2 shows a process of generating a plurality of hash chains according to a distributed ID and a plurality of private and public keys included in one entity. This creation process can be performed by entities constituting the block chain.

도 2의 (A)는 n+1개의 노드를 가지는 특정 엔티티 x의 1번째 해시 체인을 도시한 것이다. n은 임의로 결정되는 양의 정수이다. i번째 해시 체인은 i번째 개인키로 생성된 i번째 공개키를 이용하여 생성된다. 즉, i번째 공개키 및 i번째 해시 체인의 j번째 노드를 해시 함수에 입력하여 j-1번째 노드를 생성한다. j는 n부터 1까지의 정수를 의미한다. FIG. 2A shows the first hash chain of a specific entity x having n+1 nodes. n is an arbitrarily determined positive integer. The i-th hash chain is created using the i-th public key created with the i-th private key. That is, the j-th node is generated by inputting the i-th public key and the j-th node of the i-th hash chain to the hash function. j denotes an integer from n to 1.

일례로, 도 2의 (A)에서, xn (1) 은 특정 엔티티 x의 n+1개의 노드를 가지는 1번째 해시 체인의 n번째 노드를 의미한다. 도 2의 (A)에서, xn (1) 가 가장 먼저 생성되고, 생성된 노드 및 특정 엔티티 x의 1번째 공개키(PKx (1))를 해시 함수에 순차적으로 입력하여 수학식 4에 따라 xn-1 (1) ... x0 (1) 까지 생성될 수 있다. x0 (1) ... xn (1) 이 1번째 해시 체인을 구성하는 노드이다. 그리고, 하나의 해시 체인을 생성할 때 이용되는 공개키는 동일하다. For example, in FIG. 2A , x n (1) means the nth node of the first hash chain having n+1 nodes of a specific entity x. In FIG. 2(A), x n (1) is generated first, and the first public key (PK x (1) ) of the generated node and specific entity x is sequentially input to the hash function to obtain Equation 4 Accordingly, it can be generated up to x n-1 (1) ... x 0 (1) . x 0 (1) ... x n (1) is the node constituting the first hash chain. And, the public key used to generate one hash chain is the same.

본 발명은 도 2의 (A)에 도시된 해시 체인을 연속적으로 생성하여, 블록 체인에서 엔티티들의 키 관리를 용이하기 하기 위한 것으로, 도 2의 (B)는 연속적으로 생성되는 복수의 해시 체인 및 복수의 해시 체인간의 관계를 도시한 도면이다. The present invention is to facilitate key management of entities in a block chain by successively generating the hash chain shown in FIG. It is a diagram showing the relationship between a plurality of hash chains.

특정 엔티티 x는 수학식 1을 이용하여 1번째 개인키와 다른 2번째 개인키를 생성할 수 있다. 특정 엔티티 x는 수학식 2를 이용하여 2번째 개인키에 대응하는 2번째 공개키를 획득할 수 있다. 그리고, 2번째 공개키를 이용하여 2번째 해시 체인을 생성할 수 있다. 2번째 해시 체인은 수학식 3, 4를 이용하여 생성될 수 있다. 위와 같은 방법으로 모든 엔티티는 연속되는 해시 체인들을 생성할 수 있다. A specific entity x may generate a second private key different from the first private key by using Equation 1. The specific entity x may obtain a second public key corresponding to the second private key using Equation (2). Then, the second hash chain can be generated using the second public key. The second hash chain may be generated using Equations 3 and 4. In this way, any entity can create successive hash chains.

그리고, 도 2의 (B)를 참조하면, 특정 엔티티 x는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑할 수 있다. 여기서 마지막 노드란 i번째 해시 체인을 생성할 때 마지막으로 생성된 노드(x0 (i))를 의미하고, 수학식 3, 4에 따라 생성된 i번째 해시 체인의 0번째 노드(x0 (i))를 의미할 수 있다. And, referring to FIG. 2B , the specific entity x may map the last node of the i+1th hash chain to the i-th hash chain. Here, the last node means the last node (x 0 (i) ) generated when generating the i-th hash chain, and the 0-th node (x 0 (i ) of the i-th hash chain generated according to Equations 3 and 4 ) ) can mean

구체적으로, 특정 엔티티 x는 i번째 해시 체인에서 0번째 노드 또는 마지막으로 생성된 노드를 제외한 나머지 노드들에 대해 i+1번째 해시 체인의 0번째 노드 및 마지막 노드를 매핑할 수 있다. Specifically, a specific entity x may map the 0th node and the last node of the i+1th hash chain with respect to the remaining nodes except for the 0th node or the last generated node in the i-th hash chain.

도 2의 (B)를 참조하면, 2번째 해시 체인의 마지막 노드(x0 (2))가 1번째 해시 체인의 노드들(x1 (1) ... xn (1))에 매핑된다. 마찬가지로, 3번째 해시 체인의 마지막 노드(x0 (3))가 2번째 해시 체인의 노드들(x1 (2) ... xn (2))에 매핑된다. i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑되는 이유는 아래에서 후술한다. Referring to FIG. 2B, the last node (x 0 (2) ) of the second hash chain is mapped to the nodes (x 1 (1) ... x n (1) ) of the first hash chain . Similarly, the last node of the third hash chain (x 0 (3) ) is mapped to the nodes of the second hash chain (x 1 (2) ... x n (2) ). The reason why the last node of the i+1th hash chain is mapped to the i-th hash chain will be described below.

그리고, 도 2의 (B)에서 MIC는 메시지-무결성 코드(message-integrity code)를 의미한다. MIC는 블록 체인에서 특정 엔티티에 대해 등록되어 있는 엔트리(entry)의 무결성을 확인하기 위함이다. 블록 체인에는 각 엔티티 별로 그 엔티티의 분산 ID, 현재 공개키, 현재 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트(commitment) 노드, 다음 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트 노드에 매핑되는 무결성 코드 및 무결성 검증 여부를 체크하는 변수가 저장되고, 이렇게 각 엔티티 별로 저장되는 데이터를 엔트리라고 한다.And, in (B) of FIG. 2 , MIC means a message-integrity code. The MIC is to verify the integrity of an entry registered for a specific entity in the block chain. In the blockchain, for each entity, the distributed ID of that entity, the current public key, the root node of the current hash chain, the commitment node of the current hash chain, the root node of the next hash chain, and the integrity mapped to the commitment node of the current hash chain Variables for checking code and integrity verification are stored, and the data stored for each entity in this way is called an entry.

구체적으로, 즉, MIC는 블록 체인 상에 특정 엔티티에 대해 등록되어 있는 엔트리가 업데이트될 때, 업데이트되기 전의 엔트리의 무결성을 검증하기 위해 이용된다. Specifically, that is, when an entry registered for a specific entity on the block chain is updated, the MIC is used to verify the integrity of the entry before being updated.

도 2의 (B)에서, MICji는 i번째 해시 체인의 j번째 노드로 계산되는 무결성 코드를 의미한다. 예를 들어, i번째 해시 체인의 j-1번째 노드가 블록 체인에 등록되어 있고, 엔티티 간의 키 교환으로 인해 i번째 해시 체인의 j-1번째 노드가 i번째 해시 체인의 j번째 노드로 업데이트될 때, 키 관리 장치는 엔티티로부터 수신한 j번째 노드에 기초하여 블록 체인에 등록된 MICji 를 계산함으로써 업데이트 전 블록 체인에 등록된 엔트리의 무결성을 검증할 수 있다. 구체적인 과정은 도 3, 4에서 후술된다. In (B) of FIG. 2 , MIC ji means an integrity code calculated by the j-th node of the i-th hash chain. For example, if the j-1th node of the i-th hash chain is registered in the blockchain, and the key exchange between entities causes the j-1th node of the i-th hash chain to be updated to the j-th node of the i-th hash chain. At this time, the key management device can verify the integrity of the entry registered in the block chain before the update by calculating the MIC ji registered in the block chain based on the j-th node received from the entity. A specific process will be described later with reference to FIGS. 3 and 4 .

도 2의 (B)를 참조하면, MICji는 i번째 해시 체인의 j-1번째 노드에 매핑될 수 있다. 다만, i번째 해시 체인에서 먼저 생성된 n번째 노드(xn (i))에는 i+1번째 해시 체인의 1번째 노드로 계산되는 MIC12가 매핑된다. Referring to FIG. 2B , MIC ji may be mapped to the j-1th node of the i-th hash chain. However, MIC 12 calculated as the 1st node of the i+1th hash chain is mapped to the n-th node (x n (i) ) generated first in the i-th hash chain.

그리고, 도 2의 (C)는 도 2의 (B)의 연속된 해시 체인과 특정 엔티티 x의 분산 ID, 개인키 및 공개키의 관계를 도시한 도면이다. 도 2의 (C)를 참조하면, 도 2의 (A)에서, 특정 엔티티 x는 생성된 첫번째 해시 체인의 마지막 노드(x0 (1))와 첫번째 공개키(PKx (1))를 해시 함수에 입력하여 분산 ID(cIDx)를 획득할 수 있다. 그리고, 도 2의 (C)를 참조하면, i번째 해시 체인은 i번째 개인키에 의한 i번째 공개키와 대응된다. And, FIG. 2C is a diagram illustrating the relationship between the continuous hash chain of FIG. 2B and the distributed ID, private key, and public key of a specific entity x. Referring to FIG. 2(C), in FIG. 2(A), a specific entity x hashes the last node (x 0 (1) ) and the first public key (PK x (1) ) of the first generated hash chain. You can get the variance ID (cID x ) by entering it into the function. And, referring to FIG. 2C , the i-th hash chain corresponds to the i-th public key by the i-th private key.

이렇게 생성된 특정 엔티티 x의 공개키, 해시 체인, 분산 ID 및 MIC는 블록 체인에 등록된다. 구체적으로, 특정 엔티티 x는 분산 ID(cIDx), 1번째 해시 체인의 마지막 노드(x0 (1)) 및 공개키(PKx (1))을 키 관리 장치에 송신한다. 여기서, 마지막 노드는 일방향의 해시 체인이 생성될 때 마지막으로 생성된 노드를 의미한다. 키 관리 장치는 수신한 분산 ID가 기존에 등록되어 있는 ID 인지 판단한다. The public key, hash chain, distributed ID, and MIC of the specific entity x generated in this way are registered in the block chain. Specifically, a specific entity x sends a distributed ID (cID x ), the last node of the first hash chain (x 0 (1) ), and a public key (PK x (1) ) to the key management device. Here, the last node means the last node generated when a one-way hash chain is generated. The key management device determines whether the received distributed ID is a previously registered ID.

그리고, 키 관리 장치는 수신한 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력하여 수신한 분산 ID(cIDx)와 동일한지 계산한다. 이 때, 수신한 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력한 결과가 수신한 분산 ID(cIDx)와 동일하지 않은 경우, 유효하지 않은 분산 ID로 판단하고, 등록 절차를 종료한다. Then, the key management device inputs the received public key (PK x (1) ) and the last node (x 0 (1) ) of the first hash chain into the hash function and calculates whether it is the same as the received distributed ID (cID x ) do. At this time, if the result of entering the received public key (PK x (1) ) and the last node (x 0 (1) ) of the first hash chain into the hash function is not the same as the received distributed ID (cID x ) , it is judged as an invalid distributed ID, and the registration procedure is terminated.

수신한 분산 ID가 등록되어 있지 않고, 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력한 결과가 수신한 분산 ID(cIDx)와 동일한 경우, 키 관리 장치는 특정 엔티티 x의 분산 ID(cIDx), 1번째 해시 체인의 마지막 노드(x0 (1)) 및 공개키(PKx (1))를 블록 체인에 등록한다. The received distributed ID is not registered, and the result of entering the public key (PK x (1) ) and the last node of the first hash chain (x 0 (1) ) into the hash function is the received distributed ID (cID x ) , the key management device registers the distributed ID (cID x ) of a specific entity x, the last node of the first hash chain (x 0 (1) ), and the public key (PK x (1) ) in the blockchain.

블록 체인에는 각 엔티티 별로 그 엔티티의 분산 ID, 현재 공개키, 현재 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트(commitment) 노드, 다음 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트 노드에 매핑되는 무결성 코드 및 무결성 검증 여부를 체크하는 변수가 저장된다. In the blockchain, for each entity, the distributed ID of that entity, the current public key, the root node of the current hash chain, the commitment node of the current hash chain, the root node of the next hash chain, and the integrity mapped to the commitment node of the current hash chain A variable that checks whether code and integrity is verified is stored.

현재 해시 체인의 루트 노드는 블록 체인에 등록된 엔티티가 다른 엔티티와 키 교환시 소모하는 노드를 포함하는 i번째 해시 체인의 마지막 노드(x0 (i))를 의미한다. 현재 해시 체인의 루트 노드는, 엔티티가 키 교환시 소모하는 노드를 포함하는 해시 체인을 검증하거나, 엔티티의 키 등록시 분산 ID를 인증하기 위한 노드이다. The root node of the current hash chain means the last node (x 0 (i) ) of the i-th hash chain including the node consumed by entities registered in the block chain when exchanging keys with other entities. The root node of the current hash chain is a node for verifying a hash chain including nodes consumed when an entity exchanges a key, or for authenticating a distributed ID when registering an entity's key.

마지막 노드란 i번째 해시 체인을 생성할 때 마지막으로 생성된 노드(x0 (i))를 의미하고, 수학식 3, 4에 따라 생성된 i번째 해시 체인의 0번째 노드(x0 (i))를 의미할 수 있다. 따라서, 개인키 교체시 새로운 개인키에 대응하는 해시 체인의 마지막 노드가 현재 해시 체인의 루트 노드로 교체된다. The last node means the last node (x 0 (i) ) generated when the i-th hash chain is generated, and the 0-th node (x 0 ( i)) of the i-th hash chain generated according to Equations 3 and 4 ) can mean Therefore, when the private key is replaced, the last node of the hash chain corresponding to the new private key is replaced with the root node of the current hash chain.

현재 해시 체인의 커미트먼트 노드는 블록 체인에 등록된 엔티티가 다른 엔티티와 키 교환시 이용되는 노드를 나타낸다. 따라서, 엔티티 간의 키 교환 이 수행될 때마다 현재 해시 체인의 커미트먼트 노드는 업데이트 된다. The commitment node of the current hash chain represents a node that is used by entities registered in the blockchain to exchange keys with other entities. Therefore, whenever a key exchange between entities is performed, the commitment node of the current hash chain is updated.

다음 해시 체인은 현재 해시 체인이 i번째 공개키(PKx (i))로 생성된 경우 i+1번째 공개키(PKx (i+1))로 생성된 해시 체인을 의미한다. 그리고, 다음 해시 체인의 루트 노드는 다음 해시 체인의 마지막 노드(x0 (i+1))를 의미한다.The following hash chain means a hash chain created with the i+1th public key (PK x (i+1) ) when the current hash chain is created with the i-th public key (PK x ( i ) ). And, the root node of the next hash chain means the last node (x 0 (i+1) ) of the next hash chain.

다음 해시 체인의 루트 노드를 저장하는 이유는 현재 해시 체인의 모든 노드가 소모되어 특정 엔티티의 i번째 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체되는 경우, 미리 다음 해시 체인의 루트 노드(x0 (i+1))를 저장하지 않으면 제3자가 자신의 공개키나 해시 체인의 노드를 제시할 때 키 관리 장치에서 제3자가 특정 엔티티와 동일한 엔티티인지 알 수 없다. The reason for storing the root node of the next hash chain is that all nodes in the current hash chain are consumed, so that the i-th private key of a specific entity (SK x (i) ) is replaced with a new private key (SK x (i+1) ). In this case, if the root node (x 0 (i+1) ) of the next hash chain is not stored in advance, when a third party presents their public key or a node in the hash chain, the key management device determines whether the third party is the same entity as the specific entity. I can not know.

그리고, i번째 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체될 때, i+2번째 개인키가 생성되고, 생성된 i+2번째 개인키에 대응하는 i+2번째 공개키에 따른 해시 체인이 생성된다. And, when the i-th private key (SK x (i) ) is replaced with a new private key (SK x (i+1) ), the i+2th private key is generated, and the i+2th private key is A hash chain according to the corresponding i+2th public key is generated.

따라서, 새로운 개인키(SKx (i+1))에 대응하는 새로운 공개키(PKx (i+1))로 생성한 해시 체인의 마지막 노드(x0 (i+1))를 키 교환 때마다 다음 해시 체인의 루트 노드로 미리 등록하거나 업데이트하여, 특정 엔티티의 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체될 때, 키 관리 장치는 특정 엔티티로부터 등록된 다음 해시 체인의 루트 노드(x0 (i+1))와 특정 엔티티로부터 수신한 공개키(PKx (i+1)) 및 루트 노드의 이전 노드(x1 (i+1))를 해시 함수에 입력한 결과를 비교함으로써 특정 엔티티가 유효한 엔티티인지 확인할 수 있다.Therefore, when the last node (x 0 (i+1) ) of the hash chain generated with the new public key (PK x (i+1) ) corresponding to the new private key (SK x (i+1) ) is exchanged Each time, by registering or updating in advance as the root node of the next hash chain, when the private key of a specific entity (SK x (i) ) is replaced with a new private key (SK x (i+1) ), the key management device The root node ( x 0 (i+1) ) of the next hash chain registered from You can check whether a specific entity is a valid entity by comparing the result of input into the hash function.

동일한 이유로, 특정 엔티티 x는 i번째 해시 체인에서 0번째 노드 또는 마지막으로 생성된 노드를 제외한 나머지 노드들에 대해 i+1번째 해시 체인의 0번째 노드 및 마지막 노드를 매핑한다. For the same reason, a specific entity x maps the 0th node and the last node of the i+1th hash chain to the nodes other than the 0th node or the last generated node in the i-th hash chain.

즉, 특정 엔티티 x는 블록 체인 상에 i번째 해시 체인의 j번째 노드가 현재 해시 체인에 대한 커미트먼트 노드(xj (i))로 등록되어 있을 때, 다른 엔티티와 키 교환 이후 현재 해시 체인에 대한 커미트먼트 노드(xj (i))의 a) 이전 노드(xj+1 (i)) 및 이전 노드에 매핑된 b) i+1번째 해시 체인의 마지막 노드(x0 (i+1))와 c) 무결성 코드(MICj+1,i)를 키 관리 장치에 송신한다. That is, when the j-th node of the i-th hash chain on the block chain is registered as a commitment node (x j (i) ) for the current hash chain, the specific entity x is a) the previous node (x j+1 (i) ) of the commitment node (x j (i ) ) and b) the last node in the i+1th hash chain (x 0 (i+1) ) and mapped to the previous node c) Transmit the integrity code (MIC j+1,i ) to the key management device.

키 관리 장치는 특정 엔티티 x의 수신한 분산 ID(cIDx)를 등록하고, 1번째 해시 체인의 마지막 노드(x0 (1))를 특정 엔티티 x의 현재 해시 체인의 루트 노드 및 현재 해시 체인의 커미트먼트 노드로 등록한다. The key management device registers the received distributed ID (cID x ) of a specific entity x, and sets the last node (x 0 (1) ) of the first hash chain to the root node of the current hash chain of the specific entity x and the current hash chain’s root node. Register as a commitment node.

그리고, 특정 엔티티 x가 다른 엔티티와 키 교환을 수행할 때, 특정 엔티티 x로부터 2번째 해시 체인의 마지막 노드(x0 (2))를 수신하여 다음 해시 체인의 루트 노드로 등록하고, 특정 엔티티 x로부터 현재 해시 체인에 대한 커미트먼트 노드로 등록된 노드(x0 (1))의 이전 노드(x1 (1))를 수신하여 현재 해시 체인의 커미트먼트 노드로 업데이트하고, 특정 엔티티 x로부터 그 이전 노드(x1 (1))에 매핑된 MIC21을 수신하여 무결성 코드로 등록한다.And, when a specific entity x performs key exchange with another entity, it receives the last node (x 0 (2) ) of the second hash chain from the specific entity x and registers it as the root node of the next hash chain, and the specific entity x Receives the previous node (x 1 (1) ) of the node (x 0 (1) ) registered as a commitment node for the current hash chain from Receives MIC 21 mapped to x 1 (1) ) and registers it as an integrity code.

i번째 해시 체인에서 블록 체인에 현재 해시 체인에 대한 커미트먼트로 등록된 j번째 노드를 현재 노드(xj (i))라고 할 때, 이전 노드는 i번째 공개키와 함께 해시 함수에 입력될 때 현재 노드가 출력되도록 하는 노드(xj+1 (i))를 의미한다. 즉, i번째 해시 체인에서 현재 노드는 이전 노드 이후에 생성되고 이전 노드와 i번째 공개키를 이용하여 생성된다. In the i-th hash chain, when the j-th node registered as a commitment to the current hash chain in the blockchain is the current node (x j (i) ), the previous node is It means the node (x j+1 (i) ) that allows the node to be output. That is, in the i-th hash chain, the current node is created after the previous node and is created using the previous node and the i-th public key.

즉, 블록 체인에 특정 엔티티 x의 i번째 해시 체인의 마지막 노드(x0 (i))가 현재 해시 체인의 루트 노드로 등록되어 있고, 특정 엔티티 x의 i번째 해시 체인의 j번째 노드가 현재 해시 체인의 커미트먼트 노드(xj (i))로 등록되어 있고, 특정 엔티티가 다른 엔티티와 키 교환을 수행한 경우, 키 관리 장치는 특정 엔티티 x로부터 수신한 i+1번째 해시 체인의 마지막 노드(x0 (i+1))를 다음 해시 체인의 루트 노드로 업데이트하고, i번째 해시 체인의 j+1번째 노드(xj+1 (i))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, MICj+2,i 를 무결성 코드로 업데이트한다. That is, the last node (x 0 (i) ) of the i-th hash chain of a specific entity x is registered as the root node of the current hash chain in the block chain, and the j-th node of the i-th hash chain of a specific entity x is the current hash chain. If it is registered as a commitment node (x j (i) ) in the chain, and a specific entity performs key exchange with another entity, the key management device is the last node (x) in the i+1th hash chain received from the specific entity x. 0 (i+1) ) to the root node of the next hash chain, the j+1th node (x j+1 (i) ) of the i-th hash chain to be the commitment node for the current hash chain, and the MIC Update j+2,i with the integrity code.

키 관리 장치는 i번째 해시 체인의 j+1번째 노드를 이용하여 이전에 등록된 무결성 코드인 MICj+1,i 를 계산함으로써 특정 엔티티 x의 블록 체인에 등록된 엔트리에 대한 무결성을 검증할 수 있다. 무결성 검증 여부를 체크하는 변수의 업데이트 과정은 도 5에서 후술한다. The key management device can verify the integrity of the entry registered in the block chain of a specific entity x by calculating the previously registered integrity code MIC j+1,i using the j+1th node of the i-th hash chain. there is. A process of updating a variable for checking whether integrity is verified will be described later with reference to FIG. 5 .

도 3은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다. 3 is a diagram illustrating a key exchange process between entities according to an embodiment of the present invention.

도 3은 특정 엔티티 x와 다른 엔티티 z간의 키 교환 과정을 도시한 도면이다. 도 3에서 301은 엔티티 간의 키 교환에 따라 블록 체인에 등록된 각 엔티티(x, z)에 대한 엔트리의 업데이트 과정을 도시한 것이다. 3 is a diagram illustrating a key exchange process between a specific entity x and another entity z. In FIG. 3, reference numeral 301 shows an update process of an entry for each entity (x, z) registered in the block chain according to key exchange between entities.

특정 엔티티 x는 블록 체인 상에 등록된 다른 엔티티 z의 현재 공개키(PKz (1)) 및 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))를 키 관리 장치에 요청(query)한다. 도 3의 302에서, 키 관리 장치로부터 특정 엔티티 x는 블록 체인 상에 등록된 다른 엔티티 z의 공개키(PKz (1)) 및 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))를 수신한다. A specific entity x queries the key management device for the current public key (PK z (1) ) of another entity z registered on the block chain and a commitment node (z 0 (1) ) for the current hash chain. In 302 of FIG. 3 , a specific entity x receives from the key management device the public key (PK z (1) ) of another entity z registered on the block chain and a commitment node (z 0 (1) ) for the current hash chain. do.

그리고, 도 3의 303에서, 특정 엔티티 x는 다른 엔티티 z와 각자 현재 블록 체인에 등록된 현재 해시 체인에 대한 커미트먼트 노드의 이전 노드(z1 (1))를 교환한다. 이전 노드는 앞서 설명한 바와 같이 i번째 해시 체인에서 블록 체인에 현재 해시 체인에 대한 커미트먼트로 등록된 노드를 현재 노드라고 할 때, 이전 노드는 i번째 공개키와 함께 해시 함수에 입력될 때 현재 노드가 출력되는 노드를 의미한다.And, in 303 of FIG. 3, the specific entity x exchanges the previous node z 1 (1) of the commitment node for the current hash chain registered in the current block chain, respectively, with another entity z. As described above, when the previous node is a node registered as a commitment to the current hash chain in the block chain in the i-th hash chain as described above, the previous node is entered into the hash function along with the i-th public key. Indicates the output node.

특정 엔티티 x는 수신한 이전 노드(z1 (1))와 현재 공개키(PKz (1))를 해시 함수에 입력한 결과를 다른 엔티티 z의 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))와 비교한다. 수신한 이전 노드와 현재 공개키를 해시 함수에 입력한 결과를 다른 엔티티 z의 현재 해시 체인에 대한 커미트먼트 노드가 동일한 경우, 특정 엔티티 x는 다른 엔티티 z의 현재 공개키를 유효한 공개키로 판단할 수 있다. A specific entity x receives the result of inputting the previous node (z 1 (1) ) and the current public key (PK z (1) ) into the hash function, and returns the result of inputting the received previous node (z 1 (1) ) to the commit node (z 0 (1 ) for the current hash chain of another entity z. ) ) compared to If the result of inputting the received previous node and the current public key into the hash function is the same as the commitment node for the current hash chain of another entity z, a specific entity x can determine the current public key of another entity z as a valid public key .

그리고, 다른 엔티티 z도 마찬가지로 특정 엔티티 x의 현재 공개키를 유효한 공개키로 판단한 경우, 각 엔티티(x, z)는 상호 간의 통신 채널을 생성한다. 구체적인 키 교환 과정은 도 4에서 추가로 후술한다. Also, when the other entity z determines that the current public key of a specific entity x is a valid public key, each entity (x, z) creates a mutual communication channel. A specific key exchange process will be further described later with reference to FIG. 4 .

도 3의 304에서, 키 관리 장치는 키 교환을 수행한 엔티티(x, z)로부터 현재 해시 체인에 대한 커미트먼트 노드의 이전 노드(x1 (1), z1 (1)) 및 다음 해시 체인의 루트 노드(x0 (2), z0 (2))를 수신한다. 그리고, 키 관리 장치는 수신한 이전 노드(x1 (1), z1 (1))를 각 엔티티의 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 해시 체인의 루트 노드(x0 (2), z0 (2))를 각 엔티티의 다음 해시 체인에 대한 루트 노드로 등록하거나 업데이트한다. In 304 of FIG. 3 , the key management device determines the previous node (x 1 (1) , z 1 (1) ) of the commitment node for the current hash chain from the entity (x, z) that performed the key exchange and the next hash chain. Receive the root node (x 0 (2) , z 0 (2) ). Then, the key management device updates the received previous node (x 1 (1) , z 1 (1) ) with a commitment node for the current hash chain of each entity, and the root node (x 0 (2 ) of the received hash chain) ) , z 0 (2) ) as the root node for the next hash chain of each entity.

즉, 블록 체인에 특정 엔티티 x의 i번째 해시 체인의 마지막 노드가 현재 해시 체인의 루트 노드(x0 (i))로 등록되어 있고, 특정 엔티티 x의 i번째 해시 체인의 j번째 노드(xj (i))가 현재 해시 체인의 커미트먼트 노드로 등록되어 있을 때, 특정 엔티티가 다른 엔티티와 키 교환을 수행한 경우, 키 관리 장치는 특정 엔티티 x로부터 수신한 i+1번째 해시 체인의 마지막 노드(x0 (i+1))를 다음 해시 체인의 루트 노드로 업데이트하고, i번째 해시 체인의 j+1번째 노드(xj+1 (i))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트한다. 구체적인 업데이트 과정은 도 5에서 후술한다. That is, the last node of the i-th hash chain of a specific entity x is registered in the block chain as the root node (x 0 (i) ) of the current hash chain, and the j-th node (x j ) of the i-th hash chain of a specific entity x When (i) ) is currently registered as a commitment node in the hash chain, if a specific entity performs key exchange with another entity, the key management device receives the last node ( x 0 (i+1) ) is updated as the root node of the next hash chain, and the j+1-th node (x j+1 (i) ) of the i-th hash chain is updated as a commitment node for the current hash chain. A detailed update process will be described later with reference to FIG. 5 .

도 4는 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다. 4 is a diagram illustrating a key exchange process between entities according to an embodiment of the present invention.

도 4는 엔티티 간의 키 교환 과정에서 상호 인증을 수행하는 과정을 구체적으로 도시한 도면이다. 도 3에서와 같이, 특정 엔티티 x와 다른 엔티티 y간의 키 교환 과정에서, 특정 엔티티 x는 블록 체인 상에 등록된 다른 엔티티 y의 현재 공개키(PKy (2)) 및 현재 해시 체인에 대한 커미트먼트 노드(y3 (2))를 키 관리 장치에 요청한다(도 4의 query BC for cIDy to obtain PKy (2) and y3 (2)). 다른 엔티티 y도 블록 체인 상에 등록된 특정 엔티티 x의 현재 공개키(PKx (1)) 및 현재 해시 체인에 대한 커미트먼트 노드(x2 (1))를 키 관리 장치에 요청한다(도 4의 query BC for cIDx to obtain PKx (1) and x2 (1)).4 is a diagram specifically illustrating a process of performing mutual authentication in a key exchange process between entities. 3, in the process of exchanging a key between a specific entity x and another entity y, the specific entity x has a current public key (PK y (2) ) of another entity y registered on the block chain and a commitment to the current hash chain. Request a node y 3 (2) to the key management device (query BC for cIDy to obtain PK y (2) and y 3 (2) in FIG. 4 ). Another entity y also requests from the key management device the current public key (PK x (1) ) of a specific entity x registered on the block chain and a commitment node (x 2 (1) ) for the current hash chain (in Fig. 4 ). query BC for cIDx to obtain PK x (1) and x 2 (1) ).

특정 엔티티 x는 키 관리 장치로부터 수신한 다른 엔티티 y의 현재 공개키(PKy (2)) 및 자신의 개인키를 타원 곡선 디피-헬만(Elliptic-curve Diffie-Hellman, ECDH) 키 교환 방식을 적용한 ECDH 함수에 입력하여 마스터 키를 생성한다(도 4의 mkxy=ECDH(SKx (1), PKy (2))). ECDH 함수는 아래 수학식 6과 같은 성질을 갖는다.A specific entity x uses the elliptic-curve Diffie-Hellman (ECDH) key exchange method with the current public key (PK y (2) ) of another entity y received from the key management device and its own private key. Enter the ECDH function to generate a master key (mk xy =ECDH(SK x (1) , PK y (2) ) in FIG. 4). The ECDH function has the same properties as in Equation 6 below.

Figure 112020044425117-pat00006
Figure 112020044425117-pat00006

수학식 6에서와 같이 ECDH 함수는 x의 개인키(SKx)와 y의 공개키(PKy)를 ECDH 함수에 입력한 결과는 y의 개인키(SKy)와 x의 공개키(PKx)를 ECDH 함수에 입력한 결과와 동일한 성질을 갖는다. As shown in Equation 6, the ECDH function inputs the private key (SKx) of x and the public key (PKy) of y to the ECDH function, and the result is the private key (SKy) of y and the public key of x (PKx) to the ECDH function It has the same properties as the result entered in .

그리고, 특정 엔티티 x는 키 관리 장치로부터 수신한 다른 엔티티 y의 해시 체인에 대한 커미트먼트 노드(y3 (2)), x의 커미트먼트 노드(x2 (1)) 및 마스터 키(mkxy)를 키 유도 함수(Key derivation function, KDF)에 입력하여 세션 키를 생성한다(도 4의 skxy=kdf(mkxy || x2 (1) || y3 (2)). Then, the specific entity x is a key with a commitment node (y 3 (2) ), a commitment node (x 2 (1) ) of x, and a master key (mk xy ) for the hash chain of another entity y received from the key management device. A session key is generated by inputting it into a key derivation function (KDF) (sk xy =kdf(mk xy || x 2 (1) || y 3 (2) in FIG. 4 ).

도 4의 ①에서, 특정 엔티티 x는 자신의 분산 ID(cIDx), 자신의 현재 커미트먼트 노드로 등록된 현재 노드의 이전 노드(x3 (1)) 및 세션 키(skxy)로 계산되는 무결성 코드(MIC(skxy))를 다른 엔티티 y에 송신한다. In ① of FIG. 4 , a specific entity x has its own distributed ID (cID x ), the previous node of the current node registered as its current commitment node (x 3 (1) ), and the session key (sk xy ). Send the code MIC(sk xy ) to another entity y.

다른 엔티티 y는 수신한 특정 엔티티 x의 이전 노드(x3 (1))와 공개키(PKx (1))를 해시 함수에 입력한 결과가 특정 엔티티 x의 커미트먼트 노드(x2 (1))와 동일한지 확인한다. Another entity y receives the previous node (x 3 (1) ) and public key (PK x (1) ) of the received specific entity x into the hash function, and the result of inputting the specific entity x’s commitment node (x 2 (1) ) Check that it is the same as

특정 엔티티 x의 이전 노드(x3 (1))와 공개키(PKx (1))를 해시 함수에 입력한 결과가 특정 엔티티 x의 커미트먼트 노드(x2 (1))와 동일한 경우, 다른 엔티티 y도 키 관리 장치로부터 수신한 특정 엔티티 x의 현재 공개키(PKx (1)) 및 자신의 개인키를 ECDH 함수에 입력하여 마스터 키를 생성한다(도 4의 mkxy=ECDH(SKy (2), PKx (1))). 이 때, ECDH 함수의 성질에 따라 특정 엔티티 x에서 생성된 마스터 키(mkxy)와 다른 엔티티 y에서 생성된 마스터키(mkxy)는 동일하다.If the result of inputting the previous node (x 3 (1) ) and public key (PK x (1) ) of a specific entity x into the hash function is the same as the commitment node (x 2 (1) ) of the specific entity x, another entity y also generates the master key by inputting the current public key (PK x (1) ) of the specific entity x received from the key management device and its private key into the ECDH function (mk xy =ECDH(SK y ( 2) , PK x (1) )). In this case, the master key (mk xy ) generated in a specific entity x and the master key (mk xy ) generated in another entity y are the same according to the properties of the ECDH function.

그리고, 다른 엔티티 y도 키 관리 장치로부터 수신한 특정 엔티티 x의 해시 체인에 대한 커미트먼트 노드(x2 (1)), y의 커미트먼트 노드(y3 (2)) 및 마스터 키(mkxy)를 키 유도 함수에 입력하여 세션 키를 생성한다(도 4의 skxy=kdf(mkxy || x2 (1) || y3 (2)). Then, another entity y also has a key with a commitment node (x 2 (1) ), a commitment node (y 3 (2) ) of y, and a master key (mk xy ) for the hash chain of a specific entity x received from the key management device. Enter the derivation function to generate a session key (sk xy =kdf(mk xy || x 2 (1) || y 3 (2) in FIG. 4 ).

다른 엔티티 y는 생성한 세션 키로 무결성 코드를 계산하여 특정 엔티티 x로부터 수신한 무결성 코드와 비교할 수 있다. 다른 엔티티 y에서 생성한 세션 키(skxy)로 계산된 무결성 코드와 특정 엔티티 x로부터 수신한 무결성 코드가 동일한 경우, 도 4의 ②와 같이, 다른 엔티티 y는 자신의 분산 ID(cIDy), 자신의 현재 커미트먼트 노드로 등록된 현재 노드의 이전 노드(y4 (2)) 및 생성한 세션 키(skxy)를 특정 엔티티 x에 송신한다.Another entity y may calculate an integrity code with the generated session key and compare it with the integrity code received from a specific entity x. When the integrity code calculated with the session key (sk xy ) generated by the other entity y and the integrity code received from the specific entity x are the same, as shown in ② of FIG. 4 , the other entity y has its own distributed ID (cID y ), The previous node (y 4 (2) ) of the current node registered as its current commitment node and the generated session key (sk xy ) are transmitted to a specific entity x.

특정 엔티티 x는 수신한 다른 엔티티 y의 이전 노드(y4 (2))와 공개키(PKy (2))를 해시 함수에 입력한 결과가 다른 엔티티 y의 커미트먼트 노드(y3 (2))와 동일한지 확인한다. A specific entity x is a commitment node (y 3 (2) ) of another entity y that has received the previous node (y 4 (2) ) and public key (PK y (2) ) of another entity y as a result of inputting the hash function into the hash function. Check that it is the same as

다른 엔티티 y의 이전 노드(y4 (2))와 공개키(PKy (2))를 해시 함수에 입력한 결과가 다른 엔티티 y의 커미트먼트 노드(y3 (2))와 동일한 경우, 특정 엔티티 x는 생성한 세션키(skxy)로 무결성 코드를 계산하여 다른 엔티티 y로부터 수신한 무결성 코드와 비교할 수 있다. 특정 엔티티 x에서 생성한 세션 키(skxy)로 계산된 무결성 코드와 다른 엔티티 y로부터 수신한 무결성 코드가 동일한 경우, 각 엔티티(x, y)는 블록 체인에 등록된 엔트리 업데이트를 키 관리 장치에 요청한다. 그리고, 엔티티 간의 통신 채널이 생성된다. If the result of entering the previous node (y 4 (2) ) and public key (PK y (2) ) of another entity y into the hash function is the same as the commitment node (y 3 (2) ) of another entity y, a specific entity x can be compared with the integrity code received from another entity y by calculating the integrity code with the generated session key (sk xy ). If the integrity code calculated by the session key (sk xy ) generated by a specific entity x and the integrity code received from another entity y are the same, each entity (x, y) sends an entry update registered in the blockchain to the key management device. request. Then, a communication channel between entities is created.

도 5는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 과정을 도시한 도면이다. 5 is a diagram illustrating a key update process of an entity according to an embodiment of the present invention.

도 5는 엔티티 간의 키 교환이 수행됨에 따라 특정 엔티티 x의 엔트리가 블록 체인 상에서 업데이트 되는 과정을 표로 나타낸 것이다. 도 5에서 표의 제1열에 위치한 (i, j)는 i번째 해시 체인의 j번째 노드가 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드로 등록된 상태를 나타낸다. 5 is a table showing a process in which an entry of a specific entity x is updated on a block chain as key exchange between entities is performed. In FIG. 5, (i, j) located in the first column of the table indicates a state in which the j-th node of the i-th hash chain is registered as a commitment node for the current hash chain of a specific entity x.

예를 들어, 도 5에서 표의 제1열에서 (1, 3)에 대응하는 행은 특정 엔티티 x의 1번째 해시 체인의 3번째 노드가 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드로 등록된 상태를 나타낸다.For example, in FIG. 5 , the row corresponding to (1, 3) in the first column of the table indicates that the third node of the first hash chain of a specific entity x is registered as a commitment node for the current hash chain of the specific entity x indicates

도 5에서 표의 제2열에 위치한 A, B, C, D, E, F, G의 의미는 아래와 같다. A는 특정 엔티티 x의 분산 ID를 나타낸다. B는 특정 엔티티 x의 현재 공개키를 나타낸다. C는 특정 엔티티 x의 현재 해시 체인에 대한 루트 노드를 나타낸다. D는 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드를 나타낸다. E는 특정 엔티티 x의 다음 해시 체인에 대한 루트 노드를 나타낸다.The meanings of A, B, C, D, E, F, and G located in the second column of the table in FIG. 5 are as follows. A represents the distribution ID of a specific entity x. B represents the current public key of a specific entity x. C represents the root node for the current hash chain of a specific entity x. D represents the commitment node for the current hash chain of a specific entity x. E represents the root node for the next hash chain of a specific entity x.

F는 특정 엔티티 x의 무결성 코드를 나타낸다. G는 특정 엔티티 x의 현재 엔트리가 무결성 검증 여부를 나타내는 변수이다. G가 0인 경우 현재 엔트리가 무결성이 검증되지 않은 경우를 의미하고, G가 1인 경우 현재 엔트리의 무결성이 검증된 경우를 의미한다. F represents the integrity code of a specific entity x. G is a variable indicating whether the current entry of a specific entity x is integrity verified. When G is 0, it means that the integrity of the current entry is not verified, and when G is 1, it means that the integrity of the current entry is verified.

도 5를 참조하면, 엔티티 간의 키 교환이 수행되더라도 블록 체인에 등록된 엔티티의 분산 ID가 변경되지 않는다. 그러나, 엔티티의 현재 해시 체인에 대한 커미트먼트 노드, 현재 해시 체인의 루트 노드, 다음 해시 체인의 커미트먼트 노드 및 현재 개인키 등은 업데이트 된다. Referring to FIG. 5 , even if key exchange between entities is performed, the distributed ID of entities registered in the block chain is not changed. However, the commitment node for the entity's current hash chain, the root node of the current hash chain, the commitment node of the next hash chain, and the current private key are updated.

도 5의 ①에서, 특정 엔티티 x의 키 교환으로 인해, 키 관리 장치는 특정 엔티티 x의 분산 ID(CIDx), 공개키(PKx (1)), 현재 해시 체인에 대한 커미트먼트 노드로 등록된 현재 노드(x2 (1))의 이전 노드(x3 (1)), 다음 해시 체인의 루트 노드(x0 (2)) 및 무결성 코드(MIC(x4 (1))) 를 특정 엔티티 x로부터 수신한다. In ① of FIG. 5, due to the key exchange of a specific entity x, the key management device is registered as a commitment node for the distributed ID (CID x ), public key (PK x (1) ) of the specific entity x, and the current hash chain. The previous node (x 3 (1) ) of the current node (x 2 (1) ), the root node of the next hash chain (x 0 (2) ), and the integrity code (MIC(x 4 (1) )) of the specific entity x receive from

이 때, 특정 엔티티 x에서 송신하는 공개키, 이전 노드, 다음 해시 체인의 루트 노드는 각각 요청 공개키, 요청 커미트먼트 노드, 요청 루트 노드로 표현될 수 있다. 그리고, 블록 체인 상에 등록된 현재 공개키, 현재 해시 체인에 대한 커미트먼트 노드 및 다음 해시 체인에 대한 루트 노드는 각각 등록 공개키, 등록 커미트먼트 노드, 다음 해시 체인에 대한 등록 루트 노드로 표현될 수 있다. In this case, the public key, the previous node, and the root node of the next hash chain transmitted from the specific entity x may be expressed as a request public key, a request commitment node, and a request root node, respectively. And, the current public key registered on the block chain, the commitment node for the current hash chain, and the root node for the next hash chain may be expressed as a registered public key, a registered commitment node, and a registered root node for the next hash chain, respectively. .

도 5의

Figure 112020044425117-pat00007
를 참조하면, 키 관리 장치는 수신한 요청 커미트먼트 노드(x3 (1))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 요청 커미트먼트 노드(x3 (1)) 무결성 코드(MIC(x3 (1)))를 계산하여 키 교환 전 특정 엔티티 x의 엔트리(도 5의 표에서 제1열의 (1, 2)에 대응하는 행)의 무결성을 검증할 수 있다. 그리고, 검증 결과에 따라 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 1로 업데이트한다. 5 of
Figure 112020044425117-pat00007
Referring to , the key management device updates the received request commitment node (x 3 (1) ) with a commitment node for the current hash chain, and the received request commitment node (x 3 (1) ) integrity code (MIC(x) 3 (1) )) can be calculated to verify the integrity of the entry of a specific entity x (rows corresponding to (1, 2) of the first column in the table of FIG. 5) before key exchange. Then, according to the verification result, the key management device updates the value corresponding to G in the table of FIG. 5 to 1.

마찬가지로, 도 5의 ②에서, 특정 엔티티 x의 키 교환으로 인해, 키 관리 장치는 특정 엔티티 x의 분산 ID(CIDx), 요청 공개키(PKx (1)), 현재 해시 체인에 대한 커미트먼트 노드로 등록된 현재 노드(x3 (1))의 이전 노드(x4 (1))에 대응하는 요청 커미트먼트 노드, 다음 해시 체인의 요청 루트 노드(x0 (2)) 및 무결성 코드(MIC(x5 (1))) 를 특정 엔티티 x로부터 수신한다. 도 5의 ②에서, 요청 루트 노드(x0 (i))는, i번째 공개키로 생성된 i번째 해시 체인의 마지막 노드가 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인의 루트 노드일 때, i+1번째 공개키로 생성된 해시 체인의 마지막 노드(x0 (i+1))를 의미한다.Similarly, in ② of FIG. 5 , due to the key exchange of a specific entity x, the key management device determines the distributed ID (CID x ) of the specific entity x, the requested public key (PK x (1) ), and a commitment node for the current hash chain. The request commitment node corresponding to the previous node ( x 4 (1) ) of the current node (x 3 (1) ) registered as 5 (1) )) is received from a specific entity x. In ② of FIG. 5, the request root node (x 0 (i) ) is, when the last node of the i-th hash chain created with the i-th public key is the root node of the current hash chain registered in the entry of a specific entity x, i It means the last node (x 0 (i+1) ) of the hash chain created with the +1 public key.

그리고, 도 5의

Figure 112020044425117-pat00008
를 참조하면, 키 관리 장치는 수신한 요청 커미트먼트 노드(x4 (1))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 요청 커미트먼트 노드(x4 (1))로 무결성 코드(MIC(x4 (1)))를 계산하여 키 교환 전 특정 엔티티 x의 엔트리(도 5의 표에서 제1열의 (1, 3)에 대응하는 행)의 무결성을 검증할 수 있다. 그리고, 검증 결과에 따라 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 1로 업데이트한다. And, in FIG. 5
Figure 112020044425117-pat00008
Referring to , the key management device updates the received request commitment node (x 4 (1) ) with a commitment node for the current hash chain, and uses the received request commitment node (x 4 (1) ) with the integrity code (MIC( x 4 (1) )), it is possible to verify the integrity of an entry of a specific entity x (rows corresponding to (1, 3) of the first column in the table of FIG. 5) before key exchange. Then, according to the verification result, the key management device updates the value corresponding to G in the table of FIG. 5 to 1.

다만, 도 5의 ③에서, 특정 엔티티 x의 키 교환 이전에, 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인에 대한 커미트먼트 노드가 해시 체인의 n번째 노드(xn (1))이므로, 블록 체인에 등록된 현재 공개키가 만료되어 키 관리 장치는 새로운 공개키를 수신한다. However, in ③ of FIG. 5, before the key exchange of the specific entity x, the commitment node for the current hash chain registered in the entry of the specific entity x is the nth node (x n (1) ) of the hash chain, so the block chain The current public key registered in ' has expired, and the key management device receives a new public key.

구체적으로, 도 5의 ③에서, 키 관리 장치는 분산 ID(CIDx), 새로운 개인키로 생성된 요청 공개키(PKx (2)), 다음 해시 체인의 루트 노드로 등록된 현재 노드의(x0 (2)) 이전 노드(x1 (2))에 대응하는 요청 커미트먼트 노드, 다음 해시 체인의 요청 루트 노드(x0 (3)) 및 요청 커미트먼트 노드의 이전 노드로 계산되는 무결성 코드(MIC(x2 (2)))를 수신한다. 도 5의 ③에서, 요청 루트 노드는, i번째 공개키로 생성된 i번째 해시 체인의 마지막 노드(x0 (i))가 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인의 루트 노드일 때, i+2번째 공개키로 생성된 해시 체인의 마지막 노드(x0 (i+2))를 의미한다. Specifically, in ③ of FIG. 5, the key management device includes the distributed ID (CID x ), the requested public key (PK x (2) ) generated with the new private key, and the (x) of the current node registered as the root node of the next hash chain. 0 (2) ) the request commitment node corresponding to the previous node (x 1 (2) ), the request root node (x 0 (3) ) of the next hash chain, and the integrity code (MIC x 2 (2) )) is received. In ③ of FIG. 5, the request root node is, when the last node (x 0 (i) ) of the i-th hash chain created with the i-th public key is the root node of the current hash chain registered in the entry of a specific entity x, i It means the last node (x 0 (i+2) ) of the hash chain created with the +2nd public key.

그리고 도 5의

Figure 112020044425117-pat00009
을 참조하면, 키 관리 장치는 요청 공개키(PKx (2))를 현재 공개키로 업데이트하고, 수신한 요청 커미트먼트 노드(x1 (2))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 기존에 등록된 다음 해시 체인의 루트 노드(x0 (2))를 현재 해시 체인의 루트 노드로 업데이트한다. 그리고, 키 관리 장치가 수신한 무결성 코드(MIC(x2 (2)))를 통한 무결성 검증이 이루어지지 않았으므로, 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 1로 업데이트한다. and in FIG. 5
Figure 112020044425117-pat00009
Referring to , the key management device updates the request public key (PK x (2) ) with the current public key, updates the received request commitment node (x 1 (2) ) with the commitment node for the current hash chain, and Update the root node of the next hash chain (x 0 (2) ) registered in the hash chain with the root node of the current hash chain. And, since integrity verification has not been performed through the integrity code (MIC(x 2 (2) )) received by the key management device, the key management device updates the value corresponding to G in the table of FIG. 5 to 1.

도 5에 도시된 표의 제1열에서 (1, n)에 대응하는 행의 엔트리와 달리, 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인에 대한 커미트먼트 노드가 해시 체인의 n번째 노드(xn (1))가 아닌 경우에도 개인키가 교체되는 경우, 키 관리 장치는 새로운 공개키를 수신할 수 있다. 이 때, 특정 엔티티 x의 엔트리에 대한 업데이트 과정은 도 5의 ③ 및

Figure 112020044425117-pat00010
에서와 동일한 과정을 통해 수행된다. Unlike the entry in the row corresponding to (1, n) in the first column of the table shown in FIG. 5, the commitment node for the current hash chain registered in the entry of a specific entity x is the nth node (x n ( 1) ), if the private key is replaced, the key management device may receive a new public key. At this time, the update process for the entry of a specific entity x is 3 and
Figure 112020044425117-pat00010
It is carried out through the same process as in

특정 엔티티 x의 키 교환에 따른 블록 체인 업데이트에 대한 요청(도 5에서 BC update messages by the entity x)이 유효한 요청인지 검증하기 위해 아래 과정이 이루어진다. The following process is performed to verify whether a request for a block chain update according to the key exchange of a specific entity x (BC update messages by the entity x in FIG. 5) is a valid request.

키 관리 장치는 특정 엔티티 x로부터 분산 ID, 요청 공개키, 요청 커미트먼트 노드, 다음 해시 체인에 대한 요청 루트 노드, 무결성 코드를 수신한다. 키 관리 장치는 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 현재 해시 체인에 대한 커미트먼트 노드와 비교한다. The key management device receives a distributed ID, a request public key, a request commitment node, a request root node for the next hash chain, and an integrity code from a specific entity x. The key management device compares the result of inputting the request public key and the request commitment node into the hash function with the commitment node for the current hash chain.

요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 현재 해시 체인에 대한 커미트먼트 노드와 동일하고, 요청 커미트먼트 노드로 계산한 무결성 코드가 특정 엔티티 x의 엔트리에 등록된 무결성 코드와 동일한 경우, 키 관리 장치는 요청 공개키를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 등록된 무결성 코드는 특정 엔티티 x로부터 수신한 무결성 코드로 업데이트하고, 무결성 검증 여부를 나타내는 변수(G)를 1로 업데이트한다. If the result of inputting the request public key and the request commitment node into the hash function is the same as the commitment node for the current hash chain, and the integrity code calculated by the request commitment node is the same as the integrity code registered in the entry of a specific entity x, the key The management device updates the requested public key to the commitment node for the current hash chain, the registered integrity code is updated with the integrity code received from the specific entity x, and the variable G indicating whether integrity is verified is updated to 1.

그리고, 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 현재 해시 체인에 대한 커미트먼트 노드와 다른 경우, 키 관리 장치는 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 특정 엔티티 x의 엔트리에 등록된 다음 해시 체인에 대한 루트 노드와 비교한다. And, if the result of inputting the request public key and the request commitment node into the hash function is different from the commitment node for the current hash chain, the key management device returns the result of inputting the request public key and the request commitment node into the hash function to the specific entity x It is compared with the root node for the next hash chain registered in the entry of .

요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 다음 해시 체인에 대한 루트 노드와 동일하고, 요청 커미트먼트 노드로 계산한 무결성 코드가 특정 엔티티 x의 엔트리에 등록된 무결성 코드와 동일한 경우, 키 관리 장치는 수신한 요청 공개키를 현재 개인키로 업데이트하고, 다음 해시 체인에 대한 루트 노드를 현재 해시 체인에 대한 루트 노드로 업데이트하고, 요청 커미트먼트 노드를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 요청 루트 노드를 다음 해시 체인에 대한 루트 노드로 업데이트하고, 등록된 무결성 코드를 수신한 무결성 코드로 업데이트하고, 무결성 검증 여부를 나타내는 변수(G)를 0으로 업데이트한다. If the result of entering the request public key and the request commitment node into the hash function is the same as the root node for the next hash chain, and the integrity code calculated by the request commitment node is the same as the integrity code registered in the entry of a specific entity x, the key The management device updates the received request public key with the current private key, updates the root node for the next hash chain to the root node for the current hash chain, updates the request commitment node to the commitment node for the current hash chain, and The root node is updated as the root node for the next hash chain, the registered integrity code is updated with the received integrity code, and the variable (G) indicating whether integrity is verified is updated to 0.

요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 다음 해시 체인에 대한 루트 노드 또는 현재 해시 체인에 대한 커미트먼트 노드와 다를 경우, 키 관리 장치는 특정 엔티티 x의 요청이 유효하지 않은 요청이라 판단하고, 특정 엔티티 x에 대한 엔트리 업데이트를 수행하지 않는다.If the result of inputting the request public key and the request commitment node into the hash function is different from the root node for the next hash chain or the commitment node for the current hash chain, the key management device determines that the request of the specific entity x is an invalid request. and do not perform an entry update for a specific entity x.

도 6은 본 발명의 일실시예에 따른 엔티티의 키 생성 방법에 대한 플로우 차트를 도시한 도면이다. 6 is a flowchart illustrating a method for generating a key of an entity according to an embodiment of the present invention.

단계(601)에서, 특정 엔티티는 블록 체인의 i번째 개인키를 생성한다. 특정 엔티티는 랜덤으로 생성된 비밀키, 개인키 시드 및 복수의 개인키를 넘버링 하기 위한 변수를 해시 함수에 입력하여 개인키를 획득할 수 있다. In step 601, a specific entity generates an i-th private key of the block chain. A specific entity may obtain a private key by inputting a randomly generated private key, a private key seed, and a variable for numbering a plurality of private keys to a hash function.

단계(602)에서, 특정 엔티티는 i번째 개인키로부터 i번째 공개키를 획득한다. 특정 엔티티는 공개키 생성 함수를 이용하여 i번째 개인키로부터 i번째 공개키를 생성할 수 있다. In step 602, the specific entity obtains the i-th public key from the i-th private key. A specific entity may generate the i-th public key from the i-th private key by using the public key generation function.

단계(603)에서, 특정 엔티티는 i번째 공개키 및 해시 함수를 이용하여 i번째 해시 체인(hash chain)을 생성한다. 해시 체인은 n+1개의 노드를 포함할 수 있다. 특정 엔티티는 랜덤으로 생성된 체인 시드, 앞서 생성한 비밀키, 개인키를 넘버링 하기 위한 변수를 해시 함수에 입력하여 n번째 노드를 획득한다. n은 1 이상의 정수이다. 그리고, 특정 엔티티는 j번째 노드와 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득할 수 있다. 이 때, j는 n 이하 1 이상의 정수이다. 특정 엔티티는 위 방법에 따라 n번째 노드부터 0번째 노드까지 일방향의 흐름을 갖는 해시 체인을 생성할 수 있다. In step 603, the specific entity generates an i-th hash chain using the i-th public key and hash function. A hash chain may contain n+1 nodes. A specific entity obtains the nth node by inputting the randomly generated chain seed, the previously generated secret key, and the variable for numbering the private key into the hash function. n is an integer greater than or equal to 1; In addition, the specific entity may obtain the j-1th node by inputting the j-th node and the i-th public key to the hash function. In this case, j is an integer of 1 or less n. A specific entity can create a hash chain with a one-way flow from the nth node to the 0th node according to the above method.

단계(604)에서, 특정 엔티티는 i+1번째 개인키를 생성하고, 단계(605)에서, 생성한 i+1번째 개인키로부터 i+1번째 공개키를 획득한다. 그리고, 단계(606) 특정 엔티티는 i+1번째 공개키 및 해시 함수를 이용하여 i+1번째 해시 체인을 생성한다. In step 604, the specific entity generates an i+1th private key, and in step 605, obtains an i+1th public key from the generated i+1th private key. Then, in step 606, the specific entity generates the i+1th hash chain using the i+1th public key and the hash function.

단계(607)에서, 특정 엔티티는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑한다. 특정 엔티티는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인의 마지막 노드를 제외한 나머지 노드에 매핑한다. In step 607, the specific entity maps the last node of the i+1th hash chain to the i-th hash chain. A specific entity maps the last node of the i+1th hash chain to all nodes except the last node of the i-th hash chain.

그리고, 특정 엔티티는 1번째 공개키 및 1번째 해시 체인의 마지막 노드를 해시 함수에 입력하여 특정 엔티티에 대응하는 분산 ID를 생성한다. 따라서, 특정 엔티티의 개인키가 교체되더라도 분산 ID는 업데이트 되지 않는다. Then, the specific entity generates a distributed ID corresponding to the specific entity by inputting the first public key and the last node of the first hash chain to the hash function. Therefore, even if the private key of a specific entity is replaced, the distributed ID is not updated.

도 7은 본 발명의 일실시예에 따른 엔티티의 키 등록 방법에 대한 플로우 차트를 도시한 도면이다.7 is a flowchart illustrating a method for registering a key of an entity according to an embodiment of the present invention.

단계(701)에서, 키 관리 장치는 블록 체인의 특정 엔티티로부터 특정 엔티티의 분산 ID, 특정 엔티티의 공개키 및 특정 엔티티의 해시 체인을 구성하는 연속된 노드들 중 마지막 노드를 획득한다. 마지막 노드는 일방향의 해시 체인이 생성될 때 가장 마지막으로 생성된 노드를 의미한다. In step 701, the key management device obtains the distributed ID of the specific entity, the public key of the specific entity, and the last node among consecutive nodes constituting the hash chain of the specific entity from the specific entity in the block chain. The last node means the last node created when a one-way hash chain is created.

단계(702)에서, 키 관리 장치는 분산 ID가 블록 체인에 등록되어 있는지 판단한다. 즉, 중복된 엔티티가 발생하지 않도록 키 관리 장치는 수신한 분산 ID가 블록 체인에 등록되어 있지 않은 경우에 단계(703, 704)를 수행한다. 등록된 경우, 등록 절차는 종료된다. In step 702, the key management device determines whether the distributed ID is registered in the block chain. That is, to prevent duplicate entities from occurring, the key management device performs steps 703 and 704 when the received distributed ID is not registered in the block chain. If registered, the registration procedure is terminated.

단계(703)에서, 키 관리 장치는 분산 ID 및 공개키를 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록한다. 그리고, 단계(704)에서, 키 관리 장치는 마지막 노드를 특정 엔티티의 루트 노드 및 커미트먼트 노드로 블록 체인에 등록한다. In step 703, the key management device registers the distributed ID and public key in the blockchain as the distributed ID and public key of a specific entity. And, in step 704, the key management device registers the last node in the block chain as a root node and a commitment node of a specific entity.

도 8은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 방법에 대한 플로우 차트를 도시한 도면이다.8 is a flowchart illustrating a method for exchanging keys between entities according to an embodiment of the present invention.

단계(801)에서, 특정 엔티티는 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드를 획득한다. In step 801, a specific entity obtains a public key and a commitment node of another entity registered in the block chain from the key management device.

단계(802)에서, 특정 엔티티는 다른 엔티티로부터 다른 엔티티의 해시 체인에서 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신한다. 다른 엔티티의 해시 체인에서 현재 노드는 이전 노드와 다른 엔티티의 현재 공개키를 해시 함수에 입력한 결과에 대응한다. In step 802, the specific entity receives from the other entity the previous node of the current node corresponding to the other entity's commitment node in the hash chain of the other entity. The current node in the hash chain of another entity corresponds to the result of inputting the current public key of the entity different from the previous node into the hash function.

단계(803)에서, 특정 엔티티는 특정 엔티티의 해시 체인에서 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 다른 엔티티에 송신한다. 이는 다른 엔티티에서도 특정 엔티티에 대한 유효성을 검증하기 위함이다.In step 803, the specific entity sends the previous node of the current node corresponding to the commitment node of the specific entity in the hash chain of the specific entity to another entity. This is to verify the validity of a specific entity in other entities as well.

단계(804)에서, 특정 엔티티는 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일한지 판단한다. In step 804, the specific entity determines whether the result of inputting the previous node of the other entity and the public key of the other entity into the hash function is the same as the commitment node of the other entity.

이 때, 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일한 경우, 특정 엔티티는 다른 엔티티가 유효한 엔티티로 판단하여 단계(805)에서 보안 채널을 생성한다. At this time, if the result of inputting the previous node of the other entity and the public key of the other entity into the hash function is the same as the commitment node of the other entity, the specific entity determines that the other entity is a valid entity and establishes a secure channel in step 805 . create

그러나, 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일하지 않은 경우, 특정 엔티티는 다른 엔티티가 유효하지 않은 엔티티로 판단하여 키 교환 과정을 종료한다. However, if the result of inputting the previous node of another entity and the public key of another entity into the hash function is not the same as that of the other entity's commitment node, the specific entity determines that the other entity is an invalid entity and terminates the key exchange process. do.

도 9는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 방법에 대한 플로우 차트를 도시한 도면이다.9 is a flowchart illustrating a method for updating a key of an entity according to an embodiment of the present invention.

단계(901)에서, 키 관리 장치는 블록 체인의 특정 엔티티로부터 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인에 대한 요청 커미트먼트 노드, iii) 다음 해시 체인에 대한 요청 루트 노드를 획득한다. In step 901, the key management device obtains, from a specific entity in the block chain, i) a request public key of a specific entity, ii) a request commitment node for the current hash chain, and iii) a request root node for the next hash chain.

특정 엔티티에서 송신하는 공개키, 이전 노드, 다음 해시 체인의 루트 노드는 각각 요청 공개키, 요청 커미트먼트 노드, 요청 루트 노드로 표현될 수 있다. 그리고, 블록 체인 상에 등록된 현재 공개키, 현재 해시 체인에 대한 커미트먼트 노드 및 다음 해시 체인에 대한 루트 노드는 각각 등록 공개키, 등록 커미트먼트 노드, 다음 해시 체인에 대한 등록 루트 노드로 표현될 수 있다.The public key, previous node, and root node of the next hash chain transmitted from a specific entity may be expressed as a request public key, a request commitment node, and a request root node, respectively. And, the current public key registered on the block chain, the commitment node for the current hash chain, and the root node for the next hash chain may be expressed as a registered public key, a registered commitment node, and a registered root node for the next hash chain, respectively. .

단계(902)에서, 키 관리 장치는 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 블록 체인에 등록된 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 판단한다.In step 902, the key management device determines that the result of inputting the request commitment node and the request public key into the hash function is the same as i) the registration commitment node and ii) the registration root node of the next hash chain of a specific entity registered in the block chain. judge whether

단계(903)에서, 키 관리 장치는 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 등록 커미트먼트 노드와 동일한 경우, 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트한다.In step 903, when the result of inputting the request commitment node and the requested public key into the hash function is the same as the registration commitment node, the key management device updates the request commitment node of the specific entity to the registration commitment node.

키 관리 장치는 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 등록 커미트먼트 노드와 동일하지 않은 경우, 단계(904)에서, 키 관리 장치는 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한지 판단한다. If the key management device inputs the request commitment node and the requested public key into the hash function and the result is not the same as the registration commitment node, in step 904, the key management device inputs the request commitment node and the requested public key into the hash function Determines whether one result is the same as the registration root node for the next hash chain of a particular entity.

요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 단계(905)에서, 키 관리 장치는 요청 공개키를 블록 체인에 등록되는 특정 엔티티의 등록 공개키로 업데이트하고, 요청 루트 노드를 특정 엔티티의 등록 루트 노드로 업데이트한다. If the result of inputting the request commitment node and the request public key into the hash function is the same as the registration root node for the next hash chain of the specific entity, in step 905, the key management device sets the request public key to the specific entity to be registered in the block chain. Update the entity's registered public key, and update the request root node to the specific entity's registered root node.

요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 키 관리 장치는 키 업데이트 과정을 종료한다. When the result of inputting the request commitment node and the requested public key into the hash function is the same as the registration root node for the next hash chain of the specific entity, the key management device ends the key update process.

한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.Meanwhile, the method according to the present invention is written as a program that can be executed on a computer and can be implemented in various recording media such as magnetic storage media, optical reading media, and digital storage media.

본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.Implementations of the various techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or combinations thereof. Implementations may be implemented for processing by, or for controlling the operation of, a data processing device, eg, a programmable processor, computer, or number of computers, a computer program product, ie an information carrier, eg, a machine readable storage It may be embodied as a computer program tangibly embodied in an apparatus (computer readable medium) or a radio signal. A computer program, such as the computer program(s) described above, may be written in any form of programming language, including compiled or interpreted languages, as a standalone program or in a module, component, subroutine, or computing environment. It can be deployed in any form including as other units suitable for use. A computer program may be deployed to be processed on one computer or multiple computers at one site or to be distributed across multiple sites and interconnected by a communications network.

컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.Processors suitable for processing a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. In general, a processor will receive instructions and data from either read-only memory or random access memory or both. Elements of a computer may include at least one processor that executes instructions and one or more memory devices that store instructions and data. In general, a computer may include, receive data from, transmit data to, or both, one or more mass storage devices for storing data, for example magnetic, magneto-optical disks, or optical disks. may be combined to become Information carriers suitable for embodying computer program instructions and data are, for example, semiconductor memory devices, for example, magnetic media such as hard disks, floppy disks and magnetic tapes, Compact Disk Read Only Memory (CD-ROM). ), an optical recording medium such as a DVD (Digital Video Disk), a magneto-optical medium such as an optical disk, ROM (Read Only Memory), RAM (RAM) , Random Access Memory), flash memory, EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), and the like. Processors and memories may be supplemented by, or included in, special purpose logic circuitry.

또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.In addition, the computer-readable medium may be any available medium that can be accessed by a computer, and may include both computer storage media and transmission media.

본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.While this specification contains numerous specific implementation details, they should not be construed as limitations on the scope of any invention or claim, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. should be understood Certain features that are described herein in the context of separate embodiments may be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments, either individually or in any suitable subcombination. Furthermore, although features operate in a particular combination and may be initially depicted as claimed as such, one or more features from a claimed combination may in some cases be excluded from the combination, the claimed combination being a sub-combination. or a variant of a sub-combination.

마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 장치 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 장치들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.Likewise, although acts are depicted in the drawings in a particular order, it should not be construed that all acts shown must be performed or that such acts must be performed in the specific order or sequential order shown to obtain desirable results. In certain cases, multitasking and parallel processing may be advantageous. Further, the separation of the various device components of the above-described embodiments should not be construed as requiring such separation in all embodiments, and the program components and devices described may generally be integrated together into a single software product or packaged into multiple software products. You have to understand that you can.

한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.On the other hand, the embodiments of the present invention disclosed in the present specification and drawings are merely presented as specific examples to aid understanding, and are not intended to limit the scope of the present invention. It will be apparent to those of ordinary skill in the art to which the present invention pertains that other modifications based on the technical spirit of the present invention can be implemented in addition to the embodiments disclosed herein.

101: 블록 체인을 구성하는 특정 엔티티의 분산 ID
102: 특정 엔티티의 공개키
103: 특정 엔티티의 개인키
104: 특정 엔티티의 해시 체인
101: Decentralized IDs of specific entities that make up the blockchain
102: public key of a specific entity
103: private key of a specific entity
104: hash chain of specific entity

Claims (20)

블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 생성 방법에 있어서,
블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하는 단계;
상기 i번째 개인키로부터 i번째 공개키를 획득하는 단계;
상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하는 단계;
상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하는 단계;
상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하는 단계;
상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하는 단계;
상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑하는 단계; 및
상기 i가 1인 경우, 1번째 공개키 및 1번째 해시 체인의 마지막 노드를 해시 함수에 입력하여 상기 특정 엔티티에 대응하는 분산 ID를 생성하는 단계
를 포함하는 키 생성 방법.
In a key generation method performed by a specific entity constituting a block chain,
generating an i-th private key corresponding to a specific entity in the block chain;
obtaining an i-th public key from the i-th private key;
using the i-th public key and a hash function to generate an i-th hash chain consisting of consecutive nodes in one-way and corresponding to the specific entity;
generating an i+1th private key corresponding to the specific entity;
obtaining an i+1th public key from the i+1th private key;
generating an i+1th hash chain corresponding to the specific entity using the i+1th public key and a hash function;
mapping the last node of the i+1th hash chain to the i-th hash chain; and
When i is 1, inputting the first public key and the last node of the first hash chain into a hash function to generate a distributed ID corresponding to the specific entity;
A method of generating a key, including
삭제delete 제1항에 있어서,
상기 i번째 해시 체인을 생성하는 단계는,
임의의 시드(seed) 및 상기 특정 엔티티에 대응하는 비밀키를 해시 함수에 입력하여 i번째 해시 체인의 n번째 노드를 획득하는 단계; 및
j번째 노드 및 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득하는 단계
를 포함하는 키 생성 방법.
According to claim 1,
The step of generating the i-th hash chain comprises:
obtaining an n-th node of an i-th hash chain by inputting an arbitrary seed and a secret key corresponding to the specific entity into a hash function; and
Obtaining the j-1th node by inputting the j-th node and the i-th public key into the hash function
A method of generating a key, including
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 컴퓨터에서 판독 가능한 기록 매체에 있어서,
상기 기록 매체는,
블록 체인(blockchain)을 구성하는 엔티티(entity)들 각각의 i) 분산 ID, ii) i번째 공개키, iii) i번째 해시 체인(hash chain)의 루트 노드(root node), iv) i번째 해시 체인에 대한 커미트먼트 노드(commitment node) 및 v) i+1번째 해시 체인의 루트 노드가 기록되고,
상기 엔티티들의 i번째 공개키는,
상기 엔티티들에 대응하는 i번째 개인키로부터 생성되고,
상기 엔티티들의 i번째 해시 체인은,
일방향(one-way)의 연속된 노드들로 구성되고, 상기 엔티티들의 i번째 공개키 및 해시 함수를 이용하여 생성되고,
상기 엔티티들의 i+1번째 해시 체인은,
일방향의 연속된 노드들로 구성되고, 상기 엔티티들의 i+1번째 공개키 및 해시 함수를 이용하여 생성되고,
상기 엔티티들의 분산 ID는,
상기 엔티티들의 1번째 해시 체인의 마지막 노드 및 상기 엔티티들의 1번째 공개키가 해시 함수에 입력된 결과인,
기록 매체.
A computer-readable recording medium comprising:
The recording medium is
i) distributed ID, ii) i-th public key, iii) root node of i-th hash chain, iv) i-th hash of each entity constituting the blockchain The commitment node for the chain and v) the root node of the i+1th hash chain are recorded,
The i-th public key of the entities is,
generated from the i-th private key corresponding to the entities,
The i-th hash chain of the entities is,
Consists of one-way consecutive nodes, and is generated using the i-th public key and hash function of the entities,
The i+1th hash chain of the entities is,
Consists of one-way consecutive nodes, and is generated using the i+1th public key and hash function of the entities,
The distributed ID of the entities is,
The result of inputting the last node of the first hash chain of the entities and the first public key of the entities into a hash function,
recording medium.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020200052272A 2020-04-29 2020-04-29 A method and apparatus for management key of entity in blockchain KR102364254B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200052272A KR102364254B1 (en) 2020-04-29 2020-04-29 A method and apparatus for management key of entity in blockchain

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200052272A KR102364254B1 (en) 2020-04-29 2020-04-29 A method and apparatus for management key of entity in blockchain

Publications (2)

Publication Number Publication Date
KR20210133547A KR20210133547A (en) 2021-11-08
KR102364254B1 true KR102364254B1 (en) 2022-02-16

Family

ID=78497121

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200052272A KR102364254B1 (en) 2020-04-29 2020-04-29 A method and apparatus for management key of entity in blockchain

Country Status (1)

Country Link
KR (1) KR102364254B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070127719A1 (en) * 2003-10-14 2007-06-07 Goran Selander Efficient management of cryptographic key generations
KR101979586B1 (en) * 2018-12-19 2019-05-17 주식회사 마크애니 IoT DEVICE MANAGED BASED ON BLOCK CHAIN, SYSTEM AND METHOD THEREOF

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070127719A1 (en) * 2003-10-14 2007-06-07 Goran Selander Efficient management of cryptographic key generations
KR101979586B1 (en) * 2018-12-19 2019-05-17 주식회사 마크애니 IoT DEVICE MANAGED BASED ON BLOCK CHAIN, SYSTEM AND METHOD THEREOF

Also Published As

Publication number Publication date
KR20210133547A (en) 2021-11-08

Similar Documents

Publication Publication Date Title
CN111159288B (en) Method, system, device and medium for storing, verifying and realizing chained structure data
CN110912707B (en) Block chain-based digital certificate processing method, device, equipment and storage medium
CN108647964B (en) Block chain data processing method and device and computer readable storage medium
US10382962B2 (en) Network authentication system with dynamic key generation
Li et al. A searchable symmetric encryption scheme using blockchain
CN108769230B (en) Transaction data storage method, device, server and storage medium
US8995655B2 (en) Method for creating asymmetrical cryptographic key pairs
US20230316273A1 (en) Data processing method and apparatus, computer device, and storage medium
CN111385103B (en) Authority processing method, system and device and electronic equipment
CN110008755B (en) Cloud storage revocable dynamic data integrity verification system and method
CN113254955A (en) Forward security connection keyword symmetric searchable encryption method, system and application
US10630471B1 (en) System and method for enforcement of correctness for key derivation
CN114503508A (en) Computer-implemented method and system for storing authenticated data on blockchains
EP4226568A1 (en) Updatable private set intersection
Bakas et al. Multi-client symmetric searchable encryption with forward privacy
CN112671881A (en) Node organization management method and device, electronic equipment and readable storage medium
CN113434906B (en) Data query method, device, computer equipment and storage medium
CN109302286B (en) Fido equipment key index generation method
CN110910110A (en) Data processing method and device and computer storage medium
CN110968883A (en) Data management method and device based on block chain technology and storage medium
KR102364254B1 (en) A method and apparatus for management key of entity in blockchain
Ali et al. An Effective Blockchain Based Secure Searchable Encryption System.
CN116055051A (en) Data processing method based on block chain network and related equipment
CN116910718A (en) Virtual power plant user identity authentication method based on blockchain
US20220270717A1 (en) System and method for collecting clinical trial data based on block-chain

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