【信息安全技术及应用】公开密钥加密技术

来源:互联网 发布:淘宝搜索关键词技巧 编辑:程序博客网 时间:2024/04/27 20:27

一、公开密钥加密技术

1.2 公开密钥密码系统的原理

公开密钥密码体制:使用不同的加密密钥与解密密钥,是一种由已知加密密钥推导出解密密钥在计算上不可行的密码体制。

1、公开密钥密码体制的特点:
- (1)公开密钥算法基于数学函数而不是替代和置换。
- (2)密钥是非对称的,用到两个不同的密钥,对于保密通信、密钥分配和鉴别等领域都有深远影响。
- (3)成功解决了网络身份鉴别、数字签名等问题。
- (4)使密钥管理变得容易了。
- (5)加密和解密较常规密钥密码体制慢。

2、公开密钥密码系统一般性描述:
(1)在公开密钥密码体制中,每个用户都拥有两个不同的密钥:加密密钥和解密密钥。
(2)用户的加密密钥公开(公开密钥),可公开发布在密钥薄上,被所有用户访问;用户的解密密钥由自己保存并严格保密 (私有密钥)。
(3)发送端用接收端的加密密钥PK对明文M进行加密,生成密文C传输,加密变换记为:C = EPK(M)接收端用自己的解密密钥SK对密文C解密得到明文M,解密变换记为:M = DSK(C) 。
(4)公钥密码体制的加密变换和解密变换应满足:
a、解密变换是加密变换的逆变换:DSK(EPK(M))=M 或 EPK(DSK(C))=C
b、已知加密密钥,EPK(M)容易计算;已知解密密钥 DSK(C) 容易计算。
c、从已知的PK无法推导出SK,或者说从PK推导出SK在计算上是不可行的。
(5)加密密钥不能用来解密:DPK(EPK(X))!=X。
(6)在计算机上可容易地产生成对的PKSK
(7)从已知的PK和密文,要想推导出明文在计算上是不可行的。
(8)加密算法E和解密算法D都是公开的。

3、工作模式:保密、鉴别

保密工作模式
鉴别工作模式
保密加鉴别工作模式

1.3 RSA公钥加密算法

RSA公钥密码体制的基本原理:根据数论,寻求两个大素数比较简单,而将他们的乘积分解开则极为困难。

1、RSA算法密钥计算过程:
(1)用户秘密选取两个大素数 p 和 q,计算n=pq,n称为RSA算法的模数,公开。
(2)计算出n的欧拉函数ϕ(n) = (p-1)×(q-1),保密。
(3)从(1,ϕ(n))中随机地选择一个与ϕ(n)互素的数e作为加密密钥,公开。
(4)计算出满足ed=1modϕ(n)的 d 作为解密密钥,保密。
(5)RSA算法密钥:
加密密钥PK = |e, n| 公开
解密密钥SK = |d, n| 保密

2、加密算法:C = E(m) = me mod n

3、解密算法:m = D(c) = cd mod n

4、RSA算法,相同的明文映射出相同的密文。

1.4 密钥管理

1、可行的公开密钥分配方案:
(1) 为了克服自行公开宣布密钥的缺陷,可采用公开公钥目录的方案。
(2) 由可信的第三方负责维护和管理公开公钥目录。
(3) 目录管理者为每个参与者维护一个目录项,包括用户名、对应的公开密钥及密钥更新时间。
(4) 每个参与者在目录中登记一个公开密钥。登录必须面对面或通过某种经过鉴别的通信方式进行。
(5) 参与者的公开密钥使用目录管理者的私有密钥加密后放入相应的目录项。公开公钥。
(6) 参与者可以随时更新自己的密钥 。(方法同上)
(7) 管理机构定期发布目录或者对目录进行更新。
(8) 缺陷:目录管理者的私有密钥容易泄露。
(9) 适用范围:组织或社团内部。

2、公开密钥管理机构:
(1) 管理机构更加专业,并负有相关的法律责任。
(2) 管理机构通过更严密地控制公开密钥从目录中分配出去的过程(同时也是控制对目录的访问)使公开密钥分配更安全。
(3) 参与者通过请求来获得想要的公开密钥。
(4) 此外,通信双方还要通过一个鉴别过程,来确定对方是否是公开密钥的合法拥有者。

公开密钥的分配过程

