암호화폐에 공개 키/비공개 키가 있는 이유를 최대한 쉽게 알아보자.
비대칭 키 암호화
1. 대칭 키 암호화의 문제
대칭 키 암호화는 암호화/복호화에 같은 키를 쓰는데 키를 공개적으로 배포하기 힘들다... 키가 공개되어있으면 아무나 다운로드할 수 있는데 이거 딱봐도 안전하지가 않은데...
암호화폐에서 보통 공개 키는 지갑 주소인데 지갑 주소만으로 암호화/복호화가 가능하다면 어떻게 될까?
A가 B에게 10ETH를 보내는데 이 전자 서명을 공개 키(지갑 주소)로 암호화할 수 있고 B가 A의 공개 키로 다시 복호화 해서 트랜잭션이 이뤄지는 것 까지는 문제가 되지 않는다.
그런데 A의 공개 키(지갑 주소)는 단어 그대로 공개되어있으므로 제 3자인 C가 A의 공개 키로 A가 B에게 10ETH를 보내는 전자서명을 만들어낼 수도 있다. 심지어 복호화도 A의 공개키로하므로 아무런 문제가 없다. 즉 제 3자에 의해 A의 계좌에 있는 이더리움을 털어갈 수 있는 것이다.
2. 비대칭 키 암호화
그래서 보통 비대칭 키 암호화를 쓴다. 공개 키(지갑 주소)와 비공개 키가 있고 비공개 키는 전자 서명(A가 B에게 10ETH을 보낸다)을 암호화하고 공개 키는 누구에게나 공개되어있으므로 해당 전자서명이 맞는지 채굴자가 A의 공개 키로 복호화하여 확인 및 검증이 가능하게 되는 것이다.
이제 왜 비대칭 키 암호화를 쓰고 공개 키와 비공개 키가 있어야하는지 다들 아시겠죠..?
3. 대표적인 비대칭 키 암호화 기법과 비트코인/이더리움은 이 중 뭘 쓰나..?
(1) 디피-헬만 키 교환
(2) RSA(Rivest-Shamir-Adleman)
(3) DSA(Digital Signature Algorithm)
(4) 타원곡선 DSA(Elliptic Curve DSA, ECDSA)
이중 비트코인/이더리움은 (4)와 관련이 있다.
비공개 키를 난수 생성기로 생성하고 비공개 키에 타원 곡선 위의 한 점(생성자)를 곱하여 공개 키를 만든다.
여기서 "곱"은 우리가 일반적으로 생각하는 "곱"이 아닌 타원곡선 곱 연산자인데 역원을 구하기가 매우 어렵다.
bruteforce(노가다로)하게 구해야하며 구하는데 우주의 나이보다 오래 걸릴 수 있다고 하니 그냥 불가능하다고 생각하는게 편하다.
즉, 이러한 원리로 공개 키(지갑 주소)로부터 비공개 키를 구하는 것은 거의 불가능에 가깝다.
댓글
댓글 쓰기