背景技术
在现有社会中,人们对信息载体的安全性和可靠性等方面提出了很高要求。而IC卡以其严密的数据安全性、广泛的应用灵活性及强大的功能扩展性,为现代信息的处理和传播提供一种便捷的手段。
本申请人在2003年10月15日提出申请号为200310100411.X的专利申请文件。在该申请文件中,公开了一种优化存储器逻辑分区结构的非CPU集成电路卡。请参阅图1,其为上述专利申请的集成电路卡的结构示意图。由地址计数器、控制器、I/O接口和存储器组成。CLK、RST和IO分别为外部时钟输入信号、复位信号和输入输出信号。
请参阅图2,其为200310100411.X专利的存储器逻辑分区的一种示意图。它共划分为若干逻辑分区:制造商代码、发行数据区、存储器访问权限控制区以及用户数据区。制造商代码、发行数据区和存储器访问权限控制区的访问权限都固定为只读,其中,发行商可在存储器访问权限控制区中写入对各用户数据区的访问权限控制字,用户数据区的访问权限由各自独立的一位或两位的控制字来确定,可分别设定为不可访问、只读、可读写、可读可擦写等访问权限中的一种。
请参阅图3,其为200310100411.X专利申请文件中公开的控制器结构示意图。它包括地址译码器31、逻辑分区选择器32、存储器访问权限控制器33、存储器访问权限寄存器34以及存储器访问类型判决器35。
地址译码器31,对ADDR信号译码,产生存储器的行地址和列地址,同时将译码结果信号送往逻辑分区选择器32;
逻辑分区选择器32:根据译码结构信号,判断其所属的逻辑分区,使地址所指向的逻辑分区的指示信号有效,并送到存储器访问权限控制器33;
存储器访问类型判决器35:根据CLK和RST的不同组合形式,产生不同的操作指示信号,输出到存储器访问权限控制器33;
存储器访问权限寄存器34:用于读取存储器访问权限控制区的控制字并将其锁存,即该寄存器继承了存储器访问权限控制区的数值,寄存器中的某一位或某两位规定了对应逻辑分区的访问权限;
存储器访问权限控制器33:对分区指示信号、操作指示信号以及存储器访问权限寄存器的值进行逻辑运算,控制相应的写使能信号WE、擦使能信号ER及读使能信号RE的产生。
控制器根据分区指示信号、操作指示信号以及寄存器中相应控制位的值进行逻辑运算,控制对各用户数据区的操作使能信号的产生。上述发明通过将用户数据区划分为多个,并可以进行访问权限的设定,从而获得不同访问权限的用户数据区。
但是,上述优化存储器逻辑分区结构的非CPU集成电路卡还是存在改进之处。以电话IC卡为例,当运营商在卡的发卡和使用过程中,若允许随意修改控制字,进而修改用户数据区的访问权限,卡的安全性将没有保证,容易发生卡在使用过程的失效。若不允许修改控制字,则每当需要修改用户数据区访问权限时,就需要重新进行芯片设计和芯片制造,不仅增加了运营商的成本,而且也影响业务的迅速推出。
发明内容
本发明的目的在于提供一种对存储器逻辑分区访问权限进行控制的方法及IC卡,以解决现有技术中当运营商在卡的发卡和使用过程中,若允许直接修改用户数据区的访问权限,则无法保证卡的安全性,若不允许修改用户数据区的访问权限,则每次需要修改用户数据区的访问权限时,则必需重新进行芯片设计和芯片制造,不仅增加了运营商的成本,而且也影响业务的迅速推出的技术问题。
为解决上述问题,本发明公开了一种对存储器逻辑分区访问权限进行控制的方法,包括:(1)在存储器中设置存储器访问权限控制区,在其中设置各逻辑分区的访问权限;(2)根据存储器访问权限控制区中的值,对芯片当前工作状态的判断,完成对各个逻辑分区的访问权限控制;(3)当需要修改逻辑分区的访问权限时,在密码校验通过后,可以改写存储器访问权限控制区中的值,从而改变各个逻辑分区的访问权限;(4)将逻辑分区的用户数据区中其中一个区设置为存储密码的密码区。
步骤(3)中所述密码校验具体为:a1:在外部输入信号作用下,地址计数器产生指向密码区的操作地址;a2:在密码存放地址逐位输入密码,控制器将输入的密码与密码区存储的密码进行比较,只有输入密码与密码区存储的密码完全相同时密码校验才通过。
步骤(3)的a1和a2之间还包括:判断是否达到预先设定的密码比较触发条件,若是,则进行步骤a2,否则退出。步骤(3)中改写存储器访问权限控制区中的值具体为:b1:在外部输入信号作用下,地址计数器产生指向存储器访问权限控制区的地址信号ADDR;b2:译码器对地址信号ADDR进行译码;b3:依据译码后产生的地址选择存储器访问权限控制区;b4:利用外部输入信号选择的操作类型对存储器访问权限控制区中的值进行读写擦操作;b5:根据外部输入信息修改存储器访问权限控制区对应的值。
所述密码区可以作为数据区,进行读写擦操作,通过该区对应的控制位的值设置所述区作为数据区还是作为密码区。并且,设置的密码校验的操作地址与密码区相邻的数据区的地址不连续,它们之间存在地址跳跃。
步骤(2)具体为:
c1:在外部输入信号作用下,地址计数器产生地址信号ADDR;
c2:译码器对地址信号ADDR进行译码;
c3:依据译码后产生的地址选择访问的逻辑分区;
c4:根据外部输入信号的组合类型,判断操作类型;
c5:根据存储器访问权限控制区的设定值,确定是否能对选择的逻辑分区进行读写擦操作。
一种IC卡,具有对存储器逻辑分区访问权限进行控制功能,包括地址计数器、划分为多个逻辑分区的存储器、I/O接口及控制器,所述存储器的逻辑分区中包含一个可写入访问权限控制字的存储器访问权限控制区以及若干由所述控制字的不同控制位分别确定访问权限的用户数据区,
所述用户数据区中包含一个密码区;
所述控制器,用于根据存储器访问权限控制区中的控制位的值,控制器对芯片当前工作状态的判断,完成对各个逻辑分区的访问权限控制,以及当需要修改逻辑分区的访问权限时,在密码校验通过后,可以修改各个控制位的值,从而改变各个逻辑分区的访问权限。
所述控制器包括地址译码器、逻辑分区选择器、存储器访问权限控制器、存储器访问权限寄存器、存储器访问类型判决器,其中存储器访问权限控制器用于对分区指示信号、操作指示信号以及存储器访问权限寄存器的值进行逻辑运算,控制相应的写使能信号、擦使能信号及读使能信号的产生:若逻辑分区禁止所述访问操作,则不产生相应的使能信号,否则产生相应的使能信号,在密码校验过程中读使能信号无效,密码区中的密码只能用于内部比较,若输入密码与其相同则可以对逻辑分区访问权限控制区的值进行改写,从而改变各个逻辑分区的访问权限。IC卡还包括地址变换器,地址变换器通过控制器连接地址计数器,在控制器的指示下对地址计数器产生的地址进行跳跃,并将跳跃后的地址发送至地址译码器。
与现有技术相比,本发明具有以下优点:
用于控制每个区的控制位都存放在存储器访问权限控制区,它们在通常情况下只能读而不能擦写,只有通过密码校验后才能对它们的值进行擦写修改,以此来改变每个控制位对应用户数据区的读写擦状态,由此增加了卡的安全性,而且也为基于账号IC卡的增值业务的升级和扩展提供了高效、灵活的硬件平台。
考虑到卡的升级和扩展等其它因素,申请人还对密码区做了更为灵活的设定:所述密码区还可以作为数据区,当它作为数据区时,可以和其他数据区一样对其能够进行读写擦操作。
并且,设置的密码校验的操作地址与密码区相邻的数据区的地址不连续,它们之间存在地址跳跃,以此提高卡的安全性。
具体实施方式
以下结合附图,具体说明本发明。
存储器结构含有ROM、PROM和EEPROM三种不同状态。ROM用于存放制造商代码。PROM用于存放发行数据。EEPROM在控制位FG=0时,用于存储用户密码和用户数据。在FG=1时,存储器分为若干区,每一个区由一个控制位来控制该区的读写擦。其中一个区设置为密码区,其操作地址与其相邻的数据区地址不连续,它们之间存在一个跳跃,以便于密码的安全。FG和用于控制每个区的控制位都存放在存储器访问权限控制区,他们在通常情况下只能读而不能擦写,只有通过密码校验后才能对它们的值进行擦写修改,以此来改变每个控制位对应用户数据区的读写擦状态。
请参阅图4,其为本发明提供的一种对存储器逻辑分区访问权限进行控制的方法的流程图,它包括:
S110:在存储器中设置存储器访问权限控制区,在其中设置各逻辑分区的访问权限;
S120:根据存储器访问权限控制区中的值,对芯片当前工作状态的判断,完成对各个逻辑分区的访问权限控制;
S130:当需要修改逻辑分区的访问权限时,在密码校验通过后,可以改写存储器访问权限控制区中的值,从而改变各个逻辑分区的访问权限。
本发明可以将用户数据区中其中一个区设置为密码区,并且为了提高安全系数,密码校验的操作地址与密码区相邻的数据区的地址不连续,它们之间存在地址跳跃。
在存储器访问权限控制区中设置有对应各逻辑分区访问权限的值(如前面所述的控制位);根据存储器访问权限控制区中的值,控制器对芯片当前工作状态进行判断,进而完成对各个逻辑分区的访问权限控制。当需要修改逻辑分区的访问权限时,在密码校验通过后,可以对逻辑分区的访问权限的值进行改写,从而改变各个逻辑分区的访问权限。
经过步骤S130修改逻辑分区的值后,控制器根据存储器访问权限控制区中的新的值,进行后续的各个逻辑分区的访问权限控制。控制器可以将用户输入的密码和密码区的密码进行校验,若相同,则允许修改各个逻辑分区的访问权限,不仅包括可以修改数据区的控制值,而且还修改密码区的控制值:根据具体需要将其改为数据区。
本发明所说的值(控制值)是指控制逻辑分区访问权限的控制单元,所述控制单元不仅仅是指严格意义上“位”的概念:它可以由一“位”来表示一逻辑分区的访问权限,也可以由若干“位”或者是一个字甚至是更长的数据单元来表示一逻辑分区的访问权限,而且控制单元可以是控制器能识别的二进制码,而且也可以是控制器能识别的其它命令编码,只要控制器能根据该值能够识别对应逻辑分区的访问权限即可。但是,为了说明方便,本发明在后续的实施例中主要是用一“位”来控制一逻辑分区的访问权限。
步骤S120可以通过下述步骤完成:
b1:在外部输入信号作用下,地址计数器产生地址信号ADDR;
b2:译码器对地址信号ADDR进行译码;
b3:依据译码后产生的地址选择访问的逻辑分区;
b4:根据外部输入信号的组合类型,判断操作类型;
b5:根据存储器访问权限控制区的设定值,确定是否能对选择的逻辑分区进行读写擦操作。如果允许对所选逻辑分区进行访问,则产生相应的写擦使能信号或芯片读出允许信号,否则对存储器禁止操作,则存储器访问权限控制器进行屏蔽,对逻辑分区不进行读写擦操作。
步骤S130可以通过以下步骤完成:
a1:在外部输入信号作用下,地址计数器产生指向密码区的操作地址;
a2:在密码存放地址逐位输入密码,控制器将输入的密码与密码区存储的密码进行比较,只有输入密码与密码区存储的密码完全相同时密码校验才通过。
并且,为了提高安全系数,还可以预先设定密码比较触发条件,在每次输入密码之前,判断是否达到预先设定的密码比较触发条件,若是,则进行步骤a2,否则退出。密码比较触发条件可以根据具体情况来设定。比如:在密码区的错误计数器中寻找一位为‘1’的位,并在该位执行写操作将其有效写成‘0’,则芯片内部才启动密码比较操作。并且,如果该错误计数器全为‘0’,则密码校验机制将被禁止。
基于上述公开的流程,本发明提供了一种IC卡,具有对存储器逻辑分区访问权限进行控制功能,包括地址计数器、划分为多个逻辑分区的存储器、I/O接口及控制器,所述存储器的逻辑分区中包含一个可写入访问权限控制字的存储器访问权限控制区以及若干由所述控制字的不同控制位分别确定访问权限的用户数据区,用户数据区中包含一个密码区;控制器,用于根据存储器访问权限控制区中的控制位的值,控制器对芯片当前工作状态的判断,完成对各个逻辑分区的访问权限控制,以及当需要修改逻辑分区的访问权限时,在密码校验通过后,可以修改各个控制位的值,从而改变各个逻辑分区的访问权限。
所述控制器包括地址译码器、逻辑分区选择器、存储器访问权限控制器、存储器访问权限寄存器、存储器访问类型判决器,其中存储器访问权限控制器用于对分区指示信号、操作指示信号以及存储器访问权限寄存器的值进行逻辑运算,控制相应的写使能信号、擦使能信号及读使能信号的产生:若逻辑分区禁止所述访问操作,则不产生相应的使能信号,否则产生相应的使能信号,在密码校验过程中读使能信号无效,密码区中的密码只能用于内部比较,若输入密码与其相同则可以对逻辑分区的访问权限进行改写,从而改变各个逻辑分区的访问权限。
对逻辑分区的访问权限进行调整后,可以满足不同应用对存储区大小及访问权限的需求。而不会由于应用不同需要重新进行芯片设计和芯片制造,由此节省了开发时间与成本,进而为基于账号IC卡的增值业务的升级和扩展提供了高效、灵活的硬件平台。
以下以一个实施例来说明本发明。
请参阅图5,将用户数据区划分为五个分区的示意图。用户数据区分别划分为数据区1、数据区2、数据区3、数据区4和数据区5。当数据区5作为数据区使用时的情况的描述。
请参阅图6,其为采用本发明的IC卡芯片的电路框图。该芯片由地址计数器11、控制器12、I/O接口13和存储器14组成。其输入输出管脚有5个:RST、CLK、IO、电源VCC和地GND。其中,RST、CLK和IO分别为外部复位信号、外部时钟输入信号和数据输入输出信号。电源VCC和地GND在图中未标出。地址计数器11在CLK和RST信号作用下产生地址信号ADDR。控制器根据外部输入信号、ADDR信号和存储器各逻辑分区的访问权限,控制到存储器的地址信号以及写使能信号WE、擦使能信号ER以及到I/O接口的读使能信号RE的产生。I/O接口在RE信号有效时将存储数据输出到外部端口,或者从外部输入数据用于密码的比较。
图8为本发明控制器的结构框图,它包括地址译码器31、存储器逻辑分区选择器32、存储器访问权限控制器33、存储器访问权限寄存器34、存储器访问类型判决器35。
地址译码器31,用于对地址计数器的结果即ADDR信号译码,产生存储器的字线信号和位线信号,同时将译码结果信号送往逻辑分区选择器32。
逻辑分区选择器32,用于根据译码结果信号,判断其所属的逻辑分区,使地址所指向的逻辑分区的指示信号有效,并送到存储器访问权限控制器33。
存储器访问类型判决器35,用于根据CLK和RST的不同组合形式,产生不同的操作指示信号,如读指示信号RE1、写指示信号WE1或擦指示信号ER1,输出到存储器访问权限控制器33。
存储器访问权限寄存器34,用于读取存储器访问权限控制区的控制字并将其锁存,即该寄存器继承了存储器访问权限控制区的数值,寄存器中的某一位规定了所对应逻辑分区的访问权限。
存储器访问权限控制器33,用于对分区指示信号、操作指示信号以及存储器访问权限寄存器的值进行逻辑运算,控制相应的写使能信号WE、擦使能信号ER及读使能信号RE的产生。其中,WE和ER信号输出到存储器,对存储器进行写擦操作,RE信号输出到I/O接口,控制数据输入输出电路对存储器数据的输出。对于合法的访问操作产生相应的使能信号(ER和WE信号直接用于数据的擦除和写入);如果该逻辑分区禁止这种访问操作,则不能产生该操作的使能信号,从而实现对外部设备访问存储器的控制。对于这一部分的描述详见下文存储器访问权限控制器产生控制信号WE或ER的逻辑示意图及其说明。
逻辑分区选择器32,用于根据地址译码的结果,判断地址处于哪个逻辑分区,使该逻辑分区指示信号(FQ1~FQ5)有效。数据区1至数据区5指示信号送往存储器访问权限控制器33,用于访问权限控制。逻辑分区的硬件实现方案是:对于存储器中每一个字节,地址译码器均有一条译码结果字线与其对应,根据逻辑分区的大小,将每一分区中所有地址对应的字线进行“或”运算,其运算结果作为该分区的指示信号输出,就可以达到划分逻辑分区,并使地址所指向分区的指示信号有效。
为了提高密码的安全性,本发明还包括地址变换器36,所述地址变换器通过控制器连接地址计数器,在控制器的指示下进行地址跳跃,并将跳跃后的地址发送至地址译码器(请参阅图8)。地址跳跃是通过地址变换器实现的,当第5区作为密码区使用时,外部地址指向该区域时,通过地址变换器将其增加到存储器的最大地址之外,使外部读出的数据为空地址的数据,以保证密码区的数据不被读出。另外当密码校验达到其操作地址时,地址变换器又将外部地址变换成密码区在存储器中的物理地址,从该区域读出密码与外部输入的密码进行比较,如果两者完全一致则校验通过,否则校验不通过。
改变存储器逻辑分区的访问权限是通过给存储器访问权限控制区写入不同的值来实现的。芯片上电后,存储器访问权限控制区的数值被送给存储器访问权限寄存器34,并且被存储器访问权限寄存器34锁存。存储器访问权限寄存器34完全继承了存储器访问权限控制区的数值,即存储器访问权限寄存器中的某一位规定了对应逻辑分区的访问权限,不同的值代表着不同的访问权限。
五个用户数据区都有自己独立的访问控制方式,每个数据区又有多种访问权限,分别由存储器访问权限控制区中不同的位进行控制。每个数据区对应着不同的控制位,控制位的值又确定该数据区的访问权限。因此要改变数据区的访问权限,只需改变其对应控制位的值,使其控制方式十分灵活。控制位和用户数据区、访问权限的对应关系如下表所示:
存储器访问权限控制区 |
数据区 |
访问权限 |
DF1 |
用户数据区1 |
只读/可读写擦 |
DF2 |
用户数据区2 |
只读/可读写擦 |
DF3 |
用户数据区3 |
只读/可读写擦 |
DF4 |
用户数据区4 |
只读/可读写擦 |
不可访问——存储器中的数据不能被外部设备读出,也不能被擦写;
只读——存储器中的数据能被外部设备读出,但不能进行擦写修改;
可读写擦——存储单元能反复擦写,所写数据能被外部设备读出。
可比较-----存储器中的数据不能被外部设备读出,也不能做修改。只能与外部输入的数据在电路内部进行比较。
该芯片的存储器访问权限控制器33在对用户数据区进行访问控制时,除对逻辑分区指示信号和操作指示信号进行逻辑运算外,还结合存储器访问权限寄存器中控制位的值一起进行逻辑运算。
请参阅图7,其为存储器访问权限控制器产生控制信号WE或ER的逻辑示意图。现在以写信号WE的产生为例进行说明,用户数据区1至用户数据区5的指示信号FQ1~FQ5先与存储器访问权限寄存器中相应的控制位进行逻辑操作,运算结果CNTL1-CNTL5用来选择是否允许WE1信号通过存储器访问权限控制器。只要CNTL1-CNTL5中有一个信号有效,则允许WE1信号通过。即WE信号与WE1信号相同,若WE信号代表一个写操作,则可以对存储器的相应单元写。若CNTL1-CNTL5都为无效状态,则WE1信号就不允许通过,使得WE信号始终保持无效状态,不能对存储器写操作。擦信号ER的产生方法与写信号WE的一致。
当第5区作为密码区使用时,存放在存储器访问权限控制区的FG和5个控制位的值在正常使用情况下只能读而不能擦写,因此在卡的发行过程中写入控制位的值是不能随意修改的,从而确保每个控制位所对应的用户数据区的操作模式不能随意修改。例如在发行过程中将某一用户数据区设为只读状态,并在该用户数据区内存放一组帐号,那么在正常使用时芯片将屏蔽所有对该用户数据区的擦写操作,确保其内部所存放的帐号不被意外修改,有效地抑制卡在使用过程中的失效。但是密码的存在又为运营商提供了一种可靠改写用户数据区内帐号的方法,在密码校验通过后,可以对存储器访问权限控制区进行读写擦操作(即改写控制位的值),从而改变其对应数据区的操作模式。当该用户数据区的操作模式变为读写擦时,其内部所存储的帐号就可以进行修改。
上述公开的用户数据区分为5个区,但并非局限于此,用户数据区可以分为若干区,比如分为2-5个区。可以将其中一个区设定为密码区,考虑到密码区和其它数据区的地址不连续,因此可以将用户数据区的最后一个区作为密码区。
用户模式下的密码校验具有很高的安全性能:1、在密码校验通过前,密码不可读写擦,以保证密码的保密性;2、密码校验有次数限制(最多8次),以防止密码被穷举破解;3、密码校验的操作地址与前面数据区的地址不连续,之间有一个地址跳跃,这样有利于密码的安全。
以上公开的仅为本发明的一个具体实施例,但本发明并不局限于此,对于本领域的技术人员来说,在不背离本发明实质的情况下对上述实施方式进行各种变化和修改,这些都应在本发明的保护范围内。