密码学 Crytography
对称密码与非对称密码:
对称密钥密码体制:发送方和接收方使用相同的密钥
非对称密钥密码体制:发送方和接收方使用不同的密钥
通常采用对称密码体制实现数字加密,公钥密码体制实现密钥管理的混合加密机制
对称密钥体制:
加密处理速度快、保密度高,密钥管理分发复杂代价高、数字签名困难
分组密码和序列密码:
分组密码(一次加密一个明文分组):一次加密一个明文分组:DES,IDEA,AES;
序列密码(一次加密一位或者一个字符):一次加密一位或者一个字符:RC4,SEAL
加密方法:代换法:单表代换密码,多表代换;置换法
安全性:
攻击密码体制:穷举攻击法(对于密钥长度128位以上的密钥空间不再有效),密码分析学;
典型的密码攻击:唯密文攻击,已知明文攻击,选择明文攻击(加密算法一般要能够抵抗选择明文攻击才认为是最安全的,分析方法:差分分析和线性分析),选择密文攻击。
对称加密
传统对称密码加密时所使用的两个技巧是代换
和置换
Caesar密码
凯撒密码属于古典密码、置换密码
恺撒密码的替换方法是通过排列明文和密文字母表,如果仔细观察,能很轻易地找出其中的规律,密文字母表示将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候,解密时的密钥就是3,当然我们也可以设置偏移量:
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ;
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC。
数据加密标准DES
1977年提出 。对称加密算法。
明文按64位进行分组,密钥长64位,实际长度是56位(64-8)(第8、16、24、32、40、48、56、64位是奇偶校验位)。
密码结构基于Feistel网络
国际数据加密算法IDEA
对称加密算法
利用128位密钥对64位的明文分组,经连续加密产生64位的密文分组
高级加密标准AES
AES(Advanced Encryption Standard)支持三种长度的密钥:128位
,192位
,256位
。对称加密算法;分组加密,分组长度固定为128;
SP网络。 2001年提出。
非对称加密算法
基于难解问题设计密码是非对称密码设计的主要思想,NP问题NPC问题
克服密钥分配上的困难、易于实现数字签名、安全性高,降低了加解密效率
RSA
非对称加密算法(公开密钥密码);建立在大整数因式分解的困难性之上;既可用于加密,又可用于数字签名;目前应用最广泛;
尚未破解的密钥长度包括:512、1024、2048
RSA公钥和私钥的生成:
RSA算法由两个密钥,即公钥和私钥组成。
1)准备两个非常大的素数
p
p
p和
q
q
q(转换成二进制后1024个二进制位或者更多,位数越多越难破解);
2)利用字符串模拟计算大素数
p
p
p和
q
q
q的乘积
n
=
p
q
n=pq
n=pq;
3)同样方法计算
m
=
(
p
−
1
)
(
q
−
1
)
m=(p-1)(q-1)
m=(p−1)(q−1),这里的
m
m
m为
n
n
n的欧拉函数;
4)找到一个数
e
(
1
<
e
<
m
)
e(1<e<m)
e(1<e<m),满足
g
c
d
(
m
,
e
)
=
1
gcd(m,e)=1
gcd(m,e)=1(即
e
e
e和
m
m
m互素);
5)计算
e
e
e在模
m
m
m域上的逆元
d
d
d(即满足
e
d
m
o
d
m
=
1
ed\ mod\ m=1
ed mod m=1 );
6)至此,公钥和私钥生成完毕:
(
n
,
e
)
(n,e)
(n,e) 为公钥,
(
n
,
d
)
(n,d)
(n,d) 为私钥;
RSA加密过程:
对于明文x
,用公钥(n,e)
对 x
加密的过程,就是将x
转换成数字(字符串的话取其 ASCII码或者 unicode 值),然后通过幂取模计算出y
,其中y
就是密文。
y
=
x
e
m
o
d
n
y=x^e\ mod\ n
y=xe mod n
RSA解密过程:
对于密文y
,用私钥 (n,d)
对y
进行解密的过程和加密类似,同样是计算幂取模;
x
=
y
d
m
o
d
n
x=y^d\ mod\ n
x=yd mod n
EIGamal密码
非对称加密算法(公开密钥密码);建立在离散对数求解困难之上;
椭圆曲线密码ECC
基于椭圆曲线离散对数求解困难的问题设计;参数P的规模应该大于160位;
哈希函数
单向密码体制,从一个明文到密文的不可逆的映射,只有只有加密过程,没有解密过程。
可将任意长度的输入经过变换后得到固定长度的输出(原消息的散列或消息摘要)。
应用:消息认证(基于哈希函数的消息认证码),数字签名(对消息摘要进行数字签名口令的安全性,数据完整性)
压缩;易计算;单向性;抗碰撞性;高灵敏性;
SHA比MD5更安全,SHA比MD5速度慢了25%,SHA操作步骤较MD5更简单
碰撞性
理想的哈希函数是无碰撞的,但实际算法设计中很难做到。有两种抗碰撞性:弱碰撞性和强碰撞性;
-
弱抗碰撞性:即对于给定的消息x,要发现另一个消息y,满足H(x)=H(y)在计算上不可行;
-
强抗碰撞性:即对任意一对不同的消息(x,y),使得H(x)=H(y)在计算上不可行。
消息摘要算法MD5
哈希算法,用于消息认证、数字签名、口令安全和数据完整性校验;对任意长度的明文(首先通过填充的办法使其成为512的倍数)产生128位的消息摘要;
安全散列算法SHA
产生的消息摘要长度为160位;
哈希算法SM3
国家商用密码算法;将对任意长度的消息压缩成256位的摘要;
数字签名
通过密码技术实现,其安全性取决于密码体制的安全程度
普通数字签名:RSA,ElGamal,椭圆曲线数字签名算法等
特殊数字签名:盲签名,代理签名,群签名,不可否认签名,具有消息恢复功能得签名等
常对信息的摘要进行签名
美国数字签名标准DSS:签名算法DSA
应用:鉴权:重放攻击;完整性:同形攻击;不可抵赖
DSS数字签名
1994年提出。
DSS 只提供数字签名功能,不提供任何加密或密钥交换策略。签名是结合使用私钥生成的,验证私钥是参照相应的公钥进行的。
DSA签名算法
DSA算法使用了离散对数问题作为其数学基础,通过私钥对消息进行签名,公钥对签名进行验证,保证了消息的完整性、真实性和不可否认性。
密钥管理
包括密钥的生成,存储,分配,启用与停用,控制,更新,撤销与销毁等诸多方面,密钥的分配与存储最为关键。
借助加密,认证,签名,协议和公证等技术
密钥的秘密性,完整性,真实性
密钥产生:噪声源技术(基于力学,基于电子学,基于混沌理论的密钥产生技术);主密钥,加密密钥,会话密钥的产生
密钥分配:
分配手段:人工分发(物理分发),密钥交换协议动态分发
密钥属性:秘密密钥分配,公开密钥分配
密钥分配技术:基于对称密码体制的密钥分配,基于公钥密码体制的密钥分配
密钥信息交换方式:人工密钥分发,给予中心密钥分发,基于认证密钥分发
人工密钥分发:主密钥
基于中心的密钥分发:利用公开密钥密码体制分配传统密码的密钥;可信第三方:密钥分发中心KDC,密钥转换中心KTC;拉模型,推模型;密钥交换协议:Diffie-Hellman算法
公开密钥分配:公共发布;公用目录;公约授权:公钥管理机构;公钥证书:证书管理机构CA,目前最流行
密钥存储:
公钥存储
私钥存储:用口令加密后存放在本地软盘或硬盘;存放在网络目录服务器中:私钥存储服务PKSS;智能卡存储;USB Key存储
Diffie-Hellman算法
第一个实用的在非保护信道中创建共享密钥方法;也称为“Diffie-Hellman密钥协商算法”;
DH算法交换密钥的步骤。假设小明、小红双方需要传递密钥,他们之间可以这么做:
密码分析学
密码分析学中4种典型的密码攻击:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击
- 唯密文攻击:只知道密文,推出明文或密钥,一般用穷举攻击;最容易防范;
- 已知明文攻击:知道部分的明文和密文对,推出密钥和加密算法;
- 选择明文攻击:知道明文就知道密文,目标为推出密钥;
- 选择密文攻击:知道密文就知道明文,目标为推出密钥;最难防范。
一般能抵抗选择明文攻击才认为是安全的。
20世纪90年代提出两种有效的对称密码的选择明文分析方法:差分分析
和线性分析
。