本文链接:https://blog.csdn.net/qq_39316701/article/details/80224229
密码学和数据安全导论
需要掌握的主要内容:
*密码学的通用准则
*短期、中期及长期安全性所需要的合适密码长度
*针对密码发起的各种攻击的区别
*一些经典密码,并进一步介绍在现代密码学中占有重要地位的模运算
*使用完善的加密算法的原因
1.1 密码学以及相关专业术语
密码编码学(cryptology)的两个主要分支:
密码使用学(cryptography):为了达到隐藏消息含义目的而使用的密文书写的科学。
密码分析学:一种破译密码体制的技巧。
密码分析是确保密码体制安全的唯一方法,它是密码学中不可缺少的部分。
密码使用学的三个主要分支:
对称算法(Symmetric Algorithm):双方共享一个密钥,并使用相同的加密方法和解密方法。
非对称算法(Asymmetric Algorithm)或公钥算法(Public-Key Algorithm):使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用非对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。
密码协议(Cryptographic Protocol):主要是针对密码学算法的应用。
1.2对称密码学
1.2.1 基础知识
对称加密方案也称为对称密钥(Symmetric-key)、秘密密钥(secret-key)和单密钥(Single-key)方案(算法)。
实例:
窃听:未经授权的监听。
信道:可以是Internet、手机使用的空气中的信道或无限LAN通信以及一些通信媒介等。
倘若Alice和Bob分别是汽车制造厂的两位办事员,他们想传输一些关于公司未来几年新汽车模型商业战略方面的文档,那么这些文档不能落入竞争对手和外国情报机构的手里。
对称密码学所提供的强大解决方案:
如果他们所选择的加密算法非常强大,那么Oscar所监听到的密文将是杂乱无章且没有意义的。
其中:x称为明文(plaintext或cleartext);y称为密文(ciphertext);k成为密钥(key)
所有可能的密钥组成的集合称为密钥空间(key space)
在实际生活中的应用:无限LAN中的Wi-Fi保护访问(Wi-Fi Protected Access,WPA)加密所使用的预共享密钥(pre-share key)的分配。
关于对称算法的重要事实:它所使用的加密算法和解密算法都是公开而且是已知的。
如何证明一个加密方法是否强大?
唯一的方法是将其公开,让更多的密码员进行分析。
安全地传输消息的问题总是可以归结为安全地传输密钥的问题。
1.2.2 简单对称加密:替换密码
替换密码的目标是加密文本。
思路:通过一个字符替换明文中的字符形成密文。
例如:A→k、B→d、C→w...
替换密码的破译方法:
第一种方式:蛮力攻击或穷尽密钥搜索
定义1.2.1 基本穷尽密钥搜索攻击或蛮力攻击
假设(x,y)表示一对明文和密文对,K={k1,...,kk}表示所有可能的密钥ki组成的密钥空间。蛮力攻击将检查每个ki∈K,判断以下条件是否满足:
dki(y)?=x
如果等式成立,则意味着找到了一个可能正确的密钥:否则继续尝试下一个密钥。
算法流程图:
对称密码的安全性:如果通过蛮力破译这个密码需要耗费大量的时间,则称这个密码对于蛮力攻击是安全的。
第二种方式:字母频率分析
利用一下几点语言特性:
(1)确定每个密文字母的频率
(2)连续英文字母特性,如:英语中U总是跟在Q的后面。利用这种现象
(3)如果存在单词分隔符,则考虑一些高频短单词,如:THE、AND等等。
在实际应用中,我们通常多种方法结合使用。
1.3 密码分析
1.3.1 破译密码的一般思路
破解密码体制的各种方法:
1.经典密码分析(Classical Cryptanalysis):从密文恢复明文或者密钥的一门科学。
2.实施攻击(Implementation Attack):旁道分析,例如电磁辐射和处理器的功耗,需要注意的是实施攻击绝大多数情况下针对的是攻击者可以物理访问的密码体制(比如信用卡)。因此绝大多数针对远程系统的基于Internet的攻击通常不会考虑这种方法。
3.社会工程攻击(Social Engineering Attack):行贿、勒索、威胁、欺骗等方式
4.其他方式:软件系统中的缓冲区溢出攻击或者恶意代码得出密钥。
定义1.3.1 Kerckhoffs原理
即使除密钥外的整个系统的一切都是公开的,这个密码体制也必须是安全的。尤其是攻击者知道系统的加密算法和解密算法,这个系统也必须是安全的。
1.3.2 合适的密钥长度
(1)只有在蛮力攻击是已知的最好攻击方法时,我们才会考虑合适的密钥长度。
(2)对称算法和非对称算法所要求的密钥长度完全不同。
摩尔定律:计算机的计算能力每隔18个月便增长一倍。
1.4 模运算与多种古典密码
1.4.1 模运算
实例1:时钟的时针始终处于1点到12点的集合内,无论时间怎么增加时针的值也不会离开这个集合。
实例2:考虑拥有9个数字的集合:{0,1,2,3,4,5,6,7,8}
只要结果小于9就能够正常地执行算术运算,如:
2*3=6或4+4=8
对于8+4的情况怎么办?我们规定一个规则:正常地执行整数算术运算,并将得到的结果除以9。我们关心的只有余数,而不是原来的结果。由于8+4=12,12除以9得到3,所以可以写作:
8+43 mod 9
模运算的精确定义:
定义1.4.1 模运算:
假设a,r,m∈Z(其中Z是整数集),并且m>0。如果m除a-r,可记作:
ar mod m
其中m称为模数,r称为余数。
对于余数不唯一的特殊情况:
根据上面的定义:当a=42,m=9时,以下几种情况都是正确的:
123 mod 9
1221 mod 9
12-6 mod 9
其中3、21、-6都是有效的余数。因为:
129*1+3
129*(-1)+21
129*2+(-6)
则整数集构成了一个等价类:{...,-24,-15,-6,3,12,21,30,...}
此外,模数9还存在另外8个等价类。
等价类中所有成员行为等价:
许多实际公钥方案中的核心操作就是 xe mod m形式的指数运算,其中x、e和m都是非常大的整数。
实例:计算38 mod 7
方法一:38=65612 mod 7,因为6561=937*7+2
缺点:计算量过于庞大。
方法二:执行指数运算:38=34*34=81*81
然后将中间结果替换为同一等价类中的其他元素。在模数7的等价类中,最小的正元素是4,因此:38=81*81=4*4=16 mod 7
所以结果为:162 mod 7
余数的选择问题:
0<=r<=m-1
但从数学角度看,任何一个模数对结果都没有任何影响。
1.4.2 整数环
定义1.4.2 环
整数环Zm由一下两部分组成:
1.集合Zm={0,1,2,...,m-1}
2.两种操作“+”和“×”,使得对所有的a,b∈Zm有:
(1)a+bc mod m,(c∈Zm)
(2)a×bd mod m,(d∈Zm)
整数环实例:假设m=9,即环Z9={0,1,2,3,4,5,6,7,8}。
以下是一些简单的算术运算:
6+8=145 mod 9
6*8=483 mod 9
关于环的以下重要特性:
·如果环内任意两个数相加或相乘得到的结果仍在环内,那么这个环就是封闭的。
·加法和乘法是可结合的。
·加法中存在中性元素0,使得对每个a∈Zm都有a+0a mod m。
·环中的任何元素a都存在一个负元素-a,是的a+(-a)a mod m,即加法逆元始终存在。
·乘法中存在中性元素1,即对每个a∈Zm,都有a*1a mod m。
·不是所有元素都存在乘法逆元。假设a∈Z,乘法逆元a-1可以定义为:
a*a-11 mod m。