3、公开密钥分配要点:
(1)公钥是外表,实质是私钥。私钥与所有者的绑定。
(2)面对面或可信渠道。
(3)权威第三方必须存在。国家的法律、组织的信誉。
(4)公开的公钥必须防止被篡改、被假冒。
(5)公钥分配时最好也要防假冒。
(6)在互联网环境中不宜采用集中式密钥管理

公开密钥证书 (public key certificate):是某人的公开密钥,由可信赖的组织签发。

4、每个证书包含一个公开密钥及相关信息,由受信任的证书管理机构制作,并发给具有匹配私有密钥的参与者。
参与者通过传输自己的证书将其信息传送给其他人,收到该证书的人可以验证证书的真伪。

5、对公开密钥证书方案的要求:
(1)任何人都可以阅读证书以确定证书拥有者的名字和公开密钥。
(2)任何参与者都可验证证书是否来自证书管理机构。
(3)只有证书管理机构才能制作和更新证书。
(4)任何参与者都可以验证证书的时效性

6、简单的常规加密密钥分配方法:
(1)A产生公开/私有密钥对,并将公开密钥和A的标识传输给B。
(2)B产生一个常规加密密钥KS并用A的公开密钥加密后传给A。
(3)A将B传来的信息用私有密钥解密后得到KS,这样只有A和B知道KS
(4)A弃用刚才的公开/私有密钥对,B弃用A的公开密钥。A和B使用KS进行安全通信,信息交换完成后,A和B都丢弃KS
(5)优点:在通信前后都不存在密钥。

7、具有保密和鉴别功能的常规加密密钥分配方法:
(1)A和B互换公开密钥(证书方式)
(2)A选择一个常规加密密钥KS并将EPKb[ESKa[KS]]发送给B。该报文只有B能解密,只有A能生成。
(3)B解密后得到KS

1.5 Diffie-Hellman密钥交换算法

1、Diffie-Hellman 算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数p和它的一个原根α后,对给定的 b,要计算 i ,被认为是很困难的,而给定 i 计算b 却相对容易。

2、Diffie-Hellman算法:
(1)假如用户A和用户B希望交换一个密钥。
(2)取素数q和整数αα是q的一个原根。公开
(3)A选择随机数XA

二、散列函数与报文鉴别

2.1 报文鉴别概念

报文鉴别(Message Authentication):是防御网络主动攻击的重要技术。

1、报文鉴别的作用:
(1)信源鉴别:检验信息发送者的真伪。
(2)完整性鉴别:检验信息在存储和传输过程中是否被篡改、重放和延迟。
报文鉴别系统模型

2、报文鉴别码原理:
使用密钥和特定算法对明文产生短小的定长数据分组,即MAC,并附在报文中。在接收方,使用相同的密钥和算法对明文计算MAC,如果新的MAC与报文中的MAC匹配,那么:
(1) 接收者确信报文来自所期望的发送方。
(2) 接收者确信报文未被更改过。
(3) 如报文包含序号(TCP),那么接收者确信该序号的正确性。

3、MAC函数:MAC=CK(M),MAC函数类似于加密过程,主要区别是MAC函数无需可逆。由于该特性,鉴别函数比加密函数更不易破解。

4、报文鉴别码的基本用法:
(1) MAC直接与明文连接后传输(不加密)。
(2) MAC与明文连接后一起加密再传输。
(3) 将MAC与明文分别加密后,连接传输。

2.2 散列函数

1、散列函数将任意长度的报文作为输入,输出为定长的报文摘要,函数形式:h = H(M),其中M为变长报文,H(M)为定长的报文摘要MD。

2、当确信或已知报文值正确时,报文摘要MD在源点被加到该报文上。接收端通过计算该报文的MD来鉴别该报文。由于散列函数是公开的,所以需要对其进行保护。

3、使用散列函数的目的是为文件、报文或其它分组数据产生“指纹”,用于报文鉴别,散列函数H必须具有如下性质:
(1)H必须能够用于任何大小的数据块。
(2)H应当生成一个固定长度的输出。
(3)对任何给定的报文M,计算H(M)应当是容易的,应比加密容易的多,不论用硬件还是软件实现。
(4)单向性:对任何给定的m,找出x使得H(x)=m,在计算上是不可行的。即从一个散列值生成一个报文是不可行的。
(5)弱抗冲突性:对任何给定的数据块x,找出y!=x ,但H(y)= H(x),在计算上是不可行的。防止生成替代报文。
(6)强抗冲突性:寻找对任何的(x,y)对使得H(x)=H(y)在计算上不可行(抵御生日攻击)。输入任意长度,输出定长,当输入集合足够大时,一定会重复。

