存储器访问受保护的智能卡的制作方法

文档序号:6480588阅读:232来源:国知局
专利名称:存储器访问受保护的智能卡的制作方法
技术领域
本发明涉及一种改进的智能卡。智能卡包括一个形状通常是矩形的衬底,该衬底与一个电子芯片形成整体,所述电子芯片能够存储与读卡器进行交互的数据和/或程序。
背景技术
智能卡越来越多地应用在识别和认证系统中,但是迄今为止,由于用于形成芯片的晶模(die)的大小限制了存储器的大小,因而限制了智能卡的实用性。随着越来越复杂的卡上应用,这种存储器大小的限制已经成为一个越来越严重的问题。
我们已经认识到通过附加一个第二存储器芯片(例如闪存ROM(FLASH ROM))能够极大地扩展卡的存储容量。但是,随之而来的问题是为使智能卡可以使用,保留在第二存储器器件中的数据的安全性必须像该数据存储在智能卡芯片内部时的安全性一样好。

发明内容
根据本发明的智能卡的特征在于它在衬底上包括一个第二存储器器件并且该器件被可操作地连接到智能卡芯片。
优选地,第二存储器器件能够存储多个数据页,每个页具有一个与其相关联的唯一的序号,序号与数据页分开存储以便当读取页时,与该页一起获取的序号能够与存储的序号相比较,以认证该页。每个页被使用关于页和芯片唯一的密钥进行加密和签名。


