Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星

机器之心报道
作者:魔王、小舟
还在用马赛克的方式隐藏密码?小心被「看穿」 。
【Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星】像素化(又称马赛克)是一种常见的打码方式 , 通过降低图像中部分区域的分辨率来隐藏某些关键信息 , 比如:

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

再比如:

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

看图找马赛克!(找不到请看右侧原图)
但是 , 在你想隐藏信息的同时 , 有一些技术却反其道而行之 , 试图将图片还原为原始状态 。
最近 , 一个名为 Depix 的 GitHub 项目爆火 , 上线三天 star 量已经高达 6.9k 。 项目作者 Sipke Mellema 是一名信息安全顾问 。

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

项目地址:https://github.com/beurtschipper/Depix
Depix 能够从像素化图像截图中恢复原图中包含的文字密码 。 该项目适用于使用线性方框滤波器(linear box filter)创建的像素化图像 。 如下图所示 , 项目作者给出了像素化图像、恢复之后的效果和原图的对比结果:

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

马赛克打得够严实了 , 不过 Depix 还是基本解读出了被隐藏的信息 。
如何使用
使用 Depix 从像素化图像截图中恢复文字密码 , 操作也比较简单:
从截图中分割出矩形像素化 block;
在具有相同字体设置(包括文本大小、字体、颜色、hsl)的编辑器中 , 粘贴待处理字符的德布鲁因(De Bruijn sequence) 。
给该序列截图 , 尽可能使用和像素化图像相同的截图工具 。
执行命令:
python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png
Depix 算法利用线性方框滤波器单独处理每一个 block 这一事实 。 它对搜索图像中的每一个 block 执行像素化以寻找直接匹配 。
对于大部分像素化图像 , Depix 尽量寻找单匹配结果 , 并假设这些匹配是正确的 。 至于周围多匹配 block 的结果被看作像素化图像中相同的几何距离 , 并认为这些匹配也是正确的 。 该过程重复多次 。
在正确的 block 没有更多几何匹配后 , Depix 将直接输出所有正确的 block 。 对于多匹配 block , Depix 将输出所有匹配的平均值 。
Depix 背后的算法
像素化常使用线性方框滤波器实现 。 线性方框滤波器的实现很简单 , 速度很快 , 可以并行处理多个 block 。
由于线性方框滤波器是一种确定性算法 , 对同样的值执行像素化通常会产生同样的像素化 block 。 使用同样位置的 block 对相同文本执行像素化 , 会得到同样的 block 值 。 我们可以尝试像素化文本来找出匹配的模式 。 幸运的是 , 这对于秘密值的一部分同样奏效 。 我们可以把每个 block 或 block 组合看作一个子问题 。
项目作者没有选择创建潜在字体的查找表 。 该算法要求在相同背景上具备相同的文本大小和颜色 。 现代文本编辑器还会添加色调、饱和度和亮度 , 也就是说存在海量潜在字体 。
项目作者给出的解决方案也很简单:使用待处理字符的德布鲁因序列 , 将其粘贴到相同的编辑器中 , 然后截图 。 该截图可以用作相似 block 的查找图像 , 例如:

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

德布鲁因序列包括待处理字符的所有双字符组合 。 这很重要 , 因为一些 block 会重叠两个字符 。 找出恰当的匹配需要搜索图像中具备相同像素配置的 block 。
在以下测试图像中 , Depix 算法无法找到「o」的一部分 。 这是因为在搜索图像中 , 搜索 block 还包含下一个字母(「d」)的一部分 , 但在原始图像中这里有个空格 。

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

创建字母的德布鲁因序列时加上空格显然会带来同样的问题:算法无法找到后续字母的恰当 block 。 有空格又有字母的图像需要更长的搜索时间 , 但结果也更好 。
对于大部分像素化图像而言 , Depix 似乎能够找到 block 的单匹配结果 , 并假设这是正确的 。 然后将其周围多匹配 block 的匹配结果看作在像素化图像中处于相同的几何距离 , 并假设这些匹配也是正确的 。
在正确的 block 没有更多几何匹配后 , Depix 直接输出所有正确的 block 。 对于多匹配 block , Depix 将输出所有匹配的平均值 。 虽然 Depix 的输出并不完美 , 但已经算不错了 。
下图展示了包含随机字符的测试图像的去像素化结果 , 大部分字符被正确读取:
对这个项目感兴趣的读者 , 可以自行尝试 。
以后截图时给敏感信息打码 , 看来不能简单地用「马赛克了」 。
参考链接:
https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema/?trackingId=yYFSUnuxRXasNV%2Fh3ZsiSw%3D%3D
「WAVE SUMMIT+2020 深度学习开发者峰会」由深度学习技术及应用国家工程实验室与百度联合主办 , 来自行业内的人工智能专家和开发者们将分享 AI 时代的最新技术发展和产业应用经验 , 诸多顶级高校人工智能专家将就 AI 人才培养展开对话 , AI 开源产品及社区专家也将共话开源趋势 。
本次峰会既有干货满满的分享、讨论 , 又有丰富多彩的展示、体验、互动 , 为开发者打造专属的 AI Party 。
12 月 20 日 , 北京 798 艺术园区 751 罐 , 点击阅读原文 , 参与报名 。

Depix|打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
文章图片

? THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com喜欢此内容的人还喜欢
_原题《打马赛克就安全了吗?AI消除马赛克 , GitHub开源项目上线三天收获近7000星》
阅读原文

    推荐阅读