金融系列7《动态数据认证》

摘要:
1) 标准动态数据认证,在卡行为分析之前实现。2) 复合动态数据认证/应用密文生成,在发出GENERATEAC命令后实现。3) 认证中心的公钥由终端恢复。4) 发卡行的公钥由终端恢复。5) 终端恢复IC卡公钥。6) RSAA。N=P*Q//N公钥,模数,IC卡公钥BΦ(N)=(P-1)*(Q-1)//Euler函数,小于N的正整数的数目,与N互素


1)  标准的动态数据认证,卡片行为分析前执行.

2)  复合动态数据认证/应用密文生成,在GENERATEAC命令发出后执行。

3)  由终端恢复认证中心公钥。

4)  由终端恢复发卡行公钥。

5)  由终端恢复IC卡公钥。

6)  RSA

A.   N=P*Q//N公开,的模数,IC卡公钥

B.   Φ(N)=(P-1)* (Q-1) //欧拉函数, 小于n并与n互素的正整数的个数

C.   gcd(E,Φ(N))=1    //E公开,加密密钥

D.   D*E≡1(modΦ(N))  //D保密, 解密密钥

E.   Y=X^Emod N

F.   X=Y^Dmod N

G.   DQ=D mod (q-1)  //8202 Q的指数

H.   Qinv=1/qmod p    //8201  系数数据

I.   DP=D mod (p-1)  //8203 P的指数

 

 

 1. 恢复和验证IC卡公钥(P[8205]*Q[8204])

//IC卡公钥指数(9F47)
IC_E = 03
//IC卡公钥证书(9F46)
IC_I =11E5E2C0727BE714A9EE439AC9ED089B8C9FC8A2887A895E977517A2AF060053035875E4A0DDE71A4DCFB91CDEF25D250BE244AEE03111D7CE751385883A1A251213951FD19264355781D06C65331938B5C03C32C1EFCE808670FF484808345BB320A747E7E252EAD7F50075F6BD8E5F0D786097B990B8B3376C402B22261D56A67813D86828FBBE680ED9862820C6117B26DC23DDE00EFD1FB47D48F666885120DE33C94F3AAACE15C39DD348980CBB
//恢复IC卡公钥证书(唯一)
//IC_O = DeRSA(_CA_N, IC_E, IC_I)
IC_O =6A046230360501000269314F122100064C0101B001+B85E8056A5307E37849412709FCF3BA50C413A45CDB38858E141112BE5744E80AF61E8353D4BCCD730979A1107B69E57794B5339F1E000EB04244FFA146DE06BB47AEB9B396539EE914A01D9ECF7A6C166CAA5994912A04F2334E83FB1812CB45AA140E604A41FE51C22C940882F4932357871832C0847DA6432DBD60184635ED1240023D033698A55D79200DB879D352B6E8FA5E0331D4D319CBC
 
//BB = ('B', CA_N.GetLength() - 52);
//HashValueInfo = IC_O.Mid(2, IC_O.GetLength() -42 - 2) + TagValue[9F48] + IC_E + SDA_Value
//HashV = SHA1(HashValueInfo);
HashV = 698A55D79200DB879D352B6E8FA5E0331D4D319C

 

字段名

    长度            

描述

                        格式

恢复数据头

1

十六进制,值为‘6A’

b

证书格式

1

十六进制,值为‘04’

b

应用主账号

10

主账号(在右边补上十六进制数‘F’)

cn 20

证书失效日期

2

MMYY,在此日期后,这张证书无效

n4

证书序列号

3

由发卡行分配给这张证书的唯一的二进制数

b

哈希算法标识

1

标识用于在数字签名方案中产生哈希结果的哈希算法

b

IC卡公钥算法标识

1

标识使用在IC卡公钥上的数字签名算法

b

IC卡公钥长度

1

标识IC卡公钥的模的字节长度

b

IC卡公钥指数长度

1

标识IC卡公钥指数的字节长度

b

IC卡公钥或IC卡公钥的最左边字节

NI-42

如果NIC≤NI–42,这个字段包含了在右边补上了NI–42–NIC 个值为‘BB’的字节的整个IC卡公钥。

如果NIC >NI -42,这个字段包含了IC卡公钥最高位的NI–42个字节

b

哈希结果

20

IC卡公钥以及相关信息的哈希值

b

恢复数据结尾

1

十六进制,值为‘BC’

b

 

 

 2. 动态签名应用数据的生成

//内部认证,+DDOL[9F49](由终端生成的不可预知数,9F37,4个字节的二进制数)
Send:0088000004+11223344
--->:61B3
 
