我们在《浅析IC卡数据加密算法》这篇文章中,具体介绍了一种基于DES算法的三重加密模式,并且分析了其安全性。今天这篇文章我们具体讲一下该算法在医保系统中的成功应用。
医保系统IC卡中主要存储的信息有:参保人的个人信息、医保中心信息、参保人的个人账户金、统筹金、医疗记录等。使用时,参保人除持有IC卡外,还必须有医疗保险证作为身份鉴别,读写卡操作发生在挂号和结算时。卡的口令校验是在应用系统中完成的,用户和IC卡之间没有交互的校验过程。
1 设计原则
根据医保系统的特点,为切实有效地保护IC卡中的数据,保证IC卡在系统中的安全流通,设计原则如下:
(1)实行一卡一个口令。由于应用系统中使用的IC卡往往非常多。如果均用一个口令进行保护,那么破译一张卡,就可以使整个系统处于瘫痪状态,其损失不可估量。为此,应该实行一张IC卡,一个保护口令,这样可以提高IC卡系统口令保护的强度。然而真正实现一卡一口令有时是不可能的,因为IC卡中存储口令的字节通常是有限的,这就限制了口令空间的大小。当IC卡的发行数量超过这个数时,实行一卡一个口令就不可能了。
(2)实行动态口令。根据一定的条件随机动态地改变IC卡中的保护口令,可以使得应用系统的安全性得到进一步加强。比如,当IC卡的写卡次数发生改变时,修改卡的口令,这款有增加破译难度。
(3)数据加密。IC卡中的口令所提供的安全性非常有限。因此,对卡中数据进行加密存储,可以更有效地保护卡中的信息。即使攻击者突破口令保护而获取了密文信息,如果没有办法破译的话,也将毫无用处。因此,可以说对IC卡信息的保护,关键在于加密算法。加密算法的强度决定了IC卡系统的安全性。
2 安全系统的实现
根据设计原则,在实现时将重点放在对卡中信息的加密上,采用以改进的三重加密方法进行信息加密为主,其他有效安全措施为辅的安全方案,保证医疗保险IC卡系统的安全。采取的具体措施如下:
(1)将卡中保密的信息组成一个结构,用改进的三重加密算法加密,将密文存储在卡中。在读信息时,从卡中读出密文,经解密后使用;在向卡中写信息时,先校验卡口令,然后加密信息并写入。这样,在系统与卡的通信中,信息均是以密文形式传递,保证了通信的安全。在密钥的选取上,选取三个不同的密钥;换位函数T采用对密文进行32位(4字节)分组,然后循环左移一组,非常简单。
(2)在用改进三重加密算法对信息加密时,取出含有保险编号、参保日期及写卡次数的分组进行首轮DES加密的密文组合,从中取出两个字节作为该卡的口令。这样口令就会根据参保人的不同而不同,实现一卡一个口令。
(3)在执行写卡操作时,只要写卡次数发生变化,则立即修改卡的口令,实现IC卡中的口令动态变化。
(4)在口令校验前,检查卡中的错误计数值是否与错误计数初值一样,如果不一致说明有人正企图对卡进行穷举攻击。
(5)在口令校验后,执行完写操作便立即对卡下电,防止中途拦截。
(6)对应用系统进行严格的管理,严格授权,尽量避免内部安全漏洞的出现。
以上措施的实施,可以避免对卡的篡改、留用和非法复制,能有效防止对卡的穷举分析和中途拦截,即使卡的口令被破获,卡中信息被窃取,加密算法仍能保证信息的安全。
3 成功应用的实例
该文提出的加密算法安全可靠,简单易行,安全策略考虑较为周密。在大连市某区医疗保险系统中改进型了实际应用。自从2000年5月1日应用至今,系统运行相当稳定,未出现过安全问题,IC卡读写速度也非常快。
实际上,本文提出的加密模式虽然是在IC卡应用系统的背景下进行的,但是它显然也适合于其他需要数据加密的情况,并且可以推广到其他的分组加密算法中。