← 最新论文
💻 computer science

PromptMark: A Prompt-Guided Iterative-Feedback Framework for Source Code Watermarking

PromptMark 是一个黑盒、提示词引导的框架,它通过结构化的输入指令和迭代反馈,将可检测的水印嵌入到 AI 生成的源代码中,在不损害代码功能或不需要访问模型内部参数的情况下,实现了强大的归因能力。

原作者: Istiaq Ahmed Fahad, Mridha Md. Nafis Fuad, Kazi Sakib

发布于 2026-06-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Istiaq Ahmed Fahad, Mridha Md. Nafis Fuad, Kazi Sakib

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你是一名面包师,雇佣了一位非常有才华但隐形的机器人厨师,每天烘焙成千上万个面包。你想知道哪一个面包是由你的机器人制作的,哪一个是人类竞争对手制作的,但机器人不会留下签名,而且面包外观看起来完全一样。

这就是 PromptMark 所解决的问题,只不过这里不是面包,而是由人工智能(AI)编写的计算机代码

以下是该论文如何通过简单的概念来解释其解决方案的:

1. 问题所在:“黑盒”厨师

在现实世界中,大多数开发者并不拥有他们使用的 AI 模型;他们是通过“黑盒”服务租用这些模型(就像一家你看不到厨房的餐厅)。

  • 挑战: 你无法窥视机器人的大脑来改变它的思考方式(这被称为“白盒”访问)。你只能给它一个配方(提示词/prompt),然后等待成品(代码)。
  • 风险: 如果 AI 编写了出错或窃取信用的代码,很难证明那是 AI 写的。此外,如果你试图强迫 AI 以一种奇怪的方式编写代码来做标记,代码可能会停止工作(就像机器人试图用锤子来烤面包一样)。

2. 解决方案:“绿名单”配方

研究人员创建了一种名为 PromptMark 的方法。他们并没有试图破解机器人的大脑,而只是改变了给出的指令。

这就像是给机器人厨师一个特殊的规则:“对于你发明的每一个新食材名称,你必须以这个特定‘绿名单’(例如 A、B 或 C)中的一个字母开头。”

  • 绿名单: 这是一个根据秘密密钥选定的字母秘密列表(例如 A、B、C)。
  • 红名单: 这是告诉机器人要避免使用的起始字母。
  • 诀窍: 机器人会非常严格地遵守这些规则,以至于它开始用“绿字母”来命名变量(例如 apple_countbanana_loop)的频率远高于人类自然产生的频率。

3. “迭代反馈”循环:“品尝测试”

有时,机器人可能会忘记规则,或者因为过于努力遵循规则而导致代码无法运行。为了修复这个问题,PromptMark 使用了一个反馈循环

  1. 第一轮: 机器人编写代码。
  2. 检查: 人类(或另一台计算机)检查两件事:
    • 代码是否真的能运行?(面包是否发酵成功了?)
    • 机器人是否足够频繁地遵循了“绿名单”规则?(是否有足够的 A、B、C 名称?)
  3. 反馈: 如果代码出错了,机器人会被告知:“修复逻辑。”如果代码可以运行但“绿名单”规则不够强,机器人会被告知:“做得很好,但下次请多用一些 'A' 开头的名字。”
  4. 第二轮: 机器人根据新指令再次尝试。

它会一直持续进行,直到代码完美无瑕且水印足够强。

4. 检测:“统计侦探”

你如何知道一段代码是否由 AI 制作?你不需要看到秘密密钥。你只需要观察变量名。

  • 自然代码: 人类命名事物是随机的。如果你观察 100 个变量,可能 10 个以 'A' 开头,10 个以 'B' 开头,等等。这是一个平衡的混合。
  • 带水印的代码: 因为 AI 被迫使用了“绿名单”,你会看到一种奇怪的模式。也许 60% 的名称都以 'A'、'B' 或 'C' 开头。
  • 测试: 一个统计测试(类似于数学检测器)会计算这些字母。如果这种模式强到不可能是巧合,它就会大喊:“这是由 AI 编写的!”

5. 为什么它很特别

论文声称该方法之所以特别,有三个原因:

  • 它是隐形的: 代码看起来仍然正常且运行完美。“水印”只是变量名中一种微妙的模式,就像歌曲歌词中隐藏的信息,只有当你知道这个模式时才会注意到。
  • 它适用于黑盒: 你不需要拥有 AI 或看到其内部代码。你只需像普通用户一样与它交流。
  • 它是安全的: “绿名单”是使用秘密密钥(类似于密码)生成的。只有拥有该密钥的人才知道要寻找哪些字母,这使得他人很难伪造水印。

结果

研究人员在两个著名的编程数据集(MBPP 和 HumanEval)上测试了两种不同的 AI 模型(Gemini 和 Claude)。

  • 成功率: 该方法在不破坏代码的情况下,成功为代码打上了约 90% 到 98% 的标记。
  • 质量: 代码的质量与没有水印的代码一样好。

局限性(论文中承认的部分)

  • 重命名攻击: 如果有人拿走了带水印的代码,并手动将所有变量名更改为其他名称,水印就会消失。论文指出,虽然该方法很出色,但它并非魔法;一个有决心的人可以通过重写代码来抹除信号。
  • 语言特定性: 该研究是在 Python 代码上进行的。论文警告说,具有不同命名规则的语言可能会表现得不同。

简而言之,PromptMark 是向 AI 厨师低声传递一条特殊指令:“用这些特定的字母来命名你的食材,” 从而让你稍后能够通过数学手段证明那道菜是由 AI 制作的,且不会破坏食物的味道。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →