安全與加密
對稱加密算法
在對稱加密中,我們需要維護一個 密鑰 ( 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
功能:機密性、認證、完整性、重放保護
兩階段協議:
握手階段:
應用階段: