본문 바로가기
블록체인/크립토 월렛

08. 크립토 월렛의 개요 - 크립토 월렛을 구성하는 주요 기술

by 비트코기 2023. 9. 29.

크립토 월렛 분석과 검토를 통한 개인키 관리 및 사례 연구

03. 크립토 월렛의 개요


제4절. 크립토 월렛을 구성하는 주요 기술

1. 암호 기술

암호란 사람이 읽고 이해할 수 있는 평문(Plaintext)을 다른 사람이 읽거나 해독하지 못하도록 암호문(Ciphertext)으로 바꾸는 모든 원리, 수단 방법을 의미한다. 초기 암호의 목적은 기밀성에 있다. 패스워드를 암호로 인식하는 경우가 있지만 패스워드는 특정 시스템에 접근하기 위한 권한 여부를 검증하는 수단이라면 암호는 특정 정보를 다른 사람이 해독 불가능한 상태로 변형하는 것을 말한다. 이렇게 평문을 암호문으로 암호화할 때는 암호 알고리즘을 구현에 필요한 가변 정보인 키(Key)가 필요하고 일반적으로 암호화할 때의 키와 복호화할 때의 키가 필요하다.

 

<그림 4-1> 암호 메커니즘

 

블록체인 기반의 크립토 월렛에서는 암호화된 키를 사용하여 개인 식별 및 거래 보안성을 유지해야 한다. 이러한 암호화된 키 기술은 비밀키(대칭키) 암호화 및 공개키(비대칭키) 암호화와 같은 다양한 암호화 기술을 사용하여 구현된다.

 

가. 비밀키 암호화

 

비밀키는 암호화 키와 복호화 키가 같은 키를 의미한다. 송신자는 평문을 비밀키로 암호화하고 암호문을 비밀키를 함께 수신자에게 보낸다. 수신자는 수신한 비밀키로 암호문을 복호화한다. <그림 4-2>은 비밀키의 개념도이다.

 

<4-2> 비밀키 개념도

 

이러한 비밀키 암호화는 키를 함께 전송하기 때문에 전송 과정에서 악의적 해커(Hacker)가 MITM(Man In The Middle) 공격으로 암호문과 키를 탈취할 수 있다. 또한, 비밀키 암호 기술은 키만 있으면 암호문을 해독할 수 있기 때문에 키를 어떻게 수신자에게 안전하게 전달하느냐는 키 배송 문제가 발생한다. 공개키 암호 기술은 비밀키의 키 배송 문제를 해결할 수 있다.

 

나. 공개키 암호화

 

비밀키의 키 배송 문제를 해결하기 위해 공개키 암호 기술은 서로 다른 암호화 키와 복호화 키를 사용한다. 공개키는 수학적으로 아주 밀접하게 연관된 쌍으로 구성된 2개의 키를 발행하여 하나의 키를 이용해서 암호화하면 반드시 그 키와 쌍을 이루는 다른 키로만 복호화가 가능하도록 설계되어 있다. 이러한 키는 각각 공개키(Public Key)와 비밀키(Private Key)라고 하며 비밀키는 나만이 알고 있으므로 암호키 시스템에 고유성을 부여하게 된다.

 

<그림 4-3> 공개키 개념도

 

공개키 암호 기술을 통한 암호문 이용한 처리 절차는 <표 4-1>과 같다.

 

<표 4-1> 공개키 암호 기술을 이용한 암호문 처리 절차

처리 절차 설명
키 발행 수신자는 수학적으로 쌍을 이룬 개인키와 공개키를 발행한다.
전송 발행된 개인키와 공개키 중 공개키를 송신자에게 전송한다.
암호화 송신자는 수신자의 공개키를 이용하여 평문을 암호화한다.
복호화 수신자에게 암호문이 전송되면 개인키를 이용하여 암호문을 복호화한다.

 

암호화 키와 복호화 키가 서로 달라 키를 직접 배송할 필요가 없어 공개키 기술을 사용하면 키 배송 문제가 해결되고 공개키는 복호화에는 사용될 수 없으므로 해커에게 전송 중 공개키를 탈취하더라고 아무런 의미가 없다.

 

공개키와 개인키는 수학적으로 밀접하게 연관되어 있고 공개키를 통해 개인키를 유추하는 것은 매우 어렵고 반면, 개인키를 통해 공개키 생성은 쉬워야 한다. 이를 위해 많이 사용되는 수학적 알고리즘은 소인수분해와 타원곡선 알고리즘이다. 이렇게 수학적 알고리즘을 이용해 키 배송 문제를 해결했지만, 상당히 많은 연산을 요구하게 되고 처리 속도가 너무 느려 용량이 큰 평문을 암호문으로 처리하는 데 현실적인 한계가 있다. 따라서 속도가 빠른 비밀키와 키 배송 문제를 해결한 공개키를 혼용한 전자봉투라는 기술을 이용한다.

 

2. 전자서명

전자서명은 공개키 암호 기술을 이용한 대표적인 사례로 우리는 카드 결제를 하거나 각종 계약서를 사용하는 등 일상생활에서 서명이라는 행위를 자연스럽게 경험하고 사용하고 있다. 여기서 주의 깊게 봐야 할 것은 전자서명의 가장 우선적인 목적이 기밀성이 아니라 특정 개인이 서명하고 다수의 사람이 검증하는 인증성에 있다는 것이다.

 

공개키 암호 기술에서는 수신자가 키를 발행하고 공개키를 송신자에게 전달하여 송신자가 암호화한 것을 수신자만 개인키를 이용해서 검증했지만, 전자서명은 서명자가 키를 발행하고 개인키로 암호화하여 다른 다수의 사람이 공개키를 이용하여 검증(복호화)하는 것입니다. 이러한 전자서명을 통해 얻을 수 있는 효과는 크게 세 가지로 첫 번째는 인증성, 두 번째는 부인방지, 세 번째는 무결성이다. 즉, 기밀성과 전자서명에 따라 공개키 암호 기술은 주체가 서로 다고 암호화와 복호화 당사자도 반대가 되는 것이다.

 