H函数的内部结构
散列函数H的核心是4个循环压缩函数,4个循环有相似的结构,每个循环进行16步处理。图中的ABCD是4个32位的寄存器,有各自的初始值。每一轮计算完后都要写入ABCD寄存器,作为下一轮计算的输入,当计算完毕时,寄存器ABCD中的值就是所要得到的MD结果。
循环压缩内部结构
(1)函数M的结构:
每轮循环压缩的M函数不同:
循环压缩一:F(b, c, d) = (b∧c)∨(b∧d)
循环压缩二:G(b, c, d) = (b∧d)∨(c∧d)
循环压缩三:H(b, c, d) = b⊕c⊕d
循环压缩四:I (b, c, d) = c⊕(b∨d)
每轮循环压缩内部包含16步处理,每步处理用到的M函数都相同。
(2)X[k]的含义:可理解为数组,k取值0-15,类型为四字节无符号整数,用来存512位输入分组值。每轮循环中每步处理用到的X[k]各不相同。
循环压缩一:X[0] 到 X[15]顺序使用。
循环压缩二:(1+5k) mod 16
循环压缩三:(5+3k) mod 16
循环压缩四:7k mod 16
(3)T[n]的含义:可理解为数组,n取值1-64,类型为四字节无符号整数,用来存放常量:T[n] = 232 * |sin(n)|

4、目前对散列函数的攻击方法有两种:强行攻击和密码分析。
强行攻击:可用于对任何类型的散列函数进行攻击,而散列函数抗强行攻击仅依赖于算法产生的散列码的长度。
密码分析:这种攻击方法依赖于散列函数的结构和代数性质,它采用针对于散列函数的弱抗冲突性进行攻击。这类攻击方法有:中间相遇攻击、修正信息攻击和差分分析等.

2.3 报文鉴别码

1、需使用密钥的散列函数或改进算法通常称为报文鉴别码MAC。

2、一个基于DES的数据鉴别算法
基于DES的数据鉴别算法

3、HMAC算法:
如果密钥K的长度小于b比特,则在密钥K左边填充一些“0”生成长度为b比特的比特串,并将新生成的密钥记作K+。(长度=b bit)
K+与ipad按比特异或产生一个b比特的分组Si。这里,ipad为HMAC算法中的一个比特模式串,ipad=将00110110重复b/8次。
将报文M附加到Si后面。算法记为 Si || M。
K+与opad按比特异或产生一个b比特的分组S0 。这里,opad为HMAC算法中的一个比特模式串,opad=将01011010重复b/8次。
Si||M作为散列函数的输入,其输出H(Si||M)附加在S0后面,并将得到的比特串再次作为散列函数的输入计算其散列值,得到n比特的输出,就是要计算的MAC。

4、HMAC可表示为:
HMACK = H [(K+ opad) || H [(K+ ipad) || M ] ]

三、数字签名与身份鉴别

3.1 数字签名

数字签名是网络中进行安全交易的基础

1、数字签名是笔迹签名的模拟,须具有如下性质:
(1)必须能证实作者签名和签名的日期与时间。
(2)在签名时必须能对内容进行鉴别。
(3)签名必须能被第三方证实以便解决争端。

2、对数字签名的要求:
(1)签名必须使用对发送者来说是惟一的信息,以防伪造和抵赖。
(2)签名必须是依赖于要签名报文的比特模式。
(3)数字签名的产生相对简单,识别和证实相对简单。
(4)伪造一个数字签名在计算上是不可行的,无论是通过已有的数字签名来构造新报文,还是对给定的报文构造一个虚假的数字签名。
(5)数字签名的存储备份容易。

3.1.1 直接数字签名

数字签名通过使用发方的私钥对整个报文加密,或仅对报文的散列码加密来形成。

3.1.2 需仲裁的数字签名

直接数字签名存在的问题可通过仲裁来解决:
(1)每个由X发往Y的签名报文首先送给仲裁者A,A对该报文的签名进行校验。
(2)然后对报文注明日期,附上一个已经经过仲裁证实属实的说明后发给Y。A的存在解决了直接签名方案所面临的问题:X可能否认发送过该报文。
(3)方案中,仲裁起着敏感的和关键的作用,所有通信方必须充分信任仲裁机构。

