題:
更新證書時是否應該更改私鑰?
Commander Keen
2013-01-10 14:17:23 UTC
view on stackexchange narkive permalink

我的安全部門堅持要求我(系統管理員)在為我們的Web服務器續訂SSL證書時創建一個新的私鑰。他們聲稱這是最佳做法,但是我在Google上進行搜索的嘗試未能證實他們的說法。正確的方法是什麼?

我找到的最接近的方法是是否應該每年重新生成一個新的SSL私鑰?,但這並不能真正解釋為什麼需要這樣做。

我知道在我更改鑰匙的過程中沒什麼大不了的,但是我從來沒有一個人會在沒有正當理由的情況下只做我被告知的事情,或者說明:)

就個人而言,我真的很驚訝CA甚至允許使用相同的密鑰進行續訂。
有趣的是,正如@Thomas Pornin在下面提到的那樣,從安全的角度來看,即使情況相似,同一安全部門也不會堅持每年為他們的SSH服務器生成新密鑰。客戶端的.ssh / known_hosts文件。
十 答案:
Polynomial
2013-01-10 15:07:39 UTC
view on stackexchange narkive permalink

我要說的是,他們的建議不是很可靠,除非您使用的密鑰太小了-在這種情況下,您會遇到另一個問題。

一個2048位密鑰,根據大多數估計,即使不超過2020年,也可以確保您的安全。如果您使用的是1024位或更少的密鑰,則低於標準值,我建議立即更新為2048位。如果您當前正在使用1536位密鑰,則應該安全一兩年。

當然,從學術上講,這都是安全的。

正如您所鏈接的問題中提到的那樣,利弊各有千秋。

好處

  • 為攻擊者減少破解密鑰的時間。如果無論如何您都使用合理的密鑰大小,那將是一個有爭議的問題。不太可能,但未知。
  • 使您有機會增加密鑰大小,使其領先於曲線。

缺點 p除非您使用的是非常小的密鑰,否則>

  • 並沒有真正為您提供防止密鑰破解的任何具體保護。
  • 針對瀏覽器的SSL檢查/反MitM插件可能會警告用戶,密鑰已更改。在我看來,這是一個薄弱的缺點-大多數用戶不會使用它。
  • 與更嚴格的 HSTS政策和實施有關的內容可能會引起臨時警告。
  • li>
  • 這需要工作。您可能還會做其他事情。

因此,從兩方面來看,都有一些薄弱的原因,並且可能需要考慮一些極端情況。只要您使用2048位或更高版本的密鑰,我就會稍微傾向於“除非您需要”,否則不要傾斜。

最重要的是要問他們為什麼認為有必要-可能是您有一個與基礎架構相關的原因來更新我們不知道的密鑰。如果他們不能提出一個可靠的論點(“為什麼不正確”是不正確的),那麼他們應該適當地重新評估他們的建議。

為什麼在證書中使用新的密鑰對比使用相同的密鑰進行更新需要更多的工作?
@CodesInChaos並非如此,但是更新任何關聯的客戶端證書當然要花很多時間。如果我沒記錯的話,在不更改密鑰的情況下更新服務器證書時,可以保留所有客戶端證書。但是,如果您更改密鑰,則也必須更新所有客戶端證書。
另外,如果更改密鑰,通常會需要完全重新啟動Web服務器(請參閱Apache,但假設其他人也需要這樣做),但是如果僅更改證書,則可以進行正常重啟(無停機時間) 。當然,擁有高可用性環境可以緩解所有這些問題,但是...
@SteelCityHacker僅當您運行的網站每分鐘具有數千次點擊時,這才成為問題。在大多數情況下,您可能很不幸,由於重啟太快,因此在Apache服務重啟期間僅收到一個請求。
重要的是要注意,靜音失去控制權是另一個風險。您確定在過去的幾年中沒有人對服務器進行過錯誤的處理嗎?沒人在附近擺放一些副本嗎?新證書,新密鑰。無論密鑰大小如何,重新啟動時鐘通常比有人將您的密鑰分解為風險要重要得多。
在大多數情況下,沒人會在半夜裡重啟服務器
Thomas Pornin
2013-01-10 18:10:13 UTC
view on stackexchange narkive permalink

