信息安全技术及应用 公开密钥加密技术
一、公开密钥加密技术
1.2 公开密钥密码系统的原理
公开展开密集型加ryption体系:采用不同的加ryption及decryption键,并定义为一种基于已知的加rypted键能够有效获取decrypted键,在计算层面是无法实现这一过程的安全体系.
1、公开密钥密码体制的特点:
(1) 公开密钥算法遵循数学函数而非替代与置换运算。(2) 密钥系统不对称,在保密通信、秘钥分发以及鉴别等领域发挥着关键作用。(3) 该体制成功地解决了网络身份识别以及数字签名等问题。(4) 公开密钥体系简化了对密钥管理的过程。(5) 相对于传统秘密共享体制而言,其加密与解密的速度相对较慢。
2、公开密钥密码系统一般性描述:
(1)在公开密钥体制中存在两种不同的密钥:加密密钥与解密密钥。
(2)用户的加密密钥可被广泛公布(如发布于公钥证书中),而解密密钥则需严格保密(私有密钥)。
(3)发送方利用接收方的加密公钥PK对明文M执行加密操作以生成 ciphertext C并传输之;此加密操作表示为:C = E_{P_K}(M)。(4)公开密钥体制中的加密与解密操作应满足以下条件:
a. 解密操作为加密操作的逆过程:即D_{S_K}(C)=M 或 E_{P_K}(M)=C
b. 已知加密公钥时可方便地执行解密操作(M),而拥有解密私钥时亦可方便地执行解密(C)。
c. 基于已知的PK推导出S_K在计算上是不可行的。
(5)使用公钥无法实现解密:即D_{P_K}((X))≠X。(6)生成一对公私钥匙在计算上是容易实现的。(7)仅凭已知 ciphertext及公钥,在计算上恢复明文M是不可行的。(8)用于加密与解密的操作算法E与D均为公开标准。
3、工作模式:保密、鉴别



1.3 RSA公钥加密算法
RSA公钥密码体制的核心原理基于数论,在相对容易的情况下可以找到两个大素数值;然而,在分解这两个大素数值的乘积时,则呈现出极大的难度。
RSA算法中的密钥生成过程如下:
(1) 用户秘密选择两个大素数p和q,并通过乘法运算得到n=p×q。n被称为RSA算法中的模数,并被公开使用。
(2) 通过欧拉函数公式φ(n)=(p-1)(q-1),系统生成并保存了这一重要参数。
(3) 系统从集合{1, n}中随机选取一个与φ(n)互质的整数e,并将其用作加密密钥并予以公开。
(4) 系统求得满足ed≡1 mod φ(n)的一个d值,并将其用于解密过程而不公开。
(5) RSA算法中的公私钥对由加密密钥(e, n)和解密密钥(d, n)组成。
2、加密算法:C = E(m) = m^e mod n
3、解密算法:m = D(c) = c^d mod n
4、RSA算法,相同的明文映射出相同的密文。
1.4 密钥管理
1、可行的公开密钥分配方案:
(1) 为了克服自行公开宣布密钥的缺陷,可采用公开公钥目录的方案。
(2) 由可信的第三方负责维护和管理公开公钥目录。
(3) 目录管理者为每个参与者维护一个目录项,包括用户名、对应的公开密钥及密钥更新时间。
(4) 每个参与者在目录中登记一个公开密钥。登录必须面对面或通过某种经过鉴别的通信方式进行。
(5) 参与者的公开密钥使用目录管理者的私有密钥加密后放入相应的目录项。公开公钥。
(6) 参与者可以随时更新自己的密钥 。(方法同上)
(7) 管理机构定期发布目录或者对目录进行更新。
(8) 缺陷:目录管理者的私有密钥容易泄露。
(9) 适用范围:组织或社团内部。
2、公开密钥管理机构:
(1) 管理机构专业化程度更高,并负有相应的法律责任责任。
(2) 管理机构通过更为严格地管控公开密钥从目录中分配出去这一特定流程(同时也是对目录实施访问管控)的方式实现了更为安全的分配机制。
(3) 参与者将按照既定程序获取所需公开密钥。
(4) 此外,在通信双方之间实施鉴权程序以确认对方是否具有合法的K_{pub}拥有资格。

3、公开密钥分配要点:
(1)公钥象征私钥的真实身份,在实际使用中两者直接关联。
(2)公钥分配应当基于"面对面"或经过严格核实的信息交流方式。
(3)必须依靠权威第三方认证机制来保障体系的有效运行:这包括国家法律制度以及组织自身的信誉背书等多方面因素共同作用下的严格审核程序。
(4)为了确保公开密钥的安全性,在分配过程中必须采取措施防止其被非法篡改或冒充行为的发生。
(5)在进行公钥分配时特别需要注意防止公钥被冒充的情况发生。
(6)鉴于当前互联网环境的安全性要求,在实际应用中应尽量避免采用集中式密钥管理系统
公共密钥认证(public key certification):属于某个人的公钥,并经可信赖机构认证颁发。
所有证书均包含一个公开密钥及相关信息,并由经过认证的证书管理机构制作后发放给持有对应私有密钥的参与者。参与者将自己持有的证书传递给他人后,接收方能够核实该证书的真实性。
5、对公开密钥 certificates的要求:
(1) 所有人均能查看该certificate以识别其持有者的名称与public key.
(2) 所有审核者均有能力核实该certificate的颁发机构身份.
(3) 仅凭机构认证方能创建及更新该electronic document.
(4) 每个审核者均能确认electronic file的有效期.
第6章 简单的常规加密密钥分配方法:
(1) A生成相应的公私密钥对,并将公钥及A的身份信息发送给B。
(2) B生成一个常规加密密钥K_S并用A提供的公钥对K_S进行加密后发送给A。
(3) A使用私有密钥解密接收到的信息后得到共享秘密明文钥匙。
(4) A丢弃刚使用的公私钥匙对;B也丢弃掉提供给A的那个公钥匙。随后双方继续进行安全通信。
(5) 优点在于通信前后都不再需要共享秘密明文钥匙。
7、一种兼具保密性和鉴别功能的常规加密密钥分配方案:
(1)双方通过证书方式进行公开密钥交换。
(2)操作方A选择一个常规加密秘钥KS,并通过发送E_{P_{K_b}}[E_{S_{K_a}}[ ]]给另一方。此 ciphertext仅有接收方能够解码,并且仅发方能够生成此 ciphertext。
(3)接方Upon decryption, B will obtain the desired ciphertext.
1.5 Diffie-Hellman密钥交换算法
该算法的安全性基于求解离散对数问题的难度。具体而言,在选定一个大素数p及其生成元α后,在已知b的情况下求出指数i的过程被认为极其困难;然而,在已知指数i的情况下计算对应的数值b则变得相对容易。
2、迪菲-赫尔曼协议:
(1) 假设用户A与用户B希望通过某种方式交换一个密钥。
(2) 选择素数q及模q下的生成元g,并向外界公布这些参数。
(3) 用户A生成随机整数X_A
二、散列函数与报文鉴别
2.1 报文鉴别概念
报文鉴别(Message Authentication):是防御网络主动攻击的重要技术。
报文鉴别的功能
其一为信源鉴别功能
其二是完整性保护功能

