发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种不依赖任何专用的移动终端、成本较低、使用较为方便的基于蓝牙的移动终端可信计算的方法。
本发明解决其技术问题所采用的技术方案是:构造一种基于蓝牙的移动终端可信计算的方法,应用于可信计算系统,所述可信计算系统包括相互通信的移动终端和蓝牙硬件设备,所述移动终端中安装有可信计算应用程序,所述方法包括:
A)通过所述可信计算应用程序将所述蓝牙硬件设备的ID与所述移动终端进行唯一绑定;
B)所述移动终端搜索与其唯一绑定的蓝牙硬件设备,并进行连接认证;
C)所述移动终端与蓝牙硬件设备进行完整性度量;
D)通过所述完整性度量后,所述移动终端与所述蓝牙硬件设备处于可信状态,并进行自定义通信协议的认证;
E)所述认证通过后,所述移动终端获取存储在所述蓝牙硬件设备上的密钥,并使用所述密钥对所述移动终端上的加密区数据进行解密。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述步骤C)进一步包括:
C1)在所述可信计算应用程序启动前,对所述可信计算应用程序进行静态的完整性度量,执行步骤C2);和/或
C1')对所述蓝牙硬件设备进行静态可信度量,执行步骤C2);
C2)所述移动终端与所述蓝牙硬件设备相互连接后,对所述可信计算系统提供的钩子函数进行验证后,所述钩子函数作为所述移动终端的可信根进行所述可信计算应用程序运行中的动态行为度量。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述步骤C1)包括:
C11)用户启动所述可信计算应用程序,所述可信计算系统准备加载所述可信计算应用程序至内存;
C12)利用所述钩子函数进行拦截,在所述可信计算应用程序的可执行文件映射到所述内存之前度量所述可信计算应用程序的完整性;
C13)对所述可信计算应用程序的二进制代码进行分析,构造出所述可信计算应用程序的库依赖集合,对所述库依赖集合的完整性进行校验;
C14)对所述可信计算系统中关键的组件进行完整性校验;
C15)判断所有的完整性是否都校验通过,如是,完成静态可信度量,所述可信计算应用程序启动;否则,结束所述可信计算应用程序的运行。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述步骤C1')进一步包括:
C11')所述蓝牙硬件设备上电启动后,对整个硬件程序存储区使用哈希运算进行完整性校验;
C12')将获取的哈希值与预期值进行对比,判断是否符合预期,如是,完成所述蓝牙硬件设备的启动,蓝牙硬件设备程序运行,执行步骤C13');否则,结束所述蓝牙硬件设备程序的启动;
C13')所述蓝牙硬件设备正常工作。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述步骤C2)进一步包括:
C21)所述移动终端对所述钩子函数进行可信度量,并把可信度量结果发送到所述蓝牙硬件设备;
C22)所述蓝牙硬件设备收到所述可信度量结果后查询非易失性存储器,判断是否与预期的可行度量值一致,并将校验结果返回到所述移动终端;
C23)所述移动终端判断所述钩子函数的完整性校验是否符合预期,如是,执行步骤C24);否则,结束所述可信计算应用程序的运行;
C24)所述可信计算应用程序运行,执行步骤C25);
C25)使用所述钩子函数拦截所述可信计算应用程序的关键行为操作,并将其组成行为链;
C26)判断所述行为链的度量值是否符合预期,如是,返回步骤C24);否则,结束所述可信计算应用程序的运行。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述步骤D)进一步包括:
D1)所述可信计算应用程序对所述蓝牙硬件设备的ID进行哈希算法运算处理,计算出第一哈希值并将其发送到所述蓝牙硬件设备;
D2)所述蓝牙硬件设备收到所述第一哈希值后,将其自身的ID进行哈希算法运算处理得到第二哈希值;
D3)将所述第一哈希值与第二哈希值进行对比,并判断是否一致,如是,通过认证;否则,认证失败断开所述移动终端与蓝牙硬件设备之间的连接。
在本发明所述的基于蓝牙的移动终端可信计算的方法中,所述钩子函数为与可信计算应用程序执行、文件操作、IPC和内核操作相关的钩子函数。
实施本发明的基于蓝牙的移动终端可信计算的方法,具有以下有益效果:由于运用蓝牙技术制作成一个蓝牙硬件设备代替传统技术中的安全芯片,构建为一个新的信任根,不依赖任何专用的移动终端,蓝牙硬件设备是一个独立的硬件,所有带有蓝牙功能的并且安装可信计算应用程序的移动终端都可以使用,所以其不依赖任何专用的移动终端、成本较低、使用较为方便。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明基于蓝牙的移动终端可信计算的方法实施例中,该基于蓝牙的移动终端可信计算的方法的流程图如图1所示。本实施例中,该基于蓝牙的移动终端可信计算的方法应用于可信计算系统,该可信计算系统包括相互通信的移动终端和蓝牙硬件设备(图中未示出),其中,移动终端中安装有可信计算应用程序。采用该蓝牙硬件设备代替传统技术中的安全芯片,构建一个新的信任根。蓝牙硬件设备使用蓝牙技术,蓝牙技术可以实现固定设备、移动设备之间的短距离数据交换。
图1中,该基于蓝牙的移动终端可信计算的方法包括如下步骤:
步骤S01通过可信计算应用程序将蓝牙硬件设备的ID与移动终端进行唯一绑定:在该可信计算系统使用前,蓝牙硬件设备与移动终端需要通过移动终端的专用软件(即可信计算应用程序)进行唯一绑定,具体的,每个蓝牙硬件设备均有一个ID,每个ID都是全球唯一的。本步骤中,通过可信计算应用程序将蓝牙硬件设备的ID与移动终端进行唯一绑定。
步骤S02移动终端搜索与其唯一绑定的蓝牙硬件设备,并进行连接认证:本步骤中,移动终端搜索与其唯一绑定的蓝牙硬件设备,并进行连接认证。
步骤S03移动终端与蓝牙硬件设备进行完整性度量:本步骤中,移动终端与蓝牙硬件设备进行完整性度量,具体的,移动终端与蓝牙硬件设备分别会对自身的运行环境进行完整性度量,只有保证了系统的完整性,安全才得以保障。完成完整性度量后才进行通信认证,完整性是指确保移动终端拥有和运行只有授权的操作系统和硬件。保护系统的完整性意味着系统的硬件和主要的软件都维持在设备出厂时的状态。以下分别对移动终端和蓝牙硬件的完整性度量进行说明。
对于移动终端来说,针对操作系统中普通组件和用户应用结构复杂,组件数量多,由于升级和补丁造成版本较多,即使对所有的组件进行启动之前的静态完整性度量校验成功,也并不能保证其运行时行为的安全和可信,而且在长时间处于开机状态的过程中,移动终端进行很多不同的操作,包括可信和不可信的操作。因此,要合理的评估系统运行环境的动态可信性,就有必要将软件行为的动态度量理论和技术引入到可信度量中。通过对可信计算应用程序运行时的行为组合进行分析,结合基于使用控制的访问控制模式,动态度量可信计算应用程序的行为属性,并采用启发式算法推导出可信计算应用程序的行为结果是否可信。此方案不仅比采用计算哈希值的静态完整性度量方法可信度高,更重要的是能够实时的保护系统的安全。所以,将可信计算应用程序的整个可信度量过程划分为可信计算应用程序启动前的静态度量和可信计算应用程序运行中的动态行为度量,从而保证整个可信运行环境的动态安全和可信。
对于蓝牙硬件设备来说,因蓝牙硬件设备中并没有操作系统,所以蓝牙硬件设备的完整性度量就不需要考虑到动态可信度量,只要对自身进行静态可信度量即可。
步骤S04通过完整性度量后,移动终端与蓝牙硬件设备处于可信状态,并进行自定义通信协议的认证:本步骤中,通过完整性度量后,移动终端与蓝牙硬件设备均处于可信状态,移动终端会自动与蓝牙硬件设备进行自定义通信协议的认证。
步骤S05认证通过后,移动终端获取存储在蓝牙硬件设备上的密钥,并使用密钥对移动终端上的加密区数据进行解密:本实施例中,通过认证的移动终端才可以与蓝牙硬件设备进行连接通信,不通过则立即断开连接过程。本步骤中,认证通过后,移动终端和蓝牙硬件设备才可以相互通信,移动终端在与蓝牙硬件设备为连接的情况下,移动终端里面的专用数据区属于加密状态。成功连接后移动终端获取存储在蓝牙硬件设备上的密钥,并使用改密钥对移动终端上的加密区数据进行解密,还可以使用该密钥检验移动终端的可信计算应用程序的完整性。
与现在技术相比,本发明不依赖任何专用的移动终端,是一个独立硬件,所有带有蓝牙功能的并且装上可信计算应用程序的移动终端都可以使用。本发明实现了移动终端的可信计算应用程序与移动终端之间的可信认证,本发明可以为移动终端提供可信根,是独立于移动终端的应用程序。本发明不依赖任何专用的移动终端、成本较低、使用较为方便。
对应本实施例而言,上述步骤S03还可进一步细化,其细化后的流程图如图2所示。图2中,上述步骤S03进一步包括:
步骤S31在可信计算应用程序启动前,对可信计算应用程序进行静态的完整性度量:本步骤中,在可信计算应用程序启动前,对可信计算应用程序进行静态的完整性度量。其主要思路就是利用Linux安全模块提供的与安全相关的钩子函数,在可信计算系统将可信计算应用程序的可执行文件加载到内存之前,对可信计算应用程序运行中需要的配置文件和数据,运行中需要加载的动态链接库、运行过程中依赖的内核模块和进程等组件进行完整性度量,根据校验结果,判断其是否符合完整性要求。如果满足要求,则允许可信计算应用程序启动。执行完步骤,执行步骤S32。
步骤S31'对蓝牙硬件设备进行静态可信度量:本步骤中,对蓝牙硬件设备进行静态可信度量。执行本步骤,执行步骤S32。值得一提的是,上述步骤S31和步骤S31'的执行不分先后顺序,可以先执行步骤S31再执行步骤S31',也可以先执行步骤S31'再执行步骤S31,还可以是步骤S31和步骤S31'同时执行。
步骤S32移动终端与蓝牙硬件设备相互连接后,对可信计算系统提供的钩子函数进行验证后,钩子函数作为移动终端的可信根进行可信计算应用程序运行中的动态行为度量:本实施例中,钩子函数为与可信计算应用程序执行、文件操作、IPC和内核操作相关的钩子函数。本步骤中,当移动终端与蓝牙硬件设备完成自身的可信度量之后,移动终端需要与蓝牙硬件进行一次移动终端钩子函数的验证,保证钩子函数的可行性,钩子函数才可以作为移动终端的可信根对移动终端进行动态可信度量。
也就是说,可信计算应用程序的动态可信度量是在该可信计算应用程序的运行过程中监控其运行过程中的动态行为,并依照其行为链(一系列动作)判断可信计算应用程序的动态行为是否安全可信。本步骤中,对可信计算应用程序的行为动态可信度量的主要思想是:利用钩子函数在可信计算应用程序执行的过程中,动态拦截可信计算应用程序对系统API的调用和对系统配置数据的访问,主要选择性的拦截应用的关键操作。同时将实际的可信计算应用程序行为链完整值与预期行为链完整值进行对比,判断可信计算应用程序的关键行为是否与期望的行为一致,并依据启发式规则对可信计算应用程序的行为链具有的安全特性进行分析,判断可信计算应用程序是否继续运行。通过引入可信计算应用程序中的动态可信监控和度量机制,能够保证移动可信计算应用程序动态运行环境的安全可信,减少恶意代码给移动终端带来的威胁。
本发明通过对可信计算应用程序进行静态的完整性度量、对蓝牙硬件设备进行静态可信度量以及进行可信计算应用程序运行中的动态行为度量,可以保证整个可信运行环境的动态安全和可信。
对应本实施例而言,上述步骤S31还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S31进一步包括:
步骤S311用户启动可信计算应用程序,可信计算系统准备加载可信计算应用程序至内存:本步骤中,S311用户启动可信计算应用程序,可信计算系统准备加载可信计算应用程序至系统的内存。
步骤S312利用钩子函数进行拦截,在可信计算应用程序的可执行文件映射到内存之前度量可信计算应用程序的完整性:本步骤中,利用钩子函数进行拦截,在可信计算应用程序的可执行文件映射到系统的内存之前度量可信计算应用程序的完整性,具体就是度量可信计算应用程序的完整性值,然后把得到的完整性值进行校验,如果校验相等,则继续下一步;否则表明可信计算应用程序不满足完整性要求,可信计算应用程序启动中断。
步骤S313对可信计算应用程序的二进制代码进行分析,构造出可信计算应用程序的库依赖集合,对库依赖集合的完整性进行校验:本步骤中,对可信计算应用程序的二进制代码进行分析,构造出可信计算应用程序的库依赖集合(即所有用到的库),计算库依赖集合的完整性值,然后把得到的完整性值进行校验,判断是否通过校验要求。
步骤S314对可信计算系统中关键的组件进行完整性校验:本步骤中,对可信计算系统中关键的组件进行完整性校验,校验通过才可以进入步骤S315判断。
步骤S315判断所有的完整性是否都校验通过:本步骤中,判断所有的完整性是否都校验通过,如果判断的结果为是,则执行步骤S317;否则,执行步骤S316。
步骤S316结束可信计算应用程序的运行:如果上述步骤S315的判断结果为否,则执行本步骤。本步骤中,结束可信计算应用程序的运行,终止可信计算应用程序的启动过程。
步骤S317完成静态可信度量,可信计算应用程序启动:如果上述步骤S315的判断结果为是,即可信计算应用程序满足完整性要求、符合能力层次访问控制规则且外部条件无变化,则执行本步骤。本步骤中,完成静态可信度量,可信计算应用程序启动。执行完本步骤,可以执行后续的步骤S321或步骤S324。这样就实现了对可信计算应用程序的静态可信度量。
对于本实施例而言,上述步骤S31'还可进一步细化,其细化后的流程图如图4所示。图4中,上述步骤S31'进一步包括:
步骤S311'蓝牙硬件设备上电启动后,对整个硬件程序存储区使用哈希运算进行完整性校验:本步骤中蓝牙硬件设备上电启动后,首先对整个硬件程序存储区进行完整性度量,该完整性度量采用哈希运算,也就是使用哈希运算进行完整性校验。
步骤S312'将获取的哈希值与预期值进行对比,判断是否符合预期:本步骤中,将获取的哈希值与预期值进行对比,判断是否符合预期,如果判断的结果为是,则执行步骤S314';否则,执行步骤S313'。
步骤S313'结束蓝牙硬件设备程序的启动:如果上述步骤S312'的判断结果为否,则执行本步骤。本步骤中,结束蓝牙硬件设备程序的启动,也即复位蓝牙硬件设备。
步骤S314'完成蓝牙硬件设备的启动,蓝牙硬件设备程序运行:如果上述步骤S312'的判断结果为是,则执行本步骤。本步骤中,完成蓝牙硬件设备的启动,蓝牙硬件设备程序运行。执行完本步骤,执行步骤S315'。
步骤S315'蓝牙硬件设备正常工作:本步骤中,蓝牙硬件设备正常工作。这样就完成了对蓝牙硬件设备的静态可信度量。
对于本实施例而言,上述步骤S32还可进一步细化,其细化后的流程图如图5所示。图5中,上述步骤S32进一步包括:
步骤S321移动终端对钩子函数进行可信度量,并把可信度量结果发送到蓝牙硬件设备:因为只有当可信计算应用程序运行起来后,移动终端才可以与蓝牙硬件设备进行通信,所以钩子函数的可信验证需要在移动终端和蓝牙硬件设备相互连接之后进行。本步骤中,移动终端对钩子函数进行可信度量,并把可信度量结果发送到蓝牙硬件设备。
步骤S322蓝牙硬件设备收到可信度量结果后查询非易失性存储器,判断是否与预期的可行度量值一致,并将校验结果返回到移动终端:本步骤中,蓝牙硬件设备收到可信度量结果后查询非易失性存储器,判断是否与预期的可行度量值一致,并将校验结果返回到移动终端。
步骤S323移动终端判断钩子函数的完整性校验是否符合预期:本步骤中,移动终端判断钩子函数的完整性校验是否符合预期,如果判断的结果为是,则执行步骤S324;否则,执行上述步骤S316,即结束可信计算应用程序的运行。
步骤S324可信计算应用程序运行:如果上述步骤S323的判断结果为是,则执行本步骤。本步骤中,可信计算应用程序通过启动前静态度量过程,开始运行。执行完本步骤,执行步骤S325。
步骤S325使用钩子函数拦截可信计算应用程序的关键行为操作,并将其组成行为链:本步骤中,通过可信计算应用程序调用实现钩子函数拦截功能,使用钩子函数拦截可信计算应用程序的关键行为操作,并将其组成行为链,然后对行为链进行可信度量并对度量结果与期望行为链度量结果进行对比。
步骤S326判断行为链的度量值是否符合预期:本步骤中,判断行为链的度量值是否符合预期,即判断可信计算应用程序行为是否与期望的行为一致,如果判断的结果为是,即可信计算应用程序的行为满足可信性,则返回步骤S324;否则,执行上述步骤S316,即结束可信计算应用程序的运行,终止可信计算应用程序的继续运行。这样就完成了对可信计算应用程序运行中的动态行为度量。
对于本实施例而言,上述步骤S04还可进一步细化,其细化后的流程图如图6所示。图6中,上述步骤S04进一步包括:
步骤S41可信计算应用程序对蓝牙硬件设备的ID进行哈希算法运算处理,计算出第一哈希值并将其发送到蓝牙硬件设备:移动终端的可信计算应用程序首次运行时会要求输入绑定的蓝牙硬件设备的ID,这个ID是全球唯一的。本步骤中,在认证过程中,可信计算应用程序对蓝牙硬件设备的ID进行哈希算法运算处理,获得一个固定的第一哈希值,然后将该第一哈希值发送到蓝牙硬件设备。
步骤S42蓝牙硬件设备收到第一哈希值后,将其自身的ID进行哈希算法运算处理得到第二哈希值:本步骤中,蓝牙硬件设备收到第一哈希值后,将其自身的ID同样进行哈希算法运算处理,得到第二哈希值。
步骤S43将第一哈希值与第二哈希值进行对比,并判断是否一致:本步骤中,将两个哈希值进行对比,即将第一哈希值与第二哈希值进行对比,并判断是否一致,如果判断的结果为是,则执行步骤S44;否则,执行步骤S45。
步骤S44通过认证:如果上述步骤S43的判断结果为是,则执行本步骤。本步骤中,通过认证。这样就有效保护了移动终端上的数据安全。
步骤S45认证失败断开移动终端与蓝牙硬件设备之间的连接:如果上述步骤S43的判断结果为否,则执行本步骤。本步骤中,认证失败断开移动终端与蓝牙硬件设备之间的连接。
总之,移动终端上的可信计算应用程序,因其具备可移植复制、易于推广转化等特点,加上配套的蓝牙硬件设备独立于移动终端,所有具有成本较低、安全性较高、使用较为方便,可以广泛使用的优点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。