文章詳情頁(yè)
安全的基礎(chǔ)----學(xué)習(xí)java安全之前的準(zhǔn)備
瀏覽:38日期:2024-06-29 17:35:46
內(nèi)容: 安全的基礎(chǔ)知識(shí)在高度保證企業(yè)應(yīng)用程序安全的過(guò)程中我們不免會(huì)考慮到如下的安全需求,然后我們針對(duì)這些安全需求提出各種安全技術(shù):1、 完整性驗(yàn)證(Integrity Verification)。也就是以防止我們需要的內(nèi)容不被篡改,仍然不吃其真實(shí)性。2、 機(jī)密性保持(Confidentiality Preservation)。通俗的說(shuō)就是防止內(nèi)容被別人讀懂。3、 認(rèn)證和訪問(wèn)授權(quán)(Authenticity Permission)。通俗的說(shuō)就是對(duì)來(lái)訪者提供的信息進(jìn)行分析和判斷,從而確定來(lái)訪者身份。然后根據(jù)身份決定該來(lái)訪者具有什么權(quán)限。4、 不可抵賴的證據(jù)(Nonrepudiation Evidence)。據(jù)個(gè)很簡(jiǎn)單的例子,如果在網(wǎng)上進(jìn)行相應(yīng)的支付操作。如果我已經(jīng)給他們錢了,但他們?nèi)匀徽f(shuō)我沒(méi)給他們?cè)趺崔k?好了,這里你只要明白我們后面的介紹的技術(shù)會(huì)解決這個(gè)問(wèn)題的。5、 審計(jì)證據(jù)(Auditing Evidence)。對(duì)一些安全性十分重要的數(shù)據(jù)操作進(jìn)行紀(jì)錄和觀察。針對(duì)上面提到的需求列表對(duì)各個(gè)技術(shù)進(jìn)行比較粗略地介紹。詳細(xì)內(nèi)容請(qǐng)從[email protected] 獲取。加密技術(shù)加密技術(shù)是其它安全服務(wù)技術(shù)的基礎(chǔ),他們的穿插使用相當(dāng)廣泛。所以在學(xué)習(xí)軟件安全技術(shù)之前了解各種加密技術(shù)是相當(dāng)重要的。加密技術(shù)的分類1、消息摘要消息摘要主要用于保持?jǐn)?shù)據(jù)的完整性,我們經(jīng)常聽(tīng)到的校驗(yàn)和就是消息摘要的一個(gè)特例。它的算法是一個(gè)單項(xiàng)函數(shù)。也就是直接將輸入的數(shù)據(jù)進(jìn)行消息摘要提取,但絕不能從消息摘要生成原數(shù)據(jù)。消息摘要的算法分為如下幾類(最常用的是MD5和SHA-1):u MD2:是一個(gè)速度很慢但相當(dāng)安全的算法,它產(chǎn)生128位的摘要值。u MD4:速度很快,但安全性下降。同樣產(chǎn)生128位的摘要值。u MD5:是MD4的一個(gè)更安全的版本,同時(shí)速度更快。也產(chǎn)生128位的摘要值。u SHA:安全哈希算法,產(chǎn)生一個(gè)160位的摘要值。u SHA-1:在克服SHA的一些缺陷基礎(chǔ)上形成的哈希算法。u SHA-256、SHA-383 和 SHA-512 提供更長(zhǎng)的指紋,大小分別是 256 位、383 位和 512 位。u MAC:消息認(rèn)證碼,使用秘密密鑰和消息摘要算法來(lái)創(chuàng)建消息摘要。我們可能經(jīng)常會(huì)疑問(wèn),我們有了消息摘要為什么還要認(rèn)證碼呢?聽(tīng)我給你舉個(gè)例子,前面的提到的消息摘要,只要有明文和算法,誰(shuí)都可以生成同樣的消息摘要,但有時(shí)為了特殊的目的我們需要只有特定的人才能生成這個(gè)摘要。好了,那怎么辦?通過(guò)在生成消息摘要的過(guò)程中加入相應(yīng)的密鑰,從而使生成的消息摘要在沒(méi)有密鑰的情況下難以生成。2、對(duì)稱密鑰(私鑰加密)對(duì)稱密鑰應(yīng)該是相當(dāng)強(qiáng)壯的信息加密算法。這和我們生活中的鑰匙極為相像。例如你家的門鎖可以有好幾把鑰匙,并且這些鑰匙都相同。在現(xiàn)實(shí)生活中,你可以將做好的鑰匙收遞手交給你的親人,但在網(wǎng)絡(luò)中就變了,你要通過(guò)網(wǎng)絡(luò)來(lái)傳遞這把鑰匙。所以對(duì)鑰匙的保護(hù)又需要相應(yīng)的加密技術(shù)。好了,通過(guò)這個(gè)通俗的例子,你應(yīng)該知道對(duì)稱密鑰干什么?它的弱點(diǎn)在哪里?等問(wèn)題的答案了吧。下面是一些最普通的對(duì)稱密鑰算法:u DES:DES(數(shù)據(jù)加密標(biāo)準(zhǔn))是由 IBM 于上世紀(jì) 70 年代發(fā)明的,美國(guó)政府將其采納為標(biāo)準(zhǔn),使用56位的密鑰。u 3-DES(TripleDES):該算法被用來(lái)解決使用 DES 技術(shù)的 56 位時(shí)密鑰日益減弱的強(qiáng)度,其方法是:使用兩個(gè)密鑰對(duì)明文運(yùn)行 DES 算法三次,從而得到 112 位有效密鑰強(qiáng)度。TripleDES 有時(shí)稱為 DESede(表示加密、解密和加密這三個(gè)階段)。u RC2和RC4:可以使用2048位的密鑰并且提供了一個(gè)十分安全的算法。他們都來(lái)自于領(lǐng)先的加密安全性公司 RSA Security。u RC5:使用了一種可配置的密鑰大小。也來(lái)自領(lǐng)先的加密安全性公司 RSA Security。u AES:AES(高級(jí)加密標(biāo)準(zhǔn))取代 DES 成為美國(guó)標(biāo)準(zhǔn)。它是由 Joan Daemen 和 Vincent Rijmen 發(fā)明的,也被稱為 Rinjdael 算法。它是 128 位分組密碼,密鑰長(zhǎng)度為 128 位、192 位或 256 位。u Blowfish:這種算法是由 Bruce Schneier 開(kāi)發(fā)的,它是一種具有從 32 位到 448 位(都是 8 的整數(shù)倍)可變密鑰長(zhǎng)度的分組密碼,被設(shè)計(jì)用于在軟件中有效實(shí)現(xiàn)微處理器。u PBE。PBE(基于密碼的加密)可以與多種消息摘要和私鑰算法結(jié)合使用。3、非對(duì)稱密鑰(公共密鑰)我們?cè)诮榻B對(duì)稱密鑰的時(shí)候舉了一個(gè)例子,提到了密鑰傳輸?shù)陌踩珕?wèn)題。并且在網(wǎng)絡(luò)中的傳輸雙方并不是我們現(xiàn)實(shí)中的“親人關(guān)系。那么公鑰正好解決了這個(gè)問(wèn)題。我這里舉個(gè)通俗的例子,例如你有個(gè)信箱(物理信箱),開(kāi)著一個(gè)縫隙(公鑰),大家都能往里塞東西,但是一旦賽進(jìn)取,那可不是大家都能取到的,只有擁有信箱鑰匙(私鑰)才能得到。哈哈!就這樣。公鑰就這樣,不要擔(dān)心它多難理解。當(dāng)然當(dāng)我們反過(guò)來(lái)理解的時(shí)候就有些和信箱不同的地方。也就是用私鑰加密的東西只有對(duì)應(yīng)的公鑰才能進(jìn)行解密,這種算法經(jīng)常被應(yīng)用在數(shù)字簽名上。其實(shí)在現(xiàn)實(shí)中你可以將公鑰技術(shù)和私鑰技術(shù)結(jié)合起來(lái)完成信息保密,因?yàn)楣€的計(jì)算速度相當(dāng)慢,比私鑰慢大約100-1000倍。下面是一些非對(duì)稱密鑰算法列表:u RSA:這個(gè)算法是最流行的公鑰密碼算法,使用長(zhǎng)度可以變化的密鑰。u Diffie-Hellman:技術(shù)上將這種算法稱為密鑰協(xié)定算法。它不能用于加密,但可以用來(lái)允許雙方通過(guò)在公用通道上共享信息來(lái)派生出秘鑰。然后這個(gè)密鑰可以用于私鑰加密。需要注意的是私鑰和密鑰是成對(duì)的,并且不能用一個(gè)生成另外一個(gè),特別是不能用公鑰生成私鑰,否則就麻煩了。認(rèn)證和不可抵賴我們經(jīng)常在論壇中中見(jiàn)到管理員、斑竹等身份標(biāo)識(shí),并且我們更明白擁有不同的身份它們的權(quán)限也同樣有差別。但我們很想擁有管理員的權(quán)限,我們的突破口應(yīng)該在哪里呢?當(dāng)然是獲得一個(gè)管理員的賬號(hào),這樣就可以被系統(tǒng)的認(rèn)證系統(tǒng)識(shí)別。通俗的說(shuō)就是要讓系統(tǒng)的認(rèn)證識(shí)別器確認(rèn)你是管理員身份就可以了。呵呵,沒(méi)那么容易,因?yàn)楦鱾€(gè)系統(tǒng)都具有嚴(yán)密的認(rèn)證體系,不象一些小朋友做的認(rèn)證邏輯處在sql語(yǔ)句邏輯上那么簡(jiǎn)單。認(rèn)證的實(shí)現(xiàn)方法多種多樣,真的,我以前做網(wǎng)站的時(shí)候總是想當(dāng)然地進(jìn)行用戶認(rèn)證。但其基礎(chǔ)技術(shù)有如下列表:u 基于口令的身份認(rèn)證u 基于令牌的物理標(biāo)識(shí)和認(rèn)證u 基于生物測(cè)定學(xué)的認(rèn)證u 基于證書(shū)的認(rèn)證下面就分別將這些認(rèn)證做一介紹:基于口令的身份認(rèn)證太熟悉了,不是嗎?這里只很想告訴口令暴露的過(guò)程以及保護(hù)的過(guò)程。我們通常見(jiàn)到的口令認(rèn)證方式是在傳輸過(guò)程中口令完全暴露,并且在服務(wù)器端的口令存儲(chǔ)上也完全是明文的形式,造成的后果是口令完全被暴露,很容易被監(jiān)聽(tīng)。那么如何保護(hù)這些過(guò)程中的口令呢?暫時(shí)的思路是:建立在安全傳輸層的基礎(chǔ)上,內(nèi)部口令不以明文形式出現(xiàn)。好了,不多說(shuō)了,需要了解更詳細(xì)的內(nèi)容請(qǐng)發(fā)郵件到:[email protected]。基于令牌的物理標(biāo)識(shí)和認(rèn)證功能我們不用說(shuō),當(dāng)然是非常強(qiáng)大,但代價(jià)昂貴。你見(jiàn)過(guò)這樣的認(rèn)證嗎?呵呵,很少的話,就了解一下就行了,要更多了解勸你先研究一下ATM機(jī)和ATM卡或者給我發(fā)郵件:[email protected]。基于生物測(cè)定學(xué)的認(rèn)證想想就知道了,你的指紋、眼睛視網(wǎng)膜等可真是獨(dú)一無(wú)二啊。呵呵,其復(fù)雜性也是很大的。我都部知道^^,當(dāng)然你可以知道,別忘了告訴我[email protected]。基于證書(shū)的認(rèn)證近年來(lái)相當(dāng)流行的認(rèn)證技術(shù)應(yīng)該是基于證書(shū)的認(rèn)證。證書(shū)的概念和我們現(xiàn)實(shí)中的畢業(yè)證書(shū)、學(xué)位證書(shū)等沒(méi)有多大差別。上面可以記載一些事實(shí)信息(特別是某一實(shí)體),那當(dāng)然差別主要體現(xiàn)在數(shù)字技術(shù)的特殊需要上。其實(shí)證書(shū)就是一個(gè)數(shù)據(jù)塊,主要包括公開(kāi)密鑰、主體相關(guān)的信息、證書(shū)有效的日期、證書(shū)發(fā)行者的信息和證書(shū)發(fā)行者生成的簽名。不是“親人那我們就得搞清楚對(duì)方是什么?不然的話,我們?cè)趺茨馨?ldquo;她的東西拿來(lái)用呢?或者怎么能把咱們的東西給“她呢?“她得拿出個(gè)什么憑據(jù)吧?呵呵,那當(dāng)然。這無(wú)可非議,可能現(xiàn)在你更急切的就是想知道這個(gè)證書(shū)的簽發(fā)和應(yīng)用過(guò)程吧?好了。我們繼續(xù)。我們前面已經(jīng)談過(guò)將公鑰技術(shù)反過(guò)來(lái)可以應(yīng)用于數(shù)字簽名。但這種前面誰(shuí)都可以簽的,數(shù)字簽名僅僅能解決消息來(lái)源真是你擁有公鑰的主人,但并不能說(shuō)明該主人就是一個(gè)多么“可愛(ài)的家伙。哎!完了,沒(méi)法確定她是否“可愛(ài)了。但我倒有個(gè)主意,我們?nèi)フ乙粋€(gè)特別了解此人的人(當(dāng)然要權(quán)威了)問(wèn)問(wèn)看此人是否信得過(guò)。哈哈,就是這樣,我們經(jīng)常說(shuō)的CA機(jī)構(gòu)就是干這事情的。爽!那么整個(gè)過(guò)程如何呢?其實(shí)整個(gè)過(guò)程很簡(jiǎn)單,我就認(rèn)為是二次數(shù)字簽名就是了。第一次首先需要證書(shū)的實(shí)體將自己的信息和公鑰提交給CA,CA確認(rèn)該組織的可信賴之后,就用自己的密鑰對(duì)該實(shí)體的信息和公鑰進(jìn)行簽名。最后被簽名的信息會(huì)就叫證書(shū)。站在用戶的角度,用戶首先接到一個(gè)證書(shū),當(dāng)然會(huì)根據(jù)CA(可信)提供的公鑰進(jìn)行解密,如果能解密,當(dāng)然就可以獲得可信賴的信息和實(shí)體公鑰。然后由實(shí)體公鑰再進(jìn)行前面我們介紹的數(shù)字簽名解密步驟。呵呵,就這樣,由介紹完了。安全套接字層安全套接字層(SSL)和取代它的傳輸層安全性(TLS)是用于在客戶機(jī)和服務(wù)器之間構(gòu)建安全的通信通道的協(xié)議。它也用來(lái)為客戶機(jī)認(rèn)證服務(wù)器,以及(不太常用的)為服務(wù)器認(rèn)證客戶機(jī)。該協(xié)議在瀏覽器應(yīng)用程序中比較常見(jiàn),瀏覽器窗口底部的鎖表明 SSL/TLS 有效。TLS 1.0 和 SSL 3.1 一樣。SSL/TLS 使用本教程中已經(jīng)討論過(guò)的三種密碼術(shù)構(gòu)件的混合體,但這一切都是對(duì)用戶透明的。以下是該協(xié)議的簡(jiǎn)化版本:· 當(dāng)使用 SSL/TLS(通常使用 https:// URL)向站點(diǎn)進(jìn)行請(qǐng)求時(shí),從服務(wù)器向客戶機(jī)發(fā)送一個(gè)證書(shū)。客戶機(jī)使用已安裝的公共 CA 證書(shū)通過(guò)這個(gè)證書(shū)驗(yàn)證服務(wù)器的身份,然后檢查 IP 名稱(機(jī)器名)與客戶機(jī)連接的機(jī)器是否匹配。· 客戶機(jī)生成一些可以用來(lái)生成對(duì)話的私鑰(稱為會(huì)話密鑰)的隨機(jī)信息,然后用服務(wù)器的公鑰對(duì)它加密并將它發(fā)送到服務(wù)器。服務(wù)器用自己的私鑰解密消息,然后用該隨機(jī)信息派生出和客戶機(jī)一樣的私有會(huì)話密鑰。通常在這個(gè)階段使用 RSA 公鑰算法。· 然后,客戶機(jī)和服務(wù)器使用私有會(huì)話密鑰和私鑰算法(通常是 RC4)進(jìn)行通信。使用另一個(gè)密鑰的消息認(rèn)證碼來(lái)確保消息的完整性。 from-javaresearch.org Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽:
Java
相關(guān)文章:
排行榜
