設置
  • 日夜間
    隨系統
    淺色
    深色
  • 主題色

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

量子位 2021/8/19 12:43:36 責編:信鴿

8 月 19 日消息 沒想到蘋果被打臉來得如此之快。月初,蘋果表示將在 iOS 15、macOS 12 中加入對用戶照片的檢測,目的是遏制兒童色情與虐童照片的傳播。蘋果還一再強調這項技術的安全性和準確性。

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

他成功將這個尚未正式發(fā)布的 AI 模型逆向工程,并在 GitHub 上提供轉化成 Python 的教程。

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

這讓蘋果十分尷尬。

Ygvar 發(fā)現,其實早在 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)

你會發(fā)現 neuralhash 開頭的 4 個文件:

至于未越獄的用戶,可以下載 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 使用了騰訊優(yōu)圖實驗室的 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 發(fā)現,雖然 NeuralHash 可以承受圖像大小調整和壓縮,但如果圖像遭裁剪或旋轉,哈希值則會發(fā)生改變。

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

在 Ygvar 發(fā)布逆向工程的模型幾個小時后,另一位高手就發(fā)現了 NeuralHash 的一個 bug。

英特爾工程師 Cory Cornelius 發(fā)現其中存在哈希值沖突漏洞,請看下面兩張圖:

只能說二者毫不相干,但是用 NeuralHash 模型計算一下卻發(fā)現,二者的哈希值完全一樣。

$ 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 用戶就上傳了哈希值沖突攻擊的代碼,用來生成和原圖哈希值一樣的圖片。

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

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

破解 NeuralHash 的 Ygvar 表示,他的目的是希望幫助我們更好地了解該算法,在所有 iOS 設備上啟用之前發(fā)現潛在的問題。

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

GitHub 參考鏈接:點擊打開

廣告聲明:文內含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結果僅供參考,IT之家所有文章均包含本聲明。

軟媒旗下網站: IT之家 最會買 - 返利返現優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應用 魔方 最會買 要知