认证 (authentication)
非否认性(nonrepudiation)-不可抵赖性
保密性(privacy)
数据完整性(data integrity)
计算机网络上的通信面临以下的四种威胁:
(1) 截获——从网络上窃听他人的通信内容。
(2) 中断——有意中断他人在网络上的通信。
(3) 篡改——故意篡改网络上传送的报文。
(4) 伪造——伪造信息在网络上传送。
截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动攻击。
分组密码一次处理一个数据分组,如DES每次加密64bit消息,AES每次可加密128bit消息。
分组密码工作模式:
亦即电子码本模式,是最简单的模式,直接利用加密算法分别对分组数据组加密。
如明文分成64比特的分组进行加密,必要时进行填充,每个分组用同一密钥加密。
同样的明文分组得到相同的密文。当明文长度过长时,ECB模式可能不安全。
ECB模式的特性:
(1)ECB运行模式在给定的密钥下,同一明文组总产生同样的密文组。
(2)不具有链接依赖性,各组的加密独立于其它分组,重排密文分组,将导致相应的明文分组重排。
(3)具有无错误传播的特点,单个密文分组中有一个或多个比特错误只会影响该分组的解密结果。
(4)安全性有限。由于同一明文产生同样的密文,这会暴露明文数据的格式和统计特征。特别是若明文数据都有固定的格式(例如图像),并需要以协议的形式定义,那么重要的数据常常在同一位置上出现,使密码分析者可以对其进行统计分析、重传和代换攻击。因此当消息长度超过一个组或者重复使用密钥加密多个单组消息时,不建议使用ECB模式。
CBC(Cipher Block Chaining)模式亦即密码分组链接模式,比ECB模式实现复杂、更安全,因此它是最普遍使用的对称密码运行模式。
CBC模式中加密过程第一个明文分组与初始矢量IV(Initial Vector)进行异或,而后面的明文分组和前一密文分组也做异或运算,再使用相同的密钥送至加密算法加密,形成一条链。
特点:
1. CBC模式产生的密文分组不仅与当前明文分组有关,还与以前的密文分组有关。
2. 当密文的第j个分组Cj在传输中被篡改时,接收方在解密时无法正确解密Pj和Pj+1,即CBC具有错误传播性。
3. 当信道噪音等干扰带来密文传输错误时,密文中一个位的错误将影响当前分组以及下一分组的解密。
CFB模式能将任意分组密码转化为流密码,因此不需要将消息填充为分组的整数倍。
设传送的每个单元(如一个字符)是j比特长,通常取j=8,与CBC模式一样,明文单元被链接在一起,使得密文依赖是前面所有的明文。
CFB模式的特性如下:
(1)输入相同明文,改变IV会导致相同的明文输入得到不同的加密输出,IV无需保密。若待加密消息必须按字符(如电传电报)或按比特处理时,可采用CFB模式。CFB实际上是将加密算法DES作为一个密钥流产生器,因此操作模式使得我们能把分组密码定义为流密码。另外,CFB模式除能获得保密性外,还能用于认证。
(2)CFB与CBC的区别是反馈的密文长度为j,且不是直接与明文相加,而是反馈至密钥产生器。解密采用相同方案,但是使用加密函数而非解密函数。密文分组Cj依赖于Pj和前面的明文分组。
Output-Feedback
在OFB模式中,密码算法的输出会反馈到密码算法的输入中。
OFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”的。
OFB模式需要使用初始化向量(IV)。一般来讲,我们需要在每次加密时生成一个不同的随机比特序列用作初始化向量。
区别仅仅在于密码算法的输入
CFB模式中,密码算法的输入是前一个密文分组,也就是将密文分组反馈到密码算法中,因此有了“密文反馈算法”这个名字。
OFB模式中,密码算法的输入则是密码算法前一个输出,也就是将输出反馈给密码算法,因此就有了“输出反馈模式”这个名字。
CTR(Counter)模式也可将分组密码转换为流密码,使用与明文分组规则相同的计数器长度产生密钥流,与明文分组进行异或。
加密不同的分组所使用的计数器值必须不同,解密采用相同方案,但是使用加密函数而非解密函数。
CTR模式的特性:
(1)CTR模式能够对多个分组的加、解密进行并行处理,进行异或之前的基本加密处理不依赖明文和密文的输入。
(2)CTR模式可以看做是CFB模式的一种简化,它使用计数器来更新输入分组,而不是反馈。
(3)不同于ECB和CBC模式,CTR模式只要求实现加密算法,不要求实现解密算法。
将字符分别与密钥流加密,解密时以同步产生相同的密钥流,其核心问题是密钥流生成器的设计。收发两端密钥的精确同步;
特点:快/RC4/30行代码行/管理密钥困难/数
据包传输、SSL。
非对称加密算法:
非对称加密: 公钥加密,私钥解密;
数字签名:私钥加密,公钥解密;
公钥加密可用于信息分发,私钥加密可用于数字签名。
数字签名的2条假设:
私钥是安全的,只有拥有者获得;
产生数字签名的唯一途径是私钥。
消息摘要(HASH):
消息摘要的特性:
碰撞:如果不同的2个信息产生了相同的HASH那么就是一次碰撞。
碰撞是存在的,没有人能按照要求找到一个碰撞。甚至没人发现过碰撞,即使意外也没有。
重要的HASH算法:
带密钥的摘要HMAC:
HMAC:
检验和
运作: SHA-1对“密钥||消息”计算 得到摘要。双方采用同一个密钥,各自将消息和密钥放在一起计算摘要,攻击者必须知道密钥才能改变消息并附以正确的检验和
挑战认证机制
安全的数字签名:先hash求数据的表示,然后RSA私钥加密摘要,但是由于结果可由自己的公钥解密,所以不能保密原文。
群签名:
所谓群签名(group signature)就是满足这样要求的签名:在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,而且可以只用单个群公钥来验证。也可以作为群标志来展示群的主要用途,种类等
应用:比如在公共资源的管理,重要军事情报的签发,重要领导人的选举,电子商务重要新闻的发布,金融合同的签署等事务中,群签名都可以发挥重要作用。比如群签名在电子现金系统中可以有下面的应用:可以利用群盲签名来构造有多个银行参与与发行电子货币的、匿名的、不可跟踪的电子现金系统。在这样的方案中有许多银行参与这个电子现金系统,每一个银行都可以安全的发行电子货币。这些银行形成一个群体受中央银行的控制,中央银行担当了群管理员的角色。
目前群盲签名方案效率不高,这样的电子现金系统离现实应用还有一段距离,因此研究高效的群签名方案,对于实现这样的系统具有重要意义。群签名方案的研究目前是数字签名研究的一个热点
群签名流程:
(1)初始化群管理者建立群资源,生成对应的群公钥(Group Public Key)和群私钥(Group Private Key)群公钥对整个系统中的所有用户公开,比如群成员、验证者等。
(2)成员加入在用户加入群的时候,群管理者颁发群证书(Group Certificate)给群成员。
(3)签名群成员利用获得的群证书签署文件,生成群签名。
(4)验证同时验证者利用群公钥仅可以验证所得群签名的正确性,但不能确定群中的正式签署者。
(5)打开群管理者利用群私钥群用户生成的群签名进行追踪,并暴露签署者身份。
公钥传输不可认证的问题;大量分发公钥的问题。解决办法:公钥证书。第三方实体——证书颁发机构。PKI和X.509
判断一个公钥是否属于一个人的最常用方法是数字证书
获得证书的方式:推模型和拉模型。
管理密钥对:
PKI的未来: