CN101305333A - 防篡改可信任虚拟机 - Google Patents

防篡改可信任虚拟机 Download PDF

Info

Publication number
CN101305333A
CN101305333A CNA2004800343862A CN200480034386A CN101305333A CN 101305333 A CN101305333 A CN 101305333A CN A2004800343862 A CNA2004800343862 A CN A2004800343862A CN 200480034386 A CN200480034386 A CN 200480034386A CN 101305333 A CN101305333 A CN 101305333A
Authority
CN
China
Prior art keywords
trusted
application
virtual machine
java
dictionary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2004800343862A
Other languages
English (en)
Inventor
金红霞
D·小利克
J·罗茨皮奇
S·宁
W·普罗夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101305333A publication Critical patent/CN101305333A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Abstract

一种可信任Java虚拟机,所述可信任Java虚拟机提供了一种用于支持防篡改应用、确保应用及其机密(例如密钥)的完整性的方法。所述可信任Java虚拟机验证所述Java应用的完整性,阻止调试所述Java应用并使得所述Java应用能够安全地存储并检索机密。可信任Java虚拟机环境包括可信任字典、可信任捆绑包、用于加密和解密字节代码的可选加密方法以及下层可信任Java虚拟机。加密的可信任字典保护数据而所述可信任捆绑包保护编程代码,允许应用存储机密数据和安全计数器。应用设计者可以将可信任捆绑包访问只限于那些所述应用设计者显式导出的接口。开放源代码可以可选地被加密。所述应用的所述开放源代码的编程代码所需的机密在可信任字典中被加密。

Description

