-
-
[分享]隐藏数据的艺术
-
发表于:
2017-3-29 17:26
4084
-
隐藏数据的艺术
什么是数据隐藏?
纵观人类历史,隐藏信息的技术一直在演变,从凯撒密码到摩斯电码,从隐形墨水到防伪水印,无论是好的一面,还是坏的一面,都有它存在的价值,一直默默地影响着我们的生活,只是我们没有刻意去留意。
一般来讲,隐藏数据方式分为两类,一种是加密,一种是隐写,加密对于我们技术人员来说经常碰到,比如传输链路的加密,比如数据存储的加密。而隐写我们可能接触较少,或许你经常在古装剧里面看到,有个侠客得到一本武功秘籍,但是却是空白的,需要泡泡水或者在火上烤,才会显现出文字来,其实这种就是隐写,它是通过特殊墨水写的,现实中还真的存在,比如笔者之前看到一则新闻,有人用隐形墨水写借条。。。回到正题,如何区分两者的区别呢,其实如果数据是杂乱无章的话,那肯定是加密,反之则可以确定是隐写。
为什么要隐写数据?
很多人可能觉得隐藏信息最好的方式是加密,从攻防成本来看确实是,然而是否有考虑另一个层面的问题,比如加密,对于商业环境而言,密钥的如何安全地保存是个很大的挑战,特别是在对称加密,而非对称加密则存在另一个问题,那就是计算的性能。对于一些敏感度边界比较模糊的数据,这个时候,加密可能是个鸡肋,而隐写则是一种更好的方案,至少在提高攻击成本方面可以作为辅助的策略。
如何隐写数据?
隐写的方式很多,比如上文提到的隐形墨水或者人民币上面的防伪水印,而本次主要介绍下图片隐写技术。从概念上看,隐写的原则是保证原始数据被掩藏或不可见,常见的图片隐写方法主要分为两类,一种是插入,一种是替换。第一种通常是利用文件格式中的空白部分,插入隐藏的信息,使用时通过识别位置进行读取,它并不会修改文件的原始内容。第二种是替换,它并不会在文件中增加新的内容,而是通过修改文件中某些字节信息或者顺序来隐藏原始信息。下面让我们来看看具体的案例:
如图所示,JPHS这个工具提供了插入式隐藏数据的功能,需要隐藏的数据被插入到图片文件格式中,图片浏览器在解析时会自动忽略,不影响浏览,同时它也提供隐藏数据的还原功能。
另一种是替换的方式隐藏数据,其核心是替换图片中一个或多个字节的最低有效位LSB,这种方式不影响图片的渲染效果,如需要还原数据,需要把这些比特位还原重组才行,这种隐藏数据的方式很难检测,因为通常没有原始文件做比对。
最低有效位替换利用的是图像的24位调色板,我们知道调色板有红蓝绿三种原色,每8位代表一种原色,三种原色分别有256个色调,如下图红色有255,刚好是11111111。
一张图片需要混合这三种原色来生成每个像素的颜色,在最低有效位替换算法中,8位颜色值最后一位被替换或者不变(0或者1),每个字节的最低有效位组合起来就是隐藏的信息,如每8位代表一个ASCII字符。这种方式可以非常好地隐藏信息。下面这个ImageHide工具就是使用这种方式来隐藏数据。
当然,还有其他更好的方式隐藏数据,我们在此就不做详细介绍,感兴趣的童鞋可以关注这个领域做深入研究。
你好吗
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)