发明内容
为解决以上问题,本发明提供一种可在读写器层面就能实现IC卡防复制及防篡改的方法。
采用以下的技术方案:
一种IC卡的防复制及防篡改方法,该方法涉及IC卡和读写器;特别地,在读写器内储存有第一密码本和第二密码本;所述第一密码本是一份成功刷卡第次与滚码的绑定表单,是一份电子数据;所述第二密码本是一份计算结果与加密码的绑定表单,是一份电子数据;
对应每次鉴权成功的刷卡,读写器在IC卡内写入该IC卡的成功刷卡第次以及写入1条滚码;所写入的成功刷卡第次是在第一密码本上根据IC卡原来的滚码查询所得;所写入的滚码是在第一密码本上根据该次所写入的成功刷卡第次加1后查询所得;并且读写器保存该IC卡的UID号及本次所写入的滚码于刷卡记录中;
对应每次鉴权成功的刷卡,读写器在完成了业务数据的写入后,对于IC卡上的防被篡改的数据会首先进行CRC加密计算,然后在IC卡上再写入1条加密码;所写入的加密码是在第二密码本上根据所述CRC加密计算的计算结果查询所得;
每次刷卡时,读写器至少读取IC卡上的UID号、成功刷卡第次、滚码、那些与所述的CRC加密计算有关的数据以及加密码;一方面鉴别读取到的成功刷卡第次和滚码的对应关系是否与第一密码本上的相符;另一方面鉴别读得的滚码所对应的成功刷卡第次是否大于或等于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次;再一方面鉴别计算结果和读取到的加密码的对应关系是否与第二密码本上的相符,此处所述的计算结果是指读写器根据读取到的IC卡上的那些与CRC加密计算有关的数据在进行CRC加密计算后得到的计算结果;只有该三方面均相符的情况下才判定本次鉴权成功,而后再进行业务数据的操作。
所述CRC加密计算优选是私有公式的CRC加密计算。另外,所述CRC加密计算优选包含IC卡的UID号作为输入内容之一。
作为进一步的方案,如果读得的滚码所对应的成功刷卡第次是小于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次,则读写器在该IC卡上写入/修改数据作为标记,只有在IC卡没有这样的标记的情况下,读写器才可能判定本次鉴权成功。
本发明还提供另一种IC卡的防复制及防篡改方法,该方法涉及IC卡和读写器;特别地,在读写器内储存有第一密码本和第二密码本;所述第一密码本是一份成功刷卡第次与滚码的绑定表单,是一份电子数据;所述第二密码本是一份计算结果与加密码的绑定表单,是一份电子数据;
对应每次鉴权成功的刷卡,读写器在IC卡内写入1条滚码;所写入的滚码是在第一密码本上查询到的原滚码的依次的下一条滚码;所述原滚码是指读写器在进行鉴权之前在IC卡上读得的滚码;并且读写器保存该IC卡的UID号及所写入的滚码于刷卡记录中;
对应每次鉴权成功的刷卡,读写器在完成了业务数据的写入后,对于IC卡上的防被篡改的数据会首先进行CRC加密计算,然后在IC卡上再写入1条加密码;所写入的加密码是在第二密码本上根据所述CRC加密计算的计算结果查询所得;
每次刷卡时,读写器至少读取IC卡上的UID号、滚码、那些与所述的CRC加密计算有关的数据以及加密码;一方面鉴别读得的滚码是否符合第一密码本上的一条;另一方面鉴别读得的滚码所对应的成功刷卡第次是否大于或等于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次;再一方面鉴别计算结果和读取到的加密码的对应关系是否与第二密码本上的相符,此处所述的计算结果是指读写器根据读取到的IC卡上的那些与CRC加密计算有关的数据在进行CRC加密计算后得到的计算结果;只有该三方面均相符的情况下才判定本次鉴权成功。
所述CRC加密计算优选是私有公式的CRC加密计算。另外,所述CRC加密计算优选包含IC卡的UID号作为输入内容之一。
作为进一步的方案,如果读得的滚码所对应的成功刷卡第次是小于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次,则读写器在该IC卡上写入/修改数据作为标记,只有在IC卡没有这样的标记的情况下,读写器才可能判定本次鉴权成功。
由于在读写器中加入了第一密码本和第二密码本,而这两份密码本只有厂家知晓而对外是保密的,并且读写器会向IC卡片写入第一密码本的滚码和第二密码本的加密码作为该IC卡下次刷卡的鉴权要素,这就可以确保业务系统不会因某卡片被复制而导致实际容量增加,或者因某卡片被复制且数据被篡改而导致管理方有所损失。另外,在该方法下,一张IC卡在同一业务系统的不同的读写器上进行鉴权都能实现相同的防范效果,并且在进行鉴权的时候这些读写器之间、读写器与数据服务器之间完全不需要联网,使得这样的IC卡业务系统的硬件构建成本并没有增加。
本发明具有以下优点:
1)可防止原卡和复制卡在业务系统中共存;2)对卡内数据的防篡改等级大为提升;3)无需改变读写器的硬件结构;4)鉴权时不同的读写器之间无需联网。
具体实施方式
下面结合实施例对本发明内容作进一步说明。
实施例1
本实施例的一种IC卡的防复制及防篡改方法,该方法涉及IC卡和读写器。
在读写器内储存有第一密码本和第二密码本。
如表1所示,第一密码本是一份“成功刷卡第次”与“滚码”的绑定表单,是一份电子数据。
表1:
本实施例的n是达到千万级别的数,而滚码则是由电脑随机生成且互相不重复。n的数量足够满足业务系统在正常刷卡频率下使用30年的要求。
如表2所示,第二密码本是一份“计算结果”与“加密码”的绑定表单,是一份电子数据。
表2:
计算结果 |
加密码 |
001 |
C2A0F0 |
002 |
A9C3E0 |
003 |
E4B7F3 |
004 |
E3C8D4 |
005 |
E1A5F2 |
…… |
|
m |
C5A4D9 |
由于本实施例的采用私有公式的CRC加密计算是16位的CRC加密计算,其计算结果只有m=256*256=65536种可能,因此第二密码本只需有m条有关计算结果与加密码的绑定记录即可。而加密码则同样是由电脑随机生成且互相不重复。
以一个刷IC卡消费的电梯系统作为列子。该系统中,IC卡内是储存有UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记等数据的。本实施例的IC卡的UID号是:0x12345678。每次刷IC卡将只能到达被授权的楼层,并且在卡内会被扣除一定的金额,以实现权限使用、多用多付的管理功能。
该IC卡内还储存有成功刷卡第次、滚码和加密码。
刷卡时,读写器先读取所需的数据,包括:UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记、成功刷卡第次、滚码和加密码。然后将UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记这些防被篡改的数据作为参数进行私有公式的CRC加密计算,再根据计算结果在第二密码本上查询得到一个加密码,如果这个查询得到的加密码与读得的加密码相符,则表明该IC卡上的数据没有被篡改,然后再进行下一步操作:
读写器将根据读得的成功刷卡第次在第一密码本上查询得到一个滚码,如果这个查询得到的滚码与读得的滚码相符,并且读得的滚码所对应的成功刷卡第次是大于或等于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次的话,则表明该IC卡是本业务系统内可被接受的卡,读写器随即判定该IC卡本次鉴权成功,可进行后续业务数据的读写。而后续读写器也会保存该IC卡的UID号及稍后所写入的滚码于刷卡记录中。
应当说明的是,某IC卡是本业务系统内可被接受的卡并不意味着该IC卡就是原卡,该IC卡有可能是没有篡改数据的复制卡,然而这样的复制卡一旦鉴权成功,则由于读写器会有刷卡记录以及会重新在IC卡上写入成功刷卡第次和滚码,于是此后原卡再在同一读写器上刷卡时,由于读得的原卡上的滚码所对应的成功刷卡第次是小于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次,因此该原卡不会鉴权成功,并且读写器会在该原卡上写入/修改数据作为标记,凭该标记将其识别为黑名单卡,禁止该IC卡在业务系统中使用,这就可以防止原卡和复制卡在业务系统中共存。
在执行完业务数据的操作后,读写器在IC卡内写入该IC卡的成功刷卡第次以及写入1条滚码。譬如:某IC卡本次是第3次由读写器鉴权成功,则读写器在该IC卡上写入“3”以及1条滚码“E3A0C5”。所写入的“3”是上一次成功刷卡时在表1所示的第一密码本上依据IC卡原来的滚码“B1B2C3”查询所得。而写入的滚码“E3A0C5”是因为该次所写入的成功刷卡第次“3”加1后等于“4”,而在第一密码本上“4”对应的滚码就是“E3A0C5”,以新写入的滚码替换原来的滚码。
并且,读写器还对执行完业务数据的操作后的IC卡上的项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记这些防被篡改的数据再结合IC卡的UID号,进行私有公式的CRC加密计算。譬如加密计算出来的结果是“005”,则在第二密码本上查询到“005”所对应的加密码是“E1A5F2”,读写器将“E1A5F2”写入到IC卡内。
在该IC卡下一次刷卡时,读写器又再读取包括:UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记、成功刷卡第次:“3”、滚码:“E3A0C5”和加密码:“E1A5F2”。如果这些数据作为参数进行私有公式的CRC加密计算后,在第二密码本上查得的加密码不是“E1A5F2”,则直接判定鉴权不成功,如果查得的加密码是“E1A5F2”,则再鉴别读取到的成功刷卡第次和滚码的对应关系是否与第一密码本上的相符:即查询第一密码本上是否存在“E3A0C5”这个滚码,存在的话进一步鉴别“E3A0C5”这个滚码所对应的成功刷卡第次“4”与读得的成功刷卡第次“3”是否相差1,如果不是,则直接判定鉴权不成功;如果是,则进一步鉴别读得的滚码“E3A0C5”所对应的成功刷卡第次“4”是否大于或等于读写器的刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次。假设该读写器就是该IC卡上一次刷卡的读写器,则其刷卡记录中会有该IC卡的UID号及滚码“E3A0C5”这条记录,而根据滚码“E3A0C5”就可以查询得成功刷卡第次是“4”,显然是等于读得的该IC卡上的滚码“E3A0C5”所对应的成功刷卡第次“4”,此时如果卡上没有黑名单标记的话,则该IC卡鉴权成功。假设该读写器不是该IC卡上一次刷卡的读写器,则其刷卡记录中可能会有该IC卡的以前的刷卡记录,譬如:有该IC卡的UID号及滚码“A0B0C1”这条刷卡记录,而根据滚码“A0B0C1”就可以查询得成功刷卡第次是“2”,显然,读得的滚码“E3A0C5”所对应的成功刷卡第次“4”更大,此时如果卡上没有黑名单标记的话,则该IC卡鉴权成功。然而,再譬如读写器有该IC卡的UID号及滚码“D5B1F1”这条刷卡记录,而此时读写器读得的滚码是“E3A0C5”,由于读得的滚码“E3A0C5”所对应的成功刷卡第次“4”要比刷卡记录中的滚码“D5B1F1”所对应的成功刷卡第次“5”要小,但这种情况是不合理的,于是读写器将会在此卡上写入黑名单标记,且判定鉴权不成功。
实施例2
本实施例的一种IC卡的防复制及防篡改方法,该方法涉及IC卡和读写器。其与实施例1的主要区别在于:本实施例的方法不向IC卡写入成功刷卡第次。
在读写器内储存有第一密码本和第二密码本。
如表3所示,第一密码本是一份“成功刷卡第次”与“滚码”的绑定表单,是一份电子数据。
表3:
成功刷卡第次 |
滚码 |
1 |
A0B0C0 |
2 |
A0B0C1 |
3 |
B1B2C3 |
4 |
E3A0C5 |
5 |
D5B1F1 |
…… |
|
n |
A5E2B0 |
本实施例的n是达到千万级别的数,而滚码则是由电脑随机生成且互相不重复。n的数量足够满足业务系统在正常刷卡频率下使用30年的要求。
如表4所示,第二密码本是一份“计算结果”与“加密码”的绑定表单,是一份电子数据。
表4
计算结果 |
加密码 |
001 |
C2A0F0 |
002 |
A9C3E0 |
003 |
E4B7F3 |
004 |
E3C8D4 |
005 |
E1A5F2 |
…… |
|
m |
C5A4D9 |
由于本实施例的采用私有公式的CRC加密计算是16位的CRC加密计算,其计算结果只有m=256*256=65536种可能,因此第二密码本只需有m条有关计算结果与加密码的绑定记录即可。而加密码则同样是由电脑随机生成且互相不重复。
以一个刷IC卡消费的电梯系统作为列子。该系统中,IC卡内是储存有UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记等数据的。每次刷IC卡将只能到达被授权的楼层,并且在卡内会被扣除一定的金额,以实现权限使用、多用多付的管理功能。
该IC卡内还储存有滚码和加密码。
刷卡时,读写器先读取所需的数据,包括:UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记、滚码和加密码。然后将UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记这些防被篡改的数据作为参数进行私有公式的CRC加密计算,再根据计算结果在第二密码本上查询得到一个加密码,如果这个查询得到的加密码与读得的加密码相符,则表明该IC卡上的数据没有被篡改,然后再进行下一步操作:
读写器将根据读得的滚码在第一密码本上查询是否存在这样的一个滚码,如果存在,并且读得的滚码所对应的成功刷卡第次是大于或等于刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次的话,则表明该IC卡是本业务系统内可被接受的卡,读写器随即判定该IC卡本次鉴权成功,可进行后续业务数据的读写。而后续读写器也会保存该IC卡的UID号及稍后所写入的滚码于刷卡记录中。
与实施1一样,某IC卡是本业务系统内可被接受的卡并不意味着该IC卡就是原卡,该IC卡有可能是没有篡改数据的复制卡,然而这样的复制卡一旦鉴权成功,则由于读写器会有刷卡记录,于是此后原卡再在同一读写器上刷卡时,由于读得的原卡上的滚码所对应的成功刷卡第次是小于刷卡记录中该IC卡UID号的最近的滚码所对应的成功刷卡第次,因此该原卡不会鉴权成功,并且读写器会在该原卡上写入/修改数据作为标记,凭该标记将其识别为黑名单卡,禁止该IC卡在业务系统中使用,这就可以防止原卡和复制卡在业务系统中共存。
在执行完业务数据的操作后,读写器在IC卡内写入1条滚码。譬如:某IC卡本次是第3次由读写器鉴权成功,则读写器在该IC卡上写入滚码“E3A0C5”替换原滚码“B1B2C3”。写入的滚码“E3A0C5”是因为它是第一密码本上原滚码“B1B2C3”的依次的下一条滚码。
并且,读写器还对执行完业务数据的操作后的IC卡上的项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记这些防被篡改的数据再结合IC卡的UID号,进行私有公式的CRC加密计算。譬如加密计算出来的结果是“005”,则在第二密码本上查询到“005”所对应的加密码是“E1A5F2”,读写器将“E1A5F2”写入到IC卡内。
在该IC卡下一次刷卡时,读写器又再读取包括:UID号、项目编号、余额、单次消费额、电梯编号、有效楼层号、黑名单标记、滚码“E3A0C5”和加密码“E1A5F2”。如果这些数据作为参数进行私有公式的CRC加密计算后,在第二密码本上查得的加密码不是“E1A5F2”,则直接判定鉴权不成功,如果查得的加密码是“E1A5F2”,则再鉴别读取到的滚码是否存在于第一密码本;如果是,则进一步鉴别读得的滚码“E3A0C5”所对应的成功刷卡第次“4”是否大于或等于读写器的刷卡记录中的该IC卡的最近的滚码所对应的成功刷卡第次。假设该读写器就是该IC卡上一次刷卡的读写器,则其刷卡记录中会有该IC卡的UID号及滚码“E3A0C5”这条记录,而根据滚码“E3A0C5”就可以查询得成功刷卡第次是“4”,显然是等于读得的该IC卡上的滚码“E3A0C5”所对应的成功刷卡第次“4”,此时如果卡上没有黑名单标记的话,则该IC卡鉴权成功。假设该读写器不是该IC卡上一次刷卡的读写器,则其刷卡记录中可能会有该IC卡的以前的刷卡记录,譬如:有该IC卡的UID号及滚码“A0B0C1”这条刷卡记录,而根据滚码“A0B0C1”就可以查询得成功刷卡第次是“2”,显然读得的滚码“E3A0C5”所对应的成功刷卡第次“4”更大,此时如果卡上没有黑名单标记的话,则该IC卡鉴权成功。然而,再譬如读写器有该IC卡的UID号及滚码“D5B1F1”这条刷卡记录,而此时读写器读得的滚码是“E3A0C5”,由于读得的滚码“E3A0C5”所对应的成功刷卡第次“4”要比刷卡记录中的滚码“D5B1F1”所对应的成功刷卡第次“5”要小,但这种情况是不合理的,于是读写器将会在此卡上写入黑名单标记,且判定鉴权不成功。
本说明书列举的仅为本发明的较佳实施方式,凡在本发明的工作原理和思路下所做的等同技术变换,均视为本发明的保护范围。