CN101512536A - 认证游戏装置的系统和方法 - Google Patents

认证游戏装置的系统和方法 Download PDF

Info

Publication number
CN101512536A
CN101512536A CNA2007800327276A CN200780032727A CN101512536A CN 101512536 A CN101512536 A CN 101512536A CN A2007800327276 A CNA2007800327276 A CN A2007800327276A CN 200780032727 A CN200780032727 A CN 200780032727A CN 101512536 A CN101512536 A CN 101512536A
Authority
CN
China
Prior art keywords
signature
value
district
module
content
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.)
Granted
Application number
CNA2007800327276A
Other languages
English (en)
Other versions
CN101512536B (zh
Inventor
柯伊岚·斯密斯
斯高特·A·万斯通
丹尼尔·R·布朗
戴利·L·巴黎欣
爱校·魏得卡
布廉·内尔
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.)
Maliki Innovation Co ltd
Original Assignee
Certicom 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 Certicom Corp filed Critical Certicom Corp
Publication of CN101512536A publication Critical patent/CN101512536A/zh
Application granted granted Critical
Publication of CN101512536B publication Critical patent/CN101512536B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/32Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/32Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
    • G07F17/3225Data transfer within a gaming system, e.g. data sent between gaming machines and users
    • G07F17/323Data transfer within a gaming system, e.g. data sent between gaming machines and users wherein the player is informed, e.g. advertisements, odds, instructions
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/32Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
    • G07F17/3241Security aspects of a gaming system, e.g. detecting cheating, device integrity, surveillance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2109Game systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)

Abstract

本发明公开了一种利用安全启动程序和非挥发储存器全盘加密过程来认证和保护嵌入式装置的方法和系统。该全盘加密过程对个性化BIOS和主启动记录执行具有消息恢复的椭圆曲线Pinstov-Vanstone(ECPV)签名方案。该签名包括为了解锁一个密钥码而被恢复的码。该密钥用于在运行中解密该非挥发存储器。ECPVS的使用提供了一个隐性验证,该软件被绑定至该BIOS,因为被加密储存器除非利用适当的密钥进行适当的解密,否则无法使用。

Description

