软件学报  2020, Vol. 31 Issue (1): 228-245   PDF    
隐蔽信道新型分类方法与威胁限制策略
王翀1,2,3 , 王秀利4 , 吕荫润1,2,3 , 张常有3 , 吴敬征1,3 , 关贝5 , 王永吉1,3     
1. 中国科学院 软件研究所 协同创新中心, 北京 100190;
2. 中国科学院大学, 北京 100049;
3. 计算机科学国家重点实验室(中国科学院 软件研究所), 北京 100190;
4. 中央财经大学, 北京 100081;
5. Qatar Computing Research Institute, HBKU, Doha 999043, Qatar
摘要: 隐蔽信道是指恶意通信双方通过修改共享资源的数值、特性或状态等属性,来编码和传递信息的信道.共享资源的选取,由隐蔽信道的类型与具体通信场景所决定.早期,存储隐蔽信道和时间隐蔽信道主要存在于传统操作系统、网络和数据库等信息系统中.近年来,研究重点逐渐拓展到了3类新型隐蔽信道,分别为混合隐蔽信道、行为隐蔽信道和气隙隐蔽信道.对近年来国内外隐蔽信道研究工作进行了系统的梳理、分析和总结.首先,阐述隐蔽信道的相关定义、发展历史、关键要素和分析工作.然后,根据隐蔽信道共享资源的类型以及信道特征,提出新的隐蔽信道分类体系.首次从发送方、接收方、共享资源、编码机制、同步机制、评价指标和限制方法这7个方面,对近年来新型隐蔽信道攻击技术进行系统的分析和归纳,旨在为后续隐蔽信道分析和限制等研究工作提供有益的参考.进而,讨论了面向隐蔽信道类型的威胁限制技术,为设计面向一类隐蔽信道的限制策略提供研究思路.最后,总结了隐蔽信道中存在的问题和挑战.
关键词: 隐蔽通信    隐蔽信道    隐蔽信道分类    信息隐藏    行为隐蔽信道    
Categorization of Covert Channels and Its Application in Threat Restriction Techniques
WANG Chong1,2,3 , WANG Xiu-Li4 , LÜ Yin-Run1,2,3 , ZHANG Chang-You3 , WU Jing-Zheng1,3 , GUAN Bei5 , WANG Yong-Ji1,3     
1. Cooperative Innovation Center, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China;
2. University of Chinese Academy of Sciences, Beijing 100049, China;
3. State Key Laboratory of Computer Science(Institute of Software, Chinese Academy of Sciences), Beijing 100190, China;
4. Central University of Finance and Economics, Beijing 100081, China;
5. Qatar Computing Research Institute, HBKU, Doha 999043, Qatar
Abstract: Covert channels are communication channels that allow secret transfer of information between two malicious processes by modifying the value or modulating the timing behavior of shared resources. Shared resources in covert communications vary according to the underlying covert channels. Initially, covert storage channels and covert timing channels are widely existed in information systems. More recently, the focus has shifted towards three new kinds of covert channels, namely, covert hybrid channels, covert behavior channels, and air-gap covert channels. This study surveys existing techniques for constructing covert channels that have been reported in literature, especially the covert channels that are presented in recent years. First, the definition, history, and key elements of covert channels are introduced. Covert channel analysis is also included. Second, a categorization technique is proposed for these covert channels based on the shared resources and channel characteristics. The traditional and new covert channel attack techniques are systematically analyzed based on the seven key elements of the covert channels. Third, the countermeasures for covert channels aforementioned are also demonstrated to restrict the threat brought by covert channels and to provide guidelines for future works. Finally, the challenges and problems on covert channels are provided.
Key words: covert communication    covert channel    covert channel categorization    information hiding    covert behavior channel    

随着信息安全技术的不断发展, 信息的安全传输越来越受到人们的重视.当信息以明文的形式传输时, 很容易遭到拦截和篡改, 无法保证信息的安全性和完整性.通常利用加密(cryptography)算法对信息进行编码形成密文, 没有秘钥的其他接收者无法理解通信内容.然而随着计算机软件和硬件的不断发展, 很多加密算法的破解时间日益缩短[1], 加密技术受到了严重的挑战, 甚至目前使用较为广泛的区块链技术也面临着潜在的安全威胁[2].此外, 加密信息通常是一系列乱码, 容易引起恶意拦截者的注意, 即使拦截者无法破解加密算法, 也可以进行破坏或干扰等操作, 影响信息的正常传输.在此情况下, 信息隐藏(information hiding)技术引起了研究者们的注意.信息隐藏将秘密信息以一种特定方式隐藏在公开的宿主信息载体上, 使人们难于察觉到秘密信息的存在.

隐蔽信道(covert channel, 简称CC)是实现信息隐藏(information hiding)的重要技术[3], 其概念最初由Lampson[4]在1973年提出, 主要关注的是单片机系统(monolithic system)中的安全机制问题.隐蔽信道利用隐蔽信息发送方和接收方所共享的资源(共享资源)编码隐蔽信息, 并借助本意不是用来传输信息的信道传递隐蔽信息[4].隐蔽信道与加密技术的区别在于:加密仅仅使得通信内容不被恶意观测者所理解; 而隐蔽信道在保护通信内容的同时注重隐藏通信自身的存在, 使得非接收者无法察觉到通信的发生, 增强了通信的隐蔽性和安全性.

随着编码理论、移动通信和云计算的飞速发展, 隐蔽信道已经从一个概念思想转变为具有实践性的信息泄露技术[5].许多研究表明, 隐蔽信道是多级安全系统的重要威胁, 例如传统桌面操作系统、数据库系统和网络系统等[6-8].基于隐蔽信道机制的恶意信息泄露对信息安全构成了严重威胁, 例如, 违反操作系统的安全策略、泄露机密信息、破坏云环境中的隔离性等[9-12].不同类型隐蔽信道的应用场景、威胁程度和分析方法各不相同, 因此, 分析隐蔽信道的构成要素, 提出信道分类方法, 进而为限制各类隐蔽信道威胁提供具有通用性的策略和参考, 对于研究和发展隐蔽信道限制技术是十分必要的.

根据现有研究工作和大量文献来看, 隐蔽信道主要分为5种:早期出现的存储隐蔽信道(covert storage channel, 简称CSC)[13]和时间隐蔽信道(covert timing channel, 简称CTC)[14], 以及后续新出现的混合隐蔽信道(covert hybrid channel, 简称CHC)[15]、行为隐蔽信道(covert behavior channel, 简称CBC)[16, 17]和气隙隐蔽信道(air-gap covert channel, 简称ACC)[18].CSC的发送方通过修改共享资源的数值(例如, 数据包中字段的数值)来编码隐蔽信息, 接收方读取共享资源的数值并解码隐蔽信息; CTC发送方通过调节共享资源的时间特性(例如, 包间隔时延[19])来编码隐蔽信息, 接收方通过观察共享资源的变化解码隐蔽信息; CHC是存储隐蔽信道和时间隐蔽信道的结合体, 目标是提高信道容量或增强隐蔽性; CBC基于共享资源的行为、状态等具有可改变性的属性编码隐蔽信息, 共享资源可以是网络、计算机系统和通信中的现象或者事件; ACC旨在于打破气隙系统(air-gapped system)的隔离性以及突破系统的访问控制策略.

目前, 国内外学者在隐蔽信道的相关领域有了大量的研究成果, 但是现有隐蔽信道分类方法[9, 10, 20]大多是针对某一类隐蔽信道进行分类, 其中以基于网络的隐蔽信道(存储隐蔽信道和时间隐蔽信道)居多, 并且分类粒度较粗.此外, 近些年来, 新型隐蔽信道(混合隐蔽信道、行为隐蔽信道和气隙隐蔽信道)技术也得到了快速发展.然而, 目前国内很少有对于新型隐蔽信道的分类和分析工作; 国外已有工作包含新型隐蔽信道的构建、检测和限制等分析工作, 但是缺乏对此类隐蔽信道的分类和总结.本文的分类工作不仅涵盖了存储和时间隐蔽信道, 还包括了混合、行为和气隙这3类新型隐蔽信道, 弥补了现有工作[9, 10]的不足; 同时, 针对存储隐蔽信道和时间隐蔽信道提出了更细粒度的信道分类方法.此外, 本文还分析和归纳了最近5年新提出的隐蔽信道技术.

