您当前的位置:首页 > 知乎文章

网络安全协议学习(一)——OpenPGP

时间:2022-02-28 10:47:14  知乎原文链接  作者:网盾网络安全培训

OpenPGP

1. 概述

Pretty Good Privacy(PGP)是一个提供加密和认证的计算机程序。

PGP经常被用于签名、加密和解密电子邮件,以增加电子邮件通信的安全性。

提供的安全功能

PGP模块

  • 为了兼容电子邮件(ASCII码格式),加解密的二进制结果将会转换为Radix-64编码(基于Base64编码,增加检测错误的校验和)

2. 加密与解密

2.1 加密

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解释:

2.2 解密

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解释:

2.3 私钥管理

由加密和解密的过程可以看到,解密时需要接收者输入的就是接收者的私钥,但是现在就有以下的问题:

为了解决私钥存储的问题,PGP使用PBE(Password Based Encryption)。

简单的PBE

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

这样使用PBE仍然是不安全的,这样很容易遭受口令字典暴力破解攻击。为了对抗这样的安全威胁,最好的办法是随机化hash函数的输入

加盐的PBE

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

通过加一个随机的“盐”值,将会增加hash函数输入的熵,使得口令字典暴力破解攻击变得更加困难。

PGP的私钥管理

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解释:

2.4 完整流程图示

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

3. 数字签名生成和验证

加密方法满足了信息的保密性要求,但是为了认证发送者的身份,还是需要数字签名的技术。

3.1 签名

图示:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解释:

3.2 验证

图示:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解释:

3.3 完整流程图示

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

4. 加解密与数字签名结合

为了同时保证保密性以及验证身份,只需结合加解密与数字签名的过程即可:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

5. 信任网

在PGP协议的加解密和数字签名过程中都是用到了公钥,之前并没有讨论到公钥的合法性问题。按照一般的方法,公钥的认证依赖于一个可以信任的机构,依赖于公钥基础设施PKI。但是PGP假定没有任何机构可以信任,其使用的是一种称为信任网的模式。

5.1 基本原则

通过各个用户的签名以及用户的受信任级别来决定该公钥是否有效。

5.2 具体实施

在阐述信任网的实施方法之前,需要先搞清楚PGP信任级别,因为这个将是信任网的基础:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

  • 自己签名确认:
    如果某个公钥被用户自己签过名,那么则认为这个公钥有效。
    例子:用户A与用户B通过某种方式交换了各自的公钥,并且用户A和用户B在交换时就对对方的公钥进行了签名。在之后要使用公钥时,用户A或用户B会发现对方的公钥已经被自己签过名了,所以这个公钥将会被认为是一个合法的公钥。
  • 完全信任的用户签名确认:
    如果某个公钥被另一个用户签过名,而这个用户的信任级别是完全信任,那么则认为这个公钥有效。
    例子:用户A有一个好朋友用户C,用户C为用户B的公钥进行了签名。当用户A要使用用户B的公钥时,用户A会发现用户C签名了这个公钥,那么由于用户A完全信任用户C,那么用户A将会认为用户B的公钥是有效的。这个过程比较类似现实生活中,我的好朋友介绍他的好朋友给我的过程。
  • 多个有限信任的用户签名确认:
    如果某个公钥被多个用户签过名,且这些用户的信任级别是有限信任,那么则认为这个公钥有效。如果只有一个有限信任的用户签名了这个公钥,那么这个公钥将被认为是无效的。
    例子:用户A有两个同时用户D和用户E,用户D和用户E同时为用户B的公钥签了名。当用户A要使用用户B的公钥时,用户A看到有两个用户为B签了名,而这两位同事比较可靠,那么用户A便认为这个公钥是有效的。如果只有一个用户D为用户B签了名,那么由于用户A并不能完全信任用户D,害怕用户D和用户B联合起来作假欺骗自己,于是用户A认为用户B的公钥是无效的。

6. PGP选用的算法

6.1 数字签名

6.2 消息加密

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门