1. 公钥密码学的简要介绍.............................................................................................. 2
2. 公钥密码体制............................................................................................................. 2
3. RSA算法...................................................................................................................... 3
4. Diffie-Hellman密钥交换............................................................................................... 4
5. EIGamal密码体系........................................................................................................ 5
6. 椭圆曲线算术............................................................................................................. 6
7. 密码学Hash函数的应用............................................................................................. 6
8. 密码学Hash函数的需求和安全性.............................................................................. 6
9. SHA-512逻辑............................................................................................................... 7
10. 消息加密................................................................................................................... 7
11. 消息认证码(MAC)................................................................................................ 8
12. 基于Hash函数的MAC:HMAC................................................................................... 8
13. 认证加密:CCM和GCM........................................................................................... 9
14. 论文《快速RSA与AES的工程实现与应用研究》——高岩.................................... 9
14.1信息安全的定义................................................................................................. 9
14.2单钥体制和双钥体制........................................................................................ 10
14.3数字签名........................................................................................................... 10
14.4 AES算法......................................................................................................... 10
14.5素数判断的两种方法........................................................................................ 11
14.6 随机数的产生.................................................................................................. 12
15.论文《RSA的一种改良快速算法》——梁兵........................................................... 12
15.1........................................................................................................................... 12
15. SSL体系结构............................................................................................................ 12
二〇##年十月二十三日星期五
第九章
1. 公钥密码学的简要介绍
非对称密码也称为公钥密码,是一种密码体制,其加密算法和解密算法使用不同的密钥:一个公钥,另一个是私钥。
公钥密码学与其前的密码学完全不同。首先公钥算法是基于数学函数而不是基于代替和置换,更重要的是,与只使用一个密钥的对称密码不同,公钥密码是非对称的,它使用两个独立的密钥。使用两个密钥在消息的保密性,密钥分配和认证领域有着重要的意义。它可以用来保密,认证或者上述两种功能。(要点:数学函数、两个独立的密钥)
2. 公钥密码体制
公钥密码体制有6个组成部分:明文、加密算法、公钥、私钥、密文、解密算法。
图1 公钥密码体制
公钥密码体制的应用可分为三类:
(1)加密/解密:发送方用接受方的公钥对消息加密。
(2)数字签名:发送方用其私钥对消息“签名”。
(3)密钥交换:通信双方交换会话密钥。
在上图的所示的密码体制建立在两个基于相关的密钥的密码算法之上,Diffie和Hellman给出了这些算法应该满足的条件:
(1)B产生一对密钥(公钥PUb,私钥PRb)在计算上是容易的。
(2)已知公钥和要加密的消息M,发送方A产生相应的密文在计算上是容易的:
C=E(PUb,M)
(3)接收方B使用期私钥对接收的密文解密以恢复明文在计算上是容易的:
M=D(PRb,C)=D[PRb,E(PUb,M)]
(4)已知公钥PUb时,攻击者要确定私钥PRb在计算上是不可行的。
(5)已知公钥PUb和密文 C,攻击者要恢复明文M在计算上是不可行的。
下面这个条件很有用但不是所有的公钥密码应用都需要满足的条件。
(6)加密和解密函数的顺序可以交换:
M=D[PUb,E(PRb,M)]=D[PRb,E(PUb,M)]
二〇##年十月二十六日星期一
3. RSA算法
RAS算法使用乘方运算,明文以分组为单位进行加密,每个分组的二进制值均小于n,分组的大小必须小于或等于位,在实际应用中分组的大小是i位,其中。对于明文分组M和密文分组C,加密和解密过程如下:
公钥加密算法的公钥为PU={e,n} , 私钥为PR={d,n } 。
这种算法会用到下列元素:
两个素数p,q (保密的,选定的)
n=pq (公开的,计算得出的)
e满足gcd(,e)=1,1<e< (公开的,选定的)
(保密的,计算得出的)
RSA的安全性
对RAS算法的攻击可能有如下四种方式:
穷举攻击:这种方法试图穷举所有可能的私钥。
数学攻击:试图分解两个素数的乘积,方法有很多种。
计时攻击:依赖于解密算法的运行时间。
选择密文攻击(CCA):利用了RSA算法的性质。
在这个算法中,重要的是需要产生两个大的素数,但是大的素数确定一直是一个难点,最简单、最直观的方法是试除法,用小于n的平方根以下的所有素数去除n,若都除不尽,则n是素数,否则为合数。这种方法对于比较小的数还算适用,在RAS中显然不适用。
二〇##年十月二十七日星期二
第十章
4. Diffie-Hellman密钥交换
该算法的目的是使两个用户能安全地交换密钥,以便在后续的通信中用该密钥对消息加密。该算法本身只限于密钥交换。
算法的表述:
全局公开量 q,α 其中α<q且α是q的本原根
用户A的密钥产生 选择密文的XA XA <q 计算公开的
用户B的密钥产生 选择密文的XB XB<q 计算公开的
用户A计算产生密钥
用户B计算产生密钥
Diffie-Hellman密钥交换的安全性建立在下述事实之上:计算素数模的幂运算相对容易,而计算离散对数却非常困难;对于大素数,求离散对数被认为是不可行的。素数和密钥的选择上对计算的方便(可行性)和安全性也有很大的影响。
下图给出了一种简单的协议使用了这种算法:
这种协议不能抵抗所谓的中间人攻击:理解就是攻击者通过截获交换双方传递过程中的公钥,并发送自己的公钥给对方,实际上是攻击者与交换双方交换了密钥,而非交换双方真正的交换,所以只要交换方传递信息,攻击者就可以对密文进行解密。
二〇##年十月二十八日星期三
5. EIGamal密码体系
举例来说明这种密码体系
q=19,素跟有{2,3,10,13,14,15}我们选择α=10
A生成下列密钥对:
(1)A取XA=5
(2)计算
(3)A的私钥是5,公钥为{q,α,YA}={19,10,3}
假设B将明文M=17发送则
(1)B取k=6
(2)计算
(3)因此
(4)B发送密文(11,5)
解密
(1)A计算
(2)在GF(9)中K-1为7-1mod19=11
(3)最终
注意:在这个算法中XA的取值与Diffie-Hellman不同 1<XA<q-1。
6. 椭圆曲线算术
它们与计算椭圆周长的方程相似,用三次方程来表示:
几何术语定义加法的运算规则:若椭圆曲线上的三个点同在一条直线上则它们的和为O。(O是加法的单位元)O=-O。
(P228)(ECC表示椭圆曲线密码学)
第十一章 密码学Hash函数
一个“好的”Hash具有这样的特点:对于大的输入集合使用该函数,产生的输出结果均匀的分布且看起来随机。
7. 密码学Hash函数的应用
消息认证
数字签名
产生单向的口令文件
入侵检测和病毒检测
用作PRF或PRNG等等
不使用加密函数主要考虑两个因素:速度和成本
二〇##年十月二十九日星期四
8. 密码学Hash函数的需求和安全性
最简单的Hash函数之一,是将每个分组相应位异或(XOR)。可描述为:
当每个n位Hash值出现的概率都相同,或者数据格式不是随机的时候这种方法的有效性是很低的。一种简单的改进方法是,每处理完一个分组后,将Hash值平移一位或循环移位一次。
被广泛认同的密码学Hash函数的安全性需求有:
对于Hash函数的攻击也可分为两类:
穷举攻击:与算法的细节无关,主要依赖于相应的长度。
密码分析:利用算法的某种性质。
9. SHA-512逻辑
算法的输入是最大长度小于2128位的消息,输出是512为的消息摘要,输入的消息以1024为的分组为单位进行处理。主要步骤如下:
(1)附加填充位。长度≡896(mod1024),即使消息已经满足上述长度要求,仍然需要
进行填充为什么?,因此填充位数在1-1024之间,填充由一个1和后续的0组成。
(2)附加长度。在消息后附加一个128位的块。
(3)初始化Hash缓冲区。中间结果和最终结构保存在512位的缓冲区中,缓冲区用8
个64为寄存器(a、b、c、d、e、f、g、h)表示,并将这些寄存器初始化为下列
64位整数(16进制值):
(4)以1024位的分组(128个字节)为单位处理消息。
(5)输出。
P251有一个具体的例子
二〇##年十月三十日星期五
第十二章 消息认证码(MAC)
消息认证就是验证接受的消息确实来自真正的发送方,而且是没有被修改过的,它可验证消息的顺序和及时性。
10. 消息加密
(1)对称加密:保密性和认证(要求明文具有某种易于识别的结构,并且通过加密函数是
不能够重复的这种结构。)
(2)公钥加密:保密性。(A用B的公钥加密,B用私钥解密)
保密性和认证。(A用A的私钥加密,B用A的公钥解密)(事实上保密性
存在缺陷)
11. 消息认证码(MAC)
消息验证码是一种认证技术,它利用密钥来生产一个固定长度的短数据块,并将该数据块附加在消息之后。它是消息和密钥的函数:
MAC=C(K,M)
其中C是MAC函数,消息和MAC一起被发送给接收方。接收方接到的消息用相同的密钥K进行相同的计算,得出新的MAC,将这两个MAC进行比较,我们假设只有双方知道密钥,若相等,则:
(1)接收方可以相信消息未被修改。
(2)接收方可以相信消息来自真正的发送方。
(3)如果消息中含有序列号(例HDLC、X.25和TCP中使用的序列号),那么接收方可
以相信消息顺序是正确的,因为攻击者无法成功的修改序列号。
不明白(3)为什么单独列出,(1)已经包含(3)的意思?
注意:由于接收双方共享密钥,所以MAC不能提供数字签名。一般MAC函数是多对一函数,
所以想要用穷举方法攻击(需要知道<消息—MAC>对)不是一件容易的事情。
MAC函数应满足的要求。假设攻击者知道MAC函数,但不知道K,那么MAC函数应该具有下列的性质:
12. 基于Hash函数的MAC:HMAC
原因:
(1)一般像MD5和SHA这样的密码学Hash函数,其软件执行速度比诸如DES这样
的分组密码要快。
(2)有许多共享的密钥学Hash函数代码库。
RFC 2014是最受支持的方案,并给出了HMAC的设计目标:
·不必修改而直接使用现有的Hash函数。
· 如果找到或需要更快或更安全的Hash函数,应该很容易替代原来嵌入的Hash函数。
·应该保持Hash函数原有性能,不能过分降低它的性能。
·对密钥的使用和处理应较简单。
·如果已知嵌入的Hash函数的强度,则完全可以知道认证机制抗密码分析的强度。(优
于其他Hash函数的原因,有安全性)
算法结构和算法描述如下:
二〇##年十一月一日星期日
13. 认证加密:CCM和GCM
认证加密(AE)是指在通信中同时提供保密性和认证(完整性)的加密系统。
通用方案:
(1)HtE:先Hash再加密。h=H(M),消息和Hash值一起加密:E(K,(M||h))。
(2)MtE:先MAC再加密。使用两个密钥,T=MAC(K1,M),将消息和MAC一起加密:
E(K2,(M||T))。(先解密,后验证)
(3)EtM:先加密再MAC。使用两个密钥,C=E(K2,M), T=MAC(K1,C)并考察(C,T)
对明文进行验证。(先验证,后解密)
(4)E&M:加密并且MAC。使用两个密钥,C=E(K2,M), T=MAC(K1,C)并考察(C,T)
对明文进行验证。这两个步骤的先后顺序可以交换。(先解密,后验证)
EtM与E&M的区别是计算顺序问题,后一个可以交换计算顺序。
14. 论文《快速RSA与AES的工程实现与应用研究》——高岩
这篇论文对书中的部分内容进行了大概的总结。
14.1信息安全的定义
通俗的说,信息安全主要指保护计算机的网络信息系统,使其没有危险,不受威胁,不出事故,从技术角度来说,它的技术特征主要表现在:
(1)可靠性。可靠性=平均故障间隔时间/(平均故障时间+平均故障修复时间)
可以通过增大间隔时间和减小修复时间来提高可靠性。
(2)可用性。
(3)保密性。
(4)完整性。保证完整性的方法:协议、纠错编码方法、密码校验和方法、数字签名、
公证。
(5)不可抵赖性。
(6)可控性。
14.2单钥体制和双钥体制
(1)单钥体制:最有影响的是DES算法。
优点:安全性高、加密速度快。
缺点:随着网络规模的扩大,密钥的管理成为一个难题。
无法解决消息确认问题。
缺乏自动检测密钥泄露的能力。
(2)双密钥体制:
优点:不存在密钥管理问题、可以拥有数字签名等功能。
缺点:算法一般比较复杂、加密速度慢。
通常采用混合加密的体制,即加密是采用单钥加密,密钥传送采用双钥。
14.3数字签名
数字签名是一种认证机制,它使得消息的产生者可以添加一个起签名作用的码字。保证了消息的来源和完整性。(书中283页 第13章)发送方和接收方采用的都是公开密钥密码体制。
必须具有下列特征:
它必须能够验证签名者、签名日期和时间;
它必须能认证被签的消息内容;
签名应能由第三方仲裁,以解决争执。
签名方案一般包括的三个过程:
系统的初始化过程、签名产生过程、签名认证过程。
二〇##年十一月二日星期一
14.4 AES算法
对于AES算法来说,特定的不可约多项式为。对系数在GF(28)中的多项式乘法,定义为多项式相乘后在模多项式x4+1。在它的加解密算法中,对密钥的选择没有任何限制。
AES算法是一个迭代分组密码,其分组长度和密钥长度都是可变的,都可以独立的指定为128bits、192bits、256bits。当分组长度为128bits时,密钥长度为128/192/256bits,相应的圈数为10/12/14。
AES算法的加密过程用伪C代码(是一种算法描述语言。使用伪码的目的是使被描述的算法可以容易地以任何一种编程语言实现,是部分英语和部分结构化代码的组合)可写为:
State为状态,是个变换过程中的密码结果。可以用字节的一个行数为4,列数为Nb的矩阵阵列图表示,它等于分组长度除以32。CipherKey称为密码密钥,密钥的列数为Nk,它的长度等于密钥长度除以32。Nr表示圈数,它的大小与Nb和Nk有关,见下表:
Round过程称为圈变换,它由四个不同变换组成,见下:
ByteSub过程称为字节代替变换,是一个非线性的字节代替,它独立的在每个状态字节上进行运算。
AES采用的是代替/置换的方法,每一轮由3层组成:(1)线性混合层,确保多轮之上的高度扩散;(2)非线性层,由16个S盒并置而成,起到混合的作用;(3)密钥加层,子密钥简单地异或到中间状态上。
14.5素数判断的两种方法
1.Solovay-Strassen素数测试算法
设n是一个正奇数,则:
(1)选择一个随机整数a,;
(2)计算gcd(a,n);
(3)若gcd{a,n}的值不为1,则n非素数;
(4)计算(a/n)及a(n-1)/2mod n;
(5)若,则n可能是素数,否则n为合数。
2.Miller Rabin 素数测试算法
令,其中是非负整数,m是正奇数,若存在正整数a,使得或对某个非负整数,则称n关于a通过Miller检测。可以通过费马定理判断,费马定理是必要条件。
二〇##年十一月三日星期二
14.6 随机数的产生
随机数在加密用于网络安全应用中扮演着重要的角色,真正的随机数序列应该满足:
随机程度:通常通过均匀分布和独立性进行验证
不可预测程度:要求序列的后续数是不可预测的。
不能重复产生:即使两次输入相同,也会产生两个不相关的随机数列。
最广泛的伪随机数产生用线性同余的方法,
一个随机数产生器的好坏用下面的三个准则来评价:
(1)这个函数应该是一个完整的周期性函数。
(2)产生的序列应该看起来是随机的。
(3)这个函数应该用32bytes算法高效实现。
二〇##年十一月六日星期五
15.论文《RSA的一种改良快速算法》——梁兵
15.1公钥密码体制
典型代表是RSA密码体制,根据对明文的划分和密钥的使用方法不同可将密码体制划分为:
(1)分组密码:是将明文M划分为一系列的明文快,通常每块包含若干个字符,并且对每一块都用同一密钥加密.
(2)序列密码:将M分为一系列字符或位,m1,m2......并且对于这每一个mi用密钥序列k1=(k11,k12,,.....k1n)的第i个分量k1i来加密。
分组密码一次加密一个明文块,而序列密码一次加密一个字符或一个位。
15.2几种古典密码
(1)Kaiser密码:将每个字母向前推移K位。若将26个字母分别对应于整数0~25,则次加密变换实际上是:C=m+Kmod26。
(2)Vigenere密码:设密钥k=k1k2.....kn,明文M=m1m2.......mn.加密变换Ek(m)=C1C2....Cn,其中Ci=(mi+ki)mod 26,i=1,2,.....,n.
(3)Verman密码:也称代数密码,它是将明文和密钥都化为二进制数码,(0或1)
(4)Playfair密码:密钥是一个五乘五矩阵(J当做I处理)。注意两个密文所在的不同位置有不同的密文的取法,还有若明文字母数为奇数,将空字母Q加在明文末端。
(5)Hill密码:将一个明文字母通过线性变换转化为一个密文字母,解密只要做一次逆变换就可以了。
二〇##年十一月九日星期一
第十六章 传输层安全
16.SSL体系结构
SSL为TCP提供可靠的端到端的安全服务,不是单个协议而是两层协议。
SSL中包含两个重要的概念,SSL会话和SSL连接:
会话:是一个客户端和服务器间的关联,会话是通过握手协议创建的,定义了一组多个连接共享的密码安全参数。会话可用于减少每次连接建立安全参数的昂贵协议费用。
连接:连接是提供合适服务类型的一种传输(OSI层次模型定义)。对SSL来说,连接表示的是对等网络关系,且连接是短暂的,每个连接与一个会话相关。
一个会话状态由以下参数定义:会话标志、对等实体证书、压缩方法、密码规范、主密钥、可恢复性。
连接状态可由以下参数定义:服务器和客户端随机数、服务器写MAC密码、客户端写MAC密码、服务器写密码、客户端写密码、初始化向量、序列号。