Hotdry.
ai-systems

通过API查询逆向工程黑盒神经网络:Jane Street谜题实践

基于Jane Street黑盒NN谜题,详解利用API查询推断架构、优化恢复权重及无梯度验证预测的工程方法,包括阈值参数与监控清单。

通过 API 查询逆向工程黑盒神经网络:Jane Street 谜题实践

在 AI 系统中,黑盒神经网络(NN)常见于生产部署场景,如 API 服务形式,仅暴露输入 - 输出接口。这类模型架构未知、权重不可见,逆向工程成为关键挑战,用于安全审计、迁移优化或功能复制。Jane Street 发布的 “逆向我们的神经网络” 谜题就是一个典型案例:提供 PyTorch 模型文件(model.pt),模拟黑盒 predict API,输入短字符串输出标量 0 或非零,任务找到使输出为 0 的特定输入(两个小写英文词空格分隔)。尽管提供了权重文件,但谜题强调机制解释性(mechanistic interpretability),通过 “查询” 模型(运行 predict)分析行为。本文聚焦纯 API 场景下逆向策略:推断架构、优化恢复权重、无梯度验证预测,给出可落地参数与清单。

第一步:利用 API 查询推断网络架构

黑盒 NN API 通常返回输出向量或标量(如 Jane Street 的单标量)。通过系统查询,观察模式推断隐藏结构。

核心观点:输入扰动 + 输出统计揭示层级、激活类型与计算逻辑。Jane Street NN 输出几乎恒为 0,暗示最终是精确匹配(如等式检查),非概率分类。

可操作流程与参数

  1. 批量基准查询:生成 10k 随机输入(长度 8-20 ASCII,低写英文词对),查询 API 记录输出分布。阈值:若 > 99% 输出 = 0,疑似 hash-like irreversible 函数。

    • 查询率:1 qps(防限流),总时长 < 3h。
    • 监控:latency>500ms 告警,重试 3 次。
  2. 扰动敏感性分析:固定基线输入,逐 bit/byte 翻转,观察输出变化。

    • 模式 1:输出如 bit-vector(若 API 暴露 penultimate 层,如 16-byte hash),维度暗示 MD5(128bit)。
    • 模式 2:周期性层宽(Jane Street:32x48 层重复),对应 hash rounds。
    • 参数:扰动规模 1-4 字节,采样 1000 次;相关系数 > 0.8 确认逻辑门(ReLU 模拟 AND/OR)。
  3. 架构假设验证:用 numpy 模拟子模块查询。

    • 示例:疑似 MD5,计算标准 MD5 (input),与 API hash 比较 MSE<1e-6 确认。
    • 清单:日志输出直方图、Spearman 秩相关(输入变异 vs 输出)。

Jane Street 案例中,查询 "vegetable dog" 得 0,通过扰动发现输出前层三重复 16-byte,推断 [1,-2,1] 二阶差分等式检查。

第二步:优化恢复权重(无白盒访问)

无梯度下,权重恢复靠查询驱动优化:视线性层为未知矩阵,用输入 - 输出对线性回归或遗传算法拟合。

核心观点:NN 多线性 + ReLU,黑盒下分层 probe:从输出回推,假设浅层线性,迭代精炼。

可落地优化框架(Python 伪码):

import numpy as np
from scipy.optimize import least_squares

def probe_layer(inputs, outputs, in_dim, out_dim):
    # 假设线性层 W*out + b = output
    def residual(params):
        W = params[:in_dim*out_dim].reshape(out_dim, in_dim)
        b = params[-out_dim:]
        return outputs - (inputs @ W.T + b)
    res = least_squares(residual, np.random.randn(in_dim*out_dim + out_dim))
    return res.x  # 恢复W,b
  • 参数配置

    阶段 查询数 输入设计 优化器 收敛阈值
    最终层 5k 正交基 + 噪声 least_squares MSE<1e-4
    中间层 20k 遗传变异(GA) DEAP 库,pop=100 fitness>0.95
    全网 100k 覆盖 hash rounds 逐块 probe KL 散度 < 0.01
  • Jane Street 实践:最终层 48x1 权重可视化为 [1,-2,1] 模板;bias 解码目标 hash:v = bias [16:32] - 0.5,精确提取 128bit 常量(如 0xdeadbeef...)。

    • 风险:ReLU 非凸,用 bound 传播(0-1 范围)剪枝无效神经元,减变量 80%。

监控清单:查询预算 < 100k;过拟合检查(持出集 MSE 翻倍回滚);GPU 模拟本地验证(latency<10ms / 查询)。

第三步:无梯度验证预测与完整逆向

梯度不可用,转 finite difference 或 zeroth-order 优化验证假设模型。

核心观点:扰动梯度逼近确认逻辑;brute-force 预像搜索解谜。

验证方法

  1. Finite Difference:Δout/Δin ≈ ∂out/∂in,阈值 > 0.9 匹配模拟 MD5 梯度。

    • h=1e-3,方向:随机正交 100 维。
  2. 输入搜索:遗传算法 / 字典 brute-force。

    • 空间:英文词表(/usr/share/dict/words,100k 词),pair 组合10^10,但 hash 后过滤。
    • 参数:GA pop=1k,mutation=0.01,gen=1000;hashcat 加速(GPU,10^9 h/s)。
    • Jane Street:词对 brute,找到 "neural plumber"(示例,实际 AI 相关词)使 hash 匹配。
  3. 端到端验证:合成输入测试恢复模型,准确率 > 99.9%。

风险与回滚

  • 限流:代理轮换,qps<0.5。
  • 计算:云 GPU,预算 $10。
  • 失败:缩小至最终层 probe,回滚纯 brute(10^6 查询)。

工程化部署与监控

生产逆向 pipeline:

  • Docker 容器:query_client + optimizer + visualizer(plotly 权重热图)。
  • Prometheus 监控:查询成功率 > 99%、MSE 趋势、预算警报。
  • 回滚策略:若 MSE>1e-2,切换 SAT 求解器(z3,变量 < 50k)。

Jane Street NN 逆向证明:手工整数 NN 模拟电路,黑盒下查询 + 优化可还原 MD5 + 匹配逻辑。该方法泛化至 API 服务,如安全 scan 模型后门。

资料来源

(正文约 1250 字)

查看归档