处理器硬件和软件的制作方法

文档序号:6568669阅读:138来源:国知局
专利名称:处理器硬件和软件的制作方法
技术领域
本发明涉及一种用以检测在硬件上运行的软件的存在的系统和 方法。具体地说,本发明涉及这样的系统和方法,其用于在检测到特 定的软件时禁用所述硬件,并防止该软件在所述的硬件上执行指令。
背景技术
对于生产处理器硬件的公司来讲,并行地开发在他们处理器上 运行的诸如机器代码或特别定制的固件之类的软件是一个惯例。这样 做时,通常认为由处理器制造商开发的软件是被优选的,以通过处理 器装置达到最优性能。结果,公司经常推荐购买特定的处理器装置的 顾客去购买相关的软件以通过处理器达到最优性能。开发达到最优性能的软件要求在时间和财力方面的巨大投入, 因此,这些公司只提供许可下的软件,防止用户拷贝软件并将软件提 供给第三方,以试图确保软件/硬件供应公司的收入不会损失。然而,在特定的环境下,很多顾客可能不希望使用由硬件制造 公司开发的软件,硬件公司仅提供其自己的处理器。而且,硬件的终 端用户可以自由地开发他们自己的与硬件一起使用的软件,定制以满 足他们特定的要求。当然,不能排除硬件制造商软件的未授权或其它非法拷贝可能 被提供给硬件的终端用户。未授权软件的例子可以包括第三方在没有获得必要的授权的情 况下进行的拷贝或通过所谓的对等网络提供的未授权拷贝。这样未授 权的拷贝或共享最终导致软件开发商的收入损失。为了克服这些问题,存在多种解决方案以防止这样未授权软件 的使用,在软件中包括加密代码以防止软件的未授权使用是公知的。 解密密钥被实现在硬件中,以对加密代码进行解码,允许软件的可执行指令在硬件上运行。作为具体的示例,WO-A-81/02351公开了一种专属处理器架构, 在这种架构中,芯片或裸片设计被修改为包括一个解码器,该解码器 包括第一多路复用器、逻辑门阵列和串联放置在处理器的指令寄存器 和指令解码器之间的信号分离器。如果指令代码被正确实现以用在改 进的处理器上,则逻辑门将对加密代码进行解码,使处理器能够执行 软件的指令代码。相反地,在未改进的处理器上使用加密软件将导致 指令代码的错误的执行,并导致故障。然而,由于W0-A-81/02351提供的上述解决方案要求处理器架 构的大量修改以实现软件检测,以及需要这么多的这种架构的版本针 对上文提及的未授权使用进行防卫,这种解决方案证明是非常昂贵 的。而且,由于解密密钥是利用逻辑门实现的,它会遇到逆向工程, 使其允许被拷贝,以至于软件/硬件提供商不能确定地识别软件的非 法拷贝是和他们的硬件一起使用的。另外,解密密钥是静态的,在没 有对逻辑门进行物理重新连线的情况下,不可能被很容易地更新。本发明寻求提供一种检测在硬件上运行的软件的存在的方法和 系统,该方法和系统有超过己知这样的方法和系统的优点。发明内容按照本发明的一个方面,提供了被用来检测在其上的软件应用 的处理器装置,该处理器装置拥有被用来检测包含在软件中的签名的 存在的总线控制器,使得签名检测通过总线控制器用来禁用处理器。特别地,本发明寻求防止与处理器装置相关的非法软件的使用, 本发明克服了一个或多个上文提及的缺点,以及,特别地,防止非法 软件拷贝运行在硬件上,同时还提供了一种简单和划算的实现方式。 当检测到未授权软件时,本发明禁用硬件,防止更进一步的指令被软 件执行。优选地,总线控制器被安排通过结合总线控制器和装置的连接 来接收输入信号,以至于该输入信号可以使总线控制器来检测签名的 存在。由于通过利用该结合的配置,例如,对于封装内的集成电路裸片来讲,这证明是有利的,它可以定义哪些集成电路装置可以被激活 以检测软件的存在,哪些不能。这允许使用单个裸片设计,从而消除 制造用以检测软件存在的裸片和不检测软件存在的裸片的需要和成 本。另外,通过签名被写入内部寄存器的特征的优点,签名的逆向 工程被极大地抑制了,由于它要求了解哪一个寄存器包含签名以及软 件被写入了那个寄存器的哪一段签名代码中。本发明提供了更进一步的优点,硬件终端用户可以开发与软件 制造商无关的软件,这些软件可以在没有上文所述的禁用发生的危险 的情况下,在处理器装置上执行。优选地,内部寄存器被用来存储签名,以及,总线控制器被用 来从内部寄存器读取签名。由于签名可以通过再次编程指令寄存器被 更新,而不需要重新设计处理器架构,这证明是有利的。随机参数发生器可以被用来定义在签名检测和处理器禁用之间 的随机延迟。这提供了处理器以随机和不可预测的方式被禁用的优 点,从而更进一步地禁止逆向工程。按照本发明的另一个方面,提供了一种检测在处理器装置上使 用软件的方法,该方法包括下列步骤通过处理器的总线控制器检测 包含在软件内的签名的存在,以及,当检测到所述的签名时,通过总 线控制器,禁用处理器装置。优选地,在操作中,总线控制器被用来通过结合总线控制器和 装置的外部连接来接收输入信号,从而输入信号使总线控制器检测签 名的存在。优选地,该签名被写入处理器的指令寄存器。检测签名的步骤 包括利用所述的总线控制器从内部寄存器读取签名的步骤。由于签名 可以通过对指令寄存器和总线控制器重新编程而被更新,而不需要重 新设计处理器架构,这证明是有利的。在检测签名的步骤之后,在以随机方式确定的时间周期之后, 总线控制器被禁用。这提供了处理器以随机和不可预测的方式被禁用 从而用来禁止逆向工程的优点。按照本发明的另一个方面,提供了制造集成电路装置的方法,该方法包括下列步骤在封装上固定半导体裸片,所述的半导体裸片包含处理器电路和多个电触点,所述的封装包括多个电触点;将所述处理器的所述多个电触点的至少一个和所述封装的所述多个电触点 的至少一个结合,从而所述的结合使所述处理器的总线控制器可以检测包含在软件中的签名的存在,以及当检测到所述签名时,通过总线 控制器来禁用处理器电路。有利地,这提供了利用单个裸片设计,启用可以检测软件存在 的单个装置,相反地,定义那些不能检测软件存在的装置的能力。


通过示例,参照附图,在下文对本发明进行了更进一步的描述,其中图1图示了具体实现本发明的处理器架构的框图; 图2a图示了按照现有技术具体实现软件和硬件的典型软件/硬 件供应链;图2b图示了合并了本发明实施例的软件/硬件供应链。
具体实施方式
总体而言,本发明提供了诸如处理器之类的硬件装置,该处理 器被用来检测特定软件的存在,并用来防止该软件的指令代码的执 行。凡是硬件制造商发布的硬件装置可以被容易地用来防止与之相关 的特定软件产品的后续使用,诸如硬件制造商软件的拷贝之类的使 用。典型地,在本发明中具体实现的类型的处理器装置被形成为诸 如通孔或表贴封装之类的集成电路封装。为了形成该集成电路,处理 器电路在其上被定义的硅裸片或芯片密封地固定在一个密封的陶瓷 封装中,在这种情况下,陶瓷封装包括外部金属引脚,用以连接到印 刷电路板。在裸片上定义的电触点利用通常所说的热压焊接之类的 线,被连接至或结合至陶瓷封装的金属引脚,这些线提供了引脚和处理器的每一个功能特征之间的连接。这样的功能特征可以包括CPU、 寄存器和总线控制器。电连接提供了输入、输出和电源供电以及其他 到处理器的辅助连接。通过包括或忽略在裸片与封装的外部金属连接 之间的结合,启用或禁用特定处理器的功能特征是可行的。结合封装的输入和总线控制器,通过施加诸如逻辑1或高电平 之类的电信号,或者可替换地可以使用逻辑O或低电平,允许本发明 的软件检测特征被启用。相反地,通过不包括这样的连接,可以看到, 软件检测特征可以很容易地被禁用。通过利用上文所讨论的连接方 式,只需要生产一个裸片设计,从而极大地减少装置设计和生产成本 以及相关的低效率。另外,由于裸片是被密封在封装内,所以不可能 损坏装置而不损坏处理器,从而防止软件保护特征被禁用或者被逆向 工程处理。由于本发明可以相关于处理器硬件和软件被实现,本发明是有 利的。在硬件中实现可以使它可以定义这样的处理器,所述处理器不 能执行诸如由特定软件制造商提供的特定软件以及它们的拷贝之类, 并且相反地,可以定义这样的处理器,所述处理器可以通过修改电封 装和裸片之间的结合执行这样的软件。这样的后者处理器通常是和它 自己的软件产品一起推向市场的。另外,由于软件是由包含二进制信 息的堆栈组成的,所以非常难以确定对哪一个寄存器进行了编程以存 储签名,从而提供了防止逆向工程的保护。本发明可以以任何适当的处理器架构被实现,还可以利用任何 适当的处理定义哪些装置可以检测软件的使用。在图1中示意性示出的本发明的实施例中,处理器io包括软件应用程序的指令代码在其 上运行的中央处理单元(CPU) 12,用以控制CPU操作的总线控制器 14,以及用以存储软件指令代码的指令寄存器16。当具体实现本发 明的裸片或芯片被形成时,它包括与处理器总线控制器的电连接。总 线控制器包括用以检测特定软件存在的装置,该装置将在下文中被详 细讨论。为了启用总线控制器的软件检测特征,需要向电连接提供特 定的输入信号。通过连接电源供电,这样的信号可以是逻辑l。可替 换地,通过接地,这样的信号可以是逻辑0。从而,为了定义哪些处理器可以被启用以检测软件的存在,需要结合总线控制器的电连接和 陶瓷封装的金属引脚,以允许需要的信号(逻辑1或逻辑0)存在在 总线控制器上。通过32位数据总线18对CPU 12、总线控制器14和指令寄存器 16的每一个进行编程,然而,数据总线18可以有任何合适的大小, 例如,4位、8位、16位或32位。指令寄存器16的大小可以小于或 等于数据总线的大小。然而,在本发明的一个实施例中,使用了 32 位的数据总线18和指令寄存器16。通常,对于某些应用程序而言, 使用32位或更多位数的指令寄存器,允许指令寄存器要求的位数的 冗余。通过合并这种冗余,可以使用指令寄存器未使用的位,这样, 可以用对于处理器类型唯一的签名对这些位进行编程。对软件唯一的签名被包括在指令代码中。这可以被写入未使用 的内部指令寄存器并被存储在诸如触发器之类的非易失性存储器中。 该签名可以由任何位数组成,例如,8位、16位或32位,但通常选 择的位数不低于软件在其上被实施的处理器装置的总线控制器14的 位数,以便于实施。典型的处理器可以通过任何数量的32位指令寄存器被编程,并 且可以包括50个或者更多这样的寄存器。如上文提到的,提供了一个寄存器的一些冗余,为处理器提供了一些不执行软件指令代码的位 数。例如,假定一个特定的32位寄存器的位31-12没有被使用,那 么,可以看到,有20个可以将签名写入的位。有利地,利用这种冗 余,在不改变处理器特性和性能的情况下,可以将信息写入寄存器。在操作中,在CPU12上执行软件之前,软件被装载到处理器IO 的指令寄存器16上。对应于预先选择的指令寄存器16的特定位的唯 一地址被预先定义在软件中。通过将该软件装载到指令寄存器上,把 预先选择的寄存器的特定位定义为逻辑1或"高电平",以定义软件 签名。这样的写操作在对指令寄存器进行正常写访问期间发生。然而, 在对一个特定位的写操作已经被描述时,期望对任意多的位数进行编 程,从而增加针对逆向工程的保护的级别。如果在对指令寄存器16进行写操作之后,在总线控制器提供了要求的信号,那么,使总线控制器14能够检测定义软件签名的位或 那些位的逻辑状态。如果总线控制器14检测到了签名,那么总线控 制器被禁用,从而禁用整个系统。当逻辑1或高电平被用来定义签名时,通过写逻辑i或o的任意组合可以定义签名。可选择地,当总线控制器14检测到了签名时,它可以继续执行其他的操作,这些操作是被禁用处理器的软件的指令代码指示的。在 签名检测之后执行的操作的数量是由在硬件或软件中实现的随机数发生器定义的,并在检测到签名后被总线控制器14触发。在这种方式中可以看到,在检测到签名的一段时间之后,用随机的方式禁用处理器10,从而难以确定总线控制器在代码中的哪一点被禁用。通过示例的方式,通过50个内部寄存器对典型处理器进行编程。 在这些寄存器中,选择一个寄存器。该寄存器的位ii-o被用来处理 诸如视频处理之类的功能。从而,被选择的寄存器的位31-12可以写 入签名。在这种方式下,可以看到,向未使用的寄存器写签名不会改 变处理器的性能。具体地说,例如,选择28号寄存器。当写入寄存 器时,类似0x00000000. 0x10000000之类的32位数据被写入定义唯 一签名的软件。如上文讨论过的,通过禁用的总线控制器和处理器来 检测这种情况。独立开发他们的代码的软件终端用户不会在28号寄 存器的这个位中加入逻辑"1"。利用这种冗余,可以定义一个两位 或多位签名,从而总线控制器需要向被写入的启用保护的签名确认预 识别地址的那些位。如果硬件用户开发他们自己的软件,那么这就减 少了用户写这些位并触发保护的机会。可替换地,如果总线控制器14没有检测到签名的存在,或者要求的电信号没有被提供给总线控制器,那么,软件的指令代码将以正 常的模式被执行,从而,可以在没有禁用处理器的情况下在处理器上 执行诸如独立于硬件制造商开发的软件或包括唯一地址的软件之类 的软件。举例来说,通过比较未并入本发明的软件和硬件的供应链和并 入了本发明的软件和硬件的供应链,对本发明进行描述。图2a包括了硬件和/或软件的销售的日常供应商/顾客供应链20的典型方案框图。供应商22向第一顾客24销售硬件22b,独立于 供应商22,顾客24开发在硬件上使用的软件。供应商22向第二顾 客26提供硬件22b以及适当的软件22a。软件的提供可以服从于许 可协议,防止顾客拷贝并再次提供给第三方。独立于供应商,第一顾 客24向第三方28提供最初从供应商22购买的硬件22b。另外,顾 客26向同一第三方28提供从供应商购买的软件22a的拷贝。那么, 不为最初供应商22所知的是,第三方28现在有了完整的硬件/软件 系统,从而使供应商丧失了从适当的软件销售中的收入。而且,第二 供应商26可能不受将软件的拷贝或最初拷贝提供给第三方的许可协 议的约束。图2b描述了类似于图2a的解决方案,其中,发生了供应和再 次供应事件的同一环节。与之前的方案一样,供应商向顾客提供标准 软件封装,从而允许第一顾客开发在硬件上使用的他们自己的软件。 另一方面,第二顾客购买硬件和相关的软件,其中,这种情况下的硬件可以执行与之一起提供的供应商软件的指令。像上述方案描述的那 样,第一顾客独立于供应商向第三方提供最初从供应商购买的硬件,而第二顾客向同一第三方提供从供应商处购买的软件的拷贝。然而, 与之前情况相反的是,通过启用本发明的软件检测特征,第三方的任 何执行拷贝的软件的尝试会导致第一顾客提供的硬件变为禁用,从而 使软件不能操作在该硬件上。在这种方式下,可以看到,在不需要改 变裸片或芯片设计的情况下,本发明提供了一种划算的区别两种硬件 装置的方法。从而,这可以以有效可行的方式增强硬件和相关软件供 应商可以运用在硬件产品的后续使用上的控制。可替换地,本发明还着眼于防止第三方使用诸如在其他硬件形 式上的供应商软件之类的特定软件。在这种方式下,可以看到,本发明提供了划算的用以防止特定 软件和未授权硬件一起使用的系统和方法,在没有重新设计处理器硬 件架构的要求和开销的情况下,该系统和方法易于低成本实现。这样 未授权硬件被认为是与供应商软件分别供应的硬件,因此,不能与软 件一起使用。
权利要求
1.一种集成电路装置,用以检测在其上使用了软件,该装置包括处理器装置和用以检测包含在软件中的签名的存在的总线控制器,并且当总线控制器检测到所述签名时,禁用处理器装置。
2. 按照权利要求1所述的装置,其中,总线控制器还被用来接收输入信号,从而输入信号使总线控制器能够检测签名的存在。
3. 按照权利要求2所述的装置,其中,总线控制器通过结合所 述装置的外部连接来接收所述输入信号。
4. 按照权利要求1所述的装置,其中,通过禁用总线控制器来 禁用处理器装置。
5. 按照权利要求1所述的装置,还包括用于存储签名的内部寄 存器。
6. 按照权利要求4所述的装置,其中,总线控制器从内部寄存 器中读取签名。
7. 按照权利要求1或5所述的装置,其中,内部寄存器包括指 令寄存器。
8. 按照权利要求1所述的装置,还包括一个随机参数发生器, 其用于定义签名检测和处理器被禁用之间的随机延迟。
9. 按照权利要求8所述的装置,其中,所述发生器是硬件实现的。
10. 按照权利要求8所述的装置,其中,所述发生器是软件实现的。
11. 一种检测在处理器装置上使用了软件的方法,该方法包括下列步骤通过处理器装置的总线控制器检测包含在软件中的签名的存 在;以及当检测到所述签名时,通过总线控制器禁用处理器装置。
12. 按照权利要求ll所述的方法,其中,总线控制器接收使总 线控制器检测签名的存在的输入信号。
13. 按照权利要求12所述的方法,其中,总线控制器通过结合 所述装置的外部连接来接收输入信号。
14. 按照权利要求11所述的方法,其中,签名被写入处理器的 指令寄存器。
15. 按照权利要求11所述的方法,其中,检测签名的步骤包括 利用所述总线控制器从内部寄存器读取签名的步骤。
16. 按照权利要求11所述的方法,其中,在签名检测步骤之后, 在以随机方式确定的时间周期之后,总线控制器被禁用。
17. —种禁用处理器和包括按照在权利要求11、 14-16中的任 一项或多项中所述的检测软件的使用的方法的方法。
18. —种处理器程序,其包括用以使处理器执行在权利要求11、 14-17中的任何一项中所述的方法的指令。
19. 一种按照权利要求18所述的处理器程序,其存储在计算机 可读介质上。
20. —种制造集成电路装置的方法,该方法包括下列步骤 在封装上安装半导体裸片,所述半导体裸片包括处理器电路和多个电触点,所述封装包括多个电触点;将所述处理器的所述多个电触点中的至少一个与所述封装的所述多个电触点的至少一个结合;其中,所述的结合使所述处理器的总线控制器能够检测包含在 软件中的签名的存在,并且在检测到所述签名时,通过总线控制器来 禁用处理器。
全文摘要
一种用于检测在处理器装置(10)上是否使用了盗版软件的系统和方法,从而,结合拥有总线控制器(14)的所述处理器装置(10)以检测包含软件中的签名的存在,从而所述签名的检测利用所述的总线控制器(14)禁用所述的处理器(10)。
文档编号G06F21/71GK101248437SQ200680030649
公开日2008年8月20日 申请日期2006年8月22日 优先权日2005年8月24日
发明者法比安·勒菲弗 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1