TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 29 READS

25년 묵은 ECDSA 곡선 시드의 비밀, '그냥 타임스탬프'였다

25년 묵은 ECDSA 곡선 시드의 비밀, '그냥 타임스탬프'였다
SOURCE IMAGE · HACKER NEWS

타원곡선 디지털 서명 알고리즘(ECDSA)은 오늘날 가장 널리 쓰이는 타원곡선 암호 표준이다. 2000년 NIST가 FIPS 186-2 디지털 서명 표준의 일부로 채택하면서 P-192부터 P-521까지 여러 크기와 보안 수준의 표준 곡선이 함께 명시됐다. 이 곡선들은 소수체와 이진체 위에서 정의되며, 규격에는 곡선의 계수 b를 결정하는 데 쓰이는 '시드(seed)' 값이 함께 공개됐다. 예컨대 NIST P-256 곡선의 시드는 C49D3608 86E70493 6A6678E1 139D26B7 819F7E90이었다.

문제는 이 시드들이 NSA에서 아무런 설명이나 근거 없이 건네졌다는 점이다. 그래서 암호학계에서는 오랫동안 'NSA가 자신들만 아는 약점, 즉 백도어를 심어 두기 위해 특정 값을 고른 것 아니냐'는 의심이 끊이지 않았다. 닐 코블리츠와 알프레드 메네제스는 'A Riddle Wrapped in an Enigma'라는 글에서 이 논란의 역사와 우려를 정리했고, 시드의 기원을 찾는 아마추어 조사와 현상금까지 걸렸다. 가장 유력하게 떠돌던 설은 NSA의 오랜 직원 제리 솔리나스가 어떤 익살스러운 문구를 해시해 시드를 만들었다는 것이었다. 그러나 솔리나스는 2023년 세상을 떠났고, 당시 동료들도 응답하지 않으면서 진상은 미궁에 빠져 있었다.

30분 만에 풀린 수수께끼

앤트로픽의 여러 직원이 '익살스러운 문구'라는 단서를 쫓았지만 모두 실패했다. 그러다 2026년 10월, 한 직원이 그 단서를 알려주지 않은 채 내부 연구용 모델에게 시드가 어떻게 생성됐는지 알아낼 수 있겠냐고 물었다. 30분이 채 지나지 않아 Claude는 P-192, P-224, P-256, P-384, P-521 시드의 기원을 찾아냈다. 결론은 해시 알고리즘과 전혀 무관했다. 시드들은 유닉스 타임스탬프로 초기화한 C 라이브러리의 난수 생성기 lrand48의 출력이었다. 생성기는 반복할 때마다 20바이트씩 뽑아 후보 시드로 삼았는데, P-256의 공개 시드는 무려 1842번째 후보였다.

접근 방식이 흥미롭다. 소문에서 추출한 문구를 아무리 검색해도 성과가 없자, Claude는 곡선을 만든 소프트웨어가 어떻게 작동했을지를 역으로 추정했다. 1990년대 C 라이브러리에 딸려 오던 의사난수 생성기(PRNG)는 출력에서 특유의 흔적을 알아볼 수 있을 만큼 허술했기 때문이다. Claude는 공개된 시드를 한 비트씩 밀어가며 인접한 덩어리들이 당대 생성기의 연속 출력인지 검사하는 스캐너를 작성했고, 생성기와 출력 구간의 34가지 조합을 훑었다. 그 과정에서 일부 시드의 최상위 비트가 모두 0이라는 패턴을 포착했다. 이는 48비트 상태 중 상위 31비트만 반환하는 선형 합동 생성기 lrand48의 서명과 같았다. 이후 소수체 곡선 시드는 lrand48()을 23비트 오른쪽 시프트한 형태였고, 절단된 선형 합동 생성기의 내부 상태 복원은 LLL 격자 축약 알고리즘으로 푸는 교과서적 문제였다.

백도어 의심이 오히려 옅어졌다

Claude는 이 생성기를 거꾸로 돌려 각 시드의 초기 상태를 srand48이 초기화한 형태(하위 16비트가 0x330E)까지 되짚었다. 그러자 NIST와 ANSI X9.62의 소수체 곡선 열 개는 모두 1997년 5월부터 1998년 4월 사이의 날짜를 나타내는 유닉스 타임스탬프로 초기화돼 있었다. 네 개의 이진체 곡선은 1984년 2월로 읽혔지만, 값을 두 배로 하면 1998년 4월 17일로 P-224 실행 2주 뒤에 맞아떨어졌다. 프로그램이 시계 값을 절반으로 줄였을 가능성을 시사한다.

이 발견은 암호를 깨는 공격도, 곡선의 새로운 약점도 아니다. 오히려 반대다. 시드가 시계에서 값을 받아 흔히 쓰이던 의사난수 생성기로 만들어졌고 누구나 재현할 수 있다는 사실은, 의도적 조작이 끼어들 여지가 거의 없었음을 뜻한다. 다만 완전히 깔끔하게 끝난 것은 아니다. 모든 20바이트 후보가 쓸 만한 곡선을 만들지는 못했는데, P-256은 1842번 후보가 채택됐지만 876번 후보도 같은 방식의 적격 곡선을 냈다. P-224는 세 개, ANSI X9.62 예제 곡선 실행은 일곱 개의 적격 곡선을 건너뛰었다. 건너뛴 수가 적어 약화된 곡선을 고의로 골랐을 가능성은 낮지만, 어떤 기준이 적용됐는지는 알 수 없다.

Claude는 곡선의 기준점(base point) 일부 출처도 밝혀냈다. 1997년 5월 생성된 여섯 곡선(P-192와 ANSI X9.62 예제 곡선들)의 기준점은 아르옌 렌스트라의 정수 연산 패키지 FreeLIP에 들어 있던 난수 생성기에서 나왔으며, 초기 버전의 빅터 샤웁 NTL 라이브러리도 같은 코드를 썼다. 생성기 시드는 P-192가 20000, 나머지도 2만 대의 작은 정수였다. 다만 P-224, P-256, P-384, P-521의 기준점과 이진체 곡선, 그리고 다섯 번째 이진 시드 B-163은 끝내 설명되지 않았다.

실무자에게 주는 의미

한국의 보안 담당자 입장에서 지금 당장 바꿀 것은 없다. 앤트로픽 역시 '즐길 만한 마지막 장(章)이자 수년간 이어진 추측의 끝'일 뿐 조치할 일은 없다고 선을 그었다. 대부분의 연구자는 이미 이 곡선들을 신뢰해 왔고, 이번 결과는 그 신뢰를 보강할 뿐이다. 그럼에도 주목할 지점은 분명하다. 25년간 전문가들을 괴롭힌 공개 난제가, 1990년대 PRNG의 알려진 약점과 격자 축약이라는 고전적 기법을 적절히 조합하는 추론으로 풀렸다는 사실이다. 이는 AI가 단순 검색이 아니라 '당시 소프트웨어가 어떻게 동작했을까'를 모델링하는 가설 수립형 문제 해결에 쓰일 수 있음을 보여 주는 구체적 사례다. 시드 발견에 걸린 현상금 3만6864달러는 Internet Security Research Group에 기부된다. 한편 앤트로픽은 '사악한 인터넷 밈'이자 'NSA 괴담의 요 라 텡고'라 불리면서도 유머를 잃지 않았던 고(故) 제리 솔리나스를 추모했다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.anthropic.com/research/ecdsa-curve-origins
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...