技术领域
[0001] 本发明属于物联网安全技术领域,更具体地,涉及一种基于探针的混合远程验证方法及系统。
相关背景技术
[0002] 可信执行环境技术可用于保护物联网设备中的应用和数据,可将安全关键应用程序与不可信计算基础隔离。可信执行环境通过隔离软硬件资源提供安全区域,确保其中的
程序和数据不受外部干扰。
[0003] 远程证明是可信执行环境的关键组成部分,即可信执行环境向第三方证明其未被泄露且其结果是可信的。远程证明可以在可信执行环境与外部环境之间建立一种互信关
系,并提供一种可靠的方式来验证可信执行环境的状态和执行结果。
[0004] 现有的基于静态证据的远程证明方法在验证时精确度较低。现有的基于动态证据的远程证明方法中,检测控制流的证明方法检测能力最强,但是存在路径爆炸问题,即常规
程序中存在嵌套的循环和分支会导致控制流路径无限,难以预先计算所有合法控制流的哈
希,这会导致检测效率较低且无法验证所有控制流。此外,现有的远程证明方法没有验证关
键数据完整性,无法检测到修改关键数据的攻击。
具体实施方式
[0049] 为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述。本申请所描述的实施例仅仅是本发明一部
分的实施例,而不是全部实施例。基于本发明精神,本领域普通技术人员在没有作出创造性
劳动前提下所获得的有所其它实施例,都属于本发明的保护范围。
[0050] 需要说明的是,在本发明的描述中,术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实
施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或
单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或
单元。术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指
示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理
解为对本发明的限制。术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是
有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具
体含义。
[0051] 另外,若本发明中出现“和/或”的含义,包括三个并列的方案,以“A和/或B”为例,包括A方案、或B方案、或A和B同时满足的方案。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛
盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之
内。
[0052] 远程证明是一种确保设备可信的安全机制,常用于保护物联网设备。可信的第三方(验证方)负责质询可疑设备(证明方)以证明其未被泄露。远程证明可以以不同的方式提
供各种保证,每种保证都有自己的优点和缺点。通常,远程证明根据其如何在证明方发送给
验证方的消息中建立信任根而被划分为多个类别。如果没有信任的基础,那么证明方提供
的任何证据都不能被验证方信任。例如,证明方可能使用旧的系统状态信息来欺骗验证方,
或者调用恶意服务器来伪造响应。远程证明方案通过许多不同的策略为证明方设备提供许
多不同的保证。通常情况下,当验证方向证明方发送质询时,远程证明开始。质询通常包括
一些随机性,并要求证明人提供其清白的证据。证据取决于远程证明方案设计提供的保证
水平。现有的基于静态证据的远程证明方法在验证时精确度较低。现有的基于动态证据的
远程证明方法中,检测控制流的证明方法检测能力最强,但是存在路径爆炸问题,即常规程
序中存在嵌套的循环和分支会导致控制流路径无限,难以预先计算所有合法控制流的哈
希,这会导致检测效率较低且无法验证所有控制流。此外,现有的远程证明方法没有验证关
键数据完整性,无法检测到修改关键数据的攻击。
[0053] 如图1所示,本发明的实施例1提供了一种基于探针的混合远程验证方法,包括以下步骤:
[0054] 步骤1,在安全关键应用中插入探针,用于实时监控和捕获控制相关变量和语义关键变量,专用编译器生成控制流图;优选地,安全关键应用为需要远程证明验证的应用;探
针插入位置为控制流指令与关键数据定义使用处;所述关键数据为控制相关变量和语义关
键变量;所述控制相关变量是其值直接决定特定程序执行代码路径的变量,如条件变量;所
述语义关键变量的值虽然不会直接影响代码执行路径,但会影响操作的结果。
[0055] 具体地,控制流指令和控制相关变量由专用编译器自动识别,语义关键变量在程序编写者注释后由专用编译器识别。控制相关变量和语义关键变量形成关键变量的初始集
合,然后专用编译器自动扩展此集合,以包括指向这些变量及其依赖项的直接和间接指针。
指向关键变量的指针允许间接定义或使用该变量,因此将此类数据指针视为特殊的关键变
量,专用编译器从指针分析生成的全局点到映射中迭代地识别它们。关键变量的依赖关系
是可能影响其值的变量。验证关键变量的完整性意味着验证关键变量及其依赖关系的完整
性。给定一组关键变量,专用编译器首先构建程序依赖图,然后沿数据依赖边对每个变量执
行反向遍历,来找到它们的所有依赖关系。遍历过程中新发现的变量将添加到关键变量集
中。当集合无法继续扩充时,对依赖项的迭代搜索将停止。这种自动相关性发现还简化了关
键变量注释,程序开发者只需要为每条关键数据注释一个变量,而不是全部变量。
[0056] 步骤2,采用伪随机方法遍历内存地址生成标准静态测量值,通过控制流图生成标准控制流测量值,将标准静态测量值和标准控制流测量值作为离线标准值;
[0057] 优选地,步骤2具体包括以下步骤:
[0058] 步骤2.1,使用伪随机算法生成内存地址,遍历整个安全关键应用的内存空间;对于每个生成的内存地址,读取其内容和状态,使用哈希函数计算该内存地址的内容的散列
值,将所有内存地址的散列值合并和累加,生成整个应用程序的标准静态测量值;
[0059] 所述伪随机算法包括但不限于Phelix算法;使用Phelix算法作为远程证明系统中的随机数生成器,能够提供高安全性、高效性和长期可靠性,有助于保障系统的安全性和稳
定性;
[0060] 具体地,假设应用程序大小不会超过232‑1字节(即4GB,物联网设备上不会有超过这个大小的应用),固定内存地址的最高有效32位并随机生成内存地址的最低有效32位。与
随机生成64位地址相比,这种方法将使开销最小化。具体来说,首先由Phelix算法生成随机
数和密钥,然后基于随机数生成工作随机数N,基于密钥生成工作密钥K。之后基于工作随机
数N和工作密钥K生成初始状态字,对内存进行遍历。基本上,每一轮都取决于轮函数的五个
状态字(Z0(i),…,Z4(i))、两个关键字(Xi,0,Xi,1)和先前生成的地址的内存内容。最后基于遍历的内存内容,生成安全关键应用的静态测量值。
[0061] 步骤2.2,在程序的控制流图中选择两个检查点,用于标识路径的开始和结束;从源检查点开始,记录程序在控制流图中移动的每个操作包括函数调用、函数返回、条件分
支,序列化为操作列表;使用哈希函数对操作列表进行散列计算,生成安全关键应用的标准
控制流测量值。
[0062] 优选地,步骤2.2中,所述的标准控制流测量值包含两个检查点及从源检查点移动到目标检查点时遍历的重要基本块相关联的操作列表的散列。所述检查点是用于识别程序
在控制流图中执行路径内的子路径开始或结束的分隔符,检查点可以是标识线程开始或结
束的点,也可以是表示应用程序模块的出口点(如系统调用或库函数调用点),另外也可以
是用于管理循环和递归等特殊情况的虚拟检查点。所述的操作列表是进程从一个检查点移
动到下一个检查点所经过的标识唯一执行路径的边,包括过程调用、过程返回和分支(即条
件跳转和间接跳转)的边。
[0063] 具体地,程序执行中涉及的循环、递归、信号和异常在控制流图的表示中引入了新的挑战,因为它们可以生成不可计数的执行路径。例如,循环和递归可以生成不确定数量的
操作列表的可能组合,而信号和异常可以在任何时候引入不可预测的执行路径。对于循环
的处理方法为选取循环的条件节点作为虚拟检查点,对于递归的处理方法为选取执行递归
的节点N3作为虚拟检查点,在这两种处理中仅对可以选择的路径进行建模,而不考虑实际
执行的次数。
[0064] 步骤3,基于控制流图和标准测量值生成质询信息,根据质询生成静态测量值和控制流测量值,通过探针捕获关键变量信息,生成关键数据完整性测量值;
[0065] 优选地,步骤3.1,验证方使用控制流图和预先生成的标准测量值来构建质询信息,控制流图用于提供程序的结构信息,标准测量值用于提供基准数据;验证方根据选择特
定的检查点和操作列表生成质询信息,包括用于生成静态测量值的随机数和密钥、指示证
明方执行静态和控制流测量的指令以及需要证明方捕获的关键变量信息;
[0066] 步骤3.2,使用质询信息中的随机数和密钥,基于随机数生成工作随机数,证明方使用工作随机数伪随机遍历内存地址,计算内存内容的散列值,得到静态测量值;生成静态
测量值的方法与步骤2.1中所述相同,在此不再赘述。
[0067] 步骤3.3,证明方记录程序从一个检查点到下一个检查点的操作列表,计算操作列表的散列值,生成控制流测量值;控制流测量的计算方法与步骤2.2中所述的方法相同,在
此不再赘述。
[0068] 步骤3.4,关键数据完整性测量,生成关键数据完整性测量值。专用编译器在关键变量集中的每个变量定义和使用位置插入探针,运行时每个关键变量的定义点处都会捕获
到专用编译器为关键变量生成的标签和要分配给变量的值。然后跳板将信息发送到测量模
块。类似地,在关键变量使用处会捕获到变量标签和变量的当前值,并将它们发送到测量模
块。测量模块最终将根据关键变量完整性检查结果生成关键数据完整性测量值。
[0069] 具体地,测量模块维护一个散列映射,其中存储包含变量地址与变量值的键值对。测量模块在每个关键变量定义处更新散列映射,并在每个关键变量使用处进行检查。无论
变量是局部变量还是全局变量,其定义和使用站点都应该始终具有相匹配的值。值不匹配
表示关键变量已损坏。
[0070] 可选地,对于访问关键变量的指针还需要进行额外的检查。举一个简单的例子,关键变量定义式*(P+n)=x,其中P是关键变量A的基地址,n是地址偏移量。如果程序存在漏
洞,间接引用*(P+n)可能超出关键变量A的边界并访问到另一个关键变量B。当这种越界写
入发生时,测量模块会错误地将B的值更新为x,存储在它的哈希映射中。为了解决这个问
题,需要对访问关键变量的指针强制执行动态边界检查。当关键指针被间接引用时,测量模
块会检查该间接引用是否违反了当前指针对象的界限。这种检查机制依赖于测量模块为每
个关键指针收集的动态边界信息,如果发现了越界行为,测量模块只对访问的内存区域和
最初指向的变量之间的重叠字节执行检查,即只更新或检查预期指向的值。这种设计确保
了关键变量检查的正确性,同时允许正常程序中有意的越界指针间接引用。
[0071] 步骤4,证明方生成在线测量报告,并将在线测量报告加密发送给验证方;所述的在线测量报告包括步骤3生成的静态测量值、控制流测量值与关键数据完整性测量值;
[0072] 优选地,所述加密发送包括结合使用对称加密和非对称加密,具体步骤如下:
[0073] (1)生成对称密钥(AES);
[0074] (2)使用对称密钥加密在线测量报告;
[0075] (3)使用验证方的公钥(RSA)加密对称密钥;
[0076] (4)将加密的在线测量报告和加密的对称密钥发送给验证方;
[0077] 验证方接收到加密数据后,执行以下步骤:
[0078] (1)使用私钥(RSA)解密对称密钥。
[0079] (2)使用解密得到的对称密钥(AES)解密在线测量报告。
[0080] 保证了数据安全性,使用哈希函数(如SHA‑256)计算在线测量报告的哈希值,并将哈希值与加密数据一起发送。验证方可以通过对解密后的报告再次计算哈希值并对比,确
保数据未被篡改。
[0081] 使用数字签名技术进行认证,包括使用私钥对报告签名,验证方使用公钥验证签名,确保数据的来源和真实性。
[0082] 步骤5,验证方将在线测量报告中的静态测量值、控制流测量值和关键数据完整性测量值,与离线标准值进行比对,证明应用未被篡改和未遭受攻击。
[0083] 优选地,步骤5.1,将静态测量值与标准静态测量值进行比对,若值相同则代表文件未被篡改,否则验证不通过;
[0084] 步骤5.2,将控制流测量值与存储在测量数据库中的标准值控制流测量值进行比对,检查每个控制流测量值的目的地检查点是否是下一个控制流测量值的源检查点;使用
影子栈检查操作列表,查看其中是否存在无法对应的返回边,若检查通过代表未遭受控制
流攻击,否则验证不通过;
[0085] 具体地,所述影子栈用于检查劫持函数返回地址的攻击,通过检查合法返回边关系对劫持函数返回地址的攻击进行检测;
[0086] 检测开始时影子栈是空的,对动态测量值进行检查将所涉及的函数调用边入栈,检测到涉及函数返回的边时检查该边是否是栈顶边的合法返回边;
[0087] 若涉及函数返回的边与栈顶边匹配,则说明未遭到劫持函数返回地址的攻击,将栈顶的边弹出,表示函数返回正常;若不匹配,则检查不通过,表示存在攻击行为。
[0088] 步骤5.3,检查关键数据完整性测量值,若值匹配则代表未遭受仅数据攻击,验证通过,否则验证不通过。
[0089] 本发明的实例2提供了一种基于探针的混合远程验证系统,包括:专用编译器模块、质询生成模块、静态测量模块、控制流测量模块以及关键数据完整性测量模块;
[0090] 专用编译器模块用于自动识别控制流指令和控制相关变量,并在程序编写者注释后识别语义关键变量;形成关键变量的初始集合,自动扩展集合,包括指向变量及其依赖项
的直接和间接指针,在关键变量的定义和使用位置插入探针;
[0091] 质询生成模块由验证方使用控制流图和标准测量值生成质询信息,包含生成随机数和密钥的指令,指示证明方执行静态和控制流测量;
[0092] 静态测量模块使用质询信息中的随机数和密钥,伪随机遍历内存并生成静态测量值;
[0093] 控制流测量模块根据控制流图和质询信息,记录程序从一个检查点到下一个检查点的操作列表,计算操作列表的散列值,生成控制流测量值;
[0094] 关键数据完整性测量模块用于在运行过程中捕获关键变量的信息,并将其发送到测量模块,维护一个散列映射,存储变量地址和变量值的键值对,执行动态边界检查,生成
关键数据完整性测量值。
[0095] 在本实施例中提供了一种基于探针的混合远程验证方法,可用于上述的物联网设备,图2是根据本发明实施例的基于探针的混合远程证明方法总体架构图,如图2所示,远程
证明由验证方与证明方参与。
[0096] 其中,验证方即远程证明服务器,用于根据证明方反馈的在线测量报告进行验证,以确定证明方的安全关键应用是否遭到攻击。证明方即需要进行验证的物联网设备,用于
根据验证方提供的质询信息,对安全关键应用进行在线测量并生成在线测量报告,再将在
线测量报告发送给验证方。
[0097] 本发明的有益效果至少包括:
[0098] 1、本发明通过结合静态和动态证据进行远程证明,有效提升了验证的精确度,专用编译器在编译过程中自动识别和注释关键变量,确保了在验证时捕获所有潜在的安全威
胁;
[0099] 2、本发明采用了智能的控制流测量方法,通过选择虚拟检查点和重点基本块,减少了路径爆炸问题,专用编译器能够动态扩展关键变量集合,并生成必要的检查点,从而避
免了无限控制流路径带来的计算复杂度;
[0100] 3、通过专用编译器自动识别控制流指令和变量,并在程序编写者注释后识别语义关键变量,生成关键变量的初始集合和扩展集合,提高了检测效率,系统能够自动分析和扩
展关键变量及其依赖项,使验证过程高效进行;
[0101] 4、本发明在控制流测量的基础上,进一步加入了关键数据完整性验证模块,通过在关键变量的定义和使用位置插入探针,捕获并检查变量值,确保关键数据的完整性,有效
防止了针对关键数据的攻击,增强了远程证明的检测能力。
[0102] 虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所
限定的范围之内。
[0103] 本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0104] 最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然
可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何
修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。