客戶和服務(wù)器端的安全通信_第1頁
客戶和服務(wù)器端的安全通信_第2頁
客戶和服務(wù)器端的安全通信_第3頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第三章 密碼技術(shù)基礎(chǔ)分組作業(yè) 客戶和服務(wù)器端的安全通信功能第七組趙鵬 p-zhao07田敏求 tianminqiu卓雪君 zhuoxj07張秋艷 zhang-qy07宋曉明 songxm071 目錄1. 作業(yè)要求 . 32. 作業(yè)分工 . 33. 程序設(shè)計原理 . 33.1 通信協(xié)議設(shè)計 33.2 技術(shù)原理 44.技術(shù)細(xì)節(jié) . 64.1 申請證書 64.2 雙向身份認(rèn)證 84.3 協(xié)商會話密鑰 94.4 生成摘要 94.5 加解密文件 94.6 完整性驗(yàn)證 105實(shí)驗(yàn)演示 1參0 考文獻(xiàn) 16 21. 作業(yè)要求實(shí)現(xiàn)客戶和服務(wù)器端的安全通信功能,其中包括 :(1) 基于公鑰證書,實(shí)現(xiàn)雙向的身份認(rèn)

2、證(2) 會話密鑰協(xié)商(算法自選)(3) 數(shù)據(jù)傳輸:加密、完整性保護(hù)(算法自選)(4) 簡明的設(shè)計文檔圖 1.1 協(xié)議流程圖2. 作業(yè)分工趙鵬: 認(rèn)證, 會話密鑰協(xié)商 , 代碼整合田敏求: 數(shù)據(jù)加解密卓雪君 張秋艷: 通信部分, 摘要生成, 完整性驗(yàn)證, 界面,代碼整合 宋曉明: 文檔3. 程序設(shè)計原理3.1 通信協(xié)議設(shè)計整個通信過程包括了:證書申請、雙向身份驗(yàn)證、會話密鑰協(xié)商、傳送/接收加密文件、文件完整性校驗(yàn)五大部分。具體協(xié)議設(shè)計如圖 3.1 所示。 3 圖 3.1 C/S 通信協(xié)議圖圖中一些符號注釋如下:KS_PUBLIC :服務(wù)器公鑰KS_PRIVATE :服務(wù)器私鑰KC_PUBLIC

3、 :客戶端公鑰KC_PRIVATE :客戶端私鑰n1, n2:隨機(jī)數(shù),用來防止重放攻擊K:會話密鑰Seed:生成會話密鑰的種子M:發(fā)送的明文文件 m:明文文件對應(yīng)的摘要 其中證書采用離線拷貝的方式,保證通信雙方在建立連接前已經(jīng)擁有對方的證 書。在雙向身份驗(yàn)證的過程中采用生成隨機(jī)數(shù)的方式防止了重放攻擊。協(xié)商會話密鑰的過程中傳送的是經(jīng)過加密的生成會話密鑰的種子。傳送文件時,在文件末 尾附上了用 MD5 生成的文件摘要,方便接收方進(jìn)行文件的完整性驗(yàn)證。3.2 技術(shù)原理(1)Openssl簡介SSL 是 Secure Socket Laye(r 安全套接層協(xié)議)的縮寫,目標(biāo)是保證兩個應(yīng)用間 通信的保密

4、性和可靠性 ,可在服務(wù)器端和用戶端同時實(shí)現(xiàn)支持。改協(xié)議能使用戶/服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽,并且始終對服務(wù)器進(jìn)行認(rèn)證,還可選 擇對用戶進(jìn)行認(rèn)證。Openssl是一個功能豐富且自包含的開源安全工具箱。它提供的主要功能有:SSL協(xié)議實(shí)現(xiàn) (包括 SSLv2、SSLv3和 TLSv1)、大量軟算法 (對稱/非對稱 /摘要)、大數(shù) 運(yùn)算、非對稱算法密鑰生成、 ASN.1 編解碼庫、證書請求 (PKCS10)編解碼、數(shù)字 證書編解碼、 CRL 編解碼、 OCSP協(xié)議、數(shù)字證書驗(yàn)證、 PKCS7 標(biāo)準(zhǔn)實(shí)現(xiàn)和PKCS12個人數(shù)字證書格式實(shí)現(xiàn)等功能。Openssl采用 C 語言作為開發(fā)語言,這使得它具