本文从分析隐蔽信道的发展历史、通信模型和信道分析工作开始, 讨论了构成隐蔽信道的5个关键要素.通过分析隐蔽信道的构建机理和关键要素, 本文将现有隐蔽信道分为CSC、CTC、CHC、CBC和ACC这5大类信道.然后, 根据每类隐蔽信道的实际情况, 提出较为全面的、细粒度的隐蔽信道分类体系及分类依据, 同时说明不同类别隐蔽信道之间的区别.然后, 本文从发送方、接收方、共享资源、编码机制、同步机制、评价指标和限制方法这7个方面, 详细地分析和归纳了近5年关键的隐蔽信道技术.最后讨论了该领域面临的主要问题和今后的发展方向.通过对隐蔽信道的分类、分析和归纳, 本文希望为后续设计高效的、通用性强的隐蔽信道限制技术提供有益的参考和研究思路.

1 背景知识 1.1 信息隐藏

随着相关研究工作的不断发展, 信息隐藏已成为一门包含许多分支技术的学科.较为常用的信息隐藏技术的分类方法是由Petitcolas等人[3]提出的, 将信息隐藏技术分为隐写术、匿名通信、版权标识和隐蔽信道这4类.隐写术是一种研究如何利用多媒体信息的冗余性和人类感知的局限性将秘密信息隐藏在载体数据中的技术.匿名通信则注重于对通信关系的隐藏, 使得除了秘密信息的发送者和接收者之外的第三方无法获取通信参与者的身份等信息, 主要目的是隐匿秘密信息的来源, 通常应用于合法用户在线选举投票、保护网络自由发言以及电子邮件匿名举报等方面.版权标识则与隐写术有所差别, 强调对主动攻击的识别能力和抵抗攻击的鲁棒性[3], 主要功能在于利用数字水印等技术完成数字作品的身份认证和版权保护工作, 防止作品侵权.隐蔽信道是指不是被设计或本意不是用来传输信息的通信信道.相比于其他3种信息隐藏技术, 隐蔽信道更注重于隐藏信道自身的存在, 大大增强了通信过程的隐蔽性, 从而保证了秘密消息的安全传输[4, 7].此外, 随着隐蔽信道编码和解码机制的日益完善, 即使隐蔽信道自身的存在被发现, 经过编码后的机密信息也很难被第三方所解读.总而言之, 隐蔽信道被认为是信息系统的重要威胁之一[7, 10].本文将在之后的章节对隐蔽信道进行详细的讨论.

1.2 隐蔽信道发展历史

1973年, Lampson[4]首次给出了隐蔽信道的定义.1984年, Simmons[21]提出的囚犯问题描述了隐蔽信道的通信场景.其中, Alice和Bob被关在监狱的不同房间中并试图越狱.两人需要商定逃跑计划, 但是所有通信信息都被看守人Wendy所监视[22, 23].一旦Wendy发现有异常信息, 就会更加严格地看管两人, 彻底杜绝越狱的可能性.因此, Alice和Bob需要使用Wendy无法察觉的通信手段完成越狱, 例如隐蔽信道.Craver[24]拓展了上述问题并引入了3个新类型的看守人:(1)消极的看守人可以发现隐蔽通信的存在, 但不能修改隐蔽信息; (2)积极的看守人可以稍微修改隐蔽信息, 但要保持全文大意不变; (3)恶意的看守人可以任意修改隐蔽信息.Alice和Bob相当于隐蔽信道中的发送方和接收方, Wendy是系统安全策略的设计者.隐蔽信道的目的是在发送方和接收方之间构建隐蔽信息流的传输通道, 避免被安全策略所检测到.早期, 研究人员关注本地存储时间隐蔽信道, 例如, 操作系统隐蔽信道.随着计算机网络的发展, 研究重点逐渐转移到了网络隐蔽信道[9, 14].此类信道利用网络协议内容或数据包间隔时延(inter-packet delay, 简称IPD)等资源编码隐蔽信息.新型隐蔽信道, 例如, 混合隐蔽信道、行为隐蔽信道和气隙隐蔽信道成为了最近几年的研究热点.这些隐蔽信道利用共享资源的不同特性达到提高信道容量或者增强隐蔽性等目的.

1.3 隐蔽信道的关键要素

