基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)_第1頁(yè)
基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)_第2頁(yè)
基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)_第3頁(yè)
基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)_第4頁(yè)
基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 編號(hào) 畢業(yè)論文題 目基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)學(xué)生姓名學(xué) 號(hào)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)班 級(jí)指導(dǎo)教師講師二 年 月誠(chéng)信承諾書(shū)本人鄭重聲明:所呈交的畢業(yè)設(shè)計(jì)(論文)(題目: 基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn))是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的成果。盡本人所知,除了畢業(yè)設(shè)計(jì)(論文)中特別加以標(biāo)注引用的內(nèi)容外,本畢業(yè)設(shè)計(jì)(論文)不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。作者簽名: 年 月 日 (學(xué)號(hào)):畢業(yè)設(shè)計(jì)(論文)報(bào)告紙基于PKI技術(shù)的文件保密系統(tǒng)的實(shí)現(xiàn)摘 要文件傳輸作為網(wǎng)絡(luò)信息交換的關(guān)鍵技術(shù), 文件安全性將直接影響信息系統(tǒng)的安全性能。傳統(tǒng)網(wǎng)絡(luò)上的文件傳輸并沒(méi)有對(duì)

2、數(shù)據(jù)進(jìn)行安全處理,達(dá)不到安全的需求。本文對(duì)文件保密系統(tǒng)所涉及的加密算法基礎(chǔ)及OpenSSL做大量研究,并介紹了公開(kāi)密鑰基礎(chǔ)設(shè)施和數(shù)字簽名的基本原理,在此基礎(chǔ)上,詳細(xì)闡述了安全文件傳輸系統(tǒng)的設(shè)計(jì)過(guò)程與實(shí)現(xiàn)細(xì)節(jié)并分析了安全文件傳輸系統(tǒng)的安全性。對(duì)于數(shù)據(jù)的加密算法, 本文在分析比較目前常用的加密算法的基礎(chǔ)上, 同時(shí)兼顧了加密解密的效率, 采用了比較成熟的加密算法:DES、RSA和安全的散列算法:SHA-1。從而實(shí)現(xiàn)了網(wǎng)上文件傳輸中的身份認(rèn)證,保密性,完整性和不可否認(rèn)性。關(guān)鍵詞:文件保密傳輸系統(tǒng),公鑰基礎(chǔ)設(shè)施,數(shù)字簽名Design and implementation of secret file t

3、ransmission system based on PKIAbstractThe key technologies of file transfer as a network information exchange, file security will directly affect the security of information systems performance. Traditional solution is not enough to protect the secret data.The document mainly focus on a substantial

4、 research about the knowledge involved in the files secret system, such as basic encryption algorithm, open-source OpenSSL library, and briefly introduces the basic principles of Public Key Infrastructure and digital signatures. On this basis, elaborate the design process of

5、 the secure file transfer system and the implementation details and analyze the security of a secret file transmission system. Data encryption algorithm, on the basis of analysis compares the current commonly used encryption algorithms, taking into account the efficiency of encryption and decryption

6、, using a more mature encryption algorithm: DES, RSA and secure hash algorithm: SHA-1. In order to achieve the authentication, confidentiality, integrity, and non-repudiation of the data.Key Words:Secret File Transmission System; Public Key Infrastructure; Digital Signature目 錄摘 要Abstract第一章 引 言11.1

7、背景及現(xiàn)狀11.2 本文主要工作1第二章 公開(kāi)密鑰基礎(chǔ)設(shè)施22.1 相關(guān)密碼學(xué)技術(shù)22.1.1 對(duì)稱密鑰密碼技術(shù)22.1.2 非對(duì)稱密鑰密碼技術(shù)32.1.3 Hash函數(shù)42.1.4 數(shù)字簽名42.1.5 數(shù)字信封52.2 PKI概述52.2.1 PKI定義52.2.2 PKI的基本組成62.2.3 RSA算法62.3 PKI服務(wù)72.3.1 認(rèn)證服務(wù)72.3.2 數(shù)據(jù)完整性服務(wù)72.3.3 數(shù)據(jù)保密性服務(wù)82.3.4 不可否認(rèn)性服務(wù)82.4 PKI技術(shù)標(biāo)準(zhǔn)82.4.1 PKIX82.4.2 PKCS82.5 證書(shū)認(rèn)證中心92.5.1 認(rèn)證中心的作用92.5.2 認(rèn)證中心的職能10第三章 文件

8、保密系統(tǒng)的分析與設(shè)計(jì)113.1 系統(tǒng)目標(biāo)分析113.2 系統(tǒng)模塊劃分113.2.1 用戶模塊113.2.2 更新模塊113.2.3 文件保密模塊123.2.4 服務(wù)器模塊123.3 系統(tǒng)安全性分析14第四章 PKI文件保密系統(tǒng)的實(shí)現(xiàn)154.1 編程環(huán)境介紹154.1.1 ODBC154.1.2 OpenSSL154.2 證書(shū)認(rèn)證中心(CA)的實(shí)現(xiàn)164.2.1 建立CA服務(wù)器164.2.2 密鑰及證書(shū)的生成164.3 用戶控制模塊的實(shí)現(xiàn)164.4 數(shù)字簽名模塊的實(shí)現(xiàn)184.5 數(shù)字信封模塊的實(shí)現(xiàn)194.6 服務(wù)器模塊的實(shí)現(xiàn)204.7 系統(tǒng)運(yùn)行效果20第五章 總結(jié)與展望325.1 論文總結(jié)255

9、.2 工作展望25參考文獻(xiàn)26致謝27- 24 - 第一章 引 言1.1 背景及現(xiàn)狀隨著網(wǎng)絡(luò)的普及與發(fā)展,信息資源的共享程度不斷加強(qiáng)。當(dāng)前的信息系統(tǒng)已經(jīng)涵蓋內(nèi)部辦公和遍及全國(guó)的業(yè)務(wù)系統(tǒng)。一些機(jī)要部門(mén),如軍事、政府、金融等單位的日常工作也逐步實(shí)現(xiàn)了網(wǎng)絡(luò)化、自動(dòng)化,給人們帶來(lái)很多便利,但隨之而來(lái)的信息安全問(wèn)題也日益突出,諸如系統(tǒng)被破壞、數(shù)據(jù)丟失、機(jī)密被盜和直接、間接的經(jīng)濟(jì)損失等,這都是不容忽視的問(wèn)題。為了解決網(wǎng)絡(luò)環(huán)境的信息安全問(wèn)題,經(jīng)過(guò)世界各國(guó)的研究,初步形成了一套完整的解決方案,即PKI(Public Key Infrastructure)體系架構(gòu),并成為目前網(wǎng)絡(luò)安全建設(shè)的基礎(chǔ)與核心。目前,PK

