密码学复习
site:www.wendangku.net 密码学答案
基本概念
信息系统安全=设备安全+数据安全+内容安全+行为安全
重合指数法对多表代换密码算法的破解最有效。
一个加密系统至少由明文、密文、加密算法、解密算法和密钥组成,其安全性是用密钥决定的。
置换密码又叫换位密码,最常见的置换密码有列置换和周期转置换密码
一个有6 个转轮密码机是一个周期长度为26 的6 次方的多表代替密码机械装置。
密码学历史上第一个广泛应用于商用数据保密的密码算法是DES。
DES密码中所有的弱密钥、半弱密钥、四分之一弱密钥和八分之一弱密钥全部加起来,一共有256 个
安全性较差的密钥
攻击方法
-
统计分析攻击
所谓统计分析攻击就是指密码分析者通过分析密文和明文的统计规律来破译密码。 -
数学分析攻击
所谓数学分析攻击是指密码分析者针对加密算法的数学依据通过数学求解的方法来破译密码. -
仅知密文攻击
所谓仅知密文攻击是指密码分析者仅根据截获的密文来破译密码。因为密码分析者所能利用的数据资源仅为密文,因此这是对密码分析者最不利的情况。
- 已知明文攻击
所谓已知明文攻击是指密码分析者根据已经知道的某些明文密文对来破译密码.
攻击者总是能获得密文,并猜出部分明文
计算机程序文件加密特别容易受到这种攻击
- 选择明文攻击
所谓选择明文攻击是指密码分析者能够选择明文并获得相应的密文。
- 唯密文攻击
对于这种形式的密码分析,破译者已知的东西只有两样:加密算法、待破译的密文。
- 选择密文攻击
与选择明文攻击相对应,破译者除了知道加密算法外,还包括他自己选定的密文和对应的、已解密的原文,即知道选择的密文和对应的明文。
- 选择文本攻击
选择文本攻击是选择明文攻击与选择密文攻击的结合。破译者已知的东西包括:加密算法、由密码破译者选择的明文消息和它对应的密文,以及由密码破译者选择的猜测性密文和它对应的已破译的明文。
很明显,唯密文攻击是最困难的,因为分析者可供利用的信息最少。
古典密码
采用混淆、扩散和乘积的方法来设计密码
混淆:使密文和明文、密钥之间的关系复杂化。
扩散:将每一位明文和密钥的影响扩大到尽可能多的密文位中。
置换(换位)
置换密码经不起已知明文攻击
代替(替换)
单表代替密码: 只使用一个密文字母表,并且用密文字母表中的一个字母来代替明文字母表中的一 个字母。 凯撒密码 仿射密码 经不起穷举攻击 单表代替密码可用统计分析攻破。
多表代替密码: Vigenere密码 , 一个明文字母有多种代替。
多名码代替密码
经得起统计分析是对近代密码的基本要求!
DES
分组密码:明文、密文和密钥的分组长度都是64位。
- 面向二进制的密码算法:因而能够加解密任何形式的计算机数据。
- 对合运算:因而加密和解密共用同一算法,使工程实现的工作量减半。
- 综合运用了置换、代替、代数等多种密码技术。
共有8个S盒
每个S盒有6个输入,4个输出,是一种非线性压缩变换。
设输入为b1 b2 b3 b4 b5 b6 ,则以b1b6组成的二进制数为行号,b2b3b4b5组成的二进制数为列号。 列交点处的数(二进制)为输出
P盒是置换盒,提供雪崩效应
在今天看来,DES算法已经不再安全,其主要原因是源于密钥空间的限制,容易被穷举攻破
DES的轮函数F是由三个部分:扩展置换、非线性代换和线性置换组成的。
AES
整体特点
- 分组密码:明文长度128,密文长度、密钥长度可变(128/192/256等,现在一般取 128 ) 。
- 面向二进制的密码算法:能够加解密任何形式的计算机数据。
- 不是对合运算:加、解密使用不同的算法。
- 综合运用置换、代替、代数等多种密码技术
- 整体结构:基本轮函数加迭代。圈数可变,≥10
S盒变换 ByteSub(State)
①S盒变换是AES的唯一的非线性变换,是AES安全的关键。
②AES使用16个相同的S盒,DES使用8个不相同的S盒。
③AES的S盒有8位输入8位输出,DES的S盒有6位输入4位输出。
行移位是置换
行移位变换对状态的行进行循环移位。
第 0行不移位,第1行移 C1字节,第2行移 C2字节,第3行移 C3字节。
列混合是代替
列混合变换把状态的列视为GF(28)上的多项式a(x),乘以一个固定的多项式c(x),并模 x4+1:
b(x)=a(x)c(x) mod x4+1
其中,c(x)=03x3+01x2+01x+02
能够抵抗目前所有的已知攻击:
穷举攻击。
差分攻击。
线性攻击。
Square攻击。
SMS4
二、SMS4 密码概况
①分组密码:
数据分组长度=128位、密钥长度=128位
数据处理单位:字节( 8位),字(32位)
②密码算法结构:
基本轮函数加迭代
对合运算:解密算法与加密算法相同
非线性字节变换部件S盒:
四个S盒
8位输入、8位输出。
本质上, 8位的非线性置换。
以输入的前半字节为行号,后半字节为列号,行列交叉点处的数据即为输出。
分组密码
1.1977年DES颁布。1981年美国针对DES的应用制定了四种基本工作模式:
-
电码本模式(ECB):暴露明文的数据模式。
-
密文反馈链接模式(CBC):明密文链接:加密解密错误传播无界
密文链接: 加密错误传播无界,解密错误传播有界
-
密码反馈模式(CFB):错误传播无界
-
输出反馈模式(OFB):加解密都没有错误传播,但因无错误传播而对密文的篡改难以检测。
2.称长度小于分组长度的数据块为短块,必须采用合适的技术解决短块加密问题。
短块处理技术:
1、填充技术
2、密文挪用技术
3、序列加密
序列密码
特性
- 人们用序列密码模仿 “一次一密 ” 密码;
- 加密运算最简单,而且是对合运算;
- 安全取决于密钥序列产生算法;
- 理论和技术都十分成熟;
- 核心密码的主流密码。
分类
- 同步序列密码
密钥序列产生算法与明文无关,所产生的密钥序列也与明文无关。
如果通信中丢失或增加了一个密文字符,则收方的解密将一直错误。 - 自同步序列密码
密钥序列产生算法与明文(密文)相关,则所产生的密钥序列与明文(密文)相关。
设密钥序列产生器具有 n位存储,则加密时一位密文错误将影响后面连续 n个密文错误。在此之后恢复正确。
解密时一位密文错误也将影响后面连续 n个明文错。在此之后恢复正确。
加解密会造成错误传播。在错误过去之后恢复正确。
序列密码结构可分为驱动部分和组合部分两个主要组成部分。
线性移位寄存器
仅当连接多项式g(x)为本原多项式时,其线性移位寄存器的输出序列为m序列。
设f(x)为GF(2)上的多项式,使f(x)| x p-1的最小正整数p称为f(x)的周期。如果f(x)的次数为n,且其周期为2 ^n-1,则称f(x)为本原多项式。
已经证明,对于任意的正整数n,至少存在一个n次本原多项式。而且有有效的产生算法。
反馈移位寄存器输出序列生成过程中,反馈函数对输出序列周期长度
起着决定性的作用,而移位寄存器对输出的序列起着决定性的作用
门限发生器要求:LFSR的数目是奇数,确信所有的LFSR的长度互素,且
所有的反馈多项式都是本原的,这样可达到最大周期。
RC4密码与基于移位寄存器的序列密码不同。
它是一种基于非线性数据表变换的序列密码。
公开密钥
公开密钥密码的基本条件:
①E和 D互逆; 基本条件,保密条件
D(E(M))=M
② Ke ≠ Kd且由Ke 不能计算出 Kd ;安全条件
③E和 D都高效。 实用条件
④E(D(M))=M 保真条件
如果满足① ② ③可保密,如果满足② ③ ④可保真,如果4个条件都满足,可同时保密保真。
确保数据秘密性和真实性
RSA
加密
①随机地选择两个大素数 p和 q,而且保密;
②计算n=pq,将 n公开;
③计算φ(n)=(p-1)(q-1),对φ(n)保密;
④随机地选取一个正整数e,1<e<φ(n)且(e,φ(n))=1,将 e公开; //(e,F(n))最大公约数为1
⑤根据 ed=1 mod φ(n),求出d,并对d保密;
⑥加密运算:C=M^e mod n
⑦解密运算:M=C^d mod n
(p-1)和(q-1)的最大公因子要小。
d不能太小,要足够大
p和q要足够大
p和q应为强素数
e的选择
随机且含1多就安全,但加密速度慢。于是,有的学者建议取e=216+1=65537
ELgamal
RSA密码建立在大合数分解的困难性之上。
ELGamal密码建立在离散对数的困难性之上
公钥密码算法一般是建立在对一个特定的数学难题求解上,那么RSA算法是基于
大整数因子分解困难性、ElGamal 算法是基于有限域乘法群上离散对数的困难
离散对数问题:
①设p为素数,则模p的剩余构成有限域:
Fp={0,1,2,… ,p-1}
Fp 的非零元构成循环群Fp*
Fp* ={1,2,… ,p-1}
={α,α2,α3,,αp-1},
则称α为Fp*的生成元或模 p 的本原元。
②求α的摸幂运算为:
y =αx mod p,1≤x≤p-1,
准备:随机地选择一个大素数p,且要求p-1有大素数因子。再选择一个模p的本原元α。将p和α公开。
⑴ 密钥生成
用户随机地选择一个整数d作为自己的秘密的解密钥,2≤d≤p-2 。
计算y=αd mod p,取y为自己的公开的加密钥。
由公开钥y 计算秘密钥d,必须求解离散对数,而这是极困难的。
(2) 加密
将明文消息M(0≤M≤p-1)加密成密文的过程如下:
①随机地选取一个整数k,2≤k≤p-2。
②计算: U =y k mod p;
C1=αk mod p;
C2=UM mod p;
③取 C=(C1 ,C2)作为密文。
⑶ 解密
将密文(C1 ,C2)解密的过程如下:
①计算V=C1 d mod p;
②计算M=C2 V -1 mod p。
椭圆曲线密码已成为除RSA密码之外呼声最高的公钥密码之一。
它密钥短、签名短,软件实现规模小、硬件实现电路省电。
普遍认为,160位长的椭圆曲线密码的安全性相当于1024位的RSA密码,而且运算速度也较快。
椭圆曲线密码
设p是大于3的素数,且4a3+27b2 ≠0 mod p ,称
y2 =x3 +ax+b ,a,b∈GF(p)
为GF(p)上的椭圆曲线。
由椭圆曲线可得到一个同余方程:
y2 =x3 +ax+b mod p
其解为一个二元组<x,y>,x,y∈GF(p),将此二元组描画到椭圆曲线上便为一个点,于是又称其为解点。
数字签名
对于一个公钥密码,如果满足
E(D(M,Kd),Ke)=M,
则可确保数据的真实性。
真实性 保密性
一般方法:
签名通信协议: A ----M---- B
① A用自己的解密钥 KdA对数据 M进行签名:
SA =D(M,KdA)
②如果不需要保密,则 A直接将 SA 发送给用户B。
③如果需要保密,则A查到B的公开的加密钥KeB ,并用 KeB 对 SA 再加密,得到密文C,
C=E(SA ,KeB)
④最后,A把 C发送给 B,并将 SA或 C留底。
B收到后,若是不保密通信,则先查到A的公开加密钥KeA ,然后用KeA 对签名进行验证:
E(SA,KeA)=E(D(M,KdA),KeA)=M
⑥若是保密通信,则B先用自己的保密的解密钥KdB 对C解密,然后再查到A的公开加密钥KeA ,用KeA 对签名进行验证:
D(C,KdB)=D(E(SA,KeB),KdB)= SA
E(SA,KeA)=E(D(M,KdA),KeA)=M
如果能够恢复出正确的M,则说明SA是A的签名,否则SA不是A的签名。
合理设计明文的数据格式:
发方标识 收方标识 报文序号 时间 数据 纠错码
M=<A,B,I,T,DATA,CRC>
记 其中 H=<A,B,I,T> 。
于是,A以 <H,SIG(M,KdA)> 为最终报文发给B,其中H为明文形式。
HASH
分组:将输入分为L-1个大小为b位的分组。
填充:若第L-1个分组不足b位,则将其填充为b位。
附加:再附加上一个表示输入的总长度分组。
共L个大小为b位的分组。
由于输入中包含长度,所以攻击者必须找出具有相同Hash值且长度相等的两条报文,或者找出两条长度不等但加入报文长度后Hash值相同的报文,从而增加了攻击的难度。
目前大多数Hash函数均采用这种结构
主处理
主处理是SHA-1 HASH函数的核心。
每次处理一个512位的分组,循环次数为填充后报文的分组数L
SHA-1的输入为长度小于264位的报文,输出为160位的报文摘要,该算法对输入按512位进行分组,并以分组为单位进行处理。
简述SHA1的算法
(1)附加填充位;
(2)初始化链接变量; //初始化缓冲区
(3)以512 位的分组为单位处理信息,其核心是一个包含4 个循环的模块,每个循环
由20 个步骤组成;
(4)每一循环均以当前正在处理512bitYq 和 160bit 的缓存值A,B,C,D 和E 为输入,
然后更新缓存内容;
(5)得到最终散列值;
PKI
公钥证书是PKI中最基础的组成部分
公钥证书是一种包含持证主体标识,持证主体公钥等信息,并由可信任的签证机构(CA)签名的信息集合。公钥证书主要用于确保公钥及其与用户绑定关系的安全。公钥证书的持证主体可以是人、设备、组织机构或其它主体。公钥证书能以明文的形式进行存储和分配。任何一个用户只要知道签证机构(CA)的公钥,就能检查对证书的签名的合法性。如果检查正确,那么用户就可以相信那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。从而确保用户公钥的完整性。
认证
认证和数字签名的区别:
①认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性,而数字签名中用于验证签名的数据是公开的。
②认证允许收发双方互相验证其真实性,不准许第三者验证,而数字签名允许收发双方和第三者都能验证。
③数字签名具有发送方不能抵赖、接收方不能伪造和能够公开验证解决纠纷,而认证则不一定具备
认证和加密的区别:
加密用以确保数据的保密性,而认证用以确保报文发送者和接收者的真实性以及报文的完整性。