Processing

Please wait...

Settings

Settings

Goto Application

1. WO2016141719 - CHANNEL DETECTION METHOD AND APPARATUS

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191   0192   0193   0194   0195   0196   0197   0198   0199   0200   0201   0202   0203   0204   0205   0206   0207   0208   0209   0210   0211   0212   0213   0214   0215   0216   0217   0218   0219   0220   0221   0222   0223  

权利要求书

1   2   3   4   5   6   7   8   9   10  

附图

0001   0002   0003   0004   0005   0006   0007   0008   0009  

说明书

发明名称 : 一种信道检测方法及装置

技术领域

[0001]
本发明涉及网络安全技术领域,尤其涉及一种信道检测方法及装置。

背景技术

[0002]
在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,具体的共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用过程中,当某个虚拟机需要对该内存页进行写操作时,操作系统将启动写操作异常事件,例如写时复制(Copy-On-Write,COW)页写操作异常事件,并为该虚拟机重新拷贝一份物理内存页进行写操作。
[0003]
然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中的隐私信息,比如密钥等等。
[0004]
隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了Sender,此时Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0005]
Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需要传递的信息为0则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入下一个内存页。编码完毕后等待内存合并。
[0006]
Receiver申请相同大小为n*4K的内存,并加载相同的文件A到内存中。操作系统自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按照内存页粒度进行解码,解码的规则是:逐个内存页进行 写操作,同时测量内存页写操作执行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为0,Receiver接收信息完毕。
[0007]
现有技术中,为避免恶意用户通过隐蔽信道将普通用户的隐私数据传递出去,则直接关闭内存去重机制,这种方式虽然能够解决隐蔽信道的攻击,但是却失去了内存去重机制的优势,对系统性能影响较大。
[0008]
发明内容
[0009]
本发明实施例提供一种信道检测方法及装置,可以准确检测出系统中是否存在隐蔽信道,且不会影响系统中正常的内存去重机制的功能。
[0010]
本发明实施例第一方面提供了一种信道检测方法,可包括:
[0011]
当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0012]
从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;
[0013]
判断所述目标子序列的时间属性是否满足预设条件;
[0014]
当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。
[0015]
基于第一方面,在第一方面的第一种可行的实施方式中,所述目标子序列的时间属性包括所述目标子序列的起始时间与结束时间之间的第一时间差。
[0016]
所述判断所述目标子序列的时间属性是否满足预设条件,包括:
[0017]
判断所述目标子序列的所述第一时间差是否小于第一预设阈值;
[0018]
所述当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道,包括:
[0019]
当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统 中存在隐蔽信道。
[0020]
基于第一方面的第一种可行的实施方式中,在第一方面的第二种可行的实施方式中,若所述事件序列中包括多个目标子序列;
[0021]
所述从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性,包括:
[0022]
从所述事件序列中依次查找预设个数的目标子序列;
[0023]
计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[0024]
基于第一方面的第二种可行的实施方式,在第一方面的第三种可行的实施方式中,所述判断所述目标子序列的所述第一时间差是否小于第一预设阈值,包括:
[0025]
判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值;
[0026]
所述当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道,包括;
[0027]
当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0028]
基于第一方面第三种可行的实施方式,在第一方面的第四种可行的实施方式中,所述当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值之后,还包括:
[0029]
判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数;
[0030]
当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。
[0031]
本发明第二方面提供一种信道检测装置,包括:
[0032]
拦截模块,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0033]
获取模块,用于从所述事件序列中查找目标子序列,并获取所述目标子序 列的时间属性;
[0034]
判断模块,用于判断所述目标子序列的时间属性是否满足预设条件,
[0035]
确定模块,用于当所述目标子序列的时间属性满足预设条件,确定系统中存在隐蔽信道。
[0036]
基于第二方面,在第二方面的第一种可行的实施方式中,所述目标子序列的时间属性包括所述目标子序列的起始时间与结束时间之间的第一时间差。;
[0037]
所述判断模块具体用于判断所述目标子序列的所述第一时间差是否小于第一预设阈值;
[0038]
所述确定模块具体用于当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0039]
基于第二方面第一种可行的实施方式,在第二方面的第二种可行的实施方式中,若所述事件序列中包括多个目标子序列;所述获取模块包括:
[0040]
查找单元,用于从所述事件序列中依次查找预设个数的目标子序列;
[0041]
计算单元,用于计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[0042]
基于第二方面第二种可行的实施方式,在第二方面的第三种可行的实施方式中,所述判断模块具体用于判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值。
[0043]
基于第二方面第三种可行的实施方式,在第二方面第四种可行的实施方式中,所述确定模块包括判断单元和确定单元;
[0044]
所述判断单元,用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数,
[0045]
所述确定单元,用于当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。
[0046]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截该操作系统执行的事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属 性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。

附图说明

[0047]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048]
图1是本发明实施例提供的一种隐蔽信道构建示意图;
[0049]
图2是本发明实施例提供的一种信道检测方法的流程示意图;
[0050]
图3是本发明实施例提供的一种指令流示意图;
[0051]
图4是本发明实施例提供的另一种信道检测方法的流程示意图;
[0052]
图5是本发明实施例提供的一种隐蔽信道检测算法流程图;
[0053]
图6是本发明实施例提供的一种COW页写操作异常算法流程图;
[0054]
图7是本发明实施例提供的一种信道检测装置的结构示意图;
[0055]
图8是本发明实施例提供的一种获取模块的结构示意图;
[0056]
图9是本发明实施例提供的另一种信道检测装置的结构示意图。

具体实施方式

[0057]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0058]
本发明实施例中的信道检测方法可以应用于多租户云环境下基于内存去重技术所构建的隐蔽信道的检测过程中。
[0059]
下面将结合附图1至附图6,对本发明实施例提供的信道检测方法进行介 绍和说明。
[0060]
请参照图2,是本发明实施例提供的一种信道检测方法的流程示意图;如图2所示,所述信道检测方法包括:
[0061]
S100,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0062]
在一个实施例中,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常事件,例如写时复制(Copy-On-Write,COW)页写操作异常事件,当启动COW页写操作异常事件时,操作系统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效地提高云环境中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛应用于各大商业和开源的虚拟机管理器中。
[0063]
然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中的隐私信息,比如密钥等等。
[0064]
隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了Sender,此时Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0065]
Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需要传递的信息为0则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入下一个内存页。编码完毕后等待内存页合并。
[0066]
Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。 操作系统自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为0,Receiver接收信息完毕。
[0067]
普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为0的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并,相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长短就能解码出0或1信息。
[0068]
由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法为,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,合并之后内存页为不同虚拟机的内存页进行内存去重合并时所产生的内存页,需要说明的是,事件序列中的获取时间事件可能包括操作系统自身的获取时间事件,也可能包括恶意用户的获取时间事件,操作系统自身的获取时间事件通常间隔比较长。
[0069]
S101,从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;
[0070]
在一个实施例中,从所获取的事件序列中查找目标子序列,目标子序列的存在形式可以有多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由于通常操作系统自身的获取时间事件的时间间隔比较长,因此可以通过 目标序列中两个相邻的目标获取时间事件的时间间隔属性进行检测。
[0071]
可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的事件序列中目标写操作异常事件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对应的系统时间之差。
[0072]
需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的时间属性也不作限定。
[0073]
S102,判断所述目标子序列的时间属性是否满足预设条件;
[0074]
S103,当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。
[0075]
在一个实施例中,判断所获取的目标子序列的时间属性是否满足预设条件,当目标子序列的时间属性满足预设条件时,则确定系统中存在隐蔽信道。预设条件需要根据目标子序列的时间属性所确定,例如,若目标子序列的时间属性为目标子序列的起始时间与结束时间之间的第一时间差,则预设条件为,该第一时间差小于第一预设阈值。
[0076]
可选的,步骤S102可以具体为判断所述目标子序列的所述第一时间差是否小于第一预设阈值;
[0077]
步骤S103可以具体为当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0078]
在一个实施例中,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关键。设置的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来延长执行时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避检测。相反,如果设置的过长,则会导致误报率的增加。
[0079]
假设隐蔽信道在两次获取时间事件之间执行了n条指令(其中有一条是内 存写操作指令),则为了能够准确编码信息,需要满足:
[0080]
T-Min cow(n)>T-Max normal(n)
[0081]
T-Min cow(n):执行n条指令的最短时间,其中内存写操作指令为对合并之后的内存页的写操作。
[0082]
T-Max normal(n):执行n条指令的最长时间,其中内存写操作指令为对普通内存页的写操作。
[0083]
假设n-1条普通指令执行的平均误差时间为Δt,即可进一步推导出:
[0084]
T min(cow)-T max(normal)>(n-1)*Δt
[0085]
T min(cow):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0086]
T max(normal):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0087]
假设n-1条普通指令的平均执行时间为t,则可推出:
[0088]
(n-1)*t+T min(cow)≤T (1)≤(n-1)*t+T max(cow)
[0089]
[数0001]