认证游戏装置的系统和方法
技术领域
[0001]本发明涉及认证存储在装置内的数据的系统和方法,特别适合于在运行时认证这些内容。
背景技术
[0002]基于个人电脑(PC)的设备可以运行软件程序及/或接受、播放及/或传播各种类型的多媒体内容,但由于设备的物理限制及/或无法强制使用者在开机、唤醒等时刻使用强密码,开发、制造和销售这些基于个人电脑的设备的公司不仅在使用过程中,而且在设备的整个寿命周期中都面临极大的安全性挑战。
[0003]在很多情形下,这些设备的目标是消费市场,在那里这些设备变得易于遭受各种潜在的、包括专家和简单黑客的攻击。基本上厂家非常担心安全性,但要在可使用的足够安全性与成本需求之间取得平衡是比较困难的。例如,在使用过程中采用对使用者不透明的高安全措施会伤害使用性。而且,在制造阶段采用高安全性措施(例如,所有制造活动都在公司内部完成)会提高产品的整体制造成本。
[0004]总的来说,在设备的寿命中有三个阶段需要特别注重安全性:i)制造过程;ii)使用者的一般操作过程;以及iii)技师对设备的维护和修理过程。应当指出的是,设备的使用者不一定是该设备正在处理的内容(例如,在卫星收音机上播放的音乐文件)的拥有者。
[0005]设备的制造经常是通过一个或多个第三方来完成的。例如,厂家设计的主板/微处理器模块是由第三方供应商制造并预编程的。使用主板制造的终端产品可能在厂家自己的工厂内被组装或在另一个第三方承包商的工厂内被组装。组装过程中,操作系统、软件应用和配置数据通常在最终测试之前被写入设备中,因此组装过程易于被克隆以及遭受其它安全性的破坏。
[0006]特别敏感的数据是以后当设备运行时用于执行内容安全策略,例如数字版权管理(digital rights management,DRM)的内容安全中间件(middleware)。安全中间件和设备本身任何时候都是脆弱的,但在设备被制造时、被部署并关机时以及正在被在行的技师维修时尤其如此。在许多情况下,在这些时间里可以改变安全中间件并因此易于绕过保护这些内容的措施,从而将设备的内容及/或软件应用程序置于风险之中。
[0007]已经存在一些安全工具和应用程序,其试图在设备开机时保护设备并进行用户认证和硬盘加密。然而,在认证过程中的某些重要点这些工具都依赖用户交互行为,因此这些工具通常不适合上述应用场合。而且,许多这种安全工具要求或依赖于设置有智能卡(smart card),而对于厂家而言,在设备中设置智能卡经常会产生过高的成本。因此,如上所述,安全和使用性可能是相冲突的目标。高容量消费性电子设备的成功的一个重要因素是它们易于使用。因此,这些设备的厂商希望在设备中采用对使用者透明的安全措施。
[0008]执行问题长久以来就是厂商关心的问题。开机时保护设备、加密文件系统和执行DRM策略引擎以保护设备和设备所使用的内容已为我们所知。然而,既有的技术经常依赖使用多个需要同时存在且在设备的多层之间协调操作的复杂软件层、BIOS、O/S内核、O/S、驱动器以及应用层。实现多层的操作会比较困难,容易引入错误至设备的操作之中,且可能需要大量额外的程序码。而且,对厂商而言极为重要的是,采用这些安全措施之后应保证如果单个设备受到损害,整个系统不容易失效。
[0009]上述缺点在游戏产业中尤其普遍。游戏机,例如老虎机,包括用于运行游戏、判断输赢和控制付款的硬件和软件。这些软件和硬件易于遭受攻击,使软件或硬件被更换或变更而以一种有利于攻击者的方式运行。因此,维持游戏机的完整性并保护其操作是极其重要的。
[0010]因此,本发明的一个目的是消除或缓解上述缺点。
发明内容
[0011]本发明提供了一种保护装置内的内容并在运行时认证该内容的系统和方法。
[0012]一方面,本发明提供了一种保护将被一个装置使用的内容的方法。该方法包括:通过加密该内容的至少一部分来准备加密的映像,使得可通过使用密钥解密该加密的映像来恢复该部分;在第一签名分量中加密该密钥,该第一签名分量允许使用特定于该装置的信息从该第一签名分量中恢复该密钥;使该装置能够得到包含该第一签名分量的签名以使该装置能够使用特定于该装置的信息从该第一签名分量中恢复该密钥并解密该部分。
[0013]另一方面,本发明提供了一种认证将被一个装置使用的内容的方法。该方法包括:得到包括有第一签名分量的签名,该第一签名分量加密可以从中被恢复的密钥;得到特定于该装置的信息;使用特定于该装置的信息从该第一签名分量中恢复该密钥;以及使用该密钥解密该内容的至少一部分的加密的映像以恢复该部分;其中,如果该部分可运行于该装置,该内容则隐性地通过认证。
[0014]另一方面,本发明提供了一种保护将被一个装置使用的内容的方法。该方法包括:指定该内容的明文第一区和明文第二区;加密该明文第一区以创建加密的第一区;将该加密的第一区和该明文第二区存储在该装置上;以及产生一个签名,其中该加密的第一区和该明文第二区作为该签名的分量,该签名可被用于从该加密的第一区中恢复该明文第一区以使该装置能够使用该明文第一区。
[0015]另一方面,本发明提供了一种认证将被一个装置使用的内容的方法。该方法包括:获取一个签名,其中该内容的加密的第一区和该内容的明文第二
[0016]另一方面,本发明提供了一种保护将被一个装置使用的内容的方法。该方法包括:指定该内容的多个区;存储第一值至该装置上;产生针对该内容的第一区的第一签名,该第一签名包括一个加密第二值的分量,使得该第二值可使用该第一值进行恢复;产生针对该内容的第二区的第二签名,该第二签名包括一个加密第三值的分量,使得该第三值可使用该第二值进行恢复;以及,如果多于两个区,则产生其它签名,其中每个其它签名包括一个加密将被下一个区使用的下一个值的分量,使得该下一个值可使用从针对前一个区的签名中恢复的前一个值进行恢复;其中,该第一值可用于从该第一签名中恢复该第二值,该第二值可用于从该第二签名中恢复该第三值,如果需要,这些之后的值可使用之前的值进行恢复,使得从针对最后一个区的对应签名中恢复的最后一个值可与该第一值进行比较以同时认证该多个区。
[0017]另一方面,本发明提供了一种认证将被一个装置使用的内容的方法,包括:获取存储在该装置上的第一值;获取该内容的多个区中的第一区的第一签名,该第一签名包括对第二值进行加密的分量;使用该第一值来恢复该第二值;获取该内容的多个区中的第二区的第二签名,该第二签名包括对第三值进行加密的分量;使用从该第一签名中恢复的第二值来恢复该第三值;如果多于两个区,则获取其它签名,其中每个其它签名包括对下一个值进行加密的分量;并使用从前一个区的签名中恢复的前一个值来恢复该下一个值;以及,将从该多个区的最后一个区的签名中恢复的最后一个值与该第一值进行比较以同时认证所有这些区。
[0018]另一方面,本发明提供了一种为将被一个装置使用的内容下载新模块的方法。该方法包括:获取该内容的一个组件的进入模块的签名,该组件包括多个模块,每个模块具有签名,该多个模块的其中一个模块是进入模块且该多个模块的其中一个模块是结束模块,该进入模块的签名包括一个对中间值进行加密的签名分量,使得该中间值可使用存储在该装置上的值进行恢复,该结束模块的签名包括一个对下一个值进行加密的签名分量,使得该下一个值可使用该中间值进行恢复,而且,如果还存在除该进入和结束这两个模块之外的模块,该组件的其它模块具有签名,该其它模块的签名包括一个对该中间值进行加密的签名分量,使得该中间值可使用从前一个模块的对应签名中恢复的该中间值进行恢复;从该进入模块的签名中恢复该中间值;获取该新模块的签名,该新模块的签名包括一个对该中间值进行加密的签名分量,使得该中间值可使用该中间值进行恢复;使用从该进入模块的签名中恢复的中间值来从该新模块的签名中恢复该中间值;获取该结束模块的签名并使用从该新模块的签名中恢复的中间值来获取该下一个值;使用该下一个值作为带有密钥的散列函数的一个密钥,并将该带有密钥的散列函数应用至该内容的另一个组件以获取认证码;以及,将该认证码与之前针对该另一个组件产生并存储的认证码进行比较以认证该新模块和该内容。
[0019]另一方面,本发明提供了一种保护游戏机上的数据的方法。该方法包括加密该数据的一部分,并在该游戏机上存储ECPV签名,其中验证该ECPV签名使得该部分可被解密并可被该游戏机使用。
[0020]另一方面,本发明提供了一种保护将被一个装置使用的数据的方法。该方法包括对该数据的多个组件中的每一个组件进行签名以产生多个ECPV签名,其中每个ECPV签名具有可见区和隐藏区,该可见区是该数据的对应组件,该隐藏区是这样的值,当被恢复时,该值可用于恢复下一个签名中的对应值,从该多个组件的最后一个组件的对应签名中恢复的最后一个值可与用于从该多个组件的第一个组件中恢复该对应值的输入值进行比较以认证该数据。
[0021]上述方法特别适合于上述装置为游戏机的场合中。
附图说明
[0022]下面将结合附图举例描述本发明的实施例。
[0023]图1是包含受保护的硬件板的游戏机的立体图。
[0024]图2是包含图1的硬件板的安全绑定系统的示意图。
[0025]图3是描绘安全绑定程序的流程图。
[0026]图4是描绘BIOS加载程序的流程图。
[0027]图5是描绘使用椭圆曲线Pinstov-Vanstone签名方案来产生安全启动证书的流程图。
[0028]图6是描绘使用椭圆曲线Pinstov-Vanstone签名方案来验证安全启动证书的流程图。
[0029]图7是描绘用户认证程序的流程图。
[0030]图8是描绘用户PIN输入过程的流程图。
[0031]图9a是未绑定的硬件板的示意框图。
[0032]图9b是已绑定的硬件板的示意框图。
[0033]图10是描绘维修技师认证程序的流程图。
[0034]图11是描绘安全软件升级过程的流程图。
[0035]图12是描绘安全启动认证过程的流程图。
[0036]图13是已认证的游戏装置的系统布局的示意框图。
[0037]图14是描绘使用椭圆曲线Pinstov-Vanstone签名方案来验证图13中的硬盘的流程图。
[0038]图15是已认证的游戏装置的另一系统布局的示意框图。
[0039]图16是已认证的游戏装置的另一系统布局的示意框图。
[0040]图17示出图13的实施例中的产生椭圆曲线Pinstov-Vanstone签名的示意图。
[0041]图18是具有受保护的硬件板和用于下载游戏文件的网络连接的游戏机的示意图。
[0042]图19是图18的硬件板的示意图,其示出链式签名验证程序。
[0043]图20是图19的硬件板的示意图,其示出当下载新游戏文件时的验证程序。
[0044]图21(a)-23(b)是描绘针对图19的游戏组件模块的签名产生的流程图。
[0045]图22是描绘针对图19的权限模块的签名产生的流程图。
[0046]图23(a)-23(b)是描绘针对图19的平台组件模块的签名产生的流程图。
[0047]图24是描绘针对游戏组件模块的签名验证的流程图。
[0048]图25是描绘针对权限组件模块的签名验证以及使用其输出来验证带有密钥的散列的流程图。
[0049]图26是描绘针对平台组件模块的签名验证的流程图。
[0050]图27是描绘针对新下载游戏文件的签名验证的流程图。
[0051]图28示出针对任意文件系统的链式签名验证程序的示意图。
具体实施方式
[0052]如图1,游戏机10包括使用应用程序15来显示游戏的显示器11。游戏机10还包括输入装置13,用于根据显示内容来与游戏进行互动。硬件(H/W)板12根据使用者与输入装置13的互动来控制显示器11上的游戏。
[0053]为了保护易于遭受攻击的内容,例如H/W板12上的游戏码,该内容在该特定H/W板制造时被绑定至该特定H/W板12中。
[0054]图9a示出未绑定的H/W板12。该H/W板12具有基本输入输出系统(BIOS)14,该BIOS 14初始的时候被刷写有未绑定版本的定制BIOS码(UBI)16以防止用于执行任意码的未绑定板遭窃,尤其是在维修的过程中。该H/W板12的区域17存储有预启动绑定应用程序(PBBA)的预先计算的散列(PBBAH)。PBBA预存储在硬盘驱动器(HDD)20的预启动区23。图9a中的虚线部分描绘了H/W板12在绑定过程中被重写的部分,此将详述如下。
[0055]HDD 20分成三个基本的区,即预启动区23、应用程序分区27(例如,C盘)以及数据分区34(例如,D盘)。数据分区34包括用于存储数据的数据区36。预启动区23的区域25存储PBBA。PBBA处理H/W板12的绑定。应用程序分区27存储H/W测试操作系统(OS)和系统文件28以及H/W测试应用程序32。HDD 20还包括明文(plaintext)主启动记录(master boot record,MBR)22。MBR 22最好是非标准的,以防止HDD 20在任何具有标准BIOS映像14的标准PC平台上执行。MBR 22包括不变的分区表21,因为OS从HDD 20读取该表时,通常要求该表是可识别的格式,因此,该分区表21不被加密。MBR22内驻留的启动加载器(图未示)读取分区表21并跳到HDD 20的第一可启动位置。启动加载器可被修改以防止其被标准BIOS映像14执行。
[0056]分成三个区有助于提升绑定操作的速度,因为分区23和27在HDD 20上占有的空间比数据分区34小很多,从而产生分区23和27的映像基本上也比产生整个HDD 20的映像快。分成区23、27和34也可有助于简化数据恢复操作,因为数据可直接从数据分区34中提取,而不会出现数据36与应用程序分区27中的应用程序32混在一起的可能性。
[0057]已绑定的H/W板12在图9b中示出,其中变更过的元件的标号是在图9a的标号后加后缀“a”。绑定之后,H/W板12将包含有绑定BIOS映像(BBI)14a和充分保护的HDD 20a。
[0058]已绑定的HDD 20a包括图9a所示的未加密的MBR 22和分区表21,以及加密的预启动区23a,其中加密的预启动区23a包括加密的安全启动认证者(secure boot authenticator,SBA)、椭圆曲线公钥(elliptic curve public key,ECPK)和映像密钥文件(image key file,IKF)。加密的SBA最好是存储于所有系统的已知(且固定)位置,以让定制BIOS码16a知道从哪里可以找到它。ECPK和IKF是供SBA使用,用于认证BIOS证书及执行OS。IKF是一个存储映像密钥(IK)的文件,其中该IK是在安全启动过程中被恢复的,此将在以下解释。HDD 20a还包括未加密预启动区23b,其在已知且固定的位置25a存储恢复PBBA(RPBBA)码。RPBBA是明文程序码,其允许系统将已绑定HDD映像重新绑定至新硬件板。没有必要保护RPBBA,因为它不包含任何可能危害系统的敏感信息。
[0059]当H/W板12被绑定之后,应用程序分区27a被加密,且应用程序分区27a包含OS和系统文件28a、应用程序32a以及一个含有登录代理(logonagent,LA)和用户启动PIN掩码(UBPM)的区域31。UBPM用于验证用户输入的个人识别号码(PIN)。在一个实施例中,LA被称为GINAC,其为现有的图形化识别与认证(graphical identification and authentication,GINA)动态库的定制版本。整个应用程序分区27a利用IK进行加密。
[0060]应当了解,如果数据分区36已经利用其它机制给予保护,例如利用数字版权管理(DRM),该数据分区36可以不进行加密,因此其为明文。然而,本范例是使用全盘加密,使得仅MBR 22和预启动区23b是明文。
[0061]BBI 14a包括绑定版本的定制BIOS码16a和区域17a,其中区域17a被修改使得该区域17a还包括大量除PBBAH之外的项目。这些额外项目包括独特认证证书、用于加密和解密SBA的安全启动认证者解密密钥(SBAK)、SBA的散列(SBAH)以及RPBBA的散列(RPBBAH),其中独特认证证书在本实施例中被称为安全启动证书(SBC),SBC在制造段加入至该BIOS固件映像。
[0062]优选的是,在制造过程中,通过将SBC加入至BIOS固件映像的方式将映像24a加密绑定至H/W板12上的BIOS映像14a和其它硬件。希望是在硬件测试完成之后再进行绑定,因为在实践中,没有必要去保护损坏的或功能不正常的H/W板12。
[0063]如图2所示,H/W板12最好是在测试台上时通过使用多个元件的交互方式来进行绑定。绑定是直接由硬件绑定机器(HBM)50来进行,其中HBM50最好是通过通用串行总线(USB)连接52直接连接至H/W板12。绑定过程是间接使用密钥注入系统(KIS)70来完成,其中KIS 70通过安全网络连接62与HBM 50进行通信。
[0064]KIS 70包括控制器72和密钥代理软件75,其中控制器72利用另一个安全网络连接76而连接至服务器74,密钥代理软件75包括在HBM 50上的硬件绑定应用程序(Hardware binding application,HBA)中。密钥代理(KA)75为HBM 50与服务器74之间建立安全连接62。
[0065]硬件绑定应用(HBA)52执行绑定操作并使用KA 75建立与控制器72的安全连接62。通常,HBM 50包括显示器54,用于提供应用程序界面(Application program interface,API)56以使用户能够例如使用便携式电脑来操作HBM 50。从实际角度看,在绑定过程中避免运行其它占用CPU较多的程序是有益的。HBM 50还在数据存储装置55中存储映像24的加密副本53。在一个实施例中,仅服务器74知道对该映像24进行加密的密钥。当HBA 52安全连接至服务器74后,HBA 52获取该密钥并在发送至H/W板12之前重新加密该密钥。HBM 50还负责回传绑定操作的结果给服务器74,使得服务器74可将日志数据回传给控制器。优选的是,设置两种类型的HBM,一类由制造厂商使用,用于执行绑定过程,另一类由技师使用,用于维修或升级H/W板12。服务器74与每个制造厂商共享的密钥相同是较佳的,而每个技师更宜使用不同的密钥。
[0066]KIS 70是一种这样的系统,其用于远程监控装置注册以及计量注入至装置中的独特且不变的信息。于2006年6月12日申请的共同待决的美国第11/450,418号专利申请中完整的介绍了KIS 70,该美国专利申请的内容以参考的方式并入本文中。在本范例中,控制器72是一个计算机系统,其远离制造商/测试工厂,且优选是位于开发该装置的公司里。服务器74位于已经与该装置的开发公司签订合约制造、测试和绑定H/W板12的外部制造商手中。开发商可以是开发并销售游戏机10但至少将H/W模块委托给第三方合约制造的游戏公司。
[0067]服务器74和HBM 50可以在或不在同一个区域,而且,如果它们位于同一个物理区域,安全连接62可通过局域网建立。如下面更详细的介绍,HBM50不仅用于绑定过程,也被技师用于修理、维护和升级。这样,当H/W板12安装在位于例如娱乐场的游戏机10里面的时候,HBM 50可连接至H/W板12。因此,只要安全连接62能够建立而使HBM 50与服务器74之间能够通信,服务器74与HBM 50的相对物理位置关系可以变化。
[0068]控制器72包括硬件安全模组(Hardware security module,HSM)78。HSM 78是一个受保护的设备,其被控制器72使用以执行加密性安全运算,例如加密、解密和签名。一组系统安全向量(System security vector,SSV)存储在数据存储装置83内。每个SSV包含对于每个已绑定的H/W板12而言是唯一的一组数值。这组数值包括SSV标识(SSVID)、主启动PIN(MBP)、初始用户PIN(IUP)、用于该特定板12的映像密钥(Image key,IK)、系统解锁码(Systemunlock code,SUC)以及该SBAK。除SSVID之外,所有这些数值都是随机产生的。该SSVID是一个用于识别SSV的整数值,其优选的是对控制器72产生的每个SSV依次增加1。MBP是当用户忘记它们的PIN时用于进入模块的PIN。IUP是在出货之前密码保护(Pass-code-protection,PCP)选项已经开启的情况下(或者其它用户密码认证机制),用户首次开启系统电源时输入的PIN。如果PCP已经被关闭,IUP就是多余的,因为用户将被要求输入新PIN,此将详述如下。如上述所指出的,IK用于保护映像24a,SUC用于保护IK自身,SBAK是供BIOS 14a使用以保护SBA过程的密钥。
[0069]SSV区块由控制器72预先计算并根据需求而被安全发送至服务器74。根据共同待决的美国第11/450,418号专利申请中描述的原理,服务器74缓存足够(可配置的)数量的SSV以确保在生产过程中服务器74不需要与控制器72通信,并确保在生产过程中服务器74不会产生数据不足。控制器72可定期轮询(Poll)服务器74以判断SSV的缓存量是否为低并根据需要自动加满缓存。控制器72也可从服务器74搜集与绑定过程有关的日志信息。控制器72还包括图形用户界面(Graphical user interface,GUI)81,使用户能够与控制器72进行交互。
[0070]在一个实施例中,控制器72是在基于PC的服务器机器上连续执行的基于Win32的Windows服务,该服务器机器上包含该HSM和安全固件。通过安全连接76产生的请求可使用安全套接层(SSL)连接来建立,其中GUI 81是Apache Tomcat Java Servlet GUI。该界面允许远程查看服务器74上的日志数据,也可以让操作者设置KIS 70内的配置设定。控制器72也最好能提供载入加密数据至数据库83的功能,这些数据之后(或立即)会传送至服务器74。
[0071]服务器74包括HSM 84、椭圆曲线私钥(Elliptic curve private key,ECPRK)80和对应的椭圆曲线公钥(Elliptic curve public key,ECPUK)82,其中HSM 84存储有表明服务器74在给定时刻缓存了多少个MBP的信用池(creditpool)86。服务器74将缓存的SSV的缓存存储在数据存储装置88内。在一个实施例中,服务器74是在基于PC的服务器机器上持续执行的基于Linux的daemon应用程序,该服务器机器包括该HSM 84和安全固件。服务器74接收来自控制器72的SSL请求以接收加密数据,并接收来自密钥代理75的请求以安全传送加密数据,以将数据写入至装置中。服务器74包含存取控制措施,例如密码或PIN码,以防止对系统的未授权的存取,但一旦系统部署后,也要求操作者最低程度的交互。服务器74处理两类请求,即:1)来自两类HBM的解密缓存88内的一个新SSV的请求;以及2)来自技师HBM的从控制器数据库83获取一个旧SSV的请求。
[0072]图3是绑定过程的步骤的流程图。如上所述,控制器72在生产之前轮询服务器74并加满SSV,以确保服务器74具有足够数量的用于该特定生产过程的SSV。控制器74还在生产之后执行日志检索以搜集与绑定过程有关的信息。KIS 70使用的日志报告程序详细介绍于共同待决的专利申请第11/450,418中。
[0073]接着H/W测试过程之后,在一个优选实施例中,H/W板首先在步骤1收集H/W信息,其中H/W信息用于进一步将预启动认证过程绑定至具体硬件,使得映像24只能在该映像24初始被安装的硬件上运行。这有助于防止合法映像24被运行于模拟的或克隆H/W上,反之亦然。H/W信息可包括硬件参数、可识别标识符,例如HDD序列号、H/W板序列号、网络界面卡(NIC)的媒体访问控制(Media access control,MAC)地址、BIOS序列号的任何组合。这些H/W信息在此共同称为HWSN。H/W信息可以任何方式组合及/或相互关联,以创建HWSN。例如,标识符可被链接(concatenate),其链接的结果值经过散列运算而生成HWSN。
[0074]在步骤2,H/W板12通过USB连接52(或其它直接连接界面,例如专门的交叉线缆以太网(COE)连接)而连接至HBM 50并发送H/W信息至HBM 50。然后在步骤3中,HBA52利用密钥代理75(例如,SSL)建立与服务器74的安全连接62,并在步骤4中发送证书请求连同H/W信息至服务器74。在步骤5中,服务器74产生多个值,这些值将在步骤6中通过连接62而发回至HBA 52。
[0075]在步骤5中,服务器74首先从缓存88中获取一个SSV。从SSV中,服务器74得到MBP并计算MBP的散列以创建一个主启动PIN散列(Mater bootpin hash,MBPH)。服务器74也从SSV中得到IUP并计算IUP的掩码(IUPM)。服务器74也利用HWSN和从SSV中恢复的SUC来计算SBC。也请参考图5,SUC是供服务器使用以计算正在进行绑定过程的该特定H/W板12的SBC。在服务器的HSM 84中,SUC、私钥ECPRK和硬件信息HWSN被输入至椭圆曲线Pinstov-Vanstone签名(ECPVS)函数。
[0076]第一签名分量e是通过使用T变换利用私钥ECPRK加密SUC来计算。中间签名分量d是通过对第一签名分量e、服务器74的身份(identify)以及HWSN做散列运算来计算。第二签名分量s然后利用d来计算。这样,产生具有分量(e,s,HWSN)的ECPVS签名,其对应SBC。
[0077]在步骤6中,SBC、SUC、IK、SBAK、MBPH和IUPM通过连接62被发送到HBA 52,然后在步骤7中,服务器74和密钥代理75相互断开连接。在步骤8中,HBA 52将首先使用服务器74之前提供的密钥来得到并解密映像24的一个存储副本53,以及得到并解密SBA的一个存储副本。HBA 52将然后利用IK重新加密映像24(以及MBPH和IUPM),并利用SBAK重新加密SBA。HBA 52然后产生加密的SBA和加密的映像24两者的映像24a。最后,HBA 52产生包含这些新创建的SBC和SBAK的BBI 16a。在步骤9,HBM 50发送加密的映像24a和BBI 14a至H/W板12。在步骤10,已经在H/W板12上执行的PBBA以BBI 14a刷新BIOS 14并将映像24a直接写入HDD 20中。最后,利用SBA码编写ECPUK,因此ECPUK成为SBA码的一部分。
[0078]在步骤11,PBBA 26回传绑定状态信息至HBM 50,HBM 50与H/W板12之间在步骤12断开连接。HBM 50然后在步骤13使用密钥代理75来重新建立与服务器74的连接,并在步骤14准备和发送有关绑定操作的日志报告(例如,包括SSVID)至服务器74。服务器74然后在步骤15存储该日志报告以向控制器72报告,优选的是,该报告稍后(例如,生产之后)进行。在步骤16,服务器74和密钥代理75然后断开相互间的连接。控制器72与数据库83通信以存储所有已被发送至服务器74的SSV。当从服务器74中获取(例如,通过轮询)日志报告后,SSVID从报告中被恢复以将日志数据与数据库83中的具体SSV关联起来。日志也适于包括其它被认为对审核而言是必要的信息,例如,请求中提供的HWSN以及在步骤5中产生的SBC。
[0079]值得注意的是,由于以上介绍的绑定程序涉及到从H/W板各部件中收集和使用具体信息,因此最好是在所有元件都已经组装完成之后再进行绑定。作为更优选的方式,BIOS 14应该在H/W板12安装元件之后并在进行硬件测试之间以标准的未绑定BIOS映像(Unbound BIOS image,UBI)进行刷写。
[0080]当未绑定的H/W板启动后,UBI将识别自己为未绑定并尝试执行HDD上已知位置的PBBA码。UBI 14首先计算HDD上的应当包含该PBBA码(如果绑定)的一个已知区的散列,并比较该散列与存储在BIOS中的PBBAH。如果这些散列不匹配,UBI将不允许PBBA执行。
[0081]参考图4,在正常开机自检(POST)之后,在步骤100中,安全启动程序开始。在步骤101中,BBI码16a计算HDD 20的从加密的预启动区23a开始的头N区块(其中N是{PBBA,ESBA}的最小字节大小)的散列。步骤101中计算的散列与存储在区域17a中的PBBAH进行比较。如果该散列与存储的PBBAH相等,则BBI 14a判断绑定应该进行,即HDD映像24是PBBA的映像,然后在步骤103执行该PBBA。如果该散列与PBBAH不匹配,BBI 14a则在步骤104判断该散列是否与存储在区域17a的SBAH匹配。如果该散列与SBAH相等,则在步骤105,该系统被绑定且该SBA使用也是存储在区域17a中的SBAK来解密,并在步骤106中执行SBA。如果该散列既不与PBBAH匹配又不与SBAH匹配,则在步骤107,BBI 14a在已知位置25a寻找RPBBA并计算那个区的散列。如果在步骤108中,这个散列与存储在区域17a中的RPBBAH匹配,则在步骤109中,BBI 14a执行RPBBA码。如果这些散列都不匹配,则在步骤110,系统中断。
[0082]步骤106详细描述于图6。在步骤111,SBA从BBI 14a启动。该SBA然后在步骤112获取公钥ECPUK 82并搜集HWSN和SBC。如果在步骤113中SBC不能被找到,则系统在步骤114中断。如果SBC被找到,SBA在步骤115中尝试验证H/W板12并恢复SUC。
[0083]同时参考图6,SBA使用ECPVS验证函数来验证H/W板12,其首先结合签名分量e(包括在SBC中)与HWSN以产生一个中间值X。该验证函数然后利用公钥ECPUK 82从X中恢复SUC。如果恢复失败,系统在步骤114中断。如果SUC被恢复,该SUC用于将IK从IKF中解锁出来,其中如果在步骤116中映像24a被成功解密,OS将在步骤118中启动,因此H/W板12隐性地通过了验证。在步骤117中,该IK存放在存储器中。如果步骤116中的解密失败,也就是说,得到的映像是无用的,则在步骤114中系统关闭。因此,如果硬件是初始的硬件但是BIOS 14已经被更换了且使用并非绑定至该硬件的证书,则该SBA将不能正确地解密该映像24a。同样,如果该硬件被更换了,但是BIOS没有变,SBA也不能解密映像24a,因为一定要使用正确的HWSN来得到正确的SUC以解锁IK。
[0084]该映像24a使用插入OS低级别磁盘访问程序的加密界面层(cryptointerface layer)中的映像加密/解密驱动程序(image encryption/decryption driver,IEDD)进行加密和解密。该IEDD使用高强度的对称密钥算法(例如,128位AES标准)对该映像24进行加密保护。当IK存储在存储器中时,该IEDD可访问该IK。
[0085]现在参考图7,当OS 28启动时,在步骤200和202,该OS将进入其自身的认证顺序以使用该LA,例如通过运行GINAC,来识别和认证该系统的操作者。执行该识别和认证的机制通常为winlogon.exe或minlogon.exe(winlogon.exe的简化版),其取决于该OS的配置。可通过更换上述介绍的GINA DLL以得到也在以上介绍过的GINAC的方式来定制该LA的winlogon.exe版本。然而,如果使用minlogon.exe,由于其不包含GINA DLL,该系统应该设计成使得该LA在当外壳程序执行时就立即执行或在另一个确保该LA不会被绕过的适当时机被执行。
[0086]在步骤202的LA被初始化之后,在步骤214中,LA判断PCP是否被启动。如果PCP没有被启动,则用户登录,系统在步骤218进入已登陆状态。然而,如果游戏机10启动了PCP,则在步骤116,LA判断游戏机10是否在一段时间内(例如,15分钟)已被切断电源供应。如果在限定的时间间隔内电源供应没有被切断,则用户已登录状态218被启动。如果电源供应在限定的时间间隔内被切断了,则在步骤220,启动用户PIN输入程序。在登录的时刻或当用户已登录,都可以在步骤222通过输入MPB的方式来更换PIN。在步骤218的用户模式期间,用户可在步骤224随时启动或关闭PCP,或者在步骤212关闭系统。
[0087]应当了解的是,PCP方案在用户认证中的使用只是一个示范性方案。例如,也可使用普通的用户-密码或挑战-响应方案,这样具有各自用户名和密码的多个用户可通过该LA被授权进入该系统。
[0088]步骤220中执行的用户PIN输入更详细地显示于图8中。步骤220开始之后,用户在步骤300被要求输入它们的PIN。当一个PIN被分配后,一个用户启动PIN掩码(UBPM)会被存储,使得下列方程被满足: MBP = PIN ⊗ UBMP 。当对输入的PIN与存储的UBPM进行异或运算时,得到的MBP被执行散列运算且与该存储的MBPH值进行比较,其中该存储的MBPH值是在绑定期间从服务器74接收的。当用户在步骤222更换了它们的PIN,UBPM也产生变化使得原始的MBP不需要变化。
[0089]UBPM 31是从控制器72发送的SSV的IUPM中得到的。当用户购买了游戏机10后,该IUP与这些用户进行通信。优选的是,当游戏机10开机时,PCP默认是开启的,使得用户必须输入它们的PIN以运行游戏机10、更换分配的PIN或关闭PCP。如果用户在步骤224关闭了PCP,则游戏机10并不要求用户如上所述执行步骤220以进入该用户模式。
[0090]如果在步骤394中PIN是正确的,用户将进入用户已登录状态218。如果PIN不正确,在步骤306中,失败计数器的计数增加1而且PCP判断是否这是第一失败的尝试。如果是第一次,在步骤310,定时器,例如三小时定时器被开启以提供有限的窗口供用户输入PIN。如果不是第一次,PCP判断是否这是第五次失败的尝试。如果不是第五次,则用户可在分配的时间内再次输入PIN。如果是第五次失败的尝试,则用户不能再次输入PIN,直到定时器超时(步骤314),这样,在步骤316重置失败的计数器,并且返回到步骤300。
[0091]当用户已登录状态启动且在步骤208服务模式选项被选择,最好是在同时,在步骤210启动技师挑战-响应程序。当技师操作该游戏机10,技师HBM50a通过USB连接52a被连接至H/W板12。该H/W板包括挑战响应客户机程序(challenge response client,CRC),该CRC用于与服务器74上的挑战响应服务器程序(challenge response server,CRS)90配合以控制挑战-响应程序。
[0092]优选的是,技师选择操作单元(例如,游戏机10)的菜单选项来进入服务模式。当该模式被选择时,LA将启动如下文举例说明的挑战-应答程序。
[0093]在图10所示的范例中,LA将首先在步骤1使用随机数字产生挑战(CHAL)。LA然后在与服务器74的CRS 90建立安全连接62a(例如,通过网页)之后,在步骤2发送该CHAL以及系统标识(SIN)至CRS 90,并在步骤3发送该CHAL及SIN。该CRS 90输入CHAL、SIN和私钥ECPRK至ECPVS签名函数以得到响应值RESP,该响应值RESP然后被提供给技师。响应在步骤4通过计算第一签名分量、中间签名分量以及第二签名分量而产生,其中第一签名分量是通过利用私钥ECPRK加密CHAL而计算得到,中间签名分量是通过将该第一分量、服务器的身份和SIN的组合进行散列运算而计算得到,第二签名分量使用该中间签名分量而计算得到,这两个分量加上该SIN就是作为响应RESP的签名。
[0094]CRS 90在步骤5发送该RESP至CRC 92(例如,用于显示),在步骤6,该服务器74与CRC 92断开连接。该LA然后在步骤7验证该RESP。应当了解的是,如果该技师已经连接至H/W板12,CRC 92与CRS 90之间的连接也可以使用HBM 50来完成。
[0095]该LA使用ECPVS验证函数来结合第一签名分量与SIN以获得X值。然后使用从SBA中获取的公钥ECPUK从X中恢复该CHAL。该LA然后比较恢复的CHAL与初始创建的CHAL来验证该CHAL是否仅被该服务器74签名。如果该挑战应答通过验证,则在步骤210该系统进入服务模式,直到服务完成。在步骤212,该系统关闭。
[0096]有几种可能的情形,技师需要访问H/W板12。其中一个情形是当HDD损坏,需要更换时。在这种情况下,技师将重新刷写该BIOS至标准的未绑定BIOS,该标准的未绑定BIOS是存在于上述绑定程序执行之前。该技师安装具有标准生产镜像的新HDD至板中。当系统重新启动时,系统将试图联系HBM50以执行加密绑定。为了加密绑定,HBM 50将与服务器74进行通信。HBM应用程序可存在于建立该通信的同一装置上,例如,密钥代理75或HBA 52。一旦绑定顺利完成,系统将拥有新证书和新加密的映像24。作为一种替代方式,该技师可将该系统更换为一个预绑定H/W板-HDD对。
[0097]另一种情形是当BIOS 14损坏,因此H/W板12最有可能需要被更换时。与上述的情形类似,如果技师更换该H/W板12并插入用户的HDD 20,该安全启动认证程序将假定该硬件未被绑定,因为其将无法找到SBC而无法进入绑定程序。
[0098]另有一种情形是H/W板12和HDD 20都损坏,用户须要一个全新的系统。如果该技师能够连接至服务器74,那么他可以安装新的H/W板和HDD,使用在上述第一种情形中介绍的绑定程序。如果因为技师无法连接至服务器74而无法现场执行该绑定操作,那么可类似于上述替代方式,安装预绑定H/W板12和HDD 20。为了禁止非法使用该预绑定系统,用户PIN对于服务技师而言可以是未知的。当新系统首次启动时,技师将必须进入服务模式(如上所述)以测试该绑定系统。使用者将然后从制造厂或开发商获取新PIN以认证和操作机器10。
[0099]还有一种情形是当映像24中的软件在某些方面遭到破坏时。当服务技师需要访问H/W板12以维修软件时,它们将进入服务模式,其中该服务模式为技师提供用以执行恢复或重新安装应用程序的工具套件。如果OS 28或应用软件32的破坏超出了一定的程度而无法利用服务模式将其维修,该技师可以按照上面的步骤更换损坏的HDD 20,或者也可以按照上面介绍的,用预绑定对更换H/W板12和HDD 20两者。
[00100]对特定技师执行挑战应答的授权可由认证程序来控制,该认证程序用于将该技师登录到制造商或开发商的网络。也可以使用其它机制来确保特定系统允许被服务,例如提供一个启动功能给CRS 90。例如,游戏机10的拥有者可以任何方式联系开发商要求开发商10对该游戏机10提供服务。通过在客户数据库中设置一个旗标(flag),操作者授权对该特定游戏机10(或游戏机的系统)进行服务。当之后某个时刻技师登录到开发商的网络并连接至CRS 90时,该CRS 90联络服务器74以在客户数据库中查找该SIN从而验证该服务是否被授权过。然后,该技师可以继续挑战应答。
[00101]H/W板12可以在某个时间点要求安全软件升级。软件升级安全可使用档案指标(file-point)系统来实现。参考图11,产品(例如,游戏机10)中的档案指标客户端(File-point client,FPC)96使用既有的应用程序二进制文件产生一个加密请求,并在步骤2发送该加密请求至服务器74中的档案指标服务器(File-point server,FPS)94。如此,游戏机10也可以其它方式要求软件升级(例如,定期),而不需要如图11所示的那样需要技术人员。在步骤3,该FPS94在数据库95中搜索所有版本的应用程序二进制文件,在步骤4,FPS 94验证技师正在升级哪个版本的应用程序以及该技师是否被授权进行升级。该FPS94在步骤5取得会话加密密钥,在步骤6加密该升级二进制文件,然后在步骤7将加密的升级文件传回至FPC 96。该FPC 96还在步骤8取得该会话密钥用以在步骤9解密该升级文件。用于执行这些步骤的算法设计成可确保仅具有有效应用程序二进制文件的请求方FPC能够取得该密钥以在步骤10加载该升级文件。
[00102]在一个具体范例中,档案指标系统使用私有密钥建立算法以确保应用程序二进制文件在传送过程中受到保护。当FPC 96请求升级时,其使用欲升级的目标(OU)内的数据产生一个临时密钥(Ephemeral key,EK)。然后,其创建一个包含与OU、系统ID和EK有关的信息的请求数据包。该数据然后被发送至FPS 94,而该FPS 94使用该SID来查询并验证该FPC 96的身份(可能会确认该系统已被授权进行升级)以及得到该系统的SBC的散列。该FPS 94然后使用该请求中的OU信息在其升级目标数据库95中查询该OU的版本。该FPS 94然后产生该EK、计算EK的ECPVS签名,使用该安全启动证书的散列(SBCH)作为确认,并作为一个应答数据包将其回传至FPC 96。
[00103]该FPS 94然后从该两个EK中得到会话密钥(Session key,SK)并使用该SK来加密该升级目标(UO)。该FPS 94然后发送该加密的UO至FPC 96。当该FPC 96收到该应答数据包时,其计算其SBC 18的散列并使用该ECPUK和SBCH来验证该ECPVS签名,以此来认证该FPS 94并恢复FPS的EK。该FPC 96然后从该两个EK中得到该SK并使用它解密该UO。
[00104]该签名的产生可使用ECPVS来执行如下: ECPVS ECPRK ( SBCH , EK ) ⇒ RESP . 该应答可使用ECPVS验证如下: ECPVS ECPUK ( SBCH , RESP ) ⇒ EK .
[00105]在一个范例中,该API 56包括单一函数调用FPC_getUpgrade(sid,appID,curVerID,appFilename,fpsIPAddr,timeout),其中sid是系统标识,appID是应用程序标识,curVerID是应用程序的当前版本标识,appFilename是应用程序二进制文件的文件名,fpsIPAddr是该FPS 94的IP地址,timeout是等待服务器74的应答的时间长度。该函数首先构造加密请求数据包然后连接至FPS 94以传送该请求。该函数然后等待指定的时间以等待应答。当收到该应答时,该函数确认该应答数据包,然后如上所述,解密并存储该新的应用程序二进制文件。
[00106]在该同一个范例中,该服务器API(图未示)包含单一函数调用FPS_waitUpgradeRequest(dbAddr,portNo),其中dbAddr是用于联系升级数据库95的地址标识。该服务器74在标识为portNo的端口等待来自任何FPC 96的套接链接请求。当收到请求时,该函数联络该数据库95以得到用以产生该应答数据包和加密欲升级的二进制文件镜像的必要信息。该FPS 94然后将该应答数据包和加密的镜像发送回该请求方FPC 96。完成之后,FPS 94产生一个通信日志。
[00107]由于该标准平台的开放性和相对不安全性,上述系统是通过将BIOS14和HDD 20的加密身份分开的方式来维持其安全性的。下面介绍系统可能遭受的一些攻击以及系统执行的抵御这些攻击的有效安全措施。
[00108]一种攻击是攻击者试图将它们自己的BIOS刷写至H/W板12以试图绕过该安全启动程序。这种攻击可以把被防止,因为该重新刷写将破坏安全启动程序中必需的SBC。攻击者将不能解密该镜像密钥(SUC),因此将不能解密该映像24。
[00109]另一种攻击是攻击者拆除HDD并试图通过暴力破解(例如,已知明文(Known-plaintest)、选择明文(Chosen-plaintext)、自适应选择明文(adaptivechosen-plaintext)、自适应选择密文(adaptive chosen ciphertext)、相关密钥攻击等)来恢复被加密的映像。因为在系统中可使用具有适当密文长度的高强度、基于标准的加密算法(例如,AES)来抵御这种攻击,因此这种攻击变得不可行。例如,暴力攻击使用分布式计算网络来攻击80位AES密钥可能需要数年—近十年,而且增加密钥的位长使该破解时间呈指数上升。在游戏环境中,这种类型的攻击显然不可行。
[00110]因此可以看出,通过绑定属于特定硬件的数据至存储在BIOS中的证书以及使用ECPVS签名产生和验证,可以对映像24a执行隐性验证。而且,KIS 70的使用使得能够结合专门HBM来实现加密数据(例如,SSV)的分配和计量。在制造过程中使用KIS 70来绑定H/W板12抑制了灰色或非法市场活动,确保载入游戏机10中的内容不会受到第三方协约商的危害。类似地,在维修过程中,使用HBM保护映像24a不会被技师篡改。
[00111]在另一个描绘于图13-17的实施例中,游戏机器10中使用的游戏装置400是使用一次性可编程(OTP)只读存储器(ROM)BIOS 402来认证。该BIOS402是被信任的,因为本质上它是无法被更改的(即,只读)。该BIOS 402用于本实施例中以代替本质上可以被更改的闪存BIOS。
[00112]首先参考图13,该游戏装置400一般包括OTP ROM BIOS 402、硬盘404和系统随机存取存储器(RAM)406。该BIOS 402存储有系统初始化模块408以及ECPV认证者模块410,其中该系统初始化模块408在启动操作中被载入至RAM 406中,该ECPV认证者模块410用于执行硬盘404的内容的ECPV验证和认证。该ECPV认证者模块410存储有在ECPV验证过程中使用的ECPV公钥412和ECPV签名分量s。
[00113]硬盘404包括启动加载器414,其设立操作系统416,而操作系统加载并执行应用程序418。在这个范例中,该应用程序418是运行、显示以及用户在游戏机10上所玩的游戏数据。如图13所示,在本实施例中,启动加载器414和操作系统(O/S)416在硬盘404上被加密,应用程序418是明文,或者不受阻碍的,或者是被解密的或者没有加密的。
[00114]在开机操作时,ECPV认证模块410被执行以在应用程序418执行以前同时验证应用程序418和O/S 416。该验证是根据ECPV签名验证的原理来进行的。
[00115]现在参考图14,以下缩写词被使用。
PubKey=ECPV公钥412
PAC=明文应用程序码(例如,应用程序418)
EBLC=被加密的启动加载器码(例如,启动加载器414)
EOSC=被加密的操作系统码(例如,O/S 416)
PBLC=明文启动加载器码(例如,解密后的启动加载器414’)
POSC=明文操作系统码(例如,解密后的416’)
[00116]在这个范例中,该ECPV签名包括分量(EBLC+EOSC、s、PAC),其中PAC是可见的部分,例如明文应用程序418,EBLC+EOSC是签名分量e,s是另一个ECPV签名分量。这些签名分量连同ECPV公钥412被ECPV认证模块410一起输入至ECPV验证函数420。签名分量e和s根据ECPV原理来计算,例如,是在以上讨论的绑定和制造过程中计算这些分量,而这些必要的分量被写入不可变更的BIOS 402中。
[00117]例如,如图17所示,硬盘404在初始完全未加密的情况下可能被分割成一个可见区V和隐藏区H,其中该可见区V包括应用程序418,而隐藏区H包括未加密的启动加载器414’、未加密的O/S 416’以及视需求而加入的一定量的冗余。在该范例中,该冗余加入至未加密的启动加载器414’及/或O/S 416’中,构成隐藏区H。这些冗余的数量应该由游戏管理者存储,用于以后在运行时进行赔付验证,此将在下面详细解释。
[00118]该隐藏区H使用PubKey进行加密而产生该签名分量e,其等于EBLC+EOSC。PubKey是根据签名实体(图未示)计算的随机数字而产生。如图17,该签名实体还具有签名私钥a。分量e与可见区V(等于PAC)链接并进行散列运算以创建一个中间分量d。该签名分量s然后使用中间分量d、私钥a和随机数字k来计算。该签名分量s连同ECPV公钥412可一起被写入认证者模块410或者可被存储于硬盘404上的合适位置。在本范例中,得到的签名就是(e,s,V)或者等同于(EBLC+EOSC,s,PAC)。
[00119]回到图14,该ECPV验证函数420包括中间分量d的代表d’,该代表d’例如是通过链接方式结合签名分量e(例如,EBLC+EOSC)与可见区V(例如,PAC)而得到。然后通过首先计算X=sP(其中P是一个椭圆曲线上的一个点),然后计算Y=e·PubKey,最后从X中减去Y而得到解密钥匙Z。解密钥匙Z然后用于从EBLC+EOSC中解密出PBLC+POSC。
[00120]在开机顺序(boot up sequence)中,该系统初始化模块408首先被加载至系统RAM 406并被执行。该系统初始化模块408执行开机自检(POST),但由于BIOS 402是不可变更的,因此不需要执行自我完整性检查。该系统初始化模块408然后加载并执行ECPV认证者模块410。该认证者模块410然后访问ECPV公钥412以及存储于其中的签名分量s,获取加密启动加载器414和加密OS 416(EBLC+EOSC)的副本以及明文程序418(这些是临时存储于系统RAM 406中),并将这些输入至ECPV验证函数400。如上所述并如图17所示,该ECPV验证过程恢复明文启动加载器414’(PBLC)和明文OS 416’(POSC)。该PBLC和POSC然后被载入系统RAM 406中,然后PBLC开始运行。该PBLC然后执行POSC,而POSC继而载入并执行已在ECPV验证过程中载入至系统RAM 406中的应用程序418。
[00121]由于PAC是用于ECPV验证,如果该应用程序418已被篡改,例如增加程序码,该应用程序418将不能正常运行,因为恢复的是错误的启动加载器414’和/或OS 416’。因此,开机时的认证是隐性的。
[00122]当在运行时验证程序码时,例如,为了从游戏装置400验证获胜结果,应用程序码418和EBLC和EOSC(在开机顺序中已经存储在系统RAM 406中)被用于执行另一种ECPV验证。为了验证获胜,游戏管理者可被呼叫至游戏装置400位置,并例如利用USB连接(图未示)插上外围装置(图未示)。由于该外围装置是在游戏管理者的监督之下,因此该外围装置应该是被信任的。该应用程序码418、EBLC和EOSC、PubKey以及签名分量s被输入至存储在外围装置上的ECPV验证函数420中,该明文PBSC+POSC被恢复,其就是该隐藏区H。如上所述,H具有或被给予特定量的冗余,例如,预订数目的零。该外围装置然后可以检查H的冗余,如果其与预期冗余匹配,则应用程序码418没有被篡改并通过验证。
[00123]为了从游戏机10验证获胜结果的目的,如果运行码通过验证,则游戏管理者可支付现金或点数。该运行时验证使游戏管理者能够确保发出获胜的通知的应用程序码(PAC)没有在开机顺序与获胜之间被篡改。该开机顺序主要用于验证当关机时游戏机没有被篡改。由于开机验证是隐性的,任何篡改都将导致无法正常运行的误码。
[00124]现在参考图15和16,也可以使用其它系统布局。
[00125]在图15所示的第一可选择实施例中,仅启动加载器414被加密,而OS 416’和应用程序418是明文的。对于本实施例,隐藏区H是PBLC,可见区是PAC+POSC,ECPV签名是(EBLC、s、PAC+POSC),该签名是当输入上述可选择的H和V值时使用以上介绍的原理计算而成。因此,当在运行时验证时,ECPV验证将检查启动加载器414’的冗余,并与之前一样,在开机时进行隐性验证。图15所示的实施例简化了解密和存储器要求,因为启动加载器414’是一笔比OS 416’小的软件。
[00126]现在参考图16,在应用程序418相对比较小(相对于可用存储器)的情况下,应用程序418可被加密,而被加密的应用程序418’存储于硬盘404上。在本实施例中,该应用程序418的明文版本是隐藏区H,其中签名分量e现在是加密的应用程序EAC。可见区将会是明文启动加载器PBLC和明文OS POSC,ECPV将会是(EAC、s、PBLC+POSC)。因此,ECPV验证要么在当运行时验证时检查明文应用程序418的冗余,要么跟之前一样在开机时进行隐性验证。在ECPV公钥412得到保护的情况下,加密应用程序码418可以给予应用程序码418’一些防止遭窃的保护。如果对方能够盗窃硬盘404,它们将不能恢复明文应用程序码418,除非它们知道ECPV公钥412。
[00127]因此,可以看出图13至17所示的实施例使OS 416和应用程序418能够使用ECPV签名验证同时得到验证。不可变更的OTP ROM BIOS 402是可以被信任的,因为其无法被修改,因此在开机时,没有必要验证BIOS 402而可直接认证OS 416和应用程序418。ECPV签名验证可用于验证开机顺序。也可用于运行时的验证,例如,用以验证获胜结果。这些验证可用于使游戏管理者确信当游戏机400在关机时和运行时应用程序码418没有被篡改。
[00128]图18至27描绘了认证游戏机200的另一个实施例。与上述实施例类似,游戏机200包括显示器202和输入机构204,使得游戏者可与游戏机200交互并玩载入游戏机200上的一个或多个游戏。游戏机200还包括受保护的硬件板(H/W)206。在本实施例中,硬件板206通过数据连接208连接至网络210以使游戏机200能够下载(或升级至)新游戏文件212。应当了解的是,网络210可以是内部或局域网,或可以是外部网络,例如因特网,这些取决于游戏机200所处的位置。例如,如果游戏机200是在娱乐场里,可能有多个游戏机连接至同一局域网210,该局域网可能具有一个用于控制游戏内容分布以及监控游戏机等用途的服务器(图未示)。在另一个范例中,游戏机200也可以是位于公共区域的单机,其中该游戏机200通过网络连接至外部实体或服务器(图未示)。
[00129]图18所示的硬件板206具有BIOS OTP ROM 214、存储器216、游戏组件218、权限组件220以及平台或OS组件222(即,游戏机200使用的内容的部分)。其中存储器216用于在游戏机200操作时存储数据和/或在需要时永久保存数据。游戏组件218用于运行游戏文件212。权限组件220用于存储权限相关的数据,例如游戏规则,赔率等。
[00130]现在参考图19,其更详细地显示硬件板206的组件。ROM 214包括系统初始化模块224(与前述的系统初始化模块类似)、用于启动游戏机200的验证代理226和用于启动链式签名验证程序的一个输入值,在该范例中,该输入值是公钥KPUB-A。KPUB-A值作为一个输入值而被输入至这个程序的链式密钥或值恢复步骤中的第一个步骤,该程序的大致流程也描绘于图19。游戏组件218、权限组件220和平台组件222中的每一个都包括进入模块233、一个或多个其它模块232和结束模块234。每个模块232、233、234都是一部分程序码、一个文件、文件集和或数据的其它部分,当与同一组件内的其它模块232、233、234结合起来时,就构成了该组件的一组完整的数据。在该范例中,游戏组件218包括游戏进入模块、任何数目N的其它游戏模块232和游戏结束模块。其中,其它游戏模块232在后面将被称为游戏模块1、游戏模块2、......、游戏模块N。
[00131]在本范例中,权限组件220仅包括一个模块232,也就是权限模块,因此不需要进入模块233和结束模块234。平台组件222与游戏组件218类似,包括平台进入模块、任意数目的其它平台模块232以及平台结束模块。在本范例中,平台模块有M个,在后面被称为平台模块1、平台模块2、......、平台模块M。
[00132]在图19所示的配置的情况下,在游戏模块218和平台模块222中,模块232都可以移除、插入、更换、移动、重新排列等,而不需要对签名验证程序进行重新编程。在本范例中,如下面将要介绍的,进入模块233总是被首先进行验证操作,因为它们是使用前一个组件的结束模块234的输出进行签名,或者对于游戏组件218而言是使用KPUB-A进行签名。针对这些其它模块232的用以恢复这个链所需要的下一个值的操作的顺序是参考存储在存储器216中的组件清单(Component Manifest)231而定。
[00133]每个模块232、233、234都是在被载入硬件板206上的各自组件之前进行签名。该签名中存储的一个值使用恢复函数228进行恢复。该恢复函数228是靠一组签名分量来运行以恢复一笔加密于其中的数据,这组分量与每个模块232、233、234有关。恢复函数228与一个对应的签名产生函数相关,该签名产生函数加密或隐藏在该链式验证程序的每个步骤中被恢复的数据的一部分。被恢复的数据然后作为一个输入而被输入至该恢复函数228在该链中执行的下一个动作。因此,这些模块232、233、234不是在函数228的每个动作时个别认证,而是通过比较从最后组件的结束模块234上的签名中恢复的最后输出与输入该链的初始输入来进行隐性并同时认证。这样,硬件板206的整个内容可同时进行认证。优选的是,恢复函数228是与签名产生和验证函数相关,最好是ECPVS方案,此将在下面详细介绍。如图19所示,对同一组件内的每个模块232而言执行的恢复函数228会恢复相同的值或密钥,使得这些游戏模块或平台模块(即,除进入或结束模块之外的那些模块)能够被移除、更换、增加等,而不需要重新配置整个系统。
[00134]当一个新的模块被添加,这个链会被加长,因为在开机时需要执行另一个验证步骤。然而,由于该输出与其它模块的输出相同,需要在这些组件之间传送的各输入和输出将不会受到影响。如果需要依赖组件清单231来确定模块被验证的顺序,则当新游戏被加入时,该组件清单应该进行更新。
[00135]图20描绘了从网络210中下载新游戏文件212的情形。对应于新游戏文件212的名称为游戏模块N+1的新游戏模块被加在游戏组件218的这组模块232的末端。如图19所示的这个链式结构使得新游戏模块可在下载时被验证,而不需要重启整个游戏机200。让新游戏模块可以在不重启系统的情况下被加入,可以节约大量的时间,而且这些新游戏可在游戏机200运行时被加入。
[00136]该存储器216还存储有认证码,例如,HMAC,该HMAC包括使用带密钥的散列函数231产生的该平台或OS组件222的内容的密钥散列。在本范例中,用于产生该HMAC的密钥是使用在开机时的链式验证顺序期间被恢复的中间值(KPUB-C)而产生的。
[00137]如上所述,每个模块232、233、234都被签名,优选的是使用ECPVS方案,使得每个模块的可恢复的或隐藏区H当作该链中恢复函数228的下一个动作的输入(例如,公钥)。用于对这些模块232、233、234进行签名的值是私钥,其具有对应的公钥。虽然认为是“公开”的,但除了KPUB-A值(存储在ROM中,需要该KPUB-A值来启动该链)以外,这些被使用的公钥不应该存储在游戏机200上,因为这些密钥可被用于恢复游戏机200认证所需要的输入。对应的私钥可安全地产生并存储于适当的管理者位置,例如游戏机200制造商和/或游戏管理者(调试员,娱乐场管理者等)。这样,受到信任的一方将负责在安装游戏机200之前的游戏模块和平台模块的签名并且负责新游戏模块的签名。在此所描述的范例中,使用了五个密钥对,即,KPUB-A/KPRIV-A、KPUB-X/KPRIV-X、KPUB-B/KPRIV-B、KPUB-C/KPRIV-C、及KPUB-Z/KPRIV-Z。应当了解的是,如果游戏机中有更多或更少的模块/组件,可以使用更多或更少的密钥对。由于该密钥对KPUB-C/KPRIV-C用于权限模块的签名,而该权限模块包含游戏规则和类似内容,这个密钥对应该由游戏管理者掌握和/或产生,且对权限模块而言应该是唯一的。如下面将要被介绍的,这也使游戏管理者能够保留HMAC的副本以执行平台模块222自身的认证,例如,在赔付期间。
[00138]图21(a)至(c)描绘了签名产生步骤,其使用ECPVS对游戏组件模块进行签名。在图(a)中,游戏进入模块使用KPRIV-A进行签名。隐藏或可恢复的区,即在签名中欲被加密的值是KPUB-X。在步骤250中,第一签名分量eGENT通过使用密钥Z加密KPUB-X而产生,而该密钥Z是从随机产生的临时公钥/私钥对中得到。在步骤251,中间分量d通过对分量eGENT和游戏进入模块的内容的组合(例如,链接)进行散列运算得到。第二签名分量sGENT然后在步骤252中产生,其中该第二签名分量sGENT是中间分量d的函数,并使用私钥KPRIV-A和临时私钥计算得到。与上述实施例相似,ECPVS中的分量“s”可例如使用Schnorr签名算法来产生。步骤253中提供的签名结果包括分量eGENT和sGENT和游戏进入模块,其可在对相应模块执行验证函数的时候直接从游戏组件218中得到。
[00139]在图21(b),示出了对其它游戏模块,即从1至N的游戏模块进行签名的一般程序。可以看出,每个其余模块232(从1至N)都是使用相同输入Z和KPRIV-X进行签名,而且每个都将加密或隐藏相同的值。这样,其它模块232可按任何顺序被验证,因为每个模块需要相同的输入,并且产生相同的输出(当这些模块是可靠的),该输出用于该链中签名恢复函数228的下一个动作。在步骤254,KPUB-X使用从随机产生的临时密钥对中得到的密钥Z进行加密,该KPUB-X作为计算第一签名分量eGltoN的输入,该第一签名分量eGltoN然后在步骤255中与对应游戏模块1至N链接并被执行散列运算以产生中间分量d。然后在步骤256中,第二签名分量作为d的函数使用私钥KPRIV-X和临时私钥而计算产生,而在步骤257得到签名结果。
[00140]在图21(c)中,步骤258至261示出了对游戏结束模块进行签名的程序。可以看出,该签名的产生方式与图21(a)和21(b)所示的方式类似,然而,在图21(c)的情形中,Z值是用于加密另外一个值KPUB-B,而KPUB-B将被用于权限组件220的验证。因此,步骤258至步骤261不需要进一步解释。
[00141]现在参考图22,示出了对权限模块进行签名的程序。该权限模块使用值KPUB-B作为验证过程中的输入,而且该值是从游戏结束模块的签名中恢复的。创建权限模块的签名部分地是通过在步骤262利用Z值加密另外一个值KPUB-C以产生第一签名分量eJM,以及使用私钥KPRIV-B产生第二签名分量sJM的方式来完成的。之后,值KPUB-C可之后从权限模块的签名中恢复。一旦恢复之后,值KPUB-C用作一个输入而被输入至针对平台组件模块签名执行的恢复函数228的链中。在步骤263,中间分量d通过对第一签名分量eJM和权限模块的链接执行散列运算而得到,在步骤264,第二签名分量sJM作为中间分量d的一个函数(并使用密钥KPRIV-B)而产生。步骤265提供的签名结果是第一和第二签名分量eJM和sJM以及权限模块。
[00142]如图23(a)至(c),示出了对平台组件222的模块232、233、234进行签名的流程图。可以注意到,平台组件222的模块232、233、234的签名方式与游戏组件218的对应模块232、233、234的签名方式相同,使用值KPUB-C作为平台进入模块的输入。恢复函数228在平台模块1至M的每次应用都恢复相同的值KPUB-Z,而该值KPUB-Z最终是作为一个用于从平台结束模块的签名中恢复KPUB-A的输入,这也可以从图19中看出。对于平台组件222:KPUB-Z使用临时密钥Z值进行加密,KPRIV-C用于产生平台进入模块的签名;KPUB-Z使用临时密钥Z进行加密,KPRIV-Z用于产生后续模块的签名;KPUB-A使用临时密钥Z进行加密,KPRIV-Z用于产生平台结束模块的签名。图23(a)的步骤266-269描绘了对平台进入模块进行签名的程序,图23(b)的步骤270-273描绘了对平台模块1-M进行签名的程序,图23(c)的步骤274-277描绘了对平台结束模块进行签名的程序。可以看出,在图23中,平台模块的签名的产生方式与游戏模块类似,因此不需要进一步介绍。
[00143]现在参考图24-26以及已经介绍于上的图19,现在将讨论在游戏机200开机顺序中执行链式签名验证的程序。
[00144]在链式签名验证程序执行之前以及游戏机已经启动或开机等情况下,在开机顺序期间,验证代理226被启动,读取或通过其它方式得到写在ROM 214上的值KPUB-A的副本,并且访问组件清单231以确定其它游戏模块232被操作的顺序。如上所述,游戏进入模块首先被操作,因此验证代理226随后在步骤278(见图24)取得游戏进入模块的签名分量eGENT和sGENT以及数据(即,游戏进入模块的“签名”)。
[00145]根据ECPVS签名验证的步骤,在步骤279,中间分量d’的产生方式与签名产生过程中的一样,即使用第一签名分量eGENT和游戏进入模块(例如,通过链接这两笔数据并对其结果做散列运算)。在步骤280,解密密钥Z使用第二签名分量sGENT、中间分量d’以及值KPUB-A来得到。解密密钥Z然后用于步骤281以从第一签名分量eGENT中解密或者“恢复”值KPUB-X。然后步骤282输出被恢复的值KPUB-X,使得该值KPUB-X可作为一个输入而被输入至针对其余游戏模块1至N以及最终针对游戏结束模块执行的恢复函数228的第一个执行。步骤283至287针对每一个其余游戏模块1至N重复执行(即,直到i=N),其中每次步骤286中被恢复的值KPUB-X被输入至函数228的下一次操作中。在针对其余模块232的顺序链的最后,从游戏模块N的签名中恢复的那个版本的KPUB-X随后在步骤289至293中用于恢复隐藏在游戏结束模块的签名中的下一个密钥。KPUB-X用于在步骤292中恢复值KPUB-B,该值KPUB-B然后在步骤293被输出,该输出作为一个用以从权限模块的签名中恢复另一个值的输入,如图25所示。
[00146]可以理解的是,由于ECPVS使得能够控制什么被加密或“隐藏于”签名中的内容,因此ECPVS可用于恢复一个可预知的输出,该可预知输出随后可用作一个可预知输入而被输入至该链中的下一步。换句话说,信息的隐藏区H是要求被输入至下一个模块的输出。因此,执行该签名时,可将游戏码作为可见区而将下一步所需要的输入作为隐藏区。在使用游戏码和该输入进行的签名验证期间的这些恢复步骤将恢复该隐藏值,前提是该程序码和/或输入没有受到损害。恢复函数228的每一次执行产生一个未被认证的输入至下一阶段,然后,如果任何一个模块受到损害,在该链的末尾的结果将不会提供允许整个内容通过认证的正确输出。这样,恢复函数228的每一次执行都一定要恢复合适的输出以确保不正确的值不会在该链中传递。这使得该游戏机200能够使用该恢复函数228的最后一次应用中恢复的结果来隐性地认证硬件板206上的整个内容。
[00147]图25中的步骤294-299描绘了使用权限模块的签名和值KPUB-B来恢复值KPUB-C的步骤,而值KPUB-B是从游戏结束模块中恢复的。值KPUB-C既作为一个输入而被输入至针对平台组件222的恢复操作链,又用于在步骤300产生HMAC,该HMAC在步骤302被储存供以后当下载新游戏模块时认证平台模块22之用。该HMAC通过使用带密钥的散列函数231对平台模块22的内容作散列运算而产生,其中该带密钥的散列函数231使用从KPUB-C得到的值作为密钥(例如,密钥=f(KPUB-C))。该HMAC的产生可与针对平台组件222的链式验证并列进行(如图所示),也可以在针对平台组件222的链式验证之前进行,或者在启动认证程序的最后进行。
[00148]如果包含在游戏组件218中的游戏码已经被篡改,如上所示和描述的针对游戏组件218的模块进行的恢复操作链将恢复错误的密钥KPUB-C。类似地,如果平台组件222的内容已经被篡改,即使恢复了正确的值KPUB-C,当安装或升级游戏机200时,HMAC也不会与通常由适当游戏管理者掌管的类似HMAC相同。然而,如果该链中其余步骤没有产生可靠的输出(表示硬件板206是可靠的),该HMAC将不正确,但是在任何情况下我们都不需要它,因为在这种情况下,游戏机200将不得不关机以改正这个问题。
[00149]现在参考图26,在步骤305至309中,被恢复的值KPUB-C然后用于从平台进入模块中恢复KPUB-Z。这个恢复是通过获得签名分量ePENT和sPENT以及平台进入模块的内容而完成的。在步骤308,该值KPUB-Z从分量ePENT中被恢复,并在步骤309输出用于该顺序中的下一次验证。在步骤310至315,该值KPUB-Z用于恢复在该链中使用的下一个KPUB-Z。当所有这些其它模块232都已经被验证操作过,从平台模块M的签名中恢复的KPUB-Z的最终版本被输送至恢复函数228以使用步骤316至320来恢复值KPUB-A。然后在步骤321中,该输出KPUB-A与存储在BIOS OTP ROM 214中的KPUB-A进行比较以认证硬件板206。如果这些值匹配,则该启动顺序已经成功完成,在步骤303中,可以玩游戏并可以开始执行常规运行操作。如果该输出KPUB-A与ROM 214中存储的值不匹配,那么这表示一个或多个组件内的一个或多个模块已经遭到损害、篡改或在某些方面被破坏。那么,在步骤304中可启动一个错误或关闭功能以停止游戏机200的运行。
[00150]如上所述,本实施例中,在运行时,新游戏文件212可被下载至游戏机200中。当下载新游戏文件212后,在允许玩这个游戏之前,新游戏模块232被插入并被验证。
[00151]图27示出当新游戏文件212已在步骤322中被下载后该新游戏文件212被认证的流程。应当理解的是,如果新游戏模块是可靠的,该新游戏模块会具有一个游戏的签名,因此该新游戏文件212应该已经被签名过。虽然该游戏机200可以被编程为用于负责当每个新游戏到达时为每个新游戏进行签名,但通常游戏规范将不会允许这么做,而必须要有一个被信任的第三方(例如游戏管理机构或者其CA)来签名并使该新游戏文件212可用于该游戏机200。
[00152]在步骤301,根据上述步骤278至282,该值KPUB-A从ROM 216中读取并与游戏进入模块的签名结合使用以恢复KPUB-X。这些其它模块232可以被跳过,而值KPUB-X直接从新游戏模块N+1中恢复KPUB-X
[00153]在步骤325,从游戏进入模块中恢复的值KPUB-X与在步骤324得到的新游戏模块N+1的签名分量结合使用以产生中间分量d’。然后执行步骤326至328以恢复值KPUB-X,然后在步骤328中,该值KPUB-X用于根据步骤289至293从游戏结束模块中恢复KPUB-C
[00154]既然KPUB-C已经从权限模块中被重新恢复,其然后可在步骤330用于计算散列验证值HMAC’。与开机时产生HMAC时的一样,值KPUB-C用于得到带密钥的散列函数230的密钥,当该密钥存在时,其被应用于平台模块222的内容上,而当HMAC已经创建之后该密钥将从存储器中被移除。其中,该带密钥的散列函数230应用于平台模块222的内容上。如果值匹配,在步骤303游戏机200可以继续运行。如果不匹配,则要么是新游戏模块被破坏了,要么就是自开机顺序以后平台模块222的内容已经被篡改了。这表明游戏机200存在问题,则在步骤304执行错误或关闭功能。
[00155]因此,新游戏文件151可被下载并被添加至游戏组件218而不需要重启系统以及重新配置该签名链。仅需要针对游戏模块218的进入和结束模块233和234再次执行认证操作,而其它模块232可以被跳过。通过在开机时存储HMAC,当增加新游戏时,不需要为了认证硬件板206的整个内容来执行针对该平台组件222的链式顺序。因为该HMAC是利用中间密钥来计算的,仅需要恢复中间密钥来创建该值HMAC’,这也是可能的。在本范例中,权限模块的签名用于恢复该中间密钥KPUB-C。为获得该操作的输入,该游戏结束模块的签名的加密部分需要被恢复。
[00156]图24-26所示的验证链的一个替代方式是将值KPUB-A作为除结束模块234之外的每个模块的输入。这将避免不得不以一个具体的进入模块233为目标的情形,但这将不会以相同方式连接每个模块232的输入和输出。因此,虽然每个模块232可以用KPUB-A来签名,但在此描述的范例是优选的,因为任何模块的破坏都将在该链中传递而导致该输出不可靠。
[00157]如图27所示的下载验证程序有几个替代实施方式,其应该根据应用的本质而加以选择使用。在此所示的程序通过在存储器216中存储HMAC并恢复KPUB-C来认证所储存的HMAC的方式,跳过从其它模块232的签名中恢复值KPUB-X的步骤,跳过从平台模块的签名中恢复值KPUB-B、KPUB-Z和KPUB-A的步骤。这避免了游戏机200的完全重新启动。在游戏环境中,每次下载新游戏都要重启是令人讨厌的,尤其是在一般游戏机200每次运行时都要下载新游戏的情形中。在其它重启不那么讨厌的应用中,每次在新游戏被添加时,验证代理226可在开机时放弃产生HMAC,而只是再认证硬件板206的整个内容(新游戏模块N+1插在游戏模块N之后)。其它替代方式包括如图27所示的跳过其它游戏模块232,但不使用HMAC而只是恢复用于该链的其余步骤的值,或者跳过其它游戏模块232但之后仍然使用HMAC来认证平台组件。
[00158]图28示出了根据上述讨论的原理来认证基于计算机的系统中的一个或多个程序块344的一般实施方式,其中该系统包含将被加密之后又在其它时刻被认证的数据。内容或程序块244的一个或多个部分中的每一个部分具有进入模块345、结束模块348和一个或多个其它模块346,或者类似于权限模块,可仅有一个模块。应当了解的是,任何程序块244也可具有两个模块,因此仅包括一个进入模块345和一个结束模块348。将一个组件的输出输入至下一个组件,并且当整个链式程序执行完毕时,将输出与原始输入进行比较,这样,链式验证程序可以用来隐性并同时认证整个系统的内容。
[00159]图28所示的系统包括ROM 340,该ROM 340包括用于执行链式验证程序的验证代理342和该输入。可以看出,该输入用于运行恢复函数228(用于执行信息恢复操作-例如,使用ECPVS)以从程序块1的进入模块中恢复值A,该值A然后用于从每个其它模块346中恢复A。该值A然后用于从结束模块中恢复值B,该值B然后使用于该链中的下一个组件,程序块2。该值B用于从程序块2的进入模块中恢复值C,该值C然后用于从每个其它模块346中恢复值C。该值C然后用于从结束模块中恢复值D。该值D然后输入至下一个程序块344,最终值D’用于在最后一个程序块M中恢复值E。值E用于从该程序块M的每个其它模块346中恢复值E,然后从程序块M的结束模块中恢复该输出。
[00160]可以看出,在上述一般实施方式中,恢复函数228的使用允许我们可以指定可恢复区,这使我们能够可预测地对每个模块进行签名使得它们可在一个链中连接在一起,其中该最终的输出用于认证整个系统。如果任何一个模块受到破坏,该输出将不正确且与该输入不匹配,因为只有当使用适当的输入时才能恢复正确的值。通过将模块链起来,任何被破坏的程序码都将导致不正确的值并在该链中传递,从而该输出将被拒绝。因此,在此描述的链式验证根据在该链末尾的该输出与该输入的比较来隐性地认证每个程序块344以及其内的每个模块。这也使得所有程序块可同时被认证。
[00161]应当了解的是,图28所示的一般实施例也可以使用密钥散列(例如,HMAC)以提高认证游戏机200范例中的效率。也应当了解的是,该一般实施例可以将同样的原理应用在多个程序块344上,其中每个程序块344仅具有一个单一模块,这种情形下,从一个模块的签名中恢复的值用作一个输入,用于从下一个程序块的下一个模块中恢复另一个值。因此,可以看出,在此所示的链式验证程序可适于多种文件结构和数据存储方案,使得从一个程序块的签名中恢复的值被输入至下一个程序块的签名的验证函数中,以恢复另一个值。该验证程序的链包括希望被保护的每个程序块,而且最后恢复的值应当与针对一组可靠数据的输入值相同。
[00162]虽然已经结合一些具体实施例对本发明做了一些介绍,但本领域的技术人员应当了解可以对其进行一些修改。

Claims (49)

1.一种保护将被一个装置使用的内容的方法,包括:
通过加密该内容的至少一部分来准备加密的映像,使得可通过使用密钥解密该加密的映像来恢复该部分;
在第一签名分量中加密该密钥,该第一签名分量允许使用特定于该装置的信息从该第一签名分量中恢复该密钥;
使该装置能够得到包含该第一签名分量的签名以使该装置能够使用特定于该装置的信息从该第一签名分量中恢复该密钥并解密该部分。
2.如权利要求1所述的方法,其中该签名是椭圆曲线Pintsov-Vanstone(ECPV)签名,而特定于该装置的信息是可见信息,该密钥可通过使用该第一签名分量和特定于该装置的信息产生用于解密该第一签名分量的解密密钥的方式进行恢复。
3.如权利要求1所述的方法,该装置包括存储该内容的硬件板,该硬件板包括基本输入输出系统(BIOS),该内容包括启动区、应用程序区和数据区,其中该签名存储在该BIOS中并在该启动区的开机顺序期间被访问以恢复该密钥。
4.如权利要求3所述的方法,其中特定于该装置的信息包括至少一个硬件板序列号以将该签名绑定至该硬件板。
5.如权利要求3所述的方法,其中该加密的映像和该签名在该硬件板的绑定操作中通过绑定机器加入该硬件板中,该绑定机器得到特定于该装置的信息并将该信息提供给被信任的第三方以使该被信任的第三方能够准备该签名,该绑定机器接收该签名、准备该加密的映像、将该加密的映像写入该硬件板并刷写该BIOS以让该BIOS包含该签名。
6.如权利要求1所述的方法,其中该装置是游戏机。
7.一种认证将被一个装置使用的内容的方法,包括:
得到包括有第一签名分量的签名,该第一签名分量加密可以从中被恢复的密钥;
得到特定于该装置的信息;
使用特定于该装置的信息从该第一签名分量中恢复该密钥;以及
使用该密钥解密该内容的至少一部分的加密的映像以恢复该部分;
其中,如果该部分可运行于该装置,该内容则隐性地通过认证。
8.如权利要求7所述的方法,其中该签名是ECPV签名,而特定于该装置的信息是可见信息,该密钥通过使用该第一签名分量和特定于该装置的信息产生解密密钥并使用该解密密钥来解密该第一签名分量的方式进行恢复。
9.如权利要求7所述的方法,该装置包括存储该内容的硬件板,该硬件板包括BIOS,该内容包括启动区、应用程序区和数据区,其中该签名存储在该BIOS中、从该BIOS中得到并在该启动区的开机顺序期间被访问以恢复该密钥。
10.如权利要求9所述的方法,其中特定于该装置的信息包括至少一个硬件序列号以将该签名绑定至该硬件板。
11.如权利要求7所述的方法,其中该装置是游戏机。
12.一种保护将被一个装置使用的内容的方法,包括:
指定该内容的明文第一区和明文第二区;
加密该明文第一区以创建加密的第一区;
将该加密的第一区和该明文第二区存储在该装置上;以及
产生一个签名,其中该加密的第一区和该明文第二区作为该签名的分量,该签名可被用于从该加密的第一区中恢复该明文第一区以使该装置能够使用该明文第一区。
13.如权利要求12所述的方法,其中该签名是ECPV签名,而该明文第二区是可见信息,该明文第二区可通过使用该加密的第一分量和该明文第二区产生解密钥而进行恢复,其中该解密密钥用于解密该加密的第一区。
14.如权利要求13所述的方法,包括在创建该加密的第一区之前添加冗余至该明文第一区,其中当该明文第一区被恢复时,可通过检查该冗余来认证该内容。
15.如权利要求12所述的方法,其中该装置包括具有BIOS的硬件板以及包含该内容的硬盘,该内容包括启动加载器、操作系统和应用程序区。
16.如权利要求15所述的方法,包括在该BIOS中存储公钥,该公钥用于恢复该明文第一区。
17.如权利要求15所述的方法,其中该明文第一区包括该启动加载器和操作系统,该明文第二区包括该应用程序区。
18.如权利要求15所述的方法,其中该明文第一区包括该启动加载器,该明文第二区包括该操作系统和该应用程序区。
19.如权利要求15所述的方法,其中该明文第一区包括该应用程序区,该明文第二区包括该启动加载器和该操作系统。
20.如权利要求12所述的方法,其中该装置是游戏机。
21.一种认证将被一个装置使用的内容的方法,包括:
获取一个签名,其中该内容的加密的第一区和该内容的明文第二区作为该签名的分量而包含在该签名中;
使用该签名从该加密的第一区中恢复明文第一区;以及
根据从该签名中恢复的该明文第一区来认证该内容。
22.如权利要求21所述的方法,其中该签名是ECPV签名,而该明文第二区是可见信息,该明文第二区可通过使用该加密的第一分量和该明文第二区产生解密钥并使用该解密密钥来解密该加密的第一区的方式进行恢复。
23.如权利要求22所述的方法,其中在创建该加密的第一区之前,冗余被包括于该明文第一区中,当该明文第一区被恢复时,通过检查该冗余来认证该内容。
24.如权利要求21所述的方法,其中该内容能否隐性地通过认证是根据该被恢复的明文第一区是否能够运行而定。
25.如权利要求21所述的方法,其中该装置包括具有BIOS的硬件板和包括该内容的硬盘,该内容包括启动加载器、操作系统和应用程序区。
26.如权利要求25所述的方法,包括使用存储在该BIOS中的公钥来恢复该明文第一区。
27.如权利要求25所述的方法,其中该明文第一区包括该启动加载器和操作系统,该明文第二区包括该应用程序区。
28.如权利要求25所述的方法,其中该明文第一区包括该启动加载器,该明文第二区包括该操作系统和该应用程序区。
29.如权利要求25所述的方法,其中该明文第一区包括该应用程序区,该明文第二区包括该启动加载器和操作系统。
30.如权利要求21所述的方法,其中该装置是游戏机。
31.一种保护将被一个装置使用的内容的方法,包括:
指定该内容的多个区;
存储第一值至该装置上;
产生针对该内容的第一区的第一签名,该第一签名包括一个加密第二值的分量,使得该第二值可使用该第一值进行恢复;
产生针对该内容的第二区的第二签名,该第二签名包括一个加密第三值的分量,使得该第三值可使用该第二值进行恢复;以及
如果多于两个区,则产生其它签名,其中每个其它签名包括一个加密将被下一个区使用的下一个值的分量,使得该下一个值可使用从针对前一个区的签名中恢复的前一个值进行恢复;
其中,该第一值可用于从该第一签名中恢复该第二值,该第二值可用于从该第二签名中恢复该第三值,如果需要,这些之后的值可使用之前的值进行恢复,使得从针对最后一个区的对应签名中恢复的最后一个值可与该第一值进行比较以同时认证该多个区。
32.如权利要求29所述的方法,其中每个签名都是ECPV签名,而该内容的对应区是可见消息,这些值的其中之一可使用这些值中的对应值和该内容的对应区产生用于解密该对应分量的解密密钥的方式进行恢复。
33.如权利要求31所述的方法,其中该装置包括具有BIOS的硬件板以及包括该内容的多个区的硬盘。
34.如权利要求33所述的方法,包括存储该第一值至该BIOS中。
35.如权利要求31所述的方法,其中该多个区中的至少一个区包括多个模块,每个模块包括签名,该多个模块的其中之一是进入模块且该多个模块的其中之一是结束模块,该进入模块的签名包括加密一个中间值的分量,使得该中间值可使用该前一个值进行恢复,或者如果该前一个区是该第一区,该中间值可使用该第一值进行恢复,该结束模块的签名包括一个分量,该分量加密该下一个值,或者如果该至少一个区是该最后一个区,该分量加密该最后一个值,使得该下一个值或该最后一个值可使用该中间值进行恢复,而且,如果该至少一个区包括多于两个的模块,该进入模块与结束模块之间的其它模块具有一个签名,该其它模块的签名包括对该中间值进行加密的分量,使得该中间值可使用从前一个模块的对应签名中恢复的该中间值进行恢复。
36.如权利要求31所述的方法,其中该装置是游戏机。
37.一种认证将被一个装置使用的内容的方法,包括:
获取存储在该装置上的第一值;
获取该内容的多个区中的第一区的第一签名,该第一签名包括对第二值进行加密的分量;
使用该第一值来恢复该第二值;
获取该内容的多个区中的第二区的第二签名,该第二签名包括对第三值进行加密的分量;
使用从该第一签名中恢复的第二值来恢复该第三值;
如果多于两个区,则获取其它签名,其中每个其它签名包括对下一个值进行加密的分量;并使用从前一个区的签名中恢复的前一个值来恢复该下一个值;以及
将从该多个区的最后一个区的签名中恢复的最后一个值与该第一值进行比较以同时认证所有这些区。
38.如权利要求37所述的方法,其中每个该签名是ECPV签名,而该内容的对应区是可见消息,这些值中的其中一个通过使用这些值中的对应值和该内容的对应区产生用于解密该对应分量的解密密钥的方式进行恢复。
39.如权利要求37所述的方法,其中该装置包括具有BIOS的硬件板和包含该内容的多个区的硬盘。
40.如权利要求39所述的方法,包括从该BIOS中获取该第一值。
41.如权利要求37所述的方法,其中该多个区中的至少一个区包括多个模块,每个模块具有签名,该多个模块的其中之一是进入模块且该多个模块的其中之一是结束模块,该进入模块的签名包括一个对中间值进行加密的分量,使得该中间值可使用该前一个值进行恢复,或者如果该前一个区是该第一区,该中间值可使用该第一值进行恢复,该结束模块的签名包括一个分量,该分量加密该下一个值,或者如果该至少一个区是该最后一个区,该分量则加密该最后一个值,使得该下一个值或该最后一个值可使用该中间值进行恢复,而且,如果这些区的该其中之一包括多于两个的模块,该进入模块与结束模块之间的其它模块具有一个签名,该其它模块的签名包括一个对该中间值进行加密的分量,使得该中间值可使用从前一个模块的对应签名中恢复的该中间值进行恢复。
42.如权利要求41所述的方法,包括利用这些值中的选定值来得到带有密钥的散列函数的一个密钥,并将该散列函数应用至该多个组件的其中一个组件上以获取认证码,该认证码稍后用于认证该多个组件中的该其中之一。
43.如权利要求42所述的方法,包括,当为该多个组件中的其中一个组件下载新模块时,该中间值从对应进入模块的签名中恢复,该中间值用于从该新模块的签名中恢复该中间值,从该新模块中恢复的该中间值用于恢复该下一个值,该下一个值用于恢复这些值中的该选定值,这些值中的该选定值和该多个组件中的该其中一个组件用于产生新认证码,该新认证码与之前获取的该认证码进行比较以再次认证该内容。
44.如权利要求37所述的方法,包括利用这些值中的选定值来得到带有密钥的散列函数的一个密钥,并将该散列函数应用至该多个组件的其中一个组件上以获取认证码,该认证码用于稍后认证该多个组件中的该其中一个组件。
45.如权利要求37所述的方法,其中该装置是游戏机。
46.一种为将被一个装置使用的内容下载新模块的方法,包括:
获取该内容的一个组件的进入模块的签名,该组件包括多个模块,每个模块具有签名,该多个模块的其中一个模块是进入模块且该多个模块的其中一个模块是结束模块,该进入模块的签名包括一个对中间值进行加密的签名分量,使得该中间值可使用存储在该装置上的值进行恢复,该结束模块的签名包括一个对下一个值进行加密的签名分量,使得该下一个值可使用该中间值进行恢复,而且,如果还存在除该进入和结束这两个模块之外的模块,该组件的其它模块具有签名,该其它模块的签名包括一个对该中间值进行加密的签名分量,使得该中间值可使用从前一个模块的对应签名中恢复的该中间值进行恢复;
从该进入模块的签名中恢复该中间值;
获取该新模块的签名,该新模块的签名包括一个对该中间值进行加密的签名分量,使得该中间值可使用该中间值进行恢复;
使用从该进入模块的签名中恢复的中间值来从该新模块的签名中恢复该中间值;
获取该结束模块的签名并使用从该新模块的签名中恢复的中间值来获取该下一个值;
使用该下一个值作为带有密钥的散列函数的一个密钥,并将该带有密钥的散列函数应用至该内容的另一个组件以获取认证码;以及
将该认证码与之前针对该另一个组件产生并存储的认证码进行比较以认证该新模块和该内容。
47.如权利要求46所述的方法,其中该装置是游戏机。
48.一种保护游戏机上的数据的方法,该方法包括加密该数据的一部分,并在该游戏机上存储ECPV签名,其中验证该ECPV签名使得该部分可被解密并可被该游戏机使用。
49.一种保护将被一个装置使用的数据的方法,该方法包括对该数据的多个组件中的每一个组件进行签名以产生多个ECPV签名,其中每个ECPV签名具有可见区和隐藏区,该可见区是该数据的对应组件,该隐藏区是这样的值,当被恢复时,该值可用于恢复下一个签名中的对应值,从该多个组件的最后一个组件的对应签名中恢复的最后一个值可与用于从该多个组件的第一个组件中恢复该对应值的输入值进行比较以认证该数据。
CN2007800327276A 2006-07-18 2007-07-18 认证游戏装置的系统和方法 Active CN101512536B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US83147206P 2006-07-18 2006-07-18
US60/831,472 2006-07-18
US88507307P 2007-01-16 2007-01-16
US60/885,073 2007-01-16
PCT/CA2007/001264 WO2008009112A1 (en) 2006-07-18 2007-07-18 System and method for authenticating a gaming device

Publications (2)

Publication Number Publication Date
CN101512536A true CN101512536A (zh) 2009-08-19
CN101512536B CN101512536B (zh) 2012-05-09

Family

ID=38956474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800327276A Active CN101512536B (zh) 2006-07-18 2007-07-18 认证游戏装置的系统和方法

Country Status (7)

Country Link
US (2) US8166308B2 (zh)
EP (2) EP2044546B1 (zh)
JP (1) JP5079803B2 (zh)
CN (1) CN101512536B (zh)
AU (1) AU2007276673B2 (zh)
CA (1) CA2655151C (zh)
WO (1) WO2008009112A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812158A (zh) * 2012-11-01 2014-05-21 维基帕德公司 移动设备控制器
CN112487435A (zh) * 2020-11-06 2021-03-12 麒麟软件有限公司 基于x86架构的安全启动方法

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249259B1 (en) * 1999-09-07 2007-07-24 Certicom Corp. Hybrid signature scheme
US20120084566A1 (en) * 2010-10-04 2012-04-05 Edward Chin Methods and systems for providing and controlling cryptographic secure communications across unsecured networks
WO2007135672A2 (en) * 2006-05-24 2007-11-29 Safend Ltd. Method and system for defending security application in a user's computer
US8171275B2 (en) * 2007-01-16 2012-05-01 Bally Gaming, Inc. ROM BIOS based trusted encrypted operating system
CA2593897C (en) * 2007-07-16 2016-06-14 Tet Hin Yeap Method, system and apparatus for accessing a resource based on data supplied by a local user
EP2204008B1 (en) * 2007-10-16 2019-03-27 Nokia Technologies Oy Credential provisioning
US9069990B2 (en) 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US9158896B2 (en) 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US9069706B2 (en) 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US20090240953A1 (en) * 2008-03-19 2009-09-24 Safenet, Inc. On-disk software image encryption
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US8909940B2 (en) * 2008-06-23 2014-12-09 Intel Corporation Extensible pre-boot authentication
US20110105222A1 (en) * 2008-06-23 2011-05-05 Gagner Mark B Managing wagering game content
US9653004B2 (en) * 2008-10-16 2017-05-16 Cypress Semiconductor Corporation Systems and methods for downloading code and data into a secure non-volatile memory
US8819450B2 (en) 2008-11-25 2014-08-26 Dell Products L.P. System and method for providing data integrity
JP5304229B2 (ja) * 2008-12-25 2013-10-02 富士通株式会社 端末装置
CN101957895A (zh) * 2009-07-17 2011-01-26 精品科技股份有限公司 一种电子档案外部权限控管的系统及其方法
US9122492B2 (en) 2010-10-25 2015-09-01 Wms Gaming, Inc. Bios used in gaming machine supporting pluralaties of modules by utilizing subroutines of the bios code
US9875607B2 (en) * 2011-07-13 2018-01-23 Igt Methods and apparatus for providing secure logon to a gaming machine using a mobile device
US8627097B2 (en) 2012-03-27 2014-01-07 Igt System and method enabling parallel processing of hash functions using authentication checkpoint hashes
FR2989197B1 (fr) * 2012-04-05 2014-05-02 Toucan System Procede de securisation d'acces a un dispositif informatique
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
FR2992083B1 (fr) * 2012-06-19 2014-07-04 Alstom Transport Sa Calculateur, ensemble de communication comportant un tel calculateur, systeme de gestion ferroviaire comportant un tel ensemble, et procede de fiabilisation de donnees dans un calculateur
US8782398B2 (en) * 2012-06-26 2014-07-15 Intel Corporation Secure user presence detection and authentication
US8948386B2 (en) 2012-06-27 2015-02-03 Certicom Corp. Authentication of a mobile device by a network and key generation
US9088408B2 (en) * 2012-06-28 2015-07-21 Certicom Corp. Key agreement using a key derivation key
US8971851B2 (en) 2012-06-28 2015-03-03 Certicom Corp. Key agreement for wireless communication
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
US8856538B2 (en) * 2012-07-27 2014-10-07 GM Global Technology Operations LLC Secured flash programming of secondary processor
AU2013313069B2 (en) * 2012-09-04 2018-08-30 Gaming Laboratories International, Llc Systems and methods for creating and maintaining an inventory list and verifying components of gaming equipment
WO2014139097A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Systems and methods for account recovery using a platform attestation credential
EP2797022A1 (en) * 2013-04-26 2014-10-29 Kaspersky Lab, ZAO System and method for controlling user access to encrypted data
RU2618684C2 (ru) 2013-04-26 2017-05-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ автоматического развертывания системы шифрования для пользователей, ранее работавших на ПК
US10013563B2 (en) * 2013-09-30 2018-07-03 Dell Products L.P. Systems and methods for binding a removable cryptoprocessor to an information handling system
US9524619B2 (en) * 2014-02-05 2016-12-20 Z4 Poker, LLC Systems and methods for playing a wagering game
AU2015201089B2 (en) * 2014-03-06 2020-02-27 Ainsworth Game Technology Limited Computer implemented frameworks and methodologies for enabling software authentication at an electronic gaming machine
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US9411975B2 (en) 2014-03-31 2016-08-09 Intel Corporation Methods and apparatus to securely share data
US11100242B2 (en) * 2014-05-30 2021-08-24 Apple Inc. Restricted resource classes of an operating system
JP5838248B1 (ja) * 2014-09-24 2016-01-06 株式会社 ディー・エヌ・エー ユーザに所定のサービスを提供するシステム及び方法
US10339316B2 (en) * 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
US10223294B2 (en) * 2015-09-01 2019-03-05 Nxp Usa, Inc. Fast secure boot from embedded flash memory
US10951421B2 (en) 2016-11-28 2021-03-16 Ssh Communications Security Oyj Accessing hosts in a computer network
US10764263B2 (en) * 2016-11-28 2020-09-01 Ssh Communications Security Oyj Authentication of users in a computer network
US10523445B2 (en) 2016-11-28 2019-12-31 Ssh Communications Security Oyj Accessing hosts in a hybrid computer network
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10630483B2 (en) * 2017-10-23 2020-04-21 Legitipix, LLC Anonymous image/video digital signature insertion and authentication
US11095638B2 (en) 2017-12-11 2021-08-17 Ssh Communications Security Oyj Access security in computer networks
US10579809B2 (en) * 2018-04-09 2020-03-03 Securelyshare Software Private Limited National identification number based authentication and content delivery
EP3798886A1 (en) * 2019-09-26 2021-03-31 General Electric Company Devices, systems, and methods for securely initializing an embedded system
US20220067139A1 (en) * 2020-08-25 2022-03-03 Kyndryl, Inc. Loss prevention of devices
FR3113963B1 (fr) * 2020-09-10 2023-06-30 Thales Sa Chaine de confiance avancee en aeronautique domaine de l'invention
WO2023048704A1 (en) * 2021-09-22 2023-03-30 Hewlett-Packard Development Company, L.P. Recovery request
US20240111872A1 (en) * 2022-09-30 2024-04-04 General Electric Company Devices, systems, and methods for securely loading embedded software using a manifest

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE496444T1 (de) * 1995-06-29 2011-02-15 Igt Reno Nev Elektronisches casinospielsystem mit verbesserten spielmöglichkeiten, authentifizierung und sicherheit
US5768382A (en) * 1995-11-22 1998-06-16 Walker Asset Management Limited Partnership Remote-auditing of computer generated outcomes and authenticated biling and access control system using cryptographic and other protocols
US5956404A (en) * 1996-09-30 1999-09-21 Schneier; Bruce Digital signature with auditing bits
GB9621274D0 (en) * 1996-10-11 1996-11-27 Certicom Corp Signature protocol for mail delivery
US6424712B2 (en) * 1997-10-17 2002-07-23 Certicom Corp. Accelerated signature verification on an elliptic curve
US6146522A (en) * 1998-05-20 2000-11-14 Ecolab Inc. Method for controlling odor in waste handling systems
US6959384B1 (en) * 1999-12-14 2005-10-25 Intertrust Technologies Corporation Systems and methods for authenticating and protecting the integrity of data streams and other data
US7249259B1 (en) * 1999-09-07 2007-07-24 Certicom Corp. Hybrid signature scheme
US7134021B2 (en) * 1999-10-22 2006-11-07 Hitachi, Ltd. Method and system for recovering the validity of cryptographically signed digital data
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US7112138B2 (en) * 2001-08-03 2006-09-26 Igt Player tracking communication mechanisms in a gaming machine
JP2004040344A (ja) * 2002-07-02 2004-02-05 Hitachi Ltd 原本保証方法および原本保証システム
CA2464797A1 (en) * 2003-04-16 2004-10-16 Wms Gaming Inc. Remote authentication of gaming software in a gaming system environment
US7017040B2 (en) * 2003-12-04 2006-03-21 Intel Corporation BIOS update file
JP4433401B2 (ja) * 2004-12-20 2010-03-17 レノボ シンガポール プライヴェート リミテッド 情報処理システム、プログラム、及び情報処理方法
KR20060109237A (ko) * 2005-04-13 2006-10-19 삼성전자주식회사 라이센스 정보에 기초하여 컨텐트의 사용을 제어하기 위한암호화/복호화 방법 및 장치
US20080254850A1 (en) * 2005-05-06 2008-10-16 Wms Gaming Inc. Trusted Computing in a Wagering Game Machine
JP4299316B2 (ja) * 2006-05-12 2009-07-22 株式会社日立製作所 情報処理システム
US7827397B2 (en) * 2006-07-13 2010-11-02 Aristocrat Technologies Australia Pty, Ltd. Gaming machine having a secure boot chain and method of use

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812158A (zh) * 2012-11-01 2014-05-21 维基帕德公司 移动设备控制器
CN112487435A (zh) * 2020-11-06 2021-03-12 麒麟软件有限公司 基于x86架构的安全启动方法

Also Published As

Publication number Publication date
US8166308B2 (en) 2012-04-24
CA2655151C (en) 2016-06-21
US20080028235A1 (en) 2008-01-31
JP5079803B2 (ja) 2012-11-21
CN101512536B (zh) 2012-05-09
US20120131322A1 (en) 2012-05-24
AU2007276673B2 (en) 2013-01-17
EP2565811A3 (en) 2013-10-02
AU2007276673A1 (en) 2008-01-24
EP2044546A4 (en) 2010-09-22
US8510570B2 (en) 2013-08-13
EP2044546B1 (en) 2012-12-26
WO2008009112A1 (en) 2008-01-24
CA2655151A1 (en) 2008-01-24
EP2565811A2 (en) 2013-03-06
EP2044546A1 (en) 2009-04-08
EP2565811B1 (en) 2016-02-03
JP2009544084A (ja) 2009-12-10

Similar Documents

Publication Publication Date Title
CN101512536B (zh) 认证游戏装置的系统和方法
US10419407B2 (en) System and method for controlling features on a device
CN100470467C (zh) 对隔离计算环境编程的系统和方法
JP4091744B2 (ja) コンピュータ装置およびその動作方法
CN103051451A (zh) 安全托管执行环境的加密认证
DE60002893T2 (de) Computerplattformen und deren betriebsverfahren
JP4067985B2 (ja) アプリケーション認証システムと装置
CN1682204B (zh) 认证处理硬件、认证处理系统及使用管理硬件
US20020112156A1 (en) System and method for secure smartcard issuance
US8827802B2 (en) Electronic gaming machine including a smartcard for protection, and method of use
WO2007108127A1 (ja) システムプログラムダウンロードシステム
WO2009061171A2 (en) Secure software licensing control mechanism
JP5386860B2 (ja) 決済システム、決済処理装置、正当性検証装置、正当性検証要求処理プログラム、正当性検証処理プログラム、及び正当性検証方法
AU2013200551B2 (en) System and method for authenticating a gaming device
AU2019261822A1 (en) An electronic gaming machine

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191028

Address after: Voight, Ontario, Canada

Patentee after: BlackBerry Ltd.

Address before: Ontario, Canada

Patentee before: CERTICOM Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240605

Address after: Illinois

Patentee after: Ot patent trusteeship Co.,Ltd.

Country or region after: U.S.A.

Address before: Voight, Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240702

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Illinois

Patentee before: Ot patent trusteeship Co.,Ltd.

Country or region before: U.S.A.