当前位置: 首页 > 科技观察

马赛克安全吗?AI消除马赛克,上线三天收获近7000颗星

时间:2023-03-21 22:00:49 科技观察

还在用马赛克隐藏密码?小心被“看穿”。像素化(也称为马赛克)是一种常见的编码方式,通过降低图像中某些区域的分辨率来隐藏某些关键信息,例如:又如:寻找一张图片中的马赛克!(如果找不到,请看右边的原图)然而,在你想隐藏信息的同时,有些技术却反其道而行之,试图将图片恢复到原来的状态。最近,一个叫Depix的GitHub项目火了,三天之内star量达到了6.9k。项目作者SipkeMellema是一名信息安全顾问。项目地址:https://github.com/beurtschipper/DepixDepix可以从像素化图片截图中恢复原图包含的文本密码。该项目适用于使用线性盒式过滤器创建的像素化图像。如下图,项目作者给出了像素化图像、还原效果和原图的对比结果:马赛克足够紧密,但Depix还是基本解读出了隐藏信息。如何使用Depix从像素化图片截图中恢复文本密码,操作比较简单:从截图中分割出一个矩形像素化块;在具有相同字体设置(包括文本大小、字体、颜色、hsl)的编辑器中,粘贴要处理的DeBruijn字符序列。截取序列的屏幕截图,如果可能的话,对像素化图像使用尽可能相同的屏幕截图工具。执行命令:Depix算法利用线性盒滤波器单独处理每个块的事实。它对搜索图像中的每个块执行像素化以找到直接匹配。对于大部分像素化的图像,Depix会尝试找到单个匹配项并假定这些匹配项是正确的。至于周围多匹配块的结果,考虑了像素化图像中相同的几何距离,这些匹配也被认为是正确的。这个过程重复几次。当正确的块没有更多的几何匹配后,Depix会直接输出所有正确的块。对于多匹配块,Depix将输出所有匹配的平均值。Depix像素化背后的算法通常使用线性盒式过滤器来实现。线性块滤波器的实现简单快速,可以并行处理多个块。由于线性块滤波器是一种确定性算法,对相同的值进行像素化通常会产生相同的像素化块。在相同位置用块像素化相同文本将导致相同的块值。我们可以尝试对文本进行像素化以找出匹配的模式。幸运的是,这也适用于部分秘密值。我们可以将每个块或块的组合视为一个子问题。项目作者没有选择创建潜在字体的查找表。该算法要求在同一背景上具有相同的文本大小和颜色。现代文本编辑器还添加了色调、饱和度和亮度,这意味着有大量潜在的字体。项目作者给出的解决方案也很简单:使用deBruijn待处理的字符序列,粘贴到同一个编辑器中,然后截图。此屏幕截图可用作类似块的查找图像,例如:DeBruyne序列包括要处理的字符的所有二元组组合。这很重要,因为有些块会重叠两个字符。找到合适的匹配项需要在图像中搜索具有相同像素配置的块。在下面的测试图像中,Depix算法找不到部分“o”。这是因为在搜索图像中,搜索块还包含下一个字母(“d”)的一部分,但在原始图像中这里有一个空格。添加空格以创建deBruijn字母序列显然会出现相同的问题:算法无法为后续字母找到合适的块。带有空格和字母的图像需要更长的搜索时间,但也会提供更好的结果。对于大多数像素化图像,Depix似乎能够找到块的单个匹配项并假设这是正确的。然后它将其周围的多重匹配块的匹配视为在像素化图像中处于相同的几何距离,并假设这些匹配也是正确的。在没有更多的正确块的几何匹配后,Depix直接输出所有正确的块。对于多匹配块,Depix将输出所有匹配的平均值。虽然Depix的输出并不完美,但已经相当不错了。下图是一张包含随机字符的测试图片的去像素化结果,大部分读取正确:对本项目感兴趣的读者可以自行尝试。以后对敏感信息进行截图编码。看来不能简单的用“马赛克”。