我对像素排列和BMP有一些(可争论的)想法,但是我首先偶然发现一个事实,即大多数社交网络仅使用JPEG,而任何其他格式都被压缩,这实质上破坏了该方案。 br />
所以现在我被困在尝试寻找新的加密方案。理想情况下,它应具有以下属性:
符合格式:图像仍应是有效的JPEG,可打开且可见。
不显眼:尽可能地,加密的图像不应在加密区域上有大量随机着色的像素,而应使其与“应”看起来的外观保持某种程度的接近-类似于模糊或像素化,但可逆。
安全:除了加密的观点外,从感知的角度来看,图像应被充分遮盖,以使例如
2和3有点相反,所以我的目标是在它们之间找到一些可以接受的中间点。
我一直在尝试使用Droogenbroeck和Benedett的“对未压缩和压缩的图像进行选择性加密的技术”,该技术建议每8x8平方保留DCT的DC(又是最高有效)系数,并对其余部分进行编码。但是,它对中大型图像效果非常差:由于加密是在小方块上完成的,并且保留了大部分能量的DC系数保持不变,因此图像越大,则8x8图像就变得越小比例,最终对于超过500x500的图像变得毫无用处。
我知道这是一个开放性问题,特别是我的问题是:针对此问题是否有以前的工作或已经讨论过的解决方案?或其他类似的东西?您对如何解决这个问题有任何想法吗?
感谢您的宝贵时间,如果可以澄清,请告诉我-理想情况下,我应该链接我的意思的图片,但我不我不认为我被允许低于某个特定代表阈值:(
编辑显然在上载时对图像进行解压缩和重新压缩,这意味着不可避免的附加质量损失。这意味着带有系数(特别是最低有效系数)的“细粒度”技巧将不起作用。(还要感谢Ilmari Karonen链接论文! )
fgrieu指出的问题在其他社交网络中是可以避免的-例如,Google +不会重新压缩图像,因此在那里没有问题。
#1 楼
虽然我以前没有听说过有关此精确问题的工作,但将一些其他问题的标准解决方案组合在一起几乎可以解决此问题。信鸽原理存在漏洞:
如果输出文件大于输入图像,则
可以存储“额外”信息。
从让所有人都看到的模糊图像开始,
/>您想以某种方式向其中添加更多信息,以便适当的人员可以提取不模糊的图像。
相框
也许您可以保留该模糊图像的每个像素未经修改,并在图像的上方,下方或周围添加诸如相框之类的东西来存储额外的数据,
就像无点QR码在不修改图像中心部分的情况下存储额外数据的方式一样。
在设计条形码方面已经进行了大量工作,即使条形码变形比单纯变形都严重,也可以恢复所有原始数据。解压缩JPEG,然后以较差的质量设置重新压缩。
如果创建“残差图像”,则在帧中间,(未模糊的)原始JPEG文件与模糊的JPEG图像之间的差异,该残差图像应为全零对于模糊掉的区域,因此(压缩后的加密版本)残差图像需要比整个原始图像少得多的位进行编码,因此在模糊图像周围需要更窄的边框。
无边界
如果您想要隐写术,并且您认为帧太多了,那么似乎有大量关于数字水印的研究,这些研究的目的是足够强大,以至于可以在不解压缩JPEG,对其进行较小的修改并重新压缩的情况下生存。 >也许您可以对这种水印和隐写技术进行足够的调整,以存储(压缩后再加密的)残留图像。
“使用简单的隐写工具将数据隐藏在文件中” jpg或gif照片中包含的信息?”;
等。
如果这不足以为您提供足够的存储空间来存储整个残留图像,也许您可以按比例放大图像(模糊的每个像素原始图像扩展到扩展图像的4像素),
给更多区域编码数据。
或者您可以放大模糊的图像,然后应用诸如DataGlyph Halftoning之类的图像来创建图像。距离看起来像是模糊的JPEG文件,但Dataglyph数字半宁包含残余文件或整个(未模糊的)原始文件(压缩后为加密版本)。
#2 楼
尝试进行选择性格式兼容的JPEG加密是一个好主意,但它无法正常工作……不是这样。 >JPEG使用有损压缩(甚至有损压缩)。如果您确实想创建一种符合格式的实现,则必须注意不要出现任何“(重新)压缩”问题,这些问题可能会破坏您宝贵的加密数据。
这意味着您必须解决以下问题:加密时无法在图像中存储足够多的数据...用更简单的话来说:您的算法自然也会有损您将无法将“加密的”信息恢复为原始信息。
实际上,这有点像一个反面的皮氏洞问题:您必须查看在有人关闭数量未知的皮氏洞后可以恢复多少皮氏洞。无论您做什么,都会有与您原始种群不同数量的皮江。回到图像问题,这意味着您将无法恢复加密后的像素数量,这是JPEG有损压缩的结果。
唯一的选择是创建新的图像格式,以满足您的需求。但是,如果有人采用您的新图像格式,就会出现问题。看看aPNG(动画PNG)发生了什么,我不太乐观您会有机会-除非某些社交网络推动并开始支持它。然后,您仍然必须查看它是否真的散布在其中的几个程序和工具中(请考虑:Photoshop支持等)。
请不要误会我:我喜欢这个主意您在那儿-但与许多好主意一样,我没有看到它是出于技术原因而发生的。不好意思说。
评论
$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年12月16日在18:28
#3 楼
有一篇关于快速主题开发的文章已经有很多年了,但这可能是一个好的开始。http://web.cecs.pdx.edu/~fliu/papers/ihmm2015.pdf
这里的想法是以某种方式加密部分或整个图像,而内容仍然具有某种视觉线索,有点像您想做的那样。他们会针对整个图像进行处理,但是我想这就是您可以解决的问题。
但是您已经找到了主要的起点。大多数JPEG加密都可以在DCT或DFT上工作,这完全有道理。
另一种可能对您来说有趣的方法可能是查看“视觉密码学”。图像分开且仅在组合中可见的地方。它现在是一个热门话题。
评论
好问题。您是从JPEG还是非损耗编码开始?您是否在乎保留与JPEG相同的大小?关于以像素对像素的精度(w.r.t.普通JPEG)保存非模糊区域?一个想法:IIRC,JPEG的注释字段可能包含经典加密的原始图像(或其模糊部分)。我希望它能够同时处理有损文件和无损文件。最坏的情况是,例如JPEG就足够了,因为BMP可以压缩为JPEG,然后进行加密。理想情况下,大小不应急剧增加,但可以进行很小的变化。在非模糊区域,不需要“逐个像素”的精度,只要它仍然“看起来不错”即可。
我也考虑过使用EXIF字段的方法(我想这是您的意思,如果我错了,请告诉我!),但是它们有些局限性:它们的总数不能超过64KB-对于任意数量的区域列表来说,这是一个很小的阈值,而且我不确定是否某些社交网络在上载时会删除其中的部分或全部...我现在将进行研究。
您是否愿意检查在删除EXIF的过程中,Facebook(或其他任何对编码图像进行后处理的过程)是否分解并重新压缩图像数据?这会使您的任务更加困难。
您的额外信息告诉您,按照JPEG标准将您编码的图像转换为裸像素,然后使用JPEG重新编码;并且您仍想使用映像中的数据(而不是其他数据库中的数据,这很容易)来还原原始数据。您必须使用与带有颜色的高密度二维条形码相似的技术,以便对加密后的原始图像(部分)进行编码(可能在一定程度上在模糊区域中进行编码),并且(因为这样不合适)完全)在其他区域(例如边界)。而且您将容易受到重新编码器的质量设置和算法的影响。