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