본문 바로가기
IT기술노트/디지털서비스

블록체인 기반 크립토 월렛의 핵심 요소인 개인키

by 비트코기 2023. 11. 25.

블록체인 기반 크립토 월렛의 핵심 요소인 개인키에 대해 다음을 설명하시오.

   가. 개인키 관리 방식에 따른 크립토 월렛의 분류

   나. 크립토 월렛에서 개인키 생성 과정

   다. 크립토 월렛에서 개인키 관리를 위한 기술


1. 디지털 자산 관리를 위한 개인키 생성 및 관리 서비스 제공, 크립토 월렛의 개요

가. 크립토 월렛의 개념

크립토 월렛 개념 - 사용자에게 개인키와 주소를 생성하거나 복구하고 거래내역을 작성하며, 개인키를 이용하여 거래에 대한 전자서명을 하는 서비스를 제공하는 소프트웨어

-   다양한 블록체인 기반 크립토 월렛이 존재하여 비트코인을 기준으로 설명

 

나. 개인키 관리 방식에 따른 크립토 월렛의 분류

분류 설명
소프트웨어 월렛 - 주로 온라인 환경에서 사용되는 크립토 월렛
- 개인키 생성 및 보관, 암호화폐 송금 및 수신 기능 제공, 트랜잭션 조회, 보안 기능 등을 소프트웨어로 구현한 크립토 월렛
- 웹, 모바일, 데스크톱 애플리케이션 등 다양한 형태로 제공
- 일부 소프트웨어 월렛은 다양한 종류의 암호화폐를 지원
하드웨어 월렛 - 대표적인 콜드 월렛으로 오프라인 환경에서 사용가능해서 해킹 위험에 노출되는 것을 최소화하고 개인키를 안전하게 보호하기 위한 위부 장치
- 오프라인 환경에서 개인키를 보관하고 필요할 때 온라인 환경으로 전환하여 거래 승인
- 소프트웨어 월렛에 비교하여 높은 보안성을 제공
- 일반적으로 USB나 NFC 형태로 제공
종이 월렛 - 개인키를 안전하게 보관, 관리하기 위해 종이에 개인키를 생성하여 암호화폐를 장기간 보관하기 위해 사용
- 분실 및 파손에 취약하고 편의성이 떨어지지만 강력한 보안성 제공
- 다른 크립토 월렛과는 다른 양도 과정이 매우 간편한 특징 보유
수탁형 월렛 - 개인키를 직접 소유하지 않고 거래소나 수탁 서비스 제공자가 개인키를 보관하는 형태의 크립토 월렛
- 사용이 간편하고 안정성이 높지만, 중앙집중형 월렛의 경우 사용자의 개인키가 서비스 제공자 서버에 저장되기 때문에 해킹에 취약
- 자산의 안전이 보장되는 중앙화 서비스를 하는 수탁형 월렛은 사용자에게 편의성 높은 크립토 월렛 제공

-   크립토 월렛에 저장, 관리되는 개인키는 일련의 절차에 따라 생성

 

2.       크립토 월렛에서 개인키 생성 과정

가.     크립토 월렛 개인키 생성 과정

- 크립토 월렛 구성 기술은 암호기술, 전자서명, 해시함수이며, 개인키 생성을 위해 SHA256 함수 사용

 

나. 크립토 월렛 개인키 생성 단계별 활동

단계 활동 설명
개인키 생성 ①난수생성 - 개인키는 256비트 길이의 난수로 구성된 값으로 키 생성 요청이 들어오면 거대한 난수표에서 무작위로 값이 선정
- 난수 선정 알고리즘이 매우 중요
② 엔트로피 확인 - 난수 생성기를 통해 만들어진 256비트의 엔트로피(Entropy)가 n-1보다 작은 지 확인
- n=1.158 * 1077, n은 비트코인에서 사용된 타원곡선의 유수(Order)라고 정의된 상수를 의미
③분기 - 엔트로피가 n-1보다 작으면 개인키 생성 완료
- 엔트로피가 n-1보다 크면 해싱 처리
해싱 ④해싱 - SHA256 함수를 이용하여 256비트의 엔트로피를 생성
⑤해싱값 확인 - SHA256함수를 통해 만들어진 256비트의 엔트로피(Entropy)가 n-1보다 작은 지 확인
⑥분기 - 엔트로피가 n-1보다 작으면 개인키 생성 완료
- 엔트로피가 n-1보다 크면 난수 생성부터 다시 시작
⑦ 개인키 생성완료 - 개인키 생성 완료

