混合密碼系統用對稱密碼來加密明文,用公鑰密碼來加密對稱密碼中所使用的密鑰。通過使用混合密碼系統,就能夠在通信中將對稱密碼和公鑰密碼的優勢結合起來。
對稱密碼與公鑰密碼
公鑰密碼的兩大問題
- 公鑰密碼的處理速度遠遠低于對稱密碼
- 公鑰密碼難以抵御中間人攻擊
混合密碼系統能夠解決上述處理速度慢的,但是如果要解決中間人攻擊的問題,則需要對公鑰進行認證(后面的文章會陸續更新)
混合密碼系統
將消息通過對稱密碼來加密,將加密消息使用的密鑰通過公鑰密碼來加密,這樣的兩步密碼機制就是混合密碼系統的本質。
注意:用公鑰密碼對加密消息時使用的對稱密碼的密鑰進行加密,由于對稱密碼的密鑰一般比消息本身要短,因此公鑰密碼速度慢的問題就可以忽略了。
混合密碼的組成機制
- 用對稱密碼加密消息
- 通過偽隨機數生成器生成對稱密碼加密中使用的會話密鑰
- 用公鑰密碼加密會話密鑰
- 從混合密碼系統外部賦予公鑰密碼加密時使用的密鑰
注意:混合密碼系統運用了偽隨機數生成器、對稱密碼和公鑰密碼這三種密碼技術。正是通過這三種密碼技術的結合,才創造出一種兼具對稱密碼和公鑰密碼優點的密碼方式。
加密
加密消息
此圖中,右半部分是加密消息的部分(對稱密碼),左半部分是加密會話密鑰的部分(公鑰密碼)
消息的加密方法和對稱密碼的一般加密方法相同,當消息很長時,則需要使用分組密碼的模式(后續文章更新會講到),即便非常長的消息,也可以通過對稱密碼快速完成加密,這就是右半部分所進行的處理。
加密會話密鑰
左半部分進行的是會話密鑰的生成和加密操作。
會話密鑰是指為本次通信而生成的臨時密鑰,它一般是通過偽隨機數生成器產生的,偽隨機數生成器所產生的會話密鑰同時也會被傳遞給右半部分,作為對稱密碼的密鑰使用。
會話密鑰是對稱密碼的密鑰,同時也是公鑰密碼的明文
解密
混合密碼系統的密文是由“用公鑰密碼加密的會話密鑰”和“用對稱密碼加密的消息”組合而成的,因此首先需要將兩者分離(發送者和接收事先約定好密文的結構)
密鑰長度的平衡
混合密碼系統中運用了對稱密碼和公鑰密碼兩種密碼方式,無論其中任何一方的密鑰過短,都可能遭到集中攻擊,因此對稱密碼和公鑰密碼的密鑰長度必須具備同等的強度。
然而,考慮到長期運用的情況,公鑰密碼的強度應該高于對稱密碼,因為對稱密碼的會話密鑰被破譯只會影響本次通信的內容,而公鑰密碼一旦被破譯,從過去到未來的(用相同的公鑰加密的)所有通信內容就都能夠被破譯了。