一、信息系统安全包括四个侧面:设备安全,数据安全,内容安全,行为安全。
设备安全:是指确保信息设备的稳定性、可靠性和可用性,这里的设备包括软件和硬件。
数据安全:包括数据的秘密性、数据的真实性和数据的完整性3个侧面。
行为安全:包括行为秘密性、行为完整性和行为可控性3个侧面。
二、密码技术的基本思想是伪装信息,伪装就是对数据施加一种可逆的数学变换。
三、密码体制,由5部分组成:
①明文空间M,它是全体明文的集合。
②密文空间C,它是全体密文的集合。
③密钥空间K,它是全体密钥的集合。其中一个密钥K均由加密密钥Ke和解密密钥Kd组成,即K=。 ④加密算法E,它是一族由M到C的加密变换。
⑤解密算法D,它是一族由C到M的解密变换。
如果一个密码体制的Kd=Ke,或由其中一个很难推出另外一个,则称为(单密钥密码体制)或则传统传统密码体制,否则称为(双密钥密码体制)。如果在计算上Kd不能由Ke推出,这样将Ke公开也不会损害Kd的安全,于是便可将Ke公开,这种密码体制称为公开密钥密码体制,简称(公钥密码体制)。
四、密码体制分类:
①根据明密文的划分和密钥的使用不同,可将密码体制分为分组密码和序列密码体制。
分组密码:将明文M划分为一系列的明文块Mi,通常每块包含若干位或字符,所有明文块Mi使用同一个密钥Ke进行加密。
序列密码:将明文和密钥都划分为位或字符的序列,并对明文序列中每一位或字符都用密钥序列中对应的分量来加密。
②根据加密算法在使用过程中是否变化,将密码体制分为固定算法密码体制和演化算法密码体制。
五、密码分析:
1、攻击密码的方法主要有以下三种:
①穷举攻击(最基本攻击) ②统计分析攻击 ③数学分析攻击
2、根据密码分析者可利用的数据资源来分类,可将攻击密码的类型分为4种:
①仅知密文攻击(对分析者最不利的情况)
②已知明文攻击:已经知道某些明文----密文对来破译密码,一个密码仅当它能经得起已知明文攻击时才是可取的。
③选择明文攻击:分析者能够选择明文并获得相应的密文,这是对密码分析者十分有利的情况。
④选择密文攻击:能选择密文并获得相应的明文,这也是十分有利的情况,这种攻击主要攻击公开密钥密码体制,特别是攻击其数字签名。
六、分组密码
1、数据加密标准(DES)(1977~1998年),用于加密保护静态存储和传输信道中的数据
DES综合运用置换、代替、代数等多种密码技术; DES是面向二进制的密码算法,因而能够加密任何形式的计算机数据; 其明文、密文。密钥的分组长度都是64位; DES是对合运算,因而加密和解密共用同一算法,从而使工程量减半。
注:①64位密钥经子密钥产生算法产生出16个48位的子密钥供16次加密迭代使用。 ②初始置换IP是DES的第一步密码变换。③加密函数是DES的核心部分,加密函数里有代替函数组S(其由8个代替函数也称S盒组成),S盒有6位输入,产生4位输出。 ③S盒是DES保密性的关键所在,它是一种非线性变换,也是DES中唯一的非线性运算。 ④可逆性是对称密码算法的基本要求,对合性可使密码算法实现的工作量减半。
DES加密Li = Ri-1; Ri = Li-1⊕f(Ri-1,Ki); i=1,2,3,…16
DES解密Ri-1= Li; Li-1=Ri⊕f(Li,Ki); i=16,15,14,…1
DES的安全性:
①对于其设计目标DES是安全的。S盒和置换P互相配合,形成了很强的抗差分攻击和抗线性攻击能力,DES作为商用密码,用于其设计目标是安全的。
②存在安全弱点:密钥较短,只有56位; 存在弱密钥和半弱密钥,存在一些密钥所产生的16个子密钥不是互不相同的,而是有相重的; 存在互补对称性。
2、3DES(1999年~),既可以使用3个密钥,也可以使用2个密钥
三个显著优点:①密钥长度168位,完全能够抵抗穷举攻击; ②相当安全,而且经过实践检验; ③3DES地层加密算法与DES相同,所以现有的DES软硬件都能方便地实现3DES。
3DES根本缺点是软件实现该算法的速度比较慢。
3、密钥托管加密标准(EES)(1994年~1997年,只将其用于语音通信加密)
①不公布加密算法,推出CLIPPER密码芯片,其密码算法称为SKIPJACK(属于分组密码,明文和密文长度为64位,密钥长度为80位,子密钥长32位,采用轮函数迭代结构,共迭代32圈
②SKIPJACK算法不是对合算法,所以加密和解密过程不一样。其S盒输入和输出都是8位,只有1个S盒。
③子密钥生成算法,非常简单,把单元密码UK(80位)重复连接,然后依次取32位为一个子密钥,直到取出32个子密钥为止。由于UK为80位,而子密钥32位,故取出5个子密钥后,第6个子密钥将开始重复。
④安全性:其密钥空间为280≈1.2* 1024,可以抵抗穷举攻击,其抗差分攻击线性攻击的能力也很强,但生成密钥算法过于简单,这对安全是不利的。其算法不是对合运算,这都工程实现都是不利的。
4、国际数据加密算法(IDEA)(1990年提出)
①用于Internet的E-mail加密系统PGP和许多其他加密系统中。
②分组算法,明文和密文长度为64位,密钥长度为128位; 对合算法; 易于实现,用软件和硬件实现都很方便。
③产生52个子密钥。
④安全性:密钥长度为128位,穷举需要试探2128≈1038个密钥; 能抗差分和线性攻击; 存在弱密钥; IDEA是为了方便16位CPU实现设计的,32位CPU实现不太方便。
5、高级数据加密标准(AES)(2001年~)
RIJNDAEL加密算法:
①数据块长度和密钥长度都可变的分组加密算法,两长度可独立地选定为大于等于128且小于等于256位的32位的任意倍数
②RIJNDAEL的轮函数由三层组成:非线性层;线性混合层;密钥加层
③状态:加密解密要经过多次数据变换操作,每一次变换操作产生一个中间结果,称这个中间结果叫做状态。各种不同的密码变换都是对状态进行的。把状态表示为二维字节数组(每个元素为一个字节),它有4行,Nb列。Nb等于数据块长度除以32。
④算法的实现:实现容易是RIJNDAEL算法的一个优点,它可以灵活地用8位CPU,32位CPU以及专用硬件芯片实现。
⑤S盒的实现:实现S盒运算的最快方法是,直接计算出S盒的变化结果,并存储造表,使用时直接查表,因为ByteSub变换是字节函数,所以表的规模不大,只有256个字节。
6、KASUMI密码
①f8用于加密,f9用于完整性验证
②三条原则:安全性要有足够的数学基础; 算法的软件实现要足够快; 算法的硬件实现要电路简单、功耗低。
③S盒:S9是9位输入到9位输出的非线性变换,S7是7位输入到7位输出的非线性变换。
7、中国商用密码算法(SMS4)
①对合运算,数据分组长度为128比特,,密钥长度为128比特。
②S盒:S盒以字节为单位的非线性替代变换,其密码学作用在于起到混淆作用。S盒的输入输出都是8位的字节。它本质上是8位的非线性置换。
③加密算法:采用32轮迭代结构,每轮使用一个轮密钥。
④SMS4的安全性:SMS4主要密码部件S盒设计得相当好。在非线性度、自相关性、差分均匀性、代数免疫性等主要密码学指标方面都达到相当高的水平,与AES的S盒相当。
七、分组密钥的工作模式
1、电话本模式ECB
直接利用分组密码对明文进行加密。电话本方式是分组密码的基本工作模式。
ECB的一个缺点是要求数据的长度是密码分组长度的整数倍,否则最后一个数据块是短块,这是需要特殊处理,ECB方式的另一个缺点是容易暴露明文的数据模式。
在计算机系统中,许多数据都具有某种固有的模式。这主要是由数据冗余和数据结构引起的。
掩盖明文数据模式的有效方法有采用某种预处理技术和链接技术。
下面介绍分组密码的链接工作模式
2、密文连接模式CBC
明密文链接方式具有加解密错误传播无界的特征,而磁盘文件加密通常希望解密错误传播有界,这时可以采用密文链接方式。明文不参与链接,只让密文参与链接,便成了密文链接方式。
与ECB一样,CBC的一个缺点也是要求数据长度是密码分组长度的整数倍,否则最后一个数据块将是短块,这时需要特殊处理。
3、输出反馈模式OFB
输出反馈工作模式将一个分组密码转换为一个密钥序列产生器,从而实现用分组函数密码按流密码的方式进行加解密。这种工作模式的安全性取决于分组密码本身的安全性。
这种工作模式将一个分组密码转换为一个序列密码。它具有普通序列密码的优缺点,如没有错误传播。设加密时mi错了一位,则只影响密文中对应的一位,不影响其他位。同样,设解密时ci错了一位,则只影响明文中对应的一位,不影响其他位。
输出反馈工作模式适于加密冗余码较大的数据,如语音和图像数据,但因无错误传播而对密文的更改难以检测。
4、密文反馈模式CFB
密文反馈工作模式的原理与输出反馈的工作原理基本相同,所不同的仅仅是反馈到移位寄存器R的不是E输出中的最右的S位,而是异或后的密文Ci的S位。
密文反馈工作模式的错误传播情况与输出反馈工作模式不同。加密时若明文mi错了一位,则影响密文Ci错,这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的密文都错。同样,解密时若密文Ci错了一位,则影响明文mi错,但密文的这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的明文都错。
八、序列密码
“一次一密”密码在理论上是不可破译的这一事实使人们感觉到,如果能以某种方式仿效“一次一密”密码,则将可以得到保密性很高的密码。人们试图以序列密码方式效仿“一次一密”密码,从而促进序列密码的研究和发展。
序列密码应使用尽可能长的密钥,而长的密钥的存储、分配都很困难。于是人们采用一个短的种子密钥来控制某种算法产生出长的密钥序列,供加解密使用,而短的种子密钥的存储、分配都比较容易。
序列密码加密器采用简单的模2加法器,这使得序列密码的工程实现十分方便。于是,序列密码的关
键就是产生密钥序列的算法。密钥序列产生算法能产生随机性和不可预知性很好的密钥序列。保持通信双方的精准同步是序列密码实际应用的关键技术。由于通信双方必须产生相同的密钥序列,所以这种密钥序列不可能是真随机序列,而是伪随机序列,只不过具有良好的随机性和不可预知性的伪随机序列。
如果密钥序列产生算法与明文(密文)无关,则所产生的密钥序列也与明文(密文)无关,这类密码称为同步序列密码。只要通信双方的密钥序列产生器具有相同的种子密钥和相同的初始状态,就能产生相同的密钥序列。(优点就是没有错误传播,错误只影响相应字符的解密,不影响其他字符,输出反馈工作模式)
如果密钥序列产生算法与明文(密文)相关,则所产生的密钥序列也与明文(密文)相关,这类密码称为自同步序列密码。(密文反馈工作模式)
九、线性/非线性序列密码
线性移位寄存器序列密码在已知明文攻击下是可破译的,可破译的根本原因在于线性移位寄存器序列是线性的,这一事实促使人们向非线性领域探究。
非线性移位寄存器序列、对线性移位寄存器进行线性组合、钟控非线性序列。
前面的都是传统密码,下面开始讨论公开密钥密码
十、公开密钥密码
①密钥管理上的困难是传统密码应用的主要障碍
②基本思想是将传统密码的密钥一分为二
③要满足三个条件:解密算法D和加密算法E互逆,既有D( E(M,Ke) , Kd )=M; 计算上不能由Ke求出Kd; 算法D和E都是高效的
④所有用户的公开的加密钥Ke存入共享密钥库PKDB。KeA,KeB
⑤目前公认比较安全的公开密钥密码有基于大合数因子分解的困难性的RSA密码类和基于离散对数问题困难性的ELGamal密码类(包括椭圆曲线密码)
⑥RSA算法的实现技术:RSA算法通俗易懂但其工程实现却相当困难,其困难性主要在于大素数的产生和大数的模幂运算。在目前水平采用160~200位的椭圆曲线,其安全性就够了。
⑦ELGamal密码:离散对数问题是目前公认的较好的单向函数
⑧ELGamal密码的应用:加、解密速度,由于其运算的数比RSA要小,所以速度比RSA稍快; 随机数源; 大素数的选择,p应为150位(十进制)以上的数,而且p-1应有大素因子。理想情况下应选p为强素数,p-1=2q,其中q为大素数。
⑨160位长的椭圆曲线密码的安全性相当于1024位的RSA密码
十一、数字签名(公开算法)
中国国家签名标准(GB15851-1995)
美国国家数字签名标准(DSS,1994年~)
俄罗斯数字签名标准(GOST)
1、完善的数字签名三个条件:①签名者事后不能抵赖自己的签名; ②任何其他人不能伪造签名; ③当事双方的关于签名的真伪发生争执时,能在公正的仲裁者面前通过验证签名来确认其真伪。
2、概念:
①数字签名利用密码技术进行,其安全性取决于密码体制以及协议的安全程度,因而可获得比书面签名更高的安全性。
②公开密钥密码效率比较低,主要用于数字签名,或用于保护传统密码的密钥。
③利用公开密钥实现数字签名非常方便,是公开密钥深受欢迎的主要原因。
④不可否认签名与普通数字签名最本质的不同在于,对于不可否认签名,在得不到签名者的配合的情况下
不能进行签名验证。
3、对RSA数字签名的攻击
一般攻击; 利用已有的签名进行攻击; 利用签名进行攻击获得明文; 对先加密后签名方案的攻击
4、盲签名与普通签名对比:
①(盲性)签名者不知道所签署的数据内容 ②(不可追踪性)即使在签名被接收者泄漏后,签名者也不能知道签名数据,不能追踪自己签名的数据的拥有者。
十二、Hash函数
1、Hash函数将任意长的数据M映射为定长的Hash码h,表示为h = H(M)
Hash码也称数据摘要,它是所有数据位的函数,它具有错误检测功能,即改变数据的任何一位或则多位,都会导致Hash函数码的改变。
2、基本性质:
①输入可以任意长
②输出固定长,多数情况下输入长度大于输出长度
③有效性:对于给定的输入M,计算h=H(M)的运算是高效的
3、基本用途
①用于认证 ②~和保密 ③~和数字签名 ④~和保密性和数字签名
4、安全性
①单向性:对任何给定的Hash函数值h,找到满足H(x)=h的x在计算上是不可行的。
②抗弱碰撞性:对任何给定的数据x,找到满足y≠x且H(x)=H(y)的y在计算上是不可行的。
③抗强碰撞性:找到任何满足H(x)=H(y)的数偶(x,y)在计算上是不可行的。
5、Hash函数结构:是一种迭代结构,Hash函数是建立在压缩函数的基础上的。
(SHA-1、SHA-2[ SHA-256/SHA-384/SHA-512 ])
十三、认证
1、概念:
①认证又称鉴别,确认,它是认证某事是否名符其实、某事是否有效的一个过程。认证的基本思想是通过验证称谓者(人或事)的一个或多个参数的真实性和有效性,来达到验证称谓者是否名符其实的目的。 ②加密用以确保数据的保密性;认证用以确保报文发送者和接收者的真实性、以及报文的完整性。 ③认证往往是许多应用系统中安全保护的第一道防线,因而极其重要。
2、认证和签名的区别:
①认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性,而数字签名中用于验证签名的数据是公开的。
②认证允许收发双方互相验证其真实性,不允许第三方验证,而数字签名允许收发双方和第三者都能验证。 ③数字签名具有发送方不能抵赖、接收方不能伪造和具有在公证人前解决纠纷的能力,而认证则不一定具备。
3、密码协议三层含义:
①协议是一个有序的执行过程。每一步都必须执行,而且是依序进行的。随意增加或减少执行步骤或改变执行步骤的顺序,都是对协议的修改或攻击。
②协议至少要有两个参与者。虽然一个人可以通过执行一系列步骤来完成某种任务,但不构成协议。 ③协议的执行必须能完成某种任务。
4、密码协议设计原则
①消息独立完整性原则 ②消息前提准确原则 ③主体身份标识原则 ④加密目的原则 ⑤签名原则 ⑥随机数的使用原则 ⑦时间戳的使用原则 ⑧编码原则 ⑨最少安全假设原则
不能进行签名验证。
3、对RSA数字签名的攻击
一般攻击; 利用已有的签名进行攻击; 利用签名进行攻击获得明文; 对先加密后签名方案的攻击
4、盲签名与普通签名对比:
①(盲性)签名者不知道所签署的数据内容 ②(不可追踪性)即使在签名被接收者泄漏后,签名者也不能知道签名数据,不能追踪自己签名的数据的拥有者。
十二、Hash函数
1、Hash函数将任意长的数据M映射为定长的Hash码h,表示为h = H(M)
Hash码也称数据摘要,它是所有数据位的函数,它具有错误检测功能,即改变数据的任何一位或则多位,都会导致Hash函数码的改变。
2、基本性质:
①输入可以任意长
②输出固定长,多数情况下输入长度大于输出长度
③有效性:对于给定的输入M,计算h=H(M)的运算是高效的
3、基本用途
①用于认证 ②~和保密 ③~和数字签名 ④~和保密性和数字签名
4、安全性
①单向性:对任何给定的Hash函数值h,找到满足H(x)=h的x在计算上是不可行的。
②抗弱碰撞性:对任何给定的数据x,找到满足y≠x且H(x)=H(y)的y在计算上是不可行的。
③抗强碰撞性:找到任何满足H(x)=H(y)的数偶(x,y)在计算上是不可行的。
5、Hash函数结构:是一种迭代结构,Hash函数是建立在压缩函数的基础上的。
(SHA-1、SHA-2[ SHA-256/SHA-384/SHA-512 ])
十三、认证
1、概念:
①认证又称鉴别,确认,它是认证某事是否名符其实、某事是否有效的一个过程。认证的基本思想是通过验证称谓者(人或事)的一个或多个参数的真实性和有效性,来达到验证称谓者是否名符其实的目的。 ②加密用以确保数据的保密性;认证用以确保报文发送者和接收者的真实性、以及报文的完整性。 ③认证往往是许多应用系统中安全保护的第一道防线,因而极其重要。
2、认证和签名的区别:
①认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性,而数字签名中用于验证签名的数据是公开的。
②认证允许收发双方互相验证其真实性,不允许第三方验证,而数字签名允许收发双方和第三者都能验证。 ③数字签名具有发送方不能抵赖、接收方不能伪造和具有在公证人前解决纠纷的能力,而认证则不一定具备。
3、密码协议三层含义:
①协议是一个有序的执行过程。每一步都必须执行,而且是依序进行的。随意增加或减少执行步骤或改变执行步骤的顺序,都是对协议的修改或攻击。
②协议至少要有两个参与者。虽然一个人可以通过执行一系列步骤来完成某种任务,但不构成协议。 ③协议的执行必须能完成某种任务。
4、密码协议设计原则
①消息独立完整性原则 ②消息前提准确原则 ③主体身份标识原则 ④加密目的原则 ⑤签名原则 ⑥随机数的使用原则 ⑦时间戳的使用原则 ⑧编码原则 ⑨最少安全假设原则
5、口令验证机制存在问题:
①攻击者可能从口令表获取用户口令
②攻击者可能在传输线路上截取用户口令
③用户和系统的地位不平等
6、改进的口令机制:
①利用单向函数加密口令; ②利用数字签名方法验证口令; ③口令的双向验证; ④一次性口令
7、站点认证:
单向验证:
(传统密码体制)A首先产生一个随机数RA,用密钥KS对其加密后发送给B,同时A对RA施加某函数变换f得到f(RA),其中f是某公开的简单函数f
B收到报文后,用他们共享的会话密钥KS对其解密得到RA,对其施加函数变换f,并用KS对f(RA)加密后发送给A
A接到后再用KS将报文解密,并与原先计算的f(RA)比较,两者相等,则A认为B是其意定的通信站点,便可进行通信,否则,终止与B通信
(公钥密码体制)A首先产生一个随机数RA发送给B,B收到后用私钥KdB对报文签名,再发送给A。A可以用公钥KeB加密获得RA,并与原来的RA比较,以验证B是否为意定的通信站点。
双向验证:
十四、密钥管理
密码体制的安全应当只取决于密钥的安全,而不取决于对密码算法的保密。
1、区分密钥管理策略和机制
策略是密钥管理系统的高级指导。策略着重原则管理,而不着重具体实现。
机制是实现和执行策略的技术机构和方法。
没有好的管理策略,再好的机制也不能确保密钥的安全。相反,没有好的机制,再好的策略也没有实际意义。策略通常是原则的、简单的,而机制是具体的、复杂繁琐的。
2、密钥管理原则:
①全程安全原则; ②最小权利原则; ③责任分离原则; ④密钥分级原则; ⑤密钥更换原则; ⑥密钥应该有足够的长度; ⑦密码体制不同,密钥管理也不相同
3、密钥分配
①高级密钥的分配:是本密钥管理方案中的主密钥,主要保护中级密钥和初级密钥。安全性要求最高,生命周期很长。一般采用人工分配主密钥。
②中级密钥:一种方法是像分配主密钥那样由专门人员分配和安装,但效率低,不适应计算机网络环境;另一种方法直接利用高级密钥对中级密钥进行加密保护,并利用计算机网络自动传输分配。
③初级密钥安装:“一次一密”的方式工作,生命周期很短,而对产生和分配速度却要求很高。为了安全和方便,通常总把一个随机数直接视为受高级密钥(或者中级密钥)加密过的初级密钥,这样初级密钥一产生便成为密文形式。
一、信息系统安全包括四个侧面:设备安全,数据安全,内容安全,行为安全。
设备安全:是指确保信息设备的稳定性、可靠性和可用性,这里的设备包括软件和硬件。
数据安全:包括数据的秘密性、数据的真实性和数据的完整性3个侧面。
行为安全:包括行为秘密性、行为完整性和行为可控性3个侧面。
二、密码技术的基本思想是伪装信息,伪装就是对数据施加一种可逆的数学变换。
三、密码体制,由5部分组成:
①明文空间M,它是全体明文的集合。
②密文空间C,它是全体密文的集合。
③密钥空间K,它是全体密钥的集合。其中一个密钥K均由加密密钥Ke和解密密钥Kd组成,即K=。 ④加密算法E,它是一族由M到C的加密变换。
⑤解密算法D,它是一族由C到M的解密变换。
如果一个密码体制的Kd=Ke,或由其中一个很难推出另外一个,则称为(单密钥密码体制)或则传统传统密码体制,否则称为(双密钥密码体制)。如果在计算上Kd不能由Ke推出,这样将Ke公开也不会损害Kd的安全,于是便可将Ke公开,这种密码体制称为公开密钥密码体制,简称(公钥密码体制)。
四、密码体制分类:
①根据明密文的划分和密钥的使用不同,可将密码体制分为分组密码和序列密码体制。
分组密码:将明文M划分为一系列的明文块Mi,通常每块包含若干位或字符,所有明文块Mi使用同一个密钥Ke进行加密。
序列密码:将明文和密钥都划分为位或字符的序列,并对明文序列中每一位或字符都用密钥序列中对应的分量来加密。
②根据加密算法在使用过程中是否变化,将密码体制分为固定算法密码体制和演化算法密码体制。
五、密码分析:
1、攻击密码的方法主要有以下三种:
①穷举攻击(最基本攻击) ②统计分析攻击 ③数学分析攻击
2、根据密码分析者可利用的数据资源来分类,可将攻击密码的类型分为4种:
①仅知密文攻击(对分析者最不利的情况)
②已知明文攻击:已经知道某些明文----密文对来破译密码,一个密码仅当它能经得起已知明文攻击时才是可取的。
③选择明文攻击:分析者能够选择明文并获得相应的密文,这是对密码分析者十分有利的情况。
④选择密文攻击:能选择密文并获得相应的明文,这也是十分有利的情况,这种攻击主要攻击公开密钥密码体制,特别是攻击其数字签名。
六、分组密码
1、数据加密标准(DES)(1977~1998年),用于加密保护静态存储和传输信道中的数据
DES综合运用置换、代替、代数等多种密码技术; DES是面向二进制的密码算法,因而能够加密任何形式的计算机数据; 其明文、密文。密钥的分组长度都是64位; DES是对合运算,因而加密和解密共用同一算法,从而使工程量减半。
注:①64位密钥经子密钥产生算法产生出16个48位的子密钥供16次加密迭代使用。 ②初始置换IP是DES的第一步密码变换。③加密函数是DES的核心部分,加密函数里有代替函数组S(其由8个代替函数也称S盒组成),S盒有6位输入,产生4位输出。 ③S盒是DES保密性的关键所在,它是一种非线性变换,也是DES中唯一的非线性运算。 ④可逆性是对称密码算法的基本要求,对合性可使密码算法实现的工作量减半。
DES加密Li = Ri-1; Ri = Li-1⊕f(Ri-1,Ki); i=1,2,3,…16
DES解密Ri-1= Li; Li-1=Ri⊕f(Li,Ki); i=16,15,14,…1
DES的安全性:
①对于其设计目标DES是安全的。S盒和置换P互相配合,形成了很强的抗差分攻击和抗线性攻击能力,DES作为商用密码,用于其设计目标是安全的。
②存在安全弱点:密钥较短,只有56位; 存在弱密钥和半弱密钥,存在一些密钥所产生的16个子密钥不是互不相同的,而是有相重的; 存在互补对称性。
2、3DES(1999年~),既可以使用3个密钥,也可以使用2个密钥
三个显著优点:①密钥长度168位,完全能够抵抗穷举攻击; ②相当安全,而且经过实践检验; ③3DES地层加密算法与DES相同,所以现有的DES软硬件都能方便地实现3DES。
3DES根本缺点是软件实现该算法的速度比较慢。
3、密钥托管加密标准(EES)(1994年~1997年,只将其用于语音通信加密)
①不公布加密算法,推出CLIPPER密码芯片,其密码算法称为SKIPJACK(属于分组密码,明文和密文长度为64位,密钥长度为80位,子密钥长32位,采用轮函数迭代结构,共迭代32圈
②SKIPJACK算法不是对合算法,所以加密和解密过程不一样。其S盒输入和输出都是8位,只有1个S盒。
③子密钥生成算法,非常简单,把单元密码UK(80位)重复连接,然后依次取32位为一个子密钥,直到取出32个子密钥为止。由于UK为80位,而子密钥32位,故取出5个子密钥后,第6个子密钥将开始重复。
④安全性:其密钥空间为280≈1.2* 1024,可以抵抗穷举攻击,其抗差分攻击线性攻击的能力也很强,但生成密钥算法过于简单,这对安全是不利的。其算法不是对合运算,这都工程实现都是不利的。
4、国际数据加密算法(IDEA)(1990年提出)
①用于Internet的E-mail加密系统PGP和许多其他加密系统中。
②分组算法,明文和密文长度为64位,密钥长度为128位; 对合算法; 易于实现,用软件和硬件实现都很方便。
③产生52个子密钥。
④安全性:密钥长度为128位,穷举需要试探2128≈1038个密钥; 能抗差分和线性攻击; 存在弱密钥; IDEA是为了方便16位CPU实现设计的,32位CPU实现不太方便。
5、高级数据加密标准(AES)(2001年~)
RIJNDAEL加密算法:
①数据块长度和密钥长度都可变的分组加密算法,两长度可独立地选定为大于等于128且小于等于256位的32位的任意倍数
②RIJNDAEL的轮函数由三层组成:非线性层;线性混合层;密钥加层
③状态:加密解密要经过多次数据变换操作,每一次变换操作产生一个中间结果,称这个中间结果叫做状态。各种不同的密码变换都是对状态进行的。把状态表示为二维字节数组(每个元素为一个字节),它有4行,Nb列。Nb等于数据块长度除以32。
④算法的实现:实现容易是RIJNDAEL算法的一个优点,它可以灵活地用8位CPU,32位CPU以及专用硬件芯片实现。
⑤S盒的实现:实现S盒运算的最快方法是,直接计算出S盒的变化结果,并存储造表,使用时直接查表,因为ByteSub变换是字节函数,所以表的规模不大,只有256个字节。
6、KASUMI密码
①f8用于加密,f9用于完整性验证
②三条原则:安全性要有足够的数学基础; 算法的软件实现要足够快; 算法的硬件实现要电路简单、功耗低。
③S盒:S9是9位输入到9位输出的非线性变换,S7是7位输入到7位输出的非线性变换。
7、中国商用密码算法(SMS4)
①对合运算,数据分组长度为128比特,,密钥长度为128比特。
②S盒:S盒以字节为单位的非线性替代变换,其密码学作用在于起到混淆作用。S盒的输入输出都是8位的字节。它本质上是8位的非线性置换。
③加密算法:采用32轮迭代结构,每轮使用一个轮密钥。
④SMS4的安全性:SMS4主要密码部件S盒设计得相当好。在非线性度、自相关性、差分均匀性、代数免疫性等主要密码学指标方面都达到相当高的水平,与AES的S盒相当。
七、分组密钥的工作模式
1、电话本模式ECB
直接利用分组密码对明文进行加密。电话本方式是分组密码的基本工作模式。
ECB的一个缺点是要求数据的长度是密码分组长度的整数倍,否则最后一个数据块是短块,这是需要特殊处理,ECB方式的另一个缺点是容易暴露明文的数据模式。
在计算机系统中,许多数据都具有某种固有的模式。这主要是由数据冗余和数据结构引起的。
掩盖明文数据模式的有效方法有采用某种预处理技术和链接技术。
下面介绍分组密码的链接工作模式
2、密文连接模式CBC
明密文链接方式具有加解密错误传播无界的特征,而磁盘文件加密通常希望解密错误传播有界,这时可以采用密文链接方式。明文不参与链接,只让密文参与链接,便成了密文链接方式。
与ECB一样,CBC的一个缺点也是要求数据长度是密码分组长度的整数倍,否则最后一个数据块将是短块,这时需要特殊处理。
3、输出反馈模式OFB
输出反馈工作模式将一个分组密码转换为一个密钥序列产生器,从而实现用分组函数密码按流密码的方式进行加解密。这种工作模式的安全性取决于分组密码本身的安全性。
这种工作模式将一个分组密码转换为一个序列密码。它具有普通序列密码的优缺点,如没有错误传播。设加密时mi错了一位,则只影响密文中对应的一位,不影响其他位。同样,设解密时ci错了一位,则只影响明文中对应的一位,不影响其他位。
输出反馈工作模式适于加密冗余码较大的数据,如语音和图像数据,但因无错误传播而对密文的更改难以检测。
4、密文反馈模式CFB
密文反馈工作模式的原理与输出反馈的工作原理基本相同,所不同的仅仅是反馈到移位寄存器R的不是E输出中的最右的S位,而是异或后的密文Ci的S位。
密文反馈工作模式的错误传播情况与输出反馈工作模式不同。加密时若明文mi错了一位,则影响密文Ci错,这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的密文都错。同样,解密时若密文Ci错了一位,则影响明文mi错,但密文的这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的明文都错。
八、序列密码
“一次一密”密码在理论上是不可破译的这一事实使人们感觉到,如果能以某种方式仿效“一次一密”密码,则将可以得到保密性很高的密码。人们试图以序列密码方式效仿“一次一密”密码,从而促进序列密码的研究和发展。
序列密码应使用尽可能长的密钥,而长的密钥的存储、分配都很困难。于是人们采用一个短的种子密钥来控制某种算法产生出长的密钥序列,供加解密使用,而短的种子密钥的存储、分配都比较容易。
序列密码加密器采用简单的模2加法器,这使得序列密码的工程实现十分方便。于是,序列密码的关
键就是产生密钥序列的算法。密钥序列产生算法能产生随机性和不可预知性很好的密钥序列。保持通信双方的精准同步是序列密码实际应用的关键技术。由于通信双方必须产生相同的密钥序列,所以这种密钥序列不可能是真随机序列,而是伪随机序列,只不过具有良好的随机性和不可预知性的伪随机序列。
如果密钥序列产生算法与明文(密文)无关,则所产生的密钥序列也与明文(密文)无关,这类密码称为同步序列密码。只要通信双方的密钥序列产生器具有相同的种子密钥和相同的初始状态,就能产生相同的密钥序列。(优点就是没有错误传播,错误只影响相应字符的解密,不影响其他字符,输出反馈工作模式)
如果密钥序列产生算法与明文(密文)相关,则所产生的密钥序列也与明文(密文)相关,这类密码称为自同步序列密码。(密文反馈工作模式)
九、线性/非线性序列密码
线性移位寄存器序列密码在已知明文攻击下是可破译的,可破译的根本原因在于线性移位寄存器序列是线性的,这一事实促使人们向非线性领域探究。
非线性移位寄存器序列、对线性移位寄存器进行线性组合、钟控非线性序列。
前面的都是传统密码,下面开始讨论公开密钥密码
十、公开密钥密码
①密钥管理上的困难是传统密码应用的主要障碍
②基本思想是将传统密码的密钥一分为二
③要满足三个条件:解密算法D和加密算法E互逆,既有D( E(M,Ke) , Kd )=M; 计算上不能由Ke求出Kd; 算法D和E都是高效的
④所有用户的公开的加密钥Ke存入共享密钥库PKDB。KeA,KeB
⑤目前公认比较安全的公开密钥密码有基于大合数因子分解的困难性的RSA密码类和基于离散对数问题困难性的ELGamal密码类(包括椭圆曲线密码)
⑥RSA算法的实现技术:RSA算法通俗易懂但其工程实现却相当困难,其困难性主要在于大素数的产生和大数的模幂运算。在目前水平采用160~200位的椭圆曲线,其安全性就够了。
⑦ELGamal密码:离散对数问题是目前公认的较好的单向函数
⑧ELGamal密码的应用:加、解密速度,由于其运算的数比RSA要小,所以速度比RSA稍快; 随机数源; 大素数的选择,p应为150位(十进制)以上的数,而且p-1应有大素因子。理想情况下应选p为强素数,p-1=2q,其中q为大素数。
⑨160位长的椭圆曲线密码的安全性相当于1024位的RSA密码
十一、数字签名(公开算法)
中国国家签名标准(GB15851-1995)
美国国家数字签名标准(DSS,1994年~)
俄罗斯数字签名标准(GOST)
1、完善的数字签名三个条件:①签名者事后不能抵赖自己的签名; ②任何其他人不能伪造签名; ③当事双方的关于签名的真伪发生争执时,能在公正的仲裁者面前通过验证签名来确认其真伪。
2、概念:
①数字签名利用密码技术进行,其安全性取决于密码体制以及协议的安全程度,因而可获得比书面签名更高的安全性。
②公开密钥密码效率比较低,主要用于数字签名,或用于保护传统密码的密钥。
③利用公开密钥实现数字签名非常方便,是公开密钥深受欢迎的主要原因。
④不可否认签名与普通数字签名最本质的不同在于,对于不可否认签名,在得不到签名者的配合的情况下
不能进行签名验证。
3、对RSA数字签名的攻击
一般攻击; 利用已有的签名进行攻击; 利用签名进行攻击获得明文; 对先加密后签名方案的攻击
4、盲签名与普通签名对比:
①(盲性)签名者不知道所签署的数据内容 ②(不可追踪性)即使在签名被接收者泄漏后,签名者也不能知道签名数据,不能追踪自己签名的数据的拥有者。
十二、Hash函数
1、Hash函数将任意长的数据M映射为定长的Hash码h,表示为h = H(M)
Hash码也称数据摘要,它是所有数据位的函数,它具有错误检测功能,即改变数据的任何一位或则多位,都会导致Hash函数码的改变。
2、基本性质:
①输入可以任意长
②输出固定长,多数情况下输入长度大于输出长度
③有效性:对于给定的输入M,计算h=H(M)的运算是高效的
3、基本用途
①用于认证 ②~和保密 ③~和数字签名 ④~和保密性和数字签名
4、安全性
①单向性:对任何给定的Hash函数值h,找到满足H(x)=h的x在计算上是不可行的。
②抗弱碰撞性:对任何给定的数据x,找到满足y≠x且H(x)=H(y)的y在计算上是不可行的。
③抗强碰撞性:找到任何满足H(x)=H(y)的数偶(x,y)在计算上是不可行的。
5、Hash函数结构:是一种迭代结构,Hash函数是建立在压缩函数的基础上的。
(SHA-1、SHA-2[ SHA-256/SHA-384/SHA-512 ])
十三、认证
1、概念:
①认证又称鉴别,确认,它是认证某事是否名符其实、某事是否有效的一个过程。认证的基本思想是通过验证称谓者(人或事)的一个或多个参数的真实性和有效性,来达到验证称谓者是否名符其实的目的。 ②加密用以确保数据的保密性;认证用以确保报文发送者和接收者的真实性、以及报文的完整性。 ③认证往往是许多应用系统中安全保护的第一道防线,因而极其重要。
2、认证和签名的区别:
①认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性,而数字签名中用于验证签名的数据是公开的。
②认证允许收发双方互相验证其真实性,不允许第三方验证,而数字签名允许收发双方和第三者都能验证。 ③数字签名具有发送方不能抵赖、接收方不能伪造和具有在公证人前解决纠纷的能力,而认证则不一定具备。
3、密码协议三层含义:
①协议是一个有序的执行过程。每一步都必须执行,而且是依序进行的。随意增加或减少执行步骤或改变执行步骤的顺序,都是对协议的修改或攻击。
②协议至少要有两个参与者。虽然一个人可以通过执行一系列步骤来完成某种任务,但不构成协议。 ③协议的执行必须能完成某种任务。
4、密码协议设计原则
①消息独立完整性原则 ②消息前提准确原则 ③主体身份标识原则 ④加密目的原则 ⑤签名原则 ⑥随机数的使用原则 ⑦时间戳的使用原则 ⑧编码原则 ⑨最少安全假设原则
不能进行签名验证。
3、对RSA数字签名的攻击
一般攻击; 利用已有的签名进行攻击; 利用签名进行攻击获得明文; 对先加密后签名方案的攻击
4、盲签名与普通签名对比:
①(盲性)签名者不知道所签署的数据内容 ②(不可追踪性)即使在签名被接收者泄漏后,签名者也不能知道签名数据,不能追踪自己签名的数据的拥有者。
十二、Hash函数
1、Hash函数将任意长的数据M映射为定长的Hash码h,表示为h = H(M)
Hash码也称数据摘要,它是所有数据位的函数,它具有错误检测功能,即改变数据的任何一位或则多位,都会导致Hash函数码的改变。
2、基本性质:
①输入可以任意长
②输出固定长,多数情况下输入长度大于输出长度
③有效性:对于给定的输入M,计算h=H(M)的运算是高效的
3、基本用途
①用于认证 ②~和保密 ③~和数字签名 ④~和保密性和数字签名
4、安全性
①单向性:对任何给定的Hash函数值h,找到满足H(x)=h的x在计算上是不可行的。
②抗弱碰撞性:对任何给定的数据x,找到满足y≠x且H(x)=H(y)的y在计算上是不可行的。
③抗强碰撞性:找到任何满足H(x)=H(y)的数偶(x,y)在计算上是不可行的。
5、Hash函数结构:是一种迭代结构,Hash函数是建立在压缩函数的基础上的。
(SHA-1、SHA-2[ SHA-256/SHA-384/SHA-512 ])
十三、认证
1、概念:
①认证又称鉴别,确认,它是认证某事是否名符其实、某事是否有效的一个过程。认证的基本思想是通过验证称谓者(人或事)的一个或多个参数的真实性和有效性,来达到验证称谓者是否名符其实的目的。 ②加密用以确保数据的保密性;认证用以确保报文发送者和接收者的真实性、以及报文的完整性。 ③认证往往是许多应用系统中安全保护的第一道防线,因而极其重要。
2、认证和签名的区别:
①认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性,而数字签名中用于验证签名的数据是公开的。
②认证允许收发双方互相验证其真实性,不允许第三方验证,而数字签名允许收发双方和第三者都能验证。 ③数字签名具有发送方不能抵赖、接收方不能伪造和具有在公证人前解决纠纷的能力,而认证则不一定具备。
3、密码协议三层含义:
①协议是一个有序的执行过程。每一步都必须执行,而且是依序进行的。随意增加或减少执行步骤或改变执行步骤的顺序,都是对协议的修改或攻击。
②协议至少要有两个参与者。虽然一个人可以通过执行一系列步骤来完成某种任务,但不构成协议。 ③协议的执行必须能完成某种任务。
4、密码协议设计原则
①消息独立完整性原则 ②消息前提准确原则 ③主体身份标识原则 ④加密目的原则 ⑤签名原则 ⑥随机数的使用原则 ⑦时间戳的使用原则 ⑧编码原则 ⑨最少安全假设原则
5、口令验证机制存在问题:
①攻击者可能从口令表获取用户口令
②攻击者可能在传输线路上截取用户口令
③用户和系统的地位不平等
6、改进的口令机制:
①利用单向函数加密口令; ②利用数字签名方法验证口令; ③口令的双向验证; ④一次性口令
7、站点认证:
单向验证:
(传统密码体制)A首先产生一个随机数RA,用密钥KS对其加密后发送给B,同时A对RA施加某函数变换f得到f(RA),其中f是某公开的简单函数f
B收到报文后,用他们共享的会话密钥KS对其解密得到RA,对其施加函数变换f,并用KS对f(RA)加密后发送给A
A接到后再用KS将报文解密,并与原先计算的f(RA)比较,两者相等,则A认为B是其意定的通信站点,便可进行通信,否则,终止与B通信
(公钥密码体制)A首先产生一个随机数RA发送给B,B收到后用私钥KdB对报文签名,再发送给A。A可以用公钥KeB加密获得RA,并与原来的RA比较,以验证B是否为意定的通信站点。
双向验证:
十四、密钥管理
密码体制的安全应当只取决于密钥的安全,而不取决于对密码算法的保密。
1、区分密钥管理策略和机制
策略是密钥管理系统的高级指导。策略着重原则管理,而不着重具体实现。
机制是实现和执行策略的技术机构和方法。
没有好的管理策略,再好的机制也不能确保密钥的安全。相反,没有好的机制,再好的策略也没有实际意义。策略通常是原则的、简单的,而机制是具体的、复杂繁琐的。
2、密钥管理原则:
①全程安全原则; ②最小权利原则; ③责任分离原则; ④密钥分级原则; ⑤密钥更换原则; ⑥密钥应该有足够的长度; ⑦密码体制不同,密钥管理也不相同
3、密钥分配
①高级密钥的分配:是本密钥管理方案中的主密钥,主要保护中级密钥和初级密钥。安全性要求最高,生命周期很长。一般采用人工分配主密钥。
②中级密钥:一种方法是像分配主密钥那样由专门人员分配和安装,但效率低,不适应计算机网络环境;另一种方法直接利用高级密钥对中级密钥进行加密保护,并利用计算机网络自动传输分配。
③初级密钥安装:“一次一密”的方式工作,生命周期很短,而对产生和分配速度却要求很高。为了安全和方便,通常总把一个随机数直接视为受高级密钥(或者中级密钥)加密过的初级密钥,这样初级密钥一产生便成为密文形式。