Send:00C00000B3 //IC卡通过使用IC卡私钥对计算
--->:8081B009A7044A0C50066FB5DBF49DFF7FD280BB5664522B51916BBC0AABE39A564190AA2092E5E5FB406D543883AF3FE8C5C4A8A6DF090D9CC7006ED0530B3485E895DEADE1FE7EE93825EEAC64D7E44CA62F5CFF78AFE50792501D63ABD956397AFEDDAE807DE9BE9EDFA29C1F98CCE36F208E23A847AE1F6E11CA31A84B76165B9FB0E3C2E9F9C91ACBD4A5BB845D1B17881F19FAB2FE7FA20B936F16802A2EEDC4C4412DDDCCF848961743A86ADA1724F99000
[√]  内部认证生成密文成功(_IC_I)
 
//恢复IC卡签名动态数据
//_IC_N(IC卡公钥P*Q) = IC_O.Mid(42, nIssuer_n_Len - 84) + TagValue[9F48]
//_IC_O = DeRSA(_IC_N, IC_E, _IC_I);
_IC_O =6A050108020003AAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB79E94C728CC576FC0A4EDA19A979BAC5698A0D75BC
 
//HashValueInfo = _IC_O.Mid(2, _IC_O.GetLength() -22 * 2) + TagValue[9F37];
//HashV = SHA1(HashValueInfo);
HashV = 79E94C728CC576FC0A4EDA19A979BAC5698A0D75
[√]  动态签名数据摘要信息一致......
[√]  动态数据认证成功......

 

字段名

长度

描述

格式

恢复数据头

1

十六进制,值为‘6A’

b

签名数据格式

1

十六进制,值为‘05’

b

哈希算法标识

1

标识用于在数字签名方案中产生哈希结果的哈希算法1

b

IC卡动态数据长度

1

标识IC卡动态数据的字节长度

b

IC卡动态数据

LDD

由IC卡生成和/或存储在IC卡上的动态数据

-

填充字节

NIC-

LDD–25

(NIC-LDD–25)个值为‘BB’的填充字节

b

哈希结果

20

动态应用数据以及相关信息的哈希值

b

恢复数据结尾

十六进制,值为‘BC’

b

 

文/yanxin8原创,获取更多信息请访问http://yanxin8.com/440.html


C++ EMV EP/ED  Javascript MFC MIFARE  noteCard  PBOC  php QPBOC WordPress  wp插件 创意发明 发现 小众软件 常识 教程 旗舰版 智能卡 注册码 游记 社保 算法 美文 职场 金融 面试题  0 12

免责声明:文章转载自《金融系列7《动态数据认证》》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇css3 flex流动自适应响应式布局实例 转tp请求和响应下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Element-ui局部添加loading效果

项目:Vue+element-ui 在一个表格数据加载时,因为需要连接其它东西,所以后台接口返回数据需要较长时间,因此添加局部Loading效果,增加用户体验度, 最开始使用下面代码,直接放到<el-table>中,测试时遇到问题 element-loading-spinner="el-icon-loading" :element-loadin...

Vue数据更新但页面没有更新的多种情况

Vue数据更新但页面没有更新的多种情况 1、Vue 无法检测实例被创建时不存在于 data 中的 变量 原因:由于 Vue 会在初始化实例时对 data中的数据执行 getter/setter 转化,所以 变量必须在 data 对象上存在才能让 Vue 将它转换为响应式的。 例如: new Vue({ data:{}, template: '&l...

Python urllib和urllib2模块学习(一)

(参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803) Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib和urllib2 这个 HTTP 客户端库。这里总结了一些 urllib和urlib2 库的使用细节。 Python u...

转:使用xhprof进行线上PHP性能追踪及分析

原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug进行PHP的性能分析,对于本地开发环境来说是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能...

『MXNet』第八弹_数据处理API_下_Image IO专题

想学习MXNet的同学建议看一看这位博主的博客,受益良多。 在本节中,我们将学习如何在MXNet中预处理和加载图像数据。 在MXNet中加载图像数据有4种方式。 使用 mx.image.imdecode 加载原始数据文件 使用在Python中实现的mx.img.ImageIter ,很方便自定义。 它可以从.rec(RecordIO)文件和原始图像文件读...

生成公钥和私钥----OpenSSL和keytool

方法一:使用openssl生成rsa密钥对 密钥长度介于 512 - 65536 之间(JDK 中默认长度是1024),且必须是64 的倍数。密钥的常用文件格式有pem(文本存储)或者der(二进制存储)。 当使用Java API生成RSA密钥对时,公钥以X.509格式编码,私钥以PKCS#8格式编码。 RSA使用pkcs协议定义密钥的存储结构等内容 O...