티스토리 뷰

 

비트코인 주소를 생성하는 일은 그저 바닷가에서 모래알을 줍는 것 처럼 수많은 주소들 중 하나를 선택하는 일에 불과하기 때문에 얼마든지 인터넷연결없이 주소를 생성할 수 있다.

 

하지만 비트코인 트랜잭션을 발생시키려면 해당 트랜잭션을 비트코인 네트워크에 보내야 하기 때문에 인터넷 연결이 반드시 필요하다.

 

그리고 인터넷이 연결된 상황에는 언제나 해킹의 위험 있을 수 있다.

 

이를 원천적으로 차단할 수 있는 방법은 없을까.

 

간단하진 않지만 이는 QR코드를 이용하여 가능하다!

 

이를 실현하기 위해서는 비트코인 트랜잭션을 만들고 인터넷(비트코인 노드)로 전송하는 일련의 과정을 먼저 이해하는 것이 중요하다.

 

비트코인 트랜잭션을 발생시키는 프로세스를 간단히 정리하자면 아래와 같다

  1. 출금할 비트코인 주소와 입금할 비트코인 주소와 그리고 수량과 수수료를 정한다.
  2. 그리고 해당 거래 내용을 비트코인 프로토콜에 맞게 작성한다.
  3. 해당 트랜잭션(요청서)에 비밀키로 서명한다.
  4. 서명된 트랜잭션을 인터넷(비트코인 노드)으로 전송한다.

 

이 과정에서

꼭 알아두어야 할 하는 것은 위 3번의 결과, 즉 서명된 트랜잭션 전문에는 비밀키가 포함되어 있지 않다는 사실이다. 단지 나의 디지털 서명만 포함된다. 이 서명으로부터 비밀키를 찾아낼 수는 없다. (단지 공개키를 얻어낼 수 있을 뿐이다) 그렇기 때문에 서명된 트랜잭션 전문이 공개되는 것은 결코 위험하지 않다!

 

그러므로 위 과정 중 1,2,4 번은 인터넷 연결된 PC에서 진행하고, 3번만 인터넷에 연결되지 않은 PC에서 처리하면 된다.

 

그렇다면 1,2번에서 작성된 트랜잭션과 서명된 트랜잭션을 어떻게 오프라인 PC로 전달하고 꺼내올 수 있을까.

 

이때 바로 qrcode 를 이용하면 된다!

 

QR코드를 이용해 아래와 같은 절차를 따르면 된다.

 

1,2번은 온라인PC에서 처리하고 그 결과를 QR코드를 이용하여 오프라인 PC로 전달한다.

오프라인 PC에서는 3번을 처리하고 그 결과를 다시 QR코드로 온라인PC로 전달한다.

 

이렇게 하면 비밀키를 사용하는 오프라인 PC는 오프라인 상태를 유지하며 비트코인 거래를 발생시키는 것이 가능하다!

파이썬으로 QR코드 생성하는 방법

 

그리고 이 방법은 실제로 많은 하드지갑에서 인터넷 연결없이(air gapped) 비트코인을 출금할 때 사용하는 방법이다.

 

 


 

https://youtu.be/cFupxePgLyU

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함