信息安全-五:隐通道

来源:互联网 发布:淘宝店铺导航设置透明 编辑:程序博客网 时间:2024/05/16 11:44

第五章 隐通道

操作系统,数据库系统、网络、分布式数据库管理系统中都可能存在隐通道,(操作系统处于计算机系统的最底层,它的安全是系统中一切安全的基础,也就是说操作系统的安全问题是一切安全的问题中最核心的问题)国外有关隐通道的研究已相当深入且广泛,国内因受到技术方面的限制(使用的系统大多为国外开发的,没有源代码),因此深入底层的研究较为困难。

正是由于国内开发大型操作系统和数据库管理系统的单位很少,还不必检测并证明自己系统的安全性,更无须做堵塞隐通道或减少隐通带宽的工作,原因是得不到源代码关于系统设计的详细说明。但实际上作为操作系统的使用者,尤其是负有安全责任的使用者,也应关心隐通道的问题,因为他们至少应该对自己工作平台的安全性有充分的了解,选择安全的系统,防止隐通道所带来的对系统安全的破坏。更何况国内也要开发自己的安全计算机系统,也必须面对隐通道的挑战。因此,有必要对隐通道进行研究。

隐通道的概念形成于70年代初期,80年代隐通道的研究得到计算机安全界的广泛重视,DoD的“可信计算机系统评估准则”(TCSEC)把对隐通道的限制和分析纳入了安全计算机系统的标准中。

 

一、隐通道的定义

安全??和安全机构从不同角度给出了关于隐通道的多种定义方式,但其实质含义是相同的,列出其中最主要的几种定义方式:

B.W.Lampson给出的

       定义一:隐通道是指违背设计者的原意和初衷,被用来通信的通道。

       TCSEC的定义

       定义二:隐通道是一个通信通道,它使得一个进程能以违反系统安全策略的方式违背信息。

       NCSCC(美国国家计算机安全中心)的定义

       定义三:给定一个非自主安全 策略模型M和它在一个操作系统中的实现I(M)I(M)中的两个主体I(si)I(sj)之间的通信是隐蔽的,当且仅当模型M中相应的两个主体sisj之间的通信是非法的。

       以上这些定义说明:

1.    隐通道是一个可以进行信息传送的通道,但它不是系统设计者设计用业传送信息的通道。

2.    由于它并非设计者用来传送信息的通道,因此系统安全策略(主要指非自主性的安全策略),没有对这种通道实施控制。

3.    由于没有安全控制,因此使得进程之间可以利用这些通道以违反安全策略的方式传递信息。

如果一个系统未实施强制访问控制,那么任意两个用户(只要他们愿意)都可以合法地传送信息,不需要通过隐蔽通道来秘密地进行传送,因此存在隐通道的系统实际上是采取了一定安全措施,特别是强制访问控制的系统。当用户传送信息的行为或传送的信息不能公开是,隐通道才有意义。

总之,隐通道是一种通信通道,但它不是系统设计者设计的打算用来通信的信道,因而它能绕过系统强制安全机制的检查,使得进程能以违反系统安全策略的方式传递信息,从而对计算机系统的安全造成很大的威胁。

因此对于一个给定的系统判断隐通道对系统安全的危害,采取一些相应的措施减少隐通道所带来的危害,这是对计算机系统负有安全责任的管理者或开发者必不可少的工作。

隐通道的研究中首先遇到一个问题是隐通道的识别,如何搜索系统中存在的隐通道。

最简单的隐通道的识别法是比照其它系统(例如其它操作系统)已有的典型的隐通道来分析目标操作系统的隐通道。但是,这种分析方法不能发现所有可能的隐通道,也不能发现目标系统特有的隐通道。

要全面分析隐通道,必须分析系统的形式化的说明书和源代码。但分析源代码的工作量很大,国外已经开发了一些自动化工具,对形式化的说明书或源代码进行分析以识别隐通道。但我们目前无法拿到。

 

二、隐通道举例