[0090]
2T min(cow)≤T (1)≤2T max(cow)
[0091]
其中t≈Δt,T cow>>T nomal,可选的,通常T cow的值比T nomal的值大10倍以上,不同的系统中所大于的倍数不同。
[0092]
综上所述,第一预设阈值T (1)能估计出来的值就是2倍的对合并后的内存页的写操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时间T max(normal)和最小时间T min(cow),因此2T min(cow)≤T (1)≤2T max(cow)。这个最大时间和最小时间在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0093]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否 存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。
[0094]
请参照图4,是本发明实施例提供的另一种信道检测方法的流程示意图;若事件序列中包括多个目标子序列,如图4所示,本实施例所述的一种信道检测方法包括步骤:
[0095]
S200,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0096]
本发明实施例步骤S200,请参照图1所示的实施例步骤S100,在此不进行赘述。
[0097]
S201,从所述事件序列中依次查找预设个数的目标子序列;
[0098]
作为一种可选的实施方式,如图3所示,事件序列中可以包括多个目标子序列,其中,目标子序列包括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写操作异常事件,在操作系统执行指令流中依次查找预设个数(n个)目标子序列,预设个数的值(即n的值)由用户预先设定。
[0099]
S202,计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[0100]
作为一种可选的实施方式,计算预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差,如图3所示,依次计算各个目标子序列的第一时间差Δt 1,Δt 2,Δt 3.....Δt n
[0101]
S203,判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值;
[0102]
S204,当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0103]
作为一种可选的实施方式,判断预设个数的目标子序列中每个目标子序列的第一时间差是否均小于第一预设阈值,若预设个数的目标子序列中每个子序列的第一时间差均小于第一预设阈值,即是Δt i<T (1),i∈[1,n],则确定系统中存在隐蔽信道。需要说明的是,第一预设阈值T (1)可以为对合并之后内存页写操 作执行时间的两倍。
[0104]
可选的,为进一步提高隐蔽信道的检测准确率,考虑隐蔽信道的通信带宽,则在步骤S204中的所述当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值之后,还包括:
[0105]
判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数;
[0106]
若所述第二时间差小于所述第二预设阈值,则确定系统中存在隐蔽信道。
[0107]
作为一种可选的实施方式,为提高检测的准确率,结合隐蔽信道的通信带宽进行检测,具体的检测方法是,进一步判断预设个数的目标子序列中第一个目标子序列的起始时间与最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,若小于第二预设阈值,则确定系统中存在隐蔽信道。如图3所示,即是判断:
[0108]
Δt i<T (1) i∈[1,n] && t n-end-t 1-beg<T (n)
[0109]
通常认为当通信带宽低于1bps时,该信道是没有通信价值的。第二预设阈值T (n)阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0110]
[数0002]


