Evaluating the Effectiveness of LLMs in Aiding Compliance Testing of PKCS#1-v1.5
본 논문은 PKCS#1 v1.5 구현체의 컴플라이언스 테스트를 위해 문법 수준의 변이(grammar-level mutation)와 LLM 기반 코드 합성(LLM-based code synthesis)을 결로한 방법의 효과를 평가하며, 해당 접근 방식이 알려진 취약점을 재현하고 새로운 불일치를 발견하는 데는 성공했으나, 운영상의 신뢰성과 의미론적 충실도(semantic fidelity) 사이에 상당한 격차를 만드는 높은 LLM 환각 발생률로 인해 그 유용성이 심각하게 제한된다는 점을 밝히고 있다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신은 엄격한 건축 검사관이라고 상상해 보세요. 당신의 업무는 도시의 모든 집이 정확히 동일한 설계도(명세서)를 따르고 있는지 확인하는 것입니다. 설계도는 다음과 같이 말합니다: "앞문은 너비가 3피트여야 하고, 지붕은 빨간색이어야 하며, 굴뚝은 정확히 10피트 높이여야 한다."
컴퓨터 보안의 세계에서 이 "집들"은 암호화된 메시지(디지털 서명 등)를 처리하는 소프트웨어 프로그램입니다. 이 "설계도"는 PKCS#1 v1.5라고 불리는 복잡한 규칙 세트입니다. 만약 어떤 프로그램이 설계도와 완벽하게 일치하지 않는 집을 짓는다면, 해커가 침입할 수 있는 숨겨진 뒷문(backdoor)이 생길 수 있습니다.
문제점: 검사가 어렵다
이 집들을 검사하는 것은 매우 어렵습니다.
- 무작위 추측은 통하지 않는다: 단순히 집에 무작별로 벽돌을 던진다고 해서 문이 정확히 3피트 너비가 되도록 우연히 만들 확률은 거의 없습니다. 당신에게는 매우 구체적인 계획이 필요합니다.
- 전문가 도구는 느리다: 인간 전문가들이 만든 도구들은 설계도의 모든 가능한 변형을 확인할 수 있지만, 이러한 도구를 만드는 데는 수년간의 깊은 연구와 수작업이 필요합니다. 이는 마치 숙련된 건축가 팀을 고용하여 모든 집을 검사하는 것과 같습니다.
새로운 아이디어: "AI 건축가"
연구자들은 다음과 같은 간단한 질문을 던졌습니다: "대규모 언어 모델(LLM, AI)을 사용하여 망가진 설계도를 테스트로 변환하는 '번역기'로 사용할 수 있을까?"
그들의 과정은 다음과 같습니다:
- 원래의 설계도: 그들은 집을 짓는 공식 규칙을 가져왔습니다.
- 뮤테이터(Mutator, "만약에" 기계): 그들은 컴퓨터 프로그램을 사용하여 의도적으로 설계도를 13가지 방식으로 망가뜨렸습니다. 예를 들어, "만약 문이 4피트라면?", "만약 지붕이 파란색이라면?", 또는 "만 만약 굴뚝을 아예 없앤다면?"과 같이 말입니다.
- AI 번역기: 그들은 이 망가진 설계도를 AI에게 건네며 이렇게 말했습니다. "이 망가진 설계도에 정확히 따라 집을 짓는 컴퓨터 프로그램을 작성해 줘."
- 테스트: 그들은 AI가 작성한 프로그램을 실행하여 집을 짓게 한 다음, 이 집을 48개의 서로 다른 소프트웨어 프로그램("빌더")에 입력하여 빌더들이 이 망가진 집을 받아들이는지 확인했습니다. 만약 빌더가 망가진 집을 받아들였다면, 그 빌더는 보안 결함이 있는 것입니다.
결과: 두 숫자의 이야기
좋은 소식 (운영 신뢰성):
AI는 작업을 시작하는 데 있어 지침을 따르는 능력이 놀라웠습니다.
- **99.8%**의 경우, AI는 오류 없이 실행되는 프로그램을 성공적으로 작성했습니다. 이는 마치 오타나 누락된 페이지가 없는 설계도를 건네주는 건축가와 같았습니다.
나쁜 소식 (의미론적 충실도):
하지만, AI는 실제로 망가진 설계도를 따르는 데는 형편없었습니다.
- AI가 망가진 설계도대로 집을 지었다고 할 수 있는 경우는 단 **17.5%**뿐이었습니다.
- **82.5%**의 경우, AI는 "환각(hallucination)" 현상을 보였습니다. AI는 망가진 설계도를 보고 "오, 이건 좀 이상한데"라고 생각한 뒤, 집을 짓기 전에 몰래 원래의 완벽한 설계도로 다시 수정해 버렸습니다.
비유:
당신이 AI에게 "파란색 문이 있는 집을 지어줘"라고 요청했다고 가정해 봅시다.
- 성공: AI가 파란색 문이 있는 집을 짓습니다.
- 환각: AI가 문은 보통 빨간색이라는 것을 알기에, 당신이 명시적으로 파란색을 요청했음에도 불구하고 몰래 빨간색 문이 있는 집을 짓습니다. AI가 당신의 특정 지시를 무시한 것입니다.
무엇을 발견했는가?
- 큰 버그들을 찾아냈다: 이 방식은 알려진 보안 결함 중 13개 중 10개를 성공적으로 재현했습니다(해커가 서명을 위조할 수 있게 하는 가장 위험한 결함 포함). 이는 이 아이디어가 효과가 있음을 증명합니다.
- 새로운 버그를 발견했다: 그들은 LibTomCrypt라는 라이브러리에서 아무도 보고하지 않았던 새로운 보안 문제를 발견했습니다. 이는 AI가 특정 부분(리딩 제로 바이트)이 빠진 집을 성공적으로 지었고, 해당 라이브 library가 이를 받아들였기 때문에 발생했습니다.
- 병목 현상은 계획이 아니라 AI에 있다: 연구자들은 "뮤테이터"(설계도를 망가뜨리는 기계)는 아주 잘 작동하고 있다는 것을 발견했습니다. 문제는 망가진 규칙을 고수하지 못하는 AI의 능력이었습니다.
"환각"의 유형
연구자들은 의사가 환을 진단하듯 AI의 실패를 분류했습니다:
- "수정가(Fixer)" (가장 흔함): AI는 망가진 규칙(예: "패딩은 16바이트보다 작아야 한다")을 보고 "그건 불가능해"라고 생각하여, 조용히 정상적인 규칙으로 다시 고쳐버렸습니다.
- "수학은 잘하지만 수학을 잊어버린 천재": AI는 규칙을 따르려고 노력했지만 단순한 수학 계산(예: 패딩을 얼마나 추가할지 계산하는 것)에서 실수하여, 결과적으로 엉뚱한 크기의 집을 만들었습니다.
- "무시(Ignore)": AI는 망가진 부분을 완전히 무시하고 표준적인 집을 지었습니다.
결론
이 논문은 AI를 사용하여 컴퓨터 보안을 테스트하는 것이 유망하지만 현재로서는 신뢰할 수 없음을 보여줍니다.
AI는 코드가 실행되도록 쓰는 데는 뛰어나지만(중단되지 않음), 코드가 당신이 말한 의미대로 작동하게 만드는 데는 매우 서툽니다. AI는 당신의 의도적인 실수를 "알아서 고쳐야 한다"고 생각하여 수정해 버리는 습성이 있습니다.
연구자들은 만약 AI를 이런 종류의 테스트에 사용하고 싶다면, AI가 작성한 코드를 그냥 믿어서는 안 된다고 결론지었습니다. AI가 정말로 당신의 특정된, 망가진 지시를 따랐는지, 아니면 그냥 정상적인 상태로 "수정"해 버렸는지 확인하기 위한 두 번째 검증 단계가 반드시 필요합니다. 그때까지 AI는 매우 열성적이지만, 당신이 "올바른" 방식으로 하라고 내린 구체적인 명령을 자주 무시하는 유능하지만 말 안 듣는 인턴과 같습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.