1:最早被发现的也是最经典的一个隐通道是磁盘移臂隐通道,这个隐通道是1977年在KVM/370系统中发现的。

假定系统中有HL两个进程,H的安全级高于L的安全级。H中隐藏有特洛依木马试图泄露信息给窥探者L,但是按照强制访问控制的策略,L无法访问到H的信息,因此H不敢直接传送信息给L,并且也担心审计的监督,于是HL寻求利用系统的安全漏洞,采用表面上合法的手段泄露信息。

L开辟一个属于自己的文件目录,H合法地具有了读这个目录的权力,假定磁盘上从51磁道到第59磁道属于这个目录,HL按以下约定进行操作:

1.  L请求读磁道55(此请求完成后,释放CPU);

2.  H请求读磁道53(送“0)或读磁道57(送“1)(请求完成后,立即释放CPU);

3.  L同时请求读磁道51和磁道59,并观察这两个请求完成的先后次序,以确定H发出的信息,若访问磁道51先完成,则L确认收到“0,反之,L确认收到“1

重复以上操作,就可以在HL之间传送连续的比特流。(当然还要采取一定的同步措施)

H读磁道57

L读磁道59先完成

51

(53)

555

57

599

1


51

53

555

(57)

599

0

H读磁道53

L读磁道51先完成


造成这个隐通道的原因是系统支持不同安全级的用户共享资源(在本例中是共享磁盘空间)。造成这个隐通道的直接原因是KVM/370系统采用的读写优化策略——蒸发算法(电梯算法)。该算法保证优先读/写磁臂移动方向前方的磁道。

然而这个策略满足了一个条件,即提供了一个可以用来临时存放信息的变量——磁臂的移动方向(磁臂向低端磁道移动代表0,反之则代表1),且这个变量的状态可以被高安全级的发方改变,并被低安全级的收方观察到。

几乎所有的操作系统都带有控制磁臂移动的磁盘读写优化策略,这些策略往往都会产生一些可被隐通道利用的状态变量。

1.  利用共享的系统资源的状态可产生隐通道??

2CPU是一种可以利用的系统资源,可由多个用户共享,假设有HL两个进程,H的安全级高于LH里含有特洛依木马S,企图将信息传递给L。它们约定一系列间隔均匀的时间点t1t1t1,…(间隔时间至少允许两次CPU调度)。

L在每个时间点都请求使用CPU,而H在每个时间点,若要发送0,则不请求使用CPU;若要发送1,则请求使用CPU(假设H的优先级高于L)。于是,在每个时间点,L若能立即获得CPU的使用权,则确认收到0,若要等待,则确认收到1,这个隐通道被称为“时间

S(H)发送者

L发送者

××

××

××

××

××

××

1

1

0

0

t1

t2

t3

t4

t5

……

……

……


片间隔时间隐通道”,其过程如下图所示:

3  打印机联接隐通道 

sr分别是特洛依木马和窥视者,s的安全级高于r

每当s要传送“0”时,检查自己是否已联接到打印机,不联接打印机,释放联接。

每当s要传送“1”时,也检查自己是否已联接打印机,联接打印机。

于是,r每当试图联接打印机,若他能联接,则确认收到“0”;否则,确认收到“1”。

当然,sr要经过适当的同步处理(如r接收到“1”后,要立即释放打印机),便可以在sr之间传送连续的比特流。

2和例3的共同特点是利用了系统中可被共享但在某一时刻只能被独占的系统资源的使用状态进行信息的传送。正像有些定义所指出的:

定义四  隐通道是指把描述资源的状态存储在变量里,并通过这些变量来传送信息的信道。

2.  通过判断客体是否存在也可产生隐通道

4  目录结构隐通道

Red Hat Linux系统中,系统对文件的权限控制分为三类:读、写、执行权,目录也是文件。对目录来说,读意味着用户能够读目录列表,写意味着用户能够在这个目录下建立或删除文件,执行则意味着允许用户从该目录的父目录切换到该目录下。只有当一个目录下的内容为空时,才可以将其删除。

