当前位置:文档之家› 《应用密码学》学习笔记

《应用密码学》学习笔记

以下是我对《应用密码学》这本书的部分学习笔记,比较简单。

笔记中对现代常用的加密技术进行了简单的归类和解释,有兴趣的同学可以看一下,没看过的同学就当普及知识了,看过的同学就当复习了。

笔记里面可能有错别字,有的话请各位看客帮忙指正。

第1章密码学概述1-1、1-21.密码技术的发展历史大致可以划分为三个时期:古典密码、近代密码和现代密码时期。

2.公元前440多年的斯巴达克人发明了一种称为“天书”的加密器械来秘密传送军事情报。

这是最早的移位密码。

3.1919年德国人亚瑟·谢尔比乌斯利用机械电气技术发明了一种能够自动编码的转轮密码机。

这就是历史上最著名的德国“埃尼格玛”密码机。

4.1949年香农的奠基性论文“保密系统的通信理论”在《贝尔系统技术杂志》上发表。

5.1977年,美国国家标准局正式公布实施了美国的数据加密标准(DES)。

6.1976年11月,名美国斯坦福大学的著名密码学家迪菲和赫尔曼发表了“密码学新方向”一文,首次提出了公钥密码体制的概念和设计思想。

7.1978年,美国的里韦斯特(R.L.Rivest)、沙米尔(A.Shamir)和阿德勒曼(L.Adleman)提出了第一个较为完善的公钥密码体制——RSA体制,成为公钥密码的杰出代表和事实标准。

8.2000年10月,比利时密码学家Joan Daemen和Vincent Rijmen提出的“Rijndael数据加密算法”被确定为AES算法,作为新一代数据加密标准。

1-31.密码学的主要任务:密码学主要为存储和传输中的数字信息提供如下几个方面的安全保护:机密性、数据完整性、鉴别、抗抵赖性。

2.密码体制中的有关基本概念:明文(plaintext):常用m或p表示。

密文(ciphertext):常用c表示。

加密(encrypt):解密(decrypt):密码算法(cryptography algorithm):简称密码(cipher)。

密钥(secret key):常用k表示。

3.通常一个密码体制可以有如下几个部分:(1)消息空间M,又称明文空间。

(2)密文空间C。

(3)密钥空间K。

(4)加密算法E。

(5)解密算法D。

4.密码分析者破译或攻击密码的方法主要有:①穷举攻击法:又称强力或蛮力攻击。

这种攻击方法是对截获到的密文尝试遍历所有可能的密钥,知道获得一种从密文到明文的可理解的转换。

或使用不变的密钥对所有可能的明文加密直刀得到与截获的密文一致为止。

②统计分析法:就是指密码分析者根据明文、密文和密钥的统计规律来破译密码的方法。

③数学分析法:是指密码分析者针对加解密算法的数学基础和某些密码学特征,通过数学求解的方法来破译密码。

5.评估密码系统安全性主要有三种方法:①无条件安全性。

②计算安全性。

③可证明安全性。

6.一个提供机密性服务的密码系统是实际可用的,必须满足如下基本条件:①系统的保密性不依赖于对加密体制或算法的保密,而仅依赖于密钥的安全性,“一切秘密寓于密钥之中”是密码系统设计的一个忠告原则。

②满足实际安全性,使破译者取得密文后在有效时间和成本范围内,确定密钥或相应明文在计算上是不可行的。

③加密和解密算法应适用于明文空间、密钥空间中的所有元素。

④加密和解密算法能有效地计算,密码学系统易于实现和使用。

6.密码体制的分类①根据密码算法所用的密钥数量:对称密码体制、非对称密码体制。

②根据对明文信息的处理方式:分组密码、序列密码(也称为流密码)。

③根据是否能进行可逆的加密变换:单向函数密码体制和双向变换密码体制。

7.对称密码体制的主要优点是加密、解密的处理速度较快,效率搞,算法安全性高,不足之处有以下几点:①对称密码算法的密钥分发过程复杂,所花代价高。

②密钥管理量的困难。

③保密通信系统的开放性差。

④存在数字签名的困难性。

8.非对称密码体制的主要有点有以下几点:①密钥分发简单。

②系统密钥量少,便于管理。

③系统开放性好。

④可以实现数字签名。

缺点:加密、解密算法复杂,处理速度较慢,同等安全强度下,非对称密码体制的密钥位数较多。

第2章古典密码技术2-11.替代密码的分类:单表替代密、多表替代密码。

2.移位密码是一般单表替代密码的一个特例。

当移位密码的密钥k=3时,就是历史上著名的凯撒密码。

3.弗吉尼亚密码是最古老而且著名的多表替代密码体制之一。

4.典型的置换密码算法:周期置换密码、列置换密码。

第3章分组密码1.分组密码的设计原则:①针对安全性的一般设计原则:分组长度和密钥长度、扰乱原则、扩散原则。

②针对实现的设计原则:软件实现的设计原则、硬件实现的设计原则。

2.分组密码常见的设计方法①Feistel结构(BIowfish、RC5、DES)②SPN结构(SAFER、SHARK、AES)。

SPN结构分为两层:第一层为S层,也称为替换层,主要起扰乱的作用。

第二层为P层,也称为置换层,主要起扩散的作用。

3.DES算法描述:DES是一种明文分组为64位、有效密钥为56位、输出密文64位的,具有16论迭代的分组对称密码算法,DES由初始置换、16论迭代和初始逆置换组成。

4.DES的基本运算:①初始置换IP和初始逆置换IP-1.②E-扩展运算。

③S-盒运算。

④P-置换。

5.AES算法的数学基础:AES把一个字节堪称是在有限域GF(2^8)上的一个元素,并采用多项式表示域中的元素。

6.可以利用x乘法来加快GF(2^8)中任意两个元素的乘法。

7.AES算法总体描述:AES的分组长度为128位,有三种可选的密钥长度,128位,192位和256位。

AES是一个迭代型密码;轮数Nr依赖于密钥长度。

如果密钥长度为128位,Nr=10;如果密钥长度为192位,Nr=12;如果密钥长度为256位,Nr=14。

下面给出AES加密的总体描述:①给定一个明文M,将State初始化为M,并将轮密钥与State异或(称为AddRoundKey)。

②对前Nr-1轮中的每一轮,用S-盒进行一次替换操作(称为SubBytes)。

对替换的结果State做行移位操作(称为ShiftRows);再对State做列混合变换(MixColumns,也称为列混淆变换);然后进行AddRoundKey操作。

③在最后一轮中依次进行SubBytes、ShiftRows和AddRoundKey操作。

④将State定义为密文C。

8.分组密码的工作模式:①电子本模式(ECB)看图②密码分组链接模式(CBC)看图③密码反馈模式(CFB)看图④输出反馈模式(OFB)看图⑤计数器模式(CTR)9.其他分组密码:IDEA加密算法、RC6加密算法。

第4章公钥密码体制1.目前人们主要是基于如下的数学上的困难问题来设计单向函数和公钥密码体制:①大整数分解问题(RSA)。

②有限域上的离散对数问题(Elgamal)。

③椭圆曲线上的离散对数问题(ECC)。

2.公钥密码的应用:①机密性的实现、②数字签名、③密钥分发和协商。

3.RSA的算法描述:①密钥生成(1)选择两个随机的大素数p和q,并计算n=pq和φ(n)=(p-1)(q-1)。

(2)选择一个随机数e,1<e<φ(n),满足gcd(e,φ(n))=1,并计算d=e^-1 mod (φ(n))。

(3)公钥为(e,n),私钥为d。

②加密对明文m < n,其对应的密文为c = m^e mod n。

③解密对密文c,其对应的明文是m = c^d mod n。

4.计算a^m mod n 的“平方-乘法”算法的伪代码描述如下:Square-and-Multiply(a,m,n)//输出a^m mod n 的值{把m表示为二进制BkBk-1...B0d = 1;for( i = k;i >= 0;i --){d = d*d mod n;if( Bi == 1 )d = ( d * a ) mod n;}return d;}ler-Rabin算法是一种比较高效和流行的素性检测算法。

6.RSA在应用中的问题:①用户之间不要共享模数n。

②不同的用户选用的素数不能相同。

③一般不能直接应用RSA进行加解密。

7.ElGamal公钥密码体制是T.ElGamal于1985年提出,是最有名的公钥密码体制之一,它的安全性是基于离散对数问题。

8.ElGamal密码体制的具体描述如下:①密钥的生成:系统选取一个大素数p,α是p的一个本原元。

随机生成一个整数x,2<=x<=p-2,并计算:y =α^x mod p。

以(p,α,y)作为用户的公开密钥,而x作为用户的秘密密钥。

②加密:设用户想加密的明文为m<p,其加密过程如下:(1)随机选择一个整数k,2<=k<=p-2,并计算c1= α^k mod p,c2 = m * y^k mod p。

(2)密文为二元组(c1,c2)。

③解密:用户用秘密密钥x对密文(c1,c2)的解密过程为:m = c2 * (c1^x)^-1 mod p 。

9.ECC的安全性基于椭圆曲线离散对数问题的难解性。

椭圆曲线密码体制有两个方面的优点:①密钥长度小。

②算法性能好。

第5章散列函数与消息鉴别1.密码学中的散列函数又称为哈希函数(Hash函数)、杂凑函数,它是一种单向密码体制,是一个从明文到密文的不可逆映射,只有加密过程,不能解密。

散列函数是可将任意长度的输入消息(message)压缩为某一固定长度的消息摘要(message digest,MD)的函数,输出的消息摘要也称为散列码。

2.散列函数的性质:设散列函数为h(m),具有以下基本特性:①h(m)算法公开,不需要密钥。

②具有数据压缩功能,可将任意长度的输入数据转换成一个固定长度的输出。

③对任何给定的m,h(m)易于计算。

3.散列函数需要满足的安全性要求:①具有单向性。

②具有弱抗碰撞性。

③具有强抗碰撞性。

4.散列函数的主要应用有以下三个方向:①保证数据的完整性。

②单项数据加密。

③数字签名。

5.SHA-1基于散列算法MD4,并且它在设计方面也很大程度上是模仿MD4的。

6.SHA-1是签名数字标准DSS(Digital Signature Standard)中使用的散列算法。

它能够处理最大长度为2^64位的输入数据,输出为160位的散列函数值,SHA-1的输出正好适合作为数字签名算法DSA(Digital Signature Algorithm)的输入。

7.目前对于散列函数的攻击方法可以分为两类:①穷举攻击。

②密码分析法。

8.在消息传递的过程中,需要考虑两个方面的问题:①为了可以抵抗窃听等被动攻击,需要对传输的信息进行加密保护。

②使用消息鉴别来防止攻击者对系统进行主动攻击,如伪造、篡改消息等。

9.实现消息鉴别的手段:①基于加密技术的消息鉴别。

②基于散列函数的消息鉴别。

相关主题