PGP邮件安全方案.

Slides:



Advertisements
Similar presentations
3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
6 Copyright © Oracle Corporation, All rights reserved. 维护控制文件.
安全协议理论与方法 第一章 引论.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
计算机网络安全 第五章.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
面向对象建模技术 软件工程系 林 琳.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
现代密码学理论与实践 第15章 电子邮件的安全 Fourth Edition by William Stallings
存储系统.
SQL Injection.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第一讲: 基本流程(1).
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
Online job scheduling in Distributed Machine Learning Clusters
逆向工程-汇编语言
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
供应商登录CJLR SRM系统入口 CJLR供应商仅可以在互联网上访问SRM系统,无法在CJLR内网登录SRM系统.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
你知道这些标志吗?. 你知道这些标志吗? 网络——信息安全 小组讨论 你觉得网络信息安全吗? 为什么?
第3章 信息与信息系统 陈恭和.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
本节内容 字符编码 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言程序设计 主讲教师:陆幼利.
新PQDT论文全文库提交平台.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
電子郵件簡介.
顺序表的删除.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第四章 团队音乐会序幕: 团队协作平台的快速创建
主要内容: 无线局域网的定义 无线传输介质 无线传输的技术 WLAN的架构 无线网络搭建与配置 无线网络加密配置
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
实验七 安全FTP服务器实验 2019/4/28.
IT 安全 第 11节 加密控制.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
数据报分片.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第七、八次实验要求.
《工程制图基础》 第五讲 投影变换.
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
数据表示 第 2 讲.
第四章 UNIX文件系统.
第十七讲 密码执行(1).
第十二讲 密码执行(上).
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
App 加密算法建议 Possible lab 土豪军 小陈.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

PGP邮件安全方案

PGP 简介 PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。 可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。 可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。 采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。 功能强大,有很快的速度。 源代码是免费的。

实际上PGP的功能还包括: PGP可以用来加密文件,还可以用PGP代替Uncode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。

PGP的历史 PGP 的创始人是美国的 Philp Zimmerman。他的创造性在于他把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。

PGP服务分析 1、认证 2、机密性 3、压缩 4、E-MAIL兼容性 5、分段和重组

1、认证 (1)发送者创建消息 (2)发送者使用SHA-1算法产生消息的160位hash代码 (3)发送者采用RSA算法,使用发送者的私钥对hash代码进行加密,然后将结果附加在消息的头部 (4)接收者使用RSA算法和发送者的公钥解密和恢复hash代码 (5)接收者为消息产生一个新的hash代码,并且与解密后的hash代码进行比较,如果两者匹配,那么消息就是可信的。

分离签名 (分离签名与相应的消息分开保存和传输) 尽管通常情况都会把签名附加在相应的消息或者文件中,但也支持分离签名。 分离签名的用途如: (1)用户可能希望维护一份发送或者接收消息的单独签名日志 (2)可执行程序的分离签名能够检测后续的病毒感染 (3)当有多个当事人必须签名文档的时候。

2、机密性 (1)发送者产生一条消息,并为该消息产生一个用作会话密钥的随机的128位数字 (2)使用会话密钥和可靠的算法加密消息 (3)使用接收者的公钥和RSA算法加密会话密钥,并且把结果附加到消息的头部 (4)接收者使用自己的私钥和RSA算法解密和恢复会话密钥 (5)使用会话密钥解密消息

3、机密性和认证 对同一条消息可以使用两种服务 (1)为明文产生签名并把结果附加到消息的头部。 (2)使用IDEA或3DES等加密明文消息和签名的连接,并使用RSA加密会话密钥

4、压缩 对于EMAIL传输和文件保存来说,压缩有利于节省空间。 压缩的时机:PGP在签名后加密前压缩消息 在压缩前产生签名的原因: (1)签名未压缩的消息更加可取,可以通过保存未压缩的消息的签名来实现将来的验证。 (2)压缩算法的不确定性,会影响hash函数和签名的实现 在压缩后加密消息的原因:提高密密码的安全性 因为压缩后的消息与最初的明文相比具更少的冗余,所以密码分析就会更困难。

5、E-MAIL兼容性 因为邮件系统只允许使用包含ASCII文本的数据块,为了满足这个限制,PGP支持将未加工的8位二进制流转换为可打印的ASCII字符流。 用于实现这一转换的方案就是radix-64转换。

注意:radix-64算法不管消息的内容是什么,只是盲目地把输入流转换为radix-64格式,即使输入的恰巧是ASCII文本。 如果是签名而没加密的消息,对整个数据块实现转换,对不经意的观察者来说,输出是不可读的,能提供某种程序的机密性。这就使接收消息的人可以在不使用PGP的情况下就能读取消息。 但接收者要验证签名必须使用PGP。

