Rsa
生成每個數據共享密鑰與每個會話
我已經閱讀了有關 SSL 的資訊,他們在整個會話中保留了共享密鑰。但是,stackoverflow 中的某個人建議了一種為要發送的每個數據生成共享密鑰的方法,然後使用預期的消息/數據發送由客戶端公鑰加密的共享密鑰。然後,客戶端必須首先使用其私鑰解密該消息的共享密鑰,然後通過解密的共享密鑰解密該消息。
客戶端到伺服器的連接則相反。
我的問題是,與每個會話的持久共享密鑰相比,這有什麼優勢?
會話密鑰用於通過非對稱加密共享對稱密鑰。這背後的原因是對稱加密算法比非對稱加密算法更快,這也稱為混合密碼系統,因為它結合了對稱和非對稱加密。
會話密鑰是在會話開始時隨機生成的,並且僅對一個會話有效(因此稱為“會話密鑰”)。會話密鑰的使用提供了一種稱為前向保密的功能。簡而言之,前向保密保證即使伺服器的私鑰被洩露,會話密鑰也不會被洩露。
為每條消息創建一個新的會話密鑰(有點)違反了混合密碼系統的使用,因為您必須一直使用非對稱加密,而不僅僅是第一次交換。如果您的消息當然非常大,那麼使用此方案會很有意義,但這種情況很少見。
使用會話密鑰而不是“每個消息會話密鑰”通常非常好。
我的問題是,與每個會話的持久共享密鑰相比,這有什麼優勢?
從理論上講,它會為每條消息而不是每條會話提供前向保密,並且確實存在您所描述的這種加密方案的新實現,例如Efficient Ratcheting,它顯然提供了每條消息的會話並且也非常高效。