根据隐蔽信道发展现状和已有研究工作成果, 本文认为, 一个隐蔽信道通常含有5个关键要素:发送方、接收方、编码机制(解码机制)、同步机制以及共享资源.发送方通过更改共享资源的特定属性编码隐蔽信息.接收方通过读取或观察共享资源的数值、状态等属性值的变化来解码隐蔽信息.同步机制和编码机制保证了信息传输的正确性.以前, 传统隐蔽信道研究将隐蔽信道表示为可信计算基三元组(trusted computing base, 简称TCB)[7]: ⟨variable, PAh, PVi⟩, 其中, variable表示系统中的变量, PAhPVi分别是修改此变量的高安全级别TCB原语和低安全级别TCB原语.由于当时隐蔽信道研究关注于本地隐蔽信道(例如, 操作系统隐蔽信道), 定义中的variable特指系统中的共享变量.随着隐蔽信道的发展, 研究和定义已经拓展到了行为隐蔽信道、气隙隐蔽信道以及混合隐蔽信道, 而这些信道使用电磁信号、热信号和Wi-Fi强度等共享资源编码隐蔽信息, 而不仅仅局限于系统中的共享变量.因此, 结合目前隐蔽信道研究现状, 本文将共享变量这个概念拓展为共享资源, 即发送方和接收方所能修改和感知的资源, 双方能够利用此资源编码和传递隐蔽信息.共享资源的选取方式与隐蔽信道的类型和实际通信场景有关, 例如, 网络中的IPD、云计算环境中的指令缓存和内存总线[25]、微内核中的IPC机制[26]和操作系统中的临时文件等.

1.4 隐蔽信道分析工作内容

根据现有研究工作以及《可信计算机系统评估准则》(trusted computer system evaluation criteria, 简称TCSEC)的要求, 隐蔽信道分析工作主要包含以下4个方面.

(1) 隐蔽信道标识.通过全面地扫描和分析目标系统, 发现系统中的隐蔽信道和可能被用于构建隐蔽信道的共享资源, 例如Denning[27]提出的信息流分析方法、Tasi等人[28]提出的语义信息流标识方法、Shrestha等人[29]使用的基于支持向量机的框架以及Yan等人[26]使用的ReplayConfusion方法;

(2) 隐蔽信道构建.该项工作是实现真实隐蔽信道通信场景和模拟攻击者行为的方法.例如:基于模型的构建方法[11]忽略具体实现场景的特性, 而更关注信道本身; 基于共享资源的构建方法[25, 30, 31]注重具体通信场景中共享资源的特性;

(3) 隐蔽信道威胁度量.威胁度量的目标是评估隐蔽信道威胁程度, 为隐蔽信道限制工作提供指导和判定依据.目前, 隐蔽信道威胁度量指标主要包含[7]:信道容量(传输速率), 即隐蔽信道能够取得的最大传输速度; 准确率, 即隐蔽信道传输信息的保真能力; 短消息, 即隐蔽信道传输机密而又短小的隐蔽信息的能力, 弥补信道容量指标的不足.还有研究人员提出抗检测能力指标[6]量化隐蔽信道的隐蔽性, 作为对现有威胁度量体系的补充;

(4) 隐蔽信道限制.目的是限制或消除隐蔽信道带来的威胁, 包含审计、限制和消除这3项工作.但是近些年的隐蔽信道研究指出:隐蔽信道的威胁是无法完全消除的[9, 32, 33], 彻底消除隐蔽信道需要消耗大量系统资源, 会严重影响系统可用性.审计只能做到事后追责, 而非事前预防, 无法及时阻止信息泄露.因此, 隐蔽信道限制是目前所普遍采用的方法.经典隐蔽信道限制技术是向信道中添加噪音(干扰)[34, 35]和添加时延[36], 达到干扰隐蔽信息传输以及降低信道容量、准确率的目的.例如, Kang等人[37]提出了Pump限制算法, 美国海军研究实验室(naval research laboratory)的Network Pump[38]以及Wu等人[36]提出了Xenpump.

隐蔽信道分析工作为清晰地了解隐蔽信道构成、度量信道威胁程度和设计相应的限制策略提供了准则.因此在本文第2节中, 将以隐蔽信道分析包含的4个工作为指导, 从隐蔽信道的5个关键要素、度量指标和限制方法这7个方面, 对近年来的重要隐蔽信道技术进行分析和归纳, 从而为信道分类方法提供依据和指导, 同时也为设计面向隐蔽信道类型的威胁限制技术提供依据.其中, 发送方、接收方、共享变量、编码机制和同步机制这5个要素属于隐蔽信道标识工作的目标, 基于这5个要素在实际场景中构建信道则属于隐蔽信道构建工作的范畴.度量指标对应于隐蔽信道威胁度量工作, 是研究人员量化隐蔽信道威胁性的依据.限制方法对应于隐蔽信道限制工作, 即利用信道设计者提出的技术或者现有研究工作中的方法限制隐蔽信道的威胁.

