問題
隨着互聯網和物聯網的發展,安全性問題也顯得尤爲重要,關於用戶信息泄露或者網站安全漏洞的報道也越來越多。
信息安全
- 本地敏感信息的機密性
-- 數據庫或文件中關鍵字段的加密
-- 訪問授權限制
- 網絡傳輸的安全性
-- 身份的合法性
-- 通信的機密性
-- 信息的完整性
要解決這些問題,需要計算機密碼學 + 授權限制 + 規章制度等各種措施去保障
網絡傳輸過程環境更復雜,不可控性更大,所以 重點講網絡傳輸的安全性和怎樣使用密碼學算法解決此問題。
網絡傳輸的安全性
互聯網中使用最廣泛的協議就是HTTP,而HTTP是不安全的存在的問題。
-- 網站的合法性
-- 客戶端的合法性
-- 通信的機密性
-- 信息的完整性
HTTPS就是來解決這些問題的
如何解決?
- 網站的合法性 -- 證書
- 客戶端的合法性 -- 證書
- 通信的機密性 – 數據加密
- 信息的完整性 – 消息認證碼
實現過程需要用到各種密碼學算法
密碼學算法分類
- 消息編碼:如BASE64
- 對稱加密:DES 、3DES、AES(最新標準)
- 非對稱加密:RSA、DH祕鑰交換
- 摘要算法:MD類、SHA類、MAC類
- 簽名算法:RSASignature、DSASignature
其中籤名算法是非對稱加密和摘要算法的組合應用
學習的意義
學會了這些算法,我們可以根據實際情況進行組合應用,來保證通信的安全性;不一定要全套都走HTTPS
BASE64編碼
用來對二進制數據進行編碼,轉換成一個字符串;比如:二進制的祕鑰、圖片,或者url中傳的字符串(變成不易被識別的字符),你可以把它理解成一個公開了祕鑰的加密算法(祕鑰就是BASE64的編碼表)
算法 3*8 = 4*6 不夠的補0 |
Base64編碼要求把3個8位字節(3*8=24)轉化爲4個6位的字節(4*6=24),之後在6位的前面補兩個0,形成8位一個字節的形式。 如果剩下的字符不足3個字節,則用0填充,完全的六位填充輸出字符使用'=',因此編碼後輸出的文本末尾可能會出現1或2個'='。 爲了保證所輸出的編碼位可讀字符,Base64制定了一個編碼表,以便進行統一轉換。編碼表的大小爲2^6=64,這也是Base64名稱的由來。 |
BASE64編碼表
example
hello ---> aGVsbG8=
1. hello --> 01101000 01100101 01101100 01101100 01101111
2. 補全 01101000 01100101 01101100 01101100 01101111 00000000
3. 6個bit作爲一個編碼單位
011010 000110 010101 101100 011011000110 111100 000000
26 6 21 4427 6 60=
a GV s bG 8 =
加密通信模型