技术研究
隐蔽信道分析及测试
邱梓华 顾健 邱卫东
隐蔽信道(covert channel)
是由于 T C B 实施了非自
主访问控制策略引起的。
执行结果的信道。
它自己使用的系统资源(例如:CPU 时间)
利用正常情况下不认为是数据客体的
的方法,从而影响到实际的响应时间,另
实体,从一个主体到另一个主体进行信息
一个进程通过观察这个响应时间,获取相
TCB强制访问控制策略不允许信息从高级
传输的信道,称为隐蔽信道。
应的信息。这样形成的隐蔽信道就称为时
别的客体向低级别的客体流动,但是通过
上述 4 个定义没有说明隐蔽信道是依
间隐蔽信道。
非正常的通信机制,可以违反此安全策
赖于非自主访问控制的。
略,这就是隐蔽信道。隐蔽信道的存在,对
因此,TCSEC定义隐蔽信道是一个通信
TCB 的强制访问控制策略构成威胁。在国
信道,它允许进程以一种违反系统安全策
标《计算机信息系统安全保护等级划分准
略的方式传递信息:
则》(GB 17859-1999)中,第四级(结构化
假设 TCB 中设计了一个非自主访问安
保护级)要求进行隐蔽信道分析:“系统开
全策略模型M,表示为I(M),在 I(M)的两
发者应彻底搜索隐蔽存储信道,并根据实
际测量或工程估算确定每一个被标识信道
个主体I(Sh) 和 I(Si) 之间的任何潜在通
讯信道是隐蔽信道,当且仅当模型M 中相
的最大带宽”。 第五级(访问验证保护级)要
求:“系统开发者应彻底搜索隐蔽信道,并
应主体 Sh 和 Si 间的通讯,在策略模型M 中
是非法的。
根据实际测量或工程估算确定每一个被标
上述定义表明,隐蔽信道只和非自主
识信道的最大带宽”。
访问安全策略有关,与自主访问安全模型
在《信息技术安全性评估准则 第3部
无关。隐蔽信道是一种可用于在用户之间
分:安全保证要求》(GB/T 18336.3-2001)
传递信息的机制,而这种机制是系统不允
中,从评估保证级 5(EAL5)开始,也要求
许的。
进行隐蔽信道分析(AVA_CCA) 。
隐蔽信道又分为隐蔽存储信道和时间
隐蔽信道。
何为隐蔽信道
隐蔽存储信道:如果一个进程直接或间
隐蔽信道的概念最早是由B. W. Lampson
接地写一个数据变量,另外一个进程直接
于1973年提出的。对隐蔽信道有以下几个不
或间接地读这个数据变量,这样形成的隐
同的定义:
蔽信道就称为隐蔽存储信道。
假如一个通讯信道既不是原先设计出
来的,也不是有意用来传输信息的,那么
称这个通讯信道为隐蔽信道。
假如一个通讯信道“通过在描述资源
状态变量中存储数据,而进行传输”,那么
称这个通讯信道为隐蔽信道。
隐蔽存储信道
隐蔽信道是资源配置策略和资源管理
时间隐蔽信道:如果一个进程通过调整
时间隐蔽信道
不管是隐蔽存储信道还是时间隐蔽信
道,发送者和接收者之间的信息必须有同
步关系。
隐蔽信道标识
隐蔽信道标识就是搜索系统中可能存
在的隐蔽信道,并进行标识。一个隐蔽信
道可以用一个三元组表示:,
V 表示共享变量;PA 表示对共享变量V进
行写操作的TCB原语;PV表示对共享变量
V 进行读操作的TCB 原语。
常用的隐蔽信道标识s方法主要有文
法信息流分析和共享资源矩阵方法两种。
这两种方法各有优缺点,目前共享资源矩
阵方法应用更为普遍。
文 法 信 息 流 分 析
文法信息流分析(Syntactic Information-
Flow Analysis ),是将信息流文法同每一
条实现语言的语句相联系。
只要证明在完整的程序和TCB原语设计
或源代码中,所有的信息流形式都符合信息
Netinfo Security/2005.2 77
技术研究
流策略,那么就不存在隐蔽信道。否则,这
对共享资源矩阵条目的分析,将产生
Tcs是从设置变量到读变量之间的切
个信息流可能是导致隐蔽信道的信息流,对
以下四种可能的结论:
换时间;
于这些信息流必须借助语义分析确定:
假如在两个通讯进程之间存在着合法的
这个信息流是真实的还是虚假的非法
信道,那么这个信道不是隐蔽信道,记为:L;
隐 蔽 信 道 处 理
信息流;
假如不能从信道中获取有用的信息,
对隐蔽信道的处理,一般采取以下三
这个信息流是否具有导致真实隐蔽信
记为:N;
种方法:消除隐蔽信道、带宽限制、审计隐
道的使用场景;
假如发送和接收的进程是同一个,记为:S;
蔽信道的使用。
文法信息流分析具有以下优点:能够
假如一个潜在的信道存在,记为:P;
以简单清楚的方法自动实现;可以应用于
发现潜在隐蔽信道的使用场景。
顶级形式化设计和源代码;能够应用于增
共享资源矩阵方法具有以下优点:
量的独立功能和TCB 原语;在详细设计和
能够适用于TCB软件和硬件的形式化和
源代码中,不会错过任何导致隐蔽信道的
非形式化设计,也能够适用于TCB的源代码;
消 除 隐 蔽 信 道
为了消除系统中的隐蔽信道,必须对系
统的设计和实现进行修改。这些修改包括:
通过为每一个共享者预先分配所需要
信息流。
对于隐蔽存储信道和时间隐蔽信道,
的最大资源,或者为每一个安全级别划分
但是,它也有以下缺点:发现的非法
分析方法没有区别;在原理上,能够应用
信息流可能是虚假的(将增加通过手动文
于两种隐蔽信道分析;
出相应的资源,从而消除可能造成隐蔽信
道的资源共享。消除引起隐蔽信道的接
法分析方法,消除这些信息流的工作量);
它不要求在矩阵中指定TCB内部变量
口、功能和机制。
不适用于非形式化设计;不能帮助开发者
的安全级别,因而,消除了虚假非法信息
带 宽 限 制
确定,放置隐蔽信道处理代码的TCB位置;
流的主要来源。
共 享 资 源 矩 阵 方 法
然而,它也有以下缺点:
在隔离环境下不能证明单独的TCB原
共享资源矩阵方法(Shared Resource
语(或者原语对)是安全的。从而增加了增
带宽限制就是要降低隐蔽信道的最大
值,或者平均值,以使得任何一个隐蔽信
道的带宽限制在一个预先定义的可接受的
Matrix Method,SRM),要求进行以下五个
量分析新的TCB功能的复杂性。
范围内。
步骤:
共享资源矩阵分析方法标识的潜在隐蔽
分析所有形式化或非形式化,或者源
信道,有可能被信息流分析方法自动排除。
代码中指定的TCB 原语操作;
建立一个共享资源矩阵,行是用户可
隐蔽信道带宽估算
限制隐蔽信道带宽的方法主要有:
故意在信道中引入噪声。(例如:对共
享变量使用随机分配算法,共享变量一般
包括:共享表的索引,磁盘区域,进程标识
等;或者以随机方式引入无关的进程修改
隐蔽信道的变量。);
在每一个真实隐蔽信道的 T C B 原语
中,故意引入延时;
见的 TCB 原语,列是被查看或修改的TCB
变量;根据这些变量是读还是修改,用 R
或是 M 标记共享资源矩阵的每一个 项;
对共享资源矩阵的条目进行传递闭环
对于搜索到的隐蔽信道,应该估算它
们的带宽。系统的硬件配置,如:CPU速度、
内存大小和速度、缓存大小、硬盘速度等,
对隐蔽信道带宽都有很大的影响;TCB 原
语的选择、噪声等因素也对隐蔽信道的带
审 计 隐 蔽 信 道 的 使 用
操作。这个步骤能鉴别所有变量的间接
宽有很大影响。
读,并且将相应的结果添加到共享资源矩
阵中。例如:TCB原语1根据变量Y的值,决
定是否对变量X 进行修改,另一个TCB 原
语 2 能够通过读取变量X 的值,从而间接
的获取到变量 Y 的值。所以 TCB 原语 2 能
够间接的读变量Y。必须将这个条目添加
到共享资源矩阵中。
对行是 R 或 M 的每一个矩阵列进行分
为了估计隐蔽信道的最大带宽,假设
隐蔽信道是没有噪声的,系统中只有收 /
发进程,收/ 发进程之间的同步时间可以
忽略,这些假设对计算隐蔽信道的最大带
宽是合适的,但实际上是很难达到的。
一个最常用的估算隐蔽信道最大带宽
的计算公式为:B=b/(Tr+Ts+2Tcs),其中:
B 是估计带宽,单位是(比特 / 秒,即
析,每当这些列的变量由一个进程读,而
为bits/sec);
由另一进程写,并且前一进程的优先级不
支配后一进程的优先级时,这些列的变量
可能支持隐蔽信道。
b是一次信息交换的比特数,通常为1;
Tr是读变量所需时间;
Ts 是设置变量所需时间;
通过审计,能够对隐蔽信道的使用者
起到威慑的作用。
对隐蔽信道的审计,要求记录足够多
的数据,以能够:标识个别隐蔽信道的使
用,或者某一类型隐蔽信道的使用;标识
个别隐蔽信道或者某一类型隐蔽信道的发
送者和接收者。此外还要求,必须发现所
有对隐蔽信道的使用;应该避免虚假的隐
蔽信道使用记录。
一旦审计跟踪分析确定了一个隐蔽信
道的使用,那么对于这个隐蔽信道进行真
实的带宽估算是可能的,也是需要的。注
78
Netinfo Security/2005.2
意,通常情况下,不可能根据审计跟踪发
第四级只对隐蔽存储信道提出了要求,而
所有的测量必须是可重复的。
现通过隐蔽信道泄漏的实际信息,因为用
没有要求进行时间隐蔽信道分析。
户能够对数据进行加密。同时,仅仅通过
检查审计跟踪,没有办法区别泄漏的是真
隐 蔽 存 储 信 道 标 识
隐 蔽 存 储 信 道 处 理
开发者应根据实际情况,确定隐蔽信
实信息还是噪声信息。
开发者应确定用于标识隐蔽存储信道
道的两个带宽常数:Bmin和Bmax。如果隐
审计隐蔽信道的使用,将遇到以下问
的信息来源,这些信息来源应该包括描述
蔽信道的带宽小于Bmin,那么这个隐蔽信
题:无法区别是隐蔽信道的使用,还是没
性高层设计和系统参考手册,还应该包括
道可以被接受,不必采取什么措施;如果
有危害的TCB 原语使用;在隐蔽信道使用
源代码和处理器设计(如果涉及到硬件分
一个隐蔽信道的带宽大于 Bmax,那么这
者中,不能将发送者明确地从接收者中区
析)。开发者应保证所使用的标识方法是
个隐蔽信道比较严重,如果能够消除,最
分出来。
彻底地和可靠地,应可重复。这就意味着,
好消除,如果不能够消除,那么应该采取
之所以会出现这些问题,是因为:单
其它独立测试者,使用同样的标识方法和
措施将带宽降低到 Bmax;如果一个隐蔽
个 TCB 原语,根据不同的参数值和系统状
信息来源,能够得到同样的结果。否则,标
信道的带宽在Bmin 和 Bmax 之间,那么必
态,能够改变和查看一个变量或属性;不
识证据将缺乏可信度。
须对这个隐蔽信道进行审计。( 通常建议
同的 TCB 原语,能够被不同的隐蔽信道共
开发者所标识的隐蔽存储信道,应包
Bmin=1bits/sec,Bmax=100bits/sec。)
享。这样的TCB 原语允许用户伪装隐蔽信
括共享变量和读写变量的TCB 原语。开发
开发者应该说明:
道的使用以旁路审计,并且将引起隐蔽信
者还应该将潜在的隐蔽信道和实际的隐蔽
隐蔽信道是如何消除的;
道的虚假检测。
信道区分开。
隐蔽信道的带宽是如何限制在一个可
隐蔽信道审计的关键设计,是决定哪
对于实际的隐蔽信道,开发者还应提
接受的范围内;
些事件需要记录,哪些数据需要使用审计
供实际的隐蔽信道使用场景。
开发者应提供证据,证明所采取的隐
工具进行保存,以确保能发现所有的隐蔽
信道使用。如前所述,隐蔽信道的标识能
带 宽 测 量 和 工 程 估 算
蔽信道处理方法是有效的。
够简写为
,因此隐蔽信道
开发者在进行带宽测量和工程估算
第五级隐蔽信道测试的额外
审计应该记录所有的 和< P V , V >
时,应该考虑以下因素:
要求
事件。
对于最大带宽,应假设信道是没有噪
声的,并且系统中的其它进程也不会引起
隐蔽信道测试
延时;
隐蔽信道测试能够证明系统开发者选
择的隐蔽信道处理方法,能否以预期的方
式正常工作。测试还能够证明系统中发现
的潜在的隐蔽信道,是不是实际存在的真
实隐蔽信道。
隐蔽信道处理的带宽限制方法,一般
基于工程估算而不是实际测量。带宽估算
在决定采用处理方法之前,提供了一个隐
蔽信道的带宽上限。相反,在系统实现了
所选择的处理方法之后,总是要求实际测
量隐蔽信道的带宽。
第 四 级 隐 蔽 信 道 测 试 要 求
在国标GB 17859-1999中,第四级(结
假设传输的数据全为0 或者全为1;
由 于 带 宽 估 算 公 式 为 : B = b /
(Tr+Ts+2Tcs),所以选取的TCB 原语,改
变或读取变量的时间应该是最短的,转换
时间也应该是最短的。
为了决定带宽,应在隐蔽信道实际使
用场景中进行测量,必须考虑每一个所选
择的 TCB原语的参数和系统状态。
应详细说明测量的环境,包括:系统
部件的速度(如:CPU 速度、磁盘速度等);
系统的配置;内存和缓存的大小;系统的
初始值。应记录配置的改变对测量结果的
影响,并形成文件。(这个文件使得授权者
能够评估隐蔽信道在不同的使用环境中的
构化保护级)要求:“系统开发者应彻底搜
真实影响。)
索隐蔽存储信道,并根据实际测量或工程
估算确定每一个被标识信道的最大带宽”。
发送者和接收者的同步时间可以被忽略;
在带宽估算中,应考虑信道的集合;
在国标 GB 17859-1999 中,第五级
(访问验证保护级)要求:“系统开发者应彻
底搜索隐蔽信道,并根据实际测量或工程
估算确定每一个被标识信道的最大带宽”。
所以除了第四级的所有要求外,还必须进
行时间隐蔽信道分析。开发者应增加时间
隐蔽信道的分析、带宽测量和工程估算,
以及时间隐蔽信道的处理等内容。
随着技术的发展,隐蔽信道标识的方
法也越来越多,目前我们国内已经在隐蔽
信道分析方面取得了比较大的进展,例如
国内某安全操作系统在文法信息流分析方
法的基础上,自主研制了"回溯搜索方法
",并且使用回溯搜索方法,在对38 万行
内核源代码、200多个系统调用、365个全
局变量和75个可信进程进行分析之后,成
功地发现了18个真实隐蔽信道。总之,隐
蔽信道分析是一项非常复杂的工作,必须
在系统设计阶段就考虑隐蔽信道的问题,
并且贯穿整个系统的开发过程。
Netinfo Security/2005.2 79