ECDSA: 26년간의 의혹은 NSA가 아닌 타임스탬프였다
요약
Anthropic이 내부 모델 Claude를 활용하여 ECDSA에 사용되는 NIST 곡선 시드의 출처 미스터리를 해결했습니다. 이 시드들은 NSA 비밀 해시가 아닌, 시스템 타임스탬프로 초기화된 90년대 난수 생성기 lrand48()에서 유래한 것으로 밝혀졌습니다. 이는 해당 매개변수가 조작 없이 생성되었음을 확인시켜 주는 중요한 연구 결과입니다.
핵심 포인트
- Claude 모델이 ECDSA 시드 출처를 신속하게 추적함.
- NIST 곡선 시드는 NSA 비밀 해시가 아닌 lrand48()에서 유래함.
- 해당 발견은 26년간의 암호학적 미스터리를 해결함.
- P-256 시드를 얻기 위해 1,842회의 반복이 필요했음.
26년 동안 풀리지 않던 암호학적 미스터리가 30분도 안 되어 해결되었습니다. ECDSA에 사용되는 NIST 곡선 시드(seeds)가 NSA의 비밀 해시에서 나온 것이 아니라, 시스템 시간으로 채워진 90년대 난수 생성기(random number generator)에서 나왔다는 것입니다. Anthropic은 2026년 10월 16일, 내부 연구 모델인 Claude에게 이 매개변수의 출처를 추적하도록 요청한 후 이를 공개했습니다.
이 결과는 결함이나 긴급 패치가 아닙니다. 이는 거의 30년 만에 해당 매개변수들이 은폐된 조작 없이 생성되었음을 확인시켜 주는 것입니다.
요약 (TL;DR)
- Claude가 26년간의 ECDSA 시드 미스터리를 30분도 안 되어 해결했습니다.
- P-192, P-224, P-256, P-384, P-521의 시드는 비밀 해시가 아닌 lrand48()에서 유래합니다.
- P-256 시드를 계산하려면 타임스탬프 Unix로 채워진 생성기에서 1.842회의 반복이 필요했습니다.
- Anthropic은 백도어를 배제하며, 사용된 방식은 이제 누구나 재현할 수 있다고 밝혔습니다.
- NSA의 엔지니어였던 Jerry Solinas는 2023년 사망했으며, 그가 2015년에 남긴 단서는 잘못된 것이었습니다.
ECDSA란 무엇인가
ECDSA는 NIST가 2000년에 FIPS 186-2 표준에 따라 채택한 타원 곡선(elliptic curve) 기반의 디지털 서명 알고리즘입니다. 이 알고리즘은 NIST 표준 곡선 세트에 의존하는데, 해당 NIST 곡선 시드는 26년 동안 대중에게 설명되지 않은 상태로 남아 있었습니다.
오늘날 ECDSA는 TLS 인증서에 서명하고, 비트코인 거래를 보호하며, 수백만 개의 서버에서 SSH 키를 인증하는 데 사용됩니다. 그 보안은 근본적인 타원 곡선(FIPS 186-2 표준을 정의하는 다섯 쌍 중 하나인 P-192, P-224, P-256, P-384, P-521)에 의도적으로 숨겨진 수학적 약점이 없다는 것에 달려 있습니다.
해당 곡선은 방정식과 'b'라는 상수로 정의되며, 이 상수는 다시 160비트 숫자에 해시 함수를 적용하여 계산되는 시드(seed)입니다. NIST는 2000년에 곡선과 함께 시드를 발표했지만, 그 출처가 되는 숫자들이 어디에서 왔는지 결코 설명하지 않았습니다.
타원 곡선(Elliptic curves)은 RSA에 비해 더 짧은 키로 유사한 수준의 보안성을 달성할 수 있어 인기를 얻었습니다. 이 특성은 모바일 장치와 대용량 연결에서 효율적이라는 점을 의미합니다. 이러한 효율성이 오늘날 ECDSA가 현대 TLS 연결 및 여러 암호화폐의 타원 곡선 기반 서명에서 지배적인 위치를 차지하는 이유 중 하나입니다.
P-256 곡선은 FIPS 186-2 표준을 정의하는 다섯 가지 기본 곡선 중 하나입니다.
NIST 곡선 시드에 대한 배경
Anthropic은 2026년 10월 16일 연구 보고서를 통해 한 직원이 내부 Claude 모델에게 사전 단서 없이 해당 시드들이 어떻게 생성되었는지 알아내도록 요청한 과정을 공개했습니다. 이 모델은 P-192, P-224, P-256, P-384, P-521의 매개변수 출처를 반나절도 안 되어 찾아냈습니다.
Anthropic 보고서에 따르면 답변은 각 시드가 Unix C 라이브러리의 의사 난수 생성기인 lrand48()에서 나왔으며, 이는 시스템 타임스탬프(timestamp)로 초기화되었다는 것입니다. 원래 프로그램은 생성기의 한 회전마다 20바이트를 시드 후보로 사용했으며, P-256의 공개된 시드를 얻으려면 1,842번의 반복이 필요했습니다.
Anthropic은 이 발견을 극적으로 꾸미지 않고 요약합니다. 보고서는 이 발견을 이미 20년 이상 지속되어 온 추측의 마지막 장으로 제시하며, “취해야 할 조치나 다르게 해야 할 것은 아무것도 없다”고 말합니다.
배경 및 역사
이 의혹은 표준 자체의 텍스트에서 시작되었습니다. NIST는 P-256의 시드를 다음과 같은 16진수 문자열로 공개했으며, 각주 설명은 없었습니다:
SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90
수학자 Neal Koblitz와 Alfred Menezes는 논문 “A Riddle Wrapped in an Enigma”에서 이 논란을 문서화했으며, 수년 동안 이 숫자들의 기원을 재구성하는 사람에게 비공식적인 보상이 돌았습니다.
가장 많이 인용된 단서는 원래 설계를 담당했던 NSA 엔지니어 Jerry Solinas로부터 나왔습니다. 그는 2015년에 씨앗(seed)이 “Give Bob and Jerry a raise”와 같은 농담 문구에 적용된 해시 값에서 나온 것을 기억한다고 말했지만, 자신과 동료 Bob Reiter 모두 코드를 가지고 있거나 세부 사항을 보관하고 있지 않았음을 인정했습니다. Solinas는 2023년에 의문을 해결하지 못한 채 사망했고, Claude의 발견에 따르면 이 문구 단서는 완전히 거짓이었습니다.
기술적 상세 내용
Claude는 농담 문구를 검색하려는 시도를 하지 않았습니다. 대신 Anthropic 보고서에 따라 다른 가설을 제시했습니다. 즉, 90년대에 씨앗을 생성하는 데 사용된 소프트웨어가 당시의 일반적인 의사 난수 생성기(Pseudo-Random Number Generator)에 의존했으며, 그 생성기의 패턴이 공개된 바이트에서 여전히 인식될 수 있다는 것이었습니다.
이를 증명하기 위해 그는 각 씨앗 위를 비트 창을 미끄러지게 하여 인접한 블록들을 34가지 생성기 및 출력 부분 조합과 비교하는 스캐너를 작성했습니다. 거기서 신호가 나타났습니다. 분석된 10개의 씨앗 중 4개에서 32비트의 20번째 단어에 가장 높은 비트(most significant bit)가 0인 것이었습니다. 이 우연한 일치는 겨우 5,810분의 1의 확률을 가집니다.
이 패턴은 내부 상태 48비트 중 상위 31비트만 반환하는 선형 합동 생성기(Linear Congruential Generator)인 lrand48()의 특징입니다. 이 단서를 가지고 Claude는 숨겨진 17비트의 가능한 $2^{17}$ 값을 무차별 대입하여 테스트했고, 각 씨앗의 다음 네 단어가 정확히 들어맞는 것을 확인했습니다.
NIST의 다섯 개 기본 곡선(P-192, P-224, P-256, P-384 및 P-521)과 ANSI X9.62 표준에 따른 다섯 개의 추가 곡선의 시드 값은 출력당 더 적은 비트를 유지했기 때문에 무차별 대입(brute force)으로는 도달할 수 없었습니다. 이 열 가지 경우에 대해 Claude는 Lenstra-Lenstra-Lovász (LLL) 알고리즘을 사용하여 고전적인 격자 문제(lattice problem)를 해결했으며, 가능한 모든 비트 창(bit window)을 테스트하여 열 가지 모두에서 동일한 패턴인 lrand48() >> 23임을 확인했습니다.
| lrand48() | 90년대부터 표준 C 라이브러리에 포함됨. |
|---|---|
| Claude가 사용한 기술 | 어디에 적용되었는지 |
| 비트별 스캔 (34가지 조합) | 발표된 10개 시드 값 |
| $2^{17}$ 값의 무차별 대입 | 상위 비트가 0인 4개 시드 |
| 격자 축소 LLL | 10개 시드 (5 NIST 기본 + 5 ANSI X9.62) |
flowchart TD
A["발표된 시드 (예: P-256)"] --> B["비트별 스캔: PRNG의 34가지 조합"]
B --> C{"20개 단어에 상위 비트가 0인가?"}
...
💭 핵심: 5,810분의 1이라는 확률은 수학적 증명이 아니라 통계적 신호입니다. 이 발견을 확실한 증거로 만드는 것은 패턴 감지 외에도 Claude가 발표된 모든 시드를 비트별로 재구성했으며, 10개가 정확히 일치했다는 점입니다.
영향 및 분석
이 결과는 활성화된 취약점을 수정하지 않습니다. ECDSA는 2026년 10월 16일 이전과 마찬가지로 안전하거나 안전하지 않습니다. 변하는 것은 매개변수가 어떻게 선택되었는지에 대한 확실성입니다.
26년 동안, 설명의 부족은 NSA가 수천 개의 시드를 테스트하여 자신만이 아는 취약점을 숨긴 것을 발견했을 것이라는 가설을 부추겼습니다. 전체 과정이 터미널만 있으면 누구나 재현할 수 있는 시간과 공개 생성기에 의존한다는 사실은 그러한 조작의 가능성을 현저히 줄입니다.
RSA와 비교하는 것은 유용합니다. RSA 알고리즘은 제3자가 선택한 매개변수에 의존하지 않습니다. 누구나 처음부터 자신만의 키 쌍을 생성할 수 있습니다. 반면, ECDSA는 공유되는 표준 곡선(curva estándar)이 필요하며, 바로 이 의존성이 20년 이상 그 매개변수의 출처에 대한 의혹을 유지하게 만든 요인입니다.
여전히 솔직한 의문점이 남습니다. 이 방법은 각 시드(semilla)가 어떻게 생성되었는지를 보여주지만, NSA가 공개된 결과에 도달하기 전에 몇 번의 시도, 즉 얼마나 많은 다른 타임스탬프를 시험했는지는 보여주지 않습니다. 만약 누군가가 수천 개의 타임스탬프로 프로세스를 반복하고 가장 편리한 곡선을 선택할 수 있었다면, 시간 자체만으로는 그것을 막을 수 없었을 것입니다. Anthropic은 이 시나리오를 보고서에 다루지 않았으며, 이는 수학뿐 아니라 원래의 과정에 대한 신뢰가 여전히 필요한 부분입니다.
앞으로의 과제 (Qué sigue)
Anthropic은 어떠한 후속 조치도 약속하지 않습니다. 보고서는 이를 명시적으로 '재미있는 마무리 장(capítulo de cierre divertido)'이라고 부릅니다. 패치도 없고, ECDSA의 새로운 버전도 없으며, 이 이유로 다른 곡선으로 마이그레이션하라는 권고도 없습니다.
하지만 이것은 하나의 선례를 만듭니다. 단지 공개된 바이트(bytes)만을 가지고 30년 전 기술적 결정을 재구성하기 위해 언어 모델을 사용하는 것은, 매개변수가 한 번도 설명되지 않은 다른 표준에도 적용될 수 있는 방법입니다. 암호학에는 같은 종류의 고고학이 기다리는 몇 가지 더 있습니다.
📖 Telegram 요약: 요약 보기
직접 시도해 보세요: P-256의 시드(C49D3608 86E70493 6A6678E1 139D26B7 819F7E90)를 가져와서, 26년 동안 된 곡선에 얼마나 신뢰할지 결정하기 전에 Anthropic의 원본 보고서에서 전체 추론 과정을 따라가 보세요.
자주 묻는 질문 (Preguntas frecuentes)
Claude는 NIST 곡선의 시드에 대해 무엇을 발견했나요?
P-256을 포함한 모든 시드(seed)가 2015년부터 소문으로 돌았던 비밀 문구의 해시 결과가 아니라, Unix 타임스탬프를 이용해 초기화된 lrand48() 생성기의 직접적인 결과라는 것을 발견했습니다.
이 발견 이전까지 ECDSA의 매개변수가 왜 중요했나요?
NSA가 2000년에 그 기원을 설명하지 않은 채 NIST에 해당 시드들을 넘겼고, 의도적으로 선택된 매개변수를 가진 타원 곡선은 이론적으로 그것을 선택한 사람만이 아는 취약점을 숨길 수 있기 때문입니다.
lrand48()이란 무엇이며 P-256 곡선에 왜 중요한가요?
이것은 90년대부터 C 라이브러리에 포함된 의사 난수 생성기(Pseudo Random Number Generator)입니다. P-256의 시드는 시스템 타임스탬프로 시작된 이 생성기의 1,842회 반복 결과였으며, 동일한 패턴이 다른 아홉 개의 곡선 시드에서도 나타났습니다.
이 발견은 ECDSA에 백도어(backdoor)가 있다는 의미인가요?
아닙니다. 오히려 그 반대입니다. 생성 과정이 간단하고 공개적이며 재현 가능하다는 것을 보여줌으로써, 이 발견은 NIST 곡선에 의도적인 백도어가 존재할 확률을 낮추지만, 출판된 매개변수를 선택하기 전에 많은 타임스탬프가 테스트되었을 가능성을 완전히 배제하지는 않습니다.
FIPS 186-2 표준에 대한 Jerry Solinas의 단서는 어떻게 되었나요?
표준 설계에 도움을 준 NSA 엔지니어인 Solinas는 2015년에 시드의 출처가 비밀 문구 해시였던 것을 농담 삼아 기억한다고 말했습니다. 그는 2023년에 사망했으며, Claude가 2026년에 발견한 바는 이 단서가 11년 동안 반복되어 온 것이 잘못되었음을 확인시켜 주었습니다.
참고 자료
– Anthropic Research: Claude가 NIST 곡선의 시드(seed) 기원을 재구성한 원본 보고서.- Wikipedia: ECDSA의 역사 및 기술 사양.- Wikipedia: lrand48()과 같은 선형 합동 생성기(linear congruential generator)가 작동하는 방식.- NIST Computer Security Resource Center: FIPS 186-2 표준 및 관련 타원 곡선의 공식 출처.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기