Java安全性的演變和理念_第1頁(yè)
Java安全性的演變和理念_第2頁(yè)
Java安全性的演變和理念_第3頁(yè)
Java安全性的演變和理念_第4頁(yè)
Java安全性的演變和理念_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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)介

19/19Java安全性的演變和理念第一部分:安全性的基本要點(diǎn)本系列文章將提供對(duì)網(wǎng)絡(luò)安全的一般了解,以及開發(fā)人員所必需掌握的Java編程語(yǔ)言的獨(dú)特性能。在后續(xù)的連載中,將討論Java平臺(tái)安全性的設(shè)計(jì)和演變,以及不同的Java安全性API。今后的文章還將討論Java2Platform,EnterpriseEdition(J2EE)中的安全特性,J2EE正迅速變?yōu)?com平臺(tái)的首選。雖然,深入了解密碼學(xué)對(duì)讀者的數(shù)學(xué)水平來(lái)說(shuō)是一個(gè)挑戰(zhàn),但第一篇文章概述的是網(wǎng)絡(luò)安全和密碼學(xué)的基本概念,而這些是非常簡(jiǎn)單,極易掌握的。

又:請(qǐng)參閱討論AES和密鑰長(zhǎng)度對(duì)安全性的重要性的專題。在最近的幾十年內(nèi),計(jì)算模型發(fā)生了巨大的變化,由于這些變化,出現(xiàn)了對(duì)大規(guī)模電子商務(wù)與電子交易系統(tǒng)應(yīng)用程序安全的更大需求,這正如最近對(duì)幾個(gè)受歡迎站點(diǎn)的大量拒絕服務(wù)(DoS)攻擊所表明的那樣。尤其是對(duì)于Java團(tuán)體,隨著Java作為因特網(wǎng)編程的

事實(shí)上的

標(biāo)準(zhǔn)平臺(tái)出現(xiàn),安全移動(dòng)Java代碼的能力已成為基本要求。本文是系列文章中的第一篇,討論計(jì)算機(jī)安全和密碼學(xué)的一般概念。雖然可移動(dòng)代碼并不是一個(gè)革命性的概念,但是Java和因特網(wǎng)給計(jì)算機(jī)安全帶來(lái)了一些不同尋常的挑戰(zhàn)。Java體系結(jié)構(gòu)的演化及其對(duì)安全的影響、不同的安全API和工具軟件以及applet安全,等等,將在隨后的文章中討論。此安全性論文系列并不打算提供計(jì)算機(jī)安全問題的綜合指南。計(jì)算機(jī)安全是一個(gè)多層面的問題,它涉及若干學(xué)科、部門和文化。技術(shù)投資后,接著就應(yīng)該著手培訓(xùn)、嚴(yán)格的策略強(qiáng)制執(zhí)行和總體安全策略的定期審查。注:有關(guān)算法進(jìn)展的詳細(xì)信息,請(qǐng)參閱專題“

二十一世紀(jì)的加密算法”;有關(guān)密鑰長(zhǎng)度在安全性中的重要性的討論,請(qǐng)參閱專題“

密鑰的長(zhǎng)度是否重要?”。什么是計(jì)算機(jī)安全?要從總體上理解什么是計(jì)算機(jī)安全,有必要考慮一下安全在日常生活中意味著什么。我們將看到,日常生活中的一般安全規(guī)則同樣適用于計(jì)算機(jī)安全。計(jì)算機(jī)安全的局限性

有沒有絕對(duì)計(jì)算機(jī)安全這樣的事情?一句話,沒有這樣的事情。術(shù)語(yǔ)

安全系統(tǒng)是一個(gè)不恰當(dāng)?shù)拿Q,因?yàn)樗凳玖讼到y(tǒng)要么是安全的,要么是不安全的。安全實(shí)際上是一種平衡。如果提供的資源是無(wú)限的,則任何形式的安全都能遭到破壞。盡管攻擊者可用來(lái)實(shí)施攻擊的資源越來(lái)越多,但在現(xiàn)實(shí)世界中,這些資源仍然是有限的??紤]到這一點(diǎn),我們應(yīng)該這樣來(lái)設(shè)計(jì)所有系統(tǒng):讓攻擊者為破壞這些系統(tǒng)所付出的,遠(yuǎn)遠(yuǎn)大于破壞之后他們所能得到的。端到端的安全

