NEEDLESPACE
1막 · 규모

비트코인 개인키는 우주에서 바늘 찾기입니다.

아무 숫자나 하나 고르면 그게 누군가의 지갑 열쇠입니다. 이론적으로는요. 문제는 고를 수 있는 숫자가 2256라는 것. 이 숫자가 얼마나 큰지 감이 오지 않는 게 정상입니다. 그래서 이 사이트가 있습니다.

2²⁵⁶ — 개인키의 가짓수

왜 78자리일까

암산으로 잡는 법

2¹⁰ = 1,024, 거의 10³입니다. 즉 10비트가 늘 때마다 십진수 자릿수가 3개씩 늘어납니다. 256비트면 256 ÷ 10 × 3 ≈ 77자리쯤 되겠구나, 하고 바로 잡힙니다.

정확히 계산하면

자릿수 = ⌊log₁₀(2²⁵⁶)⌋ + 1
       = ⌊256 × log₁₀2⌋ + 1
       = ⌊256 × 0.30103⌋ + 1
       = ⌊77.06⌋ + 1
       = 78

마지막에 1을 더하는 건, 예를 들어 100은 log₁₀이 딱 2인데 자릿수는 3이기 때문입니다.

16진수는 왜 64자리인가

16진수 한 자리가 딱 4비트(0000~1111)를 담습니다. 그래서 256 ÷ 4 = 64자리. 나누어떨어지기 때문에 개인키를 주고받을 때는 십진수가 아니라 16진수 64자리로 씁니다. 32바이트이기도 하고요 — 256 ÷ 8 = 32.

엄밀히 말하면

secp256k1에서 실제로 유효한 개인키의 상한은 2²⁵⁶ − 1이 아니라 곡선의 차수 n − 1입니다. 2²⁵⁶보다 약 2¹²⁹만큼 작은데, 전체에 대한 비율로는 10⁻³⁸ 수준이라 규모를 이야기할 때는 무시해도 됩니다. 이 사이트의 검증 도구는 그 상한을 실제로 확인합니다.

78자리

115792089237316195423570985008687907853269984665640564039457584007913129639936

이 사이트는 겁을 주려고 만든 게 아닙니다. 모르고 불안한 것보다, 알고 안심하는 쪽이 낫다고 보고 만들었습니다.

비교

다른 큰 숫자들 옆에 세워보면

사람의 직관은 109쯤에서 이미 고장 납니다. 10억이든 1조든 그냥 “엄청 큰 수”로 뭉뚱그려지죠. 그래서 개인키 개수를 다른 큰 숫자들 사이에 끼워 넣어봤습니다. 아래는 전부 로그 눈금입니다 — 한 칸 내려갈 때마다 10배가 아니라, 막대 길이가 지수에 비례합니다.

로그 눈금 · 10⁰ → 10⁸⁰개수
  1. 104이 페이지의 글자 수10,000
  2. 107서울 인구약 940만
  3. 1011우리 은하의 별1,000억 ~ 4,000억
  4. 1019지구의 모든 모래알바닷가·사막 전부약 7.5 × 10¹⁸
  5. 1023물 18g 속의 분자아보가드로 수6.02 × 10²³
  6. 1048비트코인 주소의 가짓수2¹⁶⁰ — 실제 충돌 대상1.46 × 10⁴⁸
  7. 1050지구를 이루는 원자약 1.3 × 10⁵⁰
  8. 1057태양을 이루는 원자약 1.2 × 10⁵⁷
  9. 1068우리 은하 전체의 원자별 전부를 분해해서약 10⁶⁸
  10. 1077비트코인 개인키의 가짓수2²⁵⁶1.16 × 10⁷⁷
  11. 1080관측 가능한 우주의 원자약 10⁸⁰
개인키 공간은 우리 은하 전체의 원자를 다 세어도 그 10억 배입니다. 관측 가능한 우주 전체 원자 수의 1,000분의 1 수준이고요. 다만 실제로 “충돌”이 일어나는 대상은 개인키가 아니라 주소(2¹⁶⁰)라, 진짜 과녁은 10⁴⁸ 쪽입니다. 그래도 여전히 지구의 원자 수 급입니다.
그래서

이게 비트코인이 비밀번호 없이 작동하는 이유입니다

은행은 당신의 계좌를 서버에서 지킵니다. 비밀번호를 틀리면 잠기고, 수상하면 이체를 막습니다. 비트코인에는 그런 게 없습니다. 지갑을 지키는 건 오직 숫자가 너무 많다는 사실 하나뿐입니다.

누구나 지금 이 순간 아무 개인키나 만들어 볼 수 있고, 아무도 그걸 막지 않습니다. 막을 필요가 없거든요. 세상의 모든 컴퓨터를 다 동원해 우주가 끝날 때까지 돌려도 이미 쓰이고 있는 지갑 하나를 우연히 맞힐 수 없습니다.

바로 이 지점에서 “개인키 찾아드립니다” 류의 서비스가 왜 전부 거짓말인지가 드러납니다. 그들이 파는 건 기술이 아니라, 위 사다리를 한 번도 안 본 사람의 기대입니다.