10、I廣泛地應(yīng)用于電子商務(wù)1和電子政務(wù)2等領(lǐng)域。1.2 本文主要工作本文根據(jù)當(dāng)前網(wǎng)絡(luò)安全問(wèn)題的研究成果, 參考國(guó)際國(guó)內(nèi)現(xiàn)有的算法和體制及一些有關(guān)的應(yīng)用實(shí)例, 在密碼學(xué)基礎(chǔ)、PKI理論等方面做了大量研究,對(duì)于系統(tǒng)中的證書(shū)管理、認(rèn)證授權(quán)、數(shù)字信封的分發(fā)等方面做了認(rèn)真的分析和細(xì)致的設(shè)計(jì),并結(jié)合個(gè)人的思想提出一種基于PKI的文件保密系統(tǒng),較好地解決了網(wǎng)上信息傳輸中的身份認(rèn)證、保密性、完整性和不可否認(rèn)性等問(wèn)題。第二章 公開(kāi)密鑰基礎(chǔ)設(shè)施2.1 相關(guān)密碼學(xué)技術(shù)2.1.1 對(duì)稱密鑰密碼技術(shù)對(duì)稱加密是密碼學(xué)中的一類加密算法。該類密碼的加密算法是它自己本身的逆反函數(shù),所以其解密算法等同于加密算法,也就是說(shuō),要還原對(duì)等

11、加密的密文,套用加密同樣的算法即可得到明文。在實(shí)際應(yīng)用中,體現(xiàn)為加密和解密使用同一個(gè)密鑰,或者知道一方密鑰能夠輕易計(jì)算出另一方密鑰。對(duì)稱密鑰密碼體制從加密模式上可分為流密碼(序列密碼)和分組密碼(塊密碼)兩大類,在PKI中常用的是分組密碼算法,圖2.1是分組密碼示意圖。分組密碼的工作方法是將明文分成固定長(zhǎng)度(塊),用同一密鑰和算法對(duì)每一塊加密,輸出也是固定長(zhǎng)度的密文3。加密算法解密算法明文x密文y密鑰k密鑰k明文x圖2.1 分組密碼示意圖 比較成熟的分組密碼算法有:DES及其多種變形、RCZ、RC4、IDEA、AES等算法。常用的四種工作模式為:電碼本(ECB)、密碼反饋鏈接(CBC)、密碼反

12、饋(CFB)、輸出反饋(OFB)。由于系統(tǒng)的保密性主要取決于密鑰的安全,所以在公開(kāi)的計(jì)算機(jī)網(wǎng)絡(luò)上安全地傳送和保管密鑰是一個(gè)嚴(yán)峻的問(wèn)題。因?yàn)槿魏稳藫碛辛嗣荑€就可以解開(kāi)加密信息。對(duì)稱密碼具有算法簡(jiǎn)單,運(yùn)行速度快,占用的空間小等特點(diǎn),它能提供的服務(wù)有認(rèn)證,消息完整性以及機(jī)密性等項(xiàng)服務(wù)。2.1.2 非對(duì)稱密鑰密碼技術(shù)非對(duì)稱密鑰密碼技術(shù)是在密碼體制中加密和解密采用兩個(gè)不同的相關(guān)的密鑰的技術(shù),又稱為公鑰密碼技術(shù)。公鑰系統(tǒng)的概念于1976年由Diffie和Hellman提出,這一體制的最大特點(diǎn)是采用兩個(gè)密鑰將加密和解密能力分開(kāi)。它使用到兩個(gè)密鑰:公開(kāi)密鑰和私有密鑰,分別用于對(duì)數(shù)據(jù)的加密和解密。這兩個(gè)密鑰是數(shù)

13、學(xué)相關(guān),用某用戶加密密鑰加密后所得的信息,只能用該用戶的解密密鑰才能解密。如果知道了其中一個(gè),并不能計(jì)算出另外一個(gè)。因此如果公開(kāi)了一對(duì)密鑰中的一個(gè),并不會(huì)危害到另外一個(gè)的秘密性質(zhì)。稱公開(kāi)的密鑰為公鑰;不公開(kāi)的密鑰為私鑰4。工作流程如圖2.2所示。私鑰S公鑰P明文M解密密文C明文M加密cdmod nmemod n圖2.2 非對(duì)稱密碼體制示意圖公鑰加密主要算法有:RSA、DSS、DSA、ECC等,在后面在這些算法中,有些適用于密鑰分配,有些可作為加密算法,還有一些僅用于簽名。RSA公鑰密碼算法是一種公認(rèn)十分安全的公鑰密碼算法。它的命名取自3個(gè)創(chuàng)始人:Rivest、Shamir和Adelman。RS

14、A公鑰密碼算法是目前網(wǎng)絡(luò)上進(jìn)行保密通信和數(shù)字簽名的最有效的安全算法。RSA算法的安全性基于數(shù)論中大整數(shù)分解的困難性,所以,RSA需采用足夠大的整數(shù)。因子分解越困難,密碼就越難以破譯,加密強(qiáng)度就越高5。在通過(guò)網(wǎng)絡(luò)傳輸信息時(shí),公鑰密碼算法體現(xiàn)出了單密鑰加密算法不可替代的優(yōu)越性。對(duì)于參加電子交易的商戶來(lái)說(shuō),希望通過(guò)公開(kāi)網(wǎng)絡(luò)與成千上萬(wàn)的客戶進(jìn)行交易。若使用對(duì)稱密碼算法,則每個(gè)客戶都需要由商戶直接分配一個(gè)密鑰,并且密鑰的傳輸必須通過(guò)一個(gè)單獨(dú)的安全通道。相反,在公鑰密碼算法中,同一個(gè)商戶只需自己產(chǎn)生一對(duì)密鑰,并且將公鑰對(duì)外公開(kāi)??蛻糁恍栌蒙虘舻墓€加密信息,就可以保證將信息安全地傳送給商戶。2.1.3 H

