微软号称“永不会被逆向”的图像加密算法,现在被 MIT 一位硕士小哥轻松破解了。
只用几行代码,原本被加密为一串数字的图片便“原形毕露”,可以看清其大致轮廓。
要知道,谷歌、Facebook、Twitter 等大平台对图像加密,用的都是微软这一方法。
如今这么轻松就能逆向?让人细思极恐啊。
而无独有偶,此前苹果号称不会被逆向的图像加密算法,也曾被“破解”。
前不久,Facebook 搞出了让用户上传果照保护隐私的“清奇方法”,用到的也是类似原理。
这不禁让人深思,Facebook 上传的果照,还安全吗……
目前这一方法已经在 GitHub 上开源。
小哥破解的是微软在 2009 年时提出的图像加密算法 PhotoDNA,是业内最具代表性、最早出现的技术之一。
这一方法是微软与达特茅斯学院 Hany Farid 教授共同研发,以识别删除网络上流传的儿童受害的照片。
通过将图片数据打乱混合、重新创建一个哈希值(hash values),它可以给每张照片匹配一个独特的“数字指纹”。
由此,系统只需将已经标记为儿童被侵害图片的哈希值与其他图片的值对比,一旦找到相同的数字串,便可判别其为非法图片。
这种手段一方面可以很好保护用户的隐私,同时还能快速甄别出网络上流传的违规图片。
但其关键就在于:该方法不可逆向,否则所有图片信息其实都在“裸奔”。
为此,微软一直未透露 PhotoDNA 的算法细节。
不过随着前段时间苹果 NeuralHash 算法被逆向,一个可计算 PhotoDNA 哈希值的编译库也被泄露了。
在此基础上,MIT 的这位小哥提出了名为“Ribosome (核糖体)”的逆向方法。
它将 PhotoDNA 看作一个黑盒,然后用机器学习的方法攻击哈希函数。
因为编译库已经被泄露,所以可以生成图像与哈希值对应的数据集。
在这一数据集上训练神经网络后,该方法便能根据哈希值来逆向图像了。
小哥表示,PhotoDNA 的哈希值是 144 元素的字节向量,他使用了类似于 DCGAN 和 Fast Style Transfer 的神经网络,在缩小卷积步长后使用残差块,从而转换出 100×100 的图像来。
在开源项目中,小哥已经上传了 4 个预训练模型。
现在只需通过一行训练命令,就能实现从哈希值到图像的转换。
python infer.py [--model MODEL] [--output OUTPUT] hash
具体结果如何?
小哥在不同数据集上都试验了一下,可以看出大部分情况下都能还原出图像轮廓。
而且先验越好,结果就会越好。比如在 CelebA 人脸数据集中,还原人脸的效果明显最好(第二行第一个),而它在还原别的图像时,也会倾向于给出类似于人像的结果(如第一行第一个)。
不过此方法也有失败的时候,比如 Reddit 数据集中,有些生成图像会存在伪影。
事实上,除了微软之外,还有不少科技巨头都在用哈希算法来加密图像。
比如我们前文提到的苹果。
前段时间,他们推出了一种叫做 NeuralHash 的加密技术来远程扫描用户照片,以此来控制虐童照片的传播。
彼时苹果一再强调该技术的安全性和隐私性。
但是不到半个月的时间,该方法就被一位程序员破解,还被另一位英特尔的工程师发现了 bug。
前段时间,Facebook 声称要让用户上传果照保护隐私,用到的也是这种方法。
Facebook 表示,他们会将你自己上传果照的哈希值标记,如果在网上发现了相同的数值,就会对该图片做删除处理。
但随着这类方法不断被成功逆向,其安全系数或许还有待人们考证。
参考链接:
[1]https://www.anishathalye.com/2021/12/20/inverting-photodna/
[2]https://github.com/anishathalye/ribosome
[3]https://www.reddit.com/r/MachineLearning/comments/rkrcyh/p_inverting_photodna_with_machine_learning/