RSA公私钥特性及加解密过程

密码技术评论1,029阅读模式

RSA是一种使用不同的加密密钥与解密密钥的公钥密码体制,其命名是由提出该理论的的三人姓氏开头字母拼在一起组成。

公钥与私钥

RSA成对生成私钥与公钥,一把私钥对应一把公钥。而我们经常听到一个私钥对于多个公钥,私钥只能由一个人所拥有,而公钥可以复制多份给不同的人,本质上还是一对一关系。

公钥和私钥都可以用来加密或者解密,即公钥加密的内容只能被对应的私钥进行解密,私钥加密的内容只能被对应的公钥进行解密,这是由算法特性所决定。

在加密时,一般使用公钥加密,私钥解密。这样可以保证只有私钥的人才能去解密内容。那么反之,私钥加密,公钥解密在算法上也是成立的,但是在现实中不能这么用。因为,加密必定是想要给特定的人看,而公钥是可以复制传播、公开的,这样会导致所有拥有公钥的人都可以解密内容。

所以“私钥加密,公钥解密”不能作为加密方法,但是可以用来确认身份,称之为“签名”。

公钥加密,私钥解密

经典的加解密操作过程就是使用收信方的公钥加密,收信方的私钥解密,如下面的例子。

假设Alice向Bob发送私密信件,需要加密内容,则:

  • Bob生成一对公钥和私钥。
  • Bob传递自己的公钥给Alice,Alice用Bob的公钥对消息内容进行加密。
  • Bob接收到Alice加密的消息,利用自己的私钥对消息进行解密。

这个过程中,有两次传递过程,Bob的公钥和加密内容,即使都被不怀好意的人截获,也不会泄露消息。

但同时有个问题,就是Bob无法知晓该信件是否是由Alice发出的,即无法确定信息来源身份。

私钥加密,公钥解密

假设上述例子中使用不同加密的操作,Alice使用自己的私钥加密内容,然后向Bob发送消息。(发信方私钥加密,发信方公钥解密)。

由于使用Alice的私钥加密过的内容,只能用Alice的公钥去解密,而世界上只有Alice拥有Alice自己的私钥,所以可以确认Alice身份。所以,当Bob收到信后需要使用Alice的公钥去解密,如果解密成功,那么说明这个加密内容来自于Alice,这就是签名的基本原理。

但是,现实情况中这样只是这样加密太不安全了,加密内容只需使用公钥就可以解开,就等于完全公开。需要增加改进方案:就是使用Bob的公钥再加密一次,这样是为了只让Bob看,因为只有用Bob的私钥才能解开。那么这条信息相当于加了两次密,第一次加密时确保发信人是Alice(核对签名),第二次加密,是保证只有Bob能解开(信息保护)。

RSA签名过程示例:

签名过程:

Alice将内容进行hash得到消息摘要,并使用私钥对消息摘要进行加密,生成签名

Alice使用Bob发来的公钥对“摘要+签名”加密,得到密文,并发送给Bob。

验签过程:

Bob使用自己的私钥对密文解密,获得明文消息摘要和签名。

Bob数据偶Alice的公钥解密数字签名,获得消息摘要。

Bob用相同的方案计算消息摘要,并与上一步获得的消息摘要对比,如果相关则验签成功。

 

 

 

 

椭圆曲线密码算法ECC及secp256k1 密码技术

椭圆曲线密码算法ECC及secp256k1

ECC是椭圆曲线加密(Elliptic Curve Cryptography)的缩写,在网络通信以及区块链系统中最常用的加密算法之一。 定义 一条椭圆曲线就是一组被定义的且满足   的点集。 不同的椭...