我想將根CA的公鑰(verisign - http://www.verisign.com/repository/roots/root-certificates/PCA-3G5.pem)固定到我的iOS應用程序中。 是更好地固定公鑰或subjectPublicKeyInfo? 有人可以請解釋我哪種方法更好,爲什麼?證書鎖定 - 僅公鑰嗎?
回答
我認爲最好釘住主題的公鑰而不是根的CA公鑰。 這裏是我的寄託CA的根p鍵的不同權衡的理解:
好 只要你保持相同的CA,您將可以一遍又一遍地更新您的證書,並將其將始終工作。
壞 我相信你會稍微更容易受到MITM攻擊牽制根CA的p鍵代替科目公鑰,因爲你會採取有效的由該CA簽署的任何證書,而不是隻那些真正符合你的主題的。
那麼如何固定主題的公鑰呢? 基本上,您應該比鎖定CA的公鑰更安全一些,並且即使證書過期並且您續訂它,只要您維護相同的公鑰,應用程序仍應繼續工作。
我剛剛張貼在如何針公鑰的問題和解決方案,我希望它可以幫助你: How to pin the Public key of a certificate on iOS
我想針的根CA的公鑰...
只是自行車棚,但它可能更安全地固定服務器或服務的證書或公鑰,而不是根或中間證書。如果您使用DigiCert或Verisign等公共CA(而不是私人公司CA),則尤其如此。
對於公共CA,CA可能會錯誤地發出第二個證書,客戶將無法區分「真實」證書(發給您的證書)和「假」證書(發佈的證書不正確地)。這在現實生活中發生過很多次,所以你應該期待它再次發生。
是更好地固定公鑰或subjectPublicKeyInfo?有人可以向我解釋哪種方法更好,爲什麼?
最好固定公鑰(至少在固定服務器證書的情況下)。
有些組織像Google一樣每隔30天左右輪換一次服務器證書。但是,他們重新認證相同的公鑰。例如參見Android 4.2 and Pinning。這意味着您將觀察到「密鑰連續性」,但是而不是「證書連續性」。
重新認證相同的公鑰是爲什麼CertPatrol在某些情況下在用戶體驗中失敗如此糟糕。在Google服務等情況下,我們確實需要一個公鑰處理程序。
因爲它包含實際公鑰和密鑰的算法(RSA,ECDSA等),所以最好釘住SPKI(主題公鑰信息)。這在這篇文章從谷歌的TLS大師更詳細的 https://www.imperialviolet.org/2011/05/04/pinning.html描述:
的SPKI包括公鑰的類型,與公共密鑰本身一起的一些參數。這一點很重要,因爲只是公開密鑰的散列會讓人誤解誤解攻擊。考慮一個Diffie-Hellman公鑰:如果只有公鑰而不是完整的SPKI,那麼攻擊者可以使用相同的公鑰,但是使得客戶端在不同的組中解釋它。同樣一個可能迫使RSA密鑰被解釋爲一個DSA密鑰等
與iOS應用程序內穿針SPKI一個挑戰是,在iOS安全框架不解析證書並提取提供的API SPKI位(https://nabla-c0d3.github.io/blog/2015/08/11/security-framework-wish-list/)。
好消息是,開源軟件庫可以完成以下工作:https://github.com/datatheorem/TrustKit。
- 1. 公鑰證書
- 2. 存儲證書鎖定公鑰的安全性如何?
- 3. X509證書公鑰加密
- 4. 從證書獲取公鑰/私鑰
- 5. SSL證書:公鑰或私鑰?
- 6. Amazom AWS ELB SSL證書私鑰和公鑰證書不匹配
- 7. 動態證書鎖定
- 8. 公鑰以X509TrustManagerExtensions鎖定checkServerTrusted
- 9. BouncyCastle或OpenSSL僅用公鑰生成證書籤名請求(CSR)
- 10. 我們是否應該處理外部https服務的證書/公鑰鎖定?
- 11. 使用自定義CA公鑰文件驗證證書?
- 12. 如何創建證書公鑰
- 13. PHP:從證書獲取公鑰ID。
- 14. 從公鑰(不是證書)構造RSACryptoServiceProvider
- 15. iPhone從RSA生成X509證書公鑰
- 16. DER格式的證書提取公鑰
- 17. 解碼system.gserviceaccount.com證書提取公鑰
- 18. RSAES OAEP證書 - 公鑰0位
- 19. 創建Paypal私鑰和公共證書
- 20. 從證書獲取Sha256公鑰
- 21. 無法提取X509公鑰證書
- 22. IdentityServer4簽名證書:使用公共可用的證書+密鑰?
- 23. fx509證書錯誤:證書公鑰與存儲的密鑰集不匹配
- 24. 禁用SSL證書鎖定
- 25. iOS中的證書鎖定
- 26. Alamofire中的證書鎖定
- 27. 證書鎖定在Android上
- 28. Windows Phone 8.0證書鎖定
- 29. Swift 2中的公鑰鎖定
- 30. 確定從代碼簽名證書共享公鑰?