2、报文鉴别码原理:
利用密钥以及特定算法将原始明文分割成固定长度的小数据块(称为MAC字段)并附加在报文中。于接收端通过相同的密钥和算法验证报文中的原始数据是否正确生成(即计算出新的MAC值)。若新计算出的MAC值与接收到的数据中的MAC字段一致,则表明:
(1)接收端确认报告来源来自预期的数据源;
(2)确保报告内容未经篡改;
(3)如果报告中包含TCP编号字段,则确认编号的有效性。
3、消息认证码:M_A_C=C_K(M)被称为该算法。与加密算法类似的是该算法。一个显著的区别在于它不需要解密器参与计算。相比而言,在抗伪造方面更为鲁强。
4、报文鉴别码的基本用法:
(1) 通过直接连接发送方的MAC地址与明文信息进行传输(未采取加密措施)。
(2) 在传输过程中将MAC地址与明文信息一同加密后再发送出去。
(3) 分别对MAC地址和明文信息进行加密处理后进行连接并传输出去。
2.2 散列函数
该散列函数可接受任意长度的数据块作为输入,并能生成固定长度的数据指纹。其形式上定义为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的设计中占据核心地位的是四个循环压缩函数,在这些子程序之间具有高度的一致性与相似性,在每个子程序内部都包含十六步运算步骤,在这些步骤的过程中会依次对数据进行处理与转换;在图示中标识出的ABCD四个框框分别代表四个32位寄存器,在这些框框内各自具有预设初始值;经过每一次完整的运行周期后都会将当前的结果更新至这四个寄存器之中;当所有轮次计算完成后,在这四个寄存器中最终存储的就是该散列算法产生的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)|(n=1至64)
强行 attacks 可用于对任何类型的散列函数进行 attacks, 而散列函数对抗强行 attacks 的能力主要取决于其生成的 hash 码长度。
密码分析 这种 attacks 方法基于散列函数的结构与代数性质特征, 并利用其弱抗冲突性作为突破口来进行 attacks。
以下是一些典型的密码分析 attack 方法: 包括中间相遇 attack、修正信息 attack 以及差分分析等。
2.3 报文鉴别码
1、需使用密钥的散列函数或改进算法通常称为报文鉴别码MAC。
2、一个基于DES的数据鉴别算法

3、HMAC算法:
当密钥K不足b位时,在其左侧补充若干"0"使其达到b位长度,并记作K^+。(长度=b bit)
通过与ipad进行 bitwise XOR运算生成一个b位长的分组S_i。这里ipad是HMAC算法中的固定模式串且ipad=将其由二进制序列00110110重复取其前b/8位进行构造。
将报文M附加至组Si之后形成新的数据流|| M。
同样地通过与opad进行 bitwise XOR运算生成一个b位长的分组S_0 。这里opad是HMAC算法中的另一个固定模式串且opad=将其由二进制序列01011010重复取其前b/8位进行构造。
对|| M执行散列操作得到中间结果H(|| M),随后再对中间结果执行同样的散列操作获得最终n位长的信息 digest即为所求计算出的结果 MAC值。
4、HMAC可表示为:
HMACK = H [( \oplus opad) || H [( ipad) || M ] ]
三、数字签名与身份鉴别
3.1 数字签名
数字签名 是网络中进行安全交易的基础
数字签名可被视为笔迹式签名的一种模仿品,并需具备以下关键特性:
第一点:该系统需具备确认作者身份及其签署时间的能力;
第二点:在签署过程中需具备鉴别内容的能力;
第三点:其真实性需经第三方验证方能得到认可。
数学公式S若满足条件(i)至(iii),则称为...
2、关于数字签名的要求:
(1)必须基于发送者独有的关键信息以防止伪造和否认行为。
(2)其特征是由待签名文件的具体二进制模式所决定。
(3)生成过程及验证流程均较为简便易行。
(4)就目前技术而言,在现有数字签名基础上难以构造新的有效仿冒文件,在既定文件下创建虚假数字签名也是技术上不可行的。
(5)相关存储备份较为便捷
3.1.1 直接数字签名
数字签名采用发方私钥对全部报文进行加密,并非必须也仅用于报文散列码的加密以生成
3.1.2 需仲裁的数字签名
现有直接数字签名方案存在缺陷:
(1)为了解决这一缺陷,所有由X发往Y的签名报文都将首先提交给独立的仲裁机构A进行处理。
(2)随后,在报文中加入已由该机构严格验证的真实证明文件后发送给Y。这种做法通过引入独立的仲裁机构来解决直接签名方案所面临的问题:即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对签名进行解密并验证散列码。
在该方案中,Y无法直接验证X的签名;而签名则成为解决争议的唯一手段。Y只能依据A来确认报文来源为X,并且必须对A表现出高度的信任。
3、存在的问题:仲裁与发方合作可能导致一份文件的真实性受到质疑;或者与收方合作可能导致发方身份被冒用。
3.1.4 基于公开密钥加密的数字签名
X向A发送的信息是这样的:首先,X对报文M进行了两次加密处理,生成了一个带有签名且机密性的报文。随后,X通过SKx对该签名报文以及携带其标识符(IDx)再次进行了加密操作,并将最终结果传递给A方。其中包含双重层安全性的是这样的构造:IDx与ESPx结合后的值与ESKx结合后的值构成了完整的密钥链式结构(ID_x || ESK_x[ ID_x || EPK_y(ESK_x[M]) ]),这一机制确保除了Y之外的所有参与者都无法破解内部的安全通信内容。
2、A验证报文:基于A的验证结果可知,X仍持有有效的私钥或公钥。这则意味着上述操作已成功完成。随后,在与Y取得联系后,A将此加密消息发送给Y。
这个方案相较于前面两个方案具有显著优势。首先,在通信之前各方没有任何信息共享,以防止结盟方之间的欺骗行为发生。报文内容被发送给Y,并且对于A以及其他任何人来说都是保密的。
3.1.5 数字签名算法

