您现在的位置是:首页 > 技术笔记 > 密码学密码学

非对称加密

冰山2019-09-20【密码学】人已围观

简介1.非对称加密
1.1 非对称加密通信流程
1.2 RSA
1.2.1 RSA加密
1.2.2 RSA解密
1.3Go语言中实现生成公钥和私钥
1.3.1生成私钥操作流程
1.3.2生成公钥操作流程
1.4Go语言中使用RSA进行加密、解密
1.4.1公钥加密操作步骤
1.4.2私钥解密操作步骤

1.非对称加密


"非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密"

在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用非对称加密也可以称为公钥密码,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送问题,可以说非对称加密是密码学历史上最伟大的发明。

非对称加密中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。加密密钥是发送者加密时使用的,而解密密钥则是接收者解密时使用的。

仔细思考一下加密密钥和解密密钥的区别,我们可以发现:
 
1)发送者只需要加密密钥。

2)接收者只需要解密密钥。

3)解密密钥不可以被窃听者获取。

4)加密密钥被窃听者获取也没问题。

解密密钥从一开始就是由接收者自己保管的,因此只要将加密密钥发给发送者就可以解决密钥配送问题了,而根本不需要配送解密密钥。

非对称加密中,加密密钥一般是公开的。正是由于加密密钥可以任意公开,因此该密钥被称为公钥(publickey)。公钥可以通过邮件直接发送给接收者,也可以刊登在报纸的广告栏上,做成看板放在街上,或者做成网页公开给世界上任何人,而完全不必担心被窃听者窃取。

当然,我们也没有必要非要将公钥公开给全世界所有的人,但至少我们需要将公钥发送给需要使用公钥进行加密的通信对象(也就是给自己发送密文的发送者)。相对地,解密密钥是绝对不能公开的,这个密钥只能由你自己来使用,因此称为私钥(privatekey)。私钥不可以被别人知道,也不可以将它发送给别人,甚至也不能发送给自己的通信对象。

公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(keypair)。由公钥进行加密的密文,必须使用与该公钥配对的私钥才能够解密。密钥对中的两个密钥之间具有非常密切的关系(数学上的联系)一一因此公钥和私钥是不能分别单独生成的。

公钥密码的使用者需要生成一个包括公钥和私钥的密钥对,其中公钥会被发送给别人,而私钥则仅供自己使用。稍后我们将具体尝试生成一个密钥对。
 

1.1 非对称加密通信流程


下面我们来看一看使用公钥密码的通信流程,和之前一样,我们还是假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,而这一次窃听者Eve依然能够窃所到他们之间的通信内容。

在非对称加密通信中,通信过程是由接收者Bob来启动的。

1.Bob生成一个包含公钥和私钥的密钥对,私钥由Bob自行妥善保管。

2.Bob将自己的公钥发送给Alice,Bob的公钥被窃听者Eve截获也没关系。将公钥发送给Alice,表示Bob请Alice用Bob的公钥对消息进行加密并发送给他。
 
3.Alice用Bob的公钥对消息进行加密。加密后的消息只有用Bob的私钥才能够解密。虽然Alice拥有Bob的公钥,但用Bob的公钥是无法对密文进行解密的。

4.Alice将密文发送给Bob,密文被窃听者Eve截获也没关系。Eve可能拥有Bob的公钥,但是用Bob的公钥是无法进行解密的。

5.最后,在收到Alice发的密文时,Bob用自己的私钥对密文进行解密。
 
看一看在Alice和Bob之间到底传输了哪些信息。其实它们之间所传输的信息只有两个:Bob的公钥以及用Bob的公钥加密的密文。由于Bob的私钥没有出现在通信内容中,因此窃听者Eve无法对密文进行解密(密文只有用Bob的私钥才能解开)。




窃听者Eve可能拥有Bob的公钥,但是Bob的公钥只是加密密钥,而不是解密密钥,因此窃听者Eve就无法完成解密操作。
 

1.2 RSA


非对称加密的密钥分为加密密钥和解密密钥,但这到底是怎样做到的呢?让我们来看一下目前使用最广泛的公钥密码算法一一RSA。

RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Adleman )。

 1/5    1 2 3 4 5 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:分组密码

下一篇:单向散列函数

文章评论

本站推荐