PGP(Pretty Good Privacy),是一个基于RSA公钥加密体系的邮件加密软件。

产生背景:

电子邮件在传输中使用SMTP协议存在这样的问题

1.无法保证邮件在传输过程中不被人偷看

2.无法确认来源

3.无法确定邮件是否在传输过程中被篡改

4.当邮件被发到错误地址,可能造成信息泄漏

PGP对这些问题提供一个安全电子邮件解决方案,具有以下功能

1.消息加密

2.数字签名

3.完整性确认

4.数据压缩

PGP使用的对称算法: IDEA, DES, Triple DES, CAST, AES, Twofish

PGP使用的不对称算法: RSA, DH

加密流程:

用会话钥匙加密明文,然后用公共钥匙加密会话钥匙,讲这两个加密出来的内容打包放在一起传输。

解密流程:

将收到的数据(密文和加密后的会话钥匙)分开,用私钥来解密加密后的会话钥匙,得到会话钥匙,用会话钥匙来解密密文。

会话钥匙加密解密用的同一把,所以是对称加密算法。另外的公钥加密,私钥解密,是公钥加密算法。

PGP整合了对称加密和公钥加密的方案。

保持了对称加密算法速度快的特点,又具有公钥算法密钥分配方便的特点。

PGP数字签名:

签名算法:RSA+MD5, RSA+ SHA1, DSS+SHA1

数字签名过程:

数字签名是用私钥加密,就可以确认消息来源和保证完整性,因为私钥是个人持有的且是对明文签名。

但是直接对明文进行数字签名存在一些问题

1.速度非常慢

2.生成大量的数据

PGP的解决办法是对明文使用一种Hash函数(PGP使用Hash函数: MD5, SHA1),产生定长的数据,称为消息摘要。使用签名算法对摘要签名,然后将签名和明文放在一起。

下面来说说公钥密码算法的一个重要问题,如何传播公钥?

假设有这样一个场景,A想写信给B,A先要得到B的公钥,A在某处查到一个公钥以为是B的,实际上是C的公钥,是C有意假冒B,C窃听到密信,然后用对应的私钥解密,C看到了信的内容。此时,C已经假冒B成功了,C再给A写一封信,A仍用B的假公钥来打开C的信,A读到C假冒B写的信。

因此,公钥的分发是很重要的。

公钥分发模型:

1.金字塔模型

这个模型的基础是要有上层的机构是值的信赖的机构,由上层机构来分发公钥,需要公钥的时候,向上层机构询问。

2.信任网络模型(PGP采用):

PGP数据证书:

证书包含拥有者的信息

证书可以自己创建和声明

证书上包含自签名

证书可能包含多个人的签名

证书正确性检查

1.手工途径:要求接收者亲自把公钥交给你

      检查证书的指纹

2.信任途径:相信已经进行了检查过程的第三方结果(上面可能有一些签名,保证证书上的公钥属于某个人)

私钥保护问题:

PGP利用一个Passphrase来获得自己的私钥。

压缩预处理问题:

PGP对明文加密前进行压缩处理,使用PKZIP算法压缩。

好处:压缩后比原来的明文更短,节省网络传输的时间;压缩相当于一次变换,信息变的杂乱,对攻击的抵御能力更强。

