본문으로 건너뛰기

하드월렛에 니모닉이 저장될까?

예전 블로그에 댓글로 받았던 질문에 대한 답변을 다시 정리했습니다. 하드월렛, 니모닉, 개인키의 관계성을 정리한 것이고, 제가 이해하고 있는 범위 내에서 설명한 것이니 감안하고 봐주세요.

개인키와 니모닉의 관계

비트코인은 비대칭암호화 방식으로 암호화를 하는데 여기에 사용되는 것이 개인키(Private Key)와 공개키(Public Key)의 쌍입니다. 개인키는 서명하는데 사용하고, 공개키에서는 입금 주소를 만들어냅니다. 따라서 비트코인에서 가장 중요한 것은 개인키입니다.

니모닉은 뭐냐, 바로 개인키를 기억하기 쉽게 만들어 놓은 방법론입니다. 12개 니모닉으로도, 24개 니모닉으로도 개인키를 만들 수 있고, 니모닉에 패스프레이즈를 추가해서도 개인키를 만들 수 있습니다. 개인키를 만들기 위한 방법이 니모닉이고, 니모닉은 인간이 기억하고 저장하기 쉽게 되어 있으므로 니모닉을 잘 보관만 하면 개인키로 바꿀 수 있는거죠.

일반적으로 니모닉(패스프레이즈 조합 포함)과 개인키는 1:1 매칭됩니다. 그래서 니모닉을 잘 보관하는 것이 개인키를 보관하는 것이죠. 하드월렛에는 니모닉으로 개인키를 '선택하는 것'입니다. 여기서 주의깊게 보셔야 할 단어가 '선택'입니다. '개인키'를 니모닉으로 '선택하는 방법'이 단어를 입력하는 것 또는 QR코드를 스캔하는 것입니다.

개인키는 어디에 있나?

제가 '개인키'를 '선택'한다고 적었습니다. 생성하는 것이 아니라 선택하는 것입니다. 암호학적으로 비트코인 네트워크에서 사용할 수 있는 개인키는 2의 256승개 입니다. 전 우주 속의 원자 개수보다 많은 조합이라고 알려져 있습니다. 개인키는 이미 만들어져 있고, 그것들 중 하나를 선택해서 사용하는 것입니다. 선택하기 위해 니모닉 단어의 조합으로 개인키를 만드는 것이죠.

그러면 개인키는 어디에 있느냐가 궁금할 겁니다. 개인키는 규칙(공식) 속에 있습니다. 비트코인 네트워크가 이미 만들어 놓은 규칙(공식) 속에 존재하고 있는데, 그 중 하나를 니모닉 단어의 조합으로 개인키를 만들어 선택하는 것입니다. 수많은 조합 중 하나를 선택하는 것이므로 중복가능성이 거의 없는 것이고요.

개인키는 규칙(공식)으로 이미 존재하기 때문에 하드월렛에서 니모닉을 사용하거나, 주사위를 굴리거나 하는 것으로 개인키를 만들지 않습니다. 이미 있는 조합 중 하나를 선택하는 것입니다.

하드월렛 속에 니모닉은 저장되나?

하드월렛에 니모닉(개인키)은 저장될까요? 아닙니다. 하드월렛에 저장되는 것은 이미 존재하고 있는 개인키에 접속할 수 있는 '권한'을 하드월렛에 부여한 것입니다. 내가 선택한 개인키에 접근할 수 있는 '권한'을 부여했기 때문에 바로 서명할 수 있는 것일 뿐 개인키 자체가 하드월렛에 저장되지는 않습니다.

'권한'을 부여했다는 표시를 기기의 저장장치에 저장하느냐, 아니면 휘발시키느냐에 따라 다른 것 뿐입니다. 권한 부여 표시를 기기에 저장하면 바로 서명할 수 있는 것이고, 저장하지 않으면 서명하기 위해 개인키를 니모닉을 사용하여 그때마다 열고 접근이 끝나면 닫는 것이죠.

약간 추상적이라서 상상이 필요한데, 제가 설명드릴 수 있는 최선이 이 정도네요.

다른 하드월렛으로 기존 니모닉을 사용할 수 있나?

할 수 있습니다. 개인키(니모닉)에 접근할 수 있는 권한을 A 하드월렛에 부여해서 내가 선택한 개인키에 접근할 수도 있고, 다른 B 하드월렛을 구입해서 동일한 개인키에 접근하게 할 수도 있습니다. 하드월렛이 아니라 소프트월렛에도 접근 권한을 부여할 수도 있겠죠. 내가 선택한 개인키에 어떤 것에 접근 권한을 주느냐를 선택하는 것이라고 보면 되겠죠.

월렛마다 개인키에 접근하는 방법을 표준화 시켜 놓은 것이 바로 BIP-39라고 하는 방법이고, 여기에 니모닉 단어를 2048개로 고정해 놓고 이 단어들의 조합(또는 패스프레이즈 포함)으로 개인키를 선택하도록 해 놓은 것입니다.

따라서 기존 하드월렛을 잃어버리면 다른 하드월렛을 구입해서 보관하고 있던 니모닉을 불러서 원래 사용하던 개인키를 그대로 사용할 수도 있습니다. 그러나 잃어버렸다면 다른 개인키로 갈아타는 것이 좋겠죠. 하드월렛에 접근하는 핀번호(비밀번호)는 조합이 훨씬 간단하니 그것을 알아내서 비트코인을 송금해 버릴 수 있을테니까요.