Air-gapped Wallet은 온라인 컴퓨터나 휴대전화와 일반적인 네트워크 연결이 없는 별도 장치에서 결제에 서명하는 구성입니다. 개인 키는 분리된 환경에 남겨 두고, 결제 제안과 서명은 QR 코드나 메모리 카드 같은 통제된 경로로 옮깁니다.
지갑은 비트코인을 받고 보내는 앱이나 기기입니다. 안나는 평소 노트북으로 인터넷을 이용합니다. 그곳에 개인 키까지 보관하고 싶지는 않습니다. 개인 키는 bitcoin을 쓸 권한을 나타내는 서명을 만드는 비밀 정보입니다. 그래서 역할을 나눕니다. 노트북의 프로그램은 입출금을 확인하고 새 결제를 준비하며, 이를 코디네이터라고 합니다. 별도 장치는 제안을 검사하고 안나의 승인 뒤에 서명합니다. 이것이 서명 장치입니다. Hardware Wallet, 즉 하드웨어 지갑도 이렇게 작동할 수 있습니다. Air gap은 주로 분리와 데이터 전달 방식을 말하며 모든 하드웨어 지갑의 자동적인 특성은 아닙니다. 일반 노트북에서 Wi-Fi를 잠시 끄는 것만으로는 부족합니다. 다른 연결, 소프트웨어, 비밀 정보를 남긴 채 나중에 다시 연결하는지도 중요합니다. [3] [5]
안나는 코디네이터에 수취인과 금액을 입력합니다. 프로그램은 거래 제안과 서명에 필요한 정보를 묶은 PSBT를 만듭니다. 여기에는 이전 결제에서 생겨 아직 쓰지 않은 출력인 UTXO에 관한 정보도 포함됩니다. 출력은 개별 금액을 나타내며 새 거래의 입력은 그 출력을 참조합니다. 안나는 QR 코드를 스캔하는 등의 방법으로 묶음을 서명 장치에 옮깁니다. 장치는 지원하는 데이터를 처리하고 확인과 승인 뒤에 서명을 추가합니다. 결과는 노트북으로 돌아갑니다. 필요한 서명 조건이 충족되어야 완성된 거래를 구성해 네트워크에 보낼 수 있습니다. 그렇다고 아직 블록에서 확인된 것은 아닙니다. 블록은 Bitcoin의 공개 거래 이력에 함께 기록되는 거래 묶음입니다. 이 경로로 오가는 것은 제안과 서명이지, 비밀 키나 지갑 백업이 아닙니다. [1] [6]
입력이 100000 sat라고 해 봅시다. Sat는 bitcoin의 최소 단위입니다. 안나는 60000 sat를 보내고, 39000 sat를 자신에게 돌려주며, 1000 sat를 수수료로 남기려 합니다. 돌아오는 금액에는 Change Output이라는 별도 잔돈 출력이 있습니다. 서명 장치는 올바른 키와 지갑 설정을 기준으로 이를 검증해야 합니다. 노트북이 붙인 ‘잔돈’ 표시만으로는 부족합니다. 안나도 신뢰할 수 있는 장치 화면에서 수취인의 전체 주소, 금액, 수수료를 의도한 결제와 비교합니다. 감염된 노트북은 계산을 정확히 유지하면서 남의 주소를 제안할 수 있습니다. 안나가 이를 승인하면 장치를 분리한 것만으로는 자금을 지킬 수 없습니다. [1] [4]
QR 코드는 데이터를 그림으로 나타내는 방법이며 안전하다는 증명은 아닙니다. 큰 데이터 묶음은 BBQr이나 UR 형식의 연속 이미지로 전달할 수 있고, 양쪽 장치가 그 형식을 이해해야 합니다. 이미지와 PSBT를 읽는 소프트웨어도 다른 프로그램처럼 결함이 있을 수 있습니다. 특히 거래 QR과 SeedQR을 구별해야 합니다. SeedQR에는 결제 제안이 아니라 비밀 정보의 백업이 들어 있습니다. 따라서 온라인 노트북이나 휴대전화 카메라로 읽어서는 안 됩니다. 격리 환경 밖으로 옮겨도 되는지는 다른 네모 무늬와의 외형적 유사성이 아니라 내용과 용도가 결정합니다. [2] [4]
다른 방식은 MicroSD를 사용합니다. 안나는 PSBT를 카드에 저장하고 서명 장치에 넣은 뒤 결과를 다시 가져옵니다. 네트워크 케이블은 필요 없지만 장치는 여전히 외부 파일을 읽습니다. 보안은 처리 프로그램과 함께, 데이터를 읽고 정리하는 컨트롤러 및 파일 시스템에도 달려 있습니다. 전용 카드는 파일이 섞이는 것을 줄일 뿐 내용이 무해하다고 보장하지 않습니다. 전원도 구체적으로 살펴야 합니다. USB는 전기와 데이터를 모두 전달할 수 있습니다. 전원 전용이라면 실제로 활성 데이터 경로가 없어야 하며, ‘충전’이라는 표시만으로 확인되지는 않습니다. [2] [3]
COLDCARD는 NFC도 air gap 전달 방식에 포함합니다. NFC는 근거리 무선이며, QR은 이미지를 전달하고 MicroSD는 물리 매체에 파일을 담습니다. 이 경로들을 동일하게 취급해서는 안 됩니다. 무선 통신을 배제하려는 요구가 있다면 활성화된 NFC는 그 조건에 맞지 않습니다. 특정 장치에서 어떤 경로가 켜져 있는지, 언제 활성화되는지, 무엇이 통과하는지를 확인하는 편이 air-gapped라는 말만 믿는 것보다 유용합니다. 상시 USB 데이터 연결도 파일을 손으로 옮기는 경우와는 다른 경계를 갖습니다. [2]
코디네이터는 watch-only 방식으로 지갑을 관찰하되 스스로 결제에 서명하지 못하도록 구성할 수 있습니다. 다른 공개 키를 파생하는 확장 공개 키인 xpub나, 주소 생성에 쓰이는 키와 규칙을 설명하는 공개 Descriptor를 이용합니다. 이 정보만으로 돈을 쓸 수는 없지만 여러 주소와 결제를 한 지갑에 연결할 수 있습니다. PSBT에도 공개 키, 파생 경로, UTXO 정보가 담길 수 있습니다. Multisig는 정해진 규칙에 따라 여러 키로 지출을 승인하는 방식입니다. 모든 참여자의 올바른 설정은 복구와 잔돈 검증에 중요합니다. 따라서 서명 장치의 격리가 노트북의 익명성이나 네트워크 조회의 프라이버시까지 제공하지는 않습니다. [1] [4]
안나는 안전하게 보관한 Seed Phrase, 즉 단어 형태의 백업과 지갑이 요구하는 다른 정보가 여전히 필요합니다. SeedSigner는 비밀 정보를 임시로 불러오므로 전원을 끈 뒤 그 메모리를 백업으로 믿을 수 없습니다. Air gap은 장치 내부 프로그램인 신뢰할 수 있는 펌웨어나 결제 확인도 대신하지 못합니다. Secure Element는 칩 자체에 대한 특정 공격을 어렵게 해 다른 부분을 보호합니다. Cold Storage는 온라인 환경 밖에 키를 보관하는 것을 뜻하고, air gap은 서명을 분리한 작업 방식을 말합니다. 중요한 저축에 사용하기 전에는 별도의 테스트 키로 전송, 검증, 복구를 연습하는 것이 좋습니다. 목표는 책상 위 장치 수를 늘리는 것이 아니라 매 단계를 이해하는 것입니다. [3] [4]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Hardware Wallet, PSBT, Cold Storage, Seed Phrase, Output Descriptor, Multisig. 다음 항목에서도 이 글을 참조합니다 Cold Storage, Secure Element, SeedQR, BBQr.