#160
미해결공개키 노출16 BTC아직 아무도 못 풀었습니다. 다만 공개키가 노출돼 있어 완전탐색이 아니라 Pollard's Kangaroo로 접근할 수 있습니다. 필요한 연산량이 2160에서 280로 떨어집니다.
키 범위 (16진)
0x8000000000000000000000000000000000000000 ~ 0xffffffffffffffffffffffffffffffffffffffff
구간 크기
2^159 = 7.3×10^47
현재 잔액
16.00119082 BTC · 14 tx
2시간 전 스냅샷 기준
공개키 (압축)
02e0a8b039282faf6fe0fd769cfbc4b6b4cf8758ba68220eac420e32b91ddfa673
2019-05-31에 창작자가 이 주소에서 1,000사토시를 출금하면서 드러났습니다. BSGS·Kangaroo의 입력이 되는 값입니다.
공격 방법
Pollard's Kangaroo
기대 연산량 ≈ 1.2×10^24 (2^80)
브라우저 (JS, 1스레드)이 사이트의 탐색기2.1×10^12년 — 우주 나이의 154배
CPU · keyhunt 8스레드4.8×10^9년
CPU · keyhunt 16스레드2.4×10^9년
GTX 10601.9×10^8년
RTX 307047,885,684년 (4,789만 년)
RTX 309025,539,032년 (2,554만 년)
RTX 409015,323,419년 (1,532만 년)
RTX 50909,577,137년 (958만 년)
RTX 4090 × 101,532,342년 (153만 년)
RTX 4090 × 100153,234년 (15만 년)
RTX 4090 × 1,000대형 풀 규모15,323년 (1.5만 년)
전부 대략치입니다. 구현·클럭·타깃 개수에 따라 배수로 달라지니 자릿수만 보세요. 계산기에서 직접 속도를 넣어볼 수 있습니다.
찾더라도 그냥 출금하면 안 됩니다
퍼즐 자금을 옮기는 트랜잭션에는 공개키와 서명이 들어갑니다. 멤풀에 뜨는 순간 봇이 같은 자금을 더 높은 수수료로 채갑니다. #66과 #69가 실제로 이렇게 털렸습니다. 대응 방법
실행
이 퍼즐을 실제로 돌리는 법
추천 도구: Kangaroo (GPU)
공개키가 알려져 있으니 이산로그를 직접 풉니다. 필요 연산이 2^159 에서 2^80 로 떨어집니다.
0. 빌드 (리눅스 · CUDA)
git clone https://github.com/JeanLucPons/Kangaroo cd Kangaroo make gpu=1 ccap=86 # ccap 은 GPU 의 compute capability (4090=89, 3090=86, 1060=61) # 윈도우는 VC_CUDA102/Kangaroo.sln 을 Visual Studio 로 엽니다. macOS·AMD 는 지원하지 않습니다.
1. 입력 파일 — 시작범위 / 끝범위 / 공개키 세 줄
cat > in160.txt <<'EOF' 8000000000000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 02E0A8B039282FAF6FE0FD769CFBC4B6B4CF8758BA68220EAC420E32B91DDFA673 EOF
2. 실행
./kangaroo -t 8 -gpu -gpuId 0 -w save160.work -wi 300 -o found-160.txt in160.txt
주의할 점
- 입력 파일은 순서가 중요합니다 — 시작범위, 끝범위, 공개키. 헷갈리면 아무것도 못 찾습니다.
- -d 는 distinguished point 비트입니다. 비워두면 자동으로 잡아주고, 분산할 때만 손대세요.
- -w 와 -wi 로 5분마다 진행 상황을 저장합니다. 며칠씩 도는 작업이라 필수입니다.
- 여러 대를 묶으려면 -s(서버) / -c(클라이언트) 모드를 쓰세요. 구간을 쪼개는 것보다 효율적입니다.
다른 선택지
현실 점검
RTX 4090 한 장으로 15,323,419년 (1,532만 년) 걸립니다. 이건 “언젠가 되겠지”가 아니라 대부분의 경우 “안 됩니다”라는 뜻입니다. 그럼에도 하려면 GPU를 모으거나 풀에 들어가야 합니다.