金磊 發自 凹非寺
量子位 | 公眾號 QbitAI
講個恐怖的故事。
早上跟同事在微信上閒談,聊起了一位女同事最近的變化。
結果他反手就把文字打上馬賽克,截圖丟進了羣裏:
還欠欠兒地補了一刀:
@XXX,他説你壞話了呦~
萬萬沒想到,這位同事氣勢洶洶地走了過來,竟然直接點出了“秘密文字”的內容。
當時的我是這樣的:
見狀,這位老師補充道:
都什麼年代了,以為打馬賽克我就認不出來了?分分鐘還原好吧!
……
好奇如我,馬上對這個技術展開了一番“調查”。
(PS:聊天原圖在文末揭曉)
如何還原打了馬賽克的文字?還別説,國外一家公司的首席研究員Dan Petro(下文簡稱Dan),這兩天就發佈了這麼一篇帖子。
他直接點出了重點:
打馬賽克(像素化),是一種非常不好、不安全,而且會泄露敏感數據的方法。
為了驗證他的説法,Dan親自下場寫了一個名為 Unredacter 的工具。
然後現場演示了一下,這個工具是如何一點一點把打了馬賽克的文字還原的:
從上面的示例中,不難看出,即便原文打了厚厚的一層馬賽克,在這個工具面前依舊像“裸奔”一樣。
或許你會説,這玩意兒操作起來會很複雜吧?
不不不。
非常之簡單,僅僅是2個步驟:
- 用npm install安裝依賴項
- 用npm start來啓動
但一個非常現實的問題就是,Depix還原的文字,從視覺效果上並不是很好:
Depix還原出來的文字,有些地方的還是糊糊的。
因此,國外Jumpsec Lab的一位研究員指出了這個問題,並且還附上了一道比較有意思的挑戰:
如果你破解了密碼,請聯繫我們。
這樣的挑戰便引起了Dan極大的興趣,這也就是他開發Unredacter的原因。
於是,在Unredacter的加持下,Dan順利攻破了這項挑戰:
而後Dan聯繫上了這位研究員,在郵件的回覆中,也證實了Dan的結果是正確的:
不僅如此,Dan還介紹説,像類似用塗抹方式來打的馬賽克,無論是在GiMP、Photoshop或者其它編輯器中,結果都是一樣的。
因此,他的破解方法應當是具備一定的通用性。
當然,生活中我們或多或少都會有“打碼”的需求,既然馬賽克不安全,那有沒有更好的方式呢?
Dan對此的答覆是:
用黑色條來遮擋。
其實“還原馬賽克”這件事,AI界早就有所研究。
例如杜克大學提出的 PLUSE便是其中之一,還登頂了CVPR。
但它修復的並不是文字,而是人像,例如:
從原理角度來看,它本質上是生成對抗網絡(GAN)。
PLUSE主要是根據模糊的馬賽克像素,“畫”出新的一張張不存在的人臉,再壓縮回馬賽克狀態跟原圖比一比,把相似的版本拿出來展示。
當然,這項技術也並非完美,也有翻車的時候。
例如網友就拿馬里奧試了試,結果……
Emmm……這“味道”,不一般。
One More Thing最後,來揭曉一下開頭故事的答案。
着實是個慘痛的教訓了……
項目地址:
https://github.com/bishopfox/unredacter
參考鏈接:
[1]https://bishopfox.com/blog/unredacter-tool-never-pixelation
[2]https://labs.jumpsec.com/can-depix-deobfuscate-your-data/[3]https://arxiv.org/abs/2003.03808— 完 —
量子位 QbitAI · 頭條號簽約