6、分段和重组 E-MAIL应用通常都受限于最大消息的长度,因此发送者必须把任何比这个值长的消息分成更小的段,单独地传送每一段。 为了满足这个限制,PGP自动地将过大的消息细分为几个足够小的段,并通过邮件传输。 在所有其他操作执行完后,PGP对消息进行分段。 在接收端,PGP必须剥去所有E-MAIL头,并在执行radix64之前进行重组,以获得整个原来的数据块。

PGP的四种服务(认证、机密性、压缩、EMAIL兼容性)间的关系

密钥与密钥环 PGP使用了4种类型的密钥:一次性会话密钥、公钥、私和基于口令短语的对称密钥 用户可以拥有多个公钥/私钥对。 (1)用户可以时常改变密钥对 (2)用户可以在给定的时间内拥有多个密钥对以便与不同组的通讯者进行交互 (3)用户可以通过限制每个密钥能够加密的数据量来提高安全性 因此:用户与公钥之间不是一一对应的关系

解决: 每个PGP实体必须维护一份由自己的公钥/私钥对组成的文件,以及由相应的通信者的公钥组成的文件。 引入密钥标识符。

PGP为每个公钥分配一个密钥ID,并且这个密钥ID在用户ID内是唯一的。

PGP消息 消息构件:文件名,时间戳,数据 签名构件:时间戳,消息摘要,消息摘要的头 两个八位字节,发送者公钥的密钥ID 会话密钥构件:接收者公钥的密钥ID,会话密钥Ks

密钥证书 它一般包含以下内容: 密钥内容(用长达百位的大数字表示的密钥) 密钥类型(表示该密钥为公钥还是私钥) 密钥长度(密钥的长度,以二进制位表示) 密钥编号(用以唯一标识该密钥) 创建时间 用户标识 (密钥创建人的信息,如姓名、电子邮件等) 密钥指纹(为128位的数字,是密钥内容的提要表示密钥唯一的特征) 中介人签名(中介人的数字签名,声明该密钥及其所有者的真实性,包括中介人的密钥编号和标识信息)

密钥环 PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法查找用户需要的密钥。 PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法(用户ID或者密钥ID进行索引)查找用户需要的密钥。

尽管只在创建和拥有密钥对的机器上保存私钥环,而且只有该机器上的用户能够访问这些密钥对,但是要尽可能地保证私钥的安全,不把私钥本身存储在密钥环里,而是使用CAST128(或者IDEA,或者3DES)加密密钥。 PGP在多处需要用到口令,它主要起到保护私钥的作用。由于私钥太长且无规律,所以难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令--口令短语,间接使用私钥。

私钥环的管理 (1)用户选择用于加密私钥的口令。 (2)当系统使用RSA产生新的公钥/私钥对时,系统向用户请求口令短语,使用SHA1从口令短语中产生160位的hash代码,然后丢弃该口令短语。 (3)系统使用CAST-128加密私钥,并把128位的hash代码用作密钥,然后丢弃hash代码,并且在私钥环中保存加密后的私钥。 当用户访问私钥环以检索私钥时,必须提供口令短语。PGP将检索加密后的私钥,产生口令短语的hash代码,然后使用CAST-128和 hash代码解密私钥。

PGP的每个私钥都由一个相应的口令短语加密。PGP主要在3处需要用户输入口令: 当用户需要为文件或信息签字时,用户输入口令,取出私钥加密。 对磁盘上的文件进行传统加密时,需要用户输入口令。

发送消息的PGP实体执行步骤: (1)签名 (2)加密

接收消息的PGP实体执行步骤: (1)解密消息 (2)认证消息

公钥的管理 (1)物理在从B处得到密钥 (2)通过电话验证密钥 (3)从双方都信任的个体D处获得B的公钥 (4)从可信的认证机构CA获得B的公钥

信用的使用 把具有不同人签名的自己的公匙收集在一起,发送到公共场合,这样可以希望大部分人至少认识其中一个人,从而间接认证了你的公匙。同样你签了朋友的公匙后应该寄回给他,这样就可以让他可以通过你被你的其他朋友所认证。 PGP会自动为你找出你拿到的公匙中有哪些是你的朋友介绍来的,那些是你朋友的朋友介绍来的,哪些则是朋友的朋友的朋友介绍的……它会帮你把它们分为不同的信任级别,让你参考决定对它们的信任程度。你可以指定某人有几层转介公匙的能力,这种能力是随着认证的传递而递减的。

