Randstorm / BitcoinJS

Randstorm: 오래된 비트코인 지갑 뒤에 숨은 브라우저 결함

어떤 소프트웨어가 문서화되었는지, 어떤 버전이 중요한지, 그리고 취약한 키를 지니지 않고 오래된 지갑을 떠나는 방법.

최종 업데이트 2026. 9. 18.

실제로 무엇이 잘못되었나

Randstorm은 오래된 브라우저 소프트웨어에서의 키 생성 문제와 관련이 있습니다. JSBN의 SecureRandom()은 불충분한 엔트로피 소스와 예측 가능한 브라우저 Math.random()을 결합할 수 있었습니다. Unciphered는 2023년 11월 14일 이 문제를 공개하고 2011~2015년에 생성된 취약한 지갑을 보고했습니다. 이는 관찰된 기간일 뿐, 해당 연도의 모든 지갑에 대한 판결이 아닙니다.

Math.random()브라우저에 의존하는 시작 값
SecureRandom()엔트로피 풀은 PRNG에 공급된다
개인 키유효한 형식, 잠재적으로 예측 가능한 출처

SecureRandom이라는 이름이 보안 보장을 의미하지는 않습니다. Coinpunk의 검사된 소스에서, 폴백은 Math.random()을 사용해 256바이트 풀을 채우고 시계 값을 섞어 Arcfour 생성기에 공급합니다. 큰 풀이라도 입력값에 없는 예측 불가능성을 제공할 수 없습니다. 같은 소스에는 더 강력한 Web Crypto 및 Node.js 경로도 포함되어 있습니다: 폴백에 도달하는지가 중요한 구분점입니다.

이는 개인 키 선택 방식의 결함입니다. 비트코인의 서명 검증이 깨진 것은 아닙니다. 오래된 백업을 최신 앱에서 열면 해당 키가 유지됩니다; 자금을 독립적으로 생성된 키로 옮기면 지출 권한이 변경됩니다.

지갑, 버전 및 증거의 한계

라이브러리 버전과 지갑 버전을 별도로 읽으십시오. 호스팅된 웹사이트의 경우, 키 생성 당시 제공된 코드가 오늘날 앱 버전보다 더 중요합니다. 표는 문서화된 사건과 소스 코드 발견을 구분합니다.

2026년 9월 19일에 증거 확인
프로젝트버전 또는 기간이것이 확립하는 것
BitcoinJS / bitcoinjs-lib0.1.3공개에서 예시로 명명됨. JSBN은 2014년 3월까지 사용됨; 이는 모든 파생 버전에 대한 완전한 영향 버전 범위를 확립하지 않습니다.
Blockchain.info
Blockchain.com
역사적 웹 지갑; 번호가 매겨진 영향 범위는 확인되지 않음고객 지갑이 Unciphered 조사 시작점이었음. 이는 모든 Blockchain.com 지갑이나 현재 앱을 연루시키지 않음.
bitaddress.org2.6.5 · 2.8.0
2013-12-01 · 2014-01-18
2.6.5는 JSBN을 1.4로 업데이트. 2.8.0은 전체 풀 Web Crypto 초기화와 필수 마우스/키보드 엔트로피를 추가. 이는 문서화된 변경 사항이지 “모든 이전 버전 취약 / 모든 이후 버전 안전” 경계가 입증된 것은 아님.
Coinpunk0.2.1
63ca325be538
검사된 저장소 스냅샷은 스스로 0.2.1로 라벨링하며 Math.random()/Arcfour 폴백과 더 강력한 경로를 포함. 이는 코드 발견이지 모든 배포가 폴백을 사용했다는 증거는 아님. 개발은 중단됨.

이 개요는 여기서 검증된 구현을 다루며, 완전한 영향 지갑 목록이 아님. 목록에 없는 제품이 자동으로 영향이 없는 것은 아님. 오래된 생성 날짜나 1로 시작하는 주소만으로 생성기를 식별할 수 없음.

목적지 한 번 준비하기

아래 세 경로는 새 Electrum Desktop 지갑을 목적지로 사용. 메뉴 이름은 이 문서에 확인된 영어 4.8.2 데스크톱 인터페이스 기준. 공식 사이트에서 최신 릴리스를 다운로드; 4.8.2는 지침 참고용이며 영구 최소 버전 아님.

새 목적지로 추천하는 하드웨어 지갑 →

Electrum — 공식 다운로드 및 서명 확인 ↗

  1. 신뢰할 수 있고 업데이트된 컴퓨터에서 운영체제에 맞는 Electrum을 다운로드. 공식 서명 지침을 따르고 설치 전에 서명자 지문을 독립적으로 확인.
  2. File → New/Restore 선택, 지갑 이름을 randstorm-new로 지정, Standard wallet → Create a new seed 선택. 새 단어를 종이에 기록하고 확인 후 지갑 파일 비밀번호 설정. 이전 비밀키는 가져오지 말 것.
  3. 입금 전에 File → New/Restore → Standard wallet → I already have a seed를 사용해 recovery-check 생성, NEW 종이 백업만 사용. View → Addresses 및 Addresses 탭을 통해 두 지갑의 첫 수신 주소 비교. 이 확인 동안 두 지갑 모두 유지.
  4. randstorm-new에서 Receive → Request 사용(Lightning 활성화 시 Onchain). 비트코인 주소 복사. 아래 지갑별 경로는 이 주소로 보내야 하며, 수수료와 전체 목적지를 승인 전에 확인.

