首页 > 其他 > 详细

终端角度看RSA

时间:2014-07-29 18:05:52      阅读:406      评论:0      收藏:0      [点我收藏+]

首先关于RSA:

RSA的算法涉及三个参数,n、e1、e2。

其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。

A=B^e2 mod n;B=A^e1 mod n(e1和e2可以互换使用,即:A=B^e1mod n;B=A^e2 mod n;)

---《百度百科.RSA算法》

 

在金融交易里面,站在终端的角度来看,RSA算法主要用于在公钥解密,并恢复证书(发卡行公钥证书,IC卡公钥证书)。

下面从三种不同的公钥,阐述在POS终端里,RSA算法在脱机数据认证过程中发挥的作用和使用过程。

 

一、         CA公钥

1.      来源:从后台下发,通过8583协议获取,获取格式为:RID+索引+有效期+哈什算法标识+公钥算法标识+公钥模+公钥指数+公钥校验值。

2.      作用:通过RSA算法,把发卡行公钥从发卡行公钥证书中恢复出来。

3.      过程:下载CA公钥后,校验数据,然后通过RID和索引,确定使用的CA公钥,把发卡行公钥证书恢复出来。

 

二、         发卡行公钥

1.      来源:通过ReadRecord 指令,从卡片读取三个数据:90(发卡行公钥证书),9F32(发卡行RSA公钥指数),92(发卡行RSA公钥余数)。通过上面CA公钥恢复发卡行公钥证书,得到下面的格式:图1.

bubuko.com,布布扣

公钥指数已经从Read Record获取得到,公钥模在恢复出来里面的数据有,不过根据发卡行公钥的长度,可能需要把发卡行余数拼凑起来。

2.      作用:通过RSA算法,把IC卡公钥从IC卡行公钥证书中恢复出来。如果卡片不支持DDA或者CDA,那么发卡行公钥的作用就是用于验证静态签名数据的正确性。

3.      过程:通过CA公钥,恢复发卡行公钥证书,得到发卡行公钥的一部分相关数据,再结合从卡片读取得到的数据,得到完整的发卡行公钥数据。注意在恢复数据后,需要拼凑其他数据,进行哈希计算比对校验值。如果卡片仅支持SDA,就在这里完成静态签名数据的恢复,并比对哈希值,完成SDA.

 

三、         IC卡公钥

1.      来源:通过ReadRecord 指令,从卡片读取三个数据:9F46(IC卡公钥证书),9F47(IC卡RSA公钥指数),9F48(IC卡RSA公钥余数)。通过上面发卡行公钥恢复IC卡公钥证书,得到下面的格式:图2.

bubuko.com,布布扣

公钥指数已经从Read Record获取得到,公钥模在恢复出来里面的数据有,根据发卡行公钥的长度,可能需要把发卡行余数拼凑起来。

2.      作用:通过RSA算法,验证内部认证指令生成的签名的动态应用数据是否正确,以及可用于验证GAC之后可能生成的签名的动态应用数据。

3.      过程:使用IC卡公钥恢复签名的动态应用数据,获取哈希结果以及其他数据。比对哈希结果,完成DDA或者CDA。



之所以写这篇文章,是因为想清晰一些问题。

特别是在刚开始看到BCTC发的IC卡送检指南里面,某一个长度的RSA数据里面,写着:“发卡行公钥:XXX””发卡行私钥:XXX”,表示完全看不懂,什么意思,公钥不是包括模和指数么,私钥也是模和指数啊,而且有“发卡行公钥指数”,那么刚才那个“发卡行公钥”又算是什么。一头雾水,就不再吐槽了,整理了一下,应该是这个意思:

发卡行公钥 =》发卡行公共模数

发卡行私钥=》私钥的指数

发卡行公钥余数,也就是发卡行公钥余项,反正规范喜欢两个随意用。NND!

 



终端角度看RSA,布布扣,bubuko.com

终端角度看RSA

原文:http://blog.csdn.net/freud_lv/article/details/38270519

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!