Part1:NCR RKT技术之(基于NDC)--RSA算法在RKT中的应用

来源:互联网 发布:nginx openresty 编辑:程序博客网 时间:2024/06/05 05:38
 

一  RSA算法描述

 

  RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
  RSA的算法涉及三个参数,n、e1、e2:

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

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

l      RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即: A=B^e2 mod n;B=A^e1 mod n;

 

  结论: 使用RSA算法加密/解密数据,需按照上述步骤生成一对密钥,如(n,e1)和(n,e2),待加密数据可以任取密钥对中的一个密钥对其加密形成密文,对密文解密时使用密钥对中另外一个密钥进行解密.

  由于RSA算法的上述特性,在实际应用中,可以把生成的两个密钥交给两个人进行保管,每个人保管

密钥对中一个密钥,从而可以让一个人对数据加密,而另一个人对数据解密.

  RKM技术正是采用了RSA的这个特性保证了密钥交换和加解密过程的安全性.

 

二 RSA算法应用场景

2.1 数据加密

  您向朋友传送加密数据,您希望只有您的朋友可以解密,这样的话,您需要首先获取您朋友的密钥对中公开的那一个密钥,(e,n)。然后用这个公开密钥进行加密,这样密文只有您的朋友可以解密,因为对应的私钥只有您朋友拥有。

 

2.2 数字签名

 您向朋友传送一段数据附加您的数字签名,您需要对您的数据进行MD5之类的运算以取得数据的"指纹",再对"指纹"进行加密,加密将使用您自己的密钥对中的不公开的私钥。您的朋友收到数据后,用同样的运算获得数据指纹,再用您的公钥对加密指纹进行解密,比较解密结果与他自己计算出来的指纹是否一致,即可确定数据是否的确是您发送的、以及在传输过程中是否被篡改。

三 RSA算法在RKM中的应用

3.1 HSM Public Key/HSM private Key

 该密钥对由HSM(Host Security Module)生成和拥有,主要用于签名消息.

 Host: 当host的发送消息给terminal时,host采用SHA(Secure Hashing Algorithm)算法获取该消息的一个ID序列,然后host用HSM private key对ID序列进行加密后得到签名数据,最后host将签名数据附加到消息发送给terminal.

 terminal: 当消息被接受到时,terminal采用HSM public key对签名数据进行解密,然后terminal得到解密数据和原始消息的SHA计算值进行比对,如果没有差别,说明签名正确,表示消息来自拥有HSM private key 的terminal,数据没有被伪造.

 

terminal采用公钥交换消息获取host的HSM public key.

 

3.2 EPP Public Key/Epp private Key

  该密钥对由EPP拥有.主要用于加密解密消息.

  Host: Host使用Epp public key 对消息进行加密.

  Terminal: EPP使用Epp private key对消息进行解密,确保没有Epp private key的EPP不能解密消息.

 

  Host在采用密钥交换消息获取EPP的的Epp public key.

 

3.3 厂商密钥对(如:NCR Public Key/NCR Private Key)

   厂商密钥对由不同厂商提供和拥有,主要用于对HSM public key和Epp Public key 进行签名,确保EPP由厂商提供且不能被仿造。

  实际过程中,厂商通过邮件之类的方式拿到银行的HSM Public Key后,用厂商私钥对HSM Public Key进行签名,然后把厂商公钥及HSM Public Key的签名发回银行,并导入到HSM模块;同时,厂商对 Epp  public key用厂商私钥进行签名并一起保存到EPP。

  上述过程完成后,在公钥交换过程中,当host发送HSM public key 时,把HSM public key的厂商签名一起下发,EPP采用厂商公钥解密签名后校验厂商的签名是否正确,确保EPP不被仿制.

  terminal发送EPP public key时,把EPP public key的厂商签名一起发送,host使用厂商公钥对签名解密后校验厂商的签名是否正确,确保EPP不被仿制.

  

 

原创粉丝点击