Claude Code가 저수준 암호 코드를 디버깅하다

6 hours ago 2

  • ML-DSA라는 NIST 지정 양자내성 서명 알고리듬의 Go 구현 과정에서 서명 검증이 실패하는 문제 발생
  • Claude Code v2.0.28이 테스트 코드와 소스 경로만으로 복잡한 저수준 버그를 신속히 찾아냄
  • 문제 원인은 Verify 단계에서 w1의 상위 비트를 중복 계산한 함수 병합 오류로 확인
  • 이어진 두 번째 실험에서도 Claude가 Montgomery 상수 계산 오류서명 길이 불일치 버그를 각각 찾아냄
  • 세 번의 시도 모두 성공적으로 버그를 식별해, AI의 저수준 디버깅 활용 가능성을 보여줌

ML-DSA 구현과 초기 문제

  • 작성자는 NIST가 지정한 ML-DSA(Post-Quantum Signature Algorithm) 를 Go 언어로 새로 구현
    • 4일간의 라이브코딩 후 테스트에서 Verify 함수가 모든 서명을 거부하는 문제 발생
    • 테스트 로그에는 invalid signature 오류가 반복 출력됨
  • 피로로 인해 디버깅을 중단하고, Claude Code에 문제를 분석하도록 요청

Claude Code의 첫 번째 디버깅

  • Claude Code v2.0.28(모델 Opus 4.1, 시스템 프롬프트 없음)에 다음 정보를 제공
    • 테스트 실행 명령(bin/go test crypto/internal/fips140/mldsa)
    • 코드 위치(src/crypto/internal/fips140/mldsa)
    • “서명이 항상 거부된다”는 설명과 “w1이 다르다”는 힌트
  • Claude는 몇 분 만에 완전한 수정 제안을 반환
    • 원인은 HighBits와 w1Encode를 하나로 합친 뒤, Verify에서 이미 상위 비트를 생성한 UseHint 결과에 다시 상위 비트를 취한 것
    • 즉, w1의 상위 비트를 두 번 계산한 구조적 오류
  • Claude는 코드 로드를 마친 직후 원인을 파악하고, 자체 테스트를 작성해 가설을 검증
    • 제안된 수정은 완벽하지 않았으나, 핵심 원인 파악으로 디버깅 시간을 단축
  • 이후 작성자는 w1Encode를 리팩터링해 상위 비트를 입력으로 받는 구조로 변경, Montgomery 표현 변환 과정도 단축

두 번째 실험: 서명 생성 단계의 버그

  • 서명 생성 구현에서도 테스트 실패 발생
    • 첫 번째 버그: Montgomery 도메인에서 상수(1, -1) 계산 오류
      • 찾기 어려운 문제로, 수많은 printf와 추측이 필요했으며 약 1~2시간 소요
    • 두 번째 버그: 서명에 포함되는 값의 길이 오류(32비트 대신 32바이트)
      • 서명 길이 차이로 비교적 쉽게 발견
  • 작성자는 이 두 버그가 Claude의 성능 검증에 적합하다고 판단하고, 이전 버전 코드로 Claude Code를 재실행

Claude Code의 두 번째 디버깅 결과

  • 첫 번째 프롬프트에서 Claude는 printf 디버깅과 값 추적을 수행하며 잘못된 상수를 찾아 수정
    • 처리 시간은 인간보다 짧았으며, 테스트 실패 원인을 정확히 식별
  • 두 번째 프롬프트에서는 서명 길이 불일치 문제를 찾아냄
    • Claude는 여러 경로를 탐색한 후, 할당 길이만 수정하는 제안을 제시
    • 제안된 수정은 완전하지 않았으나, 핵심 오류 위치를 정확히 지적
  • 세 번의 독립적 시도 모두에서 Claude가 정확한 버그 원인을 단독으로 찾아냄

AI 디버깅의 효율성과 시사점

  • Claude의 접근은 테스트 실패 원인 탐색에 특화된 자동화 도우미로서 효과적
    • 사용자는 Claude의 수정안을 그대로 적용하지 않고, 버그 위치만 확인 후 직접 수정
  • 작성자는 “테스트 실패 시 자동으로 LLM이 원인을 분석해 알려주는 도구”의 필요성을 언급
    • 단순 채팅이나 자동 PR 생성보다 테스트 기반 디버깅 에이전트 형태가 이상적이라 평가

후원 및 기타 정보

  • 작성자의 오픈소스 유지보수는 Geomys를 통해 지원받으며,
    Smallstep, Ava Labs, Teleport, Tailscale, Sentry 등이 후원
  • Ava Labs는 암호 프로토콜의 지속 가능한 오픈소스 개발의 중요성을 강조
  • Teleport는 사용자 계정 탈취 방지 및 접근 제어 강화를 위한 Teleport Identity 플랫폼을 소개

부록: 이미지 및 개인 언급

  • 글에는 Microsoft Office의 클리피(Clippy) 가 “w1의 상위 비트를 두 번 취했다”는 말풍선과 함께 등장
  • 마지막에는 고양이 사진이 포함되어 있으며, AI에 대한 감정적 논쟁을 완화하는 유머로 제시됨

Read Entire Article