2 隐蔽信道分类

本节将隐蔽信道分为存储、时间、混合、行为和气隙这五大类.根据隐蔽信道分析工作和现有研究工作, 分别从发送方、接收方、共享资源、编码机制、同步机制、评价指标和限制方法这7个方面详细地分析和归纳每类隐蔽信道.此外, 相比于混合、行为和气隙这3类新型隐蔽信道, 存储隐蔽信道和时间隐蔽信道发展历史悠久, 相关研究工作数量较多.为了使研究问题更加清晰, 本节根据共享资源的使用方式等因素提出细粒度分类方法, 将存储和时间隐蔽信道细化为多个小类.

2.1 存储隐蔽信道

存储隐蔽信道以共享资源的内容为隐蔽信息的载体, 主要可以分为网络存储隐蔽信道和本地存储隐蔽信道.网络存储隐蔽信道主要面向实时通信和网络系统, 例如分布式计算网络中的隐蔽数据传输[39], 很多研究工作都将隐蔽信息嵌入到数据包的字段中.本地信道主要面向单机和主机系统, 利用系统中的软件和硬件资源的内容作为隐蔽信息的载体, 例如, 共享存储区域和共享变量等.

2.1.1 网络存储隐蔽信道

(1) 字段长度

此类隐蔽信道通过填充内容等方式更改整体数据包的长度或者某一包头字段的长度来编码隐蔽信息, 例如:当字段长度小于(或大于)某一个预设阈值时, 表示发送比特0(或比特1).

Epishkina等人[40]提出了利用数据包长度编码隐蔽信息的方法, 根据长度将数据包分为两个集合L0L1.发送比特0时, 则从L0中选取数据包并发送; 反之, 则发送L1中的数据包.Epishkina等人还借助多个数据包长度同时表示多位隐蔽信息.Girling[41]提出了通过调节链路层中帧的长度编码隐蔽信息的方法, 此方法也可以应用于IP、UDP以及TCP数据包[42].Rios等人[43]通过调节DHCP(dynamic host configuration protocol)包中可选项的数量控制包的长度, 从而构建隐蔽信道.还有一些研究将IPSec消息[44]、IP分片[45, 46]和IEEE 802.3帧填充字段等数据单元(data units)的长度[47]作为隐蔽信息的载体.

(2) 字段位置

此类隐蔽信道会通过更改数据包中某一个或多个元素/包头字段的位置或排列顺序编码隐蔽信息.

Rios等人[43]借助DHCP协议中可选项的位置编码隐蔽信息.例如, 预先选取DHCP的4个可选项, 其顺序的排列组合可以表示不同的4位二进制数.同时, Rios等人[43]还利用DHCP单个可选项在整体可选项中的位置编码隐蔽信息, 每次只能传输一个比特.Zou等人[48]利用FTP协议中命令的顺序来编码隐蔽信息.研究人员还利用IPv4中的字段、IPv6扩展包头字段以及HTTP协议中头部字段的顺序构建隐蔽信道[10].

(3) 冗余字段

此类隐蔽信道根据具体的通信协议, 扩展和填充协议中的未使用字段和保留字段, 利用正常数据包额外的空间作为隐蔽信息的载体.

在IPSec连接中, Sadeghi等人[44]利用IP数据包中的ECN(explicit congestion notification)字段和DS (differentiated services)作为隐蔽信息的载体.Muchene等人[49]以小于以太网帧中所规定IP数据包的尺寸封装IP数据包, 然后在IP数据包和以太网帧的间隙中嵌入隐蔽数据.Rios等人[43]使用DHCP协议中的sname和file字段作为载体, 在字符串结束符中嵌入隐蔽数据.此外, 如果hlen字段的数值大于网络地址的大小, 则启用未使用字段chaddr传递隐蔽信息.还有一些研究人员利用IEEE 802.3协议中的未使用域、IP协议中路由记录字段、IP包头中的校验字段和TCP协议中的未使用位等字段作为隐蔽信息的载体[9, 10].