15、ash函數(shù)Hash函數(shù)又稱散列函數(shù),是一種從任何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字“指紋”的方法。散列函數(shù)把消息或數(shù)據(jù)壓縮成摘要,使得數(shù)據(jù)量變小,將數(shù)據(jù)的格式固定下來(lái)。該函數(shù)將數(shù)據(jù)打亂混合,重新創(chuàng)建一個(gè)叫做散列值的指紋。散列值通常用來(lái)代表一個(gè)短的隨機(jī)字母和數(shù)字組成的字符串。一個(gè)安全的散列函數(shù)H具有以下的屬性:H能夠應(yīng)用到大小不一的數(shù)據(jù)上。H對(duì)任何輸入報(bào)文數(shù)據(jù)生成固定長(zhǎng)度的輸出。對(duì)于任意給定的x,H (x)的計(jì)算相對(duì)簡(jiǎn)單。對(duì)于任意給定的h,要發(fā)現(xiàn)滿足以H(x)=h在計(jì)算上是不可行的。要發(fā)現(xiàn)滿足H(x)=H (y)的(x,y)對(duì)在計(jì)算上是不可行的。Hash函數(shù)可用于驗(yàn)證消息或數(shù)據(jù)的完整性,發(fā)信人通過(guò)將原消息和

16、散列值一起發(fā)送,接受者可以確認(rèn)消息是否被篡改。目前采用比較多的散列算法是MD5和SHA-1。SHA(Secure Hash Algorithm)是由美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)開(kāi)發(fā)的,1994年適時(shí)發(fā)布了原始算法的修訂版,稱為SHA-l。與MD5相比,SHA-l生成160位的消息摘要,大于MD5的128位,雖然執(zhí)行更慢,卻被認(rèn)為更安全。2.1.4 數(shù)字簽名數(shù)字簽名是基于公共密鑰技術(shù)的一項(xiàng)重要的安全技術(shù), 使用密碼算法對(duì)待發(fā)的數(shù)據(jù)進(jìn)行加密處理, 生成一段信息, 附著在原文上一起發(fā)送, 這段信息類似現(xiàn)實(shí)中的簽名或印章, 接受方對(duì)其進(jìn)行驗(yàn)證, 判斷原文真?zhèn)?。數(shù)字簽名具有如下特點(diǎn):簽名是可信的:任何人都可

17、以驗(yàn)證簽名的有效性。簽名是不可偽造的:除了合法的簽名者之外, 任何其他人偽造其簽名是困難的。簽名是不可復(fù)制的:對(duì)一個(gè)消息的簽名不能通過(guò)復(fù)制變?yōu)榱硪粋€(gè)消息的簽名。如果對(duì)一個(gè)消息的簽名是從別處復(fù)制得到的, 則任何人都可以發(fā)現(xiàn)消息與簽名之間的不一致性, 從而可以拒絕簽名的消息。簽名的消息是不可改變的:經(jīng)簽名的消息不能被篡改。一旦簽名的消息被篡改, 則任何人都可以發(fā)現(xiàn)消息與簽名之間的不一致性。簽名是不可抵賴的:簽名者事后不能否認(rèn)自己的簽名。數(shù)字簽名主要是采用非對(duì)稱加密算法, 先采用Hash 函數(shù), 將待發(fā)送的數(shù)據(jù)生成消息摘要MD1, 發(fā)送方使用自己的私鑰對(duì)消息摘要加密生成數(shù)字簽名, 將數(shù)字簽名附著在原

18、(原文可以加密)上一起發(fā)送。接收方收到消息以后, 先用發(fā)送方的公鑰將簽名解密, 得到消息摘要。然后利用接收的原數(shù)據(jù)進(jìn)行Hash 函數(shù)的計(jì)算得到消息摘要MD2, 如果MD1=MD2,說(shuō)明簽名成功。2.1.5 數(shù)字信封數(shù)字信封(Digital Envelope)技術(shù)是混合加密技術(shù)的具體應(yīng)用。數(shù)字信封的功能類似于普通信封。普通信封在法律的約束下保證只有收信人才能閱讀信的內(nèi)容;數(shù)字信封則采用密碼技術(shù)保證了只有規(guī)定的接收人才能閱讀信息的內(nèi)容7。數(shù)字信封中采用了對(duì)稱密碼體制和公鑰密碼體制。信息發(fā)送者首先利用隨機(jī)產(chǎn)生的對(duì)稱密碼加密信息,再利用接收方的公鑰加密對(duì)稱密碼,被公鑰加密后的對(duì)稱密碼被稱之為數(shù)字信封。

19、在傳遞信息時(shí),信息接收方要解密信息時(shí),必須先用自己的私鑰解密數(shù)字信封,得到對(duì)稱密碼,才能利用對(duì)稱密碼解密所得到的信息。這樣就保證了數(shù)據(jù)傳輸?shù)恼鎸?shí)性和完整性。2.2 PKI概述2.2.1 PKI定義PKI(Public Key Infrastructure,公開(kāi)密鑰基礎(chǔ)設(shè)施)產(chǎn)生于20世紀(jì)80年代, 它是在公開(kāi)密鑰理論和技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的一種綜合性安全平臺(tái), 能夠透明地為所有的網(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)所必須的密鑰和證書(shū)管理, 從而保證網(wǎng)上傳遞信息的安全、真實(shí)、完整和不可抵賴性。利用PKI可以方便地建立和維護(hù)一個(gè)可信的網(wǎng)絡(luò)環(huán)境, 從而使人們?cè)谶@個(gè)環(huán)境里能夠確認(rèn)彼此的身份和所交互的信

20、息, 能夠安全的進(jìn)行各種活動(dòng)8。2.2.2 PKI的基本組成PKI是一種遵循標(biāo)準(zhǔn)的密鑰管理平臺(tái), 主要包括五個(gè)模塊:CA(Certificate Authority,認(rèn)證中心),證書(shū)數(shù)據(jù)庫(kù)(Certificate Database),密鑰管理(生成、備份、恢復(fù)和更新)系統(tǒng)(Key Manage System),證書(shū)撤消管理系統(tǒng)(Certificate Revocation List Manage System)和PKI應(yīng)用接口系統(tǒng)(PKI Application Interface System)9。PKI平臺(tái)總體框架結(jié)構(gòu)如圖2.3所示。密 鑰管 理系 統(tǒng)證 書(shū)撤 銷管 理系 統(tǒng)證 書(shū)數(shù) 據(jù)庫(kù)

21、認(rèn) 證中 心PKI應(yīng)用系統(tǒng)接口圖2.3 PKI框架結(jié)構(gòu)認(rèn)證中心:數(shù)字證書(shū)的申請(qǐng)及簽發(fā)機(jī)關(guān), PKI的核心。認(rèn)證中心必須具備權(quán)威性。證書(shū)數(shù)據(jù)庫(kù):證書(shū)的集中存放地, 是網(wǎng)上的一種公共信息庫(kù), 用戶可以從此處獲得其它用戶的證書(shū)和公鑰。構(gòu)造證書(shū)庫(kù)的最佳方法是采用支持LDAP協(xié)議的目錄系統(tǒng), 用戶或相關(guān)的應(yīng)用通過(guò)LDAP來(lái)訪問(wèn)證書(shū)庫(kù)。系統(tǒng)必須確保證書(shū)庫(kù)的完整性, 防止偽造、篡改證書(shū)。密鑰管理系統(tǒng):提供備份與恢復(fù)脫密密鑰的機(jī)制。密鑰的備份與恢復(fù)應(yīng)該由可信的機(jī)構(gòu)來(lái)完成, 例如CA可以充當(dāng)這一角色。值得強(qiáng)調(diào)的是, 密鑰備份與恢復(fù)只能針對(duì)解密密鑰, 簽名私鑰不能夠作備份。證書(shū)撤消管理系統(tǒng):終止證書(shū)的生命期, 是

22、PKI的一個(gè)重要組件。PKI應(yīng)用接口系統(tǒng):提供良好的跨平臺(tái)的應(yīng)用接口系統(tǒng), 使用戶能夠方便地使用加密、數(shù)字簽名等安全服務(wù), 使得各種各樣的應(yīng)用能夠以安全、一致、可信的方式與PKI交互10。2.3 PKI服務(wù)PKI作為安全基礎(chǔ)設(shè)施,能為不同的用戶按不同安全需求提供多種安全服務(wù)。這些服務(wù)主要包括認(rèn)證、數(shù)據(jù)完整性、數(shù)據(jù)保密性、不可否認(rèn)性、公正及時(shí)間戳服務(wù)等11。2.3.1 認(rèn)證服務(wù)認(rèn)證服務(wù)即身份識(shí)別與鑒別,就是確認(rèn)實(shí)體即為其聲明的實(shí)體,鑒別身份的真?zhèn)?。PKI向?qū)嶓w提供全面的核心服務(wù)必須滿足兩個(gè)需求:第一是實(shí)體甲必須能夠準(zhǔn)確無(wú)誤地得到他希望通信的實(shí)體乙的公鑰,這是證書(shū)的基本目的:第二是在甲沒(méi)有乙的證書(shū)

23、的情況下,甲必須可以從公共的資料庫(kù)中查詢。通過(guò)這種方式,兩個(gè)陌生人能夠建立安全通信(需要說(shuō)明的是利用這樣的公共資料庫(kù)的概念,兩個(gè)陌生人使用公鑰技術(shù)能夠進(jìn)行安全通信)。如甲乙雙方的認(rèn)證,甲首先要驗(yàn)證乙的證書(shū)的真?zhèn)?。?dāng)乙在網(wǎng)上將證書(shū)傳送給甲時(shí),甲首先要用CA的公鑰解開(kāi)證書(shū)上CA的數(shù)字簽名,如果簽名通過(guò)驗(yàn)證,證明乙持有的證書(shū)是真的:接著甲還要驗(yàn)證乙身份的真?zhèn)?,乙可以將自己的口令用自己的私鑰進(jìn)行數(shù)字簽名傳送給甲,甲已經(jīng)從乙的證書(shū)中或從證書(shū)庫(kù)中查得了乙的公鑰,甲就可以用乙的公鑰來(lái)驗(yàn)證乙用自己獨(dú)有的私鑰進(jìn)行的數(shù)字簽名。如果該簽名通過(guò)驗(yàn)證,乙在網(wǎng)上的身份就確鑿無(wú)疑。PKI的認(rèn)證服務(wù)使得實(shí)體甲可以用自己的私鑰

24、加密一段挑戰(zhàn)信息,乙收到信息后用甲的公鑰(如果乙不知道甲的公鑰可以到公開(kāi)的網(wǎng)站或機(jī)構(gòu)去查明)對(duì)信息進(jìn)行解密,從而確定甲就是甲所聲明的實(shí)體本身12。2.3.2 數(shù)據(jù)完整性服務(wù)數(shù)據(jù)完整性服務(wù)就是確認(rèn)數(shù)據(jù)沒(méi)有被修改。實(shí)現(xiàn)數(shù)據(jù)完整性服務(wù)的主要方法是數(shù)字簽名,它既可以提供實(shí)體認(rèn)證,又可以保障被簽名數(shù)據(jù)的完整性。這是因?yàn)槊艽a哈希算法和簽名算法提供的保證,哈希算法的特點(diǎn)是輸入數(shù)據(jù)的任何變化都會(huì)引起輸出數(shù)據(jù)的不可預(yù)測(cè)的極大變化,而簽名是用自己的私鑰將該哈希值進(jìn)行加密,和數(shù)據(jù)一起傳送給接受方。如果敏感數(shù)據(jù)在傳輸和處理過(guò)程中被篡改,接受方就不會(huì)收到完整的數(shù)據(jù)簽名,驗(yàn)證就會(huì)失敗。反之,如果簽名通過(guò)了驗(yàn)證,就證明接收

25、方收到的是沒(méi)經(jīng)修改的完整性數(shù)據(jù)。2.3.3 數(shù)據(jù)保密性服務(wù)保密性就是確保數(shù)據(jù)的秘密,即除了指定的實(shí)體外,無(wú)人能讀出這段數(shù)據(jù)。PKI的保密性服務(wù)采用了類似于完整性服務(wù)的機(jī)制,具體如下:甲生成一個(gè)對(duì)稱密鑰(使用密鑰協(xié)商協(xié)議),用對(duì)稱密鑰加密數(shù)據(jù)(使用對(duì)稱分組密碼),將加密后的數(shù)據(jù)發(fā)送給對(duì)方。2.3.4 不可否認(rèn)性服務(wù)不可否認(rèn)性服務(wù)是指從技術(shù)上保證實(shí)體對(duì)其行為的認(rèn)可。不可否認(rèn)性服務(wù)是屬于PKI支持的附加服務(wù),有的CA不支持不可否認(rèn)性服務(wù)。所謂不可否認(rèn)性服務(wù)是指從技術(shù)上保證實(shí)體對(duì)他們的行為的誠(chéng)實(shí)性。最受關(guān)注的是對(duì)數(shù)據(jù)來(lái)源的不可抵賴,即用戶不可能否認(rèn)敏感消息或文件。此外,還包括其他類型的不可否認(rèn)性,如傳