防篡改可信任虚拟机
技术领域
本发明一般地涉及在虚拟计算机上运行的应用。更具体地说,本发明涉及在提供了用于使应用防篡改的方法的可信任环境中运行的应用。
背景技术
娱乐业正经历着数字革命。音乐、电视和电影正日益变得数字化,在质量和灵活性方面为用户提供了新的优点。同时,由于数字数据可以被完整并快速地复制,数字革命也包含着威胁。如果用户可以随意地复制娱乐内容并在因特网上提供该内容,那么娱乐内容的市场就会消失。
已经设计了内容保护方案来减少此威胁,例如数字权利管理(DRM)系统、用于DVD视频的内容扰乱系统(CSS)、用于DVD音频的预记录媒体的内容保护(CPPM)等等。这些系统都具有以下特征:实现这些系统的软件需要是“健壮的”,即,所述软件可以阻挡黑客从所述软件提取机密(密钥)或者修改所述软件的行为以获得未授权功能的攻击。阻挡此类攻击的技术被称为防篡改软件。
通常的理解是防篡改软件与“开放源代码”的概念相冲突,前提是黑客可以更容易地危害开放源代码程序的安全。但是,开放源代码内容保护方案提供了不容置疑的优点。开放标准可以防止市场分割并避免专有解决方案排除竞争。此外,开放源代码内容保护方案实际上可以帮助降低黑客攻击的级别。对DVD视频CSS方案的公知破解很大一部分是通过来自内部人员的泄漏来实现的。这些内部人员显然受到在开放源代码平台Linux上拥有DVD播放器的愿望的驱动。
同时,对于许多应用,Java
Figure A20048003438600041
语言已取代了计算机C语言。Java语言通过将源程序转换成被称为Java虚拟机(“JVM”)的假想计算机的指令(称为字节代码)来实现。
Java虚拟机并不是实际的硬件计算机,而是解释所述字节代码并在给定的物理计算机上实现它们的功能的程序。此方法给定了Java可移植性;所述语言可用于所有类型的计算机甚至可用于诸如蜂窝电话、立体声系统以及电视机机顶盒之类的嵌入式设备中。
许多公司已生产出其指令集与Java虚拟机相同的计算机。在这种情况下,所述Java虚拟机是实际的而并非虚拟的。但是,按照惯例(将在此采用的惯例),此类实际计算机仍被称为“Java虚拟机”。
内容保护的一种方法使用Java虚拟机来实现内容保护方案的健壮性要求。在此方法中,所有机密数据和算法都不在Java中实现;相反,它们被“内装”到Java虚拟机本身。此外,Java虚拟机提供了“沙箱”环境以便阻止未授权的行动。例如,当Java虚拟机正在处理受保护的内容时,Java的正常文件写入机制被禁用。有利地,无需验证Java代码自身的完整性。
此“沙箱”通过Java代码防止了任何未授权的行为。每个内容保护方案的重要逻辑都隐藏在Java虚拟机自身内的防篡改环境中。尽管此技术已被证明是有用的,但是仍希望提供其中机密数据和算法无需在Java虚拟机中被实现并且它们可以在Java中被实现的解决方案。此类解决方案具有其可以支持“开放源代码”概念的额外优点。
与机密算法相反,多数内容保护应用都涉及机密数据(密钥)。某些内容保护方案(如水印方案)还涉及机密算法。对于黑客来说,从字节代码导出原始Java程序要相对容易。传统的“字节代码困惑”程序实际上几乎不阻止此操作,而只是使变量、方法和类的名称变得混乱。需要一种包括用于字节代码的强加密保护(如果必要)的解决方案。
某些内容保护方案使用“安全计数器”。例如,DVD音频用户被允许只进行一定数量的复制。用户可以仅通过在其硬盘上保存或重新存储某些文件来重置这些计数器。用户还可以将其受保护的文件复制给某些朋友,并由此复制原始用户已购买的内容。需要一种解决内容保护的这些基本缺陷的解决方案。
Java语言提供了相对的“公共”和“私有”的概念。每个方法或子例程都被声明是公共的、私有的还是两者都不是。公共方法最初旨在用于Java应用的外部接口。私有方法旨在用于不能被外部地调用的Java应用内的所有函数。既不是公共也不是私有的方法旨在用在“软件包”(一组相关的Java类)内。
但是,大型的Java应用包括许多Java“软件包”,并且因此几乎每个函数都必须是公共的。黑客可以将这些公共方法用作“后门”,导致应用以未授权的方式运行。甚至在单个软件包内,黑客也可以通过只是将其自己的类添加到所述软件包中来简单地使软件包保护失效。应用设计者很难验证他或她并未无意中暴露某些黑客可能利用的内部但是“公共的”接口。需要一种防止暴露方法和函数的虚拟机语言,将安全问题从应用移至虚拟机语言。
最近,已提出了多种硬件建议来帮助软件存储机密并验证完整性。例如,可信任计算机平台联盟已定义了用于此类硬件的开放标准。已经开发了类似的专有技术。这些方法使用要么全有要么全无的方面。为了使应用受到信任,操作系统需要信任。为了使操作系统受到信任,操作内核需要信任。为了使操作内核受到信任,原始引导代码需要信任。即使对任何级别的无危险的更改都将破坏信任链。
一种解决方案在操作系统中定义了新的权限级别。在此权限级别中驻留了内核的子集、操作系统的子集和所有可信任的应用。但是,此专有方法在建立可信任应用方面给予了此技术的拥有者巨大的竞争优势,使得“开放源代码”的概念变得无效。需要一种允许开发“开放源代码”应用并且仍能够有效利用特殊安全硬件的解决方案。
许多Java设计者都表达了为特定用户或设备编写的应用不应被可移植到其他用户或设备的期望。Java设计者希望将应用出售给单个用户而不希望该用户能够将所述应用给予或出售给其他用户。需要一种防止在没有来自应用设计者或拥有者的许可的情况下共享应用的解决方案。
发明内容
本发明提供了一种用于防篡改可信任Java虚拟机的模型、计算机程序产品和关联方法(在此总称为“系统”或“本系统”)。所述可信任Java虚拟机提供了一种用于支持防篡改应用的方法。本系统提供了一种用于确保应用及其机密的完整性,使编写开放源代码的防篡改软件的过程变得容易的方法。
所述可信任Java虚拟机实现了防篡改。它验证所述应用的完整性、防止调试所述应用,并允许所述应用安全地存储和检索机密。所述可信任Java虚拟机并未开放源代码。但是,只需一个可信任Java虚拟机,该可信任Java虚拟机可以支持多种不同的开放源代码应用。“开放源代码”的价值在所述应用中得以实现。
本系统需要单独的可信任Java虚拟机,并且在所述可信任Java虚拟机中实现内容保护逻辑。传统的Java安全用于防止从因特网下载的Java小程序或应用损坏用户的计算机。相比之下,本系统防止用户损坏应用,即,保护应用免于修改或暴露机密。本系统提供了一种所述应用知道是可信任的并且所述应用可以在其中运行的可信任环境。
与机密算法相反,多数内容保护应用都涉及机密数据(密钥)。本系统提供了一种用于使应用创建并安全地存储这些机密的方法。某些内容保护方案(如水印方案)还涉及机密算法。本系统包括对字节代码的强加密保护(如果必要)。
本系统允许应用访问所述应用的机密(例如密钥)。但是,所述应用不能访问其他应用的机密,即使这两个应用正运行在同一机器上。
此外,本系统具有一种确保应用完好的机制。完好的、未经修改的应用可以访问其机密。如果本系统确定所述应用已被修改,则被修改的应用不再能够访问其机密。本系统并未定义所述应用使用的机密。所述应用设计者定义这些机密。
本系统还提供了一种用于通过加密编程代码或虚拟机指令来保护应用的编程代码的机制。本系统在与实际代码相同的文件中具有媒体密钥块。所述Java虚拟机具有一组可以被用来处理所述媒体密钥块以提取媒体密钥的设备密钥。所述媒体密钥被用来解密该文件中的所述编程代码。所述编程代码从未以可被黑客观察到的方式被暴露。所述编程代码只有在其被加载到存储器中或由所述Java虚拟机执行时才被暴露。
某些内容保护方案需要“安全计数器”。例如,用户被允许只进行一定数量的DVD音频的复制。用户可以仅通过在其硬盘上保存和重新存储某些文件来尝试重置他或她的计数器。用户还可以尝试将其受保护的文件复制给某些朋友,并由此复制原始用户已购买的内容。本系统提供了一种用于解决对内容权利的这些基本欺骗的方法。
本系统包括可信任字典、可信任捆绑包、可选的用于加密和解密字节代码的加密方法以及基础可信任Java虚拟机。所述可信任字典保护数据,而所述可信任捆绑包保护编程代码。
所述可信任字典被加密,使得应用可以存储机密数据并保护计数器。由应用使用所述可信任字典隐含地验证了所述应用正运行在可信任环境中。所述可信任捆绑包允许应用设计者将包括所述应用的所有Java软件包分组在一起,将访问只限于那些所述应用设计者显式导出的接口。
当所述应用需要时,所述可信任捆绑包可以可选地被加密。例如,本系统使用可信任字典来保护应用所使用的机密同时允许所述可信任捆绑包中的编程代码是开放源代码的。开放源代码的代码未被加密。但是,所述应用的开放源代码的编程代码所需的机密在所述可信任字典中被加密。
所述加密方法允许应用设计者加密那些要保持为机密的类文件(字节代码序列)。所述加密方法还提供了一种使本系统可以解密那些正在被执行的类文件的可更新的方法。所述可信任Java虚拟机内装到所述可信任字典和所述可信任捆绑包的实现中。换言之,对于给定的处理器,所述实现(或其重要部分)是以“固有”的代码而不是以虚拟机字节代码来实现。所述可信任Java虚拟机由标准软件防篡改技术来保护。
所述可信任字典和所述可信任捆绑包以如以下方式相关:当应用实例化可信任字典时,所述应用隐含地列出那些可以从所述可信任字典“获得”和“放入”值的可信任捆绑包。所述应用通过列出已被用来签署那些可信任捆绑包的公用密钥来列出那些可信任捆绑包。
可信任捆绑包可以是Java档案(JAR)文件,一种通过其包装用于应用的类文件的标准方法。Java语言允许通过签署Java档案清单来数字地签署Java档案。本系统确保只有来自完好的并正确地签署的Java档案文件的应用才能够成功地使用所述可信任字典。Java档案文件只能使用已被标记为供它们使用的可信任字典。
本系统提供了一种通过其应用可以获知其正在可信任环境中运行的机制。应用设计者在已知为可信任的环境(例如其软件制造构建机器)中实例化可信任字典。然后,应用设计者将此可信任字典与所述应用一起部署。所述应用只有当其在可信任环境中运行时才能成功地从所述可信任字典提取制造机密。
例如,DVD音频播放器应用可以在工厂被加载有具有一组DVD音频设备密钥的可信任字典。能够使用这些密钥成功地播放DVD音频的DVD播放器应用知道其正在可信任环境中运行。黑客可以尝试假装具有可信任字典的“特洛伊木马”环境。但是,从此类“可信任字典”获得的任何设备密钥都无法解密DVD音频。因此,如果所述应用在此虚假环境中运行,不存在对内容保护方案的暴露。应用设计者知道如果应用处于受到危害的环境中时,应用无法执行非法操作。
作为另一个实例,数字权利管理应用与服务器一起使用公钥协议来接收授权的内容。公钥协议是公知的,并且该协议本身并非机密。所述机密是在该协议中与公钥对应的私钥。只要私钥保持隐藏,所述协议就可以被置于公开的源代码中。如果客户机的私钥在部署客户机应用之前被放入可信任字典,则所述密钥只能在可信任环境中使用。如果客户机应用和服务器能够成功地协商公钥协议,则它们可以确信所述客户机应用正在可信任环境中运行。所述服务器可以安全地将授权的内容作为协议的一部分来传送。
在另一个实例中,应用设计者编写提供用于音频音乐的音频水印的程序。此音频水印是指示各种音频播放器以特定方式执行的特殊复制控制信号。所述音频播放器如指示的那样响应所述音频水印以进行版权保护,防止所述音频音乐的未授权使用。所述音频播放器用来检测和响应音频水印中的指令的编程代码需要防止黑客。本系统可以加密此编程代码并提供此编程代码可以在其中运行的安全和可信任的环境。
选择加密他们的某些或所有类文件的应用设计者具有用于验证所述应用是否在可信任环境中运行的其他方法。这些类文件无法成功地被加载,除非它们在可信任Java虚拟机中运行。在此情况下,如果所述应用没有加载到可信任Java虚拟机环境中,则所述应用无法运行。
本系统可以例如被用来确保记录诸如银行大厅连同时间和日期之类的场景的安全照相机的完整性。银行和安全公司依赖于画面上的时间和日期的完整性。本系统可以被用来提供用于安全照相机的可信任环境,其中外人很难更改时间和日期。
因此,定义了一种用于能够支持防篡改应用软件同时保持“开放源代码”的概念的安全或可信任Java虚拟机的模型、计算机程序产品和关联方法。
附图说明
现在将仅通过实例的方式参考附图来描述本发明的实施例,这些附图是:
图1是其中可以使用本发明的可信任Java虚拟机环境的示例性运行环境的示意图;
图2是图1的可信任Java虚拟机环境的高级体系结构的方块图;
图3是示出了创建在图1和2的可信任Java虚拟机环境中使用的应用的方法的过程流程图;
图4包括图4A和4B并代表示出了在图1和2的可信任Java虚拟机环境中运行示例性应用的方法的过程流程图。
具体实施方式
图1描绘了其中可以使用根据本发明的用于可信任Java虚拟机的系统和关联方法的示例性总体环境。可信任Java虚拟机10包括软件编程代码或通常嵌入或安装在服务器15上的计算机程序产品。可替代地,可信任Java虚拟机10可以被保存在诸如软盘、CD、硬盘驱动器之类的合适的存储介质上。
虽然根据Java编程语言描述了可信任Java虚拟机10,但是本系统可以使用任何适合类型的虚拟机或“实际”虚拟机来实现。使用Java编程语言来描述可信任Java虚拟机10只是示例性的,并且并非将本发明的应用限于其他的虚拟机。
用户(如远程因特网用户)由各种计算机(如计算机20、25、30)来表示,并且可以通过网络35访问服务器15。计算机20、25、30中的每一个计算机都包括允许所述用户安全地连接服务器15的软件。服务器15通过诸如电话、电缆或卫星链路之类的通信链路40与网络35相连。
计算机20、25、30分别通过通信链路45、50、55与网络35相连。虽然根据网络35描述了可信任Java虚拟机10,但是计算机20、25、30也可以本地而不是远程地访问可信任Java虚拟机10。计算机20、25、30可以通过使用应用来手动或自动地访问可信任Java虚拟机10。
图2示出了可信任Java虚拟机10的高级层次结构。可信任Java虚拟机或TJVM 10通常包括可信任Java虚拟机205、Java基类210和Java应用215。
可信任Java虚拟机205包括通常以计算机语言(如C)编写的例程,该例程被编译成用于所述可信任Java虚拟机在其上运行的计算机的机器指令。虽然根据C编程语言描述了可信任Java虚拟机205,但是本发明可以使用任何类型的编程语言来实现。使用C编程语言来描述可信任Java虚拟机205只是示例性的,并且并非将可信任Java虚拟机205的应用限于其他编程语言。
在标准的Java实现中,C代码实现需要与操作系统连接的字节代码解释器220和“固有”方法225。C代码在不同的平台上可能不同。在此实例中,由可信任Java虚拟机205来实现所述C代码。
以Java语言来编写Java基类210并实现以下基本的Java对象:字符串、对象、I/O等。它们已由Java编译器编译成字节代码。某些Java基类可能具有已经以“固有”代码(即,以它们在其上执行的处理器的固有指令集)实现的方法。
Java应用215在Java基类210以上运行。Java应用215包括一个或多个可信任捆绑包1,230至可信任捆绑包N,235,它们总称为可信任捆绑包240。此外,应用215包括其他无需被信任的Java代码,例如主应用245或初始小程序(applet init)250。Java应用215可选地包括一个或多个可信任字典,例如可信任字典1,255至可信任字典N,260,它们被总称为可信任字典265。
Java应用215可以包括多个可信任捆绑包240和可信任字典265。多个可信任捆绑包240能够彼此通信。可信任捆绑包240可以分别在可信任字典265中维护机密或共享可信任字典265中的机密。
不同的软件公司可能生产不同的Java应用215,266,这些应用通过它们各自的可信任字典265,267通信并传递机密。例如,软件公司生产用于将数字水印插入音频CD的Java应用215。所述数字水印软件包括可信任捆绑包240。CD播放器包括调用水印可信任捆绑包240来检测水印信号的Java应用266中的软件。可信任字典265,267提供了安全路径以便所述数字水印软件与CD播放器软件通信,安全地验证了它们是可靠版本而不是被破解版本的软件。
某些模块在图2中被示为包封在“完整性包封”内。完整性包封提供了验证这些模块未被修改的机制。可信任Java虚拟机205由完整性包封270保护。Java基类210由完整性包封275保护。可信任捆绑包1,230由完整性包封280保护。可信任捆绑包N,235由完整性包封285保护。
完整性包封270、275、280、285包括检查数字签名。此外,完整性包封270、275、280、285包括诸如数字印章之类的其他技术。有关数字印章技术的更多详细信息,可以参考例如专利No.5,978,482和6,038,316。数字印章类似于数字签名,但在检查软件模块的完整性方面具有一定的优势。此外,完整性包封270、275、280、285包括基于硬件的完整性检查,如那些在可信任计算平台联盟(TCPA)和Palladium芯片中找到的完整性检查。
如图2所示,可信任Java虚拟机205的固有方法225中的机密方法290可以被加密。此外,可信任字典265也可以被加密。另外,如可信任捆绑包1,230中的类295所示出的,可信任捆绑包240中的某些或全部类可以被加密。在最小程度上,机密方法290、可信任字典265和类295都被加密同时被例如存储在存储器中、盘上或外部存储器中。
加密可以一直持续,甚至是在机密方法290、可信任字典265和类295都已被加载到计算机存储器中之后。在此情况下,用于机密方法290、可信任字典265和类295的代码可以在执行之前立即“动态地(on the fly)”被解密。机密方法290、可信任字典265和类295可以在执行完成后被逻辑地加密。
可信任Java虚拟机10使用公知的或可用的软件防篡改技术。有关密码的详细信息,可以参考例如2000年7月3日申请的美国专利申请No.09/609,809(代理人案号ARC2000-0063,其在此引入作为参考)。在一个实施例中,使用诸如数据加密标准(DES)或高级加密标准(AES)之类的标准密码来加密可信任字典265。
如通常用在软件防篡改技术中的那样,用来加密机密方法290的密钥可以是高度扰乱的全局机密。公知的或可用的广播加密技术可以被用来管理用于加密类295的密钥。有关广播加密技术的详细信息,可以参考例如美国专利No.6,118,813和美国专利申请No.2002/01147906A1。可信任Java虚拟机10可以使用任何合适的广播加密方案来加密类295。
为了使用广播加密,可信任Java虚拟机205的设计者将媒体密钥块及其关联的媒体密钥传送给每个应用设计者以便加密Java类(例如类295)。应用设计者使用利用媒体密钥的工具来加密指定的类295。此工具将媒体密钥块添加到Java档案文件。
一组设备密钥292被建立在可信任Java虚拟机205中。可信任Java虚拟机205的每个版本都具有一组不同的设备密钥。为了解密给定的加密的类295,可信任Java虚拟机205使用其设备密钥来处理所述Java档案文件中的媒体密钥块并提取所述媒体密钥。
如果黑客破坏了特定的可信任Java虚拟机205并且其设备密钥集也被泄漏,则可以部署具有一组新的设备密钥的新的可信任Java虚拟机205。这组新的设备密钥可以处理所有现有应用中的所有媒体密钥块。
此外,可以将排除了受到损害的设备密钥的新的媒体密钥块给予应用设计者,同时允许未受损害的密钥执行其功能。应用设计者可以在其方便时将他的应用更新到所述新的媒体密钥块。媒体密钥块的更新不必与新的可信任Java虚拟机205的部署严格地同步。
可信任Java虚拟机205在其上运行的平台可以包括诸如例如TCPA芯片或Palladium芯片之类的安全芯片。如果这样的话,这些芯片可以被用来存储所述设备密钥。
在一个实施例中,可信任字典265包括标准Java基类字典的子类。任何允许存储和检索数据值的合适的类都可以被用作可信任字典265。可信任字典265的方法(例如,“获得”或“放入”)被实现为可信任Java虚拟机205中的固有方法225。
如果可信任字典265不允许复制,则其被定义为“本地化的”。如果Java应用215指定可信任字典265是本地化的,则Java应用215无法读取在另一计算机系统上的可信任字典265。
包括“密钥数据库”和密钥计算中的间接级别的公知的或可用的逻辑技术可以被用来创建可信任字典265。有关可信任字典265的基本逻辑的详细信息,可以参考例如2001年1月5日申请的美国专利申请No.09/754,396(代理人案号AM9-99-0145,其在此引入作为参考)。
Java字典通常具有“密钥”和“值”。但是,为了避免将字典密钥与加密密钥相混淆,对于前者的概念,将使用术语“关键字”而不是“密钥”。因此,与关键字关联地存储所述字典值,并且以后通过使用关键字来检索所述字典值。在可信任字典265中,使用称为数据库主密钥的机密密钥来加密所述关键字和值。所述数据库主密钥是以下类型的值的机密函数的结果:通用值、平台特定的值以及读-写值。平台特定的值可以例如是用户计算机上的硬盘的序列号。
示例性读-写值可以是存储在计算机的基本输入/输出系统(BIOS)读/写区域中的值。出于完整性的目的,所述读/写值不能轻易地被最终用户保存和恢复。在具有TCPA或Palladium芯片的平台中,平台值和读/写能力被建立在芯片中。
作为一个实例,“密钥数据库”可以用于可信任字典265。如果所述密钥数据库从一台PC移至另一台PC,则程序将不再计算用于所述数据库的正确主密钥并且所述数据库是无用的。所述密钥数据库可以包括计数器。用户可以尝试保存和恢复密钥数据库以重置计数器。所述读/写值在保存和恢复之间改变,改变了所述主密钥。因此,所述密钥数据库和可信任字典265不再有用。Java应用215现在知道所述用户尝试绕过使用规则并可以正确地做出响应。
某些Java应用215无需平台绑定或保存/恢复保护。使平台绑定或保存/恢复保护成为字典的配置参数以及根据需要忽略将平台特定的值或读/写值包括在机密主密钥函数中相对容易。
可信任字典265包括创建可信任字典265时提供的公钥的列表。这些公钥限制了可信任字典265对可信任捆绑包240的访问,所述可信任捆绑包240的Java档案文件由与所述公钥之一关联的私钥来签署。
在一个实施例中,可信任字典265实现在访问可信任字典265之前代表可信任捆绑包240检查公钥的列表。另一个实施例利用内置的“机密函数”主密钥机制,将所述公钥用作输入到所述机密函数的通用值之一。然后,所述捆绑包可以如所允许的那样成功解密可信任字典265。
如果多于一个公钥被与可信任字典265关联,则间接级别可以被添加到密钥计算。各个主密钥中的每个主密钥(对于每个公钥,一个主密钥)都加密共用的中间密钥。所述中间密钥加密可信任字典265中的值。
此外,所述中间密钥的不同加密版本被存储在可信任字典265中。当可信任捆绑包240试图访问可信任字典265时,可信任Java虚拟机205计算主密钥并解密所述中间密钥的这些加密版本中的每个版本。如果所述捆绑包被允许访问此可信任字典265,则这些解密中的一个解密是真的中间密钥。此真的中间密钥允许访问。
可信任字典中的关键字的值几乎可以是任何Java对象。在Java语言中,例如,多数Java对象可以使用writeObject()方法被变成字节序列。此类对象被称为“可串行化的”。该字节序列可以被看作字典关键字或值。因此,任何可串行化的Java对象都可以被安全地存储在可信任字典265中。
在一个实施例中,可信任捆绑包240是开放服务网关组织(OSGi)的捆绑包类的子类。任何能够限制对应用的多数公用方法的访问的概念都可以是可信任捆绑包240。
Java的一个功能被用来对捆绑包之外的任何人“隐藏”整个类(不只是其私有方法)。例如,两个类(如类X和类Y)由不同的类加载器(类加载器A和类加载器B)来加载。类的名称和实际的类加载器两者对于将类标识到Java虚拟机来说都很重要。
除非类加载器A和类加载器B采取特殊的措施来相互通信,否则即使具有相同名称的类也被复制并由每个类加载器单独引入。因此,具有相同名称的两个同样的类被可信任Java虚拟机205看作不同的类。例如,如果类X生成窗口小部件对象并将其传递给类Y的方法,则由于类X生成了A窗口小部件而类Y期望B窗口小部件,将出现ClassCastException错误,尽管实现窗口小部件的类文件是相同的。
在一个实施例中,此隐藏整个类的Java功能在OSGi捆绑包概念中被实现。每个捆绑包都是由单独的类加载器慎重地加载的单独的Java档案文件。此类加载器与系统中的其他类加载器通信以获得Java基类210并导出软件包(类的组),该软件包被专门设计为“导出”Java档案文件的清单中的软件包。只有导出的类才能成功地被其他捆绑包或所述捆绑包之外的代码所引用。
为了使OSGi捆绑包成为可信任捆绑包240,可信任Java虚拟机10要求OSGi捆绑包的Java档案清单被签署。因此,只有由原始签署者指定的软件包才可以被导出。
在一个实施例中,可信任Java虚拟机10使getClassLoader()成为私有方法;这防止了黑客利用getClassLoader()来绕过应用设计者保护例如媒体的专有权利的目的。由于OSGi捆绑包的以下特征,使方法getClassLoader()是私有的。任何Java对象的类都可以通过在该对象上使用“getClass()”方法来获得。结果是具有称为getClassLoader()的公共方法的类对象。GetClassLoader()返回加载所述类的类加载器的ClassLoader对象。根据所述ClassLoader对象,方法loadClass()可以被用来查找由所述类加载器加载的任何其他类的类对象。根据所述类对象,可以实例化该类的新的对象。这挫败了只允许在可信任捆绑包240之外实例化导出的类的企图。
在另一个实施例中,“getClassLoader()”的行为被修改以便其可以识别可信任捆绑包240。因此,getClassLoader()只向在同一可信任捆绑包240内的方法返回有用的类加载器。另一个实施例利用Java安全管理器来限制执行“getClassLoader()”的对象。另一个实施例修改捆绑包类加载器以便其仅在可信任捆绑包240的外部调用时才显露导出的类。
由于Java基类210对所有可信任捆绑包240都是共用的,所以Java基类210被封装在完整性包封中。否则,理论上可以使特洛伊木马伪装成Java基类210。例如,如果可信任捆绑包240要将密钥转换为字符串,则伪造的字符串类可以将结果写到硬盘上。虽然此攻击有些牵强,但是通过检查Java基类210来消除此攻击是很简单的。
可信任Java虚拟机10利用“安全验证通道”。术语“安全验证通道”是防篡改软件中的标准术语。它指在不允许中间人取走被传递的数据的情况下需要相互通信的两个独立软件模块之间的连接。
通过使可信任捆绑包240共享可信任字典265,可以方便地在可信任Java虚拟机10中建立所述安全验证通道。换言之,调用方可信任捆绑包240调用被调用方可信任捆绑包240中的导出的类,传递使用来自调用方和被调用方的可信任捆绑包240两者的公用密钥来实例化的可信任字典265。通过预先安排,用作到被调用方可信任捆绑包240的参数的特定命名值被存储在可信任字典265中。同样,被调用方可信任捆绑包240通过将值以预先安排的名称存储在可信任字典265中来返回所述值。可信任Java虚拟机10以这种方式返回诸如密钥之类的机密值以防止被中间人程序观察到或修改。
此安全验证通道方法并未向可信任捆绑包240证明它们正运行在可信任环境中。因此,可信任捆绑包240在信任此机制之前利用上述方法来验证它们处于可信任环境中。此外,没有实例化可信任字典265的一方验证其公钥是所期望的。在一个实施例中,可信任字典265的类实现getPublicKeys()方法来验证公钥。可信任Java虚拟机10可以使用多种方法中的任意方法来验证所述公钥。
在一个实施例中,可信任Java虚拟机环境在不影响Java应用215的情况下使用诸如例如TCPA和Palladium芯片之类的安全芯片。可信任Java虚拟机205通常作为开始于基本输入/输出系统(BIOS)加载器的信任链的一部分被加载。如果信任链丢失,则可信任Java虚拟机205不再相信操作系统是安全的。
但是,这是软件防篡改的正常状态并且存在公知的技术进行补偿。例如,操作系统的关键部分可以具有软件完整性包封。可替代地,可以部署与那些用在病毒检测中的技术类似的技术来检测用户已安装在其操作系统内核中的欺骗程序。
在操作系统不可信的情况下,可信任Java虚拟机205使用标准的软件防篡改技术来检测操作系统中的欺骗程序。可信任Java虚拟机205使用安全芯片来存储设备密钥和用于计算可信任字典265的值。
在正常操作中,安全芯片中的值由Java应用215的校验和来保护。但是,这些校验和并非机密,它们由信任链中的紧邻下层来执行。一旦信任链被破坏,这些值就用作密钥;所述密钥不再需要是检验和。在一个实施例中,解锁可信任Java虚拟机205的存储值的值是完整性计算(例如,数字印章计算)的结果。
图3的过程流程图示出了用于创建使用可信任Java虚拟机10的可信任Java应用215的方法300。在步骤305,应用设计者确定Java应用215的哪些方面需要保护。Java应用215可以包括机密代码、机密数据或两者的组合。例如,DVD视频内容保护方案(CSS)具有机密密钥。CSS还需要许可证来保护加密算法。另一方面,DVD音频保护方案(CPPM)只包括机密密钥;所述算法被公开地描述。
如果Java应用215包括机密数据,则Java应用215被设计为将所述机密数据放置在Java字典中。所述Java字典在部署Java应用215时被实例化为可信任字典265。
在步骤310设计Java应用215的捆绑包。在一个实施例中,这些捆绑包被设计为公开服务网关组织捆绑包。应用设计者签署对应于所述捆绑包的Java档案文件;这确保了所述捆绑包被看作可信任捆绑包240。所述应用设计者在实例化可信任字典265时提供了公钥列表。只有由关联的私钥签署的捆绑包才被允许访问可信任字典265。
在步骤305,所述应用设计者可以确定Java应用215不包括机密。例如,MPEG呈现程序无需机密信息来执行其功能。例如,所述应用设计者可以创建被其他内容保护方案作为子例程的应用。在此情况下,所述内容保护方案相信所述子例程只是呈现数据并且没有将数据保存在文件中。在此情况下,所述应用设计者遵循可选步骤315,“使用其他捆绑包设计接口”。
在步骤315,可以被从任何应用或服务(可信任的或不可信任的)调用的公用接口可以作为具有任何适当接口的正常OSGi服务而可用。如果所述服务需要具有可信任捆绑包240的接口,则到可信任捆绑包240的接口需要可信任字典265。
例如,到可信任捆绑包240的接口可以位于调用方和“被调用方”之间。如果所述服务是具有可信任捆绑包240的接口中的调用方,则所述服务使用可信任字典265。如果所述服务不是调用方,则应用设计者实例化具有所述服务的公钥和所述被调用方的公钥的可信任字典265。这些公钥被保存在私有可信任字典265中以确保防篡改。
如果所述服务是被调用方,则调用方已实例化了可信任字典265。当可信任字典265被传递给所述服务时,所述服务验证可信任字典265是否是使用预期的公钥建立的。没有机密并且为任何调用方执行其功能的呈现应用无需可信任字典265的确认。
机密参数和返回值通过可信任字典265被传递以防止中间人攻击。可信任字典265可以包括任何可串行化的Java对象。“init”方法可以通过可信任字典265将对象返回到服务调用方。正常参数和返回值然后可以被与该初始对象中的方法一起使用。此初始对象可以是导出类的一个实例。如果应用设计者正在使用此优化,则导出软件包中可以只有接口和抽象类。
在步骤320,应用设计者可选地建立可信任字典工具。应用设计者将应用所使用的任何机密数据提供到已知的可信任环境(如在其中创建Java应用215的环境)中的可信任字典265中。
允许最终用户在安装期间在用户的机器上实例化可信任字典265并不能保证所需的可信任环境。所述应用设计者建立工具来实例化可信任字典265、向该工具提供必需的机密,以及使用标准的ObjectOutputStream方法将该工具串行化成文件。
例如,被串行化的可信任字典265可以作为Java应用215的Java档案文件的一部分来部署。串行化的可信任字典265仅可由可信任Java虚拟机205来读或写。
应用设计者在步骤325可选地设计用于Java应用215的注册过程。如果Java应用215的给定实例要保持绑定到单个平台,则调用捆绑包启动器类的start()方法将读取私有可信任字典265、在私有可信任字典265上执行setLocal(),以及将所述私有可信任字典265写回到文件系统中。
为了更多的保护,应用设计者可以将步骤325与到外部注册服务的连接相合并。与所述应用一起部署的私有可信任字典265可以具有用于初始连接的ID和机密。在可信任字典265已被本地化之后,后续机密可以作为注册的一部分被传送。
所述应用设计者在步骤330可选地设计安全计数。Java应用215可以在操作期间需要安全计数。当在硬盘上保存和恢复文件时无法轻易被用户重置的安全计数被存储在可信任字典265中。捆绑包启动器类的start()方法的调用将读取私有可信任字典265并在该私有可信任字典265上执行preventNormalRestore()。然后,所述捆绑包启动器类使用ObjectOutputStream的writeObject()方法将所述私有可信任字典265写回文件系统中。可信任字典265现在处于不可逆的状态,意味着最终用户无法通过简单地使用旧版本替换其文件来轻易地将其更改为先前状态。
每次在可信任字典265中递增安全计数时,所述安全计数被写回文件系统中。然后,Java应用215在可信任字典265上执行commit(),防止由于不合适的系统崩溃而导致无意中破坏可信任字典265。没有commit(),用户可以将可信任字典265恢复回先前的commit()点。在任何字典上的任何提交(commit)都将提交所有字典。因此,可以使用单个调用来提交所有字典,同时按顺序更新多个字典。但是,可信任Java虚拟机205能够恢复可信任字典265,即使它已被标记为不可逆。
所述应用设计者在步骤335调试Java应用215。可信任字典265的调试版本可以在任何Java虚拟机上运行。根据系统属性trustedDictionary.keyVerify是“真”还是“假”,所述调试类可以或可以不实施适当的已签署的Java档案文件。可信任字典265的调试版本实施可信任字典265的“可串行化”行为:即,可信任字典265中的所有对象都可串行化并且“get”方法返回原始对象的副本而不是原始对象本身。
可信任字典265的调试版本在可信任Java虚拟机205中不可读。可信任Java虚拟机205不支持任何种类的调试。
所述应用设计者在步骤340完成Java应用215的建立过程。可选地,如果该设计者加密一个或多个类,则可以获得媒体密钥块。此媒体密钥块专用于所述Java档案文件的公钥。
Java档案签署器(jarsigner)被用来签署Java档案文件。在Java档案文件被签署之后,不会再向所述Java档案文件添加类。但是,数据或其他资源可以在Java档案文件被签署之后被添加到所述Java档案文件。可信任字典265是自验证的;因此,通常不需要在Java档案文件中签署可信任字典265。
图4(图4A、4B)的过程流程图的方法400示出了可信任Java虚拟机10中的DVD播放器应用与DVD盘之间的交互。用户具有DVD驱动器并希望使用开放源代码DVD播放器软件来操作DVD驱动器。DVD驱动器是操作DVD盘的机械装置。所述用户在步骤405下载可信任Java虚拟机205并将其安装在他的DVD设备上。所述DVD设备包括DVD驱动器和充分的计算能力以操作所述可信任Java虚拟机205和所述DVD驱动器。
在步骤410,用户下载并安装DVD播放器软件。所述DVD播放器软件包括一个或多个可信任捆绑包240中的开放源代码和一个或多个可信任字典265中的机密(如密钥)和ID。可信任Java虚拟机205检查所述DVD播放器软件的可信任捆绑包240的数字签名以确保可信任捆绑包240自其被创建以来尚未被修改(步骤415)。如果所述数字签名不是完好的(决策步骤420),则可信任Java虚拟机205在步骤425不允许对可信任字典265的访问。
所述DVD播放器软件在步骤430访问DVD驱动器中的DVD盘。所述DVD盘要求特定的设备密钥来授权盘播放;这些密钥被存储在可信任字典265中。对可信任字典265的访问需要由正确密钥所签署的完好签名。可信任Java虚拟机205在步骤435验证所述DVD播放器软件具有适当的密钥来访问可信任字典265。如果所述DVD播放器软件没有用于访问的适当密钥(决策步骤440),则可信任Java虚拟机205不允许对可信任字典265的访问(步骤425)。
如果所述DVD播放器在决策步骤440具有用于访问的适当密钥,则所述DVD播放器软件被验证为完好无损并且真实。所述DVD播放器软件现在可以访问可信任字典265。可信任Java虚拟机205在步骤445解密可信任字典265。所述DVD播放器软件在步骤450从可信任字典265获得一个或多个密钥(例如,设备密钥)并根据需要在步骤455将密钥提供给所述DVD驱动器。然后,所述DVD驱动器在步骤460播放所述DVD盘。所述DVD播放器软件、DVD盘和DVD设备可以都由不同的生产商来制造。但是,它们都协同工作以确保可信任Java虚拟机10中的内容保护。
在以未授权的方式使用Java应用215的尝试中,Java应用215可以被加载到没有提供可信任环境的常规Java虚拟机中。在正常操作中,Java应用215尝试访问可信任字典265,请求用于执行诸如播放DVD盘之类的任务的密钥。但是,所述常规的Java虚拟机无法解密可信任字典265。因此,Java应用215无法获得继续操作所需的密钥。尽管Java应用215是在常规Java虚拟机中运行的开放源代码软件,但是没有被Java应用215的设计者所允许的操作或信息在没有正确密钥的情况下无法出现。
应当理解,已经描述的本发明的特定实施例只是本发明的原理的特定应用的示例。在不偏离本发明的范围的情况下,可以对防篡改可信任Java虚拟机和在此描述的使用该防篡改可信任Java虚拟机的方法做出大量修改。

Claims (21)

1.一种用于在可信任环境中运行防篡改应用的方法,所述方法包括:定义包含用于保护数据的可信任字典的可信任虚拟机环境;验证所述应用的完整性;其中,如果所述应用被篡改,则所述可信任虚拟机环境阻止所述应用访问所述可信任字典中的机密,从而禁用所述应用的正常操作。
2.根据权利要求1的方法,其中如果所述应用的完整性被确认,则所述可信任虚拟机环境允许所述应用访问所述可信任字典中的所述机密,从而启用所述应用的正常操作。
3.根据权利要求2的方法,其中定义所述可信任虚拟机环境包括定义用于保护所述应用的编程代码的可信任捆绑包。
4.根据权利要求3的方法,其中保护所述编程代码包括加密所述编程代码。
5.根据权利要求4的方法,其中所述可信任虚拟机环境使用来自与所述应用关联的媒体密钥块的解密密钥来解密所述加密的编程代码。
6.根据权利要求1的方法,其中定义所述可信任虚拟机环境包括使用安全芯片。
7.根据权利要求3的方法,其中定义所述可信任捆绑包包括限制对所述可信任捆绑包的指令代码的访问。
8.根据权利要求1的方法,还包括加密所述可信任字典。
9.根据权利要求1的方法,其中定义所述可信任虚拟机环境包括定义至少两个可信任捆绑包;并且其中所述可信任字典在所述至少两个可信任捆绑包中的至少某些捆绑包之间被共享以维持所述至少两个可信任捆绑包之间的通信完整性。
10.根据权利要求1的方法,其中所述应用包括播放防复制媒体的播放器。
11.根据权利要求10的方法,其中所述可信任字典包含一个或多个解密密钥以解密所述防复制媒体。
12.一种用于在可信任虚拟机环境中生成防篡改应用的方法,所述方法包括:判定所述应用的任何方面是否需要防篡改;如果所述应用的任何方面需要防篡改,则定义一个或多个可信任捆绑包以限制对一组预定应用功能的访问;在非可信虚拟机环境中运行所述一个或多个可信任捆绑包以调试所述应用;以及将所述应用部署在所述可信任虚拟机环境中。
13.根据权利要求12的方法,其中所述应用的所述方面包括以下各项中的任意一个或多个:所述应用的完整性、所述应用的机密密钥、机密数据以及机密代码。
14.根据权利要求12的方法,其中判定所述应用的任何方面是否需要防篡改包括判定所述应用是否需要访问在可信任虚拟机环境中运行的另一个应用内的可信任捆绑包。
15.根据权利要求14的方法,还包括定义将在来自所述应用和另一个应用的所述可信任捆绑包之间被共享的可信任字典。
16.根据权利要求13的方法,其中如果所述方面是机密密钥或机密数据中的任何一个,则建立工具以生成至少一个具有所述机密密钥或所述机密数据的可信任字典。
17.根据权利要求12的方法,其中所述应用的所述方面包括阻止所述应用被复制。
18.根据权利要求17的方法,还包括设计注册过程以判定所述应用是否已被复制。
19.根据权利要求12的方法,其中所述应用的所述方面包括阻止用户重置所述应用的活动的计数。
20.根据权利要求19的方法,还包括设计可信任字典以包含所述活动计数。
21.一种具有指令代码的计算机程序产品,当所述指令代码被执行时,所述指令代码用于执行以上任一权利要求的方法步骤。
CNA2004800343862A 2003-11-26 2004-11-09 防篡改可信任虚拟机 Pending CN101305333A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/723,725 US7516331B2 (en) 2003-11-26 2003-11-26 Tamper-resistant trusted java virtual machine and method of using the same
US10/723,725 2003-11-26

