數字證書偽造
⑴ 為什麼偽造SHA-1證書比找SHA-1哈希碰撞難
眾所周知,SHA-1不是一個安全的加密哈希函數。研究人員現在認為找到一對沖突的哈希值(即兩次不同輸入的哈希運算得出了相同的哈希值)是不可避免的,可能未來一個月內就會出現。這就對網路構成了潛在的威脅,因為如今很多網站依舊使用基於SHA-1的數字簽名證書。幸運的是,僅僅只是找到一對沖突的哈希值是不足以偽造數字證書並打破網路信任模型的。
本文將講述如何利用哈希碰撞來偽造數字證書,以及證書頒發機構如何通過例如使用隨機證書序列號等措施使得攻擊者更加難以偽造數字證書。
數字簽名是信任的基石
互聯網依賴於信任。無論你是登錄網上銀行或是瀏覽Reddit,HTTPS始終通過加密通信數據和驗證網站數字證書保護著你。而大多瀏覽器在訪問使用HTTPS的網站時都會非常直觀的在地址欄上掛上一把鎖。
當目標網站擁有一個包含所有者身份信息和主機名的數字證書時,HTTPS可以向瀏覽器證實當前網站的真實性。證書是一個由可信的第三方證書頒發機構頒發的包含數字簽名的小文件。對瀏覽器來說,數字簽名是信任的來源。如果你瀏覽器認為證書上面的數字簽名是正確的,則瀏覽器會信任這個證書。這個用於身份認證的系統稱為公鑰基礎設施(Public Key Infrastructure, PKI)。
假如數字簽名無法在被信任,那麼所有依賴數字簽名的系統都將崩潰。例如有人可以偽造出一個來自受信任CA頒發的cloudflare.com證書,他就可以偽造成cloudflare.com欺騙瀏覽者。
數字簽名是一個基於消息和公鑰計算出的一串數字。每個數字簽名都需要一個公私鑰對和一個哈希函數。其中,哈希函數是用來將消息替換為一個唯一的摘要,私鑰用來進行簽名,公鑰用來對簽名進行驗證。
例如,創建一個RSA簽名,你需要計算消息的哈希值,隨後使用私鑰加密這個計算出的哈希值。任何人都可以驗證這個簽名是否屬於你,並可以驗證消息的真實性。只需要獲取到公鑰,然後進行解密運算,將解密運算得出的值與源消息的哈希值進行比較,如果兩個值相匹配,我們就認為數字簽名是正確的。
⑵ 受信任的SSL證書和自簽署SSL證書的區別
自簽名SSL證書就是任意機構和個人都能簽署的,而瀏覽器不信任它,會彈出證書有問題的安全警告。瀏覽器只信任指定的幾個機構簽署的SSL證書,數安時代就是其中之一,可以申請受信任的ssl證書