數字簽名 數字證書與HTTPS是什麼關係?

2021-10-09 03:51:30 字數 2527 閱讀 6111

理解https前需要理解這些概念:明文、密文、密碼、金鑰、對稱加密、非對稱加密、摘要、數字簽名、數字證書

密碼(cipher)

密碼學中的密碼(cipher)和我們日常生活中所說的密碼不太一樣,計算機術語『密碼 cipher』是一種用於加密或者解密的演算法,而我們日常所使用的『密碼 password』是一種口令,它是用於認證用途的一組文字字串,這裡我們要討論的是前者:cipher。

金鑰(key)

金鑰是一種引數,它是在使用密碼(cipher)演算法過程中輸入的引數。同乙個明文在相同的密碼演算法和不同的金鑰計算下會產生不同的密文。很多知名的密碼演算法都是公開的,金鑰才是決定密文是否安全的重要引數,通常金鑰越長,破解的難度越大,比如乙個8位的金鑰最多有256種情況,使用窮舉法,能非常輕易的破解,知名的des演算法使用56位的金鑰,目前已經不是一種安全的加密演算法了,主要還是因為56位的金鑰太短,在數小時內就可以被破解。金鑰分為對稱金鑰與非對稱金鑰。

明文/密文

明文(plaintext)是加密之前的原始資料,密文是通過密碼(cipher)運算後得到的結果成為密文(ciphertext)

對稱金鑰

對稱金鑰(symmetric-key algorithm)又稱為共享金鑰加密,對稱金鑰在加密和解密的過程中使用的金鑰是相同的,常見的對稱加密演算法有des、3des、aes、rc5、rc6。對稱金鑰的優點是計算速度快,但是他也有缺點,金鑰需要在通訊的兩端共享,讓彼此知道金鑰是什麼對方才能正確解密,如果所有客戶端都共享同乙個金鑰,那麼這個金鑰就像****一樣,可以憑藉乙個金鑰破解所有人的密文了,如果每個客戶端與服務端單獨維護乙個金鑰,那麼服務端需要管理的金鑰將是成千上萬,這會給服務端帶來噩夢

非對稱金鑰

非對稱金鑰(public-key cryptography),又稱為公開金鑰加密,服務端會生成一對金鑰,乙個私鑰儲存在服務端,僅自己知道,另乙個是公鑰,公鑰可以自由發布供任何人使用。客戶端的明文通過公鑰加密後的密文需要用私鑰解密。非對稱金鑰在加密和解密的過程的使用的金鑰是不同的金鑰,加密和解密是不對稱的,所以稱之為非對稱加密。與對稱金鑰加密相比,非對稱加密無需在客戶端和服務端之間共享金鑰,只要私鑰不發給任何使用者,即使公鑰在網上被截獲,也無法被解密,僅有被竊取的公鑰是沒有任何用處的。常見的非對稱加密有rsa,非對稱加解密的過程:

服務端生成配對的公鑰和私鑰

私鑰儲存在服務端,公鑰傳送給客戶端

客戶端使用公鑰加密明文傳輸給服務端

服務端使用私鑰解密密文得到明文

數字簽名(digital signature)

資料在瀏覽器和伺服器之間傳輸時,有可能在傳輸過程中被冒充的盜賊把內容替換了,那麼如何保證資料是真實伺服器傳送的而不被調包呢,同時如何保證傳輸的資料沒有被人篡改呢,要解決這兩個問題就必須用到數字簽名,數字簽名就如同日常生活的中的簽名一樣,一旦在合同書上落下了你的大名,從法律意義上就確定是你本人籤的字兒,這是任何人都沒法仿造的,因為這是你專有的手跡,任何人是造不出來的。那麼在計算機中的數字簽名怎麼回事呢?數字簽名就是用於驗證傳輸的內容是不是真實伺服器傳送的資料,傳送的資料有沒有被篡改過,它就幹這兩件事,是非對稱加密的一種應用場景。不過他是反過來用私鑰來加密,通過與之配對的公鑰來解密。

第一步:服務端把報文經過hash處理後生成摘要資訊digest,摘要資訊使用私鑰private-key加密之後就生成簽名,伺服器把簽名連同報文一起傳送給客戶端。

第二步:客戶端接收到資料後,把簽名提取出來用public-key解密,如果能正常的解密出來digest2,那麼就能確認是對方發的。

第三步:客戶端把報文text提取出來做同樣的hash處理,得到的摘要資訊digest1,再與之前解密出來的digist2對比,如果兩者相等,就表示內容沒有被篡改,否則內容就是被人改過了。因為只要文字內容哪怕有任何一點點改動都會hash出乙個完全不一樣的摘要資訊出來。

數字證書(certificate authority)

數字證書簡稱ca,它由權威機構給某**頒發的一種認可憑證,這個憑證是被大家(瀏覽器)所認可的,為什麼需要用數字證書呢,難道有了數字簽名還不夠安全嗎?有這樣一種情況,就是瀏覽器無法確定所有的真實伺服器是不是真的是真實的,舉乙個簡單的例子:a廠家給你們家安裝鎖,同時把鑰匙也交給你,只要鑰匙能開啟鎖,你就可以確定鑰匙和鎖是配對的,如果有人把鑰匙換了或者把鎖換了,你是打不開門的,你就知道肯定被竊取了,但是如果有人把鎖和鑰匙替換成另一套表面看起來差不多的,但質量差很多的,雖然鑰匙和鎖配套,但是你卻不能確定這是否真的是a廠家給你的,那麼這時候,你可以找質檢部門來檢驗一下,這套鎖是不是真的來自於a廠家,質檢部門是權威機構,他說的話是可以被公眾認可的(呵呵)。

同樣的, 因為如果有人(張三)用自己的公鑰把真實伺服器傳送給瀏覽器的公鑰替換了,於是張三用自己的私鑰執行相同的步驟對文字hash、數字簽名,最後得到的結果都沒什麼問題,但事實上瀏覽器看到的東西卻不是真實伺服器給的,而是被張三從裡到外(公鑰到私鑰)換了一通。那麼如何保證你現在使用的公鑰就是真實伺服器發給你的呢?我們就用數字證書來解決這個問題。數字證書一般由數字證書認證機構(certificate authority)頒發,證書裡面包含了真實伺服器的公鑰和**的一些其他資訊,數字證書機構用自己的私鑰加密後發給瀏覽器,瀏覽器使用數字證書機構的公鑰解密後得到真實伺服器的公鑰。這個過程是建立在被大家所認可的證書機構之上得到的公鑰,所以這是一種安全的方式。

數字簽名 數字證書 https

對稱加密和非對稱加密 對稱加密 加密和解密的金鑰是一樣的 缺點就是容易被中間人破解 非對稱加密 公鑰是所有人都可以認領 私鑰是保密的 只有乙個人知道 例如a給b傳送郵件 a用的b的公鑰 只有b的私鑰可以解密a的公鑰的內容 b的私鑰的唯一性 保證了信件不會被洩露 但是如果黑客冒充a給b傳送郵件 b是不...

數字簽名,數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密 然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...

數字簽名 數字證書

一 數字簽名 1.1 為什麼需要數字簽名?由於網路環境的複雜性,我們無法保證通訊的雙方是真是的,而且內容是完整的 沒被修改過的,因此才需要數字簽名。數字簽名類似於現實生活中的簽名,有以下兩種功能 1 確認通訊雙方的真實身份,別人假冒不了 2 能確認訊息的完整性。它是基於非對稱加密演算法。1.2 數字...