密码学简介¶
密码学(Cryptography)一般可分为古典密码学和现代密码学。
其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。古典密码学主要包含以下几个方面:
- 单表替换加密(Monoalphabetic Cipher)
- 多表替换加密(Polyalphabetic Cipher)
- 奇奇怪怪的加密方式
而现代密码学则起源于 20 世纪中后期出现的大量相关理论,1949 年香农(C. E. Shannon)发表了题为《保密系统的通信理论》的经典论文标志着现代密码学的开始。现代密码学主要包含以下几个方面:
- 对称加密(Symmetric Cryptography),以 DES,AES,RC4 为代表。
- 非对称加密(Asymmetric Cryptography),以 RSA,ElGamal,椭圆曲线加密为代表。
- 哈希函数(Hash Function),以 MD5,SHA-1,SHA-512 等为代表。
- 数字签名(Digital Signature),以 RSA 签名,ElGamal 签名,DSA 签名为代表。
其中,对称加密体制主要分为两种方式:
- 分组密码(Block Cipher),又称为块密码。
- 序列密码(Stream Cipher),又称为流密码。
一般来说,密码设计者的根本目标是保障信息及信息系统的
- 机密性(Confidentiality)
- 完整性(Integrity)
- 可用性(Availability)
- 认证性(Authentication)
- 不可否认性(Non-repudiation)
其中,前三者被称为信息安全的 CIA 三要素 。
而对于密码破解者来说,一般是要想办法识别出密码算法,然后进行暴力破解,或者利用密码体制的漏洞进行破解。当然,也有可能通过构造虚假的哈希值或者数字签名来绕过相应的检测。
一般来说,我们都会假设攻击者已知待破解的密码体制,而攻击类型通常分为以下四种:
攻击类型 | 说明 |
---|---|
唯密文攻击 | 只拥有密文 |
已知明文攻击 | 拥有密文与对应的明文 |
选择明文攻击 | 拥有加密权限,能够对明文加密后获得相应密文 |
选择密文攻击 | 拥有解密权限,能够对密文解密后获得相应明文 |
Note
注:之前在这里曾写过这些攻击常见的场景,随着不断地学习,渐渐意识到这些攻击类型侧重描述攻击者的能力,有可能适用于各种各样的场景。故进行修正。
这里推荐一些资料
- 可汗学院公开课
- 深入浅出密码学——常用加密技术原理与应用
- https://cryptopals.com/,一堆密码学的练习题目。
Note
推荐在看完公开课的情况下,以及简单看看电子书的情况下在考虑是否要购买书,因为书买回来一般都被闲置起来了。
参考¶
Info
本节大部分定义与例子参考了维基百科。