对称加密和非对称加密的应用

简介

对称加密

加密和解密使用同一把秘钥。

特点:速度快效率高,适合加密大量数据。但核心问题是如何安全地将秘钥分发给通信双方。

常见算法:AES(标准最常用), DES(已经淘汰), 3DES, ChaCha20。

AES主要有三种秘钥长度AES-128、AES-192和AES-256。这里的数字代表密钥的比特数。

以AES128为例使动用地球上所有的计算机进行数十亿年的暴力破解(尝试每一个可能的密钥),成功的机会也几乎为零。

AES 算法通过对数据块(16字节)进行多轮重复的变换来实现加密。密钥越长,需要的“搅拌”轮数就越多,以确保其安全性:

  • AES-128:使用 128 位密钥,需要执行 10 轮加密。
  • AES-192:使用 192 位密钥,需要执行 12 轮加密。
  • AES-256:使用 256 位密钥,需要执行 14 轮加密。

从 10 轮增加到 14 轮,意味着 AES-256 需要比 AES-128 多进行 40% 的加密运算。

优点

  • 速度快效率高,加密和解密过程的计算量小,算法简单。这使得它非常适用于大量数据,如整个硬盘,大文件,数据库内容
  • 加密强度高:在秘钥长度相同的情况下,对称加密比非对称加密更难以被暴力破解(例如,256位的AES被认为在可预见的未来都是极其安全的)。
  • 资源消耗低:对CPU和内存需求较小,适合资源受限的环境,如移动设备,嵌入式系统。

缺点

  • 秘钥分发问题:如何将秘钥安全的传递给通讯的一方?如果被拦截怎么办?
  • 如果与N个不同对象通信,就需要管理和维护N个不同的秘钥。随着通信对象的增加,秘钥管理复杂度和成本会急剧上升。
  • 由于通信双方拥有相同的密钥,接收方可以伪造一条消息并声称来自发送方,发送方也可以否认自己发送过某条消息。无法提供法律意义上的数字签名功能。

非对称加密

简而言之可以公钥加密私钥解密。也可以私钥解密公钥加密。

使用一对秘钥,即公钥和私钥。公钥可以公开,用于加密;私钥必须保密用于解密。

优点

  • 解决了秘钥分发问题。公钥公开传播无需保密。只要确保私钥的安全,通信的机密性就能得到保障。
  • 通过数字签名(私钥签名,公钥验证),可以确认消息发送者的身份,并且发送方事后无法否认其签名过的行为。
  • 秘钥管理简单:每个用户只需要保管好自己的一个私钥,并将公钥公即可。与N个人通信,也只需要一对密钥。

缺点

  • 速度非常慢:加密和解密过程涉及复杂的数学运算(如大数分解、离散对数),计算开销比对称加密大几个数量级。不适合用于加密大量数据。
  • 资源消耗大:对CPU和内存的需求较高。

对称加密应用领域

主要用于对大量数据进行保密性保护的场景。

  1. 全盘加密:BitLocker (Windows), FileVault (macOS), VeraCrypt 等。需要加密整个硬盘分区。数据量巨大,对称加密(如 AES)的高速度是关键。
  2. 文或者文件夹加密。压缩软件,WinRAR,7-Zip的加密功能
  3. 数据库加密:对数据库中敏感字段进行加密存储。
  4. VPN通信IPsec VPN, SSL/TLS VPN(在握手成功后)。
  5. 无线网络加密:接入点(路由器)和客户端设备使用非对称机制完成身份验证后,会协商出一个对称的会话密钥,用于加密所有的无线数据。

非对称加密应用领域

  1. 数字签名:发送方用自己的私钥对消息的摘要进行加密,生成签名。接收方用发送方的公钥解密签名,并与自己计算的消息摘要对比。
  2. SSL/TLS握手
  3. 安全电子邮件PGP/GnuPG协议
  4. 加密货币:用户钱包地址本质是公钥的hash值当用户要花费加密货币时,需要用自己的私钥对交易进行签名,网络中其他节点可以用该用户的公钥来验证交易的合法性.私钥是拥有资产的唯一证明
  5. SSH认证

前向问题

假如和朋友邪心你们都从这本密码本里查找对应的密码来加密信息。如果有一天小偷偷走了这本密码本,他不仅能解密未来的所有信息,还能把过去窃听并记录下来的所有加密信息全部解密。

SSH工作原理

如今通常用非对称加密进行对称加密秘钥交换,用非对称加密进行实际通讯。

如何对server的公钥进行认证?在https中可以通过CA来进行认证,可是SSH的公钥和私钥都是自己生成的,没法公正。没法公证。只能通过Client端自己对公钥进行确认。通常在第一次登录的时候,系统会出现下面提示信息:

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

之所以用fingerprint代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。

输入yes后会出现以下信息

Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts. 
Password: (enter password) 

SSH 默认设计无法完全避免首次连接的 MITM 风险,但通过提前验证指纹、部署证书认证或结合其他安全措施,可显著降低威胁。企业环境中推荐使用 SSH 证书认证,个人用户则应严格遵循指纹验证流程。

*Diffie-Hellman 不能够安全的交换服务端的非对称加密的公钥吗 可以通过HTTPS等其他手段来交换。

直接使用基础的 Diffie-Hellman 协议来安全交换服务端的非对称公钥是不可行的,因为它缺乏身份认证环节。在实践中,我们通过一个已经可信的公钥基础设施(PKI) 来首先安全地获取服务端的公钥(通过数字证书),然后:

Last modification:October 17, 2025
如果觉得我的文章对你有用,请随意赞赏