Publications (1)

Publication Number Publication Date
CN101305333A true CN101305333A (zh) 2008-11-12

Family

ID=34592355

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004800343862A Pending CN101305333A (zh) 2003-11-26 2004-11-09 防篡改可信任虚拟机

Country Status (8)

Country Link
US (2) US7516331B2 (zh)
EP (1) EP1687688A2 (zh)
JP (1) JP4702957B2 (zh)
KR (1) KR100946042B1 (zh)
CN (1) CN101305333A (zh)
CA (1) CA2543572C (zh)
IL (1) IL175595A0 (zh)
WO (1) WO2005052841A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法
CN101452397B (zh) * 2008-11-27 2012-08-22 上海交通大学 虚拟化环境中的强制访问控制方法及装置
CN102667791A (zh) * 2009-11-20 2012-09-12 西门子公司 用于根据提供的权限信息访问控制数据的方法和装置
CN102984229A (zh) * 2012-11-16 2013-03-20 北京奇虎科技有限公司 用于配置信任机的方法和系统
CN102999357A (zh) * 2012-11-16 2013-03-27 北京奇虎科技有限公司 一种信任机的配置方法和系统
CN105612527A (zh) * 2013-08-22 2016-05-25 Inka安特沃客有限公司 为基于通用中间语言的程序提供安全性的方法

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2270622B1 (en) * 2003-06-05 2016-08-24 Intertrust Technologies Corporation Interoperable systems and methods for peer-to-peer service orchestration
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7788496B2 (en) 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
US7516331B2 (en) 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
FI120638B (fi) * 2003-12-17 2009-12-31 Nokia Corp Java-sovellusten käyttämän datan suojausjärjestelmä
US7657866B2 (en) * 2004-04-28 2010-02-02 Openlogic, Inc. Providing documentation for assembling, installing, and supporting of software stacks
US20060048223A1 (en) * 2004-08-31 2006-03-02 Lee Michael C Method and system for providing tamper-resistant software
TWI277870B (en) * 2004-11-22 2007-04-01 Toshiba Corp Copyright management method, information recording/reproducing method and device, and information recording medium and method of manufacturing the medium
JP4688591B2 (ja) * 2005-07-08 2011-05-25 日本電信電話株式会社 オブジェクト制御装置とその制御方法
US8020156B2 (en) * 2005-09-12 2011-09-13 Oracle International Corporation Bulk loading system and method
US7784043B2 (en) * 2005-09-12 2010-08-24 Oracle International Corporation Method and system for automated code-source indexing in Java Virtual Machine environment
US7644403B2 (en) * 2005-09-12 2010-01-05 Oracle International Corporation Method and system for automated root-cause analysis for class loading failures in java
US7814472B2 (en) * 2005-09-12 2010-10-12 Oracle International Corporation System and method for shared code-sourcing in a Java Virtual Machine environment
US7954096B2 (en) * 2005-09-12 2011-05-31 Oracle International Corporation Shared loader system and method
US9626667B2 (en) * 2005-10-18 2017-04-18 Intertrust Technologies Corporation Digital rights management engine systems and methods
US20070204078A1 (en) * 2006-02-09 2007-08-30 Intertrust Technologies Corporation Digital rights management engine systems and methods
CA2626244A1 (en) * 2005-10-18 2007-04-26 Intertrust Technologies Corporation Methods for evaluating licenses containing control programs by a drm engine
GB0603781D0 (en) * 2006-02-24 2006-04-05 Nokia Corp Application verification
US8886929B2 (en) * 2006-03-29 2014-11-11 Intel Corporation Generating a chain of trust for a virtual endpoint
WO2008018055A2 (en) * 2006-08-09 2008-02-14 Neocleus Ltd Extranet security
US8584109B2 (en) 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US7613915B2 (en) * 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
JP2008177683A (ja) * 2007-01-16 2008-07-31 Kyocera Mita Corp データ提供システム、データ受領システム、データ提供方法、データ提供プログラム及びデータ受領プログラム
TWI328747B (en) * 2007-03-16 2010-08-11 Ind Tech Res Inst System and method for sharing e-service resource of digital home
EP2130322B1 (en) * 2007-03-21 2014-06-25 Intel Corporation Protection against impersonation attacks
WO2008114256A2 (en) * 2007-03-22 2008-09-25 Neocleus Ltd. Trusted local single sign-on
US8108856B2 (en) 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
US9703576B2 (en) * 2007-04-05 2017-07-11 International Business Machines Corporation Aspect scoping in a modularity runtime
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US7886162B2 (en) * 2007-05-29 2011-02-08 International Business Machines Corporation Cryptographic secure program overlays
DE102007045743A1 (de) * 2007-09-25 2009-04-02 Siemens Ag Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
EP2240857A4 (en) * 2007-12-21 2013-12-25 Univ Virginia Patent Found SYSTEM, METHOD AND COMPUTER PROGRAM FOR PROTECTING SOFTWARE THROUGH ANTI-FALSIFICATION AND OBSCURING TRANSFORMATIONS
KR100939210B1 (ko) * 2007-12-27 2010-01-28 주식회사 안철수연구소 가상 환경에서의 디버깅 방지 장치 및 방법
US8474037B2 (en) * 2008-01-07 2013-06-25 Intel Corporation Stateless attestation system
US9262594B2 (en) 2008-01-18 2016-02-16 Microsoft Technology Licensing, Llc Tamper evidence per device protected identity
US20090281949A1 (en) * 2008-05-12 2009-11-12 Appsware Wireless, Llc Method and system for securing a payment transaction
EP2286333A4 (en) * 2008-06-05 2012-08-08 Neocleus Israel Ltd SAFE MULTIPURPOSE COMPUTER CLIENT
US8375377B2 (en) * 2009-03-06 2013-02-12 International Business Machines Corporation Controlling java virtual machine component behavior on a per-classloader basis
WO2010114799A1 (en) * 2009-03-30 2010-10-07 Appsware Wireless, Llc Method and system for securing a payment transaction with trusted code base
US20100250441A1 (en) * 2009-03-30 2010-09-30 Appsware Wireless, Llc Method and system for securing a payment transaction with trusted code base on a removable system module
US20100250442A1 (en) * 2009-03-30 2010-09-30 Appsware Wireless, Llc Method and system for securing a payment transaction with a trusted code base
CN101567893A (zh) * 2009-05-26 2009-10-28 中兴通讯股份有限公司 一种实现在web应用中文件上传的方法及系统
US9298894B2 (en) * 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8812959B2 (en) * 2009-06-30 2014-08-19 International Business Machines Corporation Method and system for delivering digital content
EP3923165A1 (en) 2009-11-13 2021-12-15 Irdeto B.V. System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
US8495154B2 (en) * 2010-01-25 2013-07-23 International Business Machines Corporation Content usage tracking in superdistribution
CN102200925B (zh) * 2010-03-22 2015-04-29 联想(北京)有限公司 应用虚拟域数据访问的方法、虚拟机管理器及计算机
WO2011119137A1 (en) 2010-03-22 2011-09-29 Lrdc Systems, Llc A method of identifying and protecting the integrity of a set of source data
US8498982B1 (en) 2010-07-07 2013-07-30 Openlogic, Inc. Noise reduction for content matching analysis results for protectable content
JP5318830B2 (ja) * 2010-08-25 2013-10-16 株式会社日立ソリューションズ WebAPIサーバプログラム、WebAPI公開方法
US9087196B2 (en) * 2010-12-24 2015-07-21 Intel Corporation Secure application attestation using dynamic measurement kernels
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US8732811B2 (en) 2011-03-28 2014-05-20 Canon Kabushiki Kaisha Systems and methods for implementing security services
US8631480B2 (en) 2011-03-28 2014-01-14 Canon Kabushiki Kaisha Systems and methods for implementing security services
CN103827880B (zh) * 2011-03-31 2017-06-16 爱迪德技术有限公司 保护非本机代码安全的方法
WO2012142178A2 (en) 2011-04-11 2012-10-18 Intertrust Technologies Corporation Information security systems and methods
US8850593B2 (en) 2011-05-12 2014-09-30 Hewlett-Packard Development Company, L.P. Data management using a virtual machine-data image
EP2795829B1 (en) 2011-11-16 2020-05-20 V-Key Inc Cryptographic system and methodology for securing software cryptography
CN102411690B (zh) * 2011-12-31 2014-07-23 中国信息安全测评中心 一种Android平台下应用软件的安全漏洞挖掘方法和装置
US8638935B2 (en) 2012-01-12 2014-01-28 Apple Inc. System and method for key space division and sub-key derivation for mixed media digital rights management content
US9992024B2 (en) * 2012-01-25 2018-06-05 Fujitsu Limited Establishing a chain of trust within a virtual machine
US9292673B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Virtual key management and isolation of data deployments in multi-tenant environments
US9740854B2 (en) 2013-10-25 2017-08-22 Red Hat, Inc. System and method for code protection
WO2015149214A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
CN105022936A (zh) * 2014-04-30 2015-11-04 北京畅游天下网络技术有限公司 一种类class文件加密解密方法和装置
US9680824B1 (en) * 2014-05-07 2017-06-13 Skyport Systems, Inc. Method and system for authentication by intermediaries
CN105446709B (zh) * 2014-07-29 2019-06-21 阿里巴巴集团控股有限公司 一种Java应用处理方法及装置
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
JP6788160B2 (ja) * 2014-12-16 2020-11-25 ピー、エイチ、シー、リミテッド、ライアビリティー、カンパニーPhc Llc コンピュータ命令セット、メモリレジスタ、およびポインタをランダム化するための方法および装置
WO2016112338A1 (en) * 2015-01-08 2016-07-14 Intertrust Technologies Corporation Cryptographic systems and methods
US10931455B2 (en) * 2015-09-28 2021-02-23 EyeVerify Inc. Secure image pipeline
US10601593B2 (en) 2016-09-23 2020-03-24 Microsoft Technology Licensing, Llc Type-based database confidentiality using trusted computing
US10379894B1 (en) * 2016-09-27 2019-08-13 Amazon Technologies, Inc. Lineage-based trust for virtual machine images
CN108932429B (zh) * 2017-05-27 2023-02-03 腾讯科技(深圳)有限公司 应用程序的分析方法、终端及存储介质
US10984139B2 (en) 2018-04-10 2021-04-20 Visa International Service Association Tamper-resistant data encoding for mobile devices
CN109325343B (zh) * 2018-09-17 2021-08-10 北京深思数盾科技股份有限公司 Java程序执行方法及装置
CN112868202A (zh) 2018-10-02 2021-05-28 维萨国际服务协会 强空间证明中有空间限制的连续不可延展代码
US11194695B2 (en) * 2020-01-07 2021-12-07 Supercell Oy Method for blocking external debugger application from analysing code of software program
US11550883B2 (en) 2020-09-08 2023-01-10 Assured Information Security, Inc. Code protection
US11520895B2 (en) * 2020-12-07 2022-12-06 Samsung Electronics Co., Ltd. System and method for dynamic verification of trusted applications
US20230094125A1 (en) * 2021-09-24 2023-03-30 Nvidia Corporation Implementing trusted executing environments across multiple processor devices
CN114327776A (zh) * 2021-12-30 2022-04-12 支付宝(杭州)信息技术有限公司 用于智能合约的调试方法、调试设备和调试系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0686916A1 (en) * 1994-06-07 1995-12-13 Digital Equipment Corporation Method and apparatus for testing software
DE69638018D1 (de) 1995-02-13 2009-10-15 Intertrust Tech Corp Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten
US5757915A (en) 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5692047A (en) 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US6067575A (en) 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
US6961855B1 (en) * 1999-12-16 2005-11-01 International Business Machines Corporation Notification of modifications to a trusted computing base
US20010037450A1 (en) * 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
JP2002251326A (ja) * 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
US20020159456A1 (en) * 2001-04-27 2002-10-31 Foster Michael S. Method and system for multicasting in a routing device
US20020184520A1 (en) 2001-05-30 2002-12-05 Bush William R. Method and apparatus for a secure virtual machine
GB2376765B (en) 2001-06-19 2004-12-29 Hewlett Packard Co Multiple trusted computing environments with verifiable environment identities
US6976167B2 (en) 2001-06-26 2005-12-13 Intel Corporation Cryptography-based tamper-resistant software design mechanism
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US7526654B2 (en) 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US7496757B2 (en) 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US7516331B2 (en) 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452397B (zh) * 2008-11-27 2012-08-22 上海交通大学 虚拟化环境中的强制访问控制方法及装置
CN102667791A (zh) * 2009-11-20 2012-09-12 西门子公司 用于根据提供的权限信息访问控制数据的方法和装置
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法
CN102984229A (zh) * 2012-11-16 2013-03-20 北京奇虎科技有限公司 用于配置信任机的方法和系统
CN102999357A (zh) * 2012-11-16 2013-03-27 北京奇虎科技有限公司 一种信任机的配置方法和系统
CN102984229B (zh) * 2012-11-16 2015-08-19 北京奇虎科技有限公司 用于配置信任机的方法和系统
CN102999357B (zh) * 2012-11-16 2015-11-25 北京奇虎科技有限公司 一种信任机的配置方法和系统
CN105612527A (zh) * 2013-08-22 2016-05-25 Inka安特沃客有限公司 为基于通用中间语言的程序提供安全性的方法

