论文部分内容阅读
摘要:提出一种智能卡写保护的实现方法,该方法将一次数据写入分成两步进行,在保证正常读写功能的同时,重点讨论了如何在意外掉电的情况下完成可靠的写操作。同时利用该机制实现了事务回滚功能,为卡片应用提供了更大的灵活性。通过对已实现系统的掉电测试,分析了应用该方法后的系统性能的变化及对电力业务的影响。本文网络版地址:http://www.eepw.com.cn/article/266050.htm
关键词:cos;写保护;事务回滚
DOI: 10.3969/j.issn.1005-5517.2014.11.007
引言
随着微电子技术的发展,各种各样的智能卡开始进入人们的生活。不论是手机卡、银行卡、水卡、电卡还是社保卡、门禁卡甚至是身份证都是智能卡在不同行业的应用。由于智能卡的应用非常广泛,应用环境千差万别,因此在各种恶劣环境下保证卡片业务进行的正确性是十分重要的。
早期的智能卡由于处理速度慢、存储空间小,业务数据都直接写入存储区。但是,卡片应用直接操作存储区容易造成存储区数据混乱。而且不符合卡片操作系统(cos)分层设计的趋势。为此新一代智能卡普遍采用文件来保存数据,通过文件系统来隔离应用和底层读写存储区的操作。
智能卡cos系统根据其功能可以划分为四个层次:底层固件、存储管理系统、文件系统、应用系统如表1所示。其中应用系统又可以细分为基本指令系统和专有系统,基本指令是指不同行业应用都会用到的apdu指令例如文件选择等符合7816规范的指令。专有指令则是不同行业根据自身业务需要而设计的指令。

1 智能卡写保护的策略分析
处理卡片的意外掉电事件是写保护机制的用途之一。考虑到卡片的使用者可能对卡片的操作规范并不了解,一个用户使用电卡给电表充值,在等待两秒后将电卡拔出,如果卡片在拔出的瞬间正在进行存储区的写操作,在意外掉电的情况下业务数据可能一半写成功而其余数据仍然是旧数据,导致业务数据的混乱。在系统重新上电后,利用写保护机制可以将数据恢复到文件中,保证业务数据的正确性。
另一种情况称为事务回滚,表示一项应用进行了一半,如果客户希望取消该应用,则卡片操作系统应该提供一种机制消除该业务已经完成部分的影响。例如,一项业务由三个步骤组成,用户在完成前两步后不愿意进行第三步的操作决定放弃该业务,此时系统需要消除前两步完成后产生的影响。写保护满足了这种应用需求。
2 写保护的设计
写保护主要涉及存储区的镜像读写技术、镜像区的空间管理、镜像区初始化以及数据恢复。其中对存储区的镜像读写是写保护的核心功能。
存储区的镜像读写是指在写存储区时不将数据直接写入,而是将数据先写入一个镜像区,当写入完成后将镜像区数据导入实际存储区地址。当读取数据时,目标数据可能在实际地址,也可能在镜像区尚未提交,此时读操作应该对不同情况分别判定。
写操作的参数主要有源地址、目的地址和长度。每次写入操作需要在镜像区申请空间来保存这些数据,同时,为了便于检索镜像区数据需要对已经分配的空间进行管理。因此设计了写保护的管理链表对这些关键数据进行管理,如表2所示。
表中保护标记用来标识镜像区是否有数据需要导入存储区。可用地址和长度用来进行镜像区的空间分配。在数据项中,目标地址是数据将要写入存储区的地址,而源地址是数据在镜像区中的地址。
加入镜像读写机制后,对存储区的读写流程如下:
卡片的一般写入流程如图1所示,图2为业务向文件中写重要数据时的写入流程。
业务应用中会有一些文件的写操作,其中有一些数据比较重要,需要确保数据写入的安全可靠。此时应用应该采用以下操作:
(1)设置镜像写保护标志位,此标志为全局变量。
(2)业务数据的写入,这些业务可能分若干次写入不同的文件。
(3)完成镜像保护。该操作由三个过程组成,首先清除写保护标志位,然后设置镜像数据恢复标志,最后提交镜像区数据将数据写入实际物理地址并清除镜像数据恢复标志。
应用在写操作1、写操作2和写操作3过程中随时可以放弃此次写操作,已经完成的写操作不会对系统产生任何影响。这种写操作的处理方法为系统实现事务回滚提供了基础。
卡片在上电后会检查镜像数据恢复标志,决定是否回写镜像区数据。
现分析卡片断电对系统的影响。
假设断电发生在写操作1和写操作2之间,重新上电检查镜像数据恢复标志后,没有数据需要恢复,系统对镜像区初始化后正常工作。虽然数据写入失败但是保证了业务数据的不会混乱。

