如果想要充分理解RSA签名密钥对,我们必须知道签名密钥对是什么,签名的意义,以及生成的签名密钥对存在哪里,以及整个签名密钥对的生成实现过程。
签名:
签名的定义需要自己在网上查找相关资料充分理解,这里不做详细定义性介绍,有一定基础后便可以理解这里的签名验签过程。我们收到的数据是(数据密文和数据签名作为一个整体数据块)经过会话密钥加密后数据,我们得到此密文后首先用会话密钥对密文进行解密,得到图中左侧原文和签名数据。然后对原始数据进行摘要运算,摘要运算只需要算法和设备句柄不需要密钥;然后再用签名公钥对签名数据解密,得到传输来的摘要数据;最后比对两个摘要是否正确,确定数据是否被篡改过。签名过程后面会在详细介绍
签名密钥对:非对称算法密钥对,包括签名公钥和签名私钥成对出现,公钥用来进行验签操作,私钥用来进行签名操作;签名密钥对必须UKEY内生成,加密密钥对要外面安全导入。
签名密钥对的存储:存储也就是说如何能够准确找到某个签名密钥对,PC端通过寻找设备句柄找到设备,然后通过寻找应用ID找到某个应用,在通过容器ID找到存储签名密钥对的容器,最后根据密钥ID找到索要使用的签名密钥对。这个过程是不变的,无论是CSP开发还是国密dll开发,原理不变,寻找方法改变而已。
生成签名密钥对的实现过程:
1:枚举设备,连接设备,得到设备句柄