KR102375144B1 - 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 - Google Patents

블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR102375144B1
KR102375144B1 KR1020200066462A KR20200066462A KR102375144B1 KR 102375144 B1 KR102375144 B1 KR 102375144B1 KR 1020200066462 A KR1020200066462 A KR 1020200066462A KR 20200066462 A KR20200066462 A KR 20200066462A KR 102375144 B1 KR102375144 B1 KR 102375144B1
Authority
KR
South Korea
Prior art keywords
private key
seed
password
location information
hash
Prior art date
Application number
KR1020200066462A
Other languages
English (en)
Other versions
KR20210149428A (ko
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 KR1020200066462A priority Critical patent/KR102375144B1/ko
Publication of KR20210149428A publication Critical patent/KR20210149428A/ko
Application granted granted Critical
Publication of KR102375144B1 publication Critical patent/KR102375144B1/ko

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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0872Generation of secret information including derivation or calculation of cryptographic keys or passwords using geo-location information, e.g. location data, time, relative position or proximity to other entities
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

개인키 관리 방법이 설명된다. 예시적인 개인키 관리 방법은 사용자로부터 패스워드를 입력받는 단계; 컴퓨팅 장치의 위치 정보를 획득하는 단계; 패스워드 및 위치 정보에 기초하여, 시드 값을 생성하는 단계; 시드 값을 이용하여 개인키를 인코딩하는 단계; 해시함수를 이용하여 시드 값을 시드 해시로 변환하는 단계; 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성하는 단계; 및 트랜잭션 데이터를 블록체인 네트워크에 전송하는 단계를 포함할 수 있다.

Description

블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 {DEVICE, METHOD, SYSTEM AND COMPUTER READABLE STORAGE MEDIUM FOR MANAGING PRIVATE KEY USING BLOCKCHAIN}
본 개시는 블록체인을 이용하여 개인키를 관리하기 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체에 관한 것이다.
여기에서 달리 언급하지 않으면 본 섹션에서 기술되는 내용은 본 출원에서의 청구범위의 선행 기술이 아니며, 본 섹션에 기재하였다는 이유로 선행 기술로 인정되어서는 안 된다.
통신 기능을 가지는 컴퓨팅 장치의 사용이 일반화 됨에 따라, 컴퓨팅 장치에 저장된 데이터에 대한 해킹을 방지하기 위한 보안 기술에 대한 관심이 높아지고 있다. 다양한 국가와 다양한 기업에서 관심을 가지는 보안 기술 중 하나는 블록체인(Block Chain)이다. 블록체인은 분산형 데이터 저장 기법을 이용하며, 이는 데이터를 단일의 컴퓨팅 장치에 저장하지 않고 네트워크에 참여하는 복수의 컴퓨팅 장치에 데이터를 저장하는 방식을 이용한다.
블록체인 기법에서는, 전송되는 데이터의 보안성을 위하여 비대칭 암호화 기법이 이용된다. 비대칭 암호화에는 대중에게 공개되는 공개키(public key)와 사용자만이 가지는 개인키(private key)가 이용되며, 공개키 또는 개인키로 인코딩된 데이터는 각각 개인키 또는 공개키로만 디코딩할 수 있다. 개인키는 공개키와 대칭되는 형태를 가지지 않으므로, 공개키를 이용하여 개인키를 생성하는 것은 실질적으로 불가능하다. 따라서, 이와 같은 비대칭 암호화 기법을 이용하는 경우, 개인키의 분실에 대한 위험성이 있다.
한국 공개특허 제10-2019-0138384호는 사용자의 생체 정보를 이용하여 개인키를 생성하고, 개인키로부터 공개키를 생성 후 개인키를 삭제하더라도, 이후 생체 정보를 이용하여 개인키를 복원할 수 있는 구성을 개시하고 있다. 그러나, 이와 같은 생체정보를 이용하는 시스템을 구현하기 위해서는 생체 정보를 인식할 수 있는 별도의 장치를 요구하므로, 추가적인 비용이 발생할 수 있다.
본 개시는 위와 같은 문제점들을 해결하기 위한 것으로서, 블록체인을 이용하여 개인키를 관리하기 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체를 제시한다.
본 개시의 일부 실시예에서, 개인키 관리 방법이 설명된다. 예시적인 개인키 관리 방법은 사용자로부터 패스워드를 입력받는 단계; 사용자의 컴퓨팅 장치의 위치 정보를 획득하는 단계; 패스워드 및 위치 정보에 기초하여, 시드 값을 생성하는 단계; 시드 값을 이용하여 개인키를 인코딩하는 단계; 해시함수를 이용하여 시드 값을 시드 해시로 변환하는 단계; 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성하는 단계; 및 트랜잭션 데이터를 블록체인 네트워크에 전송하는 단계를 포함할 있다.
일부 예시에서, 개인키 관리 방법은 트랜잭션 데이터를 블록체인 네트워크에 전송하는 단계 이후에, 블록체인 네트워크로부터 개인키를 회복하기 위한 개인키 회복 요청에 따라, 패스워드 및 위치 정보를 획득하는 단계; 개인키 회복 요청에 따라 획득된 패스워드 및 위치 정보에 기초하여, 시드 값을 재생성하는 단계; 해시함수를 이용하여 재생성된 시드 값을 재생성된 시드 해시로 변환하는 단계; 재생성된 시드 해시를 이용하여, 블록체인 네트워크로부터 인코딩된 개인키를 수신하는 단계; 및 재생성된 시드 값을 이용하여 인코딩된 개인키를 디코딩하여 개인키를 획득하는 단계를 더 포함할 수 있다.
일부 다른 실시예에서, 개인키 관리 장치가 설명된다. 예시적인 개인키 관리 장치는 통신부, 수신부, 시드 생성부, 코딩부 및 해싱부를 포함할 수 있다. 통신부는 블록체인 네트워크와 통신하도록 구성될 수 있다. 수신부는 사용자로부터 패스워드를 입력받고, 개인키 관리 장치의 위치 정보를 획득할 수 있다. 시드 생성부는 패스워드 및 위치 정보에 기초하여, 시드 값을 생성할 수 있다. 코딩부는 시드 값을 이용하여 개인키를 대칭 인코딩할 수 있다. 해싱부는 해시함수를 이용하여 시드 값을 시드 해시로 변환할 수 있다. 통신부는 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성하고 생성된 트랜잭션 데이터를 블록체인 네트워크에 전송할 수 있다.
일부 예시에서, 수신부는 블록체인 네트워크로부터 상기 개인키를 회복하기 위한 개인키 회복 요청에 따라, 상기 패스워드 및 상기 위치 정보를 획득할 수 있다. 시드 생성부는 개인키 회복 요청에 따라 획득된 패스워드 및 위치 정보에 기초하여, 시드 값을 재생성할 수 있다. 해싱부는 해시함수를 이용하여 재생성된 시드 값을 재생성된 시드 해시로 변환할 수 있다. 통신부는 재생성된 시드 해시를 이용하여, 블록체인 네트워크로부터 인코딩된 개인키를 수신할 수 있다. 코딩부는 재생성된 시드 값을 이용하여 인코딩된 개인키를 디코딩하여 개인키를 획득할 수 있다.
일부 또 다른 실시예에서, 개인키 관리 프로그램을 저장하는 컴퓨터 판독가능 저장 매체가 설명된다. 개인키 관리 프로그램은 컴퓨팅 장치에 의해 실행되는 경우, 사용자로부터 패스워드를 입력받는 동작; 컴퓨팅 장치의 위치 정보를 획득하는 동작; 패스워드 및 위치 정보에 기초하여, 시드 값을 생성하는 동작; 시드 값을 이용하여 개인키를 인코딩하는 동작; 해시함수를 이용하여 시드 값을 시드 해시로 변환하는 동작; 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성하는 동작; 및 트랜잭션 데이터를 블록체인 네트워크에 전송하는 동작을 수행하도록 하는 하나 이상의 명령어를 포함할 수 있다.
이상의 간단한 요약 및 효과에 관한 설명은 단순히 예시적인 것으로서 본 개시에서 의도한 기술적 사항을 제한하기 위한 것이 아니다. 이하의 상세한 설명과 첨부된 도면을 참조함으로써, 전술한 예시적인 실시예들과 기술적 특징들에 더하여, 추가적인 실시예와 기술적 특징들이 이해될 수 있을 것이다.
본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명으로부터 충분히 분명해질 것이다. 이러한 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안되는 것을 이해하면서, 본 개시는 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 본 개시의 적어도 일부 실시예에서 이용되는 블록체인의 일 예시를 도시한다.
도 2는 본 개시의 적어도 일부 실시예에 따라 개인키를 관리하기 위한 시스템의 개략도를 도시한다.
도 3은 본 개시의 적어도 일부 실시예에 따라 위치 정보를 획득하는 일 예시를 도시한다.
도 4는 본 개시의 적어도 일부 실시예에 따른 개인키 관리 장치를 도시하는 블록도이다.
도 5는 본 개시의 적어도 일부 실시예에 따라, 개인키 등록을 수행하는 예시적인 프로세스를 도시한다.
도 6은 본 개시의 적어도 일부 실시예에 따라, 개인키 복구를 수행하는 예시적인 프로세스를 도시한다.
도 7은 본 개시의 적어도 일부 실시예에 따라, 개인키를 관리하는 데 이용될 수 있는 컴퓨터 프로그램 제품을 도시한다.
도 8은 본 개시의 적어도 일부 실시예에 따라 배열되는 컴퓨팅 장치의 예시적인 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 구현예 및 실시예를 상세히 설명한다. 그러나, 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 구현예 및 실시예에 한정되지 않는다.
본 개시는 일반적으로, 개인키를 관리하기 위한 방법, 장치, 시스템, 컴퓨터 판독가능 저장 매체 및 이에 저장된 프로그램에 관한 것이다.
이하에서, "코딩"이라는 용어는 데이터를 암호화하는 인코딩과 데이터를 복호화 하는 디코딩을 통칭한다. "대칭 인코딩" 또는 "대칭 디코딩"이라는 용어는 대칭적 암호화 기법을 이용한 데이터의 인코딩 또는 디코딩을 의미한다. 유사하게, "비대칭 인코딩" 또는 "비대칭 디코딩"이라는 용어는 비대칭적 암호화 기법을 이용한 데이터의 인코딩 또는 디코딩을 의미한다.
도 1은 본 개시의 적어도 일부 실시예에서 이용되는 블록체인(100)의 일 예시를 도시한다. 블록체인(100)은 하나 이상의 블록을 포함하며, 각각의 블록은 요구되는 바에 따라 다양한 형태로 구현될 수 있으며, 적어도 하나의 트랜잭션을 포함한다. 이러한 블록체인(100)은 블록체인 네트워크 내 복수의 노드 각각에서 저장된다. 또한, 이하에서 설명되는 바와 같이, 새로운 블록 및/또는 트랜잭션이 생성될 때마다, 해당 블록 및/또는 트랜잭션은 블록체인 네트워크 전반에 걸쳐 전파된다.
도 1에 도시된 바와 같이, 블록(110)은 블록 해시부(120), 블록 헤더부(130) 및 블록 바디부(140)를 포함할 수 있다. 블록 해시부(120)는 블록 해시 값을 포함하며, 이는 블록(110)을 식별하는 고유 값에 해당한다. 블록 해시 값은 아래 설명되는 바와 같이, 블록(110) 내의 블록 헤더부(130) 및 블록 바디부(140)에 포함된 데이터에 기초하여 연산된다. 블록 헤더부(130)는 블록체인 기법의 유형에 따라 다양한 값을 포함한다. 예컨대, 블록 헤더부(130)는 현재 블록의 깊이 값, 이전 블록의 블록 해시 값, 데이터 해시 값, 블록 생성 시각 값 등을 포함할 수 있다. 현재 블록의 깊이 값은 현재 블록의 순번(블록(110)의 경우 n)을 가질 수 있다. 이전 블록의 블록 해시 값은 블록체인 내에서 해당 블록의 직전의 블록의 블록 해시 값이다. 블록(110)의 경우, 이전 블록의 블록 해시 값은 블록 #n-1의 블록 해시 값(즉, 0xy0…72)이다. 데이터 해시 값은 블록 바디부(140)에 저장되는 하나 이상의 트랜잭션의 데이터에 기초하여 결정된다. 블록 헤더부(130)에 포함되는 값은 위 설명된 예시에 제한되지 않으며, 난이도 설정 값(nonce), 블록체인 관련 소프트웨어의 버전 값, 프로토콜 버전 값 등을 더 포함할 수 있다.
블록 바디부(140)는 예컨대, "트랜잭션 n.1", "트랜잭션 n.2" 등과 같은 하나 이상의 트랜잭션을 포함할 수 있다. 각각의 트랜잭션이 노드에 의해 생성되는 경우, 해당 노드는 생성된 트랜잭션을 블록체인 네트워크 내 다른 노드로 전송할 수 있다. 노드가 트랜?Ъ퓽? 수신하는 경우, 해당 트랜잭션이 유효한 노드로부터 수신된 것 인지와 같이 트랜잭션의 유효성을 결정하며, 트랜잭션이 유효하면 해당 트랜잭션을 블록에 추가한다. 트랜잭션의 수 또는 사이즈는 구현예에 따라 미리 정해질 수 있다. 각각의 트랜잭션에는 블록체인의 구현예에 따라 요구되는 데이터가 저장될 수 있다. 블록 바디부(140)에 저장되는 트랜잭션이 미리 정해진 기간, 미리 정해진 트랜잭션의 수 등과 같은 미리 정해진 조건에 만족하는 경우, 블록 바디부(140)에 포함된 하나 이상의 트랜잭션과 연관된 값으로부터 데이터 해시 값이 연산된다. 일부 예시에서, 데이터 해시 값은 머클 트리(merkle tree) 구조를 이용하여 머클 루트(merkle root)를 연산함으로써 획득할 수 있다. 이후, 이러한 데이터 해시 값을 포함하는 블록 헤더부(130) 내 다양한 값에 기초하여, 블록 해시 값이 연산되어, 결과적으로 블록(110)이 생성된다.
이와 같이 생성된 블록(110)은 블록체인 네트워크 내의 노드로 전송된다. 한편, 블록체인 네트워크 내 노드는 블록(110)의 수신 전에는 블록(110) 이전 블록(즉, 도 1에서 블록#n-1)까지의 블록체인에 대한 데이터를 저장한다. 노드는 블록(110)을 수신한 이후, 수신된 블록(110)의 유효성을 검증하고, 블록(110)이 유효하면, 블록체인에 블록(110)을 추가하는 한편, 블록체인 내 다른 노드로 블록(110)을 전송한다.
도 2는 본 개시의 적어도 일부 실시예에 따라 개인키를 관리하기 위한 시스템(200)의 개략도를 도시한다. 본 개시에 따른 예시적인 시스템(200)은 블록체인 네트워크(210) 및 사용자 장치(220)를 포함할 수 있다. 블록체인 네트워크(210)는 미리 정해진 컴퓨팅 장치가 노드로서 동작하는 프라이빗 블록체인(private blockchain)으로 구현하는 경우 시스템(200)의 운영 비용, 이용 용이성, 속도, 안정성 등의 측면에서 이점을 가지지만, 본 개시는 이에 제한되지 않는다. 본 개시에 따른 기술적 사상에서 벗어나지 않는다면, 블록체인 네트워크(210)는 퍼블릭 블록체인(public blockchain)의 구조로 구현되는 것도 가능하다. 또한, 도 1에서는, 사용자 장치(220)가 블록체인 네트워크(210)의 외부에 있는 것으로 도시되었지만, 블록체인 네트워크(210)의 노드로서 동작하는 것 또한 가능하다. 즉, 이하에서는 일부 실시예에 따라 사용자 장치(220)가 블록체인에 추가되는 트랜잭션 데이터를 생성하여 블록체인 네트워크에 전송하는 것으로 설명되는 한편, 다른 실시예에서는 사용자 장치(220)가 트랜잭션 데이터를 생성하고 그러한 트랜잭션 데이터를 포함하는 블록체인의 블록을 생성하며, 생성된 블록을 다른 노드로 전파하는 것 또한 가능하다는 점이 당업자에게 이해될 것이다.
일부 실시예에서, 블록체인 네트워크(210)는 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...)를 포함한다. 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 각각은 예컨대, 데스크 탑 컴퓨터, 랩탑 컴퓨터, 스마트폰, 태블릿 컴퓨터, 휴대 전화기, 개인 휴대용 단말기(PDA), 특정 용도 장치 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 단일 컴퓨팅 장치; 또는 서버 팜(server farm), 분산형 네트워크, 클라우드 컴퓨팅 구성과 같이 복수의 컴퓨팅 장치를 포함하는 복수 컴퓨팅 구성일 수 있으나, 이에 제한되지 않는다. 예컨대, 둘 이상의 노드가 단일 컴퓨팅 장치에서 가상 노드의 형태로 구현되는 것 또한 가능하다.
일부 예시에서, 사용자 장치(220)는 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 중 하나와 직접적으로 통신하여 블록체인 네트워크(210)에 접속할 수 있다. 일부 다른 예시에서, 사용자 장치(220)는 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 중 적어도 하나와 통신하는 서버(도시되지 않음)를 통하여 블록체인 네트워크에 접속할 수 있다. 사용자 장치(220)는 예컨대, 데스크 탑 컴퓨터, 랩탑 컴퓨터, 스마트폰, 태블릿 컴퓨터, 휴대 전화기, 개인 휴대용 단말기(PDA), 특정 용도 장치 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 소형 폼팩터 휴대용(모바일) 전자 장치를 포함하지만, 이에 제한되는 것은 아니다.
블록체인 네트워크(210) 내 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 각각은 블록을 생성하고, 생성된 블록을 연결된 다른 노드로 전파하고, 수신된 블록을 검증하고, 블록을 추가하는 기능을 수행한다. 또한, 본 개시에 따른 실시예에 따르면, 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 또는 하나 이상의 노드(210-1, 210-2, 210-3, 210-4, ...) 중 적어도 하나와 통신하는 서버는 사용자 장치(220)의 요청에 응답하여, 블록체인 내 블록에 저장된 데이터를 검색하고 해당 데이터를 반환할 수 있다. 데이터는 예컨대, 블록체인 네트워크에서 사용되는 개인키와 같은 암호화키를 포함할 수 있다.
본 개시에 따른 시스템(200)은, 적어도, 블록체인 네트워크(210)에서 개인키에 관한 데이터를 등록하고 등록된 데이터를 요청할 수 있는 서비스를 제공한다. 사용자 장치(220)는 그러한 서비스를 이용하기 위하여, 블록체인 네트워크(210)에 접속할 수 있다. 블록체인 네트워크(210)를 통하여 제공되는 서비스는 사용자 장치(220) 상에 설치되는 웹 브라우저, 응용 어플리케이션 등을 통하여 제공될 수 있다.
일부 실시예에서, 사용자 장치(220)는 사용자의 개인키를 블록체인 네트워크(210)에 등록할 수 있다. 일부 예시에서, 사용자 장치(220)는 블록체인 네트워크(210)에서 이용될 비대칭키 세트, 즉 공개키 및 개인키를 생성할 수 있다. 사용자 장치(220)는 예컨대, RSA 알고리즘을 이용하여 비대칭키 세트를 생성할 수 있다. 이후, 사용자 장치(220)는 사용자로부터 개인키를 등록하기 위한 요청을 입력받을 수 있다. 일부 예시에서, 사용자 장치(220)는 사용자로부터 패스워드를 입력받을 수 있다. 이러한 패스워드는 이하에 설명되는 바와 같이, 블록체인 네트워크(210)에 사용자의 개인키를 등록한 이후에, 블록체인 네트워크(210)로부터 해당 개인키를 복구하기 위한 적어도 하나의 문자, 숫자, 특수문자 등을 포함하는 임의의 문자다. 예컨대, 패스워드는 PIN(personalized identification number)일 수 있다.
사용자 장치(220)는 사용자 장치(220)의 위치와 연관된 위치 정보를 획득할 수 있다. 일부 예시에서, 사용자 장치(220)는 사용자로부터 패스워드를 입력받으면, 이러한 패스워드의 입력에 응답하여, 위치 정보의 획득을 수행할 수 있다. 위치 정보는 예컨대, GPS(global positioning system), 삼각 측량법, 기지국 측정법 등 다양한 방법을 이용하여 획득될 수 있다. 사용자 장치(220)는 GPS 모듈 등을 이용하여 좌표 정보를 획득할 수 있으며, 좌표 정보를 이용하여 위치 정보를 결정할 수 있다. 좌표 정보를 위치 정보로서 그대로 이용하는 것도 가능하지만, 본 개시에 따른 예시는 이에 제한되지 않는다. 추가적이고 선택적인 예시에서, 사용자 장치(220)는 좌표 정보를 미리 정해진 방식으로 클러스터링하여 분류할 수 있으며, 획득된 좌표 정보에 해당하는 클러스터를 위치 정보로서 결정할 수 있다. 예컨대, 사용자 장치(220)는 미리 정해진 간격으로 그리드화된 지도 데이터를 이용할 수 있으며, 이에 대해서는 도 3에서 보다 상세히 설명한다. 좌표 정보의 클러스터링은 위치 정보의 식별의 정확도를 높일 수 있다. 좌표 정보와 위치 정보를 완전히 동일하지 않게 함으로써, 구현예에 따라 보안 향상도 달성할 수 있다.
사용자 장치(220)는 패스워드 및 위치 정보에 기초하여, 시드 값을 생성할 수 있다. 사용자 장치(220)는 생성된 시드 값을 이용하여 개인키를 인코딩할 수 있다. 일부 예시에서, 사용자 장치(220)는 패스워드 및 위치 정보를 미리 정해진 방식으로 조합할 수 있다. 일 예시에서, 사용자 장치(220)는 패스워드와 위치 정보를 단순 결합할 수 있다. 다른 예시에서, 사용자 장치(220)는 개인키의 인코딩 방식에 따라 적합한 방식, 예컨대, 압축, 해싱 등을 이용하여 패스워드와 위치 정보를 조합할 수 있다. 시드 값이 개인키를 인코딩하기 위한 고유한 키로서 이용되는 점을 고려하면, 패스워드와 위치 정보의 조합은 무손실 방식으로 이루어지는 것이 바람직하다. 일부 예시에서, 사용자 장치(220)는 생성된 시드 값을 대칭키로서 이용하여 개인키를 대칭 인코딩할 수 있다. 대칭 인코딩에는 예컨대, AES256 알고리즘이 이용될 수 있으나, 이에 제한되지 않는다.
이후, 사용자 장치(220)는 해시함수를 이용하여 시드 값을 시드 해시로 변환할 수 있다. 예컨대, 해시함수는 SHA256 알고리즘을 포함할 수 있다. 사용자 장치(220)는 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성할 수 있다. 사용자 장치(220)는 생성된 트랜잭션 데이터를 블록체인 네트워크(210), 즉, 서버 또는 노드(210-1, 210-2, 210-3, 210-4, ...)로 전송할 수 있다. 노드(210-1, 210-2, 210-3, 210-4, ...) 중 하나는 트랜잭션 데이터를 수신하면 트랜잭션 데이터에 기초하여 현재 생성중인 블록에 트랜잭션을 추가할 수 있으며, 이후 소정의 조건을 만족하는 경우, 블록의 생성을 완료하고 블록체인에 생성된 블록을 추가할 수 있다.
이후, 사용자 장치(220)는 블록체인 네트워크(210)에 접속하여 본 개시에 따른 서비스를 이용할 수 있다. 사용자 장치(220)의 사용자는 블록체인 네트워크(210)에 등록된 개인키를 복구하고자 할 수 있다. 사용자 장치(220)는 사용자로부터 개인키를 회복하기 위한 개인키 회복 요청을 입력받을 수 있다. 사용자 장치(220)는 개인키 회복 요청과 동시에 또는 개인키 회복 요청에 이어서 사용자로부터 패스워드를 입력받을 수 있다. 또한, 사용자 장치(220)는 개인키 회복 요청과 연관하여, 사용자 장치(220)의 위치 정보를 획득할 수 있다. 일부 예시에서, 사용자 장치(220)는 패스워드의 입력에 응답하여 위치 정보를 획득할 수 있다.
사용자 장치(220)는 획득된 위치 정보 및 패스워드에 기초하여, 시드 값을 생성할 수 있다. 시드 값의 생성은 개인키 등록 프로세스에서의 시드 값 생성과 동일한 방식으로 수행된다. 사용자 장치(220)는 해시함수를 이용하여 생성된 시드 값을 시드 해시로 변환할 수 있다. 해시함수 또한 개인키 등록 프로세스에서 이용된 해시함수와 동일한 함수가 이용된다.
사용자 장치(220)는 시드 해시를 이용하여 블록체인 네트워크(210)로부터 인코딩된 개인키를 검색하여 수신할 수 있다. 사용자 장치(220)는 시드 값을 이용하여 인코딩된 개인키를 디코딩하여 개인키를 획득할 수 있다. 사용자 장치(220)는 개인키 등록 프로세스에서의 인코딩 방식에 대응하는 디코딩 방식을 이용할 수 있다. 일부 예시에서, 사용자 장치(220)는 시드 값을 대칭키로 이용할 수 있다.
이와 같이, 본 개시에 따르면, 개인키를 인코딩하여 온라인 상의 블록체인에 등록함으로써, 로컬에 저장하지 않으면서도 데이터의 변형에 대한 시도로부터 개인키를 안전하게 보관할 수 있으며, 개인키 분실에 대한 문제를 해결할 수 있다. 또한, 개인키가 생성된 위치, 예컨대, 집, 사무실 등에 한하여 개인키의 복구가 가능하도록 하므로, 불특정한 위치에 있는 개체로부터의 개인키 탈취를 어렵게 할 수 있다.
도 3은 본 개시의 적어도 일부 실시예에 따라 위치 정보를 획득하는 일 예시를 도시한다. 도 3은 지도 데이터(300)를 도시한다. 도 3에 도시된 바와 같이, 지도(300)는 본 개시의 일부 실시예에 따라 미리 정해진 방식으로 그리드화된다. 사용자 장치(310)는 그리드화된 지도(300)를 이용하여 사용자 장치(310)의 위치를 결정할 수 있다. 사용자 장치(310)는 도 3에 도시된 바와 같이, 지점(34.802, 126.403)과 지점(34.803, 126.404) 사이에서 좌표 정보가 획득되는 경우, 동일한 위치 정보를 획득할 수 있다. 지도(300)에 설정된 그리드를 조정함으로써, 최적의 정확도와 보안성을 달성할 수 있다. 예컨대, 그리드의 사이즈를 작게 설정하는 경우, 위치 정보의 식별력은 높아지지만 개인키 복구를 위해 동일한 위치정보를 획득하기 어려워질 수 있다. 그리드의 사이즈를 크게 설정하는 경우, 개인키 복구를 위한 위치 정보 획득의 오류는 낮아지지만, 보안성이 낮아질 수 있다. 도 3의 예시에서 위치 정보가 획득되는 각 그리드는 모두 동일한 사이즈로 구현되었으나, 본 개시에 따른 실시예는 이에 제한되지 않는다. 예컨대, 지도(300) 상의 정보, 예컨대, 지형 정보, 건물의 밀도 등을 고려하여 다른 사이즈, 다른 형태 등으로 구현하는 것도 가능하다.
도 4는 본 개시의 적어도 일부 실시예에 따른 개인키 관리 장치(400)를 도시하는 블록도이다. 도 4에 도시된 개인키 관리 장치(400)는 예컨대, 도 2의 사용자 장치(220)와 같이, 개인키를 블록체인 네트워크에 등록하고 사용자의 요청에 따라 블록체인 네트워크에 등록된 개인키를 수신하여 복구할 수 있다. 따라서, 개인키 관리 장치(400)는 예컨대, 데스크 탑 컴퓨터, 랩탑 컴퓨터, 스마트폰, 태블릿 컴퓨터, 휴대 전화기, 개인 휴대용 단말기(PDA), 특정 용도 장치 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 소형 폼팩터 휴대용(모바일) 전자 장치일 수 있지만, 이에 제한되는 것은 아니다.
일부 실시예에서, 개인키 관리 장치(400)는 도 4에 도시된 바와 같이, 수신부(410), 시드 생성부(420), 코딩부(430), 해싱부(440) 및 통신부(450)를 포함할 수 있다. 수신부(410)는 패스워드 수신부(412) 및 위치 정보 수신부(414)를 포함할 수 있다. 코딩부(430)는 인코딩부(432) 및 디코딩부(434)를 포함할 수 있다. 통신부(450)는 블록체인 조회부(452), 트랜잭션 데이터 생성부(454) 및 트랜잭션 데이터 전송부(456)를 포함할 수 있다.
개인키 관리 장치(400)는 본 개시에 따른 하나 이상의 프로그램을 내부 메모리에 저장할 수 있으며, 이러한 하나 이상의 프로그램은 프로세서의 실행에 의해 수신부(410), 시드 생성부(420), 코딩부(430), 해싱부(440) 및 통신부(450)에 따른 동작을 수행할 수 있다. 이러한 컴포넌트들(410, 420, 430, 440 및 450) 및 그 서브 컴포넌트들(412, 414, 432, 434, 452, 454 및 456)은 개별적인 컴포넌트로 도시되었으나, 개시된 대상의 범위를 벗어나지 않으면서, 추가적인 컴포넌트로 분리될 수 있거나 더 적은 컴포넌트로 조합되거나 제거될 수 있다. 또한, 도 4에서는 컴포넌트가 소프트웨어에 의해 구현되는 것으로 도시되지만, 당업자라면 컴포넌트의 각각의 기능 및/또는 동작이 하드웨어, 소프트웨어, 펌웨어 또는 그들의 임의의 조합을 통하여 개별적으로 및/또는 종합적으로 구현될 수 있음을 이해할 것이다.
개인키 관리 장치(400)는 블록체인 네트워크에서 이용될 비대칭키 세트, 즉, 공개키 및 개인키 중 개인키를 블록체인 네트워크에 등록할 수 있다. 수신부(410)는 사용자로부터 개인키를 블록체인 네트워크에 등록하기 위한 등록 요청 또는 블록체인 네트워크에 등록된 개인키를 복구하기 위한 개인키 회복 요청을 수신할 수 있다. 패스워드 수신부(412)는 사용자로부터 패스워드를 입력받을 수 있다. 패스워드는 적어도 하나의 문자, 숫자, 특수문자 등을 포함할 수 있다. 예컨대, 패스워드는 PIN일 수 있다.
위치 정보 수신부(414)는 개인키 관리 장치(400)와 연관된 위치 정보를 획득할 수 있다. 일부 예시에서, 위치 정보 수신부(414)는 패스워드 수신부(412)에 의한 패스워드의 획득에 응답하여, 위치 정보의 획득을 수행할 수 있다. 위치 정보는 예컨대, GPS, 삼각 측량법, 기지국 측정법 등 다양한 방법을 이용하여 획득될 수 있다. 위치 정보 수신부(414)는 예컨대, GPS 모듈을 이용하여 좌표 정보를 획득할 수 있으며, 좌표 정보를 이용하여 위치 정보를 결정할 수 있다. 좌표 정보를 위치 정보로서 그대로 이용하는 것도 가능하지만, 구현예에 따라 좌표 정보를 적절한 방식으로 처리됨으로써 위치 정보를 결정할 수 있다. 추가적이고 선택적인 예시에서, 위치 정보 수신부(414)는 좌표 정보를 미리 정해진 방식으로 클러스터링하여 분류할 수 있으며, 획득된 좌표 정보에 해당하는 클러스터를 결정할 수 있다.
시드 생성부(420)는 패스워드 수신부(412)에 의해 획득된 패스워드 및 위치정보 수신부(414)에 의해 획득된 위치 정보에 기초하여, 시드 값을 생성할 수 있다. 일부 예시에서, 시드 생성부(420)는 패스워드 및 위치 정보를 미리 정해진 방식으로 조합할 수 있다. 일 예시에서, 시드 생성부(420)는 패스워드와 위치 정보를 단순 결합할 수 있다. 다른 예시에서, 시드 생성부(420)는 코딩부(430)의 코딩방식에 연계하여 이용하기에 적합한 방식, 예컨대, 압축, 해싱 등을 이용하여 패스워드와 위치 정보를 조합할 수 있다.
코딩부(430)는 블록체인 네트워크에서 이용될 비대칭키 세트, 즉, 공개키와 개인키를 생성할 수 있다. 인코딩부(432)는 공개키 또는 개인키를 이용하여 블록체인 네트워크에 전송할 데이터를 인코딩할 수 있으며, 여기서 인코딩은 대칭 인코딩 및 비대칭 인코딩을 포함한다. 일부 예시에서, 인코딩부(432)는 시드 생성부(420)에 의해 생성된 시드 값을 이용하여 개인키를 인코딩할 수 있다. 인코딩부(432)는 시드 값을 대칭키로서 이용할 수 있다. 인코딩부(432)는 예컨대, AES256알고리즘을 이용할 수 있으나, 이에 제한되지 않는다.
디코딩부(434)는 개인키 또는 공개키를 이용하여, 블록체인 네트워크에 전송된 인코딩된 데이터를 디코딩할 수 있으며, 여기서 디코딩은 대칭 디코딩 및 비대칭 디코딩을 포함한다. 일부 예시에서, 디코딩부(434)는 블록체인 조회부(452)에 의해 수신된 인코딩된 개인키를, 시드 생성부(420)에 의해 생성된 시드 값을 이용하여 디코딩할 수 있다.
해싱부(440)는 시드 생성부(420)에 의해 생성된 시드 값을 시드 해시로 변환할 수 있다. 해싱부(440)는 해시함수를 이용할 수 있으며, 예컨대, 해시함수는 SHA256 알고리즘을 포함할 수 있다.
블록체인 조회부(452)는 블록체인 네트워크에서 관리되는 블록체인의 하나 이상의 블록 내 데이터를 조회할 수 있다. 블록체인 조회부(452)는 블록체인 네트워크를 통하여 블록체인에 저장된 데이터를 검색하고, 요청한 데이터를 수신할 수 있다. 트랜잭션 데이터 생성부(454)는 본 개시에 따른 트랜잭션 데이터를 생성할 수 있으며, 트랜잭션 데이터 전송부(456)는 이와 같이 생성된 트랜잭션 데이터를 블록체인 네트워크에 전송할 수 있다. 본 개시에 따른 일부 실시예에 따르면, 트랜잭션 데이터는 대칭 인코딩된 개인키 및 시드 해시를 포함할 수 있다. 트랜잭션 데이터 전송부(456)는, 트랜잭션 데이터 생성부(454)에 의해 트랜잭션 데이터의 생성에 응답하여, 트랜잭션 데이터를 블록체인 네트워크, 즉, 블록체인 네트워크 내 노드 또는 노드와 통신하는 소정의 서버에 전송할 수 있다.
이하에서는, 개인키 관리 장치(400)의 다양한 프로세스에 관하여, 도 5 및 도 6을 참조하면서 설명한다. 도 5는 본 개시의 적어도 일부 실시예에 따라, 블록체인 네트워크에 개인키 등록을 수행하는 예시적인 프로세스(500)를 도시하고, 도 6은 개인키 복구를 자료를 수행하는 예시적인 프로세스(600)를 도시한다. 도 5 및 도 6에 도시된 프로세스(500 및 600) 각각은 블록(510, 520, 530, 540, 550, 560 및/또는 570) 및 블록(610, 620, 630, 640 및/또는 650)에 의해 예시된 바와 같은 하나 이상의 동작, 기능 또는 작용을 포함할 수 있다. 한편, 도 5 및 도 6에 예시된 개략적인 동작들은 예시로서만 제공되고, 개시된 실시예의 본질에서 벗어나지 않으면서, 동작들 중 일부가 선택적일 수 있거나, 더 적은 동작으로 조합될 수 있거나, 추가적인 동작으로 확장될 수 있다.
<블록체인 네트워크로의 개인키 등록>
도 5를 참조하면, 프로세스(500)는 패스워드를 입력받는 블록(510)에서 시작할 수 있다. 블록(510)에서, 수신부(410)는 사용자로부터 개인키 등록 요청을 수신할 수 있다. 패스워드 수신부(412)는 사용자로부터 패스워드를 입력받을 수 있다. 패스워드는 이하에서 설명되는 바와 같이 블록체인 네트워크에 등록될 개인키의 복구에 추후 사용되는 것으로서, 사용자가 임의로 정할 수 있다. 프로세스(500)는 블록(510)으로부터 블록(520)으로 이어질 수 있다.
블록(520)에서, 위치 정보 수신부(414)는 개인키 관리 장치(400)의 위치에 관한 위치 정보를 획득할 수 있다. 일부 예시에서, 위치 정보 수신부(414)는 블록(510)에서의 패스워드의 획득에 응답하여, 위치 정보를 획득할 수 있다. 일부 다른 예시에서, 위치 정보 수신부(414)는 블록(510)에서의 패스워드의 획득과 독립적으로 위치 정보를 획득할 수 있다. 예컨대, 위치 정보 수신부(414)는 블록(510)에서의 개인키 등록 요청의 수신에 응답하여, 위치 정보의 획득을 수행할 수 있다. 프로세스(500)는 블록(520)으로부터 시드 값을 생성하는 블록(530)으로 이어질 수 있다.
블록(530)에서, 시드 생성부(420)는 블록(510)에서 획득된 패스워드 및 블록(520)에서 획득된 위치 정보에 기초하여, 시드 값을 생성할 수 있다. 프로세스(500)는 블록(530)으로부터 개인키를 인코딩하는 블록(540)으로 이어질 수 있다. 블록(540)에서, 인코딩부(432)는 블록(530)에서 생성된 시드 값을 이용하여, 개인키를 인코딩, 예컨대, 대칭인코딩할 수 있다. 프로세스(500)는 블록(540)으로부터 시드 값을 시드 해시로 변환하는 블록(550)으로 이어질 수 있다. 블록(550)에서, 해싱부(440)는 블록(420)에서 생성된 시드 값을, 해시 함수를 이용하여 시드 해시로 변환할 수 있다. 프로세스(500)는 블록(550)으로부터 트랜잭션 데이터를 생성하는 블록(560)으로 이어질 수 있다.
블록(560)에서, 트랜잭션 데이터 생성부(454)는 블록(540)에서 생성된 인코딩된 개인키와 블록(550)에서 변환된 시드 해시를 포함하는 트랜잭션 데이터를 생성할 수 있다. 프로세스(500)는 블록(560)으로부터 트랜잭션 데이터를 블록체인 네트워크에 전송하는 블록(570)으로 이어질 수 있다. 블록(570)에서 트랜잭션 데이터 전송부(456)는 블록(560)에서 생성된 트랜잭션 데이터를 블록체인 네트워크에 전송할 수 있다.
<블록체인 네트워크로부터의 개인키 복구>
도 6을 참조하면, 프로세스(600)는 개인키 회복 요청에 따라 패스워드 및 위치 정보를 획득하는 블록(610)에서 시작할 수 있다. 블록(610)에서, 수신부(410)는 사용자로부터 개인키 회복 요청을 수신할 수 있다. 패스워드 수신부(412)는 개인키 회복 요청의 입력과 함께 또는 개인키 회복 요청에 이어서 사용자로부터 패스워드를 입력받을 수 있다. 또한, 위치 정부 수신부(414)는 개인키 회복 요청과 연관하여, 개인키 관리 장치(400)의 위치 정보를 획득할 수 있다. 일부 예시에서, 위치 정보 수신부(414)는 패스워드 수신부(412)에 의한 패스워드의 획득에 응답하여, 위치 정보를 획득할 수 있다. 프로세스(600)는 블록(610)으로부터 시드 값을 생성하는 블록(620)으로 이어질 수 있다. 블록(620)에서, 시드 생성부(420)는 블록(610)에서 획득된 패스워드 및 위치 정보에 기초하여, 시드 값을 생성할 수 있다. 프로세스(600)는 시드 값을 시드 해시로 변환하는 블록(630)으로 이어질 수 있다. 블록(630)에서, 해싱부(440)는 블록(620)에서 생성된 시드 값을 해시 함수를 이용하여 시드 해시로 변환할 수 있다. 프로세스(600)는 블록(630)으로부터 블록체인 네트워크로부터 인코딩된 개인키를 수신하는 블록(640)으로 이어질 수 있다.
블록(640)에서, 블록체인 조회부(452)는 시드 해시를 검색 키(key)로 하여, 블록체인 네트워크로부터 인코딩된 개인키를 검색할 수 있다. 개인키 관리 장치(400)가 개인키를 등록한 위치와 실질적으로 동일한 위치에서 개인키의 회복을 요청을 수신한 경우, 블록체인 조회부(452)는 블록체인 네트워크로부터 인코딩된 개인키를 수신할 수 있다. 프로세스(600)는 블록(640)으로부터 개인키를 획득하는 블록(650)으로 이어질 수 있다. 블록(650)에서 디코딩부(434)는 블록(640)에서 수신된 인코딩된 개인키를 디코딩하여, 개인키를 획득할 수 있다.
도 7은 본 개시의 적어도 일부 실시예에 따라 데이터 접근 권한을 관리하는 데 이용될 수 있는 예시적인 컴퓨터 프로그램 제품(700)을 도시한다. 예시적인 컴퓨터 프로그램 제품의 예시적인 실시예는 신호 베어링 매체(710)를 이용하여 제공된다. 일부 실시예에서, 하나 이상의 컴퓨터 프로그램 제품(700)의 신호 베어링 매체(710)는 컴퓨터 판독가능 매체(730) 및/또는 기록 가능 매체(740)를 포함할 수 있다.
신호 베어링 매체(710)에 포함된 명령어(720)는 사용자 장치(220) 및 개인키 관리 장치(400)와 같은 컴퓨팅 장치에 의해 실행될 수 있다. 명령어(720)는 실행되면, 컴퓨팅 장치로 하여금 사용자로부터 패스워드를 입력받기 위한 하나 이상의 명령어; 컴퓨팅 장치의 위치 정보를 획득하기 위한 하나 이상의 명령어; 패스워드 및 위치 정보에 기초하여, 시드 값을 생성하기 위한 하나 이상의 명령어; 시드 값을 이용하여 개인키를 인코딩하기 위한 하나 이상의 명령어; 해시함수를 이용하여 시드 값을 시드 해시로 변환하기 위한 하나 이상의 명령어; 인코딩된 개인키 및 시드 해시를 포함하는 트랜잭션 데이터를 생성하기 위한 하나 이상의 명령어; 또는 트랜잭션 데이터를 블록체인 네트워크에 전송하기 위한 하나 이상의 명령어 중 적어도 하나를 포함한다.
도 8은 본 개시의 적어도 일부 실시예에 따라 배열되는 컴퓨팅 장치(800)의 예시적인 실시예의 블록도이다. 일 예시적인 기본적인 구성(802)에서, 컴퓨팅 장치(800)는 하나 이상의 프로세서(804) 및 시스템 메모리(806)를 포함할 수 있다. 메모리 버스(808)는 프로세서(804) 및 시스템 메모리(806) 사이에서 통신하기 위하여 이용될 수 있다.
요구되는 구성에 따라, 프로세서(804)는 마이크로 프로세서(μP), 마이크로 컨트롤러(μC), 디지털 신호 프로세서(DSP), 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 프로세서(804)는 레벨 1 캐시(810), 레벨 2 캐시(812)와 같은 하나 이상의 레벨(level)의 캐시(cache), 프로세서 코어(814), 및 레지스터(816)를 포함할 수 있다. 프로세서 코어(814)는 산술 논리 연산장치(arithmetic logic unit; ALU), 부동 소수점 장치(floating point unit; FPU), 디지털 신호 처리 코어(DSP Core), 또는 그들의 임의의 조합을 포함할 수 있다. 메모리 컨트롤러(818)는 또한 프로세서(804)와 함께 사용될 수 있거나, 또는 일부 구현예에서 메모리 컨트롤러(818)는 프로세서(804)의 내적인 일부일 수 있다.
요구되는 구성에 따라, 시스템 메모리(806)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 시스템 메모리(806)는 운영 체제(820), 하나 이상의 어플리케이션(application)(822), 및 프로그램 데이터(824)를 포함할 수 있다. 어플리케이션(822)은 도 1의 사용자 장치(220) 및/또는 도 4의 개인키 관리 장치(400) 및/또는 도 5 및 도 6의 프로세스(500 및 600)에 관하여 기술된 기능 블록 및/또는 작용을 포함하여 여기에서 기술된 바와 같은 기능을 수행하도록 배열된 알고리즘(826)을 포함할 수 있다. 프로그램 데이터(824)는, 알고리즘 (826)과 함께 이용하기 위한 데이터(828), 예컨대, 정적 네트워크 환경 등에 해당하는 데이터를 포함할 수 있다. 일부 실시예에서, 어플리케이션(822)은 최적의 전송 환경을 결정하기 위한 구현이 여기에서 설명된 바와 같이 제공될 수 있도록 운영 체제(820) 상에서 프로그램 데이터(824)로 동작하도록 배열될 수 있다. 예컨대, 시스템(200)은 컴퓨팅 장치(800)의 전부 또는 일부를 포함할 수 있으며 최적의 전송 환경을 결정하는 구현이 여기에서 설명된 바와 같이 제공될 수 있도록 어플리케이션(822)의 전부 또는 일부를 수행하는 것이 가능할 수 있다. 이러한 기술된 기본적인 구성은 도 8에서 파선(802) 내의 그 구성요소들에 의해 도시된다.
컴퓨팅 장치(800)는 기본적인 구성(802) 및 임의의 요구되는 장치 및 인터페이스(interface) 사이의 통신을 용이하게 하도록 추가적인 특징 또는 기능, 및 추가적인 인터페이스를 가질 수 있다. 예를 들어, 버스/인터페이스 컨트롤러(830)는 저장부 인터페이스 버스(834)를 통한 기본적인 구성(802) 및 하나 이상의 데이터 저장 장치(832) 사이의 통신을 용이하게 하도록 사용될 수 있다. 데이터 저장 장치(832)는 이동식 저장 장치(836), 고정식 저장 장치(838), 또는 그 조합일 수 있다. 이동식 저장 장치 및 고정식 저장 장치의 예를 몇 가지 들자면, 플렉서블 디스크 드라이브(flexible disk drive) 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다목적 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(SSD), 및 테이프 드라이브 등을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈(program module), 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 비휘발성의 이동식 및 고정식 매체를 포함할 수 있다.
시스템 메모리(806), 이동식 저장 장치(836) 및 고정식 저장 장치(838)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 요구되는 정보를 저장하도록 사용될 수 있고, 컴퓨팅 장치(800)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하나, 이에 제한되지는 않는다. 임의의 그러한 컴퓨터 저장 매체는 컴퓨팅 장치(800)의 일부일 수 있다.
컴퓨팅 장치(800)는 또한 버스/인터페이스 컨트롤러(842)를 통한 다양한 인터페이스 장치(예컨대, 출력 인터페이스, 주변 인터페이스, 및 통신 인터페이스)로부터 기본적인 구성(802)으로의 통신을 용이하게 하기 위한 인터페이스 버스(842)를 포함할 수 있다. 예시적인 출력 장치(842)는 그래픽 처리 유닛(848) 및 오디오 처리 유닛(850)을 포함할 수 있으며, 이는 하나 이상의 A/V 포트(852)를 통하여 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변 인터페이스(844)는 직렬 인터페이스 컨트롤러(854) 또는 병렬 인터페이스 컨트롤러(856)를 포함할 수 있으며, 이는 하나 이상의 I/O 포트(858)를 통하여 입력 장치(예컨대, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 기타 주변 장치(예컨대, 프린터, 스캐너 등)와 같은 외부 장치와 통신하도록 구성될 수 있다. 예시적인 통신 장치(846)는 네트워크 컨트롤러(860)를 포함하며, 이는 하나 이상의 통신 포트(864)를 통한 네트워크 통신 상에서의 하나 이상의 다른 컴퓨팅 장치(862)와의 통신을 용이하게 하도록 배열될 수 있다.
컴퓨팅 장치(800)는 또한 랩탑 컴퓨터나 랩탑이 아닌 컴퓨터 구성 둘 다를 포함하는 개인 컴퓨터로 구현될 수 있다. 또한, 컴퓨팅 장치(800)는 무선 기지국 또는 기타 무선 시스템 또는 장치의 일부로서 구현될 수 있다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수도 있다.
이상, 본 개시에서 청구하고자 하는 대상에 대해 구체적으로 살펴 보았다. 본 개시에서 청구된 대상은 앞서 기술한 특정 구현예로 그 범위가 제한되지 않는다. 예컨대, 어떤 구현예에서는 장치 또는 장치의 조합 상에서 동작 가능하게 사용되는 하드웨어의 형태일 수 있으며, 다른 구현예에서는 소프트웨어 및/또는 펌웨어의 형태로 구현될 수 있고, 또 다른 구현예에서는 신호 베어링 매체, 저장 매체와 같은 하나 이상의 물품을 포함할 수 있다. 여기서, CD-ROM, 컴퓨터 디스크, 플래시 메모리 등과 같은 저장 매체는, 예컨대 컴퓨팅 시스템, 컴퓨팅 플랫폼 또는 기타 시스템과 같은 컴퓨팅 장치에 의하여 실행될 때 앞서 설명한 구현예에 따라 해당 프로세서의 실행을 야기시킬 수 있는 명령을 저장할 수 있다. 이러한 컴퓨팅 장치는 하나 이상의 처리 유닛 또는 프로세서, 디스플레이, 키보드 및/또는 마우스와 같은 하나 이상의 입/출력 장치, 및 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 플래시 메모리 및/또는 하드 드라이브와 같은 하나 이상의 메모리를 포함할 수 있다.
전술한 상세한 설명에서는 블록도, 흐름도 및/또는 기타 예시를 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 기타 예시는 하나 이상의 기능 및/또는 동작을 포함하게 되며, 당업자라면 블록도, 흐름도 및/또는 기타 예시 내의 각각의 기능 및/또는 동작이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 개별적으로 혹은 집합적으로 구현될 수 있다는 점을 이해할 수 있을 것이다. 일 실시예에서, 본 개시에 기재된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 이와 달리, 본 개시의 실시예의 일부 양상은 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 이들의 실질적으로 임의의 조합으로써 전체적으로 또는 부분적으로 균등하게 집적 회로에서 구현될 수도 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자의 기술 범위 내에 속하는 것이다. 또한, 당업자라면, 본 개시의 대상의 매커니즘들이 다양한 형태의 프로그램 제품으로 분배될 수 있음을 이해할 것이며, 본 개시의 대상의 예시는 분배를 실제로 수행하는데 사용되는 신호 베어링 매체의 특정 유형과 무관하게 적용됨을 이해할 것이다.
특정 예시적 기법이 다양한 방법 및 시스템을 이용하여 여기에서 기술되고 도시되었으나, 당업자라면, 청구된 대상에서 벗어남이 없이, 다양한 기타의 수정 또는 등가물로의 치환 가능성을 이해할 수 있다. 추가적으로, 여기에 기술된 중심 개념으로부터 벗어남이 없이 특정 상황을 청구된 대상의 교시로 적응시키도록 많은 수정이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시로 제한되지 않으나, 그러한 청구된 대상은 또한 첨부된 청구범위 및 그 균등의 범위 내에 들어가는 모든 구현예를 포함할 수 있음이 의도된다.
본 개시의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위, 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.

Claims (10)

  1. 사용자의 컴퓨팅 장치에서 수행되는, 개인키 관리방법으로서,
    개인키 등록 요청에 따라, 상기 사용자로부터 패스워드를 입력받는 단계;
    상기 패스워드를 입력받는 단계에 응답하여, 상기 컴퓨팅 장치의 위치 정보를 획득하는 단계;
    상기 패스워드 및 상기 위치 정보에 기초하여, 시드 값을 생성하는 단계;
    상기 시드 값을 이용하여 개인키를 인코딩하는 단계;
    해시함수를 이용하여 상기 시드 값을 시드 해시로 변환하는 단계;
    인코딩된 상기 개인키 및 상기 시드 해시를 포함하는 트랜잭션 데이터를 생성하는 단계; 및
    상기 트랜잭션 데이터가 블록체인 네트워크 내 블록에 저장되는 트랜잭션으로서 저장되도록 상기 트랜잭션 데이터를 상기 블록체인 네트워크에 전송하는 단계
    를 포함하는 개인키 관리방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 시드 값은 대칭키로 이용되며,
    상기 인코딩하는 단계는 상기 시드 값을 이용하여 상기 개인키를 대칭 인코딩 하는 단계를 포함하는, 개인키 관리방법.
  4. 제1항에 있어서,
    상기 트랜잭션 데이터를 블록체인 네트워크에 전송하는 단계 이후에,
    상기 블록체인 네트워크로부터 상기 개인키를 회복하기 위한 개인키 회복 요청에 따라, 상기 패스워드 및 상기 위치 정보를 획득하는 단계;
    상기 개인키 회복 요청에 따라 획득된 상기 패스워드 및 상기 위치 정보에 기초하여, 상기 시드 값을 재생성하는 단계;
    상기 해시함수를 이용하여 상기 재생성된 시드 값을 재생성된 시드 해시로 변환하는 단계;
    상기 재생성된 시드 해시를 이용하여, 상기 블록체인 네트워크로부터 상기 인코딩된 개인키를 수신하는 단계; 및
    상기 재생성된 시드 값을 이용하여 상기 인코딩된 개인키를 디코딩하여 상기 개인키를 획득하는 단계
    를 더 포함하는 개인키 관리 방법.
  5. 제4항에 있어서,
    상기 개인키 회복 요청에 따라 상기 패스워드 및 상기 위치 정보를 획득하는 단계는,
    상기 사용자로부터 상기 패스워드를 재입력받는 단계; 및
    상기 재입력받는 단계에 응답하여, 상기 위치 정보를 재획득하는 단계를 포함하는, 개인키 관리 방법.
  6. 개인키 관리 장치로서,
    블록체인 네트워크와 통신하도록 구성되는 통신부;
    개인키 등록 요청에 따라, 사용자로부터 패스워드를 입력받고 상기 패스워드의 입력에 응답하여 상기 개인키 관리 장치의 위치 정보를 획득하는 수신부;
    상기 패스워드 및 상기 위치 정보에 기초하여, 시드 값을 생성하는 시드 생성부;
    상기 시드 값을 이용하여 개인키를 대칭 인코딩하는 코딩부; 및
    해시함수를 이용하여 상기 시드 값을 시드 해시로 변환하는 해싱부
    를 포함하고,
    상기 통신부는 인코딩된 상기 개인키 및 상기 시드 해시를 포함하는 트랜잭션 데이터를 생성하고 상기 트랜잭션 데이터가 블록체인 네트워크 내 블록에 저장되는 트랜잭션으로서 저장되도록 생성된 상기 트랜잭션 데이터를 상기 블록체인 네트워크에 전송하는, 개인키 관리 장치.
  7. 삭제
  8. 제6항에 있어서,
    상기 수신부는 상기 블록체인 네트워크로부터 상기 개인키를 회복하기 위한 개인키 회복 요청에 따라, 상기 패스워드 및 상기 위치 정보를 획득하고;
    상기 시드 생성부는 상기 개인키 회복 요청에 따라 획득된 상기 패스워드 및 상기 위치 정보에 기초하여, 상기 시드 값을 재생성하고,
    상기 해싱부는 상기 해시함수를 이용하여 상기 재생성된 시드 값을 재생성된 시드 해시로 변환하고,
    상기 통신부는 상기 재생성된 시드 해시를 이용하여, 상기 블록체인 네트워크로부터 상기 인코딩된 개인키를 수신하고,
    상기 코딩부는 상기 재생성된 시드 값을 이용하여 상기 인코딩된 개인키를 디코딩하여 상기 개인키를 획득하는 것인, 개인키 관리 장치.
  9. 개인키 관리 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 개인키 관리 프로그램은 컴퓨팅 장치에 의하여 실행되는 경우,
    개인키 등록 요청에 따라, 사용자로부터 패스워드를 입력받는 동작;
    상기 패스워드를 입력받는 동작에 응답하여, 상기 컴퓨팅 장치의 위치 정보를 획득하는 동작;
    상기 패스워드 및 상기 위치 정보에 기초하여, 시드 값을 생성하는 동작;
    상기 시드 값을 이용하여 개인키를 인코딩하는 동작;
    해시함수를 이용하여 상기 시드 값을 시드 해시로 변환하는 동작;
    인코딩된 상기 개인키 및 상기 시드 해시를 포함하는 트랜잭션 데이터를 생성하는 동작; 및
    상기 트랜잭션 데이터가 블록체인 네트워크 내 블록에 저장되는 트랜잭션으로서 저장되도록 상기 트랜잭션 데이터를 상기 블록체인 네트워크에 전송하는 동작
    을 수행하도록 하는 하나 이상의 명령어를 포함하는 것인, 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서,
    상기 하나 이상의 명령어는
    상기 블록체인 네트워크로부터 상기 개인키를 회복하기 위한 개인키 회복 요청에 따라, 상기 패스워드 및 상기 위치 정보를 획득하는 동작;
    상기 개인키 회복 요청에 따라 획득된 상기 패스워드 및 상기 위치 정보에 기초하여, 상기 시드 값을 재생성하는 동작;
    상기 해시함수를 이용하여 상기 재생성된 시드 값을 재생성된 시드 해시로 변환하는 동작;
    상기 재생성된 시드 해시를 이용하여, 상기 블록체인 네트워크로부터 상기 인코딩된 개인키를 수신하는 동작; 및
    상기 재생성된 시드 값을 이용하여 상기 인코딩된 개인키를 디코딩하여 상기 개인키를 획득하는 동작
    을 더 수행하도록 하는 것인, 컴퓨터 판독가능 저장 매체.
KR1020200066462A 2020-06-02 2020-06-02 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 KR102375144B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200066462A KR102375144B1 (ko) 2020-06-02 2020-06-02 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200066462A KR102375144B1 (ko) 2020-06-02 2020-06-02 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체

Publications (2)

Publication Number Publication Date
KR20210149428A KR20210149428A (ko) 2021-12-09
KR102375144B1 true KR102375144B1 (ko) 2022-03-16

Family

ID=78866410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200066462A KR102375144B1 (ko) 2020-06-02 2020-06-02 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체

Country Status (1)

Country Link
KR (1) KR102375144B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114221762A (zh) * 2021-12-13 2022-03-22 深圳壹账通智能科技有限公司 一种私钥存储方法、读取方法、管理装置、设备及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100996910B1 (ko) * 2008-07-09 2010-11-29 고려대학교 산학협력단 위치 기반 정보 보호 시스템 및 그 방법
KR101016009B1 (ko) * 2008-11-14 2011-02-23 아주대학교산학협력단 위치 정보를 이용한 데이터의 암호화 방법 및 복호화 방법
KR102152030B1 (ko) * 2018-08-01 2020-09-04 한양대학교 산학협력단 구호 및 응급 상황에서의 정보분산에 기반한 개인 정보 처리 방법 및 장치
KR102248270B1 (ko) * 2019-05-23 2021-05-03 김성완 블록체인 네트워크를 구성하는 노드 장치 및 그 노드 장치의 동작 방법

Also Published As

Publication number Publication date
KR20210149428A (ko) 2021-12-09

Similar Documents

Publication Publication Date Title
US20200374126A1 (en) Method for storing an object on a plurality of storage nodes
TWI810411B (zh) 用以允許對儲存於區塊鏈上之資料的存取之電腦實施系統及方法
US11501533B2 (en) Media authentication using distributed ledger
CN107465656B (zh) 一种基于云计算的安防监控大数据处理方法及系统
CN109040341B (zh) 智能合约地址的生成方法、装置、计算机设备及可读存储介质
US10410018B2 (en) Cryptographic assurances of data integrity for data crossing trust boundaries
US11088827B2 (en) Location-based blockchain
KR102146587B1 (ko) 로그인 검증의 방법, 클라이언트, 서버 및 시스템
US10958416B2 (en) Encrypted and compressed data transmission with padding
US7941379B1 (en) Systems and methods for using geo-location information in sensitive internet transactions
CN110008755B (zh) 一种云存储可撤销动态数据完整性验证系统及方法
US10783277B2 (en) Blockchain-type data storage
US11722322B2 (en) Method for providing information to be stored and method for providing a proof of retrievability
CN114127724A (zh) 针对多副本存储的完整性审计
CN111259282A (zh) Url去重方法、装置、电子设备及计算机可读存储介质
KR102375144B1 (ko) 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체
WO2022068235A1 (zh) 基于信息的属性生成随机数的信息处理方法、装置及设备
CN111400270A (zh) 一种基于区块链的文件授时的方法和装置
WO2023201061A1 (en) Data protection on distributed data storage (dds) protection networks
JP2024500822A (ja) 鍵インストール方法、システム、装置、機器及びコンピュータプログラム
CN111292082B (zh) 一种块链式账本中的公钥管理方法、装置及设备
KR20210136589A (ko) 블록체인을 이용하여 데이터의 접근 권한을 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체
CN111949738A (zh) 基于区块链的数据存储去重方法、终端设备和存储介质
US20240104229A1 (en) Verifiable attribute maps
KR102511570B1 (ko) 블록체인 네트워크의 프로세스를 처리하기 위한 방법, 장치, 시스템, 방법 및 컴퓨터 판독가능 저장매체

Legal Events

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