AI 코드표절, 이렇게 잡는다: '가짜 AI 코드'를 이용한 탐지 기법
| 교수가 직접 생성한 ‘가짜 AI 코드’를 기준으로 학생 제출 코드를 비교하고, 유사성이 높은 경우 AI 사용 가능성을 경고하는 프로세스를 시각화한 인포그래픽. |
생성형 AI가 써준 코드, 학생이 쓴 코드, 누가 구분할 수 있을까? 대학에서 코딩 과제를 채점해야 하는 교수라면 요즘 가장 난감한 질문일지도 모른다. 실제로 코드 표절 탐지 도구들은 생성형 AI가 작성한 코드를 사람의 손글씨처럼 구별해내지 못하는 경우가 많다. 이런 현실 속에서 사우디아라비아의 샤리크 바시르 교수는 흥미로운 해결책을 제안했다. 바로 '가짜 AI 코드(Pseudo-AI Submission)'다.
---
문제는 뭘까?
ChatGPT나 Codex 같은 생성형 AI는 이제 초급 프로그래밍 과제를 순식간에 풀어낸다. 학생이 조금만 손을 보면 거의 티도 안 난다. 기존 표절 탐지 도구(MOSS, JPlag 등)는 같은 코드가 복붙됐을 때만 잡아낸다. 하지만 AI는 문제마다 조금씩 다른 코드, 다양한 표현 방식으로 결과물을 내놓는다. 즉, 똑같은 질문을 해도 똑같은 코드가 나오지 않는다. 이게 바로 AI 코드 감별이 어려운 이유다.
또한, 기존의 AI 탐지 도구들도 대부분 자연어 분석 기반이라 코드 특성에는 최적화되어 있지 않다. 그래서 '코드를 위한 AI 탐지'가 필요하다는 목소리가 커지고 있다.
---
바로 그래서, '가짜 AI 코드'
바시르 교수의 아이디어는 단순하면서도 기발하다. 교수 본인이 먼저 AI를 이용해 과제 문제에 대한 "AI 답안 예시"를 만든다. 그리고 이 코드를 학생들에게 공개한다. 즉, "이런 식으로 AI가 답을 짤 수 있으니, 너희가 그대로 내면 티 난다"는 경고다.
이 '가짜 AI 코드'는 단순한 예시가 아니다. 표절 탐지 시스템에도 함께 업로드되어, 이후 제출되는 학생 코드가 여기에 얼마나 유사한지를 분석한다. 즉, AI 코드와 비슷한 결과물은 그대로 걸러지는 셈이다. 이 방식은 두 마리 토끼를 잡는다. 첫째, 학생은 AI를 써도 큰 차별성을 두지 않으면 금방 들킬 수 있다는 점에서 억제력을 느낀다. 둘째, 교수는 사전 생성된 AI 코드와 비교만 하면 되니 탐지 부담이 줄어든다.
---
효과는?
실험 결과는 인상적이다. 연구에 참여한 43명의 학생에게 두 가지 과제가 주어졌고, 각각 자작 코드와 AI 생성 코드를 제출하게 했다. AI 코드와 '가짜 AI 코드'의 유사도는 87% 이상, 반면 자작 코드는 25% 이하로 확연한 차이를 보였다. 탐지 정확도는 무려 96%에 달했다.
더 흥미로운 점은, AI 코드와 진짜 학생 코드가 구조적으로 다르다는 사실이다. 예를 들어, AI는 불필요한 else 문을 제거하고, 변수명을 깔끔하게 작성하며, 최신 문법(foreach, auto 등)을 선호한다. 반면 학생 코드는 구문이 중복되거나, 변수명이 모호하고, 비효율적인 패턴이 자주 등장한다. 결국, 코드 스타일 자체가 다르다는 점이 탐지의 핵심 열쇠였다.
---
질문 하나, 답변 여럿
그렇다면 AI를 반복 호출해서, 매번 다르게 생긴 코드를 만들어내면 어떨까? 바시르 교수는 이를 위해 다양한 프롬프트로 AI에게 코드를 여러 번 생성하게 했다. 예를 들어, "초보자처럼 작성해줘", "switch만 써줘", "문장이 길어지게 해줘" 등 총 14가지 변형을 실험했다. 그 결과, 다르게 요청해도 결국 생성되는 코드의 구조나 표현 방식은 상당히 유사하다는 것이 드러났다. 즉, 여러 프롬프트로 코드 스타일을 바꾼다 해도, 몇 개의 대표적인 '가짜 AI 코드'만 보유하면 대부분의 경우를 커버할 수 있다는 의미다.
게다가, 학생들이 일부러 코드에 쓸데없는 기능을 더해 복잡하게 만들어도, 이를 제거하고 다시 비교하면 거의 유사하게 변환되며 탐지가 가능해졌다.
---
이 방법의 장점은?
1. 예방 효과: 학생이 AI를 쓰더라도, 결과물이 유사하면 곧바로 표절로 간주될 수 있다는 경각심을 준다.
2. 투명한 기준: 무엇이 'AI 코드'인지 예시를 통해 명확히 보여주니 공정성이 커진다.
3. 채점 시간 절약: 교수가 일일이 코드 분석할 필요 없이, 유사도 기반으로 빠르게 감별할 수 있다.
4. 단계별 적용 가능: 문제 난이도에 따라 짧은 과제든 긴 과제든 유연하게 적용 가능하다.
물론, 이 방식이 고급 프로그래밍 과제나 복잡한 알고리즘 문제에도 효과적일지는 추가 연구가 필요하다. 하지만 초급 프로그래밍 교육 현장에서는 꽤 실용적인 해법으로 주목받을 수 있다.
---
출처 논문:
Bashir, S. (2025). Using pseudo-AI submissions for detecting AI-generated code. Frontiers in Computer Science, 7, 1549761.