8비트짜리 신뢰: 이무드라의 CA 키가 밀리초 만에 뚫렸습니다

Eight Bits of Trust: eMudhra's CA keys cracked in milliseconds

scotthelme.co.uk ▲ 840 댓글 401 hkc

요약

이무드라의 중간 CA 인증서 8개는 개인 키가 255 이하의 숫자여서 노트북으로 1초도 안 걸려 풀렸습니다.

보안 연구자 스콧 헬름의 분석입니다. 10월 17일 한 연구자가 이무드라 중간 인증서(루트 아래에서 실제 인증서를 발급하는 인증서)의 키가 노출됐다고 알리자 Chrome과 Firefox가 곧바로 차단했습니다. 모질라와 구글은 이무드라 루트 인증서도 빼기로 했습니다.

왜 중요한가

  • 키를 훔칠 필요 없이 누구나 계산으로 얻을 수 있었으므로, 약 17개월 동안 누가 키를 가졌는지 알 길이 없습니다.
  • 브라우저는 인증서 투명성(CT, 발급 인증서를 공개 기록하는 제도) 덕에 대체로 안전하지만 curl·Python·Node는 위조 인증서를 믿습니다.
  • 업데이트할 수 없는 공유기·프린터·TV는 만료일인 2039년 7월까지 이 인증서를 계속 신뢰합니다.

핵심 내용

  • 키는 P-384 타원곡선 키인데 마지막 1바이트만 값이 있어, 많아야 255번 계산하면 찾을 수 있었습니다.
  • 실제 키 값은 4, 56, 115처럼 작은 수였고, 헬름은 공개된 인증서만으로 8개를 모두 되찾았습니다.
  • 대상은 2025년 4월에 만든 TLS 발급용 6개와 코드 서명용 2개이며, 섹티고 루트의 교차 서명까지 합쳐 16개 인증서가 영향을 받습니다.
  • 헬름이 위조한 api.stripe.com 인증서를 리눅스와 맥의 curl, Python, Node가 기본 설정에서 모두 받아들였습니다.
  • 이무드라는 키 생성 스크립트 오류로 약한 키 쌍이 함께 만들어졌고, 이름이 비슷해 그 키를 잘못 썼다고 해명했습니다.

HN 반응

  • 처음 신고한 연구자는 구글의 공개 도구 paranoid_crypto를 그대로 돌려 찾았다며, 다들 남이 했으리라 여긴 기본 점검이 빠져 있었다고 밝혔습니다.
  • CA 감사가 인증받은 키 생성기를 쓰는지 같은 절차만 본다는 지적에, 그런 생성기가 4를 내놓을 리 없으니 검사가 허술했을 뿐이라는 반론이 붙었습니다.

댓글

