一种基于InterSGX指令集扩展的云边端协同服务可信校验方法

文档序号:35696589发布日期:2023-10-11 19:34阅读:44来源:国知局
本发明涉及面向云边端协同的服务校验,具体为一种基于inter sgx指令集扩展的云边端协同服务可信校验方法。
背景技术
::1、随着智能终端的快速发展和大规模应用,智能终端操作系统也得到了广泛使用。截止2022年7月,安卓操作系统市场占有率超过70%,占据首位。此外,安卓框架在应用程序开发方面的简单性导致了全球范围内移动应用程序开发数量的大幅增长。statista的一项研究表明,在2020年,每天有超过3.5万个安卓应用程序发布。伴随着安卓操作系统以及安卓应用程序的爆发式增长,针对安卓操作系统及应用程序的各种恶意攻击层出不穷;2021年,卡巴斯基报告了共计9,599,519起针对移动设备的恶意软件、广告软件和风险软件攻击;根据cve detai的数据显示,在2022年安卓操作系统的漏洞达到761个,较2021年同比增长33%。2、在互联网高速发展的今天,越来越多的人习惯于将个人信息及重要数据存放在智能终端上,每天有巨量的重要数据存储在智能终端。智能终端方便了人们的同时,也带来了数据泄露的风险;特别是国家政务人员,接触国家机密文件多,在使用智能终端设备时一旦泄露了国家机密,将对国家造成不可估量的危害。安卓操作系统之所以容易受到攻击,除了其使用范围广,开源等特性,还因为其本身存在着各种漏洞且缺乏强大的安全保护机制。安卓当前的安全机制主要有进程沙箱隔离机制、应用程序签名机制、权限声明机制和进程通信机制。其中,进程沙箱隔离机制确保进程间及进程与系统资源之间的访问安全,应用程序签名机制重点关注应用程序安装过程中的安全性。权限声明机制致力于确保应用程序访问权限和行为安全,进程通信机制关注进程通信双方的身份认证和通信安全。3、综上所述,现有安全机制缺少对应用程序启动前自身安全性的考虑,即应用程序静态代码安全。因此亟需构建智能终端从固件到安卓操作系统的可信链以及进行应用程序启动预度量,采用云边端协同技术完成对安卓应用程序的启动预度量、云端远程校验以及启动授权工作,保证安卓操纵系统以及应用程序的安全启动,构建从设备上电至安卓应用程序启动的完整可信链路。技术实现思路1、本发明提供一种基于inter sgx指令集扩展的云边端协同服务可信校验方法。解决了应用程序的安全启动、恶意攻击检测和阻断受到攻击的应用程序完成启动问题。2、本发明的一种基于inter sgx指令集扩展的云边端协同服务可信校验方法,具体按照以下步骤实施:3、步骤1,构建安卓系统所在边缘端、云端、以及云边端通信的可信环境;4、步骤2,云端完成注册服务;5、步骤3,当用户点击app安装按钮时,进行云边端协同的app安装注册;6、步骤4,完成步骤3后,用户点击app启动后,安卓端需要完成云边端协同的身份认证;7、步骤5,云边端协同的app的启动预度量与静态度量结果生成;8、步骤6,对步骤5的度量结果进行云端校验,以此完成启动授权过程;9、所述步骤1具体按照以下步骤实施:10、步骤1.1,构建安卓系统所在边缘端可信环境;11、步骤1.2,构建云端可信环境,采用inter sgx指令集扩展技术构建可信环境,将云端服务的核心代码放入enclave安全区中执行,保证云端对外提供可信服务;12、步骤1.3,构建云边端通信的可信环境;13、所述步骤2具体按照以下步骤实施:14、步骤2.1,对已经安装了应用程序的安卓终端进行用户信息注册和信息绑定;注册信息包括应用程序的唯一标识符apk_id、安卓设备的物理地址mac、应用程序的版本号app_version、应用程序测量套件app_measure_kit、安卓端公钥public_key、云端公钥cloud_public_key、云端私钥cloud_private_key;15、步骤2.2,设计文件度量策略表与源度量值绑定的缓存数据库表用于源度量值的检索;16、所述步骤3具体按照以下步骤实施:17、步骤3.1,当用户点击app安装按钮时,首先完成步骤3.1的云边端密钥交换,以此建立云边端可信通信通道;18、步骤3.2,边缘端发起apk安装请求,携带身份信息等采用rsa2048进行加密,密钥为pk1;19、步骤3.3,云端收到步骤3.2中的请求后,通过rsa2048对数据进行解密,解密密钥为sk1,并进行apk构造,将构造完毕的apk进行rsa2048签名加密,签名密钥为sk1,加密密钥为pk2,并将签名加密的apk发送给边缘端;20、步骤3.4,边缘端收到后对步骤3.3中的数据进行rsa2048解密验签,解密密钥为sk2,验签密钥为pk1,得到apk,然后将apk进行安装;21、步骤3.5,完成步骤3.4的安装后,由边缘端进行安卓端信息采集,信息包括安卓设备的物理地址、应用程序的唯一标识符apk_id、应用程序版本、应用程序启动预度量工具版本,并将采集到的信息进行rsa2048签名加密,签名密钥为sk2,加密密钥为pk1,接着边缘端发起注册请求,携带签名加密后的安卓端基本信息;22、步骤3.6,云端收到步骤3.5中的请求后对数据进行rsa2048解密验签,解密密钥为sk1,验签密钥为pk2,得到安卓端基本信息并更新注册库;23、步骤3.7,云端将注册的状态码进行rsa2048签名加密,签名密钥为sk1,加密密钥为pk2,发送给边缘端;24、步骤3.8,边缘端收到步骤3.7中的数据后,对其进行rsa2048解密验签,解密密钥为sk2,验签密钥为pk1,得到状态码,根据状态码进行调整,直至完成安卓app身份注册;25、所述步骤4具体按照以下步骤实施:26、步骤4.1,安卓端进行信息采集,采用diffie-hellman密钥协商算法,随机选择一个素数q和一个整数a,随机生成一个私钥xa(xa<q)取模计算公钥ya,公式如下:27、28、步骤4.2,安卓端发起身份认证以及dh密钥协商请求,携带密钥协商参数(a,q,ya)并对其进行rsa2048签名加密,签名密钥为sk2,加密密钥为pk1,明文为pk2;29、步骤4.3,云端收到步骤4.2中的请求后,根据携带的公钥pk2进行密钥库检索,对信息进行rsa2048解密验签,解密密钥为sk1,验签密钥为pk2,根据信息进行注册库检索对比,完成身份认证;30、步骤4.4,云端产生一个私钥xb(xb<q),计算公钥yb及共享密钥k,公式如下:31、32、33、其中q、a、ya的含义与步骤4.1一致;34、步骤4.5,云端反馈状态码和dh协商密钥的参数yb,并对状态码和参数进行rsa2048签名加密;35、步骤4.6,安卓端收到反馈状态码后,对信息进行解密验签,并根据状态码完成身份认证,如果身份认证成功,则进入步骤4.7及后续步骤,否则驳回步骤4.2中的请求,因为未正确安装app或已安装但未正确注册不具备执行app预度量的基础条件;36、步骤4.7,计算共享密钥k,采用k作为会话密钥,为后续会话通信加密提供基础,公式如下:37、38、其中xa的含义与步骤4.1一致,yb的含义与步骤4.4一致;39、所述步骤5具体按照以下步骤实施:40、步骤5.1,发起app的启动预度量请求,并使用aes加密算法加密相关启动预度量请求信息,加密密钥为k;41、步骤5.2,云端收到请求后进行aes解密,构造文件度量策略表服务并使用rsa签名、aes加密后反馈给安卓端;42、步骤5.3,安卓端对收到的度量策略表进行aes解密,rsa验签;43、步骤5.4,安卓端根据策略表对app的核心文件进行静态度量,并使用rsa签名,aes加密对度量结果进行保护;44、步骤5.5,安卓端发起度量结果验证请求,携带步骤5.4中的签名加密后的度量结果;45、所述步骤6具体按照以下步骤实施:46、步骤6.1,云端收到来自安卓边缘端发送的签名加密后的app核心文件摘要后,首先使用会话密钥对该文件摘要进行aes-256解密,然后使用安卓端rsa2048公钥完成验签工作,从而确保该信息来自于可信的安卓边缘端;47、步骤6.2,将云端的app源度量结果或云端的同步度量结果与安卓端重新度量得到的app核心文件摘要进行一致性对比,一致则下发app启动授权指令,不一致则下发启动拒绝指令,指令将进行rsa签名和aes加密;48、步骤6.3,安卓边缘端收到反馈后进行aes解密和rsa验签,得到相关指令并执行相应的操作,以此完成启动授权过程。49、优选的,所述步骤1.1具体为:50、(1)采用基于海思kirin960 soc的华为麒麟hikey960开发板,该开发板支持armtrustzone技术和可信执行环境(tee),具备安全引擎,支持安全启动、认证和加密功能;51、(2)获取谷歌原生安卓10.0源码和开源op-tee代码并进行一系列配置,其中包括在安卓源码的init.common.rc文件中添加tee-supplicant服务,在linaro/hikey目录下添加optee-packages.mk配置文件,在device-common.mk配置文件中添加op-tee的配置,并对op-tee源码的conf.mk以及platform_config.h等文件修改,以便能够识别并调用op-tee及其提供的服务,为在安卓系统启动过程中的可信度量与安全存储提供可信环境。52、优选的,所述步骤1.3具体为:53、(1)安卓系统所在边缘端发起密钥交换请求;54、(2)云端收到步骤(1)请求后,根据rsa2048密钥对生成算法生成rsa2048密钥对(pk1,sk1),并将云端公钥pk1发送给安卓系统所在边缘端;55、(3)安卓系统所在边缘端收到步骤(2)的云端公钥pk1后,根据rsa2048密钥对生成算法生成rsa2048密钥对(pk2,sk2),并将边缘端公钥pk2采用云端公钥pk1进行加密传输给云端;56、(4)云端对收到的数据通过rsa2048进行解密,得到安卓系统所在边缘端密钥pk2,并将pk2,pk1,sk1在云端进行绑定存储,同时云端将收到的边缘端公钥pk2,采用rsa2048进行加密,加密密钥为pk2,并将加密后数据发送给边缘端;57、(5)边缘端将数据通过rsa2048进行解密,解密密钥为sk2,获取到安卓所在边缘端生成的公钥pk2,从而判定云边端密钥交换阶段成功完成,即完成云边端可信通信通道的建立。58、优选的,所述步骤5.2中构造文件度量策略表服务具体为:59、(1)构想该方法的输入与输出60、输入:参数为用户信息注册表中所有参数信息(参数的定义见步骤2.1)及待度量文件总数n,ptablebuild为该算法的名称,将算法的返回值保存在结果集arr_p(n)中,参数设置如下:61、62、输出:n个正整数组成的序列,且每两次输出有一定概率不相等,list_p(i)代表算法处理随机化后的列表,并设置了取值范围,arr_p(i)为结果集arr_p(n)的一项,参数设置如下:63、64、(2)将输入的所有参数信息连接成一个长字符串longstr;65、(3)对longstr进行哈希计算,得到一个哈希值h;66、(4)循环遍历1到n的数字,对于每个数字i,计算公式为:67、68、其中,math.abs表示取绝对值,将对应的结果保存在number列表;69、(5)将计算出来的n个数字添加到一个列表numbers中;70、(6)对numbers进行随机化处理,提高每两次输出不相等的概率;71、(7)返回随机化后的numbers序列。72、优选的,所述步骤5.4具体为:73、(1)对安卓应用程序的核心文件进行sha-256哈希度量,得到各个文件的度量值;74、(2)将文件的度量值按照云端下发的文件度量策略表顺序进行二次sha-256哈希度量,从而得到最终app核心文件摘要;75、(3)将最终app核心文件摘要用安卓边缘端rsa2048私钥进行签名,得到签名数据;76、(4)将最终app核心文件摘要以及签名数据采用云端rsa2048公钥进行加密,得到加密数据,然后将加密数据发送给云端。77、与现有技术相比,本发明的有益效果如下:78、基于intelsgx的云边端协同服务校验方法,其旨在解决应用程序的安全启动、恶意攻击检测和阻断受到攻击的应用程序完成启动问题。该方法旨在于应用程序启动前对应用程序进行全面的预度量操作,确保应用程序在启动前没有受到篡改或植入恶意代码的风险,从而提高应用程序的安全性;采用云边端协同设计来实现预度量操作,利用云边端各自的计算能力,以提高安全验证的效率和准确性,并减少对资源的消耗;与基于trustzone的安卓系统可信启动技术配合完成安卓所在边缘端从上电到应用程序启动整个过程的可信链构建。最后采用两种攻击实验评估方法的有效性,结果表明该方法在实际应用中具有良好的安全性和准确性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1