密碼(cipher)
// 密碼是一套編碼方案和使用相應解碼方式的結合體
// *明文:使用密碼加密之前的稱為明文
// *密文:使用密碼進行加密的稱為密文
最初的密碼是相當簡單的,很容易就可以破解,于是產生了密碼機:
// 密碼機可以用復雜得多得密碼來快速、精確地對報文進行編碼.它們可以替換字符、改變字符順序、將報文切片,總之是密碼變得更難破解
// *密鑰:要在密碼機中輸入正確地密鑰,解密過程才能正確進行
數字密鑰與編碼函數:
// *數字密鑰只是一些數字,這些數字密鑰值是編 / 解碼算法的輸入
// *編碼算法就是一些函數,這些函數會讀取一塊數據,并根據算法和密鑰值對其進行編 / 解碼
// 給定一段明文P、一個編碼函數E和一個數字編碼密鑰e,就可以生成一段經過編碼的密文C
// 通過解碼函數D和解碼密鑰d,可以將密文C解碼為原始的明文P
對稱密鑰加密技術:
// 在上文中使用的e和d是相等的
// 即,編碼和解碼使用的是同一個密鑰的技術,稱為對稱密鑰加密技術
對稱密鑰加密技術的一個不好地方在于:如果有N個人同時想與服務器進行對話,需要N*N個保密密鑰,這樣管理起來特別困難.
一個更好一點的方案是,使用公開密鑰加密技術:
// 公開密鑰加密技術
// 編碼密鑰是眾所周知的
// 解碼密鑰在各個主機中式不同的
// 這樣,每個人都能找到某個特定主機的公開密鑰,密鑰的建立變得更加簡單.
// 但解碼密鑰是保密的,因此只有接收端才能對發送給它的報文進行解碼
數字簽名:
// 數字簽名是附加在報文上的特殊加密校驗碼.
// 當節點A向節點B發送一條報文時,節點A對摘要應用了一個簽名函數,這個函數用戶的私有密鑰作為參數,計算出簽名
// 一旦計算出簽名,節點A就將其附加在報文的末尾,并將報文和簽名都發送給B
// 節點B接收到報文后,就使用公開密鑰的反函數對簽名進行解碼,并拆包報文得到摘要進行比較
數字證書:
// 數字證書中包含了由某個受信任組織擔保的用戶或公司的相關信息
// 數字證書中一些常見的內容:對象的名稱、過期時間、證書發布者、來自證書發布者的數字簽名
// 服務器證書中包括:Web站點的名稱和主機名、Web站點的公開密鑰、簽名頒發機構的名稱、來自簽名頒發機構的簽名// 通過HTTPS建立了一個Web事務后,現代瀏覽器會自動獲取所鏈接服務器的數字證書
// 瀏覽器在收到證書時,會對簽名辦法機構進行檢查,若是很有權威的公共簽名機構,就進行簽名驗證
// 若對簽名頒發機構一無所知,瀏覽器就會向用戶顯示一個對話框,看看他是否相信這個簽名發布者.
參考《HTTP權威指南》P327~P338