智能卡的差错校正

时间:2008-11-20

  人们不仅要检测出存储区中的差错,还应改正它们,于是就出现了差错校正码,如图1所示。由于用编程来计算这些编码差错的花费很大,且仅能用来纠正低差错率的编码,再用它来保护智能卡存储器就更成问题了。而智能卡中的EEPROM存储器是面向页面的,整个页面常常会由于一个差错而失效,只有能纠正成簇的差错方法才有意义。于是,就产生了新的差错校正技术。

  图1  差错校正码的基本应用原理

  简单的技术方案是多重存储数据,物理上分开存储页面并在读出数据时采用多数表决法。通常用三重存储,采用3中取2表决。这种方法使占较少内存用量的变型是存储在两个位置上,对每个位置都采用EDC校验和保护,检验两个EDC值可以检测出一个存储器差错。这样也可以识别出差错发生的存储段。没有检测出差错的存储段必定含有有效数据,它可用来恢复故障的存储段。

  当然,使用差错校正法显然需要额外的存储量,但对少量的数据而言,它仍在可接受的限度之内。主要的好处是不需要用复杂的编码量大的算法来计算数据。

  作为多重数据存储保护方案的变型,可以采用诸如肫ed Solomon算法的差错校正算法。它特别适合于成簇的差错,就像在智能卡中由于页面失效所发生的情形。用汇编语言编程时,算法要占用数百字节的代码空间,而ECC数据的大小主要取决于那些必须检测出与/或正确校正的差错概率。

  然而,关于差错校正法在智能卡中应用的几个基本注意点必须说明。乍一看,用这些方法去消除发生在EEPROM中的差错很有吸引力。然而,这个数据安全性是以大量的严重缺点为代价来换取的。首先,数据写人存储器,因为它们必须存储在多个位置,不仅占用大量的存储空间所需的时间也明显增大了。另外,校正基于页面EEPROM所发生的典型大小的成簇差错的算法是复杂的,并且还需要给出使用EDO代码的巨大存储空间。然而,基本的缺点甚至是更为严重的,即采用差错校正算法时,因为算法只能在多为某数量级的差错时才能正确工作,不能排除有可能在校正数据中产生差错。如果操作系统能自动校正了存储器中的差错,原则上并不能断定已进行了校正。

  例如,假定自动差错校正被用于电子钱包的余额,系统运营者将永远不会对发生些什么情况有把握。余额可能被正确地校正了,也存在着一定的概率使校正后的余额过高或过低。在这种情况下,必须要记住智能卡是大量生产的商品,当有故障时直接更换就可以了。

  当数据内容发生问题时,一个允许人们干涉的高水平系统必须决定要怎么做。例如,在智能卡钱包第1次出现差错时,应确信持卡人的余额是人工再存人的。如果错误一再地重复出现,因为这里存在着EEPROM已经受到了欺诈性的操纵的可能性,这是不能在卡中由差错校正码处理的,相反,必须由系统管理者干涉。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:智能卡的CRC校验和
下一篇:智能卡的数据压缩

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料