《密码编码学与网络安全》William Stalling著---学习笔记(二)【知识点速过】【数字签名+密钥管理分发+用户认证】

提示:博文有点长,请保持耐心哦~


前一篇文章

后一篇文章


0.写在前面

最近因为学习的需要初步接触网络安全方向,阅读的书是William Stalling著的《密码编码学与网络安全(第六版)》。由于本科期间没有接触过网络方面的课程所以从密码学入门。做个学习笔记方便后期复习,同时也分享给大家。由于本人能力有限肯定会有总结和理解不到位的地方,甚至有的地方会有错误(当然目前我没发现…)我若日后发现也会即使更新修改,所以希望各位辩证的学习,不要尽信书。阅读的书封面如图所示。
封面


1.涉及的抽代基础内容

  1. 互素:两个数a,b最大公因数为1。例:1与6互质,5与6互质

  2. 欧拉函数与欧拉定理

欧拉函数: φ (n)是指小于n且与n互素的正整数个数,例:φ (6)=2
欧拉定理: 任何互素的a,n,均有:aφ(n) mod n = 1 mod n
其中φ (n)是指小于n且与n互素的正整数个数,例:φ (6)=2
容易发现:当p为素数时,φ §=p-1
一般的,将φ(n)=m,得到欧拉定理更一般的表示:am mod n = 1 mod n
既,至少有一个整数m满足上式,满足上式的最小正幂m为:

  • a(模n)的: 若a,n是互素的整数,a≠0,n>0,s使得ax=1(mod n)成立的最小正整数x,称为a模n的阶
  • a所属的模n的指数
  • a所产生的周期长

周期长:
例: a=11, n=19时:
111mod 19 = 11
112mod 19 = 6 * 19+ 7 = 7
113mod 19 = 70 * 19+ 1 = 1
114mod 19 = 770 * 19+ 11 = 11
115mod 19 = 8476 * 19+ 7 = 7
指数相差3模n后余数相同–>余数是周期性的,周期长是使得11m mod 19 = 1 mod 19 成立的最小正幂m, 若底为a,其mod n 的周期长为φ(n),则将a称为n的一个原根。

  1. 原根

如果一个数a模n的阶为φ(n),则称a为n的原根

原根的一个重要性质: a,a2 a3,…,af(n) mod n ,余数各不相同。特别的,当n是素数时,若a是n的原根,那么a,a2 a3,…,an-1 mod n,的余数是1~n-1的一个排列

  1. 离散对数

由原根的性质可知,关于整数b,一定有一些数r使得 b与r 模n同余(b mod n = r mod n),其中有一些r满足[0,n-1]
同理可得,有唯一的指数i,使得b mod n = ai mod n,其中0 ≤ i ≤ n-1
将指数i称为以a为底,b的离散对数

y=gx mod p

给定g,x,p,求y最坏情况下经过X次乘法计算,且存在计算y的有效算法
反之,给定y,g,p求离散对数非常困难,与RSA中因子分解素数之积的难度具有相同数量级。
难度阶约为:

e(lnp)1/3(ln(lnp))2/3

广义的离散对数问题目前已知的最佳算法: Pollard’s rho algorithm for logarithms
时间复杂度是O(p1/2),p为群的大小
在密码学范畴中O(2n/2)
直接穷举:O(2n)===> 10300 ===> 宇宙中原子总数:1078-1082

基于ECC的离散对数问题相较于基于指数模的离散对数问题难度更大。
安全性:
DH 1024bit ECC 192bit
DH 2048bit ECC 224bit
DH 3076bit ECC 256bit


2.数字签名

2.1 数字签名基本概念

消息认证码不能解决的问题:发送方否认、接收方否认

消息认证可以处理信息交换双方受第三方篡改,但是它不能处理通信双方自身发生的攻击

接收方否认 例:电子转账中转账金额篡改
发送方否认 例:股票交易中,交易否认

数字签名必须具有以下基本特征

  • 能验证签名者、签名的日期和时间
  • 能认证被签的消息内容
  • 消息能由第三方裁定,以解决争执