如果断电发生在数据提交阶段,此时镜像数据恢复标志已经置位,重新上电后系统会重新提交,成功后清除标志并初始化镜像区。这样保证数据在断电情况下写入成功。
以上描述了镜像写及掉电后数据恢复的过程。考虑这种情况,在业务进行中,如果数据写了两次,还没有从镜像区提交到实际地址区,此时如果应用需要读取文件内容,该内容如果恰好在镜像区尚未提交,直接从对应物理地址读数则会产生错误。所以镜像机制还需要提供镜像读功能。
对于镜像读,根据目标数据的地址在数据读取分三种情况处理:
(1)数据全部都在实际地址,直接从目标地址读取数据。
(2)数据全部在镜像区,在镜像区读取数据。
(3)数据部分在镜像区,部分在实际地址。分别在不同位置读取数据。 为了分辨数据所处位置,需要遍历表2中所定义的写保护管理表。
以上讨论了镜像读写的实现机制。下面说明加入该机制对系统性能的影响。
3 镜像读写的应用效果

作为保证智能卡数据安全的重要手段,镜像读写机制在某款电力卡中得到了应用。为了测试镜像读写机制的有效性,分别对卡片进行掉电测试。下面简易描述测试方法。
应用晶体管控制对读卡器的供电,在业务进行的过程中对读卡器断电。第一次在Δt时刻对卡断电,系统上电后业务重新进行第二次断电发生在2Δt时刻。这样断电时刻不断递增,第n次断电发生在业务进行到nΔt时刻,这样,当n足够大、Δt足够小时可以认为断电均匀地发生在业务进行的任意时刻。如果任意时刻的掉电都没有影响业务的进行,即可认为卡掉电测试通过。
写记录文件掉电测试次数:超过16176次数据正常。写透明文件掉电测试次数:超过27961次数据正常。
在不加镜像机制的卡片中,掉电测试中数据混乱的情况发生了千次左右。
由以上结果可以看出镜像读写是可以保证数据安全的。
然而由于加入了额外的数据读写,会对系统的执行速度产生一些影响。下面通过更新透明文件来验证镜像机制的时间特性。
如图3所示,从指令发送完毕到卡片返回状态字,无镜像写透明文件耗时18.64ms,而在图4中,镜像写文件耗时72.06ms。可以看到加入镜像后写文件的速度明显变慢,这是由于镜像机制中增加了写数据、写保护表、初始化镜像区三次对存储区的操作过程。
虽然加入镜像机制后对指令的执行速度有影响,但是系统运行的速度仍然令人满意,可以满足电力卡的各项业务要求。
4 结论
本次镜像机制的实现为智能卡异常工况下的数据安全提供了一种解决方案。首先保证了系统在意外掉电的情况下数据的正确性,其次在此基础上应用可以实现事务回滚,满足了不同应用的需求。虽然付出指令执行时间变长的代价,但系统的时间性能仍然令人满意。
下一步工作可以围绕优化镜像区的遍历方法展开,让系统时间性能得到提升。
参考文献:
[1]王爱英. 智能卡技术[M].大学出版社,2009。
[2]尹伟,代平等.基于Flash智能卡文件系统的设计[J].微计算机信息.2009(1-2):99
[3]徐平江,娜等.基于链表方式的智能卡文件系统设计[J].微计算机信息.2011(1-2)2-55
[4]朱兆优,王耀南.非接触IC卡应用系统设计.计算机自动测量与控制,2001(5)
[5]张红霞,凌兰兰. 智能卡技术及其应用[N] .洛阳大学学报,2002(2)
[6]刘玉珍,涂航,张焕国,等.实用智能卡操作系统的设计与实现[N].武汉大学学报(自然科学版),2000(3)
[7]黄健.智能卡COS的研究与设计[N] .广东工业大学,2008
关键词:cos;写保护;事务回滚
DOI: 10.3969/j.issn.1005-5517.2014.11.007
引言
随着微电子技术的发展,各种各样的智能卡开始进入人们的生活。不论是手机卡、银行卡、水卡、电卡还是社保卡、门禁卡甚至是身份证都是智能卡在不同行业的应用。由于智能卡的应用非常广泛,应用环境千差万别,因此在各种恶劣环境下保证卡片业务进行的正确性是十分重要的。
早期的智能卡由于处理速度慢、存储空间小,业务数据都直接写入存储区。但是,卡片应用直接操作存储区容易造成存储区数据混乱。而且不符合卡片操作系统(cos)分层设计的趋势。为此新一代智能卡普遍采用文件来保存数据,通过文件系统来隔离应用和底层读写存储区的操作。
智能卡cos系统根据其功能可以划分为四个层次:底层固件、存储管理系统、文件系统、应用系统如表1所示。其中应用系统又可以细分为基本指令系统和专有系统,基本指令是指不同行业应用都会用到的apdu指令例如文件选择等符合7816规范的指令。专有指令则是不同行业根据自身业务需要而设计的指令。

1 智能卡写保护的策略分析
处理卡片的意外掉电事件是写保护机制的用途之一。考虑到卡片的使用者可能对卡片的操作规范并不了解,一个用户使用电卡给电表充值,在等待两秒后将电卡拔出,如果卡片在拔出的瞬间正在进行存储区的写操作,在意外掉电的情况下业务数据可能一半写成功而其余数据仍然是旧数据,导致业务数据的混乱。在系统重新上电后,利用写保护机制可以将数据恢复到文件中,保证业务数据的正确性。
另一种情况称为事务回滚,表示一项应用进行了一半,如果客户希望取消该应用,则卡片操作系统应该提供一种机制消除该业务已经完成部分的影响。例如,一项业务由三个步骤组成,用户在完成前两步后不愿意进行第三步的操作决定放弃该业务,此时系统需要消除前两步完成后产生的影响。写保护满足了这种应用需求。
2 写保护的设计
写保护主要涉及存储区的镜像读写技术、镜像区的空间管理、镜像区初始化以及数据恢复。其中对存储区的镜像读写是写保护的核心功能。
存储区的镜像读写是指在写存储区时不将数据直接写入,而是将数据先写入一个镜像区,当写入完成后将镜像区数据导入实际存储区地址。当读取数据时,目标数据可能在实际地址,也可能在镜像区尚未提交,此时读操作应该对不同情况分别判定。
写操作的参数主要有源地址、目的地址和长度。每次写入操作需要在镜像区申请空间来保存这些数据,同时,为了便于检索镜像区数据需要对已经分配的空间进行管理。因此设计了写保护的管理链表对这些关键数据进行管理,如表2所示。
表中保护标记用来标识镜像区是否有数据需要导入存储区。可用地址和长度用来进行镜像区的空间分配。在数据项中,目标地址是数据将要写入存储区的地址,而源地址是数据在镜像区中的地址。
加入镜像读写机制后,对存储区的读写流程如下:
卡片的一般写入流程如图1所示,图2为业务向文件中写重要数据时的写入流程。
业务应用中会有一些文件的写操作,其中有一些数据比较重要,需要确保数据写入的安全可靠。此时应用应该采用以下操作:
(1)设置镜像写保护标志位,此标志为全局变量。
(2)业务数据的写入,这些业务可能分若干次写入不同的文件。
(3)完成镜像保护。该操作由三个过程组成,首先清除写保护标志位,然后设置镜像数据恢复标志,最后提交镜像区数据将数据写入实际物理地址并清除镜像数据恢复标志。
应用在写操作1、写操作2和写操作3过程中随时可以放弃此次写操作,已经完成的写操作不会对系统产生任何影响。这种写操作的处理方法为系统实现事务回滚提供了基础。
卡片在上电后会检查镜像数据恢复标志,决定是否回写镜像区数据。
现分析卡片断电对系统的影响。
假设断电发生在写操作1和写操作2之间,重新上电检查镜像数据恢复标志后,没有数据需要恢复,系统对镜像区初始化后正常工作。虽然数据写入失败但是保证了业务数据的不会混乱。

