当前位置: 首页 > 专利查询>浙江大学专利>正文

基于SGX软件扩展指令的API密钥保护方法及系统技术方案

技术编号:25087385 阅读:48 留言:0更新日期:2020-07-31 23:31
本发明专利技术公开了一种基于SGX软件扩展指令的API密钥保护方法,其包括以下步骤:(1)API密钥保护系统初始化、(2)远程认证与API密钥导入、(3)API请求签名与签名信息导出;该方法通过引入Intel SGX硬件与SGX的可信空间机制构建安全的API密钥存储与使用环境,为用户API密钥提供保护;本发明专利技术还公开了基于SGX软件扩展指令的API密钥保护系统,其包括用于与用户可信设备协作完成SGX远程认证的远程认证模块;用于在SGX安全区内对已经获取的API密钥进行存储与管理的密钥管理模块;用于向用户程序提供可信时间戳的可信时间模块;以及用于根据用户程序的请求与API密钥生成有效签名的签名模块。

【技术实现步骤摘要】
基于SGX软件扩展指令的API密钥保护方法及系统
本专利技术涉及信息安全领域,具体涉及一种基于SGX软件扩展指令的API密钥保护方法及系统。
技术介绍
API密钥,即应用程序接口密钥,用于确定调用应用程序服务的用户身份,多由应用程序开发人员申请,并由程序进行使用,在跨服务应用程序以及云场景中使用广泛。一般API密钥成对出现,分为AccessKey和SecretKey,分别用于表示用户ID和进行签名计算。签名计算一般采用哈希消息认证码算法(如HMAC-256),计算结果作为签名输出。上述密钥对中,用于签名计算的密钥尤其重要,并需要进行严密的安全保护,避免在公开网络中传播。发送调用请求的程序使用API密钥为请求消息计算签名,服务端程序通过对签名进行验证来确认调用请求源的身份,并提供与请求相应的服务。在此种情境下,API密钥代表了用户身份,在权限上与用户账号和密码等同;API密钥一旦丢失,便会带来一系列安全隐患,如产生预料之外的服务费用、用户隐私泄露、用户资产失窃等。例如,在2018年3月及7月的币安交易所安全事件中,攻击者疑似利用窃取的API密钥进行恶意程序化交易以操纵币价,在没有窃取任何用户区块链账户密钥(用于实际控制区块链资产)的情况下获取巨额利益,并给全球数字货币市场带来了极其恶劣的影响。因此,保护API密钥具有十分重要的意义,特别是在云场景等用户无法完全确认或掌控程序运行环境安全的场景中。然而,目前缺乏针对API密钥的可靠安全保护机制。明文存储以及密钥信息硬编码等情况屡见不鲜,仅仅是代码的公开就可能造成密钥泄露,安全隐患极大。为了实施API密钥保护,一种常见的策略是通过配置文件的方法进行API密钥管理:开发者将API密钥存储在系统配置文件中,程序代码通过读取配置文件获取API密钥。另一种受到推荐的方法是将密钥隐藏在环境变量中,即使代码信息公开也不会泄露API密钥。上述的各种方法在一定程度上可以提高API密钥的安全性,但均无法做到完备的保护,API密钥明文内容均暴露在实际密钥使用程序的运行环境中,这给了攻击者可乘之机,仍存在不可忽视的安全隐患。如果通过加密的方式保护程序使用的API密钥,则又会引入新的待保护加密密钥或口令;由于API密钥多为程序使用,很多使用场景中的程序无法实时向用户请求口令(如频繁访问云数据库的Web后台程序),这便会不可避免地引发循环加密问题。当开发者的程序本身也运行在云环境中时,云的安全与否也为API密钥的使用引入了不确定因素。Barbican作为OpenStack社区的官方项目,提供了密钥管理与安全存储功能,为程序提供基于加密保护的密钥、证书、二进制文件保护等功能。然而,Barbican基于软件方法保护API密钥,无法有效应对拥有高级权限的系统攻击。使用安全硬件模块(HSM)可以提供几乎完备的API密钥保护,但硬件成本高昂,不适用于个人开发者或小型团队。现有基于安全元件(SE)的API密钥保护机制仍然需要人工认证环节,因而不适用于有大规模API访问需求的自动化程序。英特尔SGX(IntelSoftwareGuardExtensions)是一套CPU指令,支持应用程序创建安全区(enclave),即应用程序地址中受保护的区域。安全区可以保障内部信息的机密性,完整性和可靠性,试图从软件角度访问安全区内存是不允许的。即使是高级特权软件(操作系统,虚拟机监控器等)也不允许访问。SGX技术中单个CPU可以运行多个安全enclaves,支持并发执行。因此SGX技术对API秘钥保护提供了新的可能。
技术实现思路
针对现有技术的不足,本专利技术提供了一种基于SGX软件扩展指令的API密钥保护方法,该方法通过引入IntelSGX硬件与SGX的可信空间机制构建安全的API密钥存储与使用环境,令API密钥信息本身以及与之相关的使用操作不受攻击者或不受特权软件的窃取或干扰,进而为用户API密钥提供保护。为了实现上述专利技术目的:本专利技术提供了如下技术方案:一种基于SGX软件扩展指令的API密钥保护方法,其特征在于,包括以下步骤:(1)API密钥保护系统初始化、(2)远程认证与API密钥导入、(3)API请求签名与签名信息导出;(1)API密钥保护系统初始化包括:用户首先检测服务器上的用户程序是否正确,确认无误之后进行用户程序启动并初始化,之后在用户程序中进行API密钥保护系统安全区的初始化;(2)远程认证与API密钥导入包括:用户通过自己的可信设备(如个人PC或智能手机)与用户程序服务器上的API密钥保护系统建立SGX远程认证(RemoteAttestation)流,通过远程确认服务器CPU对SGX的支持状况、确认API密钥保护系统功能是否正常,以及实现从用户可信设备向服务器上的用户程序安全传输API密钥信息;(3)API请求签名包括:用户程序访问API密钥保护系统获取可信时间戳,并整合可信时间戳与其他相关信息构建签名输入信息;API密钥保护系统根据用户程序签名请求与传入的签名输入信息,在API密钥保护系统安全区内完成签名计算与编码,并返回用户程序。进一步的,步骤(1)API密钥保护系统初始化具体步骤包括:(1-1)用户在用户程序服务器上部署用户程序,部署完毕后检查该程序是否已经遭到篡改。检查方式包括但不限于计算程序的哈希摘要值(如SHA256),并与该程序完成或发布版本的哈希摘要进行比对。检查无误后进入下一步,否则终止后续流程并进行人工处理;(1-2)用户程序启动,执行自检以排查系统内部错误与所需硬件状况(如数据库设备)。检查无误后进入下一步,否则执行自动修复,若修复无效则终止后续流程、发出警报并请求人工处理;(1-3)用户程序以动态链接库的方式调用API密钥保护系统初始化函数,通过SGX为API密钥保护系统创建可信空间。此步骤创建不含有机密信息(如API密钥)的SGX安全区。步骤(2)远程认证与API密钥导入具体步骤包括:(2-1)用户在自己的可信设备端启动远程认证程序,启动成功后开启对服务器端用户程序远程认证消息的监听,启动失败则报警并终止后续流程。优选的,用户远程认证程序在可信设备的指定网络端口监听服务器端用户程序发起的远程认证请求。不排除使用其他方法或技术实现远程认证请求消息的监听。(2-2)服务器端用户程序调用API密钥保护系统远程认证模块,根据SGX标准远程认证流程构造第一个SGX远程认证流消息(Msg0)与第二个SGX远程认证流消息(Msg1),并发送至用户可信设备端的远程认证程序,之后继续监听后续消息;进一步地,所述步骤(2-2)中,服务器端用户程序构建第一个远程认证消息(Msg0)与第二个SGX远程认证流消息(Msg1)可一同发送至用户可信设备端的远程认证程序,也可分别进行发送。(2-3)用户可信设备端的远程认证程序接收来自服务器端用户程序的远程认证消息Msg0与Msg1,检查消息中的参数,根据SGX标准远程认证流程构造返回消息Msg2,并向英特尔认证服务(IAS)发送一个查询以本文档来自技高网
...

【技术保护点】
1.一种基于SGX软件扩展指令的API密钥保护方法,其特征在于,包括以下步骤:(1)API密钥保护系统初始化、(2)远程认证与API密钥导入、(3)API请求签名与签名信息导出;/n(1)API密钥保护系统初始化包括:用户首先检测服务器上的用户程序是否正确,确认无误之后进行用户程序启动并初始化,之后在用户程序中进行API密钥保护系统安全区的初始化;/n(2)远程认证与API密钥导入包括:用户通过自己的可信设备与用户程序服务器上的API密钥保护系统建立SGX远程认证流,通过远程确认服务器CPU对SGX的支持状况、确认API密钥保护系统功能是否正常,以及实现从用户可信设备向服务器上的用户程序安全传输API密钥信息;/n(3)API请求签名包括:用户程序访问API密钥保护系统获取可信时间戳,并整合可信时间戳与其他相关信息构建签名输入信息;API密钥保护系统根据用户程序签名请求与传入的签名输入信息,在API密钥保护系统安全区内完成签名计算与编码,并返回用户程序。/n

【技术特征摘要】
1.一种基于SGX软件扩展指令的API密钥保护方法,其特征在于,包括以下步骤:(1)API密钥保护系统初始化、(2)远程认证与API密钥导入、(3)API请求签名与签名信息导出;
(1)API密钥保护系统初始化包括:用户首先检测服务器上的用户程序是否正确,确认无误之后进行用户程序启动并初始化,之后在用户程序中进行API密钥保护系统安全区的初始化;
(2)远程认证与API密钥导入包括:用户通过自己的可信设备与用户程序服务器上的API密钥保护系统建立SGX远程认证流,通过远程确认服务器CPU对SGX的支持状况、确认API密钥保护系统功能是否正常,以及实现从用户可信设备向服务器上的用户程序安全传输API密钥信息;
(3)API请求签名包括:用户程序访问API密钥保护系统获取可信时间戳,并整合可信时间戳与其他相关信息构建签名输入信息;API密钥保护系统根据用户程序签名请求与传入的签名输入信息,在API密钥保护系统安全区内完成签名计算与编码,并返回用户程序。