Blockchain.info: 오래된 주소를 보유한 지갑 사용

이 경로는 Blockchain.com을 통해 여전히 접근 가능한 역사적 Blockchain.info 지갑용. 현재 송금 지침은 오늘날 웹 인터페이스 기준이며, 검증되지 않은 2012년 화면 아님. Trading Account 잔액은 별도 제품.

  1. 원본 암호화 백업과 로그인 기록 보관. 웹 지갑에서 Settings → Wallets & Addresses → Bitcoin에서 별도로 가져온 주소 확인. 알려진 오래된 공개 주소와 표시된 보유량 일치시키기; 새 복구 구문이 가져온 키를 포함한다고 가정하지 말 것.
  2. Wallet 대시보드에서 Send 열고 Bitcoin 선택 후 새 Electrum 주소를 외부 목적지로 입력. 소액부터 시작, Continue 선택, 주소·금액·수수료 검토 후 Send.
  3. Electrum의 History에서 확인 대기. 이후 수수료를 고려해 남은 사용 가능 잔액 송금. 별도로 자금이 있는 가져온 주소 각각 확인; 성공적인 테스트만으로 오래된 지갑이 비워지지 않음. 모든 은퇴한 수신 주소 사용 중지.

Blockchain.com: 현재 송금 지침 ↗

bitaddress.org: Sweep으로 종이 지갑 이체

bitaddress 출력물은 보통 단일 키를 나타내며, 현대 복구 구문 아님. 종이와 원본 HTML 파일 보존: 파일명이나 바닥글이 릴리스를 식별할 수 있음. 버전 기록은 설정 재구성에 도움; 개별 키 인증 아님.

  1. 개인 키 식별, 공개 수신 주소 아님. 메인넷 WIF는 보통 5, K 또는 L로 시작; BIP38 암호화 키는 6P로 시작. 접두사는 형식 힌트일 뿐. 해당 주소를 결정하므로 원본 압축 형태 유지.
  2. BIP38의 경우, 공식 bitaddress 저장소에서 검증된 복사본을 사용해 로컬 오프라인에서 먼저 복호화: Wallet Details → 암호화 키 입력 → View Details → 암호 입력 → Decrypt BIP38. 결과 주소를 종이와 비교 후 일치하는 WIF만 사용. 라이브 웹사이트에 키 입력 금지, 이 오래된 도구로 대체 지갑 생성 금지.
  3. NEW Electrum 목적지 지갑에서 Wallet → Private keys → Sweep 열기. 암호화되지 않은 WIF만 이 로컬 대화상자에 입력. 목적지가 randstorm-new 소유인지 확인 후 거래 및 수수료 검토 후 방송.
  4. Sweep은 제공된 키가 제어하는 사용 가능한 잔액을 한 거래로 이체. 가져오기 아님, 위의 소액 테스트 시퀀스 아님. 자금이 있는 다른 종이 지갑 키에 대해 반복하고 모든 예상 수령 확인 전까지 원본 보관.

bitaddress.org — 공식 저장소 및 서명된 파일 ↗

Coinpunk: 오래된 서버 건드리기 전에 백업 보호

Coinpunk은 자체 호스팅되어 보편적 현재 로그인 사이트나 복구 서비스 없음. 이 라벨은 package.json이 버전 0.2.1을 선언한 저장소 스냅샷 63ca325be538에서 가져옴. 수정된 배포는 다를 수 있음.

  1. 원본 신뢰 설치가 여전히 작동하면 Backup → Download 열어 암호화된 지갑 여러 복사본 보관. 로그인 식별자, 비밀번호, 서버 백업도 보존. 유일한 살아남은 인스턴스를 먼저 업데이트하거나 재설치하지 말 것.
  2. 역사적 Send Bitcoins 양식에는 Bitcoin address to send to, Amount, 표시된 수수료 포함. 원본 인스턴스가 여전히 안정적으로 작동하고 목적지 주소 지원 시에만 사용. 이 오래된 소프트웨어에 bc1 주소 강제 입력 금지; 검사된 주소 파서는 Base58Check 사용.
  3. 호환되지 않는 목적지나 오프라인 서버의 경우 백업 보존 및 이 Coinpunk 버전을 이해하는 도움으로 로컬에서 키 복구. 지갑 모델은 암호화된 페이로드 내에 change 키를 포함한 keyPairs 저장. Electrum 시드나 Bitcoin Core wallet.dat 아님; 파일 이름 변경으로 변환 불가.
  4. 복구된 WIF 키가 원본 주소와 일치하면 위 Electrum Sweep 절차를 모든 자금 있는 키에 사용. 변경 주소 포함 전체 세트 확인. 암호화 백업과 비밀번호는 목적지 수령이 예상 잔액과 일치할 때까지 보관.

