이번 포스트에서는 공부한 지식을 기반으로 공개키(public key)와 비공개키(private key)에 대해 알아보고자 한다.
기술 탐구 중심이며, 공부한 바를 기반으로 작성하였으므로, 정확한 정보가 아닐 수 있다.
저번 포스트들을 통해 비트코인이 돈이 될 수 있는지와 블록체인과 관련된 여러 기술들을 알아보았다.
이번에는 블록체인만의 특화된 기술은 아니지만, 현재 비트코인에 적용된 기술인 ‘공개키와 비공개키’를 통해 비트코인 지갑의 원리를 알아보고자 한다.
또한 이번 글을 끝으로 공식적인 비트코인 기술 관련 포스팅은 마치고자 한다.
비트코인 관련 뉴스를 보면 누군가 자신의 비트코인 지갑을 잃어버렸다는 소식이 심심치않게 들려온다. 그리고 대부분의 그들은 어떤 usb나 하드디스크 등 저장매체를 잃어버려, 대형 쓰레기 소각장을 뒤져보곤 한다.
하지만 비트코인 자체는 누군가에게 전송되거나 누군가가 전송하는 것이 아니다. 비트코인은 늘 비트코인 네트워크에 존재한다. 그렇다면 우리는 어떻게 비트코인을 소유하는 것일까?
사실, 우리는 비트코인을 가지고 있는 것이 아니다. 우리는 비트코인 네트워크 상에 있는 비트코인 중 일부를 우리의 것이라고 주장하는 것이다.
이 때 우리가 생각해야하는 것은 앞서 배운 스마트 컨트랙과 nft 기술이다. 물론 이것들이 현재 기술에 적용되는지는 미지수이지만, 이를 떠올리며 다음 주장을 읽으면 이해하기 수월할 것이다. nft 기술은 어떠한 이미지 및 매체 등에 소유권을 주장할 수 있다고 하였다. 스마트 컨트랙을 블록체인 네트워크 상에서 누구도 쉽게 수정하지 못하는 계약을 이행하도록 할 수 있다고 하였다.
이러한 기술을 통하여 우리는 비트코인을 컨트랙에 의해 부여받고, nft에 의해 소유권을 주장할 수 있다고 생각할 수 있다. 물론 앞서 언급한 바와 같이 이것이 실제 기술에 접목되어있는지는 잘 모르겠다.
다만, 현재 비트코인이 어떠한 계약에 의해 우리가 소유권을 주장할 수 있다는 것은 비트코인 지갑의 원리이다. 그렇다면 비트코인은 어떤 것을 매개로 하여 거래가 가능할까? 우리는 어떻게 소유권을 주장할 수 있을까?
비트코인은 네트워크 상에서 비트코인을 주고 받을 때, 암호화를 하여 거래를 한다. 이때 사용하는 암호화는 비대칭적 암호화를 사용한다. 비대칭적 암호화란 무엇일까?
우선, 암호화부터 알아보자. 암호화란 말 그대로 네트워크 상에서 어떠한 물건을 보낼 때 이를 다른 사람이 낚아채서 보지 못하게 암호를 걸어두는 것을 이야기한다. 우리가 흔히 사용하는 https도 http에 비해 최신식 암호화가 적용되어 보안 측면에서 뛰어난 것이다. (http는 누군가 낚아채면 안의 내용을 볼 수 있는 반면, hhtps는 누군가 낚아채도 안의 내용을 볼 수 없게끔 되어있다.)
자 그러면 대칭적 암호화란 무엇일까? 일반적으로 암호화를 진행하면 암호를 해놓은 자물쇠와 암호를 풀 수 있는 키가 필요하다. 여기서 A와 B가 등장하는데, 이는 사람이라고 편하게 생각해보자.
A가 B에게 자물쇠로 잠근 상자를 주려고 한다. 이 때 대칭적 암호화는 자물쇠로 잠근 상자를 줌과 동시에 그 자물쇠의 키도 함께 보내준다. 이 것이 대칭적 암호화이며, 중간에 낚아채는 경우를 생각하면 키도 함께 낚아채기 쉽기 때문에 보안상 취약해보인다.
비대칭적 암호화는 이러한 취약점을 보완한 기술이다. 각 사람은 각자의 자물쇠와 키를 소유하고 있다. A는 A자물쇠와 A키, B는 B자물쇠와 B키를 소유하고 있다고 생각해보자.
A가 B에게 상자를 보내고자 할 때, 우선적으로 B에게 B자물쇠를 받는다. 그리고 상자 안에 A 자물쇠를 넣고 B자물쇠로 상자를 잠군 후 B에게 보낸다. 그러면 그 상자는 B만 열 수 있게 되는 것이다.
이후 B는 A에게 상자를 보내고자 할 때, B자물쇠를 상자 안에 넣고, 자신이 받은 A 자물쇠로 상자를 걸어 잠군 후 보내면 A만 열 수 있게 되는 것이다. 이러한 것이 비대칭적 암호화이다.
여기서 나온 자물쇠는 공개키(public key)이며, 키는 비공개키(private key)이다. 자물쇠는 모두에게 보이게 되므로 공개, 자물쇠를 열 수 있는 키는 자신만 소유하므로 비공개라고 생각하면 편할 것이다.
비공개키, 즉 자물쇠를 열 수 있는 키가 바로 지갑이라고 부를 수 있다. 비트코인을 주고 받는데 비공개키가 필수적으로 필요하고, 자신의 비트코인임을 증명할 수 있는 것이 비공개키이기 때문에, 이를 지갑이라고 부르는 것이다. 그러한 비공개키로 공개키를 만들 수 있으며, 공개키를 누군가에게 공유함으로 비트코인을 거래할 수 있게 된다. 비트코인은 공개키로 종속되어있으나, 비공개키로만 열 수 있는 시스템인 것이다.
그리하여 이번 포스트에서는 비트코인 지갑에 대해서 알아보았다. 앞서 다룬 기술들을 이해하고 있다면, 이번 포스트도 그리 어려운 기술은 아닐 것이다.
또한, 비트코인이 돈이 될 수 있는지로 시작한 블록체인 기술의 포스팅을 비트코인을 담는 지갑 포스팅까지 끌고왔으며, 이를 끝으로 공식적인 블록체인 기술을 다룬 포스트를 마치고자 한다.
비전공자도 쉽게 알 수 있게끔 서술하려 노력했지만, 그렇지 못한 점이 많아 반성하고 있으며, 글을 쓰는 나 조차도 기술을 제대로 이해하지 못하여 글에 나타나는 오류 등이 많을 것으로 생각하여 부끄럽다.
하지만, 이번 포스팅을 통해 조금이나마 블록체인 기술에 대해 알아갈 수 있었으며, 공부하는 데에 있어 큰 도움이 된 유튜버 ‘노마드코더’에게 정말 감사를 표한다.
댓글