【加密】对称加密DES和非对称加密AES、数字签名|非对称加密--公钥和私钥的区别
目录
非对称加密( Asymmetric Cryptography )
对称加密DES和非对称加密AES、数字签名
非常好的文章:《三分钟了解对称加密和非对称加密是如何工作的》https://zhuanlan.zhihu.com/p/108627377
主要加密算法有哪些:https://blog.csdn.net/baidu_22254181/article/details/82594072
对称加密
1.1 定义
指加密和解密使用相同密钥的加密算法(或是使用两个可以简单地相互推算的密钥),又叫传统密码算法。
对称密钥加密,又称私钥加密。是指信息的发送方和接收方采用同一个密钥去进行数据的加密和解密。如下图所示:
1.2 优缺点
优点:
算法公开、计算量小、加密速度快、加密效率高。
缺点:
(1)交易双方都使用同样钥匙,安全性得不到保证。
(2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
1.3 常用对称加密算法
基于“对称密钥”的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等。本文只介绍最常用的对称加密算法DES、3DES(TripleDES)和AES。
(AES:AES 加密算法的原理详解https://blog.csdn.net/gulang03/article/details/81175854)
如何把密钥发送到接收方(需要解密数据的人)?如果接收方住在我们小区,那么可以把密钥抄纸上,直接跑过去给他。但是,如果他住在别的城市,别的国家,怎么办?邮寄吗?太慢!通过 Email 发送吗?被黑客拦截了怎么办?
为了解决这个问题,就有了非对称加密。
非对称加密( Asymmetric Cryptography )
非对称加密,又称公钥加密,它解决了对称加密的缺陷,使得比特币更安全。
非对称加密和对称加密,两者的主要区别在于:对称加密使用共享(单一)密钥加密解密数据,而非对称加密使用密钥对解密数据。如下图所示,两把钥匙不同。
非对称加密(现代加密算法)
2.1 定义
- 非对称加密算法又称现代加密算法。
- 非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
- 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey)
- 公开密钥和私有密钥是一对
- 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
- 如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
- 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
特点
算法强度复杂,安全性依赖于算法与密钥。
缺点
由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
与对称加密算法的对比
- 优点:其安全性更好,非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
- 缺点:非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、ESA、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。不同算法的实现机制不同,可参考对应算法的详细资料。
经典算法-->RSA
RSA算法基于一个十分简单的数论事实:将两个大质数(素数)相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。比如:取两个简单的质数:89、97,得到两者乘积很简单8633;但是要想对8633进行因式分解,其工作量成几何增加。
使用场景:
- 支付宝开放平台的支付业务
支付宝会让你生成公私钥(openssl可以直接生成),私钥放在自己的服务端(切记),公钥上传到支付宝的商户平台,
拿到订单信息的时候,请求服务端通过私钥签名后的订单信息,
然后调用支付宝的sdk,支付宝会拿公钥来验签,验证成功之后才会进入支付选项。
- Https网络请求的SSL层
SSL层的简单过程如下:
RSA应用场景:
由于RSA算法的加密解密速度要比对称算法速度慢很多,在实际应用中,通常采取
数据本身的加密和解密使用对称加密算法(AES)。
用RSA算法加密并传输对称算法所需的密钥。
数字签名(对数据摘要加密)
数字签名是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名是非对称密钥加密技术与数字摘要技术的应用。
简单说,非对称加密可以防止数据被破解,数字签名(数字摘要)可以防止数据被篡改。
下图通信要求对信令、数据做数据完整性保护,以保证信令安全,防止系统数据被恶意篡改。
数字摘要(CRC,MD5,SHA-1等)信令认证的交互流程如下:
Hash算法是现代密码体系中的一个重要组成部分。在数字签名协议中,Hash函数扮演了一个重要的角色。对数字摘要(即Hash值)进行数字签名,在统计上认为与对文件本身进行数字签名是等效的,但是可以显著降低运算量,提高计算速度。
数字摘要与数字签名、加密等技术结合使用的过程如下:
1. 发送方S将原文信息进行Hash运算,得到Hash值,即数字摘要MD;
2. 发送方S用自己的私钥PVS,采用非对称加密算法RSA,对数字摘要MD进行加密,得到数字签名DS;
3. 发送方S用对称算法DES的对称密钥SK对原文信息、数字签名DS及发送方证书的公钥PBS采用对称算法加密,得到加密信息E;
4. 发送方S用接收方R的公钥PBR,采用RSA算法对对称密钥SK进行加密,形成数字信封DE。该过程就像将对称密钥SK,装进了一个用接收方的公钥加密的信封里。
5. 发送方S将加密信息E和数字信封DE一起发送给接收方R;
6. 接收方R将收到的数字信封DE用自己的私钥PVR解密,取出对称密钥SK;
7. 接收方R用对称密钥SK通过DES算法对接收到的加密信息E进行解密,还原出原文信息、数字签名DS以及发送方证书的公钥PBS;
8. 接收方R用发送方S的公钥PBS解密数字签名,得到数字摘要MD;
9. 接收方R将原文信息用同样的Hash算法,求得一个新的数字摘要MD1;
10. 比较两个数字摘要MD和MD1,若一致,则认为收到的就是未被篡改的原文,否则,认为原文被篡改,拒绝该签名。
原文链接:https://blog.csdn.net/DeliaPu/article/details/79881697
非对称加密--公钥和私钥的区别
主要加密算法有哪些:浅谈常见的七种加密算法及实现_https://blog.csdn.net/baidu_22254181/article/details/82594072
非对称加密
第一种用法:公钥加密,私钥解密。---用于加解密
第二种用法:私钥签名,公钥验签。---用于签名
有点混乱,不要去硬记,总结一下:
你只要想:
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;
既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
---------------------
原文:https://blog.csdn.net/qq_23167527/article/details/80614454
加密和认证
首先我们需要区分加密和认证这两个基本概念。
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
公钥和私钥
其次我们还要了解公钥和私钥的概念和作用。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
基于公开密钥的加密过程
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
- Bob将他的公开密钥传送给Alice。
- Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
- Bob用他的私人密钥解密Alice的消息。
上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
基于公开密钥的认证过程
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
- Alice用她的私人密钥对文件加密,从而对文件签名。
- Alice将签名的文件传送给Bob。
- Bob用Alice的公钥解密文件,从而验证签名。
上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
摘自:公钥和私钥的区别 - https://www.cnblogs.com/moonfans/p/3939335.html
例子:
比如,李四想给张三发送密文。
于是李四开始给张三发QQ
李四:
“hi哥们,我想给你发个密文,把你的公钥给我发过来用用。”
张三:
“没问题的,这是我的公钥: d#8yHE8eU#hb*!neb,用这个公钥加密你的信息后给我发过来吧”
李四:
“这是我想对你说的话: *&#@uehuu(**#eehu&$##bfeu&&”
《白话解释 对称加密算法 VS 非对称加密算法》https://segmentfault.com/a/1190000004461428
《白话解释 对称加密算法 VS 非对称加密算法》https://zhuanlan.zhihu.com/p/21336272