- 비트코인에서 개인키 관리를 위한 대표적인 기술적 요소로 BIP-32, BIP-39 사용

 

3. 크립토 월렛에서 개인키를 관리를 위한 기술

가. HD 월렛

개념 - HD월렛(BIP-32)은 결정론적 지갑을 위한 표준 규격으로 하나의 시드로부터 여러 개의 키 쌍 체인을 파생시키는 방법을 정의
구분 구성요소 설명
Master Master Seed - HD 월렛의 뿌리가 되는 값으로 암호학적으로 안전한 난수로 생성
- 모든 계정 및 하위 체인의 개인키 생성에 사용
Master Node - Master Seed에서 파생된 최상위 키 값
- 모든 계정 및 하위 체인의 개인키 생성에 사용되면 Master Private Key와 Master Public Key 값으로 구성
Wallet Wallets/Accounts - 여러 개의 계정 생성이 가능하며 각각 다른 목적으로 사용
- 모든 계정에서 사용하는 모든 키 쌍은 Master Node에서 파생
Wallet Chain - 계정은 여러 개의 하위 체인 생성이 가능
- 하위 체인은 각각 독립적인 인덱스 값을 갖는 다수의 키 쌍으로 구성
Address Address - 하위 체인에서 파생된 공개키의 해시값

- 일반적으로 16진수로 표현되는 개인키, 공개키, 주소와 관련 정보를 정확히 기억 또는 기록하는 것에는 한계가 있어 단어를 통해 정보를 쉽게 표현하는 니모닉 코드 사용

 

나. 니모닉 코드

개념 - 니모닉 코드(BIP-39)는 12개 또는 24개의 영어 단어로 이루어진 시드 값의 암호화된 표현이며 시드 값은 지갑의 개인키를 생성하는데 사용
구분 절차 설명
니모닉 코드 생성 Entropy 생성 - 암호학적으로 랜덤한 128 ~ 256비트의 엔트로피 생성
해시값 생성 - SHA256 알고리즘을 이용해 해시값을 구하고 해시값 중 왼쪽에서 ‘엔트로피의 길이/32비트’만큼의 체크섬을 생성
체크섬 결합 - 생성된 체크섬을 엔트로피의 끝에 추가
단어 치환 - 결합한 - 132비트를 11비트 단위로 분할하고 각각의 11비트 값을 BIP-39에 정의된 2,048개의 단어로 치환
니모닉 코드 생성 - 단어 시퀀스로부터 순서를 유지하면서 니모닉 코드를 생성
시드 생성 솔트(Salt) - 생성된 니모닉 코드와 솔트 값을 결합한다.
키 스트레칭
(Key Stretching)
- 솔트와 결합된 값을 PBKDF2 (Password-Based Key Derivation Function Version 2) 키 스트레칭 함수를 이용하여 HMAC-SHA512 (Hash-based Message Authentication Code-Secure Hash Algoritm 512) 알고리즘을 이용해 키 스트레칭
시드 생성 - PBKDF2 알고리즘을 이용해 2048번의 해싱을 통해 512비트의 시드를 생성

- 크립토 월렛은 지갑 내에 자산을 보관히는 것이 아닌 자산에 대한 소유권(개인키)를 보관하고 있는 것이 정확한 표현


4. 개인키를 이용한 주소 생성 방법

- 크립토 월렛은 난수생성기로 개인키를 생성하고 수학적 계산을 통해 공개키를 생성, 이렇게 만들어진 공개키를 해시함수를 이용하여 각각의 암호화폐에서 사용하는 주소를 만들고 관리

- 개인키 > 공개키 > 주소가 생성되는 모든 계산은 일방향인 특성이 있어 역산이 거의 불가능

반응형

댓글