数字签名算法(DSA)涉及的数据项包括三个公共参数(p,q,g),一对私钥和公钥(x,y),以及一个密钥k和报文散列值H(M)。其中p为素数且其位长介于512至1024位之间,并且是64的整数倍。q为其质因数之一且长度固定为160位。而g则由以下等式计算得出:g = h^{(p-1)/q} mod p其中h可取任意整数值并且满足条件h < p。
3.2 身份鉴别技术
身份识别:通过验证客户的真实身份与其所声称的身份是否一致来完成的过程,在保障网络安全方面发挥着重要作用。
鉴别标准:作为被鉴别的对象的关键特征,在鉴定过程中所依据的标准必须具有唯一性,并且能够与其他实体区分开来。
3、鉴权方式主要分为单向鉴权和双向鉴权两种类型。
双向鉴权:通信双方相互确认彼此的身份信息。
单向鉴权:某些网络应用仅需一方验证另一方的身份信息。例如,在电子邮件系统中实现双方身份认证;在网络主机访问控制中实现单方向身份验证。
4、鉴权技术:利用口令的方法。(单向鉴权)双重因素鉴权。(双向鉴权)通过握手询问鉴权协议CHAP。(双向鉴权)Kerberos 鉴权协议。(双向 鉴 价;使用 传 统 加 密)X.509 数 字 证书(单、 双 向 鉴 价; 使用 公 钥 加 密)
3.3 X.509数字证书
基于X.509证书的技术依靠共同信赖的第三方来实现鉴别,并被称为CA(Certificate Authority)
2、CA负责鉴别用户的身份并向用户签发数字证书。
3、持有X.509证书的用户可以凭此证书访问那些信任颁发证书CA的服务器。
4、X.509 证书的构成:
(1)包含信息字段(I)以及数字签名字段(S)。
(2)该机构使用私有密钥 SKy 对 Ih 的散列值进行加密处理。
即:S 等于 ESky 在 H 作用下的输出结果。
(3)采用符号形式表示为 Y《C》,即:
Y 通过符号形式表示为 Y 作用于 C 得到的结果等于将 C 的内容与其数字签名拼接而成。
X.509 证书是由经过认证机构(Certificate Authority, CA)签发的一个电子文件,
它证明了一个实体与其对应的公开密钥之间存在明确关联关系。
此证书拥有高度的信任度。
该体系的关键要素包括公钥、持有者以及认证机构的签名,
通过电子签名机制,
该体系实现了公钥与其持有者之间的信任绑定
6、由CA认证机构产生的用户证书特点:任何持有CA认证机构公开密钥的用户均可验证其颁发的证书,并由此获取该认证机构授权颁发的有效数字证书。除了颁发者之外的任何一方均无法匿名地篡改他人颁发的有效数字证书。
7、证书的格式

