从2012年从事金融行业的IT开发和实施工作以来,接触最多的就是IC卡片的ARQC等安全验证,只从发行IC卡以来,行业里面安全验证就是使用ARQC来验证交易的安全性,最近在项目中实施改造的时候因为前段读卡上送过来的ARQC到我系统,我系统去安全平台做ARQC验证失败,原因排查了好久都不知道什么原因,所以我自己研究了下将验证ARQC和生产ARPC的过程写下来,网上有很多关于 ARQC生成的规则文章,我这边只是记录下自己的心得,以便以后方便自己查看(以下是国密生成的规则):
1.数据准备:
IC卡应用秘钥mdkac:F23BF4AE92B554C116139D4F67322667
卡号:6214988660100000304
卡序号:00
ATC:0001
arc:00
交易数据aqdt:00000000000000000000000001560000000800015616051800412AB4B67D00000103A00000
2.pan的生成由卡号最后14位+卡序号的最后2位即pan=8866010000030400
3.获取卡片的分散因子PAN+(PAN XOR FFFFFFFFFFFFFFFF)即panyz=88660100000304007799FEFFFFFCFBFF
4.使用mdkac对卡片分散因子进行SM4加密得到卡片分散秘钥keyZ:016F6E76BD8E6FB4A17C28C4B05E03A8
5.分散ATC,分散ATC的规则是右补6个0x00加上ATC左补6个0x00,即:
atc1='00'||'00'||'00'||'00'||'00'||'00'||ATC||'00'||'00'||'00'||'00'||'00'||'00'
然后atc与FFFF进行异或得到的atc2=FFFE,然后分散过后的atcK=atc1+atc2=0000000000000001000000000000FFFE
6.然后使用卡片分散秘钥keyZ对atc分散因子atcK进行SM4加密得到过程秘钥skac=9ECF9220F32AE56187D3C2444967FC0E
7
1.数据准备:
IC卡应用秘钥mdkac:F23BF4AE92B554C116139D4F67322667
卡号:6214988660100000304
卡序号:00
ATC:0001
arc:00
交易数据aqdt:00000000000000000000000001560000000800015616051800412AB4B67D00000103A00000
2.pan的生成由卡号最后14位+卡序号的最后2位即pan=8866010000030400
3.获取卡片的分散因子PAN+(PAN XOR FFFFFFFFFFFFFFFF)即panyz=88660100000304007799FEFFFFFCFBFF
4.使用mdkac对卡片分散因子进行SM4加密得到卡片分散秘钥keyZ:016F6E76BD8E6FB4A17C28C4B05E03A8
5.分散ATC,分散ATC的规则是右补6个0x00加上ATC左补6个0x00,即:
atc1='00'||'00'||'00'||'00'||'00'||'00'||ATC||'00'||'00'||'00'||'00'||'00'||'00'
然后atc与FFFF进行异或得到的atc2=FFFE,然后分散过后的atcK=atc1+atc2=0000000000000001000000000000FFFE
6.然后使用卡片分散秘钥keyZ对atc分散因子atcK进行SM4加密得到过程秘钥skac=9ECF9220F32AE56187D3C2444967FC0E
7

本文介绍了金融行业中IC卡片的ARQC安全验证过程,包括数据准备、PAN生成、分散因子计算、SM4加密、ARQC与ARPC的生成步骤。通过实例详细解析了ARQC和ARPC的生成规则,便于理解和应用。
最低0.47元/天 解锁文章
2213

被折叠的 条评论
为什么被折叠?



