蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

曉查 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

沒想到蘋果被打臉來得如此之快。

月初,蘋果表示將在iOS 15、macOS 12中加入對使用者照片的檢測,目的是遏制兒童色情與虐童照片的傳播。

蘋果還一再強調這項技術的安全性和準確性。

蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

圖片

現在,不到半個月的時間,蘋果的這項技術已經被一位名為Asuhariet Ygvar程式設計師“破解”了。

他成功將這個尚未正式釋出的AI模型逆向工程,並在GitHub上提供轉化成Python的教程。

幾個小時後,另一位來自英特爾的工程師就發現了該模型的一個bug。

這讓蘋果十分尷尬。

Ygvar發現,其實早在

iOS 11.3

macOS 11.4

開始,就已經在系統中加入了照片檢測模型NeuralHash,只不過尚未啟用。

因此任何可以下載到蘋果系統韌體的人,都可以輕鬆將NeuralHash模型提取出來。

如何提取NeuralHash模型

對於macOS使用者或者已經越獄的iOS使用者來說,找到NeuralHash模型檔案非常方便,就在以下路徑中:

/System/Library/Frameworks/Vision。framework/Resources/ (macOS)

/System/Library/Frameworks/Vision。framework/ (iOS)

你會發現neuralhash開頭的4個檔案:

蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

圖片

至於未越獄的使用者,可以下載ipsw格式刷機檔案,找到其中最大的dmg檔案,從這個映象中找到模型。

由於步驟較多,在此不再贅述,具體操作看參照文末GitHub文件操作。

如何逆向工程

在這4個檔案中,net和shape結尾的檔案都是json格式,使用蘋果開源技術LZFSE壓縮;weights儲存的是權重。

解壓前首先需安裝LZFSE解壓工具:

brew install lzfse

將net和shape解壓,和權重檔案放在一個資料夾中:

dd if=NeuralHashv3b-current。espresso。net bs=4 skip=7 | lzfse -decode -o model。espresso。netdd if=NeuralHashv3b-current。espresso。shape bs=4 skip=7 | lzfse -decode -o model。espresso。shapecp NeuralHashv3b-current。espresso。weights model。espresso。weights

為了把模型轉換為ONNX格式,還要安裝以下依賴項:

pip install onnx coremltools

轉換模型時,Ygvar使用了騰訊優圖實驗室的TNN,這是一款可以轉換多種AI模型的開源工具,可以將蘋果的Core ML轉為ONNX格式。

cd 。。git clone https://github。com/AsuharietYgvar/TNN。gitcd TNNpython3 tools/onnx2tnn/onnx-coreml/coreml2onnx。py 。。/NeuralHash

模型轉化為ONNX格式後,就可以算出任何圖片的96bit神經雜湊值。

ab14febaa837b6c1484c35e6

NeuralHash如何工作

說到這裡,蘋果的NeuralHash具體是如何生成圖片雜湊值的?

NeuralHash是一種基於神經網路的影象

感知雜湊

(perceptual hashing)方法,具體步驟如下:

將影象轉換為RGB;

將影象大小調整為360x360;

將RGB值歸一化到[-1, 1]範圍;

用NeuralHash模型進行推理;

將運算得到128個浮點數的向量與96x128矩陣相乘;

對生成的96個浮點向量使用單位階躍函式;

將1。0和0。0的向量轉換為位,生成96位二進位制資料。

這項技術保證影象被壓縮或者大小被調整的情況下,雜湊值依舊不變。

蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

圖片

經過黑白處理的圖片和原圖片具有相同雜湊值

幾小時後就被找到bug

但是Ygvar發現,雖然NeuralHash可以承受影象大小調整和壓縮,但如果影象遭裁剪或旋轉,雜湊值則會發生改變。

這也意味著,不法分子可以通過後兩種編輯圖片的方法,逃過圖片稽核。

在Ygvar釋出逆向工程的模型幾個小時後,另一位高手就發現了NeuralHash的一個bug。

英特爾工程師Cory Cornelius發現其中存在

雜湊值衝突

漏洞,請看下面兩張圖:

蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

圖片

只能說二者毫不相干,但是用NeuralHash模型計算一下卻發現,二者的雜湊值完全一樣。

$ python3 nnhash。py NeuralHash/model。onnx neuralhash_128x96_seed1。dat beagle360。png59a34eabe31910abfb06f308$ python3 nnhash。py NeuralHash/model。onnx neuralhash_128x96_seed1。dat collision。png59a34eabe31910abfb06f308

其實早在11天前,另一位名叫unrealwill的GitHub使用者就上傳了

雜湊值衝突

攻擊的程式碼,用來生成和原圖雜湊值一樣的圖片。

蘋果遭火速打臉:照片掃描AI被逆向工程,英特爾工程師發現漏洞

圖片

外媒TechCrunch針對這個漏洞詢問了蘋果。蘋果還表示,現在被逆向工程的NeuralHash是早期版本,而不是即將推出的完整版本。

但蘋果迴避了雜湊值衝突問題,強調有人工稽核防止該功能被濫用。

破解NeuralHash的Ygvar表示,他的目的是希望幫助我們更好地瞭解該演算法,在所有iOS裝置上啟用之前發現潛在的問題。

不止下個月的iOS 15正式版是否真有重大改進。