AI 모델 및 플랫폼
Anthropic, Claude가 1990년대 난수 생성기까지 NIST ECDSA 곡선 시드의 출처를 추적했다고 밝혀

Anthropic의 프런티어 레드팀은 2026년 10월 16일 연구 논문에서 내부 Claude 연구 모델이 NIST ECDSA 곡선 시드의 출처를 유닉스 타임스탬프로 초기화한 C 라이브러리의 lrand48 난수 생성기로 추적했다고 보고했다. NSA가 설명 없이 이 값을 제공한 이후 줄곧 미해결 상태였던 출처 관련 의문에 답을 내놓은 것이다.
설명되지 않은 NSA 시드
ECDSA는 가장 널리 사용되는 타원곡선 암호 표준이다. NIST는 2000년에 FIPS 186-2 디지털 서명 표준의 일부로 이를 채택했다. 이 표준에는 크기와 보안 수준이 다양한 표준 타원곡선이 나열되어 있다. 소수체와 이진체 위의 곡선에 대해 규격은 해시값으로 곡선의 계수 b를 정의하는 시드 매개변수를 공개했다. NSA는 설명이나 근거 없이 해당 시드를 제공했으며, 게시물은 출처에 관한 정보가 전혀 없이 공개된 값의 예로 P-256 시드 C49D3608 86E70493 6A6678E1 139D26B7 819F7E90을 재수록했다.
Neal Koblitz와 Alfred Menezes는 논문 《수수께끼 속의 수수께끼》에서 논란을 정리했다. 이후 시드의 출처를 밝히려는 아마추어 조사가 진행됐고, 이를 찾아내는 사람에게 포상금도 걸렸다. 유력한 설명은 오랫동안 NSA에서 일한 Jerry Solinas가 재치 있는 암호 문구를 해시해 시드를 만들었다는 것이었다. 게시물에 실린 2015년 발언에서 Solinas는 이렇게 회고했다. “메시지는 ‘Bob과 Jerry의 급여를 올려 줘’ 또는 ‘Bob과 Jerry가 최고야’ 같은 내용이었을 겁니다.” 그는 Bob Reiter가 코드를 작성했으며 당시 자료는 어떤 기록 보관소에서도 찾을 수 없었다고 말했다. Solinas는 2023년에 사망했고, 다른 동료들도 응답하지 않아 시드 생성 방식에 관한 의문은 여전히 풀리지 않았다.
Claude는 어떻게 시드를 찾아냈나
Anthropic 직원 몇 명은 재치 있는 암호 문구를 사용했다는 단서를 따라 시드를 추적하려 했지만 실패했다. 게시물에 따르면 그 단서는 사실이 아니었다. 2026년 10월, 한 Anthropic 직원은 내부 연구 모델에 소문으로 알려진 단서를 제시하지 않은 채 시드가 어떻게 생성됐는지 알아낼 수 있는지 물었다. Anthropic의 보고에 따르면, Claude는 30분도 채 되지 않아 NIST P-192, P-224, P-256, P-384, P-521 시드의 출처를 밝혀냈다. 유닉스 타임스탬프로 초기화한 C 라이브러리의 lrand48 난수 생성기가 만든 출력값이었으며, 해시 알고리즘은 전혀 사용되지 않았다. 시드 생성 프로그램은 반복할 때마다 후보 시드로 20바이트를 추출했으며, 공개된 P-256 시드는 실행 과정에서 1842번째 후보였다.
문구를 기반으로 한 검색이 모두 성과 없이 끝나자 Claude는 생성기 자체에 주목했다. 1990년대 C 라이브러리에 포함된 의사난수 생성기를 기반으로 하고, 출력값이 약해 식별할 수 있는 소프트웨어였을 것이라고 가정했다. Claude의 스캐너는 공개된 각 시드에서 비트를 하나씩 이동하며, 생성기와 출력 구간을 조합한 34가지 경우를 대상으로 인접한 비트 덩어리가 1990년대 방식 생성기의 연속 출력값일 가능성을 검사했다. 시드 전반에서 두드러지는 패턴이 하나 있었다. 각 시드를 32비트 단어 5개로 나타냈을 때, 열 개 중 네 개는 20개 단어 모두에서 최상위 비트가 0이었다. 우연히 이런 배열이 나타날 확률은 1/5810이다. 이 패턴은 48비트 상태값 중 최상위 31비트만 반환하는 선형 합동 생성기 lrand48을 가리켰다. Claude는 해당하는 시드 네 개에 대해 첫 번째 단어에서 숨겨진 17비트가 취할 수 있는 2^17가지 값을 모두 시험한 다음, 이어지는 네 단어가 생성 규칙을 따르는지 확인해 생성기 상태를 복구했다. 네 시드 모두에서 성공했다.
소수 곡선 시드도 같은 lrand48 생성기로 만들었지만, 각 출력값에서 보존된 비트 수는 더 적었다. 잘린 선형 합동 생성기의 내부 상태를 재구성하는 것은 교과서에 나오는 격자 문제다. Claude는 Lenstra–Lenstra–Lovász(LLL) 기저 축소를 적용한 풀이 알고리즘을 가능한 모든 구간에 실행해 이를 풀었다. NIST 소수 곡선 시드 다섯 개와 ANSI X9.62 표준의 시드 다섯 개가 모두 동일한 패턴인 lrand48() >> 23에 들어맞았으며, 복구된 48비트 상태값은 각각 시드의 160비트 전체를 다시 생성했다.
게시물에는 해당 세션에서 Claude가 남긴 내부 추론 기록도 재수록되어 있다. 모델은 결론을 내리기 전에 자신이 시뮬레이션된 테스트 환경에서 작동하는 것은 아닌지 확인했다. “내 쪽에서 직접 계산해 검증했다. 32비트 시드와 작은 인덱스로 160비트가 일치한다. 우연히 일치할 가능성은 없다(10 × 160비트). 실제다.”
타임스탬프와 기저점
생성기는 정방향으로 작동하는 것만큼 쉽게 역방향으로도 작동하므로, Claude는 각 시드의 상태값을 거슬러 올라가 하위 16비트가 0x330E인 값으로 식별되는 srand48 초기화 상태에 이를 때까지 계산했다. 이런 상태는 65,536회마다 한 번 나타난다. 소수 곡선 시드 열 개 모두의 초기화 시점은 1997년 5월부터 1998년 4월 사이의 유닉스 타임스탬프였다. 이진 곡선 시드 네 개의 초기화 시점은 1984년 2월로 나타났다. 이 타임스탬프를 두 배로 하면 1998년 4월 17일이 되는데, 이는 P-224 실행 시점으로부터 2주 뒤다. 이에 팀은 프로그램이 시계 값을 절반으로 나눴을 가능성을 제기했다.
Claude는 일부 곡선의 기저점이 어디에서 비롯됐는지도 밝혀냈다. 각 곡선에는 기저점 G가 지정되며, 모든 ECDSA 공개 키는 이 고정된 점의 배수다. 복구한 시드로는 기저점이 정해지지 않는다. 1997년 5월에 생성된 여섯 곡선, 즉 P-192와 ANSI X9.62 예제 곡선인 prime192v2, prime192v3, prime239v1부터 prime239v3까지의 기저점은 Arjen Lenstra의 장정수 연산 패키지 FreeLIP에 포함된 난수 생성기로 거슬러 올라간다. 이 생성기의 코드는 Victor Shoup의 NTL 라이브러리 초기 버전에도 포함됐다. 해당 방식에서는 생성기를 작은 정수로 초기화하고, 출력값 7개를 버린 뒤, 26비트 출력값을 p로 나눈 나머지에서 후보 x좌표를 뽑는다. x가 곡선 위에 놓일 때까지 이 과정을 반복한다. Claude가 찾아낸 생성기 시드는 P-192의 경우 20000, prime239v1부터 prime239v3까지는 각각 20420, 20507, 20509, prime192v2와 prime192v3의 경우 각각 20512와 20517이다. Anthropic은 자신들이 아는 한 NIST 기저점의 출처가 설명된 적은 없으며, P-224, P-256, P-384, P-521의 기저점은 이 방식으로 설명되지 않는다고 밝혔다.
보안 평가와 미해결 질문
Anthropic은 이번 발견이 암호 체계의 붕괴나 새로운 공격, ECDSA 곡선의 취약점을 의미하지 않는다고 밝혔다. 연구팀은 시드가 시스템 시계로 초기화한 일반적인 의사난수 생성기에서 나왔다고 설명했다. 이제 누구나 재현할 수 있는 방식이며, 연구팀은 이를 통해 매개변수가 의도적으로 조작됐을 가능성이 훨씬 낮아지고 매개변수의 보안성에 대한 신뢰가 높아진다고 봤다. 게시물은 이번 결과를 오랜 추측에 종지부를 찍는 마지막 장으로 그리며, 대부분의 연구자가 이미 해당 곡선을 신뢰하고 있었으므로 독자가 취할 조치는 없다고 전했다.
몇 가지 의문은 여전히 풀리지 않았다. 20바이트 후보 시드가 모두 유효한 곡선을 만들 수 있었던 것은 아니며, 연구팀은 유효할 가능성이 있는 후보 일부가 건너뛰어진 사실을 확인했다. P-256에 공개된 시드는 후보 1842번이지만, 같은 실행에서 나온 후보 876번도 공개된 곡선과 동일한 방식으로 매개변수를 선택한, 크기가 적절한 소수 차수 곡선을 만든다. P-224를 생성한 실행에서는 이런 후보 3개를 건너뛰었고, ANSI X9.62 예제 곡선을 생성한 두 실행에서는 7개를 더 건너뛰었다. 건너뛴 후보 수가 적기 때문에 연구팀은 취약한 곡선을 선택했을 가능성이 그럴듯하다고 보지 않는다고 밝혔다. 다만 타임스탬프를 탐색해 특정 속성을 지닌 곡선을 선택했을 가능성은 원칙적으로 생각해 볼 수 있다. 시드 하나는 끝내 복구되지 않았다. 다섯 번째 이진 곡선 시드인 B-163은 Claude가 시도한 어떤 것과도 일치하지 않았다. P-224, P-256, P-384, P-521의 기저점과 NIST 이진 곡선의 기저점은 여전히 알려지지 않았다.
시드를 찾아낸 데 걸린 상금 36,864달러는 Internet Security Research Group에 기부될 예정이며, 게시물은 상금을 마련한 Filippo Valsorda에게 감사를 표하는 한편 고인이 된 Solinas를 기렸다. 이번 연구의 공로는 John Wood, Henry de Valence, Ava Howell, Zack Voase, Lucy Sweet, Amir Omidi, Paul Crowley, Iain McGinniss, Nicholas Carlini, Steve Weis에게 돌아간다. 페이지에 공개된 재현 코드는 CC0 1.0 Universal에 따라 퍼블릭 도메인에 헌정됐다.












