优化的完整性验证过程的制作方法

文档序号:6454821阅读:141来源:国知局
专利名称:优化的完整性验证过程的制作方法
技术领域
本发明涉及优化的完整性验证过程。
背景技术
如今,对于很多企业而言,保护通过网络在计算机之间传输的数
字内容非常重要。企业试图通过实施某些形式的数字权益管理(DRM) 过程来进行这种保护。DRM过程经常涉及对内容进行加密(例如将内 容的二进制形式进行加密),从而将使用限制到已被授权使用该内容 的那些人。
密码术是保护数字内容——诸如正在网络上传送的数据——的 传统方法。在其典型应用中,密码术保护在两个相互信任方之间的数 字内容,使其不会由于对传送中的数据的攻击而被窃取。但是,对于 现在的许多数字文件传输应用(例如对于音频或视频内容的传输), 情况已经不同,因为接收内容的一方(即"接收方")可能试图克服由 提供内容的一方(即"发布方")应用于该内容的DRM加密。此外, 随着网络渗透攻击的扩散,第三方可能获得对接收方计算机的访问, 并从而访问被保护的内容。
除了加密和解密之外,数字内容可能需要其他层次的保护。鉴别 是另 一种重要的保护层次。在接收数字内容时,接收者经常需要"鉴别" 数字内容的来源。换而言之,接收者需要通过确保内容来自经鉴别的 来源并且在其到达接收者的途中没有被篡改,来验证数字内容的完整 性。
至今,已经提出了几种用于鉴别数字内容的完整性的过程。这些 过程通常将散列函数应用于内容的明文版本,以便生成散列摘要(也 被称为散列或摘要),然后散列摘要被用于为内容生成签名。所有散列函数的基本性质是,如果两个散列不同,则这两个输入在某些方面 不同。当对于不同的输入,两个散列相同,则称为散列沖突。密码系 统中重要的是,散列函数具有非常低的冲突概率。
传统的完整性验证过程是计算密集型的,特别是对于具有有限计 算资源的便携式设备而言。因此,在这个领域中需要较低计算密集度 的完整性验证过程。理想地,这样的过程将使便携式设备能够快速验 证所接收到的数字内容的完整性。

发明内容
本发明的某些实施例提供用于验证完整性数字内容的方法。在数 字内容的来源处,所述方法通过将散列函数应用于数字内容的特定部 分来为数字内容生成签名,其中所述特定部分比整个数字内容少。所 述方法向设备提供签名和数字内容。在设备处,所述方法将散列函数 应用于数字内容的特定部分,以验证所提供的签名的完整性,并由此 验证所提供的数字内容的完整性。
数字内容的特定部分包括数字内容的多个不同段。在某些实施例 中,所述方法配置来源和设备,以选择数字内容的预定的一组段作为 数字内容的特定部分。在某些实施例中,设备包括只读存储器,其(l)
存储用于标识特定部分的代码,并且(2)存储散列函数。
在某些实施例中,所述方法通过(1)将散列函数应用于所述特 定部分以生成散列摘要,以及然后(2)根据散列摘要生成签名,从而 在来源处为数字内容生成签名。所述方法可以在非对称或对称完整性 验证过程中被实现。例如,在某些实施例中,所述方法在设备处通过 以下步骤来应用散列函数(1)将散列函数应用于所述特定部分以生 成散列摘要,以及(2)向签名验证过程提供摘要和所接收到的签名, 其中签名验证过程基于所提供的摘要来确定签名的可靠性。可替换地, 在某些实施例中,所述方法在设备处通过以下步骤来应用散列函数 (1)基于散列摘要生成第二签名,以及(2)比较第一和第二签名, 以确定所提供的数字内容的完整性。在不同实施例中,数字内容的来源可以是不同的。例如,来源可 以是内容的作者、发布者等等。在不同实施例中,接收数字内容的设 备也可以是不同的。这样的设备的多个例子包括便携式音频/视频播放
器(例如iPod)、膝上型电脑、移动电话等等。在不同实施例中,数 字内容也可以是不同的。例如,数字内容可以是对设备操作系统的固 件更新、用于在设备上运行的第三方应用、用于在设备上播放的音频/ 视频文件等等。


本发明的新特征将在所附的权利要求书中阐述。但是,出于解释
的目的,下列图中说明了几个实施例。
图l说明本发明某些实施例的一个完整性验证系统。
图2说明本发明某些实施例的另一个完整性验证系统。
图3说明一个DRM系统,其实现本发明某些实施例的完整性验
证系统。
图4说明由本发明某些实施例中的一个或多个DRM服务器执行 的完整性验证过程。
图5说明由本发明某些实施例的便携式多媒体设备执行的完整性 验证过程。
图6给出一个计算机系统图,其概念性地说明实现本发明某些实 施例的典型DRM服务器、用户计算机、或便携式设备的组件。
具体实施例方式
在下面的描述中,出于解释目的,给出大量细节。但是,本领域 技术人员将认识到,本发明可以无需利用这些特定细节而被实现。在 其他例子中,为了避免由于不必要的细节而^f吏本发明的描述模糊,以 框图形式示出公知的结构和设备。
I. 概述
本发明的某些实施例提供了用于验证完整性数字内容的方法。在数字内容的来源处,所述方法通过将散列函数应用于数字内容的特定 部分来为数字内容生成签名,其中所述特定部分少于整个数字内容。 所述方法向设备提供签名和数字内容。在设备处,所述方法将散列函 数应用于数字内容的特定部分,以验证所提供的签名的完整性,并由 此验证所提供的数字内容的完整性。
数字内容的特定部分包括数字内容的多个不同段。在某些实施例
中,所迷方法配置来源和设备,以选择数字内容的预定的一组段,作 为数字内容的特定部分。在某些实施例中,设备包括只读存储器,其
(1)存储用于标识特定部分的代码,并且(2 )存储散列函数。
在某些实施例中,所述方法通过(1)将散列函数应用于特定部 分以生成散列摘要,以及然后(2)根据散列摘要生成签名,从而在来 源处为数字内容生成签名。所述方法可以在非对称或对称完整性验证 过程中被实现。例如,在某些实施例中,所迷方法在设备处通过以下 步骤来应用散列函数(l)将散列函数应用于特定部分以生成散列摘 要,以及(2)向签名验证过程提供摘要和所接收到的签名,其中签名 验证过程基于所提供的摘要来确定签名的可靠性。可替换地,在某些 实施例中,所述方法在设备处通过以下步骤来应用散列函数(l)基 于散列摘要生成第二签名,以及(2)比较第一和第二签名,以确定所 提供的数字内容的完整性。
在不同实施例中,数字内容的来源可以是不同的。例如,来源可 以是内容的作者、发布者等等。在不同实施例中,接收数字内容的设 备也可以是不同的。这样的设备的几个例子包括便携式音频/视频播放 器(例如iPod)、膝上型电脑、移动电话等等。在不同实施例中,数 字内容也可以是不同的。例如,数字内容可以是对设备操作系统的固 件更新、用于在设备上运行的第三方应用、用于在设备上播放的音频/ 视频文件等等。
II.某些实施例的完整性验证系统
图1概念性地说明本发明某个实施例的完整性验证系统100的细 节表示。如图所示,该系统包括内容源设备110和内容接收设备115。
15如图1中所示,内容源设备110向内容接收设备115提供至少一个数 字内容105。内容源是涉及内容创建、销售或发布的任何一方。这样 的一方的例子包括内容的作者、销售者、发布者等。内容源设备110 可以是一组一个或多个固定或便携式设备、计算机、服务器等。
如图1所示,内容源设备110执行散列过程120和签名生成过程 130。散列过程120仅将散列函数应用于数字内容105的一部分。该部 分是比特的特定模式(pattern) 125,其中比特在图1中被概念性地 表示为数字内容105的涂黑的部分。
在某些实施例中,该比特模式(例如由内容源设备110、由指示 设备IIO的DRM服务器等等)以保证足够的数字内容被散列以实现3 个目标的方式被指定。第一,比特模式应该被指定为使得对数字内容 的任何墓改将需要墓改被散列的段之一,这会使墓改显而易见,因为 篡改会改变最终的签名。第二,比特模式应该被指定为使得由过程120 所散列的两个不同数字内容不冲突(即,不生成相同的散列)。第三, 由于内容接收设备115将为其散列过程使用相同的比特模式,所以比 特模式应该使用实现前两个目标的最小数量的比特,使得散列过程将 最低程度地使用内容接收设备115的计算资源。
散列过程120在某些实施例中被配置成伪随机地选择比特模式 125,或者在其他实施例中被配置成系统性地选择比特模式125 (例如 基于字节的有序模式)。例如,在某些实施例中,数字内容可以是程
序(诸如内容接收设备115的操作系统、在内容接收设备115上运行 的第三方应用等等)的目标代码。
在某些这样的实施例中,代码包括一组操作码(即指令代码)、 以及用于每个操作码的0或更多的操作数(即0或更多的数据)。相 应地,这些实施例中的某些实施例将散列函数应用于同样多的操作码 和操作数,以使对篡改的检测最大化,使散列的沖突最小化,并使对
计算资源的使用最少。
例如,在某些实施例中,内容接收设备使用ARM微处理器。在 这样的微处理器中,(包括操作码和其相关联的操作数的)目标代码的每一行被称为一个微处理器操作单元(MOU),其具有4字节的统 计长度。因而,某些实施例使用4字节宽度来标识代码每行之间的边 界,然后利用该知识来在每个MOU之间选择一个或多个字节。在不 同实施例中,MOU之中对字节的选择可具有不同的实施方式。某些 实施例包括需要被散列的比特模式中的操作码和操作数的伪随机混 合。其他实施例可仅仅包括正在被散列和签名的代码中的操作码(例 如大部分或全部操作码)。另一些实施例可选择每行指令中的确定字 节(例如总是第一个字节)。某些实施例使用保密函数(secret function),其为每个MOU生成MOU长度的整数模数,然后选择 MOU中对应于该模数的一个或多个段。其他实施例可使用其他微处 理器,诸如由Motorola公司、Intel公司、AMD公司、IBM公司等所 提供的微处理器。
在不同的实施例中,散列过程120将不同的散列函数应用于数字 内容的特定部分。在不同实施例中所使用的散列函数的例子包括 MD5、 SHA-l等。散列函数可以在存在密钥或不存在密钥的情况下被 使用(即散列函数可以是带密钥的散列函数(keyed hashing function ))。
如上所述,散列函数是通常接受内容的某种形式(例如明文形式) 并将其变换成被称为摘要或散列的加扰输出的变换。摘要通常具有用 作原始内容的独特"数字指紋"的大小固定的一组比特。如果原始消息 被改变并被再次散列,则很大概率上会产生不同的摘要。因此,可利 用散列函数来检测更改的或伪造的文档。散列函数提供消息完整性, 从而向内容接收者保证内容未被更改或破坏。
如图1所示,签名生成器130接收散列过程120的散列函数所产 生的摘要。签名生成器130根据所接收的摘要145为内容105产生签 名147。为了生成这样的签名,生成器130可利用诸如SHA-1、 MD5 MAC之类的众多已知技术中的任何一种。
如图1所示,在系统100中,数字内容105和所生成的签名147 被提供给内容接收设备115。不同的实施例以不同方式将该数据提供给接收设备115。例如,某些实施例通过通信网络,诸如局域网、广 域网或多个网络之一 (例如互联网),来发布该数据。而且,通过网 络,内容接收设备115可直接从内容的创建者、销售者或发布者接收 该数据,或者可以间接地通过一个或多个中间服务器,诸如一个或多 个DRM服务器、内容援存服务器等接收该数据。
内容接收者是涉及内容的使用或内容的分布的任何一方。这样的 一方的例子包括内容的用户、发布者等。内容接收设备115可以是固 定的或便携式的设备、计算机、服务器、音频/视频播放器、通信设备 (例如电话、寻呼机、文本消息器等)、管理器(organizer)等等。
在系统100中,内容源设备110和内容接收设备115利用非对称 完整性验证过程。因此,内容接收设备115执行两个过程散列过程 135和签名验证过程140。
散列过程135将与内容源设备110的散列过程120相同的散列函 数应用于数字内容105的与内容源设备110的散列过程120相同的段。 特别地,在某些实施例中,接收设备115的散列过程135被配置成选 择数字内容105中的与内容源设备110的散列过程120相同的比特模 式。图1通过示出散列过程120和135使用数字内容105中相同的涂 黑的比特模式125,来对此加以概念性说明。散列过程135对相同比 特模式125的选择可通过导致选择与散列过程120相同的比特模式的 伪随机或系统性方式来进行。
将散列过程135的散列函数应用于内容105就产生摘要149。当 过程120和135所接收的数字内容相同时,该摘要应当与由散列过程 120的散列函数所产生的摘要145相同,因为这两个过程选择数字内 容中相同一组段。
如图1所示,签名验证器140接收散列过程135的散列函数所产 生的摘要149。签名验证器140还接收由内容源设备110的签名生成 器130所产生的签名147。验证器140然后通过确保签名147适合于 摘要149而确定所接收的签名147是否是所接收的数字内容105的正 确签名。为了确保签名147适合于摘要149,验证器140可使用诸如
18SHA-1或MD5之类的众多已知^t术中的任一项。
基于摘要149和签名147的比较,签名验证器140然后输出完整 性检查值151。该值指示所接收的签名147对于所接收的数字内容105 是否是适当的签名。例如,在某些实施例中,完整性检查值是布尔值, 其中当数字内容完整性得到验证时(即当所接收的签名与所接收的数 字内容匹配时)该值为真,当数字内容的完整性未被验证时该值为假。 在其他实施例中,完整性检查值是任何其他类型的二态值(two-state value),其中一个态表示数字内容完整性得到验证,另一个态表示数 字内容完整性未得到验证。完整性检查将指定,当数字内容的一个或 多个部分在签名147被生成之后被墓改并且这些部分包括被用于生成 散列摘要145和149的一个或多个内容段时,内容完整性未得到验证。
其他实施例可在不同的完整性验证系统中被实施。例如,图2说 明了对称完整性验证系统200中本发明的一种实现。系统200类似于 系统100,区别在于其内容接收设备115不包括非对称签名验证器140, 而是包括签名生成器240和对称签名验证器250。
类似于内容源设备110的签名生成器130,签名生成器240根据 其所接收的散列摘要149生成签名253。所生成的签名253然后与所 接收的签名147 —起被提供给签名验证器250。验证器250然后比较 这两个签名,以指定其完整性检查值151。当这两个签名147和253 匹配时,完整性检查值151表示所接收的数字内容未被篡改。当这两 个签名不匹配时,完整性检查值表示内容已经被篡改(即,所接收的 签名147不对应于所接收的数字内容)。
为了概念性地说明在不同实施例中或对于不同内容,数字内容的 不同部分可被散列,图2示出与图1中所示模式不同的内容105中的 涂黑的比特模式225。图2中涂黑的段具有不同的长度,以便概念性 说明在本发明某些实施例中可被散列的不同大小的段。
III. 实施某些实施例的完整性验证系统的DRM系统
某些实施例的完整性验证系统在DRM系统中被实现,其中DRM 系统以确保内容合法使用的方式来发布内容。如图3所示,DRM系统300包括一组DRM服务器310,其发布内容给一组N个用户计算机 315。这组服务器310通过诸如局域网、广域网、多个网络之一(例如 因特网)这样的计算机网络320连接到用户计算机315。每个用户计 算机315连接到一组一个或多个便携式多媒体设备330。
在某些实施例中,通过网络连接,用户计算机315与这一组DRM 服务器310通信,以购买、许可、更新或以其他方式获得内容。因而, 虽然在某些实施例中,DRM服务器组310向用户计算机销售或许可内 容,但是在其他实施例中,这个組不销售或许可内容。例如,在某些 实施例中,DRM服务器组310仅仅向被授权的计算机发布内容,而不 具有任何金融目的。
在某些实施例中,DRM服务器组310包括内容緩存服务器,其 中在另一 DRM服务器310确定计算机310可以获得内容之后,该内 容緩存服务器通过网络320向用户计算机310提供加密后的内容。在 某些实施例中,系统300使用多个緩存服务器,以在网络上的不同位 置处緩存内容,以便提高网络上下载内容的速度和效率。
如上所述,用户计算才几315通过网络320与DRMI良务器組310 通信,以购买、许可、更新或以其他方式获得内容。在某些实施例中, DRM服务器组310为其发布给用户计算机315的内容提供签名,其中 根据本发明的某些实施例,通过仅散列内容的一部分来生成该签名。
特定地,图3说明了用户计算机315a向DRM服务器组310发送 对内容"A,,的请求。该请求可以是对购买、许可或以其他方式获得内 容的请求。可替换地,当内容是在用户计算机上或在其相关联的多媒 体设备330之一上运行的应用或操作系统时,所述请求可以是对应用 或操作系统的更新的请求。该请求可以是在用户计算机315上执行的 更新检查过程中的显式请求(explicit request)或隐式请求(implicit request),其中更新检查过程在具有或不具有用户干预的情况下检查 应用或操作系统的更新。
如图3所示,DRM服务器组310接收来自用户计算机315a的对 内容A的请求。然后, 一个或多个DRM计算机执行图4中示出的过程400,以为所请求的内容A生成签名。如图4所示,过程400首先 (在405)通过将散列函数仅应用于所请求内容A的一部分而生成摘 要。已经在上述段落I和II中说明了将散列函数仅应用于内容的一部 分。如上所述并且在下面将进一步描述的那样,过程400将散列函数 应用于内容A的与用户计算机315a及其相关联的多媒体设备330a的 散列函数所应用于的部分相同的部分。
在405处应用散列函数之后,过程410基于在405处所产生的散 列摘要(在410)生成签名。已经在上述段落I和II中描述了基于散 列摘要生成签名。在410处生成签名之后,过程向用户计算机315a提 供所请求的内容A及其相关联的签名,然后结束。
在某些实施例中,用户计算机315a使用所提供的签名来验证所 接收内容A的完整性。为此,通过将散列函数应用于内容A的与DRM 服务器组310的散列函数所应用于的部分相同的部分,用户计算机 315a将为内容A生成散列摘要。然后,用户计算机315a通过使用非 对称签名验证方法(诸如图1所示的方法)或对称签名验证方法(诸 如图2所述的方法),来利用该散列摘要验证签名的完整性。
在某些实施例中,用户计算机315a的多媒体设备330a在其与计 算机315a同步时也接收内容A和该内容的签名A。因此,当内容A 是要用于多媒体设备330a的内容时,某些实施例中的用户计算机315a (例如在数据存储器中)记录对于在设备330a下一次与计算机315a 进行同步时将内容A及其签名下载到设备330a的需求。
类似于用户计算机315a,多媒体设备330a通过将散列函数应用 于内容A的与DRM服务器组310的散列函数所应用于的部分相同的 部分,来为内容A生成散列摘要。然后,多媒体设备330a通过使用 非对称签名验证方法(诸如图1所示的方法)或对称签名验证方法(诸 如图2所示的方法),利用该散列摘要来验证内容的完整性。
图5说明在某些实施例中多媒体设备330a执行的完整性验证过 程500的更详细的例子。在将可执行内容(即,用于操作系统更新、 用于对现有应用的更新和用于新应用等的代码)加载到多媒体设备330a上的同步操作期间执行该过程。如图所示,过程500首先(在505 ) 在同步操作期间接收可执行内容和该内容的签名,其中同步操作确保 设备具有用户计算机指示其应当具有的全部内容。
在同步之后,过程(在510)重新启动设备,因为在某些实施例 中,完整性验证过程是启动引导序列的一部分。特定地,在某些实施 例中,启动引导序列为每条新接收的代码执行完整性验证过程,即使 在图5所示的例子中,假定在505处仅有一个内容被加载到设备上。 在某些实施例中,启动序列(包括完整性验证过程)被存储在设备315a 的非易失性只读存储器中。这确保在设备售出之后,完整性验证过程 不能被篡改。
因此,在启动引导序列期间,过程500 (在515处)通过将散列 函数应用于内容的与DRM服务器组310的散列函数所应用于的部分 相同的部分,来为所接收的内容生成散列摘要。然后,过程500 (在 520处)使用该散列摘要来验证签名的完整性。例如,过程500可使 用非对称签名验证方法(诸如图1所示的方法)或对称签名验证方法 (诸如图2所述的方法)。
当所述过程(在520处)不能验证新接收的代码的完整性时(即 当新接收的签名不对应于设备为新接收的内容所生成的摘要时),该 过程结束,而不指定内容可被加载到可执行存储器中。可替换地,当 该过程(在520处)验证新接收的代码的完整性时,该过程(在525 处)指定代码是可执行的。在某些实施例中,该过程(在525处)将 代码加载到可执行存储器中并执行该代码。
图3的DRM系统300具有不止一个用户计算机,其根据本发明 的某些实施例的完整性验证过程接收数字内容和这样的内容的签名。 特定地,图3示出向DRM服务器组310请求内容(即内容B)的用 户计算才几315n。如图所示,用户计算机315n从DRM服务器组310 接收所请求的内容B和该内容的签名。根据本发明,通过只散列内容 B的一部分而产生内容B的签名。然后,用户计算机315n及其相关联 的 一组便携式设备330以与上面针对用户计算机315a及其相关联的设备"0a所述的几乎相同的方式,通过散列内容B的与DRM服务器组 相同的部分来验证内容B的完整性。 IV.系统图
图6给出一个计算机系统图,其概念性地说明实现本发明某些实 施例的典型DRM服务器、用户计算机、或便携式设备的组件。计算 机系统600包括总线605、处理器610、系统存储器615、只读存储器 620、永久性存储设备625、输入设备630和输出"i殳备3035。
总线605共同地代表支持计算机系统600的内部设备之间通信的 所有系统总线、外围设备总线和芯片组总线。例如,总线605将处理 器610与只读存储器620、系统存储器615以及永久性存储设备625 通信地连接。
处理器610从这些各种存储单元中检索要执行的指令和要处理的 数据,以便执行本发明的过程。只读存储器(ROM) 620存储计算机 系统的处理器610和其他模块所需要的静态数据和指令。对于实施本 发明的便携式设备,只读存储器存储某些实施例的启动引导序列和散 列过程,如上所述。
另一方面,永久性存储设备625是读写存储器设备。该设备是非 易失性存储器单元,其即使在计算机系统600被关闭的情况下也存储 指令和数据。本发明的某些实施例使用大容量存储设备(诸如磁盘或 光盘及其对应的盘驱动器)作为永久性存储设备625。其他实施例使 用可移动存储设备(诸如存储卡或记忆棒)作为永久性存储设备。
类似于永久性存储设备625,系统存储器615是读写存储器设备。 但是,与存储设备625不同,系统存储器是易失性读写存储器,诸如 随机存取存储器。系统存储器存储处理器在运行时所需的指令和数据 中的一些。在某些实施例中,本发明的过程被存储在系统存储器615、 永久性存储设备625和/或只读存储器620中。
总线605还连接到输入和输出设备630和635。输入设备使用户 能够向计算机系统发送信息和选择命令。输入设备630包括字母数字 键盘和光标控制器。输出设备635显示由计算机系统所生成的图像。
23输出设备包括打印机和显示设备,诸如阴极射线管(CRT)或液晶显 示器(LCD)。
最后,如图6所示,计算机600的某些配置还包括连接到总线605 的网络适配器640。通过网络适配器640,计算机可以是计算机网络(诸 如局域网(LAN)、广域网(WAN)、或内联网)或多个网络之一 (诸 如因特网)的一部分。计算机系统600的任何或所有组件可结合本发 明被使用。但是,本领域技术人员将理解,任何其他系统配置也可结 合本发明被使用。
V.优点
本领域技术人员将理解,上述完整性验证过程具有多个优点。例 如,当将新的可执行代码加载到设备上时,验证代码的完整性是很重 要的,因为这样的代码提供了攻击设备的时机。上述完整性过程提供 了一种容易的途径来甚至在具有有限计算资源的便携式设备上检查代 码完整性。
而且,某些实施例在设备的启动引导序列期间引入完整性验证过 程,以便使篡改完整性过程的可能性最小化。为了进一步减小这种可 能性,某些实施例将完整性过程存储在设备的只读存储器上。
虽然已经参考大量特定细节描述了本发明,但是本领域技术人员 将认识到,本发明可以其他特定形式被实施,而不背离本发明的精神。 例如,如上面所提到的,某些实施例可使用带密钥的散列函数。如果 使用密钥,则可使用对称(单保密密钥)和非对称密钥(公钥/私钥对)。 带密钥的散列函数的一个例子是键控MD5技术(keyed MD5 technique)。基本上,发送者将随机生成的密钥附加到消息的末端, 然后使用MD5散列来对消息和密钥组合进行散列处理,以创建消息 摘要。然后,密钥被从消息中去除,并以发送者的私钥被加密。消息、 消息摘要和加密后的密钥被发送给接收者,其中接收者利用发送者的 公钥打开密钥(从而确认消息实际上是来自该发送者)。然后,接收 者将密钥附加到消息,并运行与发送者相同的散列。消息摘要应当与 随消息一起发送的消息摘要匹配。而且,上述的多个实施例选择内容的目标代码格式中的比特模
式。当内容是其他格式(例如,是源代码或XML格式)时,其他实 施例可选择段的其他模式。因而,本领域技术人员将理解,本发明不 由前述示意性细节所限制,而是由所附的权利要求书来限定。
权利要求
1. 一种方法,包括a)仅根据特定内容的一部分为所述特定内容生成数字签名;以及b)提供所述数字签名。
2. 根据权利要求1所述的方法,其中生成数字签名的步骤包括 仅对所述特定内容的所述一部分使用散列函数,以生成散列; 根据所述散列生成所述数字签名。
3. 根据权利要求2所述的方法,进一步包括选择所述特定内 容的特定部分。
4. 根据权利要求3所述的方法,其中选择特定部分的步骤包括 选择使对所述特定内容的篡改的检测最大的部分。
5. 根据权利要求3所述的方法,其中选择特定部分的步骤包括 选择使散列的沖突最小的部分。
6. 根据权利要求3所述的方法,其中选择特定部分的步骤包括 选择使计算资源最小的部分。
7. 根据权利要求1所述的方法,进一步包括基于所述特定内 容中的有序比特模式来选择所述特定内容的特定部分。
8. 根据权利要求1所述的方法,进一步包括基于伪随机操作 来选择所述特定内容的特定部分。
9. 根据权利要求1所述的方法,其中所述特定内容包括视频信息。
10. 根据权利要求1所述的方法,其中所述特定内容包括音频信息。
11. 根据权利要求l所述的方法,其中所述特定内容包括用于 特定设备的固件的更新。
12. 根据权利要求1所述的方法,其中所述特定内容是用于在 特定设备上操作的应用程序。
13. 根据权利要求1所述的方法,其中所述设备是便携式播放器。
14. 根据权利要求l所述的方法,其中所述特定内容包括目标代码。
15. 根据权利要求14所述的方法,其中所述目标代码包括一 组操作码和相关联的一组操作数,其中特定部分仅包括操作码。
16. 根据权利要求14所述的方法,其中所述目标代码包括一 组操作码和相关联的一组操作数,其中特定部分包括操作码和操作数。
17. 根据权利要求1所述的方法,进一步包括提供所述特定内容。
18. —种计算机可读介质,用于存储可由至少一个处理器执行 的计算机程序,所述计算机程序包括a) 用于生成数字签名的指令集,用于仅根据特定内容的一部分 为所述特定内容生成数字签名;以及b) 用于提供所述数字签名的指令集。
19. 根据权利要求18所述的计算机可读介质,其中所述用于 生成数字签名的指令集包括 用于仅对所述特定内容的所述一部分使用散列函数以生成散列的指令集;用于根据所述散列生成所述数字签名的指令集。
20. 根据权利要求18所述的计算机可读介质,其中所述计算 机程序进一步包括用于基于所述特定内容中的有序比特模式来选择 所述特定内容的特定部分的指令集。
21. 根据权利要求18所述的计算机可读介质,其中所述计算 机程序进一步包括用于基于伪随机操作来选择所述特定内容的特定 部分的指令集。
22. 根据权利要求18所述的计算机可读介质,其中所述特定 内容包括目标代码。
23. 根据权利要求22所述的计算机可读介质,其中所述目标代码包括一组操作码和相关联的 一组操作数,其中特定部分仅包括操 作码。
24. 根据权利要求22所述的计算机可读介质,其中所述目标代码包括一组操作码和相关联的一组操作数,其中特定部分包括操作 码和操作数。
25. 根据权利要求18所述的计算机可读介质,其中所述计算 机程序进一步包括用于提供所述特定内容的指令集。
26. —种方法,包括a) 接收特定内容;以及b) 通过使用数字签名,验证所述特定内容的可靠性,其中所述 数字签名是仅根据所述特定内容的一部分而导出的。
27. 根据权利要求26所述的方法,其中所述数字签名是从散 列所导出的,其中所述散列是通过仅对所述特定内容的所述一部分使 用散列函数而生成的。
28. 根据权利要求26所述的方法,其中验证特定内容的可靠 性的步骤包括使用非对称完整性过程。
29. 根据权利要求28所述的方法,其中使用非对称完整性过 程的步骤包括a) 仅为所接收的特定内容的所述一部分计算特定散列;以及b) 确定所述特定散列对于所接收的数字签名是否适当。
30. 根据权利要求29所述的方法,进一步包括生成完整性 检查值,以指示所述特定散列对于所接收的数字签名是否适当。
31. 根据权利要求29所述的方法,其中当确定所述特定散列 对于所接收的数字签名适当时,所述特定内容被验证为可靠的。
32. 根据权利要求26所述的方法,其中验证特定内容的可靠 性的步骤包括使用对称完整性过程。
33. 根据权利要求32所述的方法,其中使用对称完整性过程 的步骤包括a)仅为所接收的特定内容的所述一部分生成特定散列;b) 基于所述特定散列生成另一个数字签名;以及c) 确定所接收的数字签名是否与所述另 一个数字签名匹配。
34. 根据权利要求33所迷的方法,其中当确定这两个数字签 名匹配时,所述特定内容被验证为可靠的。
35. 根据权利要求26所述的方法,进一步包括基于所述特 定内容中的有序比特模式来选择所述特定内容的特定部分。
36. 根据权利要求26所述的方法,进一步包括基于伪随机 操作来选择所述特定内容的特定部分。
37. 根据权利要求26所述的方法,其中所述特定内容包括视 频信息。
38. 根据权利要求26所述的方法,其中所述特定内容包括音 频信息。
39. 根据权利要求26所述的方法,其中所述特定内容包括用 于特定设备的固件的更新。
40. 根据权利要求26所述的方法,其中所述特定内容是用于 在特定设备上操作的应用程序。
41. 根据权利要求26所述的方法,其中所述设备是便携式播 放器。
42. 根据权利要求26所述的方法,其中所述特定内容包括目 标代码,其中所述目标代码包括一组操作码和相关联的一组操作数,其中特定部分仅包括操作码。
43. 根据权利要求26所迷的方法,其中所述特定内容包括目 标代码,其中所述目标代码包括一组操作码和相关联的一组操作数, 其中特定部分包括操作码和操作数。
44. 根据权利要求26所述的方法,进一步包括执行与设备 的同步操作,以接收所述特定内容和数字签名。
45. 根据权利要求44所述的方法,其中所述设备是第一设备, 所述接收、验证和执行是由第二设备执行的。
46. 根据权利要求45所述的方法,其中在所述第二设备的引导序列期间执行所述验证。
47. 根据权利要求26所述的方法,其中所迷验证至少部分地 是由存储在设备的只读存储器中的指令集来执行的。
48. —种计算机可读介质,包括可由至少一个处理器执行的计 算机程序,所述计算机程序包括a) 用于接收特定内容的指令集;以及b) 用于验证所述特定内容的可靠性的指令集,用于通过使用数 字签名来验证所述特定内容的可靠性,其中所述数字签名是仅根据所 述特定内容的 一部分导出的。
49. 根据权利要求48所述的计算机可读介质,其中所述数字 签名是从散列导出的,其中所述散列是通过仅对所述特定内容的所述 一部分使用散列函数而生成的。
50. 根据权利要求48所述的计算机可读介质,其中所述用于 验证所述特定内容的可靠性的指令集包括用于使用非对称完整性过程 的指令集。
51. 根据权利要求50所述的计算机可读介质,其中所述用于 使用非对称完整性过程的指令集包括a) 用于仅为所接收的特定内容的所述一部分计算特定散列的指 令集;以及b) 用于确定所述特定散列对于所接收的数字签名是否适当的指 令集。
52. 根据权利要求51所述的计算机可读介质,其中当确定所 述特定散列对于所接收的数字签名适当时,所述特定内容被验证为可 靠的。
53. 根据权利要求48所述的计算机可读介质,其中所述用于 验证所述特定内容的可靠性的指令集包括用于使用对称完整性过程的指令集。
54. 根据权利要求53所述的计算机可读介质,其中所述用于 使用对称完整性过程的指令集包括a) 用于仅为所接收的特定内容的所述一部分生成特定散列的指令集;b) 用于基于所迷特定散列生成另一个数字签名的指令集;以及c) 用于确定所接收的数字签名是否与所述另 一个数字签名匹配 的指令集。
55. 根据权利要求54所述的计算机可读介质,其中当确定这 两个数字签名匹配时,所述特定内容被验证为可靠的。
56. 根据权利要求48所述的计算机可读介质,其中所述特定 内容包括目标代码,所述目标代码包括一组操作码和相关联的一组操 作数,特定部分仅包括操作码。
57. 根据权利要求48所述的计算机可读介质,其中所述特定 内容包括目标代码,所述目标代码包括一组操作码和相关联的一组操 作数,特定部分包括操作码和操作数。
58. 根据权利要求48所述的方法,进一步包括用于执行与设 备的同步操作,以接收所述特定内容和数字签名的指令集,其中所述 设备是第一设备,所述用于接收、验证和执行的指令集由第二设备执 行。
59. 根据权利要求58所述的计算机可读介质,其中所述用于 验证的指令集在所述第二设备的引导序列期间被执行。
60. 根据权利要求48所述的计算机可读介质,其中所述用于 验证的指令集至少部分地是由存储在设备的只读存储器中的指令集来 执行的。
61. —种用于访问内容的设备,所述设备包括a) 用于存储特定内容的存储器;以及b) 用于利用数字签名来鉴别所述内容的电子组件,其中所述数 字签名仅根据所述特定内容的一部分而被导出。
62. 根据权利要求61所述的设备,其中所述电子组件进一步 用于仅根据所述特定内容的所述一部分生成所述数字签名。
63. 根据权利要求62所述的设备,其中所述电子组件通过首先仅根据所述特定内容的所述一部分生成散列,然后根据所生成的散 列生成数字签名,来生成所述数字签名。
64. 根据权利要求62所述的设备,其中所述电子组件通过将 所生成的数字签名与所述设备所接收的数字签名相比较,来利用所述 数字签名。
65. 根据权利要求61所述的设备,其中所述数字签名是所述 设备所接收的签名。
66. 根据权利要求61所述的设备,其中所述设备是计算机。
67. 根据权利要求61所述的设备,其中所述设备是便携式播 放器。
68. 根据权利要求61所述的设备,进一步包括用于存储指令 集的读存储器,其中所述指令集用于利用所述数字签名来鉴别所述内 容。
69. 根据权利要求68所述的设备,其中所述指令集包括用于 仅根据所述特定内容的所述一部分生成数字签名的指令。
70. —种用于发布内容的系统,所述系统包括a) 用于提供特定内容的计算机组;以及b) 用于利用数字签名来鉴别所述特定内容的设备,其中所述数 字签名仅根据所述特定内容的一部分而被导出。
71. 根据权利要求70所述的系统,其中所述计算机组进一步用于a) 仅对所述特定内容的所述一部分使用散列函数,以生成散列;以及b) 根据所述散列生成所述数字签名。
72. 根据权利要求71所述的系统,其中所述计算机组通过选 择所述特定内容的使对所述特定内容的篡改的检测最大的特定部分, 来生成所述散列。
73. 根据权利要求71所述的系统,其中所述计算机组通过选 择所述特定内容的使散列冲突最小的特定部分,来生成所述散列。
74. 根据权利要求71所述的系统,其中所述计算机組通过选 择所述特定内容的使计算资源最小的特定部分,来生成所述散列。
75. 根据权利要求70所述的系统,其中所述设备包括用于存 储指令集的只读存储器,所述指令集用于鉴别所述特定内容。
76. 根据权利要求70所述的系统,其中所述计算机组包括一 台计算机。
77. 根据权利要求70所述的系统,其中所述计算机组包括多 于一台的计算机。
78. 根据权利要求70所述的系统,其中所述设备通过使用非 对称完整性过程,来利用所述数字签名鉴别所述特定内容。
79. 根据权利要求70所述的系统,其中所述设备通过使用对 称完整性过程,来利用所迷数字签名鉴别所述特定内容。
80. 根据权利要求70所述的系统,其中所述数字签名是由所 述计算机组所提供的签名。
81. 根据权利要求80所述的系统,其中所述设备通过确定由 所述设备所计算的散列对于所提供的数字签名是否适当,来利用所述 数字签名。
82. 根据权利要求70所述的系统,其中所述数字签名是由所 述设备生成的。
83. 根据权利要求82所述的系统,其中所述设备通过将由所 述设备所生成的数字签名与由所述计算机组所提供的另 一个数字签名 相比较,来利用所述数字签名。
84. —种方法,包括a) 通过将散列函数应用于数字内容的特定部分来为所述数字内 容生成签名,其中所述特定部分不包括所述数字内容的全部;b) 向设备提供所述签名和所述数字内容;以及c) 在所述设备处,将所述散列函数应用于所述数字内容的所述 特定部分,以验证与所述数字内容一起被提供的所述签名,并由此验 证所提供的数字内容的完整性。
85. 根据权利要求84所述的方法,进一步包括a) 在所述数字内容的来源处,选择所述数字内容的多个不同段 作为所述数字内容的所述特定部分;以及b) 在所述设备处,选择所述数字内容的同样的多个不同段作为 所述数字内容的所述特定部分。
86. 根据权利要求85所述的方法,其中所述来源是所述数字 内容的作者。
87. 根据权利要求85所迷的方法,其中所迷来源是数字权益 管理系统中所述数字内容的发布者。
88. 根据权利要求84所述的方法,进一步包括将标识所述 特定部分的代码存储在所述设备的只读存储器中。
89. 根据权利要求84所述的方法,进一步包括将所述散列函 数存储在所述设备的只读存储器中。
90. 根据权利要求84所述的方法,其中为数字内容生成签名 的步骤包括a) 将所述散列函数应用于所述特定部分,以生成散列;以及b) 根据所迷散列生成所述签名。
91. 根据权利要求84所述的方法,其中在所述设备处将散列 函数应用于所述特定部分的步骤包,a) 将所述散列函数应用于所i特定部分,以生成散列;以及b) 使用所生成的散列来验证所提供的签名的完整性。
92. 根据权利要求91所述的方法,进一步包括在所述设备 处,向签名验证过程提供所生成的散列和所述签名,其中所述签名验 证过程基于所提供的散列来确定所述签名的可靠性。
93. 根据权利要求91所述的方法,其中被提供给所述设备的 签名是第一签名,其中使用所生成的散列的步骤包括a) 在所述设备处,基于所生成的散列,生成第二签名;以及b) 在所述设备处,比较第一签名和第二签名,以确定所提供的 数字内容的完整性。
94. 根据权利要求84所述的方法,其中所述数字内容包括用 于在所述设备上执行的代码,在所述设备处应用所述散列函数的步骤 包括在将所迷代码加载到可执行存储器中之前应用所迷散列函数。
95. 根据权利要求84所述的方法,其中所述数字内容包括用 于修改所述设备的操作系统的代码。
全文摘要
本发明的某些实施例提供一种验证数字内容完整性的方法。在数字内容的来源处,所述方法通过将散列函数应用于数字内容的特定部分,来为数字内容生成签名,其中特定部分少于全部数字内容。所述方法向设备提供签名和数字内容。在设备处,所述方法将散列函数应用于数字内容的特定部分,以验证所提供的签名,并由此验证所提供的数字内容的完整性。
文档编号G06F21/00GK101443774SQ200780017674
公开日2009年5月27日 申请日期2007年3月13日 优先权日2006年3月15日
发明者A·J·法鲁吉亚, J-F·林德奥 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1