【加密】对称加密DES和非对称加密AES、数字签名

非常好的文章:《三分钟了解对称加密和非对称加密是如何工作的》https://zhuanlan.zhihu.com/p/108627377

对称加密

1.1 定义

指加密和解密使用相同密钥的加密算法(或是使用两个可以简单地相互推算的密钥),又叫传统密码算法。

对称密钥加密,又称私钥加密。是指信息的发送方和接收方采用同一个密钥去进行数据的加密和解密。如下图所示:

preview

1.2 优缺点

         优点:

        算法公开、计算量小、加密速度快、加密效率高。

         缺点:

(1)交易双方都使用同样钥匙,安全性得不到保证。

(2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

1.3 常用对称加密算法

基于“对称密钥”的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等。本文只介绍最常用的对称加密算法DES、3DES(TripleDES)和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

发布了583 篇原创文章 · 获赞 96 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/bandaoyu/article/details/105537760
今日推荐