26、輸?shù)牟豢煞裾J(rèn)性、創(chuàng)建的不可否認(rèn)性以及同意的不可否認(rèn)性等13。2.4 PKI技術(shù)標(biāo)準(zhǔn)2.4.1 PKIXIETF公開(kāi)密鑰基礎(chǔ)設(shè)施工作小組致力于制定基于X.509的可交互PKI標(biāo)準(zhǔn),公布了一系列Internet PKI的建議,統(tǒng)稱為PKIX規(guī)范。這些規(guī)范包括CA應(yīng)用指導(dǎo)、證書(shū)撤銷、證書(shū)和CRL的分發(fā)與管理協(xié)議等,旨在使X.509標(biāo)準(zhǔn)所規(guī)定的證書(shū)和CRL格式適用于在Internet環(huán)境中建立PKI的需要。PKIX工作小組制定的規(guī)范主要包括如下四項(xiàng)專門(mén)領(lǐng)域:證書(shū)和證書(shū)撤銷列表概貌;證書(shū)管理協(xié)議;證書(shū)操作協(xié)議;證書(shū)策略(CP)和認(rèn)證實(shí)施陳述(CPS)結(jié)構(gòu)。2.4.2 PKCSPKIX規(guī)范的依據(jù)除了國(guó)際電

27、信聯(lián)盟制訂的X.509標(biāo)準(zhǔn)外,還有RSA數(shù)據(jù)安全實(shí)驗(yàn)室制訂的公共密鑰密碼標(biāo)準(zhǔn)PKCS(Public Key Cryptography Standard)14。PKCS是在認(rèn)證注冊(cè)、更新及CRL分布方面定義PKI的一系列標(biāo)準(zhǔn),包括PKCS#1-PKCS#12。通過(guò)這些標(biāo)準(zhǔn),RSA數(shù)據(jù)安全公司希望為公開(kāi)密鑰密碼學(xué)提的一個(gè)公開(kāi)標(biāo)準(zhǔn)接口。下面簡(jiǎn)單介紹每個(gè)PKCS的內(nèi)容。PKCS#1、PKCS#2、PKCS#4:描述了RSA加密和解密的方法,主要用于PKCS中所描述的數(shù)字簽名結(jié)構(gòu)和數(shù)字信封。PKCS#3:描述了實(shí)現(xiàn)Diffie-Hellman密鑰交換協(xié)議的方法。PKCS#5:描述了用一個(gè)從口令中派生的秘

28、密密鑰加密消息的方法。它使用MD2或MD5從口令中派生密鑰,并采用DES的CBC模式加密。這個(gè)功能主要用于加密從一個(gè)計(jì)算機(jī)傳送到另一個(gè)計(jì)算機(jī)的私鑰,但是不能用于加密消息。PKCS#6:描述了公開(kāi)密鑰證書(shū)的標(biāo)準(zhǔn)語(yǔ)法。這一語(yǔ)法是X.509證書(shū)的擴(kuò)展,如果需要,可以取出X.509證書(shū)。X.509證書(shū)之外的這些附加屬性已使證書(shū)處理不再局限于公開(kāi)密鑰。PKCS#7:密文語(yǔ)法標(biāo)準(zhǔn),是一個(gè)對(duì)數(shù)據(jù)加密或簽名的通用語(yǔ)法,例如數(shù)字信封和數(shù)字簽名。同時(shí)這些語(yǔ)法還提供了一些附加屬性,例如可與消息內(nèi)容一起被校驗(yàn)的時(shí)間標(biāo)記。PKCS#8:描述了私鑰信息的語(yǔ)法,包括私鑰、一組屬性和加密私鑰的語(yǔ)法。PKCS#9:定義了PKC

29、S#6擴(kuò)展證書(shū)、PKCS#7數(shù)字簽名消息和PKCS#8加密私鑰的屬性類型。PKCS#10:描述了證書(shū)請(qǐng)求的標(biāo)準(zhǔn)語(yǔ)法。一個(gè)證書(shū)請(qǐng)求包括證書(shū)主體的辨識(shí)名、公鑰和可選的一組屬性,由請(qǐng)求證書(shū)的用戶簽名。PKCS#11:是密碼標(biāo)記的API標(biāo)準(zhǔn),它詳細(xì)定義了一個(gè)通用的編程接口,可用于各種可移植的密碼設(shè)備。PKCS#12:個(gè)人信息交換語(yǔ)法標(biāo)準(zhǔn),描述了將用戶的私鑰、證書(shū)和其他相關(guān)的秘密信息存放在軟件中的語(yǔ)法。它的目標(biāo)是為各種應(yīng)用提供一個(gè)標(biāo)準(zhǔn)的單一密鑰文件。2.5 證書(shū)認(rèn)證中心2.5.1 認(rèn)證中心的作用證書(shū)認(rèn)證(Certificate Authority)中心簡(jiǎn)稱CA,它是PKI的核心。CA作為電子商務(wù)交易中受

30、信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗(yàn)的責(zé)任。為每個(gè)使用公開(kāi)密鑰的用戶發(fā)放數(shù)字證書(shū),用以證明證書(shū)中列出的用戶名稱與證書(shū)中列出的公開(kāi)密鑰相對(duì)應(yīng)。證書(shū)中,CA中心的數(shù)字簽名使得攻擊者不能偽造和篡改數(shù)字證書(shū)。因此在電子交易的各個(gè)環(huán)節(jié),交易各方檢驗(yàn)對(duì)方數(shù)字證書(shū)的有效性則可確定其身份的合法性,從而根本解決用戶信任問(wèn)題。以數(shù)字證書(shū)為核心的PKI/CA技術(shù)可以對(duì)網(wǎng)絡(luò)上傳輸?shù)男畔⑦M(jìn)行加密和解密、數(shù)字簽名和簽名驗(yàn)證,從而保證信息除發(fā)送方和接收方外不被其它人竊?。恍畔⒃趥鬏斶^(guò)程中不被篡改;發(fā)送方能夠通過(guò)數(shù)字證書(shū)來(lái)確認(rèn)接收方的身份;發(fā)送方對(duì)于自己的信息不能抵賴。CA允許管理員撤銷發(fā)放的數(shù)字證書(shū),在證書(shū)注銷列表