即T (n)<n
[0111]
因此T (n)的值不能超过n。由于实际应用中所传输的信息量比n要大,因此T( n)的阀值比n还稍微小点。
[0112]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。
[0113]
请参照图5,为本发明实施例提供的一种隐蔽信道检测算法流程图,在本发明实施例中,事件序列包括获取时间事件以及COW页写操作异常事件。在操作系统执行过程中,会不断地拦截到这两种事件的发生。即沿着操作系统执行指令流的方向上,会不断地拦截到这两种事件并进入处理例程中处理。
[0114]
当拦截到获取时间事件的执行时,处理例程的算法流程如图5所示:在处理函数中,t now用于记录当前系统时间,t pre缓存了上一次进入该处理函数的系统时间。t cow_pf记录了最近一次执行COW页写操作异常事件的系统时间,是一个全局变量,由图6中的页错误异常处理函数进行更新。t beg记录了检测到的第一个目标子序列的起始时间,用于计算当检测到第n个时,这n个子序列的执行时间。Count变量用于记录当前检测到的第几个目标子序列。在算法开始时,首先获取当前系统时间t now,然后和缓存的上一次获取时间事件发生的系统时间t pre相减,判断时间间隔是否小于阀值T (1),大于则表示当前子序列并不是隐蔽信道解码操作,更新t pre。否则进一步判断最近一次COW页写操作异常事件是否介于这两次获取时间事件之间,是则表示检测到一次隐蔽信道的解码操作,更新Count,并判断当前是否是检测到第n次解码操作,是则进一步判断n次解码操作的时间间隔是否小于阀值T (n),若小于则确定检测到隐蔽信道。
[0115]
进一步,请参照图6为本发明实施例提供的一种页错误处理算法流程图:
[0116]
在系统运行过程中,对经过内存去重合并之后的内存页进行写操作时,将会触发COW页写操作异常事件,并进入到页错误异常处理函数中,本发明在该处理函数中的算法流程如图6所示:
[0117]
首先需要判断当前页错误异常变量PFEC是否属于写操作异常,如果是则继续遍历COW页链表,根据发生页错误异常的内存页的虚拟地址pf_va判断该内存页是否属于经过内存去重合并之后的内存页,如果是则表明拦截到了COW页写操作异常事件,从而记录当前系统时间到全局变量t cow_pf中。
[0118]
下面结合附图7至附图9,阐述本发明实施例提供的信道检测装置的具体实现。
[0119]
请参照图7,为本发明实施例提供的一种信道检测装置的结构示意图,如图7所示,本实施例所述的一种信道检测装置包括:拦截模块100、获取模块 101、判断模块102和确定模块103。
[0120]
拦截模块100,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0121]
在一个实施例中,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常事件,例如写时复制(Copy-On-Write,COW)页写操作异常事件,当启动COW页写操作异常事件时,操作系统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效地提高云环境中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛应用于各大商业和开源的虚拟机管理器中。
[0122]
然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中的隐私信息,比如密钥等等。
[0123]
隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了Sender,此时Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0124]
Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需要传递的信息为0则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入下一个内存页。编码完毕后等待内存页合并。
[0125]
Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按照内存页粒度进行解码,解码的规则是:逐个内存页进行 写操作,同时测量内存页写操作执行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为0,Receiver接收信息完毕。
[0126]
普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为0的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并,相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长短就能解码出01信息。
[0127]
由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法为,拦截模块100在操作系统指令流中拦截操作系统执行事件序列,该事件序列中包括获取时间事件,可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,需要说明的是,事件序列中的获取时间事件可能包括操作系统自身的获取时间事件,也可能包括恶意用户的获取时间事件,操作系统自身的获取时间事件通常间隔比较长。
[0128]
获取模块101,用于从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;
[0129]
在一个实施例中,获取模块101从所获取的事件序列中查找目标子序列,目标子序列的存在形式可以有多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由于通常系统自身的获取时间事件的时间间隔比较长,因此可以通过目标序列中两个相邻的目标获取时间事件的时间间隔属性进行检测。
[0130]
可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的 事件序列中目标写操作异常事件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对应的系统时间之差。
[0131]
需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的时间属性也不作限定。
[0132]
判断模块102,用于判断所述目标子序列的时间属性是否满足预设条件;
[0133]
确定模块103,用于当所述目标子序列的时间属性满足预设条件,确定系统中存在隐蔽信道。
[0134]
在一个实施例中,判断模块102判断所获取的目标子序列的时间属性是否满足预设条件,当目标子序列的时间属性满足预设条件时,确定模块103确定系统中存在隐蔽信道。预设条件需要根据目标子序列的时间属性所确定,例如,若目标子序列的时间属性为目标子序列的起始时间与结束时间之间的第一时间差,则预设条件为,该第一时间差小于第一预设阈值。
[0135]
可选的,所述判断模块102具体用于判断所述目标子序列的所述第一时间差是否小于第一预设阈值;
[0136]
所述确定模块103具体用于当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0137]
在一个实施例中,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关键。设置的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来延长执行时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避检测。相反,如果设置的过长,则会导致误报率的增加。
[0138]
假设隐蔽信道在两次获取时间事件之间执行了n条指令(其中有一条是内存写操作指令),则为了能够准确编码信息,需要满足:
[0139]
T-Min cow(n)>T-Max normal(n)
[0140]
T-Min cow(n):执行n条指令的最短时间,其中内存写操作指令为对合并之后的内存页的写操作。
[0141]
T-Max normal(n):执行n条指令的最长时间,其中内存写操作指令为对普通内存页的写操作。
[0142]
假设n-1条普通指令执行的平均误差时间为Δt,即可进一步推导出:
[0143]
T min(cow)-T max(normal)>(n-1)*Δt
[0144]
T min(cow):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0145]
T max(normal):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0146]
假设n-1条普通指令的平均执行时间为t,则可推出:
[0147]
(n-1)*t+T min(cow)≤T (1)≤(n-1)*t+T max(cow)
[0148]
[数0003]


