签名验签原理(转载)

一、公钥加密

假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。

我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用 数字2,就是我的私钥,来解密。这样我就可以保护数据了。

我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥, 只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。


二、私钥签名

如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知 道我的公钥是1,那么这种加密有什么用处呢?

我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他 解密看是不是c。他用我的公钥1解密,发现果然是c。 这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。

总结:公钥和私钥是成对的,它们互相解密。 公钥加密,私钥解密。(RSA) 私钥数字签名,公钥验证。


三、签名验签服务器工作大概流程

原文进行hash,得到hash值,个人用自己的私钥对hash值加密得到一个签名值,将自己的原文,签名值,公钥证书发送给银行,银行用根证书验证对方的公钥证书是否有效,有效取出公钥证书中的公钥来,将个人发来的签名值进行解密,得到hash值,将原文进行hash得到一个hash值,进行对比

签名验签原理(转载)_第1张图片


四、个人见解

  1. 现在国内网银基本上用的都是公钥解密,私钥签名加密,称之为不对称加密。银行U盾签名验签的过程是:1.申请U盾,银行核实信息,并将相关信息绑定U盾,再将U盾(内含私钥、公钥)下发给用户。银行保留证书的公钥信息或用户自行将公钥证书导入到银行服务器中,并与用户绑定。2.用户在网银做交易,和银行之间交互的业务数据请求称为报文原文,用户使用U盾签名,用私钥将报文原文加密,并将加密后的密文和原文一起发送到银行。3.银行的验签服务器收到信息后,根据原文及用户信息,找到用户的公钥,再根据公钥,密文,原文去验证签名是否正确(用公钥解密,并与原文比较),验证通过则继续这次交易,验证不通过将认定为不合规交易,终止交易。银行通过数字签名保证了数据的完整性和安全性(任何修改原文或密文的行为会导致验签不通过),同时也保证了交易的来源确定性,私钥只有U盾持有者有。

  2. 一般证书是否合法验证三方面信息:1、证书是否是合法CA机构颁发,技术上来说就是验证上级CA2、证书的有效期是否正确,一般证书有效期是一年,取服务器时间对比证书中的过期时间来比较即可3、证书是否在证书黑名单-吊销列表CRL中,CRL由CA中心签发一般24小时更新一次通过以上验证后说明证书是有效的数字签名是否有效,这就是密码学的原理了,目前银行使用的非对称密码标准是国密SM2椭圆曲线算法标准。

你可能感兴趣的