3.1.3 基于常规密钥加密的数字签名

1、假定:发送方X和仲裁A共享密钥Kxa,A和接收方Y共享密钥Kay,X和Y之间共享密钥Kxy。X有报文M要传送给Y。
(1)X传送给A的信息:标识符IDx、用Kxy加密的报文、签名,签名由X的标识符和加密报文的散列值组成,并用密钥Kxa进行加密。即:IDx || EKxy[M] || EKxa [IDx || H(EKxy[M])]
(2)A验证签名并转发报文给Y:A对签名进行解密并验证散列值的有效性,这时,A只能面对加密报文;然后A将来自X的报文附加上时间戳,用Kay加密后发送给Y。即:EKay[ IDx||EKxy[M]||EKxa[IDx||H(EKxy[M])] || T ]
(3)Y检验报文并存储签名:Y用Kay和Kxy解密报文,时间戳通知Y该报文是新的而不是过时的。Y可以存储EKxy[M]||EKxa[IDx||H(EKxy[M])] || T 。
(4)争执仲裁:当发生争执时,Y出示存储的的报文密文和签名: EKxy[M]||EKxa[IDx||H(EKxy[M])] ,仲裁者使用Kxa对签名进行解密并验证散列码。

2、说明:在这个方案中,Y不能直接验证X的签名;签名是解决争端的惟一手段。Y认定报文来自X这一事实是因为它经过了A,双方必须高度信任A。

3、存在的问题:仲裁和发方结盟可否认一个签名报文,或者和收方结盟可伪造发方的签名。

3.1.4 基于公开密钥加密的数字签名

1、X发给A的信息:X对报文M进行两次加密,将得到一个签名的、机密的报文。再次使用SKx对这个签名报文连同X的标识符加密,并将加密结果连同IDx发送给A。IDx || ESKx [IDx || EPKy (ESKx [M])],内部经双重加密的报文对仲裁者 (除了Y之外的其他人)是安全的,

2、A验证报文:A通过验证确信X的私有/公开密钥仍然有效,如果这样,也就完成对报文的验证。然后A向Y发送一报文:ESKa [IDx || EPKy (ESKx [M]) || T ]。

3、这个方案和前面两个方案相比有许多优点。首先,通信前各方没有共享任何信息,可防止结盟欺骗的发生。X发给Y的报文内容对A和其他任何人都是保密的。

3.1.5 数字签名算法

数字签名的生成和验证过程

1、数字签名算法(DSA) :
与算法相关的数据:三个公开参数(p,q,g)、一对密钥(x,y)、一个密值k、报文散列码H(M)。
公开参数p:长度在512bit与1024bit之间的素数,长度是64的整数倍。
公开参数q:p-1的素因子,长度160bit。
公开参数g: g = h(p1)/qmod p其中,h为一任意整数,1

3.2 身份鉴别技术

1、身份鉴别:证实客户的真实身份与其声称的身份是否相符的过程,是网络安全的重要组成部分。

2、鉴别依据:即被鉴别对象的属性,用于鉴别的属 性对被鉴别对象来说应该是惟一的、以区别于其它实体的属性。

3、鉴别方式:单向鉴别和双向鉴别。
双向鉴别:通信各方相互证实对方的身份。
单向鉴别:有些网络应用仅需要一方证实另一方的身份。如:电子邮件、访问网络主机等。

4、鉴别技术:
基于口令的鉴别方法。(单向鉴别)
双因素鉴别。 (双向鉴别)
询问握手鉴别协议CHAP。(双向鉴别)
Kerberos鉴别协议。(双向鉴别,基于常规加密)
X.509数字证书(单、双向鉴别,基于公钥加密)

3.3 X.509数字证书

1、基于X.509证书的鉴别技术依赖于共同信赖的第三方来实现鉴别。称为CA(Certificate Authority)

2、CA负责鉴别用户的身份并向用户签发数字证书。

3、持有X.509证书的用户可以凭此证书访问那些信任颁发证书CA的服务器。

4、X.509证书的构成:
(1)由信息部分( I )和数字签名部分(S)构成。
(2)数字签名:证书权威机构Y对证书持有人C的证书信息 Ic 进行签名,签名通过用Y的私有密钥SKY 对Ic 的散列码加密实现。
即:S = ESKy [H( Ic )]
(3)用Y《C》来表示Y对C签发的证书。
即: Y《C》=Y{Ic} = Ic || ESKy [H( Ic )]

5、X.509证书是由可信的证书权威机构(CA)签发的一个关于实体与其公开密钥关联的数字声明。该证书具有权威性。证书的核心是公开密钥、公开密钥持有者(主体)和CA的签名,证书完成了公开密钥与公开密钥持有者的权威性绑定。

6、由CA产生的用户证书特点:任何拥有CA公开密钥的用户都可以对该CA签发的证书进行验证,从而获得一个可信用户的公开密钥。除CA外,任何一方都不可能不被察觉地修改证书。

7、证书的格式

8、如果证书中出现了颁发者惟一标识符或主体惟一标识符,那么版本号值必然为1(版本2)。如果出现扩展字段,那么版本号值必然为2(版本3)。

9、证书序列号(CertificateSerialNumber):证书序列号是由CA给定的每一个证书中具有惟一性的整数值。

10、颁发者名字(Issuer):创建和签发该证书的权威机构CA的X.500名字。

11、有效期(Validity):由两个日期组成,证书的有效起始时间和结束时间。

12、主体名(Subject):为该证书持有者的名字。主体名本身不能惟一地确定一个证书,因为一个主体可以有多个证书。

13、主体的公开密钥信息(SubjectPublicKeyInfo):由公开密钥算法标识和公开密钥位串组成。

14、颁发者惟一标识符(IssuerUniqueID):该字段是版本2增加的可选字段。颁发者惟一标识符由二进制位串构成。用来惟一地标识CA,解决颁发者名字可能被不同的实体重用的问题。

15、主体惟一标识符(SubjectUniqueID):是版本2增加的可选字段。主体惟一标识符由二进制位串构成。用来惟一地标识证书的持有者,解决主体名字可能被不同的实体重用的问题。

16、扩展(Extentions):扩展字段仅在第3版中出现,证书扩展包含一个或多个扩展字段。扩展字段提供了将用户及其密钥与其附加属性关联起来的方法。这些附加属性可以是密钥用途、证书策略、主体别名、基本约束、名字约束和策略约束等等。X.509还允许机构定义自己专用的扩展。

17、签名算法标识:与第3个字段的内容相同。

18、签名值:签名值是CA利用它的私有密钥对证书信息的散列码加密的结果。

19、X.509证书链:
A使用证书链获得B的公开密钥。这个链用X.509的符号可表示如下:CA1《CA2》CA2《B》 ,用同样的方式,B可获得A的公开密钥:CA2《CA1》CA1《A》

20、一个有N个CA的链可以表示为: CA1《CA2》CA2《CA3》… CAN《B》

21、证书链的形成依赖于证书权威机构CA之间的信任关系。通过信任的传递,使得处于不同CA管理下的两个端用户实体可以获得对方的可信公开密钥。

22、证书撤消列表(CRL)
每个证书都包含一个有效期。典型的做法是在老证书即将过期之前颁发一个新的证书。此外,有时基于以下原因要在证书过期前撤消它:
(1)用户的私有密钥已泄漏。
(2)用户不再由这个CA颁发证书。
(3)CA证书已泄露(签发证书的私钥泄露)。
每个CA须保持一个所有已撤消但还没过期的证书表,这些证书可能由这个CA或其他CA颁发。

23、当用户收到证书时,必须确定证书是否已被取消。用户每次收到一个证书时可以检查目录。

四、公钥基础设施PKI

1、PKI(Public Key Infrastructure):公钥基础设施是在公钥密码体制的理论和技术基础上发展起来的一种综合安全平台。

2、PKI能够为所有网络应用透明地提供加密和数字签名等服务所必需的密钥和证书管理,从而保证网上传递信息的安全、真实、完整和不可抵赖。

3、PKI的构成:
(1)认证中心(CA):负责签发、管理和作废证书等。
(2)注册中心(RA):建立证书持有者和证书间的关联。
(3)证书库/目录:保存证书,供公开访问。
(4)密钥备份及恢复
(5)证书作废处理
(6)PKI应用接口

4、处理证书作废分三种情况:
作废一个或多个主体的证书;
作废由某一对密钥签发的所有证书;
作废由某CA签发的所有证书。

0 0
原创粉丝点击