转介认证机制具有传递性。 PGP的作者Phil Zimmermann说过一句话:“ 信赖不具有传递性;我有个我相信决不撒谎的朋友。可是他是个认定总统决不撒谎的傻瓜,可很显然我并不认为总统决不撒谎。”

使用LZ77算法压缩数据 LZ压缩算法是最有影响力的动态数据压缩算法之一,LZ是其发明者J.Ziv和A.Lempel姓氏的缩写。他们在1977年发表题为《顺序数据压缩的一个通用算法》的论文,提出了被后人称为LZ77的算法。当前个人计算机用户的主流压缩工具如ARJ,PKZip,WinZip,LHArc,RAR,GZip,Compress等几乎都采用LZ77变种算法。

LZ77 算法是一种动态的字典编码,又称为“滑动窗口压缩”,该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为词典,要压缩的字符串如果在该窗口中出现,则输出其出现的位置和长度,如图所示。

1)从当前压缩位置开始,考察未编码的数据,试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤 2),否则进行步骤 3)。 LZ压缩算法示意图 该算法具体流程如下: 1)从当前压缩位置开始,考察未编码的数据,试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤 2),否则进行步骤 3)。 2)输出三元符号组 ( off, len, c ),其中 off 为窗口中匹配字符串相对窗口边界的偏移,len 为可匹配的长度,c 为下一个未编码字符。然后将窗口向后滑动 len + 1 个字符,继续步骤 1)。 3)输出三元符号组 ( 0, 0, c )。其中 c 为下一个未编码字符。然后将窗口向后滑动 1 个字符,继续步骤 1)。

假设窗口的大小为 10 个字符,我们刚编码过的 10 个字符是aabcdebdca,即将编码的字符为cdafcacdab。 容易看出,可以和要编码字符匹配的最长串为 cd ( off = 3, len = 2 ), cd 的下一个未编码字符为 a,我们输出三元组( 3, 2, a ),并将窗口向后滑动 3 个字符,窗口中的内容为cdebdcacda。下一个要编码字符 f 在窗口中没有匹配,因此输出三元组( 0, 0, f ),同时窗口向后滑动 1 个字符,其中内容变为debdcacdaf。要编码的cacda在窗口中存在( off = 4, len = 5 ),其后的字符为 b,因此输出( 4, 5, b )。 这样,我们将可以匹配的字符串都变成了指向窗口内的指针,并由此完成了对上述数据的压缩。

解压缩的过程十分简单,只要我们向压缩时那样维护好滑动的窗口,随着三元组的不断输入,我们在窗口中找到相应的匹配串,缀上后继字符 c 输出(如果 off 和 len 都为 0 则只输出后继字符 c ),即可还原出原始数据。

Radix-64转换 Radix-64转换编码技术: 将任意二进制输入映射为可打印的字符输出。

映射方案: 对二进制输入的处理以3个字节的数据块为单位,24位块中每6位集合映射成一个字符。 每个24位输入都扩展成为32位输出。

6位值 字符编码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E F G H I J K L M N O P 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Q R S T U V W X Y Z a b c d e f 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 g h i j k l m n o p q r s t u v 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 (pad) w x y z + / = radix-64编码

ASCII 码 ( American Standard Code for Information nterchange ) 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 0 0 0 0 0 ^@ ^P SP 0 @ P . p 1 0 0 0 1 ^A ^Q ! 1 A Q a q 2 0 0 1 0 ^B ^R " 2 B R b r 3 0 0 1 1 ^C ^S # 3 C S c s 4 0 1 0 0 ^D ^T $ 4 D T d t 5 0 1 0 1 ^E ^U % 5 E U e u 6 0 1 1 0 ^F ^V & 6 F V f v 7 0 1 1 1 ^G ^W ' 7 G W g w 8 1 0 0 0 ^H ^X ( 8 H X h x 9 1 0 0 1 ^I ^Y ) 9 I Y I y A 1 0 1 0 ^J ^Z * : J Z j z B 1 0 1 1 ^K ^[ + ; K [ k { C 1 1 0 0 ^L ^\ , < L \ l | D 1 1 0 1 ^M ^] - = M ] m } E 1 1 1 0 ^N ^^ . > N ^ n ~ F 1 1 1 1 ^O ^ / ? O _ o del

例:24位未加工的文本序列 00100011 01011100 10010001,重排为6位: 001000 110101 110010 010001 对应的十进制: 8 53 50 17 radix-64编码 I 1 y R 8位ASCII 01001001(73) 00110001(49) 01111001(121) 01010010(82) 十六进制: 49 31 79 52