1. 密码
1.1 发送者、接收者、窃听者
当某个人向另一个人发送信息时,发出信息的人称为发送者,收到信息的人称为接收者,被发送的信息有时也统称为消息
在消息发送的过程中,会经过多台计算机和通信设备的中转,就存在被窃听者偷看到的可能性
窃听者有可能是安中在通信设备上的某种窃听器,也可能是安装在软件和服务器上的某些程序
1.2 加密与解密
明文:加密前的消息称为明文
密文:加密后的消息称为密文
加密:将明文加密为看不懂的密文
解密:将密文恢复成明文的过程
1.3 密码保证了消息的机密性
1.4 破译
密码破译:接收者以外的其他人试图将密文还原为明文,则称为密码破译,简称破译,也称密码分析
破译者:进行破译的人被称为破译者
2. 对称密码与公钥密码
2.1 密码算法
算法:用于解决复杂问题的步骤,通常称为算法
加密算法:从明文生成密文的步骤,即加密的步骤,称为加密算法
解密算法:解密的步骤称为解密算法
密码算法:加密、解密的算法合在一起统称为密码算法
2.2 密钥
密码算法中需要密钥
2.3 对称密码与公钥密码
根据密钥的使用方法,可以将密码分为对称密码和公钥密码两种
对称密码:是指在加密和解密时使用同一密钥的方式
公钥密码:是指在加密和解密时使用不同密钥的方式,又称非对称密码
2.4 混合密码系统
将对称密码和公钥密码结合起来的密码方式称为混合密码系统,这种系统结合了对称密码和公钥密码两者的优势
3. 其他密码技术
密码技术所提供的并不仅仅是基于密码的机密性,用于检验消息是否被篡改的完整性、以及用于确认对方是否是本人的认证都是密码技术的重要部分
3.1 单向散列函数
为了防止软件被篡改,会在发布软件时,发布该软件的散列值,散列值是用单向散列函数计算出来的值
单向散列函数是一种保证完整性的密码技术
完整性是指“数据是正牌的而不是伪造的”,使用单向散列函数就可以检测出数据是否被篡改过。
3.2 消息认证码
为了确认消息是否来自所期望的通信对象,可以使用消息认证码技术
消息认证码是一种能够保证完整性和提供认证的密码技术
3.3 数字签名
能够防止伪装、篡改和否认等威胁的技术,就是数字签名
数字签名就是一种将现实世界中的签名和盖章移植到数字世界中的技术
数字签名是一种能够确保完整性、提供认证并防止否认的密码技术
3.4 伪随机数生成器
伪随机数生成器是一种能够模拟产生随机数列的算法。
4. 隐写术与数字水印
隐写术:能够隐藏消息本身
隐写术的目的是隐藏消息本身,搞清楚嵌入消息的方法就可以获得消息内容,并不能代替密码
数字水印就运用了隐写术的方法。
数字水印是一种将著作权拥有者及购买者的信息嵌入文件中的技术
密码隐藏的是内容,隐写术隐藏的是消息本身。通过将密码与隐写术相结合,就可以同时产生两者各自具备的效果
5.密码与信息安全常识
5.1 不要使用保密的密码算法
原因:①密码算法的秘密早晚会公诸于世;②开发高强度的密码算法是非常困难的
试图通过对密码算法本身进行保密来确保安全性的行为,一般称为隐蔽式安全性,这种行为是危险且愚蠢的
高强度密码:将密码算法的详细信息以及程序源代码全部交给密码破译者,并且为其提供大量的明文和密文样本,如果在这样的情况下破译一段新的密文依然需要花上相当长的时间,就说明是高强度的密码
5.2 使用低强度的密码比不进行任何加密更危险
与其使用低强度的密码,还不如从一开始就不使用任何密码
低强度的密码会使用户获得一种“错误的安全感”,通常会导致用户在处理一些机密信息的时候麻痹大意
5.3任何密码总有一天都会被破解
无论任何密码算法所生成的密文,只要将所有可能的密钥全部尝试一遍,就总有一天可以破译出来,因此,破译密文所需要花费的时间,与要保密的明文的价值之间的权衡就显得非常重要。