숫자로 다시 말하면

잔고가 있는 비트코인 주소를 약 5,000만 개로 잡으면, 무작위 키 하나가 그중 아무거나 맞힐 확률은 3.4 × 10⁻⁴¹입니다.

초당 10억 개를 100만 대의 컴퓨터로 우주 나이(138억 년) 동안 돌려도 기대 적중 횟수는 0.0000000000001번입니다.

그러니 이런 건 전부 사기입니다

선불금을 받고 “잃어버린 지갑을 복구”해 준다는 곳, “해킹된 키 데이터베이스”를 판다는 곳, 씨드 문구를 입력하면 잔액을 조회해 준다는 곳. 마지막 것은 특히 위험합니다 — 그건 조회가 아니라 탈취입니다.

2막 · 체감

설명 말고, 직접 해보세요

위 숫자를 읽고 “아 그렇구나” 하고 넘어가면 아무것도 안 남습니다. 그래서 탐색기를 만들었습니다. 당신 브라우저에서 진짜 secp256k1 연산으로 무작위 개인키를 만들고, 진짜 비트코인 주소를 유도해서, 실제 퍼즐 주소들과 대조합니다.

몇 분 돌려보면 카운터가 수백만까지 올라갑니다. 그리고 진행률 표시줄은 미동도 하지 않습니다. 그 대비가 이 사이트가 하고 싶은 말 전부입니다.

그리고 거기서 로또와 나란히 세워봅니다. 로또 1등이 145조 배 쉽습니다. 천 원짜리 로또 한 장을 사는 게, 이 브라우저로 255년을 돌리는 것과 같은 확률입니다. 그런데 장비를 1,000장으로 바꾸면 그 확률이 58초마다 쌓입니다 — 복권과 다른 점이 딱 그것 하나입니다.

탐색기가 하는 일
  • Web Worker에서 암호학적 난수로 256비트 키를 생성합니다. 흉내가 아니라 실제 연산입니다.
  • 압축·비압축 P2PKH 주소를 둘 다 유도해서 미해결 퍼즐 77개 주소와 대조합니다.
  • 전체 공간(2²⁵⁶) 모드와 퍼즐 범위(271) 모드를 나란히 비교합니다.
  • 생성된 키는 단 한 바이트도 네트워크로 나가지 않습니다. 직접 확인하는 방법도 준비했습니다.
3막 · 반전

그런데 범위를 좁혀 놓은 사람이 있습니다

2015년, saatoshi_rising이라는 사람이 이상한 일을 했습니다. 개인키를 일부러 좁은 구간 안에서 골라 160개의 주소를 만들고, 거기에 비트코인을 넣은 뒤 주소를 전부 공개했습니다. 1번은 2⁰~2¹ 사이, 2번은 2¹~2² 사이, … 160번은 2¹⁵⁹~2¹⁶⁰ 사이. 난이도가 한 칸마다 정확히 두 배씩 오르는 자.

이건 우주에서 바늘 찾기가 아닙니다. 83개는 이미 풀렸습니다. 남은 77개에 아직 903 BTC가 들어 있고, 주인이 없습니다. 먼저 찾는 사람이 가져갑니다.

전체 퍼즐
160
2015-01-15 단일 트랜잭션
해결됨
83
개인키까지 전부 공개
남은 상금
903
BTC · 2023년 10배 증액 후
가장 쉬운 미해결
#71
2^70 ~ 2^71 · 7.1 BTC
여기서부터는 진짜 가능성이 있습니다

#71번의 탐색 공간은 270입니다. 전체 공간보다 2185 작습니다. 여전히 GPU 한 장으로는 수만 년이지만, “불가능”과 “오래 걸림”은 다른 말입니다. 실제로 83번이나 누군가 해냈으니까요.

게다가 지름길이 있는 퍼즐도 있습니다

창작자가 2019년에 일부 주소에서 소액을 출금하면서 공개키가 노출됐습니다. 공개키가 알려진 퍼즐은 완전탐색 대신 Pollard's Kangaroo로 O(2n/2)에 풀립니다 — 제곱근만큼 빨라집니다. 미해결 중에는 #140, #145, #150, #155, #160이 여기 해당합니다.

4막 · 진짜 위험

해커는 키를 찾지 않습니다. 훔칩니다.

여기까지 읽고 이런 생각이 드셨을 수 있습니다 — “이런 도구를 만들어서 뿌리면, 내 비트코인이 찾아지는 거 아니야?” 당연한 걱정이고, 이 사이트를 비난하는 가장 흔한 이유이기도 합니다.

그런데 직접 돌려보고 나면 정반대의 결론에 도달합니다. 당신이 몇 시간을 돌려서 진행률 0.000…0%를 확인하고 나면, 자연스럽게 이런 질문이 생깁니다. 그럼 실제 도난 사건들은 대체 어떻게 일어난 거지?

