V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jianglibo
V2EX  ›  程序员

为什么端到端加密的 PGP 邮件没有被广泛使用?

  •  1
     
  •   jianglibo ·
    PRO
    · 19 小时 13 分钟前 · 2210 次点击

    看起来似乎是使用太复杂的缘故,真正的原因是所有邮件巨头对此项技术采取消极接纳的结果,如果积极推进使用的复杂性会马上得到解决。那么他们为什么要抗拒呢?一旦采用端到端的 PGP 加密,那些邮件服务商无法看到邮件的内容,无法扫描,也无法提供和内容关联的广告,总之无法从用户的邮件中获取信息。

    当然作为程序员要面对现实,抱怨不解决任何问题,但我可以使用 PGP 加密,当越来越多的人使用 PGP 加密通讯时,反而会促进邮件厂商的跟进。目前的情况下,使用一款支持 PGP 的邮件客户端是普通人入门 PGP 加密邮件的最佳选择,thunderbird 几乎是不二的选择。

    我是 [email protected] 要发送一封加密的邮件给 [email protected] 。打开 thunderbird 发送邮件的界面:

    你会看到加密按钮是灰掉的,你需要在账号设置的端到端加密界面生成自己的密钥对。

    密钥对生成之后:

    这里有个发布按钮,这个会将你的邮箱的公钥发布到 keys.openpgp.org ,这个有什么用?等一下你给 [email protected] 发邮件时就会需要 b 的公钥,除非通过其它方式获取 b 的公钥,不然你没法给 b 发加密邮件。

    当你的 [email protected] 账号有了密钥对之后,thunderbird 发送邮件的界面就会出现变化。此时加密按钮激活了。

    然后当你输入 [email protected] 之后,并且点击加密按钮,此时 thunderbird 系统内还没有 [email protected] 的公钥,它会尝试获取这个电邮的公钥,比如 KWD ,keys.openpgp.org

    点击解决,可以看到不同的导入方法,其中包括文件导入。

    当你导入之后,就可以发送加密邮件了。 当 a 发给 b 时,用 b 的公钥加密,用 a 的私钥对内容签名(防篡改).反之则反之。

    接下来谈谈 KWD ( web key directory),直接以例子说明可以直观的了解它的应用范围。比如一个邮箱 [email protected] ,如果邮箱主人同时拥有 never-lost.app 的域名,那么它可以在自己的站点部署 KWD 端点,类似于域名验证的挑战,都是在.well-known 的目录下。比如:

    email: [email protected]
    localpart: sky
    domain: never-lost.app
    wkd_hash: kh566nfd7omkgp7cxgo7qgx51gsmwefr
    wkd_policy_url: https://never-lost.app/.well-known/openpgpkey/policy
    wkd_hu_url: https://never-lost.app/.well-known/openpgpkey/hu/kh566nfd7omkgp7cxgo7qgx51gsmwefr
    policy_record_exists: yes
    hu_record_exists: yes
    key_id: B4621D5A04EB1A1C
    fingerprint: F08FD399804724A1307CE38DB4621D5A04EB1A1C
    

    这个有什么用呢?当你在 thunderbird 发送邮件的界面输入 [email protected] 时,thunderbird 显示前面图片中的黄色警告,然后你点击 在网上寻找公钥,thunderbird 就会从该网站获取公钥。 如果域名不是你的,那么可以将你的公钥发送到 keys.openpgp.org ,thunderbird 也会从该网站查找。

    怎么样?准备发送你的第一封 PGP 加密邮件了吗?如果你没有可接受加密邮件的邮箱,可以发送到 [email protected] ,会自动回复加密的邮件。

    PGP 加密的私钥在你手里,你掌控你的信息。不是 Google ,微软,qq 或网易,如果你查看网页版的邮件,看到的是加密的内容(通常是附件形式)。

    51 条回复    2026-02-16 10:02:46 +08:00
    Owenjia
        1
    Owenjia  
       19 小时 7 分钟前   ❤️ 1
    依稀记得在本站,有人问为什么不用 pgp 代替 base64 编码邮箱防爬虫,被喷了好多楼……
    jianglibo
        2
    jianglibo  
    OP
    PRO
       18 小时 53 分钟前 via Android
    @Owenjia PGP 确实不是用来加密邮件内容,和防爬虫无关。PGP 就是确保通信双方知道内容,别人不知道。
    jianglibo
        3
    jianglibo  
    OP
    PRO
       18 小时 52 分钟前 via Android
    @jianglibo typo ,PGP 是用来加密邮件内容。
    sn0wdr1am
        4
    sn0wdr1am  
       18 小时 52 分钟前   ❤️ 1
    对普通人来说,使用复杂。
    对于邮件服务商来说,看不到邮件内容,没法进行分析,没法窥探用户隐私,对投放广告没有任何好处,抵制使用。
    stella
        5
    stella  
       18 小时 41 分钟前   ❤️ 1
    正确地使用 PGP 过于复杂:要保护 PGP 私钥文件、记住密码、定期轮换,更别提还有各种密钥剥离...正因此,也有许多密码学方面的人士批评 PGP 跟不上当今环境。
    jianglibo
        6
    jianglibo  
    OP
    PRO
       18 小时 35 分钟前 via Android
    这里没有投票功能,不知有多少人正真的发送和接收过一个 PGP 加密的邮件?
    artiga033
        7
    artiga033  
       18 小时 23 分钟前 via Android
    私钥:大部分非技术群体根本没有自己管理自己的私钥的能力或者学习这种能力的意愿。

    公钥:依然需要中心化的方式来分发,你想用 openpgp 的,他想用 mozilla 的,还有人想用 ubuntu 的,我甚至想用自己的。就算商业公司入局,那也顶多是再多几个 keyserver.(gmail.com/live.com/qq.com/163.com)继续各自为战...
    nicaiwss
        8
    nicaiwss  
       18 小时 11 分钟前 via iPhone
    主要就是公钥没有可靠渠道分发,中间人攻击太容易,建议是政府给每个人生成一对,和身份证绑定,终生不能替换,只能在政府网站查。
    kkk9
        9
    kkk9  
       17 小时 59 分钟前   ❤️ 2
    @nicaiwss #8 终生不能替换,泄露私钥就直接枪毙是吧😂😂
    MFWT
        10
    MFWT  
       17 小时 39 分钟前
    @jianglibo 我收发过,但第一印象还是太复杂了,各种 Key 很容易搞混用途/不正确配置
    crackself
        11
    crackself  
       17 小时 35 分钟前 via iPhone
    因为解密相对麻烦
    jianglibo
        12
    jianglibo  
    OP
    PRO
       17 小时 28 分钟前 via Android
    @MFWT 对着这个帖子操作应该不算复杂,但有些人一直用网页端邮箱,甚至不知道有邮件客户端。不过 thunderbird 简化了常见邮箱的登录,还是值得尝试一下。
    nbndco
        13
    nbndco  
       17 小时 9 分钟前 via iPhone
    绝大多数的用户的需求从来不是不让 Google 根据邮件内容显示广告,而且让 Google 根据邮件内容对邮件进行分类,垃圾邮件,风险邮件识别。没有需求的东西自然没人用。
    MacsedProtoss
        14
    MacsedProtoss  
       17 小时 2 分钟前 via iPhone   ❤️ 1
    @nicaiwss gov 拿着?那不就是裸奔吗 给 gov 等于公开私钥
    现在的国密就是这样 gov 想看内容就能看内容 你的私钥仅限于签名
    ryd994
        15
    ryd994  
       16 小时 58 分钟前 via Android
    @nicaiwss #8 标准的错误用法:由第三方为你生成密钥
    PGP 密钥应该由你自己生成,只传输公钥,私钥严格保管。严格的最好是在 TPM 智能卡里直接生成,任何人包括你自己都无法读取,只能由智能卡进行加解密操作。
    智能卡丢了怎么办?预先互信几个备用的智能卡,丢了就直接挂失。
    busier
        16
    busier  
       16 小时 52 分钟前 via iPhone
    客户端的问题

    thunderbird 使用起来太烦琐

    而 delta chat 则可以傻瓜式使用电子邮件+PGP
    marsteel
        17
    marsteel  
       16 小时 51 分钟前
    普通的邮件服务商怎么能提供这种服务,如果界面提供加密,你需要把私钥告诉邮件服务商。你要安全就只能在网页之外自己用客户端自己加密。
    seers
        18
    seers  
       16 小时 37 分钟前 via Android
    我司公司邮箱都是要导入个人证书才能解密
    jianglibo
        19
    jianglibo  
    OP
    PRO
       16 小时 26 分钟前 via Android
    @seers 这个是 s/mime ,企业用的多
    Destiny1332
        20
    Destiny1332  
       16 小时 12 分钟前
    Muniesa
        21
    Muniesa  
       15 小时 55 分钟前 via Android
    了解过但从没用过,主要现在发邮件要么是工作汇报,要么就是找什么客服,加密还是太麻烦
    busier
        22
    busier  
       15 小时 48 分钟前 via iPhone
    这个技术本来就是用来防止邮件运营商看到邮件内容,存在对抗审查的嫌疑。显然不会推广提倡使用。最好大家都不知道还有这么个东西。目前只有小范围公司使用。

    你在看看市面上,所有使用 E2EE 技术的通信软件是个什么下场,就知道开发这类产品不但没市场,而且还有可能进去。
    YGHMXFAL
        23
    YGHMXFAL  
       15 小时 6 分钟前 via Android
    ①首先,2026 年了,推荐使用 AGE+MiniSign 来替代 OPENPGP 家族

    这俩货的设计哲学是“简单到死”,无配置文件,没有一堆不必要地复杂模块和设计

    而且只使用单一高强度算法,维护和审查都大大便利

    ②OPENPGP 和类似 E2EE 通讯方案没有普及绝对不是因为其复杂性,通过概念抽象和防呆封装,可以让文科生在 10 分钟内结束第一轮加密通讯,因为我就干过这事儿,我给医学生侄女打造了一套 GNUPG+IPFS 的大文件传输方案,因为她的作业/教案里有很多解剖/母婴类内容经常被 QQ 审查,她和她的同学们师兄师姐师弟师妹们通过我的握手服务器(位于墙内)已经交换了公钥 1300+次,所以“复杂性”绝对不是问题

    ③问题在于“对抗审查”这个属性必然被绝大多数商业公司和政府所痛恨,因此它们没有动力推广/优化,甚至它们现阶段没有“敢加密就封号”我就已经谢天谢地了

    ④最后是根本硬伤:

    公钥交换没有办法,硬核专家只信任自己当面交换的公钥,普通小白会信任任何看起来像公钥的乱码,大多数时候这就像一场闹剧

    更别提还存在中间人攻击,给我侄女打造的方案之所以可以运转,那是因为她们都是同学,随时可以见面校验公钥

    找不到什么好办法来解决公钥交换这个根本硬伤
    YGHMXFAL
        24
    YGHMXFAL  
       15 小时 1 分钟前 via Android
    @busier #16 容易被服务商判定滥用,速率太高了
    busier
        25
    busier  
       13 小时 57 分钟前 via iPhone
    @YGHMXFAL 如果你说的速率太高是指发邮件频繁容易被封的话,这显然与客户端软件无关,不是 delta chat 独有的问题。

    邮件系统本来就是去中心化系统,有一定抗封锁能力。

    被封了就换其它邮件服务商,甚至自建,而不用吊死在一棵树上。

    虽然大厂邮件系统往往不接受自建邮件系统发过来的邮件,大不了我自建邮件与自建邮件聊,大厂邮箱与大厂邮箱聊。

    反正我去中心化,随时可以架设 MTA 。
    charles0
        26
    charles0  
       13 小时 19 分钟前 via iPhone
    因为不安全,在端到端加密里面 PGP 邮件属于非常原始和不够安全的,如果你需要真正安全的聊天,参考:XMPP 、OTR ( Off The Record )、Signal 、iMessage PQ3 、MLS (消息层安全协议)、Matrix

    最基础的,PGP 默认不保证前向安全,你至少需要 Signal 那种双棘轮算法
    charles0
        27
    charles0  
       13 小时 18 分钟前 via iPhone
    这就导致反审查社区不会用 PGP 邮件(不够安全)而普通人也不会用(不够方便)
    kevinzhwl
        28
    kevinzhwl  
       12 小时 16 分钟前
    脱离时代的东西, 传一个用强密码加密压缩文件,都比这个简单
    busier
        29
    busier  
       11 小时 49 分钟前 via Android
    @kevinzhwl 额,非对称加密与对称加密的使用场景完全不同。

    大家在讨论非对称加密时,你突然抛出个对称加密及应用场景,这样会显得牛头不对马嘴!
    sworld233
        30
    sworld233  
       11 小时 44 分钟前
    PGP 不够安全, #26 说的不错了,前向保密、认证加密、元数据保护都不太好,非常不现代,密钥管理也不方便
    kingcanfish
        31
    kingcanfish  
       11 小时 44 分钟前
    感觉 pgp 现在唯一见过用途广泛的就是 git commit 的签名了
    busier
        32
    busier  
       11 小时 32 分钟前 via Android
    @charles0

    @sworld233

    “前向安全”的场景不适合电子邮件!

    你仔细想一想,你重装完系统,配置完邮件客户端,导入私钥,就可以解密旧的邮件。

    如果有前向安全的话,倒入之前的私钥你也无法解密旧邮件。

    这显然是不符合电子邮件使用场景的。
    jianglibo
        33
    jianglibo  
    OP
    PRO
       11 小时 23 分钟前 via Android
    @YGHMXFAL 说出了关键点,触及到政府和商业利益团体痛。
    kevinzhwl
        34
    kevinzhwl  
       11 小时 11 分钟前
    @busier 其实我向表达的重点是“便利性”, 才“没有被广泛使用”(一般用户不关心技术细节)。你们可以继续讨论非对称加密。
    jackOff
        35
    jackOff  
       10 小时 42 分钟前 via Android
    违法了,运营商无法监管通信内容,那你这玩意就是间谍软件
    lnbiuc
        36
    lnbiuc  
       10 小时 42 分钟前
    一直在用,配合 simplelogin ,每个网站都创建新邮箱注册,通过 simplelogin pgp 加密之后转发到阿里企业邮箱,然后在客户端解密
    缺点是 subject 没加密,能看到一点儿信息
    DaCong
        37
    DaCong  
       10 小时 32 分钟前
    我觉得帖子里面提到的使用过程对于很多普通人来说已经是非常复杂了。这可能是为什么这项技术没有普及的很大一个原因。
    例如说,你好不容易在你的一群朋友之间建立起了这种加密的通讯方式,只要有人在一次赶时间的时候疏忽了加密并且 reply all 了,邮件客户端很有可能引用了之前的邮件内容并且把整个对话泄露出去。
    一个好的密码学工具不应该被设计成只有专家才能正确使用。它应该提供更多的 secure by default 的特性。

    另一方面是 email 这个领域基本上只有各个科技巨头在维护/提供服务。真的想要推进某些技术标准现实中需要这些大玩家的支持,但他们因为监管、合规等等原因并没有很强的动力去做这件事情。
    MeMoDiv
        38
    MeMoDiv  
       9 小时 58 分钟前
    让别人用一个技术的理由应该是别人觉得好用,而不是你觉得好用。
    别人不用这个技术的原因也很简单,就是不好用。尝试用商业产品的思路去理解会容易很多。你所说的 OpenPGP 的诸多优点只是它还没被扫进历史的垃圾堆的理由,离成为流行差太远了
    busier
        39
    busier  
       9 小时 53 分钟前 via Android
    @jackOff 你最好把#35“运营商”换成别的啥的,不然在 TLS 流行的今天,显得你还活在上个世纪。
    cynics
        40
    cynics  
       9 小时 51 分钟前 via iPhone
    @jianglibo 也可以用来签名,有段时间 gmail 还支持签名
    busier
        41
    busier  
       9 小时 47 分钟前 via Android
    @cynics

    怎么说呢

    S/MIME 用来签名邮件还好点,毕竟他有 CA 。

    PGP 就有点尴尬了。
    onionKnight888
        42
    onionKnight888  
       9 小时 32 分钟前 via iPhone
    记得刚工作时的第一个公司发工资邮件就用 pgp ,仅此一家
    jianglibo
        43
    jianglibo  
    OP
    PRO
       2 小时 8 分钟前 via Android
    我发现许多人没有用 thunderbird 尝试一下就在那里说什么不安全,说什么都 2026 了还用这玩意,密码学不是前端,花样百出。thunderbird 在设计时通过 UI 的提醒,只有你在人工和对对方的指纹之后,最终交互的邮件才会显示帖子中最后的安全图标。一旦使用,作为程序员,这个真不难,只是需要花点脑子理解一下,只有好处,没有坏处。
    jianglibo
        44
    jianglibo  
    OP
    PRO
       2 小时 4 分钟前 via Android
    @cynics PGP 做两件事,一是签名,是证明邮件是你发的,并且没有被修改过。二是加密,只有收件人可以解密。
    flyqie
        45
    flyqie  
       1 小时 51 分钟前 via Android
    复杂度跟收益不值得导致的。

    普通用户很多时候几乎不会碰这块。
    nicaiwss
        46
    nicaiwss  
       1 小时 48 分钟前 via iPhone
    @jianglibo 并不能,首先我就不信任你的公钥,以前还好,你拍个视频,面对镜头拿张纸写着公钥念出来基本上没有假,这两年 ai 强大了这样也不行了
    z5e56
        47
    z5e56  
       1 小时 21 分钟前 via Android
    学习了 很有帮助
    jianglibo
        48
    jianglibo  
    OP
    PRO
       20 分钟前 via Android
    @nicaiwss 你几乎完全不理解工作原理,你发送邮件时使用了错误的公钥会发生什么?比如你的邮箱是 [email protected] ,我用错误的公钥给你发送邮件,你还会收到邮件,这个不会错吧。但收到的邮件无法解密而已。除非攻击者有办法让你发送到错误的邮箱,但这个是另外一回事了。我的建议是你根据我的帖子真正的实践一遍,思考一下。PGP 的安全性是毋庸置疑的。
    likelylee
        49
    likelylee  
       16 分钟前
    @jianglibo 我司内部就是强制使用 thunderbird 配合 openpgp ,对外和客户( IT 类技术人员、金融类业务人员都有)联系也推荐用 openpgp 加密邮件,或者至少加密附件。从我入职开始到现在也每天使用超过 12 年了,接触的客户数量也有 200+了,我觉得我有一点说服力。
    简单来说,openpgp 这一套体系就是太复杂了,我哦们有完善的配置手册,一步一步带截图具体怎么配置,软件更新也会更新配置手册,就这个前提下,上述那么多客户,首次配置好之后把私钥发给我的占比至少 80%以上。好容易正确生成了公私钥对,加密发送文件的的时候不添加我的公钥的占比能超过 90%。首年记住了怎么操作,后续年度还得电话再指导的至少也能有 30%起。这个是外部客户的场景,而且其中懂基本加解密知识的也不占少数。我司内部,每年需要我协助配置密钥对、thunderbird 、公钥组、邮箱组等的同事也得有 30%以上。我们可是要求每两年就重新配置一次的,就这个频率都不能确保每个人熟悉的掌握配置方式。
    原因是什么,上边有人也提到了,公私钥对为基础的 PKI 方案,为了做到可信,要么两人当面交换公钥,要么用 CA 做中心交换,除此以外都不能做到可信这个要求。即使是公开的公钥服务器,只要没有可信方签成证书,那么都会受到 MITM 的影响。当然了公司自建中央公钥服务器会好一点,但是内部使用的问题解决了,怎么解决对外的要求呢?所以国密整出来 SM9 一人一证书的想法,直接中央到“中央”可信。
    另外既然 OP 提到 openpgp 了,我姑且认为你也了解 SMIME ,以 SMIME 的简单尚且不能做到大规模推广,openpgp 这种大量涉及到基本知识和技术操作的方案怎么可能会让人用得起来。
    如果往更广的方向来说,怎么能在没有中央 CA 的基础上解决双向或者多向互信,这个是下一代加解密基础设施需要解决的问题之一,也是国内不想让解决的一个问题。原本的区块链体系似乎解决了这个问题,但是目前大家的着眼点都在币上,这个底层的方案一直没有一个有效且易用的技术出来。
    busier
        50
    busier  
       4 分钟前 via iPhone
    @jianglibo #48:#46 意思是没有 CA ,无法保证中间人攻击情况的安全性。

    虽然你前面提到了 thunderbird 要求手动确认公钥指纹,但这只是个退而求其次的方案。
    jianglibo
        51
    jianglibo  
    OP
    PRO
       1 分钟前 via Android
    @likelylee smime 是公司的解决方案,无非是加了 CA 一个环节,不是更安全,而是企业有中心化的解决方案(而且可能可以做到邮件 meta 信息的加密)。openpgp 是一个更加自由的解决方案。评论里面说什么不安全的,估计从来没有对下载的文件做过哪怕一次签名校验。当然不是每次都做,但对于非常基础和重要的软件,比如和你的加密货币相关的软件时,手工做签名校验当然是必要的。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1860 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    ♥ Do have faith in what you're doing.