종이 한 장에 열두 개 또는 스물네 개의 단어를 적어 백업한 뒤, 암호화폐가 안전하다고 안심합니다. 하지만 그 종이는 하나의 계정만 보호하는 것이 아닙니다. 지갑이 지원하는 모든 블록체인의 모든 계정을 보호합니다. Zelcore에서는 80개가 넘는 체인을 동시에 보호한다는 뜻입니다. 이것이 왜 사실인지, 셀프 커스터디를 결정할 때 어떤 의미인지 정확히 이해하는 것이 셀프 커스터디 보안의 모든 것을 뒷받침하는 토대입니다.
시드 구문이 방대한 키 집합을 인코딩하는 방식
시드 구문은 무작위 단어처럼 보이지만, 원시 엔트로피를 정확하게 인코딩한 것입니다. 형식을 표준화한 Bitcoin 개선 제안인 BIP-39는 정확히 2,048개의 영어 단어로 구성된 단어 목록을 정의합니다. 각 단어는 11비트의 정보를 인코딩하므로 장식용 단어는 없습니다. 구문의 모든 단어가 구체적인 데이터를 담고 있습니다. 12단어 구문은 128비트의 엔트로피를, 24단어 구문은 256비트를 인코딩합니다.
니모닉 구문 자체가 암호학적 시드는 아닙니다. 지갑은 키를 파생하기 전에 니모닉을 PBKDF2-HMAC-SHA512에 입력해 2,048회 반복 처리합니다. PBKDF2-HMAC-SHA512는 계산 비용이 큰 키 스트레칭 함수입니다. 그 결과로 512비트 이진 값, 즉 실제 시드가 생성됩니다. 이 스트레칭 덕분에 공격자가 일부 단어를 추측하더라도 무차별 대입 공격은 현실적으로 어렵습니다.
중요한 점은 선택 사항인 패스프레이즈(때로는 25번째 단어라고도 함)를 추가하면 PBKDF2 함수가 이를 반영해 완전히 다른 512비트 시드를 생성한다는 것입니다. 같은 열두 단어를 사용해도 패스프레이즈가 다르면 완전히 별개의 지갑이 열립니다. 두 지갑 사이에는 아무런 연관성이 없습니다. 패스프레이즈를 잊으면 해당 자금은 영구적으로 사라집니다.
파생 트리: 하나의 시드로 무한한 계정 생성
512비트 시드는 BIP-32로 정의된 계층적 결정론적(HD) 지갑 트리의 루트입니다. 지갑은 시드 바이트를 HMAC-SHA512에 입력하고(키로 문자 그대로 "Bitcoin seed"를 사용), 512비트 출력을 같은 크기의 두 부분으로 나눕니다. 하나는 256비트 마스터 개인 키, 다른 하나는 256비트 마스터 체인 코드입니다. 지갑의 모든 하위 키와 그 하위 키, 주소는 이 두 값으로부터 HMAC-SHA512 연산을 반복해 파생됩니다.
BIP-44는 트리를 탐색하는 방법을 표준화하고, m/purpose'/coin_type'/account'/change/index 형식의 파생 경로를 정의합니다. 각 경로 요소에는 고유한 역할이 있습니다.
- purpose는 BIP-44 지갑에서 항상
44'입니다. - coin_type은 체인을 구분하는 값으로, SLIP-0044라는 레지스트리에서 블록체인별로 지정됩니다. Bitcoin은
0, Ethereum은60, Solana는501, Litecoin은2, Dogecoin은3, Cardano는1815입니다. - account는 같은 체인에서 계정을 서로 분리합니다.
- change와 index는 개별 주소를 생성합니다.
아포스트로피는 강화 파생을 나타냅니다. 이는 한 방향으로만 수행되는 연산으로, 손상된 하위 키를 이용해 형제 키나 부모 키를 파생할 수 없도록 수학적으로 막습니다. 따라서 Ethereum 계정 키가 유출되더라도 같은 마스터에서 파생된 Bitcoin 계정 키까지 노출되지는 않습니다.
Zelcore에서는 하나의 시드 구문으로 BTC, ETH, SOL, ADA와 수십 가지 다른 자산을 동시에 관리합니다. 각 자산은 자체 coin_type 하위 트리에 있으며, 모두 동일한 512비트 루트에서 결정론적으로 파생됩니다.
공격이 작동하는 방식: 모든 체인에 걸친 단일 실패 지점
파생 방식이 결정론적이고 표준화되어 있기 때문에 시드 구문을 가진 사람은 누구나 지원되는 모든 체인의 개인 키를 다시 생성할 수 있습니다. 이는 설계상의 결함이 아니라 설계 자체의 특성입니다. 보안 모델은 시드 구문을 다른 사람이 절대 보지 않는다는 전제에 기반합니다.
실제로 그 결과는 심각합니다. 시드 구문이 유출되면 Bitcoin만 노출되는 것이 아닙니다. 공격자는 Ethereum 주소, Solana 주소, Cardano 주소와 다른 모든 자산의 주소를 동시에 파생할 수 있습니다. 누군가 Bitcoin 복구 구문을 촬영하는 순간 Solana 자산도 위험에 노출됩니다. 공격자는 사용자가 SOL을 보유하고 있다는 사실조차 모를 수 있습니다.
시드 구문을 잃어버리면 정반대의 문제가 생깁니다. 체인별 대체 수단도, 계정 복구도, 고객 지원을 통한 상위 단계의 해결 경로도 없습니다. 시드를 생성한 엔트로피는 수학적으로 되돌릴 수 없습니다. 종이를 잃으면 모든 체인을 한꺼번에 잃게 됩니다.
이 때문에 하드웨어 지갑은 보안 요소 내부에서 시드 구문을 생성하고 연결된 컴퓨터에 절대 노출하지 않습니다. 시드는 오프라인에서 생성되며 그 상태로 유지됩니다.
시드에 보존되지 않는 체인별 메타데이터
시드 구문으로 복원하면 개인 키와 표준 파생 경로는 다시 생성되지만, 모든 정보가 보존되는 것은 아닙니다. 시드로 재구성할 수 없는 데이터에는 다음과 같은 유형이 있습니다.
- 오프체인 메타데이터: 거래 라벨, 주소록 항목, 사용자 지정 메모는 온체인이 아니라 지갑 애플리케이션에 저장됩니다.
- 비표준 파생 경로: 일부 구형 지갑과 일부 체인(Solana와 Cardano는 역사적으로 엄격한 BIP-44와 다른 경로 규칙을 사용해 왔음)의 경우, 다른 지갑 애플리케이션에서 복원하면 자금이 온체인에 있어도 잔액이 0으로 표시될 수 있습니다. 키는 그대로 있지만 소프트웨어가 잘못된 주소를 확인하는 것입니다.
- 토큰 잔액: Ethereum의 ERC-20 토큰과 Solana의 SPL 토큰은 온체인 스마트 계약에 저장되지만, 기본적인 복구 도구는 네이티브 코인 잔액만 표시할 수 있습니다. 토큰은 안전하며, 관련 계약을 조회하도록 지갑을 설정하면 표시됩니다.
- DeFi 포지션과 NFT: 지갑이 조회할 프로토콜 계약과 사용할 RPC 엔드포인트를 알고 있을 때만 표시됩니다.
실무적인 권장 사항은 시드 구문뿐 아니라 사용한 지갑 소프트웨어와 파생 경로도 기록해 두는 것입니다. 몇 달 또는 몇 년 뒤에 복구할 때 시드 구문만으로는 필요한 맥락이 충분하지 않을 수 있습니다.
주소 재사용과 크로스체인 신원
BIP-44의 coin_type 구분에 따라 같은 시드에서 파생된 Bitcoin 주소와 Ethereum 주소는 수학적으로 서로 연관이 없습니다. 루트는 공유하지만 공개 키는 공유하지 않습니다. 하지만 Ethereum, BNB Chain, Polygon, Avalanche C-Chain, Base 등 EVM 호환 체인은 모두 coin_type = 60을 공유합니다. 따라서 동일한 0x... 주소가 모든 EVM 체인에 나타납니다.
이는 의도된 동작이지만, 체인 간 신원이 연결되는 결과를 낳습니다. Ethereum 주소를 아는 사람은 같은 주소를 사용해 모든 EVM 체인에서의 활동을 조회할 수 있습니다. 프라이버시를 중시한다면 자산을 통합하기 전에 이 점을 이해해야 합니다.
Bitcoin의 UTXO 모델에서는 전통적으로 거래마다 새 주소를 생성하도록 권장하며, HD 지갑은 이를 자동으로 처리합니다. Ethereum의 계정 모델에서는 주소를 바꾸는 일이 드뭅니다. 대부분의 사용자는 계정마다 하나의 주소를 계속 사용합니다. 여러 거래에서 Bitcoin 주소를 재사용하면 입력을 동일한 소유자와 연결하기 쉬워져 프라이버시가 약해집니다.
고액 자산을 보관한다면 시드별로 자산을 분리하는 방안을 고려하세요. 위험도가 높은 거래용 시드와 장기 보유용 시드를 따로 사용하거나, 큰 포지션은 인터넷 연결 기기에 한 번도 연결한 적 없는 에어갭 기기에 보관할 수 있습니다.
단일 실패 지점 방어하기: 자산을 보호하는 방법
시드 구문은 가장 강력한 복구 수단인 동시에 가장 위험한 단일 실패 지점입니다. 다음과 같은 구체적인 방법으로 보호하세요.
- 종이가 아닌 금속에 기록하세요. 스테인리스강이나 티타늄 백업 플레이트는 화재와 침수에도 견딥니다. 종이는 그렇지 않습니다.
- 절대 디지털화하지 마세요. 스크린샷, 클라우드 메모, 비밀번호 관리자, 직접 입력한 사본을 만들지 마세요. 시드 구문이 네트워크에 연결된 기기에 한 번이라도 입력되면 공격 표면이 크게 넓어집니다.
- 상당한 금액을 입금하기 전에 복구를 확인하세요. 새 기기에서 시드 구문만 사용해 복구하고, 정상적으로 작동하며 예상한 주소가 생성되는지 확인하세요.
- Shamir 비밀 공유(SLIP-39)를 고려하세요. SLIP-39는 시드를 N개의 조각으로 나누고, 그중 M개만으로 복원할 수 있게 하는 표준입니다. 이렇게 하면 집의 금고, 신뢰하는 사람, 은행 금고에 각각 조각을 보관하는 등 여러 장소에 분산할 수 있으며, 어느 한곳에도 전체 비밀 정보가 모이지 않습니다.
- 암호 구문의 장단점을 이해하세요. 강력한 암호 구문(25번째 단어)을 설정하면 그럴듯한 부인 가능성을 확보할 수 있습니다. 암호 구문이 없는 지갑에는 미끼용 소액만 두고, 실제 자산은 암호 구문을 입력해야만 이용할 수 있게 하는 방식입니다. 위험은 양방향으로 작용합니다. 암호 구문을 잊으면 시드를 잃어버린 것처럼 영구적으로 자산에 접근할 수 없게 됩니다.
Zelcore에서 여러 체인에 걸쳐 자산을 보유한 암호화폐 지갑 사용자라면 마지막 항목이 특히 중요합니다. 가장 익숙한 체인 하나만 확인하지 말고, 실제로 사용하는 모든 체인을 대상으로 복구를 한 번씩 테스트해야 합니다.
핵심 요점
- 12단어 시드에는 128비트 엔트로피가 인코딩되고, 24단어 시드에는 256비트 엔트로피가 인코딩됩니다. 둘 다 분실하면 복구할 수 없습니다.
- BIP-32와 BIP-44는 블록체인마다 별도의 키 하위 트리를 파생하지만(
coin_type), 모든 하위 트리는 동일한 마스터 키에서 파생됩니다. 따라서 시드가 노출되면 모든 체인이 한꺼번에 위험해집니다. - Zelcore는 80개 이상의 체인을 지원하므로 백업 문구 하나로 규모가 크고 다양한 포트폴리오를 관리할 수 있습니다. 따라서 백업의 물리적 보안은 길이만큼 중요합니다.
- EVM 체인(Ethereum, BNB Chain, Polygon 등)은
coin_type = 60를 공유하므로 주소 공간도 공유합니다. 따라서 같은0x주소가 이들 체인 모두에 나타납니다. - 시드만으로 복구하면 토큰 잔액이나 DeFi 포지션이 표시되지 않을 수 있습니다. 사용한 지갑 소프트웨어와 경로를 기록해 두세요.
- 금속 백업, SLIP-39를 통한 지리적 분산 보관, 암호 구문 계층은 단일 실패 지점 위험을 실질적으로 줄이는 세 가지 구체적인 개선책입니다.