답은 간단합니다. 아무도 이 짓을 하지 않기 때문입니다. 공격자는 합리적입니다. 우주 나이의 1050배를 들여 수학을 뚫느니, 피싱 메일 한 통을 보내는 쪽이 압도적으로 쌉니다. 실제 도난은 전부 그쪽에서 일어납니다.

그러니 걱정의 방향을 바꾸는 게 맞습니다. 내 키가 우연히 찾아질 걱정은 접어도 됩니다. 대신 관리 소홀만 신경 쓰면 되고, 그건 통제할 수 있는 영역입니다. 훨씬 마음 편한 방식이죠.

실제 비트코인 도난 경로
전부 “찾기”가 아니라 “훔치기”입니다
  • 피싱진짜처럼 만든 지갑 사이트에 씨드를 직접 입력하게 만듭니다
  • 클립보드 멀웨어복사한 주소를 몰래 공격자 주소로 바꿔치기합니다
  • 씨드 사진종이에 적은 씨드를 찍어 클라우드에 자동 업로드
  • 가짜 하드월렛미리 씨드가 심어진 기기를 중고로 판매
  • SIM 스와핑번호를 가로채 거래소 계정을 통째로 인수
  • 악성 바이너리“최적화 버전”이라며 포럼에 올라온 컴파일된 도구
공통점이 보이시나요. 전부 사람을 공격합니다. 수학을 공격하는 항목은 하나도 없습니다.
예외가 딱 하나 있습니다 — 그리고 그게 이 사이트의 요점입니다

탐색이 실제로 성공하는 경우가 있긴 합니다. 브레인월렛(“내가 외우기 좋은 문장”으로 만든 키), 망가진 난수 생성기(Milk Sad 같은 CVE)로 만들어진 키들. 이런 건 몇 시간 안에 털립니다.

이유는 하나입니다 — 공간이 좁아졌기 때문입니다. 2256이 아니라 “사람이 떠올릴 만한 문장 몇억 개”가 되어버린 겁니다.

비트코인 퍼즐이 풀리는 이유도 정확히 같습니다. 창작자가 일부러 좁혀놨으니까요. 브레인월렛은 사용자가 실수로 좁힌 것이고요. 결론: 탐색은 좁아진 공간에서만 통합니다. 당신의 지갑이 제대로 된 난수로 만들어졌다면, 그 공간은 좁혀지지 않았습니다.

그래서 이것만 지키면 됩니다
  • 씨드는 어떤 화면에도 입력하지 않는다. 복구할 때 진짜 지갑 앱에서만.
  • 씨드를 사진으로 찍지 않는다. 클라우드 자동 백업이 제일 무섭다.
  • 지갑 소프트웨어는 공식 경로에서만. 검색 광고 링크는 누르지 않는다.
  • 하드월렛은 제조사에서 직접. 중고·오픈박스는 사지 않는다.
  • 주소를 붙여넣은 뒤 앞뒤 몇 글자를 눈으로 확인한다.
  • 거래소 2단계 인증은 SMS 말고 앱이나 보안키로.

이 목록 어디에도 “개인키가 찍힐까 봐 걱정한다”는 항목이 없습니다. 그럴 필요가 없어서입니다. 걱정의 총량을 늘리자는 게 아니라, 걱정해야 할 것과 걱정하지 않아도 될 것을 정확히 나누자는 것입니다. 그러고 나면 남는 목록은 이렇게 짧고, 전부 당신이 통제할 수 있는 것들입니다.

이 사이트에 대해

모르고 불안한 것보다, 알고 안심하는 것

“비트코인 개인키”를 검색하면 두 종류의 페이지가 나옵니다. 찾아준다고 돈을 요구하는 곳, 그리고 위험하다며 겁만 주고 끝나는 곳. 둘 다 읽고 나면 막연히 불안한 상태가 됩니다. 숫자를 본 게 아니라 분위기를 봤기 때문입니다.

그래서 이 사이트는 순서를 뒤집었습니다. 규모를 눈으로 보여주고, 직접 돌려서 체감하게 하고, 실제로 풀린 퍼즐과 안 풀린 퍼즐을 그대로 늘어놓고, 도구와 계산기를 손에 쥐여줍니다. 결론을 먼저 주지 않는 이유는 스스로 계산해서 얻은 안심만 오래가기 때문입니다.

당신을 부자로 만들어 주지 않습니다

퍼즐을 풀면 큰돈이 되는 건 사실입니다. 하지만 기댓값을 계산해보면 대부분의 조건에서 전기요금이 더 큽니다. 그 계산기도 만들어 뒀습니다.

남의 지갑은 다루지 않습니다

특정 주소를 지정해 키를 찾아주는 기능은 없고, 앞으로도 넣지 않습니다. 퍼즐은 창작자가 풀라고 공개한 대상이라 다릅니다.

당신의 키를 보지 않습니다

씨드 문구를 입력받는 칸 자체가 없습니다. 탐색기가 만든 키도 브라우저 밖으로 나가지 않고, 그걸 확인하는 방법까지 적어 뒀습니다.

전 과정 클라이언트 사이드추적기 없음데이터 검증 스크립트 공개직접 검증하는 방법 →