2.1 密码学作用
密码学主要涉及信息加密、鉴别、完整性和抗抵赖的内容。
2.1.1 信息加密
有必要使用某种方法伪装明文以隐藏真正消息,这个伪装过程称为加密,加密后得到的信息称为密文。
总是有人试图要从密文中使用各种手段恢复出明文是其中主要的原因。我们称这种行为为密码分析,自然这种技术叫做密码分析技术;而设计密码算法的技术则称为密码编码技术。
2.1.2 鉴别
鉴别能力就是指消息的接收者应该能够确认消息发送者确实为发送者本身,入侵者不可能伪装成他人。
2.1.3 完整性
完整性用来确保信息没有被修改,也可以防止假冒的信息。
完整性的解决方案主要是基于单向散列函数和加密算法。单向散列函数能够将一个大的文件映射成一段小的信息码,并且具有不同的文件映射成的信息码相同得分概率极小的性质。完整性一般是用来确保信息没有被修改,但是在发现信息被修改后,怎么进行恢复也是一件有趣的事情。
2.1.4 抗抵赖
密码学已经提供了技术上可以抗抵赖的解决方案,就是数字签名技术。
2.2 密码数学
2.2.1 随机数
如果有一个周期为2亿的随机数产生器,而一般来说使用的位数知识几千卫一下的量级,那么对于这几千位来说,可能跟一个真正的随机数产生器的输出看起来没有太多的区别,那么这个随机数序列就可以称为伪随机数。
2.3 密码算法
密码算法就是用于加密和解密的函数,本节介绍密码算法的基本概念、种类、评估标准和应用。
密码算法的目的主要就是为了保密信息,如果算法的保密性是基于算法本身的,这种算法称为有限制算法,如果算法的保密性不是基于算法本身,而是基于密钥的,那么属于无限制算法。
对称加解密函数:
RSA加解密函数:
2.3.2 对称加密算法
对称加密算法又称为传统密码算法、但密钥算法或秘密密钥算法。
加密算法分类:
a.流加密算法又称为序列加密算法或序列密码,他每次只对明文中单个位或单个字节进行加密操作。这种算法的有点是能够实时进行数据传输和解密。
b.块加密算法又称为分组加密算法或分组密码,他每次对明文中的一组数据位进行加密操作。
2.3.4 算法安全性
密码分析是指在不知道密钥的情况下,得出明文或密钥的技术。密码分析针对的对象可能是密钥,也可能是密码算法本身。
攻击算法:
*数据复杂性:即攻击时需要的数据量
*计算复杂性:完成攻击计算所需要的时间或计算量
*存储量需求:进行攻击所需要的最大存储时间
2.4 密码通信协议
总结起来,基于对称加密算法的安全网络通信协议存在问题
*密钥必须秘密地进行分配,这通常只能采用物理的传输手段实现,对于自动化程序高和应用广泛的加密系统来说,这样做的代价将是不可接受的。
*一旦加密密钥丢失,那么获得密钥的攻击就有能力解密通信中的任何数据,并且可以假装成其中任何一方发送虚假信息而不被发觉。
*一旦加密密钥丢失,那么获得密钥的攻击者就有能力解密通信中的任何数据,并且可以假装成其中任何一方发送虚假信息而不被发觉。
*随着用户的增多,需要的密钥个数会成平方级迅速增长。
2.4.3 数字签名
1.数字签名的基本问题
a.签名值的信任。
b.签名不能伪造和抵赖
c.签名不能重用
d.被签名的文件不能改变
2.5 密钥交换协议
通常要生成一个临时密钥用于对信息进行加密,这个密钥成为会话密钥。
2.6 鉴别协议
鉴别是指确定一个人的身份,即确定一个人是否是他所宣称的身份。
2.6.1 基于口令的鉴别协议
口令是最常用和最常见的鉴别协议。
口令保密的两种方法:
a.一种是将口令采用对称加密算法进行加密后在数据库保存,然后在鉴别的时候对用户输入的口令作相同的运算,如果得出的值跟数据库保存的值一致,那么鉴别就通过。
b.一种是使用单向散列函数替代对称加密函数,其他过程都基本一样。