Apple照片掃描的AI演算法被逆向工程,Intel工程師發現漏洞

Apple照片掃描的AI演算法被逆向工程,Intel工程師發現漏洞

ADVERTISEMENT

月初,蘋果表示將在iOS 15、macOS 12中加入對使用者照片的檢測,目的是遏制兒童色情與虐童照片的傳播。 蘋果還一再強調這項技術的安全性和準確性。 

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

他成功將這個尚未正式發佈的AI模型逆向工程,並在GitHub上提供轉化成Python的教程。 幾個小時後,另一位來自Intel的工程師就發現了該模型的一個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個文件:

Apple照片掃描的AI演算法被逆向工程,Intel工程師發現漏洞

至於未越獄的用戶,可以下載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.net
dd if=NeuralHashv3b-current.espresso.shape bs=4 skip=7 | lzfse -decode -o model.espresso.shape
cp 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.git
cd TNN
python3 tools/onnx2tnn/onnx-coreml/coreml2onnx.py ../NeuralHash

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

 

ab14febaa837b6c1484c35e6

NeuralHash如何工作

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

NeuralHash是一種基於神經網路的圖像感知雜湊(perceptual hashing)方法,具體步驟如下: 

  1. 將圖像轉換為RGB;
  2. 將圖像大小調整為360x360;
  3. 將RGB值歸一化到[-1, 1]範圍;
  4. 用NeuralHash模型進行推理;
  5. 將運算得到128個浮點數的向量與96x128矩陣相乘;
  6. 對產生的96個浮點向量使用單位階躍函數;
  7. 將1.0和0.0的向量轉換為位,產生96位二進位資料。

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

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

幾小時後就被找到bug

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

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

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

Intel工程師Cory Cornelius發現其中存在雜湊值衝突漏洞,請看下面兩張圖:

Apple照片掃描的AI演算法被逆向工程,Intel工程師發現漏洞

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

$ python3 nnhash.py NeuralHash/model.onnx neuralhash_128x96_seed1.dat beagle360.png
59a34eabe31910abfb06f308
$ python3 nnhash.py NeuralHash/model.onnx neuralhash_128x96_seed1.dat collision.png
59a34eabe31910abfb06f308

其實早在11天前,另一位名叫unrealwill的GitHub使用者就上傳了雜湊值衝突攻擊的程式碼,用來產生和原圖雜湊值一樣的圖片。 

Apple照片掃描的AI演算法被逆向工程,Intel工程師發現漏洞

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

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

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

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

資料來源:

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則