PBOC密码技术方法、分散密钥、过程密钥,如何计算ARQC、ARPC、MAC,已经ENC

阅读: 评论:0

初始数据
50020232A0000003330101016214157312900025165F00000200000000000007000103A020000 10A010*******D03845AFB0D77300000001000000000000000001560000000000015611122699 490932987C00000203A0200030092100000000000000000010000000000010000000000000000 0
卡号:6214157312900025165
卡序列号:00
ATC:0002
74位数据源:
写卡充值脚本:
72199F180400000001861004DA9F790A000000010000F5AB5B1300
密钥
WK 索引00
MDK: A46B717318EED28A2B5DB38FCC28FE6E
MDK-ENC: 6AAF8070BE0185BD78B114CB64CF476A
MDK-MAC: CFE31C8FEC62792BCB1A5D41A2442166
KMU: 027B7367D6A36C6C51F2A07D091E4D91
1、计算ARPC值
X:=(ARC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’)。
2) 计算Y:=ARQC⊕X。
3) 计算ARPC
基于128位分组加密算法获得16字节ARPC
ARPC:=ALG(SKAC)[Y||‘00’||‘00’||‘00’||‘00’||‘00’||‘00||‘00’||‘00]
1.1用MDK、Pan、序列号生成卡片分散密钥
这一方式以主账号(PAN)和主账号序列号(如果主账号序列号不存在,则用一个字节“00”代替)的最右16个数字作为输入数据,以及16字节的发卡行主密钥IMK作为输入,生成16字节的IC卡子密钥MK作为输出:
1) 如果主账号和主账号序列号X的长度小于16个数字,X右对齐,在最左端填充十六进制的“0”
以获得8字节的Y。如果X的长度至少有16个数字,那么Y由X的最右边的16个数字组成。
2) 计算2个8字节的数字
得:5731290002516500
金融IC卡是基于128位分组加密算法的计算方法
Z:=ALG(MDK)[Y||(Y⊕(‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’))]
[Y||(Y⊕(‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’))]= 5731290002516500A8CED6FFFDAE9AFF;
得到卡片分散密钥:9D70763D423A2A0023265A2AAF503084
1.2计算卡片过程密钥
第一步:卡片/发卡行决定是使用MAC密钥还是数据加密密钥来进行所选择的算法处理。
第二步:将当前的ATC在其左边用十六进制数字’0’填充到8个字节记为数据源A,将当前的ATC异或
十六进制值FFFF后在其左边用十六进制数字“0”填充到8个字节记为数据源B,将数据源A和数据源B串
联,用选定的密钥对该数据作如图10所示的运算产生过程密钥。
Z:=ALG(Key)[[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC ‘FFFF’)] ⊕‘FFFF’)]
[[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC ‘FFFF’)] ⊕‘FFFF’)]= 0000000000000002000000000000FFFD;
卡片过程密钥:BA72C2B2F314489013DD121A61715D52
1、3计算X:
4位授权响应码+12为0填充的,3030000000000000
1.4计算Y:
ARQC异或授权响应吗填充X:
得到Y:=29E03845AFB0D773
1.5 计算ARPC
先把Y:用右0填充到16个自己做为加密数据;过程密钥做位密钥加密得到16个字节AQPC;
16字节ARPC =3F69C08F3997240DFE1D9E36863E5DA4,取前8个字节做为发送给IC卡ARPC:3F69C08F3997240D
2.计算MAC
命令中需要加密的数据加密以后再计算MAC。MAC使用对称密钥算法计算的,步骤如下:
步骤1:初始值为8 字节全零(此步骤可省略);
步骤2:下列数据按顺序排列得到一个数据块D:
——CLA、INS、P1、P2 和Lc(Lc 的长度包括MAC 的长度);
——ATC(对于发卡行脚本处理,此ATC在请求中报文中上送);
——应用密文(对于发卡行脚本处理,此应用密文通常是ARQC,或AAC,在请求报文中上送);
——命令数据域中的明文或密文数据(如果存在)。
步骤3:将上述数据块D分成8 字节长的数据块D1、D2、D3…最后一块数据块的字节长度为1 到8;
步骤4:如果最后一块数据块的长度为8 字节,后面补8 字节数据块:80 00 00 00 00 00 00 00,
执行步骤5;
如果最后一块数据块的长度小于8 字节,后面补一个字节80,如果长度到8 字节,执行
步骤5。如果仍然不够8字节,补00直到8 字节;
步骤5:用MAC 过程密钥对数据块进行加密。MAC过程密钥的生成见C.4;
图  C.1 是使用MAC 过程密钥A 和B 生成MAC 的流程图。
步骤6:MAC的计算结果为8 字节,从最左边的字节开始取4 字节。
2.1计算安全报文鉴别(MAC)过程密钥
和1.2 流程一样,只是使用的MDK-MAC密钥分散卡片MAC子密钥;
得到MAC过程密钥822492068CD484E4E4A5B17CF57ACD43
F5AB5B13922A9512 取左边四个4字节MAC即为:F5AB5B13
3.计算ARQC
4. 加密密码数据

本文发布于:2023-05-05 21:48:41,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/89333.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密钥   字节   数据   加密
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图