应用篇——密钥
無論是對稱密碼、公鑰密碼還是消息認(rèn)證碼、數(shù)字簽名等密碼技術(shù),都需要使用密鑰,那什么是密鑰?
目錄
一、密鑰介紹
密鑰分類
1)根據(jù)用途分類:
2)通過使用次數(shù)分類:
3)根據(jù)加密對象分類:
二、密鑰的管理
1.密鑰的生成
1)使用隨機(jī)數(shù)生成密鑰
2)使用口令生成密鑰
2.配送密鑰
3.更新密鑰
4.保存密鑰
5.作廢密鑰
三、簡單分析diffie-hellman密鑰交換
密鑰交換步驟
四、基于口令的密碼(PBE)
1.PBE加密過程
2.PBE解密過程
3.鹽的作用
4.生成口令的注意事項:
一、密鑰介紹
密鑰:是一種在明文轉(zhuǎn)密文或密文轉(zhuǎn)明文的算法中輸入的參數(shù)
在密鑰中,數(shù)字本身大小并不重要,重要的是密鑰的空間大小(可能出現(xiàn)的密鑰總數(shù)量);因為密鑰空間越大,進(jìn)行暴力破解就越困難。密鑰的空間大小是由密鑰長度決定的
- 信息的機(jī)密性,不能依賴密碼算法,而是要依賴妥善保管的密鑰?;
- 明文和密鑰的價值相等,沒有明文,密鑰就沒有價值,沒有密鑰,明文就不能保證其價值
?
密鑰分類
1)根據(jù)用途分類:
對稱密鑰:加密和解密使用同一個密鑰,由于需要收發(fā)雙方要共享密鑰,因此要對除發(fā)送者和接收者之外的人保密
公鑰密鑰:加密和解密使用的是不同的密鑰,其中,公鑰加密,私鑰解密;公鑰可以公開,而私鑰只能自己持有
消息認(rèn)證碼:接收者和發(fā)送和之間共享密鑰來認(rèn)證,認(rèn)證碼只能由持有合法密鑰的認(rèn)得出;通常將消息認(rèn)證碼附在報文后面,可識別消息是否被篡改或偽裝
消息認(rèn)證碼也是收發(fā)雙方的合法證明,因此需要對除收發(fā)雙方以外的人保密
數(shù)字簽名:和公鑰密碼相反,私鑰用于生成簽名,公鑰用于驗證簽名
?
對稱密碼和公鑰密碼是用于確保機(jī)密性的密鑰;消息認(rèn)證碼和數(shù)字簽名是用于認(rèn)證的密鑰
2)通過使用次數(shù)分類:
會話密鑰:每次通信只使用一次的密鑰;會話密鑰只在本次通信中有效,在下一次時,使用新的密鑰
主密鑰:一直重復(fù)使用的密鑰
?
3)根據(jù)加密對象分類:
CEK(內(nèi)容加密密鑰):加密的對象是用戶直接使用的信息
KEK(密鑰加密密鑰):用于加密密鑰
?
二、密鑰的管理
1.密鑰的生成
1)使用隨機(jī)數(shù)生成密鑰
使用偽隨機(jī)數(shù)生成器來生成密鑰,需要注意:密碼學(xué)用途的偽隨機(jī)數(shù)生成器必須專門針對密碼學(xué)用途而設(shè)計(具備不可預(yù)測的性質(zhì))
2)使用口令生成密鑰
使用可記住的口令來生成密鑰(已經(jīng)很少直接使用),現(xiàn)在都是將口令輸入單向散列函數(shù)得到的散列值作為密鑰使用
2.配送密鑰
采用事先共享密鑰、密鑰分配中心、公共密鑰、Diffie-Hellman密鑰交換等方法
3.更新密鑰
在使用共享密鑰進(jìn)行同通信時,定期改變密鑰(收發(fā)雙方使用同樣的方法同時更改)
原理:使用當(dāng)前密鑰散列值作為下一個密鑰
4.保存密鑰
在該密鑰需要重復(fù)使用時使用
為了使該密鑰保密,要使用另一個密鑰對其進(jìn)行加密行加密(KEK);雖然完全解決文件機(jī)密性問題,但可以減少要保管的密鑰數(shù)量(使用一個密鑰同時加密多個密鑰,因此該密鑰的價值也就等于這多個密鑰)
5.作廢密鑰
在計算機(jī)上僅是刪除文件是不夠的,因為現(xiàn)在有很多可以恢復(fù)誤刪文件的軟件(刪除的文件實際并沒有刪除,只是不顯示了而已);因此要作廢密鑰時,不僅僅刪除就可以,還需要將密鑰列入CRL中
三、簡單分析diffie-hellman密鑰交換
使用該算法,通信雙方僅交換一些公開信息,就能生成共享密鑰(IPsec就使用了改良版的diffie-hellman),因此也稱為Diffie-hellman密鑰協(xié)商
密鑰交換步驟
1)Alice向Bob發(fā)送P和G這兩個質(zhì)數(shù)
P必須非常大,G是P的生成元【1】;P與G不需要保密,可有收發(fā)雙方任意一方生成
2)Alice生成一個隨機(jī)數(shù)A
A是一個1~P-2之間的整數(shù),只有Alice知道
3)Bob生成一個隨機(jī)數(shù)B
同上,只有Bob知道
4)Alice將G^A mod P發(fā)送給Bob(可公開)
5)Bob將G^B mod P 發(fā)送給Alice (可公開)
6)Alice用Bob發(fā)送來的數(shù)計算共享密鑰(Bob也用Alice發(fā)送過來的數(shù)計算密鑰)
Alice的密鑰 =(G^B mod P)^A mod P = G^A×B mod P
Bob的密鑰 = (G^A mod P)^B mod P = G^B×A mod P
由上得出Alice的密鑰=Bob的密鑰
在該交換密鑰中,最主要的是A和B,不能讓第三方知道
根據(jù)G^A mod P 求A的有效算法還未出現(xiàn),該問題可稱為有限群的離散對數(shù)問題
【1】生成元:群中元素可以由最小數(shù)目個群元的乘積生成,這組群元稱為該群的生成元,生成元的數(shù)目為有限群的秩
生成元的乘方結(jié)果與1~P-1的數(shù)字一一對應(yīng)
四、基于口令的密碼(PBE)
根據(jù)口令生成密鑰并使用該密鑰進(jìn)行加密,其中加密與解密使用同一個密鑰
PBE算法在加密過程中并不是直接使用口令來加密,而是加密的密鑰由口令生成,這個功能由PBE算法中的KDF函數(shù)完成。KDF函數(shù)的實現(xiàn)過程為:將用戶輸入的口令首先通過“鹽”(salt)的擾亂產(chǎn)生準(zhǔn)密鑰,再將準(zhǔn)密鑰經(jīng)過散列函數(shù)多次迭代后生成最終加密密鑰,密鑰生成后,PBE算法再選用對稱加密算法對數(shù)據(jù)進(jìn)行加密,可以選擇DES、3DES、RC5等對稱加密算法
1.PBE加密過程
1)生成KEK
使用偽隨機(jī)數(shù)生成器生成稱為“鹽”(salt)的隨機(jī)數(shù),將鹽和Alice的口令一同輸入到單向散列函數(shù),得到的散列值就是密鑰加密密鑰(KEK)
鹽:一種抵御字典攻擊的防御機(jī)制
2)生成會話密鑰并加密
繼續(xù)使用偽隨機(jī)數(shù)生成器生成會話密鑰(CEK,用于加密消息),將(1)生成的KEK加密CEK,并將鹽和加密過的CEK保存在的安全地方,并丟棄KEK(使用鹽和口令就可以重建)
3)加密消息
使用(2)中生成的會話密鑰加密消息
?
最后PBE的輸出為:鹽、KEK加密后的CEK,CEK加密后的消息
2.PBE解密過程
1)重建KEK
將鹽和口令一同輸入單向散列函數(shù)得出散列值就是KEK
2)解密會話密鑰?
將KEK加密過的CEK使用(1)得到的KEK進(jìn)行解密,可得到CEK
3)解密消息
使用(2)得到的CEK解密被加密的消息
?
3.鹽的作用
字典攻擊:是一種使用預(yù)先準(zhǔn)備好的候選密鑰列表,在需要破解密碼時,使用該列表逐條對應(yīng)進(jìn)行匹配,可縮短大量時間的一種攻擊方式
在生成密鑰時,沒有加鹽的話;攻擊者會在事先生成大量的候選密鑰,進(jìn)行匹配;如果在生成密鑰時加鹽,鹽的長度越大,候選密鑰的數(shù)量就越多(密鑰空間越大);只要攻擊者沒有獲得鹽,就無法生成密鑰
?
4.生成口令的注意事項:
1)只使用自己知道的信息
- 不要使用對自己重要的信息(生日、對象名字之類的)
- 不使用關(guān)于自己的信息(姓名、員工號、地址等)
- 不要使用別人見過的信息(星期、星座等)
2)將多個不同口令分開使用
很多人無論QQ也好、淘寶也好、電子郵箱也好都是用同一個密碼,這會造成當(dāng)密碼被破解時,與自己相關(guān)的應(yīng)用都會受到損害
;也不要使用只變了一部分的密碼(www123、www124、www125之類的)因為只要破解出一個,其他也很輕松被推測出來
3)密碼的局限性
隨著計算機(jī)的發(fā)展,其計算速度越來越快;因此使用暴力破解的速度也就越來越快
?
?
總結(jié)