Also Published As

Publication number Publication date
KR20070001893A (ko) 2007-01-04
CA2543572A1 (en) 2005-06-09
US7516331B2 (en) 2009-04-07
JP4702957B2 (ja) 2011-06-15
JP2007514994A (ja) 2007-06-07
WO2005052841A3 (en) 2005-08-11
WO2005052841A9 (en) 2006-07-20
EP1687688A2 (en) 2006-08-09
WO2005052841A2 (en) 2005-06-09
US7747877B2 (en) 2010-06-29
US20090138731A1 (en) 2009-05-28
IL175595A0 (en) 2006-10-05
CA2543572C (en) 2012-01-17
US20050114683A1 (en) 2005-05-26
KR100946042B1 (ko) 2010-03-09

Similar Documents

Publication Publication Date Title
CN101305333A (zh) 防篡改可信任虚拟机
AU2005201995B2 (en) System and method for protected operating system boot using state validation
US7346780B2 (en) Integrity ordainment and ascertainment of computer-executable instructions
Parno et al. Bootstrapping trust in modern computers
JP4689945B2 (ja) リソースアクセス方法
US7330981B2 (en) File locker and mechanisms for providing and using same
US20060048223A1 (en) Method and system for providing tamper-resistant software
US7529946B2 (en) Enabling bits sealed to an enforceably-isolated environment
US20020112161A1 (en) Method and system for software authentication in a computer system
US20050060568A1 (en) Controlling access to data
KR20030082485A (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색
WO2004006075A1 (ja) 開放型汎用耐攻撃cpu及びその応用システム
JP4664055B2 (ja) プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
Protections A survey of anti-tamper technologies
CN101167296A (zh) 受保护计算环境的可更新和可个性化元件
Kumbhar et al. Hybrid Encryption for Securing SharedPreferences of Android Applications
WO2006011888A1 (en) Dual virtual machine architecture for media devices
Luo et al. Mobile Code Security
US20080289046A1 (en) Method and device for the prevention of piracy, copying and unauthorized execution of computer-readable media

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20081112