전자서명에서 전자문서를 개인키로 암호화하여 전자서명을 생성해도 되지만 일반적으로 전자문서의 해시값을 먼저 구하고 해시값을 개인키로 암호화하여 사용한다. 이는 공개키 암호 기술의 느린 속도를 개선하고 검증 과정에서 전자문서를 직접 비교하는 것보다 해시값끼리 비교하여 검증하는 것이 효율적이기 때문이다. <그림 4-4>와 <표 4-2>는 전자서명의 원리를 도식화하고 설명한 것이다.

 

<그림 4-4> 전자서명 원리

 

<표 4-2> 전자서명 원리를 단계별로 설명

구분 단계 설명
전자서명
생성
① 키 발행 계약자는 공개키와 개인키를 발행한다.
② 해시값 생성 전자문서를 해시함수를 이용하여 해시값으로 변환한다.
③ 개인키 암호화 변환된 해시값을 발행된 개인키를 이용하여 암호화한다.
④ 전자서명 생성 전자문서가 해시함수와 개인키를 이용해서 전자서명으로 생성된다.
⑤ 공개키 공개 계약자가 발행한 공개키를 다수에게 공개한다.
⑥ 전송 전자문서와 전자서명을 전송한다.
전자서명
검증
⑦ 해시값 생성 수신한 전자문서를 해시함수를 이용하여 해시값으로 변환한다.
⑧ 공개키 복호화 전자서명을 계약자가 발행한 공개키를 이용하여 복호화한다.
⑨ 검증 전자문서로 만든 해시값이 공개키로 복호화한 전자서명의 해시값을 비교하여 검증한다.

 

위와 같은 과정을 통해 인증, 무결성 검증, 부인방지의 효과를 기대할 수 있다. 이러한 전자서명에 전자봉투 기술을 적용하게 되면 전자문서를 비밀키로 암호화하고 전자문서를 암호화한 비밀키를 수신자의 공개키로 암호화하여 전송한다. 수신자는 본인의 개인키를 이용하여 비밀키를 복호화해서 이 비밀키를 이용해 암호화된 전자문서를 복호화하게 된다. 비밀키를 따로 공개키 암호 기술을 이용해서 암호화해서 보내는 것을 전자봉투라고 한다.

 

3. 해시함수

해시함수란(Hash Function) 임의의 길이의 데이터를 고정된 길이의 데이터로 출력하는 함수를 의미한다. 어떤 크기의 데이터를 입력하더라도 해시함수를 거치면 고정된 길이를 지닌 암호문이 출력된다. 예를 들어 SHA 256(Secure Hash Algorithm 256) 해시 알고리즘을 이용하면 어떤 크기의 데이터도 256비트의 데이터로 출력되는 것이다. <표 4-3>은 해시함수의 원칙과 특성이다.

 

<표 4-3> 해시함수의 원칙과 특성

구분 항목 설명
원칙 압축성
(Compression)
가변 길이의 입력값에 대해 고정된 크기(길이)의 결과값을 출력해야 한다.
효율성
(Efficiency)
어떠한 입력값에 대해 해시값을 구하는 데 있어 많은 자원과 노력이 소요되지 않고 빠른 계산 속도를 보장해야 한다.
단방향성
(One-Wayness)
해시값으로부터 입력값을 계산하는 것이 불가능해야 한다.
충돌 회피성
(Collision Resistance)
약한 충돌 회피성
(Weak Collision Resistance)
입력값과 해시값을 알고 있는 상황에서 같은 해시값을 계산할 수 있는 다른 입력값을 찾는 것이 불가능해야 한다.
x가 주어졌을 때 Hash function(x’)=Hash function(x)인 x′(≠x) 을 찾는 것은 계산적으로 어려워야 한다.
강한 충돌 회피성
(Strong Collision Resistance)
같은 해시값을 계산할 수 있는 입력값 쌍을 찾는 것은 불가능해야 한다.
Hash function(x’)=Hash function(x)인 서로 다른 임의의 두 입력 x와 x’을 찾는 것은 계산적으로 어려워야 한다.
특성 역상 저항성
(Preimage Resistance)
해시값을 확인한 상황에서 생성할 수 있는 입력값을 찾는 것이 계산상 어렵다는 것을 의미하는 특성이다.
제2 역상 저항성
(Second Preimage Resistance)
입력값과 해시값이 확인된 상황에서 동일한 해시값을 계산하는 다른 입력값을 찾기가 어렵다는 의미의 특성이다.
충돌 저항성
(Collision Resistance)
동일한 결과의 해시값을 생성하는 두 개의 입력값을 찾기가 어렵다. 즉, 서로 다른 입력값 추측에 저항하는 성질이다.

 

이러한 구성 원칙과 특성을 가진 해시함수에 의해 만들어진 고정된 길이의 데이터는 다양한 방법으로 사용하게 되는데 블록체인에서는 아래와 같이 사용된다.

 

블록체인에서 해시함수는 형태적 구조, 탈중앙 구현, 화폐 송수신 서비스의 모든 영역을 공개키 암호 기술과 해시함수라는 암호 기술을 사용한다. 트랜잭션, 블록, 블록체인 구조에서 해시함수가 사용되고 탈중앙 구현을 위한 합의 알고리즘, 위변조 방지를 위해 해시함수가 사용된다. 또한 크립토 월렛에서 키 생성·관리 영역에서 해시함수가 사용된다.

반응형

댓글