https裡面的一些基本概念

2021-09-02 01:26:30 字數 2427 閱讀 3796

現在大多數**都已經從http公升級為https了,https最大的乙個優點就是安全。因此了解一下為什麼https要比http安全還是十分重要的。下面是一些基本的概念性的東西。

現在的加密演算法應該主要分為兩種,對稱加密演算法和非對稱加密演算法。兩者的區別就是前者伺服器和客戶端使用的時候同乙個金鑰,後者雙方各有一對公鑰和金鑰。

加密演算法需要雙方在通訊前確定乙個雙方公用的加密演算法,然後雙方在後續的通訊中統一使用這種演算法,雙方就可以正常通訊。我們可以稱為這個演算法為公鑰。如果公鑰洩露,那麼任何人都可以破解通訊的內容。這也是加密演算法的乙個缺點:安全性完全依賴公鑰的安全性。但同時加密演算法的也很明顯:計算量小,加密速度快,效率高。

正因為他的效率高,所以被廣泛用於一些協議的基本傳輸裡面,前提是保證使用的公鑰的安全性。

常見的加密演算法包括,des、aes等。具體演算法的原理可以看下面的鏈結,裡面的大神講得很好。

非對稱加密雙方維護乙個公鑰和乙個金鑰。並且保證公鑰和金鑰是一對一的關係,且無法通過公鑰反推出金鑰。最重要的就是金鑰加密的資料只可以通過公鑰解密,反之公鑰加密的資料只可以通過金鑰解密。這樣即使對方擷取了你的資料,他因為不知道你的私鑰也無法破解你的資料。但是安全提高的同時也使非對稱加密相比對稱加密的效率上降低了。常用的非對稱加密的演算法包括rsa,dsa等。

雖然上面的非對稱加密演算法已經很安全了,但是還有一種可能會導致資料被破解。假設雙方在溝通的過程中,中間人攔截到了通訊的資料,但是發現無法破解。但是我可以修改啊,然後就把原始資料替換成自己的資料,並且用公鑰加密後傳遞給另一方,那麼另一方接收到資料就會出現錯誤。那怎麼防止資料在傳輸過程中被篡改呢?摘要演算法出現了。

摘要演算法是一種單向演算法,是把任意長度的資料轉化為一定長度的資料,並且這個過程是不可逆的。

摘要演算法兩個特點:1.無法通過加密後的資料推算出源資料 2.兩份不同的資料加密後一定是不相同的值。

常用的摘要演算法包括:md5、sha1等。

這樣甲方在傳遞資料的時候會把資料通過摘要演算法計算出來的雜湊值使用自己的私鑰加密。這樣乙方在接收到資料的時候會使用甲方的公鑰進行解密,用同樣的摘要演算法對接收到資料進行計算,然後再跟傳遞過來的雜湊值進行比對從而確定資訊是否被篡改。因為私鑰是安全的,所以這樣就可以保證資訊不被篡改了。

*雜湊值:是一種從任何一種資料中建立小的數字「指紋」的方法

數字簽名就是對非對稱加密和摘要演算法的一種應用,能夠確保資訊在發布後不會被篡改(摘要演算法特性),保證資料的完整性和可信性;同時也可以防止資料被他人偽造(非對稱加密演算法特性);列如,我們有一段授權文字需要發布時,為了防止中途篡改發布的內容,保證發布文字的完整性,以及文字是由指定的發布者發布的。那麼,可以通過摘要演算法得到發布內容的摘要,得到摘要之後,發布者使用私鑰加密得到密文(簽名),這時候將源文字、密文(簽名)以及公鑰一起發布出去即可。注意:生成的摘要是自己的私鑰加密的,而需要傳輸的資料是對對方的公鑰加密的。這樣即使中間人即使攔截了你的資料,他即無法破解的資料(因為只有對方的私鑰才可以解密你的資料)也沒辦法替換你的摘要(因為你的私鑰是安全的,他如果修改了摘要,對方通過你的公鑰就沒辦法解密摘要了)。

驗證過程如下圖

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

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

數字證書的驗證

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

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

我也是乙個菜鳥,如果有寫錯的,希望大佬指正。

最後非常感謝    這篇文章的大佬作者,我獲益頗豐。

C 一些基本概念

建構函式的作用是對物件本身做初始化工作,也就是給使用者提供初始化類中成員變數的一種方式。析構函式是釋放物件執行期間所申請的資源。函式的過載,過載構成的條件 函式的引數型別不同 引數個數不同,才能構成函式的過載 在乙個類中 注意,只有函式的返回型別不同是不能構成函式的過載。在函式過載時,要注意函式帶有...

linux OS一些基本概念

1.什麼是os?好簡單好x的問題,可是如果真的要自己用稍微官方稍微正規的語言或文本來回答,我真的能回答清楚嗎?好吧,我先來用自己的語言來回答。再去找點官方的定義。我自己的回答 os就是乙個可以管理並且相對合理分配計算機資源的軟體。官方回答 作業系統 英語 operating system,簡稱os ...

Thread一些基本概念

1 實現執行緒的三種方式 extends thread implements runnable implements callable new futuretask callable new thread futuretask 2 執行緒讓步yield 讓執行緒由執行狀態變為就緒狀態,不會釋放鎖 3...