文章目录
1 信息安全概述
信息安全:Information Security
1.1 信息安全事件
典例
典例1 棱镜门事件;
典例2 WannaCry勒索病毒事件;
典例3 Bleedheart
典例4 财付通余额被盗,QQ被盗
典例5 用户资料泄漏
典例6 钓鱼网站
1.2 信息安全现状
1.2.1 信息化现状
国防建设:全球预警、战区信息化、综合指挥系统;
国家能源、交通:国家电网的输配电、交通调度指挥;
企业生产、经营:异地生产协调、库存管理、企业动态联盟、电子商务
1.2.2 信息的威胁
- 互联网体系结构的开放性
- 一方面用户容易忽视系统的安全状况,
- 另一方面也引来了不法分子利用网络的漏洞来满足个人的目的
- 网络基础设施和通信协议的缺陷
- 信任关系
- 端口识别
- 网络应用高速发展
- 黑客
- 恶意软件(Malware)
- 操作系统漏洞
- 内部安全
- 社会工程学
要求掌握病毒、蠕虫、木马的区别和联系
计算机病毒:能自我复制或运行的电脑程序;电脑病毒往往会影响受感染电脑的正常运作;
蠕虫: 指除计算机病毒以外,利用信息系统缺陷,通过网络自动复制并传播的有害程序
木马程序: 是指伪装在信息系统中的一种有害程序,具有控制该信息系统或进行信息窃取等对该信息系统有害的功能
1.3 信息安全定义
1.3.1 计算机安全
目标
包括保护信息免受未经授权的访问、中断和修改,同时为系统的预期用户保持系统的可用性
定义
为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件和数据不因偶然和恶意的原因遭到破坏、更改和泄漏
1.3.2 网络安全
研究对象
整个网络,研究领域比计算机系统安全更为广泛
目标
要创造一个能够保证整个网络安全的环境,包括网络内的计算机资源、网络中传输及存储的数据和计算机用户。通过采用各种技术和管理措施,使网络系统正常运行,确保经过网络传输和交换的数据不会发生增加、修改、丢失和泄露等
涉及领域
密码学设计、网络协议的通信、安全实践
网络安全模型
使用网络安全模型的需求
-
设计算法,他执行与安全相关的变换;该算法应是攻击者无法攻破的
-
产生算法所使用的秘密信息;
-
设计分配和共享秘密信息的方法;
-
指明通信双方使用的协议,该协议利用安全算法和秘密信息实现安全服务;
网络访问安全模型
使用网络访问安全模型的需求
- 选择恰当的门卫来辨别用户;
- 实现安全控制使得仅有授权用户可以得到选定的信息或资源
1.3.3 信息安全
定义
网络信息系统中,涉及到信息传输、信息存储以及对网络传输信息内容等各个环节的安全。
-
传输安全涉及通信、软硬件设备
-
存储安全涉及介质、读写设备、管理
-
内容安全涉及涉密等级、权限控制、内容管理
信息安全涉及到信息的保密性(confidentiality)、完整性(integrity)、可用性(availability)、可控性(controllability)。
目标
信息安全作为一个更大的研究领域,对应信息化的发展,信息安全包含了信息环境、信息网络和通信基础设施、媒体、数据、信息内容、信息应用等多个方面的安全需要
保密性 Confidentiality
- 数据保密性 :确保隐私或者秘密信息不向非授权者泄露,也不被非授权者使用
- 隐私性:确保个人能够控制或确定与其自身相关的哪些信息是可以被收集、被保存的,这个信息可以由谁来公开以及向谁公开
- 加密算法
- 加密通过一个加密算法和一个密钥对数据进行处理,数据处理前称为明文,处理后称为密文。
- 加密算法分为对称和非对称两种
- 对称加密算法中加密方与解密方有相同的密钥,在算法过程中,加密与解密共用一个相同密钥
- 而非对称加密算法有两个密钥:一个可公开的公钥和一个需要妥善保管的密钥,通信过程中,发送方使用接收方发布的公钥进行加密,加密后只有接收方的密钥才可以进行解密
完整性 Integrity
- 数据完整性: 是指数据的精确性(Accuracy)和可靠性(Reliability),确保信息和程序只能以特定和授权的方式进行改变
- 系统完整性: 确保系统以一种正常的方式来执行预定的功能,免于有意或者无意的非授权操纵
- Hash算法:
- Hash算法是保护数据完整性的最好方法,Hash算法对输入消息进行相应处理并输出一段代码,称为该信息的消息摘要
- Hash函数具有单向性,所以在发送方发送信息之前会附上一段消息摘要,用于保护其完整性
可用性 Availability (Dos攻击)
可用性:确保系统能工作迅速,对授权用户不能拒绝服务
CIA三元组
保密性、完整性和可用性。 体现数据、信息和计算机服务的基本的安全目标
真实性和可追溯性 Authenticity Accountability
- 真实性:一个实体是真实性的、是可被验证和可被信息的特性
- 信息是真实的
- 信息来源是真实的
- 可追溯性: 实体的行为可以唯一追溯到该实体
可控性
- 可控性关键: 对网络中的资源进行标识,通过身份标识达到对用户进行认证的目的。一般系统会通过使用“用户所知”或“用户所有”来对用户进行标识,从而验证用户是否是其声称的身份
- 认证因素:用户名、密码、视网膜、指纹、物理位置、身份卡
不可否认性
-
不可否认服务:用于追溯信息或服务的源头
-
数字签名技术
-
通过数字签名,使其信息具有不可替代性,而信息的不可替代性可以导致两种结果:
* 在认证过程中,双方通信的数据可以不被恶意的第三方肆意更改
* 在认证过程中,信息具有高认证性,并且不会被发送方否认
1.3.4 严格意义的安全
安全性的定义
一种避免由于任何风险、危险和威胁所能带来的伤害的能力(辞典定义)
我们能做什么
- 达到所需要的安全
- 对于可以预见的风险、危险和威胁,不要受到太多的伤害(可期望的)
1.3.5 安全性分类
-
无条件安全性(信息熵角度)
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = 0 I(X;Y)=H(X)-H(X|Y)=0 I(X;Y)=H(X)−H(X∣Y)=0 -
计算上的安全性
- 计算资源受限
-
复杂度理论的安全性
- 计算上是困难
-
可证明的安全性
- 规约为数学问题
-
非密码的、系统的安全性
- 不期望的状态不可达
1.4 OSI安全框架
安全评价方案
- 有效评价一个机构的安全需求
- 对各种安全产品和政策进行评价和选择
ITU-T(国际电信联盟电信标准化组)推荐的方案 ,OSI安全框架
1.4.1 OSI安全框架
OSI安全框架给出了一种系统化的定义方法
- 安全攻击: 任何危及信息系统安全的行为
- 安全机制: 用来检测、阻止攻击或者从攻击状态恢复到正常状态的过程(或实现该过程的设备)
- 安全服务: 加强数据处理系统和信息传输的安全性的一种处理过程或通信服务;其目的在于利用一种或多种安全机制进行反攻击
1.4.2 攻击与威胁
威胁:破坏安全的潜在可能,在环境、能力、行为或事件允许的情况下,它们会破坏安全,造成危害;
攻击:对系统安全的攻击,它来源于一种具有智能的威胁,也就是说,有意违反安全服务和侵犯系统安全策略的智能行为
- 被动攻击
- 主动攻击
区别
- 可能导致破坏发生的行为被称为攻击(attack)
- 破坏行为的完成者被称为攻击者
被动攻击 Passive Attack
被动攻击:试图理解或利用系统的信息但不影响系统资源;对传输进行窃听和监测
- 通过加密的手段可以阻止被动攻击。处理被动攻击的重点是预防,而不是检测
- 信息内容的泄露
- 解决手段:加密技术
主动攻击 Active Attack
主动攻击:试图改变系统资源或影响系统运作;对数据流进行修改或伪造数据流
- 伪装
- 重播
- 消息修改
- 拒绝服务
主动攻击难以绝对预防,但容易检测
其他攻击类型
-
信源否认:即某实体欺骗性地否认曾发送(或创建)某些信息,是某种形式的欺骗
-
信宿否认:某实体欺骗性地否认曾接收过某些信息或消息,也是一种欺骗
-
延迟:暂时性地阻止某种服务,这是一种篡夺攻击,尽管它能对欺骗起到支持的作用
1.4.3 如何达到安全
-
提供安全服务(security-related services)
- 使得系统安全得到保护而免受威胁。
-
制定安全策略(security policy)
- 安全策略能辨识威胁,并定义出能够确保系统安全的条件(是对允许什么、禁止什么的规定)。
-
完善安全机制(security mechanisms)
- 负责检测和预防攻击,以及从攻击中成功地恢复工作
- 实施安全策略的一种方法、工具或者规程
安全服务
- 安全服务:
- 为通信开放系统的协议层提供的服务,从而保证系统或数据传输有足够的安全性。
- 一种由系统提供的对系统资源进行特殊保护的处理或通信的服务。
- 安全服务通过安全机制来实现安全策略
1.安全服务–认证
- 认证服务与保证通信的真实性有关
- 认证服务功能是向接收方保证消息来自所声称的发送方
- 两个特殊的认证服务
- 同等实体认证:用于逻辑连接时为连接的实体的身份提供可信性
- 数据源认证:连接传输时保证收到的信息来源是声称的来源
- 例:电子邮件服务
2.安全服务–访问控制
- 访问控制是一种限制或控制那些通过通信连接对主机和应用进行访问的能力
- 阻止对资源的非授权使用(即这项服务控制谁能访问资源,在什么条件下可以访问,这些访问的资源可用于做什么)
- 例:学校的信息系统、论坛、百度文库
3.安全服务–保密性
-
连接保密性:保护一次连接中所有的用户数据
-
无连接保密性:保护单个数据块里的所有用户数据
-
选择域保密性:对一次连接或单个数据块中指定的数据部分提供保密性
-
流量保密性:保护那些可以通过观察流量而获得的信息
-
提供保密性安全服务手段
- 加密 encryption 技术
- 密码是一种提供保密性的访问控制(access control)机制
- 密码技术通过混乱数据,使数据内容变得难以理解
- 密钥控制着数据的访问权,这样密钥本身又成为另一个有待保护的数据对象
- 依赖于系统的机制能够防止信息的非法访问
- 加密 encryption 技术
4.安全服务–数据完整性
- 具有恢复功能的连接完整性:
- 提供一次连接中所有用户数据的完整性
- 检测整个数据序列内存在的修改、插入、删除或重播,且试图恢复
- 无恢复的连接完整性:仅提供检测,无恢复
- 选择域连接完整性:提供一次连接中传输的单个数据内用户的制定部分的完整性,并判断指定部分是否有修改、插入、删除或重播
- 无连接完整性:为单个无连接数据块提供完整性保护,并检测是否有数据修改
- 选择域无连接完整性:为单个无连接数据块内的指定域提供完整性保护
- 提供完整性的方法
- 检测 (Hash、MAC)
- 预防(认证、访问控制)
5.安全服务—不可否认性
- 源不可否认:证明消息是由特定方发出的
- 宿不可否认:证明消息被特定方接收
6.安全服务–可用性
- 可用性:根据系统的性能说明,能够按被授权系统实体的要求访问或使用系统和系统资源的性质
- 可用性服务由拒绝服务攻击引起
- 可用性服务依赖对系统资源的恰当管理和控制,因此依赖于访问控制服务或其它服务
- 提供可用性安全性服务手段
- 认证
- 加密
安全策略与安全机制
策略与机制之间的差别对于学习安全非常关键
- 安全策略是对允许什么、禁止什么的规定
- 安全机制是实施安全策略的一种方法、工具或者规程
特定安全机制
特定安全机制:可以并入适当的协议层以提供一些OSI安全服务
(加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证)
普遍的安全机制
不局限于任何特定的OSI安全服务或协议层的机制
(可信功能、安全标签、事件检测、安全审计跟踪、安全恢复)
安全服务安全机制的关系
安全网络设计
- 所处环境(威胁在哪)
- 明确安全目标(想要什么)
- 愿意付什么代价(安全成本分析)
- 涉及关键技术(加密、授权、认证、审计)
- 制定解决方案(建立安全保障体系)
- 实施与管理规范(配套的手段检查与督促)
2 密码学基础
2.1 密码体制
定义:一个密码体制是满足以下条件的五元组$(P,C,K, \varepsilon,D) $
- P P P表示所有可能的明文组成的有限集
- C C C表示所有可能的密文组成的有限集
- K K K代表密钥空间,是由所有可能的密钥组成的有限集
- 对任意的 k ∈ K k\in K k∈K,都存在一个加密法则 e k ∈ ε e_k\in \varepsilon ek∈ε和相应的解密法则 d k ∈ D d_k\in D dk∈D。并且对每个 e k : P → C e_k:P\rightarrow C ek:P→C和 d k : C → P d_k:C\rightarrow P dk:C→P,对任意的明文 x ∈ P x\in P x∈P,均有 d k ( e k ( x ) ) = x d_k(e_k(x))=x dk(ek(x))=x。
2.2 通信信道
2.3 算法设计的公开原则
- 柯克霍夫原则(Kerckhoffs’ Principle)
- The cipher method must not be required to be secret, and it must be able to fail into the hands of the enemy without inconvenience.
- 密码系统安全是基于密钥的而不是算法的保密
2.4 密码分析
- 密码分析:如果能对密文的分析确定明文或密钥,或者能够根据明文-密文对确定密钥,该破译过程称为密码分析
- 数学分析:密码分析者针对解密算法的数学基础和某些密码学特性,通过数学求解的方法来破译密码
- 物理分析:针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击的方法称为测信道攻击
- 穷举攻击
2.5 密码分析学
- 1.唯密文攻击(ciphertext only attack)
- 2.已知明文攻击(known plaintext attack)
- 3.选择明文攻击(Chosen plaintext attack)
- 4.选择密文攻击(Chosen ciphertext attacks)
注意:上述由下到上(4–>1) 破译难度增加
2.6 古典密码–移位密码
- 移位密码(Shift Cipher)
- 令 P (明文) = C (密文) = K (密钥) = Z 26 P(明文)=C(密文)=K(密钥)=\Z_{26} P(明文)=C(密文)=K(密钥)=Z26。对 0 ≤ K ≤ 25 0\le K\le25 0≤K≤25,任意 x , y ∈ Z 26 x,y\in\Z_{26} x,y∈Z26,定义加密变换和解密变换分别为 e K ( x ) = ( x + K ) m o d 26 e_K(x)=(x+K)mod26 eK(x)=(x+K)mod26和 d K ( y ) = ( y − k ) m o d 26 d_K(y)=(y-k)mod26 dK(y)=(y−k)mod26
- 例:密文 L ORYH BRX 明文 I LOVE YOU 密钥 3
2.7 古典密码–代换密码
- 代换密码:
- 令 P = C = Z 26 P=C=\Z_{26} P=C=Z26。 K K K由26个数字 0 , . . . , 25 0,...,25 0,...,25的所有可能置换(重新排列)组成。对任意的置换 π ∈ K \pi\in K π∈K,定义加密变换和解密变换分别为 e π ( x ) e_\pi (x) eπ(x)和 d π = π − 1 ( y ) d_\pi = \pi ^{-1}(y) dπ=π−1(y)
- 例
2.8 古典密码–维吉尼亚密码
- 维吉尼亚密码(要求掌握)
- 设 m m m是一个正整数。定义 P = C = K = ( Z 26 ) m P=C=K=(\Z_{26})^m P=C=K=(Z26)m。对任意的密钥 K = ( k 1 , k 2 , . . . , k m ) K=(k_1,k_2,...,k_m) K=(k1,k2,...,km),定义加密和解密算法分别为: e K ( x 1 , x 2 , . . . , x m ) = ( x 1 + k 1 , x 2 + k 2 , . . . , x m + k m ) e_K(x_1,x_2,...,x_m)=(x_1+k_1,x_2+k_2,...,x_m+k_m) eK(x1,x2,...,xm)=(x1+k1,x2+k2,...,xm+km)和 d K ( y 1 , y 2 , . . . , y m ) = ( y 1 − k 1 , y 2 − k 2 , . . . , y m − k m ) d_K(y_1,y_2,...,y_m)=(y_1-k_1,y_2-k_2,...,y_m-k_m) dK(y1,y2,...,ym)=(y1−k1,y2−k2,...,ym−km),以上所有的运算均在 Z 26 \Z_{26} Z26上进行
注:超过m,则按m进行分组加密
需求:明文:信息安全;密钥:key;由维吉尼亚加密,求密文
2.9 古典密码–希尔密码
- 希尔密码
- 设 m ≥ 2 m\ge2 m≥2为正整数, P = C = ( Z 26 ) m P=C=(\Z_{26})^m P=C=(Z26)m,且 K = { 定义在 Z 26 上的 m × m 可逆矩阵 } K=\{定义在\Z_{26}上的m×m可逆矩阵\} K={定义在Z26上的m×m可逆矩阵}。对任意的密钥 K K K,定义加密变换和解密变换分别为 e K ( x ) = x K e_K(x)=xK eK(x)=xK和 d K ( y ) = y K − 1 d_K(y)=yK^{-1} dK(y)=yK−1以上所有的运算均在 Z 26 \Z_{26} Z26上进行。
2.10 古典密码–仿射密码
- 仿射密码
- 令 P = C = Z 26 P=C=\Z_{26} P=C=Z26,且 K = { ( a , b ) ∈ Z 26 × Z 26 ∣ g c d ( a , 26 = 1 } K=\{(a,b)\in\Z_{26}×\Z_{26}|gcd(a,26=1\} K={(a,b)∈Z26×Z26∣gcd(a,26=1}。对任意的 K = ( a , b ) ∈ K , x , y ∈ Z 26 K=(a,b)\in K,x,y\in\Z_{26} K=(a,b)∈K,x,y∈Z26,定义加密变换和解密变换分别为 e K ( x ) = ( a x + b ) m o d 26 e_K(x)=(ax+b)mod26 eK(x)=(ax+b)mod26和 d K ( y ) = a − 1 ( y − b ) m o d 26 [ 其中 a − 1 表示 a 的逆运算 ] d_K(y)=a^{-1}(y-b)mod26[其中a^{-1}表示a的逆运算] dK(y)=a−1(y−b)mod26[其中a−1表示a的逆运算]。
- 例:密钥 K = ( 7 , 3 ) K=(7,3) K=(7,3),加密变换 e K ( x ) = 7 x + 3 e_K(x)=7x+3 eK(x)=7x+3;由于 7 − 1 m o d 26 = 15 7^{-1}mod26=15 7−1mod26=15,所以解密变换为 d K ( y ) = 15 ( y − 3 ) = 15 y − 19 d_K(y)=15(y-3)=15y-19 dK(y)=15(y−3)=15y−19。
扩展的欧几里得算法
- 一般欧几里得算法:计算两个数的最大公约数
int gcd(int a,int b)
{
if(b == 0)
{
return a;
}
return gcd(b,a%b);
}
- 扩展欧几里得算法:一定存在整数
x
,
y
x,y
x,y满足等式
a
∗
x
+
b
∗
y
=
g
c
d
(
a
,
b
)
a * x + b * y = gcd(a,b)
a∗x+b∗y=gcd(a,b)
【自学即可】
2.11 古典密码–置换密码
- 置换密码
- 设 m m m是一个正整数。定义 P = C = ( Z 26 ) m P=C=(\Z_{26})^m P=C=(Z26)m。 K K K由所有定义在集合 1 , 2 , . . . , m {1,2,...,m} 1,2,...,m上的置换组成。对任意的密钥(置换) π \pi π,定义加密算法和解密算法分别为: e K ( x 1 , . . . , x m ) = ( x π ( 1 ) , . . . x π m ) e_K(x_1,...,x_m)=(x_{\pi(1)},...x_{\pi m}) eK(x1,...,xm)=(xπ(1),...xπm)和 d K ( y 1 , . . . , y m ) = ( y π − 1 ( 1 ) , . . . , y π − 1 ( m ) ) d_K(y_1,...,y_m)=(y_{\pi^{-1}(1)},...,y_{\pi^{-1}(m)}) dK(y1,...,ym)=(yπ−1(1),...,yπ−1(m)),上式中 π − 1 \pi^{-1} π−1为置换 π \pi π的逆置换。
2.12 一次一密(one time pad)[无条件、绝对安全]
-
假设 n ≥ 1 n\ge1 n≥1是正整数, P = C = K = ( Z 2 ) n P=C=K=(\Z_2)^n P=C=K=(Z2)n。对于 K ∈ ( Z 2 ) n K\in(\Z_2)^n K∈(Z2)n,定义 e k ( x ) e_k(x) ek(x)为 K K K和 x x x的模2的向量和(或者说是两个相关比特串的异或)。因此,如果 x = ( x 1 , . . . , x n ) x=(x_1,...,x_n) x=(x1,...,xn)并且 K = ( K 1 , . . . , K n ) K=(K_1,...,K_n) K=(K1,...,Kn),则
e K ( x ) = ( x 1 + K 1 , . . . , x n + K n ) m o d 2 , e_K(x)=(x_1+K_1,...,x_n+K_n)mod2, eK(x)=(x1+K1,...,xn+Kn)mod2,解密和加密是一样的。如果 y = ( y 1 + K 1 , . . . , y n + K n ) m o d 2 y=(y_1+K_1,...,y_n+K_n)mod2 y=(y1+K1,...,yn+Kn)mod2。
注:
1.密钥的长度和明文消息长度一致
2.每次加密所使用的密钥都需要随机选取
2.13 密码系统
对称密码
- 定义:加密使用相同密钥的密码体制
- 对称密码:
- 分组密码:是一种加密方案,它将输入的明文分组当作一个整体处理,输出一个等长的密文分组;
- DES,AES,Blowfish,Twofish,Skipjack,RC2
- 轻量级分组密码:LBlock,Present,SIMON,SPECK,LED
- 流密码: 从明文输入流逐位或逐字节产生密文输出。RC4,ZUC,A5
2.13.1 分组密码
- 定义:将明文分组消息编码表示后的数字(通常是0或1)序列 x 1 , x 2 , . . . x_1,x_2,... x1,x2,...划分成长为 m m m的组 x = ( x 1 , x 2 , . . . , x m ) x=(x_1,x_2,...,x_m) x=(x1,x2,...,xm),各组(长为 m m m的向量)分别在密钥 k = ( k 1 , k 2 , . . . , k t ) k=(k_1,k_2,...,k_t) k=(k1,k2,...,kt)的控制下变换成等长的输出数学序列 y = ( y 1 , y 2 , . . . , y n ) y=(y_1,y_2,...,y_n) y=(y1,y2,...,yn)(长为 n n n的向量)
- 数学模型:
-
分组密码形式化定义:
- 分组密码是一种满足下列条件的映射 E : S K × F 2 m E:S_K×F_2^m E:SK×F2m:对每个 k ∈ S K k\in S_K k∈SK, E ( k , . ) E(k,.) E(k,.)是从 F 2 m F_2^m F2m到 F 2 m F_2^m F2m的一个置换。
-
分类:
- 若 n > m n>m n>m,称为有数据扩展的分组密码
- 若 n < m n<m n<m,称为有数据压缩的分组密码
- 若 n = m n=m n=m,称为无数据扩展或压缩的分组密码(通常均为此类)
-
优点:
- 分组密码容易被标准化
- 分组密码容易实现同步
-
缺点:
- 分组密码不能隐蔽数据模式
- 分组加密不能抵抗重放、嵌入和删除等攻击
1.DES 算法
整体结构
- 明文长度 64 b i t 64bit 64bit
- 密钥长度 56 b i t 56bit 56bit
- 密文长度 64 b i t 64bit 64bit
- 轮数 16 轮 16轮 16轮
- 加密算法
- x 0 = I P ( x ) = L 0 R 0 x_0=IP(x)=L_0R_0 x0=IP(x)=L0R0,其中 x x x是明文, L 0 L_0 L0是 x 0 x_0 x0左 32 b i t 32 bit 32bit, R 0 R_0 R0是 x 0 x_0 x0右 32 b i t 32bit 32bit
- L i = R i − 1 ; R i = L i − 1 ⊕ f ( R i − 1 , K i ) L_i=R_{i-1};R_i=L_{i-1}⊕f(R_{i-1},K_i) Li=Ri−1;Ri=Li−1⊕f(Ri−1,Ki),其中 f f f是轮函数, K i K_i Ki是长度为 48 b i t 48bit 48bit的第 i i i轮密钥
- 密文
y
=
I
P
−
1
(
R
16
L
16
)
y=IP^{-1}(R_{16}L_{16})
y=IP−1(R16L16)
[备注:密钥本身也64bit,但有8个校验位,实际有效长度为56bit]
DES算法的轮函数
f 函数图解
A
=
(
a
1
,
a
2
,
.
.
.
,
a
3
2
)
,
E
(
A
)
=
(
a
3
2
,
a
1
,
a
2
,
a
3
,
a
4
,
a
5
,
a
−
4
,
.
.
.
,
a
3
1
,
a
3
2
,
a
1
)
A=(a_1,a_2,...,a_32),E(A)=(a_32, a_1, a_2, a_3, a_4, a_5, a-4,...,a_31,a_32, a_1)
A=(a1,a2,...,a32),E(A)=(a32,a1,a2,a3,a4,a5,a−4,...,a31,a32,a1)
[如何将6bit经过非线性变换转换成4bit]
[要求掌握]
8
8
8个
S
S
S盒
S
1
,
.
.
.
,
S
8
S_1,...,S_8
S1,...,S8,每个
S
S
S盒,
S
i
:
{
0
,
1
}
6
→
{
0
,
1
}
4
S_i:\{0,1\}^6\rightarrow \{0,1\}^4
Si:{0,1}6→{0,1}4。若
B
j
=
b
1
b
2
b
3
b
4
b
5
b
6
B_j=b_1b_2b_3b_4b_5b_6
Bj=b1b2b3b4b5b6,则计算
S
j
(
B
j
)
S_j(B_j)
Sj(Bj),用
b
1
b
6
b_1b_6
b1b6两比特决定
S
j
S_j
Sj某一行
r
(
0
≤
r
≤
3
)
r(0≤ r ≤3)
r(0≤r≤3)的二进制表示,用
b
2
b
3
b
4
b
5
b_2b_3b_4b_5
b2b3b4b5四比特决定
S
j
S_j
Sj某一列
c
(
0
≤
c
≤
15
)
c(0≤ c≤15)
c(0≤c≤15)的二进制表示,则
S
j
(
B
j
)
S_j(B_j)
Sj(Bj)被定义为写做二进制的
4
4
4比特串
S
j
(
r
,
c
)
S_j(r, c)
Sj(r,c)。
[例1] 已知
S
1
=
(
100110
)
S_1=(100110)
S1=(100110),求非线性变换结果
[解] 行
10
10
10 列
0011
0011
0011,
∴
\therefore
∴ 非线性变换结果为第2行第3列的值,为
8
8
8,其二进制写法为
(
1000
)
2
(1000)_2
(1000)2
[例2] 已知
S
2
=
(
010101
)
S_2=(010101)
S2=(010101),求非线性变换结果
[解] 行
01
01
01 列
1010
1010
1010,
∴
\therefore
∴ 非线性变换结果为第1行第10列的值,为
1
1
1,其二进制写法为
(
0001
)
2
(0001)_2
(0001)2
[注意]:行号列号从0开始
[置换操作]
C
=
(
c
1
,
c
2
,
.
.
.
,
c
32
)
,
P
(
C
)
=
(
c
16
,
c
7
,
c
20
,
c
21
,
c
29
,
.
.
.
,
c
11
,
c
4
,
c
25
)
C=(c_1, c_2, ..., c_{32}), P(C)=(c_{16}, c_7, c_{20}, c_{21}, c_{29}, ..., c_{11}, c_4, c_{25})
C=(c1,c2,...,c32),P(C)=(c16,c7,c20,c21,c29,...,c11,c4,c25)
DES密钥扩展算法
[将56bit密钥变换成16bit和48bit的密钥]
- 密钥扩展算法
K
=
(
k
1
,
.
.
.
,
k
64
)
K=(k_1,...,k_{64})
K=(k1,...,k64)
- 删除8个校验位得到 K ′ = ( k 1 , . . . , k 7 , k 9 , . . . , k 1 5 , . . . , k 6 3 ) K'=(k_1,...,k_7,k_9,...,k_15,...,k_63) K′=(k1,...,k7,k9,...,k15,...,k63)
- P C − I ( K ′ ) = C 0 D 0 PC-I(K')=C_0D_0 PC−I(K′)=C0D0
- 对每个
i
i
i,
1
≤
i
≤
16
1\le i\le16
1≤i≤16,计算$
C
i
=
C
i
−
1
<
<
<
l
D
i
=
D
i
−
1
<
<
<
l
K
i
=
P
C
−
2
(
C
i
D
i
)
其中,当
i
=
1
,
2
,
9
,
16
时,
l
=
1
;
当
i
=
3
,
4
,
5
,
6
,
7
,
8
,
10
,
11
,
12
,
13
,
14
,
15
时,
l
=
2
\\C_i=C_{i-1}<<<l \\ D_i=D_{i-1}<<<l \\ K_i=PC-2(C_iD_i)\\其中,当i=1,2,9,16时,l=1; \\ 当i=3,4,5,6,7,8,10,11,12,13,14,15时,l=2
Ci=Ci−1<<<lDi=Di−1<<<lKi=PC−2(CiDi)其中,当i=1,2,9,16时,l=1;当i=3,4,5,6,7,8,10,11,12,13,14,15时,l=2
多重DES—二重DES
多重DES—三重DES
2.AES
AES简介
- 明文长度和密文长度: 128 b i t 128bit 128bit
- 密钥长度: 128 b i t / 192 b i t / 256 b i t 128bit/192bit/256bit 128bit/192bit/256bit
- 轮数 N r N_r Nr: 10 轮 / 12 轮 / 14 轮 10轮/12轮/14轮 10轮/12轮/14轮
- 加密过程:
-
128 b i t 128bit 128bit明文P看成是16个 𝐺 𝐹 ( 2 8 ) [ 有限域 ] 𝐺𝐹(2^8)[有限域] GF(28)[有限域]上的元素
-
𝑋 0 = 𝑃 ⨁ 𝐾 0 𝑋_0=𝑃⨁𝐾_0 X0=P⨁K0;
-
F o r 𝑖 = 1 t o 𝑁 𝑟 − 1 For 𝑖=1to 𝑁_𝑟−1 Fori=1toNr−1
- 𝑋 𝑖 = 𝐴 𝐾 ∘ 𝑀 𝐶 ∘ 𝑆 𝑅 ∘ 𝑆 𝐵 ( 𝑋 𝑖 − 1 ) 𝑋_𝑖=𝐴𝐾∘𝑀𝐶∘𝑆𝑅∘𝑆𝐵(𝑋_{𝑖−1}) Xi=AK∘MC∘SR∘SB(Xi−1)
-
密文 𝐶 = 𝐴 𝐾 ∘ 𝑆 𝑅 ∘ 𝑆 𝐵 ( 𝑋 𝑁 𝑟 − 1 ) 𝐶=𝐴𝐾∘𝑆𝑅∘𝑆𝐵(𝑋𝑁_𝑟−1) C=AK∘SR∘SB(XNr−1)
-
AES
SB
[AES-S盒 SB]
SR
[AES行移位变换 SR]
MC
[AES列变换 MC]
G
F
(
2
8
)
上的元素表示为
S
=
a
7
x
7
+
a
6
x
6
+
.
.
.
+
a
1
x
+
a
0
01
:
1
02
:
x
03
:
x
+
1
GF(2^8)上的元素表示为 \quad S=a_7x^7+a_6x^6+...+a_1x+a_0\\01:1\quad02:x\quad03:x+1
GF(28)上的元素表示为S=a7x7+a6x6+...+a1x+a001:102:x03:x+1
02
∗
S
=
x
(
a
7
x
7
+
a
6
x
6
+
.
.
.
+
a
1
x
+
a
0
)
02*S=x(a_7x^7+a_6x^6+...+a_1x+a_0)
02∗S=x(a7x7+a6x6+...+a1x+a0)
=
{
a
6
x
7
+
.
.
.
+
a
0
x
,
if
a
7
=
0
S
<
<
1
∣
∣
0
+
a
7
x
8
,
if
a
7
=
1
=\begin{cases} a_6x^7+...+a_0x, & \text{if $a_7=0$}\\ S<<1 ||0+a_7x^8,& \text{if $a_7=1$ } \end{cases}
={a6x7+...+a0x,S<<1∣∣0+a7x8,if a7=0if a7=1
=
{
a
6
a
5
a
4
a
3
a
2
a
1
a
0
,
if
a
7
=
0
S
<
<
1
⨁
00011011
,
if
a
7
=
1
=\begin{cases} a_6a_5a_4a_3a_2a_1a_0, & \text{if $a_7=0$}\\ S<<1⨁00011011 ,& \text{if $a_7=1$ } \end{cases}
={a6a5a4a3a2a1a0,S<<1⨁00011011,if a7=0if a7=1
2.15.5 密钥扩展算法
-
将128比特的主密钥表示为 𝑘 0 𝑘 1 𝑘 2 ⋯ 𝑘 1 5 𝑘_0𝑘_1𝑘_2⋯𝑘_15 k0k1k2⋯k15, 𝑤 0 = 𝑘 0 𝑘 1 𝑘 2 𝑘 3 𝑤_0=𝑘_0𝑘_1𝑘_2𝑘_3 w0=k0k1k2k3, 𝑤 1 = 𝑘 4 𝑘 5 𝑘 6 𝑘 7 𝑤_1=𝑘_4𝑘_5𝑘_6𝑘_7 w1=k4k5k6k7, 𝑤 2 = 𝑘 8 𝑘 9 𝑘 10 𝑘 11 𝑤_2=𝑘_8𝑘_9𝑘_{10}𝑘_{11} w2=k8k9k10k11, 𝑤 3 = 𝑘 12 𝑘 13 𝑘 14 𝑘 15 𝑤_3=𝑘_{12}𝑘_{13}𝑘_{14}𝑘_{15} w3=k12k13k14k15
-
𝐾 0 = 𝑤 0 𝑤 1 𝑤 2 𝑤 3 𝐾_0=𝑤_0𝑤_1𝑤_2𝑤_3 K0=w0w1w2w3, 𝐾 1 = 𝑤 4 𝑤 5 𝑤 6 𝑤 7 𝐾_1=𝑤_4𝑤_5𝑤_6𝑤_7 K1=w4w5w6w7,…
3.分组密码设计理论
-
针对安全性的设计原理
- 混淆原则:人们所设计的密码应使得密钥和明文以及密文之间的依赖关系相当复杂,以至于这种依赖性对密码分析者来说无法利用;
- 扩散原则:人们所设计的密码应使得密钥的每一位影响密文的许多位,以防止对密钥进行逐段破译;而且明文的每一位也应该影响密文的许多位,以便隐蔽明文的统计特性;
-
针对实现的设计原理
- 软件实现的设计方案:使用子块和简单运算
- 硬件实现的设计方案:加密和解密的相似性,以便同样的器件可以用来加解密
4.分组密码的结构
5.分组密码的整体结构
6.分组密码的工作模式
2.13.2 流密码
- 一个流密码将消息分成连续的符号
𝑥
=
𝑥
1
𝑥
2
⋯
𝑥=𝑥1𝑥2⋯
x=x1x2⋯,用密钥流
𝑘
=
𝑘
1
𝑘
2
⋯
𝑘=𝑘1𝑘2⋯
k=k1k2⋯的第
i
个元素 𝑘 𝑖 𝑘𝑖 ki对 𝑥 𝑖 𝑥𝑖 xi加密,即 𝐸 𝑘 𝑥 = 𝐸 𝑘 1 ( 𝑥 1 ) 𝐸 𝑘 2 ( 𝑥 2 ) ⋯ 𝐸𝑘𝑥=𝐸𝑘1(𝑥1)𝐸𝑘2(𝑥2)⋯ Ekx=Ek1(x1)Ek2(x2)⋯; - 如果密钥流经过
d
个符号之后重复,则称该密钥流是周期的,否则是非周期的。
同步流密码
异步流密码
2.13.3 哈希函数
- 哈希函数满足以下性质
- 哈希函数能够适合于各种消息和文件,用途广泛;
- 给定 M M M,计算 H ( M ) H(M) H(M)相对容易;
- 给定 H ( M ) H(M) H(M),计算出 M M M是相对容易的;
- 给定 M 1 M1 M1,寻找 M 2 M2 M2,使 H ( M 1 ) = H ( M 2 ) H(M1)=H(M2) H(M1)=H(M2)在计算上不可行;
- 寻找任何的
(
M
1
,
M
2
)
(M1,M2)
(M1,M2),使
H
(
M
1
)
=
H
(
M
2
)
H(M1)=H(M2)
H(M1)=H(M2)在计算上不可行。
3 公钥加密方案、密码协议、签名、密钥分发以及远程认证
3.1 公钥加密方案
- 接收方选择一个密钥:公钥和私钥
- 公钥广播出去
- 接收方拥有一个私钥
- 其他人用接收方的公钥取加密接收方的信息
- 接收方用其私钥去解密
- Security requirement1 difficult to find private key or plaintext
- Security requirement2 difficult to find private key from public key
公钥加密方案的动机
解决密钥管理和分发的问题
3.2 限门单向函数
- 单向函数(one-way function):一个函数容易计算但难于求逆
- 限门单向函数(trapdoor one-way function):如果它是一个单向函数,并在具有特定限门的知识后容易求逆
3.3 RSA密码体制 [要求掌握]
设
n
=
p
q
n=pq
n=pq,其中
p
p
p和
q
q
q为素数。设
P
=
C
=
Z
n
P=C=Z_n
P=C=Zn,且定义
K
=
{
(
n
,
p
,
q
,
a
,
b
)
∣
a
b
≡
1
m
o
d
ϕ
(
n
)
}
K=\{(n,p,q,a,b)|ab\equiv 1mod \phi (n)\}
K={(n,p,q,a,b)∣ab≡1modϕ(n)}
对于
K
=
(
n
,
p
,
q
,
a
,
b
)
K=(n,p,q,a,b)
K=(n,p,q,a,b),定义
e
K
(
x
)
=
x
b
m
o
d
n
d
K
(
y
)
=
y
a
m
o
d
n
e_K(x)=x^bmodn\\d_K(y)=y^amodn
eK(x)=xbmodndK(y)=yamodn
其中
x
,
y
∈
Z
n
x,y\in Z_n
x,y∈Zn,值
n
n
n和
b
b
b组成公钥,
p
,
q
,
a
p,q,a
p,q,a组成私钥
[例1] 数论基础
p
=
11
,
q
=
17
,
n
=
p
⋅
q
=
187
,
ϕ
(
n
)
=
(
p
−
1
)
⋅
(
q
−
1
)
=
10
⋅
16
=
160
b
=
7
,
m
=
21
,
求解密密钥
a
和加密消息
C
C
=
M
b
m
o
d
n
=
2
1
7
m
o
d
187
p=11,q=17,n=p\cdot{q}=187,\phi(n)=(p-1)\cdot{(q-1)}=10\cdot{16}=160\\b=7,m=21,求解密密钥a和加密消息C\\ C=M^bmodn=21^7mod187
p=11,q=17,n=p⋅q=187,ϕ(n)=(p−1)⋅(q−1)=10⋅16=160b=7,m=21,求解密密钥a和加密消息CC=Mbmodn=217mod187
快速幂算法求解上述问题
由于 7 = ( 0111 ) 2 , C = 2 1 7 m o d 187 = ( 2 1 2 ) 3 ⋅ 21 m o d 187 = ( 441 ) 3 ⋅ 21 m o d 187 = ( 67 ) 3 ⋅ 21 = ( ( 67 ) 2 ⋅ ( 67 ⋅ 21 ) ) m o d 187 = ( 4489 m o d 187 ) ⋅ ( 1047 m o d 187 ) = 1 ⋅ 98 = 98 [ 下面计算请参照数论基础学习扩展欧几里得 ] a b ≡ 1 m o d ϕ ( n ) 7 a ≡ 1 m o d 160 7 a = 160 t + 1 令 t = 1 ,则 a = 23 由于7=(0111)_2,\\ C=21^7mod187\\ =(21^2)^3\cdot{21}mod187\\ =(441)^3\cdot{21}mod187 \\=(67)^3\cdot{21}\\ =((67)^2\cdot{(67\cdot{21})})mod187\\ =(4489mod187)\cdot{(1047mod187)}\\ =1\cdot{98}\\ =98\\ {[下面计算请参照数论基础学习扩展欧几里得]}\\ ab\equiv 1mod\phi(n)\\7a\equiv 1mod 160\\7a=160t+1\\ 令t=1,则a=23 由于7=(0111)2,C=217mod187=(212)3⋅21mod187=(441)3⋅21mod187=(67)3⋅21=((67)2⋅(67⋅21))mod187=(4489mod187)⋅(1047mod187)=1⋅98=98[下面计算请参照数论基础学习扩展欧几里得]ab≡1modϕ(n)7a≡1mod1607a=160t+1令t=1,则a=23
[例2]
p
=
13
,
q
=
17
,
b
=
11
,
M
=
19
,
求
C
和
a
p=13,q=17,b=11,M=19,求C和a
p=13,q=17,b=11,M=19,求C和a
n
=
p
⋅
q
=
221
ϕ
(
n
)
=
(
p
−
1
)
⋅
(
q
−
1
)
=
192
C
=
M
b
m
o
d
n
=
1
9
11
m
o
d
221
由于
19
=
(
10011
)
2
,
∴
C
=
(
1
9
2
)
5
⋅
19
m
o
d
221
=
76
a
=
35
n=p\cdot{q}=221\\ \phi(n)=(p-1)\cdot{(q-1)=192}\\ C=M^bmodn=19^{11}mod221\\ 由于19=(10011)_2,\\ \therefore C=(19^2)^5\cdot{19}mod221=76 \\a=35
n=p⋅q=221ϕ(n)=(p−1)⋅(q−1)=192C=Mbmodn=1911mod221由于19=(10011)2,∴C=(192)5⋅19mod221=76a=35
3.4 数字签名 digital signature
- 数字签名:一种给以电子形式存储的消息签名的方法
- 签名算法
- 验证算法
3.5 RSA 签名方案
先签名后加密
3.6 密钥管理与分发
3.6.1 对称加密的对称密钥分发
密钥分发方案
分布式密钥控制
3.6.2 非对称加密的对称密钥分发
3.6.3 确保保密性和身份认证的密钥分发方案
3.7 公钥分发
3.7.1 公钥授权
3.7.2 公钥证书
公钥证书应用
3.8 认证
3.8.1 认证组成
3.8.2 身份认证方式
- 单向认证
- 双向认证
- 信任的第三方认证
3.8.3 认证技术
- 口令认证
- 公钥认证
- 远程认证
- 匿名认证
- 基于数字签名的认证