在证书中存在颁发者唯一标识符或主体唯一标识符的情况下,则其 versions 值必然是 1(即对应于 versions 2)。若包含扩展字段,则其 versions 值必然是 2(即对应于 versions 3)。
证书序列号(CertificateSerialNumber):由CA颁发的每个证书都会被赋予一个唯一编号的整数值。
10、颁发者名字(Issuer):创建和签发该证书的权威机构CA的X.500名字。
11、有效期(Validity):由两个日期组成,证书的有效起始时间和结束时间。
Subject name refers to the holder's name of the certificate. However, the subject name alone cannot uniquely determine a certificate, as one individual may possess multiple certificates.
持证人名称指的是持有该证书的人的名字。然而, 主体名仅能部分描述持有者的基本信息, 无法唯一地确定一个特定的证书, 因为一个主体可以拥有多个不同的证书
13、发包方的公钥信息(SubjectPublicKeyInfo):由公钥算法标识和公钥位串构成。
IId (Iisscer唯独识别码) 是一个在版本2中新增的可选字段。 IId 由二元位串构成。 其作用在于唯一识别CA 并解决证书发行商名称可能被不同实体重复使用的问题。
15、SubjectUniqueID(主体惟一标识符):是版本2新增的一个可选字段。SubjectUniqueID由二进制位串构成。用于唯一标识证书的所有者,并以防止证书持有者的名称在不同实体中被重复使用的问题。
Extension: 扩展字段仅在第3版中出现。该证书的Extension部分通常包含一个或多个Extension字段。这些Extension字段提供了将用户及其密钥与其附加属性关联的方法。这些附加属性可以是用途、证书策略、名称标识符、基本约束、名字约束和策略约束等等。此外,X.509标准还允许组织根据需要定义自己的特殊Extension。
17、签名算法标识:与第3个字段的内容相同。
18、签名值:签名值是CA利用它的私有密钥对证书信息的散列码加密的结果。
X.509 证书链:
通过证书链获取对方的公开密钥是一种常见做法。例如,在 X.509 格式的描述中可以看到一个典型示例:由 Root CA(RN)和 issued CA(CN)组成的数字证书串 C_{\text{A}} = \{C_{\text{N}}, C_{\text{R}}(C_{\text{N}})\} 可以用于标识 A 对 B 发送消息时所使用的数字签名方法。按照类似的方式,则可以得到 B 对 A 的公钥获取顺序 C_{\text{B}} = \{C_{\text{R}}(C_{\text{N}}), C_{\text{N}}\}。
20、一个有N个CA的链可以表示为: CA1《CA2》CA2《CA3》… CAN《B》
证书链的形成基于证书权威机构CA之间的互信关系。由于信任关系的建立,不同CA管理下的两个端用户实体能够实现对对方可信公开密钥的有效获取。
22、CRL(撤销列表)
每个数字签名认证请求中的数字签名都具有一个到期日。通常的做法是在某个数字签名即将过期之前向系统提交新的数字签名请求以更新其认证链(certificate)。此外,在某些情况下会在数字签名过期前将其撤销:
(1)当用户的私有密钥发生泄露时。
(2)当该用户的认证是由其他机构负责发放时。
(3)由于签发该数字签名所使用的私钥泄露而被迫撤销其数字签名时。
每个认证 Authority 都必须维护一份包含所有被撤销但尚未过期的有效数字签名列表,并且这些被撤销的有效数字签名可能会由该认证 Authority 或其他任何认证 Authority 继续颁发。
当用户获取到一个证书时,需核实该证书是否已被取消.每次用户收到一个证书后,可检查目录.
四、公钥基础设施PKI
PKI(Public Key Infrastructure)作为一种基于公钥密码体制理论和技术构建起来的全面的安全体系。
PKI通过公正透明地为所有网络应用提供加密和数字签名等服务相关所需的密钥与证书管理,从而实现信息在传输中的安全性与真实性保障及其完整性与不可否认性
3、PKI的构成:
(1)认证中心(CA):主要负责颁发和管理数字签名及相关证书,并能处理证书的撤销工作。
(2)注册中心(RA):负责建立和维护持证人与其认证之间的联系,并管理持证人的信息变更。
(3)证书库/目录:提供了一个公开可访问的存储空间,在此可查询、下载各类电子认证文件及其相关数据信息。
(4)密钥备份及恢复:设计了一套完整的密钥备份与恢复机制,在发生系统故障时能够快速恢复加密密钥存储状态。
(5)证书作废处理:规定了针对已过期电子签名及其相关电子数据的具体处理流程,并规定了相关的更新维护计划。
(6)PKI应用接口:定义了一系列标准的应用程序接口(APIs),以实现不同系统间的高效通信与协作功能

在处理证书失效时,通常分为以下三种情况:针对单一主体或多个主体的失效证书进行处理;对于由特定密钥对所签发的所有失效证书进行处理;以及针对由某个CA机构颁发的所有失效证书进行处理。
