CN101116081A - 用于微处理器数据安全的方法和系统 - Google Patents
用于微处理器数据安全的方法和系统 Download PDFInfo
- Publication number
- CN101116081A CN101116081A CNA2006800046390A CN200680004639A CN101116081A CN 101116081 A CN101116081 A CN 101116081A CN A2006800046390 A CNA2006800046390 A CN A2006800046390A CN 200680004639 A CN200680004639 A CN 200680004639A CN 101116081 A CN101116081 A CN 101116081A
- Authority
- CN
- China
- Prior art keywords
- key
- byte
- circuit
- data
- encryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明的实施例总的涉及用于微处理器数据安全的方法和系统,包括在计算机微处理器中或与之通信的所存储数据加密和解密。这种加密和解密可以以每字节为基础执行。这种加密和解密涉及使用加密密钥或解密密钥对字节进行逻辑操作以生成相应的解密字节或加密字节。该密钥可以是固定的或可变的或两者的组合。密钥在微处理器内的专用硬布线密钥电路中被编码且可由微处理器内的加密和解密电路访问。
Description
技术领域
本发明涉及用于微处理器数据安全的方法和系统。尤其,本发明涉及用于以每字节或每字为基础在计算机微处理器中或与计算机微处理器通信中对所存储数据进行数据加密和解密的方法和系统。
背景技术
数据安全是商业中许多方面的重要问题,尤其是当它涉及了所存储的专有数据。例如,存储在闪速存储器(或其它形式的只读存储器)中的计算机程序源代码可能是很有价值的私有信息。其他人可能想复制操作上的源代码,以避免必须为他们的竞争计算机产品或电子设备写入他们自己的源代码。
这些从闪速存储器复制源代码的企图例如是割穿存储芯片的小片并检查以原始数据形式存储于其中的源代码,使得其可以被复制到竞争产品的存储器中。已经存在防止微处理器内部的数据被访问的尝试,但是这些尝试没有防止小片切片,并且没有已知技术能够充分地保护在微处理器之外任何设备中的信息。因此,存储在闪速存储器或其它非易失性存储器中的源代码可很容易遭到复制,除非它能得到更好的保护。
还存在用于协助微处理器及其存储数据的反向工程的其它技术。例如,对于具有特殊导线配置的电路,这些配置有时可以通过感测电路中传导元件的磁极化而被读取。因此,即使存储由微处理器用来数据加密和解密的代码的寄存器也可能通过当前破坏安全技术而使它们的数据内容被读取。
所期望的是通过解决或改善与传统安全技术有关的一个或多个不足或缺点来提供所存储数据的数据安全,或者至少向这样的传统安全技术提供有用的替换方案。
发明内容
在板子级别,本发明可用于保护微处理器可执行的任何类型的信息,包括存储在CPU架构内的数据或外部存储的数据。这例如可以包括固件或源代码、音频或视频信号数据、配置设置、系统变量以及所期望保护以防止未授权读取和复制的任何其它信息。
在一个方面,本发明涉及一种获取数据的方法,该方法包括:
从与处理器关联的存储器中读取所存储数据的至少一个字节;
对于每个所读取的字节,使用解密密钥对该字节执行逻辑操作以生成解密字节,其中解密密钥由可由处理器访问的专门密钥电路编码;并且将每个解密字节提供给用于处理其的处理器。
由该方法所获取的所存储数据在其被存储在非易失性存储器之前已经通过使用与解密密钥对应的(密码上匹配或配对的)加密密钥以逐字节的基础被加密。在解密中使用的逻辑操作是与在加密中所使用的逻辑操作相反的反逻辑操作。因而,该获取方法基于非易失性存储器中初始(加密的)存储的数据生成解密字节。
所存储的数据例如可以是存储的计算机程序源代码。可替换地,所存储的数据可以是加密的音频或视频信号数据。在可替换的方面,存储器不需要是非易失性的。存储器例如可以包括随机访问存储器(RAM)、寄存器或高速缓冲存储器。
解密密钥可以是固定解密密钥或者它可以是可变解密密钥。在一个实施例中,使用第一和第二解密密钥,其中一个密钥是固定的而另一个是可变的。对于每个字节,可变解密密钥可以不同。如果使用一个以上的解密密钥,可为每个解密密钥使用对应的逻辑操作来解密字节。逻辑操作可以是相同的或不同的。
逻辑函数的例子包括异或(XOR)操作和散列函数。其它例子包括交换比特集合的位置(例如,交换字节内四个比特的两个块的位置)并且将固定的值加到字节或从字节减去固定的值。比特变换的其它形式可以用作为逻辑操作的一部分,只要该变换容易可逆(因为它将需要已经用在解密中使用的逻辑操作的逆来加密)。
如果逻辑操作是异或操作,数据字节和加密密钥是异或操作的操作数。如果逻辑操作是散列函数,则用解密密钥来编码散列函数,通过使用散列函数,数据字节的比特被换位以基于解密密钥生成解密的字节。
可变解密密钥可对应于所存储数据字节的相应存储单元。可替换地,可以使用另一个数字变量,比如程序计数器的值或顺序或随机数的预定列表。可替换地,可以将可变值加到要存储的字节,或从要存储的字节减去可变值。线性反馈移位寄存器(LFSR)可基于预定种子值而用于可变密钥或用于形成可变密钥的可变值的伪随机数生成。
在另一个方面,本发明涉及存储数据的方法,该方法包括:
接收要存在与处理器关联的存储器中存储的数据的至少一个字节;
对于每个字节,使用加密密钥对该字节执行逻辑操作以生成加密的字节,其中加密密钥在可由处理器访问的专门密钥电路中被编码;并且
将每个加密字节存储在非易失性存储器中。
要存储的数据例如可以是计算机程序源代码或其可以是音频或视频信号数据。存储数据的方法通常是以与上述获取数据的方法相反的方式来执行。由此,上述获取数据的方法尤其适于获取由该存储数据的方法存储的数据。为此,在获取所存储数据中使用的解密密钥与用于在存储之前加密数据的加密密钥相同。此外,在获取数据中执行的逻辑操作是在存储数据中执行的逻辑操作的逆操作,由此允许从加密的数据中恢复原始的数据。
在另一个方面,本发明涉及数据处理的方法,包括执行上述的存储数据的方法,随后执行上述的获取数据的方法。
本发明的进一个方面涉及获取所存储数据的方法,该方法包括:
从非易失性存储器中读取所存储指令数据的多个字;
对于每个字,使用解密密钥对该字执行逻辑操作,以生成解密的字;
将每个解密的字提供给用于处理它的处理器。
在又另一个方面,本发明涉及存储数据的方法,该方法包括:
接收要在非易失性存储器中存储的指令数据的多个字;
对于每个字,使用加密密钥对该字执行逻辑操作,以生成加密的字;并且
在非易失性存储器中存储每个加密的字。
本发明的其它方面涉及数据存储和获取设备、电路和系统,它们具有用于执行上述方法的装置。例如,这些方面可以适当地包括编码逻辑电路或解码逻辑电路,用于以逐个字节或逐个字的基础来编码或解码数据。在进一个方面,本发明涉及CPU架构,包括用于编码数据的字节或字以存储在非易失性存储器中的编码逻辑电路和用于从存储器中获取编码的数据字节或字并解码它们的解码逻辑电路。
本发明的进一个方面涉及计算机设备,包括处理器、非易失性存储器、加密和解密电路和密钥电路。非易失性存储器可由用于存储和读取数据的多个字节的处理器访问。加密电路被配置为接收要在非易失性存储器中存储的数据,通过使用第一逻辑操作基于密钥来加密每个字节,并将每个加密的字节传递到非易失性存储器以供存储。解密电路被配置为接收从非易失性存储器中读取的数据的加密字节,使用作为第一逻辑操作的逆的第二逻辑操作基于密钥来解密每个字节,并且将每个解密的字节传递给处理器。每个电路具有在其中形成的密钥并且可由加密电路和解密电路访问。该密钥可以是固定或可变的,或者可存在固定密钥和可变密钥。密钥电路可以是固定密钥电路或可变密钥电路或两者。
优选地,固定密钥电路具有在其中以非易失性方式形成的固定密钥,所述固定密钥的形成根据的是在固定密钥电路中的多个导体中所选择的导体之间形成的永久电连接。固定密钥电路可优选地只由加密电路和解密电路来访问。固定密钥可以基于处理器或容纳处理器的设备的序列号。固定密钥电路可以形成为加密电路和/或解密电路的一部分,并且可以被包括在处理器的算术逻辑单元中。非易失性存储器可以存储加密的计算机程序源代码。
在一个实施例中,该设备还包括可变密钥电路,被配置为提供可变密钥给加密电路和解密电路。在该实施例中,该加密电路还被配置为在将加密的字节传递到易失性存储器之前,使用第三逻辑操作基于可变密钥来加密每个字节。在本实施例中,解密电路还被配置为在将解密字节传递到处理器之前,使用作为第三逻辑操作的逆的第四逻辑操作基于可变密钥来解密每个字节。可变密钥对于字节中的至少一些是不同的。逻辑操作可以都是异或操作或者散列操作或者异或和散列操作的适当组合。
在一个实施例中,可变密钥是由LFSR电路根据预定种子值生成的。LFSR电路优选的是具有固定分接点的八阶LFSR电路。可替换地,可变密钥可对应于在非易失性存储器中存储的加密字节的相应存储单元。种子值可以是随机选择的值或者它可以是设备序列号或其它唯一标识符(或是从中导出)。
优选地,加密电路加密所有要在非易失性存储器中存储的数据,包括数据定界符比特。由此,加密数据的预期复制者将不会得到数据定界符的协助,以便确定所存储的加密数据中的哪些字节是与附加位相对的有关数据。
本发明的实施例的数据存储和获取设备、电路、系统、方法和架构通过以逐个字节或逐个字的基础加密和解密数据而提高了所存储数据的安全,使得如果加密数据从存储有它的存储器中被复制,则在不访问加密/解密密钥的情况下加密数据对于复制者将是无用的。固定密钥和/或可变密钥可用于加密和解密。
固定密钥例如从存储有数据的设备的序列号中导出。因为设备的序列号通常只有设备制造商知道,因此复制者将不能访问加密/解密密钥。因此,固定密钥是由设备制造商硬编码到固定密钥电路中的。随后,当期望存储设备源代码或其它敏感信息时,要存储的数据被传递通过固定密钥电路并由此在存储之间被加密。将其源代码写入到设备存储器中的实体具有其源代码被加密的优点,但是不知道固定密钥并且不需要保持其秘密。
借助硬布线电路可以通过使用配置熔丝来将密钥记录在CPU架构和/或由制造商设计的特定电路内,配置熔丝例如是应用在可编程只读存储器(PROM)设备或存储在模糊寄存器(obscure register)。因此将加密/解密密钥嵌入在CPU内核使得其实际上对于潜在存储器复制者难以分辨。固定密钥因此被硬布线或硬编码到CPU电路中。固定密钥的这种硬布线是永久的(即,非易失性)、只可编程一次(OTP)的,并且优选地由根据编程的固定密钥而物理链接的导体矩阵构成。这种物理链接通常不能够由感测磁极化的设备读取,因此提供了更为安全的固定密钥。通过避免使用可编程寄存器来存储固定密钥,本发明的实施例避免了寄存器对于监听技术作为磁极化传感器的弱点。
使用固定和可变加密/解密密钥的组合为所存储的数据提供了进一步的数据安全。根据序列号,比如特殊字节的存储单元或预定(但是可能是随机的)数的另一个顺序,可变密钥可以被设置为对于每个字节或字变化。在另一个例子中,根据LFSR电路的伪随机输出,可以为每个字节或字生成可变密钥。因此在不同位置中存储的相同原始数据将作为不同的加密数据被存储在设备内(因为可变密钥对于每个字节或字变化)和不同设备上(因为固定密钥可以是设备特定的)。
本发明的实施例的进一步优点在于,加密和解密能以高速执行,因为它是以字节为基础来执行的,并且因此不会负面影响CPU性能。
附图说明
将仅通过举例并参考附图来进一步详细描述本发明的实施例,其中:
图1是根据一个实施例的数据编码布置的框图;
图2是根据一个实施例的数据解码布置的框图;
图3是是根据一个实施例的在中央处理单元(CPU)内的解码布置的框图;
图4是根据另一个实施例的CPU内的数据解码布置的框图;
图5是根据一个实施例的编码数据的方法的处理流程图;
图6是根据一个实施例的解码数据的方法的处理流程图;
图7是散列矩阵的示意性例子的电路图;
图8是根据一个实施例的用于生成可变密钥的线性反馈移位寄存器(LFSR)的示意图;和
图9是根据另一个实施例的与异或电路组合的示例散列矩阵。
具体实施方式
本发明的实施例一般地涉及用于编码和解码数据的方法和系统,以便于实现比某些形式的数据存储当前可得的数据安全更大的数据安全。当要存储数据时(即,当首先将其写到只读存储器时),以每字节的基础编码(加密)数据。使用逻辑操作来执行加密以将字节转换为相同大小的编码形式。这样的逻辑操作可例如包括用密钥执行异或(XOR)逻辑函数或将字节或字通过散列函数传递以将字节或字内的数据比特位置换位。加密可使用至少一个固定密钥来执行并且可选地使用具有可变密钥的逻辑函数来进行进一步的加密。
为了便于引用,这里描述的数据加密和解密被描述为以每字节为基础执行。但是应当理解,还可以将8(即字节)之外的比特数用作为加密和解密的信息定量。例如,如果指令集合使用16比特字,则加密和解密能以每字为基础执行。同样,如果指令集合使用32比特字,则加密和解密能按照32比特信息定量来执行。另一方面,加密和解密可以一次以4比特(有时称为四位字节)为基础来执行。因此,尽管该说明书参考了字节,但是将会理解,其它大小的信息定量可被应用,且本领域技术人员参照本公开将会很明白这些可替换信息定量的实施方式。
此外,即使在数据字大于8个比特,比如是16或32比特的情况下,每个字内的字节可以被分别加密。因此,如果可变密钥被应用,则数据字内的字节将使用不同的密钥来加密。
术语“加密”和“编码”及其相应的变型在本说明书中可替换地使用。类似地,术语“解密”和“解码”及其变型也可替换地使用。
一旦加密的信息被存储为了读取它,就需要访问固定密钥和可变密钥(如果它在初始加密中使用)。固定密钥由嵌入在CPU架构内并与闪速存储器或其它数据存储分开的硬布线逻辑电路提供。例如对于加密的闪速存储器,存储于其中的源代码可被读取并在CPU中被处理,但是它不会产生有意义的指令或信息,除非它首先被解码(解密)。该解密只可使用固定密钥来执行,所述固定密钥被硬编码在CPU架构中并且对于特殊CPU来说是唯一的,在所述特殊CPU上源代码以最初以加密形式存储。由此,尽管来自原始机器的源代码可以被复制,但是其不能在任何其它机器上使用,因为其它机器将不能访问硬编码的固定密钥。此外,解密密钥可被硬布线在CPU架构内,硬布线的位置是机器特定的但是对于试图复制源代码的人来说是不明显的,因此为源代码提供了增强的安全性。
固定密钥优选地是设备特定的。例如,固定密钥可从容纳有微处理器的设备的序列号或与微处理器本身关联的序列号导出。由于序列号很可能长于在加密和解密过程中执行的逻辑操作的允许操作数长度,因此例如,可将固定密钥选择为例如二进制编码的序列号的8个最高或最低有效位。但是,任何其它预定的比特选择可用于从序列号导出固定密钥。使用设备或微处理器序列号来确定固定密钥有利地意味着,固定密钥是设备特定的且在另一个设备上加密和存储的相同数据将显得是不同的所存储数据。可替换地,不用设备序列号,而可使用不同的所存储设备特定的编码(只有设备制造商知道)来导出固定密钥。
参考附图,更详细地示出和说明本发明的实施例。为了方便引用,无论一个特征首先在哪里依照一个附图被引入,该特征都由附图编号百位来表示。例如在图2中引入的特征将具有200到299之间的参考数字。参考数字将接着被用于后续附图中以表示相同或类似的特征,就如应用于相同或另一个实施例。
图1示出了用于在存储之前编码数据的数据编码布置100。数据编码布置100包括编码逻辑110,其接收数据125以进行编码并随后存储在存储器120中。编码逻辑110还将数据125的存储单元130作为输入接收,使得数据125存储在存储器120的正确位置中。密钥140被输入到编码逻辑110以便于使用密钥140通过执行其上的逻辑函数来加密数据125。数据125可将数据字节用作为一个操作数并将密钥用作为另一个操作数借助异或逻辑函数来加密,以生成长度与未加密数据125相同的加密数据(即字节长度或字长度)。
编码逻辑110在存储器120中在由存储单元130规定的位置处存储加密的字节。可选地,在存储之前,加密逻辑110可以通过将存储单元130作为进一步逻辑操作中的操作数对数据进一步加密或编码,而密钥加密的数据是另一个操作数。
将存储单元130作为加密密钥有利地提供了可变加密密钥,因为存储单元130对于数据125的每个字节或字是不同的。固定密钥140与可变密钥的组合有利地为在存储器120中存储的数据提供更大的数据安全性。还可使用存储单元130之外的可变密钥,比如程序计数器或预定的数序。在另一个例子中,存储单元(指针)可用作为密钥选择指针,用来从密钥表中选择密钥。在另一个实施例中,可变密钥可以是例如由线性反馈移位寄存器(LFSR)电路确定的伪随机数,如依照图11随后所示的。
编码逻辑110可驻留在预先制造的芯片或特定用途集成电路(ASIC)内或可以被硬布线在CPU架构的一部分中,优选地耦合到数据总线以便直接将编码的数据写到存储器120。存储器120可以是闪速存储器或其它形式的非易失性存储器。非易失性存储器的其它例子包括只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)和电可擦除只读存储器(EEPROM)。闪速存储器是EEPROM的一种形式。尽管本发明的实施例尤其适合于保护CPU内的非易失性存储器,但是存储器120可以驻留在CPU架构内或其之外。外部的非易失性存储器可以包括光存储器、比如CD或DVD、或其它光、电、电-光、化学(分子)或微机械存储器。
尽管本发明的实施例尤其适合于保护非易失性存储器,但是它们还可应用于易失性存储器形式,比如RAM、寄存器或高速缓冲器。此外,尽管本发明的实施例尤其适于保护复制敏感的固件或数据,其可应用于任何形式的数据,而不管数据的性质。
取决于存储器120的特定存储器类型,一个或多个电路或设备可与编码逻辑110和存储器120一起用来便于将编码的字节加载到存储器120中。为此目的的适当电路或设备将对于本领域技术人员来说是明显的。例如,对于标准的ROM、PROM、EPROM、EEPROM或闪存,引导加载器可用于在存储之前将字节馈送到编码逻辑110以便编码。
现在参考图2,这里示出了数据解码布置200。数据解码布置200包括解码逻辑210,用于解码从存储器读取的数据字节225并且将解码的字节传递到数据处理器220以便例如通过由CPU内的算术运算单元(ALU)执行来处理它。可替换地,如果从诸如光盘的存储设备中读取数据,则它可进行一些形式的数字信号处理,例如来生成音频或视频信号。
作为解码处理的一部分,解码逻辑210在由存储单元230确定的位置从存储器120读取所存储的数据字节225,对于要读取的每个字节225将所述存储单元230提供给解码逻辑210。存储单元230可以由CPU内的矩阵解码器提供。该矩阵解码器使用基于程序计数器和/或RAM指针的行和列选择。可替换地,矩阵解码器可根据间接寻址来确定存储单元230。
如果在编码处理中使用了字节的存储单元,则它还会在解码处理中由解码逻辑210使用。反向逻辑函数用于从来自存储器和存储单元230的字节225获得部分解码的字节。接着该部分解码的字节与原始编码密钥140一起用于最终解码数据,在此之后将其提供给数据处理器220。
可在编码和解码处理中使用的示例逻辑操作包括异或函数和散列函数。如果使用异或函数,则异或的反向逻辑操作仅仅是异或操作。即是,如果A XOR B=C,则C XOR B=A。如果逻辑操作是散列函数,则将密钥140嵌入到散列函数中,使得密钥确定字节或字内的比特如何由散列函数换位。散列函数的逆仅仅将换位的比特映射回它们的原始位置。
可在编码和解码处理中使用的另外示例逻辑操作包括交换字节内的比特组或块以及将一个值加到字节或从字节减去一个值。加上或减去的值可以是固定或可变的值,取决于在相关逻辑操作中使用的是固定还是可变密钥。
密钥140优选地被硬布线在CPU架构内的一个位置处,这使得难以辨认其函数(例如通过观察整个CPU架构的构形),比如在ALU内或在编码逻辑110和/或解码逻辑210内。
密钥140可以在CPU初始化时通过使能和/或禁用专门逻辑电路(比如基于晶体管的散列矩阵,其例子在图9中示出)内的某些晶体管而被设置。可替换地,密钥140可以在初始化时通过建立导体矩阵中的导体连接而被设置,如图7中所示。矩阵中的导体初始是断开的,在初始化时,根据要编程到散列矩阵中的散列函数,将某些导体连接到垂直定向的导体。例如,根据现有集成电路形成技术,在制造过程期间通过半导体衬底的选择激光曝光来形成导体连接。
在一个实施例中,可从固定密钥中导出可变密钥。例如,固定密钥可用作为LFSR电路的种子值(如依照图8所示和所描述的),其用每个新的时钟循环生成伪随机可变密钥。可替换地,可以从固定密钥通过加上或减去(或另一个数学函数)变化量来导出可变密钥。
参考图3,示出了一种在CPU架构内使用的解码布置300。数据解码布置300包括存储器310,比如闪速存储器或其它非易失性存储器,存储计算机程序源代码。存储器310是存储器120的例子。一旦源代码被解码,它就可由算术逻辑单元(ALU)执行。存储器310提供对规定的存储单元的访问,使得解码逻辑320可在规定的单元读取比特的开或关状态。因此,解码逻辑320有效地接收来自存储器310的字节。由于存储器310包含已经根据本发明的实施例加密(例如依照图1所描述的)的数据,所以从存储器310读取的字节必须在传递到ALU之前由解码逻辑320来解码。
解码逻辑320已经访问了在固定密钥电路322中形成的固定解密密钥。固定密钥电路322可以模拟用固定解密密钥编码的散列函数或它可以具有在基于晶体管的散列电路或异或电路(比如依照图9所示和所描述的异或电路1240)内硬编码的固定解密密钥。解码逻辑320使用固定解密密钥来执行散列函数或异或操作,并因此生成解密字节。
如果存储器310内的加密数据是用可变加密密钥来加密的,则解码逻辑320还可使用可变密钥电路324,以便进一步解密每个字节。对于用固定解密密钥解密的每个字节,可变密钥电路324为解密该特定字节提供特定可变解密密钥。根据用于加密特定字节的加密密钥来确定每个字节的特定可变解密密钥。例如,如果在加密期间使用数的随机或伪随机列表,则该相同的列表用于解密。可变密钥电路324因此将特定的可变解密密钥提供给解码逻辑320以便根据与用于编码字节相反的逻辑操作来解密每个字节。因此,如果逻辑操作是对称的异或操作,则相同的异或操作可以用于解密字节,或者如果用散列函数来加密字节,则散列函数的逆被用来解密字节。
根据所使用的可变密钥的类型,可变密钥电路324可能需要包括或能够访问解码电路320,比如LFSR电路(图8中所示)内的某电路或者程序计数器或存储地址寄存器的输出。可替换地,可变密钥电路324可包括或能够访问在加密的非易失性存储器中存储的随机或伪随机密钥列表。
LFSR电路有利地根据种子值为具有给定数量的触发器和设置分接点的电路创建伪随机数序列。如果用相同的种子值做种,则这种LFSR电路将生成相同的伪随机序列。由此,为了生成如在加密处理中使用的用于解密的相同可变密钥序列,只需要存储用于生成可变加密密钥的种子值,而不用在存储器中存储(可能十分长的)数列表。可替换地,其它电路结构可用于重复生成随机或伪随机数。
一旦每个字节由解码逻辑320解码,就将它传递给指令寄存器330。取决于在CPU的指令集合中使用的数据字的大小,例如16比特字或32比特字,在等待完成该指令的一个或多个另外字节的同时存储该字节。根据在CPU架构中使用的特定指令集合,字长度可以是8、16或32比特之外的长度。一旦指令寄存器330已经接收了完整的指令(由来自解码逻辑320的一个或多个解密字节组成),就将该指令传递到多路复用器350并接着到ALU360以便指令处理。多路复用器350协调从随机访问存储器(RAM)340到ALU360的指令和数据输入。
现在参考图4,示出了一种用于CPU的可替换解码布置400。布置400类似于布置300,除了解码逻辑320位于ALU360内,而不是直接从存储器310接收编码的字节。通过将解码逻辑320定位在ALU360内,在解密数据由ALU360处理之前通过窥探总线来观察解密数据更加困难。
在布置400中,存储器310提供加密的字节给指令寄存器330,指令寄存器330存储字节直到接收了足够的字节来根据CPU的指令集合数据大小来完成数据字。指令寄存器330接着将(仍然加密的)数据字传递给多路复用器350,多路复用器350协调指令和数据(从RAM340)到ALU360的输入。如果多路复用器350从指令寄存器330接收加密的数据字,则它将加密的字传递到ALU360内的解码逻辑320,该解码逻辑320使用由固定密钥电路322提供或在其中编码的密钥,并且如果可应用,使用由可变密钥电路324提供的密钥来继续解密数据字。接着由ALU360来执行或处理解密的数据字。
在步骤400中,解码逻辑320可以被配置为单独地解密指令字的各个字节或以每字为基础执行解密。如果以每字节为基础执行解密,则这就按照上述的来完成。但是,如果以每字为基础执行解密,则由固定密钥电路322提供的固定解密密钥是字长度密钥而不是字节长度密钥,并且由可变密钥电路324提供的可变解密密钥也是字长度密钥。如果字的存储单元用于在加密处理期间(在存储在存储器310之前)加密字的字节,则字的存储单元被用作为由可变密钥电路324提供的可变解密密钥,所述字的存储单元是字中第一字节的存储单元。
如果存储器310中的数据以每字节为基础被加密,则在布置400中,解码逻辑320必须以每字节为基础解码每个指令字中的字节,并且可变密钥电路324由此提供每个可变解密密钥。
尽管闪速存储器310按照图3和4通过举例被示出和描述,但是其它形式的存储器可以代替闪速存储器,这取决于本发明被应用的特殊环境。为了简洁并且为了避免模糊本发明而没有在这里描述这种其它形式的存储器。
现在参考图5,描述了数据编码方法500。数据编码方法500开始于在步骤510接收要存储在存储器120(或存储器310)中的字节。要存储的字节能以串行或并行的方式从内部引导加载器接收,例如,其可以在固件或硬件中执行。对于某些类型的ROM,比如标准ROM和PROM,例如数据可以由存储器芯片制造商预编码和存储。在该情况下,如果存储器芯片制造商与CPU制造商不是相同的实体,则芯片制造商和CPU制造商必须共享加密密钥,加密密钥使用编码以使得CPU制造商可以读取和解码存储的数据并且可以将固定密钥适当地写入到固定密钥电路322。
在步骤520,例如根据引导加载器来确定字节期望的存储单元。在步骤530,基于预定逻辑函数,比如散列函数或异或操作,通过使用固定加密密钥来编码字节。如果也要使用可变密钥加密,则在步骤525由编码逻辑110基于逻辑函数使用可变加密密钥来加密该字节。在固定和可变密钥加密中使用的逻辑函数可以是相同的或不同的。
固定密钥加密和可变密钥加密的顺序是可交换的,即使可变密钥加密在图5中示出为可选地发生在固定密钥加密之前。一旦字节被加密,则它在步骤540被存储在预定存储单元中。在一个可替换的实施例中,步骤530可使用可变密钥加密,同时步骤525是可选的固定密钥加密步骤。
在本发明的另外实施例中,两个以上的密钥可用于增加的安全性。这种另外的密钥可以是固定的或可变的。这种另外的实施例可以例如使用三个、四个或五个密钥,每个密钥都在扩展的编码序列内使用,在扩展的编码序列中,根据顺序执行的(相同或不同的)逻辑函数用所有的密钥来编码数据。此外,可使用可变数量的密钥而不使用固定数量的密钥。本质地,在编码中使用的密钥的数量和位置必须为解码逻辑电路210或310可知以便能够解码存储的数据。
在一个实施例中,在编码中使用的密钥的数量对于每个字节可以是变化的。例如,密钥的数量可以根据字节的位置或随机地或伪随机地变化。可替换地,要在编码中使用的密钥的数量可以根据由诸如LFSR电路的电路生成的伪随机号码序列来确定。为了确保伪随机数的重复程度低且所使用的密钥数量也低,则LRSR电路优选地具有四到八阶的量级,并且只有LFSR电路输出的前面几个比特将用于确定所使用的密钥数量。
现在参考图6,基于图3的布置300来示出和描述了数据解密方法600。数据解密方法600开始于在步骤610从存储器(即从存储器120或存储器310)读取加密的字节。在步骤620使用固定密钥来解码在步骤610读取的字节。固定密钥和编码的字节被应用于逻辑操作,比如异或操作或散列函数,该逻辑操作是在数据存储之前编码该数据中所使用的逻辑操作的逆。
如果使用可变密钥来加密字节,则在步骤625,使用可变解密密钥和第二逻辑操作来进一步解码在步骤620部分解码的字节。部分解码的字节和可变密钥被用作为第二逻辑操作的操作数,并且所得的字节被完全解密。如果在编码从存储器读取的数据中没有使用可变密钥加密,则跳过步骤625。
从步骤620或625所得的完全解密的字节被传递到寄存器并存储在此,在步骤630挂起对数据字中所有字节的接收。如果还没有读取数据字的所有字节,则重复在步骤610到620(以及步骤625,如果可应用),直到读取数据字中的所有字节。一旦数据字寄存器已经接收形成字的所有解密字节,则在步骤640将数据字传递给ALU360并且在步骤650处理/执行由数据字表示的指令。存在另外的要处理的指令,就重复执行步骤610到650。
如果字长度只有一个字节长,则跳过步骤630,并且在步骤640直接将从步骤620或625得到的完全解密字节直接传递给ALU360。
在一个可替换的实施例中,步骤640将数据字或字节传递到ALU之外的处理器,例如数字信号处理器(DSP),用于将数据作为信号数据处理。该可替换的实施例可应用于数据存储音频或视频信号数据,而例如不是计算机程序源代码的情况。在该可替换实施例中,步骤650可包括根据其特殊数据类型来处理数据。
在另一个实施例中,方法600还可应用于图4的布置400。在这样一个实施例中,加密的数据字节或字被读入到指令寄存器330中并接着被直接从指令寄存器330传递到ALU360,其中解密是使用解码逻辑320来执行的。因而在该实施例中,在步骤640之后并在步骤650之前来执行步骤620和625。
现在参考图7,示出用于执行散列函数的示例散列矩阵700,如上述那样将散列函数当作编码逻辑110或解码逻辑210或320的部分函数。散列矩阵700包括导体阵列,导体中的某些是连接的并且剩下的是断开的。连接的导体被如此配置以便对应于散列密钥,使得对于比如8比特输入,这8个比特的每一个可以被映射到不同的比特位置,因为每个连接的导体的位置在阵列内。这些导体能通过以永久结构的配置熔丝来连接或者可替换地是可电重新配置的。
在图7所示的例子中,具有比特位置01234567的输入字节由散列矩阵700换位到输出的新比特位置42130576。
导体连接能以各种方式形成,但是优选地被如此配置以便成为一次可编程(OTP)并不可由磁偏振传感器读取。因此,优选地是在物理级上形成导体连接,而不是在逻辑级上可重新配置。以这样的方式,因为固定密钥被选择为设备特定的,因此每个固定密钥电路是设备特定的且存储器310存储使用设备特定的固定密钥加密的数据,,该设备特定的固定密钥使得如果数据被从存储器310复制那么在其它设备上无用。
在一个例子中,导体连接可在半导体印模的制造过程期间形成。通过有选择地将半导体衬底中导体的某些导体交叉点暴露给激光写入束而将连接器写入到印模中。这种连接可以在形成集成电路的后续步骤中被保护、保存和隐藏。
在一个实施例中,可以使用多个固定密钥电路,每个电路具有不同的写入到其中的固定代码并且用于编码和解码不同的存储器或相同存储器的不同部分。
散列矩阵700包括在矩阵一侧上的输入连接710和在矩阵另一侧上的输出连接740。输入导体720纵向定向,而输出导体725横向定向以交叉输入导体。输入导体720和输出导体725的每一个初始时是断开的。
在固定密钥的硬编码过程中,其中在输入连接器720和输出连接器725中选择连接730,连接点730在散列矩阵700中形成。连接点730的配置是以硬编码形式的固定密钥,并且连接点730是根据所期望的要在散列矩阵700中编码的固定(散列)密钥735形成的。输入导体720与输出导体725交叉的所有其它位置仍然绝缘或断开,使得每个输入导体720只连接到一个输出导体725,以便确保输入和输出之间的比特换位是一对一的。
在图7中示出的散列矩阵可用于编码或解码。如果散列矩阵被配置为编码进入的字节,则对应的逆散列矩阵可作为解码逻辑320的一部分也被提供用于解码处理,以便将换位的比特映射回它们的原始位置。可替换地,取决于电路配置,相同的散列矩阵可用于解码,但是以相反的方式。
尽管在图7中示出输入导体720和输出导体725垂直行进,应当理解,可以应用其它导体方向和配置,其中导体不垂直行进,只要它们能容易地彼此在想要的位置连接以建立想要的散列配置。例如,输入导体720可在输出导体725之上并与之平行地行进但间隔了薄的绝缘层,由此可以移除绝缘层或旋转为导电,以便按期望来连接相应的导体。还应当理解,不是通过连接所选导体来形成散列矩阵的连接,而是预先制作导体使得输入导体都连接到所有输出导体,并且通过断开除了导体之间期望的连接之外的所有导体来硬编码固定密钥。
在图7中将连接点730示出为点连接。但是,如图9所示,导体连接可替代地使用其它适当的连接方式,比如晶体管或其它固态设备来形成。
根据上述实施例的数据的每字节编码以表格形式在附录A中的表1到3中示出。表1在最左边列示出了以十六进制形式(我们可以称之为六列中的第一列)中示例源数据。对应的二进制源数据在第二列中示出。在表1中说明的例子中,二进制源数据由异或逻辑操作通过将(由列3中的十进制位置值和列4中对应的二进制位置给定的)存储单元用作为可变密钥而被编码并且将预定数用作为固定密钥而被编码(通过异或操作),该数在该情况下是5C(十六进制)或010111100(二进制)。所得的编码和存储的数据以二进制形式在列5中示出并且以对应的十六进制形式在列6中示出。
在表2中说明的另外例子中,只改变固定密钥。在表2中新的固定密钥是A7,而不是5C。由于从表2中的列5和6中清楚看出,所得的编码和存储的数据不同于在表1中表格的相同列中所示的数据。在表3中,说明了进一步的例子,其中使用相同的固定密钥(A7),但是可变密钥(即,存储单元)增加一,实际上从不同的位置起开始存储。可变密钥中的这个小变化导致所有编码和存储的数据的变化,如表3的列5和列6中所示。
现在参考图8,示出LFSR电路1100的例子。LFSR电路1100包括串联连接并且连接到公共时钟1120的多个D锁存器(触发器)1110。D锁存器1110的每一个连接到前一个D锁存器1110并串联连接到下一个D锁存器1110(除非它在串联中是第一或最后的)。每个D锁存器1110具有连接到其输出的输出线1130,用于输出表示比特值为1或0的电压。每个D锁存器1110的输出线1130还可以用作为到反馈逻辑电路1140的反馈,其形成到串联的第一D锁存器1110的反馈输入的一部分。
为了实现沿着输出线1130的伪随机数生成,只有所选的输出线1130被用作为到反馈电路1140的输入。例如,如图8所示,第二、第三、第六和第八D锁存器输出线1130被用作为到反馈电路1140的输入。输出线1130被选择作为反馈电路1140的输入的位置也称为分接点。取决于分接点的选择,伪随机数序的长度(在其重复之前)将变化,尽管存在一些预定的最佳分接点配置以便提供最大的伪随机数序长度。
图8所示的示例LFSR电路1110具有八个D锁存器1110(称为八级LFSR电路)和四个预定的固定分接点。取决于所期望的LFSR电路性能,可使用不同数量的D锁存器1110。此外,还可取决于所期望的LFSR电路性能,使用不同数量的分接点和可替换的分接点配置。在一个实施例中,LFSR电路可以被配置为具有可变的分接点,可由微处理器控制,来根据需求生成不同的伪随机数序。
所需要的是,提供种子值给LFSR电路1110以开始伪随机数生成序列。该种子值可以被串行输入,并在第一D锁存器1110开始并且经过八个时钟周期传播到余下的D锁存器1110。可替换地,D锁存器1110可配置为允许在单个时钟周期中并行输入种子比特。
对于时钟1120的每个时钟周期,将每个D锁存器1110的输出提供给后续串联的D锁存器1110以及输出线1130。因此,八个输出线1130的每一个上的比特值取决于来自前一个时钟周期的前一个D锁存器1110的输出和提供给串联的第一D锁存器1110的反馈。
为了防止LFSR电路1110在零序列被卡住,还将每个D锁存器1110的输出连同反馈逻辑电路1140的输出提供给或非门1150,其输出被提供给异或门1160。接着将异或门1160的输出作为到串联的第一D锁存器1110的反馈输入来提供。因此,如果所有输出线130承载0值,非或门1150将输出1值,其还允许D锁存器恢复随机数生成。
反馈逻辑电路1140在LFSR电路1100的例子中包括三个异或门。异或门中的两个的每一个都接收来自四个分接点的四个反馈输入中的两个,并且将这些异或门的输出提供给第三异或门,其依次将其输出提供给异或门1160。
现在参考图9,示出了由参考标记1200指示的编码或解码电路的一个特殊实施例,该编码或解码电路包括密钥电路140或固定密钥电路322的至少一部分功能。电路1200连同LFSR电路1110还可在一个可能的实施例中用作为至少一部分的可变密钥电路324。电路1200包括与异或编码电路1240组合的散列矩阵1205。散列矩阵1205在操作上类似于散列矩阵700(并且被示出编码相同的固定密钥),因为它具有根据散列矩阵1205的输入导体1220和输出导体1225之间形成的所选电路连接来编码或形成的散列密钥1215。
与散列矩阵700的电路连接730相对,散列矩阵1205使用开关器件比如晶体管1230的矩阵,晶体管1230例如将输入导体1220与输出导体1225互连。晶体管可以是双极结晶体管(BJT)或场效应晶体管(FET),尽管图9中所示的晶体管是BJT。可替换地,其它固态半导体器件或简单导体可用于在输入导体1220和输出导体1225之间形成可切换或不可切换的连接。在一个另外的可替换方式中,用于固定或可变密钥配置的多路复用器的形式可用于换位/重定向每个字节或字内的比特。
取决于要在散列阵列1205中编码或形成的固定密钥代码,某些晶体管被选择用来将每个输入线1220连接到相应的输出线1225。散列矩阵1205中未选择的晶体管要么与输入和输出导体1220、1225断开要么通过使它们的基极端降低而被禁用。当每个所选晶体管1230的基极端为高时,该晶体管1230将被启用,因此将相关输入导体1220上的输入电压传递到相应晶体管1230所连接的输出导体1225上,由此将输入的比特位置1210换位到不同的输出比特位置。在可重新配置的散列矩阵1205的一个实施例中,矩阵中每个晶体管的基极端是可独立选择的,由此允许每个输入导体1220可有选择地连接到任何输出导体1225。
在图9中所示的示例电路1200中,散列矩阵1205与连接到输出导体1225的异或编码电路1240相结合地使用。每个输出导体1225被用作为到异或编码电路1240中的异或门1270的一个输入。每个异或门1270的其它输入提供在异或编码电路1240中编码的异或密钥1260的一个比特。根据要在异或编码电路1240的每个比特位置中编码的异或密钥1260的比特值,通过将每个异或门1270的第二输入与高输入线1250或低输入线1255中所选的一个连接,来编码异或密钥1260。例如,为了向异或门1270的第二输入提供1,该输入在连接1265处与高输入线1250连接。相反,为了向异或门1270的第二输入提供0,输入应当在连接点1265处与低输入线1255连接。异或编码电路1240中的连接点1265优选地是硬编码的并且以类似于参考图7描述的连接点730的方式形成。
图9示出异或编码电路1240,其具有一系列与散列矩阵1205的输出耦合的异或编码门1270。在所示的示例实施例中,异或编码电路1240可以用于执行进一步逻辑操作,以作为解或编码处理的一部分。有利地,在这样一个示例实施例中,异或编码门1270可用于执行涉及固定加密或解密密钥的逻辑操作,而散列矩阵1205可在可变密加密或解密(如果散列矩阵可重新配置)中使用。在图9所示的例子中,值11010111的输入字节可通过散列矩阵1205而被换位成0011111。换位的字节接着与(异或密钥1260)值10100110异或以提供值为10011001的输出字节。
尽管图9结合散列矩阵1205示出了异或编码电路1240,但是应当理解,这两个电路之一可以替换为可替换电路,要么在其中形成有硬编码的固定密钥要么生成可变密钥,比如LFSR电路1110。但是,这些电路的至少一个应当在其中硬编码有固定密钥。电路1200可用于编码或解码数据。如果电路1200用于编码数据,类似电路可被提供用来解码数据,除了散列矩阵1250将相反地被配置为以与编码电路相反的方式来换位比特。
可替换电路可用于执行在加密/解密中涉及的逻辑操作,这取决于所执行的逻辑操作的特殊类型。图9中所示的晶体管1230只表示多个重定向比特到新位置的可能方式中的一个。例如,晶体管或逻辑开关的其它形式可用于代替图9中所示的晶体管开关1230,并且其它逻辑开关配置可用于散列之外的逻辑操作。
尽管已经参考附图描述了本发明的实施例,但是应当理解,该描述是通过举例的方式而不是要将本发明的精神或范围只限制到所描述或所示的那些实施例。一些变型和/或加强对于本领域人员来说是明显的,而不会偏离本发明的精神和范围。
附录A
表1
原始的 | |||||
密钥: 5C 01011100 | ×OR | ||||
源数据 | 源二进制 | 十进制 | 二进制 | 保存的 | 保存的 |
位置 | 位置 | 二进制 | 数据 | ||
2D | 00101101 | 000 | 00000000 | 01110001 | 71 |
3C | 00111100 | 001 | 00000001 | 01100001 | 61 |
4E | 01001110 | 002 | 00000010 | 00010000 | 10 |
2A | 00101010 | 003 | 00000011 | 01110101 | 75 |
F4 | 11110100 | 004 | 00000100 | 10101100 | AC |
D6 | 11010110 | 005 | 00000101 | 10001111 | 8F |
54 | 01010100 | 006 | 00000110 | 00001110 | 0E |
67 | 01100111 | 007 | 00000111 | 00111100 | 3C |
8A | 10001010 | 008 | 00001000 | 11011110 | DE |
FE | 11111110 | 009 | 00001001 | 10101011 | AB |
7E | 01111110 | 010 | 00001010 | 00101000 | 28 |
8D | 10001101 | 011 | 00001011 | 11011010 | DA |
56 | 01010110 | 012 | 00001100 | 00000110 | 06 |
5B | 01011011 | 013 | 00001101 | 00001010 | 0A |
B1 | 10110001 | 014 | 00001110 | 11100011 | E3 |
1D | 00011101 | 015 | 00001111 | 01001110 | 4E |
D4 | 11010100 | 016 | 00010000 | 10011000 | 98 |
04 | 00000100 | 017 | 00010001 | 01001001 | 49 |
F0 | 11110000 | 018 | 00010010 | 10111110 | BE |
30 | 00110000 | 019 | 00010011 | 01111111 | 7F |
0F | 00001111 | 020 | 00010100 | 01000111 | 47 |
1F | 00011111 | 021 | 00010101 | 01010110 | 56 |
DE | 11011110 | 022 | 00010110 | 10010100 | 94 |
BA | 10111010 | 023 | 00010111 | 11110001 | F1 |
A0 | 10100000 | 024 | 00011000 | 11100100 | E4 |
55 | 01010101 | 025 | 00011001 | 00010000 | 10 |
44 | 01000100 | 026 | 00011010 | 0000001 0 | 02 |
12 | 00010010 | 027 | 00011011 | 01010101 | 55 |
00 | 00000000 | 028 | 00011100 | 01000000 | 40 |
FF | 11111111 | 029 | 00011101 | 10111110 | BE |
45 | 01000101 | 030 | 00011110 | 00000111 | 07 |
54 | 01010100 | 031 | 00011111 | 00010111 | 17 |
通过对源数据和密钥执行异或并接着与位置执行另一个异或来计算保存的数据。这些例子使用简单的异或来加密数据。 |
表2
只有密钥中的变化 | |||||
密钥: A7 10100111 | XOR | ||||
源数据 | 源二进制 | 十进制 | 二进制 | 保存的 | 保存的 |
位置 | 位置 | 二进制 | 数据 | ||
2D | 00101101 | 000 | 00000000 | 10001010 | 8A |
3C | 00111100 | 001 | 00000001 | 10011010 | 9A |
4E | 01001110 | 002 | 00000010 | 11101011 | EB |
2A | 00101010 | 003 | 00000011 | 10001110 | 8E |
F4 | 11110100 | 004 | 00000100 | 01010111 | 57 |
D6 | 11010110 | 005 | 00000101 | 01110100 | 74 |
54 | 01010100 | 006 | 00000110 | 11110101 | F5 |
67 | 01100111 | 007 | 00000111 | 11000111 | C7 |
8A | 10001010 | 008 | 00001000 | 00100101 | 25 |
FE | 11111110 | 009 | 00001001 | 01010000 | 50 |
7E | 01111110 | 010 | 00001010 | 11010011 | D3 |
8D | 10001101 | 011 | 00001011 | 00100001 | 21 |
56 | 01010110 | 012 | 00001100 | 11111101 | FD |
5B | 01011011 | 013 | 00001101 | 11110001 | F1 |
B1 | 10110001 | 014 | 00001110 | 00011000 | 18 |
1D | 00011101 | 015 | 00001111 | 10110101 | B5 |
D4 | 11010100 | 016 | 00010000 | 01100011 | 63 |
04 | 00000100 | 017 | 00010001 | 10110010 | B2 |
F0 | 11110000 | 018 | 00010010 | 01000101 | 45 |
30 | 00110000 | 019 | 00010011 | 10000100 | 84 |
0F | 00001111 | 020 | 00010100 | 10111100 | BC |
1F | 00011111 | 021 | 00010101 | 10101101 | AD |
DE | 11011110 | 022 | 00010110 | 01101111 | 6F |
BA | 10111010 | 023 | 00010111 | 00001010 | 0A |
A0 | 10100000 | 024 | 00011000 | 000111111 | 1F |
55 | 01010101 | 025 | 00011001 | 11101011 | EB |
44 | 01000100 | 026 | 00011010 | 11111001 | F9 |
12 | 00010010 | 027 | 00011011 | 10101110 | AE |
00 | 00000000 | 028 | 00011100 | 10111011 | BB |
FF | 11111111 | 029 | 00011101 | 01000101 | 45 |
45 | 01000101 | 030 | 00011110 | 11111100 | FC |
54 | 01010100 | 031 | 00011111 | 11101100 | EC |
仅通过改变密钥,整个数据就不同于原始的加密表。 |
表3
数据位置中的变化(偏移1) | |||||
密钥: A7 10100111 | ×OR | ||||
源数据 | 源二进制 | 十进制 | 二进制 | 保存的 | 保存的 |
位置 | 位置 | 二进制 | 数据 | ||
2D | 00101101 | 001 | 00000001 | 10001011 | 8B |
3C | 00111100 | 002 | 00000010 | 10011001 | 99 |
4E | 01001110 | 003 | 00000011 | 11101010 | EA |
2A | 00101010 | 004 | 00000100 | 10001001 | 89 |
F4 | 11110100 | 005 | 00000101 | 01010110 | 56 |
D6 | 11010110 | 006 | 00000110 | 01110111 | 77 |
54 | 01010100 | 007 | 00000111 | 11110100 | F4 |
67 | 01100111 | 008 | 00001000 | 11001000 | C8 |
8A | 10001010 | 009 | 00001001 | 00100100 | 24 |
FE | 11111110 | 010 | 00001010 | 01010011 | 53 |
7E | 01111110 | 011 | 00001011 | 11010010 | D2 |
8D | 10001101 | 012 | 00001100 | 00100110 | 26 |
56 | 01010110 | 013 | 00001101 | 11111100 | FC |
5B | 01011011 | 014 | 00001110 | 11110010 | F2 |
B1 | 10110001 | 015 | 00001111 | 00011001 | 19 |
1D | 00011101 | 016 | 00010000 | 10101010 | AA |
D4 | 11010100 | 017 | 00010001 | 01100010 | 62 |
04 | 00000100 | 018 | 00010010 | 10110001 | B1 |
F0 | 11110000 | 019 | 00010011 | 01000100 | 44 |
30 | 00110000 | 020 | 00010100 | 10000011 | 83 |
0F | 00001111 | 021 | 00010101 | 10111101 | BD |
1F | 00011111 | 022 | 00010110 | 1011110 | AE |
DE | 11011110 | 023 | 00010111 | 01101110 | 6E |
BA | 10111010 | 024 | 00011000 | 00000101 | 05 |
A0 | 10100000 | 025 | 00011001 | 00011110 | 1E |
55 | 01010101 | 026 | 00011010 | 11101000 | E8 |
44 | 01000100 | 027 | 00011011 | 11111000 | F8 |
12 | 00010010 | 028 | 00011100 | 10101001 | A9 |
00 | 00000000 | 029 | 00011101 | 10111010 | BA |
FF | 11111111 | 030 | 00011110 | 01000110 | 46 |
45 | 01000101 | 031 | 00011111 | 11111101 | FD |
54 | 01010100 | 032 | 00100000 | 11010011 | D3 |
在该表中,密钥和源数据相同但被移位了一个位置。因为可变密钥(即存储单元)中的变化,所以结果不同。 |
Claims (56)
1.一种获取数据的方法,该方法包括:
从与处理器关联的存储器中读取所存储数据的至少一个字节;
对于每个所读取的字节,使用解密密钥对该字节执行逻辑操作以生成解密字节,其中解密密钥由可由处理器访问的专门密钥电路编码;并且
将每个解密字节提供给用于处理其的处理器。
2.权利要求1的方法,其中所存储的数据是加密的计算机程序源代码。
3.权利要求1或2的方法,其中存储器是非易失性存储器的形式。
4.权利要求3的方法,其中非易失性存储器是只读存储器(ROM)的形式。
5.权利要求1的方法,其中所存储的数据是加密的微处理器数据。
6.权利要求1-5中任意一个的方法,其中解密密钥是第一解密密钥并且逻辑操作是第一逻辑操作,并且其中该方法还包括,对于每个字节,使用第二解密密钥对解密的字节执行第二逻辑操作以生成另外的解密字节。
7.权利要求6的方法,其中第一逻辑操作是异或操作,并且数据字节和第一解密密钥是异或操作的操作数。
8.权利要求6的方法,其中第一逻辑操作是用第一解密密钥编码的第一散列函数,并且其中,借助第一散列函数,数据字节的比特被换位以基于第一解密密钥来生成解密的字节。
9.权利要求7或8的方法,其中第二逻辑操作是异或操作,并且解密的字节和第二解密密钥是异或操作的操作数。
10.权利要求7或8的方法,其中第二逻辑操作是用第二解密密钥编码第二散列函数,并且其中,借助第二散列函数,解密字节的比特被换位以基于第二解密密钥来生成另外的解密字节。
11.权利要求6的方法,其中第二解密密钥是可变解密密钥,并且第一解密密钥是固定解密密钥。
12.权利要求6的方法,其中第一解密密钥是可变解密密钥,并且第二解密密钥是固定解密密钥。
13.权利要求11或12的方法,其中可变解密密钥对应于至少一个数据字节的相应存储单元。
14.权利要求11或12的方法,其中可变解密密钥对于每个字节是不同的。
15.权利要求1-14中任意一个的方法,其中已经使用与解密密钥相同的加密密钥来加密所存储数据。
16.权利要求1-15中任意一个的方法,其中解密密钥基于处理器或容纳处理器的设备的序列号。
17.权利要求1-16中任意一个的方法,其中解密密钥被永久硬编码在密钥电路中。
18.权利要求11或12的方法,其中可变解密密钥是由线性反馈移位寄存器(LFSR)电路根据预定种子值来生成的。
19.权利要求18的方法,其中LFSR电路是具有预定分接点的八阶LFSR电路。
20.权利要求1-19中任意一个的方法,其中密钥电路包括在处理器的算术逻辑单元(ALU)中。
21.一种存储数据的方法,该方法包括:
接收要在与处理器关联的存储器中存储的数据的至少一个字节;
对于每个所接收的字节,使用加密密钥对该字节执行逻辑操作以生成加密的字节,其中加密密钥在可由处理器访问的专门密钥电路中被编码;并且
将每个加密字节存储在存储器中。
22.权利要求21的方法,其中要存储的数据是计算机程序源代码。
23.权利要求21或22的方法,其中存储器是非易失性存储器的形式。
24.权利要求23的方法,其中非易失性存储器是只读存储器(ROM)的形式。
25.权利要求21的方法,其中要存储的数据是微处理器数据。
26.权利要求21-25中任意一个的方法,其中加密密钥是第一加密密钥并且逻辑操作是第一逻辑操作,并且其中该方法还包括,对于每个字节,使用第二加密密钥对所加密的字节执行第二逻辑操作以生成另外的加密字节。
27.权利要求26的方法,其中第一逻辑操作是异或操作,并且数据字节和第一加密密钥是异或操作的操作数。
28.权利要求26的方法,其中第一逻辑操作是用第一加密密钥编码的第一散列函数,并且其中,借助第一散列函数,数据字节的比特被换位以基于第一加密密钥来生成加密的字节。
29.权利要求27或28的方法,其中第二逻辑操作是异或操作,并且加密的字节和第二加密密钥是异或操作的操作数。
30.权利要求27或28的方法,其中第二逻辑操作是用第二加密密钥编码第二散列函数,并且其中,借助第二散列函数,加密字节的比特被换位以基于第二加密密钥来生成另外的加密字节。
31.权利要求26的方法,其中第二加密密钥是可变加密密钥,并且第一加密密钥是固定加密密钥。
32.权利要求26的方法,其中第一加密密钥是可变解密密钥,并且第二解密密钥是固定加密密钥。
33.权利要求31或32的方法,其中可变加密密钥对应于至少一个数据字节的相应存储单元。
34.权利要求31或32的方法,其中可变加密密钥对于每个字节是不同的。
35.权利要求21-34中任意一个的方法,其中加密密钥基于处理器或容纳处理器的设备的序列号。
36.权利要求21-35中任意一个的方法,其中加密密钥被永久硬编码在密钥电路中。
37.权利要求31或32的方法,其中可变加密密钥是由线性反馈移位寄存器(LFSR)电路根据预定种子值来生成的。
38.权利要求37的方法,其中LFSR电路是具有预定分接点的八阶LFSR电路。
39.权利要求21-38中任意一个的方法,其中要在存储器中存储的所有数据被加密。
40.计算机设备,包括:
处理器;
非易失性存储器,可由用于存储数据的至少一个字节的处理器访问;
加密电路,被配置为接收要在非易失性存储器中存储的数据,通过使用第一逻辑操作基于密钥来加密每个所接收的字节,并将每个加密的字节传递到非易失性存储器以供存储;
解密电路,被配置为从非易失性存储器中接收数据的加密字节,使用作为第一逻辑操作的逆的第二逻辑操作基于密钥来解密每个字节,并且将每个解密的字节传递给处理器;
密钥电路,具有在其中形成的密钥并且可由加密电路和解密电路访问。
41.权利要求40的设备,其中密钥是固定密钥并且密钥电路是固定密钥电路。
42.权利要求41的设备,其中固定密钥电路具有在其中以非易失性方式形成的固定密钥,所述固定密钥的形成根据的是在固定密钥电路中的多个导体中所选择的导体之间形成的永久电连接。
43.权利要求41或42的设备,其中固定密钥基于处理器或容纳处理器的设备的序列号。
44.权利要求40-43的任意一个的设备,其中非易失性存储器存储加密的计算机程序源代码。
45.权利要求41-43的任意一个的设备,还包括可变密钥电路,被配置为向加密电路和解密电路提供可变密钥,其中加密电路还被配置为在将加密的字节传递到易失性存储器之前,使用第三逻辑操作基于可变密钥来加密每个字节,并且其中解密电路还被配置为在将解密字节传递到处理器之前,使用作为第三逻辑操作的逆的第四逻辑操作基于可变密钥来解密每个字节。
46.权利要求45的设备,其中可变密钥对于每个字节是不同的。
47.权利要求45或46的设备,其中第一、第二、第三和第四逻辑操作中的一个或多个是异或操作
48.权利要求45或46的设备,其中第一、第二、第三和第四逻辑操作中的一个或多个是散列操作
49.权利要求45-48的任意一个的设备,其中可变密钥是由线性反馈移位寄存器(LFSR)电路根据预定种子值来生成的。
50.权利要求49的设备,其中LFSR电路是具有预定分接点的八阶LFSR电路。
51.权利要求45-48的任意一个的设备,其中可变密钥对应于在非易失性存储器中存储的加密字节的相应存储单元。
52.权利要求40-51的任意一个的设备,其中加密电路加密所有要在非易失性存储器中存储的数据,并且解密电路解密所有从非易失性存储器接收的数据。
53.权利要求40-52中任意一个的设备,其中密钥电路包括在处理器的算术逻辑单元(ALU)中。
54.权利要求40-53中任意一个的设备,其中密钥电路只可由加密电路和解密电路访问。
55.权利要求40-54中任意一个的设备,其中密钥电路形成为加密电路和/或解密电路的一部分。
56.权利要求40的设备,其中密钥是可变密钥并且密钥电路是可变密钥电路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65163605P | 2005-02-11 | 2005-02-11 | |
US60/651,636 | 2005-02-11 | ||
US60/693,801 | 2005-06-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101116081A true CN101116081A (zh) | 2008-01-30 |
Family
ID=39023480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800046390A Pending CN101116081A (zh) | 2005-02-11 | 2006-02-10 | 用于微处理器数据安全的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101116081A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473224A (zh) * | 2009-12-22 | 2012-05-23 | 英特尔公司 | 提供安全应用执行的方法和装置 |
CN104079304A (zh) * | 2013-03-28 | 2014-10-01 | 罗伯特·博世有限公司 | 用于处理数据的设备和方法 |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
CN104808641A (zh) * | 2014-01-24 | 2015-07-29 | 通用汽车环球科技运作有限责任公司 | 在串行通信网络上执行微处理器alu完整性测试的方法 |
CN104813330A (zh) * | 2012-12-31 | 2015-07-29 | 英特尔公司 | 在运行时测量在安全区域内加载的应用 |
CN105024708A (zh) * | 2014-04-16 | 2015-11-04 | 罗伯特·博世有限公司 | 用于处理数据的装置和方法 |
CN106372529A (zh) * | 2016-08-23 | 2017-02-01 | 广州视源电子科技股份有限公司 | 一种文件加解密的方法和系统 |
CN109560922A (zh) * | 2017-09-25 | 2019-04-02 | 波音公司 | 用于方便数据加密和解密和关联信息的擦除的系统和方法 |
CN110611565A (zh) * | 2019-08-07 | 2019-12-24 | 浙江省北大信息技术高等研究院 | 数据处理系统、方法及电子设备 |
CN110968263A (zh) * | 2018-10-01 | 2020-04-07 | 爱思开海力士有限公司 | 存储器系统 |
CN112202754A (zh) * | 2020-09-25 | 2021-01-08 | 中国建设银行股份有限公司 | 一种数据加密方法、装置、电子设备及存储介质 |
-
2006
- 2006-02-10 CN CNA2006800046390A patent/CN101116081A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473224B (zh) * | 2009-12-22 | 2016-10-12 | 英特尔公司 | 提供安全应用执行的方法和装置 |
US10885202B2 (en) | 2009-12-22 | 2021-01-05 | Intel Corporation | Method and apparatus to provide secure application execution |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
CN102473224A (zh) * | 2009-12-22 | 2012-05-23 | 英特尔公司 | 提供安全应用执行的方法和装置 |
US10102380B2 (en) | 2009-12-22 | 2018-10-16 | Intel Corporation | Method and apparatus to provide secure application execution |
CN104813330A (zh) * | 2012-12-31 | 2015-07-29 | 英特尔公司 | 在运行时测量在安全区域内加载的应用 |
CN104079304B (zh) * | 2013-03-28 | 2019-09-27 | 罗伯特·博世有限公司 | 用于处理数据的设备和方法 |
CN104079304A (zh) * | 2013-03-28 | 2014-10-01 | 罗伯特·博世有限公司 | 用于处理数据的设备和方法 |
CN104808641B (zh) * | 2014-01-24 | 2017-12-22 | 通用汽车环球科技运作有限责任公司 | 在串行通信网络上执行微处理器alu完整性测试的方法 |
CN104808641A (zh) * | 2014-01-24 | 2015-07-29 | 通用汽车环球科技运作有限责任公司 | 在串行通信网络上执行微处理器alu完整性测试的方法 |
CN105024708A (zh) * | 2014-04-16 | 2015-11-04 | 罗伯特·博世有限公司 | 用于处理数据的装置和方法 |
CN106372529A (zh) * | 2016-08-23 | 2017-02-01 | 广州视源电子科技股份有限公司 | 一种文件加解密的方法和系统 |
CN106372529B (zh) * | 2016-08-23 | 2019-05-07 | 广州视源电子科技股份有限公司 | 一种文件加解密的方法和系统 |
CN109560922A (zh) * | 2017-09-25 | 2019-04-02 | 波音公司 | 用于方便数据加密和解密和关联信息的擦除的系统和方法 |
CN109560922B (zh) * | 2017-09-25 | 2023-10-20 | 波音公司 | 用于方便数据加密和解密和关联信息的擦除的系统和方法 |
CN110968263A (zh) * | 2018-10-01 | 2020-04-07 | 爱思开海力士有限公司 | 存储器系统 |
CN110611565A (zh) * | 2019-08-07 | 2019-12-24 | 浙江省北大信息技术高等研究院 | 数据处理系统、方法及电子设备 |
CN112202754A (zh) * | 2020-09-25 | 2021-01-08 | 中国建设银行股份有限公司 | 一种数据加密方法、装置、电子设备及存储介质 |
CN112202754B (zh) * | 2020-09-25 | 2022-11-15 | 中国建设银行股份有限公司 | 一种数据加密方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101116081A (zh) | 用于微处理器数据安全的方法和系统 | |
US20070172053A1 (en) | Method and system for microprocessor data security | |
US4465901A (en) | Crypto microprocessor that executes enciphered programs | |
EP0536943B1 (en) | Data security arrangements for semiconductor programmable logic devices | |
US4319079A (en) | Crypto microprocessor using block cipher | |
US4278837A (en) | Crypto microprocessor for executing enciphered programs | |
US8155309B2 (en) | Circuit arrangement with non-volatile memory module and method for en-/decrypting data in the non-volatile memory module | |
US8094816B2 (en) | System and method for stream/block cipher with internal random states | |
US6691921B2 (en) | Information processing device | |
TW201944231A (zh) | 具有物理不可複製功能的真亂數生成系統 | |
KR20160093702A (ko) | 메모리 무결성 | |
KR900702480A (ko) | 통신기기 | |
TW201918923A (zh) | 安全邏輯系統及操作安全邏輯系統的方法 | |
CN104732159A (zh) | 一种文件处理方法及装置 | |
EP0008033B1 (en) | Microprocessor for executing enciphered programs | |
US7657034B2 (en) | Data encryption in a symmetric multiprocessor electronic apparatus | |
WO2002086846A1 (fr) | Chiffrement / dispositif de dechiffrement, chiffrement / procede de dechiffrement, procede de chiffrement de donnees et carte a circuit integre | |
US7333613B2 (en) | Cyphering of the content of a memory external to a processor | |
CN114444140A (zh) | 存储器中的不可复制函数应用 | |
TWI221966B (en) | Device for encrypting/protecting program with protection bit codes | |
JP2000357085A (ja) | 外部rom情報保護システム | |
JP3728098B2 (ja) | 半導体装置、論理書き換え防止方法、論理書き換え方法、符号処理方法、及び記憶媒体 | |
CN114329361B (zh) | 存储装置和数据读取方法 | |
KR102393958B1 (ko) | 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법 | |
KR20100099871A (ko) | 데이터 보호를 위한 메모리, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1118348 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1118348 Country of ref document: HK |