最近准备去安全岗实习,因此准备补一下安全方面的基础知识,首要的便是密码学。这个系列是学习过程的笔记,主要来自于MOOC的公开课与《深入浅出密码学》这本书。
基本概念
信息安全的属性
想要满足信息安全,得有以下性质:
- 机密性
别人“看不到”或者看不懂 - 认证
可以认证对面的身份 - 完整性
信息没有被“动过” - 不可否认性
发送方、接收方不可抵赖消息的传输 - 可靠性、可用性、可控性……
密码学正是为了满足以上性质的一些算法
密码学的基本概念(P,C,k,E,D)
明文P-待处理的数据
密文C-处理后的数据
密匙k-秘密参数
加密函数C=E(k,M)
解密函数P=D(k,C)
分类
- 按功能分类:
解决机密性:加密算法;完整性:杂凑函数;认证和不可否认性:数字签名。 - 按使用方式:
对称密匙和非对称密钥。
古代密码思路
- 代替法
如凯撒密码,将字母在字母表中的位置挪动从而替换源字母 - 换位法
不改变明文,而是更改其中的位置,如简单的文本倒置。 - 密码机
用于加密的装置,如二战中德方的enigma
代替法
性质
- 加密函数必须是单映射
- 解密函数必须同加密函数保持一致性
常用算法
1.仿射函数
- a=1时,便是常用的移位密码,如凯撒密码
- a需与26互素(保证是一一映射),故密钥空间大小为26 * f(26)=312,f函数指的是互素。
2.希尔加密
多字符加密,每次加密m个字符,规定一个m*m的可逆矩阵,将m个明文化为对应的行向量,并与其做乘积得到新的行向量,即密文。由于矩阵为可逆的,故其是一一映射
3.维吉尼亚密码
将每一位进行字母表移位,移动的数位为不同值。
置换法
性质
- 将字符按一定的规则移动,但不改变它。
- 希算法的特殊形式,即乘以一个做变换过的m单元矩阵。