确保软件加密技术安全的加密系统和方法

文档序号:7993715阅读:245来源:国知局
确保软件加密技术安全的加密系统和方法
【专利摘要】公开了一种加密系统,其具有由防篡改虚拟层(TPVL)保护的安全加密虚拟机(CVM)以在软件中执行加密技术。CVM和TPVL允许软件应用以安全并且防篡改的方式存储并处理加密秘钥和数据,而不需使用硬件安全模块(HSM)。
【专利说明】确保软件加密技术安全的加密系统和方法
【技术领域】
[0001]本申请大体涉及加密系统,尤其是在软件中实施该加密系统时确保该系统安全的方法。
【背景技术】
[0002]移动设备(包括移动电话和平板电脑)在网络通信以及个人信息存储和处理中的使用正快速增长。当用户敏感信息在这些设备之间传送或者在这些设备中存储时,加密技术构成了确保用户敏感信息安全的基础。
[0003]当前存在着两种在这些设备中确保用户信息安全的广泛的方法。传统上,提供用于加密处理的安全的防篡改容器的硬件安全模块(HSM)在硬件上执行这些操作,而其是与软件应用隔离的。首个有记录的HSM记录于美国专利4,168,396,1979年9月18日,其被设计用于个人计算机软件的复制保护。这个概念之后被扩展到提供数据安全的硬件模块(美国专利4,352,952,1980年3月3日)。现有HSM的例子包括内建于接触式卡(IS0/IEC7810和7816标准)以及非接触式卡(IS0/IEC14443标准)的“智能卡”。
[0004]在移动电话和其他计算设备中,这些HSM —般不存在或者不能被软件应用所访问,而且加密技术是在主机操作系统中执行的,而主机操作系统是使用操作系统机制来隔离的。然而,获取了操作系统的访问权限的攻击者或者黑客有多种可行手段来克服这些机制,并因此获取用户信息的访问权限。
[0005]虚拟机(virtual machine)已被用作一种在主机计算设备和虚拟机中的来宾操作系统之间将执行分离的手段。为了安全,这已被用来加强安全策略(美国专利2005/0257243,2005年12月29日)、用来防止被破解的来宾操作系统能够影响主机(美国专利7,409,719,2004年12月21日)以及用来在DVD中只允许受信任的媒体播放器应用访问加密的媒体(美国专利7,516,331,2003年11月26日)。但是,当在开放的软件平台(例如移动电话或桌面操作系统)上执行时,它们都不会试图保护虚拟机内的信息。
[0006]基于上文,可以认识到存在着对具有如下方法的加密系统的需求:从未授权但获取了计算设备操作系统的访问权限的观察器(observer)或攻击者那里确保软件加密技术的安全的方法,尤其是在计算设备不具有确保在分离的硬件安全模块中的加密信息安全的手段时。本发明满足此需求以及本领域的其他需求。

【发明内容】

[0007]根据本发明构建的加密系统和方法包括作为加密沙盒运行的安全软件沙盒,其具有围绕沙盒的防篡改虚拟层以保护沙盒免于逆向工程、调试或篡改。多个应用可以与沙盒通信以请求执行加密操作,以及从沙盒中检索加密操作的结果。
【专利附图】