2.根据权利要求1所述的基于SGX软件扩展指令的API密钥保护方法,其特征在于,所述步骤(1)包括:
(1-1)用户在用户程序服务器上部署用户程序,部署完毕后检查该程序是否已经遭到篡改,检查无误后进入下一步,否则终止后续流程并进行人工处理;
(1-2)用户程序启动,执行自检以排查系统内部错误与所需硬件状况,检查无误后进入下一步,否则执行自动修复,若修复无效则终止后续流程、发出警报并请求人工处理;
(1-3)用户程序以动态链接库的方式调用API密钥保护系统初始化函数,通过SGX为API密钥保护系统创建可信空间,此步骤创建不含有机密信息的SGX安全区;
所述步骤(2)包括:
(2-1)用户在自己的可信设备端启动远程认证程序,启动成功后开启对服务器端用户程序远程认证消息的监听,启动失败则报警并终止后续流程;
(2-2)服务器端用户程序调用API密钥保护系统远程认证模块,根据SGX标准远程认证流程构造第一个SGX远程认证流消息Msg0与第二个SGX远程认证流消息Msg1,并发送至用户可信设备端的远程认证程序,之后继续监听后续消息;
(2-3)用户可信设备端的远程认证程序接收来自服务器端用户程序的远程认证消息Msg0与Msg1,检查消息中的参数,根据SGX标准远程认证流程构造返回消息Msg2,并向英特尔认证服务(IAS)发送一个查询以进一步检查Msg0中英特尔EPIDGID的签名撤销表(SigRL),检查均通过后向服务器端用户程序发送Msg2,之后继续监听后续消息,否则报警并终止流程;
(2-4)服务器端用户程序接收Msg2后调用API密钥保护系统远程认证模块,对消息进行检查,检查通过后根据SGX标准远程认证流程构建返回消息Msg3,并发送至用户可信设备端的远程认证程序,之后继续监听后续消息;检查不通过则报警并终止流程;
(2-5)用户可信设备端的远程认证程序接收来自服务器端用户程序的远程认证消息Msg3,检查消息中的参数;检查通过后根据SGX标准远程认证流程构造返回消息Msg4,并将需要传输的API密钥通过Msg2构造过程中导出的密钥进行加密,之后将加密后的API密钥信息一并打包入Msg4,并发送至服务器端用户程序;检查不通过则报警并终止流程;
(2-6)服务器端用户程序接收Msg4后调用API密钥保护系统远程认证模块,远程认证模块检查Msg4中的参数,检查通过后在SGX安全区内解密Msg4中包含的API密钥信息,并在安全区内调用调用密钥管理模块为密钥分配密钥ID,之后将密钥存储在安全区内并向用户程序输出已分配的密钥ID;检查不通过则报警并终止流程;
(...

【专利技术属性】
技术研发人员:陈建海刘丁豪沈睿纪守领何钦铭黄步添
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1