[Computer and Network Security] Applied Cryptography

零、一些基本的概念
唯密文攻击:攻击者只知道密文
已知明文攻击:攻击者知道一些<明文,密文>对
选择明文攻击:攻击者知道特定明文以及相应的密文

加密基元:它是构成密码系统基本组成模块的特定密码学函数。例如,对称密钥密码学,公钥密码学,哈希函数,数字签名,数字证书。当我们构建一个密码系统时可利用现有的加密基元。

一、对称加密
对称密码学:Bob和Alice分享相同的(对称)密钥,假设两个人有私密的和可靠的方式协商密钥。
1.1 块加密
取固定长度的明文和固定长度的密钥,生成一块与输入等长的密文块。
1.2 DES
DES:data encryption standard 数据加密标准
1977年被NBS(现在的NIST)采纳,使用56bit的密钥加密64bit数据
DES存在的问题:密钥的长度和块的长度太短;在硬件中效率很高,在软件中效率很低,DES的一种变体,即三重DES虽然更安全,但运行起来太慢。
1.3 AES
2001年11月被提出。
AES:advanced encryption standard 高级加密标准
代替了DES,数据被分成128bit的块进行处理,密钥的长度可以是128、192或256bits长。
1.4 加密长消息
加密长度大于64bits的消息
ECB:Electronic Code Block 电子代码区块
CBC:Cipher Block Chaining 密码块链接
OFB:Output Feedback Mode 输出反馈模式
CTR:Counter Mode 计算器模式

二、哈希与信息认证
2.1 哈希
任意长度的信息都会生成固定长度的哈希输出(又称摘要)。
密码散列需要具备的要求有:
单向性:给出一个哈希值h,找到x,使得h=H(x)是计算不可行的。
抗碰撞性:找出一对(x,y)存在H(x)=H(y)是计算上不可行的。
哈希算法:
MD5:计算出128bit长的信息摘要
SHA:1993年提出,1995年被修订并命名为SHA-1,会生成160bit的哈希值;输入的信息长度大于2^64bit时是没有定义的。还有三个额外的版本,分别是:SHA-256; SHA-384; SHA-512
2.2 消息认证
消息认证主要有三个作用:保护信息的完整性;验证消息源的身份;以及对于消息源的不可否认性。
有三个可供选择的函数:哈希函数;信息加密;消息验证码(MAC)

三、数论
数论是处理密码学算法的算术运算,公钥密码学就是基于数论。
模运算:如果m和n是两个整型数,并且n>0,那么m被n除所得的余数是指那个最小的非负整数。
素数:一个正整数p是素数,当且仅当它能够被1或者本身整除。
最大公约数(GCD):两个整数的最大公约数是指能够同时整除它们的最大的那个数。两个数互素是指它们的最大公约数为1。两个整数a和b,如果a*b mod n=1,那么a就称为b的乘法逆元素。
关于乘法逆元素的几个事实:a^-1 = x(mod n),如果a和n是互素的,那么仅存在唯一的x;如果a和n不是互素的,那么a^-1(mod n)就不存在;如果n是素数,那么1,2,...,n-1都与n互素。
欧几里德算法:用于找最大公约数。
扩展欧几里德算法:用来在已知a,b求解一组x,y,使它们满足贝祖等式:ax+by = gcd(a,b)。
中国剩余定理:如果n1,n2,...,nk是相互互素的正整数,那么对于给定的任意正整数a1,a2,...,ak,存在一个正整数x,0<x<n1*n2*...nk,会有x=a1(mod n1),x=a2(mod n2),...,x=ak(mod nk)。此定理用于验证RSA的正确性。
Zn*:Zn是所有整数模n的集合,Zn*是所有整数模n的集合中与n互质的数的集合。比如,如果n是素数,那么Zn*={1,2,...,n-1},注意0并没有在Zn*中,Zn*是对乘法封闭的(例如,如果a和b在Zn*中,那么a*b也在Zn*中)
欧拉函数:欧拉函数Φ(n)被定义为Zn*中元素的个数,如果n是质数,那么Φ(n)=n-1
欧拉定理:对于Zn*中的所有元素a,a^Φ(n)=1 mod n
费马小定理:如果n是素数,那么对于任意的整数a,都有一个相互互素的数n,只要满足a^(n-1) = 1 mod n

四、公钥加密
公钥密码学:使用两个密钥:公钥和私钥。公钥用于加密,可以被所有人得知,私钥用于解密,只能接收者知道。也称为互补的对称加密。
要求m = K^-K^+(m),并且在给定K^+的情况下,得到K^-在计算上是不可能的。
4.1 RSA
1977年由Rivest,Shamir和Adleman在MIT发明出来,以Zn*上的求幂计算为基础,使用大整数,安全性源于分解大数字。
RSA创造公钥/私钥对:
选择两个大的素数p和q。计算n=p*q,因此Φ(n)=(p-1)*(q-1)。选择e(e<n)与Φ(n)互素。计算d,使得e*d=1 mod Φ(n)。那么公钥是(n,e),私钥就是(n,d)。需要注意的是p和q必须保密。
RSA加密/解密:
给定消息m<n,加密过程为c=m^e mod n,解密过程为m=c^d mod n
证明:c^d = m^(e*d) mod n = m^[k*Φ(n)+1] mod n = {m^[k*Φ(n)] mod n} * {m mod n} = m
RSA的安全性:
RSA的安全性是以分解假设为依据的,即分解一个大数n=p*q是困难的。
4.2 Diffie-Hellman
Diffie-Hellman密钥交换,它是第一个被提出来的公钥密码方案,在1976年由Diffie和Hellman连同公钥密码的概念一同提出。它提供了一种在公开环境下交换密钥的可行方法。安全性基于计算离散对数的复杂度(与因式分解类似)。它提供了一种在公开环境下交换密钥的可行方法。安全性基于计算离散对数的复杂度
Diffie-Hellman设置:
两个用户A和B协商全局(公开)参数:(1)一个大的质数P;(2)g作为生成器(原始根)mod p
每个用户(例如A)生成他们的密钥:(1)选择一个秘密的密钥:Xa<P;(2)计算与之对应的公钥:Ya=g^(Xa) mod p
Diffie-Hellman密钥交换:
(1)密钥交换过程:
A发送给B:Ya=g^(Xa) mod p
B发送给A:Yb=g^(Xb) mod p
(2)用户A与B分享会话密钥Kab
Kab=g^(Xa*Xb) mod p
B可以计算Ya^Xb mod P
A可以计算Yb^Xa mod P
DH的安全性是基于离散对数假设:给出g和p以及g^x mod p,找到x在计算上是不可能的。更准确地讲,它是基于Diffie-Hellman假设:给出g和p,g^x mod p和g^y mod p,想要得到g^(xy) mod p在计算上是不可行的。
4.3 DSA
数字签名提供如下能力:
(1)认证签名的作者,日期和时间;(2)鉴定消息内容;(3)可以有第三方来认证以解决纠纷。
机密/解密:发送者用公钥机密,接收者用私钥解密。
签名/认证:发送者用私钥签名,接收者用公钥认证。
4.3.1 朴素法
直接对消息m签名
4.3.2 签署消息摘要
对消息的哈希签名
4.3.3 带有加密的数字签名
(1)A利用她的私钥来对消息签名:Sa(M)
(2)A利用B的公钥来加密消息和签名:Eb(Sa(M))
(3)B利用他的私钥来解密消息:Db(Eb(Sa(M)))=M
(4)B利用A的公钥来认证:Va(Sa(M))=M
4.3.4 数字签名标准(Digital Signature Standard:DSS)

4.4证书
4.4.1 公钥基础设施(PKI)

我们需要一些值得信赖的公钥权威来认证密钥。公钥基础设施由一些组件构成,需要安全地分发公钥和私钥。
4.4.2 公钥证书
证书把标识绑定到公钥上,所有的内容都通过一个可信赖的公钥或者证书权威(CA)来签名。可以被任何知道公钥的人用来认证。
4.4.3 证书操作
CA把公钥绑定到一个特殊实体上。
第一步,Bob在CA处登记他的公钥。
(1)Bob向CA提供"身份证明"。
(2)CA创建证书将Bob与他的公钥绑定。
(3)证书中包含Bob的公钥,这个公钥由CA数字签名----CA说"这是Bob的公钥"。
第二步,Alice想要Bob的公钥时。
(1)获得Bob的证书
(2)应用CA的公钥来处理Bob的证书,获得Bob的公钥。
4.4.4 长期/短期密钥
证书的作用是绑定密钥,但它们与密钥交换算法有何种不同呢?
证书处理的是长期公钥和私钥,很长时间内保持不变。
密钥交换算法处理短期公钥和私钥,在每个会话中都会变化。
4.4.5 X.509认证服务
X.509定义了认真服务的框架:保存经过CA签名的用户的公钥证书。
X.509定义了认证协议。
它是用公钥加密与数字签名。
X.509证书被广泛应用。

五、总结
1.对称加密:DES;AES
2.哈希函数:MD5;SHA-1
3.公钥加密:RSA(用于加密);Diffie Hellman(交换会话密钥)
4.数字签名:DSA(基于公钥加密)
5.证书:X.509 V3(基于公钥加密)

你可能感兴趣的:([Computer and Network Security] Applied Cryptography)