关于逻辑加密卡一种安全方案的设计

关于逻辑加密卡一种安全方案的设计,第1张

【摘 要】 针对逻辑加密卡的特点,从加强软件设计的角度出发,巧妙实现了一卡一密,从而给出了一种安全可靠的加密方案。
  关键词:逻辑加密卡,软件,设计

1 引 言
  目前使用的IC卡一般有两种类型,即CPU卡和逻辑加密卡。CPU卡的加密性能自不必说,然而其编程复杂,价格远远高于逻辑加密卡。如果在程序设计上对逻辑加密卡的安全性多加考虑,选择逻辑加密卡几乎是无法破译的,而且成本低,用户容易接受。下面我们以SLE4428逻辑加密卡为例设计一种安全实现方案,该IC卡在本地区经过约10万人使用,两年来未发生一起失密事故。
2 SLE4428性能描述和设计原则
  为了更好地说明设计流程,首先简要地介绍一下SLE4428的性能。
  ·SLE4428容量大小为1K字节,地址为0-1023,存储区分配图如图1所示。
  ·所有数据除密码外,在任意情况下均可被读出,密码在核对正确后可以被读出。
  ·所有数据包括密码本身在核对密码正确后可以写入或更改。
  ·所有数据都可以按字节进行写保护,写保护后数据固化,任意情况下不可更改。
  ·有一个密码出错计数器。地址是1021。初始值为8,密码核对出错一次,便减1。若计数器值为0,则整张卡的数据被锁死,只可读出,不可更改或写入且无法继续核对密码;若不为0,则只需要一次核对正确,计数器将恢复为初始值8。
  ·密码长度为2字节,地址是1022,1023。共有216种组合,在密码核对正确之前,读这两地址的结果是“00”,也无法写入和更改;在密码核对正确后可以读出密码和更改密码,密码会一直有效至卡掉电为止。
  ·地址0-7、21-26,出厂前由厂家固化,不可更改,其中地址21-26是卡的用户代码,是由制造卡的厂家向SIEMENS公司申请注册的全球唯一的用户代码。
  针对SLE4428安全性的局限性,我们采用了下面的设计原则。
  (1)首先生成密钥文件,该文件为二进制加密文件,由用户方提供的算法种子经过加密算法,生成用户卡密钥所需要的算法种子(以下简称密钥种子)和加密用户卡数据所需要的算法种子(以下简称加密种子)。
  (2)用算法种子通过加密算法以密文方式存储用户卡重要数据,使其它系统无法读出卡上内容,从而保护用户的隐私。
  (3)用户卡的改写必须经过下述 *** 作:首先,调用密钥文件中的密钥种子,其次,通过加密算法校验用户卡密钥,如果正确就可以进行改写,如果不正确,SLE4428将记数,超过8次不正确,SLE4428将自动锁死,从而避免用穷尽法破译用户卡密钥。
3 设计流程
  IC卡的设计分为发行用户新卡和改写用户卡两种情况,对这两种情况,首先都需要从二进制加密文件获取密钥种子和加密种子。该二进制加密文件由用户输入8位字符经加密算法m1生成,用户应记住该8位字符,以免加密文件丢失后可重新生成。

关于逻辑加密卡一种安全方案的设计,第2张

3.1 发行用户新卡
  发行新卡大约有如下的步骤:
  (1)从二进制加密文件中,通过算法m2读取密钥种子和加密种子。
  (2)取随机数,并与密钥种子经加密算法m3生成用户卡密码(New Pass)。
  (3)核对新卡密码,新卡密码为ffff,并修改新卡密码为用户卡密码(New Pass)。
  (4)有关数据写入IC卡,重要数据和第2条取出的随机数,经加密算法m4生成数据密文,再写入IC卡。
  (5)根据需要将不可更改的数据进行写保护,以免误 *** 作,如第2条取出的随机数密文。
  根据上述步骤,设计发行新卡的流程如下:
  (1)建立用户对象u secret,主要由解密函数、函数、取密钥种子函数等函数组成。
  (2)调用u secret中的取密钥种子函数读取密钥种子和加密种子。
  (3)取随机数,调用u secret中的加密函数生成并更新新卡密码。
  (4)随机数加密写入IC卡并固化,再写入其他数据。
  使用PB设计主程序如下:(为减少篇幅,程序只列出主要部分)
关于逻辑加密卡一种安全方案的设计,第3张
关于逻辑加密卡一种安全方案的设计,第4张
关于逻辑加密卡一种安全方案的设计,第5张
3.2 改写用户卡
  IC卡在日常使用中其实就是改写用户卡的过程,主要过程同发行新卡一样,即首先读取密钥种子和加密种子,再从用户卡中读出随机数、解密并核对密码,最后写卡。程序类似发行新卡,这里省略。
4 安全说明
  (1)SLE4428有三项安全机制:唯一代码、固化写入、用户密码。唯一代码是由制造卡的厂家向SIEMENS公司申请注册的全球唯一的用户代码。采用唯一代码作为系统所用IC卡的标识,可防止其它厂家的卡进入系统,但同时也决定了用户卡只能来源于该厂家;固化写入对于需要不断改卡的用户也不适用;只有建立安全的用户密码才是最有效的手段。
  (2)SLE4428无须密码便可读出除密码外的整张卡的数据,密码一经核对便可向任一地址写入或修改数据,因此,设计时要注意适当固化数据和将数据内容加密,以防止无意破坏数据或非法修改数据。
  (3)密码核对正确后便可读出,因此,设计程序时,要能防止破坏者采用非法中断程序运行、直接去
读取密码的方法来窃取密码。在本方案中,对加密和解密函数均写入到一个用户对象u secret中,在需要写卡前定义,写完后立即destroy掉,这样就可以防止程序跟踪破译。
  (4)总之,假如要破译该方案设计的IC卡,必须要同时做到以下几点:
  ·获得二进制加密文件的加密算法m1,才能得到密钥种子和加密种子,获得密钥种子和加密种子后,必须通过算法m2才能得到有效的密钥种子和加密种子。
  ·密文数据(包括解密用的随机数)是由加密算法m4生成的,需要解密算法m5才可获得。
  ·取出的随机数要与密钥种子经加密算法m3才可生成用户卡密码。
  ·由于随机数的不同,所以实现了一卡一密,即使窃取一张或几张用户卡的密码,也无法破译一批用户卡的密码。
  根据上述分析,该方案的安全性和可靠性已达到较高的水平。

参考文献

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/dianzi/2481431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存