管理與特定源代碼相關的加密密鑰的規範方法是什麼? (例如,與特定程序強烈關聯的SSH或RSA密鑰對)。管理加密密鑰的好方法?
由於顯而易見的原因,我不願意將其檢入版本控制,但我不希望它們僅駐留在少數人的本地硬盤上。
管理與特定源代碼相關的加密密鑰的規範方法是什麼? (例如,與特定程序強烈關聯的SSH或RSA密鑰對)。管理加密密鑰的好方法?
由於顯而易見的原因,我不願意將其檢入版本控制,但我不希望它們僅駐留在少數人的本地硬盤上。
你可以把它們加入到版本控制中,只讓少數人知道密碼。這有一個優點,即它們與代碼一起存儲,您可以輕鬆更新它們,但這些文件對攻擊者無用(提供您使用強密碼)。
工業實力的答案是使用Hardware Security Module(HSM)。
稍微不那麼花哨的答案是保持公司的印刷和/或電子副本安全。
當我負責管理我們的軟件簽名密鑰時,我將GPG密鑰保存在我們網絡中的兩臺主機上,具有出色的主機安全性和良好的防火牆。我燒了兩份CD副本:一份給我們的CTO,另一份給我們的首席執行官。 (我剛剛告訴他,「不要丟失這張光盤,不要放棄它。」保持簡單:)
密碼對於密鑰是不同的。我記得那個。如果我失蹤的話,那些會爲我填補的同事知道密碼。我要求我們的首席執行官和首席技術官使用密鑰將密碼遠離CD。
當然,這是我們每天最多使用一次的密鑰,而且在我們發佈安全更新時,通常不會每天或數週。如果您的需求與我們的需求不同,您可能需要做其他事情。
非常好的問題,並沒有絕對正確的答案海事組織。
問題要問自己:
1)什麼是關鍵的成爲聞名的影響
2)什麼是公司
3)如何重要的是它的工程師能夠產生釋放的信任水平構建
的想法包括:
在源代碼控制庫,但與存儲限制「secure_group」訪問
優點
缺點
構建系統注入的密鑰 標準構建包含虛擬密鑰。
發佈版本被當 建築規範
優點
缺點
- 所有數據/系統必須支持虛設鑰匙
- 建立服務器成爲瓶頸/關鍵任務組件
自定義DRM包
創建自己的密鑰包,即RSA加密的首部與會話生成的對稱密鑰來加密的關鍵數據。 DRM方法還允許你做的東西,比如集合包到期時間或使用的最大數量
優點
缺點需求
- 大量的自定義代碼
- 所有構建系統需要重新設計,以讀取密鑰包數據 - 密鑰包需要的lib/API提取,因此工程師仍然可以讀取關鍵數據
還有其他的選擇如安全加密服務器或雙通認證網站來檢索關鍵數據。
根據我的經驗,沒有完美的解決方案,雖然我會從社區
希望幫助
聽取建議或意見很感興趣