(4) 字段数值修改

此类隐蔽信道通过修改头部字段的数值编码隐蔽信息.网络协议中的某些包头字段数值是随机的或者仅提供有限个备选的数值, 发送方利用这些数值来表示不同的隐蔽信息.一些头部字段中数值的大小写和最低有效位(least significant bit, 简称LSB)也可以用来编码隐蔽信息.

Classen等人[50]基于WARP(wireless open-access research platform)和Wi-Fi协议提出了4种隐蔽信道.第1个信道利用Wi-Fi帧中的STF(short training field)的数值作为隐蔽信息的载体, 结合PSK(phase shift keying)编码比特0和比特1.第2个信道使用OFDM(orthogonal frequency-division multiplexing)的数值来修正Wi-Fi帧中的CFO(carrier frequency offset), 并利用CFO表示隐蔽信息.第3个CS(camouflage subcarriers)和第4个CPR(cyclic prefix replacement)信道是对已有信道的改进工作[51, 52].CS信道基于802.11a/g协议使用子载波作为隐蔽信息的载体.CPR信道则利用802.11a/g协议中的CP(cyclic prefix)隐藏信息.Vines等人[53]采集游戏程序在通信过程中的真实数据包并分类.当发送隐蔽信息时, 依据编码规则选取相应类别的数据包, 并用其内容替换正常数据包的内容.Tuptuk等人[54]在温度传感器测量值的误差允许范围内, 通过修改传感器数据包的LSB编码隐蔽信息, 并利用预定义16比特前导码(preamble)作为同步机制.研究人员还利用BACnet(building automation and control networking)的消息类型[55]、IP地址等数值[44, 56]和DHCP协议中的xid[43]的数值构建隐蔽信道.

(5) 隐蔽信息直接嵌入

此类隐蔽信道直接将隐蔽信息嵌入到网络数据包中.

Daneault等人[57]提出了一种使用中继构建网络隐蔽信道的方法, 该方法在HTTP协议的GET请求的URL中添加隐蔽信息, 以Google图片搜索为中继传输信息, 利用Google的公信力增加信道隐蔽性.然后, Google图片搜索会访问含有隐蔽信息的网址, 完成隐蔽信息的传送.Ameri等人[58]将隐蔽信息嵌入到NTP协议中, 并将隐蔽信息与时间戳做XOR操作, 增加隐蔽性.发送和接收双方分别有类似TCP三步响应的同步机制.Johnson等人[59]在HTTPS的数据域中添加隐蔽信息, 利用MitM(man-in-the-middle)攻击更改信息流, 如果没有原本HTTPS请求或者加密秘钥做对比, 则这个隐蔽信道是无法被检测到的.Khader等人[60]使用端口试探技术(port knocking)构建隐蔽信道, 发送方会将隐蔽信息嵌入至图像的最低有效位中, 利用与接收方事先约定的端口传输隐蔽信息. Rezaei等人[61]讨论了在Long Term Evolution-Advanced协议的头部字段中嵌入隐蔽信息的可行性.

2.1.2 本地存储隐蔽信道

(1) 共享变量数值

此类隐蔽信道通过修改共享变量的数值编码隐蔽信息.发送方按编码规则修改共享变量的属性值, 接收方不断或周期性地扫描共享变量以解码隐蔽信息, 共享变量的选取影响此类信道的传输速率、准确率和隐蔽性.

Lin等人[30]提出了3种隐蔽通信协议, 分别为BP(basic protocol)、TCTP(two-channel transmission protocol)和SAP(self-adaptive protocol), 并构建了相应的隐蔽信道.3种信道的共享资源都是Linux操作系统中的last_pid, 通过给last_pid增加不同的数值来表示比特0和比特1.BP信道是一个基础信道, 缺乏同步机制和抗干扰能力. TCTP信道对BP信道进行了改进, 利用临时文件实现了同步机制.SAP信道则进一步利用校验位实现了隐蔽信息的重传机制.Luo等人[13]基于Docker和Linux系统设计了GUM(globally used memory)信道和inode节点信道.GUM信道通过增加不同程度的内存使用量编码比特0和1, 接收方则通过读取/proc/meminfo文件获取隐蔽信息.inode信道以inode节点的数值作为隐蔽信息载体, 是一种资源耗尽型的信道[13].Fern等人[62]利用SoC空闲状态下未定义的总线信号, 在SoC组件之间构造了隐蔽信道.还有研究人员[63]向DNA(deoxyribonucleic acid)中插入含有隐蔽信息的人工合成核苷酸序列, 利用该序列与宿主DNA的相似性验证信道的抗检测能力.