什么是端到端的安全?在一個(gè)多層系統(tǒng)中,每一層都應(yīng)該有其自身的安全,并且與其他層協(xié)調(diào)一致。為匯集在一起的不同系統(tǒng)和中間件設(shè)計(jì)安全,是一個(gè)相當(dāng)大的挑戰(zhàn)。簡(jiǎn)單地說(shuō),系統(tǒng)安全的程度僅相當(dāng)于最弱的一環(huán)的安全程度;除非您按端到端的觀點(diǎn)考慮安全,否則安全隨時(shí)可以遭到破壞。簡(jiǎn)單性

一個(gè)復(fù)雜的安全設(shè)計(jì)會(huì)起作用嗎?乍看起來(lái),制止未授權(quán)用戶訪問系統(tǒng)的最佳方法也許是,設(shè)計(jì)一個(gè)非常復(fù)雜的安全方案,但事實(shí)并非如此。不僅設(shè)計(jì)復(fù)雜的安全系統(tǒng)的高成本使人不敢問津,而且,要是這種安全系統(tǒng)太復(fù)雜了,恐怕連合法用戶也難以進(jìn)入。另一方面,簡(jiǎn)單系統(tǒng)更容易理解,也更容易分析。好的系統(tǒng)設(shè)計(jì)需要安全

有可能對(duì)安全進(jìn)行翻新嗎?答案是,這幾乎是不可能的。在很多情況下,翻新安全而不必重新設(shè)計(jì)系統(tǒng)的實(shí)質(zhì)性部分,可能是不現(xiàn)實(shí)的。在幾乎所有的情況下,翻新的成本非常昂貴。因此,安全從來(lái)不應(yīng)是事后考慮的事情--從一開始它就必須是系統(tǒng)設(shè)計(jì)的不可分割的一部分。計(jì)算機(jī)安全的基礎(chǔ)知識(shí)了解這樣一些內(nèi)容是有用的:計(jì)算機(jī)安全的防御對(duì)象、相應(yīng)的防御機(jī)制,以及與計(jì)算機(jī)安全有關(guān)的不同術(shù)語(yǔ)。威脅

威脅--對(duì)計(jì)算機(jī)安全的攻擊--大致可以分為以下幾類:機(jī)密性攻擊:利用加密算法中的弱點(diǎn)或以其他方式,試圖竊取機(jī)密信息。完整性攻擊:出于自私或惡意而試圖修改信息。應(yīng)該注意的是,完整性攻擊也可以是偶然的??捎眯怨簦涸噲D中斷系統(tǒng)的正常運(yùn)行??捎眯怨粲址Q為

拒絕服務(wù)

(DoS)攻擊,后者是最近流行的術(shù)語(yǔ)。幾種攻擊歸屬于上面提到的一個(gè)或幾個(gè)類別。示例包括:暴力

攻擊通常指搜索每一把鑰匙,直到用正確的那一把打開門為止。盡管這似乎是一項(xiàng)代價(jià)昂貴的操作,但實(shí)際上,通過使用專門的工具對(duì)搜索進(jìn)行仔細(xì)安排,是可能的。特洛伊木馬

攻擊以敵方不易察覺的方式插入一個(gè)內(nèi)線。計(jì)算機(jī)病毒就是常見的特洛伊木馬攻擊的例子。轉(zhuǎn)接

攻擊(person-in-the-middleattack)在雙方不知道的情況下,中途截取他們的通訊信息,而雙方以為他們?cè)谡Mㄓ崱F渌墓舭ǎ?/p>

生日攻擊、

字典攻擊、

會(huì)合

攻擊(meet-in-the-middleattack)等。(更全面的討論,請(qǐng)參閱

參考資料中BruceSchneier的

AppliedCryptography。)防護(hù)物

為抵御對(duì)安全的威脅,有各種各樣的保護(hù)機(jī)制。在歷史上,防御機(jī)制曾經(jīng)包括設(shè)置某種“圍墻”或“邊界”,通常稱為

周邊防御(perimeterdefense)。防火墻,

