一、前言
本系列包含从古至今的一些密码算法的一些简单原理。主要是方便自己记住一些密码算法的大致内容。
二、隐写术与密码
隐写术(Steganography)是一种隐藏信息本身的技术。例如:我国古代的藏头诗、藏尾诗,就属于隐写术。而在最近几年中,隐写术也有一定的应用,在视频,音频,图像中隐藏一些信息。例如数字水印技术,就属于隐写术的一种。
密码(Cryptography)是一种能够让信息内容变得无法解读的技术,隐藏的是内容。例如RSA算法。密码是我们知道信息就在那里,但是无法解读,而隐写术则是我们根本不知道信息藏在哪里。
三、密码学的目标
- 机密性(仅有发送方和指定的接收方能够理解传输的报文内容。窃听者可以截取到加密了的报文,但不能还原出原来的信息,即不能得到报文内容。)
- 数据完整性(防止信息被篡改,通常使用hash函数)
- 认证(确认信息是否来自于期望的对象)
- 不可否认性(消息发送者无法否认其发送过该消息)
四、密码的分类
1. 对称密码和非对称密码
根据密钥的使用方法,可以分为对称密码和非对称密码(又称公钥密码)两种。对称密码是指在加密和解密的过程中使用同一密钥,如DES, 3DES, IDEA, AES;而非对称密码指在加密和解密时使用不同的密钥,如RSA, ECC, ElgGmal。
对称加密:
非对称加密
2. 受限制的算法和基于密钥的算法
受限制的算法其保密性基于对算法的保密,基于密钥的算法的保密性基于对密钥的保密。密码的保密性应该基于对密钥的保密而不是对算法的保密,即密码所使用的算法应该是可以公开的。
3. 分组加密和流密码
分组加密是指将明文分成固定长度的分组块,利用相同的密钥和算法对每一块进行佳美。输出也是固定长度的密码分组。如DES, IDEA, RC2, RC4, RC5。
流密码又称序列密码,每次只加密一个密位或一个明文。如一次一密算法(One-Time-Pad)。
五、其他
密码学的发展:
从密码学的发展阶段来看,有古典密码学,近代密码学,现代密码学。
密码学的常识:
- 不使用依赖于算法保密性的密码算法。密码学发展到今天,密码的保密性应该依赖于密钥的保密性而非算法本身的保密性。
- 使用低强度的密码比不使用任何加密更加危险。那是因为一旦使用了密码,用户的保密意识往往会降低。
- 任何密码总有一天会被破解。但是一次性密码本理论上无法被破解,但实际操作有困难;量子密码可能无法被破解。
- 密码只是信息安全的一部分。如果用户本身没有防范意识,再好的密码算法都没有用。
加密原理
密码虽然说起来复杂,而且种类繁多。但是到目前为止,密码只有两种基本的加密原理:换位和替换。
换位(置换)就是将语句中的字母进行重新排列,将原先的通顺的语句变得毫无意义。例如:china可以重新排列为anihc(此处只是简单的倒序)。当然,也有其他的重新排列的方式(例如塞塔密码)。 使用此方法加密后的密文和原文的字母以及其数目一致,只是位置不一致。
替换就是将标准的字母表按照某种规则打乱,形成新的字母表。例如:china可以替换为fklqd(此处只是简单的将字母表中的字母往后移动3位)。例如凯撒密码。