(2) 共享组件内容

共享组件通常会为发送方和接收方提供一块共享存储区域.与共享变量信道相比, 此类信道可以一次性发送多位编码后的比特信息, 甚至直接将信息写入共享存储区域, 信道容量通常较高.

Hussein等人[64]基于动态分配的共享物理内存(dynamically-allocated shared physical memory)传递隐蔽信息, 发送进程将隐蔽信息装载到指定存储页, 然后协同接收进程迫使VMM(virtual machine monitor)强制回收该存储页, 并将其分配给接收VM(virtual machine)作为额外的存储空间.Luo等人[13]利用系统中的内核消息缓冲区(kernel message buffer, 简称KMB)作为共享资源构建了KMB信道.由于向KMB中写入隐蔽信息需要拥有特殊权限, 而读取KMB却不需要, 利用这个特性可以通过KMB泄露一些权限相关的机密信息.

2.1.3 存储隐蔽信道分析和归纳

由于文章篇幅所限以及关注点等因素, 本节从隐蔽信道分析的角度对近5年存储隐蔽信道的关键研究进行分析和归纳, 见表 1.其中, 存储隐蔽信道的限制方法有很多, 例如, 在隐蔽信道中添加干扰/噪音(add noise, 简称AN)[65]、为信道的特定操作添加时延(add delay, 简称AD)[36]以及利用通信量规范化(traffic normalization, 简称TN)[10]等.可以看出:近5年来, 研究人员利用未被发现的协议字段作为网络信道的隐蔽信息载体, 同时借助虚拟机、Docker等新技术构建本地隐蔽信道.存储信道的传输速率一般较高, 而添加噪音的方法也可以将本地信道的传输速率降到一个很低的范畴.利用TN方法可以降低甚至是消除大部分存储网络信道的威胁.

Table 1 Summary of key covert storage channels in recent five years 表 1 近5年关键存储隐蔽信道总结

2.2 时间隐蔽信道

时间隐蔽信道主要分为网络信道和本地信道, 利用网络或本地系统中共享资源的时间特性作为隐蔽信息的载体, 例如缓存的访问时延(access latency)和包间隔时延等.

2.2.1 网络时间隐蔽信道

(1) 包间隔时延

包间隔时延是时间隐蔽信道中较为常用的共享资源, 大小由数据包的发送时间决定.编码机制通常会设定一个阈值, 当IPD大于此阈值时表示隐蔽信息比特1(比特0), 当IPD小于此阈值时表示隐蔽信息比特0(比特1).

Tahir等人[33]提出了跨虚拟网络的时间隐蔽通道, 借助数据中心的共享网络资源在逻辑上隔离的虚拟网络中传输机密信息.发送方通过调整正常数据包的IPD控制数据包达到接收方的时间.如果在预定的周期T内接收方未收到数据包, 则所传输的隐蔽信息是比特0, 反之则是比特1.Tahir等人还评估了信道的最大传输速率并提出了一个优化的编码机制.实验结果表明, 此信道可以破坏商业云服务EC2和Azure中的安全机制.Archibald等人[66]认为:视频实时通信场景通常要求较高的数据包传输速率, 致使单一IPD过短, 接收方很难根据单个IPD长短区分比特0和比特1.因此, Archibald等人在Skype中基于多个IPD的累加构建时间隐蔽信道, 使得接收方能够明确地区分和解码隐蔽信息; 同时还引入喷泉码[66]编码隐蔽信息, 提高了信道容量.Liu等人[67]提出了模拟喷泉码(analog fountain codes)以及通用模型拟合代码框架(general model-fitting coding framework), 进一步提高隐蔽信道在IP网络电话通信场景中的可用性.Liguori等人[68]基于IPD实现了3种开源时间隐蔽信道(open- source covert timing channel, 简称OSCTC), 验证MILS(multi independent levels of security/safety)架构的有效性, 并讨论了同步机制和纠错机制的重要性和必要性.第1种OSCTC信道利用一个固定的模式保证发送方和接收方之间的信息同步.第2种OSCTC信道利用Manchester Coding作为同步机制, 在此基础上, 第3种同步OSCTC信道借助Hamming Code保证隐蔽通信的正确性.还有一类基于数据包传输速率的隐蔽信道[9, 69], 此类信道通过控制固定周期T内数据包发送的速率来编码不同的隐蔽信息, 实质上类似于前文提到的借助多个IPD累加所构建的时间隐蔽信道[66].

