智能卡系统设计之断电保护和数据恢复

1.数据备份的原因

    智能卡由外部供电,如果在写数据的过程中突然掉电,导致卡内的数据丢失,就有可能造成COS崩溃或者用户数据写入不正确。因此COS必须提供掉电保护机制保证卡内数据的读写安全。

    数据备份就是COS的掉电保护机制,在写入数据时,将整个页面备份后再擦除写入,防止在改写过程中出现突然掉电,导致数据丢失。

2.数据备份的作用

     备份机制设计的目的是采取一种措施,使COS在进行写操作时将其作为一个原子操作来完成,不因突然掉电或者恶意拔出而丢失数据,保证卡内数据的一致性和安全性。掉电保护的软件措施主要包括两部分:

一是设计系统的数据备份算法,在系统突然断电之后,能有效地保存系统在数据更新前的正确运行状态;

二是在供电恢复之后根据备份的运行状态和数据及时恢复,避免整个COS因关键数据丢失而崩溃。

3.数据备份区的位置

    为了保证数据备份区的安全性,数据备份区一般选择通过文件系统不能访问到的位置。

4.数据备份的时机

    数据备份要在写操作之前进行,这样无论掉电发生在什么位置,备份区数据或者将要写入的地址区总有一个位置的数据是正确的。

5.备份的数据

      有两种备份数据的方式:

      一是旧数据备份方式,优点是当发生掉电时,系统的数据丢失,可以通过备份将系统恢复到没有更新以前的状态;

      二是新数据备份方式,因为备份的是即将写入的新数据,所以当写数据发生掉电导致系统的数据丢失,不可能将系统的状态恢复到掉电之前的状态,只能是更新数据之后的状态。

6.备份的关键

       备份的关键是保证备份操作的原子性

7.备份的种类

    备份有两种机制,一种是页备份,另一种是日志备份(也有其他称呼,如字节备份),这是两种完全不同的机制

8.备份与恢复的原理

    FLASH具有写入前必须先整块擦除的物理特性,所以在写之前必须对目标地址和备份区进行擦除。

   在改写文件的数据时会遇到以下两种情况:

   一是需要写入的数据刚好在一个擦除块(假设大小为512B)中,则只需备份一块数据;

   二是需要写入的数据刚好存储在两个擦除块中,则需要同时备份两块的数据,然后逐块地进行擦写写入。无论是备份一块或者两块都作为一个原子操作。更新不成功的时候都统一进行旧数据的恢复操作。

8.1页备份机制

    当写操作发生在一页之内时,页备份机制就可以满足掉电安全保护的需求。

这里使用备份新数据的方式,具体过程如下:

        1)将更新数据段的Flash页面的所有数据备份到备份区。

        2)数据备份完成后,将备份标志位置为有效,并将有效的标志位写到保存到标志区。

        3)数据开始更新,依次将数据写入目标地址。

        4)备份标志复位,表示改写成功,并将复位的标志写入到标志区。

安全写恢复流程:

    查看Flash备份标志位是否有效,如果无效表示不需要进行数据安全恢复操作,结束流程;如果有效,表示要进行数据安全写的恢复操作,步骤如下:

       1)读备份区的数据,根据备份的地址,对数据进行恢复操作;

       2)所有的数据恢复成功之后,将备份标志位复位,将复位的标志写入标志区。

8.2 日志备份机制

    智能卡中一次完整的事物流程里,有时候对多个页面的数据进行改写,必须要保证这个过程是原子性的,即所有数据要么被全部更新,要么一点也没有被更新。当涉及到两个页面时,上面所述的掉电保护机制不能保证原子性,运行的事物在非正常状态下终止,可能会导致数据出现第三种状态,即部分数据被更新,而另一部分没有被更新。

    日志备份机制可以保证数据的一致性、完整性。在一个多次执行改写操作事物中,对需要处理数据的数据段在日志备份区以日志记录的方式对新数据进行数据备份,记录此次事物下的所有完成的操作,存储在智能卡的备份区。

    当系统不正常断电重启时,系统将进行自检,如若发现日志备份区有有效数据,则对非正常终止的事物进行回滚,自动恢复到断电前最后一个稳定的状态。这里采用的是以记录为单位的日志文件,使用旧数据回写的方式来恢复数据。

    在一个事物的执行过程中,记录每个事物的开始标志、结束标志,同一事物的每次更新操作均作为一个日志记录,具体执行流程如下:

      1)事物的标志位,置为有效。

      2)把要改写的数据以TLV格式备份到日志区中(T表示此次事物中第几次改写Flash;T表示要改写数据的长度与旧数据起始地址的长度和;V表示旧数据起始地址和旧数据)。

       3)数据备份完成后,将备份标志位置为有效,并将有效的标志位和数据改写地址保存到指定的位置。

       4)数据开始更新,依次将数据写入目标地址。

       5)如果事物未完成,还有其他写操作,那么转向步骤2)继续执行,同一事物的备份数据应该有序保存,以便数据的恢复。

       6)事物标志恢复,表示事物执行成功,并将复位的标志写入到Flash指定的位置。

数据恢复流程:

    系统进行自检,查看事物标志位是否有效,如果无效则不需进行数据一致性写恢复操作,结束流程;如有效则进行写恢复操作,步骤如下:

       1)读取最新事物的日志数据,根据备份的有效标志位,对数据进行有序的恢复操作。

      2)所有的数据恢复成功之后,将事物标志位复位,将复位的标志位写入Flash指定的位置。在事物的一次处理过程中,可能涉及到多次的擦写,这是非常耗时的,也很不安全,采用了日志备份,把事物的处理过程以日志的方式记录下来,不需要频繁擦写;日志区是一个大的缓冲区,不过它也是容量有限制的,当达到一定容量或关键值时,就需要对日志备份区进行清理,这样减少些操作的时间,提高了智能卡的整体性能。

9.数据恢复的时机

    一般而言,备份数据的恢复是在上电之后立即进行的。

    但是如果使用某种芯片时,备份数据的恢复时间过长,读卡器会认为连接已经断掉,这时会主动断开与卡片的连接,会导致数据恢复之后的第一条指令不能执行成功。这时,就需要把备份数据的恢复操作移到第一条指令接收完毕之后。

10.其他考量因素

10.1均衡磨损

    因为FLASH的读写次数有限,而每次进行数据写时,不论写的位置是哪里,都要对备份区写。也就是说,备份区的写次数远远大于其他位置。所以备份区的写次数至关重要,决定着卡片的寿命,是一个十分重要的考量因素。我们要将备份区的写操作次数将至最低。

10.2性能

    性能也是智能卡的一个重要的指标,而影响性能的主要因素就是FLASH的写操作。故需要想法减少备份区写操作的次数。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值