Public-Key
是否有管理員密鑰可以解密組中不同人員使用不同密鑰加密的所有密文?
這是場景:
- $ A, B, C, \ldots, Z $ 與管理員在一個組中 $ Admin $ ,
- 組中的每個使用者都有自己的密鑰 $ Key_A, Key_B $ , 等等…
- 每個人都用自己的密鑰加密自己的資訊,
但是是否有可能擁有一個密鑰,例如管理員可以解密所有使用者的所有密文?
我有一個簡單的想法:
- 管理員與組中的所有成員共享一個主密鑰,
- 所有使用者在管理員處註冊他的身份,
- 管理員為每個使用者生成每個使用者的密鑰,
- 管理員與所有使用者共享密鑰。
但是這樣管理員就會知道所有使用者的密鑰,這是不安全的。
另一個解決方案(參見@Raoul722 評論)如下:
混合使用對稱和非對稱加密很容易實現。
假設每個使用者 $ k $ 有一個密鑰對: $ (K_{pub}^k,K_{priv}^k) $ .
管理員也有他的密鑰對: $ (K_{pub}^{admin},K_{priv}^{admin}) $ 在哪裡 $ K_{pub}^{admin} $ 是眾所周知的。
使用者的加密方案 $ k $ :
- 生成隨機密鑰 $ K_{sym} $ .
- 使用非對稱加密設備(例如 AES)加密您的文件 $ K_{sym} $ .
- 加密 $ K_{sym} $ 使用非對稱加密(RSA、ECC…) $ K_{pub}^k $ ,我們稱之為 $ K_k $ .
- 加密 $ K_{sym} $ 使用非對稱加密(RSA、ECC…) $ K_{pub}^{admin} $ 讓我們稱之為 $ K_{admin} $ .
使用者解密方案 $ k $ :
- 解密 $ K_k $ 用他的私鑰( $ K_{priv}^k $ ),他會得到 $ K_{sym} $ .
- 解密文件 $ K_{sym} $ .
使用者解密方案 $ admin $ :
- 解密 $ K_{admin} $ 用他的私鑰( $ K_{priv}^{admin} $ ),他會得到 $ K_{sym} $ .
- 解密文件 $ K_{sym} $ .
唯一的問題是您將加密密鑰儲存在哪裡: $ K_{k} $ 和 $ K_{admin} $ (也許在加密文件的元數據中?:))
關於密鑰隱私:在此方案中,採用非對稱方案可防止管理員知道每個使用者的私鑰。
注意:這種方案在公司中在以下場景中很有用。假設每個人都加密他的文件。一個人碰巧發生了致命事故(RIP),你如何找回他的作品?會出現的問題是主密鑰的安全儲存(通常是離線和密封以防止惡意使用)。