逆向工程破解苹果监控iPhone图片的算法:原来iOS14.3上就有了( 二 )
作者表示 , macOS和Linux系统都可以运行 。
在安装LZFSE解码器时 , 对于macOS系统 , 运行brewinstalllzfse即可安装;对于Linux系统 , 从lzfse资源中创建和安装 。
此外 , 作者选用的Python版本是3.6及以上 , 需要安装以下依赖:
pipinstallonnxcoremltools转换指南
步骤1:准备NeuralHash模型
你需要最近的macOS或iOS构建中的4个文件 , 分别如下:
neuralhash_128x96_seed1.datNeuralHashv3b-current.espresso.netNeuralHashv3b-current.espresso.shapeNeuralHashv3b-current.espresso.weights具体地 , 你可以通过以下两种方式获取以上文件 。
第一种选择是从macOS或jailbrokeniOS设备中获取 。 如果macOS是11.4及以上或者jailbrokeniOS是14.7及以上 , 则只需要从macOS上的/System/Library/Frameworks/Vision.framework/Resources/或iOS上的/System/Library/Frameworks/Vision.framework/中抓取以上文件即可 。
第二种选择是从iOSIPSW中获取 , 并将它们放在同一个目录下
mkdirNeuralHashcdNeuralHashcp/System/Library/Frameworks/Vision.framework/Resources/NeuralHashv3b-current.espresso.*.cp/System/Library/Frameworks/Vision.framework/Resources/neuralhash_128x96_seed1.dat.步骤2:解码模型结构和形状
一般编译的CoreML模型在model.espresso.net中存储结构 , 在model.espresso.shape中存储形状 , 并且都使用JSON格式 。 NeuralHash模型同样如此 , 但是使用LZFSE进行了压缩 。
步骤3:将NeuralHash模型转换为ONNX格式
最终得到的模型是NeuralHash/model.onnx 。
cd..gitclonehttps://github.com/AsuharietYgvar/TNN.gitcdTNNpython3tools/onnx2tnn/onnx-coreml/coreml2onnx.py../NeuralHash作者答疑
作者在Reddit上回答了网友的一些疑问(以下作者回复以第一人称表述) 。
疑问1:如何知道提取的模型与用于CSAM检测的NeuralHash相同
首先 , 模型文件中有前缀NeuralHashv3b- , 它与苹果《CSAM检测技术总结》文档中使用的term相同 。
其次 , 在这篇文档中 , 苹果在TechnologyOverview->NeuralHash章节描述了该算法的细节 , 这与我发现的完全相同 。 如下所示 , 浮点数N=128 , M=96 。
Second,thedescriptorispassedthroughahashingschemetoconverttheNfloating-pointnumberstoMbits.Here,MismuchsmallerthanthenumberofbitsneededtorepresenttheNfloating-pointnumbers.此外 , 如果你改变图像大小或压缩图像 , 该脚本生成的哈希几乎不会改变 , 这再次与苹果文档中描述的一致 。
《CSAM检测技术总结》文档地址:https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf
疑问2:repo中生成的哈希为什么略有不同?(相差几个bits)
这是因为神经网络基于浮点运算 , 准确率高度依赖于硬件 。 对于较小的网络 , 影响不大 。 但是 , NeuralHash拥有200多个层 , 这导致了显著的累积误差 。 在实践中 , 苹果很可能在实现哈希比较时允许几个bits的误差 。
疑问3:如何发现隐藏的API函数?
隐藏的API之前已被其他人发现了 , 因此我不打算过多地讨论逆向工程的过程 。 我所做的主要是使用Xcode调试器+Hopper反汇编器+LLDB命令 , 来理解该API函数如何以汇编代码在底层工作 。 有一些部分我没有理解 , 但通过猜测 , 我成功地从脚本中得到与从API函数中得到的相同的哈希结果 。
发现隐藏API的另一个项目地址:https://github.com/KhaosT/nhcalc
在NeuralHash代码被上传到GitHub之后 , 很快就引起了人们的注意 。 苹果立即做出回应:用户在GitHub上分析的那个版本是一个通用版本 , 而不是用于iCloud照片CSAM检测的最终版本 。 苹果表示 , 它还公开了该算法 。
「NeuralHash算法……是操作系统代码的一部分 , (并且)安全研究人员可以验证它的行为是否符合描述 , 」苹果在一份文档中写道 。 苹果还表示 , 在用户存储的文件超过30个匹配阈值后 , 运行在苹果服务器上的第二个非公开算法将被激活检查结果 。
- 苹果|华为新一代“小方表”来了:Watch FIT 2正式官宣
- iPhone|Plus时隔5年回归!曝苹果全新6.7寸手机名为iPhone 14 Plus
- 苹果|美科技巨头每秒能赚多少钱?苹果11376元
- 需求旺盛!苹果考虑重启原始Homepod
- 苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
- 苹果|抢台积电3nm产能!苹果自研处理器M2 Pro/M3齐曝光 性能更强
- 英特尔|两倍变焦自拍能有多大区别?苹果、三星、OPPO自拍样张解析
- 苹果|苹果多款新品已提上日程
- 苹果|苹果要大涨价!iPhone 14量产工作就绪:四款齐发 供应商已出货
- 苹果|9999元!M2版苹果新MacBook Pro升级开倒车 固态盘性能测试非常慢
