Cold Storage는 비트코인 개인 키를 일상적으로 쓰는 인터넷 연결 컴퓨터나 휴대전화와 분리해 보관하는 방식입니다. 키는 결제를 허용했음을 검증할 수 있는 서명을 만듭니다. 서명 기기가 꺼져 있어도 온라인으로 잔액을 확인하고 돈을 받을 수 있습니다. 보내려면 기기의 서명이나 안전하게 복구한 키가 필요합니다. 분리는 원격 공격을 줄이지만 백업이나 결제 확인을 대신하지는 않습니다.
앨리스는 비트코인을 오래 보유하려 하지만 노트북으로 업무, 이메일, 파일 다운로드도 합니다. 노트북이 해킹당했을 때 저축의 키까지 바로 공격자에게 넘어가는 것은 원치 않습니다. 그래서 별도의 신뢰할 수 있는 기기에서 키를 만들고 보관합니다. 노트북 앱에는 지갑을 관찰하는 데 필요한 공개 정보만 옮깁니다. 기존 지갑에서 미리 확인한 수신 주소로 비트코인을 보낼 때 서명 기기는 꺼져 있어도 됩니다. 네트워크가 결제를 기록하고 앱이 확인 상태를 보여 줍니다. 돈이 든 파일을 기기로 다운로드하는 것이 아닙니다. 한 달 후 앨리스는 자금 일부를 다른 곳으로 보내려 합니다. 노트북이 누구에게 얼마를 어떤 수수료로 보낼지 초안을 만듭니다. 앨리스는 이를 서명 기기에 전달하고 기기 화면에서 정보를 확인한 다음에야 승인합니다. 기기는 개인 키를 내보내지 않고 지출 허가를 증명하는 디지털 서명을 만듭니다. 서명한 거래를 온라인 앱으로 돌려보내면 앱이 네트워크에 전파합니다. 이러한 역할 분담이 Cold Storage의 핵심입니다. 이름만으로는 기기의 품질, 표시된 주소의 정확성, 고장 후 앨리스가 복구할 수 있는지 알 수 없습니다. [7] [11]
온라인 컴퓨터에서 분리하는 것은 키이지 비트코인이 아닙니다. 각 UTXO, 즉 이전 결제에서 만들어져 아직 쓰이지 않은 출력은 공개 블록체인에 그대로 기록됩니다. 이미 침해된 노트북의 연결만 끊어서는 부족합니다. 단어를 새긴 금속판은 백업이지 서명 장치가 아닙니다. 도난, 화재, 장치 고장과 소유자의 사망을 고려해야 합니다. Glacier Protocol도 준비, 입금, 출금, 조회와 유지 관리를 구분합니다. [9] [10]
백업 단어를 Seed Phrase라고 부릅니다. 선택적으로 쓰는 passphrase는 지갑을 파생하기 위해 직접 정하는 추가 비밀 정보이며 기기 PIN과는 다릅니다. Multisig는 여러 키의 서명을 요구합니다. 신뢰할 수 있는 장치에서 키를 만들고 백업 형식, 사용하는 passphrase와 지갑 구성을 기록합니다. BIP129는 키와 공동 구성을 검증하는 두 단계의 Multisig 설정을 설명합니다. 수신 주소는 컴퓨터뿐 아니라 서명 장치에서도 대조해야 합니다. 소액으로 시작해 수신, 지출과 복구를 시험합니다. 입금 성공만으로 복구가 가능하다고 증명되지는 않습니다. [5] [11]
Seed Phrase와 사용 중인 passphrase로 키를 다시 파생할 수 있지만 올바른 지갑을 찾으려면 다른 정보도 필요할 수 있습니다. 다른 passphrase는 다른 지갑으로 이어지며 잊어버린 것을 대신하지 못합니다. SLIP39 백업 조각은 키 파생의 출발점이 되는 비밀 데이터인 seed의 단순 복사본이 아니며 복구에는 정해진 수가 필요합니다. 도난, 촬영과 손상으로부터 백업을 보호하세요. 실제 백업을 웹사이트나 일반 온라인 컴퓨터에 입력해서는 안 됩니다. [13] [14]
Air gap은 직접적인 네트워크 연결을 없애지만 데이터는 QR이나 microSD 같은 경로로 계속 들어옵니다. 들어온 데이터를 읽는 프로그램인 파서의 결함, 기기 내부 소프트웨어인 펌웨어의 악성 변조나 기만적인 화면은 이런 구성에도 위험합니다. 검증된 펌웨어, 지원되는 형식과 독립적인 거래 검사를 사용하세요. 메모리카드가 감염된 컴퓨터를 치료하지 않으며 QR도 자동으로 안전하지는 않습니다. 유선 Hardware Wallet도 키를 격리할 수 있습니다. 연결 방식만으로 보안이 보장되지는 않습니다. [1] [7] [12]
침입, 몰래 백업을 복사하는 행위, 강압과 상속인의 복구도 고려합니다. 한 사건으로 도난에 충분한 키가 노출되거나 복구 불가능할 만큼 자료가 파괴되지 않아야 합니다. 봉인은 조작 흔적을 보여 줄 수 있지만 복사를 막지는 못합니다. 숨김 지갑이나 미끼 지갑도 강압에 대한 보호를 보장하지 않습니다. 불필요하게 비밀을 드러내지 않으면서 절차와 역할을 기록하세요. 기업의 이중 통제는 개인 보관과 다른 조직 체계가 필요합니다. [9] [10] [13]
Seed를 불필요하게 노출하지 않으면서 백업 상태, 설명의 명확성과 장치 호환성을 확인합니다. 안전한 복구 시험은 올바른 수신 UTXO와 잔액을 자신의 지갑으로 돌려주는 거스름돈(change) UTXO를 찾고 유효한 서명을 만들 수 있어야 합니다. 단어 목록을 받아들였다는 것만으로는 부족합니다. 신뢰할 수 있는 장치에서 시험하세요. 장치나 지갑 규칙을 바꾸기 전에는 소액으로 전 과정을 확인합니다. 유출이 의심되면 새롭고 독립적인 키를 만들어 안전하게 자금을 옮기고, 새 구성을 확인할 때까지 기존 복구 자료를 보관합니다. [7] [9] [10]
스크립트는 비트코인을 쓸 수 있는 조건을 정합니다. 확장 공개 키 xpub로 지갑의 해당 갈래에 속하는 공개 키를 더 파생할 수 있습니다. 이 키들로 주소를 만들려면 지출 조건을 정하는 스크립트 유형도 알아야 합니다. xpub만으로 결제에 서명할 수는 없습니다. 온라인 코디네이터는 지갑의 공개 데이터를 가진 앱입니다. UTXO를 찾고 주소를 파생하며 미서명 트랜잭션을 만듭니다. 개인키는 서명 장치가 보관합니다. Output Descriptor는 스크립트와 키의 출처를 설명하고 체크섬은 복사 오류를 찾는 데 도움을 줍니다. 공개 디스크립터나 xpub만으로는 보통 자금을 쓸 수 없지만 주소와 잔액이 드러날 수 있습니다. 침해된 코디네이터는 수취인을 바꿀 수도 있습니다. [4] [8] [15]
BIP174의 PSBT는 미서명 트랜잭션과 서명에 필요한 정보를 전달합니다. 데이터는 항목의 식별자와 값을 짝지은 목록인 맵으로 구성됩니다. 거래 전체의 맵과 각 입력·출력의 개별 맵이 있으며, 파일은 바이트 0x70 0x73 0x62 0x74 0xff로 시작합니다. 코디네이터가 데이터를 준비하고 장치가 서명을 더합니다. 서명을 합치고 최종 처리하면 완성된 트랜잭션을 전파할 수 있습니다. 따라서 오프라인 장치에 별도의 UTXO 데이터베이스가 필요하지 않습니다. BIP370은 PSBT v2, BIP371은 Taproot 필드를 다룹니다. 장치 간 호환성은 미리 확인해야 합니다. [1] [2] [3] [6] [7]
승인 전에 신뢰할 수 있는 화면에서 수취인, 금액, 수수료 또는 수수료율, 남은 금액을 자기 지갑으로 돌려주는 change 출력을 확인합니다. 표시된 입력과 sighash 모드, 즉 서명이 거래의 어느 부분을 대상으로 하는지 정하는 방식도 살펴봅니다. BIP174는 제안된 change가 예상한 지갑 소유인지 검증하도록 요구합니다. 컴퓨터가 붙인 이름만 믿어서는 안 됩니다. 큰 결제에서는 독립적이고 상대를 인증할 수 있는 다른 경로로 주소를 확인하고 필요하면 두 번째 사람도 검토하게 합니다. [1] [11] [12]
m-of-n 구성은 n개 중 m개의 키로 서명합니다. 키를 잃어도 최소 m개가 사용 가능하면 복구할 수 있습니다. 반면 공격자가 단독으로 지출하려면 적어도 m개를 확보해야 합니다. 두 기준을 혼동하지 마세요. Seed만으로 지갑을 재구성하지 못할 수도 있으므로 xpub, 키 순서, 파생 경로(각 키를 계산하는 단계의 순서)와 스크립트 유형을 포함하는 디스크립터나 Bitcoin Secure Multisig Setup (BSMS) 구성도 백업합니다. 더 복잡한 구성은 관리하고 복구할 수 있을 때만 도움이 됩니다. [4] [5] [8]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Hardware Wallet, 자기 수탁, Air-gapped Wallet, PSBT, Seed Phrase, BIP 39. 다음 항목에서도 이 글을 참조합니다 Hardware Wallet, Watch-only Wallet, PSBT, Custodial Exchange.