【一】密码学笔记 - 《图解密码技术》第三版
1. 单向散列函数
当我们在一些大型的软件门户网站下载软件的时候,通常软件发布者会发布软件的同时发布软件的散列值。散列值就是使用单向散列函数计算出来的,比如我们常见的hash。
单向散列函数保证的并不是机密性,而是完整性。
2. 数字签名
数字签名是一种能够确保完整性、提供认证并防止否认的密码技术。
3. 密码学家的工具箱
对称密码、公钥密码、单向散列函数、消息认证码、数字签名、伪随机数生成器
4. 隐写术
隐藏消息本身,比如藏头诗、数字水印。 密码隐藏的是内容,隐写术隐藏的是消息本身。而且他俩是可以结合在一起使用的。
5. 密码的常识
- 不要使用保密的密码算法
- 使用低强度的密码比不进行任何加密更危险
- 任何密 码总有一天都会被破解
- 密码知识信息安全的一部分
5.1 不要使用保密的密码算法
密码算法的密码最终无一例外地都会被暴露出来,使用保密的密码算法会整个密码系统都随之土崩瓦解。
开发高强度的密码算法是非常困难的。密码算法的强度并不像数学一样能够进行严密的证明。 如果将密码算法的详细信息以及程序的源代码全部交给专业密码的破译者,并为其提供大量的明文和密文样本,在这样的情况下破译一段密文任然会花上相当一段时间,那么就说明这是高强度密码。
6. 凯撒密码
7. 简单替换密码
将需要加密的内容实用其他字符进行代替。
在解密的时候需要替换表才能进行解密。
8. 一些密码学中经常用到的名词
8.1 密钥空间 (keyspace)
一种密码能够使用的“所有密钥的集合”称为密钥空间。密钥空间越大,密码就越难破解。
8.2 频率分析
是一种密码破译的方法,当你的密文足够多的时候就会产生规律,破译者会根据这个规律去破译密码。 频率分析利用了明文中的字母出现频率与密文中的字母出现频率一致的这一特性。
- 除了高频字母以外,低频字母也能够成为线索
- 搞清开头和结尾能够成为线索,搞清单词之间的分隔也能够成为线索
- 密文越长越容易破译
- 同一个字母连续出现能够成为线索
- 破译的速度会越来越快
8.3 密钥加密密钥 (Key Encrypting Key, KEK)
用来加密通信密码的成为密钥加密密钥。