(2) 数据包到达时间

此类信道通过控制多个数据包发送时间或达到时间编码隐蔽信息.例如, 可以通过调制数据包发送顺序来控制数据包到达接收方的时间.

El-Atawy等人[35]提出了利用无序数据包(out-of-order packets)构建时间信道的方法, 该方法每次选取k个正常数据包, 根据待发送信息移动其中某几个包的顺序, 利用移动前后数据包顺序的变化计算codeword[70]并编码隐蔽信息.同时, 该信道还借用二进制反射格雷码(binary reflected Gray codes)纠正隐蔽信息中的错误.Herzberg等人[71]在两个VPN站点之间的公共网络中构建了隐蔽信道.信道发送方是一个处在公共网络中的MitM攻击者, 接收方是分别处于两个VPN站点上的MitE(man-in-the-end)攻击者.两个MitE攻击者通过网络正常通信, 而MitM攻击者通过修改其中数据包的顺序控制数据包到达接收方的时间, 从而编码隐蔽信息.

(3) 网络缓存访问时延

此类隐蔽信道利用系统中各类缓存的访问时延作为隐蔽信息的载体, 例如一级缓存和二级缓存等.基于缓存的隐蔽信道较为常见, 但设计的方法各式各样, 因此单独归为一类.

Liu等人[72]借助LLC(last-level cache)访问时延长短构建了跨虚拟机的隐蔽信道, 该信道采用PRIME+ PROBE算法确保了信息的传输正确率和速率.在PRIME阶段, 发送方会根据待发送信息填充LLC, 之后进入等待状态.在PROBE阶段, 接收方会持续地从LLC中尝试读取数据并测量访问时延, 并根据时延长短解码隐蔽信息.该信道不依赖于虚拟机中的操作系统、虚拟机监控器和共享内存的缺陷, 具有高度的实用价值.Yossef等人[73]将上述PRIME+PROBE算法扩展到了JavaScript, 同样基于LLC的访问时延设计了微架构下的隐蔽信道攻击方法.该方法不要求目标机器(发送方)预先安装恶意软件, 而是需要通过浏览器访问一个攻击者预先设计好的网页, 攻击者会向LLC中装载网页中的特定内容, 并执行PRIME步骤记录访问时延.然后, 攻击者引导目标机器做出特定的动作, 例如, 目标机器浏览或开关网页, 这些动作会使得LLC中的内容发生变化.之后, 攻击者再执行PROBE步骤, 通过访问时延可以推测出LLC中内容的变化, 从而解码隐蔽信息.同时, 在记录了大量LLC的访问时延的基础上, 利用聚类方法在用户行为和LLC的不同访问时延之间构建映射关系, 可以令攻击者远程地推测用户行为.该工作在实际部署中具有较好的可用性.

Yao等人[74]基于非统一内存访问的体系结构在服务器上的两个套接字(socket)之间构建了时间隐蔽信道.每个套接字都有本地L1缓存和LLC.当一个套接字的访问内容不在本地缓存中时, 称为本地未命中(local miss, 简称LM), 会使用其他套接字的缓存作为更低一层级的LLC.若此时命中, 则称为远程命中(remote hit, 简称RH).显然, RH的时间要长于本地命中的时间.发送方首先借助木马程序, 利用系统命令清除所有套接字的缓存内容, 然后将特定内容装入自己的缓存中.此时接收方的缓存为空, 产生LM, 需要访问发送方的缓存并产生RH.该信道编码机制如下:发送比特1时, 令接收方产生4个RH; 发送比特0时, 令接收方产生两个RH.Irazoqui等人[75]指出:目前大部分时间隐蔽信道都是面向Intel处理器的, 其缓存是包含式(inclusive)的, 缺乏面向独立式(exclusive)缓存的时间信道, 因此提出了基于LLC的时间隐蔽信道.与之前方法不同的