现在将参照附图,通过实例详细描述根据本发明的智能卡的实施例,其中
图1显示了一个根据本发明的具有智能卡芯片和第二存储器器件的智能卡;图2说明了用于与本发明的智能卡一起使用的外部存储器(XMEM)页的结构;图3是本发明的智能卡中所应用的XMEM软件调用树的示意性图表。
具体实施例方式
从图1中可以看出,本发明的智能卡10包括一个单独的衬底12、主智能卡器件14以及一个外部存储器芯片16,所述衬底12类似于一个传统智能卡衬底,但是其带有两个电子芯片,所述主智能卡器件14作为安全微控制器,所述外部存储器芯片16连接到智能卡微控制器。方便地,XMEM器件16可以是一个闪存ROM,但也可以使用任何其他非易失性或电子存储器器件。
在较低的层级,需要智能卡操作系统和XMEM之间的通信函数,用于安全地通信以及在与智能卡相连的XMEM上存储数据。这些功能被更高级的函数调用以读取和更新XMEM中的数据。XMEM可以是,例如,ATMEL AT45DB321B 4M字节串行数据闪存。与XMEM的通信是使用ATMEL AT903232CS串行外设接口(SPI)硬件实现的,并且输入/输出线路之一被用作芯片选择。然而,所述原理将适用于任何带有可用I/O的智能卡微控制器以与串行闪存器件互连。
在该实例中,每个XMEM页包括528字节。页结构在图1中示出。头8个字节(页头)包含一个指示该页未被擦除的字节(值不是0xFF),5字节随机数据,指示页号的2个字节以及1个字节的序号。页头后面是512字节的数据。末尾的8字节包含和512数据字节一起使用加密字组链接而加密的页头的拷贝。页头未被加密以便允许芯片推导页密钥。
我们所提供的XMEM驱动器实现了下列特性以增强安全性和可靠性。
●页内的512数据字节是被三重DES(Data Encryption Standard数据加密标准)CBC(Cipher Block Chaining加密字组链接)加密的。任何对该数据的改变将改变MAC(MessageAuthentication Cryptogram消息认证码)并使其无效。
●每个页包含8字节三重DES MAC。
●利用密码在每个页插入它的页号以允许确定所读的页就是所请求的页。通过页MAC来保护页号不被修改。
●用于推导页密钥的主DES密钥对于芯片是唯一的,并在芯片第一次重置时自动地在内部生成。这些DES密钥不能从外部读取或更新。
●在每次更新页时,由主密钥、随机数据、页号以及页序号重新生成对页进行加密和签名的DES密钥。这是一种额外的安全特性,当每次更新页而改变密钥进而因此改变MAC时,该安全特性增大了已知的为获取密钥而进行的文本攻击的复杂度。
●每个页包含一个字节的序号,每次页更新时该序号都增加。该序号在页读取操作被验证。该序号是个随机数,在每次页更新时改变;因此不能从页的总更新次数中推导出该序号。页序号的使用提高了通过向同一页提供先前的内容而进行的攻击的复杂度。由于页将具有有效的MAC和有效的页号,如果没有序号这种攻击将是可能的。
●所有对XMEM的更新都通过在编程后读取XMEM来验证。
●硬件抽象层(HAL)函数将试图在退出前读取或更新该页3次。
●如果一个页被发现要擦除,它在读取时被初始化为一个随机数值。那么,在外部擦除一个页以使在内部读取具有已知擦除值的页是不可能的。
序号ATMELAT45DB321B包含8192页的闪存存储器。如上所述,每个XMEM页具有一个单独的序号(1字节)。序号的拷贝必须被存储在其他地方以在读取时与该页进行比较。为了阻止序号的拷贝被修改,它必须被保护。这可以通过在内部将所有序号存储到智能卡上来实现。这可能不适合于所有情况,因为它需要为序号保留8192字节EEPROM。通过预留32页XMEM,其中每个页存储另外8160个页的256个序号来解决该问题。这些页正常地被保护,但是它们的序号存储在智能卡EEPROM中。任选地,这32个序号可以被异或(XOR)以产生一个存储在智能卡EEPROM中的单独的字节。这导致节省了EEPROM的使用,使其从8192字节降到了256字节。
下面的图2详细描述了对如下的外部读取和更新页函数的调用顺序。
ReadXMEMPagevoid readXMEMPage(word pageNum)这个函数将从XMEM读取一个页。该函数将调用函数getPageSeqNum以读取期望的页序号以与接收到的页进行比较。
该函数将调用doRead函数以执行页的实际读取、解密和MAC校验。如果读取的页序号不正确的话将返回一个错误。
updateXMEMPagevoid readXMEMPage(word pageNum)这个函数将更新XMEM中的一个页并要求提前读取该页以获取现有的页序号。
这个函数将调用loadPageKeys函数以基于页号、已更新的序号和随机数据为该页推导新的密钥。
这个函数将通过使用SPI硬件向XMEM芯片发送程序指令和数据来执行实际的XMEM页的更新。
这个函数将调用doRead函数以验证正确编入XMEM中的已更新的数据。
doRead(internal Function)void doRead(word pageNum,byte mode)
这个函数将从XMEM中读取一个页或者验证一个XMEM中的页。
它具有两个模式1.它将读取页,调用loadPageKeys以推导出页密钥来解密数据,并检查MAC和页号是否正确。
2.它将读取该页以验证发送来更新XMEM页的加密数据是否被正确地编写。
loadPageKeysvoid loadPageKeys(byte mode,word pageNum)这个函数将加载该密钥以加密/解密一个页,并且如果更新页,则使用随机数据、页号和已增加的页序号生成密钥多样化字符串,或者当读取它时,使用第一XMEM页作为多样化字符串。多样化字符串被使用关于芯片唯一的主XMEM密钥加密以给出关于芯片、页和序号唯一的密钥。该密钥被加载进DES硬件中。
getPageSeqNumbyte readXMEMPage(word pageNum)这个函数将为页返回页序号。这个函数可能已经被readXMEMPage函数调用以返回页序号。它将对readXMEMPage函数进行递归调用以读取包含所请求的最初的页序号的XMEM页。
权利要求
1.一种包括衬底的智能卡,所述衬底上具有智能卡芯片,所述智能卡的特征在于它包括所述衬底上的第二存储器器件,并且该器件被可操作地连接到所述智能卡芯片。
2.如权利要求1所述的智能卡,其中,所述第二存储器器件是闪存ROM。
3.如权利要求1或2所述的智能卡,其中,所述第二存储器器件能够存储多页数据,每页与一个唯一的序号相关联,所述序号与所述数据页分开存储,以便于当所述页被读取时,能够将与所述页一起获取的序号与所述存储的序号进行比较,以认证所述页。
4.如权利要求3所述的智能卡,其中,所述存储的序号被存储在所述智能卡芯片中。
5.如权利要求3所述的智能卡,其中,所述存储的序号的一部分被存储在所述第二存储器器件上所存储的所述多页数据中的至少一个页中,该至少一个页的序号被存储在所述智能卡芯片中。
6.如权利要求3所述的智能卡,其中,所述序号被进行异或运算以产生存储在所述智能卡EEPROM中的摘要或哈斯数据(HASH)。
7.如权利要求3至5中的任一项所述的智能卡,其中,与特定数据页关联的序号在每次修改或更新所述页时被改变。
8.如权利要求3至6中的任一项所述的智能卡,其中,每个数据页的序号被初始设定为随机生成的值。
9.如权利要求3至8中的任一项所述的智能卡,其中,每个页包含其页号的拷贝。
10.如权利要求3至9中的任一项所述的智能卡,其中,每个页中的数据是加密的。
11.如权利要求3至10中的任一项所述的智能卡,其中,用密码MAC来保护每页数据的完整性。
12.如权利要求3到11的任一项所述的智能卡,其中,每个页加密和MAC都是使用一个关于页和芯片唯一的密钥来执行的。
全文摘要
一种智能卡包括一个衬底,该衬底上形成一个智能卡芯片和第二存储器器件,如闪存ROM,该第二存储器器件被可操作地连接到智能卡芯片。第二存储器器件能够存储多页数据,每个页有一个唯一序号与之相关联,该序号与该数据页分开存储以便当该页被读取时,可以将与该页一起获取的序号与存储的序号相比较以认证该页。为了最小化智能卡上用于存储序号的存储器,存储的序号中的一些被存储在至少一个存储在第二存储器器件上的数据页中,该至少一个页的序号被存储在智能卡芯片中或者序号被异或并且结果摘要被存储在智能卡EEPROM中。与特定页相关联的序号在每次页被修改或更新时增加。每个数据页的序号初始被设为一个随机生成的数值,以便不能从页的更新总数中推导出该序号。因此,本发明的智能卡允许扩展存储器的使用而不损坏安全性。
文档编号G06K19/073GK1764920SQ200480008265
公开日2006年4月26日 申请日期2004年1月26日 优先权日2003年1月24日
发明者巴里·希姆·霍克菲尔德, 安东尼·布雷斯林 申请人:埃塞博斯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1