본문으로 건너뛰기

하드웨어 서명 장치에 니모닉이 저장될까?

예전 블로그에 댓글로 받았던 질문에 대한 답변을 다시 정리했습니다. 하드웨어 서명 장치는 개인키로 거래에 서명하는 기기입니다. 이 기기와 니모닉, 개인키의 관계를 제가 이해하고 있는 범위에서 설명합니다.

개인키와 니모닉의 관계

비트코인은 개인키(Private Key)와 공개키(Public Key)의 쌍을 사용합니다. 개인키로 거래에 서명하고 공개키로 서명을 검증합니다. 입금 주소는 공개키 등을 바탕으로 주소 형식에 맞게 만듭니다. 거래 내용을 암호화해서 숨기는 용도는 아닙니다. 따라서 비트코인을 직접 보관할 때 가장 중요한 것은 개인키를 보호하는 일입니다.

니모닉은 뭐냐, 개인키와 주소를 복구하는 데 필요한 비밀 정보를 사람이 기록하고 보관하기 쉬운 단어로 표현한 것입니다. BIP39 방식에서는 12개나 24개 등의 단어로 된 니모닉과 선택적 패스프레이즈를 이용해 시드를 만듭니다. 패스프레이즈를 사용했다면 복구할 때도 같은 패스프레이즈가 필요합니다.

같은 니모닉과 같은 패스프레이즈로는 같은 시드가 만들어집니다. 패스프레이즈가 달라지면 시드도 달라집니다. 그리고 BIP32 방식에서는 하나의 시드에서 여러 개인키와 공개키를 계층적으로 파생합니다. 니모닉 하나가 개별 개인키 하나와 1:1로 대응하는 것은 아닌 거죠. 단어를 입력하거나 기기가 지원하는 QR코드를 스캔하는 것은 이 복구 정보를 기기에 전달하는 방법입니다.

개인키는 어디에 있나?

개인키로 사용할 수 있는 숫자의 범위는 암호학적 규칙으로 정해져 있고, 후보 수는 대략 2의 256승 규모입니다. 그렇다고 개인키들이 비트코인 네트워크에 미리 만들어져 보관되어 있는 것은 아닙니다. 서명 장치가 무작위성을 바탕으로 비밀 정보를 생성하고, 니모닉과 시드에서 계산 규칙에 따라 개인키를 파생하는 것입니다.

그러면 개인키는 어디에 있느냐가 궁금할 겁니다. 서명할 때는 서명 장치가 실제 개인키를 사용합니다. 개인키 자체를 보관할 수도 있고, 필요할 때 개인키를 파생할 수 있는 시드 등의 비밀 정보를 보관할 수도 있습니다. 네트워크는 개인키 저장소가 아닙니다. 비트코인 개발자 문서의 서명 장치 설명도 키를 다루는 기능과 거래를 전달하는 기능을 구분합니다.

주사위를 쓰는 방식도 충분한 무작위성을 확보해 비밀 정보를 생성하려는 방법입니다. 이미 네트워크에 있는 개인키에 접근 권한을 받는 절차는 아닙니다. 다른 사람과 우연히 같은 키를 만들 가능성이 극히 작다는 설명도 충분한 무작위성을 갖춰 올바르게 생성했다는 전제가 있어야 합니다.

하드웨어 서명 장치 속에 니모닉은 저장되나?

하드웨어 서명 장치에 니모닉은 저장될까요? 기기마다 다릅니다. 니모닉 단어 자체가 아니라 그에 해당하는 비밀 정보나 시드, 키를 암호화하거나 보안 칩 안에 보관하는 방식이 있습니다. 어떤 형태로 보관하는지는 모델과 구현을 확인해야 하지만, 단순히 외부의 개인키에 접근할 수 있다는 ‘권한 표시’만 저장하는 것은 아닙니다.

반면 비밀 정보를 영구 저장하지 않는 무상태 서명 장치는 사용할 때마다 니모닉 등을 불러와 키를 파생하고, 서명하는 동안에는 그 키를 메모리에서 다룹니다. 전원을 끈 뒤에도 비밀 정보를 보관하는 기기와 사용 중에만 불러오는 기기는 구분해야 합니다.

제가 설명하려는 핵심은 저장 형식이 무엇이든 서명 장치는 실제 비밀 정보를 다룬다는 점입니다. 니모닉 단어가 그대로 저장되지 않는다고 해서 키 보관 위험이 없어지는 것은 아닙니다.

다른 하드웨어 서명 장치로 기존 니모닉을 사용할 수 있나?

할 수 있습니다. 호환되는 A 하드웨어 서명 장치와 B 하드웨어 서명 장치에 같은 니모닉과 패스프레이즈를 입력하면 같은 시드를 만들 수 있습니다. 다만 기존에 쓰던 키와 주소를 복구하려면 파생 경로와 주소 형식도 맞아야 합니다. 호환되는 소프트웨어 서명 장치에서도 복구할 수 있지만, 그 소프트웨어 서명 장치 역시 실제 비밀 정보를 다루게 되는 것이므로 어디에 입력할지 신중히 선택해야겠죠.

BIP39는 2048개 단어로 된 목록을 사용해 니모닉을 구성하고, 니모닉과 패스프레이즈에서 시드를 만드는 방법을 정합니다. BIP32는 그 시드에서 여러 키를 파생하는 방법을 정합니다. BIP39를 지원한다는 사실만으로 모든 서명 장치의 복구 조건이 같아지는 것은 아닙니다.

따라서 기존 하드웨어 서명 장치를 잃어버려도 필요한 니모닉과 패스프레이즈를 보관하고 있고 복구 조건이 맞으면, 다른 하드웨어 서명 장치에서 원래 사용하던 키와 주소를 복구할 수 있습니다. 그러나 분실한 기기의 비밀 정보가 노출될 우려가 있다면 새로운 니모닉으로 키를 생성하고, 그 키로 관리하는 주소로 자금을 옮기는 것이 좋겠죠. PIN의 보호 방식과 입력 횟수 제한 등은 기기마다 다르므로, 분실한 기기에서 키를 알아낼 수 있는지를 PIN 길이만으로 단정할 수는 없습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유