更改私鑰不是最佳做法,而是廣泛使用做法;實際上,它與安全性幾乎沒有關係,而與通用CA處理證書更新的方式有很多關係,即,大多數情況下,CA就像新證書一樣使用新的私鑰生成。在CA端 較為簡單,無需為續訂做任何特殊的事情。因此,有改變密鑰的習慣。視圖。或者,更確切地說,更改SSH服務器密鑰有點不方便,因為它會破壞客戶端的 .ssh / known_hosts 文件。因此,習慣上避免更改SSH服務器密鑰。因此,SSH服務器密鑰是長期存在的。沒有人真正跳過這一點。他們為什麼要擔心具有類似加密強度的SSL密鑰?

最佳實踐是在技術進步使您的密鑰有些脆弱時,考慮到普遍的偏執狂來更改密鑰(通常稱為“出於合規性原因”);因此,您應該考慮立即在2013年將1024位RSA密鑰替換為更長的密鑰,即使我們仍然無法破解這樣的密鑰。如果您的RSA密鑰是1536位或更寬,則沒有密碼理由要創建一個新密鑰(但是再次,也許在CA端更方便地更改它)。

續簽CA證書(與創建新證書相比)會使路徑構造或驗證複雜化嗎?
在這裡,我們談論的是服務器證書,即終端實體證書,而不是CA證書。在保留相同密鑰的情況下更新_CA_證書的好處是可以立即將其應用於以前的CA證書頒發的證書,因此名義上為_good_,並且可以使過渡更加平滑。它確實使路徑的構建更加複雜,但是實現通常可以毫無問題地解決(但確實使一些網絡管理員感到困惑)。
@ThomasPornin SSH完全具有前向秘密密鑰交換,但SSL沒有。您認為這種說法有什麼不同嗎?
@AlexWebr那應該沒有什麼區別。在現代網絡中,可以竊聽的攻擊者也很容易發出MitM攻擊,這使得前向保密的優勢相當小。
Bob Jones
2013-01-11 21:08:51 UTC
view on stackexchange narkive permalink

答案不是技術上的或加密的,而是關於人的。有了工作變更(聽不到心煩的管理員?),服務器遷移,災難恢復測試,備份以及諸如私鑰之類的事情,便可能會暴露出來。

鑑於上述情況,密鑰更新是一種安全性最佳實踐。

這實際上是一個好點,沒有其他任何答案。隨著時間的流逝,很多人都可以使用該密鑰,為什麼不更改它呢?就像您在員工離職時更改門密碼嗎? (你這樣做,對嗎?)
CodesInChaos
2013-01-10 15:33:19 UTC
view on stackexchange narkive permalink

不用擔心有人將您的RSA密鑰分解。對於州級對手來說,分解1024位RSA密鑰可能是可能的,但是即使對他們來說,這可能也不划算。 2048位密鑰分解可能要幾十年才能實現。

我主要擔心的是您的私鑰在服務器漏洞中被盜。由於攻擊者可能在您的服務器上存在持久性惡意軟件,因此在過去的入侵中獲得的收益還不清楚。因此,您需要重新安裝服務器以保護新密鑰。

另一個問題是,某些弱SSL套件(主要是基於 RSA 加密的家族)會使用較長的SSL套件。術語密鑰用於保密,而不僅僅是用於身份驗證。有了這些妥協,您的服務器密鑰就可以解密與使用這種弱套件的服務器之間過去的所有SSL通信。使用新密鑰並安全刪除舊密鑰可以限制這種攻擊的影響。

因此,如果您的服務器仍啟用了這些套件,則強烈建議您定期更改密鑰。

儘管我不會使用1024位RSA密鑰,但這一點是正確的。真正的危險不是標準算法的加密弱點,而是可利用的軟件漏洞和管理服務器的人員。
jorfus
2016-02-17 01:50:38 UTC
view on stackexchange narkive permalink
  • 您在HeartBleed之後更改了密鑰嗎?
  • 您的數據中心技術人員對不良硬盤有何處理?
  • 去年有人離開了運營組織嗎? ?
  • 上次旋轉管理員密碼和ssh密鑰是什麼時候?

所有這些問題應該使您開始思考密鑰的完整性。我並不是說它們很可能已受到損害,或者任何人都將能夠濫用它們。我正在嘗試讓您考慮為什麼要旋轉它們。

旋轉鍵應該超級容易,並且是一種很好的安全保護措施。如果您因為困難而沒有這樣做,那就是一個嚴重的問題。構建工具和流程以使其變得容易。如果不這樣做,您將最終無法旋轉更重要的事情。

Dinu
2013-01-10 14:55:57 UTC
view on stackexchange narkive permalink

使用密鑰的次數越多,給予攻擊者的時間就越多。儘管目前的技術認為不可能打破2048位,但是要格外謹慎,更換鑰匙也不是一件壞事。