31、(CRL)中添加新項(xiàng)并周期性地發(fā)布具有數(shù)字簽名的CRL15。2.5.2 認(rèn)證中心的職能概括地說(shuō),認(rèn)證中心的功能有審批證書(shū)請(qǐng)求、證書(shū)發(fā)放、證書(shū)更新、證書(shū)注銷和證書(shū)及CRL的存儲(chǔ)、檢索,密鑰生存期管理。CA的核心功能就是發(fā)放和管理數(shù)字證書(shū),CA的數(shù)字簽名保證了證書(shū)的合法性和權(quán)威性。第三章 文件保密系統(tǒng)的分析與設(shè)計(jì)3.1 系統(tǒng)目標(biāo)分析作為一個(gè)安全文件傳輸系統(tǒng)16,系統(tǒng)必須達(dá)到以下目標(biāo):保障數(shù)據(jù)機(jī)密性:系統(tǒng)必須確保只有預(yù)期的文件接收方才能讀取文件信息。保障數(shù)據(jù)完整性:文件接收方能夠驗(yàn)證他所接收到的文件是否完整,是否在傳輸過(guò)程中被非法篡改過(guò),以保證他接收到的文件與發(fā)送方發(fā)送出來(lái)的文件完全相同。對(duì)數(shù)據(jù)源的

32、身份驗(yàn)證:文件接收方可以驗(yàn)證文件是否確實(shí)是由指定的發(fā)送方發(fā)送過(guò)來(lái)的。網(wǎng)絡(luò)信息成功收發(fā):系統(tǒng)必須確保發(fā)送方能夠成功地將文件以及必要的即時(shí)消息傳輸給接收方。3.2 系統(tǒng)模塊劃分3.2.1 用戶模塊當(dāng)用戶運(yùn)行文件保密系統(tǒng)的客戶端,用戶模塊便在后臺(tái)啟動(dòng)。要求用戶輸入賬號(hào)和密碼,提交到服務(wù)器進(jìn)行核對(duì),并接收服務(wù)器的反饋信息。用戶模塊根據(jù)反饋信息,若登陸成功,把用戶好友顯示在用戶列表框中,從證書(shū)服務(wù)器中下載好友加密證書(shū)(公鑰)并保存在相應(yīng)文件夾下。處于A用戶好友列表中的其他用戶可以給A用戶自由發(fā)送加密文件,同時(shí),A用戶可以給自己好友列表中的所有好友發(fā)送加密文件。3.2.2 更新模塊更新模塊將實(shí)時(shí)與服務(wù)器進(jìn)

33、行數(shù)據(jù)交互,及時(shí)獲取其他用戶的最新?tīng)顩r,反饋給本地用戶,實(shí)現(xiàn)如下功能:1.定期把本地用戶信息和公鑰提交到證書(shū)服務(wù)器上。2.定期從證書(shū)服務(wù)器上下載更新好友列表和各好友對(duì)應(yīng)的加密證書(shū)。3.接收來(lái)自好友的加密文件提醒信息。3.2.3 文件保密模塊為了實(shí)現(xiàn)文件的安全傳輸目的, 發(fā)送方首先對(duì)文件進(jìn)行數(shù)字簽名和加密處理, 接受方則對(duì)其進(jìn)行解密處理和驗(yàn)證簽名, 以確保文件的保密性、完整性和不可否認(rèn)性。其具體過(guò)程如圖3.1所示。可描述如下:1.發(fā)送方A將發(fā)送原文用SHA-1函數(shù)編碼,產(chǎn)生一段固定長(zhǎng)度的數(shù)字摘要;2.發(fā)送方A用自己的私鑰對(duì)摘要加密,形成數(shù)字簽名17,附在發(fā)送信息原文后面;3.發(fā)送方A產(chǎn)生通信密鑰

34、,使用該密鑰對(duì)帶有數(shù)字簽名的原文進(jìn)行加密,傳送到接收方B;4.發(fā)送方A用接收方B的公鑰對(duì)通信密鑰進(jìn)行加密后,傳到接收方B;5.接收方B收到加密后的通信密鑰,用自己的私鑰對(duì)其解密,得到通信密鑰;6.接收方B用得到的通信密鑰對(duì)收到的經(jīng)加密的簽名原文解密,得數(shù)字簽名和原文;7.接收方B用發(fā)送方A公鑰對(duì)數(shù)字簽名解密,得到摘要;同時(shí)將原文用SHA-1函數(shù)編碼,產(chǎn)生另一個(gè)摘要;8.接收方B將2個(gè)摘要進(jìn)行比較,若一致,說(shuō)明信息沒(méi)有被破壞或篡改,否則丟棄該文檔。3.2.4 服務(wù)器模塊服務(wù)器模塊作為文件保密系統(tǒng)的核心,負(fù)責(zé)加密文件和數(shù)字信封的接收/分發(fā)。主要功能如下:1.對(duì)于文件加密用戶對(duì)文件加密后同時(shí)生成數(shù)字

35、信封,該用戶把兩者上傳到服務(wù)器中,服務(wù)器負(fù)責(zé)記錄發(fā)送者和接收者等相關(guān)信息。2.對(duì)于加密文件接受者,在收到新文件提醒后,與服務(wù)器建立連接,并發(fā)送要求數(shù)字信封和加密文件的信令。3.服務(wù)器在接到相關(guān)信令后,在后臺(tái)進(jìn)行判別,并反饋相關(guān)內(nèi)容給該接受者。SHA簽名后的文件原 文加密后的簽名文件數(shù)字摘要數(shù)字簽名數(shù)字信封A的私鑰B的公鑰A的通信密鑰通信網(wǎng)絡(luò)SHA原文數(shù)字摘要比 較正確的原文錯(cuò)誤的原文數(shù)字摘要數(shù)字簽名數(shù)字信封A的公鑰B的私鑰A的通信密鑰通信網(wǎng)絡(luò)圖3.1 文件加解密流程圖3.3 系統(tǒng)安全性分析1.加密數(shù)據(jù)以隱藏被傳送的數(shù)據(jù)系統(tǒng)采用對(duì)稱加密算法DES對(duì)原文件進(jìn)行加密, 從而隱藏原文件的信息, 并用非