새 목적지로 추천하는 하드웨어 지갑

이 마이그레이션에는 물리적 버튼을 선호하면 Trezor Safe 3, 더 큰 터치스크린이 주소 확인을 쉽게 하면 Trezor Safe 5를 추천. 둘 다 새 서명 키를 별도 장치에 보관 가능. 구매만으로 오래된 키가 해결되지 않음: 장치에서 완전히 새 지갑 생성 필요.

Amazon 어소시에이트 프로그램의 참여자로서 적합한 구매에서 수수료를 받습니다.

Trezor Safe 3

두 개 버튼과 단색 화면: 신중한 버튼 확인을 원하는 독자용 선택. 이전 잔액 이체 전에 장치에서 전체 수신 주소 확인.

Amazon에서 Trezor Safe 3 보기

Trezor Safe 5

1.54인치 컬러 터치스크린과 햅틱 피드백: 화면 크기와 터치 제어가 가장 중요할 때 선택. 더 편안한 디스플레이가 재사용되거나 노출된 키를 안전하게 만들지 않음.

Amazon에서 Trezor Safe 5 보기

Amazon 링크는 지역별 제품 검색을 열며, 검증된 판매자 목록 아님. 판매자를 Trezor 공식 Amazon 스토어프론트나 공인 리셀러와 대조. 설정 중 장치 인증 검사 사용; 제공된 사전 작성된 지갑 백업 사용 금지.

  1. trezor.io/start에서 시작해 Trezor Suite 설치. 장치별 설정 및 인증 검사 따르고 Create a new wallet 선택, 장치 내 백업 확인 완료. 백업은 오프라인 보관. 위 예시의 오래된 지갑이나 소프트웨어 지갑 시드 복원 금지.
  2. 일반 송금 시 Trezor Suite에서 Bitcoin 계정 선택, Receive 선택 후 연결된 장치에서 전체 주소 확인. 이 주소를 Blockchain.com 경로의 소프트웨어 지갑 주소 대신 사용. 입금과 확인 횟수는 Electrum의 History 대신 Trezor Suite에서 확인하세요.
  3. Electrum Sweep 경로용으로 새로 구성된 Trezor 연결 후 File → New/Restore → Standard wallet → Use a hardware device로 Electrum 지갑 생성. Trezor Electrum 가이드 따르고 일치하는 Bitcoin 계정 및 주소 유형 사용. Trezor에서 수신 주소 확인 후 스윕 목적지로 사용. Sweep에는 OLD WIF 키만 입력; Trezor 백업 단어를 Electrum이나 웹사이트에 절대 입력 금지.

Trezor: Electrum에 장치 연결 ↗

출처 및 범위

이 사례 연구는 역사적 브라우저 구현과 다양한 마이그레이션 경로를 다룸. 엔트로피, 시드 구문, 하드웨어 지갑 간의 더 넓은 관계는 배경 기사를 계속 참조.

배경: 약한 지갑 시드가 발생하는 이유 →

2026년 9월 19일에 주요 문서 및 소스 코드 기준으로 확인. 테스트에 실제 자금이나 개인 키 사용 안 함. 표는 완전한 목록이나 지갑 진단 아님.

자주 묻는 질문

BitcoinJS 0.1.3이 내 지갑 버전을 식별하나?

아니요. Randstorm 공개에서 인용된 라이브러리 예제를 식별합니다. 지갑은 해당 라이브러리를 번들하거나 수정할 수 있으나 사용자에게 버전을 노출하지 않을 수 있습니다. 원본 지갑 빌드와 브라우저 환경은 여전히 식별해야 합니다.

bitaddress.org 2.8.0이 내 종이 지갑이 안전함을 증명하나?

변경 로그는 2.8.0에서 더 강력한 엔트로피 수집을 문서화합니다. 개별 키 생성 방식, 사용 가능한 브라우저 기능, 파일 수정 여부는 인증하지 않습니다. 따라서 이 기사는 이를 문서화된 변경으로 취급하며 보편적 안전 경계로 보지 않습니다.

왜 종이 지갑 경로에서 Import 대신 Sweep을 사용하나?

Import는 원본 개인 키를 계속 사용합니다. Sweep은 사용 가능한 자금을 준비된 목적지 지갑으로 이체하는 거래를 생성합니다. 새 지갑은 독립적으로 생성된 키를 가져야 하며, 방송 전에 목적지와 수수료를 확인해야 합니다.

Electrum이 Coinpunk 백업을 직접 열 수 있나?

검사된 Coinpunk 버전은 암호화된 지갑 페이로드를 저장하며 Electrum 시드가 아님. 백업, 로그인 식별자, 비밀번호 보존. 버전별 전문 지식으로 로컬에서 키 복구 후 원본 주소와 일치시키고 스윕 경로 사용.