首页 > 代码库 > 密码学知识点整理

密码学知识点整理

序列(流)密码的特点:加解密速度快,无错误扩散。
分组(块)密码的特点:应用模式灵活多样,组内有错误扩散。


在传统观念里,往往仅注重信息的秘密性;但近代人们认为,信息的真实性、完整性以及不可否认性,在应用上往往比秘密性更重要。

密钥的生命周期:

密钥产生:应该排除弱密钥和使密钥具有随机性;另外,密钥还须安全封装和导入到安全介质中。
证书签发:证书是将用户、密钥、以及密钥生存期等绑定在一起的合适方式,证书需由可信机关签发。
证书检验:这是为了验证证书是否合法、是否过期。
密钥使用:这是密钥应有的自然功能。
密钥吊销:当密钥过期或安全性受到怀疑时必须这样做。
密钥更新:这是维持系统周转的必然需要。

一个安全的非对称密钥密码体制,可以达成下列功能
(1)保护信息机密性:任何人均可将明文加密成密文,此后只有拥有解密密钥的人,才能解密。
(2)自身的密钥分配问题容易。
(3)可以用于对称密钥密码体制的密钥分配。
(4)直接认证发送方的身份。
(5)可达成不可否认功能
公开密钥密码体制虽具有许多优点,但仍然有缺点存在。其受人批评最多的方面,即在于加解密运算规模巨大、且速度缓慢。

在达成信息的真实性、完整性及不可否认性方面,利用基于公开密钥密码体制思想的数字签名;

在信息的秘密性方面,仍以对称密钥密码体制来达成,但是利用公开密钥密码体制解决其密钥分配问题。

分组密码安全性的一般设计原则:

分组长度n要足够大,以防止对明文的穷搜攻击奏效。
密钥空间K要足够大,以防止对密钥的穷搜攻击奏效。
混乱:要使密文和明文以及密钥之间的依赖关系相当复杂,以至于这种依赖性对密码分析者来说是无法利用的。这即要求密文所依赖于明文和密钥的函数关系是高度非线性的、且处处匀强的。
扩散:要使密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,而且明文的每一位数字也应影响密文的许多位数字以便隐蔽明文数字的统计特性。


典型分组密码介绍
美国数据加密标准(DES)
欧洲国际数据加密算法(IDEA)
美国高级加密标准(AES)

DES使用一个长为56比特的密钥,每次对一个长为64比特的明文组进行加密,得到的密文组长仍为64比特。即M=F264,C= F264,K= F256 。

每个S-盒Si(i=1,2,?,8)均以6bit作为输入、而输出4bit。

用S-盒实现小块的非线性变换,达到混乱目的;
用置换P实现大块的线性变换,达到扩散目的。

DES安全性完全依赖于所用的密钥。

DES的编码过程可使每个密文比特都是所有明文比特和所有密钥比特的复杂混合函数,而要达到这一要求至少需要DES的迭代:5轮。

DES的攻击方法:目前攻击DES的主要方法有时间-空间权衡攻击、差分攻击、线性攻击和相关密钥攻击等方法,在这些攻击方法中,线性攻击方法是最有效的一种方法。


IDEA使用一个长为128比特的密钥,每次对一个长为64比特的明文组进行加密,得到的密文组长仍为64比特。即=F264,C= F264,K= F2128 。

AES评估准则:
?安全性;
?代价;
?算法和实现特性。

典型分组密码介绍——AES
RIJNDAEL使用一个长为32*Nk比特的密钥,每次对一个长为32*Nb比特的明文组进行加密,得到的密文组长仍为32*Nb比特。即M=F232*Nb ,C=F232*Nb,K=F232*Nk。

Hash函数又称为杂凑函数,一般用于对消息进行摘要,这摘要可用于保证消息的完整性和数字签名。


分组密码常见的工作模式:

分组模式
电码本(ECB―Electronic Code Book)模式:对给定的密钥K,集合{(M, C)|C=AESK(M), M?F2128}中一共有2128个明密文对,相当于一个译码本,上述工作模式理论上可按查此译码本的思想实现,故名。
密文分组链接(CBC―Cipher Block Chaining)模式:可见,第i组密文Ci不但与当前的明文组Mi有关,还与前面一组密文Ci-1有关,从而Ci历史地与M1,M2,?,Mi都有关。
CBC模式克服了ECB模式存在的两个缺陷,但该模式有错误扩散。

CBC模式较ECB模式慢、且需要另加存储器和分组的异或运算,但安全性得到加强;原则上两者都适合上述应用:小规格数据组(块)应用ECB、大规格数据组(块)应用CBC 。

序列模式
输出反馈(OFB―Output feedback)模式:
计数器(CTR―Counter Register)模式:
OFB、 CTR模式具有同步序列密码优点:无错误扩散。
密文反馈(CFB―Cipher Feedback)模式:
CFB模式存在有限的错误扩散:当传输的密文块Ci出现1 bit错误时,解密的明文块Mi也有1bit错误。
分组密码的序列应用模式有可能效率较低它们(包括其它序列密码)一般用于数据网中较低层次、且允许有一定延时的系统。
具体地,在字符为单元的加密中多选用CFB模式,如终端―主机或客户端―网络服务器之间的会话加密;而OFB、 CTR模式常用于高度同步的、不容差错传播的系统,如卫星通信中的加密。


加密算法的设计
设计加密算法的思想往往是:构造一个称为某种网络的固定结构,然后以该种网络的若干次迭代来对明文及密钥数据提供必要的混乱和扩散。

一个完整的网络应使每一输入比特经其变换以后都可能使形态改变至少一次。此外,按照Feistel构造中m与n是否相等可把Feistel网络分为平衡与非平衡的。
最基本的要素:S-盒、P-置换、以及结构(轮)函数

S-盒的设计准则:
非线性度
差分均匀性
代数次数及项数分布
完全性和雪崩效应. 称S满足雪崩效应,是指改变其输入的1个比特,大约有一半输出比特改变。
扩散特性
没有陷门

轮函数的设计准则:
安全性.
速度
灵活性.

轮函数的构造方法:
加法、减法和异或
乘法
固定循环/移位
依赖于数据的循环

现有的密码算法的轮函数可以分为两种,
一种是有S-盒的,例如DES、E2、Rijndael等;
另一种是没有S-盒的,例如IDEA、RC6等。

密钥扩展算法的设计
对于一般的迭代分组密码,都有一个由种子密钥生成子密钥的算法,称为密钥扩展算法(又称为密钥扩展方案)。

密钥扩展算法的设计应遵循下面几个准则:
实现简单.
速度.
不存在简单关系
种子密钥的所有比特对每个子密钥比特的影响应大致相同
从一些子密钥比特获得其它的子密钥(或种子密钥)比特在计算上是“难”的.
没有弱密钥.


差分攻击的基本思想是通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特

公钥密码(PKC)
典型PKC介绍
RSA体制
Merkle-Hellman体制
Rabin体制
ElGamal体制
钥基础设施(简称PKI)从概念上讲,PKI就是利用公钥密码理论和技术建立的提供安全服务的基础设施。


在使用公钥密码的系统中,一个用户的公钥是应该传递或广播给其他用户的;但如果只是直截了当地这样做会产生一个被冒充欺骗的问题:
用户C可能向用户B声称自己是用户A而让其得到一个公钥,用户B使用这个自己以为是用户A的公钥、却原来是在跟用户C秘密通信。
——避免被这种欺骗的较好办法是引进公众信任的第三方:签证机关(CA),并由CA颁发由其签名的所谓公钥证书。(当然整个系统建设之初应公开CA所用的一个签名-验证方法)

签证机关(CA) 人们成立一个使用某PKC体制的证书签发中心(公众信任机关)。


一个用户首先向CA提出申请,CA在验明其法性以后予以登记,并给其生成此种PKC算法的一对密钥,其中解密密钥存放到安全介质(如IC卡或USB-Key等)中交给用户妥善保管、而将加密密钥与对应用户的身份号ID一起做成证书发给用户或象电话号码簿一样列表后在一个公共服务器上公布。
(“证书”或“列表”须经CA签名以防伪造!)

一般会话密钥都由KDC来产生。

消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。此时需要通信双方A和B共享一密钥K。设A欲发送给B的消息是M,A首先计算MAC= CK(M) ,其中CK是密钥控制的公开函数;然后向B发送M||MAC,B收到后做与A相同的计算,求得一新MAC,并与收到的MAC做比较

MAC函数与加密算法类似,不同之处为MAC函数不必是可逆的,因此与加密算法相比更不易被攻破。
上述过程中,由于消息本身在发送过程中是明文形式,所以这一过程只提供认证性而未提供保密性。为提供保密性,可在MAC函数以后(后面图(a))或以前(后面图(b))进行一次加密,而且加密密钥也需被收发双方共享。

Hash函数亦称杂凑函数或散列函数,它的作用是:由任意长度的消息形成某一固定长度的消息摘要(Message Digest)。
很多将Hash函数用于构造MAC的方法,HMAC是其中著名的一个hash函数创新性设计思想 —MD4(MD是Message digest一词首字母的缩写)
MD5算法,按512位的分组进行处理,输出(摘要)的长度为128比特
安全Hash算法SHA(128位)1995年4月17日公布了修改后的版本SHA-1(160位)。
SHA-1限定输入消息M的长度|M|<264,也是按512位的分组进行处理,输出(摘要)的长度为160 比特
RIPEMD-160也限定输入消息M的长度|M|<264,且按512位的分组进行处理,输出(摘要)的长度为160 比特。

 

密码学知识点整理