保护中央处理器和存储器之间数据传输的方法和装置
发明领域
本发明涉及一种保护一个中央处理器和一个存储器之间数据传输的方法,其中,利用一个第一固定存储的密钥对由中央处理器提供的逻辑地址进行编码。本发明还涉及一个数据处理单元,它包括:一个通过地址线和数据线与存储器相连的中央处理器;和一个配置在地址线上的第一加密逻辑部分,它对中央处理器利用一个第一固定存储的密钥提供的逻辑地址进行编码。
发明背景
在几乎所有的数据处理系统中,都有一个中央处理器和存储器之间的连接。为保护存储器里的数据不被滥用,通常用加密的形式存储这些数据。例如,在US5,987,572中描述的存储在存储器中的数据的动态加密方法。在该方法中,利用一个可变的密钥对数据进行编码,然而,该方法需要很大的计算量。
而且,已知一些加密方法,特别是智能卡的加密方法。智能卡被越来越多地用作支票卡、货币卡、身份卡,或与安全相关的数据的载体等等,智能卡具有一个非易失存储器,在关掉处理器之后,或者在没有提供任何外部电流的情况下,仍能保持其内容。在已知的智能卡加密方法中,利用一个存储在硬件或永久存储在ROM存储器中的密钥对存储器的地址进行加密编码。这意味着利用密钥按照一对一的关系把由中央处理器提供或使用的数据的逻辑地址拷贝到另一个地址上,那么数据在物理上是存在于存储器的该地址之下的。诚然,该方法是相当简单的,但是它存在缺陷,即一旦对一个编码进行了分析和解密,那么就可以将其传递给所有相同类型的系统或相同ROM编码的系统。因此一次滥用的解码会危及许多智能卡的安全。而且,因为总能根据相同的(编码的)地址追溯到存储器中的数据,所以要使存储器的内容不可使用,必须擦除全部内容,这也是该方法的一个缺点。
发明目的和简介
因此本发明的一个目的是提供一种方法和一种数据处理单元,更好地保护与一个中央处理器相关的存储器中的数据。
该目的是利用权利要求1中定义的方法和权利要求7中定义的数据处理单元来实现的。在从属权利要求中确定了有利的实施方案。
该方法是用于保护一个中央处理器和一个存储器之间的数据传输,特别是防止存储器中的数据被读取和滥用。在该方法中,利用一个第一固定存储的密钥对由中央处理器提供或使用的数据的逻辑地址进行编码。例如,可以将该第一密钥存储在硬件结构中或ROM存储器(包括EPROM,EEPROM等等)中。该方法的进一步的特征是,利用一个第二可变存储的密钥对利用第一密钥编码的地址中的至少一部分进行第二次编码。
利用一个可变密钥对地址进行第二次加密的优势是,可以通过提供一个单独的第二密钥,对于这种类型的每个数据处理系统单独进行数据加密。甚至当第一加密级或第一密钥在一次滥用攻击中被破解时,不是所有相同类型的系统都能够利用相同的第一密钥对数据进行解码,因为这些数据每次都用一个不同的第二密钥进行了加密。这样该方法对存储在存储器里的数据提供了更好的保护。
此外,该方法还有的优势是,通过改变或重写可变的第二密钥,使该存储器的内容不可使用。可以不必擦除全部存储器或不必用随机数重写存储器。
依照该方法的一个进一步实施方案中,逻辑上将存储器划分为一个配置范围和一个有效数据范围,其中用第一密钥对配置范围的访问仅进行编码,而用第二密钥对有效数据范围的访问进行附加编码。正如名称“配置范围”所表明的,与数据处理系统或中央处理器的配置相关的数据最好存储在这一范围。这样,处理器可以在不知道或不使用第二密钥的情况下对数据进行访问。这在初始化中央处理器时是尤其有利的,因为总能不用第二密钥就可在相同地点找到配置数据。
在如上所述的被划分的存储器中,最好将第二密钥存储在配置范围中。当初始化中央处理器时,可以从该范围中读取该密钥,然后将其用于第二编码操作。无需附加的存储器来存储该第二密钥,在智能卡的情况中,这是一个显著的优点。
依照该方法的一个进一步实施方案中,在访问存储器之前,利用第二密钥一些逻辑地址进行再次编码,这些逻辑地址根据最初用第一密钥和然后用第二密钥进行的连续编码来假定对应于仅用第一密钥进行编码的配置范围地址的值。该方法有如下背景。因为当把配置范围存储在存储器中时仅使用了第一密钥,所以该范围与在用第一和第二密钥进行编码后存储在同一地点的存储器地址相冲突。为防止这一冲突和由此造成的数据损失,对最后提到的地址第二次使用第二密钥,以便把这些地址转移到那些由配置范围因应用第一和第二加密所假定的空闲地点。
最好以这样一种方式来定义利用第一和第二密钥的编码操作,使得在两次使用第一编码操作或两次使用第二编码操作的情况下能够获得恒等性。这样,任何编码函数同时代表其本身的倒数。
依照本发明的一个进一步实施方案,在中央处理器初始化期间,读取或计算第二密钥和/或仅可用于识别第一密钥的编码的地址值。这样在所有硬件和永久存储结构都相同的系统中,可以进行相同的中央处理器初始化过程,但在初始化期间,每个系统的数据是单独产生和存储的,确保随后对数据进行单独加密。
该发明还涉及一种包括一个通过地址线和数据线与存储器相连的中央处理器的数据处理单元。该数据处理单元还包括一个配置在地址线上的第一加密逻辑部分,它对由一个中央处理器利用一个第一固定存储密钥提供的逻辑地址进行编码。该数据处理单元的特征是,它包括一个配置在地址线上的第二加密逻辑部分,该第二加密逻辑部分利用一个第二可变存储的密钥对利用第一密钥编码的地址至少部分进行再次编码。这样的一个数据处理单元尤其可为一块智能卡。
该数据处理单元具有的优势是,允许对存储器中的数据进行单独加密或编码,而不依赖于第二密钥。这样,利用第一密钥对第一加密逻辑进行的滥用解密就不会自动访问到所有类似数据处理单元。每个数据处理单元还需要第二密钥,才能进行这样的访问。
而且,该数据处理单元最好以这样的方式设计或修改,即,能够在该单元中实施上文中描述的方式。
特别是,数据处理单元可以包括一个旁路逻辑部分,它接收由第一加密逻辑部分产生和/或使用的(逻辑)地址作为一个输入并且当这些地址符合预定值时激活第二加密逻辑的一个旁路。这样,用该旁路逻辑部分,可以有选择地关断第二加密。当使用一个上面描述的、应该用第一加密逻辑只进行加密的配置范围时,这是特别有效的。
附图简述
下面将参考附图,来阐明本发明的这些和其它特征。
附图中:
图1概要显示了依照本发明的数据处理单元的部件;
图2概要显示了不同加密阶段的地址。
实施方案的说明
图1显示数据处理单元100的主要部件,包括一个中央处理器10和与其连接的存储模块13。该单元尤其可为一块智能卡100,其中存储器13是一个非易失存储器,为节省成本,一并存储需特别保护的程序代码、数据、控制数据和结构参数。
保护存储器13的内容免受物理分析,通常通过第一加密逻辑11对中央处理单元10使用的、在地址线上提供的逻辑地址LogAdr进行编码。利用存储在硬件结构或ROM存储器的密钥KEY1将逻辑地址LogAdr当作一个一对一的拷贝C1变换成地址“Cipher1”。这样,在把通过数据线19传送的数据或地址存储到存储器13前对它们进行编码。
由于现有的仅有一个使用一个固定密钥KEY1的加密逻辑11的系统不能为存储器13中的数据提供单独的保护,依照本发明,在第一加密逻辑11和存储器13之间的地址线上配置第二加密逻辑12。该第二加密逻辑12使用一个第二密钥KEY2,得到其一对一的变换C2。与第一密钥KEY1相比,这个密钥是不固定的,而是以一个可变的形式存储在存储器13中。在初始化期间通过数据线19从存储器13中读出该第二密钥KEY2的值。
这样,连续应用第一加密C1和第二加密C2就确保将地址LogAdr编码为存储器13中的物理存储地址PhyAdr,且可以针对每个智能卡100通过第二密钥KEY2单独预定该物理存储地址。
中央处理器10初始化期间,最好关掉第二加密逻辑,以便总能在由第一加密逻辑11和第一密钥KEY1预定的存储器13中的同一地点找到中央处理器的配置数据。这样的一个“固定的”配置范围的位置还提供了这样的可能性,即仅在初始化期间从存储器13读取第二密钥KEY2,以便于它随后提供给加密逻辑12。
为了能够在旁路第二加密逻辑12时访问存储模块13中的配置范围,数据处理单元110包括旁路于第二加密逻辑12的旁路15,和一个能够有选择地接通和断开旁路15的旁路逻辑14。通过一个线路16,旁路逻辑14的输入接收由第一加密逻辑11加密的当前地址Cipher1。将该值与两个存储值SecRowCipher1和SecRowCipher2比较。只要Cipher1和两个存储值中的一个相等,旁路逻辑14就会激活旁路15,以便在旁路于第二加密逻辑12时访问存储器13。
在中央处理器10初始化期间通过连接线路17和18来存储上述两个存储地址SecRowCipher1和SecRowCipher2。初始化过程如下。
开始时,在一个局部存储器初始化期间,第二加密逻辑12存储从存储器13的配置范围中读取的第二密钥KEY2。在全面初始化期间,激活旁路15,以便只通过第一加密逻辑11用地址PhyAdr=Cipher1访问存储器13。在初始化过程的最后,第二加密逻辑12就既存储根据SecRowCipher1用第一密钥KEY1产生的配置范围的Cipher1地址,也存储根据SecRowCipher2用第二密钥KEY2产生的配置范围的Cipher2的地址。这是在激活旁路15时实现的。
初始化过程结束后,通常使旁路15无效,以便从根本上把加密编码C1和C2应用到存储器地址LogAdr。
仅当旁路逻辑14确认在初始化过程期间存储的两个地址SecRowCipher1和SecRowCipher2中的一个当作其输入端的Cipher1地址时,才为本次访问激活旁路15,以便旁路于第二加密逻辑12。这样,配置范围的地址不受第二编码拷贝C2的影响。
图2概要显示了图1中显示的数据处理系统100的地址的加密编码和拷贝。
首先通过第一加密逻辑11用拷贝C1把逻辑地址LogAdr转换成地址Cipher1。通过使用具有拷贝C2的第二加密逻辑12,根据每个这样的地址Cipher1产生两次加密的地址Cipher2,地址Cipher2表示存储器的物理存储单元PhyAdr。
如果对于所有的逻辑地址LogAdr连续使用拷贝C1和C2,就会在存储器的地址单元PhyAdr产生这些地址的一对一编码。
然而,由于上述的原因,希望在逻辑地址单元中提供一个配置范围K,仅利用第一加密编码C1将其拷贝到存储器的范围K′。这是在图1中的数据处理单元100中实现的,因为当旁路逻辑14确认配置范围的被C1加密的地址,即其输入端的SecRowCipher1时,确保第二加密逻辑12被旁路。
由于连续应用第一加密C1和第二加密C2,其中单独应用第一加密C1来拷贝配置范围K的存储器的范围K′通常被逻辑地址单元LogAdr的另一个范围X占用。为了防止这一冲突,该范围X被拷贝在存储器的自由范围K″=X″中,其中配置范围K是根据连续使用第一加密C1和第二加密C2来定位的。由于逻辑地址单元的范围X是通过第一加密C1和两次使用第二加密(C2)2来拷贝的,因此是有效的。
当第二加密C2为其自身的倒数,以便通过两次应用来获得与其本身一致的值时,可以显著简化上述的范围X的位移。在这种情况下,可以省去第二加密的二次使用(C2)2,而应仅利用第一加密C1,将范围X和配置范围K一样拷贝到存储器中。图1中的数据处理单元100的旁路逻辑14认同这一状况,因为地址SecRowCipher2是在其输入端提供的,该地址对应于存储器的配置范围K″的地址,是在对配置范围K使用第一加密C1和第二加密C2时获得的。
参考附图利用例子来显示的该方法具有的优点是,可以在任何时候,如在按客户要求配置存储器13时,通过对配置范围的第二密钥KEY2编程来更改用户数据的加密,以便可以单独提供该密钥。这就使滥用的验算变得更加困难,因为每个系统具有其独立的、不能传送给其它系统的加密码。而且,存储器13的配置范围的每一次更改第二密钥KEY2处理都会立即改变有效数据范围的加密码,并由此导致用户数据不可用,这相当于用随机数据对存储器进行了初始化。但是,有效数据范围的这一附加的加密机制不影响在初始化阶段对存储器13的配置范围的安全访问。
参考符号
100 数据处理单元
10 中央处理器
11 第一加密逻辑
12 第二加密逻辑
13 存储器
14 旁路逻辑
15 旁路
16 线路
17,18 初始化线路
19 数据线
LogAdr 逻辑地址
Cipher1 一次加密地址
Cipher2 二次加密地址
KEY1,KEY2 密钥
PhyAdr 物理地址
K 配置范围
C1 第一加密码
C2 第二加密码