惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Schneier on Security
Schneier on Security
K
Kaspersky official blog
Know Your Adversary
Know Your Adversary
Project Zero
Project Zero
F
Fox-IT International blog
Recorded Future
Recorded Future
P
Privacy International News Feed
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
Cyberwarzone
Cyberwarzone
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Full Disclosure
雷峰网
雷峰网
爱范儿
爱范儿
有赞技术团队
有赞技术团队
T
Threat Research - Cisco Blogs
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
T
Tenable Blog
D
DataBreaches.Net
T
The Exploit Database - CXSecurity.com
S
Securelist
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
Intezer
S
SegmentFault 最新的问题
博客园_首页
Google DeepMind News
Google DeepMind News
A
Arctic Wolf
O
OpenAI News
Y
Y Combinator Blog
Microsoft Azure Blog
Microsoft Azure Blog
Latest news
Latest news
D
Docker
P
Proofpoint News Feed
J
Java Code Geeks
A
About on SuperTechFans
Application and Cybersecurity Blog
Application and Cybersecurity Blog
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
SecWiki News
SecWiki News
The Cloudflare Blog
Google Online Security Blog
Google Online Security Blog
S
Security @ Cisco Blogs
Martin Fowler
Martin Fowler
李成银的技术随笔
博客园 - 聂微东
T
Threatpost
N
News | PayPal Newsroom

方寸之間

修复 Arch Linux 的内核缺失问题 - 方寸之間 安装定制化 Vim - 方寸之間 树莓派配置旁路由过程记录 - 方寸之間 Cloudflare Tunnel 不完全上手指南 - 方寸之間 解除 New Bing 地区和浏览器限制的方法 - 方寸之間 FRP 上手教程 - 方寸之間 深入理解 Linux nohup 命令 - 方寸之間 C++智能指针是什么 - 方寸之間 如何恢复 Windows EFI 分区 - 方寸之間 Scaleway IPV6 server 申请及使用攻略 - 方寸之間 Arch Linux 升级系统提示签名无效 - 方寸之間 Arch Linux 音响有杂音的解决办法 - 方寸之間 Arch Linux 如何切换内核 - 方寸之間 Django 项目时区更改错误的解决方案 - 方寸之間 超简单的 Arch Linux + Windows 双启动教程 - 方寸之間 使用 UFW 配置 Linux 防火墙 - 方寸之間 Git 中的一个特殊 hash - 方寸之間 深入理解数据库事务 - 方寸之間 CRLF 和 LF 之间的区别与联系 - 方寸之間 DNS 的更新是如何工作的? - 方寸之間 浅析 Linux 的 cron 命令 - 方寸之間 如何快速查看 github 代码库中早期 commits - 方寸之間 黑科技:使用 GitHub 搭建自己的短链接服务 - 方寸之間 Build site with Franklin.jl - 方寸之間 iwd 的使用教程 - 方寸之間 超好用的 UML 工具推荐 - 方寸之間 ArchLinux 安装配置笔记 (Updated) - 方寸之間 如何将 Julia 添加到 Jupyter Notebook - 方寸之間 费曼技巧:最好的学习方式 - 方寸之間 How to Create Linux Desktop Entry - 方寸之間 Make a TODO robot with Github Actions - 方寸之間 C++继承 多态 虚函数 - 方寸之間 C++ inline 关键字详解 - 方寸之間 C++ Static 关键字详解 - 方寸之間 C++ type conversion notes - 方寸之間 Solution for _CRT_SECURE_NO_WARNINGS error - 方寸之間 IR Homework - 方寸之間 Customize Ubuntu themes, icons and Shell - 方寸之間 恢复右键菜单的新建命令 - 方寸之間 Hugo+Github 搭建个人博客 - 方寸之間
PGP 工作原理详解 - 方寸之間
Mercas · 2023-02-18 · via 方寸之間

PGP 是什么,它的工作原理及应用场景是什么?本文对此进行了详细的解释。

前言#

最近在浏览博客的时候发现博主的 PGP Key 页面,虽然之前知道是用于邮件通信加密的,但是具体原理及使用却不太清楚,所以找了时间查阅了相关资料,整理一下 PGP 加密的一些内容。

PGP 定义#

Pretty Good Privacy(PGP)是一个加密程序,为数据通信提供加密隐私身份验证。PGP 用于对文本、电子邮件、文件、目录和整个磁盘分区进行签名、加密和解密,并提高电子邮件通信的安全性。PGP 加密使用散列数据压缩对称密钥加密,最后是公钥加密的串行组合。其中最关键的是两种形式的加密的组合:对称密钥加密(Symmetric Cryptography)和非对称密钥加密(Asymmetric cryptography)。

