消息摘要主要用于保持?jǐn)?shù)據(jù)的完整性,我們經(jīng)常聽到的校驗和就是消息摘要的一個特例。它的算法是一個單項函數(shù)。也就是直接將輸入的數(shù)據(jù)進行消息摘要提取,但絕不能從消息摘要生成原數(shù)據(jù)。消息摘要的算法分為如下幾類(最常用的是md5和SHA-1): u MD2:是一個速度很慢但相當(dāng)安全的算法,它產(chǎn)生128位的摘要值。 u MD4:速度很快,但安全性下降。同樣產(chǎn)生128位的摘要值。 u MD5:是MD4的一個更安全的版本,同時速度更快。也產(chǎn)生128位的摘要值。 u SHA:安全哈希算法,產(chǎn)生一個160位的摘要值。 u SHA-1:在克服SHA的一些缺陷基礎(chǔ)上形成的哈希算法。 u SHA-256、SHA-383 和 SHA-512 提供更長的指紋,大小分別是 256 位、383 位和 512 位。 u MAC:消息認(rèn)證碼,使用秘密密鑰和消息摘要算法來創(chuàng)建消息摘要。我們可能經(jīng)常會疑問,我們有了消息摘要為什么還要認(rèn)證碼呢?聽我給你舉個例子,前面的提到的消息摘要,只要有明文和算法,誰都可以生成同樣的消息摘要,但有時為了非凡的目的我們需要只有特定的人才能生成這個摘要。好了,那怎么辦?通過在生成消息摘要的過程中加入相應(yīng)的密鑰,從而使生成的消息摘要在沒有密鑰的情況下難以生成。
2、對稱密鑰(私鑰加密)
對稱密鑰應(yīng)該是相當(dāng)強壯的信息加密算法。這和我們生活中的鑰匙極為相像。例如你家的門鎖可以有好幾把鑰匙,并且這些鑰匙都相同。在現(xiàn)實生活中,你可以將做好的鑰匙收遞手交給你的親人,但在網(wǎng)絡(luò)中就變了,你要通過網(wǎng)絡(luò)來傳遞這把鑰匙。所以對鑰匙的保護又需要相應(yīng)的加密技術(shù)。好了,通過這個通俗的例子,你應(yīng)該知道對稱密鑰干什么?它的弱點在哪里?等問題的答案了吧。下面是一些最普通的對稱密鑰算法: u DES:DES(數(shù)據(jù)加密標(biāo)準(zhǔn))是由 IBM 于上世紀(jì) 70 年代發(fā)明的,美國政府將其采納為標(biāo)準(zhǔn),使用56位的密鑰。 u 3-DES(TripleDES):該算法被用來解決使用 DES 技術(shù)的 56 位時密鑰日益減弱的強度,其方法是:使用兩個密鑰對明文運行 DES 算法三次,從而得到 112 位有效密鑰強度。TripleDES 有時稱為 DESede(表示加密、解密和加密這三個階段)。 u RC2和RC4:可以使用2048位的密鑰并且提供了一個十分安全的算法。他們都來自于領(lǐng)先的加密安全性公司 RSA Security。 u RC5:使用了一種可配置的密鑰大小。也來自領(lǐng)先的加密安全性公司 RSA Security。 u AES:AES(高級加密標(biāo)準(zhǔn))取代 DES 成為美國標(biāo)準(zhǔn)。它是由 Joan Daemen 和 Vincent Rijmen 發(fā)明的,也被稱為 Rinjdael 算法。它是 128 位分組密碼,密鑰長度為 128 位、192 位或 256 位。 u Blowfish:這種算法是由 BrUCe Schneier 開發(fā)的,它是一種具有從 32 位到 448 位(都是 8 的整數(shù)倍)可變密鑰長度的分組密碼,被設(shè)計用于在軟件中有效實現(xiàn)微處理器。 u PBE。PBE(基于密碼的加密)可以與多種消息摘要和私鑰算法結(jié)合使用。
3、非對稱密鑰(公共密鑰)
我們在介紹對稱密鑰的時候舉了一個例子,提到了密鑰傳輸?shù)陌踩珕栴}。并且在網(wǎng)絡(luò)中的傳輸雙方并不是我們現(xiàn)實中的“親人”關(guān)系。那么公鑰正好解決了這個問題。我這里舉個通俗的例子,例如你有個信箱(物理信箱),開著一個縫隙(公鑰),大家都能往里塞東西,但是一旦賽進取,那可不是大家都能取到的,只有擁有信箱鑰匙(私鑰)才能得到。哈哈!就這樣。公鑰就這樣,不要擔(dān)心它多難理解。當(dāng)然當(dāng)我們反過來理解的時候就有些和信箱不同的地方。也就是用私鑰加密的東西只有對應(yīng)的公鑰才能進行解密,這種算法經(jīng)常被應(yīng)用在數(shù)字簽名上。其實在現(xiàn)實中你可以將公鑰技術(shù)和私鑰技術(shù)結(jié)合起來完成信息保密,因為公鑰的計算速度相當(dāng)慢,比私鑰慢大約100-1000倍。下面是一些非對稱密鑰算法列表: u RSA:這個算法是最流行的公鑰密碼算法,使用長度可以變化的密鑰。 u Diffie-Hellman:技術(shù)上將這種算法稱為密鑰協(xié)定算法。它不能用于加密,但可以用來答應(yīng)雙方通過在公用通道上共享信息來派生出秘鑰。然后這個密鑰可以用于私鑰加密。 需要注重的是私鑰和密鑰是成對的,并且不能用一個生成另外一個,非凡是不能用公鑰生成私鑰,否則就麻煩了。
認(rèn)證和不可抵賴
我們經(jīng)常在論壇中中見到治理員、斑竹等身份標(biāo)識,并且我們更明白擁有不同的身份它們的權(quán)限也同樣有差別。但我們很想擁有治理員的權(quán)限,我們的突破口應(yīng)該在哪里呢?當(dāng)然是獲得一個治理員的賬號,這樣就可以被系統(tǒng)的認(rèn)證系統(tǒng)識別。通俗的說就是要讓系統(tǒng)的認(rèn)證識別器確認(rèn)你是治理員身份就可以了。呵呵,沒那么輕易,因為各個系統(tǒng)都具有嚴(yán)密的認(rèn)證體系,不象一些小朋友做的認(rèn)證邏輯處在sql語句邏輯上那么簡單。 認(rèn)證的實現(xiàn)方法多種多樣,真的,我以前做網(wǎng)站的時候總是想當(dāng)然地進行用戶認(rèn)證。但其基礎(chǔ)技術(shù)有如下列表: u 基于口令的身份認(rèn)證 u 基于令牌的物理標(biāo)識和認(rèn)證 u 基于生物測定學(xué)的認(rèn)證 u 基于證書的認(rèn)證 下面就分別將這些認(rèn)證做一介紹: