top of page

펌웨어 결함으로 지갑 시드가 노출되며 Coldcard, Techmeme Bitcoin 뉴스에 등장

연구진이 결함 있는 펌웨어와 1,196개 지갑 주소에서 발생한 1,082.65 BTC 탈취의 연관성을 제기하면서 Coldcard가 Techmeme Bitcoin 보도에 등장했다. Galaxy Research는 7월 30일 41분간의 구간에 걸친 거래를 추적했다. 거래 당시 해당 bitcoin의 가치는 약 7,020만 달러였다.

규모만으로도 이 사건은 중요하다. 그러나 더 근본적인 문제는 공격 방식이다. 보도에 따르면 공격자는 개별 기기를 침해하거나 거래를 가로채고, 피싱으로 복구 문구를 훔치지 않았다. 연구진은 공격자가 예측 가능한 지갑 시드를 오프라인에서 재현한 뒤, 이에 대응하는 프라이빗 키를 도출했다고 보고 있다.

이 메커니즘은 하드웨어 지갑의 핵심 약속을 뒤집는다. 콜드 스토리지는 키를 인터넷에 연결된 컴퓨터에서 분리해 보호한다. 하지만 결함 있는 소프트웨어가 원래 키를 예측 가능하게 만든다면, 격리만으로는 보호 효과가 제한적이다. Coldcard의 소유사 Coinkite는 수정된 펌웨어를 배포했지만, 이미 생성된 시드를 업데이트로 복구할 수는 없다.

Techmeme Bitcoin 기사는 41분간의 일괄 이체에서 시작됐다

Galaxy Research는 01:10~01:51 UTC 사이에 1,196개 주소에서 1,082.65 BTC를 이동시킨 조직적 작전을 발견했다.

이체는 블록 960,183부터 블록 960,191까지 총 여섯 개의 Bitcoin 블록에 걸쳐 나타났다. 그 사이의 세 블록에는 확인된 거래가 전혀 없었다. 이 패턴은 운영자가 연속적인 이체 프로세스를 실행한 것이 아니라 거래를 묶음 단위로 제출했음을 시사한다.

Galaxy는 해당 거래들이 가상 바이트당 30 satoshi라는 동일한 수수료율을 사용했음을 발견했다. 또한 잔돈 출력이 없었는데, 이는 각 거래가 자금을 송신자가 통제하는 다른 주소로 되돌리지 않고 주소 잔액 전체를 이동시켰다는 뜻이다.

이런 공통 특성은 조사관들에게 온체인 지문을 제공했다. Galaxy는 이전 30일 동안 동일한 수수료율과 출력 구조의 조합을 가진 다른 거래를 찾지 못했다고 밝혔다. 다만 소유자가 합법적으로 자금을 통합하는 경우에도 거래가 동일하게 보일 수 있다고 경고했다.

이번 연구는 AnchorWatch 공동 창업자 Rob Hamilton의 초기 추정치를 확장했다. 그의 예비 분석은 약 500건의 거래를 통해 이동한 594.48 BTC를 확인했다. 초기 계산은 활동의 일부만 포착했지만, Galaxy는 더 넓은 범위의 거래들을 연결했다.

거래 분석에 따르면, 확인된 탈취 자금은 처음에는 네 개 주소에 남아 있었다. 초기 추정은 이 가운데 하나만 추적했다. 이것이 연구진이 더 광범위한 일괄 이체를 재구성하면서 보고된 피해액이 거의 두 배로 늘어난 이유다.

영향을 받은 주소는 여러 Bitcoin 주소 형식에 걸쳐 있었다. 1,196개 주소 중 1,183개는 네이티브 SegWit을 사용했고, 7개는 다른 구형 형식을, 6개는 더 이른 형식을 사용했다. 이 분포는 특정 알려진 개인을 겨냥했다기보다 체계적 스캐닝이 이뤄졌다는 이론을 뒷받침한다.

스캐너는 각 후보 시드에서 다양한 주소 유형을 도출할 수 있다. 이어 그 주소들을 Bitcoin의 공개 거래 기록과 대조할 수 있다. 일치하는 주소가 있으면 물리적 지갑과 통신하지 않고도 생성된 후보가 자금을 통제하는지 확인할 수 있다.

사건은 최초의 7,020만 달러 추정 이후에도 계속 전개됐다. 8월 2일 후속 보도는 추가 이동분을 약 4,500개 주소와 연결하고 잠재적 손실을 약 8,900만 달러로 추산했다. 이러한 후속 발견은 여전히 진행 중인 조사에 속하므로, Galaxy가 추적한 최초의 일괄 이체가 가장 명확하게 범위를 한정할 수 있는 사건이다.

중요한 구분은 귀속 판단이다. 블록체인 증거는 거래 군집과 반복되는 운영 패턴을 식별할 수 있다. 하지만 모든 이체가 무단이었다는 사실을 독립적으로 입증할 수는 없다. 연구진은 현재의 평가를 내리기 위해 거래 패턴에 공개된 펌웨어 결함과 피해자 보고를 결합했다.

Bitcoin Optech는 사용자가 7월 30일, 전날 이동한 자금과 관련한 예상치 못한 거래를 발견했다고 보도했다. Coinkite는 7월 30일 늦게 첫 공개 권고문을 발표했다. Galaxy는 대규모 일괄 이체가 해당 경고가 나오기 약 30시간 전에 발생했다고 판단했다.

이 시간차는 소유자들이 위험을 이해하기 전에 공격자가 행동할 시간이 있었다는 점에서 중요하다. 결함이 공개된 뒤에는 다른 운영자들도 동일한 펌웨어 경로를 분석할 수 있게 됐다. 따라서 위험은 첫 거래 군집에서 끝나지 않았다.

Techmeme Bitcoin 헤드라인은 최종 정산이 아니라 빠르게 변하는 추정치를 포착한 것이다. 조사관들이 시드 도출 검색 범위를 넓히면서 더 많은 주소가 노출될 수 있다. 더 중요하게는, 취약하지만 아직 손대지 않은 지갑에도 현재 자금이 남아 있을 수 있다.

빌드 오류가 무작위여야 할 시드를 예측 가능하게 만들었다

보도에 따르면 펌웨어 결함은 시드 생성 과정에서 하드웨어가 생성한 난수 대신 결정론적 소프트웨어 폴백을 사용했다.

시드는 Bitcoin 지갑이 주소와 프라이빗 키를 도출하는 비밀 값이다. 지갑 소프트웨어는 이 시드에 공개된 수학적 규칙을 적용한다. 이를 재구성할 수 있는 사람은 동일한 키를 다시 만들고 거래를 승인할 수 있다.

따라서 안전한 지갑에는 충분히 예측 불가능한 정보를 뜻하는 높은 엔트로피가 필요하다. 일반적인 12단어 BIP-39 복구 문구는 128비트의 엔트로피를 나타낸다. 이는 통상적인 무차별 대입 공격으로는 탐색할 수 없을 만큼 큰 공간을 만든다.

Coldcard 기기는 하드웨어 난수 생성기에서 난수를 수집하도록 설계됐다. Block의 보안 연구진은 이 실패의 원인을 프로덕션 빌드 설정과 지원 소프트웨어 라이브러리 사이의 상호작용으로 추적했다.

Coldcard의 구성은 Coinkite가 자체 하드웨어 난수 래퍼를 사용했기 때문에 MICROPY_HW_ENABLE_RNG를 0으로 정의했다. libngu라는 라이브러리는 해당 설정이 정의됐는지를 확인했다. 그러나 설정이 활성화됐는지는 확인하지 않았다.

이 미묘한 차이가 최종 펌웨어 빌드를 바꿨다. 코드는 의도한 하드웨어 소스 대신 MicroPython의 Yasmarang 의사난수 폴백을 따랐다. 의사난수 생성기는 시드라고 불리는 초기 값에서 재현 가능한 수열을 만든다.

이 폴백은 프로세서의 고유 식별자와 타이머 레지스터로 스스로를 초기화했다. 식별자는 제조 과정에서 고정되며, 타이머 값은 시작 시점의 기기 상태를 나타낸다. 이 값들은 적절히 수집된 물리적 난수보다 불확실성이 낮다.

Block의 펌웨어 조사는 폴백이 초기화 이후 새로운 엔트로피를 전혀 수집하지 않았다고 밝혔다. 이후 기기에서는 추가 리시딩 단계가 불확실성을 더했지만, 연구진은 여전히 이 경로가 의도보다 약하다고 평가했다.

공격자가 모든 입력을 정확히 알 필요는 없다. 운영자는 그럴듯한 식별자, 타이밍 상태, 호출 이력을 생성할 수 있다. 각 조합은 후보 출력 스트림과 가능한 지갑 시드를 만든다.

공격자는 모든 후보에서 Bitcoin 주소를 도출할 수 있다. 이어 그 주소들을 공개 블록체인과 비교할 수 있다. 주소에 자금이 있으면, 해당 후보 시드는 이를 이동하는 데 필요한 프라이빗 키를 제공한다.

이 과정은 전적으로 공격자의 인프라에서 이뤄진다. Coldcard는 전원이 꺼져 있고, 연결이 끊긴 채 금고에 잠겨 있을 수 있다. 공격자는 비밀을 추출하는 것이 아니라 재구성하므로, 에어갭을 넘나드는 정보는 필요하지 않다.

이 때문에 이 사건은 기존 하드웨어 지갑 공격과 다르다. 많은 공격은 연결된 컴퓨터의 악성코드, 조작된 거래 데이터, 물리적 접근 또는 속은 사용자를 필요로 한다. 이번 공격은 훨씬 이전에 발생한 약한 시드 생성 과정을 악용한 것으로 보인다.

Coinkite는 영향을 받은 펌웨어에서 생성된 Mk3 시드의 유효 엔트로피가 약 40비트였다고 밝혔다. 영향을 받은 Mk4, Mk5 및 Q 기기의 시드는 기대치인 128비트 대신 약 72비트였다고 추정한다.

이 수치는 신중히 해석해야 한다. Block은 하나의 보편적인 무차별 대입 비용이나 완료 시간을 공개하지 않았다. 실제 난이도는 기기 식별자, 시작 타이밍, 이전 생성기 호출, 지갑 도출 경로에 관한 정보를 얼마나 확보할 수 있는지에 따라 달라진다.

Block은 조건부 탐색 범위를 암호학적 강도로 곧바로 환산해서는 안 된다고도 경고했다. 이론적 상한은 실제 모든 지갑을 찾는 비용을 설명하지 않는다. 기기 이력에 따라 서로 다른 탐색 공간이 만들어질 수 있다.

초기 보도가 나왔을 당시, 공개된 피해자 시드를 재구성해 탈취된 특정 주소와 직접 일치시킨 공개 기술 보고서는 없었다. 거래 패턴, 펌웨어 결함, 시점은 강한 정황 증거를 제공한다. 그러나 운영자의 작업 흐름의 모든 단계를 공개하지는 않는다.

그럼에도 이 공격은 영향을 받은 모든 지갑을 완벽히 재구성할 필요가 없다. 수익성 있는 스캐너는 후보 공간에서 자금이 든 일부 주소만 찾아내면 된다. 빈 후보는 무시하고 시간이 지나며 계속 탐색할 수 있다.

이 비대칭성은 공격자에게 유리하다. 소유자는 주소를 살펴봐도 그 시드가 어느 정도의 엔트로피로 생성됐는지 판단할 수 없다. 반면 운영자는 공개 블록체인 데이터에 대조해 조용히 후보를 시험할 수 있다.

콜드 스토리지는 기기를 보호했지만, 비밀의 출처는 보호하지 못했다

Coldcard의 실패는 하드웨어 지갑 보안을 격리의 문제가 아니라 비밀이 어떻게 생성되고 검증되는지의 문제로 바꾼다.

하드웨어 지갑은 일반적으로 명확한 위협 모델을 중심으로 구축된다. 프라이빗 키를 일상적으로 쓰는 컴퓨터와 분리하고, 거래 세부 정보를 표시하며, 서명 전 물리적 확인을 요구한다. 에어갭 워크플로는 악성코드가 기기에 도달할 수 있는 경로를 줄인다.

이러한 통제는 여전히 가치가 있다. 피싱, 클립보드, 브라우저, 원격 접근 공격 다수로부터 보호한다. 다만 공격자가 재현할 수 없는 비밀로 지갑이 시작됐다는 전제를 둔다.

Coldcard 사례는 이 전제를 무너뜨린다. 완벽하게 격리된 기기라도 생성 이후 예측 가능한 시드를 강화할 수는 없다. 결정론적 도출은 그 관계를 보존하므로 이후의 모든 프라이빗 키는 원래의 약점을 물려받는다.

이것이 이 글의 핵심적인 반전이다. 사용자는 온라인 위협으로부터의 물리적 분리를 구매했지만, 보도된 공격은 그 분리를 넘을 필요가 전혀 없었다. 취약 지점은 네트워크 연결이 아니라 프로덕션 빌드 과정 안에 존재했다.

오픈 소스 코드 역시 이 실패를 막지 못했다. 공개 코드는 연구진이 구현 세부 사항을 검토하고, 빌드를 재현하며, 결함을 식별할 수 있게 한다. 하지만 누군가가 모든 구성, 의존성, 컴파일된 릴리스를 검사했다는 보장은 없다.

빌드 플래그 하나가 배포된 바이너리에 어떤 분기가 포함되는지를 바꿀 수 있다. 의존성 동작도 주변 프로젝트의 가정과 다를 수 있다. 따라서 보안 검토는 소스, 구성, 툴체인, 최종 산출물, 기기 동작까지 포괄해야 한다.

2021년 3월 통합 시점은 이러한 압박을 더한다. Coinkite는 영향을 받은 Mk3 펌웨어가 버전 4.0.1부터 시작됐다고 밝혔다. 정확히 어떤 상호작용이 이를 활성화하는지 아무도 살피지 않는다면, 결함은 공개 저장소에서 수년간 드러난 채 남아 있을 수 있다.

Coldcard만이 이런 구조적 과제에 직면한 하드웨어 지갑은 아니다. Ledger, Trezor, Blockstream Jade, BitBox, SeedSigner는 하드웨어, 펌웨어, 보안 요소, 시드 생성 워크플로를 서로 다르게 조합한다. 현재 결함이 이들 제품에 귀속된 것은 아니다.

이 비교는 공유된 취약성이 아니라 보증 모델에 관한 것이다. 폐쇄형 구성 요소는 외부 검토를 제한하지만 독점 구현 세부 사항을 보호할 수 있다. 개방형 설계는 검토 기회를 넓히지만, 여전히 자금이 뒷받침되는 감사, 재현 가능한 빌드, 실제 배포된 동작을 검증하는 테스트가 필요하다.

다중서명 지갑은 또 다른 경로를 제공한다. 멀티시그 정책은 지출을 승인하기 위해 여러 개의 독립 키를 요구한다. 이러한 키가 서로 다른 기기와 독립적인 시드 생성 방식에서 나온다면, 하나의 결함 있는 생성기가 필요한 정족수를 반드시 노출시키는 것은 아니다.

그러나 멀티시그가 자동적인 방어책은 아니다. 영향을 받은 Coldcard 생성 시드만으로 구성된 지갑은 여러 키에 걸쳐 동일한 의존성 위험을 재현할 수 있다. 사용자는 더 큰 백업 및 복구 복잡성에도 직면한다.

수동으로 추가한 주사위 엔트로피는 기기 생성기에 대한 의존도를 낮출 수 있다. Coinkite는 공정하고 독립적이며 비공개인 주사위 굴리기를 최소 50회 사용해 생성한 시드는 이 결함만으로는 취약하지 않다고 말한다. 편향되었거나, 관찰되었거나, 재사용된 굴리기는 추가된 불확실성을 약화시키므로 이 조건들은 중요하다.

강력하고 고유한 BIP-39 패스프레이즈는 시드 단어만으로는 해제할 수 없는 또 하나의 지갑 계층을 만든다. 이는 공격자의 탐색 비용을 상당히 높일 수 있다. 하지만 약하거나 재사용된 문구는 여전히 추측될 수 있으며, Coinkite는 그럼에도 영향을 받은 시드를 이전할 것을 권고한다.

대안들은 어려운 절충점을 보여준다. 더 큰 독립성은 보안을 개선할 수 있지만, 절차가 하나 추가될 때마다 사용자 오류의 기회도 하나 늘어난다. 이론적으로 더 안전한 복구 설계도 소유자가 안정적으로 운용하지 못하면 위험해질 수 있다.

이러한 긴장은 Bitcoin을 넘어선다. 엔터프라이즈 키 관리 시스템, 인증 토큰, 암호화된 백업, 서명 기기는 모두 신뢰할 수 있는 무작위성에 의존한다. 보안 하드웨어로 보호되는 키도 그것을 생성한 과정만큼만 강하다.

이와 같은 사고에 대응하는 팀에는 펌웨어 버전, 기기 출처, 이전 결정에 관한 신뢰할 수 있는 기록도 필요하다. 검색 가능한 기술 지식 베이스는 이러한 세부 사항을 보존하는 데 도움이 될 수 있지만, 복구 문구나 개인 키를 포함해서는 절대 안 된다.

펌웨어 수정으로 기존 지갑을 복구할 수는 없다

수정된 펌웨어를 설치하면 이후의 약한 시드 생성은 중단되지만, 기존 시드를 예측 불가능하게 만들지는 못한다.

Coinkite는 7월 31일 영향을 받은 모든 릴리스 트랙에 걸쳐 수정된 펌웨어를 공개했다. 업데이트된 보안 권고문은 Mk2 및 Mk3 기기에 대해 버전 4.2.0 이상을 명시한다.

표준 트랙의 Mk4 및 Mk5 기기에 대해 Coinkite는 버전 5.6.0 이상을 제시한다. Q 소유자에게는 버전 1.5.0Q 이상이 필요하다. Edge 사용자는 Mk4 및 Mk5에 6.6.0X, Q에는 6.6.0QX가 필요하다.

Standard 및 Edge 릴리스는 별도의 트랙을 따른다. 숫자가 더 높아 보이는 Edge 버전이 표준 트랙의 수정을 자동으로 포함하는 것은 아니다. 소유자는 자신의 모델과 설치된 트랙 모두에 맞는 수정 릴리스를 사용해야 한다.

영향 범위는 시드가 생성될 당시 사용된 펌웨어에도 좌우된다. 나중에 취약한 펌웨어를 설치했다고 해서 안전한 절차로 생성한 시드가 소급해 약화되지는 않는다. 반대로 지금 수정된 펌웨어를 설치해도 과거의 영향을 받은 시드가 강해지는 것은 아니다.

Coinkite는 Mk3 버전 4.0.1부터 4.1.9까지가 영향을 받았다고 밝힌다. Block의 분석은 Mk2 및 Mk3 버전 4.0.0부터 4.1.9까지를 취약 경로로 분류한다. 이 작은 차이는 소유자가 보수적인 이전 지침을 따라야 하는 이유를 보여준다.

Coinkite는 수정 릴리스 이전에 Mk4, Mk5 및 Q 기기에서 생성된 시드도 영향을 받는다고 밝혔다. 초기 공개 메시지는 Mk3에 크게 집중됐다. 확대된 권고문은 이제 이후 모델에서도 엔트로피가 더 약했음을 인정한다.

펌웨어 업데이트는 향후 작업에 사용되는 코드를 바꾼다. 기존 지갑은 원래의 복구 단어, 파생 키, 주소를 그대로 유지한다. 이러한 단어를 다른 기기에 복원해도 동일한 취약 지갑이 다시 만들어질 뿐이다.

따라서 실질적인 개선을 위해서는 검증된 펌웨어 설치 후 생성된 새 시드가 필요하다. 자금은 그 새 시드에서 파생된 주소로 이동해야 한다. 이후 소유자는 백업을 업데이트하고 이전 시드가 더 이상 향후 입금을 보호하지 않는지 확인해야 한다.

이 이전 과정 자체에도 운영상 위험이 따른다. 공격자들은 가짜 펌웨어, 사기성 지원 계정, 위조 복구 도구를 이용해 긴급 보안 사고를 자주 악용한다. 당황한 소유자는 원래의 스캐너가 자신에게 도달하기도 전에 악성 링크를 따라가 자금을 잃을 수 있다.

소유자는 공식 Coldcard 채널을 이용하고, 펌웨어 파일과 서명을 검증하며, 복구 단어를 웹사이트나 지원 채팅에 입력하지 않아야 한다. 정상적인 지원 담당자는 펌웨어 노출을 진단하기 위해 시드 문구가 필요하지 않다.

거래 자체도 주의가 필요하다. 사용자는 신뢰할 수 있는 하드웨어에서 목적지 주소를 확인하고, 여건이 허락한다면 소액 시험 이체를 고려해야 한다. 교체 지갑을 테스트하고 확인하기 전까지 기존 백업을 파기해서는 안 된다.

패스프레이즈 사용자는 자신이 영구적으로 안전하다고 가정해서는 안 된다. 강력하고 비공개인 패스프레이즈는 상당한 추가 보호를 제공할 수 있다. 그러나 기초 시드는 여전히 약하며, 사람이 선택한 패스프레이즈의 품질은 측정하기 어려울 수 있다.

주사위 사용자는 문서화 문제에 직면한다. 일부 소유자는 정확한 굴림 횟수를 모른 채 무작위성을 추가했던 것을 기억할 수 있다. 다른 이들은 각 굴림이 독립적이었는지, 누군가 그 과정을 관찰했는지 알지 못할 수 있다.

Coinkite의 예외는 공정하고 독립적이며 비공개인 굴림을 최소 50회 요구한다. 소유자가 이러한 조건을 입증할 수 없다면, 더 안전한 해석은 예외가 적용되지 않는다는 것이다. 불확실성은 안심이 아니라 이전으로 이어져야 한다.

멀티시그 소유자는 모든 서명 키와 필요한 정족수를 검토해야 한다. 필요한 키 중 두 개가 영향을 받은 시드 생성에서 나왔다면 2-of-3 지갑은 여전히 노출된다. 기기 다양성은 지출에 필요한 키들 사이에 진정한 독립성을 만들 때에만 도움이 된다.

결함은 배포된 펌웨어에서 비롯됐지만 개선 부담은 크게 사용자에게 돌아간다. Bitcoin 거래에는 일반적으로 내장된 취소 절차가 없다. 도난 자금의 회수는 추적, 거래소 협조, 법적 조치 또는 운영자의 실수에 달려 있다.

이러한 책임 배분은 자기 보관 논쟁의 핵심이다. 자기 보관은 수탁자에 대한 의존을 없애지만, 수탁자의 복구 절차도 없앤다. 하드웨어 공급업체는 도구를 제공하지만, 사용자가 궁극적으로 자산을 통제하고 실패의 결과를 감수한다.

Coinkite 공동 창립자 Rodolfo Novak은 회사가 펌웨어 버그에 책임을 지고 있으며 전체 범위를 조사하고 있다고 말했다. 기술적 책임, 재정적 법적 책임, 실질적 복구는 서로 다른 문제로 남아 있다. 공개 성명은 영향을 받은 소유자가 보상을 받을지, 받는다면 어떤 방식일지를 해결하지 못했다.

Coldcard Wallet Exploit에 대해 여전히 불확실한 점

펌웨어 결함은 문서화됐지만, 공개 증거만으로는 모든 이체, 모델 노출, 공격자 역량이 입증되지는 않는다.

가장 강력한 증거는 여러 요소를 연결한다. 조사관들은 무작위성을 약화시키는 프로덕션 펌웨어 경로를 발견했다. 피해자들은 무단 이체를 신고했다. Galaxy는 체계적인 주소 열거와 일치하는 집중된 온체인 패턴을 식별했다.

그러나 온체인 거래는 그것이 도난됐는지 여부를 알려주지 않는다. Galaxy는 식별된 패턴이 모든 이체의 법적 지위가 아니라 운영자의 행동을 설명한다고 명시적으로 경고했다. 소유자도 유사한 잔돈 없는 거래를 사용해 자금을 통합할 수 있다.

지목된 공격자는 아직 나타나지 않았다. 연구자들은 한 집단이 모든 스윕을 수행했는지, 아니면 여러 운영자가 독립적으로 약점을 발견했는지를 공개적으로 입증하지 못했다. 기술적 세부 사항이 공개 논의에 들어간 뒤에는 모방 활동이 더 그럴듯해진다.

취약한 모든 지갑의 신뢰할 수 있는 공개 집계도 없다. 펌웨어 버전만으로는 기기가 시드를 생성했는지, 시드를 가져왔는지, 충분한 주사위 엔트로피를 사용했는지, 강력한 패스프레이즈를 적용했는지 알 수 없다. 자금이 있는 주소도 이러한 설정 선택을 드러내지 않는다.

이후 Coldcard 모델의 실질적인 공격 비용도 아직 확정되지 않았다. Coinkite의 약 72비트 추정치는 자사 분석에서 이용 가능한 엔트로피를 설명한다. Block은 실제 제약이 기기 메타데이터, 타이밍, 생성기 이력, 파생 비용에 따라 달라진다고 말한다.

이 차이는 중요하다. 40비트는 72비트보다 훨씬 작은 후보 공간을 만들 수 있다. 하지만 조건부 정보는 명목상 더 큰 탐색 공간을 줄일 수 있고, 알 수 없는 기기 상태는 스캔을 더 어렵게 만들 수 있다.

연구자들은 표준 하드웨어가 영향을 받은 모든 모델에서 얼마나 빠르게 시드를 복구할 수 있는지를 보여주는 보편적 벤치마크를 공개하지 않았다. 영향을 받은 모든 시드가 똑같이 쉽게 해독된다는 주장은 증거를 과장한다.

첫 번째 대규모 스윕 역시 공격자가 탐색 공간을 소진했다는 사실을 입증하지 않는다. Galaxy는 추가 파동이 발생할 가능성이 높다고 경고했다. 더 많은 주소와 더 큰 손실을 연결한 후속 보도는 이러한 우려를 뒷받침하지만, 귀속 조사는 계속 진행 중이다.

한 단서는 조사관이 운영자를 식별하는 데 도움이 될 수 있다. Block 보안 연구자 Clay Garrett은 공격자가 잘 알려진 블록체인 서비스 제공업체의 유료 계정을 사용했다고 말했다. 이 계정은 스윕 과정에서 출발지 주소를 조회한 것으로 알려졌다.

Garrett에 따르면 해당 제공업체의 내부 로그는 의심스러운 요청의 수, 시점, 순서와 밀접하게 일치했다. Block은 이 정보를 당국에 전달했다. 이 제공업체는 일반적인 서비스를 제공하고 있었으며 범죄 의도를 시사하는 뚜렷한 징후는 없었던 것으로 전해졌다.

유료 계정은 결제 정보, 로그인 기록, 네트워크 메타데이터 같은 기록을 남길 수 있다. 이러한 기록이 운영자를 식별할 수 있는지는 계정 설정, 관할권, 사용된 익명화 조치에 따라 달라진다.

Bitcoin의 이동은 또 다른 신호를 제공한다. Galaxy가 최초로 추적한 수익금은 처음에는 네 개 주소에 남아 있었다. 이후 거래소, 브리지, 믹서 또는 장외거래 서비스로 이체될 경우 개입 기회와 새로운 귀속 증거가 생길 수 있다.

그러나 블록체인 가시성에는 한계가 있다. 조사관은 거래를 추적할 수 있지만, 키를 자동으로 복구하거나 확정된 이체를 되돌릴 수는 없다. 운영자는 추적을 복잡하게 만들기 위해 자금을 여러 주소로 나눌 수도 있다.

이 사건은 공개 시점에 관한 의문을 제기한다. Coinkite가 경고를 게시하기 전에 사용자가 의심스러운 거래를 발견했다. 향후 보도에서는 회사가 결함을 처음 인지한 시점, 문제를 얼마나 신속히 검증했는지, 초기 검토가 왜 이를 놓쳤는지를 밝혀야 한다.

독립 감사 역시 면밀히 검토할 필요가 있다. 공개 소스 코드는 많은 사람이 시스템을 검토했다는 인상을 줄 수 있다. 실제로 검토 품질은 전문적 주의, 테스트 범위, 빌드 재현성, 눈에 띄지 않는 구성 경로를 점검할 유인에 달려 있다.

이 실패는 빌드 매크로 주변의 단일 조건부 검사에서 시작된 것으로 전해진다. 그 작은 구현 세부 사항이 이후 모든 키의 출처에 영향을 미쳤다. 보안 팀은 흔히 암호화 알고리즘에 집중하지만, 통합 코드는 그러한 알고리즘이 안전한 입력을 받는지를 조용히 결정한다.

이는 모든 하드웨어 지갑이 안전하지 않다는 증거가 아니다. 이는 물리적 격리가 보안 모델의 일부만 포괄한다는 증거다. 구매자는 무작위성, 펌웨어 공급망, 서명 절차, 릴리스 테스트, 사고 대응에도 의존한다.

가장 책임 있는 태도는 전면적인 안심도 공황도 아니다. 잠재적으로 영향을 받은 시드를 가진 소유자는 공식 이전 지침을 긴급한 것으로 받아들여야 한다. 관련 없는 지갑에 관한 더 광범위한 주장은 별도의 기술적 증거가 필요하다.

세 가지 신호가 위기 통제 여부를 보여줄 것이다

다음 국면은 지갑 마이그레이션, 도난 bitcoin의 이동, 그리고 Coldcard의 릴리스 프로세스에서 검증 가능한 변화에 달려 있다.

첫 번째 신호는 영향을 받은 시드 생성과 연계된 주소들에서 추가 스윕이 나타나는지 여부다. Galaxy가 처음 확인한 1,196개 주소 클러스터는 뚜렷한 지문을 제공했지만, 이후의 운영자는 수수료율과 거래 구조를 바꿀 수 있다.

조사관들은 최초 패턴을 대조하는 것보다 더 폭넓은 방법을 활용해야 한다. 피해자 신고, 알려진 펌웨어 이력, 주소 파생 방식, 거래 시점을 비교할 수 있다. 추정 피해액이 증가한다면 노출된 지갑에 여전히 자금이 있거나 공격자들이 검색 범위를 넓히고 있음을 뜻한다.

추정치가 안정적이라고 해서 안심할 수 있는 정도는 제한적이다. 취약한 일부 지갑은 현재 자금이 없더라도 이후 입금을 받을 수 있다. 오래된 주소를 재사용하는 소유자는 사건이 헤드라인에서 사라진 뒤 몇 달 후에도 노출된 지갑에 다시 가치를 넣을 수 있다.

따라서 한 주 동안 조용하다는 사실보다 마이그레이션 데이터가 더 중요하다. Coinkite는 영향받은 기기 수, 취약한 시드 수, 완료된 마이그레이션 수를 공개하지 않았다. 이 분모가 없으면 업계는 남은 노출 규모를 계산할 수 없다.

두 번째 신호는 공격자 연계 주소에서 자금이 이동하는지다. 규제 대상 서비스로 이체되면 조사관들은 계정 기록이나 자산 동결로 이어질 단서를 얻을 수 있다. 프라이버시 도구나 크로스체인 서비스를 거치면 이 과정은 더 복잡해질 수 있다.

