① 使用非对称加密及解密的过程详解
前面我们知道对称加密是对一份文件进行加密,且对应的只有一个密码?例如:A有一份文件,她使用对称加密算法加密后希望发给B,那么密码肯定也要一起交给B!这中间就会出现安全隐患,如果密码被第三方L嗅探到并截取,那么加密的文件就赤裸裸的出现在L的面前。
如果A有很多文件需要加密并发送给很多人!那么就会生成很多的密钥,这么多的密钥保管就成了一个很棘手的问题,况且还要把密钥发给不同的人!这无疑增添了很多的风险!
如何能改善这种安全性不高的加密算法,数学家们发现了另一种加密方式。称之为《非对称加密》asymmetric encryption。非对称加密算法需要两个密钥【公开密钥】(publickey)和【私有密钥】(privatekey)。下面简称【公匙】、【私匙】
【公钥】与【私钥】是一对,如果使用公开密匙对数据进行加密,那么只有对应的私有密匙才能解密;相反,如果使用私有密匙对数据进行加密,那么只有对应的公开密匙进行解密。因加密解密使用的是两种不同的密匙,所以这种算法称之为【非对称加密算法】。
在使用非对称加密前,A和B先各自生成一对公匙和私匙,然后把各自的公匙交给对方,并把自己的私匙妥善保管!如图所示:
在A给B发送信息之前,首先使用B发给A的公匙对信息进行加密处理,然后发送给B,B在收到密文之后,使用自己的私匙解密;B在给A回复信息时,先使用A发来的公匙对回复信息加密,然后发出,A收到密文后使用自己的私匙解密即可!如图所示:
② 密码学中的对称加密和非对称加密
一、对称加密
概念:加密和解密用同一对密钥的加密技术,叫对称加密。
加密方式:DES、3DES、AES,安全性依次从低到高。
示意图:
二、非对称加密,也称公开密钥
概念:加密和解密用 不同的密钥 的加密技术,叫非对称加密。
典型的加密方式:RSA算法
加密步骤:
三、两种方式各自的缺点:
四销迅模、混合密码系统
概念:将对称密码和公钥密码的优势相结合的方法
优点:解决了公钥密码速度慢的问题;通过公钥密码解决昌弯了对称密码的密钥配送问题。
应用:网络上的密码通信所用的SSL/TSL都运用了混合密码系统。
会话密钥的生成:
加密步骤:
最终,发出去的消息包括两部分:
解密步骤:
示意图:
1. 为什么加密消息主体要用对称加密?
因为消息主体信息量大,发送频繁,而对称加密速度快,效率高。
2. 为什么加密会话密钥要用非对称加密?
因为会话密钥一般比较短,而且通常只需要发送一次即可,所亏缓以对速度要求不高,但对安全性要求很高,非对称加密满足这个要求。
③ 加密那些事--非对称加密详解
“非对称加密也叫公钥密码:使用公钥 加密 ,使用私钥解密”
在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用非对称加密,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送的问题。
非对称加密中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。需理解公钥密码,清楚地分加密密钥和解密密钥是非常重要的。加密密钥是发送者加密时使用的,而解密密钥则是接收者解密时使用的。
加密密钥和解密密钥的区别:
a.发送者只需要加密密钥
b.接收者只需要解密密钥
c.解密密钥不可以被窃听者获取
d.加密密钥被窃听者获取也没关系
也就是说,解密密钥从一开始就是由接收者自己保管的,因此只要将加密密钥发给发送者就可以解决密钥配送问题了,而根本不需要配送解密密钥。
非对称加密中,加密密钥一般是公开的。真是由于加密密钥可以任意公开,因此该密钥被称为公钥(pulickey)。相对地解密密钥是绝对不能公开的,这个密钥只能由你自己来使用,因此称为私钥(privatekey)****。私钥不可以被别人知道,也不可以将它发送给别人。
公钥和私钥是"一一对应的",一对公钥和私钥统称为密钥对(keypair)。由公钥进行加密的密文,必须使用与该公钥配对的私钥才能解密。密钥对中的两个密钥之间具有非常密切的的关系(数学上的关系)。因此公钥和私钥不能分别单独生成。
非对称加密通讯流程
假设A要给B发一条信息,A是发送者,B是接收者,窃听者C可以窃听他们之间的通讯内容。
1.B生成一个包含公钥和私钥的密钥对
私钥由B自行妥善保管
2.B将自己的公钥发送给A
B的公钥被C截获也没关系。将公钥发给A,表示B请A用这个公钥对消息进行加密并发送给他。
3.A用B的公钥对消息进行加密
加密后的消息只有B的私钥才能够解密。
虽然A拥有B的公钥,但用B的公钥是无法对密文进行解密的。
4.A将密文发送给B
密文被C截获也没关系,C可能拥有B的公钥,但是B的公钥是无法进行解密的。
5.B用自己的私钥对密文进行解密。
参考下图
RSA是一种非对称加密算法,它的名字由三位开发者。即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Leonard)
RSA的加密工程可以用下来公式来表达,如下。
也就是说,RSA的密文是对代表明文的数字的E次方求modN的结果。换句话说,就是将明文自己做E次乘法,然后将其结果除以N求余数,这个余数就是密文。
RSA的加密是求明文的E次方modN,因此只要知道E和N这两个数,任何人都可以完成加密的运算。所以说E和N是RSA加密的密钥。也就是说E和N的组合就是公钥
有一个很容易引起误解的地方需要大家注意一一E和N这两个数并不是密钥对(公钥和私钥的密钥对)。E和N两个数才组成了一个公钥,因此我们一般会写成 “公钥是(E,N)” 或者 “公钥是{E, N}" 这样的形式,将E和N用括号括起来。
1.3.2 RSA解密
RSA的解密和加密一样简单,可以用下面的公式来表达:
也就是说,对表示密文的数字的D次方求modN就可以得到明文。换句话说,将密文自己做D次乘法,在对其结果除以N求余数,就可以得到明文 。
这里所使用的数字N和加密时使用的数字N是相同的。数D和数N组合起来就是RSA的解密密钥,因此D和N的组合就是私钥。只有知道D和N两个数的人才能够完成解密的运算。
大家应该已经注意到,在RSA中,加密和解密的形式是相同的。加密是求 "E次方的mod N”,而解密则是求 "D次方的modN”,这真是太美妙了。
当然,D也并不是随便什么数都可以的,作为解密密钥的D,和数字E有着相当紧密的联系。否则,用E加密的结果可以用D来解密这样的机制是无法实现的。
顺便说一句, D是解密〈Decryption)的首字母,N是数字(Number)的首字母 。
RSA加密和解密
声明该文章仅做个人学习使用,无任何商业用途。
原文链接:https://blog.csdn.net/atlansi/article/details/111144109
④ 科普知识—对称加密和非对称加密
区块链技术中广泛应用到非对称加密技术,非对称加密技术保证了信息在传输过程中的安全性,非对称加密技术是在对称加密技术上发展来的。本文主要阐述对称加密技术和非对称加密技术的概念和特点,并举例说明。
对称加密就是用相同的密钥对原文进行加密和解密,通信双方共用一个密钥。
基于对称加密算法传输信息“ABC”的步骤。
(1)发送方通过密钥对原文"ABC"进行加密,得到密文"abc",并发送给接收方。密钥为将字母转换为对应的小写字母,大写A转换为小写a,“BC”同理转换为“bc”。
(2)发送方将密钥发送给接收方。
(3)接收方通过密钥对密文进行解密,反推出原文“ABC”。
对称加密算法的缺点:无法确保密钥被安全传递。
密钥就是传说中的“密码本”。密文在传输过程中是可能被第三方截获的,关键就落在“密码本”上,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,所以经常看到电影、电视剧的情节中通过各种手段保护密码本的安全送达。
非对称加密技术很好的解决了对称加密技术密钥无法安全传递的问题。
非对称加密有两个密钥,即公钥(Public Key)和私钥(Private Key),对数据进行加密和解密使用不同的密钥。使用公钥进行加密,使用私钥进行解密。
非对称加密算法中私钥就是一个随机数,基于不同的算法生成不同的随机数,如:SHA256算法生成的是256位的随机数,通常是调用操作系统的随机数生成器来生成私钥,私钥通过一定的加密算法推导出公钥,私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。
基于非对称加密算法传输信息“hello world”的步骤。
(1)发送方使用接收方的公钥对待发送信息“hello world”加密,此处需注意:信息发送给谁,使用谁的公钥进行加密,公钥是可以公开的,类似于银行卡账户。
(2)发送方将加密后的密文通过网络发送给接收方。
(3)接收方接收到密文后,使用自己的私钥对密文进行解密,从而获得传输信息“hello world”。
采用非对称加密算法即使第三方在网络上截获到密文,但其无法获得接收方的私钥,也就无法对密文进行解密,作为接收方务必保证自己私钥的安全,所以非对称加密技术解决了密钥传输过程的安全性问题。
本文主要阐述对称加密技术和非对称加密技术的概念和特点,并举例说明。对称加密是通信双方共用密钥,无法保证密钥的安全传递;非对称加密使用接收方的公钥对数据加密,接收方使用自己的私钥解密,即使信息被第三方截获,由于没有接收方的私钥,也无法破解密文。
⑤ 非对称加密算法
非对称加密算法就是用两个密钥加密解密的算法。
加密的传输过程分为两部分,一部分为 身份认证 ,用户鉴别这个用户的真伪;另外一部分为 数据加密 ,用于数据的保密。这两部分功能都需要用到非对称加密技术。
首先是身份认证,通讯的数据可以这样进行处理,将用户的信息(用户名、密码等)用该用户的私钥进行加密,然后再进行传输,而在服务器端会保存此用户的公钥,用此用户的公钥对传过来的信息进行解密,就可以得到正确的明文,这样就完成了一次安全的网络通讯。
通讯过程的示例如下图所示,Alice用自己的私钥对明文进行加密后传输到服务器,服务器上的用户(例如Bob)拥有很多用户的公钥,因此使用Alice的公钥对密文进行解密,如果密钥正确的话,就可以解密出明文,也就完成了对Alice的身份认证。
然后是数据加密,数据加密和数据认证正好相反,使用接收方的公钥对数据进行加密,传输的过程中,即使数据被黑客截获,也无法使用这些密文,接收方收到密文后,用自己的私钥对密文进行解密,从而完成了一次数据的加密传输。
通讯过程的示例如下图所示,Alice需要发给Bob一段加密的信息,因此Alice就用Bob的公钥对明文进行加密后传输给Bob,Bob收到信息后,使用自己的私钥对密文进行解密,就可以解密出明文,也就完成了对Alice的发来密文的解密过程。
公钥用于加密、私钥用于解密,这才能起到加密作用
因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的!
若用公钥加密,那只能由私钥解密,而私钥是私有不公开的,只能由特定的私钥持有人解密,保证的数据的安全性。
但是有另一种密钥使用场景- 签名和验签 :
私钥用于签名、公钥用于验签
签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。
私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。
所以我理解,签名和验证签就是身份认证的过程。