36、對(duì)稱加密算法RSA對(duì)DES密鑰加密,保證了數(shù)據(jù)的安全傳送。2.保護(hù)數(shù)據(jù)的完整性和不可否認(rèn)性系統(tǒng)采用了哈希算法SHA-1對(duì)原文件進(jìn)行加密獲得摘要,因此可以對(duì)傳送來(lái)的文件進(jìn)行同樣的SHA-1加密產(chǎn)生摘要, 若兩個(gè)摘要相同, 則說(shuō)明原文件未被修改, 從而保證數(shù)據(jù)的完整性和不可否認(rèn)性。3.保障數(shù)據(jù)的不可改變性由于經(jīng)SHA-1加密的數(shù)據(jù)無(wú)法解密, 如果原文件被修改, 則所產(chǎn)生的摘要必定與原來(lái)的摘要不一致, 從而保障數(shù)據(jù)的不可改變性18。第四章 PKI文件保密系統(tǒng)的實(shí)現(xiàn)4.1 編程環(huán)境介紹4.1.1 ODBCODBC(Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)互連)是微軟公司開(kāi)放服務(wù)

37、結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。ODBC技術(shù)以CS結(jié)構(gòu)為設(shè)計(jì)基礎(chǔ),它使得應(yīng)用程序與DBMS之間在邏輯上可以分離,使得應(yīng)用程序具有數(shù)據(jù)庫(kù)無(wú)關(guān)性。ODBC定義了一個(gè)API,每個(gè)應(yīng)用程序利用相同的源代碼就可以訪問(wèn)不同的數(shù)據(jù)庫(kù)系統(tǒng),存取多個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。與嵌入式SQL相比,ODBC一個(gè)最顯著的優(yōu)點(diǎn)是用它生成的應(yīng)用程序與數(shù)據(jù)庫(kù)或數(shù)

38、據(jù)庫(kù)引擎無(wú)關(guān)。ODBC使應(yīng)用程序具有良好的互用性和可移植性,并且具備同時(shí)訪問(wèn)多種DBMS的能力,從而克服了傳統(tǒng)數(shù)據(jù)庫(kù)應(yīng)用程序的缺陷。4.1.2 OpenSSLOpenSSL項(xiàng)目最早由加拿大人Eric A. Yang和Tim J. Hudson開(kāi)發(fā),現(xiàn)在由OpenSSL項(xiàng)目小組負(fù)責(zé)改進(jìn)和開(kāi)發(fā),這個(gè)小組是由全球的一些技術(shù)精湛的志愿技術(shù)人員組成。OpenSSL是一個(gè)功能豐富且自包含的開(kāi)源安全工具箱。它提供的主要功能有:SSL協(xié)議實(shí)現(xiàn)(包括SSLv2, SSLv3和TLSv1)、大量軟算法(對(duì)稱/非對(duì)稱/摘要)、大數(shù)運(yùn)算、非對(duì)稱算法密鑰生成、ASN. 1編解碼庫(kù)、證書(shū)請(qǐng)求(PKCS#10)編解碼、數(shù)字

39、證書(shū)編解碼、CRL編解碼、OCSP協(xié)議、數(shù)字證書(shū)驗(yàn)證、PKCS#7標(biāo)準(zhǔn)實(shí)現(xiàn)和PKCS#12個(gè)人數(shù)字證書(shū)格式實(shí)現(xiàn)等功能。OpensSSL采用C語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,這使得OpenSSL具有優(yōu)秀的跨平臺(tái)性能,這對(duì)于廣大技術(shù)人員來(lái)說(shuō)是一件非常美妙的事情,可以在不同的平臺(tái)使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺(tái),這使得OpenSSL具有廣泛的適用性。OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:密碼算法庫(kù)、SSL協(xié)議庫(kù)以及應(yīng)用程序。OpenSSL的目錄結(jié)構(gòu)自然也是圍繞這三個(gè)功能部分進(jìn)行規(guī)劃的19。作為一個(gè)基于密碼學(xué)的安全開(kāi)發(fā)包,OpenSSL

40、提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書(shū)封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測(cè)試或其它目的使用。4.2 證書(shū)認(rèn)證中心(CA)的實(shí)現(xiàn)4.2.1 建立CA服務(wù)器CA服務(wù)器是一個(gè)應(yīng)用程序,它從技術(shù)上實(shí)現(xiàn)了符合PKI和X.509等相關(guān)標(biāo)準(zhǔn)的證書(shū)簽發(fā)和管理功能。其基本功能應(yīng)該包括以下幾個(gè)方面:接受申請(qǐng)證書(shū)的請(qǐng)求、審核證書(shū)請(qǐng)求、簽發(fā)證書(shū)、發(fā)布證書(shū)、吊銷證書(shū)、生成和發(fā)布證書(shū)吊銷列表(CRL)及證書(shū)庫(kù)的管理。本例用OpenSSL模擬CA服務(wù)器,指令如下:OpenSSL>perl ca.pl newca4.2.2 密鑰及證書(shū)的生成1.生成一個(gè)1024位的RSA密鑰,

41、并存儲(chǔ)到userkey.pem文件中,對(duì)輸出密鑰不進(jìn)行加密。指令如下:OpenSSL>genrsa -out userkey.pem 1024 2.生成一個(gè)新的證書(shū)請(qǐng)求文件req.pem,使用上步生成的密鑰,不采用密鑰的加密口令。指令如下:OpenSSL>req -in privatekey.pem -out req.pem3.利用CA服務(wù)器,簽發(fā)用戶證書(shū),并存儲(chǔ)到usercert.pem文件中,使用上步生成的證書(shū)請(qǐng)求文件,指令如下:OpenSSL>ca -in req.pem -out usercert.pem4.3 用戶控制模塊的實(shí)現(xiàn)用戶控制模塊在啟動(dòng)時(shí)要求輸入用戶名及密

42、碼,連接至服務(wù)器并通過(guò)身份認(rèn)證后,顯示在線的好友列表,用戶可通過(guò)選擇好友來(lái)發(fā)送保密文件。服務(wù)器端數(shù)據(jù)庫(kù)userinfo表各列意義如下:NAME(用戶名),PWD(登陸密碼),IP(用戶IP地址),PORT(用戶開(kāi)放端口),STATUS(用戶在線狀態(tài))。與數(shù)據(jù)庫(kù)的連接采用ODBC技術(shù)。pdata->Open();pdata->m_strFilter="NAME=? AND PWD=?"pdata->p1=dlg->m_name;pdata->p2=dlg->m_pwd;pdata->Requery();if(pdata->IsE

43、OF()AfxMessageBox("用戶名或密碼錯(cuò)誤");elseusername=dlg->m_name;pdata->Edit();pdata->m_IP=ip;pdata->m_PORT=port;pdata->m_STATUS="1"pdata->Update();pdata->m_strFilter="NAME!=?"pdata->p1=dlg->m_name;pdata->Requery();int count=0;while(!pdata->IsEOF(

44、)m_listctrl.InsertItem(count,pdata->m_NAME);if(pdata->m_STATUS="1")m_listctrl.SetItemText(count,1,"在線");elsem_listctrl.SetItemText(count,1,"離線");pdata->MoveNext(); count+;pdata->Close();4.4 數(shù)字簽名模塊的實(shí)現(xiàn)本例用數(shù)字簽名用SHA-1 with RSA,用SHA-1計(jì)算文件摘要,用RSA計(jì)算其簽名20。BIO* in = B

45、IO_new(BIO_s_file();BIO_read_filename(in,keyname);EVP_PKEY* pkey = PEM_read_bio_PrivateKey(in, NULL, NULL, NULL);BIO_free(in);EVP_MD_CTX mdctx;unsigned char* sig_value = (unsigned char* )malloc(sizeof(char) * EVP_PKEY_size(pkey);unsigned int sig_len;char mdname = "sha1"OpenSSL_add_all_dige

46、sts();OpenSSL_add_all_ciphers();const EVP_MD* md = EVP_get_digestbyname(mdname);EVP_MD_CTX_init(&mdctx);EVP_SignInit(&mdctx, md);char id256;FILE* f = fopen(localpath, "rb");while(!feof(f)&&!ferror(f)memset(id, 0, 256);fread(id, 255, 1, f);EVP_SignUpdate(&mdctx, id, strl

47、en(id);fclose(f);EVP_SignFinal(&mdctx, sig_value, &sig_len, pkey);EVP_MD_CTX_cleanup(&mdctx);EVP_PKEY_free(pkey);4.5 數(shù)字信封模塊的實(shí)現(xiàn)PKI得以實(shí)現(xiàn)的主要基礎(chǔ)是公鑰密碼標(biāo)準(zhǔn)(PKCS)系列,該標(biāo)準(zhǔn)系列最初是為推進(jìn)公鑰密碼系統(tǒng)的互操作性,由RSA實(shí)驗(yàn)室與工業(yè)界、學(xué)術(shù)界和政府代表合作開(kāi)發(fā)的。在RSA帶領(lǐng)下,PKCS的研究隨著時(shí)間不斷發(fā)展,它涉及了不斷發(fā)展的PKI格式標(biāo)準(zhǔn)、算法和應(yīng)用程序接口。PKCS標(biāo)準(zhǔn)提供了基本的數(shù)據(jù)格式定義和算法定義,它們實(shí)際是今天所有P

48、KI實(shí)現(xiàn)的基礎(chǔ)。其中,PKCS#7為使用密碼算法的數(shù)據(jù)規(guī)定了通用語(yǔ)法,比如數(shù)字信封。本例采用PKCS#7標(biāo)準(zhǔn)實(shí)現(xiàn)數(shù)字信封21。OpenSSL_add_all_algorithms();CString cipname=path+"cip"+localname;CString certname=path+m_listctrl.GetItemText(nIdx,0)+"cert.pem"BIO* srcbio = BIO_new_file(localpath, "rb");BIO* cipbio = BIO_new_file(cipname

49、, "wb");BIO* fp = BIO_new_file(certname, "r");STACK_OF(X509)* certs = sk_X509_new_null();509* cert = PEM_read_bio_X509(fp, NULL, NULL, NULL);sk_X509_push(certs, cert);BIO_free(fp);const EVP_CIPHER* cipher = EVP_aes_128_cfb();PKCS7* pkcs = PKCS7_encrypt(certs, srcbio, cipher, PKCS

50、7_BINARY);SMIME_write_PKCS7(cipbio, pkcs, srcbio, 0);BIO_free(srcbio);BIO_free(cipbio);4.6 服務(wù)器模塊的實(shí)現(xiàn)WinInet API提供了對(duì)現(xiàn)有Internet應(yīng)用全面的支持,可以編寫(xiě)面向Internet的應(yīng)用程序,并不用考慮基本的通訊協(xié)議。MFC提供的WinInet類是對(duì)WinInet API函數(shù)封裝而來(lái)的,是面向?qū)ο蟮母呒?jí)編程接口。本例采用CInternetSession類建立連接。CInternetSession* pSession=new CInternetSession;CFtpConnectio

51、n* pConnection;pConnection = pSession->GetFtpConnection();pConnection->PutFile(cipname,"cip"+localname);pConnection->GetFile("cip"+s2,cipname);pConnection->Close();4.7 系統(tǒng)運(yùn)行效果客戶端啟動(dòng)時(shí)。圖4.2 登錄框登陸后界面。圖4.3 用戶界面選擇待加密發(fā)送文件。圖4.4 選擇文件發(fā)送成功。圖4.5 發(fā)送成功另一客戶端收到提醒。圖4.6 新文件提醒選擇文件保存位置。圖4.7 選擇位置接收并校驗(yàn)成功。圖4.8 接收結(jié)果第五章 總結(jié)與展望5.1 論文總結(jié)文件保密是當(dāng)前網(wǎng)絡(luò)安全領(lǐng)域的研究熱點(diǎn),不僅是在電子商務(wù),電子銀行,電子政務(wù)等應(yīng)用領(lǐng)域,在社會(huì)生活的各個(gè)領(lǐng)域也有極廣泛的應(yīng)用前景。由于電子文件在傳輸過(guò)程中易被偷窺,篡改,為了解決電子文件面臨的這些安全威脅,需要為電子文件增加一些安全功能。本文

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論