精读《图解密码技术》——第十三章 PGP

这篇具有很好参考价值的文章主要介绍了精读《图解密码技术》——第十三章 PGP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、PGP简介

1.什么是PGP

  PGP是一款由个人编写的密码软件,PGP是为了保护处于极端状况下的人们的隐私而开发的,如果这些人的信息被窃听,那么可能是性命攸关的大事件。

2.关于OpenPGP

  OpenPGP是对密文和数字签名格式进行定义的标准规格。

3.关于GNU Privacy Guard

  GNU Privacy Guard ( GnuPG、GPG)是一款基于OpenPGP标准开发的密码学软件“,支持加密、数字签名、密钥管理、S/MIME、ssh等多种功能。GnuPG是基于GNU GPL协议发布的一款自由软件,因此任何人都可以自由使用它。

4.PGP的功能

(1)支持用对称密码加密和解密。
(2)支持生成公钥密码的密钥对,以及用公钥密码进行加密和解密。
(3)支持数字签名的生成和验证,也可以将数字签名附加到文件中,或者从文件中分离出数字签名。
(4)PGP可以用单向散列函数计算和显示消息的散列值。
(5)PGP可以生成OpenGPG中规定格式的证书,以及与X.509规范兼容的证书。除此之外,还可以颁发公钥的作废证明。
(6)PGP支持数据的压缩和解压缩,压缩采用ZIP、ZLIB、BZIPZ等格式。
(7)PGP可以将二进制数据和文本数据相互转换。
(8)在文件过大无法通过邮件发送的情况下,PGP可以将一个大文件拆分成多个文件,反过来也可以将多个文件拼合成一个文件。
(9)PGP可以管理所生成的密钥对以及从外部获取的公钥。用于管理密钥的文件称为钥匙串( key ring )。

二、加密和解密

1.加密

  PGP的加密过程如下图所示,在这张图中,消息经过混合密码系统加密,然后转化为报文数据。

精读《图解密码技术》——第十三章 PGP

(1)用为随机数生成器生成会话密钥
(2)用公钥密码加密会话密钥,这里使用的是接收者的公钥
(3)压缩消息
(4)使用对称密码对压缩的消息加密,密钥为(1)中的会话密钥
(5)将加密后的会话密钥与加密后的消息合并
(6)将(5)中的结果转换为文本数据,转换后得到的就是报文数据

2.解密

精读《图解密码技术》——第十三章 PGP

(1)接收者输入解密的口令
(2)求口令的散列值,生成用于解密的密钥
(3)将私钥解密
(4)将报文数据转换成二进制数据
(5)将二进制数据分解成加密的会话密钥和经过压缩并加密的消息两部分
(6)用公钥密码解密会话密钥,私钥是(3)中生成的接收者的私钥
(7)使用(6)会话密钥将(5)中经过压缩并加密的消息解密
(8)将(7)中得到的经过压缩的消息解压缩
(9)得到原消息

三、生成和验证数字签名

1.生成数字签名

精读《图解密码技术》——第十三章 PGP

(1)发送者输入签名用的口令
(2)求口令的散列值,生成用于解密的密钥
(3)将私钥解密
(4)用单项散列函数计算消息的散列值
(5)对(4)中的散列值进行签名,相当于用(3)得到的私钥进行加密
(6)将(5)得到的数字签名和消息拼合
(7)将(6)的结果压缩
(8)将(7)的结果转换成文本数据
(9)步骤(8)中的结果就是报文数据

2.验证数字签名

精读《图解密码技术》——第十三章 PGP

(1)将报文数据转换成二进制数据
(2)对压缩过的数据解压缩
(3)将解压缩后的数据分解为经过签名的散列值和消息两部分
(4)将签名后的散列值用发送者的公钥加密,恢复发送者发出的散列值
(5)将(3)中分解出的消息输入单项散列函数计算出散列值
(6)将(4)中生成的散列值与(5)生成的散列值进行对比
(7)如果(6)的结果相等则数字签名验证成功,不想等则验证失败。

三、生成数字签名并加密以及解密并验证数字签名

1.生成数字签名并加密

精读《图解密码技术》——第十三章 PGP

2.解密并验证数字签名

精读《图解密码技术》——第十三章 PGP

四、信任网

  之前我们介绍过是使用认证机构对公钥签名认证的方法来确保公钥的合法性,PGP中并没有用到认证机构,而是采用的一种信任网的方法。在这种方法中,PGP用户会互相对对方的公钥进行数字签名。

五、小测验

1.压缩和加密的顺序

  从用PGP加密的过程图中可以看出,消息是先进行压缩再加密的,为什么一定要按照压缩→加密的顺序来处理呢?
我的回答:加密会导致比特序列的冗余性消失,而压缩就是消除冗余性,所以如果加密之后就没有压缩的必要了。

2.确认公钥合法性的手段

  Alice有一个好朋友叫EIma,两人经常煲电话粥。有一天,她收到了一封来自Elma的邮件,里面说“这是我的公钥",并附带了一个公钥。
  Alice考虑到这封邮件可能经过了主动攻击者Mallory 的篡改,于是她打算给Elma打电话以便确认自己所收到的公钥是否来自EIma本人。 可是,由于收到的公钥文件太大,不可能一个字节一个字节地通过电话来口头确认,这可怎么办呢?

我的回答:不需要读出公钥的内容本身,只需要将公钥输入单向散列函数,通过电话对比散列值就可以了。

