KR20190063796A - 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법 - Google Patents

블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법 Download PDF

Info

Publication number
KR20190063796A
KR20190063796A KR1020170162837A KR20170162837A KR20190063796A KR 20190063796 A KR20190063796 A KR 20190063796A KR 1020170162837 A KR1020170162837 A KR 1020170162837A KR 20170162837 A KR20170162837 A KR 20170162837A KR 20190063796 A KR20190063796 A KR 20190063796A
Authority
KR
South Korea
Prior art keywords
hash value
information
authentication
public key
user
Prior art date
Application number
KR1020170162837A
Other languages
English (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 KR1020170162837A priority Critical patent/KR20190063796A/ko
Publication of KR20190063796A publication Critical patent/KR20190063796A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/32User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치는, 암호화 또는 복호화를 요청하는 호스트 프로세서, 상기 호스트 프로세서와 연동하는 보안 모듈 및 사용자의 생체 정보를 인식하고, 상기 보안 모듈과 연동하는 생체 정보 인식부를 포함하되, 상기 보안 모듈은, 암호와(Encryption) 또는 복호화(Decryption)를 수행하기 위한 알고리즘이 내장되어 있으며, 상기 호스트 프로세서의 요청에 따라 상기 사용자에 대한 개인키(Private Key)를 생성하고, 상기 생성된 개인키를 기초로 상기 생체 정보 인식부로부터 수신한 상기 사용자에 대한 생체 정보 및 상기 알고리즘을 이용하여 상기 사용자에 대한 공개키(Public Key)를 생성하는 제어부 및 상기 제어부가 생성한 상기 사용자에 대한 공개키를 저장하는 키 관리부를 포함하며, 상기 제어부가 생성한 상기 사용자에 대한 공개키는, 블록체인 시스템의 거래 당사자 모두에게 공유되어 상기 사용자가 거래 당사자인 거래 직후에 진행되는 거래의 인증에 사용되고, 상기 인증에 대한 내역이 블록에 저장된다.

Description

블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법{IDENTIFICATION APPARATUS AND METHOD BASED ON BIOMETRIC DATA FOR BLOCKCHAIN SYSTEM}
본 발명은 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법에 관한 것이다. 보다 자세하게는, SW방식의 블록체인의 한계점을 극복하고, 인증 절차에서 사용되는 개인키와 공개키 정보가 외부로 유출되지 않고, 안전한 분산 인증을 구현할 수 있는 장치 및 방법에 관한 것이다.
생체 인증 기술이란 지문, 홍채, 얼굴, 음성 등 개인의 고유한 생체 정보를 이용하여 인증을 수행하는 기술을 말한다. 생체 인증 기술은 고유한 생체 정보를 이용하므로 보안성이 높고 편리한 바, 최근 FIDO(Fast Identity Online)와 같은 생체 인증 기술을 접목한 사용자 인증 기술이 각광을 받고 있다.
한편, 최근 이슈화되고 있는 블록체인은 블록체인 상에 기록된 거래 내역의 위/변조가 불가능하므로 보안성이 중요시되는 금융산업분야에서 주목을 받고 있다.
이에, 보다 안전하게 금융 거래를 할 수 있도록 생체 인증 기술에 블록체인 기술을 접목시키는 기술이 요구되고 있으며, 본 발명은 이와 관련된 것이다.
대한민국 공개특허공보 제10-2010-0094297호(2010.08.26)
본 발명이 해결하고자 하는 기술적 과제는 기존 SW방식의 블록체인의 한계점을 극복할 수 있는 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 인증 절차에서 사용되는 개인키와 공개키 정보가 외부로 유출되지 않으며, 안전한 분산 인증을 구현할 수 있는 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치는, 암호화 또는 복호화를 요청하는 호스트 프로세서, 상기 호스트 프로세서와 연동하는 보안 모듈 및 사용자의 생체 정보를 인식하고, 상기 보안 모듈과 연동하는 생체 정보 인식부를 포함하되, 상기 보안 모듈은, 암호와(Encryption) 또는 복호화(Decryption)를 수행하기 위한 알고리즘이 내장되어 있으며, 상기 호스트 프로세서의 요청에 따라 상기 사용자에 대한 개인키(Private Key)를 생성하고, 상기 생성된 개인키를 기초로 상기 생체 정보 인식부로부터 수신한 상기 사용자에 대한 생체 정보 및 상기 알고리즘을 이용하여 상기 사용자에 대한 공개키(Public Key)를 생성하는 제어부 및 상기 제어부가 생성한 상기 사용자에 대한 공개키를 저장하는 키 관리부를 포함하며, 상기 제어부가 생성한 상기 사용자에 대한 공개키는, 블록체인 시스템의 거래 당사자 모두에게 공유되어 상기 사용자가 거래 당사자인 거래 직후에 진행되는 거래의 인증에 사용되고, 상기 인증에 대한 내역이 블록에 저장된다.
한편, 상기 기술적 과제를 달성하기 위한 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 방법은 암호화 또는 복호화를 수행하기 위한 알고리즘이 내장된 하드웨어 보안 모듈이 호스트 프로세서로부터 사용자에 대한 개인키 생성 요청을 수신하고, 이를 생성하는 단계, 상기 하드웨어 보안 모듈이 상기 생성한 개인키를 기초로 생체 정보 인식부로부터 수신한 상기 사용자에 대한 생체 정보 및 상기 알고리즘을 이용하여 상기 사용자에 대한 공개키를 생성하는 단계, 상기 하드웨어 보안 모듈이 상기 생성한 상기 사용자에 대한 공개키가 블록체인 시스템의 거래 당사자 모두에게 공유하는 단계 및 상기 하드웨어 보안 모듈이 상기 생성한 상기 사용자에 대한 공개키를 상기 사용자가 거래 당사자인 거래 직후에 진행되는 거래의 인증에 사용하고, 상기 인증에 대한 내역을 블록에 저장하는 단계를 포함한다.
상기와 같은 본 발명에 따르면, 기존 SW방식의 블록체인의 한계점을 극복할 수 있다는 효과가 있다.
또한, 인증 절차에서 사용되는 개인키와 공개키 정보가 외부로 유출되지 않으며, 안전한 분산 인증을 구현할 수 있다는 효과가 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치의 전체 구성을 나타낸 도면이다.
도 2는 키 관리부가 보유하고 있는 키의 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치에 있어서, 장치 연결 방식을 나타낸 도면이다.
도 4는 생체 정보 기반의 인증 장치를 활용한 거래에 있어서, 거래 당사자와 이들 사이에 송수신되는 정보의 내용을 표시한 도면이다.
도 5는 포털 사이트와 금융 거래의 개설자가 포함된 거래 당사자 구조를 모식화한 도면이다.
도 6은 생체 정보 기반의 인증 장치를 활용한 거래의 블록 모델을 도시한 도면이다.
도 7은 도 6에 도시된 블록 모델이 포함하는 실제 블록의 구성을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다.
또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
본 발명을 설명함에 앞서, 우선 블록체인(Block-Chain)의 개념에 대하여 설명할 필요가 있다. 블록체인은 공공 거래 장부라고도 부르며, 가상 화폐로 거래할 때 발생할 수 있는 해킹을 막는 기술이다. 기존 금융 회사 기존 금융 회사의 경우 중앙 집중형 서버에 거래 기록을 보관하는 반면, 블록체인은 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다.
이러한 블록체인은 대표적인 온라인 가상 화폐인 비트코인(Bitcoin)에 적용되어 있다. 비트코인은 누구나 열람할 수 있는 장부에 거래 내역을 투명하게 기록하며, 비트코인을 사용하는 여러 컴퓨터가 10분에 한 번씩 이 기록을 검증하여 해킹을 막는다. 보다 자세한 설명은 비트코인을 최초로 제안한 사토시 나카모토(Satoshi Nakamoto)의 논문(Bitcoin: A Peer-to-Peer Electronic Cash System) 을 참조하면 충분하다.
사토시 나카모토의 논문 내용에 따르면, 블록체인에서 거래를 위해서는 각 암호키 소유자들이 그 전까지의 거래 내역에 다음 소유자의 공개키를 덧붙인 후, 자신의 비밀키로 암호화하는 디지털 서명을 수행해야 하는바, 디지털 서명에 있어서 보안이 강화된 인증(Certification)이 매우 중요함을 알 수 있다.
이하 설명할 본 발명은 블록체인의 디지털 서명에 있어서 안전하면서도 간편한 인증과 관련된 장치 및 방법이다. 우선 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예를 설명하도록 한다.
본 발명의 일 실시 예에 따른 인증 정보를 생성하고 등록하는 인증 지원 서버(100)는 프로세서(110) 및 통신부(120)를 포함한다.
프로세서(110)는, 은행 서버(400)로부터 인증 정보에 대한 등록 요청을 받은 생체 인증 서버(300)로부터 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 획득되면, 상기 public key의 등록 여부를 확인하는 구성이다. 생체 인증 서버(300)는 생체 정보를 통해 사용자 인증을 수행하는 장치로서, 예를 들어, FIDO 서버가 될 수 있다.
인증 정보를 생성하고 등록하는 과정은 사용자 단말(500)에서 특정 사용자의 public key가 생성되어 은행 서버(400)에 전달되는 과정부터 시작될 수 있다(S202). 이때, private key의 생성도 이루어질 수 있다. 특정 사용자는 미리 은행에 방문하여 특정 사용자 정보를 등록해 놓을 수 있고, 이를 통해 특정 사용자에 대해 인증이 이루어질 수 있다. 일 예로, 특정 사용자의 인증은, 상기 특정 사용자의 public key 외에 상기 특정 사용자 정보의 해쉬값이 획득되면, 상기 은행 서버(400)가 기 보유하고 있는 상기 특정 사용자 정보에 대한 해쉬값과 비교하여 서로 대응되는지에 따라 인증이 이루어질 수 있다. 여기서, 특정 사용자 정보는, 상기 특정 사용자의 이름(N), 생년월일(B), 휴대폰 번호(#), 이메일(E) 중 적어도 일부를 포함하여 해당 사용자를 식별할 수 있는 정보일 수 있다. 특정 사용자가 인증이 되면, 은행 서버(400)는, 상기 특정 사용자 정보의 해쉬값인 Uhash를 생체 인증 서버(300)에 전송할 수 있다(S204). 이때, 특정 사용자의 public key도 함께 전송이 이루어질 수 있다. Uhash를 이용하여 user id가 생성되는 경우, Uhash 대신에, 상기 user id 및 상기 Uhash의 해쉬값인 Idhash가 전송될 수도 있다. Idhash는 SHA256hash일 수 있다. 생체 인증 서버(300)는, (i) 상기 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값으로서 상기 Uhash 또는 상기 Uhash를 가공한 값을 인증 지원 서버(100)로 전송할 수 있다(S206). 이 경우 마찬가지로 Uhash를 가공한 값은, 상기 Uhash를 이용하여 user id가 생성되는 경우, 상기 user id 및 상기 Uhash의 해쉬값인 Idhash일 수 있다. 프로세서(110)는, 이렇게 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 획득되면, 로컬 데이터베이스(미도시)에서 상기 public key의 등록 여부를 확인한다(S208). 참고로, 사용자 단말(500)은 사용자 입/출력을 수행할 수 있는 단말 장치로서, 스마트폰, PC, 태블릿 PC, 기타 사용자 입/출력이 가능한 전자 장치 중 어느 하나가 될 수 있다.
통신부(120)는, 생체 인증 서버(300) 또는 데이터베이스(200)와 통신하는 구성이다. 여기서, 데이터베이스(200)는 가상화폐의 블록체인일 수 있다.
상기 확인 결과, 상기 public key가 등록 상태이면(S210), 이미 인증 정보가 등록되어 있다는 의미이므로, 통신부(120)는, 생체 인증 서버(300)에 error 메시지를 전송할 수 있다(S212). error 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달된다.
이와 달리, 상기 확인 결과, 상기 public key가 미등록 상태이면, (i) 상기 특정 사용자의 public key 및 (ii) 상기 해쉬값 또는 이를 가공한 값을 output으로 하는 transaction을 생성하여 데이터베이스에 전송할 수 있다(S214, S216). 구체적으로, 상기 통신부(120)는, 상기 확인 결과, 상기 public key가 미등록 상태이면, (i) 상기 특정 사용자의 public key 및 (ii) 상기 해쉬값 또는 이를 가공한 값을 output1으로 하고(op_msg1 = pubkey:IDhash), 소정의 액수의 가상 화폐를 output2로 하는 transaction을 생성하여 데이터베이스에 전송할 수 있다. output2는 후술하는 바와 같이 인증 정보 파기용으로 사용될 수 있다. 즉, output2를 입력값으로 하는 새로운 transaction을 생성하여 데이터베이스(200)에 전송함으로써 인증 정보에 대한 파기가 이루어질 수 있다.
또한, 통신부(120)는, 상기 transaction이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하며(S218), 상기 생체 인증 서버(300)에 (i) 상기 public key 및 (ii) 상기 해쉬값 또는 이를 가공한 값이 정상적으로 등록되었음을 알리는 메시지를 전달(S220)할 수 있다. 상기 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)에 전달된다.
통신부(120)는 다양한 통신 기술로 구현될 수 있다. 즉, 와이파이(WIFI), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), HSPA(High Speed Packet Access), 모바일 와이맥스(Mobile WiMAX), 와이브로(WiBro), LTE(Long Term Evolution), 블루투스(bluetooth), 적외선 통신(IrDA, infrared data association), NFC(Near Field Communication), 지그비(Zigbee), 무선랜 기술 등이 적용될 수 있다. 또한, 인터넷과 연결되어 서비스를 제공하는 경우 인터넷에서 정보전송을 위한 표준 프로토콜인 TCP/IP를 따를 수 있다.
한편, 프로세서(110)는, transaction ID, 특정 사용자 정보의 해쉬값 또는 이를 가공한 값, 특정 사용자의 public key를 로컬 데이터베이스(미도시)에 저장할 수 있다.
프로세서(110)는, 통신부(120) 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(110)는 인증 지원 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(120) 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(110)는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
이하에서는 인증 정보에 대한 파기를 수행하는 인증 지원 서버(100)의 구성 및 동작에 대해서 설명한다. 이하에서 설명하는 인증 정보에 대한 파기를 수행하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다.
프로세서(110)는, 인증 정보 생성 및 등록 과정과 마찬가지로 은행 서버(400)로부터 인증 정보에 대한 파기 요청을 받은 생체 인증 서버(300)로부터 특정 사용자의 public key가 획득되면, 상기 public key의 등록 여부를 확인한다(S308). public key의 등록 여부를 확인하기 이전의 과정은 인증 정보를 생성하고 등록하는 과정과 유사하게 이루어진다.
우선, 사용자 단말(500)에서 특정 사용자의 public key가 은행 서버(400)에 전달되는 과정부터 시작될 수 있다(S302). 만일 사용자 단말(500)에 복수의 사용자의 public key가 저장되어 있을 경우, 사용자의 선택에 의해 선택된 public key가 은행 서버(400)에 전달될 수 있다. 또한, 지문 정보, 안면 정보, 홍채 정보 등과 같은 생체 정보의 입력에 의해 public key가 선택될 수도 있을 것이다. 은행 서버(400)는 특정 사용자에 대해 인증을 수행한다. 그리고, 특정 사용자가 인증이 되면, 은행 서버(400)는, 상기 특정 사용자 정보의 해쉬값인 Uhash를 생체 인증 서버(300)에 전송할 수 있다(S304). 이때, 특정 사용자의 public key도 함께 전송이 이루어질 수 있다. 물론, 전술한 것처럼 Uhash 대신에, Idhash가 전송될 수도 있다. 생체 인증 서버(300)는, (i) 상기 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값으로서 상기 Uhash 또는 상기 Uhash를 가공한 값을 인증 지원 서버(100)로 전송할 수 있다(S306). 이 경우 마찬가지로 Uhash를 가공한 값은, Idhash일 수 있다. 프로세서(110)는, 이렇게 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 획득되면, 로컬 데이터베이스에서 상기 public key의 등록 여부를 확인할 수 있다(S308).
통신부(120)는, 상기 확인 결과, 상기 public key가 미등록 상태이면, 인증 정보가 등록되지 않았다는 것이므로, error 메시지를 전송할 수 있다(S312). error 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다.
통신부(120)는, 상기 확인 결과, 상기 public key가 등록 상태이면, 상기 public key에 대응되는 transaction ID를 이용하여 데이터베이스(200)로부터 상기 transaction ID에 대응되는 특정 transaction의 출력값을 획득하고(S314, S316), 상기 출력값의 적어도 일부를 입력값으로 하는 새로운 transaction을 생성하도록 지원하여 상기 데이터베이스(200)에 전송할 수 있다(S328). 구체적으로, 통신부(120)는, 상기 출력값인 소정의 가상화폐의 적어도 일부를 입력값으로 하는 unsigned transaction을 생성하고 이를 상기 인증 지원 서버(100)의 private key로 서명하여 signed transaction을 생성함으로써 상기 새로운 transaction을 생성하도록 지원할 수 있다. 통신부(120)는, 상기 새로운 transaction이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하고(S330), 인증 정보에 대한 파기 사실을 상기 생체 인증 서버(300)에 알릴 수 있다(S332). 알림 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다.
다만, 이와 같은 작업을 수행하기에 앞서, 통신부(120)는, 인증 정보의 상태 정보를 확인하고 에러 메시지를 전송할 수도 있다. 즉, 상기 확인 결과, 상기 public key가 등록 상태이면, 통신부(120)는, 상기 public key에 대응되는 transaction ID를 이용하여 상기 데이터베이스(200)로부터 상기 transaction ID에 대응되는 상기 특정 transaction의 출력값으로서 public key 및 인증 정보의 상태 정보를 획득할 수 있고(S316), 상기 데이터베이스(200)로부터 획득된 public key가 상기 생체 인증 서버(300)로부터 획득된 public key와 대응되지 않거나(S320) 상기 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면(S324), 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다(S322, S326). 에러 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)에 전달될 수 있다. 상기 상태는 파기 상태 또는 계약 상의 소정의 조건을 만족하는 상태일 수 있다.
이하에서는 인증 정보를 사용하는 인증 지원 서버의 구성 및 동작에 대해서 설명한다. 이하에서 설명하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다.
프로세서(110)는, 은행 서버(400)로부터 인증 정보 사용 요청을 받은 생체 인증 서버(300)로부터 특정 사용자의 public key가 획득되면, 상기 public key의 등록 여부를 확인할 수 있다(S408).
public key의 등록 여부를 확인하기 이전의 과정은 인증 정보를 생성하고 등록하는 과정, 인증 정보를 파기하는 과정과 유사하게 이루어지므로 중복 설명은 생략한다.
통신부(120)는, 상기 확인 결과, 상기 public key가 미등록 상태이면(S410), 사용할 수 있는 인증 정보가 없는 것이므로 error 메시지를 생체 인증 서버(300)에 전송한다(S412). 이 경우, 생체 인증 서버(300)는 은행 서버(400)로 error 메시지를 전달하고, 은행 서버(400)는 사용자 단말(500)로 error 메시지를 전달할 수 있다.
통신부(120)는, 상기 확인 결과, 상기 public key가 등록 상태이면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나(S428) 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 (i) 상기 생체인증 서버(300)가 random nonce를 생성하고, (ii) 상기 특정 사용자의 생체 정보가 획득되면, 상기 random nonce를 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증하며(S438), (iii) 상기 검증 결과에 대한 메시지를 상기 은행 서버(400)로 전송하도록 지원할 수 있다(S444).
좀더 구체적으로 설명하면, 통신부(120)는, 상기 확인 결과, 상기 public key가 등록 상태이면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나(S428) 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 할 수 있고, 생체 인증 서버(300)는 random nonce를 생성할 수 있다. 생체 인증 서버(300)는 생성된 random nonce를 은행 서버(400)로 전달할 수 있다(S430). 은행 서버(400)는 전달받은 random nonce를 사용자 단말(500)로 전달할 수 있다(S432). 사용자 단말(500)은 random nonce를 전달받은 후, 상기 특정 사용자의 생체 정보를 획득할 수 있고(예를 들어, 지문 입력을 받는 과정이 이루어질 수 있다.), 사용자 단말(500)은 상기 random nonce를 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명하여 다시 은행 서버(400)로 전달할 수 있다(S434). 은행 서버(400)는 전달받은 상기 random nonce를 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 다시 생체 인증 서버(300)로 전달한다(S436). 생체 인증 서버(300)는 상기 random nonce를 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증한다(S438). 검증 결과가 참이 아니면(S440), 생체 인증 서버(300)는 상기 특정 사용자가 입력한 생체 정보가 맞지 않음을 나타내는 메시지를 전송할 수 있다(S442). 이 메시지는 은행 서버(400)를 통해 최종적으로 사용자 단말(500)에 전달된다. 반면, 검증 결과가 참이면, 생체 인증 서버(300)는 검증이 성공했음을 나타내는 메시지를 전송할 수 있으며, 로그인이 정상적으로 수행되도록 할 수 있다(S444). 참고로 사용자의 생체 정보는, 홍채 정보, 지문 정보, 안면 정보 중 적어도 일부일 수 있다.
다만, 이와 같은 작업을 수행하기에 앞서, 통신부(120)는, 인증 정보의 상태 정보를 확인하고 에러 메시지를 전송할 수도 있다. 즉, public key의 등록 여부 확인 결과, 상기 public key가 등록 상태이면, 통신부(120)는, 상기 public key에 대응되는 transaction ID를 이용하여 상기 데이터베이스(200)로부터 상기 transaction ID에 대응되는 상기 특정 transaction의 출력값으로서 public key 및 인증서의 상태 정보를 획득하고(S416), 상기 데이터베이스(200)로부터 획득된 public key가 상기 생체 인증 서버(300)로부터 획득된 public key와 대응되지 않거나(S420) 상기 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면(S424), 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다(S422, S426). 에러 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달된다. 상기 상태는 파기 상태 또는 계약의 소정의 조건을 만족하는 상태일 수 있다.
프로세서(110)는, 은행 서버(400)로부터 인증 정보 사용 요청을 받은 생체 인증 서버(300)로부터 특정 사용자의 public key가 획득되면, 상기 public key의 등록 여부를 확인할 수 있다(S514).
public key의 등록 여부를 확인하기 이전의 과정은 인증 정보를 생성하고 등록하는 과정, 인증 정보를 파기하는 과정과 유사하게 이루어질 수 있으므로 중복 설명은 생략한다.
상기 확인 결과, 상기 public key가 미등록 상태이면(S516), 상기 통신부(120)는, 상기 생체 인증 서버(300)로 등록되지 않은 public key임을 나타내는 에러 메시지를 전송할 수 있다(S518). 에러 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다.
반면, 상기 확인 결과, 상기 public key가 등록 상태이면, 통신부(120)는, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나(S534) 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 (i) 상기 생체 인증 서버(300)가, 거래 정보의 해쉬값(Thash) 또는 이를 가공한 값을 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증하며(S536), (ii) 상기 검증 결과에 대한 메시지를 상기 은행 서버(400)로 전송하도록 지원할 수 있다(S538, S540).
좀더 구체적으로 설명하면, 은행 서버(400)는 거래 정보의 해쉬값(Thash=hash(Transaction)) 또는 이를 가공한 값을 생성할 수 있고(S504), 이를 사용자 단말(500)에 전달할 수 있다(S506). 이때, 특정 사용자의 생체 정보가 획득되면, 사용자 단말(500)은 거래 정보의 해쉬값(Thash) 또는 이를 가공한 값을 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값(A)을 은행 서버(400)로 전송할 수 있다(S508). 그리고, 은행 서버(400)는 상기 A를 생체 인증 서버(300)로 전송할 수 있다. 이 때, 특정 사용자의 public key, Thash, Idhash 등이 함께 전달될 수 있다. 물론, 특정 사용자의 public key, Idhash 등은 이전에 전송이 이루어질 수도 있다. 즉, 생체 인증 서버(300)에 Thash와 Idhash가 함께 전달이 이루어지고, 생체 인증 서버(300)에서 인증 지원 서버(100)로 public key와 Idhash의 전달이 이루어진 후 public key의 등록 확인이 이루어질 수도 있으나, Thash의 생성과 전달은 public key 전달 및 등록 확인, Idhash 전달과는 별도로 이루어질 수도 있다.
한편, 상기 (ii)에서, 상기 검증 결과가 거짓이면(S538), 상기 통신부(120)는, 상기 특정 사용자가 입력한 생체 정보가 맞지 않음을 나타내는 메시지를 전송할 수 있다(S540). 상기 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)에 전달된다.
다만, 이와 같은 작업을 수행하기에 앞서, 통신부(120)는, 인증 정보의 상태 정보를 확인하고 에러 메시지를 전송할 수도 있다. 즉, public key의 등록 여부 확인 결과, 상기 public key가 등록 상태이면, 상기 public key에 대응되는 transaction ID를 이용하여 데이터베이스(200)로부터 상기 transaction ID에 대응되는 상기 특정 transaction의 출력값으로서 public key 및 인증 정보의 상태 정보를 획득하고(S522), 상기 데이터베이스(200)로부터 획득된 public key가 상기 생체 인증 서버(300)로부터 획득된 public key와 대응되지 않거나(S526) 상기 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면(S530), 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다(S528, S532). 에러 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)에 전달된다. 상기 상태는 파기 상태 또는 계약 상의 소정의 조건을 만족하는 상태일 수 있다.
한편, 통신부(120)는, 상기 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 private key로 서명한 값(X1) 또는 이에 대한 해쉬값(X2)을 상기 데이터베이스(200)에 기록하도록 전송할 수 있다(S544). 이는 거래시 부인 방지를 위해 거래 정보를 데이터베이스(200)에 기록하는 것이다.
통신부(120)는, 상기 X1 또는 X2가 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하고(S546), 상기 획득된 transaction ID를 상기 생체 인증 서버(300)로 전송할 수 있다(S548). transaction ID는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따른 인증 지원 서버(100)는 생체 인증 기술에 블록체인 기술을 접목시켜 PKI 기반으로 인증서를 생성하고 블록체인 상에 등록하여 사용 및 관리할 수 있는 기술을 제공한다.
한편, 이상 설명된 본 발명에 따른 실시 예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같은 본 발명의 다양한 실시 예에 따른 인증 지원 서버(100)는 생체 인증 기술에 블록체인 기술을 접목시켜 PKI 기반으로 인증서를 생성하고 블록체인 상에 등록하여 사용 및 관리할 수 있는 기술을 제공한다.
한편, 인증 정보를 등록할 필요가 있는 모든 경우에 데이터베이스(200)에 접근하여 기록을 하는 것은 비효율적일 수 있다. 특히, transaction 요청이 많아졌을 때, 서비스 제공의 bottle neck 현상이 발생될 수 있고, 매번 transaction fee를 지불해야 하므로 서비스 운영에 많은 비용이 들 수 있는 우려가 있다.
이하에서는 위/변조가 불가능하고 실시간으로 인증 정보를 등록할 수 있는 장점을 살리면서도 서비스 요청이 몰릴 경우에도 빠른 서비스 속도를 보장하고 비용도 절감할 수 있는 인증 정보를 등록 및 파기할 수 있는 시스템을 설명한다. 이러한 시스템은 전술한 실시 예와 달리 인증 지원 서버(100)에 의해 관리되는 별도의 데이터 구조를 이용한다. 이하에서 설명하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다.
전술한 실시 예와 마찬가지로 통신부(120)는 인증 정보에 대한 등록 요청을 받은 생체 인증 서버(300)로부터 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득할 수 있다.
이때, 상기 특정 사용자의 public key는 사용자 단말(500)에서 생성되어 은행 서버(400)에 전달되고, 상기 특정 사용자가 인증되어 상기 은행 서버(400)로부터 상기 특정 사용자 정보의 해쉬값인 Uhash가 상기 생체 인증 서버(300)에 전송되면, 상기 생체 인증 서버(300)로부터 (i) 상기 public key 및 (ii) 상기 Uhash 또는 상기 Uhash를 가공한 값이 상기 인증 지원 서버(100)로 전송될 수 있다. 특정 사용자의 인증 방법에 대해서는 전술한 실시 예에서 설명했으므로 중복 설명은 생략한다. Uhash를 이용하여 user id가 생성되는 경우, Uhash 대신에, 상기 user id 및 상기 Uhash의 해쉬값인 Idhash가 전송될 수도 있다. Idhash는 SHA256hash일 수 있다. 또한, 전술한 실시 예와 마찬가지로 Uhash를 가공한 값은, 상기 Uhash를 이용하여 user id가 생성되는 경우, 상기 user id 및 상기 Uhash의 해쉬값인 Idhash일 수 있다.
프로세서(110)는, 상기 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 획득되면, 상기 public key의 등록 여부를 확인할 수 있다. 그리고, 상기 확인 결과, 상기 public key가 미등록 상태이고 소정의 앵커링 조건이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은, (i) 상기 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값에 대한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 소정의 데이터 구조로서 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
특정 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 특정 해쉬값을 input 이라고 나타내고, 적어도 하나의 이웃 해쉬값을 x1, x2…xn이라고 나타낼 때, 대표 해쉬값 t는 다음 수학식과 같이 나타낼 수 있다.
<수학식>
t = hash(function(input, x1, x2 … xn))
이때 인증 지원 서버(100)는 상기 특정 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 데이터 구조로 저장하여 관리할 수 있다. 여기서, 데이터 구조는 다양할 수 있는데, 일 예로 머클 트리(merkle tree) 구조가 될 수도 있다. 이 경우, 상기 특정 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 머클 트리(merkle tree)를 통해 이루어질 수 있다.
즉, 프로세서(110)는 상기 특정 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원할 수 있고, 상기 확인 결과, 상기 public key가 미등록 상태이고 상기 소정의 앵커링 조건이 만족되면, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
좀더 구체적으로 설명하면, 이 경우 (x1) 프로세서(110)는, (i) 상기 특정 해쉬값과 (ii) 상기 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. (x2) 만일, 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값이 상기 대표 해쉬값이 된다. (x3) 반면, 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 프로세서(110)는, 상기 부모 노드에 할당된 해쉬값을 상기 특정 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행한다.
그리고, 프로세서(110)는 최종적으로 머클 트리의 루트 노드에 할당된 해쉬값을 대표 해쉬값으로서 데이터베이스(200)에 등록하거나 등록하도록 지원한다. 이때, 대표 해쉬값을 가공한 값이 등록될 수도 있다. 예를 들어, 대표 해쉬값에 hex 연산이 수행된 결과값이 등록될 수 있다.
한편, 상기 인증 지원 서버(100)가 상기 특정 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다.
특히, 상술한 예에서와 같이 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다. 또한, 제2 데이터 구조를 생성할 때는 제1 데이터 구조에 대한 검증이 이루어짐으로써 데이터 integrity가 좀더 보장될 수 있다.
또한, 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리의 경우, 상기 첫번째 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당될 수 있다. 예를 들어, 머클 트리 생성시 인증 지원 서버(100)에 의해 최초로 부여된 입력 메시지의 해쉬값이 할당될 수 있다.
예를 들어, 리프 노드의 개수가 4(22)개인 머클 트리에 따르면,첫번째 머클 트리이기 때문에(tree_id=0), 첫번째 리프 노드인 h1 노드에는 소정의 메시지 데이터 “Coinplug 2016-01-01”의 해쉬값(triplesha256digest(coinplug_unique_message))이 할당되었음을 알 수 있다. 인증 정보에 대한 등록 요청이 있는 경우, 프로세서(110)는 현재 구성 중인 머클 트리의 가장 마지막 리프 노드의 다음 리프 노드를 생성하여 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값의 해쉬값(특정 해쉬값) 또는 이를 가공한 값을 할당하거나 할당하도록 지원한다. 예를 들어, 머클 트리에서 이전 단계에서 두번째 리프 노드인 h1 노드까지 값 할당이 완료된 경우, 다음 리프 노드인 h2 노드를 생성하여 특정 해쉬값 또는 특정 해쉬값을 가공한 값(triplesha256digest(input2))을 할당할 수 있다. 또한, 프로세서(110)는 (i) 특정 해쉬값과 (ii) 상기 특정 해쉬값이 할당된 세번째 리프 노드인 h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 상기 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드(h23 노드)에 할당된다. 부모 노드(h23 노드)가 머클 트리의 루트 노드가 아니므로 프로세서(110)는 상기 h23 노드에 할당된 해쉬값을 상기 특정 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 특정 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드(h0123 노드)에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 프로세서(110)는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
한편, 전술한 소정의 앵커링 조건이란, (i) 소정의 개수만큼의 (i-1) 상기 특정 사용자의 public key 및 (i-2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 획득되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 블록 체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함할 수 있다.
예를 들어, 프로세서(110)는 소정 시간 단위로 전술한 머클 트리의 루트값을 생성할 수 있다(상기 (ii) 조건). 이 경우 프로세서(110)는 소정의 시간이 경과되면 그때까지의 입력값을 이용하여 머클 트리를 생성하고 머클 트리의 루트값을 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
그런데, 이 경우에는 소정 시간이 경과하였음에도 머클 트리의 특정 해쉬값이 할당된 노드의 형제 노드에 값이 할당되지 않을 수 있다. 이처럼 소정의 조건이 만족되었음에도 상기 특정 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 프로세서(110)는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 전술한 방식으로 머클 트리의 루트값이 산출되도록 할 수 있다. 예를 들어, 프로세서(110)는 상기 특정 해쉬값을 복제하여 상기 형제 노드에 할당하거나 할당하도록 지원할 수 있다.
한편, 상기 서비스 특성이란, 인증 정보 등록 요청을 한 사용자(회사)가 지급한 비용 정보, 인증 정보 등록이 이루어지는 시간대 정보, 인증 정보 등록 서비스가 이루어지는 지역 정보, 인증 정보 등록 요청을 한 회사 타입 정보 중 적어도 일부가 될 수 있다. 다만, 여기서 기재한 것에 한정할 것은 아니고, 통상적으로 인정되는 차등적 서비스가 제공될 수 있는 다양한 조건 정보를 포함할 수 있다.
한편, 새로운 머클 트리 생성이 시작되고, 인증 정보의 등록 요청이 없는 상태에서 상기 소정의 조건(예를 들어, 시간 조건)이 만족되면, 상기 프로세서(110)는, 소정의 메시지 데이터(임의의 메시지 데이터)가 첫번째 리프 노드와 두번째 리프 노드에 할당된 머클 트리를 생성하거나 생성하도록 지원하고, 상기 머클 트리의 루트값 또는 이를 가공한 값을 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다. 이 경우에는 리프 노드 2개짜리 머클 트리가 생성될 수 있는 것이다. 물론, 2개짜리로 한정되는 것은 아닐 것이다.
한편, 전술한 것처럼 인증 지원 서버(100)가 상기 특정 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다. 특히, 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
또 다른 머클 트리의 실시 예에 따르면, 상기 설명한 머클 트리의 구조에 머클 트리(tree_id=0)의 루트값(hex(h0123))이 새로운 머클 트리의 첫번째 리프 노드(h4 노드)에 할당되었음을 알 수 있다(triplesha256digest(input4)). 본 발명은 이와 같이 트랜잭션 발생시 생성되는 복수의 데이터 구조를 연결함으로써 중간에 데이터가 변조가 발생되는 경우라도 쉽게 트래킹이 가능하여 데이터 integrity를 향상시키는 장점을 가진다.
한편, 상기 확인 결과, 상기 public key가 등록 상태이면, 이미 인증 정보가 등록되어 있다는 의미이므로, 통신부(120)는, 생체 인증 서버(300)에 error 메시지를 전송할 수 있다. error 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다. 물론, 사용자 단말(500)로 직접 전달될 수도 있다.
한편, 상기 특정 해쉬값은, (i) 상기 특정 사용자의 public key, (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값 및 (iii) 소정의 액수의 가상 화폐에 대한 해쉬값일 수도 있다. 이 경우, (iii) 소정의 액수의 가상 화폐는 인증 정보에 대한 파기 여부를 나타내는데 사용될 수 있다.
또한, 프로세서(110)는, 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값, 상기 특정 사용자의 public key를 로컬 데이터베이스에 저장할 수 있다.
통신부(120)는, 대표 해쉬값 또는 대표 해쉬값을 가공한 값이 데이터베이스(200) 상에 등록이 되면, 데이터베이스(200)상에 기록된 위치 정보를 나타내는 transaction ID를 획득하며, 상기 생체 인증 서버(300)에 (i) 상기 public key 및 (ii) 상기 해쉬값 또는 이를 가공한 값이 정상적으로 등록되었음을 알리는 메시지를 전달할 수 있다. 상기 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)에 전달될 수 있다. 물론, 직접 사용자 단말(500)이나 은행 서버(400)로 전달될 수도 있다.
이하에서는 인증 지원 서버(100)가 인증 정보에 대한 파기를 수행하는 방법에 대해서 설명한다.
전술한 실시 예와 마찬가지로 통신부(120)는 인증 정보에 대한 파기 요청을 받은 생체 인증 서버(300)로부터 (i) 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득한다. public key의 등록 여부를 확인하기 이전의 과정에 대해서는 전술하였으므로 중복 설명은 생략한다.
프로세서(110)는, (i) 상기 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득되면, 상기 public key의 등록 여부를 확인한다. 그리고, 상기 확인 결과, 상기 public key가 등록 상태이고, 소정의 앵커링 조건이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은, (i) 상기 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값에 대한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 소정의 데이터 구조로서 데이터베이스(200)에 등록하거나 등록하도록 지원하여 상기 인증 정보에 대한 파기를 수행할 수 있다.
이처럼 인증 정보에 대한 파기 과정은 전술한 인증 정보 등록 과정과 유사하게 이루어진다. 이 경우 구체적인 인증 정보에 대한 파기 과정은 인증 정보 등록 과정과 동일하므로 중복 설명은 생략한다. 또한, 소정의 데이터 구조는 전술한 바와 같이 머클 트리가 될 수 있다. 따라서, 특정 해쉬값이 상기 소정의 데이터 구조에 기록된 순서에 따라서 등록과 파기를 구분할 수 있다. 즉, 데이터 구조에 첫번째로 기록된 특정 해쉬값은 인증 정보의 등록을 나타내고, 두번째로 기록된 특정 해쉬값은 인증 정보의 파기를 나타낼 수 있다.
이 경우, 상기 획득된 (i) 상기 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 기 등록된 소정의 값과 대응되는 경우, 상기 public key가 등록된 것으로 판단되어, 프로세서(110)가, 상기 소정의 앵커링 조건 만족 여부에 따라 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
또한, 상기 public key의 등록 여부는 로컬 데이터베이스에서 확인할 수 있다. 즉, 상기 public key가 로컬 데이터베이스에 등록된 상태인 경우, 상기 소정의 앵커링 조건이 만족되면, 상기 프로세서(110)는, 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 데이터베이스(120)에 등록하거나 등록하도록 지원하여 상기 인증 정보에 대한 파기를 수행할 수 있다.
특히, 상기 소정의 데이터구조가 머클 트리인 경우, (i) 상기 특정 사용자의 public key 및 (ii) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 머클 트리(merkle tree)의 소정의 리프 노드에 할당되어 등록된 상태인 경우, 상기 소정의 앵커링 조건이 만족되면, 상기 프로세서(110)는, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 데이터베이스(200)에 등록하거나 등록하도록 지원하여 상기 인증 정보에 대한 파기를 수행할 수 있다.
반면, 상기 public key가 미등록 상태이거나 머클 트리(merkle tree)의 적어도 두 개의 리프 노드에 할당되어 등록된 상태인 경우, 통신부(120)는, 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다. public key가 머클 트리(merkle tree)의 적어도 두 개의 리프 노드에 할당되어 등록된 경우에는 인증 정보에 대해 등록과 파기가 모두 이루어져 인증 정보가 현재 파기 상태이기 때문이다. 에러 메시지는 은행 서버(400)를 거쳐 사용자 단말(500)로 전달될 수 있다.
이하에서는 상술한 인증 정보를 사용하여 로그인을 지원할 수 있는 인증 지원 장치(100)의 구성 및 동작을 설명한다. 이하에서 설명하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다.
기존에 인증 지원 서버(100)가 제1 특정 해쉬값 및 상기 제1 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값을 소정의 데이터 구조로서 데이터베이스(200)에 등록하고 있는 상태에서, 통신부(120)는, 인증 정보 사용 요청으로서 (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득할 수 있다. 여기서, 제1 특정 해쉬값, 제1 대표 해쉬값은 전술한 특정 해쉬값, 대표 해쉬값에 대응된다.
한편, 상기 특정 사용자의 public key가 은행 서버(400)에 전달되고, 상기 특정 사용자가 인증되어 상기 은행 서버(400)로부터 특정 사용자 정보의 해쉬값인 Uhash가 상기 생체 인증 서버(300)에 전송되면, 상기 생체 인증 서버(300)로부터 (i) 상기 public key 및 (ii) 상기 Uhash 또는 상기 Uhash를 가공한 값이 상기 인증 지원 서버(100)로 전송될 수 있다. 이에 대해서는 전술한 실시 예에서 설명하였으므로 중복 설명은 생략한다.
프로세서(110)는, 상기 (1) 및 (2)에 대한 해쉬값인 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값은 상기 소정의 데이터 구조를 참조로 하여 결정됨 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 (i) 상기 생체 인증 서버(300)가 random nonce를 생성하거나 생성하도록 지원하고, (ii) 상기 특정 사용자에 대한 로그인 행위로서 상기 특정 사용자의 생체 정보가 획득되면, 상기 random nonce를 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증하거나 검증하도록 지원하며, (iii) 상기 검증 결과에 대한 메시지를 전송하거나 전송하도록 지원할 수 있다.
상기 (ii)에서, 상기 random nonce에 대해 사용자 단말(500)에 의해 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명이 이루어져 은행 서버(400)를 거쳐 상기 생체 인증 서버(300)로 전달될 수 있다.
또한, 상기 (iii)에서 상기 검증 결과가 거짓이면, 상기 프로세서(110)는, 상기 특정 사용자가 입력한 생체 정보가 맞지 않아 로그인을 불허함을 나타내는 메시지를 전송하도록 지원할 수 있다.
제2 특정 해쉬값에 대해서는 전술한 제1 특정 해쉬값에 대한 설명이 동일하게 적용될 수 있다. 즉, 제2 특정 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 이에 대해서는 전술하였으므로 설명을 생략한다.
한편, 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되지 않거나 로컬 데이터베이스에 저장된 상기 (1) 및 (2)에 대한 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면, 상기 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다. 예를 들어, 상기 인증 정보가 파기 상태인 경우, 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다.
또한, 상기 (1) 및 (2)가 머클 트리(merkle tree)의 적어도 두 개의 리프 노드에 할당된 경우, 통신부(120)는, 이를 상기 인증 정보가 파기된 것으로 판단하여 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다.
프로세서(110)는, 인증 정보 사용 요청이 획득되면, 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스(200)로부터 OP 메시지를 획득하거나 획득하도록 지원할 수 있다. 또한, 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 상기 (i) 내지 (iii)을 수행할 수 있다.
한편, 상기 제2 대표 해쉬값은, 상기 제2 특정 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되는지 확인하는 과정에서 프로세서(110)는 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있는데, 여기에는 전술한 인증 정보 등록 과정에서 생성된 머클 트리가 이용될 수 있다. 즉, 프로세서(110)는 (y1) (i) 상기 제2 특정 해쉬값과 (ii) 기존에 생성된 머클 트리에서 상기 제2 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 새로운 머클 트리에서 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. 또한, (y2) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고, (y3) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 특정 해쉬값으로 하여 상기 (y1) 내지 (y3)를 반복하여 수행할 수 있다.
프로세서(110)는, 최종적으로 생성된 머클 트리의 루트값 또는 이를 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 검증된 것으로 판단하거나 판단하도록 지원할 수 있다.
이처럼 본 발명은 인증 정보 등록 단계에서 nm(=N)개의 리프 노드를 가지는 머클 트리가 생성이 되면, 인증 정보 사용 단계에서 머클 트리의 높이(lognN=m)만큼의 연산만을 수행함으로써 빠르게 사용자 검증을 수행하여 인증 정보를 사용할 수 있다.
이하에서는 상술한 인증 정보를 사용하여 거래를 지원할 수 있는 인증 지원 장치(100)의 구성 및 동작을 설명한다. 이하에서 설명하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다. 참고로, 하기의 실시 예에서 제1 특정 해쉬값, 제2 특정 해쉬값, 제1 대표 해쉬값, 제2 대표 해쉬값이라는 용어를 전술한 실시 예와 혼용하였으나, 각 실시 예별로 구별되는 것임을 밝혀둔다.
통신부(120)는, 기존에 상기 인증 지원 서버(100)가 제1 특정 해쉬값 및 상기 제1 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값을 소정의 데이터 구조로서 데이터베이스에 등록하고 있는 상태에서, 인증 정보 사용 요청으로서 (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득할 수 있다. 여기서, 제1 특정 해쉬값, 제1 대표 해쉬값은 전술한 특정 해쉬값, 대표 해쉬값에 대응된다.
한편, 상기 특정 사용자의 public key가 은행 서버(400)에 전달되고, 상기 특정 사용자가 인증되어 상기 은행 서버(400)로부터 특정 사용자 정보의 해쉬값인 Uhash가 상기 생체 인증 서버(300)에 전송되면, 상기 생체 인증 서버(300)로부터 (i) 상기 public key 및 (ii) 상기 Uhash 또는 상기 Uhash를 가공한 값이 상기 인증 지원 서버(100)로 전송될 수 있다. 이에 대해서는 전술한 실시 예에서 설명하였으므로 중복 설명은 생략한다.
프로세서(110)는, 상기 (1) 및 (2)에 대한 해쉬값인 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값은 상기 소정의 데이터 구조를 참조로 하여 결정됨 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 (i) 상기 생체 인증 서버(300)가, 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증하거나 검증하도록 지원하며, (ii) 상기 검증 결과에 대한 메시지를 전송하거나 전송하도록 지원할 수 있다.
상기 (i)에서, 상기 거래 정보의 해쉬값 또는 이를 가공한 값은 은행 서버(400)에 의해 생성되고, 상기 거래 정보의 해쉬값 또는 이를 가공한 값이 사용자 단말(500)에 전달되어 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명이 이루어져 상기 은행 서버(400)를 거쳐 상기 생체 인증 서버(300)로 전달될 수 있다.
상기 (ii)에서, 상기 검증 결과가 거짓이면, 상기 프로세서(110)는, 상기 특정 사용자가 입력한 생체 정보가 맞지 않아 거래를 불허함을 나타내는 메시지를 전송하도록 지원할 수 있다. 상기 메시지는 사용자 단말(500), 은행 서버(400), 생체 인증 서버(300) 중 적어도 하나에 전송될 수 있다. 물론, 사용자 단말(500)로 직접 전송될 수도 있다.
제2 특정 해쉬값에 대해서는 전술한 제1 특정 해쉬값에 대한 설명이 동일하게 적용될 수 있다. 즉, 제2 특정 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 이에 대해서는 전술하였으므로 설명을 생략한다.
한편, (i) 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되지 않거나, (ii) 로컬 데이터베이스에 저장된 상기 (1) 및 (2)에 대한 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면, 상기 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다. 예를 들어, 상기 인증 정보가 파기 상태인 경우, 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다.
또한, 상기 (1) 및 (2)가 머클 트리(merkle tree)의 적어도 두 개의 리프 노드에 할당된 경우, 상기 프로세서(110)는, 이를 상기 인증 정보가 파기된 것으로 판단하여 상기 생체 인증 서버(300)에 에러 메시지를 전송하도록 지원할 수 있다.
프로세서(110)는, 인증 정보 사용 요청이 획득되면, 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스(200)로부터 OP 메시지를 획득하거나 획득하도록 지원할 수 있다. 또한, 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 상기 (i) 내지 (ii)을 수행할 수 있다.
한편, 상기 제2 대표 해쉬값은, 상기 제2 특정 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되는지 확인하는 과정에서 프로세서(110)는 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있는데, 여기에는 전술한 인증 정보 등록 과정에서 생성된 머클 트리가 이용될 수 있다. 즉, 프로세서(110)는 (z1) (i) 상기 제2 특정 해쉬값과 (ii) 기존에 생성된 머클 트리에서 상기 제2 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 새로운 머클 트리에서 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. 또한, (z2) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고, (z3) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 특정 해쉬값으로 하여 상기 (z1) 내지 (z3)를 반복하여 수행할 수 있다.
프로세서(110)는, 최종적으로 생성된 머클 트리의 루트값 또는 이를 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 검증된 것으로 판단하거나 판단하도록 지원할 수 있다.
이처럼 본 발명은 인증 정보 등록 단계에서 nm(=N)개의 리프 노드를 가지는 머클 트리가 생성이 되면, 인증 정보 사용 단계에서 머클 트리의 높이(lognN=m)만큼의 연산만을 수행함으로써 빠르게 사용자 검증을 수행하여 인증 정보를 사용할 수 있다.
한편, 상기 프로세서(110)는, 상기 검증 결과가 참이고, 소정의 앵커링 조건이 만족되면, 제3 특정 해쉬값 - 상기 제3 특정 해쉬값은, 상기 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 private key로 서명한 값에 대한 해쉬값임 - 및 상기 제3 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값을 상기 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다. 이는 거래시 부인 방지를 위해 거래 정보를 데이터베이스(200)에 기록하기 위함이다.
이 경우, 상기 통신부(120)는, 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하고, 상기 획득된 transaction ID를 상기 생체 인증 서버(300)로 전송할 수 있다.
지금까지 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예를 설명하였으며, 상기 설명은 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예에도 동일하게 적용될 수 있다. 이하, 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예와 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예의 일부 차이점을 설명하도록 하겠으며, 기본적인 설명은 도면은 앞서의 설명과 동일하므로 생략하도록 한다.
로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예와 앞서 설명한 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예의 일부 차이점은 프로세서(110)와 통신부(120)이다.
프로세서(110)는, 상기 검증 결과가 참이고, 소정의 앵커링 조건이 만족되면, 제3 특정 해쉬값 - 상기 제3 특정 해쉬값은, 상기 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 private key로 서명한 값에 대한 해쉬값임 - 및 상기 제3 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값을 상기 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다. 이는 거래시 부인 방지를 위해 거래 정보를 데이터베이스(200)에 기록하기 위함이다.
이 경우, 상기 통신부(120)는, 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하고, 상기 획득된 transaction ID를 상기 생체 인증 서버(300)로 전송할 수 있다.
지금까지 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예와 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예의 차이점을 설명하였다.
뿐만 아니라 본 발명은 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예로도 구현할 수 있는바, 이하, 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버에 대한 실시 예, 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예와 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버에 대한 실시 예의 차이점을 설명하도록 하겠다.
이하에서 설명하는 인증 지원 서버는 전술한 인증 지원 서버(100)와 별도의 장치로 구성될 수도 있으나, 설명의 편의를 위해 동일한 장치인 것으로 설명한다. 참고로, 하기의 실시 예에서 제1 특정 해쉬값, 제2 특정 해쉬값, 제1 대표 해쉬값, 제2 대표 해쉬값이라는 용어를 전술한 실시 예와 혼용하였으나, 각 실시 예별로 구별되는 것임을 밝혀둔다.
통신부(120)는, 기존에 상기 인증 지원 서버(100)가 제1 특정 해쉬값 및 상기 제1 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값을 소정의 데이터 구조로서 데이터베이스에 등록하고 있는 상태에서, 인증 정보 사용 요청으로서 (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값을 획득할 수 있다. 여기서, 제1 특정 해쉬값, 제1 대표 해쉬값은 전술한 특정 해쉬값, 대표 해쉬값에 대응된다.
한편, 상기 특정 사용자의 public key가 은행 서버(400)에 전달되고, 상기 특정 사용자가 인증되어 상기 은행 서버(400)로부터 특정 사용자 정보의 해쉬값인 Uhash가 상기 생체 인증 서버(300)에 전송되면, 상기 생체 인증 서버(300)로부터 (i) 상기 public key 및 (ii) 상기 Uhash 또는 상기 Uhash를 가공한 값이 상기 인증 지원 서버(100)로 전송될 수 있다. 이에 대해서는 전술한 실시 예에서 설명하였으므로 중복 설명은 생략한다.
프로세서(110)는, 상기 (1) 및 (2)에 대한 해쉬값인 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값은 상기 소정의 데이터 구조를 참조로 하여 결정됨 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 (i) 상기 생체 인증 서버(300)가, 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명한 값을 상기 특정 사용자의 public key를 이용하여 검증하거나 검증하도록 지원하며, (ii) 상기 검증 결과에 대한 메시지를 전송하거나 전송하도록 지원할 수 있다.
상기 (i)에서, 상기 거래 정보의 해쉬값 또는 이를 가공한 값은 은행 서버(400)에 의해 생성되고, 상기 거래 정보의 해쉬값 또는 이를 가공한 값이 사용자 단말(500)에 전달되어 상기 특정 사용자의 생체 정보에 대응되는 private key로 서명이 이루어져 상기 은행 서버(400)를 거쳐 상기 생체 인증 서버(300)로 전달될 수 있다.
상기 (ii)에서, 상기 검증 결과가 거짓이면, 상기 프로세서(110)는, 상기 특정 사용자가 입력한 생체 정보가 맞지 않아 거래를 불허함을 나타내는 메시지를 전송하도록 지원할 수 있다. 상기 메시지는 사용자 단말(500), 은행 서버(400), 생체 인증 서버(300) 중 적어도 하나에 전송될 수 있다. 물론, 사용자 단말(500)로 직접 전송될 수도 있다.
제2 특정 해쉬값에 대해서는 전술한 제1 특정 해쉬값에 대한 설명이 동일하게 적용될 수 있다. 즉, 제2 특정 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 이에 대해서는 전술하였으므로 설명을 생략한다.
한편, (i) 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스(200)에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되지 않거나, (ii) 로컬 데이터베이스에 저장된 상기 (1) 및 (2)에 대한 인증 정보의 상태 정보를 참조한 결과 상기 인증 정보가 소정의 상태인 것으로 판단되면, 상기 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다. 예를 들어, 상기 인증 정보가 파기 상태인 경우, 통신부(120)는 상기 생체 인증 서버(300)에 에러 메시지를 전송할 수 있다.
또한, 상기 (1) 및 (2)가 머클 트리(merkle tree)의 적어도 두 개의 리프 노드에 할당된 경우, 상기 프로세서(110)는, 이를 상기 인증 정보가 파기된 것으로 판단하여 상기 생체 인증 서버(300)에 에러 메시지를 전송하도록 지원할 수 있다.
프로세서(110)는, 인증 정보 사용 요청이 획득되면, 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스(200)로부터 OP 메시지를 획득하거나 획득하도록 지원할 수 있다. 또한, 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 특정 사용자의 public key를 상기 생체 인증 서버(300)에 전송하거나 상기 생체 인증 서버(300)가 관리하고 있는 상기 특정 사용자의 public key를 사용하도록 하여 상기 (i) 내지 (ii)을 수행할 수 있다.
한편, 상기 제2 대표 해쉬값은, 상기 제2 특정 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 제2 특정 해쉬값 및 상기 제2 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되는지 확인하는 과정에서 프로세서(110)는 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있는데, 여기에는 전술한 인증 정보 등록 과정에서 생성된 머클 트리가 이용될 수 있다. 즉, 프로세서(110)는 (z1) (i) 상기 제2 특정 해쉬값과 (ii) 기존에 생성된 머클 트리에서 상기 제2 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 새로운 머클 트리에서 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. 또한, (z2) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고, (z3) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 특정 해쉬값으로 하여 상기 (z1) 내지 (z3)를 반복하여 수행할 수 있다.
프로세서(110)는, 최종적으로 생성된 머클 트리의 루트값 또는 이를 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, (1) 특정 사용자의 public key 및 (2) 상기 특정 사용자 정보의 해쉬값 또는 이를 가공한 값이 검증된 것으로 판단하거나 판단하도록 지원할 수 있다.
이처럼 본 발명은 인증 정보 등록 단계에서 nm(=N)개의 리프 노드를 가지는 머클 트리가 생성이 되면, 인증 정보 사용 단계에서 머클 트리의 높이(lognN=m)만큼의 연산만을 수행함으로써 빠르게 사용자 검증을 수행하여 인증 정보를 사용할 수 있다.
한편, 상기 프로세서(110)는, 상기 검증 결과가 참이고, 소정의 앵커링 조건이 만족되면, 제3 특정 해쉬값 - 상기 제3 특정 해쉬값은, 상기 거래 정보의 해쉬값 또는 이를 가공한 값을 상기 private key로 서명한 값에 대한 해쉬값임 - 및 상기 제3 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값을 상기 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다. 이는 거래시 부인 방지를 위해 거래 정보를 데이터베이스(200)에 기록하기 위함이다.
이 경우, 상기 통신부(120)는, 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하고, 상기 획득된 transaction ID를 상기 생체 인증 서버(300)로 전송할 수 있다.
이하, 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법에 대한 설명을 하기에 앞서, 하드웨어 보안 모듈 및 이를 이용한 하드웨어 보안 시스템에 대한 실시 예를 먼저 설명하도록 한다.
본 발명에 따른 생체정보 하드웨어 보안 모듈(700)은 보안키 생성부(10), 보안키 저장부(20), 암/복호화 엔진부(30), 메모리(40), 및 프로세서(50)를 포함할 수 있다.
상기 보안키 생성부(10)는 상기 프로세서(50)로부터 암호화를 요청하는 신호를 입력받아 보안키를 생성한다. 상기 보안키는 난수발생기(RNG)를 통하여 생성되며 다수의 보안키가 생성될 수 있다. 보안키는 다양한 방식으로 생성 가능하다. 예를 들어, 소인수분해 암호 방식 시스템이나 타원곡선 암호 시스템에 의해 보안키 생성이 가능하다. 타원 곡선 암호 시스템에 의하면, 보안키 생성부(10)는 타원 곡선 방정식인 y2= x2 + ax + b를 만족하며 (여기서, a 및 b는 실수임), 특정한 방정식을 더 만족하는 (x, y) 로 이루어지는 실수체 군을 산출한다. 여기서, 특정한 방정식은 예를 들어, 덧셈 방정식, 항등원 방정식 및 결합 방정식일 수 있다. 타원 곡선에서, 두 점 A 및 B의 덧셈 정의는 A 및 B를 잇는 선을 그으면 타원 곡선 위의 다른 점 R과 만나게 되고, R에 X축 대칭인 점이 C일 때에 A + B = C로 정의할 수 있다. 항등원 공식은 실수체 군 내의 임의의 원소 D에 대해서 D + G = G + D = D를 만족하는 G가 존재하는 것을 의미할 수 있다. 결합 방정식은 실수체 군 내에서 A + (B + C) = (A + B) + C가 만족하는 것을 의미할 수 있다. 이후에, 키 생성부(10) 는 위와 같은 실수체 군에 속하는 P 및 Q에 관해서 P = f(Q)를 만족하게 하는 알고리즘에 의해 보안키를 생성할 수 있다. 생성할 수 있다. 한편, 타원 곡선 암호 시스템은 소인수 분해 암호 시스템에 비해 생성되는 키의 길이가 짧기 때문에 키 생성 시간을 현저하게 줄일 수 있다는 장점이 있다. 예를 들어, HSM에서 대표적인 소인수 분해 암호 시스템인 RSA 2048을 이용하여 2048 비트의 키를 생성할 때에 약 10 내지 20초의 시간이 소요되지만, HSM에서 타원 곡선 암호 시스템을 이용하여 키를 생성할 때에 1초 미만의 시간이 소요된다. 실제로, RSA 2048에 의해 생성된 2048 비트의 암호는 타원 곡선 암호 시스템에 의해 생성된 224 비트의 암호와 동등한 보안 수준을 가지기 때문에, 타원 곡선 암호 시스템을 이용하여 키를 생성하는 경우, 소인수 분해 암호 시스템을 이용하여 키를 생성하는 경우와 비교하여, 보안 수준을 동등하게 유지하면서, 전자 서명을 수행하려는 사용자의 편의성를 현저하게 향상시킬 수 있다.
상기 보안키 저장부(20)는 상기 보안키 생성부에 의해 생성된 보안키를 저장한다. 다수의 보안키에 번호를 할당하여 저장할 수 있다. 즉, 보안키 저장부는 보안키에 번호를 할당하여 저장하는 보안키 데이터베이스라고 할 수 있다.
상기 암/복호화 엔진부(30)는 상기 프로세서(50)로부터 암호화 요청 신호가 입력되면 보안키 저장부(20)에 저장된 다수의 보안키 중 어느 하나를 전달받아 보안키에 따라 생체정보를 암호화 한다. 반대로 복호화 요청이 있으면 보안키 저장부에 저장된 보안키에 따라 암호화된 데이터를 복호화한다. 상기 암/복호화 엔진부(30)는 암호화를 수행하는 암호화부, 복호화를 수행하는 복호화부, 및 암호화 또는 복호화된 데이터를 출력하는 데이터 출력부로 구성될 수 있다. 상기 데이터 출력부는 암호화 또는 복호화된 데이터를 메모리(40)로 출력한다. 상기 암/복호화 엔진부(30)는 SEED, ARIA, RSA, DES, MD5, DSS, SHA 등과 같은 다양한 암/복호화 엔진이 사용될 수 있다.
상기 메모리(40)는 복호화된 데이터를 저장하기 위한 구성으로, 상기 데이터 출력부로부터 전달되는 암호화 또는 복호화된 데이터를 저장한다. 상기 메모리는 램(Random Access Memory, RAM), SRAM(Static Random Access Memory)와 같은 휘발성 메모리가 사용될 수 있다.
상기 프로세서(50)는 하드웨어 보안 모듈(700)의 전체 동작 및 기능을 제어하는 부분으로 외부 장치로부터 전달되는 각종 정보, 메시지, 데이터 등을 처리한다.
상기와 같은 구성에 의해 하드웨어 보안 모듈(700)은 데이터 인터페이스를 하나 이상 사용하고 암호화 또는 복호화를 선택하면 보안 키의 DB번호를 지정하게 된다. 지정된 DB에 저장된 보안키를 암/복호화 모듈로 전송하고 암호화 또는 복호화의 용도에 맞게 데이터를 암복호화할 수 있다.
하드웨어 보안 모듈(700)의 동작 프로세스에 따르면, 먼저 절차가 시작되면 입력되는 프로토콜을 확인하여 암호화, 복호화, 일반 통신 중 어떤 절차인지를 확인하고, 해당 프로토콜에 따른 절차를 수행한다.
예를 들어, 암호화 프로토콜인 경우, 암호화 엔진을 확인하고, 지정된 보안키를 확인하여 평문 데이터를 요청하고, 데이터를 암호화한 후 암호화된 데이터를 전송하고 다음 프로세스를 대기한다.
다음으로, 일반 통신인 경우에는 프로토콜을 확인하여 그에 대응하는 보안키 생성이 가능한지를 확인한다. 보안키 생성이 가능하면 보안키 생성부(10)는 난수 발생에 의해 보안키를 생성하고 보안키 저장부(20)에 저장한다. 보안키 저장이 완료되면 저장완료 리턴 메시지를 생성/전송하고 다음 프로세스를 대기한다.
다음으로, 프로토콜이 복호화인 경우, 보안키 저장부(20)에 저장된 보안키를 확인하여 암호화된 데이터를 요청한다. 암호화된 데이터가 수신되면 보안키를 이용하여 암호화된 데이터를 복호화하고, 복호화된 데이터를 전송한 후 다음 프로세스를 대기한다.
지금까지 하드웨어 보안 모듈(700)의 기본적인 구성 및 동작 프로세스를 살펴보았다. 이하에서는 하드웨어 보안 모듈(700)을 적용한 보안 시스템에 대해 살펴보도록 한다.
이하에서 언급되는 하드웨어 보안 모듈(700)을 적용한 보안 시스템의 기본적인 구성은 상기 설명한 하드웨어 보안 모듈(700)을 포함하고, 시스템의 특징에 따라 일부 인터페이스가 또는 구성이 추가될 수 있다.
이하에서 살펴보는 보안 시스템은 모바일 단말기, 노트북, 자동차의 ECU 다양한 시스템을 포함한다.
본 실시 예에 따른 시스템은 호스트 프로세서(600), 하드웨어 보안 모듈(700) 및 생체 정보 인식부(800)를 포함하여 구성될 수 있다.
상기 호스트 프로세서(600)는 시스템의 주요 프로세스로 시스템 동작에 필요한 각종 동작 및 기능을 제어하며 하드웨어 보안 모듈(700)에 암호화 방식을 지정하여 전송할 수 있다. 또한, 필요에 따라 하드웨어 보안 모듈(700)에 복호화를 요청한다.
상기 하드웨어 보안 모듈(700)은 생체 정보 인식부(800)로부터 생체정보를 전달받아 상기 호스트 프로세서(600)가 지정한 방호화 방식에 따라 생체정보를 암호화 또는 복호화를 수행한다.
상기 하드웨어 보다 구체적으로 살펴보면, 상기 하드웨어 보안 모듈(700)은 기능선택 인터페이스(710), 제1 내지 제3 통신 인터페이스(720, 730, 740), 보안키 저장부(750), 암/복호화 엔진부(760), 메모리(770) 및 프로세서(780)를 포함할 수 있다.
상기 기능선택 인터페이스(210)는 호스트 프로세서(600)로부터 기능 수행에 대한 정보를 전달받는다. 앞서 살펴본 바와 같이 호스트 프로세서(600)는 하드웨어 보안 모듈(700)로 암호화를 요청하거나 복호화를 요청한다. 기능선택 인터페이스(710)는 이러한 신호를 입력받아 암호화 또는 복호화를 수행하도록 한다.
상기 제1 통신 인터페이스(720)는 상기 호스트 프로세서와 데이터를 주고받는 인터페이스로 USB, UART, SPI, I2C 등의 다양한 인터페이스가 사용될 수 있다.
상기 제2 통신 인터페이스(720)는 상기 생체 정보 인식부(800)와 데이터를 주고 받는 인터페이스로 USB, UART, SPI, I2C 등의 다양한 인터페이스가 사용될 수 있다. 즉, 제2 통신 인터페이스(730)을 통해 생체 정보 인식부(800)로부터 생체정보를 로우 데이터(Raw data) 형식으로 전달받는다.
그리고 제3 통신 인터페이스(740)로는 무선 인터페이스가 사용될 수 있다. 예를 들어, 제3 통신 인터페이스(740)는 무선 인터넷 모듈 및 근거리 통신 모듈을 포함할 수 있다.
상기 무선 인터넷 모듈은 무선 인터넷 접속을 위한 모듈을 말하는 것으로, 무선 인터넷 기술들에 따른 통신망에서 무선 신호를 송수신하도록 이루어진다. 무선 인터넷 기술로는, 예를 들어 WLAN(Wireless LAN), Wi-Fi(Wireless-Fidelity), Wi-Fi(Wireless Fidelity) Direct, DLNA(Digital Living Network Alliance), WiBro(Wireless Broadband), WiMAX(World Interoperability for Microwave Access), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 등이 있으며, 상기 무선 인터넷 모듈은 상기에서 나열되지 않은 인터넷 기술까지 포함한 범위에서 적어도 하나의 무선 인터넷 기술에 따라 데이터를 송수신하게 된다. WiBro, HSDPA, HSUPA, GSM, CDMA, WCDMA, LTE, LTE-A 등에 의한 무선인터넷 접속은 이동통신망을 통해 이루어진다는 관점에서 본다면, 상기 이동통신망을 통해 무선인터넷 접속을 수행하는 상기 무선 인터넷 모듈은 상기 이동통신 모듈의 일종으로 이해될 수도 있다.
상기 근거리 통신 모듈은 근거리 통신(Short range communication)을 위한 것으로서, 블루투스(Bluetooth), RFID(Radio Frequency Identification), 적외선 통신(Infrared Data Association; IrDA), UWB(Ultra Wideband), ZigBee, NFC(Near Field Communication), Wi-Fi(Wireless-Fidelity), Wi-Fi Direct, Wireless USB(Wireless Universal Serial Bus) 기술 중 적어도 하나를 이용하여, 근거리 통신을 지원할 수 있다. 상기 근거리 무선 통신망은 근거리 무선 사용자 통신망(Wireless Personal Area Networks)일 수 있다.
상기 보안키 저장부(750)는 앞서 살펴본 바와 같이 보안키에 지정번호를 할당하여 저장한다.
상기 암복호화 엔진부(760)는 호스트 프로세서로부터 암호화 또는 복호화에 대한 요청이 있으면 보안키 저장부의 지정된 보안키를 사용하여 암호화 또는 복호화를 수행한다.
상기 보안키 저장부, 암복호화 엔진부, 메모리 및 프로세서와 같은 기본 구성은 상기 살펴본 하드웨어 보안 모듈(700)의 구성과 동일하므로 이들에 대한 자세한 설명은 생략하기로 한다.
상기 생체 정보 인식부(800)는 생체정보를 획득하고 인식하기 위한 구성으로 생체정보를 획득하기 위한 다양한 구성이 사용될 수 있다. 생체 정보 인식부(800)는 다양한 생체정보를 인식하여 상기 하드웨어 보안 모듈(700)로 전송한다. 상기 생체정보는 생체의 신체 특성(body attribute) 또는 행위 특성(action attribute)을 나타내는 정보이다. 예를 들어 생체정보는 사람얼굴(facial image), 지문(finger print), 장문(friction ridge), 혈관(blood vessel), 홍채(iris), 시망막(retina), 심전도(ECG, electrocardiogram), 뇌전도(EEG, electroencephalogram), 맥박(pulse), 혈압(blood pressure), 가슴 소리(heart sound), 가슴 또는 복부운동, 인체의 전도성(conductivity of human body) 등의 다양한 정보를 포함한다.
또한 생체 정보 인식부(800)는 생체신호는 전기신호, 소리신호, 힘 신호(force signal), 전자기신호, 이미지/동영상 신호, 광신호 등 여러 종류의 형태로 수집될 수 있다. 또한, 생체신호를 수집하기 사용되는 센서는 여러 종류의 센서가 사용될 수 있다.
예를 들어, 컬러이미지 센서는 사람얼굴 이미지, 지문 이미지, 장문 이미지, 시망막 이미지 등을 수집하기 위해 사용될 수 있다. 다른 예를 들어, 적외선 이미지 센서는 혈관 이미지 등 적외선 광원에 민감한 생체특징의 이미지를 수집하기 위해 사용될 수 있다. 또 다른 예를 들어, 진동 센서(vibration sensor)는 가슴 또는 복부운동 신호 등 진동 특성(vibration attribute)을 갖고 있는 신호를 수집하기 위해 사용될 수 있다. 이 외에도, 예를 들면, 압력 센서는 혈압신호, 및 가슴 또는 복부운동 신호 등 압력과 연관된 생체신호를 수집하기 위해 사용될 수 있다. 여러 종류의 생체신호는 여러 개의 서로 다른 센서로부터 동시에 각각 수집되거나 또는 여러 종류의 생체신호를 수집할 수 있는 하나로 통합된 센서를 통해 동시에 수집될 수 있다. 예를 들면, 컬러이미지 센서와 광전 센서(photoelectric sensor)가 각각 동시에 사람얼굴 이미지와 PPG신호를 수집할 수 있거나, 컬러 이미지 센서와 광전 센서의 기능을 가지도록 통합된 센서가 동시에 사람얼굴 이미지와 PPG신호를 수집할 수 있다.
일 실시 예에 따르면, 시간변화에 따라 연속되는 생체신호 또는 시간상 연관성을 갖는 생체특징의 여러 개의 분산 데이터 포인트(distributed data point)를 획득하기 위해, 각종 생체신호의 수집은 미리 정한 시간(예를 들면, 1분내 심전도 신호 파형 수집, 또는 10초간 여러 개의 사람얼굴 이미지를 수집 등) 동안 지속될 수 있다.
수집된 생체신호는 신호전환회로를 통하여 하기와 같은 처리를 한 후 프로세서로 전송될 수 있다. 일 실시 예에 따른 생물 인증 장치는 연속된 아날로그 신호(예를 들면, 심전도 신호, PPG신호 등)를 디지털 신호로 변환하고, 신호에 포함된 잡음을 처리하며(예를 들면, 수집된 홍채 이미지에 대하여 눈꺼풀, 눈썹 등 이미지 잡음을 제거), 신호의 강도, 분포, 변화 등을 처리할 수 있다.
상기와 같은 구성에 위해 생체정보 인식부에서 취득한 생체정보는 하드웨어 보안 모듈(700)로 전송되고, 하드웨어 보안 모듈(700)은 호스트 프로세서의 요청에 따라 생체정보를 로오 데이터를 암호화하거나, 암호화된 데이터를 복호화하여 데이터의 무결성과 사용자 인증으로 사용할 수 있다.
이때 호스트 프로세서(600)에 전달되는 데이터는 호스트 프로세서(600)의 휘발성 메모리에 저장되어야 한다. 즉, 호스트 프로세서(600)는 데이터 처리 후 생체정보의 복호화된 데이터는 존재하지 않는다. 따라서 복호화된 데이터가 유출될 염려도 없고 보안성을 강화할 수 있다.
하드웨어 보안 모듈(700)을 적용한 보안 시스템은 제1 호스트 프로세서(610), 제2 호스트 프로세서(120), 생체 정보 인식부(800) 및 하드웨어 보안 모듈(900)을 포함한다.
앞서 설명과 비교하면, 호스트 프로세서가 2개 사용되는 것을 확인할 수 있다. 따라서 하드웨어 보안 모듈(900)은 제1 호스트 프로세서(610)로부터 기능 선택 데이터를 입력 받는 제1 기능선택 인터페이스(910)와 제2 호스트 프로세서(620)로부터 기능 선택 데이터를 입력 받는 제2 기능선택 인터페이스(920)를 포함한다.
그리고 생체 정보 인식부(800)는 제1 호스트 프로세서(610)를 통해 전달될 수 있다.
다른 구성, 제1, 2통신 인터페이스, 보안키 저장부, 암복호화 엔진부, 메모리, 프로세서는 상기 살펴본 구성과 동일하므로 자세한 설명은 생략한다. 본 실시 예에서 제3 통신 인터페이스는 생략되었지만, 필요에 따라 추가하여 사용할 수 있음은 물론이다.
상기 제1 호스트 프로세서(610)는 제1 통신 인터페이스(430)를 통해 하드웨어 보안 모듈(900)과 데이터를 주고 받을 수 있고, 제2 호스트 프로세서(620)는 제2 통신 인터페이스(940)를 통해 하드웨어 보안 모듈(900)과 데이터를 주고 받을 수 있다.
상기와 같은 구성에 의해, 제1 호스트 프로세서에서 생체정보를 보안 하드웨어 보안 모듈(900)로 전달되고, 하드웨어 보안 모듈(900)은 암호화 또는 복호화 한다.
제1 호스트 프로세서에서 제1 호스트 프로세서의 생체정보를 복호화하기 위해서는 제1 호스트 프로세서와 통신을 하여 암호화 또는 복호화 방식을 필요시 마다 새롭게 연결하여 사용하도록 한다. 따라서 보안성을 보다 강화할 수 있다.
하드웨어 보안 모듈(700)을 적용한 보안 시스템은 호스트 프로세서(600), 생체 정보 인식부(800) 및 하드웨어 보안 모듈(1000)을 포함할 수 있다.
상기 생체 정보 인식부(800)는 상기 실시 예에서와 마찬가지로 호스트 프로세서(600)를 통해 생체정보를 하드웨어 보안 모듈(1000)로 전달할 수 있다.
상기 하드웨어 보안 모듈(1000)은 기능선택 인터페이스(1010), 통신 인터페이스(1020), 보안키 저장부(1030), 암복호화 엔진부(1040), 메모리(1050) 및 프로세서(1060)를 포함할 수 있다.
상기와 같은 구성에 의해 호스트 프로세서(600)는 생체 정보 인식부(800)로부터 생체정보를 전송받아서 하드웨어 보안 모듈(1000)에 암호화를 요청하고, 암호화된 데이터는 호스트 프로세서(600)의 저장 공간에 저장 후 인증이 필요한 상황에서는 하드웨어 보안 모듈(1000)에 복호화를 요청하여 사용한다. 이때 휘발서 메모리에 데이터를 저장하여 데이터를 비교한 후 삭제하는 방식이 사용되기 때문에 데이터가 유출될 우려가 없다.
상기 설명한 하드웨어 보안 모듈(700, 900, 1000) 및 시스템은 자동차의 엔진 ECU, 에어백 액츄에이터, 센트럴 게이트웨이 등 자동차의 여러 부분에 적용될 수 있다. 즉, 자동차 각각의 처리 장치에 중간 데이터 가공 처리자 형태로 하드웨어 모안 모듈이 사용될 수 있다.
각각의 장치 별로 암호화 데이터를 전송하면, 하드웨어 보안 모듈(700, 900, 1000)은 중간에서 암호화 또는 복호화를 진행한다.
따라서 다수의 장치 중 어느 하나가 해킹되더라도 다른 장치는 해킹으로부터 안전하다. 예를 들어, 종래의 경우, 보안을 강화하기 위해 하드웨어 보안 모듈(700, 900, 1000)을 적용한다고 하더라도 ECU 가 해킹되면 자동차 전체가 해커에서 장악되지만, 본 발명에 의하면 개별 장치들에 하드웨어 보안 모듈(700, 900, 1000)이 적용되고 이들은 각자 독립적으로 동작하기 때문에 ECU가 해킹되더라도 다른 장치들은 해킹으로부터 안전하다. 따라서 보안성을 보다 강화할 수 있다.
지금까지 하드웨어 보안 모듈 및 이를 이용한 하드웨어 보안 시스템에 대한 실시 예를 설명하였다. 이하, 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법에 대한 실시 예를 설명하도록 한다.
도 1은 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치(2000)의 전체 구성을 나타낸 도면이다.
블록체인 시스템을 위한 생체 정보 기반의 인증 장치(2000)는 보안 모듈(2100)을 포함하며, 보안 모듈(2100)은 제어부(2110) 및 키 관리부(2120)을 포함한다.
생체 정보 기반의 인증 장치(2000)는 S/W방식의 한계 점인 암복호화용 KEY 생성 및 파기에 최적화된 보안 모듈(2100)을 탑재하고, RNG(Random Number Generator)를 사용하여, 개인키(Private Key)를 생성한 뒤, 공개키(Public Key)를 10개를 생성할 수 있도록 구성되어 있으며, 상위(Upper Layer) 장치의 분산인증 장치의 공개키를 저장할 수 있는 공간과 하위(Down Layer) 장치의 공개키를 저장 할 수 있는 공간을 가지는 키 관리부(2120, KMS, Key Management System)를 포함하며, 암복호화 엔진을 내장하여 AES, SEED, ARIA, RSA, Etc. 등의 알고리즘 엔진으로 구성된 제어부(2110)를 포함한다.
데이터 인터페이스를 통한 프로토콜은 Secure Protocol Engine을 통하여, 사용되는 암복호화용 엔진 정보, 공개키 위치정보, 장치정보, Etc등의 정보를 분석하는 Engine으로 통신용 데이터를 패딩 또는 파싱을 할 수 있도록 구성되어 있어서, 저사양 MPU에서도 블록체인 기능을 수행할 수 있도록 특성화 된 엔진으로 구성된다.
통신 인터페이스인 USB, Ethernet(유선), WiFi, BT, NFC, etc등으로 구성되어 있으며, 통신 데이터를 구간 암호화 하기 위해서는 Secure Protocol Engine과 더불어 Secure Block Chain Module의 Data Security Controller를 연계하여, 통신 프로토콜 설정을 진행한 뒤에 확정된 프로토콜 기반으로 양자간의 데이터 교환을 진행한다. 이후부터는 Secure Protocol Engine에서 파싱된 데이터 기반으로 외부의 요청 및 인증 기능을 진행 한다.
보안 모듈(2100)은 하드웨어 보안 인증 블록체인 Chip과 연동하는 생체 정보 인식 센서이며, 센서를 통하여 인식된 정보를 판독하여서, 장치 사용에 대한 권한 인증을 기본 기능으로 구성하며, 네트워크 상에서 연동되는 시스템과도 개인 식별 인증 기능을 수행할 수 있도록 기능을 내장 하고 있다.
도 2는 키 관리부(2120)가 보유하고 있는 키의 구조를 나타낸 도면이다.
키 관리부(2120)의 KMS Engine Key의 구조는 각 위치를 확인할 수 있는 번지 값으로 확인을 할 수 있도록 설계되어 있으며, 공개키는 통신을 이용한 저장 및 전송이 가능하도록 구성되어 있고, 사전에 인증된 상태에서만 공개키 저장과 전송이 가능하도록 구현 한다. 또한, 장치의 개인키는 암복호의 기능별 KEY가 존재 할 수 있고, 공개키는 개인키 기반으로 생성된다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치에 있어서, 장치 연결 방식을 나타낸 도면이다.
장치간의 데이터 인증 절차를 진행하기 위한 공개키 분배 형태를 물리적인 저장 공간에 저장하고 장치의 고유 ID를 KMS의 공개키의 저장된 DB ID와 매칭하여서, 인증 요청을 하는 경우에 저장된KEY를 이용하여, 송신을 하고, 장치의 공유 개인키 정보를 통한 정보 인증을 수행하는 구조이다.
이하, 본 발명의 일 실시 예에 따른 블록체인 시스템을 위한 생체 정보 기반의 인증 장치(2000)를 활용한 거래의 실시 예에 대하여 설명하도록 한다.
도 4는 생체 정보 기반의 인증 장치(2000)를 활용한 거래에 있어서, 거래 당사자와 이들 사이에 송수신되는 정보의 내용을 표시한 도면이다.
거래 당사자는 블록체인의 공용 장부에 대한 발행 요청의 주체인 수요처와 공용장부의 장부 사용자의 거래를 중계하는 거래소와 직접적인 금융 서비스를 담당하는 금융기관과 관리 감독하는 정부기관이며, 거래소가 거래하는 정보를 수집해서 포털 서비스 하는 포털 사이트와 실제 공용장부의 금융 거래의 개설자 역시 거래 당사자에 포함될 수 있는바, 이는 도 5에 도시되어 있다.
수요처는 영리를 추구하는 기업, 단체 및 개인과 기관으로 구분 할 수 있다. 그 예로 스타트업 기업은 창업비용을 마련하기 위해서, 제안서와 더불어 모금하고자 하는 사업비를 정하여, 거래소에 제공하고, 공용장부 발행을 요청한다. 이때 주 거래 금용기관을 지정한다. 거래소는 금융기관에 이와 같은 공용장부 발행 요청을 전달하고, 수요처의 정보 확인을 요청한다. 또한 정부기관에도 수요처에 대한 정보를 확인하고, 관련해서 세율 및 기타에 대한 기준을 금융 및 거래소에 전달 한다. 거래소는 전달 받은 내용을 확인하고, 수요청에 공용장부 개설에 대한 정보를 전달 한다. 관련 정보는 세율 및 관리와 정보 공개에 대한 동의에 대하여 정의한다. 거래소는 등록된 공용장부를 공개하기 위한 포털 서비스에 제공하고, 사용자에게도 공개한다. 사용자는 공개된 정보와 수익성 및 기타 사항들을 확인하고, 거래소에 공용장부 참여에 대한 개설을 요청하여, 개인이 사용하는 개인인증장치(생체인증 하드웨어 블록체인 보안 인증 장치)를 이용하여 참여 요청을 하고, 금융기관에 참여비용을 위탁 또는 이체를 한다. 위탁 및 이체된 금융에 대한 사항을 금융기관은 정부기관과 거래소에 입금완료에 대한 정보를 전달하고, 수요자에게 출금 권한에 대한 사항을 전달 한다.
블록체인을 기반하는 공용장부에 대한 거래소의 정보를 포털 사이트에서는 테마 별로 수집하여서 사용자에게 정보를 제공하고, 링크 서비스 및 거래소 별 수익율과 수수료에 대한 정보를 제공하고 사용자는 포털 사이트 및 개별 개설된 거래소 사이트를 접속하여, 공개 및 거래 승인이 이루어진 장부에 참여를 하고, 투자, 후원, 성금등의 다양한 선택을 통한 거래를 거래처와 수행한다.
정부기관은 포털 사이트 및 거래소의 과장광고 및 불법 정보 유출에 대한 정보에 대한 관리 감독을 진행하고, 금융기관의 금융거래 사실 확인도 병행 한다.
이와 같이 블록체인이 가지고 있는 공용장부의 기능을 이용하여, 수요처의 요구에 부합되는 목표 금액을 모집하고, 수익 창출형 기업은 모집된 금액을 금융기관으로 제공받아서 수익 창출을 진행하고, 창출된 수익에 대한 수익금을 신고하여, 정부기관에서 책정한 세율을 기반으로 세금을 제공하고, 금융기관은 창출된 수익금을 거래소에 정보 전달하여, 사용자가 제공받은 수익에 대한 정보를 제공하며, 달성된 수익금을 사용자의 요구에 의해서 별도 이체를 하거나 보유하고 있는 장부의 참여율을 추가 확장 할 수 있다.
공용장부는 블록체인의 개념인 Peer to Peer 거래를 개인간의 거래를 거래소를 통한 추가적으로 장부의 신뢰성을 확보 할 수 있도록 하며, 금융기관과 정부기관에도 동일하게 제공되어서 투명한 거래와 신뢰성을 극대화 할 수 있도록 구성하여서, 전자거래에 대한 투명성 제공을 우선한다.
수요처는 수익 창출형의 예로는 기업, 엔터테이먼트(영화, 드라마제작, 연예인 발굴)과 같이 수익 모델을 통한 수익을 창출해서 사용자에게 재 배당하는 방법을 예로 할 수 있으며, 사용자가 위탁하고, 그대로 환원되는 방식은 정치인 선거 후원금과 같이 정부에서 인정하는 금액을 모금하고, 일정 기간 사용 후 전액 환급되는 방식도 예로 할 수 있다. 또한 수요처가 모금을 하는 경우에는 기존의 투명성이 부재된 부분을 정부기관에서 관리 감독을 할 수 있는 형태로 변환이 되기 때문에 사용자가 지원한 성금에 대한 투명한 사용에 대한공개를 진행 할 수 있는 공용장부의 기능도 예라고 할 수 있다.
포털 사이트는 거래소의 정보를 공개하고, 글로벌하게 제공하면서, 거래소와의 이익 출연에 기여하여, 거래소의 공용장부에 대한 사용자 증대를 통한 수익을 분배 받는 형태로 할 수 있다.
도 6은 상기 설명한 생체 정보 기반의 인증 장치(2000)를 활용한 거래의 블록 모델을 도시한 도면이며, 도 7은 해당 블록의 구성을 도시한 도면이다.
도 6에 따르면, 공용장부는 블록체인 형태로 사용자 수 N과 거래소, 금융기관, 정부기관, 수요처로 구성될 수 있으며, 도 7에 따르면, 공용장부에 사용되는 개별 블록에는 Header에 인증 장치의 정보 및 Hash정보를 기재하고, 생체정보인증 장치를 통한 생성된 공용키의 Hash정보를 각 Header에 제공하여, Block Body에 소유자에 정보를 각각의 체인 형태로 인증을 받아서 공용장부의 변경 여부 승인 및 거래에 대한 보안성을 보장 한다.
한편, 상기 설명한 실시 예는 블록체인 시스템을 위한 생체 정보 기반의 인증 방법으로 구현하여 동일한 기술적 특징을 모두 포함할 수 있으나, 중복 서술을 방지하기 위해 자세한 설명은 생략하도록 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 인증 지원 서버
50, 110: 프로세서
120: 통신부
200: 데이터베이스
300: 생체 인증 서버
400: 은행 서버
500: 사용자 단말
600: 호스트 프로세서
610: 제1 호스트 프로세서
620: 제2 호스트 프로세서
700, 900, 1000: 하드웨어 보안 모듈
800: 생체 인식부
2000: 생체 정보 기반의 인증 장치
2100: 보안 모듈
2110: 제어부
2120: 키 관리부

Claims (2)

  1. 암호화 또는 복호화를 요청하는 호스트 프로세서;
    상기 호스트 프로세서와 연동하는 보안 모듈; 및
    사용자의 생체 정보를 인식하고, 상기 보안 모듈과 연동하는 생체 정보 인식부;
    을 포함하되,
    상기 보안 모듈은,
    암호와(Encryption) 또는 복호화(Decryption)를 수행하기 위한 알고리즘이 내장되어 있으며, 상기 호스트 프로세서의 요청에 따라 상기 사용자에 대한 개인키(Private Key)를 생성하고, 상기 생성된 개인키를 기초로 상기 생체 정보 인식부로부터 수신한 상기 사용자에 대한 생체 정보 및 상기 알고리즘을 이용하여 상기 사용자에 대한 공개키(Public Key)를 생성하는 제어부; 및
    상기 제어부가 생성한 상기 사용자에 대한 공개키를 저장하는 키 관리부;
    를 포함하며,
    상기 제어부가 생성한 상기 사용자에 대한 공개키는,
    블록체인 시스템의 거래 당사자 모두에게 공유되어 상기 사용자가 거래 당사자인 거래 직후에 진행되는 거래의 인증에 사용되고, 상기 인증에 대한 내역이 블록에 저장되는,
    블록체인 시스템을 위한 생체 정보 기반의 인증 장치.
  2. 블록체인 시스템을 위한 생체 정보 기반의 인증 장치가 인증을 수행하는 방법에 있어서,
    암호화 또는 복호화를 수행하기 위한 알고리즘이 내장된 하드웨어 보안 모듈이 호스트 프로세서로부터 사용자에 대한 개인키 생성 요청을 수신하고, 이를 생성하는 단계;
    상기 하드웨어 보안 모듈이 상기 생성한 개인키를 기초로 생체 정보 인식부로부터 수신한 상기 사용자에 대한 생체 정보 및 상기 알고리즘을 이용하여 상기 사용자에 대한 공개키를 생성하는 단계;
    상기 하드웨어 보안 모듈이 상기 생성한 상기 사용자에 대한 공개키가 블록체인 시스템의 거래 당사자 모두에게 공유하는 단계; 및
    상기 하드웨어 보안 모듈이 상기 생성한 상기 사용자에 대한 공개키를 상기 사용자가 거래 당사자인 거래 직후에 진행되는 거래의 인증에 사용하고, 상기 인증에 대한 내역을 블록에 저장하는 단계;
    블록체인 시스템을 위한 생체 정보 기반의 인증 방법.
KR1020170162837A 2017-11-30 2017-11-30 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법 KR20190063796A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170162837A KR20190063796A (ko) 2017-11-30 2017-11-30 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170162837A KR20190063796A (ko) 2017-11-30 2017-11-30 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20190063796A true KR20190063796A (ko) 2019-06-10

Family

ID=66848103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170162837A KR20190063796A (ko) 2017-11-30 2017-11-30 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20190063796A (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110753029A (zh) * 2019-09-16 2020-02-04 中国联合网络通信集团有限公司 一种身份验证方法及生物识别平台
KR102131207B1 (ko) * 2019-10-23 2020-07-07 비씨카드(주) 바이오 정보 기반의 페이먼트 서비스 제공 방법, 이를 지원하는 방법, 이를 수행하는 디바이스 및 결제 서버
CN111460468A (zh) * 2020-02-27 2020-07-28 山东公链信息科技有限公司 一种基于容错机制的区块链加解密方法和系统
KR102325308B1 (ko) * 2020-05-22 2021-11-12 주식회사 에이텍 생체인식을 이용한 컴퓨터 전원 제어장치
CN113904850A (zh) * 2021-10-10 2022-01-07 普华云创科技(北京)有限公司 基于区块链私钥keystore安全登录方法、生成方法、系统及电子设备
KR20220021204A (ko) * 2020-08-13 2022-02-22 오장섭 생체 정보 인증 기능이 구비된 휴대용 메모리 및 이를 이용한 생체 정보 인증 방법
KR102373152B1 (ko) * 2021-09-03 2022-03-11 주식회사 씨제이와이케이 O20 렌탈 중개 서비스 방법 및 플랫폼
WO2022126967A1 (zh) * 2020-12-15 2022-06-23 平安科技(深圳)有限公司 基于区块链的数据监管方法、装置、设备及存储介质
US11722316B2 (en) 2019-12-09 2023-08-08 Samsung Electronics Co., Ltd. Cryptographic communication system and cryptographic communication method based on blockchain

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100094297A (ko) 2009-02-12 2010-08-26 조근우 개인간 금융거래 지원방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100094297A (ko) 2009-02-12 2010-08-26 조근우 개인간 금융거래 지원방법 및 시스템

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110753029A (zh) * 2019-09-16 2020-02-04 中国联合网络通信集团有限公司 一种身份验证方法及生物识别平台
CN110753029B (zh) * 2019-09-16 2021-09-14 中国联合网络通信集团有限公司 一种身份验证方法及生物识别平台
KR102131207B1 (ko) * 2019-10-23 2020-07-07 비씨카드(주) 바이오 정보 기반의 페이먼트 서비스 제공 방법, 이를 지원하는 방법, 이를 수행하는 디바이스 및 결제 서버
US11722316B2 (en) 2019-12-09 2023-08-08 Samsung Electronics Co., Ltd. Cryptographic communication system and cryptographic communication method based on blockchain
CN111460468A (zh) * 2020-02-27 2020-07-28 山东公链信息科技有限公司 一种基于容错机制的区块链加解密方法和系统
KR102325308B1 (ko) * 2020-05-22 2021-11-12 주식회사 에이텍 생체인식을 이용한 컴퓨터 전원 제어장치
KR20220021204A (ko) * 2020-08-13 2022-02-22 오장섭 생체 정보 인증 기능이 구비된 휴대용 메모리 및 이를 이용한 생체 정보 인증 방법
WO2022126967A1 (zh) * 2020-12-15 2022-06-23 平安科技(深圳)有限公司 基于区块链的数据监管方法、装置、设备及存储介质
KR102373152B1 (ko) * 2021-09-03 2022-03-11 주식회사 씨제이와이케이 O20 렌탈 중개 서비스 방법 및 플랫폼
CN113904850A (zh) * 2021-10-10 2022-01-07 普华云创科技(北京)有限公司 基于区块链私钥keystore安全登录方法、生成方法、系统及电子设备

Similar Documents

Publication Publication Date Title
KR20190063796A (ko) 블록체인 시스템을 위한 생체 정보 기반의 인증 장치 및 방법
US11394559B2 (en) Methods and systems for ownership verification using blockchain
US20210400039A1 (en) Biometric Identification And Verification Among Iot Devices And Applications
US11757862B2 (en) Cryptographically transmitting and storing identity tokens and/or activity data among spatially distributed computing devices
US10075437B1 (en) Secure authentication of a user of a device during a session with a connected server
KR101773073B1 (ko) 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버
EP1769419B1 (en) Transaction &amp; payment system securing remote authentication/validation of transactions from a transaction provider
CN110537346A (zh) 安全去中心化域名系统
US9935953B1 (en) Secure authenticating an user of a device during a session with a connected server
CN108235805A (zh) 账户统一方法、装置及存储介质
CN110235410A (zh) 使用基于utxo的协议的区块链数据库并通过基于pki的认证取代用户的登录的方法及利用其的服务器
US20220021537A1 (en) Privacy-preserving identity attribute verification using policy tokens
CN110599342B (zh) 基于区块链的身份信息的授权方法及装置
US20200092283A1 (en) Authenticating Devices Via Tokens and Verification Computing Devices
JP7090161B2 (ja) セキュアな取引のための装置の自己認証
CN113924588A (zh) 用于将电子币数据记录直接发送到另一设备的设备和支付系统
WO2018121377A1 (zh) 用于虚拟现实环境的交易方法、装置及系统
US11343074B2 (en) Block-chain based identity system
US10867326B2 (en) Reputation system and method
EP3485600B1 (en) Method for providing secure digital signatures
Srinivas et al. Lightweight security protocols for blockchain technology
CN101127063B (zh) 一种生物证书生成系统及方法
CN117769707A (zh) 用于在电子交易系统中传输令牌的方法和交易系统
US11985125B2 (en) Biometrically-enhanced verifiable credentials
US20210367938A1 (en) Biometrically-enhanced verifiable credentials