此外,有人可能會設法獲取您的私鑰,而您卻無法檢測到它。如果他不能重複該動作,那麼續約的好處就非常明顯。

Tim X
2013-01-11 13:00:10 UTC
view on stackexchange narkive permalink

雖然我同意每次續簽證書都沒有技術上的理由來生成新密鑰,但我不會立即向您的安全團隊/經理提出挑戰,並就此問題打電話給他們。

與產生新密鑰同樣有效的非技術原因。例如,在大型組織中,IT集中化,技能,過程和良好實踐的級別各不相同,因此集中化的安全管理區域可能需要此類實踐來幫助減輕某些風險,這也可以幫助使過程變得越來越小可管理的。儘管從技術角度來看,更複雜的程序可能更正確,但它們更難以記錄,並且使員工更難於知道他們正確地遵循了這些程序。如果這種做法不會產生大量開銷,那麼採用和維護更簡單的“始終執行X”方法可能會更容易。

從另一個角度考慮。您組織中負責管理證書的每個人對您的問題是否有相同的意識和了解,並且他們是否認真/專心?員工更替的水平是多少?在何種程度上需要關注前員工可能訪問的敏感數據的數量。

每當考慮安全性時,人為因素幾乎總是與技術方面一樣重要或更重要政策和程序需要考慮人的因素,並試圖確保這些政策和程序的結構能夠幫助員工正確地做事,即使他們可能不完全理解為什麼需要這樣做。 / p>

Jason
2017-11-16 23:27:03 UTC
view on stackexchange narkive permalink

SP 800-57第1部分修訂,密鑰管理建議

NIST關於RSA密碼週期的建議似乎為1-2年。

以防萬一將來的人們,在第4版中,可以在第45頁(或第5.3.6節)中找到一個漂亮的表格,其中包含有關加密期限的各種信息
Luc
2013-01-10 14:48:23 UTC
view on stackexchange narkive permalink

這實際上與更改密碼相同。如果有人在更改密碼時正在破解您的密碼,則他們必須重新開始。或者,如果密碼或私鑰被盜,則續訂會使他們的被盜密鑰失效(假設他們無法輕易再次竊取它)。

每次更改私鑰都是一個好習慣一年或每隔幾年,以便您知道它在需要更改時不會損壞任何東西,但是對於證書本身的安全性而言,這不是必需的。

不過,出於某些原因*不*這樣做。
jorfus
2016-02-18 07:19:43 UTC
view on stackexchange narkive permalink

許多人提出了以下事實:ssh主機密鑰很少作為不旋轉ssl密鑰的參數而旋轉。這似乎是另一個要解決的問題。 (我為一個稍微偏離主題的答案表示歉意,但是這裡有人提到它,因此似乎很合適)。

請參閱上面的答案,以為什麼一個可能想要旋轉鍵的鍵。

對於出於合規性原因而需要旋轉ssh主機密鑰但擔心可用性對最終用戶造成影響的所有人,以下內容將特別有用。

1)部署一個ssh_ca(man ssh-keygen中非常完整的說明)

  ssh-keygen -f ssh_ca -b 4096  

2)將證書分發給用戶:將證書授權行添加到〜/ .ssh / known_hosts

  @ cert-authority * .domain.name ssh-rsa AAAAB3 [...] ==註釋 

3)簽名主機密鑰(確保將每個主機密鑰限制為單個主機)

  ssh-keygen -s ssh_ca -I host.domain.name -h -n host.domain .name -V + 52w /etc/ssh/ssh_host_rsa_key.pub

4)配置服務器以顯示證書(/ etc / ssh / sshd_config):

  HostCertificate / etc / ss h / ssh_host_rsa_key-cert.pub  

客戶端現在信任由CA簽名的任何主機密鑰(不再在您第一次連接時盲目接受密鑰信號)

是一個很好的參考。 該項目創建了一些有用的工具,用於使用ssh_ca自動終止用戶訪問權限。

如果我理解正確,那麼您正在旋轉主機密鑰,而不是CA ...?這到底是什麼解決方案?
這創建了信任鏈,用戶不再需要盲目地信任新的主機密鑰。在主機始終處於旋轉狀態的可能環境中,主機密鑰驗證是無用的,因為培訓用戶只是忽略警告。該解決方案允許配置管理器對新授權主機的密鑰進行簽名,從而允許用戶信任由CA簽名的密鑰。惡意主機將發出可操作的警告。如果您需要更換CA或旋轉密鑰,則需要在每個客戶端上更新簽名CA的身份。(也許與您的MDM)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...