【正文】
另一方面壓縮后的消息冗余很少,增加密碼分析的困難。 PGP的兼容電子郵件服務(wù) ?PGP使用 Base64編碼將二進(jìn)制數(shù)據(jù)流轉(zhuǎn)換成可打印 ASCII文本,以解決郵件的傳輸問題。 ?PGP可被配置為僅對(duì)消息中的某些部分(如簽名部分)進(jìn)行 Base64編碼轉(zhuǎn)換。 鑒別 + 機(jī)密性 + 壓縮 + 兼容性 ?同時(shí)使用以上四種服務(wù)的過程: ?發(fā)送方先對(duì)明文消息計(jì)算簽名,將簽名放在消息前面。 ?簽名與明文一起被壓縮。 ?用會(huì)話密鑰對(duì)壓縮后的數(shù)據(jù)塊進(jìn)行加密。 ?用接收方的公鑰加密會(huì)話密鑰,放在消息的前面。 ?將整個(gè)數(shù)據(jù)塊轉(zhuǎn)換成 Base64編碼格式: EncodeBase64(EKUb(KAB) || EKAB (Zip (Sgn || Data))) PGP的郵件分段服務(wù) ?許多電子郵件系統(tǒng)能夠接收的最大消息長(zhǎng)度不超過 50,000字節(jié)。 ?PGP在完成對(duì)消息的全部處理后,自動(dòng)將超過長(zhǎng)度的消息分成小塊傳輸,會(huì)話密鑰和簽名只在第一個(gè)片段中出現(xiàn)。 ?接收端去掉每個(gè)片段的信頭,然后將所有的片段重新組裝成一個(gè)數(shù)據(jù)塊。 使用 PGP發(fā)送一個(gè)消息 PGP的密鑰管理 ?PGP使用 4種密鑰: ?一次性會(huì)話密鑰,公開密鑰,私有密鑰,基于短語(yǔ)的對(duì)稱密鑰。 ?對(duì)密鑰的要求: ?一次性會(huì)話密鑰必須是不可預(yù)測(cè)的。 ?用戶可以同時(shí)擁有多個(gè)公鑰 /私鑰對(duì),因而需要有一種方法來(lái)標(biāo)識(shí)不同的密鑰。 一次性會(huì)話密鑰的產(chǎn)生 ?PGP一般使用 CAST128加密算法加密消息,一次性會(huì)話密鑰由 CAST128自己產(chǎn)生: ?將一個(gè) 128比特的密鑰和兩個(gè) 64比特的數(shù)據(jù)塊輸入一個(gè)隨機(jī)數(shù)生成器,這兩個(gè) 64比特的數(shù)據(jù)塊作為明文被加密,生成的兩個(gè) 64比特密文塊串接在一起形成 128比特的會(huì)話密鑰。 ?作為明文的 128比特?cái)?shù)據(jù)來(lái)自用戶鍵盤輸入產(chǎn)生的隨機(jī)數(shù)流。 ?這個(gè)隨機(jī)輸入與 CAST128前一次輸出的會(huì)話密鑰相結(jié)合,形成隨機(jī)數(shù)生成器使用的加密密鑰。 密鑰標(biāo)識(shí) ?PGP用公鑰的最低 64比特作為該公鑰的 ID,用戶ID和密鑰 ID(幾乎)可以唯一地標(biāo)識(shí)一個(gè)密鑰。 ?實(shí)際上,消息的簽名部分包括 4個(gè)字段: ?生成簽名的時(shí)間戳 ?數(shù)字簽名 ?消息摘要的前兩個(gè)字節(jié) ?發(fā)送者公鑰的 ID ?消息的會(huì)話密鑰也包含 2個(gè)字段: ?用接收者公鑰加密的會(huì)話密鑰 ?接收者公鑰的 ID 密鑰環(huán)( key ring) ?PGP在每個(gè)節(jié)點(diǎn)上用私鑰環(huán)和公鑰環(huán)保存密鑰。 ?私鑰環(huán) ?保存用戶自己的公鑰 /私鑰對(duì),由用戶 ID或密鑰 ID索引。 ?私鑰用 CAST128(或 IDEA, 3DES)加密后放入私鑰環(huán)。 ?公鑰環(huán) ?用于保存其他用戶的公鑰,由用戶 ID或密鑰 ID索引。 ?每一項(xiàng)對(duì)應(yīng)一個(gè)公鑰證書。 私鑰的存儲(chǔ) ?私鑰加密后放入私鑰環(huán): ?當(dāng)系統(tǒng)生成一個(gè)公鑰 /私鑰對(duì)時(shí),要求用戶輸入一個(gè)用于加密私鑰的短語(yǔ)。 ?用戶選擇一個(gè)短語(yǔ),系統(tǒng)用 SHA1得到該短語(yǔ)的散列碼( 160比特),將短語(yǔ)丟棄。 ?系統(tǒng)用散列碼中的 128比特作為密鑰,采用某種加密算法對(duì)私鑰進(jìn)行加密,然后將散列碼丟棄。 ?當(dāng)用戶想從密鑰環(huán)獲取一個(gè)私鑰時(shí),他必須提供相應(yīng)的短語(yǔ); PGP計(jì)算短語(yǔ)的散列碼,從中得到密鑰,然后解密私鑰。 公鑰管理 ?PGP使用一種以用戶為中心的信任管理模型: ?用戶之間相互簽發(fā)證書,一個(gè)用戶可以讓多人為他簽發(fā)證書。 ?用戶負(fù)責(zé)分發(fā)他們的公鑰證書。 ?用戶根據(jù)自己對(duì)證書簽發(fā)者的信任程度來(lái)決定是否信任證書。 ?撤銷公鑰: ?公鑰擁有者發(fā)布一個(gè)帶有自己簽名的公鑰撤銷證書,然后在盡可能大的范圍內(nèi)、盡可能快地分發(fā)該證書。 ?撤銷公鑰是整個(gè)系統(tǒng)最薄弱的環(huán)節(jié)。 9 Web安全 ?針對(duì) Web應(yīng)用的安全攻擊,按照主動(dòng)攻擊與被動(dòng)攻擊分類: ?被動(dòng)攻擊:監(jiān)聽瀏覽器與服務(wù)器之間的網(wǎng)絡(luò)流量。 ?主動(dòng)攻擊:假冒他人,修改網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù),修改網(wǎng)站上的信息等。 ?按照攻擊發(fā)生的位置分為: ?針對(duì) Web服務(wù)器的攻擊 ?針對(duì) Web瀏覽器的攻擊 ?針對(duì)瀏覽器與服務(wù)器之間的網(wǎng)絡(luò)流量的攻擊 不同安全機(jī)制在協(xié)議棧中的位置 H T T P F T P S M T PT C PI P / I P S e cH T T P F T P S M T PT C PI PS S L o r T L SS / M I M E P G P S E TT C PI PS M T PU D PK e r b e r o sH T T P圖 8 1 5 各 種 安 全 機(jī) 制 在 T C P / I P 棧 中 的 位 置( a ) 網(wǎng) 絡(luò) 層 ( b ) 傳 輸 層 ( c ) 應(yīng) 用 層SSL/TLS ? SSL建立在 TCP之上,依靠 TCP提供可靠的端到端連接。 ? SSL是涉及到兩個(gè)層次的一組協(xié)議: ?SSL記錄協(xié)議:為各種高層協(xié)議(如 HTTP)提供基本的安全服務(wù)。 ?其它三個(gè)高層協(xié)議:用于 SSL交換管理。 S S L C h a n g e C i p h e r S p e c P r o t o c o lT C PI PS S L R e c o r d P r o t o c o l圖 8 1 6 S S L 協(xié) 議 棧S S L H a n d s h a k e P r o t o c o lS S L A l e r t P r o t o c o lH T T PSSL會(huì)話與 SSL連接 ?SSL session: ?客戶和服務(wù)器之間的一個(gè)關(guān)聯(lián),由 SSL握手協(xié)議創(chuàng)建。 ?定義了一組安全參數(shù),這組安全參數(shù)可在多個(gè) SSL連接間共享。 ?使用 SSL會(huì)話的目的是為了避免每次建立新的連接時(shí)都協(xié)商新的安全參數(shù)。 ?SSL connection: ?對(duì)等實(shí)體間的一種聯(lián)系,每個(gè) SSL連接與一個(gè) SSL會(huì)話關(guān)聯(lián)。 SSL記錄協(xié)議 ?SSL記錄協(xié)議為 SSL連接提供兩種服務(wù): ?機(jī)密性:通過加密 SSL載荷實(shí)現(xiàn)。 ?完整性:通過消息鑒別碼保護(hù)。 ?SSL記錄協(xié)議的操作過程: ?從上層接收一個(gè)要傳輸?shù)膽?yīng)用消息,將消息劃分成長(zhǎng)度不超過 214字節(jié)的數(shù)據(jù)塊。 ?(可選)對(duì)數(shù)據(jù)塊進(jìn)行壓縮。 ?使用加密散列函數(shù)對(duì)數(shù)據(jù)塊計(jì)算消息鑒別碼。 ?使用對(duì)稱密鑰算法對(duì)(壓縮的)數(shù)據(jù)塊及消息鑒別碼進(jìn)行加密,加密算法可以是 DES、 3DES、 IDEA、 RC等。 ?在處理完的數(shù)據(jù)塊前加上 SSL頭中,包括內(nèi)容類型、 SSL版本號(hào)、壓縮數(shù)據(jù)塊的長(zhǎng)度等。 使用 SSL傳輸數(shù)據(jù) SSL握手協(xié)議 ?允許服務(wù)器和客戶之間相互鑒別,并協(xié)商加密算法、MAC算法及密鑰等。 ?握手協(xié)議由客戶和服務(wù)器之間的一系列消息交換組成: ?瀏覽器向服務(wù)器發(fā)送一個(gè)建立 SSL會(huì)話的請(qǐng)求消息,說明可支持的 SSL協(xié)議的最高版本、會(huì)話 ID、支持的加密算法(按優(yōu)先級(jí)從高到低排列)和壓縮方法等,以及瀏覽器選擇的一個(gè)隨機(jī)數(shù) Rc。 ?服務(wù)器從瀏覽器給出的選擇中確定合適的 SSL版本號(hào)、加密算法和壓縮方法,與服務(wù)器選擇的一個(gè)隨機(jī)數(shù) Rs一起發(fā)送給瀏覽器。 ?服務(wù)器向?yàn)g覽器發(fā)送它的公鑰證書(和必要的證書鏈)以及其它消息,通知客戶發(fā)送結(jié)束。 ?瀏覽器檢查簽發(fā)證書的 CA是否在瀏覽器的可信 CA列表中,如果不在則向用戶警告該問題,如果在則使用該 CA的公鑰來(lái)驗(yàn)證證書,得到服務(wù)器的公鑰。 SSL會(huì)話建立示例 SSL握手協(xié)議(續(xù)) ?如果客戶也需要被鑒別(收到服務(wù)器的證書請(qǐng)求消息),則瀏覽器向服務(wù)器發(fā)送它的公鑰證書。 ?瀏覽器生成一個(gè) 48字節(jié)的隨機(jī)數(shù),稱預(yù)密鑰,用服務(wù)器的公鑰加密后發(fā)送給服務(wù)器。 ?客戶和服務(wù)器各自從預(yù)密鑰、 Rc和 Rs中計(jì)算加密數(shù)據(jù)時(shí)使用的會(huì)話密鑰。 ?瀏覽器向服務(wù)器發(fā)送一個(gè)消息,通知它后面的消息都用這個(gè)會(huì)話密鑰加密,然后發(fā)送一個(gè)用協(xié)商的算法及密鑰加密的消息,指示握手協(xié)議的瀏覽器部分完成。 ? 服務(wù)器向?yàn)g覽器發(fā)送一個(gè)消息,通知它后面的消息都用這個(gè)會(huì)話密鑰加密,然后發(fā)送一個(gè)用協(xié)商的算法及密鑰加密的消息,指示握手協(xié)議的服務(wù)器部分完成。 課外練習(xí) ?作業(yè) ?14, 18, 23 ?思考題 ?7, 15, 26, 27