通过预测API窃取机器学习模型(2)
其未知参数有c(n+1)(每个类别存在n+1个未知数),当然这个函数是非线性函数,也就是说,通过多次访问构建的方程组是非线性方程组,而且每个方程都是超越方程。关于这种方程组的求解可以利用梯度下降方法实现,构造一个损失函数为凸函数,转化为凸优化问题求解,求解全局最优解也就是该模型的参数。 3.2 决策树提取攻击 决策树的置信度是在给定训练数据集,就已经确定了,每个叶子节点都有其对应的置信度值,笔者在此假设每个叶子节点都有不同的置信度值,也就说可以通过置信度标定不同的叶子节点:利用置信度作为决策树叶子节点的伪标识。同时很多MLaaS提供商做为了提升API访问的可访问性,MLaaS提供商的做法是即使输入的数据使部分特征依然可以得到输出结果。 图5 决策树示例 例如针对上述决策树:仅输入Color = Y,依然可以得到id6的置信度输出。不断在特征空间遍历, 便可以得到和置信度对应的叶子节点。例如我现在得到了id2的伪标识,通过只改其中的Color特征为B即可找到id3叶子节点。 主要基于两点假设前提: 1.设每个叶子节点都有不同的置信度值; 2.为了提升API访问的可访问性,MLaaS提供商的做法是即使输入的数据使部分特征依然可以得到输出结果。 3.3 对于不考虑置信度的模型提取攻击 笔者认为:隐藏置信度的输出仍然不能解决所存在的模型提取攻击: 1) 首先随机确定访问数据,对目标模型进行访问,并得到预测结果, 2) 利用这些数据集训练在本地训练机器学习模型 3) 找到离所训练机器学习模型分类边界很近的数据点,然后将这些数据对目标模型访问 4) 利用输入数据集和访问结果更新重训练模型,重复3 过程直到模型误差低于一定的值。 具体细节可以阅读我的GitHub代码。 4.总结 MLaaS提供商所提供的灵活的预测API可能被攻击者用于模型提取攻击,这种商业化模式在笔者的角度是不安全的,本文提出了三种机器模型提取攻击方法,同时表明即使不输出置信度,只输出类标签,通过自适应地访问数据集的方法,模型提取攻击依然可行。MLaaS的部署应该谨慎考虑,同时MLaaS的安全部署有待进一步研究。 (编辑:ASP站长网) |