轉 HTTPS 數字證書的基礎知識

2021-09-18 09:13:11 字數 4015 閱讀 9479

在講數字證書之前必須要講非對稱加密演算法摘要演算法,因為數字證書的基礎就是各種加解密演算法(非對稱加密、摘要演算法),而其中的核心就是非對稱加密演算法了。目前而言加密方法可以分為兩大類。一類是單鑰加密(private key cryptography)也可以稱為對稱加密,還有一類叫做雙鑰加密(public key cryptography)也可稱為非對稱加密。前者的加密和解密過程都用同一套密碼,後者的加密和解密過程用的是不同的密碼。下面來看看對稱加密、非對稱加密以及摘要演算法,他們是怎樣應用在數字證書中的。

對稱加密(也叫私鑰加密)指加密和解密使用相同金鑰的加密演算法。有時又叫傳統密碼演算法,就是加密金鑰能夠從解密金鑰中推算出來,同時解密金鑰也可以從加密金鑰中推算出來。而在大多數的對稱演算法中,加密金鑰和解密金鑰是相同的,所以也稱這種加密演算法為秘密金鑰演算法或單金鑰演算法。

在應用該演算法時,它要求傳送方和接收方在安全通訊之前,商定乙個金鑰。對稱演算法的安全性依賴於金鑰,洩漏金鑰就意味著任何人都可以對他們傳送或接收的訊息解密,所以金鑰的保密性對通訊性至關重要。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。

常見的對稱加密演算法

與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey);並且加密金鑰和解密金鑰是成對出現的。非對稱加密演算法在加密和解密過程使用了不同的金鑰,非對稱加密也稱為公鑰加密,在金鑰對中,其中乙個金鑰是對外公開的,所有人都可以獲取到,稱為公鑰,其中乙個金鑰是不公開的稱為私鑰。

非對稱加密的特性

通過公鑰是極難推算出私鑰的,只能通過窮舉,所以只要金鑰足夠長,要想從公鑰推算出私鑰幾乎不可能的。

非對稱加密的主要用途

常見的非對稱加密演算法

非對稱加密演算法可能是世界上最重要的演算法,它是當今電子商務等領域的基石。非對稱加密演算法如此強大可靠,卻有乙個弊端,就是加解密比較耗時。因此,在實際使用中,往往與對稱加密和摘要演算法結合使用。列如在實體之間交換對稱金鑰時,或者在簽署一封郵件的雜湊時(數字簽名)。

雜湊是通過應用一種單向數學函式獲得的乙個定長結果,對於資料而言,叫做雜湊演算法。

摘要演算法是乙個神奇的演算法,也稱為雜湊或者雜湊值。是一種與基於金鑰(對稱金鑰或公鑰)的加密不同的資料轉換型別。雜湊就是通過把乙個叫做雜湊演算法的單向數學函式應用於資料,將任意長度的一塊資料轉換為乙個定長的、不可逆轉的數字,其長度通常在128~256位之間。所產生的雜湊值的長度應足夠長,因此使找到兩塊具有相同雜湊值的資料的機會很少。

摘要演算法具有以下特性:

常見的摘要演算法:

摘要演算法用於對比資訊源是否一致,因為只要源資料發生變化,得到的摘要必然不同。因為通常結果比源資料要短很多,所以稱為「摘要」。

應用場景,如發件人生成郵件的雜湊值並加密它,然後將它與郵件本身一起傳送。而收件人同時解密郵件和雜湊值,並由接收到的郵件產生另外乙個雜湊值,然後將兩個雜湊值進行比較。如果兩者相同,郵件極有可能在傳輸期間沒有發生任何改變。

數字簽名就是對非對稱加密和摘要演算法的一種應用,能夠確保資訊在發布後不會被篡改(摘要演算法特性),保證資料的完整性和可信性;同時也可以防止資料被他人偽造(非對稱加密演算法特性);列如,我們有一段授權文字需要發布時,為了防止中途篡改發布的內容,保證發布文字的完整性,以及文字是由指定的發布者發布的。那麼,可以通過摘要演算法得到發布內容的摘要,得到摘要之後,發布者使用私鑰加密得到密文(簽名),這時候將源文字、密文(簽名)以及公鑰一起發布出去即可。

驗證過程為:首先驗證公鑰是否是發布者的公鑰,然後用公鑰對密文進行解密,得到摘要,使用發布者對文字同樣的摘要演算法得到摘要文字,比對摘要是否一致即可確認資訊是否被篡改或者是指定發布者發布的。

數字簽名可以快速驗證文字的完整性和合法性,已廣泛應用於各個領域。

公鑰的驗證在後續數字證書的授權鏈中提到驗證方法。

現實生活中的證書

在現實生活中,證書顧名思義,就是許可權機構頒發的證明。比如英語6級證書,就是教育部門頒發給通過了6級考核的個人的證明,證明這個人的英語能力。我們來看一下這個證書的組成:

當老王用這張證書找工作時,用人單位會通過檢視證書的各項內容(尤其是公章),來驗證證書的合法性和老王的能力。在現實生活中經常有假的6級證書,這些假證書最重要的就是有乙個假公章。現實生活中使用法律法規來約束私刻假公章的行為,但是用人單位可能不能十分準確的判斷公章是真是假。而數字簽字可以來解決該類問題。

數字證書

數字證書就是通過數字簽名實現的數位化的證書,在現實生活中公章可以被偽造,但是在計算數字世界中,數字簽名是沒辦法被偽造的,比如上述證書中,在乙個證書檔案中寫明了證書內容,頒發證書時,教育部門用他們的私鑰對檔案的摘要資訊進行簽名,將簽名和證書檔案一起發布,這樣就能確保該證書無法被偽造。驗證證書是否合法時,首先用教育部門的公鑰(公鑰是公開的誰都可以獲取到)對簽名進行解密得到乙個摘要資訊,使用教育部門同樣的摘要演算法得到證書的另乙個摘要資訊,對比兩個摘要資訊是否一致就能確定該證書是否合法。在一般的證書組成中部分中,還加入了一些其他資訊,比如證書的有效期。

數字證書也有很多的簽發機構,不同的簽發機構簽發的證書,用途也是不一樣的,比如ios開發中,使用到的ipa檔案簽名證書,需要到蘋果申請。而在web訪問中為了防止web內容在網路中安全傳輸,需要用到的ssl證書則需要向幾家公認的機構簽發。這些簽發機構統稱為ca(certificate authority)。

webtrust

globalsign

gte

nortel

verisign

數字證書的驗證

申請證書是為了驗證,比如web應用相關的ssl證書驗證方是瀏覽器,ios各種證書的驗證方是ios裝置。因為數字證書是基於數字簽名的,所有數字證書的合法性驗證就是驗證數字證書的簽名是否正確,對於簽名的驗證在是需要簽發機構的公鑰才能驗證;

對於ios開發證書來說,申請完簽名證書後,還需要安裝蘋果的公鑰證書(xcode安裝後會自動安裝),這樣才能確保我們申請的證書是可以被驗證通過的(合法的),可用來進行ipa檔案簽名的。對於web相關的證書簽名的驗證,則是由瀏覽器來驗證,對於國際公認的幾個證書簽發機構瀏覽器會內建其公鑰證書,用來驗證數字證書的可信性。

對於ios,ios系統已經將這個驗證過程固化在系統中了,除非越獄,否則無法繞過

數字證書的授權鏈

數字證書還包含乙個授權鏈資訊,舉個例子:如果你要申請休假1周,需要你的上司審批,你的上司需要他的上司同意,最終需要大老闆同意,那麼這一層層的授權,形成了乙個授權鏈,大老闆是授權鏈的根(root),中間這些環節分別是被更接近root的人授權的。

web相關的ssl證書頂部ca根,則就是上述提到的幾家公認的簽發機構,當我們需要web做ssl的證書時,便可以向上述機構申請,通常向根機構申請費用都會比較高,也可以向一些二級授權機構進行申請,選擇根機構證書簽發的好處就是目前大多數的瀏覽器都會預裝內建了這些權威ca的公鑰證書,這樣,在使用這些權威ca簽發過的證書的時候,瀏覽器一般不會報風險提示。

總結數字證書簽名的基礎是非對稱加密演算法,利用了非對稱加密的身份驗證和防止資訊篡改的特性來實現的,在一些其他方面比如https中金鑰交換用的就是非對稱加密的保密特性來實現的,在非對稱加密演算法中rsa應用最廣。非對稱加密雖好,但卻有乙個弊端,就是加解密比較耗時,所以一般都是配合對稱加密一起使用。

本文只是對數字證書做了概要的介紹,很多細節都未涉及到,如果各位對一些細節感興趣可以根據本文涉及的知識點進入更深入的學習。同時本文也未涉及到數字證書的管理以及數字證書的格式等知識的介紹,這些內容將在後續文章中為大家整理和介紹。

rsa加密與破解

rsa演算法原理

漫談ios程式的證書和簽名機制

svc 數字證書基礎知識

數字證書採用pki public key infrastructure 公開金鑰基礎架構技術,利用一對互相匹配的金鑰進行加密和解密。每個使用者自己設定一把特定的僅為本人所知的私有金鑰 私鑰 用它進行解密和簽名 同時設定一把公共金鑰 公鑰 由本人公開,為一組使用者所共享,用於加密和驗證簽名。當傳送乙份...

數字證書與https協議

數字證書電子證書,類似於日常生活中的身份證,也是另外一種形式的身份認證,用於標識網路中的用於身份。數字證書集合了多種密碼學的加密演算法,證書自身帶有公鑰資訊,可以完成相應的加密 解密操作。同時,還擁有自身資訊的數字簽名,可以鑑別證書的頒發機構,以及證書內容的完整性。配置tomcat使用https協議...

HTTPS的數字證書驗證原理

網路請求方式通常分為兩種,分別是http請求和https請求,其中http的傳輸屬於明文傳輸,在傳輸的過程中容易被人擷取並且 其中的內容,而https是一種在http的基礎上加了ssl tls層 安全套接層 的安全的超文字傳輸協議,其傳輸的內容是通過加密得到的,所以說是一種安全的傳輸 說到加密演算法...