原创 總結證書CT:證書透明度

證書部分,從服務器生成CSR證書請求文件開始,利用CSR生成自簽名證書,然後開始校驗,順着證書鏈校驗服務器身份,簽名值,根證書等信息。簽名值和根證書校驗成功,只能表明該服務器證書是由某一個CA機構所簽發的,之後還要校驗證書是否已被吊銷,可

原创 CRL校驗與OCSP套封

上一篇日誌利用CSR文件生成自簽名證書,接下來可以進行CRL校驗和OCSP校驗,兩者都是校驗證書的吊銷狀態,區別在於校驗的方式不同,CRL需要校驗方從CRL分發點下載CRLs吊銷列表文件,OCSP則是一種在線證書狀態協議,校驗方發送OCS

原创 總結DH密鑰協商(會話密鑰)

密鑰安全性 在對稱加密中,無論加密解密,通信雙方都是使用相同的密鑰,如果其中一方密鑰泄露了,信息便會遭到破解。使用公開密鑰雙向加密可以極大提高安全性,通信雙方手握對方的公鑰進行信息加密,保留自己的私鑰進行解密,從客戶端發去的加密信息即使被

原创 整理TLS(SSL)協議關鍵步驟(上)

HTTP不安全問題 前面複習總結了數據加密算法保證數據安全不泄露,消息驗證碼MAC算法保證數據沒有被篡改,還有公開密鑰算法三種用途,加密解密,密鑰協商,身份驗證。上面這些方案,算法都是TLS協議的一部分,用來解決HTTP不安全的問題。這篇

原创 總結中間方攻擊和CA認證中心

中間方攻擊 在密鑰協商階段,通信雙方都需要向對方提供密鑰,拿DH密鑰協商舉例,客戶端需要把自己的公鑰發送給服務器端,服務器端把DH參數和服務器公鑰發送給客戶端,最終雙方都持有對方的公鑰拿來加密用,自己的私鑰用來解密。RSA密鑰協商也差不多

原创 消息驗證碼-MAC算法總結

密文截獲篡改 如果使用的是對稱加密,即通常一個算法和一個密鑰的情況下,接收方只有使用與加密相同的密鑰,才能解出正確的密文,如果使用了不同的密鑰,解密出來的明文可能就是一串亂碼。假如在確定密鑰是與明文加密密鑰同一個的情況下,解密出來的明文如

原创 證書鏈-證書校驗

先來打開一個網站的證書鏈看看: 它的結構是,頂端根證書DigiCert,中間證書GeoTrust RSA CA 2018,和最下級的服務器證書*.csdn.net。爲什麼會有中間證書?原因上一篇日誌說過,由於權威的CA機構數量不多,如果

原创 整理TLS(SSL)協議關鍵步驟(下)

接着上一篇,在通信雙方建立連接時,完成密鑰協商,協商出預備主密鑰,預備主密鑰通過密碼衍生算法算出主密鑰,主密鑰也叫做密碼套件,從密碼套件中再轉換出各個密鑰塊,這些密鑰塊就是各種算法,如對稱加密的密鑰,消息驗證碼的密鑰等。好了,在建立連接階

原创 總結公開密鑰RSA算法

對稱加密從名字上很容易理解,就是加密和解密使用相同的密鑰和算法,加密解密過程是可逆的。與之對應還有一種非對稱加密算法,即加密和解密使用不同的密鑰,非對稱密鑰我比較喜歡叫公開密鑰算法,因爲公開密鑰中使用的密鑰是一對的,分爲公鑰和私鑰兩部分,

原创 總結HTTPS握手層和加密層

前面說過,TLS/SSL協議可以和應用層協議結合,例如HTTP,SMTP和FTP等。提供數據完整性和機密性TLS/SSL協議建立在TCP或UDP之上,應用層協議之下,任何應用層協議使用了TLS,都要先把數據經過TLS/SSL處理。客戶端瀏

原创 CRL問題與OCSP

從證書的擴展項CRL分發點可以看到,CRL證書吊銷列表,是服務器身份驗證的一部分,驗證證書除了校驗簽名值外,還要校驗證書的吊銷狀態,如果一張證書已過期,或者被吊銷,那麼身份校驗失敗。要注意的是,證書過期並不代表其被吊銷,證書過期了便無效,

原创 總結證書擴展和證書分類

自簽名證書 簽發後的CA證書可以進行擴展,分爲私有擴展和標準擴展,私有擴展針對的是自簽名證書,即由用戶自己簽發的證書,而非CA機構簽發的,一般瀏覽器也不會集成有字簽名證書的根證書,所以訪問這類網站時,瀏覽器會提示給證書是不安全的,可能是僞

原创 CA運作模式-認證與過期吊銷

從前面證書鏈校驗可以看到,瀏覽器校驗服務器身份時,需要校驗整個信任鏈,中間證書和服務器證書。中間證書是可以簽發服務器證書的,之所以要多出這樣一箇中間證書,而不是由CA機構直接簽發,原因是權威的CA機構數量並不多,如果所有的服務器實體證書都

原创 總結前端控制器DispatcherServlet(下)-程序環境加載

上一篇日誌總結了Servlet規範,對於所有處理用戶請求的服務器組件,都要去實現Servlet接口。GenericServlet保留了Servlet配置,提供無參數的init()方法供子類重寫,還提供了通用協議的service()方法,該

原创 總結前端控制器DispatcherServlet(上)-Servlet規範

把Spring MVC工作流實現完走了一遍後,從DispatcherServlet開始看它的具體實現,前端控制器(或叫分發器)作爲整個流程的核心,依靠它完成HTTP請求的攔截和分發處理,翻看了DispatcherServlet的源碼,看到