如果你认为将密码或其他私密文本数据像素化就能保护它们不被窥见,那你真是太天真了,你的信息并没有你想象的那么安全。像素化(也称为马赛克)是一种常用的手段,可以大幅降低图像敏感区域的分辨率来隐藏信息。
今天在linkedin上就看到了一个项目,跳转到GIthub发现已经发布并更新了很久:
https://github.com/beurtschipper/Depix
近年来马赛克这项技术被广泛使用,但它的好日子已经不多了,最近一个新型的人工智能工具“Depix”横空出世,短短时间就在Github上标星24.1K
Depix的开发人员Sipke Mellema是一个信息安全顾问,他表示:“我见过一些公司把内部文件中的密码像素化,没有工具可以从这些图像中恢复密码,于是我创建了一个。”该工具适用于使用线性方框滤波器(linear box filter)创建的像素化图像。
Depix的使用
要准备一个用于Depix处理的像素化文本序列,首先以单个矩形格式从截图图像中剪切相关的像素化块,然后将带有预期字符的De Bruijn序列粘贴到具有相同字体(文本大小、字体、颜色等)编辑器中。接下来,对序列进行截图,最好使用之前的序列截图,尽可能使用和像素化图像相同的截图工具。
最后,简单地运行
python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png
恢复之后的效果和原图的对比结果:
但是,项目作者没有选择创建潜在字体的查找表,只是简单使用待处理字符的德布鲁因序列,将其粘贴到相同的编辑器中,然后截图。该截图可以用作相似 block 的查找图像,例如:
德布鲁因序列包括待处理字符的所有双字符组合。在以下测试图像中,Depix算法无法找到(o)的一部分。这是因为在搜索图像中,搜索block还包含下一个字母(「d」)的一部分,但在原始图像中这里有个空格。
不过对于大多数像素化的图像,Depix都可以找个单个的匹配结果,它假定这些都是正确的。然后将周围的多个匹配块匹配,然后再与马赛克图像相同的几何距离进行比较。这些匹配也被认为是正确的。
当正确的块没有更多的几何匹配后,它将直接输出所有正确的块。对于多匹配块,它输出所有匹配的平均值。它的输出还远远不够完美,但它的性能相当好。下图显示了一个带有随机字符的测试图像,大多数字符都可以正确破解出来。
Sipke Mellema还表示Depix技术类似于哈希破解,利用ECB的使用和已知明文攻击的使用。他建议人们对于敏感数据还是尽量不要用Depix。