隐写术(Steganography,简称Steg或Stega)一词来源于约翰尼斯·特里特米乌斯(Johannes Trithemius)的著作 Steganographia ,如图2.0.1所示。该书的书名源于希腊语,意为“隐秘书写”。该书成书于1499年左右,但被污名化为“黑魔法”。为此,特里特米乌斯不得不从斯蓬海姆(Sponheim)的本笃会修道院辞职,在维尔茨堡的Schottenkloster修道院度过余生。在蒙受了百余年的不白之冤后,1606年重修本笃会修道院时,才发现了他的隐写术三部曲,并将其在法兰克福出版。该书看上去是有关黑魔法的,但实际上介绍的是密码学与信息隐藏,如图2.0.2所示。
所谓隐写,就是把秘密隐藏到普通的信息中进行传送。隐写是信息隐藏技术领域的一个重要分支,信息隐藏技术还包括数字水印、隐蔽信道、阀下信道和匿名信道等。
隐写术的发展在很大程度上是出于军事上隐蔽通信的需要。在古希腊战争中,为了安全地传送军事情报,奴隶主剃光奴隶的头发,将情报纹在奴隶的头皮上,待头发长出来之后再派他们去传送消息。收信人则要先为奴隶理发,才能看到纹在头皮上的信息。我国古代有文字可考的最早的信息隐藏可见于《六韬》中对“阴符”的记载。“阴符”是一种高度保密的通信方式,其方法是先制造形制、花纹不同的兵符,每一种兵符表示一种固定的含义。兵符对应的含义需要事先约定好,只有当事人可以理解,若被敌方截获,他们也无法知道其中的含义。
图2.0.1 关于隐写术的著作 Steganographia
图2.0.2 Steganographia 的内容
随着网络技术的发展,隐写术也频繁地应用在网络安全领域。目前的隐写术是指将某些秘密信息隐藏于数字媒介等载体之中,而又不损害载体原来信息的表达,从而实现掩盖秘密信息存在的技术。常见的隐写载体包括 文本、图像、音频、视频 等。
在CTF比赛中,常把隐写类题目简写为Steg。在企业或者行业内比赛中,隐写属于 必考题 ,这是因为这类题目涉及的知识点繁杂,包括基本文件格式、常见隐写方法以及隐写软件使用等,有些知识点需要选手深入地理解隐写原理并具备较强的编程能力。一般而言,比赛中的隐写类题目主要考查两点:隐写方法识别和隐写信息提取。
图像隐写是CTF比赛中最常见的题目。图像文件有多种格式,会涉及元数据、信息丢失、无损压缩、数据校验和可视化数据编码分析等。同时,基于音频、视频和文本文件的隐写方式也日趋多样化,本章对这些载体中隐写信息的识别与提取方法进行了较为详细的说明,并提出了“ 图像隐写三板斧 ”的解题“套路”,建议初学者重点掌握。