【附图说明】
[0008]图1所示为一种设备的处理系统的框图,该设备执行根据本发明的一种实施方式的系统和方法。
[0009]图2所示为根据本发明的一种实施方式的加密系统元件的框图。
[0010]图3所示为根据本发明的一种实施方式的加密系统的启动过程的流程图。
[0011]图4所示为根据本发明的一种实施方式的访问加密存储器的过程的流程图。
[0012]图5所示为根据本发明的一种实施方式的、加密系统到操作系统函数的受信任访问过程的流程图。
[0013]图6所示为根据本发明的一种实施方式的、加密系统执行的安全地检查更新的过程的流程图。
【具体实施方式】
[0014]下面的描述将集中于根据本发明的一种实施方式,其在应用软件运行于Apple iPhone?或Google Android?操作系统的环境下一般是有效的。但是,根据本发明
的实施方式不限于任何一种特定的应用或任何特定的环境。实际上,本领域技术人员会发现本发明的系统和方法可以有益地应用于多种系统和应用软件,包括安全令牌(securitytoken)、软件加密技术和网络加密。而且,根据本发明的实施方式可以在多种不同的平台执行,包括:其他移动电话操作系统,诸如丨《IVl Blackberry?和Microsoft? Windows Phone等等;其他操作系统,诸如Apple Mac OS?、Microsoft? Windows和UNIX ;以及其他运行
环境,诸如网络浏览器和嵌入式设备等等。因此,下文中根据本发明所示的实施方式的描述是示意性的而不是限制性的。
[0015]提供根据本发明的方法和系统的过程由诸如(但不限于)移动电话、平板电脑、上网本、笔记本电脑或其他处理系统的设备执行。设备中执行根据本发明实施方式的过程的相关元件显示于图1。本领域技术人员会认识到,该设备可以包括为简洁起见而省略的其他元件而不会偏离本发明。设备I包括处理器5、非易失性存储器10以及易失性存储器15。处理器5是处理器、微处理器、控制器或者处理器、微处理器和/或控制器的组合,其执行存储于易失性存储器15或非易失性存储器10的指令以操作存储于存储器中的数据。非易失性存储器10可以存储用于配置处理器5以执行过程的处理器指令,所执行的过程包括根据本发明的实施方式的过程和/或用于所用过程的数据。其他实施方式中,设备软件和/或固件可以存储于适用于特定应用的多种计算机可读介质中的任意一种。尽管图1图示了一种特定的设备,根据本发明的实施方式,也可以使用被配置来存储加密的加密数据并执行加密操作的多种设备中的任意一种。
[0016]图2所示为根据本发明的一种实施方式所构建的加密系统和方法。在所描述的实施方式中,加密沙盒108为多个客户端应用(client application) 104提供了安全地存储并处理加密秘钥以及数据的方法,其在沙盒中具有防篡改虚拟层110以保护处理以及数据免受未授权的观察器之害。为了允许客户端应用104执行安全处理以及安全存储,加密沙盒108可以包括安全虚拟处理器109以及安全虚拟存储器119。
[0017]加密沙盒108可以包括加密虚拟机109以充当安全虚拟处理器。加密虚拟机可以包括安全加密模块115以执行加密操作,这些操作包括存储、检索以及处理加密秘钥和数据。这些加密操作可以包括公众所知的加密程序,包括对称秘钥加密(sy_etric keycryptography)(例如 AES)、非对称秘钥加密(asymmetric key cryptography)(例如 RSA)、散列函数(hashing function)(例如SHA-1、SHA-2和HMAC)以及伪随机数生成和秘钥生成函数。该虚拟机可以从多个客户端应用接收请求106以执行这些加密操作,其在虚拟机内安全地处理这些加密操作并将这些加密操作的结果作为响应107发回客户端。该虚拟机也可以用来执行其他没有加密但是对于安全至关重要的处理函数。
[0018]虚拟机109可以包括虚拟机解释器111以及虚拟机代码集112。这些虚拟机代码可以基于仅以在虚拟机解释器内执行为目的而建立的32位RISC指令集架构。该指令集架构可以包括通用计算机处理器所需的汇编指令,其包括存储器操作、函数调用、结果比较、二进制算法以及整数算法的指令。虚拟机和底层操作系统101可以在计算机处理器124中执行。该计算机处理器可以包括移动电话中的通用中央处理单元。底层操作系统可以包括移动电话操作系统。虚拟机解释器还可以包括混淆技术114以向底层操作系统和其中任何未授权观察器掩盖其操作。这些混淆技术可以包括针对底层操作系统中的变化而动态地改变执行流程的技术。该技术可以涉及传递给虚拟机的系统函数回调处理程序(callbackhandler),使得虚拟机从底层操作系统执行函数并且探测这些改变是否已经出现。系统函数回调处理程序可以提供从虚拟机到底层操作系统的文件系统、过程以及存储器的访问权限。系统函数回调处理程序可以提供到系统指纹函数(system fingerprinting function)(例如在底层操作系统检索的设备标示符)的访问权限。然后虚拟机将基于变化(如果其存在的话)确定新的执行流程应当是什么样的。
[0019]虚拟机可以提供用于虚拟机中加密秘钥和数据的安全加密存储器119的手段。安全存储器还可以用于存储其他没有加密但是对于安全至关重要的数据。该手段可以由向加密存储器的写入117以及从加密存储器的读出118提供。该加密文件可以存储在操作系统的文件系统或者在操作系统提供的受信任的存储器。文件可以由虚拟机用对称分组加密法(symmetric block cipher)(例如使用AES秘钥的AES)加密。该AES秘钥可以基于只有虚拟机知道的秘密的秘钥。该AES秘钥可以基于用户通过客户端应用输入的密码。该AES秘钥可以基于从底层设备提取的硬件和软件标示符生成。该AES秘钥可以基于远程服务器的响应生成。
[0020]客户端应用可以通过沙盒接口 105向虚拟机发送请求并且从虚拟机接收加密操作的结果。该接口可以包括编程接口(例如软件库)或者网络接口(例如TCP/IP网络连接)。该接口可以包括一组程序函数调用,这些函数调用使得客户端应用在虚拟机中执行加密或对安全至关重要的函数。这些函数调用可以包括通常向底层操作系统进行的对这类函数的函数调用。这些函数调用还可以包括对尤其是由虚拟机执行的额外函数的函数调用。这些函数调用可以被虚拟机透明地解释,使得客户端应用可以继续使用底层操作系统所暴露的本地函数调用。
[0021]虚拟机解释器还可以提供函数123以从受信任方122安全地更新虚拟机代码集。在允许更新过程替换虚拟机所使用的虚拟机代码集之前,代码可以由受信任方签名并且被虚拟机验证。虚拟机解释器可以提供到底层操作系统中的函数102的安全访问103。使用检测函数何时被外来观察器修改或移动的技术可以保护该访问权限。这些技术可以包括反钩(ant1-hooking)技术,其可以包括检验函数地址没有被改变。这些技术可以包括分析函数返回结果所花费的时间,其可以包括检验函数返回结果没有花费长于一定时间的时间。这些技术还可以包括改变执行路径的技术,使得攻击者不能轻易假造所花费的时间,因为每次执行所花费的时间会变化。该技术可以涉及在检验系统时间的间隙于虚拟机中执行随机数量的指令,使得执行路径的长度随着每次执行变化而且所花费的时间随着每次执行也会变化。该技术也可以涉及在虚拟机中执行不同类型的指令,而每种类型的指令所花费的时间对于虚拟机代码是已知的,这样每次执行的执行路径会包含不同的指令而且每次执行所花费的时间会变化。
[0022]防篡改虚拟层110可以通过如下方式来保护虚拟机免于逆向工程:将虚拟机代码集以加密形式存储并且在运行时解密这些指令以允许虚拟机的正常操作。加密和解密可以通过自修改(self-modifying)虚拟机代码达到。虚拟机解释器可以通过在虚拟机中执行这些自修改虚拟机代码来将其解密。虚拟机代码可以执行多于一回合的自修改以进一步延迟逆向工程的尝试。每回合自修改中可以有不同的加密数据和算法被使用。自修改代码可以涉及不同的具有存储的解密秘钥的解密程序,其在将执行控制传递给已解密代码之前将代码块从加密形式解密回明文形式。自修改代码还可以涉及将指令序列集替换为达到同样执行结果的其他指令序列集。
[0023]防篡改虚拟层可以通过使用防止虚拟机调试(debugging)的技术116来保护虚拟机免于运行时分析(runtime analysis)。这些技术可以包括防止调试器附着于虚拟机的技术。这些技术可以包括通过使用自调试(self-debugging)调用来检测何时企图使用调试器的技术。这些技术可以包括通过利用在调试器下的处理器执行的区别来将使用调试器时的虚拟机的执行重定向的技术。防篡改虚拟层可以通过使用虚拟机代码中的多个安全层检测虚拟机的篡改。这些层可以包括在虚拟机中进行额外的篡改检验的层。这些篡改检验可以包括检验唯一的设备标示符以确保虚拟机没有被复制到未授权机。这些篡改检验可以包括检验本地操作环境函数以确保这些函数没有被修改。这些篡改检验可以包括检验操作环境以确保该环境没有被修改。这些篡改检验可以包括检验应用存储器以确保应用没有被修改。防篡改虚拟层可以提供函数来响应虚拟机的篡改。该函数可以包括虚拟机内信息的归零。该函数可以包括处理一组不同的加密数据或算法。
[0024]防篡改虚拟层可以将防止逆向工程的技术与防止运行时分析的技术穿插起来,使得这两种分析形式无效。这可以包括在用于运行时分析的技术中穿插用于逆向工程的技术的技术,对于攻击者来说,该用于逆向工程的技术需要耗时的手动逆向工程来绕过。这可以包括将用于逆向工程的技术与用于运行时分析的技术分开的技术,该用于运行时分析的技术防止自动的运行时分析。这可以包括在防篡改虚拟层中多次重复这些技术的技术,使得所需的全部分析时间是不可行的。
[0025]图3图示了根据本发明的一种实施方式的,该加密系统如何启动。计算机处理器124’启动底层操作系统101’,其然后执行客户端应用104’。客户端应用可以通过沙盒接口105’发送请求106’并接收响应107’,该沙盒接口 105’启动加密沙盒108’并提供到加密沙盒108’的访问权限。沙盒之中,加密虚拟机109’在应用启动时启动,其装载防篡改虚拟层110’。虚拟机然后装载提供安全加密功能115’的加密代码112’,并且使用虚拟机解释器111’执行运行时加密113’,其在加密代码中打开混淆层114’。该代码然后提供在虚拟机中执行的反调试技术116’。
[0026]图4图示了根据一种实施方式的,加密系统如何访问加密存储器。启动后,虚拟机解释器111’执行向加密存储器119’的加密写入117’以及从加密存储器119’的加密读出118’。加密读出和加密写入可以使用存储于加密代码的AES秘钥。加密存储器中的信息可以包括其他加密秘钥120’或其他加密数据121’。
[0027]图5图示了根据本发明的一种实施方式的,加密系统如何具有到操作系统函数的受信任访问权限。启动后,虚拟机解释器111’在调用来自底层操作系统101’的函数102’之前验证这些函数,以确保到这些函数的受信任访问103’是可能的。该函数验证可以包括函数指针检验。
[0028]图6图示了根据本发明的一种实施方式的,加密系统如何安全地检查更新。启动后,虚拟机解释器111’连接至受信任方112’。该连接可以包括安全套接层(SSL)连接。如果受信任方表示有更新可用,虚拟机解释器会下载新的加密代码集112’,以在虚拟机中使用。
【权利要求】
1.一种向正在设备中执行的应用提供加密技术的产品,包括: 指令,所述指令指示处理单元进行下述操作: 提供加密沙盒,所述加密沙盒包括: 虚拟加密机,其执行加密操作, 沙盒接口,其从客户端应用接收加密操作的请求,并且将由所述虚拟加密机执行的所述加密操作的结果传递到所述客户端应用;以及所述处理单元可读的、用以存储指令的介质。
2.如权利要求1所述的产品,其中提供所述加密沙盒的所述指令还包括使得所述加密沙盒包括如下部分的指令: 存储加密秘钥和数据的安全虚拟存储器。
3.如权利要求1所述的产品,其中所述安全虚拟存储器在所述虚拟加密机的存储器空间中。
4.如权利要求1所述的产品,其中所述安全虚拟存储器在所述虚拟加密机之外。
5.如权利要求1所述的产品,其中提供包括虚拟加密机的沙盒的所述指令还包括,向所述虚拟加密机提供虚拟机解释器的指令,所述虚拟机解释器向底层操作系统混淆所述虚拟加密机的操作。
6.如权利要求5所述的产品,其中所述提供虚拟机解释器的指令包括指示所述处理单元进行下述操作的指令: 在所述虚拟机解释器中从底层操作系统接收函数调用, 以所述虚拟机解释器验证所述函数调用,以及 响应被验证的所述函数调用,在所述虚拟加密机中执行所述函数调用。
7.如权利要求1所述的产品,其中提供所述加密沙盒的指令还包括向所述虚拟加密机提供加密模块的指令,所述加密模块执行所述加密操作。
8.如权利要求1所述的产品,其中提供所述加密沙盒的指令包括在所述虚拟加密机中提供防篡改层,所述防篡改层从未授权用户处保护加密处理和数据。
9.如权利要求8所述的产品,其中提供所述防篡改层的指令包括提供加密形式的虚拟机代码集的指令,所述加密形式的虚拟机代码集在运行时解密以允许所述虚拟加密机的正常操作。
10.如权利要求1所述的产品,其中提供所述加密沙盒的指令还包括指示所述处理单元向所述虚拟加密机提供反调试技术以防止调试所述虚拟加密机的指令。
11.如权利要求1所述的产品,其中提供所述加密沙盒的指令还包括指示所述处理单元进行下述操作的指令: 建立到受信任方的安全连接, 确定更新是否可用,以及 将更新上传到存储器。
12.—种方法,其向具备处理系统的设备提供执行加密操作的虚拟加密沙盒,所述方法包括: 在沙盒接口 从由所述处理系统执行的应用接收执行加密操作的请求; 使用由所述处理系统执行的虚拟加密机执行加密操作,以及使用所述沙盒接口传送所述加密操作的结果。
13.如权利要求12所述的方法,其还包括: 存储加密秘钥和数据以及加密存储器,以及 访问加密秘钥和数据以执行所述加密操作。
14.如权利要求13所述的方法,其中所述加密存储器在所述虚拟加密机的存储器空间内。
15.如权利要求13所述的方法,其中所述加密存储器在底层操作系统的存储器空间内。
16.如权利要求12所述的方法,其还包括: 向底层操作系统混淆所述虚拟加密机的操作。
17.如权利要求16所述的方法,其还包括: 在所述虚拟机解释器中从底层操作系统接收函数调用, 以所述虚拟机解释器验证所述函数调用,以及 响应被验证的所述函数调用,在所述虚拟加密机中执行所述函数调用。
18.如权利要求12所述的方法,其还包括: 在虚拟加密机的加密模块中执行所述加密操作。
19.如权利要求12所述的方法,其还包括: 在所述虚拟加密机中提供防篡改层,所述防篡改层保护加密处理和数据免受未授权用户之害。
20.如权利要求12所述的方法,其还包括: 向所述虚拟加密机提供反调试技术以防止调试所述虚拟加密机。
21.如权利要求12所述的方法,其还包括: 建立到受信任方的安全连接; 确定所述加密沙盒的更新是否可用;以及 将更新上传到存储器。
【文档编号】H04L9/12GK103988467SQ201280061752
【公开日】2014年8月13日 申请日期:2012年11月16日 优先权日:2011年11月16日
【发明者】颜哲全 申请人:V-Key公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1