AST-Level Semantic Watermarking Framework for AI-Generated Code: Robust Provenance Attribution via Structural Invariants
본 논문은 의미를 보존하는 구조적 변이를 통해 AI 생성 코드의 구문론적 토폴로지에 암호학적으로 검증 가능한 서명을 삽입함으로써, 포맷팅, 이름 변경, 데드 코드 삽입과 같은 일반적인 코드 변형에 대해 기존의 텍스트 수준 방식들을 크게 능가하며 견고한 출처 추적을 달성하는 새로운 모델 불가지론적 AST 수준 워터마킹 프레임워크를 제안한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
현대 소프트웨어 생성 시대에 조용한 혁명이 진행 중이다. 컴퓨터 코드를 작성할 수 있는 강력한 인공지능 시스템인 대규모 언어 모델은 개발자들에게 표준적인 도구가 되었으며, 디지털 애플리케이션 구축 속도를 높여줄 것을 약속하고 있다. 그러나 이러한 편리함은 중대한 과제를 안겨준다. 기계가 프로그램을 작성하면 실제로 누가 그것을 만들었는지 구별하는 것이 거의 불가능해지기 때문이다. 인간의 노력과 기계의 생성 사이의 경계가 모호해지면서, 소프트웨어 기업과 연구자들은 도용, 표절, 그리고 검증되지 않은 코드의 확산에 취약해지고 있다. 이를 해결하기 위해 전문가들은 오랫동안 코드 텍스트 내부에 디지털 서명, 즉 워터마크를 숨기려고 시도해 왔다. 하지만 이러한 전통적인 방식은 취약하다. 이는 마치 단어 사이의 간격에 비밀 메시지를 적는 것과 같아서, 누군가 문서를 다시 타이핑하거나 글꼴을 바꾸는 순간 파괴된다. 코드는 그대로 남아 있지만, 숨겨진 메시지는 사라지는 것이다.
최근 연구에서 상세히 다뤄진 새로운 접근 방식은 전략을 텍스트의 표면에서 프로그램의 근본적인 논리로 전환한다. 메시지를 단어 속에 숨기는 대신, 이 방법은 코드의 구조적 아키텍처 안에 메시지를 숨긴다. 연구진은 컴퓨터 프로그램을 단순한 텍스트의 한 줄이 아니라, 추상 구문 트리(abstract syntax tree)라고 불리는 자신의 논리를 담은 계층적 지도로 취급하는 시스템을 개발했다. 이 지도는 코드가 어떻게 포맷되거나 명명되는지와 관계없이, 코드의 서로 다른 부분들이 어떻게 연결되고 상호작용하는지를 보여준다. 이 시스템은 계산에 영향을 주지 않는 두 숫자의 순서를 바꾸거나, 특정 유형의 루프를 동일하지만 다른 유형의 루프로 바꾸는 것과 같이 수학적으로 보장된 미세한 변화를 가함으로써, 암호화된 서명을 프로그램의 DNA에 직접 심는다. 이러한 변화는 코드를 실행하는 컴퓨터에는 보이지 않으며 소프트웨어가 수행하는 동작을 변경하지 않지만, 코드가 심하게 편집되거나 재작성되더라도 살아남는 영구적이고 탐지 가능한 흔적을 남긴다.
이 프레임워크의 핵심은 코드의 논리적 골격을 정밀하게 읽고 재구성할 수 있는 고충실도 파서(parser) 역할을 하는 트리-시터(tree-sitter)라는 도구에 의존한다. 포맷이나 주석을 버릴 수 있는 일반적인 도구와 달리, 이 시스템은 소스 파일의 정확한 바이트 단위 레이아웃을 보존하면서 코드의 논리를 나타내는 트리 구조를 구축한다. 연구진은 이를 사용하여 프로그램의 오류를 일으키지 않고 안전하게 변경을 가할 수 있는 특정 지점들을 식별했다. 그들은 세 가지 주요 변환 유형에 집중했다. 첫째, 더하기 연산처럼 두 항목의 순서가 결과에 영향을 주지 않는 교환 법칙이 성립하는 연산을 찾았다. 이 숫자들의 순서를 바꾸는 것은 단일 비트의 데이터를 인코딩하는 안전한 방법이다. 둘째, 서로 의존하지 않는 독립적인 문장들, 즉 코드 라인들을 식하여 그 순서를 재배치했다. 셋째, 숫자를 세는 표준 루프를 동일한 결과를 달성하는 다른 유형의 루프로 바꾸는 것과 같은 특정 제어 구조를 변형했다.
워터마크를 삽립하기 위해, 시스템은 비밀 키를 사용하여 이러한 구조적 변화의 특정 시퀀스를 생성한다. 그런 다음 코드를 스캔하여 적절한 지점을 찾아내고, 비밀 키에 의해 지시된 변화를 적용한다. 예를 들어, 키가 특정 덧셈의 순서를 바꾸라고 지시하면 시스템은 그렇게 하고, 순서를 유지하라고 지시하면 그대로 둔다. 이러한 변화는 사용된 단어의 구체적인 표현이 아니라 언어의 논리에 기반하기 때문에, 간격을 정리하거나 변수 이름을 바꾸는 등의 표준 포맷팅 도구에서도 살아남는다. 개발자가 파일 전체를 재구성하는 포맷터를 실행하더라도 논리적 구조는 온전하게 유지되며 숨겨진 서명은 지속된다. 이 시스템은 두 번째 인공지능에게 코드를 재작성하여 서명을 제거하도록 요청하는 공격을 포함하여, 워터마크를 제거하려는 시도에 대해 견고하게 설계되었다.
연구진은 코드가 워터마크를 포함하고 있는지 확인하기 위해 역방향으로 작동하는 탐지 엔진을 구축했다. 이 엔진은 코드를 가져와 논리적 트리를 재구성하고, 변화를 가할 수 있었던 동일한 지점들을 살펴본다. 그런 다음 해당 지점들의 상태를 비밀 키에 의해 생성된 예상 패턴과 대조한다. 만약 코드가 워터마크가 찍혀 있다면, 변화의 패턴이 비밀 키와 무작위 확률보다 훨씬 더 자주 일치할 것이다. 연구진은 관찰된 일치 횟수를 무작위 변동의 기준선과 비교하여 이 가능성을 측정하기 위해 통계적 테스트를 사용했다. 일치 횟수가 충분히 높으면, 시스템은 해당 코드가 워터마크를 적용한 특정 AI 모델에 의해 생성되었다고 높은 신뢰도로 결론 내린다. 이 과정은 엄격하고 수학적이며, 탐지가 단순한 추측이 아니라 통계적으로 유의미한 발견임을 보장한다.
연구진은 이 프레임워크가 얼마나 잘 버티는지 확인하기 위해 광범위한 공격을 대상으로 테스트를 실시했다. 그들은 워터마크가 찍힌 코드가 포맷팅 도구를 거치거나, 변수 이름이 바뀌거나, 혹은 코드를 정리하기 위해 다른 인공지능 모델에 의해 재작성되는 시나리오를 시뮬레이션했다. 이러한 테스트에서 전통적인 텍스트 기반 워터마킹 방식은 거의 완전히 실패했다. 코드가 포맷팅되었을 때 텍스트 기반 서명은 파괴되었고, 탐지율은 깨끗한 코드에서의 아주 작은 일부로 떨어졌다. 반면, 새로운 구조적 접근 방식은 포맷팅 후에도 거의 99%의 탐지율을 유지했다. 코드가 변수 이름 변경의 대상이 되었을 때도 구조적 방식은 거의 모든 경우에서 워터마크를 탐지해 낸 반면, 기존의 구조적 방식들은 어려움을 겪었다. 심지어 두 번째 인공지능이 코드를 의역하고 재작성하는 기술, 즉 방어하기 매우 어려운 기술이 사용되었을 때도, 새로운 프레임워크는 84% 이상의 탐지율을 유지했다. 이러한 회복력은 시스템이 코드 전반에 걸쳐 서명의 많은 복사본을 심어두기 때문이다. 재작성 과정에서 일부 표식이 파괴되더라도, 출처를 증명하기에 충분한 양이 남아 있게 된다.
연구 또한 이러한 변화가 코드를 망가뜨리거나 속도를 늦출 수 있다는 우려를 다루었다. 연구진은 적용된 모든 변환이 프로그램의 정확한 출력을 보존하며 속도나 메모리 사용량을 변경하지 않음을 확인했다. 코드는 오류 없이 완벽하게 컴파일되고 실행되었다. 이는 AI가 작성 과정 중에 편향을 주어 때때로 오류나 유효하지 않은 코드를 유발할 수 있는 다른 방식들과는 결정적인 차이점이다. 완성된 코드에 작업하고 수학적으로 안전한 교체만을 수행함으로써, 이 프레임워크는 소프트웨어가 완전히 기능하도록 보장한다. 탐지 과정 자체도 효율적이며, 대량의 코드를 검증하기 위해 빠르게 실행될 수 있는 통계적 테스트에 의존한다.
이 연구의 함의는 단순한 저작권 보호를 넘어선다. 인공지능이 소프트웨어 공급망에 더욱 통합됨에 따라, 코드의 출처를 검증하는 능력은 보안의 문제가 된다. 만약 어떤 코드에 AI가 도입한 숨겨진 취약점이 포함되어 있다면, 문제를 해결하기 위해 그 출처를 아는 것이 필수적이다. 이 프레임워크는 그 출처를 추적할 수 있는 방법을 제공하여, 미션 크리티컬한 소프트웨어를 검증하고 신뢰할 수 있도록 보장한다. 연구진은 이 방법이 수천 개의 생성된 스크립트 데이터셋 전체에서 작동함을 입증하여, 확장 가능하며 실무에 적용될 준비가 되었음을 보여주었다. 비록 이 연구는 파이썬(Python) 코드를 대상으로 수행되었으나, 구조적 불변성의 원리는 많은 프로그래밍 언어에 적용될 수 있어 미래의 디지털 도구를 보호하기 위한 넓은 경로를 제시한다.
이러한 결과는 인공지능 시대에 지적 재산을 보호하는 방식의 근본적인 변화를 시사한다. 워터마크를 취약한 텍스트의 표면에서 견고한 논리의 골격으로 옮김으로써, 연구진은 지우기 어렵고 검증하기 쉬운 시스템을 만들어냈다. 결과는 이 접근 방식이 단순히 이론적인 가능성이 아니라, 현대 소프트웨어 개발의 특징인 공격적인 편집과 재작성을 견뎌낼 수 있는 실질적인 해결책임을 보여준다. 인간과 기계 코드 사이의 경계가 계속해서 모호해짐에 따라, 이 구조적 워터마킹은 우리가 구축하는 소프트웨어에 대한 투명성과 책임성을 유지할 수 있는 신뢰할 수 있는 방법을 제공한다. 연구는 프로그램의 논리 자체에 영구적이고 깨지지 않는 서명을 심는 것이 가능하며, 이를 통해 표면이 아무리 변하더라도 코드의 진정한 출처를 가시적으로 유지할 수 있음을 확인시켜 준다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.