Hacker News에서 화제 · anthropic.com · 2026-10-16 · ▲491
Claude reveals ECDSA curve origins
OIYO 한국어 요약
원문을 바탕으로 요약했어요.
본문 번역
원문을 읽고 핵심 내용을 옮겼어요. · Grok Bot · 2026-10-17
Anthropic 원문(2026-10-16, Frontier Red Team)을 읽고 앞부분과 핵심 분석을 옮겼어요. 원문은 "재미있는 마무리 이야기일 뿐 할 일은 없어요"라고 먼저 밝혀요.
무엇이 수수께끼였나
ECDSA는 가장 널리 쓰이는 타원곡선 암호 표준이에요. NIST가 2000년 FIPS 186-2에 표준 곡선을 실었는데, 소수체·이진체 곡선마다 해시해서 계수 b를 만드는 "시드" 값이 공개돼 있어요. 문제는 이 시드를 NSA가 아무 설명 없이 줬다는 점이에요. 예를 들어 P-256의 시드는 C49D3608 86E70493 6A6678E1 139D26B7 819F7E90인데 어디서 왔는지 아무도 몰랐어요. 그래서 백도어 의혹, 아마추어 조사, 현상금까지 생겼어요.
가장 유명한 설은 NSA의 Jerry Solinas가 "Give Bob and Jerry a raise" 같은 농담 문구를 해시했다는 2015년 증언이었어요. Solinas는 2023년에 세상을 떠났고 다른 동료들은 답이 없었어요.
Claude가 찾은 것
Anthropic 직원 몇 명이 농담 문구 단서를 따라가다 실패했고, 그 단서는 틀린 것으로 드러났어요. 2026년 10월 한 직원이 단서 없이 내부 연구 모델에 물었더니 30분이 안 돼 P-192, P-224, P-256, P-384, P-521 시드의 출처를 찾았어요.
- 시드는 해시 결과가 아니라 C 라이브러리의
lrand48난수 생성기 출력이었어요. - 생성기는 Unix 타임스탬프로 초기화됐고, 한 번에 20바이트씩 뽑아 후보 시드로 썼어요. P-256은 1842번째 후보가 표준 시드예요.
의미
원문은 이것이 암호 해독이나 새 공격, 약점이 아니라고 강조해요. 오히려 시계로 초기화한 흔한 의사난수 생성기로 만들어졌고 누구나 재현할 수 있으니, 의도적으로 고른 백도어일 가능성은 훨씬 낮아졌다고 봐요.
어떻게 찾았나
- Claude는 1990년대 C 라이브러리에 딸린 약한 PRNG를 썼을 거라고 가정하고, 시드를 1비트씩 밀며 인접 구간이 연속 출력인지 검사하는 스캐너를 만들었어요(34가지 생성기·출력 조합).
- 이진체 곡선 시드 4개는 32비트 단어 20개의 최상위 비트가 모두 0이었어요(우연일 확률 1/5810). 48비트 상태에서 상위 31비트만 돌려주는
lrand48의 흔적이었고, 숨은 17비트를 전수 대입해 상태를 복원했어요. - 소수체 곡선 시드는 비트를 더 적게 남겨서, 잘린 LCG 상태 복원을 LLL 격자 축소로 풀었어요. NIST 5개와 ANSI X9.62 5개 모두
lrand48() >> 23패턴이었어요. - 상태를 거꾸로 돌려
srand48초기화 형태(하위 16비트 0x330E)까지 가 보니 소수체 곡선 10개는 1997년 5월–1998년 4월 사이 타임스탬프였어요. 이진체 4개는 1984년 2월로 읽히는데 두 배로 하면 1998-04-17이 돼서, 프로그램이 시계 값을 반으로 나눴을 수 있다고 해요.
기준점(base point) 일부도
1997년 5월에 만든 6개 곡선(P-192와 ANSI 예시 곡선)의 기준점 G는 Arjen Lenstra의 FreeLIP 난수 생성기에서 나왔다고 해요. 작은 정수로 시드 → 7개 버림 → 26비트 출력을 mod p로 줄여 x 후보를 만드는 방식이고, P-192의 시드는 20000이었어요. P-224·P-256·P-384·P-521 기준점은 아직 설명하지 못했다고 밝혀요. 일부 쓸 만한 후보 곡선을 건너뛴 이유도 남은 질문이에요.
출처: anthropic.com
원문 읽기 Hacker News 토론 (+201) 같은 날 모아보기
OIYO는 원문을 그대로 옮기지 않아요. 요약과 본문 번역은 큐레이션 목적이며, 사실·인용은 원문 출처를 따라요.