现代密码学应用的范例-PGP的更多相关文章

  1. 【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

    一)概述 什么是互联网支付? 当支付遇到互联网,一场革命自然不可避免.成为现实的是传统的现金支付已经“退居二线”,各种在线支付方式成为人们日常消费的主要支付方式.银行推出的网银以及第三方支付公司推出的 ...

  2. GPG(pgp)加解密中文完整教程

    一.介绍 我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web.Email等一般都只提供明文传输方式(用https.smtps等例外).所以,当我们需要传输重要文件时,应该对当中的信息加密 ...

  3. 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)

    目录 一.数据加密标准 - Data Encryption Standard(DES) 二.高级加密标准 - Advanced Encryption Standard(AES) 三.消息摘要算法第五版 ...

  4. C# 7.0 新功能代码范例

    随着新版本的IDE Visual Studio 15 紧锣密鼓的开发中,2016年8月24日,微软发布了与之配套的C# 7.0 preview 的新特性. 其主要特性有: 内联声明out变量 (Out ...

  5. Information Management Policy(信息管理策略)的使用范例

    基础知识 很多人都会定期收拾自己的书架或者抽屉,把里面过旧的资料拿走,为新的资料腾出空间来,这样既可以节省空间,而且当冗余资料过多的时候也会降低你查找的速度和效率.那么,在企业的SharePoint中 ...

  6. Java学习笔记13---一个循环程序的设计范例

    package welcome; import java.util.Scanner; /* * 一个循环程序的设计范例 * 首先编写仅执行一次的程序(当无循环时) * 循环的设计步骤: * 1.确定程 ...

  7. [liusy.api-SMJ]-创建工程范例 MAVEN archetype 学习阶段(一)

    由于这个架构需要好多不同能力的工程,为了创建方便减少冗余,创建工程范例尤为重要 学习阶段: 参考资料 http://maven.apache.org/archetype/maven-archetype ...

  8. Mac Mail PGP Setup 如何在苹果电脑上设置安全邮件 良好隐私密码法(英语:Pretty Good Privacy,缩写为PGP)

    背景知识 良好隐私密码法(英语:Pretty Good Privacy,缩写为PGP),一套用于讯息加密.验证的应用程序,采用IDEA的散列算法作为加密与验证之用. 关联文献:https://en.w ...

  9. [翻译练习]密码学1小时入门 (Everything you need to know about cryptography in 1 hour)

    原文:http://www.daemonology.net/papers/crypto1hr.pdf   [密码学简介]   很多人都误用了密码学   一般可归为三类: 1. 愚蠢 比如Google ...

随机推荐

  1. poj1273--Drainage Ditches(最大流Edmond-Karp算法 邻接表实现)

    最大流模板题 大部分Edmond-Karp算法代码都是邻接矩阵实现,试着改成了邻接表. #include <iostream> #include <cstdio> #inclu ...

  2. clock_t与time_t的区别及联系

    clock_t <ctime> Clock type Type capable of representing clock tick counts and support arithmet ...

  3. Modules you should know in Python Libray

    前两天被问到常用的python lib和module有哪些?最常用的那几个,其他的一下子竟然回答不上.想想也是,一般情况下,遇到一个问题,在网上一搜,顺着线索找到可用的例子,然后基本没有怎么深究.结果 ...

  4. 【Android - 基础】之Animator属性动画

    1      概述 在3.0系统之前,Android给我们提供了逐帧动画Frame Animation和补间动画Tween Animation两种动画: 1)        逐帧动画的原理很简单,就是 ...

  5. vbs运行批处理

    dim wshellset wshell=createobject("wscript.shell") wshell.run "cmd /c sc query Spoole ...

  6. tomcat管理web界面

    在/usr/tomcat/apache-tomcat-7.0.47/conf/tomcat-users.xml里 <?xml version='1.0' encoding='utf-8'?> ...

  7. ubuntu 远程 ubuntu

    一:被远程端ubuntu配置 參考windows远程ubuntu这篇文章里面的ubuntu配置 二:远程端ubuntu配置 1:打开Remmina Remote Desktop Client软件,例如 ...

  8. Openstack中间DVR Part1 -- 东西走向的交通处理

    作者:Liping Mao  发表于:2014-07-04 版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 在Openstack中L3router会造成流量集中 ...

  9. 回击MLAA:NVIDIA FXAA抗锯齿性能实測、画质对照

    PC游戏玩家肯定会对各式各样的AA抗锯齿技术很熟悉,而今天本文的主角就是NVIDIA今年才推出的新型抗锯齿技术"FXAA". FXAA在某种程度上有些类似于AMD之前宣传的MLAA ...

  10. Java NIO与IO的差别和比較

    导读 J2SE1.4以上版本号中公布了全新的I/O类库.本文将通过一些实例来简介NIO库提供的一些新特性:非堵塞I/O,字符转换,缓冲以及通道. 一. 介绍NIO NIO包(java.nio.*)引入 ...