数字签名的攻击类型

  • 唯密钥攻击:攻击者仅仅掌握目标系统的公钥
  • 已知消息攻击:攻击者掌握一些消息以及对应的合法签名
  • 一般选择消息攻击:无需知道目标系统公钥,攻击者选择一些消息,然后攻击者根据选择的消息从目标系统中获取合法签名
  • 定向选择消息攻击:与一般选择消息攻击攻击类似,但是选消息的时间是在掌握系统公钥后,签名生成之前
  • 适应性选择消息攻击:允许攻击者对目标系统轮询。目标系统可以被要求对特定的消息签名,这些签名与攻击者之前获得的<消息-签名>对相关。

成功的攻击签名方案:攻击者能有一定概率完成如下攻击:

  • 完全破译:攻击者判断出目标系统的私钥
  • 通用伪造:攻击者掌握一个有效的签名算法,使得任一消息都能够等价地构造出合法签名。
  • 选择伪造:攻击者对于所选的特定消息能够伪造出合法签名。
  • 存在性伪造:攻击者至少可以伪造出一个消息的合法签名,但攻击者不能控制该消息的选择,该攻击危害最低。

数字签名的需求(应该满足的条件)

  • 签名是与消息相关的二进制位串

  • 具有发送方独有的信息,防止发送方否认与伪造

  • 产生数字签名容易

  • 识别和验证签名容易

  • 伪造数字签名在计算上不可行。无论是已知消息伪造签名还是已知签名伪造消息,双向在计算上均不可行

  • 保存数字签名的副本可行

数字签名的一般模型:

数字签名的一般模型

数字签名的简单描述:

数字签名的简单描述


2.2 两个经典的数字签名方案

1. ElGamal数字签名方案

数学基础:有限域上离散对数问题的难解性
ElGamal数字签名方案:私钥加密,公钥解密
ElGamal数字签名方案的基本算术是素数q和a,a是q的原根

ElGamal算法下数字签名生成
  1. 用户A产生公钥/私钥对

用户A产生公钥/私钥对的步骤:

  1. 生成随机整数XA,使得1<XA<q-1
  2. 计算YA= aXA mod q
  3. A的私钥是XA;A的公钥是{q,a,YA}
  1. 计算消息M的Hash值。对消息M进行签名之前,首先需要计算消息M的Hash值m=H(M),m∈[0.q-1]。

  2. A产生数字签名