5、有優(yōu)秀的跨平臺性能。 Openssl支 持 Linux 、 UNIX 、windows 、Mac等平臺。 openssl目前最新的版本是 OpenSSL整個軟件包大概可以分成三個主要的功能部分:密碼算法庫、SSL 協(xié)議庫以及應(yīng)用程序。 OpenSSL 的目錄結(jié)構(gòu)自然也是圍繞這三個功能部分進(jìn)行規(guī)劃 的。(2) CryptoAPI 簡介微軟的 CryptoAPI 是 PKI 推薦使用的加密 API 。其功能是為應(yīng)用程序開發(fā)者提供 在 Win32 環(huán)境下使用加密、驗(yàn)證等安全服務(wù)時的標(biāo)準(zhǔn)加密接口。 CryptoAPI 處于 應(yīng)用程序和 CSP(cryptographic service provide

6、r)之間,如圖 3.2 所示。圖 3.2 Microsoft CryptoAPICryptoAPI 的編程模型同 Windows 系統(tǒng)的圖形設(shè)備接口 GDI 比較類似,其中加密 服務(wù)提供者 CSP等同于圖形設(shè)備驅(qū)動程序 ,加密硬件(可選)等同于圖形硬 件,其上層的應(yīng)用程序也類似,都不需要同設(shè)備驅(qū)動程序和硬件直接打交道。CryptoAPI 共有五部分組成:簡單消息函數(shù)( Simplified Message Functions)、低 層消息函數(shù)( Low-level Message Functions)、基本加密函數(shù)( Base Cryptographic Functions)、證書編解碼函數(shù)(

7、 Certificate Encode/Decode Functions)和證書庫管 理函數(shù)( Certificate Store Functions)。其中前三者可用于對敏感信息進(jìn)行加密或 簽名處理,可保證網(wǎng)絡(luò)傳輸信心的私有性;后兩者通過對證書的使用,可保證網(wǎng) 絡(luò)信息交流中的認(rèn)證性。5CryptoAPI 可以從保密和確證這兩方面來保證安全通信。 CryptoAPI 系統(tǒng)有四類函 數(shù):基本 Cryptographic函數(shù)、簡化 Cryptographic 函數(shù)、存儲函數(shù)和驗(yàn)證加密 /解密 函數(shù) ,前兩類函數(shù)提供保密性 ,后兩類函數(shù)提供確證。 CryptoAPI 允許調(diào)用這些函數(shù) 來加密數(shù)據(jù)、交

8、換公鑰、散列一個消息來建立摘要以及生成數(shù)字簽名。CryptoAPI 使用兩種密鑰 :會話密鑰與公鑰 /私鑰對。會話密鑰采用單鑰密碼體制 效率高 ,但必須保證密鑰的安全傳遞。公鑰 /私鑰算法較慢 ,主要用于身份的認(rèn)證以 及用于加密少量數(shù)據(jù) ,例如用于加密會話密鑰。Microsoft CryptoAPI 體系結(jié)構(gòu)如圖 3.3 所示:圖 3.3 Microsoft CryptoAPI 體系結(jié)構(gòu)4. 技術(shù)細(xì)節(jié)4.1 申請證書主要通過 openssl的命令來手工生成證書,主要過程為:(1) 生成 RSA 密鑰對:Openssl genrsa -out prikey.pem 10246(2) 利用密鑰對生

9、成證書請求:Openssl req new key prikey.pem out req.pem(3) 利用 openssl自帶的 ca 來給證書請求簽名 Openssl ca in req.pem out cert.pem notext參數(shù) notext 的作用是生成的證書中不帶明文的生成過程利用同樣的步驟生成 client.pem,server.pem和各自相應(yīng)的私鑰文件 prikeyclient.pem prikeyserver.pem4.2 雙向身份認(rèn)證假設(shè)通信雙方為 A ,B,在通信之前都拿到了對方的證書。那么驗(yàn)證過程為:(1) 生成一個隨機(jī)的字符串 m(2) sha1(m), 利用

10、 hash 算法對 m 做 sha1計算(3) 利用 A 自己的私鑰對 sha1(m)加密,完成簽名 Asha1(m)(4) 利用 B的公鑰來對 m進(jìn)行加密, B<<m>>,然后和第 3步完成的內(nèi)容一起發(fā) 送給 B(5) B利用自己的私鑰對 B<<m>>進(jìn)行解密,同時利用 A 的公鑰對 Asha1(m) 解 密,然后比較內(nèi)容是否相同。(6) 在 B端重復(fù) (1)-(5)的步驟。4.3協(xié)商會話密鑰由 A 端生成一個隨機(jī)的字符串,用這個字符串作為對稱密鑰生成的種子。然后將 這個字符串用 B 的公鑰進(jìn)行加密然后傳輸給 B。B接收到后利用自己的私鑰進(jìn)行