PGP 工作原理#

在实现 PGP 加密的过程中,首先使用对称密钥加密算法对原始数据进行加密。对称密钥加密算法包括 DES、AES、Blowfish 等,这些算法能够快速地加密和解密数据,但是需要发送方和接收方之间共享密钥。

为了避免在网络上传输密钥,PGP 使用了公钥加密算法。公钥加密算法是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。公钥加密算法包括 RSA、DSA 等,这些算法具有极高的安全性,但是加密和解密速度比对称密钥加密算法慢得多。

PGP 将对称密钥加密,并使用接收方的公钥进行加密。这种方式可以保证密钥的安全性,同时可以确保只有接收方可以解密对称密钥,从而保护了数据的机密性。接收方使用自己的私钥对加密的对称密钥进行解密,然后使用对称密钥对数据进行解密。这种方式既可以保护数据的安全性,也可以提高加解密的速度。

PGP 工作原理示意

PGP 使用两种类型的加密算法来保护数据:对称密钥加密和公钥加密。对称密钥加密是一种使用相同密钥加密和解密的算法,因此在加密和解密之间需要共享密钥。而公钥加密则是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。下面我将简单介绍一下这两种算法的工作原理。

对称密钥加密#

对称密钥加密是一种使用相同密钥加密和解密的算法,因此在加密和解密之间需要共享密钥。对称密钥加密的过程如下:

  1. 发送方选择一个加密密钥,并使用它将原始数据加密。
  2. 加密后的数据被发送到接收方。
  3. 接收方使用相同的密钥将加密的数据解密。

尽管对称密钥加密非常高效,但它有一个明显的缺点,即需要在发送方和接收方之间共享密钥。如果这个密钥被黑客或其他人获取,数据将无法得到保护。为了解决这个问题,PGP 使用了另一种加密算法:公钥加密。

公钥加密#

公钥加密是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。公钥加密的过程如下:

  1. 发送方获取接收方的公钥,并使用它将对称密钥加密。
  2. 加密后的对称密钥和加密后的数据被发送到接收方。
  3. 接收方使用自己的私钥将加密的对称密钥解密。
  4. 接收方使用解密后的对称密钥将加密的数据解密。

公钥加密允许发送方使用接收方的公钥加密数据,而无需共享对称密钥。这样,即使黑客获得了加密后的数据,也无法使用它,因为他们没有接收方的私钥来解密对称密钥。

PGP 示例#

我用常用的加密电子邮件来举个例子,具体的工作流程是:

用户 A 要给用户 B 发送邮件。

  1. 用户 B 生成一对密钥(公钥和私钥),将公钥发送给用户 A。
  2. PGP 软件使用算法生成一个随机的会话密钥,这个密钥是一个很大的数字,而且只使用一次。
  3. 用户 A 用刚刚生成的密钥,加密邮件,并使用用户 B 的公钥对该密钥进行加密。
  4. 最后,用户 A 将加密的邮件及密钥发送给用户 B,用户 B 使用自己的私钥进行解密,得到会话密钥,进而可以解密完整的邮件。

PGP 加密用途#

PGP 有三个主要用途:

  • 发送和接收加密电子邮件。
  • 验证向您发送此消息的人员的身份,即数字签名验证
  • 加密数据。

其中,发送安全电子邮件 - 是迄今为止 PGP 的主要应用。数字签名是一种基于公钥加密的技术,用于证明信息的发送者身份和信息完整性,以及防止信息被篡改。发送方使用自己的私钥对消息的摘要进行加密,生成数字签名。接收方使用发送方的公钥对数字签名进行解密,并生成消息的摘要,比对两个摘要是否一致,来验证消息的完整性和身份。如果数字签名验证失败,则说明消息可能被篡改或者来自伪造的发送方。

总结#

PGP 使用对称密钥加密算法保护数据机密性,使用公钥加密算法保护对称密钥的安全性,使用数字签名技术验证消息的完整性和身份。这种结合了对称密钥和公钥加密的方法,可以在安全性和效率之间取得平衡。PGP 已经成为一种被广泛应用的数据加密和数字签名的标准,保护了用户的隐私和安全。

Reference#

Pretty Good Privacy - Wikipedia

What is PGP Encryption and How Does It Work? | Varonis

Public Key Cryptography Simply Explained | Hacker Noon