簽名 加密 證書的基本原理和理解

2022-08-04 00:06:14 字數 2667 閱讀 9886

最近開始接觸後端php開發,裡面涉及到的簽名、加密、證書等概念弄得自己頭暈眼花,最近檢視了相關資料,下面把自己的理解寫下來,有不對的地方,還請多指點指點。

資料傳輸安全的要滿足的要求:

訊息的傳送方能夠確定訊息只有預期的接收方可以解密(不保證第三方無法獲得,但保證第三方無法解密)。

訊息的接收方可以確定訊息是由誰傳送的(訊息的接收方可以確定訊息的傳送方)。

訊息的接收方可以確定訊息在途中沒有被篡改過(必須確認訊息的完整性)。

對稱加密

網路的資料傳輸從傳送方發出到接收方接收到,要經過數個節點才能到達目的地,在這個過程中難免會被別有用心的人監聽(現在常用的網路資料監聽軟體就有charles,具體可以檢視相關使用教程,通過這個軟體可以監聽到某個頁面用到了哪些介面,傳送以及返回的引數分別是什麼)。所以在傳輸敏感資料的過程中,就要對資料進行加密。現行的加密過程中,一般加密演算法是公開的,金鑰是自己持有,傳送方有金鑰對資料進行加密傳輸,在傳輸的過程中經過加密的資料即使被第三方竊取到也因為沒有金鑰不能解密。而接收方同樣持有金鑰通過演算法的逆運算把密文解析出對應的明文來。

過程如下:

上述演算法即為對稱加密,特點是加密和解密都是用同乙個金鑰。這種演算法的前提條件是傳送方和接收方用乙個金鑰,也就是說在資料傳輸之前,接收方要知道傳送方用於傳送加密資料所用到的金鑰。但是現實條件是一般不會把金鑰手把手的交給對方,所以下面就要用到非對稱加密演算法。

非對稱加密演算法

非對稱加密演算法中資訊的傳送方和接收方都分別有兩個金鑰,其中分別為私鑰和公鑰,私鑰為資料的傳送方持有,公鑰可以公開。其中涉及到兩種模式,它們分別為加密模式和認證模式。

加密模式:

傳送方用公鑰給資料進行加密,然後把加密後的資料傳送到接收方,然後接收方用對應的私鑰解密,因為只有接收方的私鑰才能解析資料,所以即使被第三方竊取到資料也沒有關係。這個模式叫做加密模式。在這個過程中如何保證資料的完整性,保證資料是傳送方傳送的資料,而不是被第三方篡改後的資料。這時就要用到簽名,在傳送方加密明文之前,給明文取md5值,得到其資訊的摘要(注:不能通過資訊摘要反推明文)。然後用公鑰分別給明文和明文的摘要加密傳送到資料的接收方,資料的接收方接收到資料之後,用私鑰對密文和摘要進行解密,然後對解密得到的明文取md5摘要,比對解密後的明文摘要和傳送過來的摘要是否一致;一致就證明資料是原始的資料沒有遭到篡改。這個加密的過程中保證了資料的安全性(即只有接收方才可以解密)和防篡改性(簽名認證),這就保證了上面說的資料傳輸要求中的第一點和第三點。下面是**過程:

但是因為公鑰是公開的,所以在加密模式中我們是不知道到底是誰傳送資料給我們的,因此下面就要提到認證模式。

認證模式:

在認證模式中,傳送方用私鑰加密資料,給接收方傳送資料,接收方用公鑰解密,因為私鑰是唯一的,所以只要資料解析成功就可以知道資料傳送方是誰。

這就附和我們在資料的傳輸要求中的第二點了。下面是**過程:

結合加密模式和認證模式就可以實現資料傳輸安全的三大要點了。

下面我們來解釋一下這種高階模式,以傳送方和接收方兩個部分來解釋:

將訊息進行雜湊運算,得到訊息摘要。

使用自己的私鑰對訊息摘要加密(認證模式:確保了接收方能夠確認自己)。

使用接收方的公鑰對訊息進行加密(加密模式:確保了訊息只能由期望的接收方解密)。

傳送訊息和訊息摘要。

接下來我們看一下接收方所執行的步驟:

使用傳送方的公鑰對訊息摘要進行解密(確認了訊息是由誰傳送的)。

使用自己的私鑰對訊息進行解密(安全地獲得了實際應獲得的資訊)。

將訊息進行雜湊運算,獲得訊息摘要。

將上一步獲得的訊息摘要 和 第一步解密的訊息摘要進行對比(確認了訊息是否被篡改)。

可以看到,通過上面這種方式,使用了接收方、傳送方全部的四個金鑰,再配合使用訊息摘要,使得前面提出的安全傳遞的所有三個條件全都滿足了。那麼是不是這種方法就是最好的呢?不是的,因為我們已經說過了,非對稱加密是一種很耗時的操作,所以這個方案是很低效的。實際上,我們可以通過它來解決對稱加密中的金鑰傳遞問題,如果你已經忘記了可以翻到前面再看一看,也就是說,我們可以使用這裡的高階實現方式來進行對稱加密中金鑰的傳遞,對於之後實際的資料傳遞,採用對稱加密方式來完成,因為此時已經是安全的了。

與數字簽名相關的乙個概念就是證書機制了,證書是用來做什麼呢?在上面的各種模式中,我們一直使用了這樣乙個假設,就是接收方或者傳送方所持有的、對方的公鑰總是正確的(確實是對方公布的)。而實際上除非對方手把手將公鑰交給我們,否則如果不採取措施,雙方在網路中傳遞公鑰時,一樣有可能被篡改。那麼怎樣解決這個問題呢?這時就需要證書機制了:可以引入乙個公正的第三方,當某一方想要發布公鑰時,它將自身的身份資訊及公鑰提交給這個第三方,第三方對其身份進行證實,如果沒有問題,則將其資訊和公鑰打包成為證書(certificate)。而這個公正的第三方,就是常說的證書頒發機構(certificate authority)。當我們需要獲取公鑰時,只需要獲得其證書,然後從中提取出公鑰就可以了。

簽名 加密 證書的基本原理和理解

最近做乙個專案涉及到rsa加密解密,看了很多文章大概總結了一下,加密解密的原理和常見的一些加密演算法。1.摘要演算法 常用的摘要演算法有md5,sha1。摘要演算法是乙個不可逆過程,就是無論多大資料,經過演算法運算後都是生成固定長度的資料,一般結果使用16進製制進行顯示。md5和sha1的區別 md...

證書鏈的基本原理

pki public key infrastructure 規範體系,包含 問題 數字簽名技術 基於公鑰密碼技術。ca 數字簽名兩個過程 簽發證書的過程 撰寫證書元資料 使用通用的hash 演算法 如sha 256 對證書元資料計算生成數字摘要使用issuer 的私鑰對該數字摘要進行加密,生成乙個加...

openssl基本原理 生成證書

參考 begin 公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用openssl.openssl初接觸的人恐怕最難的在於先理解各種概念 公鑰 私鑰 簽名 驗...