周邊防御的一個(gè)相當(dāng)成功的示例,將內(nèi)部(專用)網(wǎng)絡(luò)與外部(公用)網(wǎng)絡(luò)分隔開,并為公司策略提供中央控制點(diǎn)。然而,防火墻日益允許各種精選形式的通訊--例如HTTP--穿過它。虛擬專用網(wǎng)絡(luò)

(VPN),盡管仍然使用共享網(wǎng)絡(luò),但它提供的安全級(jí)別與專用網(wǎng)絡(luò)相同,是另一個(gè)防護(hù)物示例。密碼學(xué)

密碼學(xué)及其相關(guān)領(lǐng)域

密碼分析學(xué),自身與加密和解密信息的算法設(shè)計(jì)及分析有關(guān)。在下面的幾節(jié)中,我們將討論密碼學(xué)與安全之間極其重要的關(guān)系。機(jī)密性

機(jī)密性是保護(hù)數(shù)據(jù)免受未授權(quán)的一個(gè)或多個(gè)用戶訪問的方法。簡(jiǎn)單地說(shuō),就是只有預(yù)定的消息接收人才能夠弄懂這一消息。如果您正在與他人交換敏感信息,您希望絕對(duì)確保只有預(yù)定的消息接收人才可以弄懂此消息,如果落入非預(yù)定的人手中,此消息實(shí)際上將變成無(wú)用的東西。機(jī)密性是用某種形式的加密技術(shù)來(lái)實(shí)現(xiàn)的。認(rèn)證

認(rèn)證過程確認(rèn)用戶的身份。用戶可以是一個(gè)軟件實(shí)體,也可以是一個(gè)人。

委托人是其身份已被驗(yàn)證的一方,與委托人相關(guān)聯(lián)的是一組

憑證

。通常,認(rèn)證根據(jù)一些僅用戶和認(rèn)證人知道的機(jī)密信息--例如口令--來(lái)確認(rèn)身份。除了口令以外,更復(fù)雜的安全方案還將諸如智能卡或生物統(tǒng)計(jì)法(指紋、視網(wǎng)膜掃描,等等)之類的高級(jí)技術(shù)用于認(rèn)證。一旦建立了認(rèn)證,在實(shí)施中對(duì)用戶(或者更一般的說(shuō),委托人)的訪問是

訪問控制機(jī)制控制的。Kerberos

--基于密鑰和加密--展示了一種早期認(rèn)證技術(shù)。這種技術(shù)使用時(shí)間戳--在一個(gè)規(guī)定的時(shí)段內(nèi)會(huì)話保持有效--來(lái)實(shí)現(xiàn)這一點(diǎn)。為了正常工作,Kerberos最根本的一點(diǎn)是,假定分布式系統(tǒng)中的時(shí)鐘是同步的。公用密鑰基礎(chǔ)結(jié)構(gòu)

(PKI),代表一種更為普遍的認(rèn)證解決方案,將在下面的幾節(jié)中討論。JavaAuthenticationandAuthorizationService(JAAS)框架,以基于用戶的認(rèn)證和訪問控制功能補(bǔ)充Java2平臺(tái)。JAAS是Java2SoftwareDevelopmentKit,v1.3的標(biāo)準(zhǔn)擴(kuò)展。完整性

比如說(shuō)您發(fā)送一張電子支票。當(dāng)銀行最終收到該支票時(shí),它需要弄清楚付款金額有沒有被篡改,這就是稱為

完整性的安全概念。不可否認(rèn)

在上述的電子支票示例中,如果您確實(shí)發(fā)送了該支票,就應(yīng)該沒有辦法再否認(rèn)它。

不可否認(rèn)提供不可否認(rèn)的行為證據(jù),如給接收人的數(shù)據(jù)的原始證明或給發(fā)送人的數(shù)據(jù)收據(jù)。審計(jì)和日志

保存已授予或已拒絕的資源訪問的記錄,可能有助于日后的審計(jì)工作。就此目的而言,

審計(jì)和

日志對(duì)于防止非法入侵或事后對(duì)非法入侵進(jìn)行分析,是大有用處的。策略和訪問控制

安全策略著重控制對(duì)保護(hù)數(shù)據(jù)的訪問,安全執(zhí)行機(jī)制應(yīng)該足夠靈活以執(zhí)行策略,這一點(diǎn)至關(guān)重要。這稱為保持策略與機(jī)制相分離。盡管作出該決策的依據(jù)可能是,按照委托人身份來(lái)授權(quán)訪問某一資源,但是,根據(jù)

角色來(lái)管理訪問控制通常更為容易。每個(gè)

委托人被映射到唯一的一個(gè)角色,以達(dá)到控制訪問的目的。通常這樣來(lái)實(shí)現(xiàn):用一個(gè)列表或矩陣,列舉不同的用戶/角色所擁有的對(duì)不同保護(hù)資源的訪問權(quán)。Java2Platform,EnterpriseEdition(J2EE)使用

基于角色的認(rèn)證

來(lái)執(zhí)行其策略。考慮到這一點(diǎn),在J2EE中,業(yè)務(wù)邏輯的開發(fā)人員根據(jù)角色來(lái)限制對(duì)特定功能的訪問。密碼學(xué):保密書寫的科學(xué)雖然密碼學(xué)和計(jì)算機(jī)安全是兩個(gè)截然不同的主題,但是計(jì)算機(jī)安全在很多方面都依賴于密碼學(xué)。Java.security

與幾個(gè)核心包一起提供了一些Java的加密功能。

Javax.crypto

是主要的包,它的某些功能部件受出口控制法的控制。此外,

.ssl

包在必要時(shí)可用來(lái)創(chuàng)建安全套接字傳遞機(jī)密信息。下一步,讓我們了解一些與密碼學(xué)有關(guān)的概念。密碼分析學(xué)

密碼分析學(xué),與密碼學(xué)正好相反,是解碼或攻擊秘密編碼信息而無(wú)須訪問密鑰的藝術(shù)。密碼分析學(xué)已經(jīng)使用理論性攻擊發(fā)現(xiàn)了許多算法中的安全漏洞,并導(dǎo)致了算法的廢棄或重大修改。密碼分析學(xué)在分析和驗(yàn)證算法,使算法更加安全方面,起著關(guān)鍵性作用。密碼學(xué)算法

有幾種

算法

可以加密信息。一種簡(jiǎn)單的算法可能要將消息的字符輪換13個(gè)位置--稱為

rot13

。雖然rot13是不安全的(因?yàn)樵枷⒑苋菀捉饷埽?,但是它仍然普遍用于雖不安全但畢竟是已加密了的消息傳送。如果以

Kerckhoff

在十九世紀(jì)所做的工作為基礎(chǔ),則密碼系統(tǒng)的安全應(yīng)該完全基于密鑰的保密,而不是基于算法的保密。密鑰,再加上經(jīng)過充分測(cè)試和分析的算法,可用密碼學(xué)方法生成安全的系統(tǒng)。相應(yīng)地,許多廣泛流行的算法可用于公眾審查。對(duì)許多算法所做的密碼分析學(xué)工作導(dǎo)致了對(duì)算法的若干修改,從而使它們的功能更強(qiáng)大。注:有關(guān)設(shè)計(jì)下一代加密標(biāo)準(zhǔn)的過程的信息,請(qǐng)參閱第一個(gè)

專題。單向散列函數(shù)

單向散列函數(shù)

H(M),

對(duì)一則任意長(zhǎng)度的消息進(jìn)行處理,并返回一個(gè)具有固定長(zhǎng)度

m的散列值

h: h=H(M),其中h的長(zhǎng)度為m;這一算法的安全源于其

單向性,而不是其內(nèi)部工作方式的保密性。更嚴(yán)格地說(shuō),

H(M)具有以下屬性:給定

M,很容易計(jì)算出

h給定

h,很難計(jì)算出滿足

H(M)=h的

M給定

M,很難找到一則消息

M',使得

H(M)=H(M')散列法是數(shù)字簽名的基本部分,將在下面討論。RSA的RonRivest設(shè)計(jì)了

MD4(消息摘要)和

MD5

(RSA是一家安全公司的名稱,它由該公司創(chuàng)始人RonRivest、AdiShamir和LeonardAdleman的姓氏首字母組成。MD4和MD5產(chǎn)生一個(gè)128位散列。

SHA

(安全散列法算法),由NationalInstituteofStandardsandTechnology(NIST)與NationalSecurityAgency(NSA)聯(lián)合設(shè)計(jì),它產(chǎn)生一個(gè)160位散列,用于

數(shù)字簽名算法

(DSA)。

SHA-1

,在某些文獻(xiàn)中簡(jiǎn)稱為SHA,是1994年發(fā)表的SHA的修訂版。SHA和SHA-1都是

安全散列標(biāo)準(zhǔn)

(SHS)的一部分,與MD4函數(shù)系列有共同之處。MD4、MD5和SHA是單向散列函數(shù)的一些示例。作為一個(gè)例子,根據(jù)MD5算法為外觀類似的消息生成了下面的128位散列。表1.使用MD5的散列值原始消息散列值(用十六進(jìn)制表示)aquickbrownfoxjumpedoveralazydog13b5eeb338c2318b790f2ebccb91756faquickbluefoxjumpedoveralazydog32c63351ac1c7070abaquickbrowndogjumpedoveralazyfoxa4c3b4cd38ade6b5e2e101d879a966f對(duì)于任意長(zhǎng)度的消息,此算法都將生成一個(gè)代表該消息的固定長(zhǎng)度的散列。從表1可以清楚地看出,即使稍微修改消息,也會(huì)更改其散列。要找出散列值相同的一個(gè)替換消息,將是一件耗費(fèi)時(shí)間的事情。到目前為止,我們已經(jīng)討論了不使用密鑰的單向函數(shù)。另一方面,

消息認(rèn)證代碼

(MAC)是一種使用密鑰的單向函數(shù),可以用它們?cè)谙到y(tǒng)上或用戶之間認(rèn)證文件或消息。

HMAC(用于消息認(rèn)證的密鑰散列法)就是這種函數(shù)的一個(gè)例子。對(duì)稱密碼

對(duì)稱密碼,在與密鑰聯(lián)合應(yīng)用時(shí),將

明文轉(zhuǎn)換為

密文。密碼也可以使用

相同的密鑰將密文恢復(fù)為明文。所謂對(duì)稱性,即指加密和解密使用完全相同的密鑰。加密和解密有兩個(gè)相關(guān)的函數(shù),如下所示:Ek(M)=C,其中M是明文,C是密文,k是密鑰Dk(C)=M,其中C、M和k的意義同上它們具有基本的屬性:

D

k(E

k(M))=M給定一個(gè)設(shè)計(jì)良好的算法,則過程的安全就在于密鑰的保密。因此,對(duì)稱密碼的主要挑戰(zhàn)在于密鑰的分布形式--通訊雙方如何共享同一密鑰?不同的是,非對(duì)稱密碼則不使用同一密鑰。相反,它們依賴一個(gè)廣泛可用的、自由分布的公用密鑰。使用專用密鑰的加密通常比使用公用密鑰的加密速度快。在一個(gè)混合的密碼系統(tǒng)中,用于會(huì)話的專用密鑰稱為

會(huì)話密鑰,是使用公用密鑰建立的,通訊雙方將會(huì)話密鑰用于會(huì)話的其余部分。這是一種形式的密鑰交換。其他形式的密鑰交換使用更安全的通道來(lái)交換專用密鑰??梢詫?duì)稱密碼分類為

流密碼或

塊密碼。流密碼對(duì)位流或字節(jié)流進(jìn)行操作,而塊密碼則對(duì)一組位進(jìn)行操作。密文中的本質(zhì)區(qū)別是,如果使用塊密碼的同一密鑰進(jìn)行加密,則相同的明文塊將加密為相同的密文塊;而在使用流密碼時(shí),則每次加密時(shí)都將明文塊加密為不同的密文塊。大多數(shù)塊算法都符合

Feistel網(wǎng)絡(luò)屬性,這意味著用于加密和解密的算法是相同的,僅在密鑰的應(yīng)用方面存在一些差異。有幾種操作

模式。模式可以增強(qiáng)加密,還可以修改對(duì)稱密碼的特征。例如,通過使用適當(dāng)?shù)哪J剑梢允挂粋€(gè)塊密碼的行為與一個(gè)流密碼相似。下面列出的是幾個(gè)重要的模式:電子食譜模式(ECB)密碼塊鏈接(CBC)密碼反饋模式(CFB)輸出反饋模式(OFB)有幾種塊密碼,其中包括

數(shù)據(jù)加密標(biāo)準(zhǔn)

(DES)。DES將由

高級(jí)加密標(biāo)準(zhǔn)(AES)代替(請(qǐng)參閱

專題

,“AES:二十一世紀(jì)的加密算法”)。同時(shí),TripleDES(3DES或DESede),是對(duì)DES的改進(jìn),它在采用AES之前替代DES。在DESede中,加密過程是使用不同的密鑰依次進(jìn)行編碼、解碼和編碼的處理,有效地增大了密鑰的長(zhǎng)度。非對(duì)稱密碼

與加密和解密都使用相同密鑰的對(duì)稱密碼不同,非對(duì)稱密碼以如下方式使用不同的密鑰:Ek1(M)=C,其中k1是加密密鑰Dk2(C)=M,其中k2是解密密鑰非對(duì)稱密碼具有以下的基本屬性:Dk1(Ek2(M))=M在非對(duì)稱密碼中,通訊雙方不必共享同一密鑰。然而,密鑰

k1

k2在數(shù)學(xué)上是相關(guān)的,以便使加密和解密處理相關(guān)聯(lián)。公用密鑰和專用密鑰

非對(duì)稱密鑰密碼又稱為

公用密鑰密碼學(xué),因?yàn)樗鼈兩婕?/p>

公用密鑰這一概念。公用密鑰是可自由使用的,而專用密鑰是一個(gè)秘密。在一個(gè)用戶網(wǎng)絡(luò)中,每個(gè)用戶都有其自己的公用密鑰,這些密鑰在一個(gè)通??稍L問的目錄中發(fā)布。在二十世紀(jì)七十年代中期,WhitfieldDiffie和MartinHellman一起,RalphMerkle一個(gè)人,分別引入了公用密鑰密碼學(xué)。公用密鑰算法的安全基于以下過程的難度:在不知道密鑰的情況下,從

密文推斷出

明文,以及從公用密鑰推斷出專用密鑰。了解下面這一點(diǎn)是很重要的:在大多數(shù)文獻(xiàn)中對(duì)公用密鑰和專用密鑰的討論可能是模糊不清的,因?yàn)樵S多文章看起來(lái)是將相同的密鑰用于加密和解密,但是在討論中隱含了這樣的事實(shí):它們所說(shuō)的密鑰,一個(gè)是專用密鑰,另一個(gè)是公用密鑰。要注意的另一點(diǎn)是,在使用多個(gè)算法時(shí),要求使用多個(gè)密鑰,因?yàn)槊荑€對(duì)算法來(lái)說(shuō)是唯一的。下面將討論的數(shù)字簽名和證書均依賴公用密鑰密碼學(xué)。數(shù)字簽名

數(shù)字簽名,

很像實(shí)際生活中的簽名,提供發(fā)送人可靠性和消息完整性的證明。數(shù)字簽名可用于“不可否認(rèn)”--發(fā)送人無(wú)法否認(rèn)他(或她)已經(jīng)簽名。數(shù)字簽名要成功就必須不可偽造并不可重用,而且已簽名的文檔必須是不可修改的?;镜臄?shù)字簽名協(xié)議是:發(fā)送人用他/她的專用密鑰加密文檔,并隱式地在文檔上簽名消息發(fā)出接收人用發(fā)送人的公用密鑰解密該文檔,從而驗(yàn)證該簽名由于在大文檔上簽名很費(fèi)時(shí),因此通常只在消息的散列上簽名。單向散列和數(shù)字簽名算法被公認(rèn)為是先驗(yàn)的。原始消息與簽名一起發(fā)送。接收人用發(fā)送人的公用密鑰解密散列,并將它與由收到的消息生成的散列相對(duì)照,來(lái)驗(yàn)證簽名。下面的圖1說(shuō)明簽名的生成和驗(yàn)證過程。該方案還有一個(gè)好處,即將文檔和簽名分開。

圖1.數(shù)字簽名

請(qǐng)注意,消息使用散列算法生成一個(gè)固定長(zhǎng)度的散列,然后加密該散列以生成簽名。這些簽名有時(shí)稱為

數(shù)字指紋,因?yàn)樗鼈兾ㄒ坏卮碓枷?。使用?shù)字簽名并不保證機(jī)密性,因?yàn)橄⑹亲鳛槊魑陌l(fā)送的。為了進(jìn)一步保證機(jī)密性,而不是發(fā)送明文消息,可以用發(fā)送人的專用密鑰對(duì)它進(jìn)行加密,此過程如圖2所示。

圖2.加密的數(shù)字簽名

數(shù)字簽名有幾種算法,如ElGamal簽名、RSA或數(shù)字簽名算法(DSA)。ElGamal和RSA算法都可以用于加密和數(shù)字簽名。不同的是,DSA是數(shù)字簽名標(biāo)準(zhǔn)(DSS)的一部分,則只能用于數(shù)字簽名,不能用于加密。如果希望加密,則必須將其他的加密算法與DSA聯(lián)合使用。下面的表2簡(jiǎn)明地匯總了目前所討論過的所有不同加密算法的各種特征,并對(duì)每一種算法提供了一些示例。表2.加密算法總結(jié)加密算法簡(jiǎn)要說(shuō)明安全屬性問題示例安全屬性單向散列函數(shù)生成長(zhǎng)度固定的唯一簽名算法的單向性簽名沖突SHA、MD4、MD5消息認(rèn)證代碼(MAC)使用密鑰的單向函數(shù)算法的單向性簽名沖突HMAC認(rèn)證對(duì)稱密碼用同一密鑰加密和解密密鑰長(zhǎng)度和算法密鑰分布DES認(rèn)證、完整性、機(jī)密性非對(duì)稱密碼(公用密鑰密碼學(xué))加密和解密使用不同的(公用的和專用的)密鑰。很容易獲得公用密鑰。密鑰長(zhǎng)度、算法,以及從公用密鑰推斷專用密鑰的難度。信任問題RSA、ElGamal認(rèn)證、完整性數(shù)字簽名為認(rèn)證而生成散列消息,并用發(fā)送人的專用密鑰加密單向性和密鑰長(zhǎng)度無(wú)保密性DSA、RSA認(rèn)證、完整性帶加密的數(shù)字簽名消息簽名、并用接收人的公用密鑰加密簽名、加密算法和密鑰長(zhǎng)度信任問題數(shù)字簽名和密碼的組合認(rèn)證、完整性和機(jī)密性證書

由于數(shù)字簽名依賴于公用密鑰的完整性,那么驗(yàn)證人如何確保他們獲得的公用密鑰不是來(lái)自某個(gè)冒名頂替者呢?而且,在數(shù)字簽名認(rèn)證發(fā)送人的同時(shí),接收人如何能夠確保發(fā)送人值得信任呢?這些問題的解決方案就是證書。由共同信任的第三方或證書管理機(jī)構(gòu)(CA)頒發(fā)證書。CA不僅有公用密鑰,還有用戶的其他信息。證書含有一個(gè)有效期。頒發(fā)機(jī)構(gòu)用它的專用密鑰在證書上簽名。該過程隱含一個(gè)假定,即CA的公用密鑰是廣泛可用的和真實(shí)的。公用密鑰證書以

X.509

標(biāo)準(zhǔn)為基礎(chǔ)。CA的一些示例包括Verisign、Thawte(現(xiàn)在由VeriSign擁有)和Entrust。在Java中,

javax.security.cert

程序包提供證書支持。公用密鑰的基礎(chǔ)結(jié)構(gòu)

較新的公用密鑰基礎(chǔ)結(jié)構(gòu)(PKI)因來(lái)源不同而有幾種含義。一種觀點(diǎn)認(rèn)為PKI是指信任層次結(jié)構(gòu)和公用密鑰證書,而另一種觀點(diǎn)則認(rèn)為它還包括加密和數(shù)字簽名服務(wù)。PKI還解決了幾個(gè)與密鑰有關(guān)的問題,包括密鑰

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論