KR20210133547A - 블록 체인에서 엔티티의 키 관리 방법 및 장치 - Google Patents
블록 체인에서 엔티티의 키 관리 방법 및 장치 Download PDFInfo
- Publication number
- KR20210133547A KR20210133547A KR1020200052272A KR20200052272A KR20210133547A KR 20210133547 A KR20210133547 A KR 20210133547A KR 1020200052272 A KR1020200052272 A KR 1020200052272A KR 20200052272 A KR20200052272 A KR 20200052272A KR 20210133547 A KR20210133547 A KR 20210133547A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- entity
- key
- specific entity
- public key
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- 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번째 해시 체인에 매핑하는 단계를 포함할 수 있다.
Description
본 발명은 블록 체인에서 엔티티의 키 관리 방법 및 장치에 관한 것으로, 블록 체인에서 무한한 해시 체인을 활용한 엔티티의 키 생성 방법, 엔티티의 키 등록 방법, 엔티티 간의 키 교환 방법, 엔티티의 키 업데이트 방법에 관한 것이다.
분산 ID(decentralized identity)란 기존 신원확인 방식과 달리 중앙 시스템에 의해 통제되지 않으며 개개인이 자신의 정보에 통제권을 가질 수 있게 하는 블록 체인 기반의 기술이다.
블록 체인에는 블록 체인을 이루는 각 엔티티(entity)에 대응하는 분산 ID 또는 공개키 등이 등록되어 있다. 이 때, 각 엔티티는 공개키-개인키 쌍을 가지고 있으며, 공개키-개인키 쌍은 유효한 엔티티임을 인증하기 위해 이용된다.
엔티티의 공개키-개인키 쌍은 암호의 안전성을 위하여 일정 주기마다 변경되어야 한다. 종래 엔티티의 공개키-개인키 쌍이 변경되거나 교체되면 분산 ID도 함께 교체되기 때문에 기존의 엔티티가 아닌 새로운 엔티티로 취급되며, 기존의 엔티티의 특징이나 성질을 보존하지 못하는 한계가 있다.
따라서, 이러한 문제를 해결하기 위한 블록 체인의 키 관리 기술이 요구된다.
본 발명은 블록 체인에서 엔티티의 공개키-개인키 쌍이 변경되거나 교체될 때 분산 ID가 교체되어 기존의 엔티티의 특징, 성질을 보존하지 못하고 새로운 엔티티로 취급되는 것을 해결하는 방법 및 장치를 제공한다.
또한, 본 발명은 무한한 해시 체인을 이용하여 엔티티들의 키를 관리함으로써 엔티티의 공개키-개인키 쌍이 교체되더라도 엔티티의 분산 ID의 교체 없이 엔티티의 특징, 성질을 보존하는 방법 및 장치를 제공한다.
본 발명의 일실시예에 따른 블록 체인(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를 생성하는 단계를 더 포함할 수 있다.
상기 i번째 해시 체인을 생성하는 단계는, 임의의 시드(seed) 및 상기 특정 엔티티에 대응하는 비밀키를 해시 함수에 입력하여 i번째 해시 체인의 n번째 노드를 획득하는 단계; 및 j번째 노드 및 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 등록 방법은 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하는 단계; 상기 분산 ID가 블록 체인에 등록되어 있는지 판단하는 단계; 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하는 단계; 및 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록하는 단계를 포함할 수 있다.
상기 특정 엔티티의 공개키는, 상기 특정 엔티티에 대응하는 개인키로부터 생성되고, 상기 특정 엔티티의 해시 체인은, 상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성되고, 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티의 분산 ID는, 상기 특정 엔티티의 해시 체인의 마지막 노드 및 상기 특정 엔티티의 공개키가 해시 함수에 입력된 결과일 수 있다.
본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 교환 방법은 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하는 단계; 상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하는 단계; 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하는 단계; 및 상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하는 단계를 포함할 수 있다.
상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록될 수 있다.
상기 다른 엔티티의 공개키는, 상기 다른 엔티티에 대응하는 개인키로부터 생성되고, 상기 특정 엔티티의 해시 체인은, 상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성될 수 있다.
상기 해시 함수에 입력한 결과와 상기 다른 엔티티의 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 특정 엔티티의 커미트먼트 노드로 업데이트할 것을 요청하는 단계를 더 포함할 수 있다.
본 발명의 일실시예에 따른 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 업데이트 방법은 상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하는 단계; 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하는 단계; 및 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트 하는 단계를 포함할 수 있다.
상기 블록 체인은 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록되고, 상기 엔티티들의 해시 체인을 구성하는 연속된 노드들 중 마지막 노드가 루트 노드가 등록되고, 상기 엔티티들의 공개키는, 상기 엔티티들에 대응하는 개인키로부터 생성되고, 상기 엔티티들의 해시 체인은, 상기 엔티티들의 공개키 및 해시 함수를 이용하여 생성될 수 있다.
상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 커미트먼트 노드로 등록된 현재 노드의 이전 노드로 계산되는 무결성 코드가 등록되고, 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 요청 커미트먼트 노드로 무결성 코드를 계산하여 블록 체인에 등록된 상기 특정 엔티티의 무결성 코드와 비교하는 단계를 더 포함할 수 있다.
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트하는 단계를 더 포함할 수 있다.
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 루트 노드를 상기 특정 엔티티의 등록 루트 노드로 업데이트 하는 단계를 더 포함할 수 있다.
본 발명의 일실시예에 따른 컴퓨터에서 판독 가능한 기록 매체에 있어서, 상기 기록 매체는, 블록 체인(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번째 공개키를 해시 함수에 입력하여 생성될 수 있다.
본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서, 상기 특정 엔티티는 프로세서를 포함하고, 상기 프로세서는, 블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하고, 상기 i번째 개인키로부터 i번째 공개키를 획득하고, 상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하고, 상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하고, 상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하고, 상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하고, 상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑할 수 있다.
본 발명의 일실시예에 따른 블록 체인(blockchain)의 키 등록 방법을 수행하는 키 관리 장치에 있어서, 상기 키 관리 장치는 프로세서를 포함하고, 상기 프로세서는, 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하고, 상기 분산 ID가 블록 체인에 등록되어 있는지 판단하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록할 수 있다.
본 발명의 일실시예에 따른 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서, 특정 엔티티는 프로세서를 포함하고, 상기 프로세서는, 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하고, 상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하고, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하고, 상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하고, 상기 블록 체인은, 상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록될 수 있다.
본 발명의 일실시예에 따른 블록 체인(blockchain)의 키 업데이트 방법을 수행하는 키 관리 장치에 있어서, 상기 키 관리 장치는 프로세서를 포함하고, 상기 프로세서는, 상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하고, 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하고, 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트할 수 있다.
상기 프로세서는 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트할 수 있다.
본 발명의 일실시예 따르면 블록 체인에서 엔티티의 공개키-개인키 쌍이 변경되거나 교체될 때 분산 ID가 교체되어 기존의 엔티티의 특징, 성질을 보존하지 못하고 새로운 엔티티로 취급되는 것을 해결할 수 있다.
또한, 본 발명의 일실시예 따르면 무한한 해시 체인을 이용하여 엔티티들의 키를 관리함으로써 엔티티의 공개키-개인키 쌍이 교체되더라도 엔티티의 분산 ID의 교체 없이 엔티티의 특징, 성질을 보존할 수 있다.
도 1은 본 발명의 일실시예에 따른 블록 체인의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 하나의 엔티티에 대응하는 무한한 해시 체인을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 과정을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 엔티티의 키 생성 방법에 대한 플로우 차트를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 엔티티의 키 등록 방법에 대한 플로우 차트를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 방법에 대한 플로우 차트를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 방법에 대한 플로우 차트를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 하나의 엔티티에 대응하는 무한한 해시 체인을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 과정을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 엔티티의 키 생성 방법에 대한 플로우 차트를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 엔티티의 키 등록 방법에 대한 플로우 차트를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 방법에 대한 플로우 차트를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 방법에 대한 플로우 차트를 도시한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일실시예에 따른 블록 체인의 구조를 도시한 도면이다.
도 1의 (a)는 복수의 엔티티(entity)(105)들로 구성되는 블록 체인(block chain)을 나타낸다. 블록 체인의 사용자는 하나 이상의 엔티티를 블록 체인에 등록할 수 있다. 블록 체인은 복수의 엔티티(105)들이 중앙 관리자 없이 네트워크 상에서 서로 연결되어 모든 엔티티들 간의 거래에 대한 데이터를 모든 엔티티(105)들이 가지는 구조이다.
본 발명에서 블록 체인을 구성하는 엔티티(105)들은 각각 사용자 단말에 포함되는 프로세서에 대응할 수 있다. 다만, 블록 체인의 사용자가 하나 이상의 엔티티(105)를 블록 체인에 등록할 수 있기 때문에, 복수의 엔티티(105)가 하나의 사용자 단말에 포함되는 프로세서에 대응할 수도 있다. 사용자 단말에 포함된 프로세서는 본 발명의 키 생성 방법 및 키 교환 방법을 수행할 수 있다.
또한, 본 발명에서 키 관리 장치는 블록 체인을 구성하는 각 엔티티들에 대응하는 사용자의 단말들에 포함된 프로세서 중 어느 하나의 프로세서에 대응할 수 있고, 블록 체인을 저장하거나 블록 체인 서비스를 제공하는 서비스 제공자의 단말에 포함된 프로세서에 대응할 수 있다. 사용자 단말에 포함된 프로세서나 서비스 제공자의 단말에 포함된 프로세서는 본 발명의 키 등록 방법 및 키 업데이트 방법을 수행할 수 있다.
도 1의 (b)를 참조하면, 블록 체인의 각 엔티티(105)는 자신의 분산 ID(101), 개인키(103) 및 공개키(102)를 포함할 수 있다. 블록 체인에서 모든 엔티티들의 공개키(102)는 상호 간의 인증을 위해 공유될 수 있다. 다만, 엔티티(105)의 분산 ID(101)가 유효한 사용자인지 인증하기 위해 본 발명의 각 엔티티는 자신의 공개키(102)를 통해 생성한 일방향(one-way)의 무한한 해시 체인(infinite hash chain)을 포함한다.
여기서, 엔티티의 개인키(103)는 그 엔티티의 유효함을 인증하기 위한 것으로 각각의 엔티티는 자신의 개인키(103) 만을 갖는다. 또한, 개인키(103)는 공개키(102) 생성을 위해 이용된다. 엔티티는 랜덤으로 생성한 엔티티의 비밀키, 임의의 개인키(103) 시드(private key seed) 및 개인키(103)를 넘버링하기 위한 변수를 해시 함수(hash function)에 입력함으로써 개인키(103)를 획득한다. 그리고, 특정 엔티티의 개인키(103)는 갱신 주기에 교체될 수 있어야 하므로 추가로 생성될 수 있다. 구체적으로, 아래 수학식 1을 통해 엔티티의 개인키(103)가 생성된다.
수학식 1에서 SKx (i)는 특정 엔티티 x의 i번째 개인키(103)를 의미한다. i는 개인키(103)를 넘버링하기 위한 변수를 의미하고, 1에서부터 1씩 증가한다. h는 해시 함수를 의미한다. 해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 본 발명에서 해시 함수는 모든 블록 체인의 엔티티에 의해 공통적으로 이용되며, 특별한 종류의 함수로 제한되지 않는다. "private key seed"는 임의의 개인키(103) 시드를 의미하고, 랜덤으로 생성될 수 있다. " || "은 논리 연산자 중 OR 연산을 의미한다. 또한, Kx는 랜덤으로 생성된 특정 엔티티의 비밀키를 의미한다.
공개키(102)는 블록 체인의 엔티티 간에 공유되는 키로서 엔티티 간의 키 교환시 이용되며 개인키(103)를 이용하여 생성될 수 있다. 엔티티는 생성한 개인키(103)를 공개키(102) 생성 함수(public-key generation function)에 입력함으로써 공개키(102)를 획득할 수 있다. 공개키(102) 생성 함수는 출력 결과로부터 입력 결과를 도출할 수 없는 함수로서 특정한 함수로 제한되지 않는다. 구체적으로, 아래 수학식 2를 통해 특정 엔티티의 공개키(102)가 생성된다.
수학식 2에서 PKx (i)는 특정 엔티티 x의 i번째 공개키(102)를 의미한다. pkGen은 공개키(102) 생성 함수를 의미한다. SKx (i)는 특정 엔티티 x의 i번째 개인키(103)를 의미한다.
일방향의 무한한 해시 체인은 공개키(102)와 해시 함수를 이용하여 생성된다. 여기서, 일방향의 해시 체인이란 해시 함수의 결과 값을 다시 해시 함수에 입력하여 생성되는 체인을 의미한다. 해시 함수의 특성상, 해시 함수의 결과 값으로부터 입력 값을 알 수 없고, 동일한 입력 값에 대해서는 항상 같은 결과를 출력하기 때문에 해시 체인은 일방향의 특징을 갖는다.
해시 체인은 연속된 n+1개의 노드들로 구성된다. n은 0보다 큰 임의의 정수이고, 해시 체인 길이를 의미한다. 엔티티는 임의의 체인 시드(chain seed), 랜덤으로 생성한 엔티티의 비밀키 및 해시 체인을 넘버링하기 위한 변수를 해시 함수에 입력하여 n번째 노드를 획득한다. 구체적으로, 아래 수학식 3, 4을 통해 해시 체인을 구성하는 노드들이 생성된다.
위 수학식 3은 특정 엔티티 x에서 i번째 공개키(102)에 대응하는 i번째 해시 체인의 n번째 노드를 생성하기 위한 식이다. 위 수학식 3에서 xn (i)는 특정 엔티티 x의 i번째 해시 체인을 구성하는 n 번째 노드를 의미한다. 수학식 3에 따르면, i번째 해시 체인에서 n번째 노드가 가장 먼저 생성된다. 여기서, i는 해시 체인을 넘버링 하기 위한 변수이다. h는 해시 함수를 의미한다. "chain seed"는 임의의 체인 시드를 의미한다. " || "은 논리 연산자 중 OR 연산을 의미한다. 또한, Kx는 랜덤으로 생성된 특정 엔티티의 비밀키를 의미한다.
위 수학식 4는 특정 엔티티 x에서 생성한 n번째 노드 및 i번째 공개키(102)를 이용하여 i번째 해시 체인을 구성하는 나머지 노드들을 생성하기 위한 식이다. 위 수학식 4에서, hcx (i) 특정 엔티티 x의 i번째 해시 체인을 의미한다. 특정 엔티티는 j번째 노드 및 i번째 공개키(102)를 해시 함수에 입력하여 j-1번째 노드를 획득한다. j는 n부터 1까지 범위에 있는 임의의 정수이다.
엔티티의 분산 ID(101)는 블록 체인에서 중복된 엔티티가 발생하는 것을 방지하기 위한 것으로, 각 엔티티 별로 고유한 값을 가진다. 엔티티는 자신의 i) 첫번째 공개키(102)와 ii) 첫번째 공개키(102)를 이용하여 생성한 첫번째 해시 체인을 구성하는 노드들 중 마지막 노드를 해시 함수에 입력하여 자신의 분산 ID(101)를 생성한다. 구체적으로 수학식 5를 통해 분산 ID(101)가 생성된다.
cIDx는 특정 엔티티 x의 분산 ID(101)를 의미한다. h는 해시 함수를 의미한다. x0 (1)은 특정 엔티티 x의 첫 번째 해치 체인을 구성하는 0번째 노드를 의미한다. 일방향의 해시 체인의 특성상 0번째 노드는 해시 체인의 마지막 노드를 의미한다. " || "은 논리 연산자 중 OR 연산을 의미한다. 그리고, PKx (1)는 특정 엔티티 x의 첫 번째 공개키(102)를 의미한다.
본 발명에서 분산 ID(101)는 항상 첫번째 개인키(103)에 대응하는 공개키(102)를 이용하기 때문에 특정 엔티티의 개인키(103)가 갱신되거나 소진되더라도 분산 ID(101)가 변하지 않는다. 따라서, 특정 엔티티가 블록 체인 상에서 유효한 엔티티임을 인증하여 기존의 거래 기록을 조회하거나 다른 엔티티와 새로운 거래를 수행할 수 있다.
그리고, 본 발명에서 엔티티는 수학식 1에서와 같이 개인키(103)를 넘버링하기 위한 변수 i를 이용하여 새로운 개인키(103)를 계속 생성할 수 있다. 또한, 새롭게 생성된 개인키(103)에 대응하는 공개키(102)를 이용하여 수학식 3, 4에서와 같이 새로운 해시 체인이 생성될 수 있다. 따라서, 본 발명은 특정 엔티티의 개인키(103)가 소진되거나, 갱신될 때에도 새로운 개인키(103)에 따른 새로운 해시 체인을 이용하기 때문에, 특정 엔티티는 새로운 해시 체인을 이용하여 유효한 엔티티임을 인증할 수 있다.
구체적으로, 해시 함수의 특성상 해시 체인의 특정 노드를 알더라도 특정 노드를 생성하기 전의 노드들은 알 수 없다. 따라서, 엔티티는 블록 체인에 등록된 해시 체인의 현재 노드에 대한 이전 노드를 제시함으로써 유효한 엔티티임을 인증할 수 있다.
도 2는 본 발명의 일실시예에 따른 하나의 엔티티에 대응하는 무한한 해시 체인을 도시한 도면이다.
도 2는 하나의 엔티티에 포함된 분산 ID와 복수의 개인키 및 공개키에 따른 복수의 해시 체인들의 생성 과정을 나타낸다. 이러한 생성 과정은 블록 체인을 구성하는 엔티티에 의하여 수행될 수 있다.
도 2의 (A)는 n+1개의 노드를 가지는 특정 엔티티 x의 1번째 해시 체인을 도시한 것이다. n은 임의로 결정되는 양의 정수이다. i번째 해시 체인은 i번째 개인키로 생성된 i번째 공개키를 이용하여 생성된다. 즉, i번째 공개키 및 i번째 해시 체인의 j번째 노드를 해시 함수에 입력하여 j-1번째 노드를 생성한다. j는 n부터 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번째 해시 체인을 구성하는 노드이다. 그리고, 하나의 해시 체인을 생성할 때 이용되는 공개키는 동일하다.
본 발명은 도 2의 (A)에 도시된 해시 체인을 연속적으로 생성하여, 블록 체인에서 엔티티들의 키 관리를 용이하기 하기 위한 것으로, 도 2의 (B)는 연속적으로 생성되는 복수의 해시 체인 및 복수의 해시 체인간의 관계를 도시한 도면이다.
특정 엔티티 x는 수학식 1을 이용하여 1번째 개인키와 다른 2번째 개인키를 생성할 수 있다. 특정 엔티티 x는 수학식 2를 이용하여 2번째 개인키에 대응하는 2번째 공개키를 획득할 수 있다. 그리고, 2번째 공개키를 이용하여 2번째 해시 체인을 생성할 수 있다. 2번째 해시 체인은 수학식 3, 4를 이용하여 생성될 수 있다. 위와 같은 방법으로 모든 엔티티는 연속되는 해시 체인들을 생성할 수 있다.
그리고, 도 2의 (B)를 참조하면, 특정 엔티티 x는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑할 수 있다. 여기서 마지막 노드란 i번째 해시 체인을 생성할 때 마지막으로 생성된 노드(x0 (i))를 의미하고, 수학식 3, 4에 따라 생성된 i번째 해시 체인의 0번째 노드(x0 (i))를 의미할 수 있다.
구체적으로, 특정 엔티티 x는 i번째 해시 체인에서 0번째 노드 또는 마지막으로 생성된 노드를 제외한 나머지 노드들에 대해 i+1번째 해시 체인의 0번째 노드 및 마지막 노드를 매핑할 수 있다.
도 2의 (B)를 참조하면, 2번째 해시 체인의 마지막 노드(x0 (2))가 1번째 해시 체인의 노드들(x1 (1) ... xn (1))에 매핑된다. 마찬가지로, 3번째 해시 체인의 마지막 노드(x0 (3))가 2번째 해시 체인의 노드들(x1 (2) ... xn (2))에 매핑된다. i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑되는 이유는 아래에서 후술한다.
그리고, 도 2의 (B)에서 MIC는 메시지-무결성 코드(message-integrity code)를 의미한다. MIC는 블록 체인에서 특정 엔티티에 대해 등록되어 있는 엔트리(entry)의 무결성을 확인하기 위함이다. 블록 체인에는 각 엔티티 별로 그 엔티티의 분산 ID, 현재 공개키, 현재 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트(commitment) 노드, 다음 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트 노드에 매핑되는 무결성 코드 및 무결성 검증 여부를 체크하는 변수가 저장되고, 이렇게 각 엔티티 별로 저장되는 데이터를 엔트리라고 한다.
구체적으로, 즉, MIC는 블록 체인 상에 특정 엔티티에 대해 등록되어 있는 엔트리가 업데이트될 때, 업데이트되기 전의 엔트리의 무결성을 검증하기 위해 이용된다.
도 2의 (B)에서, MICji는 i번째 해시 체인의 j번째 노드로 계산되는 무결성 코드를 의미한다. 예를 들어, i번째 해시 체인의 j-1번째 노드가 블록 체인에 등록되어 있고, 엔티티 간의 키 교환으로 인해 i번째 해시 체인의 j-1번째 노드가 i번째 해시 체인의 j번째 노드로 업데이트될 때, 키 관리 장치는 엔티티로부터 수신한 j번째 노드에 기초하여 블록 체인에 등록된 MICji 를 계산함으로써 업데이트 전 블록 체인에 등록된 엔트리의 무결성을 검증할 수 있다. 구체적인 과정은 도 3, 4에서 후술된다.
도 2의 (B)를 참조하면, MICji는 i번째 해시 체인의 j-1번째 노드에 매핑될 수 있다. 다만, i번째 해시 체인에서 먼저 생성된 n번째 노드(xn (i))에는 i+1번째 해시 체인의 1번째 노드로 계산되는 MIC12가 매핑된다.
그리고, 도 2의 (C)는 도 2의 (B)의 연속된 해시 체인과 특정 엔티티 x의 분산 ID, 개인키 및 공개키의 관계를 도시한 도면이다. 도 2의 (C)를 참조하면, 도 2의 (A)에서, 특정 엔티티 x는 생성된 첫번째 해시 체인의 마지막 노드(x0 (1))와 첫번째 공개키(PKx (1))를 해시 함수에 입력하여 분산 ID(cIDx)를 획득할 수 있다. 그리고, 도 2의 (C)를 참조하면, i번째 해시 체인은 i번째 개인키에 의한 i번째 공개키와 대응된다.
이렇게 생성된 특정 엔티티 x의 공개키, 해시 체인, 분산 ID 및 MIC는 블록 체인에 등록된다. 구체적으로, 특정 엔티티 x는 분산 ID(cIDx), 1번째 해시 체인의 마지막 노드(x0 (1)) 및 공개키(PKx (1))을 키 관리 장치에 송신한다. 여기서, 마지막 노드는 일방향의 해시 체인이 생성될 때 마지막으로 생성된 노드를 의미한다. 키 관리 장치는 수신한 분산 ID가 기존에 등록되어 있는 ID 인지 판단한다.
그리고, 키 관리 장치는 수신한 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력하여 수신한 분산 ID(cIDx)와 동일한지 계산한다. 이 때, 수신한 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력한 결과가 수신한 분산 ID(cIDx)와 동일하지 않은 경우, 유효하지 않은 분산 ID로 판단하고, 등록 절차를 종료한다.
수신한 분산 ID가 등록되어 있지 않고, 공개키(PKx (1))와 1번째 해시 체인의 마지막 노드(x0 (1))를 해시 함수에 입력한 결과가 수신한 분산 ID(cIDx)와 동일한 경우, 키 관리 장치는 특정 엔티티 x의 분산 ID(cIDx), 1번째 해시 체인의 마지막 노드(x0 (1)) 및 공개키(PKx (1))를 블록 체인에 등록한다.
블록 체인에는 각 엔티티 별로 그 엔티티의 분산 ID, 현재 공개키, 현재 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트(commitment) 노드, 다음 해시 체인의 루트 노드, 현재 해시 체인의 커미트먼트 노드에 매핑되는 무결성 코드 및 무결성 검증 여부를 체크하는 변수가 저장된다.
현재 해시 체인의 루트 노드는 블록 체인에 등록된 엔티티가 다른 엔티티와 키 교환시 소모하는 노드를 포함하는 i번째 해시 체인의 마지막 노드(x0 (i))를 의미한다. 현재 해시 체인의 루트 노드는, 엔티티가 키 교환시 소모하는 노드를 포함하는 해시 체인을 검증하거나, 엔티티의 키 등록시 분산 ID를 인증하기 위한 노드이다.
마지막 노드란 i번째 해시 체인을 생성할 때 마지막으로 생성된 노드(x0 (i))를 의미하고, 수학식 3, 4에 따라 생성된 i번째 해시 체인의 0번째 노드(x0 (i))를 의미할 수 있다. 따라서, 개인키 교체시 새로운 개인키에 대응하는 해시 체인의 마지막 노드가 현재 해시 체인의 루트 노드로 교체된다.
현재 해시 체인의 커미트먼트 노드는 블록 체인에 등록된 엔티티가 다른 엔티티와 키 교환시 이용되는 노드를 나타낸다. 따라서, 엔티티 간의 키 교환 이 수행될 때마다 현재 해시 체인의 커미트먼트 노드는 업데이트 된다.
다음 해시 체인은 현재 해시 체인이 i번째 공개키(PKx (i))로 생성된 경우 i+1번째 공개키(PKx (i+1))로 생성된 해시 체인을 의미한다. 그리고, 다음 해시 체인의 루트 노드는 다음 해시 체인의 마지막 노드(x0 (i+1))를 의미한다.
다음 해시 체인의 루트 노드를 저장하는 이유는 현재 해시 체인의 모든 노드가 소모되어 특정 엔티티의 i번째 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체되는 경우, 미리 다음 해시 체인의 루트 노드(x0 (i+1))를 저장하지 않으면 제3자가 자신의 공개키나 해시 체인의 노드를 제시할 때 키 관리 장치에서 제3자가 특정 엔티티와 동일한 엔티티인지 알 수 없다.
그리고, i번째 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체될 때, i+2번째 개인키가 생성되고, 생성된 i+2번째 개인키에 대응하는 i+2번째 공개키에 따른 해시 체인이 생성된다.
따라서, 새로운 개인키(SKx (i+1))에 대응하는 새로운 공개키(PKx (i+1))로 생성한 해시 체인의 마지막 노드(x0 (i+1))를 키 교환 때마다 다음 해시 체인의 루트 노드로 미리 등록하거나 업데이트하여, 특정 엔티티의 개인키(SKx (i))가 새로운 개인키(SKx (i+1))로 교체될 때, 키 관리 장치는 특정 엔티티로부터 등록된 다음 해시 체인의 루트 노드(x0 (i+1))와 특정 엔티티로부터 수신한 공개키(PKx (i+1)) 및 루트 노드의 이전 노드(x1 (i+1))를 해시 함수에 입력한 결과를 비교함으로써 특정 엔티티가 유효한 엔티티인지 확인할 수 있다.
동일한 이유로, 특정 엔티티 x는 i번째 해시 체인에서 0번째 노드 또는 마지막으로 생성된 노드를 제외한 나머지 노드들에 대해 i+1번째 해시 체인의 0번째 노드 및 마지막 노드를 매핑한다.
즉, 특정 엔티티 x는 블록 체인 상에 i번째 해시 체인의 j번째 노드가 현재 해시 체인에 대한 커미트먼트 노드(xj (i))로 등록되어 있을 때, 다른 엔티티와 키 교환 이후 현재 해시 체인에 대한 커미트먼트 노드(xj (i))의 a) 이전 노드(xj+1 (i)) 및 이전 노드에 매핑된 b) i+1번째 해시 체인의 마지막 노드(x0 (i+1))와 c) 무결성 코드(MICj+1,i)를 키 관리 장치에 송신한다.
키 관리 장치는 특정 엔티티 x의 수신한 분산 ID(cIDx)를 등록하고, 1번째 해시 체인의 마지막 노드(x0 (1))를 특정 엔티티 x의 현재 해시 체인의 루트 노드 및 현재 해시 체인의 커미트먼트 노드로 등록한다.
그리고, 특정 엔티티 x가 다른 엔티티와 키 교환을 수행할 때, 특정 엔티티 x로부터 2번째 해시 체인의 마지막 노드(x0 (2))를 수신하여 다음 해시 체인의 루트 노드로 등록하고, 특정 엔티티 x로부터 현재 해시 체인에 대한 커미트먼트 노드로 등록된 노드(x0 (1))의 이전 노드(x1 (1))를 수신하여 현재 해시 체인의 커미트먼트 노드로 업데이트하고, 특정 엔티티 x로부터 그 이전 노드(x1 (1))에 매핑된 MIC21을 수신하여 무결성 코드로 등록한다.
i번째 해시 체인에서 블록 체인에 현재 해시 체인에 대한 커미트먼트로 등록된 j번째 노드를 현재 노드(xj (i))라고 할 때, 이전 노드는 i번째 공개키와 함께 해시 함수에 입력될 때 현재 노드가 출력되도록 하는 노드(xj+1 (i))를 의미한다. 즉, i번째 해시 체인에서 현재 노드는 이전 노드 이후에 생성되고 이전 노드와 i번째 공개키를 이용하여 생성된다.
즉, 블록 체인에 특정 엔티티 x의 i번째 해시 체인의 마지막 노드(x0 (i))가 현재 해시 체인의 루트 노드로 등록되어 있고, 특정 엔티티 x의 i번째 해시 체인의 j번째 노드가 현재 해시 체인의 커미트먼트 노드(xj (i))로 등록되어 있고, 특정 엔티티가 다른 엔티티와 키 교환을 수행한 경우, 키 관리 장치는 특정 엔티티 x로부터 수신한 i+1번째 해시 체인의 마지막 노드(x0 (i+1))를 다음 해시 체인의 루트 노드로 업데이트하고, i번째 해시 체인의 j+1번째 노드(xj+1 (i))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, MICj+2,i 를 무결성 코드로 업데이트한다.
키 관리 장치는 i번째 해시 체인의 j+1번째 노드를 이용하여 이전에 등록된 무결성 코드인 MICj+1,i 를 계산함으로써 특정 엔티티 x의 블록 체인에 등록된 엔트리에 대한 무결성을 검증할 수 있다. 무결성 검증 여부를 체크하는 변수의 업데이트 과정은 도 5에서 후술한다.
도 3은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 3은 특정 엔티티 x와 다른 엔티티 z간의 키 교환 과정을 도시한 도면이다. 도 3에서 301은 엔티티 간의 키 교환에 따라 블록 체인에 등록된 각 엔티티(x, z)에 대한 엔트리의 업데이트 과정을 도시한 것이다.
특정 엔티티 x는 블록 체인 상에 등록된 다른 엔티티 z의 현재 공개키(PKz (1)) 및 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))를 키 관리 장치에 요청(query)한다. 도 3의 302에서, 키 관리 장치로부터 특정 엔티티 x는 블록 체인 상에 등록된 다른 엔티티 z의 공개키(PKz (1)) 및 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))를 수신한다.
그리고, 도 3의 303에서, 특정 엔티티 x는 다른 엔티티 z와 각자 현재 블록 체인에 등록된 현재 해시 체인에 대한 커미트먼트 노드의 이전 노드(z1 (1))를 교환한다. 이전 노드는 앞서 설명한 바와 같이 i번째 해시 체인에서 블록 체인에 현재 해시 체인에 대한 커미트먼트로 등록된 노드를 현재 노드라고 할 때, 이전 노드는 i번째 공개키와 함께 해시 함수에 입력될 때 현재 노드가 출력되는 노드를 의미한다.
특정 엔티티 x는 수신한 이전 노드(z1 (1))와 현재 공개키(PKz (1))를 해시 함수에 입력한 결과를 다른 엔티티 z의 현재 해시 체인에 대한 커미트먼트 노드(z0 (1))와 비교한다. 수신한 이전 노드와 현재 공개키를 해시 함수에 입력한 결과를 다른 엔티티 z의 현재 해시 체인에 대한 커미트먼트 노드가 동일한 경우, 특정 엔티티 x는 다른 엔티티 z의 현재 공개키를 유효한 공개키로 판단할 수 있다.
그리고, 다른 엔티티 z도 마찬가지로 특정 엔티티 x의 현재 공개키를 유효한 공개키로 판단한 경우, 각 엔티티(x, z)는 상호 간의 통신 채널을 생성한다. 구체적인 키 교환 과정은 도 4에서 추가로 후술한다.
도 3의 304에서, 키 관리 장치는 키 교환을 수행한 엔티티(x, z)로부터 현재 해시 체인에 대한 커미트먼트 노드의 이전 노드(x1 (1), z1 (1)) 및 다음 해시 체인의 루트 노드(x0 (2), z0 (2))를 수신한다. 그리고, 키 관리 장치는 수신한 이전 노드(x1 (1), z1 (1))를 각 엔티티의 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 해시 체인의 루트 노드(x0 (2), z0 (2))를 각 엔티티의 다음 해시 체인에 대한 루트 노드로 등록하거나 업데이트한다.
즉, 블록 체인에 특정 엔티티 x의 i번째 해시 체인의 마지막 노드가 현재 해시 체인의 루트 노드(x0 (i))로 등록되어 있고, 특정 엔티티 x의 i번째 해시 체인의 j번째 노드(xj (i))가 현재 해시 체인의 커미트먼트 노드로 등록되어 있을 때, 특정 엔티티가 다른 엔티티와 키 교환을 수행한 경우, 키 관리 장치는 특정 엔티티 x로부터 수신한 i+1번째 해시 체인의 마지막 노드(x0 (i+1))를 다음 해시 체인의 루트 노드로 업데이트하고, i번째 해시 체인의 j+1번째 노드(xj+1 (i))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트한다. 구체적인 업데이트 과정은 도 5에서 후술한다.
도 4는 본 발명의 일실시예에 따른 엔티티 간의 키 교환 과정을 도시한 도면이다.
도 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)).
특정 엔티티 x는 키 관리 장치로부터 수신한 다른 엔티티 y의 현재 공개키(PKy (2)) 및 자신의 개인키를 타원 곡선 디피-헬만(Elliptic-curve Diffie-Hellman, ECDH) 키 교환 방식을 적용한 ECDH 함수에 입력하여 마스터 키를 생성한다(도 4의 mkxy=ECDH(SKx (1), PKy (2))). ECDH 함수는 아래 수학식 6과 같은 성질을 갖는다.
수학식 6에서와 같이 ECDH 함수는 x의 개인키(SKx)와 y의 공개키(PKy)를 ECDH 함수에 입력한 결과는 y의 개인키(SKy)와 x의 공개키(PKx)를 ECDH 함수에 입력한 결과와 동일한 성질을 갖는다.
그리고, 특정 엔티티 x는 키 관리 장치로부터 수신한 다른 엔티티 y의 해시 체인에 대한 커미트먼트 노드(y3 (2)), x의 커미트먼트 노드(x2 (1)) 및 마스터 키(mkxy)를 키 유도 함수(Key derivation function, KDF)에 입력하여 세션 키를 생성한다(도 4의 skxy=kdf(mkxy || x2 (1) || y3 (2)).
도 4의 ①에서, 특정 엔티티 x는 자신의 분산 ID(cIDx), 자신의 현재 커미트먼트 노드로 등록된 현재 노드의 이전 노드(x3 (1)) 및 세션 키(skxy)로 계산되는 무결성 코드(MIC(skxy))를 다른 엔티티 y에 송신한다.
다른 엔티티 y는 수신한 특정 엔티티 x의 이전 노드(x3 (1))와 공개키(PKx (1))를 해시 함수에 입력한 결과가 특정 엔티티 x의 커미트먼트 노드(x2 (1))와 동일한지 확인한다.
특정 엔티티 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)는 동일하다.
그리고, 다른 엔티티 y도 키 관리 장치로부터 수신한 특정 엔티티 x의 해시 체인에 대한 커미트먼트 노드(x2 (1)), y의 커미트먼트 노드(y3 (2)) 및 마스터 키(mkxy)를 키 유도 함수에 입력하여 세션 키를 생성한다(도 4의 skxy=kdf(mkxy || x2 (1) || y3 (2)).
다른 엔티티 y는 생성한 세션 키로 무결성 코드를 계산하여 특정 엔티티 x로부터 수신한 무결성 코드와 비교할 수 있다. 다른 엔티티 y에서 생성한 세션 키(skxy)로 계산된 무결성 코드와 특정 엔티티 x로부터 수신한 무결성 코드가 동일한 경우, 도 4의 ②와 같이, 다른 엔티티 y는 자신의 분산 ID(cIDy), 자신의 현재 커미트먼트 노드로 등록된 현재 노드의 이전 노드(y4 (2)) 및 생성한 세션 키(skxy)를 특정 엔티티 x에 송신한다.
특정 엔티티 x는 수신한 다른 엔티티 y의 이전 노드(y4 (2))와 공개키(PKy (2))를 해시 함수에 입력한 결과가 다른 엔티티 y의 커미트먼트 노드(y3 (2))와 동일한지 확인한다.
다른 엔티티 y의 이전 노드(y4 (2))와 공개키(PKy (2))를 해시 함수에 입력한 결과가 다른 엔티티 y의 커미트먼트 노드(y3 (2))와 동일한 경우, 특정 엔티티 x는 생성한 세션키(skxy)로 무결성 코드를 계산하여 다른 엔티티 y로부터 수신한 무결성 코드와 비교할 수 있다. 특정 엔티티 x에서 생성한 세션 키(skxy)로 계산된 무결성 코드와 다른 엔티티 y로부터 수신한 무결성 코드가 동일한 경우, 각 엔티티(x, y)는 블록 체인에 등록된 엔트리 업데이트를 키 관리 장치에 요청한다. 그리고, 엔티티 간의 통신 채널이 생성된다.
도 5는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 과정을 도시한 도면이다.
도 5는 엔티티 간의 키 교환이 수행됨에 따라 특정 엔티티 x의 엔트리가 블록 체인 상에서 업데이트 되는 과정을 표로 나타낸 것이다. 도 5에서 표의 제1열에 위치한 (i, j)는 i번째 해시 체인의 j번째 노드가 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드로 등록된 상태를 나타낸다.
예를 들어, 도 5에서 표의 제1열에서 (1, 3)에 대응하는 행은 특정 엔티티 x의 1번째 해시 체인의 3번째 노드가 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드로 등록된 상태를 나타낸다.
도 5에서 표의 제2열에 위치한 A, B, C, D, E, F, G의 의미는 아래와 같다. A는 특정 엔티티 x의 분산 ID를 나타낸다. B는 특정 엔티티 x의 현재 공개키를 나타낸다. C는 특정 엔티티 x의 현재 해시 체인에 대한 루트 노드를 나타낸다. D는 특정 엔티티 x의 현재 해시 체인에 대한 커미트먼트 노드를 나타낸다. E는 특정 엔티티 x의 다음 해시 체인에 대한 루트 노드를 나타낸다.
F는 특정 엔티티 x의 무결성 코드를 나타낸다. G는 특정 엔티티 x의 현재 엔트리가 무결성 검증 여부를 나타내는 변수이다. G가 0인 경우 현재 엔트리가 무결성이 검증되지 않은 경우를 의미하고, G가 1인 경우 현재 엔트리의 무결성이 검증된 경우를 의미한다.
도 5를 참조하면, 엔티티 간의 키 교환이 수행되더라도 블록 체인에 등록된 엔티티의 분산 ID가 변경되지 않는다. 그러나, 엔티티의 현재 해시 체인에 대한 커미트먼트 노드, 현재 해시 체인의 루트 노드, 다음 해시 체인의 커미트먼트 노드 및 현재 개인키 등은 업데이트 된다.
도 5의 ①에서, 특정 엔티티 x의 키 교환으로 인해, 키 관리 장치는 특정 엔티티 x의 분산 ID(CIDx), 공개키(PKx (1)), 현재 해시 체인에 대한 커미트먼트 노드로 등록된 현재 노드(x2 (1))의 이전 노드(x3 (1)), 다음 해시 체인의 루트 노드(x0 (2)) 및 무결성 코드(MIC(x4 (1))) 를 특정 엔티티 x로부터 수신한다.
이 때, 특정 엔티티 x에서 송신하는 공개키, 이전 노드, 다음 해시 체인의 루트 노드는 각각 요청 공개키, 요청 커미트먼트 노드, 요청 루트 노드로 표현될 수 있다. 그리고, 블록 체인 상에 등록된 현재 공개키, 현재 해시 체인에 대한 커미트먼트 노드 및 다음 해시 체인에 대한 루트 노드는 각각 등록 공개키, 등록 커미트먼트 노드, 다음 해시 체인에 대한 등록 루트 노드로 표현될 수 있다.
도 5의 를 참조하면, 키 관리 장치는 수신한 요청 커미트먼트 노드(x3 (1))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 요청 커미트먼트 노드(x3 (1)) 무결성 코드(MIC(x3 (1)))를 계산하여 키 교환 전 특정 엔티티 x의 엔트리(도 5의 표에서 제1열의 (1, 2)에 대응하는 행)의 무결성을 검증할 수 있다. 그리고, 검증 결과에 따라 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 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))를 의미한다.
그리고, 도 5의 를 참조하면, 키 관리 장치는 수신한 요청 커미트먼트 노드(x4 (1))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 수신한 요청 커미트먼트 노드(x4 (1))로 무결성 코드(MIC(x4 (1)))를 계산하여 키 교환 전 특정 엔티티 x의 엔트리(도 5의 표에서 제1열의 (1, 3)에 대응하는 행)의 무결성을 검증할 수 있다. 그리고, 검증 결과에 따라 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 1로 업데이트한다.
다만, 도 5의 ③에서, 특정 엔티티 x의 키 교환 이전에, 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인에 대한 커미트먼트 노드가 해시 체인의 n번째 노드(xn (1))이므로, 블록 체인에 등록된 현재 공개키가 만료되어 키 관리 장치는 새로운 공개키를 수신한다.
구체적으로, 도 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))를 의미한다.
그리고 도 5의 을 참조하면, 키 관리 장치는 요청 공개키(PKx (2))를 현재 공개키로 업데이트하고, 수신한 요청 커미트먼트 노드(x1 (2))를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 기존에 등록된 다음 해시 체인의 루트 노드(x0 (2))를 현재 해시 체인의 루트 노드로 업데이트한다. 그리고, 키 관리 장치가 수신한 무결성 코드(MIC(x2 (2)))를 통한 무결성 검증이 이루어지지 않았으므로, 키 관리 장치는 도 5의 표에서 G에 대응하는 값을 1로 업데이트한다.
도 5에 도시된 표의 제1열에서 (1, n)에 대응하는 행의 엔트리와 달리, 특정 엔티티 x의 엔트리에 등록된 현재 해시 체인에 대한 커미트먼트 노드가 해시 체인의 n번째 노드(xn (1))가 아닌 경우에도 개인키가 교체되는 경우, 키 관리 장치는 새로운 공개키를 수신할 수 있다. 이 때, 특정 엔티티 x의 엔트리에 대한 업데이트 과정은 도 5의 ③ 및 에서와 동일한 과정을 통해 수행된다.
특정 엔티티 x의 키 교환에 따른 블록 체인 업데이트에 대한 요청(도 5에서 BC update messages by the entity x)이 유효한 요청인지 검증하기 위해 아래 과정이 이루어진다.
키 관리 장치는 특정 엔티티 x로부터 분산 ID, 요청 공개키, 요청 커미트먼트 노드, 다음 해시 체인에 대한 요청 루트 노드, 무결성 코드를 수신한다. 키 관리 장치는 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 현재 해시 체인에 대한 커미트먼트 노드와 비교한다.
요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 현재 해시 체인에 대한 커미트먼트 노드와 동일하고, 요청 커미트먼트 노드로 계산한 무결성 코드가 특정 엔티티 x의 엔트리에 등록된 무결성 코드와 동일한 경우, 키 관리 장치는 요청 공개키를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 등록된 무결성 코드는 특정 엔티티 x로부터 수신한 무결성 코드로 업데이트하고, 무결성 검증 여부를 나타내는 변수(G)를 1로 업데이트한다.
그리고, 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 현재 해시 체인에 대한 커미트먼트 노드와 다른 경우, 키 관리 장치는 요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과를 특정 엔티티 x의 엔트리에 등록된 다음 해시 체인에 대한 루트 노드와 비교한다.
요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 다음 해시 체인에 대한 루트 노드와 동일하고, 요청 커미트먼트 노드로 계산한 무결성 코드가 특정 엔티티 x의 엔트리에 등록된 무결성 코드와 동일한 경우, 키 관리 장치는 수신한 요청 공개키를 현재 개인키로 업데이트하고, 다음 해시 체인에 대한 루트 노드를 현재 해시 체인에 대한 루트 노드로 업데이트하고, 요청 커미트먼트 노드를 현재 해시 체인에 대한 커미트먼트 노드로 업데이트하고, 요청 루트 노드를 다음 해시 체인에 대한 루트 노드로 업데이트하고, 등록된 무결성 코드를 수신한 무결성 코드로 업데이트하고, 무결성 검증 여부를 나타내는 변수(G)를 0으로 업데이트한다.
요청 공개키와 요청 커미트먼트 노드를 해시 함수에 입력한 결과가 다음 해시 체인에 대한 루트 노드 또는 현재 해시 체인에 대한 커미트먼트 노드와 다를 경우, 키 관리 장치는 특정 엔티티 x의 요청이 유효하지 않은 요청이라 판단하고, 특정 엔티티 x에 대한 엔트리 업데이트를 수행하지 않는다.
도 6은 본 발명의 일실시예에 따른 엔티티의 키 생성 방법에 대한 플로우 차트를 도시한 도면이다.
단계(601)에서, 특정 엔티티는 블록 체인의 i번째 개인키를 생성한다. 특정 엔티티는 랜덤으로 생성된 비밀키, 개인키 시드 및 복수의 개인키를 넘버링 하기 위한 변수를 해시 함수에 입력하여 개인키를 획득할 수 있다.
단계(602)에서, 특정 엔티티는 i번째 개인키로부터 i번째 공개키를 획득한다. 특정 엔티티는 공개키 생성 함수를 이용하여 i번째 개인키로부터 i번째 공개키를 생성할 수 있다.
단계(603)에서, 특정 엔티티는 i번째 공개키 및 해시 함수를 이용하여 i번째 해시 체인(hash chain)을 생성한다. 해시 체인은 n+1개의 노드를 포함할 수 있다. 특정 엔티티는 랜덤으로 생성된 체인 시드, 앞서 생성한 비밀키, 개인키를 넘버링 하기 위한 변수를 해시 함수에 입력하여 n번째 노드를 획득한다. n은 1 이상의 정수이다. 그리고, 특정 엔티티는 j번째 노드와 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득할 수 있다. 이 때, j는 n 이하 1 이상의 정수이다. 특정 엔티티는 위 방법에 따라 n번째 노드부터 0번째 노드까지 일방향의 흐름을 갖는 해시 체인을 생성할 수 있다.
단계(604)에서, 특정 엔티티는 i+1번째 개인키를 생성하고, 단계(605)에서, 생성한 i+1번째 개인키로부터 i+1번째 공개키를 획득한다. 그리고, 단계(606) 특정 엔티티는 i+1번째 공개키 및 해시 함수를 이용하여 i+1번째 해시 체인을 생성한다.
단계(607)에서, 특정 엔티티는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인에 매핑한다. 특정 엔티티는 i+1번째 해시 체인의 마지막 노드를 i번째 해시 체인의 마지막 노드를 제외한 나머지 노드에 매핑한다.
그리고, 특정 엔티티는 1번째 공개키 및 1번째 해시 체인의 마지막 노드를 해시 함수에 입력하여 특정 엔티티에 대응하는 분산 ID를 생성한다. 따라서, 특정 엔티티의 개인키가 교체되더라도 분산 ID는 업데이트 되지 않는다.
도 7은 본 발명의 일실시예에 따른 엔티티의 키 등록 방법에 대한 플로우 차트를 도시한 도면이다.
단계(701)에서, 키 관리 장치는 블록 체인의 특정 엔티티로부터 특정 엔티티의 분산 ID, 특정 엔티티의 공개키 및 특정 엔티티의 해시 체인을 구성하는 연속된 노드들 중 마지막 노드를 획득한다. 마지막 노드는 일방향의 해시 체인이 생성될 때 가장 마지막으로 생성된 노드를 의미한다.
단계(702)에서, 키 관리 장치는 분산 ID가 블록 체인에 등록되어 있는지 판단한다. 즉, 중복된 엔티티가 발생하지 않도록 키 관리 장치는 수신한 분산 ID가 블록 체인에 등록되어 있지 않은 경우에 단계(703, 704)를 수행한다. 등록된 경우, 등록 절차는 종료된다.
단계(703)에서, 키 관리 장치는 분산 ID 및 공개키를 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록한다. 그리고, 단계(704)에서, 키 관리 장치는 마지막 노드를 특정 엔티티의 루트 노드 및 커미트먼트 노드로 블록 체인에 등록한다.
도 8은 본 발명의 일실시예에 따른 엔티티 간의 키 교환 방법에 대한 플로우 차트를 도시한 도면이다.
단계(801)에서, 특정 엔티티는 키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드를 획득한다.
단계(802)에서, 특정 엔티티는 다른 엔티티로부터 다른 엔티티의 해시 체인에서 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신한다. 다른 엔티티의 해시 체인에서 현재 노드는 이전 노드와 다른 엔티티의 현재 공개키를 해시 함수에 입력한 결과에 대응한다.
단계(803)에서, 특정 엔티티는 특정 엔티티의 해시 체인에서 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 다른 엔티티에 송신한다. 이는 다른 엔티티에서도 특정 엔티티에 대한 유효성을 검증하기 위함이다.
단계(804)에서, 특정 엔티티는 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일한지 판단한다.
이 때, 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일한 경우, 특정 엔티티는 다른 엔티티가 유효한 엔티티로 판단하여 단계(805)에서 보안 채널을 생성한다.
그러나, 다른 엔티티의 이전 노드 및 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 다른 엔티티의 커미트먼트 노드와 동일하지 않은 경우, 특정 엔티티는 다른 엔티티가 유효하지 않은 엔티티로 판단하여 키 교환 과정을 종료한다.
도 9는 본 발명의 일실시예에 따른 엔티티의 키 업데이트 방법에 대한 플로우 차트를 도시한 도면이다.
단계(901)에서, 키 관리 장치는 블록 체인의 특정 엔티티로부터 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인에 대한 요청 커미트먼트 노드, iii) 다음 해시 체인에 대한 요청 루트 노드를 획득한다.
특정 엔티티에서 송신하는 공개키, 이전 노드, 다음 해시 체인의 루트 노드는 각각 요청 공개키, 요청 커미트먼트 노드, 요청 루트 노드로 표현될 수 있다. 그리고, 블록 체인 상에 등록된 현재 공개키, 현재 해시 체인에 대한 커미트먼트 노드 및 다음 해시 체인에 대한 루트 노드는 각각 등록 공개키, 등록 커미트먼트 노드, 다음 해시 체인에 대한 등록 루트 노드로 표현될 수 있다.
단계(902)에서, 키 관리 장치는 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 블록 체인에 등록된 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 판단한다.
단계(903)에서, 키 관리 장치는 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 등록 커미트먼트 노드와 동일한 경우, 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트한다.
키 관리 장치는 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 등록 커미트먼트 노드와 동일하지 않은 경우, 단계(904)에서, 키 관리 장치는 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한지 판단한다.
요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 단계(905)에서, 키 관리 장치는 요청 공개키를 블록 체인에 등록되는 특정 엔티티의 등록 공개키로 업데이트하고, 요청 루트 노드를 특정 엔티티의 등록 루트 노드로 업데이트한다.
요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 키 관리 장치는 키 업데이트 과정을 종료한다.
한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 장치 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 장치들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
101: 블록 체인을 구성하는 특정 엔티티의 분산 ID
102: 특정 엔티티의 공개키
103: 특정 엔티티의 개인키
104: 특정 엔티티의 해시 체인
102: 특정 엔티티의 공개키
103: 특정 엔티티의 개인키
104: 특정 엔티티의 해시 체인
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번째 해시 체인에 매핑하는 단계
를 포함하는 키 생성 방법.
- 제1항에 있어서,
상기 i가 1인 경우, 1번째 공개키 및 1번째 해시 체인의 마지막 노드를 해시 함수에 입력하여 상기 특정 엔티티에 대응하는 분산 ID를 생성하는 단계
를 더 포함하는 키 생성 방법.
- 제1항에 있어서,
상기 i번째 해시 체인을 생성하는 단계는,
임의의 시드(seed) 및 상기 특정 엔티티에 대응하는 비밀키를 해시 함수에 입력하여 i번째 해시 체인의 n번째 노드를 획득하는 단계; 및
j번째 노드 및 i번째 공개키를 해시 함수에 입력하여 j-1번째 노드를 획득하는 단계
를 포함하는 키 생성 방법.
- 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 등록 방법에 있어서,
블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하는 단계;
상기 분산 ID가 블록 체인에 등록되어 있는지 판단하는 단계;
상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하는 단계; 및
상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록하는 단계
를 포함하는 키 등록 방법.
- 제4항에 있어서,
상기 특정 엔티티의 공개키는,
상기 특정 엔티티에 대응하는 개인키로부터 생성되고,
상기 특정 엔티티의 해시 체인은,
상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성되고, 일방향(one-way)의 연속된 노드들로 구성되고,
상기 특정 엔티티의 분산 ID는,
상기 특정 엔티티의 해시 체인의 마지막 노드 및 상기 특정 엔티티의 공개키가 해시 함수에 입력된 결과인, 키 등록 방법.
- 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)가 수행하는 키 교환 방법에 있어서,
키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하는 단계;
상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하는 단계;
상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하는 단계; 및
상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하는 단계
를 포함하고,
상기 블록 체인은,
상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록된,
키 교환 방법.
- 제6항에 있어서,
상기 다른 엔티티의 공개키는,
상기 다른 엔티티에 대응하는 개인키로부터 생성되고,
상기 특정 엔티티의 해시 체인은,
상기 특정 엔티티의 공개키 및 해시 함수를 이용하여 생성되는, 키 교환 방법.
- 제6항에 있어서,
상기 해시 함수에 입력한 결과와 상기 다른 엔티티의 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 특정 엔티티의 커미트먼트 노드로 업데이트할 것을 요청하는 단계
를 더 포함하는, 키 교환 방법.
- 키 관리 장치가 수행하는 블록 체인(blockchain)의 키 업데이트 방법에 있어서,
상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하는 단계;
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하는 단계; 및
상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트 하는 단계
를 포함하는 키 업데이트 방법.
- 제9항에 있어서,
상기 블록 체인은,
상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록되고, 상기 엔티티들의 해시 체인을 구성하는 연속된 노드들 중 마지막 노드가 루트 노드가 등록되고,
상기 엔티티들의 공개키는,
상기 엔티티들에 대응하는 개인키로부터 생성되고,
상기 엔티티들의 해시 체인은,
상기 엔티티들의 공개키 및 해시 함수를 이용하여 생성되는, 키 업데이트 방법.
- 제9항에 있어서,
상기 블록 체인은,
상기 블록 체인을 구성하는 엔티티들에 대응하는 일방향의 해시 체인을 구성하는 연속된 노드들 중 커미트먼트 노드로 등록된 현재 노드의 이전 노드로 계산되는 무결성 코드가 등록되고,
상기 키 업데이트 방법은,
상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 요청 커미트먼트 노드로 무결성 코드를 계산하여 블록 체인에 등록된 상기 특정 엔티티의 무결성 코드와 비교하는 단계
를 더 포함하는 키 업데이트 방법.
- 제9항에 있어서,
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트하는 단계,
를 더 포함하는 키 업데이트 방법.
- 제9항에 있어서,
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 루트 노드를 상기 특정 엔티티의 등록 루트 노드로 업데이트 하는 단계,
를 더 포함하는 키 업데이트 방법.
- 제1항 내지 제13항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
- 컴퓨터에서 판독 가능한 기록 매체에 있어서,
상기 기록 매체는,
블록 체인(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번째 공개키가 해시 함수에 입력된 결과인,
기록 매체.
- 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서,
상기 특정 엔티티는 프로세서를 포함하고,
상기 프로세서는,
블록 체인의 특정 엔티티에 대응하는 i번째 개인키를 생성하고, 상기 i번째 개인키로부터 i번째 공개키를 획득하고, 상기 i번째 공개키 및 해시 함수를 이용하여 일방향(one-way)의 연속된 노드들로 구성되고, 상기 특정 엔티티에 대응하는 i번째 해시 체인(hash chain)을 생성하고, 상기 특정 엔티티에 대응하는 i+1번째 개인키를 생성하고, 상기 i+1번째 개인키로부터 i+1번째 공개키를 획득하고, 상기 i+1번째 공개키 및 해시 함수를 이용하여 상기 특정 엔티티에 대응하는 i+1번째 해시 체인을 생성하고, 상기 i+1번째 해시 체인의 마지막 노드를 상기 i번째 해시 체인에 매핑하는,
엔티티.
- 블록 체인(blockchain)의 키 등록 방법을 수행하는 키 관리 장치에 있어서,
상기 키 관리 장치는 프로세서를 포함하고,
상기 프로세서는,
블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 분산 ID, 상기 특정 엔티티의 공개키 및 상기 특정 엔티티의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 마지막 노드를 획득하고, 상기 분산 ID가 블록 체인에 등록되어 있는지 판단하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 분산 ID 및 공개키를 상기 특정 엔티티의 분산 ID 및 공개키로 블록 체인에 등록하고, 상기 분산 ID가 블록 체인에 등록되어 있지 않은 경우, 상기 수신한 마지막 노드를 상기 특정 엔티티의 루트 노드(root node) 및 커미트먼트 노드(commitment node)로 블록 체인에 등록하는,
키 관리 장치.
- 블록 체인(blockchain)을 구성하는 특정 엔티티(entity)에 있어서,
상기 특정 엔티티는 프로세서를 포함하고,
상기 프로세서는,
키 관리 장치로부터 블록 체인에 등록된 다른 엔티티의 공개키 및 커미트먼트 노드(commitment node)를 획득하고, 상기 다른 엔티티로부터 상기 다른 엔티티의 해시 체인에서 상기 다른 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 수신하고, 상기 특정 엔티티의 해시 체인에서 상기 특정 엔티티의 커미트먼트 노드에 대응하는 현재 노드의 이전 노드를 상기 다른 엔티티에 송신하고, 상기 다른 엔티티의 이전 노드 및 상기 다른 엔티티의 공개키를 해시 함수에 입력한 결과가 상기 다른 엔티티의 커미트먼트 노드와 동일한지 확인하고,
상기 블록 체인은,
상기 블록 체인을 구성하는 엔티티들의 공개키가 저장되고, 상기 엔티티들에 대응하는 일방향의 해시 체인(hash chain)을 구성하는 연속된 노드들 중 현재 노드가 상기 엔티티들의 커미트먼트 노드로 등록된,
엔티티.
- 블록 체인(blockchain)의 키 업데이트 방법을 수행하는 키 관리 장치에 있어서,
상기 키 관리 장치는 프로세서를 포함하고,
상기 프로세서는,
상기 블록 체인의 특정 엔티티(entity)로부터 상기 특정 엔티티의 i) 요청 공개키, ii) 현재 해시 체인(hash chain)에 대한 요청 커미트먼트 노드(commitment node), iii) 다음 해시 체인에 대한 요청 루트 노드(root node)를 획득하고, 상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 블록 체인에 등록된 상기 특정 엔티티의 i) 등록 커미트먼트 노드 및 ii) 다음 해시 체인의 등록 루트 노드와 동일한지 확인하고, 상기 요청 커미트먼트 노드 및 요청 공개키를 해시 함수에 입력한 결과가 상기 등록 커미트먼트 노드와 동일한 경우, 상기 특정 엔티티의 요청 커미트먼트 노드를 등록 커미트먼트 노드로 업데이트 하는,
키 관리 장치.
- 제19항에 있어서,
상기 프로세서는,
상기 요청 커미트먼트 노드와 요청 공개키를 해시 함수에 입력한 결과가 상기 특정 엔티티의 다음 해시 체인에 대한 등록 루트 노드와 동일한 경우, 상기 요청 공개키를 상기 블록 체인에 등록되는 상기 특정 엔티티의 등록 공개키로 업데이트하는, 키 관리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200052272A KR102364254B1 (ko) | 2020-04-29 | 2020-04-29 | 블록 체인에서 엔티티의 키 관리 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200052272A KR102364254B1 (ko) | 2020-04-29 | 2020-04-29 | 블록 체인에서 엔티티의 키 관리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210133547A true KR20210133547A (ko) | 2021-11-08 |
KR102364254B1 KR102364254B1 (ko) | 2022-02-16 |
Family
ID=78497121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200052272A KR102364254B1 (ko) | 2020-04-29 | 2020-04-29 | 블록 체인에서 엔티티의 키 관리 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102364254B1 (ko) |
Citations (2)
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 (ko) * | 2018-12-19 | 2019-05-17 | 주식회사 마크애니 | 블록 체인 기반으로 관리되는 사물 인터넷 디바이스 및 그 시스템 및 방법 |
-
2020
- 2020-04-29 KR KR1020200052272A patent/KR102364254B1/ko active IP Right Grant
Patent Citations (2)
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 (ko) * | 2018-12-19 | 2019-05-17 | 주식회사 마크애니 | 블록 체인 기반으로 관리되는 사물 인터넷 디바이스 및 그 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102364254B1 (ko) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11438167B2 (en) | Method and server for providing notary service for file and verifying file recorded by notary service | |
CN110912707B (zh) | 基于区块链的数字证书处理方法、装置、设备及存储介质 | |
US20230316273A1 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN108769230B (zh) | 交易数据存储方法、装置、服务器及存储介质 | |
CN112434313A (zh) | 数据共享方法、系统、电子设备及存储介质 | |
CN111385103B (zh) | 权限处理方法、系统、装置及电子设备 | |
CN109600366A (zh) | 基于区块链的保护用户数据隐私的方法及装置 | |
CN113434906B (zh) | 数据查询方法、装置、计算机设备及存储介质 | |
CN115065679B (zh) | 基于区块链的电子健康档案共享模型、方法、系统和介质 | |
CN113254955A (zh) | 前向安全的连接关键词对称可搜索加密方法、系统及应用 | |
CN110910110B (zh) | 一种数据处理方法、装置及计算机存储介质 | |
WO2022076038A1 (en) | Updatable private set intersection | |
US10630471B1 (en) | System and method for enforcement of correctness for key derivation | |
EP4035304A1 (en) | Computer implemented method and system for storing certified data on a blockchain | |
Bakas et al. | Multi-client symmetric searchable encryption with forward privacy | |
US20120239937A1 (en) | Information processing device, computer program product, and access control system | |
CN116644479A (zh) | 一种基于区块链技术的防篡改电子合同签约方法 | |
Xu et al. | DIV: Resolving the dynamic issues of zero-knowledge set membership proof in the blockchain | |
CN117371011A (zh) | 数据隐匿查询方法、电子设备和可读存储介质 | |
KR102364254B1 (ko) | 블록 체인에서 엔티티의 키 관리 방법 및 장치 | |
Xu et al. | A generic integrity verification algorithm of version files for cloud deduplication data storage | |
Wang et al. | A lightweight data integrity verification with data dynamics for mobile edge computing | |
CN110597466B (zh) | 区块链节点的控制方法、装置、存储介质和计算机设备 | |
CN111950031A (zh) | 基于区块链的分布式数据管理方法、终端设备和存储介质 | |
Zhou | A Certificate‐Based Provable Data Possession Scheme in the Standard Model |
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 |