安全与加密
对称加密算法
在对称加密中,我们需要维护一个 密钥 ( secret key )。数据加密者根据加密算法用 密钥 对 明文 进行加密,得到不可读懂的 密文 。数据解密者根据加密算法,用同样的 密钥 对密文进行解密,得到原来的明文。
如上图,在加密和解密的过程中,我们用到了同一个的 密钥 ,这样就是 对称加密算法 中对称一词的由来。那么,对称加密算法都有哪些呢?各自有什么特点呢?
- AES ,高级加密标准,新一代加密算法标准,速度快,安全级别高;
- DES ,数据加密标准,速度较快,适用于加密大量数据,但安全性较弱;
- Blowfish ,使用变长密钥,运行速度很快,非专利算法,没有使用限制;
- etc
安全级别 ( Security Level ) | 工作因素 ( Work Factor ) | 算法 ( Algorithm ) |
---|---|---|
薄弱 ( Weak ) | $ O(2^{40}) $ | DES |
传统 ( Legacy ) | $ O(2^{64}) $ | RC4 |
基准 ( Baseline ) | $ O(2^{80}) $ | 3DES |
标准 ( Standard ) | $ O(2^{128}) $ | AES-128 |
较高 ( High ) | $ O(2^{192}) $ | AES-192 |
超高 ( Ultra ) | $ O(2^{256}) $ | AES-256 |
根据安全性,对称加密算法应该优先选择 AES ,位数尽可能大,例如 AES-256 。
由于所有参与者共享密钥,只要一人造成泄露便万劫不复,这是对称加密最大的弱点。因此,对称加密密钥分发、保管必须严格控制,以免泄露。
非对称加密算法
为解决对称加密共享密钥引发的问题,计算机科学家发明了一种更神奇的加密方式。这种加密方式需要两个密钥,一个是 公钥 ( public key )、一个是 私钥 ( private key )。私钥由自己保管,不能泄露;公钥分发给任何需要与自己通讯的参与者,无须保密。
数据加密者根据加密算法,用公钥对明文进行加密,得到不可读懂的密文。数据解密者根据加密算法,用私钥对密文进行解密,得到原来的明文。
由于加密环节和解密环节所用的密钥不同,因此这种加密方式也称为 非对称加密 ( asymmetric encryption )。由于公钥可以对外公开,也就不用刻意保护了。
此外,如果数据用私钥进行加密,那么只有用公钥才能解密。由于公钥是公开的,这种机制一般不用于加密数据,而用于对数据进行 签名 。
单向散列(哈希)
# md5sum -c file
[root@localhost bak]#cat md5.log
8030797db7e4fc4f71c18658bfd662f5 /bak/fstab
[root@localhost bak]#md5sum -c md5.log
/bak/fstab: OK
[root@localhost bak]#vim fstab
[root@localhost bak]#md5sum -c md5.log
/bak/fstab: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
数字签名过程
中间人攻击
CA和证书
证书获取
证书类型
证书授权机构的证书
服务器
用户证书
获取证书方式
使用证书授权机构
自签名证书
安全协议
SSL:Secure Socket Layer
TLS:Transport Layer Security
常用:TLS 1.2
功能:机密性、认证、完整性、重放保护
两阶段协议:
握手阶段:
应用阶段: