加密学常识
以下是加密学(Cryptography)的一些基本常识,涵盖核心概念、常见算法类型及其应用场景,适合初学者了解:
一、什么是加密学?
加密学(Cryptography) 是研究如何保护信息安全的科学,主要目的是确保信息的机密性(Confidentiality)、完整性(Integrity)、认证性(Authentication)和不可否认性(Non-repudiation)。
二、加密学的基本术语
- 明文(Plaintext):原始的、未加密的信息。
- 密文(Ciphertext):经过加密处理后的信息,看起来是乱码,只有授权者才能还原。
- 加密(Encryption):将明文转换为密文的过程。
- 解密(Decryption):将密文还原为明文的过程。
- 密钥(Key):用于加密或解密的特殊信息,是保证安全的关键。
- 算法(Algorithm):执行加密/解密的数学规则或步骤。
三、加密学的主要分类
1. 对称加密(Symmetric Cryptography)
- 特点:加密和解密使用同一个密钥。
- 优点:速度快,适合大量数据加密。
- 缺点:密钥分发困难,一旦密钥泄露,安全性丧失。
- 常见算法:
- DES(Data Encryption Standard,已不安全)
- AES(Advanced Encryption Standard,目前最常用的对称加密算法)
- 3DES、RC4、Blowfish 等
例子:你和你的朋友共享一个密码(密钥),用这个密码加密消息发给对方,对方用同一个密码解密。
2. 非对称加密(Asymmetric Cryptography) / 公钥加密
- 特点:使用一对密钥:公钥(Public Key)和私钥(Private Key)
- 公钥可公开,用于加密或验证签名
- 私钥必须保密,用于解密或生成签名
- 优点:解决了密钥分发问题,更安全。
- 缺点:速度较慢,不适合加密大量数据。
- 常见算法:
- RSA(最经典的非对称加密算法)
- ECC(椭圆曲线加密,效率高,安全性强)
- DSA、ElGamal 等
例子:你把公钥发给别人,别人用你的公钥加密消息,只有你用对应的私钥才能解密。或者你用私钥签名,别人用你的公钥验证是你发的。
3. 哈希函数(Hash Function) / 散列函数
- 特点:将任意长度的数据映射为固定长度的哈希值(摘要)
- 特点与用途:
- 不可逆:无法从哈希值还原出原始数据
- 唯一性:输入稍有不同,哈希值差别很大(雪崩效应)
- 用于验证数据完整性、密码存储、数字签名等
- 常见算法:
- MD5(已不安全,易碰撞)
- SHA-1(已不推荐)
- SHA-2(如 SHA-256,目前广泛使用)
- SHA-3
- bcrypt、scrypt、PBKDF2(常用于密码哈希)
例子:你下载一个文件,官方提供了该文件的 SHA-256 哈希值,你下载后自己计算哈希,对比是否一致,确保文件未被篡改。
四、加密学的实际应用
1. HTTPS(SSL/TLS):保障网页浏览的安全,使用非对称加密交换密钥,然后用对称加密传输数据。
2. 数字签名:确保消息来源真实且未被篡改,常用 RSA 或 ECC 实现。
3. 身份认证:如使用公钥基础设施(PKI)、数字证书。
4. 区块链与加密货币:如比特币使用椭圆曲线加密和哈希算法保证交易安全和不可篡改性。
5. 密码存储:网站不直接存用户密码原文,而是存储其哈希值(通常还加盐 salt)。
6. VPN、数据加密、安全通信等
五、加密学中的重要原则
- 柯克霍夫原则(Kerckhoffs's Principle):一个加密系统即便算法公开,只要密钥保密,也应保持安全。
- 密钥管理:再强的算法,如果密钥生成、存储、分发、轮换管理不当,整个系统依然不安全。
- 不要自行设计加密算法:加密算法设计极其复杂,一般应使用经过广泛验证的标准算法(如 AES、RSA、SHA-256)。
六、常见误区
- 使用 MD5 或 SHA-1 存储密码或验证完整性(已不安全)
- 使用弱密钥或重复使用密钥
- 认为“加密了就绝对安全”(还需考虑实现、协议、密钥管理等)
- 自己造轮子设计加密算法或协议(极容易有漏洞)
七、学习资源推荐(入门)
- 书籍:
- 《图解密码技术》(结城浩 著,适合入门)
- 《Applied Cryptography》 by Bruce Schneier(经典,偏技术)
- 在线课程:
- Coursera / edX 上的 Cryptography 相关课程(如斯坦福的 Cryptography I)
- 工具:
- OpenSSL(命令行加密工具)
- GPG / PGP(用于邮件和文件加密)
如果你对某个具体领域(如 HTTPS 原理、数字签名、区块链加密、密码存储等)感兴趣,我可以进一步详细讲解!