绪论
信息安全与密码学
- 经典的信息安全三要素(CIA)——机密性、完整性和认证性是信息安全的核心原则。
- 以密码学为基础的信息安全的五个方面:信息及信息系统的机密性、完整性、可用性、认证性和不可否认性。机密性可通过加密变换实现访问控制;完整性使用消息摘要算法防止篡改;认证性分为实体认证和消息认证。
- 攻击分为主动攻击(中断、篡改:对完整性的攻击、伪造:对认证性的攻击、重放:可使用时间戳进行预防)和被动攻击(截取:对机密性的攻击)。
- 密码学是保障信息安全的作用。
密码学发展史
- 发源:1949年香农发表一篇题为《保密系统的通信理论》的经典论文。
- 密码学的发展经历了两个阶段:传统密码学和现代密码学。
- 传统密码:古代密码学、近代密码。
- 现代密码学:1949年香农发表《保密系统的通信理论》标志着现代密码学的真正开始(第一次质的飞跃)。1976年,Diffie和Hellman发表《密码学的新方向》,标志着公钥密码体制的诞生(第二次质的飞跃)。1978年,Rivest、Shamir和Adleman提出了RSA公钥密码体制。
密码及法律法规
- 密码法规是社会信息化密码管理的依据。
密码学基础
密码学分类
- 密码学分为密码码编码学密码分析学。编码学主要分为保密体制和认证体制,从使用密钥的策略上分为:对称密码体制和非对称密码体制(亦称公钥密码体制)。
- 密码分析学中:设计和使用密码系统必须遵守:柯克霍夫准则,要求算法必须公开,对密钥进行保护。
- 保密体制模型:明文空间、密文空间、密钥空间、加密算法和解密算法。
- 保密体制的安全性:
- 按照安全性递减的顺序划分:全部破解、全盘推导、实例推导和信息推导。
2.根据密码分析者可获得的密码分析的信息量把密码体制的攻击划分:
(1)唯密文攻击(仅知道一些密文)
(2)已知明文攻击(知道一些密文和相应明文)--------------------------------->密码系统至少应经受住的攻击;对流密码的攻击方式
(3)选择明文攻击(密码分析者可以选择一些明文并得到相应密文)
(4)选择密文攻击(密码分析者可以选择一些密文并得到相应明文)
(5)选择文本攻击
3.攻击方式的分类:
(1)穷举攻击(解决方法:增大密钥量)
(2)统计分析攻击(解决方法:使明文的统计特性和密文的统计特性不一样)
(3)数学分析攻击(解决方法:选用足够复杂的加密算法)
4.安全性级别:无条件安全性(H(P|C))=H(P))、计算安全性(计算出或估计出破译一个密码系统的计算量下限,利用已有的最好方法破译它所需要的代价超过了破译者的破译能力(时间、空间和资源等))和可证明安全性。
- 认证体制模型
认证体制包括实体认证和消息认证。这里主要指消息认证。
认证体制的安全性:按照攻击目标不同可分为完全摧毁、一般性伪造、选择性伪造和存在性伪造。
- 依照攻击者的资源,分为唯密钥攻击、已知消息攻击、一般的选择消息攻击、特殊的选择消息攻击、自适应的选择消息攻击。
香农理论
参看信息论与编码http://www.cnblogs.com/WittPeng/p/8988941.html
认证系统的信息理论
复杂度理论
算法的复杂度
- 度量要素:时间复杂度(计算复杂度)和空间复杂度
- 复杂度 O(*)
问题的复杂度
- P类问题:具有一个在多项式时间内求解的算法的问题
- NP类问题:不存在多项式时间求解算法的问题
- 量子计算机可以将NP类问题转化为P类问题
古典密码体制
1.置换密码
1.列置换密码
- 加密过程:(1)明文按照固定宽度m按行写出,不足部分按照双方约定方式填充,得到字符矩阵;
(2)进行置换操作;
(3)读出后即为密文
- 解密过程:将加密密钥逆置,按照加密过程操作,即可由密文得到明文。
- 如密钥e=(143)(56) 意思是1->4,4->3,3->1,5->6,6->5
2.周期置换密码
- 明文按照固定长度m分组,对字符串编号,重新排列位置从而得到密文;解密时将加密密钥逆置得到解密密钥,重新排列位置后得到明文。
2.代换密码
- 代换密码就是将明文中的字符替换为其他字符的密码体制。
单表代换密码
- 基于密钥的代换密码,明文字母对应的密文字母在密文中保持不变
- 仿射密码:e(x)=ax+b(mod26) (a,b属于Z26,gcd(a,26)=1)
x=d(e(x))=a-1(e(x)-b)(mod26)
多表代换密码
- 明文中不同位置的同一明文字母在密文中对应的密文字母不同,能够很好地对抗统计密码分析
- 实例:
- 转轮密码机
古典密码的分析——统计分析法
单表代换密码分析
- 使用字母或汉字的统计规律
多表代换密码分析
- 确定密钥长度:
- 卡西斯基(Kasisks)测试法:找相同字母间隔字母数的最大公因子,有可能是周期k
- 重合指数法:计算概率分析重合指数IC=Σpi2 ,IC高的可能是单表代换,低的可能是多表代换。
- 确定密钥:拟重合指数测试法:x=Σriqi
- 恢复明文并验证
明文-密文对分析法
对称密码之分组密码
对称密码
- 特点:加密速度快、安全性好、基于标准化··· ···
- 应用:数据保密传输、加密存储··· ···
分组密码概述
- 将明文消息编码表示后的二进制序列,划分为固定大小的块
- 加密和解密是一一映射的
- 设计应满足要求
- 分组足够长
- 密钥长度足够长
- 由密钥确定的置换算法足够复杂
- 加密和解密运算简单
- 一般无数据扩展
- 理想分组密码
- 分组密码的设计原则:扩散、混乱
- 乘积密码体制:在密钥控制下扩散和混乱两种密码操作的多次迭代
- 迭代结构
- Feistel密码
- SP网络
组成 | S盒(代换):混乱作用,P盒(置换):扩散作用 |
效果 | 雪崩效应 |
设计原则 |
|
DES算法
- 特点
分组长度 | 64位 |
密码体制 | 对称密码体制,加密和密钥使用同一密钥,仅子密钥编排顺序不同 |
有效密钥长度 | 56位(原64位的每个第8位为奇偶校验位,可忽略) |
迭代结构 | SP网络结构,共16轮 |
优点 | 只使用了标准的算术和逻辑运算 |
- 流程
①64位明文->②IP置换->
③分为两部分L0和R0:L0为下一轮的R1;R0和第一次置换得到的子密钥混合经过F函数得到下一轮的L1
->④置换IP-1->⑤得到64位密文
F函数:
扩展置换 | 8*4的矩阵 每行的头尾各补齐一位,变成8*6的矩阵 |
Ki子密钥的生成算法 | 将56位的有效的密钥压缩成48位 |
代换盒(S盒) | 步骤说明:b1b6确定行,b2b3b4b5确定列,将48位变成32位 特点:
|
置换运算(P盒) |
- 安全性
- 缺陷
- 互补性:
2.弱密钥:4个弱密钥,12个半弱密钥
3.迭代轮数
4.密钥长度
- 应对方法:多重DES
- 二重DES
- 三重DES
- DES的分析方法:
- 差分分析:由明文差和密文差求系数a,当轮数低于8轮时,个人计算机几分钟即可攻破
- 线性分析
AES算法
- 特点介绍
- 分组长度:128位
- 密钥长度和对应轮数:128位10轮,192位12轮,256位14轮
- 过程:前9轮 字节代换、行移位、列混合和轮密钥加,第10轮 字节代换、行位移和轮密钥加
- AES的结构
- AES结构的一个显著特征是它不是Feistel结构
- 输入的密钥被扩展成由44个32位字节所组成的数组w[i]
- AES结构由四个阶段组成
- 仅仅在轮密钥加阶段使用密钥,并在算法的开始和结束都是用轮密钥加阶段
- 每个阶段均可逆,解密算法和加密算法并不一样
- 加密和解密过程的最后一轮只包含3个阶段,这是由AES的特定结构所决定的,而且也是密码算法可逆性所要求的
- AES的安全性和可用性
- AES和DES的对比
相同 | 不同 | |||
DES |
|
密钥长度固定56位 | 面向比特的运算 | 加密和解密运算一致 |
AES | 密钥长度可以是128位、192位、256位 | 面向字节的运算 | 加密和解密运算不一致,加密器不能同时用做解密器 |
典型分组密码
国际数据加密算法(IDEA)
- 工作原理:明文64位,密钥128位
- 轮函数:分为8轮,每轮输入6个子密钥和4个状态块
- 输出变换
- 解密过程
- 子密钥生成
RC6
- 加密过程
- 解密过程
- 密钥扩展方案
Skipjakc算法
Callmellia算法
工作模式
电子密码本(ECB)模式
- 工作模式
- 特点:
- 分组数量庞大,易受统计分析攻击、分组重放攻击和代换攻击。
- 明文或者密文出现一位的错误,只会影响一个分组,不会是错误扩散。
- 是最快最简单的工作模式
- 应用:数据随机且较少的情况
密码分组链接(CBC)模式
- 工作模式
- 特点
- 克服了ECB模式的缺点
- 虽然加密会使错误扩散,但解密的过程又进行了抵消,最后出错的仍是一个分组(密文的错误会由一组变成两组)
- 若文档中的一个分组和他前面的一个分组和另一个文档相同,则这个分组会加密出相同的结果,所以引进了初始化向量IV,使头文件不同(IV不用加密,可以和明文一起传递)
- 应用:大型文件的加密,是软件加密的最好选择
密码反馈(CFB)模式
- 工作模式
其中,加密算法也能用于解密。加密是对移位寄存器的操作,不对明文加密
- 特点
- 面向比特流进行操作
- 可用于同步序列密码,加密和解密可同时进行
- 有CBC的优点
- 对信道错误较敏感且会进行传播,但解密后会纠正。对明文只会影响一个分组,对密文的错误影响只有寄存器推出错误密文后,才能阻止扩散
- 数据加密速率低
- 应用:加密字符序列
输出反馈(OFB)模式
- 工作模式
- 特点
- 改进了CFB,错误不会传播,但密文的错误难以发现
- 不具有自同步的能力
- 初始向量IV不需要保密
- 应用:在极易出错的环境选用的模式,但需要有高速同步机制
计数器(CTR)模式
对称密码之序列密码
简介
- 定义:指明文消息按字符逐字符地加密的一类密码算法
密文序列c=c0c1···*···cn-1=Ek0(m0)···Ekn-1(mn-1),若ci=Eki(mi)=mi模加ki,称为加法序列密码。
Hash函数和消息认证
Hash函数
定义 | 是一个从消息空间到像空间不可逆映射,同时是一种具有压缩性的单向函数 | |
散列值的生成 | h=H(M) h是定长的散列值,H是Hash函数运算,M是一个变成消息 | |
应用 | 数字签名 | |
消息认证 | 生成程序或文档的“数字指纹” 用于安全运输和存储口令 |
|
性质 | 生成任意长度的消息 | |
产生定长的输出 | ||
计算任意给定的消息比较容易 | ||
安全性 | 单向性:找到H(x)=h的x是不可行的 | |
抗弱碰撞性:对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的 | ||
抗强碰撞性:找任意一对不同的消息M1M2,使H(M1)=H(M2)在计算上是不可行的 | ||
雪崩效应 |
||
单向性 | ||
用途 | 生成数字签名Sign(H(M)) | |
对程序或者文件生成摘要(完整性认证)H(M) | ||
口令H(Password) | ||
函数结构 | 核心技术:设计无碰撞的压缩函数f | |
迭代结构: 1.将输入消息分成L个固定长度的分组,每个分组为b位,最后一个分组包含输入消息的总长度,若不足b位需要填充, 2.压缩函数f:有两个输入,一个是前一次迭代的n位输出,成为链接变量;一个是消息的b位分组,并产生一个n位的输出,即散列值。 |
Hash算法
Hash函数的攻击
生日攻击:p(k)=1-p365k/365k;k=23,p(k)=0.5073;k=100,p(k)=0.99999997。可以减少一半的尝试量
两个集合的相交问题。
Hash函数的应用
消息认证:
目的:
-
- 验证是否真实
- 验证完整性
MDC和加密:仅能验证完整性
消息认证码MAC
-
- 用于消息源认证和消息完整性的认证
- 构造MAC的方法
-
- 使用DES分组加密算法的MAC
- 基于Hash的认证码——HMAC
-
-
- 安全性:包里搜索密钥需要2k(k为密钥长度);攻击MAC需要2n次
-
第七章 公钥密钥体制
公钥密码体制概述
- 对称密码体制的局限性:
- 密钥分发问题
- 密钥管理问题
- 数字签名问题
- 公钥加密体制的思想
- 公钥和私钥
- 基于陷门单向函数的困难问题
- 公钥密码体制的分类
公钥加密体制介绍
第八章 数字签名技术
数字签名概述
基本概念
数字签名技术一般分为带仲裁和不带仲裁的两类。如果使用对称密钥进行数字签名,则必须使用仲裁者,非对称可以不带仲裁。
数字签名可以实现不可否认性和消息完整性认证(检验是否被篡改或伪造)
原理
(P,S,K,Sig,Ver),P:密钥生成算法,S:签名算法,K:验证算发,Sign,Verify
过程简图
数字签名的实现方案
基于RSA的签名方案 | 密钥生成算法 |
这里,先选择e再确定d的原因是:加密的重要性大于解密的重要性。 |
||
签名算法 |
|
|||
验证算法 |
|
|||
正确性 | ||||
安全性 |
|
|||
基于离散对数的签名方案 | ElGamal签名体制 | 密钥生成算法 |
签名者的公钥是(p,g,y),私钥是x。 |
|
签名算法 | 签名者选取随机数k,计算r≡gk(mod p),s≡[h(m)-xr]K-1(mod(p-1)),签名为(r,s),其中h为安全的Hash函数 | |||
验证算法 | 计算h(m)后,验证yxrs≡gh(m)(mod p)是否成立 | |||
正确性 | ||||
安全性 |
|
|||
Schnorr签名体制 | 特点 | 签名速度较快,签名长度较短 | ||
密钥生成算法 |
|
|||
签名算法 | 签名者选择随机数k,1≤k≤q-1,然后进行如下计算: r≡gk(mod p) e=h(m,r) s≡(xe+k)(mod q) 签名为(e,s),其中h为安全的Hash函数。 |
|||
验证算法 | 签名接收者在收到消息m和签名(e,s)后,首先计算r1≡gsy-e(mod p) ,然后验证e=h(e,r1),如果等式成立则签名有效,否则无效。 | |||
正确性和安全性 |
安全性和ElGaml类似 |
|||
DSA签名体制 | 密钥生成算法 |
|
||
签名算法 | 选取随机数k,r=(gkmod p)mod q,s≡[h(m)+xr]k-1(mod q),其中h是SHA1的特定Hash函数 | |||
验证算法 | 收到m和签名值(r,s)后,计算 w≡s-1(mod q) u1≡h(m)w(mod q) u2≡rw(mod q) v=(gu1yu2mod p)mod q 比较v和r,相同则签名有效,否则无效。 |
|||
正确性 | ||||
安全性 | DSA是ElGamal的变形,因此安全性论述在此也同样使用。还有一点是签名算法计算的s正好为0时,会产生1除以0的情况,必须放弃这个签名。 | |||
三种签名体制的对比 |
|
|||
离散对数签名体制 |
|
|||
基于椭圆曲线的签名方案 | 密钥生成算法 | 选择E上一点G∈E,G的阶为满足安全要求的素数n,即nG=O。 选取一个随机数d∈[1,n-1],计算Q使得Q=dG,那么公钥为(n,Q),私钥为d。 |
||
签名算法 |
|
|||
验证算法 |
|
|||
正确性 |
|
|||
安全性 | ECDSA安全性依赖于基于椭圆曲线的有限群上的离散对数难题,与RSA和有限域离散对数的数字签名相比,在相同的安全强度条件下,有如下特点 签名长度短、密钥存储空间小,特别是用于存储空间有限、带宽受限、要求高速实现的场合。 |
特殊数字签名
- 代理签名
- 盲签名
- 群签名
- 不可否认签名
- 门限数字签名
- 多重数字签名
- ··· ··
密钥管理
密钥管理概述
密钥管理的原则
- 区分密钥管理的策咯和机制
- 完全安全原则
- 最小权力原则
- 责任分离原则
- 密钥分级原则
- 密钥更换原则
- 密钥应该有足够的长度
- 密钥体制不同,密钥管理也不相同
密钥管理的层次结构
- 会话密钥
- 密钥加密密钥
- 主密钥
越低层的密钥更换越快。仅主密钥需要人工装入,其他各级密钥均可以由密钥管理系统按照某些协议来进行自动地分配、更换、撤销等。