3.大量的数字签名

  Alice收到了来自Jerry 的公钥,这个公钥上带有10个合法的数字签名,Alice能判断这个公钥是合法的吗?
我的回答:不能。公钥的合法性的确可以通过数字签名来保证,可是数字签名的合法性也是需要确认的,必须确认对此公钥进行签名的是否是Alice的信任机构才可以确认公钥的合法性。

4.基础知识

下列说法中,请在正确的旁边画○,错误的旁边画×。
(1) PGP中是先对数据进行压缩,然后再进行加密的。
(2) PGP的用户使用http://www.pgp.com/上设立的认证机构。
(3) 使用PGP可以生成自己的公钥密钥对。
(4) 在用PGP进行加密时,不使用对称密码算法,而是使用公钥密码算法。
(5) 在用PGP验证数字签名时,需要输入口令。
(6) 在用PGP生成数字签名并加密时,需要输入发送者的口令。

我的回答:(1)○;(2)×;(3)○;(4)×;(5)×;(6)○;
(2)PGP中使用的是信任网而不是认证机构。
(3)PGP使用的是混合密码系统,所以既要使用对称密码算法,也要使用公钥密码算法,使用公钥密钥算法对会话秘钥加密,使用对称密码算法对消息加密。
(5) 在用PGP验证数字签名时,不需要输入口令,使用PGP解密的时候需要输入口令。文章来源地址https://www.toymoban.com/news/detail-447663.html

到了这里,关于精读《图解密码技术》——第十三章 PGP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 第十三章 python之爬虫

    Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他

    2024年02月04日
    浏览(18)
  • 《微服务实战》 第十三章 JWT

    《微服务实战》 第十三章 JWT

    【项目实战】Spring boot整合JWT、Vue案例展示用户鉴权 【微服务实战】JWT JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。 基于JSON的开发标准 用户信息加密到token里,服务器不保存任何用户信息 在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式

    2024年02月06日
    浏览(40)
  • 第十三章 Unity 移动和旋转(上)

    第十三章 Unity 移动和旋转(上)

    移动和旋转是游戏对象最频繁地操作。我们上个章节简单介绍了Cube的移动和旋转。移动是修改transform的position属性,旋转是修改transform的eulerAngles(欧拉角)属性,两者属性值均可以使用Vector3向量来实现。需要大家注意的是,transform.forward和Vector3.forward的区别(参考坐标系是

    2024年02月05日
    浏览(17)
  • 第十三章,枚举与泛型例题

    第十三章,枚举与泛型例题

    例题1 结果   例题2 结果   例题3 结果     例题4 结果 例题5  结果 例题6  结果 例题7  结果 例题8  结果

    2024年02月06日
    浏览(12)
  • 第十三章_Redis中的BigKey

    第十三章_Redis中的BigKey

    MoreKey案例 大批量往redis里面插入2000W测试数据key  Linux Bash下面执行,插入100W # 生成100W条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中 for((i=1;i=100*10000;i++)); do echo \\\"set k$i v$i\\\" /tmp/redisTest.txt ;done; 通过redis提供的管道--pipe命令插入100W大批量数据 结合自己

    2024年02月03日
    浏览(19)
  • Vue3——第十三章(插槽 Slots)

    Vue3——第十三章(插槽 Slots)

    这里有一个 FancyButton 组件,可以像这样使用: 而 FancyButton 的模板是这样的: slot 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。 最终渲染出的 DOM 是这样: 通过使用插槽, FancyButton 仅负责渲染外层的 button (以及相应的样式),而

    2024年02月07日
    浏览(20)
  • 《c++ primer笔记》第十三章 拷贝控制

    1.1拷贝构造函数 ​ 如果一个构造函数的第一个参数是自身类类型的 引用 ,且任何额外参数都由默认值,则此构造函数成为拷贝构造函数。 拷贝构造函数在某些情况下会被隐式地使用,所以不能定义为 expicit 。 合成拷贝构造函数 ​ 合成某某函数 一般出现在我们没定义该函

    2023年04月25日
    浏览(12)
  • 第十三章 opengl之模型(导入3D模型)

    使用Assimp并创建实际的加载和转换代码。Model类结构如下: Model类包含一个Mesh对象的vector,构造器参数需要一个文件路径。 构造器通过loadModel来加载文件。私有函数将会处理Assimp导入过程中的一部分,私有函数还存储了 文件路径的目录,加载纹理时会用到。 Draw函数的作用:

    2024年02月05日
    浏览(13)
  • 《TCP IP网络编程》第十三章

    《TCP IP网络编程》第十三章

    Linux 中的 send recv:          send 函数定义:         recv 函数的定义:         send 和 recv 函数的最后一个参数是收发数据的可选项,该选项可以用位或(bit OR)运算符(| 运算符)同时传递多个信息。send recv 函数的可选项意义: MSG_OOB:发送紧急消息 :     

    2024年02月15日
    浏览(11)
  • PMP项目管理-[第十三章]相关方管理

    PMP项目管理-[第十三章]相关方管理

    定义:定期识别项目相关方,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成功的潜在影响的过程 作用:使项目团队能够建立对每个相关方或相关方群体的适当关注 1 权高利低 -- 让他爽    2 权低利高 -- 常告知 3 权高利高 -- 重管理    4 权低利低 -- 仅监

    2024年02月03日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包