CN100587650C - 具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片 - Google Patents
具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片 Download PDFInfo
- Publication number
- CN100587650C CN100587650C CN200580030307A CN200580030307A CN100587650C CN 100587650 C CN100587650 C CN 100587650C CN 200580030307 A CN200580030307 A CN 200580030307A CN 200580030307 A CN200580030307 A CN 200580030307A CN 100587650 C CN100587650 C CN 100587650C
- Authority
- CN
- China
- Prior art keywords
- chip
- integrated circuit
- key
- processor
- data
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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 in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了包含一个或多个处理器和一个或多个密码引擎的集成电路芯片。具有命令处理器的流控制电路经由仅通过其传送加密信息的安全外部接口来接受请求和数据。所述流控制电路对使用在所述芯片上以硬编码形式存在的密钥来解密该信息进行协调。具体地说,所述流控制电路包括可编程的硬件部分,可以以安全的方式配置所述部分以创建灵活的内部芯片架构。所述芯片还包括布置在通过备用电池或从固定电源(电网)来维护的电压岛上的易失性存储器。因此,所述芯片能够在所述处理器通过所述流控制电路控制所述密码引擎的情况下,安全地执行密码操作。
Description
背景技术
至少在古罗马的凯撒时代就已经使用密码术来提供安全的通讯方法。在现代社会,特别是在保护全球金融交易中,密码术充当同样重要的角色。现代密码系统的结构还扩展了密码的角色,以便还允许将密码引擎用于授权、验证和受信事务处理的目的。可以通过许多不同的方式实现这些角色,但是所有这些方式的共同特征是它们旨在防止一种或另一种形式的攻击。这些攻击可能是物理性质的,也可能是算法的。从部署在安全通信服务中的算法和编程的角度,通过选择使用越来越长的密钥(超出用于破解加密代码的数据处理系统的不断增加的能力),通常可以增强对攻击的防范。从硬件攻击的角度,使用许多不同的方法来提供物理安全。这些方法包括检测物理或电子入侵尝试并在出现这些入侵尝试时自毁的系统。
其中一种保护密码电路芯片的物理系统包括芯片周围的网孔(mesh)。该网孔检测对芯片的物理侵入尝试。但是,网孔的存在引发了散热问题,因为它限制了热量从芯片的内部区域流向网孔外部。网孔结构的存在因此阻碍了包括更为强大和密集的芯片电路、处理器和组件,因为这种包含意味着增加功率耗散,而由于增加的热量的散发被网孔阻止,这会导致组件故障或可靠性问题。将网孔用于篡改检测的另一个缺点是其使用要求包括大量模拟器件;此类器件无法容易地与数字组件集成在同一电路基板上,并且即使易于结合,散热问题仍然存在。
因为本发明涉及密码处理系统,具体地说,涉及由集成电路芯片实现的这种性质的系统,所以指出标题为“Security Requirements forCryptographic Modules(密码模块的安全要求)”的联邦信息处理标准(FIPS)出版物(2001年5月25日发布的FIPS PUB 140-2,其取代了1994年1月11日发布的FIPS PUB 140-1)的存在是有帮助的。该出版物讨论了从最低安全级别(安全级别1)到最高安全级别(安全级别4)的四个安全级别。本发明能够实现其中所述的最高安全级别。其中说明了由个人电脑(PC)加密板代表的安全级别为1的加密模块的实例。安全级别2的进一步之处在于它需要任何物理篡改尝试存在的证据。安全级别3的更进一步之处在于它尝试阻挠任何篡改企图。该安全级别还要求基于身份的认证机制。安全级别3还要求明文“关键安全参数”(即,诸如未加密的密钥信息之类的“CSP”,对于单重加密处理来说,其可以由人读取)的输入或输出通过物理上与其他端口或接口分离的端口来执行。在安全级别4,提供了围绕密码模块的一层完整的保护,目的是检测和响应所有未授权的物理访问尝试,且穿透模块外壳将导致所有明文的关键安全参数立即归零。
在本申请中使用了某些术语、缩略语和首字母缩写词。这些术语在密码和集成电路芯片设计领域是公知的。尽管如此,为了方便起见,将它们列在下面的两个表格中以帮助读者:
表I
ASIC | 专用集成电路 |
COACH | 芯片上密码 |
FIPS | 联邦信息处理标准 |
FIPS 140-2 | NIST标准:密码模块的安全要求 |
FLASH | 非易失性存储器 |
FPGA | 现场可编程门阵列 |
eDRAM | 嵌入式动态随机存取存储器 |
MD5 | 信息摘要(散列)算法(由RSA Security的RIVEST开发) |
NIST | 国家标准技术研究所 |
PCI | 外围计算机互连 |
TRNG | 真随机数发生器 |
SHA | 信息摘要(散列)算法【NIST FIPS 180-2】 |
UTC | 协调世界时(民用时间基础的世界范围系统) |
表II
芯片硬件制造商 | 制造具有芯片私钥和公钥以及芯片销售商的公钥(以熔断器形式)的芯片硬件。 |
芯片硬件销售商/转售商 | 将芯片置于卡、板或其他芯片载体上。创建用芯片销售商的私钢加密的FPGA文件并再次使用芯片公钥对文件加密。 |
平台制造商 | 将芯片(卡上)安装到平台并在客户端(或平台制造商端)附加电池。加载加密的FPGA代码(网表),随后加载包括Kernel(操作系统)和特定用途软件代码(以允许API调用)的加密的不同代码层。 |
芯片软件销售商 | 选择/启用芯片的SW密码功能的选项。(加密API、性能特性、安全级别、按需特性、租借和收费模式)。 |
在例如以安全方式压缩大型数据块(信息)的数字签名生成中使用MD5(信息摘要5)。PCI是一种由英特尔公司发起的局部(内部)计算机总线标准。通常通过对硬件噪声进行采样和处理来生成真随机数。对于高安全性环境,在安全边界内生成随机数。
本发明不限于使用任何特定的密码引擎。事实上,本发明可以使用多种不同的密码引擎。在此方面,应该理解,如本文中所使用的,术语“密码引擎”指任何旨在执行模取幂或任何其他密码算法的电路。模取幂和普通求幂过程相同,除了结果以是素数的大数字为模,以使其可用于提供加密和解密运算。
人们希望在密码系统中具有的其他特性之一是比用于安全和非安全事务更高级别的可靠运算。人们还希望能够使用现有处理器设计以便结合在单芯片的结构中。很明显,单芯片架构更为优选,因为它提供了更明确限定和更可防御的边界。但是,现有的可用于提供片内数据处理和计算流的处理器通常不总是结合了期望的冗余级别。因此,使用这些处理器设计(而没有其他设计)无法提供相应期望级别的数据完整性和可靠性。同样,还会影响可用性和可服务性。因此,在本发明的优选实施例中,连同任何写入外部存储器的处理器指令一起加密校验。此外,当解密了存储在外部存储器的“安全”区域中的加密指令时,将检查校验以确保数据正确性。将校验位与指令包括在一起使得攻击非常困难,因为不仅很可能会影响校验,而且还将确定解密的指令已被篡改。指令解密之后的校验检查失败提供了处理应停止和/或已发生尝试攻击的良好指示。在此时停止提高了连续的机密性和数据完整性。
人们希望在开发新的密码处理器的上下文中解决的众多问题之一是存在大量有关加密、解密、认证和验证的应用。如果将这些应用以明文形式存储在安全边界之外,则它们将成为很容易攻击的目标。在这些情况下,会在非安全存储器中更改代码,并且将新代码用于访问包含在“安全”边界内的秘密数据。这显然不是期望的结果,并且最多防止了使用遗产代码。因此,本发明提供了对外部存储器的访问,后者包括两个部分:一个专用于加密的数据,另一个专用于未加密的数据(即,“明文形式的数据”或“明文数据”)。这两个存储器部分之间的边界是可调整的,但只能从安全COACH边界的内部来调整。
本文说明的系统提供了许多不同的优点。例如,本发明提供了完全集成的环境,其中,无需向任何其他如总线或内部存储器接口之类的系统组件暴露任何未加密的信号。仍将对其他安全外部COACH系统的访问进行加密,但是加密期间使用的秘密保存在密码引擎所在的同一物理外壳中。在非集成的密码系统中,必须在某种形式的单一物理保护的外壳内提供安全和永久性存储装置,CPU(中央处理单元,或简单地说,处理器),即,当密码处理系统的组件是分离的时,系统的物理保护模式不仅必须保护分离组件本身防范攻击,而且该物理保护模式还必须保护这些单元之间的所有信号路径。但是,应注意的是不仅必须保护信号路径;而且在非集成解决方案中还必须保护电源连接,因为攻击还可以基于移除或改变仅加在某一组件上的电线电平,这会导致整个系统易受攻击。相比之下,在本发明中,各密码处理系统组件存在于同一电路芯片上并因此自然相连。无需外部电路来确保安全,例如可能由检测篡改并执行RAM和/或其他相关缓冲区和寄存器清零的单独电路提供的安全。
发明内容
根据本发明的优选实施例,提供了有关安全的单芯片密码处理器的架构的系统和方法。本发明还涉及利用该架构为用户提供安全级别对运行速度的选择的方法。本发明使用一个或多个单独的密码引擎,通过与外部环境的安全内部通信链接来控制所有这些引擎。在一个方面中,本发明包括使用安全的单芯片密码处理器来提供安全功能的系统,所述处理器能够内部控制地对外部存储器的访问,所述外部存储器具有保存加密数据的部分和保存未加密数据的其他部分。在其他方面中,本发明包括使用单芯片密码处理器来提供安全功能的系统,只有通过加密信号才可以调用所述处理器的控制功能。换言之,本发明还包括一种密码处理器架构,其中只能通过传送加密信号的通信路径来提供外部访问。
因此,本发明不只涉及密码引擎本身,而且涉及以安全的方式使用一个或多个此类引擎来实现许多目标。在某一级别,本发明的架构涉及单个芯片,通过确保为了调用其功能而仅允许处理加密的命令来实现所述芯片的安全。尽管如此,仍提供了对外部随机存取存储器(RAM)的访问,所述存储器在安全内部芯片功能的单独控制下,可控制地分成加密和未加密的部分。在本发明的一个方面中,通过直接控制单个密码引擎来执行加密和解密操作。在其他方面,通过调用由内部微处理器元件(例如,那些由申请人的受让人的PowerPC系列芯片产品定义的元件)执行的命令和已存储的程序来执行安全功能(包括加密和解密)。通常,使用这些处理元件中的一个完整元件的子集。所包括的微处理器具有包括操作系统(例如,Linux)的外部易失性RAM(仍在芯片内部,但在处理元件本身的外部)。但是,该处理元件还可以包括其自己的内部RAM。仅通过至少部分地使用FPGA逻辑电路实现的内部安全流控制开关来提供对内部RAM的访问,此事实提供了额外且显著的灵活性和控制。但是,要指出的是,此流控制开关不只是用作简单的闭合开关;更确切地,在控制其他内部组件之间的信息流的意义上,它充当一个开关。还要指出的是,出于性能的目的,优选地在片内RAM中提供上述的操作系统;它不是FIPS要求。
在本发明的其他方面,本发明的单个架构芯片以协作的布置连接到一起,其中一个或多个COACH系统为其他COACH芯片提供检查功能和/或提供增加的处理功能。在没有对单芯片COACH系统提供的安全级别做出任何牺牲和没有对不受攻击做出任何危害的情况下提供了所有附加功能。
因此,本发明的一个目标是提供一种在单个安全集成电路芯片上的密码处理元件。
本发明的还一个目标是提供一种对安全攻击非常有抵抗力的密码处理系统。
本发明的另一个目标是提供一种其功能、命令和运算都只能通过使用已加密信号来访问的密码处理系统。
本发明的另一个目标是提供一种灵活但仍可以安全的方式与外部随机存取存储器通信的密码处理器架构。
本发明的另一个目标是提供一种密码处理器的架构,其能够与其他此类处理器进行安全通信。
本发明的另一个目标是提供一种包括一个或多个密码引擎的密码处理器,通过避免内部微处理器参与的快速路径指令来访问所述密码引擎。
本发明的另一个目标是提供一种在单芯片范围内实现的密码处理器。
本发明的另一个目标是提供一种不仅防篡改而且可响应篡改的密码处理器。
本发明的另一个目标是提供一种能够以安全方式与其他类似构架的处理器通信以提高性能和/或提供更好的RAS特性的密码处理器。
最后,但并不限于此,本发明的一个目标是提供增强、灵活、可扩展、快速、高效且安全的密码功能,特别是为了数据处理系统和其他通信需求。
在此对由本发明的各个实施例满足的期望目标列表的引用并非旨在暗示或建议任何或所有这些目标都单独地或共同地作为基本特征在本发明的最通用的实施例或任何更具体的实施例中存在。
本发明一般地涉及用于在单芯片上提供安全密码功能的系统和方法。在此还将本发明描述为提供安全的片上密码(COACH)。从广泛的角度,本发明提供了用于在外部世界和密码系统内部之间建立安全通信的安全方法,所述密码系统能够访问和使用多个密码引擎以及用于控制和使用这些引擎的自适应算法。更具体地说,本发明使用包括现场可编程门阵列(FPGA)的单芯片来在安全方式和环境下提供这种增强和灵活的密码功能。在本发明的另一个方面中,提供了到可控制地分成安全和非安全部分的外部存储器的通信。在本发明的其他方面中,通过使用多个COACH系统提供了额外的能力和灵活性,由于向每个芯片内部深层功能级别提供通信的安全方式,所述系统现在可以以安全的方式在自身之间以及单独地交互,从而提供了交叉检查和双重检查单个COACH系统的功能的方法。在另一级别,本发明还提供了用于对FPGA编程的安全机制。
还可以从完全不同的角度看待本发明。具体地说,本芯片可以视为对其功能的访问被安全地控制的处理器或处理器组。还要指出的是,在此方面,一个或多个所包括的处理器可以是数字信号处理器。这种布置对安全控制包括语音、声音和视频的数字介质是有用的。还可以包括其他类型的处理元件。在这点上,芯片上的基本组件是处理器,并且存在部署在其中的密码引擎,以便提供对处理元件的安全和/或授权的控制。在另一方面,如从上面提供的第一方面来看,中央元件包括可以以各种广泛的方式控制的密码引擎,其目标是提供密码功能,例如编码、解码和模算术的基本运算,特别是模取幂。
还可以从第三方面看待本发明。在这点上,主要组件为FPGA部分。在此方面,本发明提供了一种从芯片外部对该组件进行编程的机制。具体地说,现在能够以安全的方式执行FPGA编程。由安全密码功能来保护授权修改任何FPGA组件。现有的FPGA数据既不能被识别也不能被修改,除非根据存储在易失性存储器内的器件中的编码信息被特别授权,该信息会在识别到篡改时被擦除。
附图说明
图1是示出旨在在安全边界内提供多个密码(及相关)功能的单个电路芯片的架构,并且具体地说,示出使用组合的ASIC和FPGA电路来控制芯片内的信息流的方块图;
图2是更具体地示出图1的与永久存储某种指定密钥的可熔元件的存在相关的部分的方块图;
图3是示出使用由两个不同实体(例如,芯片制造商和芯片销售商)管理的公钥和私钥的过程流程图,芯片销售商一般是负责对芯片FPGA组件进行编程的实体;
图4是示出在密码(或其他)芯片生产和营销中所涉及的两个实体的交互的方块图;
图5是示出了销售商用于为了在内部易失性芯片存储器内提供用于验证和认证目的的销售商硬件证书以便建立FPGA运算的过程的过程流程图;
图6是示出了销售商用于为了在内部易失性芯片存储器内提供用于验证和认证目的的销售商软件证书以便在芯片的安全边界内建立软件运算的过程的过程流程图;
图7是示出了销售商设置用于配置芯片的FPGA部分的FPGA结构数据的初步过程的过程流程图;
图8是示出了由芯片销售商执行以配置芯片的FPGA部分的步骤的过程流程图;
图9是示出了将由芯片销售商执行的设置要在内部芯片存储器的典型非易失性部分中使用的软件的步骤的过程流程图;
图10是示出了将由芯片销售商执行以加载由图9所示的过程准备的软件的步骤的过程流程图;
图11是示出了用于为通过安全外部接口接收的数据和命令提供流控制的组合的ASIC和FPGA功能组件的一个方面的方块图;以及
图12是示出了结合单个外部存储器单元使用的本发明的系统的方块图,由于完全包含的安全机制,该单元可以从同一物理存储器被安全地分成加密和未加密部分。
具体实施方式
通过使用三种不同的技术使本发明成为可能,这三种技术一起提供了一种用于构建非常安全灵活而又不受攻击影响的单芯片器件的机制。具体地说,在芯片上使用电压岛使得可以为内部易失性低功率耗散存储装置使用双电源。双电源包括稳压电源和备用电池。此外,使用现场可编程门阵列(FPGA)使得可以以安全的方式从外部编程单芯片上的安全系统,而不会对提供的安全级别带来任何降级。因此,本发明能够结合新开发的算法,以及能够以新的方式结合旧的(或新的)算法来实现甚至更高的安全级别。最后,就在本发明的设计中采用的技术而言,电路封装密度的增加也是一个显著的因素。
图1中示出了本发明的整体架构。在此最全面描述的发明涉及一种用于执行密码功能的安全单芯片。但是,如上所述,在此提出的机制和过程还可更广泛地应用于任何希望以这样的方式使用FPGA电路的情况:其中仅可由拥有适当密钥的受信实体以安全的方式对所述电路编程。此外,如图1所示,芯片100包括嵌入式(微)处理器115。这允许一般地构建微处理器芯片,其中该处理器由FPGA以安全的方式来控制,所述FPGA本身可以以完全安全的方式来编程(这参考围绕图4到11的讨论在以下更具体地说明)。这意味着可以以安全的方式控制任何嵌入式处理器。例如,可以控制所述处理器以便将特定指令的执行限于可以提供可认证密钥的受信用户。
在本发明的优选实施例中,还在安全边界101内提供了安全性,所述边界可知悉、防范和响应篡改并满足上述的级别4FIPS标准。在此方面要指出的是,防篡改外壳不要求存在网孔;可以在没有网孔的情况下构建防篡改外壳。如FIPS 140-2标准所定义。更多详细信息在下文中提供。
本发明的更具体的单芯片安全密码处理器包括数个主要部分:外部接口110、处理器115、密码引擎(或多个引擎)195、随机数发生器(125和126)、外部存储器接口105和在加电的电压岛145中布置的存储器组件。图2中示出了电压岛145上的电路的更详细的视图。芯片的其他部分单独加电并存在于其自身的电压岛上。但是,在稳压电源和电池电源之间的切换通过使用调压器在芯片本身中执行,其中默认电源为稳压电源,而备选的备用电源为电池。将该功能从芯片移除不会节省管脚。仅有的节省将是消耗更少的芯片电路面积,但是该优点对于解决外部器件的延迟问题没有帮助。在单个芯片上提供所有这些组件。此外,提供了流控制开关150,流控制开关150以请求块的形式通过接口110接收外部请求。虽然将组件150描述为开关,但它还包括请求块处理器,该处理器接收请求块并对其做出响应来引导和控制各个其他芯片组件之间的信息流。对本发明最重要的是,开关150优选地包括两个不同的组件ASIC部分(专用集成电路)150A和FPGA部分150B(参见图11)。ASIC部分150A也可表征为“硬连线”电路。ASIC部分150A用于初始化系统、初始地处理请求块、与FPGA部分连接,并确保只有安全的FPGA信息才用于配置开关150的FPGA部分150B。可安全地配置的FPGA部分150B的存在使得芯片具有高度安全且高度灵活的特性,不管芯片是用于提供对密码引擎的访问还是用于其他与安全处理器控制有关的目的。还要注意的是,FPGA部分150B使芯片销售商提供完全定制的处理器单元成为可能(参见下文中对芯片销售商和芯片制造商之间区别以及其相对角色的描述,特别参见图4)。特别参考图11,要注意的是,从流控制电路150到芯片上的其他组件的连接不限于仅到ASIC侧150A的连接。例如,图11不应被解释为表示FPGA部分150A和密码引擎195之间没有连接。但是,要注意的是,即使芯片旨在用于处理器控制并且并非旨在限于密码运算,仍需要某种形式的内部密码引擎来提供使处理安全的加密和解密。
本发明的片上系统(SOC或COACH)以以下方式使用电压岛。施加电压的线具有两个电源以便在内部易失性SRAM存储器132内保存数据。当其上部署COACH系统的印刷电路板正常加电时,该正常电源用于维护SRAM(静态随机存取存储器)132。当关闭印刷电路板的电源时,电池单元175用于维护SRAM存储器132中的数据。当既不是稳压电源170也不是备用电池175向电源控制器140供电时,没有电源被提供给SRAM 132并且其内容消失。这很重要,因为在SRAM 132中包含有用于提供安全性的信息。它的易失性特性确保了切断芯片电源将总是导致存储在SRAM132中的信息清零以便所述信息完全不可访问。在优选实施例中,使用了电池后备的SRAM 132,如图1所示。虽然SRAM 132主要用来存储关键参数,但是将eDRAM 130用作处理器115的基本RAM。虽然将SRAM 132布置在电压岛145内,但是eDRAM不需要如此。实时时钟133也布置在电压岛145内。实时时钟133在任何情况下都不是必不可少的元件,但是对于在时间限制的基础上启用芯片功能的那些情况是有用的。对于操作系统来说也希望存在实时时钟133。在安全性是首要芯片功能的操作中更为必要,在这种情况下所述时钟被安全地初始化。否则,从其中结合芯片的系统的时钟来加载实时时钟133。此外,虽然eDRAM 130也不一定是易失性的,但是它可以是易失性的。但是,通过流控制电路150授权或拒绝对其的访问。可以预见的是,在正常操作中,eDRAM 130保存操作系统以便操作处理器115。但是,这不是对本发明的更广泛方面的要求。
处理器115优选地包括具有例如由本发明的受让人制造并销售的IBMPowerPC提供的“轨迹”的处理器。处理器115是嵌入式处理器,它可以包括也可以不包括内部错误检测机制,该机制通常由内部或外部信号线集上的校验位提供。确实提供某种形式的内部错误检测的处理器是优选的,因为它们倾向于更加可靠。但是,即使本发明的处理器出现故障或变得有缺陷,也不会危害安全措施。相应地,由于加密的安全措施的存在,所以如果需要,可以使用不太复杂且不太昂贵的嵌入式处理器115。
本发明还优选地包括对单芯片系统内部来说是本地的入侵检测逻辑。这是特别有利的,因为不需要任何外部模拟电路。由于将关键组件集成在安全边界内,本发明的单芯片处理器包括更难攻击的组件,特别是以组件选择的方式。所有访问都是通过已定义和限制的接口:第一接口110,其(通过请求块)接受命令和数据;以及第二接口105,其以受控的方式与外部存储器200交换数据,外部存储器200包括加密部分210和未加密部分220(参见图12、13和14)。访问的特定外部存储器部分完全由从单芯片密码处理器元件100的安全边界101内生成的地址信息来确定。对外部存储器200的访问是通过此由流控制开关150控制的接口。在本发明的优选实施例中,通过开关150的FPGA部分150B提供对外部存储器访问的控制。
接口110是将数据传送到芯片100中的主要端口。可以使用任何明确定义的接口。但是,优选的接口是在个人计算机中广泛使用的扩展PCI接口。通常,会加密进入该端口的信息。它是请求块进入芯片的主要端口。通常,进入的请求块的每一个部分(除了命令本身)都包括加密信息。加密信息的一部分包含密钥,并可能包含证书或其他授权标记。
芯片100还包括一个或多个密码引擎195,所述引擎使用通过流控制开关150提供给其的密钥来执行加密和解密运算。密码引擎(多个)195本质上是由流控制开关150和嵌入式处理器115使用的协处理器,不仅在正常操作期间提供密码服务,而且同样重要的是,引擎(多个)195提供了用于构建流控制开关150的FPGA部分150B的安全机制。这些引擎还确保当需要时,在SRAM 132中存在适当的密钥和证书。
这些引擎提供了在密码技术中使用的多种算法的特定硬件实施方式。相应地,本发明的密码芯片能够选择对用于编码信息的算法最高效的硬件电路。在2000年12月19日提交的美国专利申请No.09/740485中说明了一种特别优选的密码引擎。该引擎提供了通过识别使在将模乘以大素数中涉及的特定运算流水线化的可能性来产生的效率。如上所示,本发明还可以使用多个密码引擎,所有这些引擎可以相同或不同。在这点上,要指出的是,请求块(参见下文中有关图11的说明)包括标识要使用的密码引擎或密码引擎组的字段。但是,本发明不限于使用任何特定的用于加密和解密的引擎。此外,虽然这些引擎通常基于执行模取幂运算的算法,但是本发明包括使用任何引擎,所述引擎实现任何充分期望的安全密码算法或方法。具体地说,本发明不限于使用基于公钥/私钥范例的密码引擎。但是,使用该范例中的一些片内功能可用来为可编程的逻辑器件、配置数据和软件提供安全性。此外,还指出了本发明的特别有利的方面之一在于,由于FPGA部分150B提供的灵活性以及可由嵌入式处理器115访问的存储器部分中存在的编码,可以根据多个顺序混合的用于加密和解密的算法来提供密码服务。简言之,本发明允许构建数量无限的密码方案,所有这些方案都在单芯片实施方式的情况下建立并使用。唯一的限制在于执行加密和解密运算的处理时间的增加。但是,该时间使用仅呈线性增长。
还向芯片100提供了对外部存储器200的访问。该存储器优选地为RAM器件,但并不限于此。可以使用任何可寻址的存储器器件。通过外部存储器接口105提供对外部存储器200的访问。该接口的主要功能是实施建立在本芯片/系统内的可寻址性限制,在其下外部存储器包括两个部分:(1)旨在仅保存未加密信息(但是可以保存加密信息)的明文部分和(2)仅包含加密信息的加密部分。通过可寻址性检查来控制将外部存储器200分为这两个部分,所述可寻址性检查由嵌入式处理器115和流控制开关150的ASIC部分150A或FPGA部分150B或它们的某种组合在芯片100内部执行。此外,FPGA 150的灵活特性允许由芯片销售商(可以与芯片制造商相同或不同)来设置外部存储器200的两个部分之间的可寻址性分区边界。
芯片100还包括用于生成随机数的内部机构。为了完整,优选地使用两种机构:真随机数发生器(TRNG)125和伪随机数发生器(PRNG)126。这些发生器通常用于提供种子值以便生成在密码处理中使用的随机数。PRNG 126通常实现为线性反馈移位寄存器,它有效地实现了所谓的没有因数的本原二进制多项式的乘法。这在本领域中是公知的。参见例如授予Paul H.Bardell并受让给与本发明相同的受让人的美国专利No.4,959,832。TRNG优选地通过利用片上量子现象来实现。通常通过对用户环境外部的熵源进行采样和处理来生成真随机数。在高安全性环境的情况下,在安全边界内部生成随机数。通常的方法是通过放大由电阻器生成的热噪声(约翰逊噪声)或使用半导体二极管并将一个或多个位馈入比较器或施密特触发器,随后对位流进行倾斜校正以确保大致均匀地分布1和0。
接着考虑电压岛145中存在的电路。提供给电压岛145内的任何和所有组件的电源来自电源控制器140。电源控制器140向SRAM 132提供电源。如果预期在使用或运输中,芯片100将由可靠的电源(市电电源或相对大型的电池)供电,则也可以在电压岛145中包括eDRAM 130。但是,由于eDRAM 130通常比SRAM 132消耗更多的电力,所以优选地eDRAM130位于电压岛145外部,以便它可由普通的芯片总线电源线供电。但是,当备用电池变成关键的电源时,eDRAM 130不应出现在电压岛145中,其中将通过电源控制器140对其供电。甚至电源控制器140也可以布置在电压岛145之外。由于本发明的优选实施例采用硬连线(或等同物)熔断器,所以优选地包含密钥135A、135B和135C(参见图2)的熔断器135也布置于电压岛145外部。但是,由于硬连线的熔断器结构不消耗任何显著级别的功率,所以在需要或方便时,也可以将它们布置在电压岛145内部。虽然如此,图1示出了它们布置于其优选位置。注意,可以以数种方式提供本文提到的所谓的硬连线熔断器。例如,可以使用受控的激光来除去导电材料以产生指示密钥中的0位或1位表项的电路结构。还可以通过在施加的电源高于预定级别时易于产生开路状况的电路组件来提供熔断器(在此上下文中的“熔断器”一词的通常含义和起源)。也可以采用其他永久性存储器结构,但是由于它们的成本和/或大小限制而不是优选的。电源控制器140从两个并仅从两个外部源接收电力:稳压电源170和电池单元175。电源控制器140的主要功能是确保假如稳压电源170出现故障的话,将仍从电池单元175维持电力,并且还确保如果电池单元175和稳压电源170都出现故障,则不向易失性的SRAM 132供电。是该存储器单元的易失性与电源控制器140的操作一起确保了对芯片篡改的某些尝试不会导致危害防篡改芯片边界101内的加密信息的完整性。
COACH器件100中包含的电路也包括熔断器135。在图2中更详细地示出了这些熔断器。熔断器135在提供期望的安全级别和设计的功能,以及使用和操作本发明的系统方面非常重要。具体地说,熔断器135优选地包括在芯片制造期间提供的物理更改区域的阵列。虽然在此描述为“熔断器”,这主要源于如何为了其他目的在其他芯片上产生这些区域中的某些区域的历史原因,但是此处使用的熔断器代表位位置的阵列,所述位位置在制造期间永久地写入芯片以存储特定的密钥信息。通常使用激光束将这些密钥写入芯片,以便为三种主要的密钥值写入期望的位图形:芯片私钥135A、芯片公钥135B和销售商公钥135C。参见图2。这些密钥值位于受保护的防篡改边界101内,并且还优选地位于电压岛145内;但是,注意,密钥135A、135B和135C位于电压岛145内并不是必须的。事实上,可以通过EPROM或者EEPROM技术来实现熔断器。
存储在仅可从内部访问的熔断器中的密钥的使用类似于在银行中使用按键系统打开保险箱(除了此处没有机会出现这样的事件:如由银行钻锁或使用银行万能钥匙)。在典型的保险箱情况下,需要两把钥匙来打开储户的保险箱:储户/客户带到银行一把钥匙和银行职员带来的另一把银行钥匙。需要插入两把钥匙才能打开保险箱。销售商公钥和私钥类似于客户的保险箱钥匙;芯片公钥和私钥类似于银行的保险箱钥匙。在如图3所示的过程中,这些密钥一起工作。首先使用销售商的私钥502加密(步骤501)消息(任何消息,其实际上是作者知道含义的任何连续的位,并且包括可执行二进制程序)。注意,这是使用的三个密钥中唯一没有作为信息位可用的熔断区域提供给芯片100中的电路的密钥。(此处,在密码意义(而非任何应归于保险箱类似物的意义)上使用术语“公钥”和“私钥”。)再次使用芯片公钥504对来自步骤501的加密消息进行加密(步骤503)。因此,该双重加密的消息被安全地移交以便通过任何方便的路径505来传输。这可以包括通过互联网、通过内联网或其他形式的专用网络或物理地将软盘或任何其他机器可读介质携带或邮寄到期望目的地来传输。但是,最终地,该双重加密消息的目的地是芯片100本身。该加密方法对理解本发明的结构和操作非常重要,并且对理解其安全方面如何工作非常重要。
重要的是注意到,通过熔断器135A的存在和使用,在芯片100的安全边界内提供芯片私钥507;同样,通过熔断器135C的存在和使用,在芯片100的安全边界内提供销售商公钥509。因此,完全在防篡改边界100内,存在用于恢复作为输入提供给加密步骤501的原始消息的机制。首先使用芯片私钥507解密(步骤506)来自任何期望传输路径505的双重加密消息。但是,来自该步骤的作为输出提供的信息还不是有用的形式。再次使用销售商公钥509对其解密(步骤508)。因为销售商公钥509和芯片私钥507都对片内电路可用,所以完全加密的信息可以通过I/O接口110传送而无需担心其安全性。因此,可以以完全安全的方式提供信息到芯片的传送。
在其中提供了流控制电路150的完整ASIC(即,硬连线)实施方式,或其中已存在编程的FPGA的那些情况下,上述过程是完整的。因此,现在将注意力集中在后者的情况,即,如何确保正确和安全的FPGA编程。为了更完整地理解该过程,如图11中更具体地说明的,首先重要的是理解芯片销售商和芯片制造商的角色并理解为以下目的采取的处理:(1)确保安全的FPGA编程和(2)确保将诸如操作系统(或操作系统内核)之类的软件安全地加载到eDRAM 130中。通常,在本发明的最广阔的范围中,在此将芯片制造商和芯片销售商的角色看作是不同的。但是,应全面理解的是,本发明还构想了其中芯片100的制造商也是芯片的销售商的情况。
着手于完全编程的芯片(具有内部安全FPGA组件,其“准备发挥作用”)的过程是一个多步骤过程,并可方便地分为两个不同的部分。生成“准备运行”的芯片的过程的第一部分涉及对FPGA组件编程。该过程的第二部分涉及在eDRAM 130中加载安全编程。此外,这些过程中的每个过程本身是一个涉及认证子过程的多步骤过程。图4中示出了该过程的概述。图5-10示出了在图4中所示的子过程中涉及的细节。
除了发布销售商的公钥509,该过程通常始于芯片销售商请求要制造的一个或多个芯片。在通常情况下,制造来自发出请求的销售商的所有芯片且编码熔断器135C以表示销售商的公钥。熔断器本身可以通过数个不同的方式实现。在芯片制造过程中可以对它们进行硬连线。它们可以在芯片制造后使用激光烧入或通过使用足够高的电流脉冲,类似于普通家用保险丝“熔断”的方式。此外,它们也可以由ROM、EEPROM或EPROM技术来提供。EPROM熔断器具有其内容在使用完后可以被擦除的额外特性。但是,销售商不限于使用单个公钥。该密钥在制造期间被添加到芯片,其方式使得它可由片内电路的其余部分“读取”,比如说由激光蚀刻电路组件。芯片制造商然后添加其自己的两组密钥:表现为熔断器135A和135B的芯片私钥507和芯片公钥504。销售商私钥502对销售商来说仍是秘密的。在一完成芯片后,芯片制造商就破坏关于哪个芯片私钥在哪个芯片上的信息。参见图4。
所需密钥写入其中并位于防篡改屏障101内的芯片然后被装运到希望装运出厂芯片的个人。这些出厂芯片优选地在安装到期望的板上后装运并与电池单元175连接就位以保持SRAM编程,直至卡和芯片都永久地布置在目标系统(例如,通过其提供了稳压电源170的数据处理器、服务器或网络环境)中。
在将任何实质性的信息传送到芯片100内部之前,会执行两个过程来确保以下两者在SRAM 132中的存在:(1)用于加载FPGA配置数据的销售商的证书和(2)用于加载其他安全编程数据的单独证书。因此会加载两个证书:用于后续加载FPGA配置数据的销售商的硬件证书,以及用于后续加载诸如操作系统之类的软件的销售商的软件证书。明显地,FPGA配置必须在加载其他信息之前发生。在这点上,重要的是指出,到现在为止,仅生成了稍后在客户站加载的数据。因此,此时不需要用于保留数据的电池。
一旦加载了证书(参见图5和6),就首先准备要加载的信息(参见图7和9)。最后,会加载所需的FPGA数据(图8),然后加载软件编程(图10)。随着电池就位,芯片可以装运到最终客户(终端用户)以用作一种灵活而安全的多引擎密码处理器,或用作处理器领域内的其他装置。现在将说明这些步骤的细节。
在这点上,再次将注意力集中到图4。一旦将芯片100提供给芯片销售商,则第一步(图4中的标号520)是添加销售商的硬件证书(一组用于验证销售商对FPGA 150B做出更改的授权的位)。如果已准备了FPGA配置数据并且其可用,则现在可以加载FPGA配置数据。但是,通常销售商现在还将销售商的软件证书(一组用于验证销售商对内部以及因此受保护的存储器单元130和132做出更改的授权的位)加载到SRAM 132中(步骤540)。一旦加载了这两个证书并准备好要输入的信息,就首先加载FPGA配置数据(步骤560),接着加载在eDRAM 130和SRAM 132中使用的软件。在所有这些过程中,重要的是牢记明文(即,未加密)数据从不跨越安全芯片边界。也就是说,FPGA配置数据被特别地编码,任何要加载的软件也是如此。现在说明这些过程的细节。
具体地说,注意图5。芯片销售商使用证书处理来确保仅对安全芯片边界101内存在的信息做出了授权更改。在步骤524中使用销售商的私钥525对该证书进行加密。但是,在该加密步骤之前,销售商可以使用其他可选的持续时间激活步骤来支持可添加到系统的按需功能,其中在默认激活“无路径”模式时将安全地存储功能激活代码。在无路径模式下,如果芯片在系统上,则默认没有被激活以供用户使用的功能或路径;相反,仅为了系统使用或功能代码激活而激活功能。这可以通过将选中的证书521传递经过销售商的散列函数522a来应用到资源资产管理步骤。(参见下面段落中对散列函数的一般描述的讨论。)然后在步骤523中将原始销售商的硬件证书521与散列版本的证书521相组合。在步骤523发生的组合优选地是串联两个输出位组(原始证书加上其散列版本)。来自步骤523的输出然后在步骤524中使用销售商的私钥525进行加密。该加密的输出则取决于销售商的散列函数522b并在步骤526与非散列的版本组合,其优选地也是“通过串联组合”操作。通常,该散列函数是在步骤522a中使用的同一散列函数,除了它应用到不同的输入位流。来自步骤526的输出在步骤527中使用芯片公钥528来加密。将来自该步骤的输出提供给SRAM132。特别要指出的是,尽管将来自步骤527的输出通过接口110优选地提供给SRAM 132。但是,在完成该操作之前,可以理解,首先通过调用特定目的和受限的“加载FPGA”命令来对FPGA 160编程(参见图11)。此外,注意,基于外部存储器路径105的启用,还可以对FPGA编程来通过接口110接受类似的请求块。图5中所示过程的目的是在SRAM 132中放置授权的加密标记,以便随后允许将FPGA配置数据加载到FPGA 150B中。
包括无路径模式在芯片功能方面提供了显著的优点。该特殊模式(优选地在COACH流控制开关150的状态机逻辑中实现)提供了一种机制,在该机制下,到芯片的可接受输入仅包括能够使芯片“开启”或激活的信息。更具体地说,此模式的使用允许启用芯片以执行特定功能和任务以排除其他功能和任务。例如,无路径模式允许使用授权代码,该代码允许芯片运行一段受限的时间和/或指定的持续时间。该模式还允许芯片执行特定操作并禁止或拒绝访问其他操作。例如,如果出于使用19024位密钥加密的目的购买芯片,则将阻止芯片使用2,048位密钥或4,096位密钥或任何其他密钥大小来执行加密操作。但是,如果支付额外的费用,可以使芯片完全能够执行这些操作。此外,虽然本发明的芯片最初被看作安全密码处理器,但是,还可以将同一芯片看作通用处理器或处理器组,其在时间和能力方面的功能以授权和受限的方式来控制,在这种方式下,芯片中存在的密码引擎用于提供必要的授权级别。因此,本发明的芯片变成“按需”器件。此外,对芯片器件用途的控制仍在芯片制造商的直接控制之下。虽然如此,如果需要,芯片制造商仍具备将此制造后和销售后控制级别继续传递给其他商业实体的能力。然后,在某种意义上,所述芯片变为具有可控制的租借期和程度的“租借装置”,对其的控制还可构成单独可售的项目。
通常,散列函数说明了其中将要传输的消息或其他信息映射到一系列位的过程。消息中的位数通常旨在比作为来自散列函数的输出产生的位数大许多数量级。映射是以这样的方式:实际上消息的位内容的任何变化几乎都确实地保证在散列函数的输出中产生变化。这确保了在对消息做出任何更改时,将出现原始散列函数输出和散列函数的新输出之间的错配。该散列函数输出通常被称为消息摘要。已知许多不同的散列函数可以实现期望的安全级别。但是,本发明不限于使用一种散列函数或其他散列函数,只要一致地使用它们即可。上述的某些FIPS标准还包括可接受的散列函数的说明。例如,在2002年8月1日发布的FIPS 180-2中,说明了什么被称为安全散列标准(SHS),它指定了四种安全散列算法(SHA):SHA-1、SHA-256、SHA-384和SHA-512。
还执行类似的过程540以便将授权的加密标记放置到SRAM 132中,其目的是随后允许将软件(例如,操作系统和/或其组件)加载到SRAM 132和eDRAM 130中。图6中说明了该过程。但是要指出的是,该过程(虽然类似于图5中所示的过程)的具体不同之处在于,它包括了用于结合加密时间和日期的机制。可以使用该信息来为芯片操作提供时间限制。因此,可以授权在给定持续时间内或在两个日期或时刻之间的设定时间段使用芯片。要指出的是,这是本发明的可选功能。在操作时,完整配置的芯片具备授权证书。该证书可以包括时间限制或其他标记以便控制对芯片上提供的处理功能的访问,形式为处理器115或一个或多个密码引擎195。出于本发明的目的,授权证书是向芯片提供的任何数字标记,其目的是与已编码的内部数据进行比较,且适当的匹配意味着许可芯片访问某些级别的芯片功能。该功能访问级别涉及暂时获准和许可性能和安全级别,例如,获准使用指定长度的密钥。如有必要,在将提供的授权证书与提供给SRAM132的数据相比较之前,首先使用一个或多个引擎195来解密该提供的授权证书。
如图6中所示的步骤之一,在步骤546中,将芯片用户证书542(其优选地结合了有符号的“持续时间”指示)与其他信息相组合。芯片用户证书542的使用提供了一种用于控制本发明的至少一个可选方面的机制,即,允许在定义的时间段或定义的持续时间内授权使用的能力。该证书因此可用于激活系统和/或允许使用系统以便执行特定功能(例如加密),而同时拒绝其他操作的授权。简言之,除了暂时受控以外,授权还可以是选择性的。用户证书542为该授权提供了正确的标记。虽然表示为持续时间,但是该标记还可以包括开始和结束时间和/或日期指示。使用销售商的私钥对其签名。其他提供给组合步骤546的信息包括销售商选择的软件证书541。同样通过步骤543a中的销售商的软件散列函数来处理证书541。这优选地与图5中示出的过程中使用的销售商的硬件散列函数不同。在步骤544使用销售商的私钥545来签名销售商的散列的软件证书。将来自步骤544的输出与销售商的软件证书以及与芯片用户证书542相组合。优选地通过简单的串联来进行该组合。在步骤543b中,使用销售商的软件散列函数处理来自组合步骤546的输出,它可以提供也可以不提供与步骤543a中相同的散列函数。在步骤547中使用芯片公钥548加密来自步骤543b的输出。如图5中所示的过程,然后将输出提供给SRAM 132。
与由本发明的芯片提供的高安全性级别相关联的一个显著方面是:只有加密的数据才通过接口110传送。因此,在通过接口110向芯片100提供用于将编程结构提供给FPGA 150B的配置数据之前,将加密该配置数据。图7中示出了执行此加密的优选过程。与销售商的软件证书一样,也可以将开始和结束时间限制和/或持续时间限制结合到芯片及其组件(例如,FPGA 150B)的操作中。如所公知的,在名为网表的表中提供了编程的FPGA的结构。在步骤562中,将所需的网表561a与时间指示器561b(优选地以协调世界时(UTC)的编码形式提供)以及可选的持续时间指示561c相组合。再次地,该组合步骤优选地为简单的串联。签名的证书(使用销售商的私钥)通过散列函数565a并在步骤566使用销售商私钥567加密。来自该步骤的输出通过销售商的散列函数565b并在步骤568使用芯片公钥569加密。如同上述的过程,散列函数的使用为可选的,但仍非常希望实现最大可能的数据安全和完整性;此外,每个函数可以与其他函数不同,也可以相同。通过使用特殊的“LOAD FPGA”命令,将来自加密步骤568的输出通过接口110提供给芯片100,在以下进一步详细说明的图11中具体示出了该命令的操作。因此可以看到,提供了一种在将FPGA配置编程数据跨安全芯片边界101传输之前,用于准备所述FPGA配置编程数据的过程560。
图8显示了FPGA配置数据的插入过程600的概述。首先确保将电池或其他电源连接到芯片100(步骤601)。上文提到,在没有电力的情况下,将擦除易失性SRAM存储器132。接下来在步骤602验证电源连接。这通常通过执行“on answer”命令来完成。作为如何验证电源连接的另一个实例,这可以在加电过程中实现,此时,将电压施加到锁相环(PLL)和从振荡器生成的基准时钟。PLL的锁定指示有效的时钟信号。此刻,通过扫描入数据以及验证扫描出的数据与扫描入的数据的期望输出相匹配来生成硬件签名。然后,通常将期望输出与存储在内部EPROM中的数据比较。要指出的是,该过程是在微处理器和类似电路器件中通常使用的标准操作。然后执行重置操作以确保ASIC电路150A处于适当的初始状态(步骤603)。在这点上,要指出的是,通常将使用状态机设计,其中提供了机制来接收将状态机调整到明确定义的“初始”状态的特殊重置信号。接着,将销售商硬件证书加载到SRAM 132中(步骤604;参见图6)。然后(步骤605)执行LOAD FPGA命令(参见图11和其相关说明)。接着(步骤606)加载销售商软件证书。然后芯片在内部验证签名(在使用内部可用的密钥进行解密之后;参见图3)。接着(步骤608)使用外部存储器密钥加密来自步骤607的输出并将其加载到闪存中。在这点上,要指出的是,在制造后首次对芯片加电时,所有数据都在硬编码的密钥下加密。这些密钥由板上密码引擎使用以在必要时对数据进行加密和解密。结果数据由在电池后备的SRAM 132(BBSRAM)中存储的短期密钥进行加密。使用SRAM 132中的短期密钥不仅使COACH系统能够更快地加电,而且在物理攻击的情况下还提供了加强的安全性。在第二次引导操作时,FPGA数据(即,对FPGA编程的网表数据)以加密的形式驻留在外部存储器210中。要指出的是,使用后备电池将该FPGA数据安全地加载到外部存储器中。注意,该信息不是由初始存储在片上熔断器中的密钥保护的,而是由之后独立提供的密钥信息保护的。在操作中,篡改当前的COACH装置会破坏任何内部存储的密钥,并因此使外部存储器变得无用。因此,即使将包含COACH装置的卡从其系统(或系统级板)取出,机密信息仍保持为机密信息。该编码信息的存在提供了两个显著的优点:(1)提供了后备电池正在工作的额外指示器;(2)无需使用原始制造商提供的数据来重新初始化具有FPGA数据的芯片。
除了具备准备要加载的FPGA配置数据的过程,还存在相应的准备要以安全的方式加载到芯片存储器中的软件的过程。与加载FPGA配置数据一样,准备工作也涉及到加密。图9中示出了期望的过程,该过程与图7中示出的准备FPGA配置数据的过程实际上完全相同。图9的标题指的是“形成”,因为术语“编译”在应用于软件时还具有其它含义。例如,图9中的第一步是“编译”软件的步骤,因为该术语经常应用于将代码转化为所谓的二进制或可执行格式(步骤581a)的过程。除了初步区分,图9的过程与上述图7的过程以同样的方式继续。而且,如同图7的过程,是否包括时间和/或持续时间信息是可选的。
现在将注意力转向使用COACH装置的下一个阶段,其中首次执行硬件代码(即,FPGA编程)和软件代码的加载。在随后的情况中,初始化过程要简单一些,具体如下所述。但是,目前的讨论还是集中于制造的芯片首次加载硬件(FPGA)数据和软件。首先连接一个或多个电池,如果尚未连接的话。通过检查连接到外部电源的引脚上的电压来验证电池连接。如果没有连接电池和/或在对象引脚上没有足够的电压,则储存在SRAM132中的任何密钥都将丢失。在这种情况下,任何存在于外部存储器200中的数据也将“丢失”,因为在不可用的密钥下,所述数据将变得锁定。显然,在这种情况下,不会加载任何硬件或软件代码,芯片返回需要提供硬件特定的FPGA代码的阶段。如果这种错误伴随着物理篡改的征兆,则优选地丢弃该芯片。就该过程是自动的而言,低电压或无电压信号优选地导致向用户提供警告,说明没有电池连接且数据将在断电时丢失。这可以通过可由系统软件层访问的位来完成。使用存储在电压岛中的位来指示篡改;这个位不仅可用来检测篡改事件,而且还可用来指示电池未连接。该位包含在图2中示为在电压岛145内的状态寄存器134中。当芯片加电时,电压岛以外的所有组件都将重置。但是,电压岛上的组件内的信息将由电池单元175或稳压电源170来保持。SRAM 132中的签名指示芯片是否重置。这是在首次加电时加载到SARM 132中的初始化签名。如果芯片100被重置,这意味着将电压岛145初始化,如果进行了初始化,则使用内部地址读取状态寄存器134。在此方面要指出的是,此寄存器不必整体存在于电压岛145上;在是状态寄存器的一部分的电池后备的SRAM 132中的一些位不必一定在电压岛上。状态寄存器134存在于电压岛145中,并且还包含指示篡改的位,该位是在首次初始化之后一直维护的值。当请求芯片状态时,篡改位是所提供的位之一;如果设置了该位(根据活动的值),则它指示篡改或未篡改的状态。将初始化另一个位以指示电池是否已连接。
如果电池测试一切正常,则重置芯片。在芯片重置操作中,优选地重置所有组件,除了电压岛145上的那些组件以外。重置通过流控制电路150优选地基于其的状态机的运行来完成。在重置后,作为LOAD FPGA指令的操作中的第一步,将加载硬件销售商证书。在第二步中,其中将加载FPGA数据本身,将使用销售商硬件证书以确保FPGA数据与销售商硬件证书匹配。但是,在第一次时,使用电子熔断器(eFuse)中的硬编码值来解密数据,并且对于之后的每次“加电”,使用由证书验证的公钥来控制访问。前文曾经谈到,如图5所示,该证书是使用销售商的私钥编码的,现在这可以确保安全匹配。一旦LOAD FPGA指令将销售商的硬件证书加载到SRAM 132中,则此证书中的信息就用来解密FPGA数据,然后将所述数据加载到流控制开关150的FPGA部分150B中。这确保了只允许授权的销售商修改FPGA数据。在LOAD FPGA指令的下一阶段,销售商的软件证书(先前已加载,或通过LOAD FPGA指令同时加载(参见图10中的步骤710))被用于解密和/或验证(参见图10中的步骤720)此后以未加密的形式优选地存储在eDRAM 130中以供处理器115使用的软件。在为销售商软件形成过程构想的过程中,图9示出了范围更广的过程,其中软件被加密并且只是被散列和签名。但是,需要注意与加密有关的步骤(586、587、588和589)是可选的。根据需要的安全级别,有两个选项。在第一个选项中,只是散列和签名软件,从而保持源代码可用,因此导致存储器操作速度加快。尽管如此,为了增加的安全性,在第二个选项中,使用与加密相关的步骤以及示出的其他步骤。此软件通常包括某种形式的操作系统或操作系统内核。
通过经由接口110提供特殊识别的命令来执行专用LOAD FPGA指令;该命令由图11中的请求处理器155来识别,所述处理器在开关150的ASIC硬件部分150A中实现。如前文所述,此命令包含选择要与先前存储的硬件销售商证书相比较的密钥信息。如果比较成功,则允许用于编程FPGA部分150B的网表数据通过接口110,并且将所述数据用于编程FPGA部分150B。此时,编程流控制开关150的FPGA部分150B。FPGA数据是易失性的,并且如前文所述,通过使用Load FPGA指令来保护,这要求使用正确的密钥来访问。
一旦未加密形式的软件在eDRAM 130中出现,优选地也将它加密(参见图10中的步骤730)并将它加载(参见图10中的步骤740)到外部存储器200的安全部分210(参见图12)。这使用外部_存储器_密钥(external_memory_ key)(参见图2中的标号135D)来完成。以与熔断器相同的方式来提供外部_存储器_密钥。该信息就像其他熔断器一样用作硬编码的密钥。初次使用时,任何作为外部存储器的一部分传送的数据都采用外部_存储器_密钥来加密。然后解密所述数据并内部地加载所述数据,并再次使用新生成的密钥加密所述数据并将其存储在外部存储器200中。一旦成功地将代码存储在eDRAM 130中,就设置代码_已加载(code_loaded)寄存器的状态以指示此状态(参见图10中的步骤750)。与前文讨论的篡改位一样,此寄存器优选地包含在电压岛145内的状态寄存器134的一个位中。在变型实施例中,状态寄存器134可以成为SRAM132的一部分。
加载的软件优选地包括针对每个加载的设备驱动器的签名。虽然软件以未加密的形式存储在eDRAM 130中,但是还希望将eDRAM 130的内容的加密副本(或其部分内容)存储在外部存储器200中。在该处存储此信息提供了用于“重新引导”操作的便利位置。每次引导时仍加载FPGA,但至少不再需要重新使用启动软盘;并且启动也变得更安全,因为如果检测到篡改,可以使用该软盘重新初始化整个芯片。该启动软盘包含启动软件,所述软件属于先前生成的不同保护层并且由硬编码的密钥(即,实现为熔断器的密钥)加密。这就像拥有个人安全密钥。通过外部存储器接口105提供了从内部到外部存储器200的安全传输,所述接口优选地通过安全地控制对存储器200中的受限地址组的访问来工作。
如上所述,现在将注意力集中到硬件(FPGA)和软件信息的后续加载。在上面描述的初次加载操作的过程中,一般假设电池未初始连接和/或以其他方式得知要执行初次加载操作。但是,对于后续的加载操作,首先希望检查代码_已加载寄存器的状态。这通过读取电压岛145中的状态寄存器134内的电池_后备(battery-backed-up)位来完成。该位存储在电压岛145上,并且如根据寻址和访问状态寄存器134所述的来检索该位。如果寄存器指示已加载代码并且如果没有指示错误,则操作通过启动硬件(通过从安全外部存储器部分210加载FPGA数据)来继续。但是,如果检测到篡改或存在硬件错误,或者电池或存储器出现故障,则在状态寄存器134中提供错误指示。借助状态寄存器位来提供该错误指示,由于寄存器在电压岛145上的存在,所述位在需要时由电池175支持。状态寄存器134的内容由芯片内部软件读取并优选地在引导操作和之后的操作期间将所述内容报告给在eDRAM 130中运行的操作系统。通过指定其唯一地址或通过执行命令或读取操作来访问状态寄存器134。此外,如果外部加密的存储器的验证没有改变签名,则使用相同的机制来报告错误。在加载FPGA数据后,从安全外部存储器部分210检索操作系统的所有段(或任何其他所需软件),将它们解密并存储在eDRAM 130中。芯片现在已准备好加载上层存储器段。在1999年11月发行的题为“IBM 4758型13安全策略”的公众可以获得的文档中描述了存储器段的概念。出于当前目的,指出了段0和1是其中插入引导代码的存储器部分。这包括如迷你启动、迷你启动0和POST(开机自检)代码。段2具备操作系统(OS)级代码。最后,段3包含应用级编程。
现在将注意力集中到电压岛145上存在的实时时钟133的使用和操作(参见图1)。这是可以以安全的方式重置的硬件时钟。其可以结合基于时间的授权使用以便使用所有或部分芯片功能。例如,该时钟可以用于控制芯片使用的持续时间或者锁定特定的开始时间或结束时间。如本文中使用的,此时钟指被量化成所有方便的时段的时间。可以以日、周、月、年或纳秒来测量时间并其仅受硬件实现中使用的时钟/振荡器的频率的限制。一旦将芯片初始化,则存在特定时间段的功能激活的潜在问题。验证实时时钟133中的初始时间设置是将该问题最小化的重要步骤。为了更好地促进使用实时时钟133,希望还在状态寄存器134中包括状态位,当以安全的方式设置了时钟133时,将设置所述状态位。但是要指出的是,从芯片本身内,很难判定是否正确设置了时钟133。
为了阻止在未授权的时间使用或使用未授权的持续时间,将控制用于存储当前时间和日期的时钟133中的寄存器,以便只能通过安全机制来改变所述寄存器。可以通过多种方式完成此操作。最容易的方式是简单地读取芯片安装在其中的系统的系统时钟。优选地使用用于COACH设备和COACH芯片设备驱动器的主系统来建立时钟设置过程。但是,由于并未将系统时钟看作足够安全的时间信息源,所以对于多数应用来说,这不是期望的方式,尽管对于某些受限的目的,它是可以接受的,即使只是暂时如此。具体地说,可以将系统时钟设置为非常早的时间设置,以使活动时间段变得更长,芯片制造商的权利得不到保护。因此,优选的方法是从已达成一致和/或验证的服务器检索签名的时间戳。此刻可以评估和处理任何适用的收费。一旦安装了硬件,就执行硬件的注册;此时,借助加密的消息(其是激活代码)设置由实时时钟133指示的实际当前值。要指出的是,几乎在所有情况下,所述系统都可容忍在请求时间信息并将该信息插入实时时钟133中产生的微小延迟。
可以从图1清楚地看出,在芯片100的结构和运行中,流控制开关150扮演了中心角色。术语“流控制开关”虽然是用于此处的讨论的方便短语,但是它仅部分地说明了该块执行的功能。虽然块150主要用作接收数据和命令并将相关信息路由至芯片上的其它组件的枢纽,但是它还包括命令处理器机制,所述机制用于解释命令并启动步骤以确保命令完成,同时通知完成和/或完成状态。具体地说,开关150包括请求处理器155,该处理器解释请求块缓冲器151的命令部分。缓冲器151不应被视为限于只缓冲少量字符或位的角色。优选地,它的大小适合容纳目的地为SRAM 132或eDRAM130的数据的相对较大的部分。对于其中需要加密和/或解密的情形,请求处理器155与一个或多个密码引擎195相连。
处理器155还提供对外部存储器200(参见图12)的安全访问。注意此处术语“外部存储器”指没有包含在安全芯片边界101以内的存储器;它并不是指eDRAM 130或SRAM 132,在相对的意义上,eDRAM 130或SRAM132对可能作为任何嵌入式处理器115的一部分而存在的任何存储器而言都是外部的。更具体地说,处理器155用于保护外部存储器200的一部分,并将其用途限于存储加密的信息(图12中的部分210)。这优选地通过控制地址来完成。处理器155将所提供的用于访问外部存储器200的地址与先前设置为定义地址边界的地址范围相比较。这通过建立并使用驻留在SRAM 132中的地址映射表来完成,SRAM 132包含有访问存储器的不同部分的密钥和签名。它对软件来说是透明的。具体地说,当发送地址以进行读取或写入操作时,还与该地址一起发送密钥和散列值。在流控制开关150并且优选地在编程的FPGA硬件中实现对确认访问该地址的授权的控制。根据所访问的地址范围,密钥使用对eDRAM 130内的操作系统而言完全透明。这些密钥只是内部密钥,一旦检测到篡改,就立即擦除这些密钥。散列值也是内部生成的。这是本发明的众多灵活而适应性强的特性之一。
处理器155也可访问SRAM 132。密钥信息正是存储在此易失性存储器中。但是,存储在SRAM 132中的密钥信息并不只是简单地存储在该处。上述的过程得到采用。这些过程利用了芯片私钥、芯片公钥和销售商公钥,所有这些密钥都在芯片熔断器区135内(参见图2)。销售商私钥的使用可以将信息安全地插入SRAM 132之中。这些密钥的使用还可以安全并且更快地将未加密的数据插入SRAM 132中。一般来说,SRAM技术提供了更快的存取,但它不能像eDRAM存储器130那样密集封装。因此,包括eDRAM130的主要原因之一是限制芯片大小,由此降低芯片成本。
从以上所述应当理解,使用可安全编程的FPGA组件提供了显著的灵活性,并且具体地说,允许通过添加当前没有使用的功能和补丁来对硬件进行升级。它还实现了为已在现场的硬件提供维修的方法,而没有增加重新设计和重新制造全新芯片的成本。它还增大了可以运行的应用软件的范围。
在正常操作中,通过接口110将请求块发送到处理器元件100。请求处理器155通过此同一接口返回应答块。该应答块通常包含操作已成功地完成的指示。但是,该应答块还可以包含处理器在某些方面出现故障或存在可能的篡改尝试的指示。
根据将FPGA用作构建COACH装置和相关系统的待选器件来描述了上述发明。但是,要指出的是,本发明还构想了使用任何其它可编程的电路器件,例如PLD(可编程逻辑器件)。此外,虽然上述说明提到将PowerPC微处理器用作嵌入式处理器115,但是应指出的是,可以为此使用任何微处理器,包括Intel微处理器系列。
在某些方面,本发明提到使用密码引擎来提供密码功能。该功能自然包括加密和解密的过程。但是,还应理解,这些引擎能够执行其他密码和模算术运算(例如,模加法和减法、模乘法、模除法、模取幂以及与使用中国余数定理相关的计算)相关的功能。
Claims (24)
1.一种用于提供密码功能的集成电路芯片,所述芯片包括:
第一易失性随机存取存储器;
至少一个处理器;
至少一个用于执行加密和解密的密码引擎;
用于接收外部提供的请求和数据并返回结果的接口;
至少一个位于所述芯片上的固定密钥;以及
流控制电路,所述流控制电路的至少一部分包括可编程硬件,所述流控制电路连接到所述接口,以便在所述接口、所述至少一个处理器、所述随机存取存储器以及所述至少一个密码引擎之间以这样的方式路由数据:其中通过所述接口以加密的形式提供加密的指令,并由所述至少一个密码引擎使用所述固定的密钥来解密所述加密的指令,并将所述加密的指令用于对所述流控制电路的具有可编程硬件的所述部分进行编程。
2.如权利要求1中所述的集成电路芯片,其中所述流控制电路包括用于接收请求和数据的命令处理器。
3.如权利要求2中所述的集成电路芯片,其中所述命令处理器解密编程、检查授权并将所述编程加载到所述可编程硬件中。
4.如权利要求1中所述的集成电路芯片,其中所述密钥是芯片私钥。
5.如权利要求1中所述的集成电路芯片,还包括芯片公钥。
6.如权利要求1中所述的集成电路芯片,还包括另一方的公钥。
7.如权利要求1中所述的集成电路芯片,其中所述密钥为芯片私钥,并且其中所述芯片还包括芯片公钥和另一方的公钥。
8.如权利要求7中所述的集成电路芯片,其中所述密钥包括熔断元件。
9.如权利要求8中所述的集成电路芯片,其中所述密钥包括电熔断元件。
10.如权利要求8中所述的集成电路芯片,其中所述密钥包括光熔断元件。
11.如权利要求1中所述的集成电路芯片,其中所述密钥包括熔断元件。
12.如权利要求1中所述的集成电路芯片,还包括非易失性的第二随机存取存储器。
13.如权利要求1中所述的集成电路芯片,其中所述易失性随机存取存储器位于所述芯片的电压岛上。
14.如权利要求13中所述的集成电路芯片,其中所述电压岛由电池供电。
15.如权利要求13中所述的集成电路芯片,还包括用于从至少两个独立电源向所述电压岛供电的电源控制器。
16.如权利要求15中所述的集成电路芯片,其中所述至少两个独立电源中的一个电源为电池。
17.如权利要求1中所述的集成电路芯片,其中所述可编程硬件部分编程有解密通过所述接口提供的加密信息而产生的已解密信息。
18.一种用于提供密码功能的方法,所述方法包括以下步骤:
向包括至少一个密码引擎的集成电路芯片提供请求和加密的数据,所述密码引擎可访问布置在所述芯片上的私钥和布置在所述芯片上的公钥;
使用布置在所述芯片上的处理器来处理所述请求,所述处理器连接到包含指令的随机存取存储器,将所述指令以加密的形式提供给所述芯片,由所述至少一个密码引擎使用所述私钥和公钥来解密所述指令,并将所述指令存储在所述随机存取存储器中;以及
使用在所述处理器的控制下运行的所述至少一个密码引擎来解密所述数据;
其中,通过布置在所述芯片上的流控制开关来控制所述至少一个密码引擎、所述处理器、所述公钥和私钥以及所述随机存取存储器之间的通信,且所述流控制开关包括可编程的部分。
19.如权利要求18中所述的方法,其中使用存储在所述芯片上的第二易失性随机存取存储器中的其他密钥来解密所述数据。
20.如权利要求19中所述的方法,其中通过具有至少两个电源的电源控制器来维护所述第二易失性随机存取存储器。
21.如权利要求20中所述的方法,其中所述电源之一是电池。
22.如权利要求18中所述的方法,其中使用存储在所述芯片上的公钥和另一方的私钥来加密所述提供的数据。
23.如权利要求18中所述的方法,其中通过PCI兼容的接口来提供所述请求和所述加密的数据。
24.如权利要求18中所述的方法,其中所述流控制开关的所述可编程部分是从包括现场可编程门阵列和可编程逻辑器件的组中选择的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/938,773 | 2004-09-10 | ||
US10/938,773 US20060059372A1 (en) | 2004-09-10 | 2004-09-10 | Integrated circuit chip for encryption and decryption having a secure mechanism for programming on-chip hardware |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101014923A CN101014923A (zh) | 2007-08-08 |
CN100587650C true CN100587650C (zh) | 2010-02-03 |
Family
ID=35079459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580030307A Expired - Fee Related CN100587650C (zh) | 2004-09-10 | 2005-08-15 | 具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20060059372A1 (zh) |
JP (1) | JP2008512909A (zh) |
CN (1) | CN100587650C (zh) |
TW (1) | TW200629068A (zh) |
WO (1) | WO2006027308A2 (zh) |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612772B1 (en) * | 2004-09-10 | 2013-12-17 | Altera Corporation | Security core using soft key |
US8566616B1 (en) | 2004-09-10 | 2013-10-22 | Altera Corporation | Method and apparatus for protecting designs in SRAM-based programmable logic devices and the like |
US7818574B2 (en) * | 2004-09-10 | 2010-10-19 | International Business Machines Corporation | System and method for providing dynamically authorized access to functionality present on an integrated circuit chip |
US7509250B2 (en) * | 2005-04-20 | 2009-03-24 | Honeywell International Inc. | Hardware key control of debug interface |
US20070220369A1 (en) * | 2006-02-21 | 2007-09-20 | International Business Machines Corporation | Fault isolation and availability mechanism for multi-processor system |
WO2007149977A2 (en) * | 2006-06-21 | 2007-12-27 | Rf Code, Inc. | Location-based security, privacy, access control and monitoring system |
US8763110B2 (en) | 2006-11-14 | 2014-06-24 | Sandisk Technologies Inc. | Apparatuses for binding content to a separate memory device |
WO2008066690A2 (en) * | 2006-11-14 | 2008-06-05 | Sandisk Corporation | Methods and apparatuses for linking content with license |
US8761394B2 (en) * | 2006-12-28 | 2014-06-24 | Echostar Technologies L.L.C. | System and method for secure broadcast communication |
US8255988B2 (en) * | 2007-03-28 | 2012-08-28 | Microsoft Corporation | Direct peripheral communication for restricted mode operation |
US8423789B1 (en) | 2007-05-22 | 2013-04-16 | Marvell International Ltd. | Key generation techniques |
US8908870B2 (en) | 2007-11-01 | 2014-12-09 | Infineon Technologies Ag | Method and system for transferring information to a device |
US8065517B2 (en) * | 2007-11-01 | 2011-11-22 | Infineon Technologies Ag | Method and system for transferring information to a device |
US8627079B2 (en) | 2007-11-01 | 2014-01-07 | Infineon Technologies Ag | Method and system for controlling a device |
US7962885B2 (en) * | 2007-12-04 | 2011-06-14 | Alcatel-Lucent Usa Inc. | Method and apparatus for describing components adapted for dynamically modifying a scan path for system-on-chip testing |
JP5155336B2 (ja) * | 2008-01-15 | 2013-03-06 | カーネロンシリコン株式会社 | タスク処理装置 |
US8510560B1 (en) | 2008-08-20 | 2013-08-13 | Marvell International Ltd. | Efficient key establishment for wireless networks |
US8402279B2 (en) * | 2008-09-09 | 2013-03-19 | Via Technologies, Inc. | Apparatus and method for updating set of limited access model specific registers in a microprocessor |
KR101595043B1 (ko) | 2008-09-18 | 2016-02-17 | 마벨 월드 트레이드 리미티드 | 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법 |
TWI384382B (zh) * | 2009-02-13 | 2013-02-01 | Univ Nat Chiao Tung | Embedded protection device for protecting software content and its protection method |
JP5564194B2 (ja) * | 2009-04-14 | 2014-07-30 | 株式会社メガチップス | メモリコントローラ、メモリ制御装置およびメモリ装置 |
JP5302083B2 (ja) * | 2009-04-23 | 2013-10-02 | 株式会社メガチップス | メモリ装置およびメモリ装置の制御方法 |
CA2745975C (en) | 2010-07-09 | 2016-02-23 | Research In Motion Limited | Utilization of a microcode interpreter built in to a processor |
CN101908112B (zh) * | 2010-07-30 | 2013-04-17 | 上海华岭集成电路技术股份有限公司 | 安全芯片的测试方法与系统 |
US8645716B1 (en) * | 2010-10-08 | 2014-02-04 | Marvell International Ltd. | Method and apparatus for overwriting an encryption key of a media drive |
CN102064942A (zh) * | 2010-11-30 | 2011-05-18 | 南京理工大学 | 一种可信的集成安全处理平台 |
US9436629B2 (en) | 2011-11-15 | 2016-09-06 | Marvell World Trade Ltd. | Dynamic boot image streaming |
US8458804B1 (en) | 2011-12-29 | 2013-06-04 | Elwha Llc | Systems and methods for preventing data remanence in memory |
TWI447583B (zh) * | 2012-02-10 | 2014-08-01 | Phison Electronics Corp | 資料保護方法、記憶體控制器與記憶體儲存裝置 |
TWI480735B (zh) * | 2012-02-14 | 2015-04-11 | Nuvoton Technology Corp | 具有防複製功能的微處理器晶片及其晶片燒錄系統與電子裝置 |
US10771448B2 (en) * | 2012-08-10 | 2020-09-08 | Cryptography Research, Inc. | Secure feature and key management in integrated circuits |
US8931082B2 (en) * | 2012-08-17 | 2015-01-06 | Broadcom Corporation | Multi-security-CPU system |
JP6012355B2 (ja) * | 2012-09-18 | 2016-10-25 | 富士電機株式会社 | 制御機器、制御システム、データ格納方法及びプログラム |
US9116841B2 (en) * | 2012-11-28 | 2015-08-25 | Infineon Technologies Ag | Methods and systems for securely transferring embedded code and/or data designed for a device to a customer |
US9575768B1 (en) | 2013-01-08 | 2017-02-21 | Marvell International Ltd. | Loading boot code from multiple memories |
US9183105B2 (en) * | 2013-02-04 | 2015-11-10 | Alcatel Lucent | Systems and methods for dynamic scan scheduling |
JP2014192793A (ja) * | 2013-03-28 | 2014-10-06 | Mega Chips Corp | 暗号装置 |
US9736801B1 (en) | 2013-05-20 | 2017-08-15 | Marvell International Ltd. | Methods and apparatus for synchronizing devices in a wireless data communication system |
US9521635B1 (en) | 2013-05-21 | 2016-12-13 | Marvell International Ltd. | Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system |
US9836306B2 (en) | 2013-07-31 | 2017-12-05 | Marvell World Trade Ltd. | Parallelizing boot operations |
CN103714299A (zh) * | 2013-12-25 | 2014-04-09 | 北京握奇数据系统有限公司 | 一种移动终端的文件加解密方法及系统 |
US9832027B2 (en) * | 2014-10-01 | 2017-11-28 | Maxim Integrated Products, Inc. | Tamper detection systems and methods for industrial and metering devices not requiring a battery |
US9584317B2 (en) * | 2014-10-13 | 2017-02-28 | Microsoft Technology Licensing, Llc | Identifying security boundaries on computing devices |
US9779262B2 (en) * | 2015-04-20 | 2017-10-03 | Qualcomm Incorporated | Apparatus and method to decrypt file segments in parallel |
US9703973B2 (en) | 2015-04-28 | 2017-07-11 | International Business Machines Corporation | Customer load of field programmable gate arrays |
US10860745B2 (en) * | 2016-03-08 | 2020-12-08 | Hewlett-Packard Development Company, L.P. | Securing data |
WO2017168228A1 (en) | 2016-03-08 | 2017-10-05 | Marvell World Trade Ltd. | Methods and apparatus for secure device authentication |
US10476846B2 (en) * | 2016-08-05 | 2019-11-12 | The Boeing Company | Data-at-rest (DAR) encryption for integrated storage media |
CN109983465B (zh) | 2016-09-26 | 2023-05-16 | 迈可菲公司 | 增强的安全引导 |
US10795853B2 (en) * | 2016-10-10 | 2020-10-06 | Intel Corporation | Multiple dies hardware processors and methods |
CN108073830B (zh) * | 2016-11-15 | 2021-05-18 | 华为技术有限公司 | 一种集成有安全组件的终端芯片 |
CN106789006A (zh) * | 2016-11-28 | 2017-05-31 | 范睿心 | 一种解密方法及系统 |
CN106506160B (zh) * | 2016-11-29 | 2019-11-15 | 无锡江南计算技术研究所 | 一种asic和fpga异构紧耦合结构 |
CN107437638B (zh) * | 2017-02-20 | 2020-08-07 | 安徽科微智能科技有限公司 | 基于可变明文、可变密匙aes加密的电池保护系统 |
CN106682535A (zh) * | 2017-03-16 | 2017-05-17 | 周清睿 | 系统级芯片 |
US10298553B2 (en) | 2017-03-31 | 2019-05-21 | Sprint Communications Company L.P. | Hardware trusted data communications over system-on-chip (SOC) architectures |
US10296738B2 (en) * | 2017-05-03 | 2019-05-21 | Nuvoton Technology Corporation | Secure integrated-circuit state management |
US10749692B2 (en) | 2017-05-05 | 2020-08-18 | Honeywell International Inc. | Automated certificate enrollment for devices in industrial control systems or other systems |
US11310198B2 (en) | 2017-05-31 | 2022-04-19 | Crypto4A Technologies Inc. | Integrated multi-level or cross-domain network security management appliance, platform and system, and remote management method and system therefor |
PL3635912T3 (pl) * | 2017-05-31 | 2023-12-04 | Crypto4A Technologies Inc. | Zintegrowany wielopoziomowy przyrząd sieciowy, platforma i system oraz sposób i system zdalnego zarządzania nimi |
US11321493B2 (en) | 2017-05-31 | 2022-05-03 | Crypto4A Technologies Inc. | Hardware security module, and trusted hardware network interconnection device and resources |
US10643006B2 (en) * | 2017-06-14 | 2020-05-05 | International Business Machines Corporation | Semiconductor chip including integrated security circuit |
CN107392058A (zh) * | 2017-07-27 | 2017-11-24 | 张家港市九华科技有限公司 | 一种由控制电路及存储体所组成的计算机安全卡 |
DE102017221889B4 (de) * | 2017-12-05 | 2022-03-17 | Audi Ag | Datenverarbeitungseinrichtung, Gesamtvorrichtung und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung oder Gesamtvorrichtung |
FR3074936B1 (fr) * | 2017-12-11 | 2020-08-14 | Stmicroelectronics (Grenoble 2) Sas | Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant |
CN108768669A (zh) * | 2018-08-14 | 2018-11-06 | 杭州创谐信息技术股份有限公司 | 基于asic可信远程内存交换卡及其数据交换方法 |
US11216575B2 (en) * | 2018-10-09 | 2022-01-04 | Q-Net Security, Inc. | Enhanced securing and secured processing of data at rest |
CN109756332B (zh) * | 2019-03-04 | 2023-03-03 | 重庆捷思芯创电子科技有限公司 | 一种sram型fpga与外置密钥管理芯片的通讯系统 |
SG11201908938PA (en) * | 2019-03-29 | 2019-10-30 | Alibaba Group Holding Ltd | Cryptography chip with identity verification |
CA3058240C (en) | 2019-03-29 | 2021-12-07 | Alibaba Group Holding Limited | Cryptographic key management based on identity information |
CN110999254B (zh) | 2019-03-29 | 2023-02-28 | 创新先进技术有限公司 | 安全地执行加密操作 |
AU2019204710C1 (en) | 2019-03-29 | 2021-07-08 | Advanced New Technologies Co., Ltd. | Managing cryptographic keys based on identity information |
TWI783309B (zh) * | 2020-11-25 | 2022-11-11 | 瑞昱半導體股份有限公司 | 電路設計方法和相關電路 |
CN112784303B (zh) * | 2021-01-26 | 2022-11-22 | 政采云有限公司 | 一种文件加密方法、装置、系统及存储介质 |
CN112904182B (zh) * | 2021-01-28 | 2021-12-07 | 无锡众星微系统技术有限公司 | 测试模式进入控制方法 |
US20220327249A1 (en) * | 2021-04-12 | 2022-10-13 | Microsoft Technology Licensing, Llc | Systems and methods for chassis intrusion detection |
CN114157410B (zh) * | 2021-11-25 | 2024-04-19 | 国网浙江省电力有限公司信息通信分公司 | 一种面向电力终端的轻量级5g硬加密通信模组 |
TWI822001B (zh) * | 2022-04-20 | 2023-11-11 | 凌通科技股份有限公司 | 演算法量產授權方法以及演算法加密方法、使用其之量產燒錄工具以及使用其之演算法裝置 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666411A (en) * | 1994-01-13 | 1997-09-09 | Mccarty; Johnnie C. | System for computer software protection |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
JP4447059B2 (ja) * | 1996-04-02 | 2010-04-07 | 大日本印刷株式会社 | Icカード及びicカード検査方法 |
US5825878A (en) * | 1996-09-20 | 1998-10-20 | Vlsi Technology, Inc. | Secure memory management unit for microprocessor |
US6378072B1 (en) * | 1998-02-03 | 2002-04-23 | Compaq Computer Corporation | Cryptographic system |
US6141756A (en) * | 1998-04-27 | 2000-10-31 | Motorola, Inc. | Apparatus and method of reading a program into a processor |
JP3910300B2 (ja) * | 1998-11-06 | 2007-04-25 | 株式会社エヌ・ティ・ティ・データ | Icカード用プログラム管理システム及び方法 |
US6260087B1 (en) * | 1999-03-03 | 2001-07-10 | Web Chang | Embedded configurable logic ASIC |
US6564326B2 (en) * | 1999-07-06 | 2003-05-13 | Walter A. Helbig, Sr. | Method and apparatus for enhancing computer system security |
AU1981400A (en) * | 1999-12-16 | 2001-06-25 | Nokia Corporation | High throughput and flexible device to secure data communication |
JP3801833B2 (ja) * | 2000-02-14 | 2006-07-26 | 株式会社東芝 | マイクロプロセッサ |
US6384628B1 (en) * | 2000-03-31 | 2002-05-07 | Cypress Semiconductor Corp. | Multiple voltage supply programmable logic device |
US6981153B1 (en) * | 2000-11-28 | 2005-12-27 | Xilinx, Inc. | Programmable logic device with method of preventing readback |
US6931543B1 (en) * | 2000-11-28 | 2005-08-16 | Xilinx, Inc. | Programmable logic device with decryption algorithm and decryption key |
US6366117B1 (en) * | 2000-11-28 | 2002-04-02 | Xilinx, Inc. | Nonvolatile/battery-backed key in PLD |
JP4098478B2 (ja) * | 2001-01-31 | 2008-06-11 | 株式会社東芝 | マイクロプロセッサ |
WO2002082267A1 (en) * | 2001-04-06 | 2002-10-17 | Wind River Systems, Inc. | Fpga coprocessing system |
GB0114317D0 (en) * | 2001-06-13 | 2001-08-01 | Kean Thomas A | Method of protecting intellectual property cores on field programmable gate array |
JP4236830B2 (ja) * | 2001-07-09 | 2009-03-11 | 株式会社ルネサステクノロジ | アップロード機能付き記憶装置 |
JP3865629B2 (ja) * | 2001-07-09 | 2007-01-10 | 株式会社ルネサステクノロジ | 記憶装置 |
US6996713B1 (en) * | 2002-03-29 | 2006-02-07 | Xilinx, Inc. | Method and apparatus for protecting proprietary decryption keys for programmable logic devices |
JP3983097B2 (ja) * | 2002-05-02 | 2007-09-26 | 日本電信電話株式会社 | Icカードの再発行方法及びシステム |
JP2003345617A (ja) * | 2002-05-23 | 2003-12-05 | Nec Corp | 情報処理装置、情報処理方法、icカード、及びプログラム |
JP4103995B2 (ja) * | 2003-02-12 | 2008-06-18 | 株式会社エヌ・ティ・ティ・データ | Icチップ制御システム、通信端末及びコンピュータプログラム |
US8838950B2 (en) * | 2003-06-23 | 2014-09-16 | International Business Machines Corporation | Security architecture for system on chip |
US6819133B1 (en) * | 2003-07-03 | 2004-11-16 | Adtran, Inc. | System and method for protecting configuration data for a programmable execution unit |
US20060059574A1 (en) * | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | System for securely configuring a field programmable gate array or other programmable hardware |
US7818574B2 (en) * | 2004-09-10 | 2010-10-19 | International Business Machines Corporation | System and method for providing dynamically authorized access to functionality present on an integrated circuit chip |
US20060059369A1 (en) * | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | Circuit chip for cryptographic processing having a secure interface to an external memory |
US20060059373A1 (en) * | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface |
US20060059368A1 (en) * | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | System and method for processing by distinct entities securely configurable circuit chips |
US7251804B1 (en) * | 2004-10-01 | 2007-07-31 | Xilinx, Inc. | Structures and methods of overcoming localized defects in programmable integrated circuits by routing during the programming thereof |
-
2004
- 2004-09-10 US US10/938,773 patent/US20060059372A1/en not_active Abandoned
-
2005
- 2005-08-15 CN CN200580030307A patent/CN100587650C/zh not_active Expired - Fee Related
- 2005-08-15 JP JP2007530692A patent/JP2008512909A/ja active Pending
- 2005-08-15 WO PCT/EP2005/053996 patent/WO2006027308A2/en active Application Filing
- 2005-09-05 TW TW094130283A patent/TW200629068A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2006027308A3 (en) | 2006-05-11 |
TW200629068A (en) | 2006-08-16 |
US20060059372A1 (en) | 2006-03-16 |
WO2006027308A2 (en) | 2006-03-16 |
JP2008512909A (ja) | 2008-04-24 |
CN101014923A (zh) | 2007-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100587650C (zh) | 具有编程片内硬件的安全机制的用于加密和解密的集成电路芯片 | |
CN101361079A (zh) | 协调密码安全处理单元对存储器的访问 | |
US7818574B2 (en) | System and method for providing dynamically authorized access to functionality present on an integrated circuit chip | |
US20060059369A1 (en) | Circuit chip for cryptographic processing having a secure interface to an external memory | |
US20060059574A1 (en) | System for securely configuring a field programmable gate array or other programmable hardware | |
Trimberger et al. | FPGA security: Motivations, features, and applications | |
US5828753A (en) | Circuit and method for ensuring interconnect security within a multi-chip integrated circuit package | |
CN104252881B (zh) | 半导体集成电路及系统 | |
CN101351807B (zh) | 用于把嵌入式安全芯片与计算机相关联的方法和系统 | |
US7205883B2 (en) | Tamper detection and secure power failure recovery circuit | |
US20060059373A1 (en) | Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface | |
US8677144B2 (en) | Secure software and hardware association technique | |
US7716497B1 (en) | Bitstream protection without key storage | |
US20060059368A1 (en) | System and method for processing by distinct entities securely configurable circuit chips | |
US8332652B2 (en) | Computing device that securely runs authorized software | |
US7644278B2 (en) | Method for securely creating an endorsement certificate in an insecure environment | |
CN1914849B (zh) | 受信移动平台体系结构 | |
US7103782B1 (en) | Secure memory and processing system having laser-scribed encryption key | |
CN103221961A (zh) | 包括用于保护多用户敏感代码和数据的架构的方法和装置 | |
US7752407B1 (en) | Security RAM block | |
CN101176125A (zh) | 完整性受保护的安全存储设备的实施 | |
CN101388053A (zh) | 对数据进行加密、完整性和防重发保护的方法、系统和装置 | |
US20160248588A1 (en) | Security ram block with multiple partitions | |
CA2308755A1 (en) | Reconfigurable secure hardware apparatus and method of operation | |
CN100547598C (zh) | 基于对称密钥加密保存和检索数据 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100203 Termination date: 20100815 |