[0149]
2T min(cow)≤T (1)≤2T max(cow)
[0150]
其中t≈Δt,T cow>>T nomal,可选的,通常T cow的值比T nomal的值大10倍以上,不同的系统中所大于的倍数不同。
[0151]
综上所述,第一预设阈值T (1)能估计出来的值就是2倍的对合并后的内存页的写操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时间T max(normal)和最小时间T min(cow),因此2T min(cow)≤T (1)≤2T max(cow)。这个最大时间和最小时间在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0152]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。
[0153]
请参照图8,若所述事件序列中包括多个目标子序列;本发明实施例提供 一种获取模块的结构示意图,如图8所示,本实施例中的获取模块包括:
[0154]
查找单元1010,用于从所述事件序列中依次查找预设个数的目标子序列;
[0155]
作为一种可选的实施方式,如图3所示,事件序列中可以包括多个目标子序列,其中,目标子序列包括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写操作异常事件,查找单元1010在操作系统执行指令流中依次查找预设个数(n个)目标子序列,预设个数的值(即n的值)由用户预先设定。
[0156]
计算单元1011,用于计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[0157]
作为一种可选的实施方式,计算单元1011计算预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差,如图3所示,依次计算各个目标子序列的第一时间差Δt 1,Δt 2,Δt 3......Δt n
[0158]
可选的,所述判断模块102具体用于判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值;
[0159]
所述确定模块103具体用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0160]
作为一种可选的实施方式,判断模块102判断预设个数的目标子序列中每个目标子序列的第一时间差是否均小于第一预设阈值,当预设个数的目标子序列中每个子序列的第一时间差均小于第一预设阈值,即是Δt i<T (1),i∈[1,n],则确定模块103确定系统中存在隐蔽信道。需要说明的是,第一预设阈值T (1)可以为对合并之后内存页写操作执行时间的两倍。
[0161]
可选的,为进一步提高隐蔽信道的检测准确率,考虑隐蔽信道的通信带宽,所述确定模块102包括判断单元和确定单元;
[0162]
判断单元,用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值;所述第二预设阈值小于所述预设个数;
[0163]
确定单元,用于当所述第二时间差小于所述第二预设阈值,确定系统中存 在隐蔽信道。
[0164]
作为一种可选的实施方式,为提高检测的准确率,结合隐蔽信道的通信带宽进行检测,具体的检测方法是,判断单元进一步判断预设个数的目标子序列中第一个目标子序列的起始时间与最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,若小于第二预设阈值,则确定单元确定系统中存在隐蔽信道。如图3所示,即是判断:
[0165]
Δt 1<T (1) i∈[1,n] && t n-end-t 1-beg<T (n)
[0166]
通常认为当通信带宽低于1bps时,该信道是没有通信价值的。第二预设阈值T( n)阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0167]
[数0004]