假设系统中当前有用户HLH用户安全高于LH用户建了一个目录DL被授权对D有写和执行权。

L已通过某种手段将特洛伊木马程序S植入用户H的程序中,该特洛依木马企图将从目录D下获得的敏感数据泄露给L,其操作过程如下:

发送方S若要传0,则在目录D下建一目录D1;若要传1,则删除目录D1

接收方L试图建立目录D1,若成功,则确认接收到1R须立即删除D1);若失败,则确认接收到0

D1

D

发送“0”,建立D1失败

D

发送“0”,建立D1失败


经过适当的同步处理,转入,传送下一个比特。

 

3.利用系统的管理机制产生隐通道

5  进程号隐通道
                  
进程号(PID)是系统中标志进程的唯一符号,在许多操作系统(如

3.利用系统的管理机制产生隐通道

       5  进程号隐通道

       进程号(PID)是系统中标志进程的唯一符号,在许多操作系统(如Red Hat Linux)中采用连续递增的方法来管理进程号,即新建的进程的进程号在上一个进程的进程号的基础上加1,利用系统的这一管理机制也可产生隐通道,其操作过程如下:

       接收方建立一个子进程并立即结束它,记录下它的进程号;

       发送方若发“0,则什么也不做,若发“1则建一个子进程并立即结束它;

       接收方再建一个子进程并立即结束它,记录下它的进程号,如果新的进程号与上一次得到的进程号相差1,则确认接收到“0,如果新的进程号与上一次得的进程号相差2,则确认接收到“1

       做好同步工作,转入2,传送下一比特。

       传送过程见下一流程图。

                         

          p1  p2  p3      p4  p5  p6     p7

 

传送信息    1      0       1      0


       例如:

       其传送过程用以下流程图表示:

创建一个子进程1

发方拟发送信息

确认收到“0    

无操作

创建一个子进程pj

pip1比较或

将当前pi与前一个pi-1比较

创建一个子进程pi

确认收到“1

发送“0

发送“1

进程号相差1

进程号相差2

收方

发方

收方

       4、例5体现了隐通道如下的含义:

       定义五  隐通道是指利用资源分配策略和资源管理方法的信道。对于隐通道应有如下几点认识:

       隐通道的存在并不意味着系统的安全性一定很低,在一个没有强制访问控制的系统中,用户之间没有安全级的区别,任意两个用户之间都可以合法地传送信息,任何信息都可以通过明的通道来实现。因此,存在隐通道的系统实际上是采取了一定安全措施的系统。

       隐通道的形成往往要依赖于系统中某些资源分配策略和资源管理方法的副作用,但这并不意味这些策略和方法是错误的,系统的性能和效率是系统设计者必须追求的重要目标。安全和效率以及性能之间的矛盾是客观存在的,在它们之间要找到适当的平衡点,尽量在不影响效率和性能(至少少影响)的情形下,堵塞所有的安全漏洞。

       尽管隐通道的收、发方目的是非法的,但操作本身是合法的。

       隐通道存在的一个最主要的原因是不同安全级的用户之间共享系统资源,因而系统中存在可被高安全级用户修改并被低安全级用户观察到的状态变量。

 

三、隐通道的分类

       隐通道通常被分为存储隐通道和时间隐通道。

       存储隐通道是指隐通道的两通信进程,一个进程直接或间接地写存储单元,而另一个进程则直接或间接地读此存储单元观察到写的结果。

       时间隐通道是指一个进程对系统性能产生的影响可以被另一个进程观察到并且可以利用一个时间基准进行测量,或者说指利用事件的发生顺序传递信息的通道。

       例如,磁盘移臂隐通道可以看作是存储隐通道,因为发送进程修改磁臂的方向,接收程序能够观察到其修改的结果。

       打印机联接隐通道也可以看作是存储隐通道,发送进程使打印机处于“忙”或“空闲”状态可以让接收进程观察到。

       目录结构隐通道也可看作存储隐通道,发送进程创建或删除目录,接收进程能间接观察到该目录是否存在。

       进程号隐通道也可看作是存储隐通道,发送进程是否占用了当前进程号,接收进程可间接观察到。

       以上这些例中都可以看作是一个状态变量,发送进程对其进行写,接收进程对其读以观察到前者写的结果。

       又例如,例2中关于CPU使用的隐通道可以看作是一个时间隐通道。因为发送进程HCPU的使用情况可以被L观察到,并且可以利用时钟每隔一定的时间片进行测量。

       时间隐通道强调需要有一个实时时钟或间隔计时器或其它能测试时间的计时基准,它们使得接收进程能够计算两个相继事件之间的相对时间量,而存储隐通道却不需要时钟或计时器。

       消除时间隐通道的一种最直接的方法是撤销进程对时钟的访问权,在没有时间参考基准时,时间隐通道就无法工作。但是,这并不能完全消除时间隐通道。即使接收进程不能直接访问时钟,它还是有办法能够判断出时间间隔来。例如,如果一个用户(入侵者)在终端上以每秒十个字符的速度输入字符串,那进程就可以得到以0.1秒为单位的时间计数器,每收到一个字符就说明过去了0.1秒。在多处理器系统中,一个进程可以利用循环程序的循环次数来为另一个进程确定时间间隔。

       对于隐通道的这种分类方法,国外和国内均有文章提出了异议,其主要看法是认为有些隐通道既然可以是存储隐通道,也可以是时间隐通道,因此建议将对存储变量的读/写和按时间进行测量看作是隐通道的属性。一个隐通道可以同时具有这两种属性。事实上,从前面的定义四可以看出,描述资源状态的存储变量是隐通道的组成要素,不论是存储隐通道还是时间隐通道都要利用资源状态变量来编码信息。

       在此基础上,各自提出了一些分类方法,如:国外有人提出“直接”隐通道与“进程”隐通道。“直接”——指隐通道泄露的信息,直接表现在输出设备上;“进程”——信息的接收者是进程。

       如,国内有人提出“操作请求拒绝型”与“操作请求延迟”。前者——接收进程的请求被拒绝(两种状态:拒绝、执行),后者——接收进程的请求被延迟(根据延迟的时间,具有时间隐通道的特征)。

       对此不再作详细讨论,下面举例说明存储隐通道也具有时间隐通道的特性。

       例如,对于前面的磁盘移臂隐通道对其实现过程稍作改进:

       1L请求读55磁道;

       2H请求读51磁道(传0)或请求读59磁道(传1);

       3L请求读52磁道,并测定其完成时间t,若等待时间小于某个值(该值是事先测定),则确认收到0,否则确认收到1

51   52          55                  59


       如图所示:

       显然磁臂从59 磁道移动到52磁道比从51磁道移动到52磁道所花的时间要多几倍。

       上述例子仍是根据磁臂移动的方向是由低向变,还是由高向低来确认接收到01,但它必须要依靠一个时钟或某上计时基准,而这正是时间隐通道的最重要的特征。

       又例如,对于前述磁盘移臂隐通道,其操作过程不作任何修改,仅通过??

       例如,将目录结构隐通道修改如下:

S(发送者)

R(接收者)

失败

D1

D1

失败

0

1

1

0

……

……

……

t1  t1+∆t

t2  t2+∆t

t3  t3+∆t

t4  t4+∆t

t5

D1

D1


       则它也成为了一个时间隐通道,因为接收方必须靠一个时钟来测量事件的结果。

       以上举例说明一般存储隐通道可以转化为时间隐通道,那么时间隐通道能否转化为存储隐通道呢?如果能互相转化,则我们只要对一种类型进行研究和分析,简化了我们的研究。

       从目前来看,人们认为对时间隐通道的搜索、分析和限制更困难,若两者能相互转化,则可以将时间隐通道的研究转化对存储隐通道的研究。

 

四、隐通道的带宽

       是指信息通过隐通道传输的速度,用比特/秒来衡量,隐通道带宽的计算是隐通道分析工作的主要内容之一。因为对付隐通带的方法,首先是消除隐通道,当无法完全消除隐通道时,则必须限制隐通道的带宽,因为带宽越高,单位时间内泄露的信息量就越多,对系统的安全性威胁就越大。一般地,通过计算隐通道的最大宽度来最大限度地衡量隐通道的威胁。

       根据TESEC的建议,隐通道的带宽达到1比特/秒就要引起注意;带宽达到100比特/秒以上,就必须采取相应的处理措施。

       影响隐通道的带宽有以下几种因素:

       噪音

       噪音是指在一个多用户系统中,除了隐通道的收/发进程之外,还有许多其它进程在运行,因为它们与收/发进程竞争各种系统资源,因此可显著地降低隐通道的效率,因而降低隐通道的带宽。

       噪音依赖于多用户系统的调度策略和系统当时的负载,因此这种影响是随机的,无法确定的。有文献指出,有时候这些干扰进程可能降低隐通道带宽的75%(这种影响的差别是很大的)。

       基于以上这一点,我们可能通过在系统中增加噪间进程将隐通道的带宽降低到某一个安全值之内。

       编码

       /发双方在传输信息时采用什么方法编码,往往可以改变隐通道的带宽。

       例如,当传0和传1所花的时间不同时,如,假设传1花的时间比传0花的时间长得多,那么若用0010来代替111,可以减少信息中1 的个数,从而提高信息的传输率(具体编码方法,要使得收方能识别,并还原成原来的信息,对此不作详细讨论),以获得最大带宽。

       若传0和传1的时间很接近时,则编码技术对带宽无甚影响。

       我们在分析隐通道的最大带宽时,要分析该隐通道的特点,以估计手可能采取的编码方法,以获得其最大带宽。

       隐通道实现过程中的诸多因素

       一个系统中,可利用多个原语来实现同一隐通道,但这些原语的耗时可能大不相同,从而影响带宽。

       又如,在隐通道中每传送一个比特都要在发送进程和接收进程之间切换一次系统控制权,切换所花去的时间长短对隐通带的带宽是有影响的。若当两个进程试图在它们之间转换控制权时,控制权有可能被转给了系统中等待运行的其它进程,因而造成了时间的延迟。

       又如,发送者和接收者之间的同步也可能造成延迟而降低带宽。

       为了计算隐通道的最大带宽,我们往往假设系统中只有收/发两个进程。

       系统配置的影响

       如:

              .系统中硬件设备的速度(如硬盘、内存和CPU

              .系统中设备的容量(如内存大小、缓冲区大小等)

五、隐通道的防治

       搜索隐通道

              对系统中是否存在,存在哪些隐通道应该清楚(国内做此工作较为困难)。

       消除隐通道

              隐通道使用系统提供的正常功能,通过合法的操作来达到非法传递信息的目的,因此要清除隐通道有一定的难度。

       如前所述,隐通道存在的一个重要原因是不同安全级的用户之间共享系统资源(如磁盘、CPU、内存、打印机、进程号等),这使得高安全级用户对系统资源的使用能被低安全级用户观察到。因此,消除隐通道的一个可能的方法是限制进程间的资源共享,特别是只在安全级相同的实体间共享资源,但这可能带来某些资源闲置而大大降低使用效率的问题,需要寻求两全齐美的方法或适当的折衷点

       限制带宽

              如果不能完全消除隐通道,则要想办法限制其带宽,将带宽限制在允许的范围内使其满足安全的要求。

              限制带宽的方法如有意引入噪音,有意引入外部进程干扰收/发进程的工作,使之延时。

       审计

              审计是阻止和吓唬一切非法操作的有效手段。但对于未被发现的隐通道,审计是毫无作用的,因为隐通道的原语和操作本身都是合法的,并不违反安全规则,只有在确认了某个隐通道之后,才有可能有针对性地进行审计。

       审计应记录的信息:被使用的隐通道;发送者和接收者的身份;传送的信息。