论文精读|Protecting Intellectual Property of Large Language Model-Based Code Generation APIs via Watermarks

一、先搞懂核心痛点:为什么代码模型这么好偷?

很多人可能疑惑:大模型不是很难训练吗?怎么随便就能被盗版?

这里要区分从零训练模仿攻击(模型窃取)。目前绝大多数商用代码模型,都是基于CodeBERT、CodeT5这类开源基座,用私有数据微调得到的。

攻击者根本不用从零训练,整套窃取流程特别简单:

  1. 批量向目标代码API发送各类自然语言、代码补全请求;

  2. 收集海量「输入prompt-输出代码」配对数据;

  3. 用这批数据微调同款开源基座,直接得到仿制模型。

论文里做了实测,原模型BLEU分数23.2,攻击者复刻的模型能做到22.6,性能几乎没差。更夸张的是,整套攻击的总成本居然不到20美元,几乎没有技术和资金门槛,这也是为什么代码模型侵权乱象一直难以根治。

二、传统水印为什么完全没用?

在ToSyn之前,学界已经有不少LLM水印方案,但套在代码生成场景里,全部失效,核心原因就是代码和自然语言完全是两套逻辑

自然语言水印喜欢靠替换近义词、插入特殊字符做标记,但代码有严格的语法、编译规则,容错率极低:

  • 强行加特殊token、生造字符,代码直接报错,一眼就能被攻击者识别剔除;

  • 通用文本近义词库,在代码场景里几乎用不上,论文实测五万多条代码样本,仅2组词汇能匹配;

  • 需要修改模型权重、干预采样逻辑的软水印,属于白盒方案,商用黑盒API完全没法用。

简单说:旧方案要么破坏代码可用性,要么隐蔽性为零,根本没法落地防护代码模型窃取。

三、ToSyn核心创新:不靠改权重,后置语法等价水印

这是整篇论文最亮眼的地方,也是很多人容易误解的关键点:ToSyn全程不修改大模型任何权重、不干预模型训练和推理逻辑

它的工作模式是外挂式后置处理:模型正常生成原生代码后,ToSyn通过语法树解析,在返回给用户之前,做一轮语义完全无损的等价改写

我用最通俗的例子讲清楚它的水印逻辑,彻底区别于传统显性水印:

传统水印是「苹果→🍎」,改完之后内容变了、格式异常,一眼就能看出来;

ToSyn水印是「换一种完全等价的写法」,比如:

  • 原生代码:text = "ABC".lower().strip()

  • 水印改写后:text = "ABC".strip().lower()

单看这一行,不管是人工还是工具,都看不出任何问题,代码运行结果完全一致。真正的水印,从来不在单条代码的表面改动,而在大批量数据的统计分布偏移

举个直观逻辑:原本模型生成这两种写法的比例是9:1,ToSyn会强制把比例改成3:7。攻击者批量爬取接口数据训练仿制模型后,新模型会自带这个异常的分布特征。后续只要检测可疑模型的输出分布,就能精准判定它是否盗用了原模型的数据。

四、六大水印规则(34条可落地细则)

论文基于Python语法特性,设计了6类完全无损的改写规则,细化出34条可直接落地的转换逻辑,覆盖代码编写的绝大多数场景,实用性拉满。我整理了每一类的核心用途和真实案例,很好理解:

1. BSR 内置结构替换(14条)

利用Python语法糖,替换等价的内置数据结构、格式化写法。

示例:字典初始化两种等价写法互换、print百分号格式化和format格式化互换。

2. CST 代码风格转换(2条)

仅修改编码风格,不改动任何逻辑。

示例:变量驼峰命名和蛇形命名互换、if条件语句括号增删。

3. PS 参数显式补全(2条)

补全函数默认参数,消除省略写法,运行效果无变化。

示例:sorted(arr) 改写为 sorted(arr, reverse=False)

4. LA 库别名替换(2条)

切换第三方库的导入别名,适配开发者常规写法。

示例:numpy.arraynp.array 互相替换。

5. TFR 第三方函数替换(11条)

替换功能完全一致的内置函数、第三方库API。

示例:Python内置abs函数和numpy绝对值函数互换、日志不同级别接口互换。

6. FLR 函数调用重排(2条)

调换无依赖的链式方法调用顺序,结果完全一致。

也就是前面举例的lower和strip顺序调换的核心规则。

另外框架还有一个很巧妙的设计:用户UID专属水印指纹。每个注册用户会被分配唯一ID,对应启用不同的水印规则组合。就算发现侵权模型,不仅能判定被盗,还能精准溯源到具体是哪个恶意用户爬取的数据。

五、检测原理:靠统计检验完成IP确权

水印嵌入是前置后置改写,而侵权检测依靠严谨的统计校验,全程黑盒、不用接触可疑模型权重。

整套检测流程很清晰:

  1. 用服务商私有验证数据集,批量调用可疑模型API,收集大量生成代码;

  2. 统计每类同义词写法的实际分布,通过JSD散度,对比预设的水印偏移分布;

  3. 分布相似度达标、检出水印规则数量超过阈值,即可实锤模型侵权。

论文实验参数下,检测F1分数几乎接近1.0,误判、漏判概率极低,溯源准确率也十分可观。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