一种信道检测方法及装置的制造方法

文档序号:10666385阅读:457来源:国知局
一种信道检测方法及装置的制造方法
【专利摘要】本发明实施例公开了一种信道检测方法及装置,所述方法包括:当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;判断所述目标子序列的时间属性是否满足预设条件,当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。采用本发明,可以准确检测出系统中是否存在隐蔽信道,且不会影响系统中正常的内存去重机制的功能。
【专利说明】
_种信道检测方法及装置
技术领域
[0001] 本发明涉及网络安全技术领域,尤其涉及一种信道检测方法及装置。
【背景技术】
[0002] 在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,具体的共 享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合 并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用 过程中,当某个虚拟机需要对该内存页进行写操作时,操作系统将启动写操作异常事件,例 如写时复制(Copy-On-Write,C0W)页写操作异常事件,并为该虚拟机重新拷贝一份物理内 存页进行写操作。
[0003] 然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意 用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页 的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中 的隐私信息,比如密钥等等。
[0004] 隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver 分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了 Sender,此时 Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内 存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0005] Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然 后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需 要传递的信息为〇则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入 下一个内存页。编码完毕后等待内存合并。
[0006] Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统 自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按 照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执 行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该 内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由 于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操 作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某 一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为(^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] 图1是本发明实施例提供的一种隐蔽信道构建示意图;
[0048] 图2是本发明实施例提供的一种信道检测方法的流程示意图;
[0049] 图3是本发明实施例提供的一种指令流示意图;
[0050] 图4是本发明实施例提供的另一种信道检测方法的流程示意图;
[0051] 图5是本发明实施例提供的一种隐蔽信道检测算法流程图;
[0052] 图6是本发明实施例提供的一种COW页写操作异常算法流程图;
[0053] 图7是本发明实施例提供的一种信道检测装置的结构示意图;
[0054] 图8是本发明实施例提供的一种获取模块的结构示意图;
[0055] 图9是本发明实施例提供的另一种信道检测装置的结构示意图。
【具体实施方式】
[0056] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0057] 本发明实施例中的信道检测方法可以应用于多租户云环境下基于内存去重技术 所构建的隐蔽信道的检测过程中。
[0058] 下面将结合附图1至附图6,对本发明实施例提供的信道检测方法进行介绍和说 明。
[0059] 请参照图2,是本发明实施例提供的一种信道检测方法的流程示意图;如图2所 示,所述信道检测方法包括:
[0060] S100,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统 指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0061 ] 在一个实施例中,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机 的内存,共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内 存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。 在后续使用过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常 事件,例如写时复制(Copy-On-Write,C0W)页写操作异常事件,当启动COW页写操作异常事 件时,操作系统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效 地提高云环境中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛 应用于各大商业和开源的虚拟机管理器中。
[0062] 然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意 用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页 的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中 的隐私信息,比如密钥等等。
[0063] 隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver 分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了 Sender,此时 Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内 存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0064] Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然 后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需 要传递的信息为〇则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入 下一个内存页。编码完毕后等待内存页合并。
[0065] Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统 自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按 照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执 行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该 内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由 于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操 作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某 一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为(^Receiver接收信 息完毕。
[0066] 普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证 Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为 〇的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并, 相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并 为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长 短就能解码出〇或1信息。
[0067] 由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发 明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法 为,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件, 可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,合并之后内存页为 不同虚拟机的内存页进行内存去重合并时所产生的内存页,需要说明的是,事件序列中的 获取时间事件可能包括操作系统自身的获取时间事件,也可能包括恶意用户的获取时间事 件,操作系统自身的获取时间事件通常间隔比较长。
[0068] SlOl,从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性;
[0069] 在一个实施例中,从所获取的事件序列中查找目标子序列,目标子序列的存在形 式可以有多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由于通常操作系 统自身的获取时间事件的时间间隔比较长,因此可以通过目标序列中两个相邻的目标获取 时间事件的时间间隔属性进行检测。
[0070] 可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以 及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到 的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的事件序列中目标写操作异常事 件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事 件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即 是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对 应的系统时间之差。
[0071] 需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的 时间属性也不作限定。
[0072] S102,判断所述目标子序列的时间属性是否满足预设条件;
[0073] S103,当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。
[0074] 在一个实施例中,判断所获取的目标子序列的时间属性是否满足预设条件,当目 标子序列的时间属性满足预设条件时,则确定系统中存在隐蔽信道。预设条件需要根据目 标子序列的时间属性所确定,例如,若目标子序列的时间属性为目标子序列的起始时间与 结束时间之间的第一时间差,则预设条件为,该第一时间差小于第一预设阈值。
[0075] 可选的,步骤S102可以具体为判断所述目标子序列的所述第一时间差是否小于 第一预设阈值;
[0076] 步骤S103可以具体为当所述目标子序列的所述第一时间差小于所述第一预设阈 值时,确定系统中存在隐蔽信道。
[0077] 在一个实施例中,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关 键。设置的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来 延长执行时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避 检测。相反,如果设置的过长,则会导致误报率的增加。
[0078] 假设隐蔽信道在两次获取时间事件之间执行了 η条指令(其中有一条是内存写操 作指令),则为了能够准确编码信息,需要满足:
[0079]
[0080] T-Minraww:执行η条指令的最短时间,其中内存写操作指令为对合并之后的内存 页的写操作。
[0081] T-Maxnmiaiw :执行η条指令的最长时间,其中内存写操作指令为对普通内存页的 写操作。
[0082] 假设η-1条普通指令执行的平均误差时间为Δ t,即可进一步推导出:
[0083]
[0084] T_fcOT):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0085] T_(n_al):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0086] 假设η-1条普通指令的平均执行时间为t,则可推出:
[0087]
[0088]
[0089]
[0090] 其中t~At,Traw?T_al,可选的,通常T raw的值KT_al的值大10倍以上,不同的 系统中所大于的倍数不同。
[0091] 综上所述,第一预设阈值!^;能估计出来的值就是2倍的对合并后的内存页的写 操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时 间T_( n_al)和最小时间Tniin^,因此2T_w彡T⑴彡2T_fcOT)。这个最大时间和最小时间 在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0092] 本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从 事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性 是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。 这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方 式也不会影响系统正常的内存去重机制的功能。
[0093] 请参照图4,是本发明实施例提供的另一种信道检测方法的流程示意图;若事件 序列中包括多个目标子序列,如图4所示,本实施例所述的一种信道检测方法包括步骤:
[0094] S200,当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统 指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0095] 本发明实施例步骤S200,请参照图1所示的实施例步骤S100,在此不进行赘述。
[0096] S201,从所述事件序列中依次查找预设个数的目标子序列;
[0097] 作为一种可选的实施方式,如图3所示,事件序列中可以包括多个目标子序列,其 中,目标子序列包括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写 操作异常事件,在操作系统执行指令流中依次查找预设个数(η个)目标子序列,预设个数 的值(即η的值)由用户预先设定。
[0098] S202,计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间 之间的第一时间差。
[0099] 作为一种可选的实施方式,计算预设个数的目标子序列中每个目标子序列的起始 时间与结束时间之间的第一时间差,如图3所示,依次计算各个目标子序列的第一时间差 Δ t1? Λ t2? Λ t3···. . A tn〇
[0100] S203,判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否 均小于所述第一预设阈值;
[0101] S204,当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于 所述第一预设阈值时,确定系统中存在隐蔽信道。
[0102] 作为一种可选的实施方式,判断预设个数的目标子序列中每个目标子序列的第一 时间差是否均小于第一预设阈值,若预设个数的目标子序列中每个子序列的第一时间差均 小于第一预设阈值,即是A tl<Tu),ie [l,n],购?角定系统中存在隐蔽信道。需要说明的 是,第一预设阈值!\1}可以为对合并之后内存页写操作执行时间的两倍。
[0103] 可选的,为进一步提高隐蔽信道的检测准确率,考虑隐蔽信道的通信带宽,则在步 骤S204中的所述当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小 于所述第一预设阈值之后,还包括:
[0104] 判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目 标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所 述预设个数;
[0105] 若所述第二时间差小于所述第二预设阈值,则确定系统中存在隐蔽信道。
[0106] 作为一种可选的实施方式,为提高检测的准确率,结合隐蔽信道的通信带宽进行 检测,具体的检测方法是,进一步判断预设个数的目标子序列中第一个目标子序列的起始 时间与最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,若小于 第二预设阈值,则确定系统中存在隐蔽信道。如图3所示,即是判断:
[0107]
[0108] 通常认为当通信带宽低于Ibps时,该信道是没有通信价值的。第二预设阈值T(n) 阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0109]
[0110] 因此Tw的值不能超过η。由于实际应用中所传输的信息量比η要大,因此T ^的 阀值比η还稍微小点。
[0111] 本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从 事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性 是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。 这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方 式也不会影响系统正常的内存去重机制的功能。
[0112] 请参照图5,为本发明实施例提供的一种隐蔽信道检测算法流程图,在本发明实施 例中,事件序列包括获取时间事件以及COW页写操作异常事件。在操作系统执行过程中,会 不断地拦截到这两种事件的发生。即沿着操作系统执行指令流的方向上,会不断地拦截到 这两种事件并进入处理例程中处理。
[0113] 当拦截到获取时间事件的执行时,处理例程的算法流程如图5所示:在处理函数 中,t_用于记录当前系统时间,t _缓存了上一次进入该处理函数的系统时间。t OTW_pf记录 了最近一次执行COW页写操作异常事件的系统时间,是一个全局变量,由图6中的页错误异 常处理函数进行更新。t teg记录了检测到的第一个目标子序列的起始时间,用于计算当检测 到第η个时,这η个子序列的执行时间。Count变量用于记录当前检测到的第几个目标子序 列。在算法开始时,首先获取当前系统时间t_,然后和缓存的上一次获取时间事件发生的 系统时间t pra相减,判断时间间隔是否小于阀值T ω,大于则表示当前子序列并不是隐蔽信 道解码操作,更新。否则进一步判断最近一次COW页写操作异常事件是否介于这两次获 取时间事件之间,是则表示检测到一次隐蔽信道的解码操作,更新Count,并判断当前是否 是检测到第η次解码操作,是则进一步判断η次解码操作的时间间隔是否小于阀值T w,若 小于则确定检测到隐蔽信道。
[0114] 进一步,请参照图6为本发明实施例提供的一种页错误处理算法流程图:
[0115] 在系统运行过程中,对经过内存去重合并之后的内存页进行写操作时,将会触发 COW页写操作异常事件,并进入到页错误异常处理函数中,本发明在该处理函数中的算法流 程如图6所不:
[0116] 首先需要判断当前页错误异常变量PFEC是否属于写操作异常,如果是则继续遍 历COW页链表,根据发生页错误异常的内存页的虚拟地址pf_va判断该内存页是否属于经 过内存去重合并之后的内存页,如果是则表明拦截到了 COW页写操作异常事件,从而记录 当前系统时间到全局变量traw pf中。
[0117] 下面结合附图7至附图9,阐述本发明实施例提供的信道检测装置的具体实现。
[0118] 请参照图7,为本发明实施例提供的一种信道检测装置的结构示意图,如图7所 示,本实施例所述的一种信道检测装置包括:拦截模块100、获取模块101、判断模块102和 确定模块103。
[0119] 拦截模块100,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0120] 在一个实施例中,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机 的内存,共享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内 存页进行合并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。 在后续使用过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常 事件,例如写时复制(Copy-On-Write,C0W)页写操作异常事件,当启动COW页写操作异常事 件时,操作系统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效 地提高云环境中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛 应用于各大商业和开源的虚拟机管理器中。
[0121] 然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意 用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页 的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中 的隐私信息,比如密钥等等。
[0122] 隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver 分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了 Sender,此时 Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内 存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0123] Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然 后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需 要传递的信息为〇则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入 下一个内存页。编码完毕后等待内存页合并。
[0124] Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统 自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按 照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执 行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该 内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由 于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操 作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某 一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为(^Receiver接收信 息完毕。
[0125] 普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证 Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为 〇的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并, 相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并 为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长 短就能解码出Ol信息。
[0126] 由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发 明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法 为,拦截模块100在操作系统指令流中拦截操作系统执行事件序列,该事件序列中包括获 取时间事件,可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,需要说 明的是,事件序列中的获取时间事件可能包括操作系统自身的获取时间事件,也可能包括 恶意用户的获取时间事件,操作系统自身的获取时间事件通常间隔比较长。
[0127] 获取模块101,用于从所述事件序列中查找目标子序列,并获取所述目标子序列的 时间属性;
[0128] 在一个实施例中,获取模块101从所获取的事件序列中查找目标子序列,目标子 序列的存在形式可以有多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由 于通常系统自身的获取时间事件的时间间隔比较长,因此可以通过目标序列中两个相邻的 目标获取时间事件的时间间隔属性进行检测。
[0129] 可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以 及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到 的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的事件序列中目标写操作异常事 件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事 件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即 是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对 应的系统时间之差。
[0130] 需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的 时间属性也不作限定。
[0131] 判断模块102,用于判断所述目标子序列的时间属性是否满足预设条件;
[0132] 确定模块103,用于当所述目标子序列的时间属性满足预设条件,确定系统中存在 隐蔽信道。
[0133] 在一个实施例中,判断模块102判断所获取的目标子序列的时间属性是否满足预 设条件,当目标子序列的时间属性满足预设条件时,确定模块103确定系统中存在隐蔽信 道。预设条件需要根据目标子序列的时间属性所确定,例如,若目标子序列的时间属性为目 标子序列的起始时间与结束时间之间的第一时间差,则预设条件为,该第一时间差小于第 一预设阈值。
[0134] 可选的,所述判断模块102具体用于判断所述目标子序列的所述第一时间差是否 小于第一预设阈值;
[0135] 所述确定模块103具体用于当所述目标子序列的所述第一时间差小于所述第一 预设阈值时,确定系统中存在隐蔽信道。
[0136] 在一个实施例中,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关 键。设置的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来 延长执行时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避 检测。相反,如果设置的过长,则会导致误报率的增加。
[0137] 假设隐蔽信道在两次获取时间事件之间执行了 η条指令(其中有一条是内存写操 作指令),则为了能够准确编码信息,需要满足:
[0138] T-Mincow(n)> T-Max nornal(n)
[0139] T-Minraww:执行η条指令的最短时间,其中内存写操作指令为对合并之后的内存 页的写操作。
[0140] T-Maxnmiaiw :执行η条指令的最长时间,其中内存写操作指令为对普通内存页的 写操作。
[0141] 假设η-1条普通指令执行的平均误差时间为At,即可进一步推导出:
[0142] Tmin(cow)-Tmax (normal) > (n-1) * Δ t
[0143] T_fcOT):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0144] T_(n_al):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0145] 假设n-1条普通指令的平均执行时间为t,则可推出:
[0146]
[0147] _] 2T_(cow)<T ⑴彡 2T max (cow)
[0149] 其中七~八11_》1;_1,可选的,通常1_的值比1\_1的值大10倍以上,不同的 系统中所大于的倍数不同。
[0150] 综上所述,第一预设阈值!\1}能估计出来的值就是2倍的对合并后的内存页的写 操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时 间T_( n_al)和最小时间Tniin^,因此2T_w彡T⑴彡2T_fcOT)。这个最大时间和最小时间 在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0151] 本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行事件序列,该事件序列中包括获取时间事件,从事 件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性是 否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。这 种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方式 也不会影响系统正常的内存去重机制的功能。
[0152] 请参照图8,若所述事件序列中包括多个目标子序列;本发明实施例提供一种获 取模块的结构示意图,如图8所示,本实施例中的获取模块包括:
[0153] 查找单元1010,用于从所述事件序列中依次查找预设个数的目标子序列;
[0154] 作为一种可选的实施方式,如图3所示,事件序列中可以包括多个目标子序列,其 中,目标子序列包括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写 操作异常事件,查找单元1010在操作系统执行指令流中依次查找预设个数(η个)目标子 序列,预设个数的值(即η的值)由用户预先设定。
[0155] 计算单元1011,用于计算所述预设个数的目标子序列中每个目标子序列的起始时 间与结束时间之间的第一时间差。
[0156] 作为一种可选的实施方式,计算单元1011计算预设个数的目标子序列中每个目 标子序列的起始时间与结束时间之间的第一时间差,如图3所示,依次计算各个目标子序 列的第一时间差At 1, At2, At3…..Atn。
[0157] 可选的,所述判断模块102具体用于判断所述预设个数的目标子序列中每个目标 子序列的所述第一时间差是否均小于所述第一预设阈值;
[0158] 所述确定模块103具体用于当所述预设个数的目标子序列中每个目标子序列的 所述第一时间差均小于所述第一预设阈值时,确定系统中存在隐蔽信道。
[0159] 作为一种可选的实施方式,判断模块102判断预设个数的目标子序列中每个目标 子序列的第一时间差是否均小于第一预设阈值,当预设个数的目标子序列中每个子序列的 第一时间差均小于第一预设阈值,即是A tl< T⑴,i e [l,n],则确定模块103确定系统中 存在隐蔽信道。需要说明的是,第一预设阈值!\1}可以为对合并之后内存页写操作执行时 间的两倍。
[0160] 可选的,为进一步提高隐蔽信道的检测准确率,考虑隐蔽信道的通信带宽,所述确 定模块102包括判断单元和确定单元;
[0161] 判断单元,用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间 差均小于所述第一预设阈值时,判断所述预设个数的目标子序列中第一个目标子序列的起 始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值;所述 第二预设阈值小于所述预设个数;
[0162] 确定单元,用于当所述第二时间差小于所述第二预设阈值,确定系统中存在隐蔽 信道。
[0163] 作为一种可选的实施方式,为提高检测的准确率,结合隐蔽信道的通信带宽进行 检测,具体的检测方法是,判断单元进一步判断预设个数的目标子序列中第一个目标子序 列的起始时间与最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈 值,若小干笛一预设阈佶确宙里元确宙系缔由存亦隐蔽信道。如图3所示,即是判断:
[0164]
[0165] 通常认为当通信带宽低于Ibps时,该信道是没有通信价值的。第二预设阈值T(n) 阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0166]
[0167] 因此Tw的值不能超过η。由于实际应用中所传输的信息量比η要大,因此T ^的 阀值比η还稍微小点。
[0168] 本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从 事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性 是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。 这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方 式也不会影响系统正常的内存去重机制的功能。
[0169] 请参照图9,为本发明实施例提供的另一种信道检测装置的结构示意图。图9的 信道检测装置可用于实现上述方法实施例中各步骤及方法。图9的实施例中,信道检测装 置包括处理器200、收发器201、存储器202以及总线203。存储器202用于存储指令,处理 器200用于执行存储器202中的指令,以完成后续信道检测操作。存储器202可以包括只 读存储器和随机存取存储器,数据通信装置的各个组件通过总线系统203耦合在一起,其 中总线系统203除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为 了清楚说明起见,在图中将各种总线都标为总线系统203。下面对各个组件进行详细描述:
[0170] 所述处理器,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,所述事件序列中包括获取时间事件;
[0171] 所述处理器还用于从所述事件序列中查找目标子序列,并获取所述目标子序列的 时间属性;
[0172] 所述处理器还用于判断所述目标子序列的时间属性是否满足预设条件;
[0173] 所述处理器还用于若所述目标子序列的时间属性满足预设条件,确定系统中存在 隐蔽信道。
[0174] 可选的,在多租户云环境中,通常租户间的虚拟机共享同一个物理主机的内存,共 享方法可以是采用内存去重技术进行共享,内存去重技术即是将相同的物理内存页进行合 并,只保留一份该内存页的物理拷贝,所有其他虚拟机共同映射该物理内存页。在后续使用 过程中,当某个虚拟机对该内存页进行写操作时,操作系统将启动写操作异常事件,例如写 时复制(Copy-On-Write,C0W)页写操作异常事件,当启动COW页写操作异常事件时,操作系 统为该虚拟机重新拷贝一份物理内存页进行写操作。内存去重技术能够有效地提高云环境 中的物理内存利用率,增加单台物理主机上的并发虚拟机数量,因此被广泛应用于各大商 业和开源的虚拟机管理器中。
[0175] 然而,内存去重技术在云平台中的引入也会导致意想不到的安全漏洞。因为恶意 用户和普通用户的虚拟机有可能位于同一个物理主机上,并利用内存去重技术进行内存页 的合并。恶意用户可以通过这种共享内存的机制构建起隐蔽信道从而窃取其他普通用户中 的隐私信息,比如密钥等等。
[0176] 隐蔽信道具体的构建方法为,如图1所示,普通用户Sender和恶意用户Receiver 分别为位于同一物理主机上的两台虚拟机,Receiver通过某种手段入侵了 Sender,此时 Receiver希望能够隐蔽地将窃取到的用户隐私数据传递出来而不被检测到,则可以基于内 存去重机制构建隐蔽信道进行信息传递,假设有N bit信息需要传递:
[0177] Receiver控制Sender申请一份大小为N*4K的内存,并加载文件A到内存中。然 后Receiver控制Sender将申请的内存按照内存页粒度(4K)进行编码,编码的规则是:需 要传递的信息为〇则修改当前内存页(任意修改),需要传递的信息为1则跳过不修改进入 下一个内存页。编码完毕后等待内存页合并。
[0178] Receiver申请相同大小为N*4K的内存,并加载相同的文件A到内存中。操作系统 自动进行内存页合并。Receiver等待一段时间后,开始接收信息。即是将所申请的内存按 照内存页粒度进行解码,解码的规则是:逐个内存页进行写操作,同时测量内存页写操作执 行的时间,具体的测量方式是在对某一个内存页进行写操作之前获取一次系统时间,对该 内存页写操作执行完毕后再获取一次系统时间,若该内存页为进行合并之后的内存页,由 于需要额外的内存页拷贝过程,所以该内存页写操作执行所花费的时间比普通内存页写操 作执行时间更长,因此Receiver可以根据内存页写操作执行时间长短进行解码,例如,某 一个内存页写操作执行时间过长则当前页解码为1,否则当前页解码为(^Receiver接收信 息完毕。
[0179] 普通用户Sender和恶意用户Receiver加载相同的文件A的目的是为了保证 Sender和Receiver申请的内存页初始内容完全相同,后续Sender在进行编码之后,编码为 〇的内存页由于Sender进行了修改,所以两端对应的内存页不相同,不会进行内存页合并, 相反,编码为1的内存页由于两端内容完全相同,因此经过一段时间之后,内存页会被合并 为同一物理内存页。最后Receiver通过对内存页进行写操作并测量写操作执行时间的长 短就能解码出01信息。
[0180] 由于恶意用户Receiver是通过获取系统时间来不断进行解码操作的,因此本发 明实施例针对操作系统指令流中获取时间事件来进行隐蔽信道的检测。具体的获取方法 为,在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件, 可选的,该事件序列中还可以包括对合并之后内存页写操作异常事件,合并之后内存页为 不同虚拟机的内存页进行内存去重合并时所产生的内存页,需要说明的是,事件序列中的 获取时间事件可能包括操作系统自身的获取时间事件,也可能包括恶意用户的获取时间事 件,操作系统自身的获取时间事件通常间隔比较长。
[0181] 可选的,从所获取的事件序列中查找目标子序列,目标子序列的存在形式可以有 多种,例如目标子序列可以包括两个相邻的目标获取时间事件,由于通常操作系统自身的 获取时间事件的时间间隔比较长,因此可以通过目标序列中两个相邻的目标获取时间事件 的时间间隔属性进行检测。
[0182] 可选的,为了检测的准确性,减少误报率,目标子序列包括目标获取时间事件以 及在目标获取时间事件之间的目标写操作异常事件,如图3所示,白色小圆圈代表拦截到 的事件序列中目标获取时间事件,黑色小圆圈代表拦截到的事件序列中目标写操作异常事 件,则所查找的目标子序列即是两个目标获取时间事件之间夹着一个目标写操作异常事 件。目标子序列的时间属性包括目标子序列的起始时间与结束时间之间的第一时间差,即 是目标子序列中第一个目标获取时间事件对应的系统时间与第二个目标获取时间事件对 应的系统时间之差。
[0183] 需要说明的是,本发明实施例中目标子序列的存在形式不作限定,目标子序列的 时间属性也不作限定。
[0184] 可选的,判断所获取的目标子序列的时间属性是否满足预设条件,若目标子序列 的时间属性满足预设条件,则确定操作系统中存在隐蔽信道。预设条件需要根据目标子序 列的时间属性所确定,例如,若目标子序列的时间属性为目标子序列的起始时间与结束时 间之间的第一时间差,则预设条件为,该第一时间差小于第一预设阈值。
[0185] 所述处理器还用于判断所述目标子序列的所述第一时间差是否小于第一预设阈 值;
[0186] 所述处理器还用于当所述目标子序列的所述第一时间差小于所述第一预设阈值 时,确定系统中存在隐蔽信道。
[0187] 可选的,第一预设阈值的设置对于检测单次隐蔽信道的解码操作非常关键。设置 的过短,则恶意用户有可能通过在两次获取时间事件之间插入一些无用的指令来延长执行 时间的方式(但恶意用户仍然可以区分出COW页写操作和普通页写操作)来逃避检测。相 反,如果设置的过长,则会导致误报率的增加。
[0188] 假设隐蔽信道在两次获取时间事件之间执行了 η条指令(其中有一条是内存写操 作指令),则为了能够准确编码信息,需要满足:
[0189] T_Mincow(n) > T-Max nornal (n)
[0190] T-Minraww:执行n条指令的最短时间,其中内存写操作指令为对合并之后的内存 页的写操作。
[0191] T-Maxnmiaiw :执行η条指令的最长时间,其中内存写操作指令为对普通内存页的 写操作。
[0192] 假设η-1条普通指令执行的平均误差时间为At,即可进一步推导出:
[0193] Tmin(cow)-Tmax (normal) > (n-1) * Δ t
[0194] T_fcOT):执行内存写操作指令为对合并后的内存页的写,需要的最短执行时间。
[0195] T_(n_al):执行内存写操作指令为对普通内存页的写,需要的最长执行时间。
[0196] 假设n-1条普通指令的平均执行时间为t,则可推出:
[0199] 2T_(cow)<T ⑴彡 2T
[0197]
[0198] max (cow)
[0200] 其中t~At,Traw?T_al,可选的,通常T raw的值KT_al的值大10倍以上,不同的 系统中所大于的倍数不同。
[0201] 综上所述,第一预设阈值1\1}能估计出来的值就是2倍的对合并后的内存页的写 操作的执行时间,不过对合并后的内存页写操作的执行时间也是有一个范围的,即最大时 间T_( n_al)和最小时间Tniin^,因此2T_w彡T⑴彡2T_fcOT)。这个最大时间和最小时间 在不同系统上是不一样的,需要根据实际系统的测量值在部署的时候进行设置。
[0202] 若所述事件序列中包括多个目标子序列;
[0203] 所述处理器还用于从所述事件序列中依次查找预设个数的目标子序列;
[0204] 所述处理器还用于计算所述预设个数的目标子序列中每个目标子序列的起始时 间与结束时间之间的第一时间差。
[0205] 可选的,如图3所示,事件序列中可以包括多个目标子序列,其中,目标子序列包 括两个目标获取时间事件,以及在两个目标获取时间事件之间的目标写操作异常事件,在 系统执行指令流中依次查找预设个数(η个)目标子序列,预设个数的值(即η的值)由用 户预先设定。
[0206] 可选的,计算预设个数的目标子序列中每个目标子序列的起始时间与结束时间之 间的第一时间差,如图3所示,依次计算各个目标子序列的第一时间差A tl,At2, At^.. Atn〇
[0207] 所述处理器还用于判断所述预设个数的目标子序列中每个目标子序列的所述第 一时间差是否均小于所述第一预设阈值;
[0208] 所述处理器还用于当所述预设个数的目标子序列中每个目标子序列的所述第一 时间差均小于所述第一预设阈值,确定系统中存在隐蔽信道。
[0209] 可选的,判断预设个数的目标子序列中每个目标子序列的第一时间差是否均小于 第一预设阈值,若预设个数的目标子序列中每个子序列的第一时间差均小于第一预设阈 值,即是A tl<Tu),ie [1,η],则确定操作系统中存在隐蔽信道。需要说明的是,第一预 设阈值!'(^可以为对合并之后内存页写操作执行时间的两倍。
[0210] 所述处理器还用于判断所述预设个数的目标子序列中第一个目标子序列的起始 时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第 二预设阈值小于所述预设个数;
[0211] 所述处理器还用于当所述第二时间差小于所述第二预设阈值时,确定系统中存在 隐蔽信道。
[0212] 可选的,为提高检测的准确率,结合隐蔽信道的通信带宽进行检测,具体的检测方 法是,进一步判断预设个数的目标子序列中第一个目标子序列的起始时间与最后一个目标 子序列的结束时间之间的第二时间差是否小于第二预设阈值,若小于第二预设阈值,则确 定系统中存在隐蔽信道。如图3所示,即是判断:
[0213] Δ ti< T ⑴ i e [1,n] && tn end-ti beg< T ⑴
[0214] 通常认为当通信带宽低于Ibps时,该信道是没有通信价值的。第二预设阈值T(n) 阀值用于控制隐蔽信道传输n bit信息时的最长传输时间。即是保证:
[0215]
[0216] 因此Tw的值不能超过η。由于实际应用中所传输的信息量比η要大,因此T ^的 阀值比η还稍微小点。
[0217] 本发明实施例中,当至少两台虚拟机在同一个物理主机上进行内存去重合并时, 在操作系统指令流中拦截操作系统执行的事件序列,该事件序列中包括获取时间事件,从 事件序列中查找目标子序列,并获取目标子序列的时间属性,判断目标子序列的时间属性 是否满足预设条件,若目标子序列的时间属性满足预设条件,则确定系统中存在隐蔽信道。 这种方式可以准确检测出系统中是否存在隐蔽信道,提高了系统安全性,并且这种检测方 式也不会影响系统正常的内存去重机制的功能。
[0218] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以 通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质 中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁 碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0219] 本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0220] 本发明实施例终端中的模块或单元可以根据实际需要进行合并、划分和删减。
[0221] 本发明实施例的微控制器等部件,可以以通用集成电路,如中央处理器(Central Processing Unit, CPU),或以专用集成电路(Application Specific Integrated Circuit,ASIC)来实现。
[0222] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范 围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【主权项】
1. 一种信道检测方法,其特征在于,包括: 当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作系统指令流中拦 截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件; 从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性; 判断所述目标子序列的时间属性是否满足预设条件; 当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道。2. 如权利要求1所述的方法,其特征在于,所述目标子序列的时间属性包括所述目标 子序列的起始时间与结束时间之间的第一时间差; 所述判断所述目标子序列的时间属性是否满足预设条件,包括: 判断所述目标子序列的所述第一时间差是否小于第一预设阈值; 所述当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽信道,包 括: 当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在隐蔽 信道。3. 如权利要求2所述的方法,其特征在于,若所述事件序列中包括多个目标子序列; 所述从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属性,包括: 从所述事件序列中依次查找预设个数的目标子序列; 计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束时间之间的第 一时间差。4. 如权利要求3所述的方法,其特征在于,所述判断所述目标子序列的所述第一时间 差是否小于第一预设阈值,包括: 判断所述预设个数的目标子序列中每个目标子序列的所述第一时间差是否均小于所 述第一预设阈值; 所述当所述目标子序列的所述第一时间差小于所述第一预设阈值时,确定系统中存在 隐蔽信道,包括: 当所述预设个数的目标子序列中每个目标子序列的所述第一时间差均小于所述第一 预设阈值时,确定系统中存在隐蔽信道。5. 如权利要求4所述的方法,其特征在于,所述当所述预设个数的目标子序列中每个 目标子序列的所述第一时间差均小于所述第一预设阈值之后,还包括: 判断所述预设个数的目标子序列中第一个目标子序列的起始时间和最后一个目标子 序列的结束时间之间的第二时间差是否小于第二预设阈值,所述第二预设阈值小于所述预 设个数; 当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐蔽信道。6. -种信道检测装置,其特征在于,包括: 拦截模块,用于当至少两台虚拟机在同一个物理主机上进行内存去重合并时,在操作 系统指令流中拦截所述操作系统执行的事件序列,所述事件序列中包括获取时间事件; 获取模块,用于从所述事件序列中查找目标子序列,并获取所述目标子序列的时间属 性; 判断模块,用于判断所述目标子序列的时间属性是否满足预设条件; 确定模块,用于当所述目标子序列的时间属性满足预设条件时,确定系统中存在隐蔽 信道。7. 如权利要求6所述的装置,其特征在于,所述目标子序列的时间属性包括所述目标 子序列的起始时间与结束时间之间的第一时间差; 所述判断模块具体用于判断所述目标子序列的所述第一时间差是否小于第一预设阈 值; 所述确定模块具体用于当所述目标子序列的所述第一时间差小于所述第一预设阈值 时,确定系统中存在隐蔽信道。8. 如权利要求7所述的装置,其特征在于,若所述事件序列中包括多个目标子序列;所 述获取模块包括: 查找单元,用于从所述事件序列中依次查找预设个数的目标子序列; 计算单元,用于计算所述预设个数的目标子序列中每个目标子序列的起始时间与结束 时间之间的第一时间差。9. 如权利要求8所述的装置,其特征在于,所述判断模块具体用于判断所述预设个数 的目标子序列中每个目标子序列的所述第一时间差是否均小于所述第一预设阈值。10. 如权利要求9所述的装置,其特征在于,所述确定模块包括判断单元和确定单元; 所述判断单元,用于当所述预设个数的目标子序列中每个目标子序列的所述第一时间 差均小于所述第一预设阈值时,判断所述预设个数的目标子序列中第一个目标子序列的起 始时间和最后一个目标子序列的结束时间之间的第二时间差是否小于第二预设阈值,所述 第二预设阈值小于所述预设个数; 所述确定单元,用于当所述第二时间差小于所述第二预设阈值时,确定系统中存在隐 蔽信道。
【文档编号】H04L29/06GK106034108SQ201510105652
【公开日】2016年10月19日
【申请日】2015年3月11日
【发明人】袁劲枫, 王胜
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1