对称加密和非对称加密的区别

前言

既然要保证数据安全,就需要进行“加密”。网络传输中,不再直接传输明文了,而是加密之后的“密文”。加密的方式有很多,但整体上可以分成两大类:对称加密和非对称加密。

一、对称加密

对称加密就是通过同一个“密钥”,将明文加密成密文,并且也能把密文解密成明文。引用对称加密之后,即使数据被截获,由于黑客不知道密钥是什么,因此就无法解密,不知道请求的内容。

 

但是,服务器同一时刻是给很多客户端提供服务的,每个人用的密钥必然不同

数据加密标准DES属于对称密钥密码体制。DES是一种加密分组密码体制。在加密前,先对整个的明文进行分组。每一个组为64位长的二进制数据。然后对每一个64位二进制数据进行加密处理,产生一组64位密文数据。最后将各组密文串接起来,即得到整个的密文。使用的密钥

占有64位(实际密钥长度位56位,外加8位用于奇偶校验。)

DES的机密性仅取决于对密钥的保密,而算法是公开的。DES的问题是它的密钥长度。56位长的密钥意味着共有2^56种可能的密钥。这种密文标准在芯片的迅速发展下,不再安全。 

服务器就需要维护每个客户端和每个密钥之间的关联关系,很麻烦。比较理想的做法,就是能在客户端和服务端建立连接的时候,双方协商确认这次的密钥是什么。

但是如果直接把密钥明文传输,黑客也会获得密钥。 

因此,密钥的传输需要加密传输,这时又需要密钥的密钥了。也就是需要引入非对称加密了。 

二、非对称加密

非对称加密要用到两个密钥,一个叫做“公钥”(pub),一个叫做“私钥”(pri)。

公钥和私钥是配对的,没有规定哪个用来加密,哪个用来解密。最大的缺点就是运算速度非常慢,比对称加密慢得多。

  • 通过公钥对明文加密,变成密文
  • 通过私钥对密文解密,变成明文

也可以反过来:

  • 通过私钥对明文加密,变成密文
  • 通过公钥对密文解密,变成明文

通常是公钥加密,私钥解密。

我们可以举一个生活中的例子:

把公钥看作是锁,私钥看作是钥匙。

A想要把重要文件交给B,但是B不在办公室。于是,B给了A一个锁(公钥),让A把文件放在B的柜子里,锁住。而开锁的钥匙,只有B手中有。这期间,无论怎样,坏人只能拿到锁,没有办法开柜子,拿到文件。

客户端是希望把自己的key安全地传给服务器,不被黑客拿到。

客户端和服务器的业务数据传输,仍然是使用对称加密的方式(对称加密速度快,成本低)。只不过,为了保证对称密钥能够安全到达服务器,这才引入非对称密钥,来保护对称密钥。在对称密钥传输完成后,就不用非对称密钥,改用对称密钥了。

这就真的万无一失了吗?那当然不是。

 

 中间人攻击,破解的关键在于让客户端能够信任公钥!!这就需要权威机构了。

如何针对证书进行校验 

1.得到初始的签名:客户端使用系统中内置的权威机构的公钥,针对上述证书中的加密签名进行解密,得到了初始的签名。我们的电脑或实际系统里,默认已经安装根证书,根证书里记录了可以信任的CA机构以及公钥。所以黑客是无法在网络中进行截获或者篡改的。

2.计算现在的签名:客户端使用同样的签名计算算法,基于证书的属性重新计算

3.比较两个签名是否相同。如果相同,说明证书中的数据都是未被篡改的原始数据包。如果签名不同,说明证书的数据被篡改过,客户端的浏览器弹框报错。

这个权威机构的作用就是让客户端信任这个公钥是安全的,是服务器给的,而不是被黑客篡改的公钥。黑客也有公钥,可以对签名进行解密,可以进行同样的校验,但不能改公钥!

黑客要篡改公钥,就需要把证书中的服务器的公钥,替换成自己的公钥。黑客需要针对证书的各个属性,重新计算签名,不然就会被客户端发现。计算完的签名,黑客不知道pri2,是无法对签名进行加密的。这也就确保了数字证书的不可伪造性。

### 对称加密非对称加密区别及使用场景 #### 一、基本概念对比 1. **密钥使用方式** - 对称加密:加密解密过程均使用同一密钥。发送方用此密钥加密数据,接收方需用相同密钥才能解密并还原数据[^3]。 - 非对称加密:采用一对密钥——公钥私钥。公钥负责加密,私钥用于解密。公钥可公开传播,而私钥必须保密[^3]。 2. **加密解密速度** - 对称加密:因其算法结构简单,执行效率较高,适合处理大规模数据的快速加密解密。 - 非对称加密:由于涉及复杂的数学运算(如大数分解或椭圆曲线),其计算成本更高,速度相对较慢,更适合小规模数据的操作[^3]。 3. **安全性** - 对称加密:依赖于单一密钥的安全性。一旦密钥泄露,整个系统的机密性将受到威胁[^3]。 - 非对称加密:基于难以逆向求解的数学难题(如素因子分解)。即便公钥暴露在外,也无法从中推导出对应的私钥,因而提供了更高的安全保障[^3]。 4. **密钥管理难度** - 对称加密:需要双方事先共享同一密钥,在分布式环境中实现安全可靠的密钥分发颇具挑战性。 - 非对称加密:仅需保护好自己的私钥即可,简化了跨域或多用户的密钥交换流程。 --- #### 二、典型应用场景分析 1. **对称加密的应用场景** - 文件加密:当用户希望对自己的文档或其他本地资源实施高强度防护时,常选用高效快捷的对称加密技术[^2]。 ```python from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes key = b'secretkey123456' cipher = Cipher(algorithms.AES(key), modes.CFB(b'ivvector123')) encryptor = cipher.encryptor() ct_bytes = encryptor.update(b"plaintext") + encryptor.finalize() ``` - 数据库加密:为了防止敏感字段被非法获取,数据库管理系统往往会对某些列启用对称加密措施。 2. **非对称加密的应用场景** - 数字签名验证:通过哈希函数生成摘要后再经由私钥签署,第三方能借助发布者的公钥确认信息真实性及其未篡改状态[^2]。 - HTTPS协议中的TLS握手阶段:初始建立连接期间运用非对称手段协商出会话专用的秘密材料(即临时对称密钥),之后转为更高效的对称模式完成后续通信交互[^4]。 --- #### 三、混合加密模型的优势体现 鉴于单独依靠任一种传统密码学体系都可能存在局限之处,现代实践中广泛采纳融合二者优点的设计思路—先利用非对称机制确立短期有效的共同秘密参数作为基础,再切换至性能优越得多的对称工作框架下运作实际业务逻辑部分。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@百思不得奇解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值