Claude가 25년 암호 곡선의 씨앗을 찾았다…ECDSA가 깨진 건 아니다

|작성자: QUASA 편집팀|5 분 소요
Claude가 25년 암호 곡선의 씨앗을 찾았다…ECDSA가 깨진 건 아니다

Anthropic은 2026년 10월 16일 연구 결과를 공개하며 Claude가 약 25년간 생성 경로가 설명되지 않았던 NIST 타원곡선의 공개 씨앗을 C 라이브러리 난수 생성기 lrand48과 유닉스 시간값으로 재현했다고 밝혔다. 대상은 P-192·P-224·P-256·P-384·P-521이며, 서명을 위조하거나 비밀키를 찾아내는 ECDSA 공격은 제시되지 않았다. 기존 인증서의 유효성도 이번 발견으로 바뀌지 않는다.

CoinDesk의 10월 17일 보도는 P-256의 공개 씨앗이 재현한 난수열의 1,842번째 후보와 정확히 일치한다고 전했다. 이 일치는 미국 국가안보국(NSA)이 표준화 과정에서 제공한 값이 어떤 프로그램에서 나왔는지 보여 준다. 동시에 왜 바로 그 후보가 채택됐는지까지 알려 주지는 않는다. 인증서나 전자서명 이용자에게 당장 교체할 이유가 생긴 것은 아니다.

공개 씨앗은 어떻게 재현됐나

여기서 씨앗은 서비스가 보관하는 비밀키가 아니라 모든 구현이 참고할 수 있도록 표준에 실린 공개 값이다. 표준에는 씨앗을 해시한 값으로 타원곡선의 계수 일부를 정하는 절차가 있었지만, 씨앗 자체의 생성 경로는 적혀 있지 않았다. 따라서 완성된 매개변수를 다시 계산하는 일과 설계자가 처음 어떤 입력값을 골랐는지 설명하는 일 사이에 공백이 남았다. 이 공백이 이번 연구의 출발점이다.

Claude는 과거 씨앗이 숨겨진 문구의 해시값일 것이라는 추측 대신, 당시 사용했을 법한 프로그램의 출력을 역으로 살폈다. 공개 씨앗의 비트를 조금씩 옮겨 읽으면서 오래된 의사난수 생성기의 연속 출력과 맞는 배열을 찾았다. 일부 값에서 반복된 최상위 비트 패턴은 lrand48을 가리키는 단서가 됐다. 공개된 출력의 구조에서 생성기의 흔적을 찾은 것이다.

lrand48은 내부 상태의 일부 비트만 출력하므로, 공개 씨앗에 보이지 않는 상태를 복원하는 계산도 필요했다. Claude는 잘린 출력에 격자 기반 계산을 적용해 상태를 되찾고, 생성기를 거꾸로 돌려 초기화 당시의 값에 도달했다. 소수체 곡선의 씨앗에는 lrand48 출력에서 같은 방식으로 비트를 취한 흔적이 남아 있었다. 복원한 상태를 다시 앞으로 실행하면 공개된 씨앗 전체가 재생성되므로, 단순한 모양의 유사성보다 강한 일치다.

초기 상태를 시간값으로 읽으면 NIST 소수체 곡선과 관련 ANSI 곡선의 생성 시점이 1997년 5월부터 1998년 4월 사이에 모인다. 유닉스 시간으로 초기화한 생성기에서 일정한 길이의 출력값을 차례로 뽑아 후보 씨앗으로 삼았다는 과정이 성립한다. 공개된 씨앗과 재생성한 후보가 완전히 같다는 점은 출처를 재현 가능하게 만들었다. 이 시간값은 생성 프로그램을 설명하는 입력으로, 서명에 쓰는 개인별 비밀과는 역할이 다르다.

P-256의 일치와 후보 선택의 공백

P-256은 복원된 프로그램의 작동 방식을 가장 구체적으로 보여 준다. 당시 시각을 초기값으로 넣고 후보를 순서대로 생성하면 표준에 실린 씨앗이 해당 실행의 특정 순서에서 나온다. 같은 방법을 다른 소수체 곡선에도 적용할 수 있어, 서로 무관해 보이던 여러 공개 값에 공통 생성 패턴이 드러난다. 이 결과가 설명하는 것은 값이 만들어진 경로이며, 그 경로에서 마지막 선택을 내린 사람의 판단은 별개다.

그 차이를 보여 주는 사례가 P-256 실행에서 앞서 지나간 876번째 후보다. 이 후보 역시 표준 곡선과 같은 방식으로 매개변수를 만들었을 때 적절한 크기의 소수 차수 곡선을 준다. 그런데 실제 표준에는 더 뒤의 후보가 채택됐고, 왜 앞선 값이 제외됐는지는 알려지지 않았다. P-224에서도 비슷하게 조건을 충족할 수 있는 후보가 지나갔다.

곡선의 기준점도 씨앗과 따로 정해지는 매개변수다. 기준점은 ECDSA 공개키를 계산할 때 출발점이 되는 곡선 위의 점으로, 씨앗에서 자동으로 결정되지 않는다. Claude는 P-192와 일부 ANSI 예제 곡선의 기준점이 정수 연산 라이브러리 FreeLIP의 난수 생성 과정에서 나왔음을 재현했다. P-256을 포함한 다른 소수체 곡선의 기준점 생성 경로와 이진체 곡선 B-163의 씨앗은 여전히 설명되지 않는다.

