소프트웨어 서명 장치
소프트웨어 서명 장치는 앱이나 프로그램으로 개인키를 관리하고 거래에 서명하는 도구입니다. 휴대폰이나 컴퓨터처럼 인터넷에 연결될 수 있는 기기에서 사용하면 키 관리와 서명, 전송을 한 앱에서 처리할 수 있어 준비가 빠르고 편리합니다.
하지만 편리한 만큼 개인키가 인터넷에 연결될 수 있는 기기에 놓인다는 조건을 함께 받아들여야 합니다. 소프트웨어 서명 장치는 자주 사용하는 금액을 관리하는 데 적합합니다. 쓰임새로 보면 일상에서 쓰는 주머니에 가깝습니다.
주머니처럼 사용하는 이유
바지 주머니에 넣고 다니는 지갑에는 며칠 쓸 현금만 넣습니다. 편의점에서 바로 꺼내 쓸 수 있지만, 잃어버릴 수도 있기 때문에 전 재산을 넣고 다니지는 않습니다.
소프트웨어 서명 장치도 비슷합니다. 자주 사용할 금액을 관리하면 편리하지만, 큰 금액이나 오래 보관할 금액은 별도의 보관 방식으로 나누는 편이 좋습니다. 주머니와 금고는 서로를 대신하는 것이 아니라 쓰임에 따라 함께 사용하는 도구입니다.
앱 안에서 키가 사용되는 방식
소프트웨어 서명 장치를 처음 설정하면 복구 문구가 생성되는 경우가 많습니다. 문구의 단어 수와 표시·확인 방식은 서명 장치의 표준과 제품, 설정에 따라 다릅니다. 비트코인 서명 장치에서 널리 쓰이는 BIP39는 복구 문구와 시드 생성 방식을 정한 표준입니다. 엔트로피와 체크섬을 단어로 인코딩하고, 그 문구와 선택적 패스프레이즈로 시드를 파생합니다. 복구 문구가 개인키 하나를 그대로 단어로 바꾼 것은 아닙니다(BIP39).
앱은 파생한 키를 기기 안에서 관리하고, 잠금 기능을 제공할 수 있습니다. 저장 방식과 암호화, 잠금 해제 수단, 복구 문구를 다시 표시할 수 있는지는 앱과 설정에 따라 다릅니다. 따라서 특정 방식이 모든 소프트웨어 서명 장치에 보장된다고 전제해서는 안 됩니다.
보내기를 누르면 앱이 거래를 만들고, 기기 안의 개인키로 그 거래에 서명합니다. 정상적인 서명 과정에서는 개인키 자체를 거래에 첨부하거나 네트워크로 보내지 않습니다. 밖으로 전송되는 것은 서명이 붙은 거래입니다. 다만 악성코드가 키를 훔치거나 사용자가 가짜 앱에 문구를 입력하면 개인키가 유출될 수 있습니다.
온라인 기기에 키를 둘 때의 위험
휴대폰이나 컴퓨터는 인터넷에 연결될 수 있습니다. 악성 앱이 설치되거나 화면을 훔쳐보는 환경이 만들어지면 키와 거래 정보가 위험해질 수 있습니다.
특히 복구 문구를 화면에 표시하거나 입력하는 순간을 조심해야 합니다. 가짜 앱이 진짜 앱의 이름과 아이콘을 흉내 내어 복구 문구를 입력하게 만들 수도 있습니다. 따라서 앱은 공식 배포처에서만 내려받고, 기기 잠금과 최신 업데이트를 유지해야 합니다.
복구 문구는 기기 밖의 종이나 금속에 적어 두는 것이 좋습니다. 문구를 사진으로 찍거나 온라인 저장 공간에 보관하면 온라인 노출 위험이 생깁니다. 큰 금액의 키를 온라인 기기에 오래 두지 않는 것도 중요한 원칙입니다.
기기를 잃어버리면 비트코인도 사라질까
기기를 잃거나 고장 내도 비트코인의 거래 기록은 네트워크의 전체장부에 남습니다. 복구 문구와 필요한 설정 정보를 보관하고 있다면 다른 호환 기기나 앱에서 키를 복원해 자금에 다시 접근할 수 있습니다.
앱 자체를 백업하는 것보다 지켜야 할 것은 복구 문구와 서명 장치별 복구 정보입니다. 앱 비밀번호는 앱의 잠금을 해제하는 정보이며, 복구 문구를 대신하지 않습니다. 반면 복구 문구는 호환되는 환경에서 키를 복구하는 데 사용됩니다.
따라서 기기는 키를 담아 둔 상자에 가깝고, 복구 문구가 실제로 지켜야 할 중요한 정보입니다. 복구 문구를 잃으면 기기를 잃었을 때 키를 복원할 길도 잃을 수 있습니다.
소프트웨어 서명 장치를 고를 때 확인할 점
소프트웨어 서명 장치를 고를 때는 다음과 같은 점을 확인할 수 있습니다.
- 개인키와 복구 문구를 사용자가 직접 보유하는 구조인지 확인합니다.
- 소스가 공개되어 있다면 공개 범위와 라이선스를 함께 살펴봅니다.
- 오랫동안 유지되어 온 앱인지 살펴봅니다.
- 복구 문구와 필요한 서명 장치 설정을 다른 호환 앱으로 옮길 수 있는지 확인합니다.
- 앱을 공식 배포처에서 내려받을 수 있는지 확인합니다.
사업자가 개인키를 관리하고 사용자의 요청에 따라 거래에 서명하는 수탁형 서비스는 사용자가 키를 직접 관리하는 서명 장치와 성격이 다릅니다. 무엇을 선택하든 문구와 개인키를 누가 보유하는지부터 이해해야 합니다.
플레이스토어에서 내려받아 쓰는 조건
영상의 첫 번째 질문은 플레이스토어에서 서명 장치 앱을 내려받아 사용해도 되는지였습니다. 영상은 자신은 플레이스토어에서 앱을 내려받아 쓰고 있다고 설명합니다. 다만 그 전제가 있습니다. 복구 문구나 개인키를 그 앱에 저장하지 않는 것입니다.
영상은 이런 구성을 다음과 같이 설명합니다. 복구 문구는 앱이 아닌 별도의 장소에 두고, 개인키는 인터넷과 분리된 콜드 스토리지에 보관합니다. 개인키는 오프라인 상태인 기기에서만 생성하고, 그 기기에서는 마스터 확장 공개키만 뽑아 냅니다. 공개 키만으로 앱에 워치온리 서명 장치를 만듭니다. 워치온리 서명 장치는 개인키 없이 잔액과 거래를 조회만 하며 스스로 서명할 수 없습니다. 영상은 개인키를 앱에 두지 않는 이런 방식으로 쓰는 편을 권합니다. 영상의 발언자는 개인키를 앱에 두지 않는다는 전제 아래에서 GitHub에서 소스를 받아 검증한 뒤 설치하는 방식 대신 플레이스토어에서 내려받아 쓴다며, 이는 자신의 접근이라고 설명합니다. 앱 출처를 어디서 확인하는지는 바로 앞의 "소프트웨어 서명 장치를 고를 때 확인할 점" 절에서 함께 확인할 수 있습니다.
전송할 때는 콜드 스토리지의 기기와 워치온리 서명 장치가 인터넷에 연결된 채로 직접 거래 정보를 주고받지 않습니다. 영상은 인터넷 없이 QR 코드 같은 방법으로 서명을 주고받는 방식을 쓰는 편이 좋다고 설명하며, 그런 방법을 찾아 공부해 보라고 안내합니다.
일상용과 보관용을 나누기
늘 가지고 다니는 일상용 서명 장치로는 자주 사용할 며칠 치 금액만 관리할 수 있습니다. 오래 보관할 금액은 키를 인터넷과 분리해 관리하는 방식으로 나누는 식입니다.
처음에는 소액으로 보내고 받아 보면서 키 복원과 전송 과정을 익히는 편이 안전합니다. 금액이 커지면 일상용과 보관용을 나누고, 필요할 때만 보관용에서 옮기는 습관을 들일 수 있습니다.
소프트웨어 서명 장치는 편리한 도구입니다. 다만 편리함은 인터넷에 연결될 수 있는 기기에 개인키가 있다는 조건과 함께 옵니다. 자주 쓰는 금액은 주머니처럼 편리하게 관리하고, 오래 둘 큰 금액의 키는 인터넷과 분리해 관리하는 것이 기본입니다.
관련 개념은 콜드 스토리지와 하드웨어 서명 장치에서 이어서 볼 수 있습니다.
스패로우로 테스트넷 송금 연습하기
영상은 컴퓨터용 소프트웨어 서명 장치인 스패로우(Sparrow)를 테스트넷으로 전환해 새 서명 장치를 만들고, 테스트용 비트코인을 받고 보내 보는 과정을 보여 줍니다. 테스트넷의 비트코인은 가격을 갖지 않으므로 실제 자금 없이 연습할 수 있습니다. 아래 화면과 메뉴 이름은 2024년 4월 공개된 영상 시점 기준이며, 영상에서 쓴 스패로우는 1.8 버전입니다.
준비와 전환은 다음 순서입니다.
- 스패로우는 맥, 윈도우, 리눅스용 데스크톱 앱입니다. 모바일용은 없습니다. 영상의 발언자는 윈도우용 설치 파일을 받아 썼습니다.
- 처음에는 실제 비트코인 네트워크인 메인넷에 연결됩니다. 환경 설정의 서버 항목을 보면 기본으로 공개 서버에 연결되어 있고, 연결 여부도 여기서 확인합니다. 풀노드를 운영한다면 자신의 일렉트럼 서버나 비트코인 코어로 바꿀 수 있습니다.
- 도구 메뉴의 테스트넷으로 다시 시작하기를 선택하면 앱이 꺼졌다가 새 창으로 열립니다. 같은 도구 메뉴에 메인넷으로 다시 시작하기가 보이면 전환된 것입니다. 이 항목을 누르면 다시 메인넷으로 돌아갑니다.
새 서명 장치는 다음 순서로 만듭니다.
- 파일 메뉴에서 새 서명 장치를 만들고 이름을 정합니다.
- 설정 화면에서 서명 방식은 단일 서명으로, 스크립트 유형은 기본값인 네이티브 세그윗으로 그대로 둡니다. 주소 형식에 따라 주소 앞자리가 다릅니다. 메인넷의 네이티브 세그윗 주소는 bc1q로 시작하고, 테스트넷 주소는 tb1로 시작합니다. 영상은 시드사이너와 연동할 때도 이 기본값을 쓰면 된다고 설명합니다.
- 키 저장 방식으로는 연결해서 쓰는 하드웨어 서명 장치, 에어갭 하드웨어 서명 장치, 새로 만들거나 가져오는 소프트웨어 키, 확장 공개키로 만드는 워치온리가 있습니다. 영상은 전송 연습이 목적이라 소프트웨어 키를 새로 만드는 방식을 골랐습니다.
- 연습용으로 12단어 니모닉(복구 문구)을 새로 생성합니다. 패스프레이즈는 선택 사항이며, 영상에서는 설정하지 않았습니다.
- 생성된 단어를 받아 적으면 앱이 같은 단어를 한 번 더 입력하라고 요구하고, 확인이 끝나면 그 키로 키 저장소를 가져와 서명 장치를 만듭니다. 발언자는 연습용이라 메모장에 적고 복사해 붙여 넣었다면서, 실제로는 손으로 적고 하나씩 입력하라고 당부합니다.
- 설정 화면에 나오는 마스터 지문은 이 키를 식별하는 값으로, 영상은 내 서명 장치가 맞는지 확인하는 데 쓴다고 설명합니다.
- 적용을 누르면 이 서명 장치를 앱에서 열 때 쓸 비밀번호를 따로 정하라고 합니다.
영상은 이 앱이 인터넷에 연결된 기기에서 개인키를 다루는 뜨거운 서명 장치가 된다고 짚습니다. 시드사이너 같은 하드웨어 서명 장치에서 만든 니모닉을 이 앱에 불러올 수는 있지만, 그러면 같은 키가 인터넷에 연결된 기기에 놓입니다. 그래서 발언자는 인터넷을 끊거나 연결된 적 없는 기기에서만 해야 한다고 단서를 달고, 그렇지 않다면 워치온리로 쓰라고 말합니다. 실제 자금을 다룰 때 확장 공개키로 만든 워치온리 서명 장치를 쓰면 개인키가 이 컴퓨터에 놓이지 않습니다. 워치온리는 개인키 없이 잔액과 거래를 조회만 하며 스스로 서명하지 못합니다.
테스트용 비트코인은 다음과 같이 받습니다.
- 검색해서 찾은 수도꼭지(faucet) 사이트의 입력란에 스패로우의 받기 주소를 넣고 보내 달라고 요청합니다. 잠시 뒤 거래 목록에 테스트용 비트코인이 들어온 것을 확인할 수 있습니다.
- 발언자가 가장 많이 쓰던 수도꼭지 한 곳은 테스트용 비트코인을 다른 곳에서 돈을 받고 파는 사람들이 있어 당분간 문을 닫는다는 안내를 띄우고 있었다고 합니다.
- 받기 화면의 주소에는 라벨을 붙일 수 있고, 새 주소를 받아 쓰면 라벨이 주소 목록에 남습니다. 발언자는 신원 확인(KYC)을 거친 출처와 거치지 않은 출처를 라벨로 나누는 데 쓸 수 있다고 설명합니다.
보내기와 전파는 다음 흐름입니다.
- 보내기 화면에 받는 주소, 라벨, 금액, 수수료를 정하고 거래를 만듭니다. 만들어진 거래 화면에는 어떤 UTXO(아직 쓰이지 않은 거래 출력)를 가져와 어느 주소로 보내는지 나옵니다.
- 서명을 마무리하고 서명 장치 비밀번호를 입력해 서명한 뒤, 전파를 누릅니다.
- 영상에서는 처음에 수수료를 너무 낮게 잡았다가 전파 단계에서 수수료가 너무 낮다는 오류가 났습니다. 수수료를 올려 거래를 다시 만들고 서명해 전파하자 이번에는 거래가 바로 나타났습니다. 발언자는 테스트넷이라 붐비지 않아서라고 설명합니다.
- 영상은 공개 서버로 전파하면 남의 서버에 기대는 것이고, 풀노드에 연결한 일렉트럼 서버로 전파하면 다른 노드를 믿거나 도움을 받지 않고 스스로 전파할 수 있다고 설명합니다.
- 에어갭 거래 메뉴도 있지만 발언자는 절차가 복잡하니 직접 해 보며 익히라고 권합니다. 에어갭 거래의 절차와 보안은 에어갭 서명 장치 보안에서 이어서 볼 수 있습니다.
UTXO 화면에서는 쓸 출력을 직접 고를 수 있습니다. 컨트롤 키를 누른 채 클릭하면 여러 개를 함께 고를 수 있고, 하나 이상 고르면 그 출력으로 보내는 항목이 나타납니다. 고르지 않고 보내기에서 금액만 입력하면 앱이 알아서 출력을 고릅니다. 영상은 어떤 출력이 쓰일지는 앱이 정한다고 설명하면서, 작은 출력부터 쓰는 식으로 직접 관리하고 싶다면 이 화면에서 고르면 된다고 말합니다.
영상 끝에서 발언자는 보유한 출력 두 개를 함께 골라 최대 금액으로 자신의 다른 주소에 보내는 합치기를 보여 줍니다. 거래를 만들 때 수수료가 보내는 양보다 높으면 경고가 표시되었는데, 발언자는 테스트이니 크게 신경 쓰지 않아도 된다고 했습니다. 서명하고 공개 서버로 전파하자 다른 쪽 서명 장치에 해당 거래가 들어온 것이 확인되었습니다.
발언자는 이런 연습을 실제 비트코인으로 하기에는 부담스럽지만 테스트용 비트코인은 그 부담이 덜하다며, 수도꼭지를 찾아 두 개의 서명 장치를 만들어 주고받아 보라고 권합니다. 또한 시드사이너로 만든 키를 스패로우 워치온리로 연결하면 에어갭 거래와 적립식 매수 주소 관리를 할 수 있다며, 스마트폰 앱보다 큰 화면의 데스크톱에서 쓰기를 권합니다.
영상
원본 영상: Q&A - 비트코인 핫월렛을 플레이스토어에서 내려받아 사용해도 되나요? 라이트닝 네트워크나 아크 프로토콜과 같은 비트코인 레이어2는 어떤 방식으로 동작하나요? (공개일: 2024-09-11)
관련 영상
원본 영상: 테스트넷에서 스패로우 월렛으로 비트코인 전송 연습하기 (공개일: 2024-04-29)