유료 블록체인 서비스 계정이 사용됐다는 보도는 두 번째 조사 경로를 만든다. 당국이 서비스 로그를 거래 시점 및 결제 정보와 연결한다면, 운영자의 실수가 블록체인 분석보다 더 중요해질 수 있다.

공개적인 귀속 확인은 공격 방식에 대한 현재의 설명을 강화할 것이다. 운영자가 기기 식별자를 확보했는지, 유출된 고객 데이터를 구매했는지, 아니면 단순히 광범위한 시간 범위를 검색했는지를 밝혀낼 수 있다.

이런 구분은 이후 모델의 위험을 판단하는 데 중요하다. 공격자가 제조 또는 고객 메타데이터에 접근했다면 실제 검색 공간은 훨씬 작아질 수 있다. 반대로 민감한 메타데이터 없이도 작전이 성공했다면 노출된 대상 집단은 더 넓어진다.

세 번째 신호는 Coinkite가 릴리스를 검증하는 방식을 바꾸는지 여부다. 수정된 펌웨어는 즉각적인 버그를 해결한다. 재발을 막으려면 소스 코드뿐 아니라 실제 배포용 바이너리 내부의 엔트로피 소스를 확인하는 테스트가 필요하다.

유의미한 변화로는 재현 가능한 빌드 검증, 독립적인 펌웨어 감사, 기기 출력에 대한 통계 테스트, 빌드 플래그 회귀 테스트 등이 있다. 사건 이후의 공개 문서는 어떤 통제가 실패했으며 어떤 새로운 통제가 동일한 유형의 오류를 차단하는지 설명해야 한다.

완전한 검토는 의존성 동작도 다뤄야 한다. libngu 조건과 MicroPython 폴백은 Coldcard의 구성과 상호작용했다. 각 구성 요소를 개별적으로 테스트했다고 해서 최종 동작이 반드시 드러나는 것은 아니다.

경쟁사들도 비슷한 수준의 보증을 공개하라는 압박을 받게 될 것이다. Ledger, Trezor, Jade, BitBox, SeedSigner는 엔트로피를 어떻게 테스트하는지, 컴파일된 펌웨어를 어떻게 검증하는지, 독립적인 키 소스를 어떻게 분리하는지 명확히 할 수 있다. 이들의 대응은 이번 사건이 Coldcard에 국한된 문제로 남을지, 업계 전반의 신뢰 충격으로 이어질지를 좌우할 것이다.

독립 연구자들도 벤더의 주장을 검증할 수 있다. 강력한 대응에는 외부 전문가가 재현할 수 있는 증거가 필요하다. 에어갭이나 보안 하드웨어에 관한 마케팅 문구는 시드 생성에 대한 질문에 답하지 못한다.

Techmeme Bitcoin 뉴스를 지켜보는 독자들에게 남는 교훈은 분명하다. 콜드 스토리지가 물리적 격리의 효용을 잃어서 실패한 것이 아니다. 격리가 사용자가 약속받은 것보다 취약한 생성 과정을 거친 비밀을 보호했기 때문에 실패했다.

이 구분은 구매자가 지갑을 평가하는 방식을 바꿔야 한다. 엔트로피가 어디서 오는지, 배포용 펌웨어를 어떻게 검증하는지, 벤더 결함 이후 복구가 어떻게 이뤄지는지를 물어야 한다. 또한 한 기기가 감당할 수 있는 위험 수준을 넘어서는 자산이라면 독립적인 키 소스도 고려해야 한다.

즉각적인 조치는 더 좁다. 영향을 받은 Coldcard 펌웨어에서 시드를 생성한 사람은 공식 권고문을 확인하고, 올바른 릴리스를 설치한 뒤, 새 시드를 만들고 자금을 마이그레이션해야 한다. 기존 시드를 새 지갑에 복원하지 말아야 한다.

향후 몇 달 동안 주소 클러스터, 서비스 제공업체 조사, Coinkite의 사건 이후 통제를 지켜봐야 한다. 이 세 가지 신호는 이번 Techmeme Bitcoin 사건이 통제 가능한 펌웨어 실패로 끝날지, 아니면 하드웨어 지갑 신뢰를 둘러싼 더 긴 위기로 이어질지를 보여줄 것이다.

 
 

무료로 시작하세요

개인 지식 관리 기능을 갖춘 로컬 우선 AI 어시스턴트

더 나은 AI 경험을 위해

현재 remio는 Windows 10+ (x64)M-Chip Macs만 지원합니다.

​머릿속에 검색창을 추가하세요

remio에게 물어보기만 하면 됩니다

모든 것을 기억하세요

정리는 필요 없습니다

bottom of page