공개 씨앗의 출처가 드러나면 과거에 제기된 임의 조작 가능성은 좁아지지만, 선정 기준 전체가 입증되는 것은 아니다. 건너뛴 후보가 있다는 사실만으로 특정 약점을 골랐다는 증거가 생기지도 않는다. 당시 어떤 필터를 적용했는지, 생성 실행이 몇 차례 있었는지는 복원된 출력만으로 알 수 없다.

백도어 의혹의 무게가 달라진 이유

의혹의 핵심은 NSA가 제공한 값이 공개돼 있으면서도 출처가 설명되지 않았다는 데 있었다. 설계자가 수많은 후보 중 특별한 성질을 가진 곡선을 골랐을 가능성을 외부에서 평가하기 어려웠던 것이다. 씨앗으로부터 곡선 계수를 만드는 공식이 공개돼 있어도, 공식에 넣은 첫 숫자를 왜 선택했는지는 별개의 질문이다. 이번에는 그 첫 숫자들이 평범한 난수 생성기의 연속 출력에서 재현됐다.

하나의 생성 방식이 여러 곡선의 씨앗을 함께 설명한다는 점도 중요하다. 각 값에 맞춰 별도의 비밀 문구나 독립적인 절차를 가정할 필요가 줄어들고, 당시 컴퓨터의 시각이라는 공통 입력으로 이어지는 경로가 생겼다. 이 때문에 숨겨진 약점을 심으려고 각각의 씨앗을 정밀하게 조작했다는 가설의 설득력이 약해진다. 생성 방식만으로 곡선의 모든 수학적 성질이나 설계자의 모든 동기를 증명할 수는 없다.

lrand48이 예측 가능한 생성기라는 사실은 공개 씨앗의 출처를 추적하는 데 실마리가 됐다. 같은 생성기로 이용자의 비밀키를 만들었다면 생성 시각을 추정한 공격자가 출력을 다시 계산할 위험이 생긴다. 이번에 분석된 대상은 처음부터 누구나 볼 수 있었던 곡선 씨앗이다. 따라서 생성기를 알아낸 사실에서 현재의 비밀키 노출을 추론할 수는 없다.

전자서명의 안전성은 공개 곡선의 출처만으로 결정되지 않는다. 개별 비밀키가 보호되는지, 서명할 때 쓰는 값이 적절하게 생성되는지, 구현에 결함이 없는지도 각각 영향을 준다. 이번 결과는 그런 운영 조건을 시험한 보안 감사가 아니라 표준 매개변수의 기원을 재구성한 연구다. 출처에 관한 불신은 줄일 수 있어도 구체적인 제품이나 서비스의 모든 보안 상태를 판정해 주지는 않는다.

기존 인증서와 전자서명은 왜 그대로인가

이미 발급된 ECDSA 인증서의 비밀키는 곡선 씨앗과 다른 값이다. 곡선은 여러 이용자가 공유하는 공개 수학적 규칙이고, 각 이용자는 그 규칙 위에서 자신만의 비밀키와 공개키를 만든다. 과거 설계자가 규칙의 일부를 어떤 난수열에서 가져왔는지 알게 돼도 개인별 키가 역산되는 관계는 생기지 않는다. 이번 결과를 근거로 인증서 발급자가 키를 일괄 교체해야 한다는 기술적 사유가 나오지 않는 이유다.

서명 검증 절차에도 새로운 입력이 추가되지 않았다. 검증자는 기존처럼 인증서의 공개키와 서명, 선택된 알고리즘 및 신뢰 관계를 이용한다. 연구가 공개한 것은 위조 서명이나 검증을 통과하는 새 공격이 아니라, 곡선 매개변수의 과거 생성 과정을 다시 실행하는 방법이다. 따라서 인증서의 유효기간이나 신뢰 체계가 이번 발견만으로 바뀌는 것도 아니다.

보안 담당자에게 직접적인 구분점은 공개 매개변수의 생성 과정과 운영 중인 서명 키의 생성 과정이다. 두 과정에 모두 난수라는 말이 등장해도 노출 여부와 목적은 다르다. 전자는 표준을 쓰는 모두가 같은 곡선을 얻도록 공개된 값이고, 후자는 각 서비스가 따로 지켜야 하는 비밀이다. lrand48의 흔적이 전자에서 발견됐다는 이유로 후자의 생성 방식까지 추정해서는 안 된다.

당시 후보를 걸러낸 기준과 일부 기준점의 생성 과정이 밝혀지면 표준 곡선의 설계 역사를 더 완전하게 평가할 수 있다. 현재 확인된 범위에서 인증서와 전자서명 이용자에게 생긴 변화는 긴급 교체 요구가 아니라, 널리 쓰이는 공개 매개변수가 어떻게 나왔는지 다시 계산할 수 있는 근거다.

함께 읽기:

공유:

뉴스레터 구독

최신 Web3, AI, 암호화폐 뉴스를 이메일로 받아보세요.

0