비트코인 니모닉의 생성과 관리의 중요성

비트코인을 개인지갑으로 옮길 때 가장 중요한 것은 니모닉의 생성과 보관 문제이다. 비트코인 네트워크에서는 개인키(암호키)와 공개키라는 두 가지 개념이 있다. 개인키는 본인만 알고 있어야 하는 비밀키를 말하며, 공개키는 누구에게 공개되며 비트코인을 개래소 간 또는 거래소와 개인지갑 간, 또는 개인간(P2P) 이동할 때 인터넷 상에서 공개될 수 밖에 없는 것을 말한다.

공개키가 없이는 비트코인을 비롯한 암호화폐를 디지털 상으로 이동할 수가 없는 것이고, 개인키(암호키)가 없이는 거래내역의 비밀이 보장될 수 없는 것이다. 따라서 그 두 개는 쌍으로 연동될 수밖에 없는 구조이다.

그런데 개인키(암호키)는 16진수 64자리( 0~9, a~f )로 이루져 있기 때문에 개인이 기억하고 관리하기에 불편하다. 그래서 나온 것이 니모닉이다. 니모닉이란, 16진수64자리의 난수로 된 암호를 이억하기 좋게 24개(혹은 12개) 영어 단어로 일정한 로직에 의해 연동된 개인키(암호키)의 변환을 의미한다.

그리고 패스프레이즈는 24개 단어에 개인이 희망에 따라 추가로 정한 패스워드를 말하는 데, 패스프레이즈가 추가되면 별 개의 지갑이 된다.

따라서 비트코인 등 암호화폐 사용자는, 개인키와 공개키를 쌍으로 발행해서, 본인의 트랜잭션을 개인키로 서명하여 이동하고 다시 쌍으로 발행된 공개키로 수신하여 확인하는 구조이다.

핵심은 암호키(개인키) 즉 니모닉의 생성(오픈소스, 오프라인)과 관리(철판 여러개, 여러곳)이다.

니모닉 + 패스프레이즈(passphrase)

  • ‘니모닉(24개)’와 ‘니모닉(24개) + 패스프레이즈’는 완전이 다른 지갑이다.
  • 패스프레이즈를 추가하면, 암호키(개인키)의 16진수 64자리가 완전히 다르게 나타난다.
  • 패스프레이즈는 반드시 영어와 숫자를 섞어서 10글자 이상으로 해야 한다.
  • 패스프레이즈는 평소에 쓰는 것으로 해서는 안된다

디지털 서명(개인키/니모닉)과 비트코인 이동원리

  • 개인키 암호화
  • 나의 암호키를 숨기면서 해당 주소의 주인이 나임을 증명하는 방법

  • 예를 들어, 봉봉이가 하늬에게 10BTC 가운데 1BTC를 보낸다고 할 때,

(위 그림 왼편 그림)

  • 거래내역에는 A주소에서 B주소로 1BTC를 보낸다는 내용이 기록
  • 그것을 SHA256함수로 해싱을 해서 해시값으로 표시
  • 봉봉이는 이것을 디센트나 키스톤에 저장되어 있는 암호키(개인키)로 디지털 서명을 한다.
  • 왼편 하단 개인키로 디지털서명값이 나온다

(그런 다음,1. 거래내역, 2. 공개키, 3. 디지털서명을 하늬에게 보냄)

(위 그림 우측 그림)

  • 거래내역을 SHA256함수로 해시값을 찾아내고
  • 디지털서명값을 ‘공개키’로 거래내역(해시값)을 알아낸다.(원래 역산은 안되지만, ‘공개키’라는 힌트가 있으면 역산이 가능)
  • 우측 위 아래 거래내역을 상호 검증한다.

디지털 서명(니모닉)의 의미를 RSA 프로그램으로 이해하기

  • 위 내용을 RSA 공개키 암호화 검증 사이트에서 이해해 보자

https://www.devglan.com/online-tools/…

  • 먼저, 공개키와 암호키(개인키)를 페어로 발행한다.(Generate RSA Key Pair)
  • 거래내역(“봉봉이가 하늬한테 비트코인 1개를 보내줄께”)을 생성하고
  • 그 아래에서 개인키(암호키)로(우측 위의 개인키를 복사해서 붙여넣기 한 다음, Private key에 체크하고) 해시값을 산출(Encrypt)한다.
  • 참고로, 마지막 개인키로 서명 해싱한 해시값과 공개키는 공개되어 있다는 점에 유의하자.

  • 그럼 다음, 위 그림 우측에서 RSA Decryption 에 왼쪽 아래에서 산출한 해시값(개인키로 해싱한 값)을 복사해서 붙여넣기 한 다음, 그 아래에 칸에 왼쪽 상단 공개키를 복사 붙여넣기 하고 Public key 체크하고 복호화(Decryt)한다.
  • 그러면 거래내역이 다시 보이게 된다.
  • 참고로, 개인키가 아닌 공개키로 복호화가 가능한 것은, 처음에 개인키(암호키)와 공개키가 페어(쌍)로 발행되었기에 가능한 것이다. 즉 역산이 가능하다.
  • 이는, 인터넷의 공개된 장소에서, 비트코인 이동이 거래내역을 암호화 한 채 가능하다는 것을 의미한다.
  • 즉, 비트코인을 거래소 간 이동, 거래소와 개인지갑 간의 상호 이동이 거래내역 비밀을 유지한 채 가능하다는 것을 의미한다.
(요약정리) 거래내역을 개인키로 암호화 한 것을, 공개키로 역산해서 거래내역을 풀고 상호 검증한 후 맞다면 공개키가 개인키와 동일한 것(쌍)이 확인되는 것이므로 거래가 성립한 것이 되는 것이다.

핵심은 개인키(암호키/니모닉)의 생성과 관리이다

결론은 암호키(개인키/니모닉)를 안전하게 생성하고 보관하는 것이다.

그래서 암호키(개인키)를 만들(생성할) 때, 중요한 포인트오픈소스 여부오프라인 여부

오픈소스’와 ‘오프라인’ 상태란

  • 해킹 방지를 위해 개인키(암호키/니모닉)을 기기에 의존하지 않는 것, 월렛(지갑)에서 자동으로 생성하는 것을 지양할 것
  • 오픈소스 예 : 주사위를 던져서 엔트로피값을 산출할 것
  • 오프라인 : 이안콜먼에서 니모닉 생성할 때 인터넷과 블루투스 끊고 작업할 것