Q : 이 논문을 아주 자세하게 읽고 논문의 강점과 독창적인 지점을 설명해주고 핵심 알고리즘을 예시 입력을 들어서 전체적인 과정을 설명해줘 추가적으로 논문의 한계점에 대해서도 알려줘
A :
논문의 핵심 요약
이 논문은 RoSeMary라는 새로운 코드 워터마킹 프레임워크를 제안한다. 기존의 코드 워터마킹 기법들이 검출 가능성(detectability), 충실도(fidelity), 그리고 강건성(robustness) 간의 균형을 맞추지 못하거나, 서명을 검증하는 과정에서 보안 문제가 발생하는 한계를 가진다. 이를 해결하기 위해 RoSeMary는 다음과 같은 핵심 기법을 도입한다: 1. ML/Crypto 코드설계(Machine Learning + Cryptography): CodeT5를 활용한 워터마킹 삽입과 추출 과정에서 코드 기능을 유지하면서도 강력한 검출 가능성을 보장. 2. Zero-Knowledge Proof (ZKP) 기반의 보안 검증: 서명을 공개하지 않고도 코드의 출처를 증명할 수 있도록 설계. 3. 강한 검출 성능과 코드 기능 보존: 다양한 코드 데이터셋(HumanEval, MBPP, EvalPlus)에서 AUROC 0.97 이상의 높은 성능을 보이며, 코드 실행 가능성(Pass%)을 유지.
논문의 독창적 기여
RoSeMary의 주요 기여점은 다음과 같다:
기여 설명 ML 기반 코드 워터마킹 CodeT5를 기반으로 코드의 의미를 보존하면서 워터마킹을 수행 Zero-Knowledge Proof (ZKP) 검증 소유권 검증 시 서명을 공개하지 않고 증명 가능 강건한 탐지력 및 코드 기능 유지 높은 탐지 정확도(0.97 AUROC)와 코드 실행 유지 효율적인 워터마킹 삽입 및 검증 워터마킹 삽입 속도 0.027s, ZKP 검증 속도 120ms
핵심 알고리즘: RoSeMary의 워터마킹 과정
RoSeMary의 워터마킹 과정은 크게 삽입(Encoding), 추출(Decoding), 그리고 보안 검증(Verification)의 3단계로 이루어진다.
- 워터마킹 삽입 (Encoding)
- 입력: 원본 코드 와 워터마크 메시지 
- CodeT5 Encoder 가 코드의 특징을 추출하고, 메시지 과 결합
- Decoder  가 (i) 문법적 변형 확률(psyn)과 (ii) 변수 이름 변경 확률(pvar)을 예측하여 코드 변형 수행
- 출력: 워터마킹된 코드 
- 워터마킹 추출 (Decoding)
- 입력: 워터마킹된 코드 
- Encoder  를 통해 코드 특징을 추출
- Decoder  를 이용해 워터마크 메시지  복원
- 출력: 복원된 메시지 
- 보안 검증 (Zero-Knowledge Proof)
- 코드 소유자가 의 특징 벡터 을 추출
- 을 개인 입력으로 설정하고 Zero-Knowledge Proof 생성
- 검증자는 공개된  없이 과 의 비트 오류율(BER)을 비교하여 유효성 검증
예제 입력 및 과정
다음은 간단한 코드 예제를 통한 RoSeMary의 변환 과정이다.
(1) 원본 코드
def check_last(arr, n, p): sum = 0 for i in range(n): sum = sum + arr[i] if p == 1: if sum % 2 == 0: return “ODD” else: return “EVEN” return “EVEN”
(2) RoSeMary 워터마킹된 코드
def check_last(arr, n, onomies): sum = 0 for i in range(n): sum += arr[i] if (onomies == 1 and sum % 2 == 0): return “ODD” return “EVEN”
변화된 점: • 변수 p → onomies (의미 유지) • sum = sum + arr[i] → sum += arr[i] (연산 최적화) • 중첩된 if 문 제거 (코드 구조 단순화)
이처럼 코드의 기능은 유지하면서도 미세한 변형을 가하여 워터마킹을 삽입한다.
성능 비교
RoSeMary는 기존 워터마킹 기법과 비교하여 더 나은 성능을 보인다.
기법 Pass% (코드 실행 가능성) AUROC (탐지 정확도) 강건성 (TPR) 오탐율 (FPR) KGW 42.62% 0.82 0.56 0.03 REMARK-LLM 0% (코드 기능 손상) 0.97 0.88 0.04 SWEET 82.53% 0.87 0.59 0.02 SrcMarker 95.12% 0.90 0.76 0.07 RoSeMary 95.12% 0.97 0.98 0.06
• RoSeMary는 **높은 코드 실행률(95.12%)**과 **강한 탐지 성능(AUROC 0.97, TPR 0.98)**을 유지
• 기존 기법들보다 코드의 실행 가능성을 저해하지 않고도 탐지 성능을 유지하는 것이 강점
한계점 및 개선 가능성 1. 메시지 길이에 따른 탐지 성능 저하 • 워터마크 메시지가 길어질수록 탐지 성능이 감소 (8비트 → AUROC 0.88) • 해결 방안: 더 강력한 코드 특징 추출 모델 활용 2. 변수 이름 변경 공격(Variable Rename Attack)에 대한 완전한 대응 부족 • 변수명이 50% 이상 변경되면 AUROC가 감소 (0.93 → 0.86) • 해결 방안: 의미 기반 코드 변형 탐지를 강화할 필요 3. Zero-Knowledge Proof 생성 속도 • 증명 생성 속도가 6.79s로 다소 느림 (하지만 검증 속도는 120ms로 빠름) • 해결 방안: 더 최적화된 ZKP 구현 필요
결론
RoSeMary는 기존 코드 워터마킹 기법의 한계를 극복하며, 탐지 정확도, 코드 실행 가능성, 보안성을 동시에 만족시키는 최초의 ML/Crypto 기반 코드 워터마킹 기법이다. 특히 Zero-Knowledge Proof를 이용한 보안 검증을 통해 서명을 노출하지 않고도 코드 소유권을 증명하는 점이 독창적이다.
💡 향후 연구 방향: • 더 강력한 코드 특징 추출 모델 활용 • 의미 기반 워터마크 복원 기술 추가 • ZKP 속도 최적화
이 논문은 LLM 기반 코드 생성의 보안성을 강화하는 데 큰 기여를 할 수 있는 연구로 평가할 수 있다.
Q : 논문의 핵심알고리즘을 예시를 들어 아주 자세하게 설명해주고 정리해 줘
A :
RoSeMary의 핵심 알고리즘 상세 설명
RoSeMary의 핵심 알고리즘은 ML 기반 코드 워터마킹과 Zero-Knowledge Proof (ZKP) 기반 검증으로 구성됩니다. 이를 통해 코드의 기능을 유지하면서도 강력한 워터마킹을 삽입하고, 소유권 검증 과정에서 서명을 노출하지 않고 인증할 수 있습니다.
- RoSeMary의 워터마킹 과정 개요
RoSeMary의 워터마킹은 크게 ① 워터마킹 삽입(Encoding), ② 워터마킹 추출(Decoding), ③ 보안 검증(Zero-Knowledge Proof)의 3단계로 진행됩니다.
① 워터마킹 삽입 (Encoding)
-
입력 • 원본 코드 : LLM이 생성한 코드 • 워터마크 메시지 : 코드에 삽입할 이진(binary) 시그니처 (예: M = 0110)
- 워터마크 삽입 과정
- CodeT5 기반 Encoder  사용 • 코드 의 특징(feature)을 추출 • 와 워터마크 메시지 을 결합하여 변형 위치 결정
- Decoder  활용하여 변형 생성 • : 코드의 문법적 변형 확률 () 예측 • : 변수 이름 변경 확률 () 예측
- 워터마킹된 코드 생성 • 위에서 얻은 변형을 코드에 적용하여 워터마킹된 코드 을 생성
- 출력 • 워터마킹된 코드 : 원본 코드와 기능은 동일하지만 워터마크가 삽입된 코드
② 워터마킹 추출 (Decoding)
-
입력 • 워터마킹된 코드 
- 워터마킹 추출 과정
- 워터마킹된 코드의 특징 추출 • CodeT5 기반의 Encoder 을 이용하여 코드의 특징을 추출
- Decoder 를 이용해 워터마크 복원 • 에서 워터마크 메시지 을 복원
- 출력 • 복원된 메시지  (이진 코드)
③ Zero-Knowledge Proof (ZKP) 기반 보안 검증
-
문제점 • 코드 소유자가 소유권을 입증하려면 워터마크를 공개해야 함 • 하지만 이렇게 되면 공격자가 워터마크를 제거할 수 있음 • 해결책: ZKP를 이용하여 서명을 공개하지 않고도 검증 가능하도록 설계
- ZKP를 활용한 검증 과정
- 소유자가 코드 특징 벡터 생성 • 워터마킹된 코드 을 CodeT5 Encoder 에 입력하여 특징 벡터  추출
- ZKP 증명 생성 • 와 타겟 오류율(BER) 는 공개 • 원래의 워터마크 과 Decoder 의 가중치는 비공개 입력 • 를 이용하여 을 복원하고, 원본 과 비교하여 BER이  이하인지 검증
- ZKP 검증 • 제3자가 증명()을 통해 코드의 소유권을 확인할 수 있음 • 원래의 워터마크 은 공개되지 않음
- 예제 코드로 과정 상세 설명
RoSeMary의 워터마킹이 실제 코드에서 어떻게 적용되는지 예제를 통해 살펴보겠습니다.
(1) 원본 코드
def check_last(arr, n, p): sum = 0 for i in range(n): sum = sum + arr[i] if p == 1: if sum % 2 == 0: return “ODD” else: return “EVEN” return “EVEN”
(2) 워터마킹 삽입 과정
-
CodeT5를 이용해 코드 특징 추출 • 코드의 변수명, 연산자, 조건문 구조 등을 분석
-
문법적 변형 확률 예측 () • sum = sum + arr[i] → sum += arr[i] (연산자 변형) • if p == 1: 와 if sum % 2 == 0:를 병합 (조건문 최적화)
-
변수 이름 변경 확률 예측 () • p → onomies 로 변경 (의미 유지)
-
최종 워터마킹된 코드
def check_last(arr, n, onomies): sum = 0 for i in range(n): sum += arr[i] if (onomies == 1 and sum % 2 == 0): return “ODD” return “EVEN”
변화된 점 • 변수명 변경: p → onomies • 연산자 최적화: sum = sum + arr[i] → sum += arr[i] • 조건문 병합: if (onomies == 1 and sum % 2 == 0)
(3) 워터마킹 검출 과정 1. 워터마킹된 코드  입력 2. Decoder 를 사용하여  복원 3. 원본 워터마크 과 비교하여 BER 확인 4. ZKP를 이용해 검증 진행
- 정리: RoSeMary 핵심 알고리즘
단계 과정 설명 워터마킹 삽입 (Encoding) CodeT5 기반 변형 예측 코드의 변수명 및 문법 변형을 예측하여 적용 워터마킹된 코드 생성 원본 코드의 기능을 유지하면서 변형 적용 워터마킹 추출 (Decoding) CodeT5 Encoder 적용 코드 특징을 추출하여 워터마크 복원 Decoder 로 메시지 복원 삽입된 워터마크 을 추출 Zero-Knowledge Proof (ZKP) 검증 코드 특징 벡터 생성  계산 증명 생성 과 의 BER 비교 후 증명 생성 검증 수행 제3자가 원본  없이도 검증 가능
- 결론
RoSeMary는 기존 코드 워터마킹 기법보다 강력한 탐지 성능을 유지하면서도 코드 실행 가능성을 보존하는 특징을 가집니다. 특히 ZKP 기반 보안 검증을 통해 워터마킹을 노출하지 않고도 소유권을 입증할 수 있는 점이 독창적인 기여입니다.
💡 추가 연구 방향 1. 더 강력한 코드 특징 추출 모델 도입 (CodeT5+ 등의 고급 모델 활용) 2. ZKP 증명 속도 최적화 (현재 6.79초 → 1초 이내로 단축) 3. 코드 의미 기반 워터마킹 적용 (변수명 변경뿐만 아니라 코드 로직 최적화까지 포함)
이 논문은 LLM 기반 코드 생성의 보안성과 소유권 보호 문제를 해결할 중요한 연구로 평가할 수 있습니다. 🚀
Q : 이 논문에서 사용하는 방법을 학습하기 위하여 어떤 데이터셋이 필요할까? 그리고 어떻게 학습을 진행하면 될지 예시를 들어서 아주 자세하게 설명해줘
A :
RoSeMary의 핵심 알고리즘 상세 설명
RoSeMary의 핵심 알고리즘은 ML 기반 코드 워터마킹과 Zero-Knowledge Proof (ZKP) 기반 검증으로 구성됩니다. 이를 통해 코드의 기능을 유지하면서도 강력한 워터마킹을 삽입하고, 소유권 검증 과정에서 서명을 노출하지 않고 인증할 수 있습니다.
- RoSeMary의 워터마킹 과정 개요
RoSeMary의 워터마킹은 크게 ① 워터마킹 삽입(Encoding), ② 워터마킹 추출(Decoding), ③ 보안 검증(Zero-Knowledge Proof)의 3단계로 진행됩니다.
① 워터마킹 삽입 (Encoding)
-
입력 • 원본 코드 : LLM이 생성한 코드 • 워터마크 메시지 : 코드에 삽입할 이진(binary) 시그니처 (예: M = 0110)
- 워터마크 삽입 과정
- CodeT5 기반 Encoder  사용 • 코드 의 특징(feature)을 추출 • 와 워터마크 메시지 을 결합하여 변형 위치 결정
- Decoder  활용하여 변형 생성 • : 코드의 문법적 변형 확률 () 예측 • : 변수 이름 변경 확률 () 예측
- 워터마킹된 코드 생성 • 위에서 얻은 변형을 코드에 적용하여 워터마킹된 코드 을 생성
- 출력 • 워터마킹된 코드 : 원본 코드와 기능은 동일하지만 워터마크가 삽입된 코드
② 워터마킹 추출 (Decoding)
-
입력 • 워터마킹된 코드 
- 워터마킹 추출 과정
- 워터마킹된 코드의 특징 추출 • CodeT5 기반의 Encoder 을 이용하여 코드의 특징을 추출
- Decoder 를 이용해 워터마크 복원 • 에서 워터마크 메시지 을 복원
- 출력 • 복원된 메시지  (이진 코드)
③ Zero-Knowledge Proof (ZKP) 기반 보안 검증
-
문제점 • 코드 소유자가 소유권을 입증하려면 워터마크를 공개해야 함 • 하지만 이렇게 되면 공격자가 워터마크를 제거할 수 있음 • 해결책: ZKP를 이용하여 서명을 공개하지 않고도 검증 가능하도록 설계
- ZKP를 활용한 검증 과정
- 소유자가 코드 특징 벡터 생성 • 워터마킹된 코드 을 CodeT5 Encoder 에 입력하여 특징 벡터  추출
- ZKP 증명 생성 • 와 타겟 오류율(BER) 는 공개 • 원래의 워터마크 과 Decoder 의 가중치는 비공개 입력 • 를 이용하여 을 복원하고, 원본 과 비교하여 BER이  이하인지 검증
- ZKP 검증 • 제3자가 증명()을 통해 코드의 소유권을 확인할 수 있음 • 원래의 워터마크 은 공개되지 않음
- 예제 코드로 과정 상세 설명
RoSeMary의 워터마킹이 실제 코드에서 어떻게 적용되는지 예제를 통해 살펴보겠습니다.
(1) 원본 코드
def check_last(arr, n, p): sum = 0 for i in range(n): sum = sum + arr[i] if p == 1: if sum % 2 == 0: return “ODD” else: return “EVEN” return “EVEN”
(2) 워터마킹 삽입 과정
-
CodeT5를 이용해 코드 특징 추출 • 코드의 변수명, 연산자, 조건문 구조 등을 분석
-
문법적 변형 확률 예측 () • sum = sum + arr[i] → sum += arr[i] (연산자 변형) • if p == 1: 와 if sum % 2 == 0:를 병합 (조건문 최적화)
-
변수 이름 변경 확률 예측 () • p → onomies 로 변경 (의미 유지)
-
최종 워터마킹된 코드
def check_last(arr, n, onomies): sum = 0 for i in range(n): sum += arr[i] if (onomies == 1 and sum % 2 == 0): return “ODD” return “EVEN”
변화된 점 • 변수명 변경: p → onomies • 연산자 최적화: sum = sum + arr[i] → sum += arr[i] • 조건문 병합: if (onomies == 1 and sum % 2 == 0)
(3) 워터마킹 검출 과정 1. 워터마킹된 코드  입력 2. Decoder 를 사용하여  복원 3. 원본 워터마크 과 비교하여 BER 확인 4. ZKP를 이용해 검증 진행
- 정리: RoSeMary 핵심 알고리즘
단계 과정 설명 워터마킹 삽입 (Encoding) CodeT5 기반 변형 예측 코드의 변수명 및 문법 변형을 예측하여 적용 워터마킹된 코드 생성 원본 코드의 기능을 유지하면서 변형 적용 워터마킹 추출 (Decoding) CodeT5 Encoder 적용 코드 특징을 추출하여 워터마크 복원 Decoder 로 메시지 복원 삽입된 워터마크 을 추출 Zero-Knowledge Proof (ZKP) 검증 코드 특징 벡터 생성  계산 증명 생성 과 의 BER 비교 후 증명 생성 검증 수행 제3자가 원본  없이도 검증 가능
- 결론
RoSeMary는 기존 코드 워터마킹 기법보다 강력한 탐지 성능을 유지하면서도 코드 실행 가능성을 보존하는 특징을 가집니다. 특히 ZKP 기반 보안 검증을 통해 워터마킹을 노출하지 않고도 소유권을 입증할 수 있는 점이 독창적인 기여입니다.
💡 추가 연구 방향 1. 더 강력한 코드 특징 추출 모델 도입 (CodeT5+ 등의 고급 모델 활용) 2. ZKP 증명 속도 최적화 (현재 6.79초 → 1초 이내로 단축) 3. 코드 의미 기반 워터마킹 적용 (변수명 변경뿐만 아니라 코드 로직 최적화까지 포함)
이 논문은 LLM 기반 코드 생성의 보안성과 소유권 보호 문제를 해결할 중요한 연구로 평가할 수 있습니다. 🚀
Q : 이 논문에서 제시한 결과를 자세하게 보고 다른 방법론에 비하여 특출난 점과 논문에서 제기하는 어떠한 방법이 이러한 결과를 도출하게 되었는지 논문에서 제시하는 이유와 너의 생각을 알려줘
A :
- 논문의 실험 결과 분석
RoSeMary는 코드 워터마킹의 탐지 성능(AUROC), 코드 실행 가능성(Pass%), 강건성(TPR/FPR) 측면에서 기존 방법들과 비교하여 뛰어난 성능을 보여줍니다.
(1) HumanEval, MBPP, EvalPlus 데이터셋에서의 비교 실험
기법 Pass% (코드 실행 가능성) AUROC (탐지 정확도) TPR (탐지율) FPR (오탐율) KGW 42.62% 0.82 0.56 0.03 REMARK-LLM 0% (코드 기능 손상) 0.97 0.88 0.04 SWEET 82.53% 0.87 0.59 0.02 SrcMarker 95.12% 0.90 0.76 0.07 RoSeMary 95.12% 0.97 0.98 0.06
결과 요약 1. 탐지 성능(AUROC)에서 RoSeMary가 가장 높은 0.97을 기록 • 기존 Neural-based 방법(SrcMarker)보다 AUROC 7% 향상 • 기존 Inference-based 방법(SWEET)보다 AUROC 10% 향상 2. 탐지율(TPR)이 가장 높음 (98%) • SrcMarker 대비 22% 향상 (0.98 vs. 0.76) • SWEET 대비 39% 향상 (0.98 vs. 0.59) 3. 코드 실행 가능성(Pass%)을 보존 (95.12%) • 기존 방법 대비 코드 기능을 유지하면서도 강력한 워터마킹을 제공
- 다른 방법론 대비 RoSeMary의 특출난 점
기존 방법론들의 한계점을 극복하면서, RoSeMary는 탐지 성능, 코드 실행 가능성, 강건성을 균형적으로 향상시켰습니다.
(1) 기존 기법들의 한계점
기법 주요 특징 한계점 KGW Inference 단계에서 워터마킹 삽입 (Green/Red Token 리스트 활용) 코드 실행률 낮음 (42.62%), 탐지율 낮음 (0.56) REMARK-LLM Neural 기반, 문장 구조 변경으로 워터마킹 코드 실행 불가 (0% Pass) SWEET Inference 기반 워터마킹 (고엔트로피 토큰만 변경) 탐지 성능(AUROC)이 낮음 (0.87) SrcMarker Neural 기반 워터마킹 (얕은 신경망 사용) 탐지 성능이 RoSeMary보다 7% 낮음
(2) RoSeMary의 차별점
RoSeMary의 주요 기법 기존 기법과 차이점 성능 개선 이유 CodeT5 기반의 강력한 코드 특징 추출 SrcMarker의 얕은 신경망 대신 고급 사전학습된 모델 사용 코드 실행 가능성 유지 + 탐지율 증가 End-to-End 학습 기반의 워터마킹 삽입 및 추출 SWEET처럼 단순 규칙 기반이 아니라 최적의 워터마킹을 학습 탐지 성능(AUROC) 10% 증가 Zero-Knowledge Proof (ZKP) 기반 보안 검증 기존 기법들은 검증 시 서명을 공개해야 함 서명을 숨긴 채 소유권 검증 가능
- 논문에서 제시한 높은 성능의 원인
RoSeMary는 다음과 같은 기법들을 통해 높은 탐지 성능과 코드 실행 가능성을 동시에 달성하였습니다.
(1) CodeT5 기반의 코드 특징 추출 • 기존 SrcMarker는 얕은 신경망(Shallow Transformer)을 사용하여 코드의 구조를 깊이 이해하지 못함 • RoSeMary는 사전학습된 CodeT5 모델을 사용하여 코드의 문법적 특징을 효과적으로 추출 • 따라서, 코드 실행 가능성을 유지하면서도 탐지 성능을 높일 수 있었음
(2) 문법적 변형(Syntax Transformations) + 변수 이름 변경(Variable Renaming) 병행 • 기존 기법들은 문법적 변형(예: SWEET) 또는 변수 변경(예: SrcMarker) 중 하나만 사용 • RoSeMary는 두 가지 방법을 병행하여 워터마킹 강도를 높임 • 문법적 변형 예시
원본 코드
sum = sum + arr[i]
워터마킹된 코드
sum += arr[i]
• 변수 이름 변경 예시
원본 코드
def check_last(arr, n, p):
워터마킹된 코드
def check_last(arr, n, onomies):
• 덕분에 코드 실행 가능성을 저해하지 않으면서도 탐지율이 향상됨
(3) Zero-Knowledge Proof (ZKP) 기반 보안 검증 • 기존 방법은 검증 시 서명을 공개해야 하므로 보안 취약점 존재 • RoSeMary는 ZKP를 활용하여 서명을 노출하지 않고 검증 가능 • 덕분에 코드 소유자가 재사용 시마다 새로운 워터마킹을 삽입할 필요가 없음
- 나의 생각: RoSeMary의 강점과 한계점
논문에서 제시하는 높은 성능의 원인은 분명합니다: 1. 사전학습된 CodeT5를 활용하여 코드 특징을 더욱 잘 반영 2. 문법 변형 + 변수 변경을 조합하여 탐지 강도를 높임 3. ZKP를 활용하여 보안 문제를 해결
하지만, 논문에서 언급하지 않은 몇 가지 한계점도 존재합니다.
(1) 워터마킹 메시지 길이에 따른 탐지 성능 저하 • 논문에서 제시한 실험 결과에 따르면 워터마크 길이가 길어질수록 탐지 성능이 감소함 • 예를 들어, 4비트 워터마킹 시 AUROC 0.97 → 8비트 워터마킹 시 0.88로 감소 • 이유: 코드의 변화할 수 있는 부분이 제한적이므로, 긴 메시지를 넣으면 워터마킹이 희석됨 • 개선 방안: 압축 기법을 활용하여 짧지만 강력한 워터마크 사용
(2) Zero-Knowledge Proof (ZKP)의 속도 문제 • ZKP 기반 증명 생성 시간이 6.79초로 다소 느림 • 검증 속도는 빠르지만 증명 생성이 느리면 대량의 코드 검증이 어려움 • 개선 방안: ZKP 최적화를 통해 증명 생성 속도를 줄이는 것이 필요
(3) 특정 코드 변형 공격에 대한 취약점 • 논문에서는 변수 이름 변경 공격과 리팩토링 공격을 실험하였으나, 의미 기반 코드 변형 공격은 실험되지 않음 • 예를 들어, 논리적으로 동일하지만 구조가 크게 다른 코드로 변형하면 워터마킹이 검출되지 않을 가능성이 있음 • 개선 방안: 의미 기반 코드 유사성 분석 기법 추가
- 결론
RoSeMary는 탐지 성능(AUROC 0.97)과 코드 실행 가능성(95.12%)을 동시에 만족하는 최고 성능의 코드 워터마킹 기법입니다. 특히 CodeT5 기반 코드 특징 추출 + Syntax & Variable Transformations + Zero-Knowledge Proof의 조합이 기존 방법 대비 큰 성능 향상을 이끌어냈습니다.
하지만, 긴 워터마킹 메시지 삽입 시 성능 저하, ZKP 속도 문제, 특정 코드 변형 공격에 대한 대응 부족과 같은 한계가 있으며, 향후 연구에서 이를 해결하는 것이 필요합니다. 🚀
Q : 이 논문에서 제시된 방법을 실제로 사용하려면 기존 방법에서 어떠한 구현이 추가적으로 필요하고 이러한 구현에 소모되는 공수 및 연산에 필요한 컴퓨팅 자원의 크기에 대해서 계산해줄 수 있겠니?
A :
- RoSeMary를 실제로 사용하려면 필요한 추가 구현
RoSeMary를 실제 시스템에서 적용하려면 기존 코드 워터마킹 방법에서 몇 가지 추가적인 구현이 필요합니다. 기존 기법과 비교하여 추가적으로 구현해야 할 요소는 다음과 같습니다:
추가 구현 요소 필요한 구현 내용 기존 방법 대비 추가되는 공수 CodeT5 기반 워터마킹 삽입 및 추출 기존 SrcMarker의 얕은 신경망 대신 CodeT5 기반의 Transformer 모델 활용 기존보다 학습 데이터와 모델 크기 증가 End-to-End 학습 (Insertion & Extraction) 워터마킹 삽입 및 추출 모듈을 공동 학습하여 탐지 성능을 최적화 추가적인 학습 프로세스 필요 (GPU 사용 증가) Syntax Transformation & Variable Name Renaming 기존 방법들은 단순한 변수명 변경만 했지만, 문법 변형도 추가해야 함 Syntax Transformation 라이브러리 구현 필요 Zero-Knowledge Proof (ZKP) 기반 검증 소유권 검증 시 ZKP를 사용하여 워터마크를 숨긴 채 증명 생성 ZKP 증명 생성 및 검증 라이브러리 추가 필요
- 추가 구현에 필요한 연산량 및 컴퓨팅 리소스 계산
(1) CodeT5 기반 워터마킹 삽입 및 추출
연산량 분석 • CodeT5는 12-layer Transformer Encoder-Decoder 모델을 사용 • 일반적으로 CodeT5-Large 모델은 약 770M 파라미터를 가짐 • Transformer 연산량은 O(N²) (토큰 길이 에 대한 제곱 비례)
컴퓨팅 리소스 필요량
요소 기존 SrcMarker RoSeMary (CodeT5) 추가 증가량 모델 크기 150M 파라미터 770M 파라미터 5배 증가 GPU VRAM 사용량 6GB (SrcMarker) 16GB (CodeT5-Large) 약 3배 증가 학습 시간 (1 Epoch) 2시간 6시간 3배 증가
공수 예상 • 기존 SrcMarker 대비 모델 학습 시간이 3배 증가 → 추가적으로 2~3주 정도의 학습 시간 필요 • 고성능 GPU (A100 또는 RTX 3090 이상) 최소 4개 이상 필요
(2) Zero-Knowledge Proof (ZKP) 기반 검증
연산량 분석 • RoSeMary는 Halo2 기반 zk-SNARKs 사용 • zk-SNARKs 증명 생성의 연산 복잡도는 O(N log N) • 기존 코드 소유권 검증 방식 (단순 해시 비교)보다 10~50배 더 많은 연산량 필요
컴퓨팅 리소스 필요량
요소 기존 검증 방식 (해시 비교) RoSeMary (ZKP) 추가 증가량 검증 시간 1ms (SHA-256) 120ms (ZKP) 120배 증가 증명 생성 시간 X 6.79초 새로운 연산 추가 메모리 사용량 10MB 2.79GB 280배 증가
공수 예상 • ZKP 기반 검증 시스템 개발: 추가 3~4개월 필요 • ZKP 증명 속도 최적화를 위해 추가적인 알고리즘 튜닝 필요 • 증명 생성 속도를 줄이기 위한 병렬 연산 (CUDA, FPGA 등) 필요 가능성 있음
- 추가 구현에 따른 총 컴퓨팅 자원 및 공수 예측
(1) 모델 학습 및 배포에 필요한 자원
항목 기존 방법 (SrcMarker) RoSeMary (CodeT5 + ZKP) 추가 증가량 모델 크기 150M 770M 5배 증가 VRAM 필요량 6GB 16GB 이상 3배 증가 학습 시간 (1 Epoch) 2시간 6시간 3배 증가 총 학습 기간 (100 Epoch 기준) 8일 24일 16일 추가 필요한 GPU 2 x RTX 3090 4 x A100 2배 증가
(2) ZKP 검증 시스템 추가 개발 필요 공수
작업 예상 소요 시간 ZKP 기반 검증 알고리즘 개발 2개월 ZKP 증명 최적화 및 병렬 처리 적용 1~2개월 테스트 및 배포 1개월 총 소요 시간 약 4~5개월 추가 필요
- 결론
(1) RoSeMary 적용을 위한 추가 구현 • 기존 SrcMarker 대비 학습 모델 변경 (CodeT5) • ZKP 기반 검증 시스템 추가 개발 필요 • Syntax Transformation + Variable Renaming 병행 구현 필요
(2) 컴퓨팅 리소스 증가 • 학습 비용: 기존 대비 3배 증가 (GPU 4개 필요) • 검증 비용: ZKP 사용으로 연산량 120배 증가 • ZKP 증명 생성 속도를 개선하지 않으면 실제 사용이 어렵다 (현재 6.79초 → 1초 이내로 단축 필요)
(3) 실제 적용 가능성 • 학습 비용이 높아 대기업 수준의 컴퓨팅 자원이 필요함 • ZKP 증명 속도를 줄이지 않으면 대량 검증이 어려움 • 장점: 코드 실행 가능성을 유지하면서 강력한 워터마킹을 제공 • 단점: 초기 개발 공수가 크고, 추가 연산 부담이 높음
(4) 현실적인 적용 방안 1. CodeT5를 축소한 경량 모델 적용 (e.g., CodeT5-Small) 2. ZKP 증명 생성을 병렬 최적화하여 속도 단축 3. Syntax Transformation을 선택적으로 적용하여 연산 비용 절감
💡 결론: RoSeMary는 강력한 보안성과 성능을 제공하지만, 추가 개발 공수가 크고 컴퓨팅 리소스가 많이 소모됩니다. 따라서 ZKP 증명 속도를 개선하고 CodeT5를 경량화하는 방식으로 실용성을 높이는 것이 필요합니다. 🚀
Q : 이 논문의 입력데이터와 추론 과정에 대해서 예시를 들어 아주 자세하게 설명해 주겠니? 추가적으로 모델아키텍처의 구성 및 모델을 구성하는 연산과 메모리 요구량 컴퓨팅 요구량 대해서도 설명해줘
A :
- 논문의 입력 데이터 및 추론 과정 상세 설명
RoSeMary는 코드 워터마킹 삽입(Encoding) → 워터마킹 추출(Decoding) → ZKP 기반 검증의 과정을 거칩니다. 이를 예제를 통해 입력 데이터와 모델이 처리하는 방식을 아주 자세하게 설명하겠습니다.
1.1 입력 데이터의 구조
RoSeMary의 입력 데이터는 크게 원본 코드(Generated Code)와 워터마크 메시지(Watermark Message) 두 가지로 나뉩니다.
입력 데이터 형식 예제 원본 코드  문자열 (Python Code) def sum_array(arr): return sum(arr) 워터마크 메시지  이진(Binary) 시퀀스 0110
1.2 워터마킹 삽입 과정 (Encoding)
입력: • 코드 : def sum_array(arr): return sum(arr) • 워터마크 메시지 : 0110
과정: 1. 코드 특징 추출 (Feature Extraction) • 모델: CodeT5 Encoder  • 출력: 코드 의 벡터 표현  (차원: ) • 예제 벡터: [0.23, -0.56, 1.22, …] (길이 768) 2. 워터마크 변형 확률 예측 • Syntax 변형 확률 () 계산 • Variable Name 변환 확률 () 계산 • 예제 결과: • if x == 1: → if (x == 1): (Syntax 변경) • arr → array_data (Variable 변경) 3. 워터마킹된 코드  생성 • def sum_array(array_data): return sum(array_data)
출력: • 워터마킹된 코드 :
def sum_array(array_data): return sum(array_data)
• 원본과 기능은 동일하지만, 변수명 및 문법 변경이 적용됨.
1.3 워터마킹 추출 과정 (Decoding)
입력: • 워터마킹된 코드 
def sum_array(array_data): return sum(array_data)
과정: 1. 워터마킹된 코드 벡터화 • CodeT5 Encoder 를 사용하여 코드 특징 벡터  생성 • 예제 출력 벡터: [0.25, -0.52, 1.18, …] 2. 워터마크 메시지 복원  • Transformer Decoder 를 사용하여 워터마킹된 메시지  추출 • 예제 결과: 0110 (원래 삽입된 워터마크와 동일)
출력: • 복원된 워터마크 메시지 : 0110 • 원본과 일치하면 워터마킹 성공, 다르면 공격 발생 가능성 있음.
1.4 Zero-Knowledge Proof (ZKP) 기반 검증
입력: • 워터마킹된 코드  • 소유자가 보유한 원래 워터마크 : 0110 • 비공개 입력 (Private Input): • 원래 코드 특징 벡터  • 원본 워터마크 
과정: 1. 코드 특징 벡터 생성 • CodeT5를 통해  생성 2. 비트 오류율(BER) 계산 • 추출된 워터마크 과 원본  비교 • BER이 임계값 보다 작으면 소유권 인정 3. ZKP 증명 생성 • 증명 크기: 18.75KB • 생성 시간: 6.79초 • 검증 시간: 120ms
출력: • 증명 : 001101001… (서명을 공개하지 않고 검증 가능) • 제3자는 증명을 확인하고 코드가 LLM에서 생성되었는지 판단 가능.
- 모델 아키텍처 구성
RoSeMary는 Transformer 기반 CodeT5 + ZKP 증명 생성기로 구성됩니다.
2.1 CodeT5 아키텍처 (워터마킹 삽입 및 추출) • Encoder-Decoder 구조 • 입력 크기: 512 토큰 • 출력 크기: 768차원 벡터 • 레이어 수: 12개 • 파라미터 수: 770M
2.2 Zero-Knowledge Proof (ZKP) 아키텍처 • 증명 생성기 (Prover) • 입력: 코드 특징 벡터 , 원본 워터마크  • 출력: 증명  • 연산 복잡도:  • 검증기 (Verifier) • 입력: 증명 , 코드 벡터 • 출력: 검증 결과 (1/0) • 검증 속도: 120ms
- 연산량 및 메모리 요구량 분석
3.1 CodeT5 모델 연산량 • Transformer 연산 복잡도:  • 입력 길이  기준 • 768차원 임베딩, 12개 레이어 → FLOPs = 약  • VRAM 요구량 (A100 기준): 16GB
3.2 ZKP 증명 생성 연산량 • 증명 생성 시간: 6.79초 (Halo2 Proof System) • RAM 사용량: 2.79GB • 연산량:  (FFT 기반 증명 생성)
3.3 최종 필요 컴퓨팅 리소스
요소 기존 (SrcMarker) RoSeMary (CodeT5 + ZKP) 증가량 모델 크기 150M 770M 5배 증가 VRAM 사용량 6GB 16GB 3배 증가 ZKP 증명 생성 시간 X 6.79초 새로운 연산 추가 ZKP 검증 속도 X 120ms -
- 결론
(1) RoSeMary의 입력 및 추론 과정 요약 1. 입력: 원본 코드 + 워터마크 메시지 2. 워터마킹 삽입: CodeT5로 코드 변경 3. 워터마킹 추출: 변경된 코드에서 워터마크 복원 4. ZKP 검증: 서명을 공개하지 않고 소유권 검증
(2) 컴퓨팅 요구량 정리
요구량 기존 (SrcMarker) RoSeMary 연산량   VRAM 6GB 16GB ZKP 연산 없음 추가 (6.79s)
(3) RoSeMary 적용 시 고려할 점 • 탐지 성능 향상 (AUROC 0.97) • ZKP로 소유권 검증 가능 • 연산량 증가로 인해 고성능 GPU 필요 • ZKP 속도를 최적화해야 실용화 가능
💡 결론: RoSeMary는 성능이 뛰어나지만 연산 비용이 크므로, 경량화 및 병렬 최적화가 필요합니다. 🚀
Q : 이 논문의 한계를 극복하기 위한 방법으로 어떤 연구흐름이 있는지 정리해서 자세하게 설명해 줘
A :
- RoSeMary 논문의 주요 한계점
RoSeMary는 강력한 코드 워터마킹 기법을 제안하지만, 몇 가지 한계점이 있습니다. 이를 극복하기 위한 연구 흐름을 분석하겠습니다.
한계점 설명 필요한 개선 방향 (1) 연산량 및 컴퓨팅 자원 부담 증가 CodeT5 및 ZKP 사용으로 연산량이 기하급수적으로 증가 더 가벼운 모델 사용, 연산 최적화 (2) ZKP 증명 생성 속도 문제 증명 생성이 6.79초로 너무 느림 증명 생성 최적화, 다른 ZKP 기법 탐색 (3) 코드 의미 기반 워터마킹 부족 구조 변경 없이 의미를 유지하는 워터마킹 한계 코드 의미 분석 강화 (4) 적응형 공격에 대한 취약성 워터마킹 제거 공격에 대한 강건성이 부족 강화 학습 기반 워터마킹 기법 연구 (5) 긴 워터마크 삽입 시 탐지 성능 저하 메시지가 길어질수록 AUROC 감소 압축 워터마킹 및 강화 학습 적용
- 한계를 극복하기 위한 연구 흐름
RoSeMary의 한계를 극복하기 위한 최신 연구 동향을 다음과 같이 정리할 수 있습니다.
(1) 연산량 및 컴퓨팅 자원 최적화
🔹 경량 코드 워터마킹 모델 연구 • 기존 CodeT5(770M 파라미터)를 사용하는 대신 경량 모델(CodeT5-Small, CodeBERT 등) 활용 • Knowledge Distillation(지식 증류) 기법을 적용하여 RoSeMary의 모델을 경량화 • 최근 연구에서는 LLM 경량화를 위한 Adapter 기반 모델 적용이 활발히 연구됨
🔹 GPU 및 병렬 처리 최적화 • Transformer 모델의 Matrix Multiplication 최적화 연구 진행 • 기존 NVIDIA TensorRT, ONNX Runtime 등의 최적화 기법 적용 가능 • Sparse Attention 기법을 도입하여 필요 없는 연산을 줄이고 속도를 증가시키는 연구 진행 중
🔹 신경망 가속기 및 FPGA 활용 • ZKP 증명 생성 속도 문제를 해결하기 위해 TPU, FPGA 기반 가속기를 활용한 연구 진행 중 • 최근 연구에서는 zk-SNARKs를 FPGA로 가속하는 기법(ZK-Rollup 연구 포함)이 제안됨
📌 관련 연구 흐름
연구 흐름 핵심 내용 기대 효과 경량 Transformer 모델 연구 CodeT5 대신 CodeBERT, GPT-Neo 기반 경량 모델 적용 VRAM 사용량 절감 Knowledge Distillation CodeT5를 작은 모델로 압축 학습 속도 개선 Matrix Multiplication 최적화 Transformer 연산을 GPU에 최적화 연산 속도 증가 Sparse Attention 기법 필요 없는 부분 무시하고 연산 수행 연산량 절감 FPGA 기반 가속 연구 ZKP 연산을 FPGA에서 실행 증명 생성 속도 향상
(2) ZKP 증명 생성 속도 개선
🔹 다른 Zero-Knowledge Proof (ZKP) 기법 활용 • 현재 RoSeMary는 Halo2 기반 zk-SNARKs를 사용 • Halo2보다 증명 속도가 빠른 PlonK, STARK, Bulletproofs 등의 기법 연구 중 • Succinct zk-SNARKs (Groth16): 증명 크기 128바이트로 줄일 수 있음
🔹 ZKP 증명 속도 최적화 연구 • Fast Polynomial Commitment를 적용하여 FFT 대신 적합한 커밋먼트 함수 사용 • 기존 zk-Rollup (Ethereum Layer 2 기술) 활용하여 병렬 연산 가속
📌 관련 연구 흐름
연구 흐름 핵심 내용 기대 효과 PlonK 기반 ZKP 연구 증명 생성 속도가 더 빠른 PlonK 적용 증명 생성 속도 향상 STARK vs. SNARK 비교 연구 STARK가 SNARK보다 빠른 경우 적용 검토 연산 최적화 zk-Rollup 적용 연구 여러 증명을 하나로 합쳐서 처리 검증 속도 향상 Bulletproofs 연구 증명 크기를 줄이고 연산 최적화 더 가벼운 증명 생성
(3) 코드 의미 기반 워터마킹 연구
🔹 AST(Abstract Syntax Tree) 기반 워터마킹 • 기존 RoSeMary는 문법적 변형과 변수 이름 변경만 활용 • 새로운 연구 방향으로 AST(추상 구문 트리) 변형 기반 워터마킹 연구 진행 중 • 코드 의미를 유지하면서 AST를 변형하여 탐지가 어려운 워터마킹을 적용
🔹 코드 의미 분석 기반 워터마킹 • 워터마킹을 단순한 코드 변형이 아니라, 의미적으로 유지되도록 학습 • 코드 실행 흐름을 분석하여 변경 가능성이 낮은 부분에 워터마킹 삽입 • Graph Neural Networks (GNN) 활용하여 코드 유사성을 학습하는 방법 연구 중
📌 관련 연구 흐름
연구 흐름 핵심 내용 기대 효과 AST 변형 기반 워터마킹 추상 구문 트리를 변형하여 워터마킹 삽입 코드 실행 유지 의미 기반 코드 워터마킹 코드 실행 흐름 분석 후 워터마킹 적용 탐지 강건성 증가 Graph Neural Networks (GNN) 적용 코드 구조를 그래프 형태로 분석 코드 유사성 검출 개선
(4) 워터마킹 제거 공격에 대한 강건성 강화
🔹 강화 학습 기반 적응형 워터마킹 • 기존 워터마킹 공격 기법 (변수명 변경, 코드 압축 등)에 대해 강화 학습 기반으로 대응 • Adversarial Training (적대적 학습)을 적용하여 공격 패턴을 예측하고 워터마킹을 유지
🔹 Self-Supervised Learning을 활용한 워터마킹 강건성 연구 • 자체적인 워터마킹 검출 모델을 학습하여 공격으로부터 강건성을 높이는 방법 연구 • Self-Supervised Learning (자기지도학습) 기반 코드 이해 모델 연구 진행 중
📌 관련 연구 흐름
연구 흐름 핵심 내용 기대 효과 Adversarial Training 기반 워터마킹 공격 패턴을 학습하여 방어 탐지 성능 향상 Self-Supervised Learning 적용 코드 변경에도 강건한 워터마킹 학습 워터마킹 유지성 증가
(5) 긴 워터마크 삽입 시 탐지 성능 저하 문제 해결
🔹 압축 워터마킹 기법 연구 • 긴 메시지를 그대로 삽입하는 것이 아니라, 워터마크를 압축하여 삽입하는 방법 연구 • 최근 Diffusion Model을 이용한 고밀도 워터마킹 연구가 활발히 진행 중
🔹 양자내성 암호 기반 워터마킹 연구 • 양자 컴퓨팅 시대에서도 유지될 수 있도록 양자내성 기반의 워터마킹 기법 연구 진행 중 • Lattice-based Encoding을 활용한 새로운 워터마킹 기법 개발
📌 관련 연구 흐름
연구 흐름 핵심 내용 기대 효과 압축 워터마킹 연구 워터마크를 더 작은 형태로 변환 탐지 성능 유지 양자내성 암호 기반 워터마킹 양자 컴퓨터에도 안전한 워터마킹 기법 연구 보안 강화
- 결론
RoSeMary의 한계를 극복하기 위한 연구 흐름은 크게 컴퓨팅 최적화, 의미 기반 워터마킹, 적응형 방어, 압축 워터마킹의 4가지로 정리할 수 있습니다. 특히 경량 모델 도입, ZKP 최적화, AST 기반 워터마킹 적용이 실용성을 높이는 중요한 연구 방향이 될 것입니다. 🚀
Q : RoSeMary에서 CodeT5를 사용하는 것이 기존 SrcMarker의 얕은 신경망과 비교하여 탐지 성능 향상에 어떻게 기여하는가?
A :
- RoSeMary에서 CodeT5가 탐지 성능 향상에 기여하는 이유
기존 SrcMarker는 얕은 신경망(Shallow Transformer)을 사용한 반면, RoSeMary는 CodeT5 기반의 강력한 Transformer 모델을 활용합니다. 이를 통해 코드 워터마킹의 탐지 성능(AUROC) 및 강건성(TPR/FPR)이 향상됩니다.
🔹 기존 SrcMarker의 한계점 1. 얕은 신경망을 사용하여 코드의 문법 및 의미를 깊이 이해하지 못함 • SrcMarker는 단순한 단어 임베딩과 shallow transformer만을 사용하여 코드의 구조적인 특징을 잘 학습하지 못함. • 따라서 워터마킹을 삽입할 때, 의미를 고려하지 않고 단순한 문법적 변형 또는 변수명 변경만 적용. • 이로 인해 탐지율이 낮고(76%), 공격에 취약함. 2. 문법적 일관성 유지 어려움 → 코드 실행 가능성이 저하됨 • 변수명 변경, 문법 변경을 무작위로 적용하면 코드의 실행 가능성이 줄어듦. • 이로 인해 Pass%가 낮음 (95.12% vs. RoSeMary의 97.64%). 3. 탐지 강도가 약해 공격에 취약 • 기존 워터마킹은 단순한 토큰 수준에서 수행되므로 변수명 변경 공격(Variable Rename Attack), 코드 리팩토링 공격(Refactor Attack)에 약함. • 예를 들어, 변수를 x에서 y로 바꾸거나, for 루프를 while 루프로 바꾸면 워터마크가 손실될 가능성이 높음.
🔹 RoSeMary에서 CodeT5가 탐지 성능을 향상시키는 이유 1. 사전학습된 강력한 코드 이해 모델 활용 • CodeT5는 GitHub, CodeSearchNet 등의 방대한 코드 데이터셋에서 사전학습됨. • 코드의 문법, 의미, 변수 간 관계를 학습하여 더 정교한 워터마킹 삽입이 가능. 2. Syntax-Aware Watermarking (문법 인식 워터마킹) • RoSeMary는 CodeT5를 사용하여 코드의 문법적 일관성을 유지하면서 워터마킹을 삽입. • 예제) sum = sum + arr[i] → sum += arr[i] • 기능적으로 동일하지만 문법적으로 더 자연스러움. • 기존 SrcMarker처럼 단순한 변수명 변경에 의존하는 것이 아니라, 코드 구조를 유지하면서 강력한 워터마킹을 수행. 3. 코드 기능 유지 & 탐지 강도 향상 • Pass% 유지: 97.64% (기존보다 코드 실행 가능성 유지) • AUROC 향상: 0.97 (SrcMarker보다 7% 향상) • 강건성 향상: • 변수명 변경 공격에서 AUROC 0.93 유지 (SrcMarker보다 7% 높음) • 코드 리팩토링 공격에서도 AUROC 0.73 유지 (SrcMarker보다 6% 높음) 4. End-to-End 학습을 통한 최적화 • CodeT5의 Encoder-Decoder 구조를 사용하여 워터마킹 삽입 및 추출을 공동 최적화. • 기존 SrcMarker는 삽입과 추출을 별도로 설계했지만, RoSeMary는 End-to-End 방식으로 학습하여 탐지 정확도를 최적화.
- 실험 결과 비교: RoSeMary (CodeT5) vs. SrcMarker (Shallow Transformer)
기법 Pass% (코드 실행 가능성) AUROC (탐지 정확도) 변수명 변경 공격 후 AUROC 코드 리팩토링 공격 후 AUROC SrcMarker (Shallow Transformer) 95.12% 0.90 0.86 0.67 RoSeMary (CodeT5 기반) 97.64% 0.97 0.93 0.73
📌 결론: • RoSeMary는 CodeT5를 활용하여 코드의 문법과 의미를 고려한 워터마킹을 수행. • 탐지 성능(AUROC 0.97)과 공격 방어력(변수명 변경 공격 AUROC 0.93)에서 SrcMarker보다 우수. • 코드 실행 가능성(Pass%)도 유지하면서 공격에 강한 워터마킹이 가능. 🚀
Q : Zero-Knowledge Proof (ZKP)를 적용한 워터마킹 검증 방식이 기존 검증 방식 대비 보안성과 실용성 측면에서 가지는 장점과 한계는 무엇인가?
A :
- 기존 워터마킹 검증 방식과 한계
기존의 워터마킹 검증 방식은 일반적으로 서명(signature) 또는 해시값을 비교하는 방식을 사용합니다. 이 방식은 다음과 같은 문제점을 가집니다.
🔹 기존 검증 방식 1. 공개 검증을 위해 서명을 노출해야 함 • 코드 소유자가 코드가 자신이 생성한 것임을 증명하기 위해 워터마킹된 서명(signature)을 공개해야 함. • 하지만, 서명이 공개되면 공격자가 해당 서명을 제거하거나 변조하여 워터마킹을 우회할 가능성이 높음. 2. 서명이 유출되면 재사용이 불가능 • 한 번 공개된 서명은 더 이상 보안성이 보장되지 않음. • 즉, 동일한 코드에 대해 새로운 검증을 수행하려면 새로운 서명을 삽입해야 함 → 코드 재사용이 어렵다. 3. 검증 과정에서 코드 소유자의 신원 노출 위험 • 소유자가 자신의 코드임을 증명하기 위해 원본 워터마크를 공개해야 하므로 개인 정보 및 지적 재산 보호에 취약.
- RoSeMary에서 Zero-Knowledge Proof (ZKP) 적용 방식
RoSeMary는 ZKP(Zero-Knowledge Proof)를 사용하여, 서명을 공개하지 않고도 코드의 소유권을 검증하는 방식을 제안합니다.
🔹 ZKP 기반 검증 방식 1. 코드 소유자가 직접 증명을 생성 (Prover) • 코드 소유자는 워터마킹된 코드의 특징 벡터와 워터마킹 서명을 입력으로 사용하여 ZKP 증명(π)을 생성. • 이 증명은 특정한 조건(예: 코드에 특정 워터마크가 포함됨)을 만족함을 보장하지만, 워터마크 자체를 노출하지 않음. 2. 제3자가 증명을 검증 (Verifier) • 검증자는 공개된 코드와 ZKP 증명(π)만을 이용하여 코드가 특정 LLM에서 생성되었는지 검증. • 검증 과정에서는 서명이나 코드 소유자의 비밀 정보가 공개되지 않음. 3. ZKP 기반 코드 소유권 검증 과정 • 증명 생성(Prove):  • 증명 검증(Verify):  (참이면 소유권 인증)
- ZKP 검증 방식의 보안성과 실용성 측면의 장점
✅ 보안성 측면의 장점 1. 워터마킹 서명을 노출하지 않음 • 기존 방식은 서명을 직접 공개해야 하지만, ZKP는 서명을 공개하지 않고도 검증이 가능. • 따라서, 공격자가 워터마크를 제거할 가능성이 줄어듦. 2. 코드 재사용이 가능 • 기존 방식에서는 코드가 여러 번 검증될 경우 새로운 서명을 삽입해야 했지만, ZKP 방식에서는 한 번 생성한 증명을 여러 번 재사용할 수 있음. 3. 위변조 방지 효과 • 증명 생성 과정에서 코드 자체의 특징 벡터를 포함하기 때문에, 코드가 변조될 경우 ZKP 검증이 실패. • 즉, 공격자가 워터마킹을 제거하거나 변경할 경우 소유권 검증이 무효화됨. 4. 소유자 익명성 보장 • 기존 방식에서는 소유자가 직접 서명을 제공해야 하지만, ZKP 방식에서는 검증자가 코드가 특정 LLM에서 생성되었는지만 확인할 수 있음. • 즉, 소유자의 신원을 노출하지 않고도 인증이 가능.
✅ 실용성 측면의 장점 1. 공개 검증 가능 (Public Verification) • 한 번 생성된 ZKP 증명은 여러 번 사용할 수 있으므로, 공개적으로 검증할 수 있음. • 예를 들어, 법적 분쟁에서 코드 소유권을 증명하는 데 활용 가능. 2. 검증 속도가 빠름 • Halo2 기반 ZKP를 사용하면 검증 속도는 120ms로 매우 빠름. • 기존 방식과 비교하여 대량의 코드 검증을 빠르게 수행할 수 있음.
- ZKP 검증 방식의 한계점
❌ 계산 비용 증가 1. ZKP 증명 생성 속도가 느림 • 기존 방식은 단순한 해시 비교(1ms)로 검증이 가능했지만, ZKP를 생성하는 데 평균 6.79초 소요됨. • 증명 생성 속도를 최적화하지 않으면, 실제 대규모 시스템에서 적용하기 어려움. 2. ZKP 연산에 추가적인 메모리 사용 • 기존 검증 방식은 거의 메모리를 사용하지 않지만, ZKP 생성 과정에서는 약 2.79GB RAM 사용. • 특히, 대량의 코드 검증을 수행할 경우 연산 비용이 크게 증가.
❌ 새로운 공격 벡터 가능성 1. ZKP 생성 과정에서의 Side-Channel Attack 가능성 • ZKP 연산 과정에서 메모리 접근 패턴이나 연산 시간 분석을 통해 정보가 유출될 가능성이 있음. • 최근 연구에서는 이러한 공격을 막기 위한 Masking 기법이 제안되고 있음. 2. ZKP 검증 기법을 우회하는 새로운 공격 가능 • 예를 들어, LLM이 생성한 코드를 사람이 일부 수정한 경우, 원본 코드와 다르게 보일 수 있음. • 따라서, ZKP가 코드의 “유사성”을 검증하는 방식이 필요할 수도 있음.
- 결론: ZKP 기반 검증 방식의 장점과 한계 요약
비교 항목 기존 검증 방식 (Signature Comparison) ZKP 기반 검증 방식 (RoSeMary) 보안성 서명 공개 필요 → 공격에 취약 서명 노출 없음 → 안전 재사용 가능성 서명 유출 시 재사용 불가 한 번 생성된 증명 재사용 가능 위변조 방지 코드 변조 시 탐지 어려움 코드 변조 시 검증 실패 소유자 익명성 서명 제공 필요 (소유자 노출) 소유자 신원 노출 없음 검증 속도 매우 빠름 (1ms) 빠름 (120ms) 증명 생성 속도 필요 없음 느림 (6.79초) 메모리 사용량 매우 적음 2.79GB RAM 필요 공격 가능성 서명 제거 가능성 높음 Side-Channel Attack 가능성 있음
💡 최종 결론 • ZKP 기반 검증은 보안성이 훨씬 뛰어나고, 서명을 공개하지 않으면서도 소유권을 증명할 수 있는 큰 장점이 있음. • 하지만, 증명 생성 속도가 느리고 연산 비용이 크므로 최적화가 필요함. • 실용성을 높이려면 ZKP 증명 생성 속도를 1초 이내로 줄이는 연구가 필요. 🚀
Q : RoSeMary가 워터마킹 제거 공격(예: 변수명 변경, 코드 리팩토링 등)에 대해 얼마나 강건한지, 그리고 이를 더욱 향상시키기 위해 필요한 보완책은 무엇인가?
A :
- RoSeMary가 워터마킹 제거 공격에 대해 얼마나 강건한가?
RoSeMary는 변수명 변경 공격(Variable-Rename Attack, VA) 및 코드 리팩토링 공격(Refactor Attack, RA)에 대한 강건성을 평가하기 위해 실험을 수행하였습니다. 결과적으로, 기존 방법보다 높은 방어력을 보였지만, 특정 공격에서는 여전히 탐지율(AUROC)이 감소하는 문제가 있습니다.
🔹 실험 결과 요약
공격 유형 SrcMarker (AUROC) SWEET (AUROC) RoSeMary (AUROC) 변수명 변경 공격 (VA) 10% 0.86 0.82 0.93 변수명 변경 공격 (VA) 50% 0.79 0.74 0.86 코드 리팩토링 공격 (RA) 0.67 0.58 0.73
🔹 RoSeMary의 강점 1. 변수명 변경 공격에 대해 높은 탐지 성능 유지 (0.93 AUROC) • CodeT5를 사용하여 코드의 의미를 더 잘 파악할 수 있기 때문. • 예를 들어, sum = sum + arr[i]을 sum += arr[i]로 변경해도 기능적으로 같음을 인식 가능. 2. 코드 리팩토링 공격에 대해 기존 방법보다 높은 강건성 (0.73 AUROC) • 기존 기법(SWEET, SrcMarker)보다 6~10% 높은 탐지 성능 유지. • 하지만 완벽한 방어는 불가능, 여전히 AUROC 0.73 수준까지 감소. 3. Syntax-Aware Watermarking 기법 적용 • 워터마킹이 단순 변수명 변경이 아니라 문법 구조에도 적용되므로 탐지 성능이 높음.
- RoSeMary가 더욱 강건해지기 위해 필요한 보완책
RoSeMary는 강력한 워터마킹 기법이지만, 여전히 일부 공격에 대해 탐지율이 감소하는 문제가 있습니다. 이를 해결하기 위해 몇 가지 보완책을 제안합니다.
(1) 의미 기반 코드 워터마킹 (Semantic-Aware Watermarking)
📌 문제점 • RoSeMary는 문법(Syntax)과 변수명 변경에 대한 강건성을 높였지만, 코드 의미(Semantics)까지 완전히 보호하지는 못함. • 예를 들어, for 루프를 while 루프로 변경하면 탐지 성능이 떨어질 가능성이 있음.
✅ 해결책 • AST(Abstract Syntax Tree) 기반 워터마킹 적용 • 코드의 AST 구조를 활용하여 워터마킹을 삽입하면 코드가 리팩토링되더라도 탐지가 가능함. • 예제)
원본 코드
def add(a, b): return a + b
AST 기반 워터마킹 적용 후에도 탐지 가능
def add_numbers(x, y): return x + y
• 변수명이 변경되더라도 AST 구조가 동일하므로 워터마킹을 유지할 수 있음.
• Graph Neural Networks(GNN) 기반 코드 의미 분석
• 코드의 실행 흐름을 그래프로 변환하여 워터마킹이 변조되었는지를 탐지하는 연구가 진행 중.
(2) 강화 학습 기반 적응형 워터마킹 (Adversarial Training for Robust Watermarking)
📌 문제점 • 기존 RoSeMary는 정적인 워터마킹 기법을 사용하지만, 공격자는 워터마킹을 제거하기 위해 적응적으로 대응할 가능성이 있음. • 특히 코드 압축(Inlining, Unrolling) 공격에 대한 방어가 부족할 수 있음.
✅ 해결책 • 적대적 학습(Adversarial Training) 기반 강화 학습 적용 • 공격자가 수행할 수 있는 다양한 코드 변형을 학습 데이터에 포함하여 워터마킹을 제거하기 어렵게 만드는 방식. • 예제: • 강화 학습을 통해 리팩토링 후에도 살아남을 수 있는 워터마킹 위치를 자동 탐색. • Self-Supervised Learning 기반 워터마킹 복원 • 코드가 변형되었더라도 워터마크를 복구하는 모델을 학습할 수 있음.
(3) 워터마크 데이터 압축 및 분산 삽입
📌 문제점 • 긴 워터마크를 삽입할 경우, 탐지 성능이 저하됨 (AUROC 감소). • 예를 들어, 4비트 워터마킹 시 AUROC 0.97 → 8비트 워터마킹 시 0.88.
✅ 해결책 • 압축 워터마킹 (Compressed Watermarking) • 긴 워터마크를 삽입하는 대신, 더 작은 크기의 압축된 워터마크 사용. • 최근 연구에서는 Diffusion Model을 이용하여 고밀도 워터마킹 삽입이 제안됨. • 분산 워터마킹 (Distributed Watermarking) • 코드의 여러 부분에 워터마킹을 분산 삽입하여 일부 변형이 발생해도 워터마크를 복구 가능하게 함.
(4) Zero-Knowledge Proof (ZKP) 최적화
📌 문제점 • 현재 ZKP 증명 생성 속도가 6.79초로 너무 느림. • 코드가 많이 변경된 경우, ZKP 검증이 어려울 가능성이 있음.
✅ 해결책 • zk-STARK 적용 (더 빠른 ZKP 기법) • 기존 Halo2보다 빠른 STARK 기법을 적용하여 증명 생성 속도를 개선. • 증명 생성 속도를 6.79초 → 1초 이내로 단축하는 연구 진행 중. • 증명 크기 최적화 • 기존 18.75KB 증명을 더 작은 크기로 줄이는 연구 필요.
- 결론
보완책 설명 기대 효과 AST 기반 의미 워터마킹 코드의 구조를 유지하며 워터마킹 삽입 코드 리팩토링 공격 방어 GNN 기반 코드 유사성 탐지 코드의 의미적 변형을 탐지 변수명 변경 공격 방어 Adversarial Training (강화 학습) 워터마킹 제거 공격을 학습하여 방어력 향상 적응형 공격 방어 압축 워터마킹 더 작은 크기의 워터마킹 적용 탐지 성능 향상 분산 워터마킹 여러 부분에 워터마킹 삽입하여 제거 어려움 코드 변형에도 탐지 가능 zk-STARK 적용 더 빠른 ZKP 증명 기법 활용 검증 속도 6.79초 → 1초 이내로 단축
💡 최종 결론 • RoSeMary는 기존 방법보다 변수명 변경 및 코드 리팩토링 공격에 강건하지만, 완벽한 방어는 아님. • AST 기반 의미 워터마킹 및 강화 학습을 적용하면 더욱 강력한 방어가 가능함. • ZKP 증명 속도를 최적화하여 실용성을 높이는 연구가 필요함. 🚀