即T (n)<n
[0168]
因此T (n)的值不能超过n。由于实际应用中所传输的信息量比n要大,因此T (n)的阀值比n还稍微小点。
[0169]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。
[0170]
请参照图9,为本发明实施例提供的另一种信道检测装置的结构示意图。图9的信道检测装置可用于实现上述方法实施例中各步骤及方法。图9的实施例中,信道检测装置包括处理器200、收发器201、存储器202以及总线203。存储器202用于存储指令,处理器200用于执行存储器202中的指令,以完成后续信道检测操作。存储器202可以包括只读存储器和随机存取存储器,数据通信装置的各个组件通过总线系统203耦合在一起,其中总线系统203除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说 明起见,在图中将各种总线都标为总线系统203。下面对各个组件进行详细描述:
[0171]
所述处理器,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0172]
所述处理器还用于从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;
[0173]
所述处理器还用于判断所述目标子序列的时间属性是否满足预设条件;
[0174]
所述处理器还用于若所述目标子序列的时间属性满足预设条件,确定系统中存在隐蔽信道。
[0175]
可选的,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常事件,例如写时复制(Copy-On-Write,COW)页写操作异常事件,当启动COW页写操作异常事件时,操作系统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效地提高云环境中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛应用于各大商业和开源的虚拟机管理器中。
[0176]
然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中的隐私信息,比如密钥等等。
[0177]
隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了Sender,此时Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0178]
Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存 中。然后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需要传递的信息为0则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入下一个内存页。编码完毕后等待内存页合并。
[0179]
Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为0,Receiver接收信息完毕。
[0180]
普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为0的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并,相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长短就能解码出01信息。
[0181]
由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法为,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,合并之后内存页为不同虚拟机的内存页进行内存去重合并时所产生的内存页,需要说明的是,事件序列中的获取时间事件可能包括操作系统自身的获取时间事件,也可能包括恶意用户的获取时间事件,操作系统自身的获取时间事件通常间隔比较长。
[0182]
可选的,从所获取的事件序列中查找目标子序列,目标子序列的存在形式可以有多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由于通 常操作系统自身的获取时间事件的时间间隔比较长,因此可以通过目标序列中两个相邻的目标获取时间事件的时间间隔属性进行检测。
[0183]
可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的事件序列中目标写操作异常事件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对应的系统时间之差。
[0184]
需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的时间属性也不作限定。
[0185]
可选的,判断所获取的目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定操作系统中存在隐蔽信道。预设条件需要根据目标子序列的时间属性所确定,例如,若目标子序列的时间属性为目标子序列的起始时间与结束时间之间的第一时间差,则预设条件为,该第一时间差小于第一预设阈值。
[0186]
所述处理器还用于判断所述目标子序列的所述第一时间差是否小于第一预设阈值;
[0187]
所述处理器还用于当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0188]
可选的,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关键。设置的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来延长执行时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避检测。相反,如果设置的过长,则会导致误报率的增加。
[0189]
假设隐蔽信道在两次获取时间事件之间执行了n条指令(其中有一条是内存写操作指令),则为了能够准确编码信息,需要满足:
[0190]
T-Min cow(n)>T-Max normal(n)
[0191]
T-Min cow(n):执行n条指令的最短时间,其中内存写操作指令为对合并之后的内存页的写操作。
[0192]
T-Max normal(n):执行n条指令的最长时间,其中内存写操作指令为对普通内存页的写操作。
[0193]
假设n-1条普通指令执行的平均误差时间为Δt,即可进一步推导出:
[0194]
T min(cow)-T max(normal)>(n-1)*Δt
[0195]
T min(cow):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0196]
T max(normal):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0197]
假设n-1条普通指令的平均执行时间为t,则可推出:
[0198]
(n-1)*t+T min(cow)≤T (1)≤(n-1)*t+T max(cow)
[0199]
[数0005]


[0200]
2T min(cow)≤T (1)≤2T max(cow)
[0201]
其中t≈Δt,T cow>>T nomal,可选的,通常T cow的值比T nomal的值大10倍以上,不同的系统中所大于的倍数不同。
[0202]
综上所述,第一预设阈值T (1)能估计出来的值就是2倍的对合并后的内存页的写操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时间T max(normal)和最小时间T min(cow),因此2T min(cow)≤T (1)≤2T max(cow)。这个最大时间和最小时间在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0203]
若所述事件序列中包括多个目标子序列;
[0204]
所述处理器还用于从所述事件序列中依次查找预设个数的目标子序列;
[0205]
所述处理器还用于计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[0206]
可选的,如图3所示,事件序列中可以包括多个目标子序列,其中,目标子序列包括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写操作异常事件,在系统执行指令流中依次查找预设个数(n个)目标子序列, 预设个数的值(即n的值)由用户预先设定。
[0207]
可选的,计算预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差,如图3所示,依次计算各个目标子序列的第一时间差Δt 1,Δt 2,Δt 3.....Δt n
[0208]
所述处理器还用于判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值;
[0209]
所述处理器还用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值,确定系统中存在隐蔽信道。
[0210]
可选的,判断预设个数的目标子序列中每个目标子序列的第一时间差是否均小于第一预设阈值,若预设个数的目标子序列中每个子序列的第一时间差均小于第一预设阈值,即是Δt i<T (1),i∈[1,n],则确定操作系统中存在隐蔽信道。需要说明的是,第一预设阈值T (1)可以为对合并之后内存页写操作执行时间的两倍。
[0211]
所述处理器还用于判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数;
[0212]
所述处理器还用于当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。
[0213]
可选的,为提高检测的准确率,结合隐蔽信道的通信带宽进行检测,具体的检测方法是,进一步判断预设个数的目标子序列中第一个目标子序列的起始时间与最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,若小于第二预设阈值,则确定系统中存在隐蔽信道。如图3所示,即是判断:
[0214]
Δt i<T (1) i∈[1,n] && t n-end-t 1-beg-T (n)
[0215]
通常认为当通信带宽低于1bps时,该信道是没有通信价值的。第二预设阈值T (n)阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0216]
[数0006]


即T (n)<n
[0217]
因此T (n)的值不能超过n。由于实际应用中所传输的信息量比n要大,因此T (n)的阀值比n还稍微小点。
[0218]
本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式也不会影响系统正常的内存去重机制的功能。
[0219]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0220]
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0221]
本发明实施例终端中的模块或单元可以根据实际需要进行合并、划分和删减。
[0222]
本发明实施例的微控制器等部件,可以以通用集成电路,如中央处理器(Central Processing Unit,CPU),或以专用集成电路(Application Specific Integrated Circuit,ASIC)来实现。
[0223]
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

权利要求书

[权利要求 1]
一种信道检测方法,其特征在于,包括: 当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件; 从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性; 判断所述目标子序列的时间属性是否满足预设条件; 当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。
[权利要求 2]
如权利要求1所述的方法,其特征在于,所述目标子序列的时间属性包括所述目标子序列的起始时间与结束时间之间的第一时间差; 所述判断所述目标子序列的时间属性是否满足预设条件,包括: 判断所述目标子序列的所述第一时间差是否小于第一预设阈值; 所述当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道,包括: 当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[权利要求 3]
如权利要求2所述的方法,其特征在于,若所述事件序列中包括多个目标子序列; 所述从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性,包括: 从所述事件序列中依次查找预设个数的目标子序列; 计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[权利要求 4]
如权利要求3所述的方法,其特征在于,所述判断所述目标子序列的 所述第一时间差是否小于第一预设阈值,包括: 判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值; 所述当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道,包括: 当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[权利要求 5]
如权利要求4所述的方法,其特征在于,所述当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值之后,还包括: 判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数; 当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。
[权利要求 6]
一种信道检测装置,其特征在于,包括: 拦截模块,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件; 获取模块,用于从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性; 判断模块,用于判断所述目标子序列的时间属性是否满足预设条件; 确定模块,用于当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。
[权利要求 7]
如权利要求6所述的装置,其特征在于,所述目标子序列的时间属性包括所述目标子序列的起始时间与结束时间之间的第一时间差; 所述判断模块具体用于判断所述目标子序列的所述第一时间差是否小于 第一预设阈值; 所述确定模块具体用于当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[权利要求 8]
如权利要求7所述的装置,其特征在于,若所述事件序列中包括多个目标子序列;所述获取模块包括: 查找单元,用于从所述事件序列中依次查找预设个数的目标子序列; 计算单元,用于计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第一时间差。
[权利要求 9]
如权利要求8所述的装置,其特征在于,所述判断模块具体用于判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值。
[权利要求 10]
如权利要求9所述的装置,其特征在于,所述确定模块包括判断单元和确定单元; 所述判断单元,用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一预设阈值时,判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预设个数, 所述确定单元,用于当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。

附图

[ 图 0001]  
[ 图 0002]  
[ 图 0003]  
[ 图 0004]  
[ 图 0005]  
[ 图 0006]  
[ 图 0007]  
[ 图 0008]  
[ 图 0009]