개인이 직접 만드는 무작위 시드
원본 영상 0:06비트코인 지갑의 출발점은 무작위 숫자입니다. 이 무작위 값을 기기에 의존하지 않고 사용자가 직접 만들고자 할 때, 주사위를 굴려 나온 값을 직접 입력하여 지갑을 생성할 수 있습니다. 이는 사용자가 무작위 생성 과정에 직접 개입함으로써 기기의 잠재적인 위험을 줄이는 방법입니다.
이렇게 만들어진 시드는 니모닉이라는 12개 또는 24개의 단어 형태로 변환되어 지갑을 복원하는 데 사용됩니다.
무작위로 생성한 시드를 두 개 이상의 독립된 기기로 검증하여 보안을 강화하는 방법이 제시되었습니다.
이 채널 새 영상도 이렇게 정리해 드릴까요?
비트코인 지갑의 출발점은 무작위 숫자입니다. 이 무작위 값을 기기에 의존하지 않고 사용자가 직접 만들고자 할 때, 주사위를 굴려 나온 값을 직접 입력하여 지갑을 생성할 수 있습니다. 이는 사용자가 무작위 생성 과정에 직접 개입함으로써 기기의 잠재적인 위험을 줄이는 방법입니다.
이렇게 만들어진 시드는 니모닉이라는 12개 또는 24개의 단어 형태로 변환되어 지갑을 복원하는 데 사용됩니다.
만약 지갑 생성에 사용되는 단일 기기의 소프트웨어가 변조되었다면, 겉으로는 주사위 값을 정상적으로 받는 것처럼 보여도 실제로는 공격자가 의도한 특정 단어를 생성할 수 있습니다. 화면만으로는 이러한 변조 여부를 구분하기 어렵습니다.
이러한 위험 때문에 지갑 생성 과정을 단일 기기에만 맡기지 않고, 여러 기기를 통해 교차 검증하는 방식이 제안됩니다. 이를 통해 소프트웨어 변조 가능성을 확인하고 자금의 안전을 확보할 수 있습니다.
이 영상에서는 두 가지 유형의 독립적인 서명 전용 기기가 소개됩니다. 첫 번째는 시드 사이너로, 라즈베리파이 같은 저렴한 부품으로 직접 조립해 사용하는 서명 전용 기기입니다. 이 기기는 인터넷에 연결하지 않고 QR코드만을 이용해 외부와 통신하는 특징을 가집니다.
두 번째는 크럭스입니다. M5스틱V나 마이스 아미고와 같은 소형 기기에 펌웨어를 설치하여 사용하는 지갑으로, 시드 사이너와 마찬가지로 인터넷 연결 없이 독립적으로 동작합니다. 두 기기 모두 오프라인 환경에서 작동하여 보안성을 높이는 데 중점을 둡니다.
이 영상에서 시연을 위해 사용된 주사위 값과 12단어 니모닉은 모두 영상 촬영을 위해 임시로 생성된 값입니다. 이 정보들은 영상을 시청하는 모든 사람에게 공개되어 있으므로, 어떠한 경우에도 실제 자금을 보관하는 지갑에 사용해서는 안 됩니다.
이러한 공개된 니모닉을 사용하여 지갑을 만들 경우, 해당 지갑에 입금된 모든 자금은 이 영상을 본 다른 누구라도 접근하여 가져갈 수 있는 위험이 있습니다. 시뮬레이터나 데모 목적으로 생성된 니모닉은 실제 자산과 관련되지 않도록 주의해야 합니다.
시드 사이너에서 무작위 시드를 사용자가 직접 만들려면, 기기의 '도구' 메뉴 안에서 '주사위' 항목으로 들어가야 합니다.
12단어 니모닉은 128비트의 무작위성을 요구하며, 이를 충족하기 위해 최소 50번의 주사위 굴림이 필요합니다. 50번은 이 문턱을 겨우 넘기는 최소 횟수입니다.
24단어 니모닉의 경우 256비트의 무작위성이 필요하므로, 약 99번 또는 100번의 주사위 굴림이 권장됩니다. 이 최소 횟수는 BIP 39 표준에 따라 각 기기가 구현하는 방식에 해당합니다.
실제로 비트코인 지갑을 만들 때는 주사위를 굴려 나온 눈금을 반드시 종이에 순서대로 기록해야 합니다. 이는 단순히 기억에 의존하는 것을 넘어섭니다.
오늘과 같이 두 번째 기기로 교차 검증을 하려면 첫 번째 기기에 입력했던 것과 동일한 주사위 값을 다시 입력해야 합니다. 기록된 값은 정확한 재입력을 가능하게 하여 검증 과정의 신뢰성을 높입니다.
시드 사이너는 12개의 니모닉 단어를 4개씩 세 화면에 나누어 표시합니다. 예를 들어, 첫 화면에는 1번부터 4번까지, 두 번째 화면에는 5번부터 8번까지, 세 번째 화면에는 9번부터 12번까지의 단어가 나타납니다. 이 단어들은 오늘 시뮬레이션의 정답지로 사용되며, 크럭스 기기가 같은 단어를 동일한 순서로 생성하는지 확인할 예정입니다.
이 12단어는 BIP 39 표준에 따라 정해진 2048개의 일반적인 영어 단어 목록에서 선택됩니다. 이 목록은 공개되어 있으며 모든 BIP 39 호환 지갑이 동일한 목록을 사용하므로, 다른 회사 지갑에 입력해도 같은 자금을 복원할 수 있습니다. 단어 앞의 번호는 중요하며, 순서가 틀리면 전혀 다른 지갑이 되므로 기록 시 번호와 함께 정확히 적어두어야 합니다.
니모닉 백업을 확인할지 묻는 질문에 검증을 선택하면, 기기는 무작위로 하나의 단어를 골라 퀴즈를 냅니다. 예를 들어, '단어 검증 10번'이라고 뜨면 열 번째 단어가 무엇이었는지 네 개의 후보 중에서 고르도록 합니다. 이 과정은 사용자가 니모닉을 정확하게 기록했는지 확인하기 위함입니다.
니모닉을 잘못 적는 실수는 생각보다 흔하며, 비슷한 단어를 헷갈리거나 순서를 밀려 적는 경우가 자주 발생합니다. 이러한 실수는 보통 몇 년 뒤 지갑 복원을 시도할 때야 비로소 드러나는데, 그때는 이미 너무 늦은 상황일 수 있습니다. 따라서 백업 검증 절차는 잠재적인 사고를 예방하는 데 매우 중요합니다.
시드 확정 화면에서는 '지갑 아이디'라는 8자리 값이 처음으로 등장합니다. 이는 시드 자체는 아니지만, 12단어 니모닉에서 파생된 마스터키의 짧은 지문입니다. 이 지갑 아이디는 교차 검증 과정에서 매우 유용합니다. 12개의 단어를 일일이 비교하는 대신, 이 8자리 값만으로도 두 기기가 동일한 시드를 생성했는지 한눈에 확인할 수 있기 때문입니다. 단어 하나만 달라져도 이 지갑 아이디 값은 완전히 다르게 생성됩니다. 멀티시그 지갑 사용자에게는 익숙한 값으로, 각 키가 어느 기기의 것인지 구분하는 데 사용됩니다.
화면 하단에는 BIP 39 패스프레이즈 기능도 있습니다. 이는 12단어 위에 추가적인 비밀번호를 덧씌워 보안을 강화하는 기능이지만, 두 기기의 니모닉 비교를 위해 이번 시뮬레이션에서는 사용하지 않고 넘어갑니다.
크럭스의 첫 화면에는 여러 메뉴 중 '새로운 니모닉'을 선택합니다. 다음으로 무작위 소스를 묻는 화면에서 카메라, 니모닉 단어 입력, 일반 주사위, 20면체 주사위 중 '일반 주사위'를 선택합니다. 크럭스는 20면체 주사위도 지원하여 굴림 횟수를 줄일 수 있지만, 시드 사이너와의 조건 일치를 위해 일반 주사위를 사용합니다.
'니모닉 단어 입력' 메뉴를 통해 시드 사이너에서 생성된 12단어를 직접 입력하여 두 기기의 지갑 아이디를 비교할 수도 있습니다. 그러나 이 시뮬레이션의 목적은 주사위 값으로부터 단어가 파생되는 계산 자체를 두 기기에서 반복 검증하는 것이므로, 다시 주사위 값을 입력하는 절차를 따릅니다.
크럭스에서 일반 주사위를 선택하면 시드 사이너와 마찬가지로 12단어 또는 24단어 니모닉 중 하나를 만들지 묻습니다. 시드 사이너와 동일하게 12단어를 선택합니다. 그러면 '니모닉을 생성하려면 주사위를 최소 50번 굴리십시오'라는 안내 문구가 나타납니다.
이는 두 기기가 BIP 39 규칙을 각자 구현했음에도 12단어 니모닉 생성에 필요한 최소 주사위 횟수가 50회로 정확히 일치함을 보여줍니다. 시드 사이너는 50회를 채우면 자동으로 다음 단계로 넘어가지만, 크럭스는 '최소 50번'이라고 안내한 후 사용자가 원하면 더 많은 주사위를 굴릴 수 있도록 여지를 둡니다. 이 여유분은 실제 사용 시 오류 발생 확률을 낮추는 데 도움이 됩니다.
크럭스의 주사위 입력 화면에는 현재 주사위 굴림 횟수가 0으로 표시되고 진행 상황을 나타내는 빨간 막대가 비어 있습니다. 숫자판을 이용해 1부터 6까지의 주사위 값을 순서대로 입력합니다. 시드 사이너에 입력했던 값과 동일하게 넣습니다.
예를 들어, 15번의 주사위 값을 입력한 시점에서는 지금까지 입력된 값의 끝부분이 화면에 보이고, 아래 막대가 전체의 약 5분의 1 가량 파랗게 채워집니다. 이 막대는 목표 횟수(50회) 대비 얼마나 진행되었는지를 시각적으로 보여줍니다. 50번의 입력을 마치면 막대가 끝까지 채워지고, '선택'을 눌러 다음 단계로 진행할 수 있습니다. 크럭스가 제공하는 이러한 진행 상황 표시는 사용자가 주사위 값을 입력하는 과정에서 횟수를 직접 세지 않아도 되어 실수를 줄이는 데 매우 유용합니다. 실제 기기에서는 50번의 반복적인 작업이 중간에 혼동을 줄 수 있기 때문입니다.
크럭스는 주사위를 50번 굴렸음에도 불구하고 엔트로피 부족 경고를 띄웠습니다. 이론적으로 주사위 50번은 약 129비트의 무작위성을 제공하지만, 이는 여섯 개의 눈금이 완벽하게 고르게 나왔을 때의 이야기입니다. 주사위는 확률에 기반하기 때문에 50번 굴린다고 해서 각 눈금이 정확히 같은 횟수로 나오지 않습니다.
어떤 눈은 자주 나오고 어떤 눈은 드물게 나오는 '쏠림' 현상이 발생합니다. 크럭스는 이러한 쏠림 현상까지 감지하여, 실제 무작위성(엔트로피)이 128비트의 최소 문턱에 미치지 못한다고 사용자에게 경고한 것입니다.
실제로 50번의 주사위 굴림에서 나온 눈금 값을 분석한 결과, 4가 12번으로 가장 많이 나왔고 2는 단 4번만 나왔습니다. 만약 눈금이 완벽하게 고르게 나왔다면 각 눈금은 8번 또는 9번씩 나왔어야 합니다. 이처럼 가장 많이 나온 4와 가장 적게 나온 2는 약 3배의 차이를 보입니다.
이러한 불균형, 즉 한쪽으로 쏠림 현상이 발생하면 실제로 담기는 무작위성의 양이 이론적인 129비트보다 줄어들게 됩니다. 오늘 시뮬레이션의 50개 주사위 값을 그대로 계산해 보면 약 125비트 수준으로, 목표인 128비트에 약 3비트 미치지 못했습니다. 이것이 크럭스가 엔트로피 부족 경고를 띄운 정확한 이유입니다.
크럭스에서 니모닉을 생성하는 과정은 다음과 같습니다. 먼저 50개의 주사위 눈금 값을 하나의 문자열로 연결합니다. 이 문자열을 SHA-256 해시 함수에 입력하면 길이가 고정된 하나의 해시값이 생성됩니다. 이 해시값의 앞부분을 잘라 니모닉 생성의 재료로 사용합니다.
이 재료를 11비트 단위로 나누어 BIP 39 단어 목록의 번호로 해석하면 최종 12개의 니모닉 단어가 됩니다. 특히 크럭스는 이 중간 해시값을 화면에 띄워준다는 점에서 중요합니다. 사용자는 다른 외부 도구를 사용하여 동일한 주사위 문자열의 해시값을 구해보고, 크럭스가 보여주는 중간값과 일치하는지 직접 대조할 수 있습니다. 이는 검증할 수 있는 추가적인 지점을 제공하여 투명성과 신뢰성을 높입니다.
크럭스에서 생성된 12단어 니모닉은 시드 사이너가 보여준 것과 순서까지 완벽하게 일치했습니다. 또한, 화면 제목 아래에 표시된 지갑 아이디(8자리 값) 역시 왼쪽 시드 사이너에 나타난 것과 동일했습니다. 서로 다른 팀이 개발하고, 다른 프로그래밍 언어로 작성되었으며, 각기 다른 기기에서 작동하는 두 지갑이 동일한 주사위 값을 통해 완전히 같은 결과를 도출한 것입니다.
이러한 결과는 두 가지 중요한 사실을 시사합니다. 첫째, 시드 사이너와 크럭스 모두 BIP 39 표준 규칙을 정확히 준수했음을 의미합니다. 둘째, 만약 이 두 기기 중 어느 한쪽의 소프트웨어가 조작되었다면, 이 단계에서 지갑 아이디나 니모닉 값이 달라져 즉시 그 사실이 밝혀졌을 것임을 보여줍니다. 이는 주사위 시드 생성의 교차 검증이 얼마나 강력한 검산 도구인지를 명확히 보여줍니다.
니모닉을 통해 지갑 주소를 생성하는 과정에서는 '파생 경로'가 매우 중요합니다. 동일한 니모닉을 사용하더라도 파생 경로가 다르면 전혀 다른 지갑 주소가 생성될 수 있기 때문입니다. 오늘 시뮬레이션에서는 두 기기 모두 BC1Q로 시작하는 세그윗 주소를 사용하는 동일한 파생 경로를 설정했습니다.
시드 사이너에서 주소 탐색기를 열어 크럭스의 주소 목록과 나란히 비교한 결과, 0번 주소부터 4번 주소까지의 입금 주소 앞자리와 뒷자리가 모두 일치함을 확인했습니다. 주소가 같다는 것은 실제로 자금이 오갈 수 있는 최종 목적지가 동일하다는 의미입니다. 니모닉, 지갑 아이디, 파생 경로, 그리고 최종 주소까지 네 단계에 걸쳐 모든 정보가 일치했으므로, 주사위 시드 생성에 대한 교차 검증은 성공적으로 완료되었습니다.
첫째, 주사위로 만든 시드는 반드시 검산해야 합니다. 같은 주사위 값을 다른 팀에서 개발한 두 번째 지갑 기기에 입력해 보세요. 이때 첫 번째 지갑과 동일한 니모닉, 지갑 아이디, 그리고 첫 번째 지갑 주소가 생성된다면 검증을 통과한 것입니다.
이러한 교차 검증을 통해 사용자는 단일 기기의 결과만을 맹목적으로 신뢰하는 것이 아니라, 독립적인 방식으로 자신의 지갑 생성 과정을 확인할 수 있습니다. 이는 기기 오작동이나 소프트웨어 변조와 같은 잠재적 위험으로부터 자산을 보호하는 중요한 단계입니다.
이 영상에 공개된 12단어 니모닉과 50개의 주사위 값은 영상 시연을 위해 만들어진 것이며, 이미 인터넷에 공개된 값입니다. 따라서 어떠한 경우에도 이 시드를 실제 자금이 담긴 지갑에 사용해서는 안 됩니다. 이 시드로 생성된 주소에 비트코인을 보내면, 이 영상을 본 누구라도 그 자금을 가져갈 수 있습니다. 인터넷에 연결된 컴퓨터의 시뮬레이터에서 만든 시드 또한 동일하게 실제 자금에 사용해서는 안 됩니다.
자막에서 근거가 되는 대목을 찾아 답합니다.
이 채널 새 영상도 이렇게 정리해 드릴까요?
비트코인 지식저장소에 새 영상이 올라오면, 방금 읽으신 것처럼 정리해서 메일로 보내 드릴게요.
이 채널은 지난 7일 동안 2편 올렸어요.
숏츠는 빼고 보내 드려요. 메일이 필요 없어지면 언제든 구독을 끄실 수 있어요.