무슨 일이냐면요
AI로 코드를 짜는 건 이제 익숙하잖아요. 그런데 이번엔 방향이 좀 달라요. AI를 시켜서 이미 존재하는 코드에서 '버그를 찾아내게' 한 실험 이야기예요. 그것도 아무 코드나 아니고, 가장 정교하고 실수가 치명적인 분야인 암호화(cryptography) 라이브러리를요.
보안 감사 회사인 zkSecurity가 Cloudflare의 CIRCL이라는 암호 라이브러리를 대상으로 실험했어요. CIRCL이 뭐냐면, Cloudflare가 만들어 오픈소스로 공개한 Go 언어용 암호화 도구 모음이에요. 최신 암호 방식, 특히 양자 컴퓨터 시대에도 안전한 '포스트 양자 암호'까지 구현한, 실제 서비스에서 쓰이는 진지한 라이브러리예요. 여기에 AI를 풀어놨더니 사람이 놓쳤던 실제 버그들을 찾아냈다는 게 이번 소식의 핵심이에요.
왜 이게 놀라운 일이냐면요
암호 코드는 일반 코드랑 완전히 달라요. 보통 프로그램은 버그가 있으면 화면이 깨지거나 에러가 나서 "아 여기 문제구나" 하고 알 수 있어요. 그런데 암호 코드의 버그는 겉으로는 멀쩡하게 잘 돌아가요. 암호화도 되고 복호화도 되고, 테스트도 통과해요. 하지만 그 안에 미묘한 결함이 숨어 있으면, 공격자가 그 틈으로 비밀 키를 뽑아낼 수 있어요. '조용한 버그'인 거죠.
이런 결함은 종류가 아주 미묘해요. 예를 들면 상수 시간(constant-time) 연산이 지켜지지 않는 경우가 있어요. 이게 뭐냐면, 암호 연산은 어떤 값이 들어오든 항상 똑같은 시간이 걸려야 해요. 만약 비밀 키 값에 따라 처리 시간이 아주 살짝이라도 달라지면, 공격자가 그 시간 차이를 측정해서 키를 추측할 수 있거든요(타이밍 공격). 그 외에도 유한체(finite field) 위에서의 산술 계산에서 특정 극단값(edge case)을 잘못 처리한다거나, 입력값 검증을 빠뜨리는 실수 등이 있어요. 이런 건 워낙 미묘해서 최고 수준의 전문가도 놓치기 쉬워요.
AI가 여기서 잘하는 이유가 있어요. LLM(대형 언어 모델)은 방대한 코드와 논문을 학습했기 때문에 '이런 패턴은 위험하다'는 감각을 갖고 있어요. 사람은 긴 코드를 읽다 보면 집중력이 떨어지고 익숙한 부분을 대충 넘어가는데, AI는 지치지 않고 모든 함수를 꼼꼼히 훑으면서 "이 부분은 상수 시간이 깨질 수 있어 보인다" 같은 지적을 해요. 사람이 코드 리뷰하듯, AI에게 코드를 던져주고 "암호학적으로 위험한 부분을 찾아봐"라고 시키는 방식인 거죠.
하지만 만능은 아니에요
오해하면 안 되는 게, AI가 마법처럼 모든 버그를 잡아주는 건 아니에요. 거짓 양성(false positive), 즉 문제없는 코드를 문제라고 잘못 지적하는 경우가 많아요. AI가 그럴듯하게 "여기 취약점이 있어요"라고 말해도, 실제론 아무 문제 없는 경우가 부지기수예요. 그래서 결국 사람 전문가가 AI의 지적을 하나하나 검증해야 해요. AI는 '의심스러운 곳을 대량으로 골라주는 조수'이지, '최종 판단을 내리는 감사관'은 아직 아닌 거예요. 그럼에도 방대한 코드에서 사람이 봐야 할 후보 지점을 좁혀준다는 것만으로도 감사 효율이 크게 올라가요.
업계 맥락에서 보면
이건 최근 'AI를 보안 연구에 활용'하는 큰 흐름의 일부예요. 구글은 'Big Sleep'이라는 프로젝트로 AI를 이용해 실제 소프트웨어의 제로데이 취약점을 찾아냈다고 발표했고, AI와 퍼징(fuzzing, 무작위 입력을 마구 넣어 버그를 유발하는 기법)을 결합하는 연구도 활발해요. 예전엔 보안 감사가 극소수 전문가의 수작업 영역이었는데, 이제 AI가 그 첫 단계를 대량으로 자동화하면서 공격자와 방어자 모두 AI로 무장하는 시대로 가고 있어요. 방어하는 쪽이 먼저 AI로 자기 코드의 구멍을 메우는 게 중요해진 거죠.
한국 개발자에게는
실무에 주는 메시지가 명확해요. 첫째, "암호는 직접 구현하지 마라(Don't roll your own crypto)"는 오래된 격언이 다시 확인됐어요. Cloudflare 같은 최고 수준의 팀이 만든 라이브러리에서도 버그가 나올 정도니, 우리가 직접 암호 알고리즘을 짜는 건 정말 위험한 일이에요. 검증된 표준 라이브러리를 쓰세요.
둘째, AI를 코드 리뷰와 보안 점검의 조수로 적극 활용해볼 만해요. 우리 프로젝트의 인증 로직, 입력값 검증, 권한 처리 같은 민감한 부분을 AI에게 "보안 관점에서 취약한 곳을 찾아줘"라고 리뷰시키는 건 지금 당장 해볼 수 있는 일이에요. 물론 AI 말을 곧이곧대로 믿지 말고 사람이 검증하는 단계는 반드시 거쳐야 하고요. AI는 놓친 것을 짚어주는 데는 탁월하지만, 최종 책임은 여전히 개발자에게 있다는 걸 잊으면 안 돼요.
마무리
최고 전문가도 놓친 암호 라이브러리의 미묘한 버그를 AI가 찾아냈다 — 다만 검증은 여전히 사람의 몫 — 이게 이번 실험의 요점이에요. 여러분은 자신의 코드를 AI에게 보안 리뷰시켜 본 적 있으세요? 어떤 부분부터 AI에게 맡겨보면 좋을까요?
🔗 출처: Hacker News