KR102329221B1 - Blockchain-based user authentication model - Google Patents
Blockchain-based user authentication model Download PDFInfo
- Publication number
- KR102329221B1 KR102329221B1 KR1020200017646A KR20200017646A KR102329221B1 KR 102329221 B1 KR102329221 B1 KR 102329221B1 KR 1020200017646 A KR1020200017646 A KR 1020200017646A KR 20200017646 A KR20200017646 A KR 20200017646A KR 102329221 B1 KR102329221 B1 KR 102329221B1
- Authority
- KR
- South Korea
- Prior art keywords
- user
- service provider
- blockchain
- personal information
- provider server
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
블록체인 기반 사용자 인증 방법이 개시된다. 이 방법은 사용자 애플리케이션이 암호화된 개인정보를 포함한 사용자 정보를 트랜잭션으로 생성하여 블록체인 네트워크로 제출하는 단계, 블록체인 네트워크가 제출된 트랜잭션을 검증한 후에 스마트 컨트랙트에 사용자 정보를 저장하는 단계, 서비스 제공자 서버가 서비스를 이용하고자 하는 사용자의 블록체인 계정에 기반하여 사용자를 인증하는 단계, 및 서비스 제공자 서버가 인증 결과 사용자가 비회원으로 확인될 경우에 사용자의 서비스 가입을 위해 스마트 컨트랙트에 저장된 암호화된 개인정보의 적어도 일부에 대해 복호화된 개인정보를 획득하는 단계를 포함한다.A blockchain-based user authentication method is disclosed. In this method, the user application generates user information including encrypted personal information as a transaction and submits it to the blockchain network, stores the user information in the smart contract after the blockchain network validates the submitted transaction, and the service provider The server authenticates the user based on the user's block chain account who wants to use the service, and when the service provider server confirms that the user is a non-member, encrypted personal information stored in the smart contract for the user's service subscription Including the step of obtaining the decrypted personal information for at least a part of.
Description
본 발명은 사용자 인증 기술에 관한 것으로, 특히 블록체인을 이용한 사용자 인증 기술에 관한 것이다.The present invention relates to a user authentication technology, and more particularly, to a user authentication technology using a block chain.
현재 다수의 서비스 제공자는 사용자 인증 및 개인정보의 관리를 위해 서버-클라이언트 구조의 중앙형(Centralized) 모델을 이용하고 있다. 사용자는 서비스를 이용하기 위해 가입과정을 통해 개인정보를 해당 서비스 제공자에 제공하며, 서비스 제공자들은 여러 방식으로 사용자의 정보를 저장 및 관리한다. 하지만 서비스 제공자의 보안성은 높지 않으며, 서비스 제공자 자체를 신뢰할 수 없는 경우도 많다. 또한, 사용자 인증 과정은 필요 이상의 정보를 요구하거나 복잡한 경우가 많다.Currently, a number of service providers are using a centralized model of a server-client structure for user authentication and management of personal information. In order to use the service, the user provides personal information to the service provider through the subscription process, and the service provider stores and manages the user's information in various ways. However, the security of the service provider is not high, and there are many cases where the service provider itself cannot be trusted. In addition, the user authentication process often requires more information than necessary or is complicated.
이러한 문제 해결을 위해 google 등의 대형 플랫폼들은 자신의 신뢰성을 기반으로 OAuth 인증을 제공한다. 하지만 OAuth 인증을 위해서는 이를 제공하는 플랫폼에 미리 가입되어 있어야 하므로, OAuth 서버에 모든 정보가 저장되어 있을 수밖에 없다. 따라서, 외부 공격으로 인한 대규모 개인정보 유출에 취약할 뿐 아니라 OAuth 제공자에게 필요 이상의 개인정보가 노출된다.To solve this problem, large platforms such as google provide OAuth authentication based on their trustworthiness. However, for OAuth authentication, it is necessary to subscribe to a platform that provides it in advance, so all information is inevitably stored in the OAuth server. Therefore, it is not only vulnerable to large-scale leakage of personal information due to external attacks, but also exposes more personal information than necessary to the OAuth provider.
본 발명은 서비스 이용을 위한 사용자 인증은 물론 서비스 가입을 위한 개인정보 등록 절차를 용이하게 하면서도 OAuth 인증 방식에서 우려되는 대규모 개인정보 유출을 방지할 수 있도록 하는 기술적 방안을 제공함을 목적으로 한다.An object of the present invention is to provide a technical method that facilitates the user authentication for service use as well as the personal information registration procedure for service subscription while preventing the large-scale leakage of personal information concerned in the OAuth authentication method.
일 양상에 따른 블록체인 기반 사용자 인증 방법은 사용자 애플리케이션이 암호화된 개인정보를 포함한 사용자 정보를 트랜잭션으로 생성하여 블록체인 네트워크로 제출하는 단계, 블록체인 네트워크가 제출된 트랜잭션을 검증한 후에 스마트 컨트랙트에 사용자 정보를 저장하는 단계, 서비스 제공자 서버가 서비스를 이용하고자 하는 사용자의 블록체인 계정에 기반하여 사용자를 인증하는 단계, 및 서비스 제공자 서버가 인증 결과 사용자가 비회원으로 확인될 경우에 사용자의 서비스 가입을 위해 스마트 컨트랙트에 저장된 암호화된 개인정보의 적어도 일부에 대해 복호화된 개인정보를 획득하는 단계를 포함할 수 있다.A blockchain-based user authentication method according to an aspect includes the steps of: a user application generates user information including encrypted personal information as a transaction and submits it to the blockchain network; After the blockchain network validates the submitted transaction, the user enters the smart contract In the step of storing information, the service provider server authenticates the user based on the user's block chain account who wants to use the service, and the service provider server confirms that the user is a non-member as a result of the authentication. It may include obtaining decrypted personal information for at least a portion of the encrypted personal information stored in the smart contract.
사용자 인증 단계에서 서비스 제공자 서버는 사용자 애플리케이션으로 넌스(Nonce)를 제공하는 단계, 사용자 애플리케이션은 사용자의 개인키로 서비스 제공자 서버로부터 수신된 넌스의 전자서명을 생성하여 서비스 제공자 서버로 반환하는 단계, 서비스 제공자 서버는 전자서명을 검증한 후에 서명 데이터로부터 사용자의 공개키를 복원하여 사용자의 지갑주소를 추출하는 단계, 및 서비스 제공자 서버는 사용자의 지갑주소로 사용자를 인증하는 단계를 포함할 수 있다.In the user authentication step, the service provider server provides a nonce to the user application, the user application generates an electronic signature of the nonce received from the service provider server with the user's private key and returns it to the service provider server, the service provider The server may include the step of extracting the user's wallet address by restoring the user's public key from the signature data after verifying the digital signature, and the service provider server authenticating the user with the user's wallet address.
사용자 애플리케이션으로 제공된 넌스는 재전송 공격의 방지를 위한 임의의 넌스일 수 있다.The nonce provided to the user application may be any nonce to prevent replay attacks.
개인정보 획득 단계에서 서비스 제공자 서버는 추출된 지갑주소가 서비스 제공자 서버에 미등록되어 있을 경우 서비스 가입을 위해 요구되는 개인정보 항목이 스마트 컨트랙트에 저장된 사용자 정보의 메타데이터에 존재하는지 확인하는 단계, 서비스 제공자 서버는 확인이 이루어지면 서비스 가입을 위해 요구되는 개인정보를 사용자 애플리케이션으로 요청하는 단계, 사용자 애플리케이션은 서비스 제공자 서버의 요청에 따라 스마트 컨트랙트에 저장된 암호화된 개인정보를 읽어와 복호화하는 단계, 및 사용자 애플리케이션은 서비스 가입을 위해 요구되는 복호화된 개인정보를 서비스 제공자 서버로 전송하는 단계를 포함할 수 있다.In the personal information acquisition step, if the extracted wallet address is not registered in the service provider server, the service provider server checks whether the personal information required for service subscription exists in the metadata of the user information stored in the smart contract, the service provider When the confirmation is made, the server requests the personal information required for service subscription to the user application, the user application reads and decrypts the encrypted personal information stored in the smart contract according to the request of the service provider server, and the user application may include transmitting the decrypted personal information required for service subscription to the service provider server.
한편, 일 양상에 따른 사용자 단말에 설치된 사용자 애플리케이션에 의해 수행되는 블록체인 기반 사용자 인증 방법은 사용자로부터 입력된 개인정보를 암호화하는 단계, 암호화된 개인정보와 그 개인정보에 대한 메타데이터를 포함한 사용자 정보를 트랜잭션으로 생성하여 블록체인 네트워크로 제출하는 단계, 서비스 제공자 서버로부터 사용자의 서비스 이용 요청에 따른 넌스(Nonce)를 제공받는 단계, 및 사용자의 개인키로 넌스의 전자서명을 생성하여 서비스 제공자 서버로 반환함에 의해 서비스 이용을 위한 사용자 인증이 이루어지도록 하는 단계를 포함할 수 있다.On the other hand, the block chain-based user authentication method performed by a user application installed in a user terminal according to an aspect includes the steps of encrypting personal information input from a user, user information including encrypted personal information and metadata about the personal information creates a transaction and submits it to the blockchain network, receives a nonce according to the user's service use request from the service provider server, and generates a digital signature of the nonce with the user's private key and returns it to the service provider server By doing so, it may include a step of allowing user authentication for service use to be made.
복호화 단계는 서비스 제공자 서버로부터 요청된 개인정보 항목에 대한 사용자 동의가 있을 경우에 한하여 수행될 수 있다.The decryption step may be performed only when there is user consent to the personal information item requested from the service provider server.
한편, 일 양상에 따른 온라인 접속한 사용자를 인증하여 서비스를 제공하는 서비스 제공자 서버에서 수행되는 블록체인 기반 사용자 인증 방법은 사용자의 블록체인 계정을 통한 인증 요청에 따라 사용자 애플리케이션으로 넌스(Nonce)를 제공하는 단계, 사용자 애플리케이션으로부터 사용자의 개인키로 생성된 넌스의 전자서명을 반환받는 단계, 전자서명을 검증한 후에 서명 데이터로부터 공개키를 복원하여 사용자의 지갑주소를 추출하는 단계, 및 서비스 제공자 서버는 사용자의 지갑주소로 사용자를 인증하는 단계를 포함할 수 있다.On the other hand, the blockchain-based user authentication method performed in a service provider server that provides a service by authenticating an online user according to an aspect provides a nonce to a user application according to an authentication request through the user's blockchain account step, receiving the digital signature of the nonce generated by the user's private key from the user application, recovering the public key from the signature data after verifying the digital signature to extract the user's wallet address, and the service provider server It may include the step of authenticating the user with the wallet address of
본 발명에 따르면, 사용자는 새로운 서비스의 이용을 위해 자신의 블록체인 계정만을 통해 자신을 인증할 수 있다. 또한, OAuth 인증과 같은 인증 방식을 채택하였을 때 서버 해킹으로 인한 개인정보의 대규모 유출을 방지할 수 있다. 또한, 블록체인 계정만으로 여러 서비스를 관리할 수 있어 개인정보 제공 이력과 가입 서비스 관리가 수월하다. 또한, 메타마스크를 통한 사용자의 편리한 접근성이 보장된다.According to the present invention, users can authenticate themselves through their own blockchain account only to use new services. In addition, when an authentication method such as OAuth authentication is adopted, large-scale leakage of personal information due to server hacking can be prevented. In addition, it is easy to manage personal information provision history and subscription service because various services can be managed only with a blockchain account. In addition, convenient accessibility of users is guaranteed through the metamask.
도 1은 일 실시예에 따른 블록체인 기반 사용자 인증 시스템 구성도이다.
도 2는 일 실시예에 따른 블록체인 기반 사용자 정보 등록 흐름도이다.
도 3 및 도 4는 일 실시예에 따른 블록체인 기반 사용자 인증 및 개인정보 제공 흐름도이다.
도 5는 스마트 컨트랙트 DAM(Decentralized Authenticaiton Manager)의 구조를 나타낸 도면이다.
도 6은 DAM에 사용되는 사용자 정보 구조를 예시한 도면이다.
도 7 및 도 8은 사용자 정보 등록 과정을 나타낸 도면이다.
도 9 및 도 10은 사용자 인증 및 개인정보 제공 과정을 나타낸 도면이다.
도 11은 서비스를 위한 사용자 초기 화면 예시도이다.
도 12는 이더리움 계정 등록 화면과 트랜잭션 승인 화면 예시도이다.
도 13은 로그인 팝업화면과 넌스 서명 요청 화면 예시도이다.
도 14는 서비스 제공자의 결과화면 예시도이다.
도 15는 사용자 최종화면 예시도이다.1 is a block-chain-based user authentication system configuration diagram according to an embodiment.
2 is a flowchart of user information registration based on a block chain according to an embodiment.
3 and 4 are block-chain-based user authentication and personal information provision flow charts according to an embodiment.
5 is a diagram showing the structure of a smart contract DAM (Decentralized Authenticiton Manager).
6 is a diagram illustrating a user information structure used in DAM.
7 and 8 are diagrams illustrating a user information registration process.
9 and 10 are diagrams illustrating a user authentication and personal information provision process.
11 is an exemplary diagram of a user initial screen for a service.
12 is an exemplary diagram of an Ethereum account registration screen and a transaction approval screen.
13 is an exemplary view of a login pop-up screen and a nonce signature request screen.
14 is an exemplary view of a result screen of a service provider.
15 is an exemplary diagram of a user end screen.
전술한, 그리고 추가적인 본 발명의 양상들은 첨부된 도면을 참조하여 설명되는 바람직한 실시예들을 통하여 더욱 명백해질 것이다. 이하에서는 본 발명을 이러한 실시예를 통해 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 설명하기로 한다.The foregoing and further aspects of the present invention will become more apparent through preferred embodiments described with reference to the accompanying drawings. Hereinafter, the present invention will be described in detail so that those skilled in the art can easily understand and reproduce it through these examples.
도 1은 일 실시예에 따른 블록체인 기반 사용자 인증 시스템 구성도이다. 사용자 단말(100)은 서비스 제공자가 제공하는 서비스를 이용하고자 하는 사용자(클라이언트)에 의해 사용되는 통신 및 컴퓨팅 가능한 디바이스이다. 사용자 단말(100)에는 블록체인 기반 사용자 인증을 위한 사용자 애플리케이션이 설치되어 실행된다. 사용자 애플리케이션은 소프트웨어로서 그 자체로 독립적인 것일 수도 있고 다른 소프트웨어에 부속되는 것일 수도 있으며, 블록체인 기반의 탈중앙화된 애플리케이션일 수 있다. 일 실시예에 있어서, 사용자 앱은 메타마스크(Metamask)이다. 다른 실시예에 있어서, 사용자 앱은 메타마스크(또는 다른 브라우저 플러그인)를 지원하는 사용자 브라우저나 여타의 소프트웨어이다. 서비스 제공자 서버(200)는 서비스 제공자에 의해 운영되는 서버 시스템으로서, 서비스에 가입한 사용자들에게 소정의 서비스를 제공한다. 이 같은 서비스 제공자 서버(200)는 블록체인 노드를 통해 블록체인 상에 사용자 정보의 등록여부 등을 확인할 수 있다.1 is a block-chain-based user authentication system configuration diagram according to an embodiment. The
블록체인(블록체인 네트워크)(300)은 네트워크상의 신뢰할 수 없는 참여자 간의 합의(Proof of Work)로 블록에 포함된 정보의 무결성을 보장하고 블록 생성자를 선정해 관리자가 없는 탈중앙화된 네트워크를 지속한다. 위 과정으로 합의된 블록들을 원장(Ledger)이라 부르는데, 원장에 저장된 정보는 무결성이 보장되며 분산 저장을 통해 데이터 저장을 위한 서버의 필요성을 경감한다. 일 실시예에 있어서, 블록체인은 이더리움이다. 이더리움은 블록체인 환경에서의 자동화된 계약인 스마트 컨트랙트(Smart Contract)를 지원하며, 이는 미리 프로그래밍되어 설정된 조건을 충족할 때 반환하는 결과의 무결성을 보장한다. 스마트 컨트랙트를 통해 개인정보의 저장과 제공을 수행하며, 인증 프로세스의 무결한 수행을 보장한다.The blockchain (blockchain network) 300 guarantees the integrity of the information contained in the block as a Proof of Work between untrusted participants on the network, and selects a block producer to continue a decentralized network without an administrator. . The blocks agreed upon by the above process are called the ledger, and the integrity of the information stored in the ledger is guaranteed and the need for a server for data storage is reduced through distributed storage. In one embodiment, the blockchain is Ethereum. Ethereum supports smart contracts, which are automated contracts in the blockchain environment, and guarantees the integrity of the results returned when pre-programmed conditions are met. It stores and provides personal information through smart contracts, and guarantees flawless execution of the authentication process.
도 1과 같은 시스템에서 사용자 단말(100)은 메타마스크를 통해 이더리움(300)에 암호화된 개인정보와 개인정보에 대한 메타데이터를 저장하고 관리할 수 있다(User Registration, Information Storage). 사용자 단말(100)은 사용자의 서비스 가입을 위해 새로운 인증과정 없이 이더리움 지갑주소(Account)를 통해 인증과 개인정보를 서비스 제공자 서버(200)로 제공할 수 있다(Authentication with Ethereum Account, Information Request/Response). 그리고 서비스 제공자 서버(200)는 이더리움(300)으로 사용자 인증 확인을 행할 수 있으며(Authenticaion Verification), 사용자의 암호화된 개인정보에 대한 메타데이터를 검색할 수 있다(User Metadata Search).In the system shown in FIG. 1 , the
도 2는 일 실시예에 따른 블록체인 기반 사용자 정보 등록 절차도이다. 도 2는 사용자가 메타마스크에 개인키를 통해 계정이 등록된 상태에서 메타마스크를 통해 스마트 컨트랙트에 개인정보와 메타데이터를 등록하는 과정을 나타낸다. 여기서, 사용자 단말(100)은 사용자에 의해 작성된 개인정보를 암호화한다(S100). S100에서, 사용자 단말(100)은 블록체인상의 데이터 기밀성을 위해 사용자로부터 입력된 개인정보 암호화용 비밀번호를 SHA-3 해시하여 생성된 256Bit 데이터를 키로 하여 개인정보를 AES-256 대칭키 암호화할 수 있다. 사용자 단말(100)은 암호화된 개인정보와 그에 대한 메타데이터를 트랜잭션(Transaction)으로 생성하고 개인키로 서명하여 이더리움 네트워크(300)에 제출한다(S110). 이더리움 네트워크(300)는 트랜잭션 서명의 유효성과 그 내용을 검증한 후에 스마트 컨트랙트를 호출하며(S120), 스마트 컨트랙트에 암호화된 개인정보와 메타데이터를 저장하며 사용자의 이더리움 지갑주소를 접근제어자로 설정한다(S130).2 is a block-chain-based user information registration procedure diagram according to an embodiment. 2 shows a process in which a user registers personal information and metadata in a smart contract through a metamask while an account is registered in the metamask through a private key. Here, the
도 3 및 도 4는 일 실시예에 따른 블록체인 기반 사용자 인증 및 개인정보 제공 흐름도이다. 사용자 단말(100)은 서비스 제공자 서버(200)로 이더리움 계정 로그인을 요청한다(S200). 이에 서비스 제공자 서버(200)는 사용자 단말(100)로 넌스(Nonce)를 제공한다(S210). S210에서, 서비스 제공자 서버(200)는 재전송 공격의 방지를 위해 임의의 넌스를 사용자 단말(100)로 제공할 수 있다. 사용자 단말(100)은 메타마스크에 등록된 개인키로 서비스 제공자 서버(200)로부터 제공된 넌스의 전자서명(r, v , s) = Sign(Nonce)을 생성하여 서비스 제공자 서버(200)로 반환한다(S220). 서비스 제공자 서버(200)는 서명데이터(r, s, v)와 넌스를 이용해 전자서명을 검증하며, 서명데이터로부터 사용자의 공개키를 복원하여 이더리움 지갑주소를 추출한다(S230). 서비스 제공자 서버(200)는 추출된 지갑주소가 서비스 제공자 서버(200)의 회원 정보 데이터베이스에 등록되어 있는지 여부를 확인하며(S240), 확인 결과 등록되어 있으면 사용자가 서비스에 가입된 회원인 것으로 판단하여 사용자 인증(로그인 인증)을 완료한다(S250).3 and 4 are block-chain-based user authentication and personal information provision flow charts according to an embodiment. The
S240에서의 확인 결과 지갑주소가 서비스 제공자 서버(200)에 등록되어 있지 않으면, 서비스 제공자 서버(200)는 S230에서 추출된 지갑주소로 이더리움 노드의 스마트 컨트랙트의 사용자 정보에 접근하며(S300), 그 사용자 정보에 포함된 메타데이터를 확인한다(S310). S310에서, 서비스 제공자 서버(200)는 사용자의 서비스 가입(회원 가입)을 위해 요구되는 개인정보 항목이 메타데이터에 속해 있는지 확인한다. 속해 있음이 확인되면, 서비스 제공자 서버(200)는 스마트 컨트랙트에 암호화되어 저장된 개인정보의 복호화 요청과 서비스 가입을 위해 필요한 항목의 개인정보를 다음 넌스(Nonce+1)와 함께 사용자 단말(100)로 요청한다(S320).As a result of checking in S240, if the wallet address is not registered in the
이에 사용자 단말(100)은 스마트 컨트랙트의 사용자 정보에 포함된 암호화된 개인정보를 읽어와 저장 과정에서 사용한 암호화용 비밀번호(AES 대칭키)를 가지고 복호화한다(S330). S330에서, 사용자 단말(100)은 서비스 가입을 위해 요구되는 개인정보 항목을 사용자에게 화면 표시하여 제공하며, 요구된 개인정보 항목에 대한 사용자의 동의가 있을 경우에 한하여 스마트 컨트랙트에 기록된 암호화된 개인정보를 읽어와 복호화할 수 있다. 사용자 단말(100)은 복호화된 개인정보의 적어도 일부를 서비스 제공자 서버(200)로 제공하는데, 서비스 제공자 서버(200)로부터 요청된 항목들의 개인정보만을 제공할 수 있다(S340). 이에 따라, 서비스 제공자 서버(200)는 사용자의 서비스 가입 등록 및 사용자 인증을 완료한다(S350).Accordingly, the
이상의 도 2 내지 도 4에서 사용자 측의 주체를 사용자 단말(100)로 표현하였는데, 보다 구체적으로 사용자 단말(100)의 프로세서나 상술한 사용자 애플리케이션을 주체로 표현할 수 있다. 그리고 주체로 표현된 블록체인 네트워크(이더리움 네트워크(300)에 대해서는 블록체인 노드로 표현될 수 있다. 또한, 도 2에서의 사용자 단말(100)과 도 3 및 도 4의 사용자 단말(100)은 상이할 수 있다. 즉, 사용자 단말(100)은 반드시 같은 디바이스를 의미하는 것이 아니라, 둘 이상의 디바이스 중에서 사용자에 의해 사용중인 디바이스를 의미할 수 있다. 또한, 사용자는 모바일 환경에서 사용자 정보를 등록하고 웹 환경에서 서비스를 이용하는 것이 가능하고, 그 반대의 경우도 가능하며, 동일한 환경에서 사용자 정보 등록과 서비스를 이용하는 것이 가능함은 물론이다.2 to 4, the user's subject is expressed as the
상술한 바와 같이, 본 시스템은 블록체인의 탈중앙화(Decentralized) 특성을 이용하며, 블록체인에 대한 사용자의 접근성을 높이기 위해 메타마스크를 이용할 수 있다. 이하에서는 블록체인 기반 사용자 인증 모델에 보다 구체적으로 설명하기로 하는데, 설명에 앞서 본 모델과 관련된 기술요소들에 대해 먼저 설명하기로 한다.As described above, this system uses the decentralized characteristics of the block chain, and can use the metamask to increase user access to the block chain. Hereinafter, the blockchain-based user authentication model will be described in more detail. Prior to the description, technical elements related to this model will be described first.
먼저, 블록체인에 대해 설명한다. 본 모델은 탈중앙성을 보장하기 위해 블록체인을 이용하는데, 작업증명(Proof of Work, PoW)으로 대표되는 합의알고리즘을 사용하는 퍼블릭 블록체인을 이용한다. 블록체인은 네트워크상의 서로 신뢰할 수 없는 참여자간의 합의로 블록에 포함된 정보의 무결성을 보장하고 블록 생성자를 선정해 관리자가 없는 탈중앙화된 네트워크를 지속한다. 본 모델에서는 퍼블릭 블록체인 플랫폼인 이더리움을 이용할 수 있다. 간단한 연산만 가능한 튜링 불완전한 스크립트를 지원하는 비트코인 등과 달리, 이더리움은 DApp(Decentralized Application) 개발을 위한 스마트 컨트랙트(Smart Contract)의 작성과 배포를 지원한다. 튜링 완전한 언어인 솔리디티(Solidity)로 작성되어 분산원장에 기록된 스마트 컨트랙트는 자동화된 실행과 결과의 무결성을 보장한다. 솔리디티로 작성된 스마트 컨트랙트는 컴파일된 후 이더리움 가상머신 바이트코드(EVM Byte Code)의 형태로 합의원장(Ledger)에 저장되어 계약내용의 무결성이 보장된다. 후술할 메타마스크를 통해 일반적으로 접근할 수 있는 웹사이트 상에서 이더리움 클라이언트 없이 스마트 컨트랙트를 동작시켜 인증과 정보저장을 탈중앙화된 방식으로 대체할 수 있다.First, the blockchain will be described. This model uses a blockchain to ensure decentralization, and uses a public blockchain that uses a consensus algorithm represented by Proof of Work (PoW). Blockchain ensures the integrity of the information contained in blocks by consensus among mutually untrustworthy participants on the network, and selects block producers to sustain a decentralized network without administrators. In this model, Ethereum, a public blockchain platform, can be used. Unlike Bitcoin, which supports Turing incomplete scripts that can only perform simple operations, Ethereum supports the creation and distribution of smart contracts for DApp (Decentralized Application) development. Smart contracts written in Solidity, a Turing-complete language, and recorded on a distributed ledger ensure automated execution and integrity of results. Smart contracts written in Solidity are compiled and stored in the form of Ethereum virtual machine byte code (EVM Byte Code) to ensure the integrity of the contract contents. It is possible to replace authentication and information storage in a decentralized way by operating a smart contract without an Ethereum client on a website that can be generally accessed through a metamask, which will be described later.
다음으로 ECDSA(Elliptic Curve Digital Signature Algorithm)에 대해 설명한다. 이더리움은 계정 소유자에 대한 인증과 트랜잭션의 인증 및 무결성 검증을 위해 ESDSA 전자서명을 사용한다. ECDSA는 타원곡선상의 이산대수문제인 ECDLP(Elliptic Curve Discrete Logarithm Problem)에 안전성을 기반하고 있으며, 현실적으로 개인키의 추측이나 전자서명의 위변조가 불가능하다. 또한, ECDSA와 같은 타원곡선암호(Elliptic Curve Cryptography, ECC)는 다른 암호화 알고리즘과 비교해 더 작은 bit 수로 높은 보안성을 제공하는 장점을 가진다. 이더리움에서는 타원곡선 secp256k1을 사용하며, 다음의 전자서명 방식을 사용한다.Next, the Elliptic Curve Digital Signature Algorithm (ECDSA) will be described. Ethereum uses ESDSA digital signatures for authentication of account holders and for authentication and integrity verification of transactions. ECDSA is based on the safety of ECDLP (Elliptic Curve Discrete Logarithm Problem), which is a discrete logarithmic problem on the elliptic curve. In addition, elliptic curve cryptography (ECC) such as ECDSA has the advantage of providing high security with a smaller number of bits compared to other encryption algorithms. In Ethereum, the elliptic curve secp256k1 is used, and the following digital signature method is used.
◈ 키생성: KeyGen◈ Key Generation: KeyGen
① [0..n-1](n: order) 내의 임의의 개인키 d를 생성한다.① Generate a random private key d in [0..n-1](n: order).
② 타원곡선 곱셈 연산을 통해 공개키 Q=dG (G: generator)를 계산한다.② Calculate public key Q=dG (G: generator) through elliptic curve multiplication operation.
◈ 서명생성: Sign(m, k)◈ Signature creation: Sign(m, k)
① 서명하려는 메시지 m의 해쉬값 h=hash(m)을 계산한다.① Calculate the hash value h=hash(m) of the message m to be signed.
- h의 최하위 n비트가 z가 된다. - The least significant n bits of h become z.
② [0..n-1] 내의 임의의 수 k를 생성한다.② Generate a random number k in [0..n-1].
③ R=kG를 계산하고, 포인트 R의 x좌표값 r을 획득한다.③ Calculate R=kG, and obtain the x-coordinate value r of the point R.
④ s=k-1(z+rd) mod n을 계산한다.④ Calculate s=k -1 (z+rd) mod n.
⑤ v=27+(y%2) (y: Q의 y좌표값)을 계산한다.⑤ Calculate v=27+(y%2) (y: y-coordinate value of Q).
⑥ (r, s, v)가 전자서명 값이다.⑥ (r, s, v) is the digital signature value.
◈ 서명검증: Verify(m, r, s, v)◈ Signature Verification: Verify(m, r, s, v)
① 메시지 m의 해쉬값 h=hash(m)을 계산하고, h의 최하위 n비트 z를 얻는다.① Calculate the hash value h=hash(m) of message m, and obtain the least significant n bits z of h.
② u1=zs-1 mod n, u2=rs-1 mod n을 계산한다.② Calculate u 1 =zs -1 mod n, u 2 =rs -1 mod n.
③ r과 v를 이용해 공개키 Q를 복구한다.③ Recover public key Q using r and v.
④ (x,y)=u1G+u2Q을 계산한다.④ Calculate (x,y)=u 1 G+u 2 Q.
⑤ x=r mod n이면 올바른 서명이다.⑤ If x=r mod n, it is a valid signature.
마지막으로 메타마스크에 대해 설명한다. 블록체인 지갑(wallet)은 블록체인 계정의 잔고를 관리하는 것만이 아닌 사용자의 개인키를 저장하고, 사용자를 대신해 트랜잭션을 생성해 브로드캐스트(Broadcast)할 수 있다. 이런 의미에서 지갑은 일반 사용자의 블록체인 네트워크로의 가장 쉬운 접근방식이라 할 수 있다. 메타마스크는 브라우저에서 실행되는 가장 대표적인 웹기반의 지갑 확장프로그램으로 현재 Chrome, Firefox, Opera, Brave Browser를 지원하고 있으며, 이더리움 계정 생성 및 연동, 전자서명, 트랜잭션 생성 등을 지원한다. 사용자는 브라우저상에서 메타마스크를 이용해 블록체인상의 스마트 컨트랙트에 손쉽게 접근할 수 있다.Finally, the metamask will be described. A blockchain wallet not only manages the balance of a blockchain account, but also stores the user's private key, and can create and broadcast a transaction on behalf of the user. In this sense, wallets are the easiest way for regular users to access the blockchain network. MetaMask is the most representative web-based wallet extension that runs in a browser, and currently supports Chrome, Firefox, Opera, and Brave Browser, and supports Ethereum account creation and linkage, electronic signatures, and transaction creation. Users can easily access smart contracts on the blockchain using MetaMask in their browser.
사용자가 이더리움 네트워크에 접근하기 위해서는 이더리움 클라이언트를 통해 블록체인 노드로서 네트워크에 참여해야 한다. 이런 방식은 사용자 접근성을 낮추기 때문에 메타마스크는 지갑 사용자에게 네트워크 접속을 위한 클라우드 서비스인 Infura API를 사용한다. 이를 통해 사용자는 직접 노드를 운영하지 않아도 이더리움 네트워크에 접속해 스마트 컨트랙트를 작동시키고 결과를 받아볼 수 있다. 이더리움은 웹애플리케이션에서 JSON-RPC를 이용해 이더리움 네트워크와 통신하기 위한 web3.JS 표준API를 지원한다. 메타마스크는 구동중인 브라우저에 이를 자체적으로 제공하고 있다.In order for users to access the Ethereum network, they must join the network as a blockchain node through an Ethereum client. Since this method lowers user accessibility, MetaMask uses Infura API, a cloud service for network access to wallet users. Through this, users can connect to the Ethereum network, operate smart contracts, and receive results without directly operating a node. Ethereum supports the web3.JS standard API for communicating with the Ethereum network using JSON-RPC in web applications. MetaMask provides this to the running browser itself.
이하에서는 블록체인 기반 사용자 인증 모델에 대해 설명한다. 앞서 살펴본 도 1은 블록체인 기반 사용자 인증 모델의 구성을 나타내며, 이더리움을 기반으로 사용자 인증과 개인정보 제공이 수행된다. 본 모델에서 사용자는 자신의 이더리움 계정을 통해 스마트 컨트랙트에 접근해 자신의 암호화된 개인정보와 제공 가능한 정보의 항목인 메타데이터를 작성한다. 서비스 제공자는 사용자의 전자서명과 스마트 컨트랙트를 기반으로 인증을 수행하고, 사용자의 메타데이터를 확인해 사용자로부터 필요한 개인정보를 요청해 전달받는다. 본 모델을 통해 사용자는 이더리움 계정을 이용해 별도의 ID 생성이나 추가 인증방식 없이 브라우저를 통해 자신을 인증할 수 있으며, 블록체인에 저장된 개인정보로 서비스 제공자의 개인정보 요청을 처리할 수 있다. 또한 서비스 제공자들은 별도의 자체적인 인증 방식 없이 손쉽게 사용자 인증을 수행할 수 있다.Hereinafter, a blockchain-based user authentication model will be described. 1 shows the configuration of a blockchain-based user authentication model, and user authentication and personal information provision are performed based on Ethereum. In this model, users access the smart contract through their Ethereum account and write their own encrypted personal information and metadata, which is an item of information that can be provided. The service provider performs authentication based on the user's digital signature and smart contract, checks the user's metadata, and requests and receives necessary personal information from the user. Through this model, users can use their Ethereum account to authenticate themselves through a browser without creating a separate ID or additional authentication method, and can process personal information requests from service providers with personal information stored in the block chain. In addition, service providers can easily perform user authentication without an independent authentication method.
본 모델은 이더리움에 스마트 컨트랙트 기반의 정보 저장공간을 구성하며, 인증 및 개인정보저장 트랜잭션의 서명에서 확인된 서명자의 이더리움 지갑주소를 식별자로 위 정보를 이더리움에 저장한다. 저장된 정보의 수정이나 삭제(미사용 처리)를 위한 트랜잭션 또한 서명을 확인해 해당 정보의 소유주임을 확인한 후에 실행된다. 스마트 컨트랙트 자체는 입력 및 저장데이터가 외부에 노출되어 정보의 기밀성이 보장되지 않는다. 이에 개인정보를 사용자의 대칭키로 암호화한 후 저장함으로써 블록체인에 저장되는 데이터의 기밀성을 보완한다.This model constitutes a smart contract-based information storage space in Ethereum, and stores the above information in Ethereum as an identifier of the signer's Ethereum wallet address confirmed in the signature of the authentication and personal information storage transaction. A transaction for modifying or deleting stored information (processing unused) is also executed after confirming that the owner of the information is the owner by verifying the signature. In the smart contract itself, the confidentiality of information is not guaranteed because the input and stored data are exposed to the outside. Accordingly, the confidentiality of data stored in the block chain is supplemented by encrypting and storing personal information with the user's symmetric key.
도 5는 스마트 컨트랙트 DAM(Decentralized Authenticaiton Manager)의 구조를 나타내며, 도 6은 DAM에 사용되는 사용자 정보 구조를 나타낸다. 사용자의 지갑주소를 식별자로 개인정보와 메타데이터가 저장되는 ClientInfo_Structure 매핑 구조체와 정보수정의 접근제어를 위한 accessControl이 있다. 표면적으로 동작되는 함수로는 사용자의 정보 저장에 사용되는 set_client, 저장된 정보를 수정하기 위한 modi_client_Data, 그리고 서비스 제공자의 사용자 메타데이터 확인에 사용되는 get_client_Metadata로 구성된다. 사용자는 도 6과 같이 스마트 컨트랙트의 데이터 구조의 ClientInfo_Structure를 통해 개인정보의 메타데이터와 암호화된 개인정보를 작성한다. 메타데이터는 사용자의 인증 후 서비스 제공자가 정보제공을 요청하기 전 사용자 정보의 존재확인에 사용된다. 사용자는 메타데이터를 통해 제공 가능한 정보의 범주를 공개한다.FIG. 5 shows the structure of a smart contract DAM (Decentralized Authenticaiton Manager), and FIG. 6 shows the user information structure used in the DAM. There is a ClientInfo_Structure mapping structure where personal information and metadata are stored using the user's wallet address as an identifier, and accessControl for access control of information modification. Functions that operate on the surface consist of set_client used to store user information, modi_client_Data to modify stored information, and get_client_Metadata used to check user metadata of service providers. The user creates metadata of personal information and encrypted personal information through ClientInfo_Structure of the data structure of the smart contract as shown in FIG. 6 . Metadata is used to confirm the existence of user information after user authentication and before the service provider requests information provision. Users disclose the categories of information that can be provided through metadata.
도 7 및 도 8은 사용자 정보 등록 과정을 나타낸 도면이다. 도 7은 사용자가 메타마스크에 등록한 이더리움 계정으로 스마트 컨트랙트에 개인정보 및 인증정보를 등록하는 과정의 개요이며, 도 8은 그에 대한 상세 설명을 나타내는 것으로 다음과 같다. 참고로, 아래 설명에서 사용자로 표현된 주체는 실제 사용자는 물론 사용자 단말(100) 또는 사용자 단말(100)에서 실행되는 소프트웨어를 포괄하는 것으로 이해하기로 한다.7 and 8 are diagrams illustrating a user information registration process. 7 is an overview of a process of registering personal information and authentication information in a smart contract with an Ethereum account registered by a user in Metamask, and FIG. 8 shows a detailed description thereof as follows. For reference, it will be understood that the subject expressed as a user in the following description encompasses the
① 블록체인상의 데이터 기밀성을 위해 사용자는 개인정보 암호화용 비밀번호를 입력하고 이를 SHA-3하여 생성된 256bit 데이터를 키로 하여 개인정보를 AES-256(Advanced Encryption Standard)으로 대칭키 암호화한다. 저장되는 정보들은 사용자마다 다른 키로 암호화되므로 공격자의 무작위 대입공격(Brute Force)과 대규모 개인정보 유출에 면역력을 가진다.① For data confidentiality on the block chain, the user enters a password for personal information encryption and uses the 256-bit data generated by SHA-3 as a key to encrypt personal information with AES-256 (Advanced Encryption Standard) with a symmetric key. Since the stored information is encrypted with a different key for each user, it is immune to brute force attacks and large-scale leakage of personal information.
② 사용자는 스마트 컨트랙트 DAM의 set_client 함수 호출 요청과 앞서 생성한 암호화된 개인정보와 그 암호데이터의 메타데이터를 메타마스크를 통해 트랜잭션으로 생성해 이더리움 네트워크에 제출한다.② The user submits a request to call the set_client function of the smart contract DAM and the previously generated encrypted personal information and metadata of the encrypted data as a transaction through a metamask and submits to the Ethereum network.
③ 제출된 트랜잭션이 포함된 블록이 채굴되어 블록체인에 포함될 때 이더리움은 트랜잭션과 서명의 유효성을 검증한다. 그리고 트랜잭션에 담긴 스마트 컨트랙트의 set_client의 호출을 수행한다.③ When the block containing the submitted transaction is mined and included in the blockchain, Ethereum verifies the validity of the transaction and signature. And the call of set_client of the smart contract contained in the transaction is executed.
④ 스마트 컨트랙트 DAM은 서명 검증과정에서 복원된 호출자의 지갑주소가 식별자로 전달된 정보를 도 6과 같이 ClientInfo_Structure에 저장한다. 저장된 정보의 수정을 위한 modi_client_Data의 실행은 accessControl에서 해당 요청 트랜잭션의 서명자의 지갑주소를 저장을 수행한 등록자와 비교해 권한이 부여된다.④ The smart contract DAM stores the information in which the wallet address of the caller restored in the signature verification process is transmitted as an identifier in ClientInfo_Structure as shown in FIG. 6 . The execution of modi_client_Data for the modification of the stored information is authorized by comparing the wallet address of the signer of the request transaction with the registrant who performed the storage in the accessControl.
도 9 및 도 10은 사용자 인증 및 개인정보 제공 과정을 나타낸 도면이다. 도 9는 사용자 인증 및 정보 제공의 흐름을 나타내며, 도 10은 각 단계의 상세 설명을 나타내는 것으로 다음과 같다. 참고로, 아래 설명에서 사용자로 표현된 주체는 실제 사용자는 물론 사용자 단말(100) 또는 사용자 단말(100)에서 실행되는 소프트웨어를 포괄하며, 서비스 제공자는 서비스 제공자 서버(200)를 의미하는 것으로 이해하기로 한다.9 and 10 are diagrams illustrating a user authentication and personal information provision process. 9 shows a flow of user authentication and information provision, and FIG. 10 shows a detailed description of each step as follows. For reference, in the description below, the subject expressed as a user encompasses not only the actual user but also the
① 사용자는 이더리움 계정을 통한 인증을 요청하고 이에 서비스 제공자는 리플레이 공격(Replay Attack)의 방지를 위한 임의의 넌스(Nonce)를 반환한다.① The user requests authentication through the Ethereum account, and the service provider returns a random nonce to prevent replay attacks.
② 사용자는 메타마스크에 저장된 개인키로 서비스 제공자에게 받은 넌스의 전자서명 (r, s, v)=Sing(Nonce, k)를 생성한다. 구체적으로 사용자의 브라우저에서 web3.personal.sign() 함수가 실행되면 메타마스크는 이를 감지해 사용자의 개인키를 이용해 서명을 생성한다.② The user creates the digital signature (r, s, v) = Sing(Nonce, k) of the nonce received from the service provider with the private key stored in the metamask. Specifically, when the web3.personal.sign() function is executed in the user's browser, MetaMask detects this and generates a signature using the user's private key.
③ 서비스 제공자는 사용자가 보낸 서명데이터(r, s, v)와 ①의 넌스를 입력해 Verify(Nonce, r, s, v)를 이용해 전자서명을 검증한다. 또한, 이더리움에서 지원하는 ecRecover를 통해 서명데이터로부터 사용자의 공개키 Q를 복원한다.③ The service provider verifies the digital signature using Verify(Nonce, r, s, v) by entering the signature data (r, s, v) sent by the user and the nonce in ①. In addition, the user's public key Q is restored from the signature data through ecRecover supported by Ethereum.
④ 서비스 제공자는 복원된 사용자의 공개키로 이더리움 지갑주소를 추출하고 스마트 컨트랙트 DAM의 get_client_Metadata 함수를 호출해 블록체인 상에 사용자 정보가 등록되어 있는지와 서비스 가입을 위해 요구되는 개인정보의 항목이 메타데이터에 존재하는지 확인한다.④ The service provider extracts the Ethereum wallet address with the restored user's public key and calls the get_client_Metadata function of the smart contract DAM to determine whether user information is registered on the blockchain and the items of personal information required for service subscription. Check if it exists in
⑤ 스마트 컨트랙트에서 정보의 등록여부와 요구항목이 확인되면, 서비스 제공자는 스마트 컨트랙트에 저장된 데이터의 복호화 요청과 필요한 정보의 항목을 사용자에게 다음 시퀀스번호(Nonce+1)와 함께 요청한다. 사용자는 요청된 개인정보 항목을 검토하고 제공에 동의할지 결정한다.⑤ When the registration of information and the required items are confirmed in the smart contract, the service provider requests the decryption of the data stored in the smart contract and the required information items from the user along with the next sequence number (Nonce+1). The user reviews the requested personal information and decides whether to consent to the provision.
⑥ 개인정보 제공을 위해 사용자는 스마트 컨트랙트에 저장된 암호데이터를 읽어와 저장과정에서 사용한 암호화용 비밀번호(AES 대칭키)로 데이터를 복호화한다. 이후 요청된 개인정보를 서비스 제공자에게 시퀀스번호(Nonce+2)와 함께 전송한다.⑥ To provide personal information, the user reads the encrypted data stored in the smart contract and decrypts the data with the encryption password (AES symmetric key) used in the storage process. Thereafter, the requested personal information is transmitted to the service provider along with a sequence number (Nonce+2).
이하에서는 상술한 블록체인 기반 사용자 인증 모델에 대한 동작 확인 및 검증을 위한 프로토타입 구현 및 실험 결과에 대해 서술한다. 먼저, 개발환경은 표 1과 같다.Hereinafter, prototype implementation and experimental results for operation confirmation and verification of the above-described blockchain-based user authentication model will be described. First, the development environment is shown in Table 1.
개발환경에서 사용자는 메타마스크가 설치된 Chrome에서 Web3.JS를 통해 이더리움 및 서비스 제공자 서버와 상호작용을 수행한다. 서비스 제공자는 일반적으로 작동하는 서버로 가정하며 Web3.JS를 통해 스마트 컨트랙트에 접근하며, 사용자와 통신을 통해 인증 및 개인정보를 제공받는다. 스마트 컨트랙트는 솔리디티로 작성 및 컴파일되어 EVM바이트 코드 형태로 이더리움 네트워크에 등록되며, EVM상에서 작동해 모델 전반에 걸쳐 사용된다. 사용자의 경우 메타마스크의 Infura를 통해 동작하며, 서비스 제공자는 이더리움 클라이언트를 사용하거나 Infura 서비스를 선택적으로 운용할 수 있다.In the development environment, users interact with Ethereum and service provider servers through Web3.JS in Chrome with Metamask installed. The service provider is generally assumed to be a working server, accesses the smart contract through Web3.JS, and receives authentication and personal information through communication with the user. Smart contracts are written and compiled in Solidity, registered on the Ethereum network in the form of EVM bytecode, and run on the EVM to be used throughout the model. In the case of users, it operates through Metamask's Infura, and the service provider can use the Ethereum client or selectively operate the Infura service.
도 11은 서비스를 위한 사용자 로그인 화면이며, 메타마스크가 구동중인 브라우저 환경이다. 사용자가 해당 페이지에서 이더리움 로그인을 선택하면 이더리움 계정이 스마트 컨트랙트 DAM에 등록되어 있는지 확인한다. 등록되지 않은 계정이라면 계정등록과정으로 이동하게 되며, 등록된 계정이라면 서비스 제공자 서버로부터 넌스를 전송받아 로그인 과정을 수행한다.11 is a user login screen for a service, and a browser environment in which Metamask is running. When the user selects Ethereum login on that page, it checks whether the Ethereum account is registered in the smart contract DAM. If it is an unregistered account, it moves to the account registration process, and if it is a registered account, it receives a nonce from the service provider server and performs the login process.
도 12는 사용자가 이더리움 계정을 이용한 로그인 기능을 사용하기 위한 계정 등록 화면과 스마트 컨트랙트에 정보를 저장하기 위한 트랜잭션의 승인 화면이다. 도 12의 좌측 화면에서 입력하는 비밀번호는 저장하는 정보의 대칭키 암호화를 위한 비밀번호이며, 복호화 과정에서 같은 키를 사용한다. 도 12의 우측 화면은 입력된 정보의 저장을 위한 트랜잭션 생성의 승인 화면이다. 132Bytes 크기의 정보를 블록체인에 저장하는데 사용된 가스(Gas)는 65,000 가량으로 한화 14원 정도이다.12 is an account registration screen for a user to use a login function using an Ethereum account and a transaction approval screen for storing information in a smart contract. The password input in the left screen of FIG. 12 is a password for symmetric key encryption of stored information, and the same key is used in the decryption process. The right screen of FIG. 12 is an approval screen for generating a transaction for storing input information. The amount of gas used to store 132 bytes of information in the block chain is about 65,000, which is about 14 won.
도 13은 로그인 팝업화면과 넌스 서명 요청 화면 예시도이다. 도 13의 좌측 화면은 사용자가 이더리움 계정 로그인을 요청한 후 생성되는 팝업으로 입력을 요구하는 계정 비밀번호는 등록과정에서 등록한 정보의 복호화용 대칭키를 말한다. 도 13의 우측 화면은 인증과정에서 서비스 제공자가 사용자에게 전송한 넌스에 대한 서명을 승인하는 화면이다. 넌스에 서명되어 서비스 제공자에게 전송되면 서비스 제공자는 서명데이터로부터 공개키와 지갑주소의 복구와 함께 스마트 컨트랙트의 get_client_Metadata를 통해 사용자의 메타데이터를 확인하고 개인정보 요청을 수행한다.13 is an exemplary view of a login pop-up screen and a nonce signature request screen. The left screen of FIG. 13 is a pop-up generated after a user requests to log in to an Ethereum account, and the account password requesting input refers to a symmetric key for decrypting information registered in the registration process. The right screen of FIG. 13 is a screen for approving the signature for the nonce transmitted by the service provider to the user during the authentication process. When the nonce is signed and sent to the service provider, the service provider recovers the public key and wallet address from the signature data, checks the user's metadata through the get_client_Metadata of the smart contract, and performs a request for personal information.
서비스 제공자는 서명데이터를 기반으로 사용자의 지갑주소를 복구하고 바로 이어서 개인정보의 복호화 및 제공을 요청하고 제공받는 과정을 수행한다. 도 14에서 Windows와 MacOS에서 운영되는 서비스가 Chrome을 이용하는 사용자 측에서 생성된 서명데이터(signature)를 받아 정상적으로 사용자의 지갑주소(User Address)를 복구한 것을 볼 수 있다. 또한 개인정보 제공과정을 통해 사용자의 개인정보를 제공받는 것을 볼 수 있다. 그리고 도 15는 로그인 과정을 통해 서비스 제공자가 사용자의 정보를 제공받은 후 사용자가 확인할 수 있는 로그인이 완료된 화면이다.The service provider restores the user's wallet address based on the signature data, and immediately follows the process of requesting and receiving the decryption and provision of personal information. 14 , it can be seen that the service operated in Windows and MacOS receives the signature data generated by the user using Chrome and normally restores the user's wallet address (User Address). In addition, you can see that the user's personal information is provided through the personal information provision process. And FIG. 15 is a screen where the login is completed, which the user can check after the service provider receives the user's information through the login process.
한편, 사용자 단말에 의해 수행되는 상술한 블록체인 기반 사용자 인증 방법은 컴퓨터 프로그램으로 작성이 가능하다. 이 같은 프로그램을 구성하는 코드들 및/또는 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 이 같은 프로그램은 컴퓨터가 읽을 수 있는 기록매체에 저장되고, PC에 의하여 읽혀지고 실행됨으로써 블록체인 기반 사용자 인증 방법이 구현될 수 있다. 이 같은 기록매체는 자기 기록매체, 광 기록매체 등일 수 있다.On the other hand, the above-described block chain-based user authentication method performed by the user terminal can be written as a computer program. Codes and/or code segments constituting such a program can be easily inferred by a computer programmer in the art. In addition, such a program is stored in a computer-readable recording medium, read and executed by a PC, so that a blockchain-based user authentication method can be implemented. Such a recording medium may be a magnetic recording medium, an optical recording medium, or the like.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far, with respect to the present invention, the preferred embodiments have been looked at. Those of ordinary skill in the art to which the present invention pertains will understand that the present invention can be implemented in a modified form without departing from the essential characteristics of the present invention. Therefore, the disclosed embodiments are to be considered in an illustrative rather than a restrictive sense. The scope of the present invention is indicated in the claims rather than the foregoing description, and all differences within the scope equivalent thereto should be construed as being included in the present invention.
100 : 사용자 단말 200 : 서비스 제공자 서버
300 : 블록체인(이더리움) 네트워크100: user terminal 200: service provider server
300: Blockchain (Ethereum) Network
Claims (16)
블록체인 네트워크는 제출된 트랜잭션을 검증한 후에 스마트 컨트랙트에 사용자 정보를 저장하는 단계;
서비스 제공자 서버는 서비스를 이용하고자 하는 사용자의 블록체인 계정에 기반하여 사용자를 인증하는 단계; 및
서비스 제공자 서버는 인증 결과 사용자가 비회원으로 확인될 경우에 사용자의 서비스 가입을 위해 스마트 컨트랙트에 저장된 암호화된 개인정보의 적어도 일부에 대해 복호화된 개인정보를 획득하는 단계;를 포함하며,
사용자 인증 단계에서 :
서비스 제공자 서버는 사용자 애플리케이션으로 넌스(Nonce)를 제공하는 단계;
사용자 애플리케이션은 사용자의 개인키로 서비스 제공자 서버로부터 수신된 넌스의 전자서명을 생성하여 서비스 제공자 서버로 반환하는 단계;
서비스 제공자 서버는 전자서명을 검증한 후에 서명 데이터로부터 사용자의 공개키를 복원하여 사용자의 지갑주소를 추출하는 단계; 및
서비스 제공자 서버는 사용자의 지갑주소로 사용자를 인증하는 단계;
를 포함하는 블록체인 기반 사용자 인증 방법.The user application includes the steps of generating user information including encrypted personal information as a transaction and submitting it to a blockchain network;
The blockchain network stores user information in the smart contract after verifying the submitted transaction;
The service provider server authenticates the user based on the user's block chain account who wants to use the service; and
The service provider server obtains decrypted personal information for at least a portion of the encrypted personal information stored in the smart contract for the user's service subscription when the user is confirmed as a non-member as a result of the authentication;
In the user authentication step:
The service provider server provides a nonce (Nonce) to the user application;
generating, by the user application, a digital signature of the nonce received from the service provider server with the user's private key, and returning it to the service provider server;
extracting, by the service provider server, the user's wallet address by restoring the user's public key from the signature data after verifying the digital signature; and
The service provider server authenticates the user with the user's wallet address;
A blockchain-based user authentication method that includes
사용자 애플리케이션으로 제공된 넌스는 재전송 공격의 방지를 위한 임의의 넌스인 블록체인 기반 사용자 인증 방법.3. The method of claim 2,
A blockchain-based user authentication method where the nonce provided by the user application is a random nonce to prevent replay attacks.
서비스 제공자 서버는 추출된 지갑주소가 서비스 제공자 서버에 미등록되어 있을 경우 서비스 가입을 위해 요구되는 개인정보 항목이 스마트 컨트랙트에 저장된 사용자 정보의 메타데이터에 존재하는지 확인하는 단계;
서비스 제공자 서버는 확인이 이루어지면 서비스 가입을 위해 요구되는 개인정보를 사용자 애플리케이션으로 요청하는 단계;
사용자 애플리케이션은 서비스 제공자 서버의 요청에 따라 스마트 컨트랙트에 저장된 암호화된 개인정보를 읽어와 복호화하는 단계; 및
사용자 애플리케이션은 서비스 가입을 위해 요구되는 복호화된 개인정보를 서비스 제공자 서버로 전송하는 단계;
를 포함하는 블록체인 기반 사용자 인증 방법.According to claim 2, in the personal information acquisition step:
Checking, by the service provider server, whether the personal information required for service subscription exists in the metadata of user information stored in the smart contract when the extracted wallet address is not registered in the service provider server;
When the service provider server is confirmed, the step of requesting the personal information required for service subscription to the user application;
The user application reads and decrypts the encrypted personal information stored in the smart contract according to the request of the service provider server; and
The user application comprising: transmitting the decrypted personal information required for service subscription to the service provider server;
A blockchain-based user authentication method that includes
암호화된 개인정보는 대칭키로 암호화된 것인 블록체인 기반 사용자 인증 방법.5. The method according to any one of claims 2 to 4,
A blockchain-based user authentication method in which encrypted personal information is encrypted with a symmetric key.
사용자 애플리케이션은 메타마스크(Metamask)인 블록체인 기반 사용자 인증 방법.5. The method according to any one of claims 2 to 4,
The user application is a blockchain-based user authentication method called Metamask.
블록체인은 이더리움인 블록체인 기반 사용자 인증 방법.5. The method according to any one of claims 2 to 4,
Blockchain is a blockchain-based user authentication method that is Ethereum.
사용자로부터 입력된 개인정보를 암호화하는 단계;
암호화된 개인정보와 그 개인정보에 대한 메타데이터를 포함한 사용자 정보를 트랜잭션으로 생성하여 블록체인 네트워크로 제출하는 단계;
서비스 제공자 서버로부터 사용자의 서비스 이용 요청에 따른 넌스(Nonce)를 제공받는 단계; 및
사용자의 개인키로 넌스의 전자서명을 생성하여 서비스 제공자 서버로 반환함에 의해 서비스 이용을 위한 사용자 인증이 이루어지도록 하는 단계;
를 포함하는 블록체인 기반 사용자 인증 방법.In the blockchain-based user authentication method performed by a user application installed in a user terminal,
Encrypting the personal information input from the user;
generating user information including encrypted personal information and metadata about the personal information as a transaction and submitting it to a blockchain network;
receiving a nonce according to a user's service use request from a service provider server; and
generating a digital signature of the nonce with the user's private key and returning it to the service provider server to authenticate the user for service use;
A blockchain-based user authentication method that includes
서비스 제공자 서버로부터 제공된 넌스는 재전송 공격의 방지를 위한 임의의 넌스인 블록체인 기반 사용자 인증 방법.9. The method of claim 8,
A blockchain-based user authentication method in which the nonce provided from the service provider server is an arbitrary nonce to prevent replay attacks.
서비스 제공자 서버의 요청에 따라 스마트 컨트랙트에 저장된 암호화된 개인정보를 읽어와 복호화하는 단계; 및
서비스 가입을 위해 요구되는 복호화된 개인정보를 서비스 제공자 서버로 전송하는 단계;
를 더 포함하는 블록체인 기반 사용자 인증 방법.10. The method of claim 9,
Reading and decrypting the encrypted personal information stored in the smart contract according to the request of the service provider server; and
transmitting the decrypted personal information required for service subscription to a service provider server;
A blockchain-based user authentication method further comprising a.
복호화 단계는 서비스 제공자 서버로부터 요청된 개인정보 항목에 대한 사용자 동의가 있을 경우에 한하여 수행되는 블록체인 기반 사용자 인증 방법.11. The method of claim 10,
The decryption step is a blockchain-based user authentication method that is performed only when there is user consent to the personal information item requested from the service provider server.
개인정보는 대칭키로 암호화 및 복호화되는 블록체인 기반 사용자 인증 방법.11. The method of claim 10,
A blockchain-based user authentication method in which personal information is encrypted and decrypted with a symmetric key.
사용자의 블록체인 계정을 통한 인증 요청에 따라 사용자 애플리케이션으로 넌스(Nonce)를 제공하는 단계;
사용자 애플리케이션으로부터 사용자의 개인키로 생성된 넌스의 전자서명을 반환받는 단계;
전자서명을 검증한 후에 서명 데이터로부터 공개키를 복원하여 사용자의 지갑주소를 추출하는 단계; 및
서비스 제공자 서버는 사용자의 지갑주소로 사용자를 인증하는 단계;
를 포함하는 블록체인 기반 사용자 인증 방법.In the blockchain-based user authentication method performed in a service provider server that provides a service by authenticating an online user,
providing a nonce to a user application in response to an authentication request through the user's blockchain account;
receiving a digital signature of the nonce generated by the user's private key returned from the user application;
extracting the user's wallet address by restoring the public key from the signature data after verifying the electronic signature; and
The service provider server authenticates the user with the user's wallet address;
A blockchain-based user authentication method that includes
사용자 애플리케이션으로 제공된 넌스는 재전송 공격의 방지를 위한 임의의 넌스인 블록체인 기반 사용자 인증 방법.15. The method of claim 14,
A blockchain-based user authentication method where the nonce provided by the user application is a random nonce to prevent replay attacks.
추출된 지갑주소가 서비스 제공자 서버에 미등록되어 있을 경우 서비스 가입을 위해 요구되는 개인정보 항목이 스마트 컨트랙트에 저장된 사용자 정보의 메타데이터에 존재하는지 확인하는 단계;
확인이 이루어지면 서비스 가입을 위해 요구되는 개인정보를 사용자 애플리케이션으로 요청하는 단계; 및
사용자 애플리케이션으로부터 서비스 가입을 위해 요구되는 복호화된 개인정보를 수신하는 단계;
를 더 포함하는 블록체인 기반 사용자 인증 방법.16. The method of claim 14 or 15,
When the extracted wallet address is not registered in the service provider server, checking whether the personal information item required for service subscription exists in the metadata of the user information stored in the smart contract;
When confirmation is made, requesting the personal information required for service subscription to the user application; and
Receiving the decrypted personal information required for service subscription from the user application;
A blockchain-based user authentication method further comprising a.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200017646A KR102329221B1 (en) | 2020-02-13 | 2020-02-13 | Blockchain-based user authentication model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200017646A KR102329221B1 (en) | 2020-02-13 | 2020-02-13 | Blockchain-based user authentication model |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210103615A KR20210103615A (en) | 2021-08-24 |
KR102329221B1 true KR102329221B1 (en) | 2021-11-23 |
Family
ID=77507045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200017646A KR102329221B1 (en) | 2020-02-13 | 2020-02-13 | Blockchain-based user authentication model |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102329221B1 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640464B (en) * | 2022-03-09 | 2024-06-04 | 平安国际智慧城市科技股份有限公司 | Subscription data transmission method, device, equipment and storage medium based on blockchain |
CN115276982B (en) * | 2022-07-29 | 2024-04-16 | 武汉科技大学 | SGX-based Ethernet key management method and system |
KR20240146844A (en) * | 2023-03-30 | 2024-10-08 | 주식회사 애브체인 | Method and system for processing personal information using trust execution environment based on smart contract |
CN116384720B (en) * | 2023-06-07 | 2023-08-15 | 青岛理工大学 | DAO-oriented task management Web3 autonomous system and autonomous method |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101816650B1 (en) | 2017-02-21 | 2018-01-09 | 주식회사 코인플러그 | Method for providing simplified account registration service and authentication service, and authentication server using the same |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101358346B1 (en) * | 2012-01-26 | 2014-02-07 | 정성권 | Method for auto log-in and system for the same |
US20150339662A1 (en) * | 2014-05-23 | 2015-11-26 | LoopPay Inc. | Systems and methods for linking devices to user accounts |
KR101916302B1 (en) | 2017-09-25 | 2018-11-07 | 삼성카드 주식회사 | Method and apparatus for authenticating affiliate and user using blockchain |
KR102152030B1 (en) * | 2018-08-01 | 2020-09-04 | 한양대학교 산학협력단 | Method and apparatus for processing personal information based on information distribution in aid and emergency situation |
-
2020
- 2020-02-13 KR KR1020200017646A patent/KR102329221B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101816650B1 (en) | 2017-02-21 | 2018-01-09 | 주식회사 코인플러그 | Method for providing simplified account registration service and authentication service, and authentication server using the same |
Also Published As
Publication number | Publication date |
---|---|
KR20210103615A (en) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mishra et al. | Privacy protected blockchain based architecture and implementation for sharing of students’ credentials | |
KR102329221B1 (en) | Blockchain-based user authentication model | |
WO2021169107A1 (en) | Internet identity protection method and apparatus, electronic device, and storage medium | |
US6539093B1 (en) | Key ring organizer for an electronic business using public key infrastructure | |
US20160080157A1 (en) | Network authentication method for secure electronic transactions | |
CN114679293A (en) | Access control method, device and storage medium based on zero trust security | |
US20020116619A1 (en) | Digital signature verification and program transmission | |
CN109981287B (en) | Code signing method and storage medium thereof | |
CN112671720B (en) | Token construction method, device and equipment for cloud platform resource access control | |
US9749130B2 (en) | Distributing keys for decrypting client data | |
KR101982237B1 (en) | Method and system for data sharing using attribute-based encryption in cloud computing | |
CN102625294B (en) | Method for managing mobile service by taking universal serial bus (USB) as virtual subscriber identity module (SIM) card | |
JP2007502578A (en) | How to use reliable hardware-based identity credentials in runtime package signing for secure mobile communications and expensive transaction execution | |
CN110189184B (en) | Electronic invoice storage method and device | |
WO2021190197A1 (en) | Method and apparatus for authenticating biometric payment device, computer device and storage medium | |
US20210241270A1 (en) | System and method of blockchain transaction verification | |
Pereira et al. | Formal analysis of the FIDO 1. x protocol | |
CN115580413B (en) | Zero-trust multi-party data fusion calculation method and device | |
Guirat et al. | Formal verification of the W3C web authentication protocol | |
CN107347073B (en) | A kind of resource information processing method | |
CN114244508A (en) | Data encryption method, device, equipment and storage medium | |
CN109460993A (en) | Information processing method, device and storage medium | |
Lim et al. | AuthChain: a decentralized blockchain-based authentication system | |
CN116886357A (en) | Distributed digital identity authentication method, device and medium for mobile platform | |
KR102517001B1 (en) | System and method for processing digital signature on a blockchain network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |