號稱永不會被逆向的圖片加密演算法慘遭破解:互聯網陷入裸奔
微軟號稱「永不會被逆向」的影像加密演算法,現在被MIT一位碩士小哥輕鬆破解了。
只用幾行程式碼,原本被加密為一串數字的圖片便「原形畢露」,可以看清其大致輪廓。
要知道,Google、Facebook、Twitter等大平台對影像加密,用的都是微軟這一方法。
如今這麼輕鬆就能逆向?讓人細思極恐啊。
而無獨有偶,此前蘋果號稱不會被逆向的影像加密演算法,也曾被「破解」。
前不久,Facebook搞出了讓用戶上傳果照保護隱私的「清奇方法」,用到的也是類似原理。
這不禁讓人深思,Facebook上傳的果照,還安全嗎……
目前這一方法已經在GitHub上開源。
利用泄露編解碼破解
小哥破解的是微軟在2009年時提出的影像加密演算法PhotoDNA,是業內最具代表性、最早出現的技術之一。
這一方法是微軟與達特茅斯學院Hany Farid教授共同研發,以識別刪除網路上流傳的兒童受害的照片。
通過將圖片數據打亂混合、重新創建一個哈希值(hash values),它可以給每張照片匹配一個獨特的「數字指紋」。
由此,系統只需將已經標記為兒童被侵害圖片的哈希值與其他圖片的值對比,一旦找到相同的數字串,便可判別其為非法圖片。
這種手段一方面可以很好保護用戶的隱私,同時還能快速甄別出網路上流傳的違規圖片。
但其關鍵就在於:該方法不可逆向,否則所有圖片資訊其實都在「裸奔」。
為此,微軟一直未透露PhotoDNA的演算法細節。
不過隨著前段時間蘋果NeuralHash演算法被逆向,一個可計算PhotoDNA哈希值的編譯庫也被泄露了。
在此基礎上,MIT的這位小哥提出了名為「Ribosome (核糖體)」的逆向方法。
它將PhotoDNA看作一個黑盒,然後用機器學習的方法攻擊哈希函數。
因為編譯庫已經被泄露,所以可以生成影像與哈希值對應的數據集。
在這一數據集上訓練神經網路後,該方法便能根據哈希值來逆向影像了。
小哥表示,PhotoDNA的哈希值是144元素的位元組向量,他使用了類似於DCGAN和Fast Style Transfer的神經網路,在縮小卷積步長後使用殘差塊,從而轉換出100 x 100的影像來。
在開源項目中,小哥已經上傳了4個預訓練模型。
現在只需通過一行訓練命令,就能實現從哈希值到影像的轉換。
python infer.py [–model MODEL] [–output OUTPUT] hash具體結果如何?
小哥在不同數據集上都試驗了一下,可以看出大部分情況下都能還原出影像輪廓。
而且先驗越好,結果就會越好。比如在CelebA人臉數據集中,還原人臉的效果明顯最好(第二行第一個),而它在還原別的影像時,也會傾向於給出類似於人像的結果(如第一行第一個)。
不過此方法也有失敗的時候,比如Reddit數據集中,有些生成影像會存在偽影。
One More Thing
事實上,除了微軟之外,還有不少科技巨頭都在用哈希演算法來加密影像。
比如我們前文提到的蘋果。
前段時間,他們推出了一種叫做NeuralHash的加密技術來遠程掃描用戶照片,以此來控制色情、虐童照片的傳播。
彼時蘋果一再強調該技術的安全性和隱私性。
但是不到半個月的時間,該方法就被一位程式設計師破解,還被另一位英特爾的工程師發現了bug。
前段時間,Facebook聲稱要讓用戶上傳果照保護隱私,用到的也是這種方法。
Facebook表示,他們會將你自己上傳果照的哈希值標記,如果在網上發現了相同的數值,就會對該圖片做刪除處理。
但隨著這類方法不斷被成功逆向,其安全係數或許還有待人們考證。
網友們還開了個腦洞,認為Ribosome輸出的結果足以再用在解析度提升的模型上。
難道說還原高清影像也不是難題了???
不過,大家馬上想到此前曾把奧巴馬的低解析度照片還原成白人面孔的演算法。
嗯,這麼看來,從哈希值得到原畫影像,似乎還無法實現(doge)。
所以這一波破解等於是泄露,但沒有完全露?