引言
- 在网站的安全性架构中,常常用到各种加密方法和算法;
- 本文总结了几种加密方法的原理,以备不时之用;
- 本文不涉及技术细节;
单项散列加密
- 原理:采取某种算法,使得通过明文可以得到密文,但是不能由密文反推明文;这类算法的特点是,输入变化微小也能引起结果的大幅变化;
- 应用场景1:为安全起见,用户密码是加密后存入数据库中,验证身份时只对比密文,不对比明文;这种方法常被攻击者用彩虹表攻击(常用密码明文及其密文之间的对应关系表);
- 应用场景2:用于生成信息摘要、验证信息的完整性等;
- 代表算法:MD5,SHA;
对称加密
- 原理:加密和解密使用同一个密钥,适合对大量数据进行加密;
- 关键点:密钥的安全性是加密算法有效性的保证;
- 代表算法:DES,RC;
非对称加密
- 分为私钥(所有者掌握)和公钥(公开),公钥加密只能私钥解开,私钥加密只能公钥解开;
- 应用场景1:在传递少量敏感信息时(如验证身份),可以用公钥加密,经传输后,对方使用私钥解密,这样即便传输过程中信息泄露,攻击者也不能获取明文;
- 应用场景2:签名者用私钥对信息(数字签名)加密,接受者用公钥进行解密,由于只有发送者掌握私钥,所以发送者对该信息不能抵赖;
- 代表算法:RSA;
HTTPS依赖的加密算法
- HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用 TLS/SSL 加密的 HTTP 协议。
- HTTP 协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议 TLS/SSL 具有身份验证、信息加密和完整性校验的功能,可以避免此类问题。
- TLS/SSL 全称安全传输层协议 Transport Layer Security, 是介于 TCP 和 HTTP 之间的一层安全协议,不影响原有的 TCP 协议和 HTTP 协议,所以使用 HTTPS 基本上不需要对 HTTP 页面进行太多的改造。
- TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。
如何保证密钥安全:
- 决不能把密钥写在源码中;
- 密钥也尽量不要写在配置文件中;
- 方案一:将密钥和算法放置在独立的服务器上,甚至做成一个专用的硬件设备,由专人维护,独立提供加密解密服务;这种方法每次都要远程调用服务,性能不太好;
- 方案二:将加解密算法放在应用系统中,密钥本身放在独立的服务器中,这样可改善性能;