如果断电发生在数据提交阶段,此时镜像数据恢复标志已经置位,重新上电后系统会重新提交,成功后清除标志并初始化镜像区。这样保证数据在断电情况下写入成功。
以上描述了镜像写及掉电后数据恢复的过程。考虑这种情况,在业务进行中,如果数据写了两次,还没有从镜像区提交到实际地址区,此时如果应用需要读取文件内容,该内容如果恰好在镜像区尚未提交,直接从对应物理地址读数则会产生错误。所以镜像机制还需要提供镜像读功能。
对于镜像读,根据目标数据的地址在数据读取分三种情况处理:
(1)数据全部都在实际地址,直接从目标地址读取数据。
(2)数据全部在镜像区,在镜像区读取数据。
(3)数据部分在镜像区,部分在实际地址。分别在不同位置读取数据。 为了分辨数据所处位置,需要遍历表2中所定义的写保护管理表。
以上讨论了镜像读写的实现机制。下面说明加入该机制对系统性能的影响。
3 镜像读写的应用效果

作为保证智能卡数据安全的重要手段,镜像读写机制在某款电力卡中得到了应用。为了测试镜像读写机制的有效性,分别对卡片进行掉电测试。下面简易描述测试方法。
应用晶体管控制对读卡器的供电,在业务进行的过程中对读卡器断电。第一次在Δt时刻对卡断电,系统上电后业务重新进行第二次断电发生在2Δt时刻。这样断电时刻不断递增,第n次断电发生在业务进行到nΔt时刻,这样,当n足够大、Δt足够小时可以认为断电均匀地发生在业务进行的任意时刻。如果任意时刻的掉电都没有影响业务的进行,即可认为卡掉电测试通过。
写记录文件掉电测试次数:超过16176次数据正常。写透明文件掉电测试次数:超过27961次数据正常。
在不加镜像机制的卡片中,掉电测试中数据混乱的情况发生了千次左右。
由以上结果可以看出镜像读写是可以保证数据安全的。
然而由于加入了额外的数据读写,会对系统的执行速度产生一些影响。下面通过更新透明文件来验证镜像机制的时间特性。
如图3所示,从指令发送完毕到卡片返回状态字,无镜像写透明文件耗时18.64ms,而在图4中,镜像写文件耗时72.06ms。可以看到加入镜像后写文件的速度明显变慢,这是由于镜像机制中增加了写数据、写保护表、初始化镜像区三次对存储区的操作过程。
虽然加入镜像机制后对指令的执行速度有影响,但是系统运行的速度仍然令人满意,可以满足电力卡的各项业务要求。
4 结论
本次镜像机制的实现为智能卡异常工况下的数据安全提供了一种解决方案。首先保证了系统在意外掉电的情况下数据的正确性,其次在此基础上应用可以实现事务回滚,满足了不同应用的需求。虽然付出指令执行时间变长的代价,但系统的时间性能仍然令人满意。
下一步工作可以围绕优化镜像区的遍历方法展开,让系统时间性能得到提升。
参考文献:
[1]王爱英. 智能卡技术[M].大学出版社,2009。
[2]尹伟,代平等.基于Flash智能卡文件系统的设计[J].微计算机信息.2009(1-2):99
[3]徐平江,娜等.基于链表方式的智能卡文件系统设计[J].微计算机信息.2011(1-2)2-55
[4]朱兆优,王耀南.非接触IC卡应用系统设计.计算机自动测量与控制,2001(5)
[5]张红霞,凌兰兰. 智能卡技术及其应用[N] .洛阳大学学报,2002(2)
[6]刘玉珍,涂航,张焕国,等.实用智能卡操作系统的设计与实现[N].武汉大学学报(自然科学版),2000(3)
[7]黄健.智能卡COS的研究与设计[N] .广东工业大学,2008