密码算法也叫密码,包含加密算法和解密算法,一般模型为:
三种密码体制,分别是对称密码体制,非对称密码体制,公开密码体制。
- 对称密码体制为解密和解密共用一种密钥,或者知道其中一个可以很轻易的推出另外一个,也称为传统密码体制,其保密性取决于对所有密钥的保密。如DES算法和AES算法。
- 非对称密码体制 和对称密码体制相反,也称为双密钥体制。
- 公开密钥体制 一般将加密密钥公开。如RSA算法。
- 还有一种最早出现的古典密码体制,如比较典型的是凯撒密码和维吉尼亚密码
两种算法,分别是序列密算法和分组算法
- 序列算法,以位(一般为8bit)为单位进行操作,一次仅对一个位进行运算。如序列密码,凯撒密码,维吉尼亚密码一定意义上也属于序列密码的范畴。香农证明一次一密加密法是理论上安全的加密法。序列密码就以此来设计的。
- 分组算法,将明文数字序列按固定长度分组,并用同一密钥和同一加密算法逐组加密,从而将各明文分组变换成密文分组的密码。
分组算法利用至少一种非线性变换,表现在密码中就是所谓的S盒了,S盒的指标的好坏直接决定了密码算法的好坏。DES、AES、RSA属于分组密码,它们仅有唯一一组S盒的转换。
攻击密码的方法:
- 穷举攻击 将所有可能的密码都尝试一遍
- 统计分析攻击 通过分析密文和明文之间的对应关系以达到破解密码的目的
- 数学分析攻击 根据加密算法的数学依据,通过数学求解的方式破解密码
- 社会工程学 利用人性弱点观察、获取有价值信息的方法,是一种欺骗
破解密码的类型
- 唯密文攻击 仅知道密文用以获得明文
- 已知明文攻击 知道一部分的密文和对应的明文,试图得到更多的明文,或者得到密钥
- 选择明文攻击 可以选择特定的明文块去加密。用以获得密钥
一个优秀的密码系统要满足
- 实际是不可破的(即在有限的时间不能够破解)
- 系统要易于实现与实践
- 不依赖于对算法的保密(而依赖于对密钥的保密)
- 所有的密钥都要对 加 / 脱密算法有效
- 包含一定的认证,防止信息被篡改、删除、重放和伪造等。即使得接收者能都识别和确认信息的真伪。一般采用数字签名和现时时间和访问次数或者第三方认证中心。其基本要求包含:
1、证实信息是合法真实的
2、不可抵赖性
3、任何人不能伪造他人的信息
4、提供认证中心在发生争执时进行仲裁
在设计密码系统时要遵循,攻击者知道没有进行保密的一切信息。