30개 표시 · 전체 401개
  1. john_strinlai HN

    최초 제보자인 웨인이 새 메일을 보냈습니다.

    "*이걸 어떻게 발견했느냐고 묻는 메일을 꽤 많이 받았습니다. 답은 간단합니다. https://github.com/google/paranoid_crypto 입니다.

    네, 별다른 설정 없이 그대로 돌렸습니다. CCADB는 가입자 인증서를 살펴보기 전에 빠르게 돌려 보는 코퍼스 테스트 정도로 생각했습니다...

    CCADB에 있는 기존 인증서는 훨씬 더 꼼꼼하게 전부 검사했고, 다행히 더 나온 것은 없습니다. 제 시간은 대부분 '누군가 이미 했겠지' 하고 모두가 넘어간 기본적인 부분을 훑는 데 들어갔습니다. 보안 근처에서는 절대 해서는 안 되는 치명적인 실수입니다.

    그러니 누군가 훨씬 많은 연산 자원이나 더 앞선 암호 해독 연구에 접근할 수 있는 게 아니라면, 손쉽게 딸 수 있는 열매는 지금까지 다 걸러졌다고 봐야 합니다.*"

    https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/0R3XLJL6FuE

  2. TheJoeMan HN

    솔직히 제가 비밀번호 크래커를 만든다면 "1"부터 시작할 생각은 못 했을 것 같아요.

  3. tejtm HN

    당연하죠, 우리는 음수 0부터 시작하니까요.

    https://en.wikipedia.org/wiki/Signed_zero

  4. myself248 HN

    저는 술집에 들어가면 일단 바텐더에게 음수 0잔을 달라고 해요. 가게 분위기를 살펴보려고요. 진짜 주문은 그다음이고요.

    아직 방화범으로 몰린 적은 없지만, 시간문제겠죠.

  5. jasomill HN

    글쎄요, 저는 비밀번호 크래킹을 돌릴 때 항상 아주 짧은 비밀번호부터 무차별 대입으로 훑습니다. 그래도 크래킹 시간은 거의 늘지 않고, 짧은 비밀번호를 허용하는 시스템에서 그런 게 의외로 많이 나오거든요.

  6. perlgeek HN

    "1"이 아니라 ""(빈 문자열)이나 0에서 시작해야죠.

  7. fcatalan HN

    처음으로 John the Ripper에 비밀번호 파일을 물렸더니 바로 삑삑거리며 난리가 났던 적이 있어요. 알고 보니 기본 비밀번호가 '없음'이었고 계정의 70%는 쓰지도 않는 계정이었죠. 그 소박하고 행복했던 90년대라니...

  8. renhanxue HN

    https://github.com/google/paranoid_crypto

    이 저장소는 2026년 8월 19일에 소유자가 보관 처리했습니다. 이제 읽기 전용입니다.

    이제 확인도 마쳤으니 이런 실수는 앞으로 아무도 안 할 테고, 그래서 더 필요 없다는 거겠죠? :)

  9. wildzzz HN

    보관(archive) 처리는 그냥 방치해서 썩게 두는 것과 아예 삭제하는 것 사이의 괜찮은 절충안입니다. 저장소를 열어 둔 채로 두면 이 코드베이스가 더 이상 개발되지 않는다는 사실이 사용자에게 바로 전해지지 않아서, 마지막 커밋이 언제인지 직접 확인해야 하거든요. 그마저도 알 수 있는 게 많지 않습니다. 이 앱이 워낙 단순해서 오랫동안 고치거나 올릴 게 없는 걸까요? 오래된 파일 형식을 개방형 형식으로 바꿔 주는 파이썬 스크립트는 사실상 완성되어 더 추가하거나 고칠 것도, 악용할 만한 위협 경로도 없을 수 있습니다. 아니면 누군가 수년간 매일 커밋하던 최첨단 앱인데 지금은 1년째 멈춰 있는 걸까요?

    보관 처리에서 마음에 들지 않는 점은 새 이슈를 등록할 수 없다는 것입니다. 새로운 문제를 발견해도 굳이 포크해서 그 이슈를 제가 직접 추적하고 싶지는 않습니다. 코드를 책임지고 싶은 게 아니라, 관심 있는 누군가가 고칠 수 있도록 알려만 주고 싶을 뿐이니까요.

  10. Aurornis HN

    보관 처리했다는 건 저장소는 그대로 볼 수 있지만 더는 개발하지 않는다는 신호입니다.

    어차피 마지막 커밋도 2년 전이고요.

  11. 0cf8612b2e1e HN

    우리 대신 NSA가 계속 확인해 주겠죠, 뭐.

  12. commandersaki HN
  13. jlmorton HN

    돌이켜 보면 신뢰하는 인증 기관이 100개나 되는 건 지나쳤는지도 모르겠네요.

  14. tclancy HN

    돌이켜 보면 아주 사소한 역량 검사조차 없었다는 게 허점이었나 싶네요.

  15. oofbey HN

    역량은 체계적으로 검사하기가 어렵습니다. 문제는 감사 절차에 있습니다. 인증 기관 감사관이 확인하는 목록은 FIPS 준수가 필요한 애플리케이션이 받는 검사보다 훨씬 짧습니다. 인증 기관이 FIPS를 준수하는 키 생성기를 쓰는지, 그리고 기록이 남는 표준적인 다인 절차를 따르는지 같은 기본적인 것만 확인합니다.

    은행이나 정부용 시스템을 만드는 사람은 코드 한 줄 한 줄이 암호 키를 가지고 멍청한 짓을 하지 않는지 전부 검사받아야 합니다. 그 정도 수준의 보증이었다면 이 문제를 잡아냈을 겁니다. 하지만 절차가 너무 느슨하게 정의돼 있었습니다.

  16. InsidiousWombat HN

    They just check that the CA is using a FIPS compliant key generator, and then basic things like following a logged, standard, multi person process.

    (번역: 인증 기관이 FIPS를 준수하는 키 생성기를 쓰는지, 그리고 기록이 남는 표준적인 다인 절차를 따르는지 같은 기본적인 것만 확인합니다.)

    FIPS를 준수하는 키 생성기가 키 값을 4로 만들어도 된다고요?

    아니죠, 그냥 충분히 꼼꼼하게 확인하지 않은 겁니다.

  17. tclancy HN

    물론 그렇죠. 이것들이 만들어지던 당시에는 크래킹이 훨씬 더 큰일이었을 거고요. 그래도 4라니요.

  18. knowinow HN

    이 키 4는 새로 연 키 세리머니에서 나온 겁니다. 아마 가장 높은 보안 수준의 키까지 최근에 다 써 버려서 한 바퀴 돌아 처음으로 돌아온 거겠죠.

  19. Scott_Helme_ HN

    "신뢰하는 인증 기관"을 어떻게 정의하느냐에 따라 달라집니다.

    루트 인증서를 말한다면 주요 운영자 중 적어도 한 곳이 현재 신뢰하는 것이 약 350개입니다.

    중간 인증서까지 포함하면 3,600개가 넘습니다!

  20. londons_explore HN

    인증서 투명성(Certificate Transparency) 요건은 사실상 인증 기관에서 권한을 빼앗는 겁니다.

    대신 자기 도메인에 대해 아무도 부정하게 인증서를 발급하지 않았는지 확인할 부담을 다시 개별 웹마스터에게 지웁니다. 악의적일 수 있는 CT 로그와 관련된 새로운 취약점도 몇 가지 있고요.

  21. Scott_Helme_ HN

    그게 도메인 소유자에게 지워지는 부담이라는 데는 동의합니다. 그런데 'scotthelme.co.uk'의 인증서가 발급돼도 되는지 아닌지를 'scotthelme.co.uk'의 소유자인 저 말고 누가 알 수 있겠어요?

    악의적인 CT 로그에 관한 정보가 있으신가요? 관련 글이 있으면 읽어 보고 싶습니다!

  22. jasomill HN

    CT 로그가 도메인 이름이나 IP 주소 공간에 관한 정보, 혹은 구현 세부 사항을 통해 원래는 공개되지 않았을 다른 정보를 드러내는 경우가 아닐까요.

  23. londons_explore HN

    CT 로그가 증명은 붙여 주면서 정작 그 인증서를 로그에는 넣지 않는 경우요.

  24. Scott_Helme_ HN

    하지만 그건 탐지할 수 있고, 그래서 MMD가 있는 겁니다. 그런 짓을 하는 로그 운영자는 들통납니다.

  25. jasonjayr HN

    It's fortunate that the steps required here aren't particularly complicated for the devices you can update, and the advice essentially boils down to 'update them'. The problem is the devices you can't update or update easily.

    (번역: 다행히 업데이트할 수 있는 기기라면 여기서 필요한 절차가 그다지 복잡하지 않고, 조언도 결국 '업데이트하라'로 요약됩니다. 문제는 업데이트할 수 없거나 쉽게 업데이트할 수 없는 기기입니다.)

    CA 번들이 들어 있는 모든 것을 업데이트하세요. OS의 ca-certificates 패키지, certifi, Node, Homebrew, 그리고 기본 이미지가 변경 사항을 반영하면 컨테이너 이미지도 다시 빌드하세요.

    업데이트할 수 없는 기기가 어려운 부분입니다. 라우터, 프린터, TV, 펌웨어가 고정된 가전은 2039년 7월 만료될 때까지 이 인증서들을 계속 신뢰할 겁니다...

    어서요, 모든 스마트 TV를 MITM 해서 한 방에 탈옥시켜 버립시다!

  26. __MatrixMan__ HN

    인터넷에 접속할 만큼은 똑똑하면서 사용자가 자기 인증서를 설치하게 해 줄 만큼은 똑똑하지 않은 기기는 존재해서는 안 됩니다.

  27. tonyhart7 HN

    "사용자가 자기 인증서를 설치하게 해 주지 않는 기기는 존재해서는 안 된다"

    그렇게 하면 공격 경로가 더 늘어나는 건 아닐까요?????

  28. __MatrixMan__ HN

    아닙니다. 우리는 사용자가 판매사로부터 스스로를 보호할 수 있게 해 주는 겁니다.

    그 논리는 사용자가 적일 때만 말이 됩니다.

  29. mitxela HN

    제가 판매사고 사용자는 제 적입니다. 다행히 사용자가 뭘 할 수 있는지는 제가 정하지 그 반대가 아니라서, 제가 이깁니다.

  30. JoshTriplett HN

    기기는 사용자 손에 있으니 결국 지게 될 겁니다. 시간문제일 뿐이에요.

Hacker News에서 보기 ↗