用户A产生数字签名步骤:

  1. 选择与q-1互素的随机整数K。(1≤K≤q-1 and gcd(K,q-1)=1 )
  2. 计算S1 = aK mod q。
  3. 计算K-1 mod(q-1)(K mod q-1 的逆)
  4. 计算S2= K-1(m-XAS1)mod (q-1)
  5. 签名即为(S1,S2
ElGamal算法下数字签名验证
  1. 计算V1 = am mod q。
  2. 计算V2 = (YA)S1(S1)S2 mod q。

当V1= V2时 签名合法。
ELGamal简单验证

安全性在于:

  • 公钥无法推导出私钥
  • 无法根据数字签名推导出随机整数K

私钥XA以及签名过程中随机整数K的求值均为求离散对数,较难破解,但是当掌握一定信息时,V1、V2均为幂函数求值,可以通过有效算法快速求出。

2. Schnorr数字签名方案

将生成签名所需的消息计算量最小化。生成签名的主要工作不依赖于消息,可以在处理器空闲时执行。
签名生成的过程与消息相关的部分需要2n位长度的整数与n位长度的整数相乘
基于素数模p,p-1包含大素数因子q
一般情况下取p是1024位整数,q为160位整数

Schnorr方案下数字签名的生成

生成公钥/私钥对,步骤如下:

  1. 确定素数p、q。q是p-1的素因子
  2. 整数a,构成全局公钥{a,p,q}。其中a满足aq= 1 mod p,用户组内的每个用户都可以取此值。
  3. 确定用户私钥s。随机整数s∈(0,q)。
  4. 确定用户公钥v。v=a-s mod p。

私钥为s、公钥为v的用户,产生数字签名过程:

  1. 选择随机整数r,r∈(0,q),并计算x= armod p。
  2. 将x附在消息后面一起计算Hash值e:e= H(M || x)
    (签名之前可以生成x,这个x是关于随机数r的值,与消息M无关,可以在与消息绑定前进行提前处理)
  3. 计算y=(r+se)mod q。数字签名为(e,y)对。
Schnorr方案下数字签名的验证
  1. 计算x’ = ayve mod p 。
  2. 验证是否有e=H(M || x’)

2.3 DSS中的三种数字签名方案

美国国家标准与技术研究所(NIST)发布的联邦信息处理标准FIPS 186,称为数字签名算法(DSA)
使用SHA

1. NIST DSA

DSA与RSA方法的比较
DAS方法与RSA方法比较:
DSA与RSA的不同

数字签名算法DSA:
DSA数字签名算法

DSA的签名过程:
DSA签名过程

DSA签名的验证过程:
DSA验证过程


2.ECDSA

基于椭圆曲线密码的新数字签名方法
四个基本元素:

  1. 用于定义椭圆曲线以及基点的全局参数

  2. 生成公钥、私钥对。 签名者使用一个随机或者伪随机数作为私钥。用随机数和基点计算出另外一个解点作为公钥。

  3. 计算消息M的Hash值。使用私钥、Hash值、全局参数生成签名(r,s)

  4. v=公钥+全局参数+s,若v=r则验证通过。

椭圆曲线:y2=x3+ax+b
ECDSA算法的签名验证:
ECDSA算法


3.RSA-PSS

  • 这是一种基于RSA的数字签名方案
  • RSA各类方案中最安全的一种

RSA-PSS数字签名算法的EM编码
RSA-PSS

使用一个或者多个消息拓展(填充),其目的是为了增大攻击者给定一个消息后找到另外一个消息,映射到相同的摘要;或者寻找两个消息映射到相同摘要的难度。
使用盐,是为了使得使用相同私钥对相同消息进行签名时,得到的结果不同。

将字节串EM作为无符号的非负二进制整数m,通过如下方式加密m获得签名s:
s=md mod n
然后将计算出的签名值转化为k字节的串S

RSA-PSS数字签名算法的EM验证
消息摘要m通过解密s得到:
m=se mod n
RSA-PSS-EM


3. 密钥管理和分发

3.1 基于对称加密的对称密钥分发

密钥分发方案

密钥分发的几种方式:

  1. A选定密钥后通过物理方式传递给B

  2. C选定密钥后通过物理方式传递给A、B

  3. A、B之间使用旧密钥加密新密钥传递

  4. A、B到C有加密连接,通过C向A、B传递密钥

如果网络中的终端数量非常多,使用前两种方式进行密钥分发将非常困难N个终端需要分发(N*(N-1)/2)个密钥,若在应用层也需要加密传输,使用不同的密钥那么一个终端又要分发若干密钥,庞大的密钥分发和管理是个难题。

若选用第三种方式,如果一个密钥被破获,那么攻击者将获得接下来的所有密钥

第四种方案的变体:密钥分发中心(Key Distribution Center)

系统中每一个终端与KDC共用同一个密钥,将这个密钥称为主密钥
将端与端之间使用的由KDC分发的密钥称为会话密钥

密钥分发方案过程见下图:
密钥分发

层次密钥控制与密钥的生命周期

本地KDC — 全局KDC

会话密钥越频繁交换越安全,但是过于频繁的交换又会给网络增加负担。

  • 面向连接的协议
    在整个会话中使用同一个会话密钥,开启新的会话在创建新的会话密钥。若链接会话很长可以周期性的更换密钥

  • 无连接的协议
    例:面向事务的协议,没有明确的连接初始和终止,不知道多少时间更换一次密钥

  1. 每次都是使用新的会话密钥(耗费大)

  2. 特定时间间隔或者特定数量的事务分配不同的密钥

透明密钥控制方案与分布式密钥控制

对终端用户透明的方式,对网络或数据传输层提供端到端的加密
密钥分发

分布式密钥控制设置会话密钥流程:

分发中心必须可信而且防破坏,但分布式环境下无此要求

  1. A 向B发送会话密钥请求,其中包括临时交互号N1
  2. B用共享密钥加密信息并回给A(包含会话密钥,B的标识符、f(N1)临时交互号N2)
  3. A使用会话密钥加密信息f(N2)
    密钥分发

3.2 基于非对称加密的对称密钥分发

  • 简单密钥分配方案与存在的不足
    简单密钥分配方案:PUa加密信息
    密钥分发

不足:无法防御中间人攻击

  • 保密与身份认证的密钥分发方案
    保密与身份认证

  • 混合方案

IBM大型机中使用的方案,KDC与每一个用户共享一个主密钥,主密钥加密用于分发会话密钥,公钥方案用于分发主密钥

  • 公钥加密解密体系需要相对较高的计算负荷
  • 可以用较小的代价覆盖已经存在的KDC模式

3.3 公钥分发

  • 公钥的公开发布
    最简单的:广播出去。缺点:不能防止C假冒,在被A发现之前,C可以假冒A,以为A的名义生成公、私钥对,获取原本要发给A的消息。

  • 公开的可访问目录
    将公钥通过安全的认证通信将公钥发布到受信任的目录上,任何人都可以查询访问。
    不足:若攻击者获得管理员的私钥,攻击者可以冒充任何通信方,用以窃取本该发送给该通信方的消息。

  • 公钥授权
    进一步严格控制目录的公钥分配。

  1. A发送一条带时间戳请求给Admin,请求B的公钥
  2. Admin给A发送使用其私钥加密的消息,A使用管理员公钥进行解密,A可确定消息来自管理员。消息包括(B的公钥、原始请求、原时间戳)
  3. 使用B的公钥加密包含(A标识符+临时交互号N1)的消息给B。
  4. B使用相同方式获得A的公钥。
  5. B用A公钥加密(N1,N2)发给A,N1可使得A确信该消息来自B。
  6. A用B公钥加密N2,B可确信该消息来自A
    用户需要周期性的请求公钥信息,以确保使用的是当前最新的公钥。
  • 公钥证书

公钥授权已经很不错了,但是还是有一个明显的问题:十分依靠管理员,任何通信方需要向公钥管理员申请公钥。
公钥证书解决了上述问题,它的基本原理是用受信任的第三方认证机构给(公钥,公钥拥有者的标志)进行签名,形成公钥证书,用户就可以以证书的形式公开证书,任何需要公钥的用户可以通过证书后面附带的可信签名来验证证书的有效性。
证书应当具有以下几个要求:

  1. 任何人都可以读取证书并且确定证书拥有者姓名和公钥。
  2. 任何通信实体都可以验证证书出自证书管理员,而不是伪造的。
  3. 只有证书管理员可以制作和更新证书。
  4. 任何通信方可以验证证书的时效性。

3.4 X.509证书和PKI

  • X.509是基于公钥密码体制和数字签名的服务。推介RSA,未指定Hash算法
  • X.509证书包含该用户的公钥并由一个可信的签证机构用私钥签名,此外还定义了基于公钥证书的一个认证协议
  • X.509是关于证书结构和认证协议的一个重要标准。X.509格式证书在S/MIME、IP安全性、SSL/TLS与SET中应用广泛。(十分重要)

X.509的格式:

X.509证书格式:
X.509格式

X.509的层次结构

获取不同CA颁发的证书:
PKlevel

PKI简介

PKI系统是由软硬件,人,策略和程序构成的一整套体系。这些程序用来创建管理存储,分发和撤销建立在非对称密码算法之上的数字证书。
创建PKI的主要目的就是用来安全、边界、高效地获得公钥。

Public Key Infrastructure X.509工作组在X.509的基础上建立了一个可以用来构建网络认证体系的基本模型:PKIX模型
公钥基础设施简介:
公钥基础设施



4.用户认证

4.1 远程用户认证原理

RFC 4949 定义用户认证:

  • 鉴定阶段:给安全系统系统身份标志

  • 核实阶段:提供或者产生可以证实实体和标志之间对应关系的认证信息

身份鉴定是指用户提供一个声明的身份给系统,用户认证是使得声明有效的一种方式。

认证一个用户身份大致有四个常用工具:

  • 知道什么 :如口令、个人身份号(PIN)或者之前准备问题的答案

  • 拥有什么 :如加密密钥、点至密钥卡、智能啦或者物理密钥。我们将此类认证信息称为令牌/

  • 静态生物特征 :指纹、视网膜、面容

  • 动态生物特征 :声音、手写特征等

4.1.1 双向认证

双向认证协议能过够使通信双方互相认证彼此身份并交换会话密钥。
关注两个问题: 保密性和时效性 保密性:阻止伪装以及会话密钥泄露;时效性:重放攻击的威胁使得保证时效性分非常重要。
防止重放攻击的方式:

  • 序列号(不常用):要求每一方都跟踪与其交互的通信方最新的序列号,开销大,不适用于认证和密钥交换。

  • 时间戳(不适用于面向连接的应用):基于时间戳的进程要求有足够大的时间窗口适应网络延迟,还要有足够小的时间来最小化攻击机会。

  • 挑战/应答(不适用于无连接类型应用):无连接传输之前的握手开销 否定了无连接传输的优点

4.1.2 单向认证

邮件协议:要求协议能够认证邮件来自实际的发送者,同时协议无需对邮件明文部分进行解密。

4.2 基于对称加密的远程用户认证

4.2.1 双向认证

  • Needham和Schroeder提出的基于KDC的密钥分配协议:
  1. A->KDC:IDA || IDB || N1

  2. KDC->A: E(KA,[ KS||IDB||N1||E(KB,[ KS||IDA ] )])

  3. A->B:E(KB,[ KS||IDA ])

  4. B->A:E(Ks,N2)

  5. A->B:E(Ks,f(N2))

上述协议不能经受特定类型的重放攻击。

  • Denning在以上基础上添加时间戳以保证协议免受特定形式的重放攻击:
  1. A->KDC:IDA || IDB

  2. KDC->A: E(KA,[ KS||IDB||N1||E(KB,[ KS||IDA||T] )])

  3. A->B:E(KB,[ KS||IDA||T ])

  4. B->A:E(Ks,N1)

  5. A->B:E(Ks,f(N1))

时钟或者同步机制的破坏或则错误可能造成分布的时钟不同步,Denning协议可能会受到抑制重放攻击(Suppress Replay Attack)

4.2.2 Kerberos

工作站用户想通过网络对分布在网络中的各种服务提出请求;希望服务器能够对授权用户提供服务并鉴别请求服务的种类。

  • Kerberos提供一个集中的授权服务器来进行认证

  • Kerberos依赖于对称加密体制未使用公钥加密体制

  • 版本4被广泛使用,版本5改进了版本4中的安全性,并成为Internet标准草案RFC 4120 RFC 4121

  • Kerberos协议的整体设计方案采用基于可信第三方的认证服务。客户与服务器信任Kerberos服务器来调和他们间相互认证。认证的安全性取决于Kerberos服务器的安全性

  • 一个简单的会话认证
    简单会话认证

简单会话认证存在的问题:

  1. 若一个用户想同时访问若干应用服务器,每次访问用户需要重复输入口令,以获取新的票据。

  2. 包含对口令的明文传输,可能会被敌手窃取口令从而使用受害者的任何服务

  • 一个更加安全的认证会话
    改进:避免口令明文传输、票据授权服务区(TGS,Ticket Granting Server)
    更加安全的认证会话

客户端申请一个服务器授权票据,将用户标志、服务标志、票据授权票据送往TGS。TGS对票据授权票据进行解密,通过标志验证票据正确性。若通过验证则向客户端发布相应服务授权票据。
ee

客户端将包含用户标志和服务授权票据的消息送往服务器,通过票据内容认证用户的合法性。
ee

上述的会话方式仍然存在问题:

  1. 票据授权票据的生命期或长或短都会有隐患------需求:证实票据使用者和票据所有者的一致性。

  2. 攻击者伪装成服务器从而窃取用户发往真正服务器的信息,并向服务器提供虚假服务-----需求:服务器向用户证实自己身份。

  • Kerberos4认证

55

认证信息包含C的用户标志ID、网络地址和时间戳,此认证消息仅能使用一次且生命期极短

Kerberos概览:
15.6

Kerberos域

kerbros

Kerberos version 5

version 4的不足:环境缺陷和技术不足

环境缺陷:
环境缺陷

技术不足:
技术不足


前一篇文章

后一篇文章


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、PGP概述 PGP(Pretty Good Privacy)的创始人是美国的Phil Zimmermann(菲利普•齐默曼),他在1991年把 RSA 公钥体系的方便和传统加密体系的高速度结合起来,并且在数字签名密钥认证管理机制上有巧妙的设计。因此 PGP 成为几乎最流行的公匙加密软件包。PGP有不同的实现,如GnuPG和Gpg4win,其中GnuPG(Gnu Private Guard,简写为GPG)的核心算法是PGP,GnuPG本身是为Linux等开源操作系统设计的;而Gpg4win是windows下GnuGPG及图形前端的合集安装包,其核心为GnuPG,包括:(1)Kleopatra和GPA:GPG的密钥管理器,用于生成、导入和导出GPG密钥(包括公钥和私钥);(2)GpgOL:Outlook 的GPG支持插件;(3)GpgEX:资源管理器的GPG支持插件;(4)Claws Mail:内置GPG支持的邮件客户端。 PGP是一个基于RSA公钥加密体系的加密软件,是开源且免费的,后经互联网志愿者发展完善并广泛应用,具有如下特点:(1)选择最可用的加密算法作为系统的构造模块,所用算法已被广泛检验过,相当安全;并将这些算法集成到一个通用的应用程序中,该程序独立于操作系统和处理器,并且基于一个使用方便的小命令集;(2)是一个开源项目,程序、文档在Internet上公开;(3)可以免费得到运行于多种平台上的PGP版本,具有广泛的可用性;(4)不由任一政府或标准化组织所控制,使得PGP得到了广泛信任;(5)与商业公司(Network Associates)合作,提供一个全面兼容的、低价位的商业版本PGP。2010年6月被赛门铁克公司收购。由于这些特点,使得PGP得到了广泛的应用。 PGP常用的版本是PGP Desktop Professional,它可以用来加密文件,可以用来对邮件保密以防止非授权者阅读,还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。同时,通过使用公钥密码算法,可以提供一种事先并不需要任何保密的渠道用来传递密匙的安全通讯方式。PGP功能强大,而且具有很快的速度,PGP提供的主要功能如表1.7.1所示。 表1.7.1 PGP的功能概述 功能 使用的算法 描述 消息加密 IDEA、CAST、3DES、TwoFish、ElGamal、RSA 发信人产生一次性会话密钥加密,用IDEA或CAST-128或3DES算法对消息进行加密;采用ElGamal或RSA算法用接收方的公钥加密会话密钥 数字签名 DSS/SHA-1、RSA/MD5 采用SHA-1或MD5消息摘要算法计算消息的摘要值(散列码),用发送者的私钥按DSS或RSA算法加密消息摘要 压缩 PKZIP 消息在传送和存储时可使用PKZIP压缩 E-mail兼容性 Radix-64 对E-mail应用提供透明性,采用基数64编码将加密后的消息(进制流)转换为ASCII字符串 数据分段 - 为了适应最大消息长度限制,PGP执行分段和重新组装 2、PGP的密钥管理 PGP是一种混合密码系统,应用了多个密码算法,包括对称密码算法、非对称密码算法、消息摘要算法、数字签名等经典的密码学算法。为用户生成密钥对之后,可以进行邮件的加密、签名、解密和认证。在PGP中使用的加密算法和用途如表1.7.2所示。 表1.7.2 PGP中采用的各种密码算法及用途 密钥名 加密算法 用途 会话密钥 IDEA、AES 对传送消息的加解密,随机生成,一次性使用 公钥 RSA、Diffie-Hellman 对会话密钥加密,收信人和发信人共用 私钥 DSS/SHA、RSA/SHA 对消息的杂凑值加密以形成签名,发信人专用 口令 IDEA 对私钥加密以存储于发送端 从上表可以看出,PGP使用了四种类型的密钥:一次性会话传统密钥、公钥、私钥和基于口令短语的传统密钥/通行字短语。 会话密钥按ANSI X9.17标准,采用IDEA算法,以密文反馈模式(CFB)生成。当PGP用RSA算法为用户生成一个新的公钥/私钥对时,PGP会要求用户提供一个口令短语,对该短语使用MD5/SHA-1消息摘要算法生成一个散列码后,销毁该短语,从而把用户输入的口令短语转化为IDEA/CAST-128密钥,再使用这个密钥加密私钥,然后销毁这个散列码,并将加密后的私钥存储到私钥环中。当用户要访问私钥环中的私钥时,必须提供口令短语。PGP将取出加密后的私钥,生成散列码,解密私钥。 一个用户可能拥有多个公钥/私钥对,正确识别加密会话密钥和签名所用的特定公钥/私钥对的一个最简单的解决方案是将公钥和消息一起传送。但这种方式浪费了不必要的空间。PGP采用的解决方案是给每个公钥分配一个密钥标识(KeyID),并以极大的概率与用户标识(UserID)一一对应,即UserID和KeyID标识一个密钥密钥标识至少为64位,因而密钥标识重复的可能性非常小。 PGP提供一种系统化的密钥管理方案来存储和组织这些密钥以保证有效使用这些密钥,它为每个节点(用户机器)提供一对数据结构,一个用于存放本节点自身的公钥/私钥对(即私钥环),另一个用于存放本节点知道的其他用户的公钥(即公钥环)。私钥环信息:时间戳、KeyID、公钥、私钥、UserID,其中UserID通常是用户的邮件地址。也可以是一个名字,可以重名;公钥环信息:时间戳、KeyID、公钥、对所有者信任度、用户ID、密钥合法度、签名、对签名者信任度,其中UserID为公钥的拥有者。多个UserID可以对应一个公钥。公钥环可以用UserID或KeyID索引。 如何保证用户公钥环上的公钥确实是指定实体的合法公钥,这是一个至关重要的问题。PGP提供几种可选的方案以减少用户公钥环中包含错误公钥的可能性:(1)物理上得到对方的公钥。这种方式最可靠,但有一定局限性;(2)通过电话验证公钥;(3)从双方都信任的第三方(个体或CA)处获得对方的公钥。 此外,PGP支持密钥管理服务器,用户可以将公钥发布在集中的密钥服务器上,供他人访问。 3、PGP的消息处理过程 PGP消息分成原始消息、签名部分和会话密钥部分三个部分。 PGP发送方处理消息的过程为:(1)签名:利用UserID作为索引,从私钥环中得到私钥;PGP提示输入口令短语,恢复私钥;构造签名部分;(2)加密:PGP产生一个会话密钥,并加密消息;PGP用接收者UserID从公钥环中获取其公钥;构造消息的会话密钥部分。 PGP接收方处理消息的过程为:(1)解密消息:PGP用消息的会话密钥部分中的KeyID作为索引,从私钥环中获取私钥;PGP提示输入口令短语,恢复私钥;PGP恢复会话密钥,并解密消息;(2)验证消息:PGP用消息的签名部分中的KeyID作为索引,从公钥环中获取发送者的公钥;PGP恢复被传输过来的消息摘要;PGP对于接收到的消息计算摘要,并与上一步的结果作比较。 4、PGP的信任模型 由于PGP重在广泛地在正式或非正式环境下的应用,所以它没有建立严格的公钥管理模式。尽管PGP没有包含任何建立认证权威机构或建立信任体系的规范,但它提供了一个利用信任关系的方法,将信任关系与公钥联系起来。PGP定义了与基于X.509真实的公钥基础设施(PKI)不同的证书模型,即所谓“信任网(Web of Trust)”模型。传统PKI模型依赖于CA层次体系验证证书和其中的密钥。而PGP模型则允许多重地、独立地而非特殊可信个体签署的“名字/密钥”关联来证明证书的有效性,其理论是认为“只要有足够的签名,<名字/密钥>关联就是可信的,因为不会所有的签名者都是‘坏’的”。PGP的信任网就像人际关系网一样,通过下述方式让使用公钥的人相信公钥是其所声称的持有者:(1)直接来自所信任人的公钥;(2)由所信赖的人为某个自己并不认识的人签署的公钥。因此,在PGP中得到一个公钥后,检验其签名,如果签名人自己认识并信赖他,就认为此公钥可用或合法。这样,通过所认识并信赖的人,就可以和总多不认识的人实现PGP的安全E-mail通信。 具体而言,在PGP中是通过在公钥环中的下述3个字段来实现Web of Trust信任模型的:(1)密钥合法性字段(key legitimacy field):指示用户公钥合法性的可信等级。信任级别越高,则用户标识UserID与密钥间的绑定关系就越强。这个字段是由PGP计算的;(2)签名信任字段(signature trust field):每一个公钥项都有一个或者多个签名,这是公钥环主人收集到的、能够认证该公钥项的签名。每一个签名与一个signature trust field关联,指示PGP用户信任签名者对此公钥证明的程度。key legitimacy field 是由多个signeture trust field 导出的;(3)所有者信任字段(owner trust field):指示此公钥对其他公钥证书进行签名的信任程度。这个信任程度是由用户给出的。 PGP使用以个人为中心的信任模型,采取一种“社会信任链”的方式进行公钥分发。在这种方式下,用户可以自行决定对周围的联系人是否信任,并可以决定信任度的高低。用户只接收信任的朋友传送来的公钥,并且这些公钥都带有签名。这种方式反映了社会交往的本质,比较适合一般场合下的安全通信。 本实验通过实际操作,了解PGP/GPG4Win软件的常用功能,利用PGP/GPG4Win软件实现密钥管理、对文件和电子邮件的签名与加密等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值