📖 前言:加密技术是目前网络安全的基础。数据加密技术是指对在网络中所发送的明文消息用加密密钥加密成密文进行传送,接收方用解密密钥进行解密再现明文消息,从而保证传输过程中密文信息即使被泄漏,在无密钥的情况下仍是安全保密的。目前,数据加密技术已被普遍应用于计算机网络信息的安全管理中。计算机系统和计算机网络系统是一个虚拟的数字世界。在这个虚拟数字世界中,包括用户身份的一切信息都是用0和1组成的特定数据来表示,计算机只能识别用户的数字身份,所以,对用户的授权也是针对用户数字身份进行的。
目录
- 🕒 1. 密钥管理和分配
- 🕘 1.1 基于对称加密的密钥分配
- 🕘 1.2 基于公钥加密的密钥分配
- 🕒 2. 消息认证码
- 🕘 2.1 基于对称加密的消息认证码
- 🕘 2.2 基于公钥加密的消息认证码
- 🕘 2.3 基于散列函数的消息认证码
- 🕒 3. 数字签名
- 🕘 3.1 基本过程
- 🕘 3.2 实现数字签名的方法
- 🕤 3.2.1 直接数字签名
- 🕤 3.2.2 仲裁数字签名
- 🕒 4. 信息隐藏技术
- 🕘 4.1 分类
- 🕘 4.2 信息隐藏系统的特征
- 🕤 4.2.1 鲁棒性(健壮性)
- 🕤 4.2.2 不可检测性
- 🕤 4.2.3 透明性
- 🕤 4.2.4 安全性
- 🕤 4.2.5 自恢复性
- 🕤 4.2.6 可纠错性
- 🕘 4.3 数字水印
- 🕒 4. 身份认证技术
- 🕘 4.1 身份认证概述
- 🕘 4.2 基于密码的身份认证技术
- 🕤 4.2.1 一次性口令原理
- 🕘 4.3 PKI技术概述
- 🕘 4.4 CA机构
- 🕘 4.5 证书及管理
- 🕘 4.6 PMI技术概述
- 🕘 4.7 Kerberos协议
- 🕘 4.8 统一身份认证技术
- 🕒 5. 实验——密码技术
- 🕘 5.1 实验原理
- 🕘 5.2 实验步骤
- 🕤 5.2.1 应用GnuPG生成密钥对
- 🕤 5.2.2 应用GnuPG实现对称加密
- 🕤 5.2.3 应用GnuPG实现公钥加密和数字签名
🕒 1. 密钥管理和分配
密钥的种类:
- 主密钥:对密钥加密密钥进行加密,通常保存在网络中心或者中心节点中,受到严格的物理保护。
- 密钥加密密钥:用来在传输会话密钥时加密会话密钥,也称为次主密钥或二级密钥。
- 会话密钥:用于通信双方交换数据,可以由密钥管理中心分配,也可以通信双方协商获取。通信结束后,该密钥即被销毁。
🕘 1.1 基于对称加密的密钥分配
对于通信双方Alice和Bob,有以下密钥分配方法:
- 直接交换:通信双方面对面或通过安全通道交换密钥,简单但安全性低。
- 第三方分发:可信的第三方(如KDC)生成并分发密钥,提高了安全性但引入了信任问题。
- 已有密钥加密:使用已有密钥加密新密钥传输,依赖于已存在的安全密钥。
- 公钥加密:通信双方各自生成公钥和私钥,通过公钥加密和私钥解密来验证身份,建立安全通道。
基于对称加密的密钥分配通常使用密钥分配中心KDC实现,由它判断哪些主机之间允许相互通信。
当两个主机需要建立连接时,KDC为这条连接提供一个一次性会话密钥。
会话密钥分配过程:
- 用户A向KDC发送用自己的注册密钥Ka加密的报文Ka (A,B)
- KDC随机地产生一个临时密钥k,供用户A和B在本次通信中使用,然后向A发送应答报文。报文中包括KDC分配的临时密钥k和KDC请A转给B的报文Kb(A,Rn)。此报文再用A自己的注册密钥Ka进行加密。
- 用户B收到A转来的报文Kb(A,k)时,一方面知道A要与自己通信,另一方面知道本次通信中使用的密钥是Rn。
KDC每次分配给用户的对称密钥是随机的,保密性较高。且KDC分配给每个注册用户的密钥(如Ka、Kb等)都可以定期更新,以增加系统的安全性。
🕘 1.2 基于公钥加密的密钥分配
公钥证书
- 用户通过安全渠道把他的公钥提供给CA并获取证书
- 通信时只需要将证书发给对方即可,不需要CA参与
- CA负责检验公钥的合法性
- 证书证明用户合法地持有公钥
- CA的数字签名使得攻击者无法伪造和篡改证书
公钥算法可以直接对消息加密,但是如果明文消息很长,加解密速度就十分缓慢。所以公钥算法更多用来分配对称加密的密钥。
公钥分配对称加密的密钥
- 保护对称加密密钥的传递,从而保证对称密钥的安全性
- 使用对称密钥对发送的明文消息进行加密
- 密钥的安全性保证传输数据的安全性
- 充分利用了对称加密速度快的特点
分配过程:
- A用B的公加密一个报文发给B内容包括一个随机数N1和A的标识
- B收到报文后,使用A的公钥加密应答报文给A,内容包括收到的随机数N1和新产生的随机数N2
- A用B的公钥加密N2,并发送给B来证实自己身份
- A生成会话密钥K,用自己的私钥加密,保证K的确由自己产生,再用B的公钥加密,保证只有B才能解密
- B收到密文,首先用自己的私钥解密,然后再用A的公钥解密得到K,继而通过K与A实现安全通信。
🕒 2. 消息认证码
消息认证用于保证信息的完整性和不可否认性,可以检测信息是否被第三方篡改或伪造。
消息认证码MAC (Message Authentication Code) 指利用密钥产生的一小块数据,并附加到传输的消息上。
假设通信双方A和B共享一个对称密钥K,当A要发送消息给B时,A利用某个数学函数F生成消息认证码,将消息连同认证码一并传送给B。B对收到的消息使用K做相同的运算,生成MAC,将两者比较,若收到的消息认证码与计算得到的认证码相同,则
- B能够确认消息没有被篡改
- B确保消息来自发送方A,因为没有其他人知道K
若消息中包含序列号,B可以确认报文的顺序正确性。
可以使用对称加密算法公钥加密算法、散列函数来实现MAC的计算。
🕘 2.1 基于对称加密的消息认证码
- 发送方计算消息M的摘要H(M)
- 将摘要加密后附加到消息尾部
- 消息M和认证码E(H(M))一起发给接收方
- 接收方解码认证码,同时使用相同方法计算摘要H(M’)
- 比较H(M)和H(M),不同说明完整性被破坏
🕘 2.2 基于公钥加密的消息认证码
与基于对称加密的相似,发送方使用私钥加密摘要,接收方用发送方的公钥进行解密。
🕘 2.3 基于散列函数的消息认证码
S值双方秘密共享,不随数据传输。
使用散列函数实现认证的变形方法是HMAC,即散列消息认证码。
HMAC特点:
- 把散列函数当成一个模块
- 充分利用现有散列函数库代码
- 方便替换使用更安全的模块或散列函数
- 在密钥 K K K 左边填充0,得到 b b b位的 K + K^+ K+
- 构造 i p a d = 00110110 ipad = 00110110 ipad=00110110 重复 b / 8 b/8 b/8次,使其和 K + K+ K+等长
- 将 K + K^+ K+ 与 i p a d ipad ipad 进行按位异或,产生分组 S i S_i Si
- 将填充内容 P P P、长度块 L L L附加在消息之后,变为分组长度 b b b 的整数倍
- 将填充后的消息 M M M 附加在 S i S_i Si之后
- 将 ( S i + M ) (S_i+M) (Si+M)、初始值 I V IV IV 一起输入到选定的Hash函数中,产生Hash值 H ( S i + M ) H(Si+M) H(Si+M)
- 构造 o p a d = 01011100 opad = 01011100 opad=01011100 重复 b / 8 b/8 b/8次
- 将 K + K+ K+ 与 o p a d opad opad 进行按位异或,产生分组 S o S_o So
- 将前面得到的Hash值 填充至 b b b位,附加在 S o S_o So 后面
- 将 ( S o + H ) (S_o+H) (So+H)、初始值 I V IV IV 一起输入到选定的Hash函数中,产生的Hash值 即 消息认证码HMAC
练习题:
现在Hash函数是将所有分组进行按位异或,且分组长度b=8,填充内容P为10…00,消息长度区域共2位。
若密钥K=110,请给出消息001的HMAC。
解答: K + = 00000110 K^+ =00000110 K+=00000110
i p a d = 00110110 o p a d = 01011100 ipad = 00110110 \qquad opad = 01011100 ipad=00110110opad=01011100
S i = K + ⊕ i p a d = 00110000 S_i = K^+\oplus ipad = 00110000 Si=K+⊕ipad=00110000
Y = 001 100 11 Y = 001 \ 100 \ 11 Y=001 100 11(明文分组)
H 1 = H ( S i ∣ ∣ Y ) = S i ⊕ Y = 00000011 H_1=H(S_i \mid\mid Y) = S_i \oplus Y = 00000011 H1=H(Si∣∣Y)=Si⊕Y=00000011
S 0 = K + ⊕ o p a d = 01011010 S_0 = K^+\oplus opad = 01011010 S0=K+⊕opad=01011010
H 2 = H ( S 0 ∣ ∣ H 1 ) = S 0 ⊕ H 1 = 01011001 H_2=H(S_0 \mid\mid H_1) = S_0 \oplus H_1 = 01011001 H2=H(S0∣∣H1)=S0⊕H1=01011001
使用加密算法来实现MAC比加密整个消息的方法更具有优势,因为它们的计算量很低。
不同的是用于认证的加密算法不需要可逆,而算法可逆对于解密是必需的。
🕒 3. 数字签名
数字签名:用来保证信息传输过程中信息的完整性和确认信息发送者的身份,主要使用公钥加密。
数字签名满足要求
- 发送方事后不能否认发送的报文签名
- 接收方能够核实发送方发送的报文签名
- 接收方不能伪造发送方的报文签名
- 接收方不能对发送方的报文进行部分篡改
🕘 3.1 基本过程
(1)采用散列算法H对明文P运算,生成固定长度的散列码H§
(2)发送方A用自己的私钥对摘要H( P)加密,生成数字签名;将数字签名做为明文P的附件,与P一起发送给接收方
(3)接收方首先采用相同散列算法得到H(P’),然后再用A的公钥解密签名得到H( P),比较H( P)和H(P’),不同则表示被篡改。
🕘 3.2 实现数字签名的方法
按执行方法划分
- 直接数字签名
- 仲裁数字签名
🕤 3.2.1 直接数字签名
- 直接数字签名:数字签名的执行过程只有通信双方参与,并假定双方有共享密钥或接收方知道发送方的公钥。
- 缺点是安全性取决于发送方密钥的安全性
🕤 3.2.2 仲裁数字签名
- 发送方A对发往接收方的消息签名后,将消息和签名首先发给仲裁者
- 仲裁者对消息和签名认证后,附加一个表示已通过认证的消息,一同发给接收方。认证消息是由仲裁方的私钥加密的原始消息和原始签名。
- 缺点是整个过程中,仲裁方必须得到通信双方的高度信任
🕒 4. 信息隐藏技术
信息隐藏的目的是使敌手不知道哪里有秘密,它隐藏了信息的存在形式。
信息隐藏的通用模型:
🕘 4.1 分类
- 隐蔽信道:既不是专门设计的也不打算用于信息传输的信道
- 匿名:对通信参与者的身份甚至存在性的隐藏的操作和相应的方法
- 版权标识:在载体中隐藏精心设计过的秘密消息,强调对主动攻击的识别能力和抵抗性
- 隐写术:强调对被动攻击的抵抗性,无论嵌入的秘密消息是什么,都保证其不被察觉。
🕘 4.2 信息隐藏系统的特征
🕤 4.2.1 鲁棒性(健壮性)
鲁棒性指不因宿主文件的某种改动而导致隐藏信息丢失的能力。
所谓的改动包括传输过程中的信道噪音、滤波操作、重采样、有损编码压缩等。
🕤 4.2.2 不可检测性
不可检测性指隐蔽宿主与原始宿主具有一致的特性
🕤 4.2.3 透明性
利用人类视觉系统或听觉系统的特性,经过一系列隐藏处理,使目标数据没有明显的降质现象,而隐藏的数据却无法人为地看见或听见。
🕤 4.2.4 安全性
隐藏的信息内容应是安全的,最好经过某种加密后再隐藏,同时隐藏的具体位置也应是安全的,至少不会因格式变换而遭到破坏。
🕤 4.2.5 自恢复性
如果只从留下的片段数据,就能恢复隐藏信息,而且恢复过程中不需要宿主信息,这就是自恢复性。
这要求隐藏的数据必须具有某种自相似特性。
🕤 4.2.6 可纠错性
为了保证隐藏信息的完整性,使其在经过各种操作和变换后仍能很好的恢复,通常采取纠错编码方法。
🕘 4.3 数字水印
数字水印是信息隐藏中的重要技术之一。
定义:不被感知的在数字产品中嵌入信息的处理行为。
数字水印是依据信息隐藏的思想,将重要的、可认证的信息嵌入图像、视频、音频及文本文件等数字多媒体的内容中,成为难于感知的部分,但表面上并不影响产品的可视性或可读性。
根据需要,可以从加了水印的产品中检测预先嵌入的信息对产品的完整性及版权进行认证和证明。
应用:防止对产品的篡改和盗版。可以作为多媒体播放器的有条件进入的控制信号,阻止那些没有得到合法授权的团体或个人对产品的滥用和复制,从而达到对多媒体产品的跟踪保护。
练习题:
1、使用密码技术可以保证信息的【】,同时还可以保证信息的完整性和准确性,防止信息被篡改、伪造和假冒。
A.控制安全性
B.机密性
C.抗攻击性
D.网络服务正确性
2、消息认证是验证消息的【】,即验证数据在传送和存储过程中是否被篡改、重放或延迟等。
A.不可否认性
B.可用性
C.完整性
D.机密性
3、加密安全机制提供了数据的【】。
A.完整性和安全性
B.保密性和完整性
C.保密性和可控性
D.可靠性和安全性
4、( )密码体制,不但具有保密功能,并且具有鉴别的功能。
A.对称
B.非对称
C.私钥
D.混合加密体制
5、可以保证信息的机密性,完整性、准确性,防止信息被篡改、伪造和假冒的技术是()
A.密码技术
B.数据灾难与数据恢复技术
C.操作系统维护技术
D.数据库应用技术
答案:A、D、B、B、C
🕒 4. 身份认证技术
🕘 4.1 身份认证概述
身份认证也称为“身份验证”或“身份鉴别”,是指在计算机及计算机网络系统中确认操作者身份的过程。
身份认证的概念身份认证是系统审查用户身份的过程。
身份认证通过标识和鉴别用户的身份,提供一种判别和确认用户身份的机制。
计算机网络中的身份认证是通过将一个证据 (凭证)与实体身份绑定来实现的。
身份认证的方式:
- 用户所知道的(What you know)。如要求输入用户的口令、密钥或记忆的某些动作等。
- 用户所拥有的(What you have)。如U盾、智能卡等物理识别设备。
- 用户本身的特征(What you are)。如用户的人脸、指纹、声音、视网膜等生理特征以及击键等行为特征。
- 生理特征认证:如指纹识别、虹膜识别、人脸识别、声纹识别
- 生物行为认证:如击键认证(利用一个人敲击键盘的行为特征进行身份认证)、步态匹配、心跳密码
- 多因子信息
一般情况下,可以通过多个凭证(也有称多因子)来共同鉴别用户身份的真伪。
我们在银行ATM机上取款需要插入银行卡,同时需要输入银行卡密码,就是采用了双因子认证。
认证的因子越多,鉴别真伪的可靠性就越大。
在高安全等级需求的应用中,最好形成多因子认证机制。
身份认证的作用:身份认证与鉴别是信息安全中的第一道防线,对信息系统的安全有着重要意义。可以确保用户身份的真实、合法和唯一性。
访问控制和审计系统都依赖于身份认证系统提供的“认证信息鉴别和审计
在网络安全领域,将认证(Authentication)、授权(Authorization)、审计(Accounting)统称为AAA或3A。
- 授权:当用户或实体的身份被确定为合法后赋予该用户的系统访问或资源使用权限。根据用户身份的不同,给不同的用户授予不同的权限,限制通过认证的用户的行为。
- 审计:审计也称为记账 (Accounting) 或审核,出于安全考虑,所有用户的行为都要留下记录,以便进行核查。所采集的数据应该包括登录和注销的用户名、主机名及时间
- 安全性评估:安全性评估 (security assessment) 是审计操作的进一步扩展。在安全性评估中专业人员对网络中容易受到入侵者攻击的部分进行内部检查,对网络存在的薄弱环节进行阶段性评估
审计信息一般存放在日志文件中是对系统安全性进行评估的基础。
目前所使用的网络入侵检测、网络入侵防御、网络安全动态感知等系统,其工作依据主要来源于各系统和设备产生的日志信息。
四种方式总结:只有本身的特征是独一无二且不可伪造的,而其他几种方式都会存在安全风险。
基于智能卡的认证是一种双因素认证,也称为增强型认证
🕘 4.2 基于密码的身份认证技术
密码认证:也称为“口令认证”,它是计算机系统和网络系统中应用最早也最为广泛的一种身份认证方式。
密码=秘密
一次性口令认证是一种比传统口令认证技术更加安全的身份认证技术,是在登录过程中加入不确定因素,使每次登录时计算的密码都不相同,是一种相对简单的身份认证机制,可以简单快速地加载到需要认证的系统
🕤 4.2.1 一次性口令原理
- 种子:认证服务器为用户分配的一个非密文的字符串,一用户对应一种子,种子在认证系统中具有唯一性。
- 序号:指Hash函数的迭代次数,是系统通知用户将生成的本次口令在一次性序列中的顺序号。
- 通行短语:它是只有用户知道的值,这个值是保密的。
通行短语和种子是不变的,序号是动态变化的;种子和序号是可以公开的,但通行短语是保密的。
动态口令认证的实现方式
1.时间同步方式
时间同步 (Time Synchronization) 是利用用户的登录时间作为随机数,连同用户的通行短语一起生成一个口令
2.挑战/应答方式
当客户端发出登录请求时,认证系统生成一个挑战信息发送给客户端。客户端使用某种Hash函数生成一个口令发送给认证系统,认证系统用同样的方法生成一个口令,通过比较验证身份。
挑战应答机制的实现过程
①客户向认证服务器发出请求,要求进行身份认证,结束;
②认证服务器从用户数据库中查询用户是否是合法的用户,结束
③认证服务器内部产生一个随机数,作为"提问”发送给客户,结束
④客户端将自己的密钥(通行短语)和随机数合并,使用单向Hash函数(如MD5算法)运算得到一个结果作为认证证据传给服务器(应答),结束;
③认证服务器使用该随机数与存储在服务器数据库中的该客户密钥(通行短语)进行相同的单向Hash运算,进行验证,结束。
3.事件同步方式
通过特定事件次序及相同的种子值作为输入,通过特定算法运算出相同的口令
事件动态口令是让用户的密码按照使用的次数不断动态地发生变化。
S/Key协议的实现过程
S/Key安全协议是经典的基于挑战/应答思想的一次性口令协议
S/Key采用了Hash算法将口令转化为密文进行传输,提高了认证的安全性
使用一次性密码 (即“一次一密”) 技术可以防止重放攻击的发生,这相当于用户随身携带一个密码本。
S/Key协议中缺少双向身份认证,很容易受到中间人攻击
S/Key也存在明文传输问题,认证信息很容易被篡改,无法抵抗小数攻击、改进型小数攻击以及多种攻击方式的组合攻击。
🕘 4.3 PKI技术概述
PKI的核心是要解决网络环境中的信任问题,确定网络环境中行为主体(包括个人和组织)身份的唯一性、真实性和合法性,保护行为主体合法的安全利益
公钥基础设施的要求
(1)安全策略,以规定加密系统在何种规则下运行;
(2) 产生、存储、管理密钥的产品;
(3) 如何产生、分发、使用密钥和证书的一整套过程。
PKI的安全功能:
(1) 保密性。保证信息的私有性
(2) 完整性。保证信息没有被篡改。
(3) 真实性。证明一个人或一个应用的身份(4)不可否认性。保证信息不能被否认。
PKI的组成:
证书策略:用于管理证书的使用
CPS:一些由商业证书发放机构 (CCA)或者可信任的第三方管理的PKI系统需要认证操作管理规范 (CPS)
PKI安全策略
(1)CA的创建和运作方式。
(2)证书的申请、发行、接收和废除方式。
(3)密钥的产生、申请、存储和使用方式。
认证机构CA
其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表 (CRL)确保必要时可以废除证书
CA必须是各行业、各部门及公众共同信任的、认可的权威的、不参与交易的第三方网上身份认证机构。CA制定了一些规则,这些规则可以使申请和使用证书的用户确信该CA是可以依赖的。描述CA在各方面受约束的情况及运作方式的规则都被定义在CPS文件中。
如果一个CA没有CPS,人们会降低对该CA颁发的数字证书的信任程度。
注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。RA主要完成收集用户信息和确认用户身份的功能。
注册机构RA并不给用户签发证书,而只是对用户进行资格审查RA可以设置在直接面对客户的业务部门,如银行的营业部、机构认证部门等。
当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成。
证书发布系统:负责证书的发放目前一般要求证书发布系统可以Web方式与Internet用户交互,用于处理在线证书业务,方便用户对证书进行申请、下载、查询、注销,恢复等操作。
PKI应用
- 在Web服务器
- 浏览器之间的通信
- 电子邮件
- 电子数据交换
- VPN
- IPSec VPN
- 安全电子邮件协议(SPMIME)
一个简单的PKI系统组成:
- CA、RA和相应的PKI存储库
- CA用于签发并管理证书;
- RA可作为CA的一部分,也可以独立,其功能包括个人身份审核、CRL管理、密钥产生和密钥对备份等;
- PKI存储库包括LDAP目录服务器和普通数据库,用于对用户申请信息、证书、密钥、CRL和日志等信息进行存储和管理并提供一定的查询功能
🕘 4.4 CA机构
如何管理密钥
- 公钥需要在一定范围内公开
- 共同信任的认证机构(CA)
认证机构 (CA)是整个网上电子交易等安全活动的关键环节主要负责产生、分配并管理所有参与网上安全活动的实体所需的数字证书
CA是一个具有权威性、可信赖性和公正的第三方信任机构,专门解决公开密钥机制中公钥的合法性问题。
CA的主要职能
(1)制订并发布本地CA策略。但本地CA策略只能是对上级CA策略的补充,而不能违背。
(2) 对下属各成员进行身份认证和鉴别
(3)发布本CA的证书,或代替上级CA发布证书
(4)产生和管理下属成员证书。
(5)证实RA的证书申请,向RA返回证书制作的确认信息,或返回已制作好的证书。
(6)接收和认证对它所签发的证书的撤销申请。
(7)产生和发布它所签发的证书和CRL。
(8)保存证书信息、CRL信息、审计信息和它所制订的策略。
安全服务器:是面向证书用户的提供安全策略管理的服务器,该服务器主要用于提供证书申请、浏览、证书撤销列表 (CRL)以及证书下载等安全服务。
CA服务器:是整个认证机构的核心,负责证书的签发。CA首先产生自身的私钥和公钥 (密钥长度至少为1024位),然后生成数字证书,并且将数字证书传输给安全服务器。CA还负责为操作员、安全服务器以及注册机构服务器生成数字证书。
LDAP服务器:提供目录浏览服务,负责将注册机构服务器传输过来的用户信息以及数字证书加入服务器上。这样其他用户通过访问LDAP服务器就能够得到数字证书
数据库服务器:是认证机构中的关键组成部分用于认证机构中数据 (如密钥和用户信息等)、日志等统计信息的存储和管理。
CA之间的信任关系
认证机构 (CA)用于创建和发布证书,但一个CA一般仅为一个称为安全域的有限群体发放证书。每个CA只覆盖一定的作用范围不同的用户群体往往拥有各自不同的CA。
在X.509规范中对于信任的定义是:
如果实体A认为实体B会严格地按照A对它的期望那样行动,我们就说A信任B
信任关系是PKI系统中的重要组成部分,用来研究用户与CA的信任关系以及CA间的相互信任关系。
这些关系被结合起来形成信任桥,使得来自不同信任域的用户通过桥CA相互作用其中,桥CA不是一个树型结构的CA,也不像分布式信任模型中的CA,它不直接向用户颁发证书。
根CA是一个信任锚,而桥CA只是一个单独的CA而非信任锚。
桥CA与不同的信任域之间建立对等的信任关系,允许用户保留他们自己的原始信任锚。
Web信任模型:构建在Web浏览器的基础上,浏览器厂商在浏览器中内置了多个根CA,每个根CA相互间是平行的,浏览器用户同时信任多个根CA并把这些根CA作为自己的信任锚。
Edge的信任锚:
🕘 4.5 证书及管理
证书的概念
数字证书也称为数字标识。它提供了一种在Internet等公共网络中进行身份验证的方式是用来标识和证明网络通信双方身份的数字信息文件。
数字证书的格式
- X.509:为数字证书及其CRL格式提供了一个标准
- WTLS (Wireless Transport Layer Security,无线安全传输层):是无线应用协议中提供数据安全传输的一种服务。
- PGP (Pretty Good Privacy,优良保密协议):是一系列采用公钥加密体制、用于消息加密与验证的应用程序。
证书序列号指定由CA分配给证书的唯一数字型标识符。
证书申请和发放
- 在线申请:通过浏览器、电子邮件等在线方式来申请证书,用于申请普通用户证书。
- 离线方式:通过需要到认证结构证书受理点办理证书申请,用于比较重要的场合
证书撤销利用周期性发布机制,主要有证书撤销列表( Certificate Revocation Lists ,CRL)
利用在线查询机制,如在线证书状态协议(Online Certificate Status Protocol,OCSP)
证书撤销列表
- 为应用程序和其他系统提供了一种检验证书有效性的方式
- 任何一个证书撤销以后,认证机构CA会通过发布CRL的方式来通知各个相关方。
- 在PKI系统中,CRL是自动完成的,而且对用户是透明的。
- CRL中并不存放撤销证书的全部内容,只存放证书的序列号,以便提高检索速率。
在线证书状态协议 (OCSP)
- 是IETF工作组颁布的用于检查数字证书在当前时刻是否有效的标准协议。
- 该协议提供给用户一条便捷的证书状态查询通道,使PKI体系能够更有效、更安全地应用于各个领域。
- OCSP可以作为周期性CRL的一种替代机制或者补充机制,它对于获得一个证书撤销状态的及时信息是必要的。
- 与CRL相比,OCSP对获得证书撤销信息的及时性要强,所以OCSP一般用于网上银行、网上证券、电子政务中的某些关键部门。
证书更新
1.与证书相关的密钥可能达到它有效的生命终点
2.证书即将到期
3.证书中的一些属性发生了改变,而且必须进行改变。
数字证书类型
(1) 机构证书。
(2) 机构员工证书
(3) 个人证书。
(4) 代码签名证书
(5) SSL服务器证书。
🕘 4.6 PMI技术概述
授权管理基础设施:是国家信息安全基础设施的一个重要组成部分,目标是向用户和应用程序提供授权管理服务,提供用户身份到应用授权的映射功能,提供与实际应用处理模式相对应的、与具体应用系统开发和管理无关的授权和访问控制机制,简化具体应用系统的开发和维护。
PMI的概念:PMI是在PKI发展过程中为了将用户权限的管理与其公钥的管理分离,由IETF提出的一种标准。
PKI证明用户是谁,而PMI证明这个用户有什么权限、能干什么
属性权威AA,为不同的用户和机构进行属性证书(AC)创建、存储、签发和撤销,负责管理AC的整个生命周期。
属性证书库用于存储属性证书,一般情况下采用LDAP目录服务器。
属性证书 (AC)是PMI的权威机构 (即属性权威AA)签发的将实体与其享有的权限属性捆绑在一起的数据结构,权威机构的数字签名保证了绑定的有效性和合法性。
PMI系统框架:
- 权威源(SOA)
- 属性权威(AA)
- AA代理点
AA代理点的职责:主要包括应用授权服务代理和应用授权审核代理等,负责对具体的用户应用资源进行授权审核,并将AC的操作请求提交到AA进行处理。
访问控制执行者:是指用户应用系统中具体对授权验证服务的调用模块。实际上访问控制执行者并不属于授权管理基础设施(PMI)的部分,但却是授权管理体系的重要组成部分。
访问控制执行者的主要职责是:将最终用户针对特定的操作授权所提交的授权信息 (AC)连同对应的身份验证信息 (公钥证书)一起提交到AA代理点,并根据AA返回的授权结果,进行具体的应用授权处理。
基于角色的授权管理模式
(1)授权管理的灵活性。
(2)授权操作与业务操作相分离
(3)多授权模型的灵活支持。
从应用角度来看,PMI和PKI的发展是相辅相成并互为条件的。可以将PMI和PKI绑定在一起也可以让PMI与PKI在物理上分开
🕘 4.7 Kerberos协议
Kerberos系统
- 是MIT开发的基于TCP/IP网络设计的可信第三方认证协议
- 是为基于TCP/IP的Internet和Intranet设计的安全认证协议
- 在Client/Server模式下,以可信赖的第三方KDC (密钥分配中心)实现用户身份认证
- 在认证过程中,Kerberos使用对称密钥加密算法
在Kerberos系统中设置了两个服务器:认证服务器和票据分配服务器
- 认证服务器AS:为用户提供身份认证,将用户的密码保存在KDC的数据库中
- 票据分配服务器TGS:向已经通过AS认证的用户发放用于获取资源服务器上提供的服务的票据
- 密钥分配中心:使用一个可依赖的第三方KDC为需要认证的用户提供对称密钥;为每一个用户提供的对称密钥只有该用户和KDC知道;在KDC中还有一个主密钥KKDC,在KDC内部使用。
- 服务器端:为用户端提供资源的服务器,当用户访问这些资源时需要进行身份认证
- 用户端:需要提供身份认证的一方,有可能是用户账户,也有可能是设备的地址。
票据
- 在身份认证服务器 (AS和TGS) 与资源服务器之间传递用户的身份信息
- 将身份认证器对用户的信任信息转发给资源服务器
- 票据在服务器之间传递时都是进行加密的
时间戳
- 用户可以通过票据中的时间戳,指明票据发出的时期、时间以及它的生命周期等来得知票据的有效性
- 不同设备之间的时钟需要进行精确同步,或提供必要的时钟偏差
- 保证票据、密码等信息安全传输中所需要的密钥
(1)客户端在计算机上向AS发送一个包含客户端名称 (用户名)、资源服务器名称的认证信息。
(2) 随机生成一个加密密钥作为协议阶段客户端与TGS通信的新会话密钥。构造一个“票据许可票据”并用TGS的密钥加密,用KC加密新会话密钥与“票据”一起发送到客户端。客户端计算机利用用户输入的密码生成密钥。
(3) 客户端向TGS发送一个包含访问TGS时使用的“票据许可票据"需要访问的资源服务器名称、客户端名称及客户端密钥KC的信息
(4) TGS用自己的密钥验证“票据许可票据”,获得②中构造的会话密钥。
从数据库中获得资源服务器的密钥KS后,随机生成客户端与资源服务器之间通信时使用的会话密钥和服务许可票据”。
票据的作用是在身份认证服务器(AS和TGS)与资源服务器之间安全地传递用户的身份信息,同时也将身份认证器对用户的信任信息转发给资源服务器。
(5)和(6)客户端向资源服务器发送包含有认证者身份和“服务许可票据”(Tickettv)的信息,资源服务器通过解密获得客户端的信息,完成认证。
Kerberos协议总结
- Kerberos是基于对称加密来实现认证的
- 在Kerberos中会对每一个用户分配一个密钥对
- 在Kerberos系统中只要求使用对称密码,而没有对具体算法和标准作限定。
Radius认证协议
- 是一种应用于分布式环境的C/S架构的信息交互协议,常用于对安全性要求较高且允许远程用户访问的网络环境中。
- 最初的设计目的是为拨号用户进行认证和计费,经过多次改进,形成了一项通用的认证计费协议
- 认证机制灵活,可以采用PAP (口令认证协议)、CHAP(挑战-握手认证协议)或者UNIX登录认证等多种方式。
Radius在AAA架构中的应用
- NAS作为RADIUS客户端,向远程接入用户提供接入并与RADIUS服务器交互的服务。
- RADIUS服务器上存储着用户的身份信息、授权信息和访问记录,对用户进行认证、授权和审计 (记账)服务
Radius协议总结
- RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的,共享密钥不能通过网络来传输,增强了信息交互的安全性。
- 利用共享密钥对RADIUS报文中的密码进行了加密防止用户密码在不安全的网络上传递时被盗取
🕘 4.8 统一身份认证技术
基手SAML2.0的身份认证
- 安全断言标记语言是身份认证领域出现较早的基于XML语言的信息架构
- SAML提供了基于Web方式的单点登录解决方案
SAML规范的三种角色
- 用户代理
- 身份提供者(IDP)
- 服务提供者(SP)
SP接收到访问请求后向IdP发送身份认证请求,IdP要求用户提供能够证明其身份的信息,并以此作为其合法性的断言。SP从IdP获取身份断言从而决定是否提供服务
SAML2.0规范
1.断言
分为认证、属性和授权3种类型,认证确认用户身份,属性包含用户信息,授权确认用户得到授权
2.协议
协议定义了SAML如何请求和接收断言,主要涉及请求(request)和响应 (respond) 两种信息类型
3.绑定
定义了如何将SAML请求和响应映射到标准的报文和协议上
简单对象访问协议 (SOAP)是SAML中一个重要的绑定
4.配置
已定义的特定应用实例的具体表现,它由断言、协议和绑定组合而成。
基于OAuth2.0的身份认证
- OAuth (Open Authorization,开放授权)是一个开放标准的联合协议,旨在帮助用户将受保护的资源授权给第三方使用,且支持细粒度的权限控制。
- 在OAuth协议的整个授权过程中使用“访问令牌”和数字签名方式,提高了协议的安全性。
- 任何第三方都可以使用OAuth AS,任何服务提供者都可以组建自己的OAuth授权服务系统。
OAuth2.0定义4种不同角色
- 资源拥有者RO:RO是指能够对受保护资源进行授权的实体。授权操作方式可以是“在线授权”或“离线授权”
- 资源服务器RS:RS用于存放受保护资源,并处理对资源的访问请求。
- 客户端Client:指非客户端的第三方应用,获得RO的授权许可后可以去访问由RO管理的在RS上的资源。
- 授权服务器AS:AS用于对RO的身份进行验证和资源授权管理,并颁发访问令牌。
OAuth标准主要针对个人用户对资源的开放授权,目前多应用于SNS环境中
因其的开放性,公有云计算环境既可以直接使用SNS中的OAuth授权服务系统,在私有云环境也可以组建自己的授权服务系统
基于OpenID的身份认证
是一个以Internet框架为基础的数字身份认证规范
以URI来标识用户身份的唯一性
在OpenID认证过程,请求/应答信息通过https协议在公共网络中传输,OpenID认证服务器成为整个认证的中心。
- identifier标识符:为http/https形式的URI或XRI,XRI是一套与URI兼容的抽象标识符体系
- RP依赖方:是需要对访问者的身份进行验证的Web系统或受保护的在线资源,依赖OP的身份认证服务
- OpenID提供者:即OpenID认证服务器,在为用户提供和管理标识符的同时,还为用户提供在线身份认证服务,是整个OpenID系统的核心。
采用OpenID的网络
- 用户向OP申请一个标识符,并访问受OpenID保护的RP时,RP会将访问重定向到OP
- OP通过标识符对访问者的身份进行验证,无误后将用户访问返回到RP
在合理的时间范围内,用户登录安全逻辑域中其他受该OP保护的RP时,OP发现该用户的登录信息已经在缓存区中并与之建立了关联,不会再要求用户提交认证信息,而是直接将结果告知RP,实现了SSO
🕒 5. 实验——密码技术
🕘 5.1 实验原理
加密体制分为对称加密和公钥加密。
对称加密也称为常规加密和单钥加密,通信双方必须在安全通信之前协商好密钥,然后才能用该密钥对数据进行加密和解密,整个通信安全完全依赖于密钥的安全。对称加密分为分组加密和流加密两种形式。
公钥加密使用的基本工具是数学函数,由于它是不对称加密,使用两个独立的密钥,因此很好地解决了密钥分配和数字签名的问题。两个密钥分别是公钥和私钥,公钥可以公开提供给其他人使用,而只有自己才知道私钥,使用其中一个密钥进行加密,使用另一个密钥进行解密。公钥加密的基本步骤如下。
①每个用户都生成一对密钥用来对消息加解密。
② 每个用户把两个密钥的一个放在可公开的机构或文件中,这个密钥就是公钥,另一个密钥自己保存。每个用户都可以收集其他人的公钥。
③如果用户B希望给用户 A发送加密消息,B可以使用A的公钥进行加密。
④当用户 A收到这条消息时,使用自己的私钥进行解密,因为只有A才知道自己的私钥,所以其他收到消息的人无法解密消息。
🕘 5.2 实验步骤
GnuPG(GNU Privacy Guard,GPG)是 Linux下基于 PGP 机制的开源加密及签名软件,是实现安全通信和数据存储的一系列工具集,可以实现数据加密、数字签名,其常用指令选项及含义如下表所示。
指令 | 含义 | 指令 | 含义 |
---|---|---|---|
–gen-key | 生成公钥和私钥对 | -e/–encrypt | 加密文档 |
–list-keys | 显示公钥列表 | -d/–decrypt | 解密文档 |
-K | 显示私钥列表 | -s/–sign | 签名某个文档 |
-c | 使用对称加密加密文档 | –verify | 签名验证 |
-a | 生成ASCII码形式的加密 文档 | –export | 导出密钥到某个文档 |
-u/–local-user | 指明使用哪个用户的私钥 签名 | -r/–recipient | 指明公钥加密的接收方 |
🕤 5.2.1 应用GnuPG生成密钥对
①在Kali的终端窗口输入 gpg --full-generate-key
,生成密钥对。
选择第(2)项,接着GnuPG提示选择密钥长度,此处设置为2048比特。然后GnuPG提示指定密钥有效期,此处设置密钥永不过期,最后输入y确认,完成密钥参数设置。
为密钥对设置名称、邮箱地址和备注信息,GnuPG使用名称和邮箱作为每个密钥对的唯一标记。在设置完成时,GnuPG提示名称、邮箱或备注是否还需要修改,用户也可以输入q选择放弃生成密钥对。输入O,表示上述信息已经确认,GnuPG会弹出对话框,要求用户输入保护私钥的对话框。重复输入两次相同的口令,然后单击OK按钮,GnuPG开始生成密钥对过程。在这个过程中,需要用户不停地在键盘上键入随机字符,直到密钥对成功生成为止,密钥对最终生成成功。
③输入gpg -K
和 gpg --list-keys
可以分别查看系统中已经生成的私钥列表和公钥列表
Q:为什么生成密钥对时需要输入口令?
A:因为GnuPG使用口令来保护你的私钥。私钥是用于签名和加密的,因此保护私钥的安全非常重要。
要导出公钥,可以使用以下命令:
gpg -a -o [新文件名] --export [名称]
要导出私钥,你可以使用以下命令:
gpg -a -o [新文件名] --export-secret-key [名称]
会提示需要密码
🕤 5.2.2 应用GnuPG实现对称加密
GnuPG使用-c
参数实现对称加密,对称加密指加密和解密使用相同的密钥。用户输入的口令被 GnuPG 转换为加密密钥,GnuPG 随后采用内置的对称加密算法对文档进行加密。解密时,用户需要输入相同的口令,GnuPG将其转换为解密密钥,然后采用内置的解密算法对文档进行解密。
①创建一个文档或者使用已有文档。示例创建文档1234.c
并随机输入一些内容
②输入gpg -c -a -o 1234.c.gpg 1234.c
,对1234.c进行对称加密,生成文本形式的加密文档1234.c.gpg
,-c
参数指明使用对称加密,-a
参数指明生成文本形式的文档。
输入两次相同的口令并单击OK按钮后,该口令会被GnuPG转换为加密密钥对文档进行加密。输入 more 1234.c.gpg
查看加密文档1234.c.gpg
,结果是没有任何意义的随机字符串。
③解密文档:输入gpg -d 1234.c.gpg
对文档进行解密,
输入与加密过程相同的口令,单击OK按钮后,GnuPG会把解密后的明文信息输出至终端窗口。可以看出,GnuPG默认使用AES算法进行对称加密,并且使用256位密钥。如果想把解密后的明文存成文件,可以使用-o
参数。
🕤 5.2.3 应用GnuPG实现公钥加密和数字签名
此处先创建两个用户 Alice 和 Bob12 用于后续模拟实验
①公钥加密:输入gpg -e -r Alice -a -o 1234.c.gpg 1234.c
,使用 Alice 的公钥对1234.c
进行公钥加密,生成文本形式的加密文档1234.c.gpg
。-e
参数指明公钥加密,-r
参数指明使用谁的公钥进行加密。输入 more 1234.c.gpg
查看对称加密后的文档,内容是一堆完全无意义的随机字符串。
②私钥解密:输入gpg -d 1234.c.gpg
对文档进行解密,GnuPG会弹出对话框,提示输入生成密钥对时输入的口令,GnuPG把口令转化为解密密钥,解密存储在文件中的私钥,然后使用该私钥并应用该私钥对应的解密算法对文档进行解密。
③私钥签名:输入gpg -s -u Alice -a -o 1234.c.gpg 1234.c
,使用 Alice 的私钥对1234.c
进行签名,生成文本形式的签名文档1234.c.gpg
,-s
参数指明对文档签名,-u
指明使用谁的私钥。GnuPG把口令转化为解密密钥,解密存储在文件中的私钥,然后使用该私钥,并应用该私钥对应的加密算法对文档进行签名。
④签名验证:输入 gpg --verify 1234.c.gpg
,验证1234.c.gpg
的签名,可以看出该文档由Alice签名,签名时间为2024年3月27日,签名算法是DSA。
⑤公钥加密和私钥签名:输入gpg -e -r Alice -a -o 1234.c.gpg -s -u Bob12 1234.c
,使用Alice
的公钥加密,使用Bob12
的私钥签名,对文档1234.c
进行加密和签名,生成文本形式的加密签名文档1234.c.gpg
。
⑥私钥解密和签名验证。输入gpg -d -v 1234.c.gpg
的同时进行解密和签名验证,首先指明该文档使用Alice的公钥进行加密,并且由Bob12的私钥进行签名,然后GnuPG使用Alice的私钥进行解密,最后使用Bob12公钥验证签名,确认文档确实使用Bob12的私钥签名。
Q:为什么使用公钥时不需要输入口令,而使用私钥时需要输入口令?
A:私钥是用户身份的证明,自然需要口令。
Q:什么时候使用公钥?什么时候使用私钥?
A:使用公钥的情况:当你想要将信息加密并发送给某人,而只有这个人能够解密时,你需要使用他们的公钥进行加密。例如,你想要向某个人发送一个秘密消息,你可以使用他们的公钥对消息进行加密,然后他们使用私钥解密。此外,公钥也常用于数字签名的验证,接收者使用发送者的公钥来验证消息的真实性。
使用私钥的情况:当你想要加密信息,确保只有你自己或者你授权的人能够解密时,你需要使用私钥进行加密。例如,你想要保护你的私人文件,你可以使用私钥对文件进行加密,然后只有拥有相应私钥的人才能解密。此外,私钥也常用于数字签名的创建,发送者使用自己的私钥对消息进行签名,接收者再使用发送者的公钥来验证签名的真实性。
总的来说,公钥用于加密信息或验证数字签名,私钥用于解密信息或创建数字签名。
OK,以上就是本期知识点“密码技术基础与身份认证技术”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页