11、解密,得到種子字符串。雙方都利用這個種子字符串來生成對稱加密密鑰。4.4 生成摘要首先獲得指定 CSP密鑰容器句柄,然后創(chuàng)建一個空哈希對象,并將指定的文件加 到指定的哈希對象,進(jìn)行哈希。這樣就實(shí)現(xiàn)了對一個不定長度的文件生成摘要的 過程,摘要長度為 128Bit。4.5 加解密文件(1) 文件加密步驟 打開源文件 "File.txt" 取得密鑰容器( CSP)句柄 根據(jù)用戶輸入的密碼創(chuàng)建一個會話密鑰,即應(yīng)用對稱密鑰對原文件加密。i.ii.iii.iv. 創(chuàng)建一個 Hash對象 用用戶輸入的密碼產(chǎn)生一個散列 通過散列生成一個會話密 鑰 銷毀 Hash 對象 非對稱密鑰由于效率非

12、常低,所以一般不用于對數(shù)據(jù)直接加密,而是對會話 密鑰進(jìn)行加密,然后把它傳送給對方。對方通過非對稱密鑰解密獲得會話密鑰(即對稱密鑰 ),然后再對數(shù)據(jù)文件進(jìn)行解密。 加密數(shù)據(jù)文件i. pbBuffer 循環(huán)讀入待加密文件的固定長度的內(nèi)存塊;如果一次讀入整 個文件,那樣會很浪費(fèi)內(nèi)存空間,而且影響擴(kuò)展性,即存在緩沖區(qū) 溢出的可能。 清理回收工作i. 釋放內(nèi)存緩沖區(qū)空間、密鑰句柄、 CSP 句柄等。(2) 文件解密步驟打開加密文件 "EnctyptedFile.txt"取得密鑰容器( CSP)句柄 根據(jù)用戶輸入的密碼創(chuàng)建一個會話密鑰,即應(yīng)用對稱密鑰對原文件解密。 實(shí)際應(yīng)用中,這個用戶

13、輸入的 “密碼 ”是一個產(chǎn)生密鑰的種子,一旦產(chǎn)生完會話密 鑰,接收方可以使用傳過來的密鑰直接對加密文件進(jìn)行解密,而不用再重復(fù)生成 密鑰的過程。9 解密數(shù)據(jù)文件 清理回收工作 釋放內(nèi)存緩沖區(qū)空間、密鑰句柄、 CSP 句柄等。4.6完整性驗(yàn)證 服務(wù)器端接收到加密文件后,用協(xié)商出來的會話密鑰解密,得到明文文件和相應(yīng) 的摘要字段,對明文使用 MD5 生成摘要,對比摘要信息檢查文件的完整性。 5實(shí)驗(yàn)演示(1) 客戶端界面如圖 5.1 所示:圖 5.1 客戶端運(yùn)行界面10(2) 服務(wù)器端界面如圖 5.2所示:圖 5.2 服務(wù)器端運(yùn)行界面(3) 首先雙方生成各自的證書,并以離線的方式互相拷貝。 服務(wù)器端開啟

14、服務(wù),監(jiān)聽 7070號端口 (可以重新配置 ),客戶端連接服務(wù)器端,通 信雙方進(jìn)行相互的身份認(rèn)證,如圖 5.3 所示:11圖 5.3 雙向身份認(rèn)證示意圖(4) 客戶端發(fā)起協(xié)商會話密鑰的請求,雙方共享一個會話密鑰的種子,如圖5.4 所示:圖 5.4 協(xié)商會話密鑰示意圖(5) 客戶端選擇需要傳送的文件,并使用 MD5 算法對文件生成摘要附在文件末 尾,然后使用步驟 5中協(xié)商的會話密鑰加密文件,傳送至服務(wù)器端,如圖 5.5 所 示:圖 5.5 客戶端生成并發(fā)送加密文件示意圖(6) 服務(wù)器端接收到加密文件,使用協(xié)商出來的會話密鑰對文件進(jìn)行解密,得到 明文文件和摘要信息,如圖 5.6 所示:圖 5.6 服務(wù)器端接受并解密文件示意圖(7) 服務(wù)器端對解密得到的明文文件使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論