您好,登錄后才能下訂單哦!
對稱密碼、非對稱密碼、散列算法與PKI
密碼學(xué)要解決的問題:機(jī)密性、完整性、身份驗證(抗抵賴性):
一、對稱密碼:
對稱密碼技術(shù):發(fā)件人和收件人使用其共同擁有的單個密鑰 ,這種密鑰既用于加密,也用于解密,叫做機(jī)密密鑰(也稱為對稱密鑰或會話密鑰)。
能夠提供信息機(jī)密性(沒有密鑰信息不能被解密)、完整性(被改變的信息不能被解密)的服務(wù)。
對稱式密碼學(xué)又稱:單鑰密碼學(xué)、秘密密鑰密碼學(xué)、會話密鑰密碼學(xué)、私鑰密碼學(xué)、共享秘鑰密碼學(xué)
常見的對稱式加密技術(shù):
DES(數(shù)據(jù)加密標(biāo)準(zhǔn)):分組式加密,算法源于Lucifer,作為NIST對稱式加密標(biāo)準(zhǔn);64位(有效位56位、校驗8位),分組算法
3DES:128位,分組算法
IDEA(國際數(shù)據(jù)加密算法):128位,比DES快,分組算法
Blowfish:32-448位,算法公開,分組算法
RC4:流密碼,密鑰長度可變
RC5:分組密碼,密鑰長度可變,最大2048位
Rijndael:128位/196位/256位
AES(高級加密標(biāo)準(zhǔn)):DES升級版,算法出自Rinjindael
對稱密碼的優(yōu)點:
用戶只需記憶一個密鑰,就可用于加密、解密;
與非對稱加密方法相比,加密解密的計算量小,速度快,簡單易用,適合于對海量數(shù)據(jù)進(jìn)行加密處理 。
對稱密碼的缺點:
如果密鑰交換不安全,密鑰的安全性就會喪失。特別是在電子商務(wù)環(huán)境下,當(dāng)客戶是未知的、不可信的實體時,如何使客戶安全地獲得密鑰就成為一大難題。
如果用戶較多情況下的密鑰管理問題。N*(N-1)/2
如果密鑰多個用戶被共享,不能提供抗抵賴性
例如:
假設(shè)Alice和Bob是認(rèn)識的,兩人為了保證通信消息不被其它人截取,預(yù)先約定了一個密碼,用來加密在他們之間傳送的消息,這樣即使有人截取了消息沒有密碼也無法知道消息的內(nèi)容。由此便實現(xiàn)了機(jī)密性。
但是,以上的實現(xiàn)過程存在以下問題:
1):如果Alice和Bob是在互聯(lián)網(wǎng)中彼此不認(rèn)識的,那么Alice該如何和Bob協(xié)商(或者說傳送)共享密鑰(密碼)?
2):如果Alice要和100個人通信,他需要記住多少個密碼?和1000個、10000個人......通信呢?
3):如果Alice和其它人通信使用了和Bob相同的密碼,那么如何知道這個消息一定是來自Bob呢?
由此就引入了非對稱密碼。
二、非對稱密碼:
使用一對密鑰:一個用于加密信息,另一個則用于解密信息。
兩個密鑰之間存在著相互依存關(guān)系:即用其中任一個密鑰加密的信息只能用另一個密鑰進(jìn)行解密。
其中加密密鑰不同于解密密鑰,公鑰加密私鑰解密,反之也可私鑰加密公鑰解密。
密鑰依據(jù)性質(zhì)劃分,將其中的一個向外界公開,稱為公鑰;另一個則自己保留,稱為私鑰。公鑰(Public key)常用于數(shù)據(jù)加密(用對方公鑰加密)或簽名驗證(用對方公鑰解密),私鑰(Private key)常用于數(shù)據(jù)解密(發(fā)送方用接收方公鑰加密)或數(shù)字簽名(用自己私鑰加密)。
機(jī)密性、完整性、抗抵賴性
常見的非對稱式加密技術(shù):
Diffie-Hellman :最早產(chǎn)生,計算離散對數(shù),是一種密鑰交換協(xié)定算法,不加密、不產(chǎn)生數(shù)字簽名。
第一個非對稱密鑰協(xié)商算法,重點解決密鑰分發(fā)問題
基于“有限域上的離散對數(shù)計算困難”的難題
通信雙方在不可信的網(wǎng)絡(luò)上交換他們彼此的公鑰,再在各自的系統(tǒng)上生成相同的對稱密鑰。
最初的Diffie-Hellman算法容易遭受到中間人***,應(yīng)對這種***的方法是在接受某人的公鑰前進(jìn)行身份驗證。
不提供加密、數(shù)字簽名功能。
RSA:大素數(shù)分解,可加密,可簽名
EI Gamal :離散對數(shù),可加密,可簽名,最慢
橢圓曲線:計算離散對數(shù),功能與RSA相似,更快
DSA:EI的變種,離散對數(shù),不加密,可簽名,比RSA慢
背包:背包算法,可加密,可簽名,已淘汰
DSS:數(shù)字簽名標(biāo)準(zhǔn)
如下:
首先,Alice為了保證消息的機(jī)密性,用Bob的公鑰加密了數(shù)據(jù),這樣就只能用Bob的私鑰解密消息,所以只有Bob才能看到消息。
這固然實現(xiàn)了機(jī)密性,然而Bob如何驗證消息是來自Alice呢,因為任何人都可以得到Bob的公鑰。由此就有了下面這種方式:
Alice為了向Bob證明消息確實是她發(fā)的,就用自己的私鑰加密消息然后發(fā)送給Bob,Bob用Alice的公鑰解密了消息,于是知道了消息的確是Alice發(fā)的,因為只有用Alice私鑰加密的消息才能用她的公鑰解密。
這樣便實現(xiàn)了身份驗證,然而任何人都可以用Alice的公鑰來解密消息,這樣機(jī)密性又無從保證了,于是又有了下面這種方式:
Alice先用自己的私鑰加密數(shù)據(jù)(實現(xiàn)身份驗證),然后再用Bob的公鑰再次加密剛才加密過的消息密文(實現(xiàn)機(jī)密性),然后發(fā)送給Bob,Bob先用自己的私鑰解密,再用Alice的公鑰解密,如此便實現(xiàn)了機(jī)密性和身份驗證。
然而,非對稱算法本身就耗資源,運算速度慢,此處還加密了兩次,對于批量數(shù)據(jù)是絕對不可接受的,有沒有更好的辦法呢?由此又引入了下面的混合加密:
三、混合加密
混合加密簡單的說就是用非對稱算法交換對稱秘鑰,用對稱密鑰加密數(shù)據(jù)。
如下:
Alice先隨機(jī)生成一個會話密鑰,然后用這個會話密鑰加密消息,再用Bob的公鑰加密會話密鑰,然后把消息密文和會話密鑰密文(數(shù)字信封)都發(fā)送給Bob,Bob收到消息先用自己的私鑰解密數(shù)字信封,得到會話秘鑰,再用會話密鑰解密消息密文。
注意,這里不能實現(xiàn)身份驗證,Alice無法向Bob證明消息是自己發(fā)的。
四、散列算法(哈希函數(shù)、單向加密)
消息完整性:
有很多協(xié)議使用校驗位和循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)函數(shù)來檢測位流從一臺計算機(jī)傳送到另一臺計算機(jī)時是否被更改。但校驗位和循環(huán)冗余校驗通常只能檢測出無意的更改。
如果消息被***者截獲,在更改之后重新計算校驗值,這樣接收方永遠(yuǎn)也不會知道位流被篡改。為了實現(xiàn)這種保護(hù),需要采用散列算法來檢測有意或無意的對數(shù)據(jù)的未授權(quán)更改。
Hash(哈希)函數(shù)(也稱為散列函數(shù)):輸入可以是任何長度消息,通過一個單向的運算產(chǎn)生一個定長的輸出。這個輸出被稱之為Hash值(散列值,也被稱為哈希摘要),其具有以下特點:
Hash值應(yīng)是不可預(yù)測的。
Hash函數(shù)是單向函數(shù),不可逆。
Hash函數(shù)具有確定性(唯一性),對于輸入X應(yīng)該總是產(chǎn)生相同的輸出Y。
尋找任何(x,y)對使得H(x)=H(y),在計算上不可行(強(qiáng)無碰撞,抗“生日***”)
對任何給定分組x,尋找不等于x的y,使得H(y)=H(x),在計算上不可行(弱無碰撞)
散列的種類:
MD2:128位,比MD4、MD5慢
MD4:128
MD5:128,比MD4復(fù)雜
HAVAL算法:可變,MD5變種
SHA安全散列:SHA-1 160位,SHA-256 256位,SHA-384,SHA-512;
Tiger:192位,比MD5、SHA-1快
RIPEMD-160:160位,MD4、MD5的替代
如下:
Alice使用散列算法對消息計算出消息摘要1,然后把消息摘要1附在消息明文后面一并發(fā)送給Bob,Bob收到消息后使用相同的散列算法對消息明文計算出消息摘要2,然后和消息摘要1比較,如果相同則表示消息未遭到篡改。
但簡單的這樣做并不能實現(xiàn)真正的完整性,假如有人在中間截獲消息修改后重新計算消息摘要附在后面,Bob依然認(rèn)為消息未遭到篡改。同時也不能實現(xiàn)身份驗證,于是便有了數(shù)字簽名:
數(shù)字簽名:
數(shù)字簽名是指用戶用自己的私鑰對原始數(shù)據(jù)的哈希摘要(Hash digest)進(jìn)行加密所得的數(shù)據(jù)。
信息接收者使用信息發(fā)送者的公鑰對附在原始信息后的數(shù)字簽名進(jìn)行解密后獲得哈希摘要。通過與自己用收到的原始數(shù)據(jù)產(chǎn)生的哈希摘要對照,以確認(rèn)以下兩點:
信息是由簽名者發(fā)送的(身份驗證、不可抵賴性)
信息自簽發(fā)后到收到為止未曾信得過任何修改(完整性)
數(shù)字簽名標(biāo)準(zhǔn) :
在1991年,NIST提議了一個為數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard,DSS)的聯(lián)邦標(biāo)準(zhǔn) FIPS 186( 使用SHA),它最近一次更新實在2013年,作為FIPS 186-4被發(fā)布,包括了DSA、RSA、ECC
DSS有兩種創(chuàng)建簽名的方法DSA和RSA。與RSA不同,DSA只能用于數(shù)字簽名,并且比RSA慢,RSA能夠用于數(shù)字簽名、加密以及密鑰分發(fā)。
如下:
Alice用散列算法計算出消息摘要,然后用自己的私鑰加密消息摘要(數(shù)字簽名),然后將消息明文和數(shù)字簽名一起發(fā)送給Bob,Bob收到消息用Alice 的公鑰解密數(shù)字簽名得到原消息摘要(驗證了Alice的身份),用相同的散列算法對消息計算消息摘要,然后將兩個消息摘要進(jìn)行比較,如果消息摘要相同則表示消息沒有遭到篡改。
注意:這里假如有第三者Tom進(jìn)行中間人***,他可以篡改消息,也可以重新計算消息摘要,但是Tom卻沒有Alice的私鑰來加密消息摘要,此時如果Tom用自己的私鑰加密消息摘要,當(dāng)Bob收到消息后用Alice的公鑰將無法解密數(shù)字簽名得到消息摘要原文。
綜上,不能算法的不同功能:
從上面可以看出,在這些實現(xiàn)過程中,公鑰至關(guān)重要,那么我們又如何驗證用戶的公鑰,就像本文的例子中,Alice如何得到Bob的公鑰,得到公鑰后又如何驗證這個公鑰就是Bob的?此時就需要一個雙方都信任的第三方機(jī)構(gòu),由此引入PKI:
五、公鑰基礎(chǔ)設(shè)施(PKI)
PKI是由軟件、通信協(xié)議、數(shù)據(jù)格式、安全策略等用于使用、管理、控制公鑰密碼體制的一套系統(tǒng)。它主要有三個目的:發(fā)布公鑰/證書,證明綁定公鑰的實體,提供一個公鑰有效性的驗證。
PKI提供基本服務(wù):
機(jī)密性
完整性
訪問控制
真實性
不可否認(rèn)性
數(shù)字證書:
PKI技術(shù)采用證書管理公鑰,通過第三方的可信任機(jī)構(gòu)認(rèn)證中心CA (Certificate Authority),把用戶的公鑰和用戶的其他標(biāo)識信息(如名稱、email、×××號等)捆綁在一起,在Internet網(wǎng)上驗證用戶的身份。
公鑰證書是以數(shù)字方式簽名的聲明,它將公鑰的值與持有相應(yīng)私鑰的主體(個人、設(shè)備和服務(wù))的身份綁定在一起。通過在證書上簽名,CA可以核實與證書上公鑰相應(yīng)的私鑰為證書所指定的主體所擁有。
數(shù)字證書的格式是由CCITT X.509國際標(biāo)準(zhǔn)所規(guī)定的,它包含了以下幾點:
證書擁有者的姓名
證書擁有者的公鑰
公鑰的有效期
頒發(fā)數(shù)字證書的單位
數(shù)字證書的序列號(Serial number)
CA的名稱,并用CA的數(shù)字簽名簽署該證書
CA所遵循的用來確定證書主體身份策略的標(biāo)識符
在證書中標(biāo)識的密鑰對(公鑰及相關(guān)的私鑰)的用法
證書廢止列表(CRL)的位置
ITU-T X.509并非證書的惟一格式。例如,Pretty Good Privacy (PGP)安全電子郵件是依賴PGP所獨有的一種證書。
CA:
負(fù)責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機(jī)構(gòu)
具體功能:
接收驗證RA轉(zhuǎn)發(fā)來的最終用戶數(shù)字證書的申請。
確定是否接受最終用戶數(shù)字證書的申請-證書的審批。
生成密鑰對和證書
向申請者頒發(fā)證書
為簽發(fā)的證書提供組織與責(zé)任的權(quán)威公證
接收最終用戶數(shù)字證書的查詢、撤銷。
產(chǎn)生和發(fā)布證書廢止列表(CRL)
密鑰管理(密鑰備份、密鑰恢復(fù)、密鑰更新)
數(shù)字證書的歸檔。
密鑰歸檔
歷史數(shù)據(jù)歸檔。
簡單的說,PKI實現(xiàn)的功能就是用一個大家都信任的機(jī)構(gòu)CA給用戶頒發(fā)一個數(shù)字證書,證書中包含用戶的公鑰(這個公鑰可以是用戶自己生成的提交給CA的也可以是CA生成發(fā)給用戶的)及相關(guān)身份信息。以本文的Alice和Bob為例,Alice為了向Bob證明自己是Alice和某個公鑰是自己的,她便向一個Alice和Bob都信任的CA機(jī)構(gòu)申請證書,Alice先自己生成了一對密鑰對(私鑰和公鑰),把自己的私鑰保存在自己電腦上,然后把公鑰給CA申請證書,CA接受申請于是給Alice頒發(fā)了一個數(shù)字證書,證書中包含了Alice的那個公鑰以及其它身份信息,當(dāng)然,CA會計算這些信息的消息摘要并用自己的私鑰加密消息摘要(數(shù)字簽名)一并附在Alice的證書上,以此來證明這個證書就是CA自己頒發(fā)的。Bob得到Alice 的證書后用CA的證書(自簽署的)中的公鑰來解密消息摘要,這樣就確認(rèn)Alice的證書是CA發(fā)的,證書中的信息未遭到篡改,同時也得到了Alice的公鑰。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。