《确保软件加密技术安全的加密系统和方法.pdf》由会员分享,可在线阅读,更多相关《确保软件加密技术安全的加密系统和方法.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103988467 A (43)申请公布日 2014.08.13 CN 103988467 A (21)申请号 201280061752.8 (22)申请日 2012.11.16 201108491-0 2011.11.16 SG 61/645,985 2012.05.11 US H04L 9/12(2006.01) (71)申请人 V-KEY 公司 地址 英属开曼群岛大开曼岛 (72)发明人 颜哲全 (74)专利代理机构 北京戈程知识产权代理有限 公司 11314 代理人 程伟 王锦阳 (54) 发明名称 确保软件加密技术安全的加密系统和方法 (57) 摘要 公开了。
2、一种加密系统, 其具有由防篡改虚拟 层 (TPVL) 保护的安全加密虚拟机 (CVM) 以在软 件中执行加密技术。CVM 和 TPVL 允许软件应用以 安全并且防篡改的方式存储并处理加密秘钥和数 据, 而不需使用硬件安全模块 (HSM)。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.06.13 (86)PCT国际申请的申请数据 PCT/SG2012/000429 2012.11.16 (87)PCT国际申请的公布数据 WO2013/074041 EN 2013.05.23 (51)Int.Cl. 权利要求书 2 页 说明书 5 页 附图 4 页 (19)中华人民共和国国。
3、家知识产权局 (12)发明专利申请 权利要求书2页 说明书5页 附图4页 (10)申请公布号 CN 103988467 A CN 103988467 A 1/2 页 2 1. 一种向正在设备中执行的应用提供加密技术的产品, 包括 : 指令, 所述指令指示处理单元进行下述操作 : 提供加密沙盒, 所述加密沙盒包括 : 虚拟加密机, 其执行加密操作, 沙盒接口, 其从客户端应用接收加密操作的请求, 并且将由所述虚拟加密机执行的所 述加密操作的结果传递到所述客户端应用 ; 以及 所述处理单元可读的、 用以存储指令的介质。 2. 如权利要求 1 所述的产品, 其中提供所述加密沙盒的所述指令还包括使得所。
4、述加密 沙盒包括如下部分的指令 : 存储加密秘钥和数据的安全虚拟存储器。 3. 如权利要求 1 所述的产品, 其中所述安全虚拟存储器在所述虚拟加密机的存储器空 间中。 4. 如权利要求 1 所述的产品, 其中所述安全虚拟存储器在所述虚拟加密机之外。 5. 如权利要求 1 所述的产品, 其中提供包括虚拟加密机的沙盒的所述指令还包括, 向 所述虚拟加密机提供虚拟机解释器的指令, 所述虚拟机解释器向底层操作系统混淆所述虚 拟加密机的操作。 6. 如权利要求 5 所述的产品, 其中所述提供虚拟机解释器的指令包括指示所述处理单 元进行下述操作的指令 : 在所述虚拟机解释器中从底层操作系统接收函数调用, 。
5、以所述虚拟机解释器验证所述函数调用, 以及 响应被验证的所述函数调用, 在所述虚拟加密机中执行所述函数调用。 7. 如权利要求 1 所述的产品, 其中提供所述加密沙盒的指令还包括向所述虚拟加密机 提供加密模块的指令, 所述加密模块执行所述加密操作。 8. 如权利要求 1 所述的产品, 其中提供所述加密沙盒的指令包括在所述虚拟加密机中 提供防篡改层, 所述防篡改层从未授权用户处保护加密处理和数据。 9. 如权利要求 8 所述的产品, 其中提供所述防篡改层的指令包括提供加密形式的虚拟 机代码集的指令, 所述加密形式的虚拟机代码集在运行时解密以允许所述虚拟加密机的正 常操作。 10. 如权利要求 1。
6、 所述的产品, 其中提供所述加密沙盒的指令还包括指示所述处理单 元向所述虚拟加密机提供反调试技术以防止调试所述虚拟加密机的指令。 11. 如权利要求 1 所述的产品, 其中提供所述加密沙盒的指令还包括指示所述处理单 元进行下述操作的指令 : 建立到受信任方的安全连接, 确定更新是否可用, 以及 将更新上传到存储器。 12. 一种方法, 其向具备处理系统的设备提供执行加密操作的虚拟加密沙盒, 所述方法 包括 : 在沙盒接口从由所述处理系统执行的应用接收执行加密操作的请求 ; 使用由所述处理系统执行的虚拟加密机执行加密操作, 以及 权 利 要 求 书 CN 103988467 A 2 2/2 页 。
7、3 使用所述沙盒接口传送所述加密操作的结果。 13. 如权利要求 12 所述的方法, 其还包括 : 存储加密秘钥和数据以及加密存储器, 以及 访问加密秘钥和数据以执行所述加密操作。 14. 如权利要求 13 所述的方法, 其中所述加密存储器在所述虚拟加密机的存储器空间 内。 15. 如权利要求 13 所述的方法, 其中所述加密存储器在底层操作系统的存储器空间 内。 16. 如权利要求 12 所述的方法, 其还包括 : 向底层操作系统混淆所述虚拟加密机的操作。 17. 如权利要求 16 所述的方法, 其还包括 : 在所述虚拟机解释器中从底层操作系统接收函数调用, 以所述虚拟机解释器验证所述函数调。
8、用, 以及 响应被验证的所述函数调用, 在所述虚拟加密机中执行所述函数调用。 18. 如权利要求 12 所述的方法, 其还包括 : 在虚拟加密机的加密模块中执行所述加密操作。 19. 如权利要求 12 所述的方法, 其还包括 : 在所述虚拟加密机中提供防篡改层, 所述防篡改层保护加密处理和数据免受未授权用 户之害。 20. 如权利要求 12 所述的方法, 其还包括 : 向所述虚拟加密机提供反调试技术以防止调试所述虚拟加密机。 21. 如权利要求 12 所述的方法, 其还包括 : 建立到受信任方的安全连接 ; 确定所述加密沙盒的更新是否可用 ; 以及 将更新上传到存储器。 权 利 要 求 书 C。
9、N 103988467 A 3 1/5 页 4 确保软件加密技术安全的加密系统和方法 技术领域 0001 本申请大体涉及加密系统, 尤其是在软件中实施该加密系统时确保该系统安全的 方法。 背景技术 0002 移动设备(包括移动电话和平板电脑)在网络通信以及个人信息存储和处理中的 使用正快速增长。当用户敏感信息在这些设备之间传送或者在这些设备中存储时, 加密技 术构成了确保用户敏感信息安全的基础。 0003 当前存在着两种在这些设备中确保用户信息安全的广泛的方法。传统上, 提供用 于加密处理的安全的防篡改容器的硬件安全模块 (HSM) 在硬件上执行这些操作, 而其是与 软件应用隔离的。 首个有记。
10、录的HSM记录于美国专利4,168,396, 1979年9月18日, 其被设 计用于个人计算机软件的复制保护。这个概念之后被扩展到提供数据安全的硬件模块 ( 美 国专利4,352,952, 1980年3月3日)。 现有HSM的例子包括内建于接触式卡(ISO/IEC7810 和 7816 标准 ) 以及非接触式卡 (ISO/IEC14443 标准 ) 的 “智能卡” 。 0004 在移动电话和其他计算设备中, 这些 HSM 一般不存在或者不能被软件应用所访 问, 而且加密技术是在主机操作系统中执行的, 而主机操作系统是使用操作系统机制来隔 离的。然而, 获取了操作系统的访问权限的攻击者或者黑客有。
11、多种可行手段来克服这些机 制, 并因此获取用户信息的访问权限。 0005 虚拟机 (virtual machine) 已被用作一种在主机计算设备和虚拟机中的来 宾操作系统之间将执行分离的手段。为了安全, 这已被用来加强安全策略 ( 美国专利 2005/0257243, 2005 年 12 月 29 日 )、 用来防止被破解的来宾操作系统能够影响主机 ( 美国 专利 7,409,719, 2004 年 12 月 21 日 ) 以及用来在 DVD 中只允许受信任的媒体播放器应用 访问加密的媒体 ( 美国专利 7,516,331, 2003 年 11 月 26 日 )。但是, 当在开放的软件平台 (。
12、 例如移动电话或桌面操作系统 ) 上执行时, 它们都不会试图保护虚拟机内的信息。 0006 基于上文, 可以认识到存在着对具有如下方法的加密系统的需求 : 从未授权但获 取了计算设备操作系统的访问权限的观察器 (observer) 或攻击者那里确保软件加密技术 的安全的方法, 尤其是在计算设备不具有确保在分离的硬件安全模块中的加密信息安全的 手段时。本发明满足此需求以及本领域的其他需求。 发明内容 0007 根据本发明构建的加密系统和方法包括作为加密沙盒运行的安全软件沙盒, 其具 有围绕沙盒的防篡改虚拟层以保护沙盒免于逆向工程、 调试或篡改。多个应用可以与沙盒 通信以请求执行加密操作, 以及从。
13、沙盒中检索加密操作的结果。 附图说明 0008 图 1 所示为一种设备的处理系统的框图, 该设备执行根据本发明的一种实施方式 说 明 书 CN 103988467 A 4 2/5 页 5 的系统和方法。 0009 图 2 所示为根据本发明的一种实施方式的加密系统元件的框图。 0010 图 3 所示为根据本发明的一种实施方式的加密系统的启动过程的流程图。 0011 图 4 所示为根据本发明的一种实施方式的访问加密存储器的过程的流程图。 0012 图 5 所示为根据本发明的一种实施方式的、 加密系统到操作系统函数的受信任访 问过程的流程图。 0013 图 6 所示为根据本发明的一种实施方式的、 加。
14、密系统执行的安全地检查更新的过 程的流程图。 具体实施方式 0014 下面的描述将集中于根据本发明的一种实施方式, 其在应用软件运行于 Apple或 Google操作系统的环境下一般是有效的。但是, 根据本发明 的实施方式不限于任何一种特定的应用或任何特定的环境。实际上, 本领域技术人员会发 现本发明的系统和方法可以有益地应用于多种系统和应用软件, 包括安全令牌 (security token)、 软件加密技术和网络加密。 而且, 根据本发明的实施方式可以在多种不同的平台执 行, 包括 : 其他移动电话操作系统, 诸如 RIM和Windows Phone 等等 ; 其他操作系统, 诸如 App。
15、le MacWindows 和 UNIX ; 以及其他运行 环境, 诸如网络浏览器和嵌入式设备等等。 因此, 下文中根据本发明所示的实施方式的描述 是示意性的而不是限制性的。 0015 提供根据本发明的方法和系统的过程由诸如(但不限于)移动电话、 平板电脑、 上 网本、 笔记本电脑或其他处理系统的设备执行。设备中执行根据本发明实施方式的过程的 相关元件显示于图1。 本领域技术人员会认识到, 该设备可以包括为简洁起见而省略的其他 元件而不会偏离本发明。设备 1 包括处理器 5、 非易失性存储器 10 以及易失性存储器 15。 处理器5是处理器、 微处理器、 控制器或者处理器、 微处理器和/或控制。
16、器的组合, 其执行存 储于易失性存储器 15 或非易失性存储器 10 的指令以操作存储于存储器中的数据。非易失 性存储器10可以存储用于配置处理器5以执行过程的处理器指令, 所执行的过程包括根据 本发明的实施方式的过程和 / 或用于所用过程的数据。其他实施方式中, 设备软件和 / 或 固件可以存储于适用于特定应用的多种计算机可读介质中的任意一种。尽管图 1 图示了一 种特定的设备, 根据本发明的实施方式, 也可以使用被配置来存储加密的加密数据并执行 加密操作的多种设备中的任意一种。 0016 图 2 所示为根据本发明的一种实施方式所构建的加密系统和方法。在所描述的实 施方式中, 加密沙盒 10。
17、8 为多个客户端应用 (client application)104 提供了安全地存储 并处理加密秘钥以及数据的方法, 其在沙盒中具有防篡改虚拟层 110 以保护处理以及数据 免受未授权的观察器之害。为了允许客户端应用 104 执行安全处理以及安全存储, 加密沙 盒 108 可以包括安全虚拟处理器 109 以及安全虚拟存储器 119。 0017 加密沙盒 108 可以包括加密虚拟机 109 以充当安全虚拟处理器。加密虚拟机可 以包括安全加密模块 115 以执行加密操作, 这些操作包括存储、 检索以及处理加密秘钥和 数据。这些加密操作可以包括公众所知的加密程序, 包括对称秘钥加密 (symmet。
18、ric key 说 明 书 CN 103988467 A 5 3/5 页 6 cryptography)(例如AES)、 非对称秘钥加密(asymmetric key cryptography)(例如RSA)、 散列函数 (hashing function)( 例如 SHA-1、 SHA-2 和 HMAC) 以及伪随机数生成和秘钥生成 函数。该虚拟机可以从多个客户端应用接收请求 106 以执行这些加密操作, 其在虚拟机内 安全地处理这些加密操作并将这些加密操作的结果作为响应 107 发回客户端。该虚拟机也 可以用来执行其他没有加密但是对于安全至关重要的处理函数。 0018 虚拟机 109 可以。
19、包括虚拟机解释器 111 以及虚拟机代码集 112。这些虚拟机代码 可以基于仅以在虚拟机解释器内执行为目的而建立的 32 位 RISC 指令集架构。该指令集架 构可以包括通用计算机处理器所需的汇编指令, 其包括存储器操作、 函数调用、 结果比较、 二进制算法以及整数算法的指令。虚拟机和底层操作系统 101 可以在计算机处理器 124 中 执行。该计算机处理器可以包括移动电话中的通用中央处理单元。底层操作系统可以包括 移动电话操作系统。虚拟机解释器还可以包括混淆技术 114 以向底层操作系统和其中任 何未授权观察器掩盖其操作。 这些混淆技术可以包括针对底层操作系统中的变化而动态地 改变执行流程的。
20、技术。该技术可以涉及传递给虚拟机的系统函数回调处理程序 (callback handler), 使得虚拟机从底层操作系统执行函数并且探测这些改变是否已经出现。系统函 数回调处理程序可以提供从虚拟机到底层操作系统的文件系统、 过程以及存储器的访问权 限。 系统函数回调处理程序可以提供到系统指纹函数(system fingerprinting function) ( 例如在底层操作系统检索的设备标示符 ) 的访问权限。然后虚拟机将基于变化 ( 如果其 存在的话 ) 确定新的执行流程应当是什么样的。 0019 虚拟机可以提供用于虚拟机中加密秘钥和数据的安全加密存储器 119 的手段。安 全存储器还可。
21、以用于存储其他没有加密但是对于安全至关重要的数据。 该手段可以由向加 密存储器的写入 117 以及从加密存储器的读出 118 提供。该加密文件可以存储在操作系统 的文件系统或者在操作系统提供的受信任的存储器。 文件可以由虚拟机用对称分组加密法 (symmetric block cipher)( 例如使用 AES 秘钥的 AES) 加密。该 AES 秘钥可以基于只有虚 拟机知道的秘密的秘钥。该 AES 秘钥可以基于用户通过客户端应用输入的密码。该 AES 秘 钥可以基于从底层设备提取的硬件和软件标示符生成。该 AES 秘钥可以基于远程服务器的 响应生成。 0020 客户端应用可以通过沙盒接口 1。
22、05 向虚拟机发送请求并且从虚拟机接收加密操 作的结果。该接口可以包括编程接口 ( 例如软件库 ) 或者网络接口 ( 例如 TCP/IP 网络连 接)。 该接口可以包括一组程序函数调用, 这些函数调用使得客户端应用在虚拟机中执行加 密或对安全至关重要的函数。 这些函数调用可以包括通常向底层操作系统进行的对这类函 数的函数调用。这些函数调用还可以包括对尤其是由虚拟机执行的额外函数的函数调用。 这些函数调用可以被虚拟机透明地解释, 使得客户端应用可以继续使用底层操作系统所暴 露的本地函数调用。 0021 虚拟机解释器还可以提供函数 123 以从受信任方 122 安全地更新虚拟机代码集。 在允许更新。
23、过程替换虚拟机所使用的虚拟机代码集之前, 代码可以由受信任方签名并且被 虚拟机验证。虚拟机解释器可以提供到底层操作系统中的函数 102 的安全访问 103。使用 检测函数何时被外来观察器修改或移动的技术可以保护该访问权限。 这些技术可以包括反 钩 (anti-hooking) 技术, 其可以包括检验函数地址没有被改变。这些技术可以包括分析函 数返回结果所花费的时间, 其可以包括检验函数返回结果没有花费长于一定时间的时间。 说 明 书 CN 103988467 A 6 4/5 页 7 这些技术还可以包括改变执行路径的技术, 使得攻击者不能轻易假造所花费的时间, 因为 每次执行所花费的时间会变化。。
24、 该技术可以涉及在检验系统时间的间隙于虚拟机中执行随 机数量的指令, 使得执行路径的长度随着每次执行变化而且所花费的时间随着每次执行也 会变化。该技术也可以涉及在虚拟机中执行不同类型的指令, 而每种类型的指令所花费的 时间对于虚拟机代码是已知的, 这样每次执行的执行路径会包含不同的指令而且每次执行 所花费的时间会变化。 0022 防篡改虚拟层 110 可以通过如下方式来保护虚拟机免于逆向工程 : 将虚拟机代码 集以加密形式存储并且在运行时解密这些指令以允许虚拟机的正常操作。 加密和解密可以 通过自修改 (self-modifying) 虚拟机代码达到。虚拟机解释器可以通过在虚拟机中执行 这些自。
25、修改虚拟机代码来将其解密。 虚拟机代码可以执行多于一回合的自修改以进一步延 迟逆向工程的尝试。每回合自修改中可以有不同的加密数据和算法被使用。自修改代码可 以涉及不同的具有存储的解密秘钥的解密程序, 其在将执行控制传递给已解密代码之前将 代码块从加密形式解密回明文形式。 自修改代码还可以涉及将指令序列集替换为达到同样 执行结果的其他指令序列集。 0023 防篡改虚拟层可以通过使用防止虚拟机调试(debugging)的技术116来保护虚拟 机免于运行时分析(runtime analysis)。 这些技术可以包括防止调试器附着于虚拟机的技 术。这些技术可以包括通过使用自调试 (self-debug。
26、ging) 调用来检测何时企图使用调试 器的技术。 这些技术可以包括通过利用在调试器下的处理器执行的区别来将使用调试器时 的虚拟机的执行重定向的技术。 防篡改虚拟层可以通过使用虚拟机代码中的多个安全层检 测虚拟机的篡改。这些层可以包括在虚拟机中进行额外的篡改检验的层。这些篡改检验可 以包括检验唯一的设备标示符以确保虚拟机没有被复制到未授权机。 这些篡改检验可以包 括检验本地操作环境函数以确保这些函数没有被修改。 这些篡改检验可以包括检验操作环 境以确保该环境没有被修改。 这些篡改检验可以包括检验应用存储器以确保应用没有被修 改。防篡改虚拟层可以提供函数来响应虚拟机的篡改。该函数可以包括虚拟机内。
27、信息的归 零。该函数可以包括处理一组不同的加密数据或算法。 0024 防篡改虚拟层可以将防止逆向工程的技术与防止运行时分析的技术穿插起来, 使 得这两种分析形式无效。 这可以包括在用于运行时分析的技术中穿插用于逆向工程的技术 的技术, 对于攻击者来说, 该用于逆向工程的技术需要耗时的手动逆向工程来绕过。 这可以 包括将用于逆向工程的技术与用于运行时分析的技术分开的技术, 该用于运行时分析的技 术防止自动的运行时分析。这可以包括在防篡改虚拟层中多次重复这些技术的技术, 使得 所需的全部分析时间是不可行的。 0025 图 3 图示了根据本发明的一种实施方式的, 该加密系统如何启动。计算机处理器 1。
28、24 启动底层操作系统 101 , 其然后执行客户端应用 104 。客户端应用可以通过沙盒接口 105 发送请求 106 并接收响应 107 , 该沙盒接口 105 启动加密沙盒 108 并提供到加密 沙盒 108 的访问权限。沙盒之中, 加密虚拟机 109 在应用启动时启动, 其装载防篡改虚拟 层 110 。虚拟机然后装载提供安全加密功能 115 的加密代码 112 , 并且使用虚拟机解释 器 111 执行运行时加密 113 , 其在加密代码中打开混淆层 114 。该代码然后提供在虚拟 机中执行的反调试技术 116 。 0026 图 4 图示了根据一种实施方式的, 加密系统如何访问加密存储器。
29、。启动后, 虚拟机 说 明 书 CN 103988467 A 7 5/5 页 8 解释器 111 执行向加密存储器 119 的加密写入 117 以及从加密存储器 119 的加密读出 118 。加密读出和加密写入可以使用存储于加密代码的 AES 秘钥。加密存储器中的信息可 以包括其他加密秘钥 120 或其他加密数据 121 。 0027 图 5 图示了根据本发明的一种实施方式的, 加密系统如何具有到操作系统函数的 受信任访问权限。启动后, 虚拟机解释器 111 在调用来自底层操作系统 101 的函数 102 之前验证这些函数, 以确保到这些函数的受信任访问 103 是可能的。该函数验证可以包括 。
30、函数指针检验。 0028 图 6 图示了根据本发明的一种实施方式的, 加密系统如何安全地检查更新。启动 后, 虚拟机解释器 111 连接至受信任方 112 。该连接可以包括安全套接层 (SSL) 连接。如 果受信任方表示有更新可用, 虚拟机解释器会下载新的加密代码集 112 , 以在虚拟机中使 用。 说 明 书 CN 103988467 A 8 1/4 页 9 图 1 说 明 书 附 图 CN 103988467 A 9 2/4 页 10 图 2 说 明 书 附 图 CN 103988467 A 10 3/4 页 11 图 3 图 4 说 明 书 附 图 CN 103988467 A 11 4/4 页 12 图 5 图 6 说 明 书 附 图 CN 103988467 A 12 。