公鑰加密 數字簽名 訊息認證

2021-08-19 17:22:22 字數 1653 閱讀 9513

一、網路是開放的,在上面要傳送一段內容,隨時可能被其他人攔截看到,因此需要加密。

最初想到的是對稱加密,可以通過同乙個金鑰加密,也可以通過同乙個金鑰解密。(比如加密字串,加密時每個字元ascii碼同時加2,解密時ascii同時減2,在這裡金鑰就是2,而ascii的操作稱作加密解密演算法,加密前的字串稱為明文,加密後的字串稱為密文)

但是對稱加密有乙個問題:通訊雙方在網路通訊之前,需要先知道加解密演算法和金鑰。在生活中我們可以通過打**,或者見面之類的方式。但是每一次通訊都需要這樣交流一次,這顯然不是我們所期望的。

解決辦法便是公鑰加密

二、接收方接收到乙個密文,他並不知道是誰傳送給他的,或者說他無法確定是傳送方本人傳送的。黑客完全可以攔截傳送方的密文,然後傳送給接收方不同的密文,並自稱是接收方傳送的。

解決辦法便是數字簽名

三、即使黑客無法解開密文,但是他還是可以攔截密文和修改密文的。倘若黑客不想讓接收方接收到正確的明文,每次都直接修改沒有破解的密文,接收方即使可以解密,但是由於密文已經被修改過,因此也得不到正確的明文。那麼接收方如何知道內容是否被修改過呢?

解決辦法便是訊息認證

公鑰加密中有兩個金鑰——公鑰和私鑰,使用公鑰進行加密的密文只能使用私鑰進行解密,通過私鑰進行加密的密文只能使用公鑰進行加密。

公鑰人人都可以得到,但是私鑰只有自己有。

加密過程如下圖,首先確認接收方是bob,因此bob擁有自己的私鑰,那麼傳送方就需要使用bob的公鑰進行加密,在bob接收到之後,直接用自己的私鑰解密即可得到明文。

由於接收方公鑰人人都可以獲得,因此人人都可以發訊息給接收方。那麼接收方如何確定接收方是本人呢?數字簽名就解決了這個問題。

在使用公鑰加密之前,首先使用自己的私鑰對明文進行加密。這樣接收方在使用自己私鑰解密之後,再使用接收方的公鑰進行解密,那麼正常情況下就可以得到正確的明文了,並且也確認了傳送方的身份。

那麼為什麼不是先用接收方公鑰加密,然後再用傳送方私鑰加密麼?

理論上也是可行的,但是就類似寫信一樣,一般我們簽名都會在信封內部,直接簽名在信封上的很少吧?

訊息認證的目的:如果密文被修改過了,那麼接收方可以通過認證技術知道自己的密文被修改過。

認證實現的方式理解也比較簡單:主要是通過認證函式,假設明文為m,認證函式生成的認證值為v,那麼最終傳送的內容就是m+v。

那麼什麼是認證函式呢?認證函式主要分為三類:

用完整資訊的密文作為對資訊的認證。通過對明文m加密後生成v。接收方接收到訊息之後,把v解密,如果m和v解密後的內容相同,那麼內容就是沒有被修改過。

這種方法有乙個很大的劣勢,比如明文的大小為1g,那麼生成的認證值也會為1g,而且由於本身明文比較大,加密過程也會比較耗時,所以這種方法認證的代價是比較大的。

是金鑰和訊息的公開函式,產生乙個固定長度的值v作為認證標識。接收方接收到訊息之後,仍然是通過這個公開函式得到認證標識,如果最終的結果和接收到的v相同,那麼內容就是沒有被修改過。

是乙個公開函式,它將任意長的資訊對映成乙個固定長度的資訊,作為認證值v,比如md5。接收方接收到訊息,明文通過雜湊函式得到雜湊值,對比得到的v檢視是否相同,如果相同,那麼內容就是沒有被修改過。

數字簽名,公鑰,私鑰

數字簽名是什麼?翻譯 阮一峰 原文 1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。2.鮑勃把公鑰送給他的朋友們 帕蒂 道格 蘇珊 每人一把。3.蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。4.鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩...

公鑰 私鑰 數字簽名

公鑰 私鑰 數字簽名 數字證書 作用1 傳送方的資訊加密,保證不被竊取 他人用公鑰加密,我用私鑰解密 2 傳送方的身份驗證 我用私鑰簽名,他人用公鑰驗證 如數字簽名 1 傳送方的身份驗證 公鑰私鑰實現 也可用於防止抵賴 2 驗證傳送資訊是否被篡改 hash函式實現 證明數字簽名中的公鑰是否可信 未被...

數字簽名 CA認證 公鑰 私鑰簡單關係

數字簽名是資訊的傳送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的傳送者傳送資訊真實性的乙個有效證明。數字簽名技術是對非對稱加密技術與資訊摘要的綜合應用。通常的做法是 先對正文產生資訊摘要,之後使用傳送者a的私鑰對該資訊摘要進行加密,這就完成了簽名。想驗證使用者a數字證書的真偽,需...