【密碼學】實現消息認證或數字簽名的幾種方式

? ? ? ? 消息認證的目的是驗證消息的完整性和確認消息的來源。數字簽名的目的是不僅驗證消息的完整性和來源,還提供了不可否認性。此外,數字簽名還可以驗證消息的創建時間,防止重放攻擊。那么具體有哪些實現的方式呢?

一、僅提供消息認證

(1)方式一:通過對稱密鑰實現

????????Alice和Bob進行通信,在通信之前雙方共享了對稱密鑰K

????????首先Alice把消息明文進行哈希運算得到哈希值H,將哈希值用對稱密鑰進行加密的到哈希值的密文E,再將哈希值的密文與消息的明文進行拼接,通過公開信道發送給Bob。

????????然后,Bob拿到數據后將加密的哈希值通過對稱密鑰K進行解密,得到解密后的哈希值D,同時Bob還得把消息M自己做一次哈希運算也得到一個哈希值H。對比這兩個哈希值是否相等,就可以判斷出消息是否有可信的實體發來,并且判斷出消息是否完整。

通過對稱密鑰實現消息認證

(2)方式二:通過MAC實現

????????Alice和Bob進行通信,在通信之前雙方共享了一個隨機數S(這個隨機數可以理解為只有Alice和Bob才知道的一個秘密,也可以理解為一個密鑰,但這個密鑰不是用來加解密的)

????????首先Alice將明文與隨機數S拼接起來,對拼接后的信息進行哈希運算得到MAC = H(m||s),然后將MAC與消息的明文M一起發給Bob

? ? ? ? Bob收到后,他也將消息的明文與隨機數S拼在一起做哈希運算,得到一個MAC。然后拿他算出的MAC與他從Alice處得到MAC做比較。如果相等就可以認為消息內容是完整的沒有被篡改,消息的來源是可信的。

通過MAC實現消息認證

?二、既提供加密又提供消息認證

(1)方式一:通過MDC與對稱加密實現

????????Alice和Bob進行通信,在通信之前雙方共享了對稱密鑰K

? ? ? ? Alice對消息明文進行哈希運算,得到哈希值H(也就是MDC),在將哈希值與明文拼在一起用對稱加密的密鑰K進行加密,得到密文。然后Alice將密文通過公開信道傳給Bob

? ? ? ? Bob得到了密文后,先拿對稱密鑰K進行解密,得到拼起來的兩部分:一部分是消息明文M,第二部分是個哈希值H(也就是MDC)。此時,Bob他自己對消息明文M進行哈希運算得到哈希值H,然后拿他算出來的哈希值H與解密出來的哈希值H進行對比。

? ? ? ? 在這種方式中,公開信道里傳遞的是密文,保證了消息的機密性。兩個哈希值對比相同的話,保證了消息的完整性。而消息來源的真實性是通過對稱密鑰K只有可信用戶才擁有來實現的。

通過MDC與對稱加密既提供加密又提供消息認證

(2)方式二:通過MAC與對稱加密實現

????????Alice和Bob進行通信,在通信之前雙方共享了對稱密鑰K和隨機數S

? ? ? ? 首先Alice將消息明文M與隨機數S拼接后進行哈希運算的到MAC,再將MAC與消息明文M拼接后拿對稱密鑰K進行加密得到密文。于是Alice就可以把密文通過公開信道發給Bob

? ? ? ? Bob收到密文后,通過手里的對稱密鑰K進行解密,解密出來的東西是兩部分:第一部分是消息明文M,第二部分是MAC。此時,Bob需要把消息明文M與隨機數S拼接再進行哈希運算得到MAC,拿著Bob自己算出來的MAC與解密得到的MAC進行對比。

? ? ? ? 在這種方式中,公開信道里傳遞的是密文,保證了消息的機密性。MAC對比相同的話,保證了消息的完整性和消息來源的真實性。此時消息來源的真實性是通過MAC實現的。因為MAC只有擁有S的人才能正確生成。而擁有S的人可以認為是可信任的人。

通過MAC與對稱加密既提供加密又提供消息認證

【注】本文中上圖的方式是先MAC再加密,也可以先加密再MAC。效果是一樣的就不贅述,用一個圖來展示一下即可。?

先加密再MAC

三、既提供了消息認證,又提供了數字簽名

(1)方式:通過MDC與公鑰密碼體制實現

????????Alice和Bob進行通信,事先他們各自生成公私密鑰對,并將各自的公鑰公布出來。

????????Alice對消息明文M進行哈希運算,得到哈希值H(也就是MDC),再用自己的私鑰對哈希值進行簽名生成一個密文S,再將S與明文M拼在一起通過公開信道傳給Bob

? ? ? ? Bob收到了消息明文M后,自己計算MDC=H(M)。于此同時他還需要在公鑰數據庫中找到Alice的公鑰對簽名進行解密,一旦成功解密則可以得到一個MDC,拿解密出來的MDC與他自己算出來的MDC進行比對即可驗證消息的完整性。

? ? ? ? 這種方式中,消息的完整性是通過MDC實現的,消息來源的真實性是通過公鑰密碼體制的數字簽名實現的。因為是Alice拿自己的私鑰簽名,所以實現了消息的不可否認性。

通過MDC與公鑰密碼體制實現消息認證與數字簽名

四、既提供了消息認證,又提供了數字簽名,還提供了保密性

(1)方式:通過MDC與混合密碼體制實現

????????Alice和Bob進行通信,事先他們各自生成公私密鑰對,并將各自的公鑰公布出來。并且他們實現共享了對稱密鑰K

? ? ? ? Alice首先把明文M進行哈希運算得到MDC,然后利用自己的私鑰K_s對MDC進行加密。再將消息明文M與加密后的MDC拼接起來,再用對稱密鑰K進行加密,得到最終要發送的密文E,并把E通過公開信道發給Bob

? ? ? ? Bob得到密文后,用對稱密鑰K進行解密,他此時會得到兩個部分:第一個部分是消息明文M,第二個部分是一個密文。然后,Bob去公鑰數據庫中找到Alice的公鑰對這個密文進行解密,一旦成功解密就意味著這個消息是Alice發來的,否則就不是。

????????此時,通過Alice公鑰解密出來的東西是一個MDC,那么接下來,Bob需要自己將消息明文M進行哈希運算得到一個MDC與解密出來的MDC進行比對。如果比對成功,說明消息未被篡改,確保了消息的完整性。

? ? ? ? 在這個方式中,消息的完整性通過MDC來確保,消息的不可否認性通過公鑰密碼體制的數字簽名來確保,消息的機密性通過對稱密碼體制來確保。消息的來源真實性通過數字簽名確保。

通過MDC與混合密碼體制實現了消息認證、數字簽名和加密

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44977.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python練習(if--else)

通過input語句獲取鍵盤輸入的身高 判斷身高是否超過120cm,并通過print給出提示信息。 代碼輸出示例: 1.歡迎來到樂園。 請輸入你的身高(cm):130 您的身高超出120cm,游玩需要夠票10元。 祝您游玩愉快。 2…

文件內容查閱

cat concatenate files and print on the standard output Linux中一個最簡單的且最常用的命令是cat命令。其功能是在終端設備上顯示文件內容。 cat命令-n選項用于顯示行號。 tac concatenate and print files in reverse tac命令的功能是用于反向顯示文件內容,即…

計算機網絡復習筆記【面向考綱整理】

計算機網絡復習筆記 一、計算機網絡體系結構(一)計算機網絡的概念、分類、組成與功能1.計算機網絡的概念、組成與功能1.1計算機網絡的概念1.2計算機網絡的組成1.3計算機網絡的功能 2.計算機網絡的分類3.計算機網絡的標準化工作及相關知識 (二…

MT6816磁編碼IC在工控機器人中的應用

在現代工業自動化領域,高精度的位置檢測和控制技術對于機器人系統的穩定運行至關重要。MT6816磁編碼IC作為一款先進的磁傳感器解決方案,以其卓越的性能和穩定性,在工控機器人中得到了廣泛的應用。本文將詳細探討MT6816磁編碼IC在工控機器人中…

azure學習在日本IT工作的重要性

在日本數字化轉型的浪潮中,微軟Azure已經成為眾多企業的首選云平臺。作為全球第二大云服務提供商,Azure在日本市場的重要性與日俱增。本文將探討為什么學習Azure對日本IT專業人士至關重要,以及如何通過lalapodo云原生技術的培訓課程,快速掌握這一關鍵技能。 Azure在日本的戰略地…

血液及造血系統疾病病人的護理

一、血液及造血系統疾病病人的基礎護理 對于患有血液及造血系統疾病的病人,護理工作的重點首先在于密切監測生命體征,包括體溫、心率、呼吸頻率和血壓。 飲食護理也十分關鍵,要保證病人攝入充足的營養,以增強抵抗力。例如&#xf…

【Django+Vue3 線上教育平臺項目實戰】構建高效線上教育平臺之首頁模塊

文章目錄 前言一、導航功能實現a.效果圖:b.后端代碼c.前端代碼 二、輪播圖功能實現a.效果圖b.后端代碼c.前端代碼 三、標簽欄功能實現a.效果圖b.后端代碼c.前端代碼 四、側邊欄功能實現1.整體效果圖2.側邊欄功能實現a.效果圖b.后端代碼c.前端代碼 3.側邊欄展示分類及…

element UI時間組件兩種使用方式

加油&#xff0c;新時代打工&#xff01; 組件官網&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果圖&#xff0c;如下&#xff1a; 第一種實現方式 <div class"app-container"><el-formref"submitForm":model&q…

Linux C++ 052-設計模式之享元模式

Linux C 052-設計模式之享元模式 本節關鍵字&#xff1a;Linux、C、設計模式、享元模式 相關庫函數&#xff1a; 概念 享元模式&#xff08;FlyWeight&#xff09;&#xff0c;運用共享技術有效的支持大量細粒度的對象。 典型的享元模式的例子為文書處理器中以圖形結構來表…

探索 Prompt 的世界:讓你的 AI 更智能

探索 Prompt 的世界&#xff1a;讓你的 AI 更智能 引言什么是 Prompt&#xff1f;Prompt 的重要性如何編寫有效的 Prompt1. 清晰明確2. 包含關鍵細節3. 提供上下文 實踐中的 Prompt 技巧1. 多次迭代2. 實驗不同風格3. 結合實際應用 總結 引言 隨著人工智能&#xff08;AI&…

數據恢復篇:適用于 Android 的恢復工具

正在擺弄 Android 設備。突然&#xff0c;您意外刪除了一張或多張圖片。不用擔心&#xff0c;您總能找到一款價格實惠的照片恢復應用。這款先進的軟件可幫助 Android 用戶從硬盤、安全數字 (SD) 或存儲卡以及數碼相機中恢復已刪除的圖片。 Android 上文件被刪除的主要原因 在獲…

采用自動微分進行模型的訓練

自動微分訓練模型 簡單代碼實現&#xff1a; import torch import torch.nn as nn import torch.optim as optim# 定義一個簡單的線性回歸模型 class LinearRegression(nn.Module):def __init__(self):super(LinearRegression, self).__init__()self.linear nn.Linear(1, 1) …

【Linux】數據流重定向

數據流重定向&#xff08;redirect&#xff09;由字面上的意思來看&#xff0c;好像就是將【數據給它定向到其他地方去】的樣子&#xff1f; 沒錯&#xff0c;數據流重定向就是將某個命令執行后應該要出現在屏幕上的數據&#xff0c;給它傳輸到其他的地方&#xff0c;例如文件或…

[圖解]企業應用架構模式2024新譯本講解26-層超類型2

1 00:00:00,510 --> 00:00:03,030 這個時候&#xff0c;如果再次查找所有人員 2 00:00:03,040 --> 00:00:03,750 我們會發現 3 00:00:05,010 --> 00:00:06,370 這一次所有的對象 4 00:00:06,740 --> 00:00:08,690 都是來自標識映射的 5 00:00:10,540 --> 00…

VB 上位機開發

VB 上位機開發第一節 在 VB(Visual Basic)上位機開發的第一節課程中涵蓋以下基礎內容: 一、上位機開發簡介 解釋上位機的概念和作用,它是與硬件設備進行通信和控制的軟件應用程序。舉例說明上位機在工業自動化、智能家居、監控系統等領域的應用。二、VB 開發環境介紹 展示如…

2024遼寧省數學建模C題【改性生物碳對水中洛克沙胂和砷離子的吸附】原創論文分享

大家好呀&#xff0c;從發布賽題一直到現在&#xff0c;總算完成了2024 年遼寧省大學數學建模競賽C題改性生物碳對水中洛克沙胂和砷離子的吸附完整的成品論文。 本論文可以保證原創&#xff0c;保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃…

Rubber Duck Debugging: History and Benefits 橡皮鴨調試:歷史和優勢

注&#xff1a;機翻&#xff0c;未校對。 Discover the origins of rubber duck debugging, why it works, and why it has become so popular among programmers. 了解橡皮鴨調試的起源&#xff0c;它為什么有效&#xff0c;以及為什么它在程序員中如此受歡迎。 Debugging co…

AMD CPU加 vega 顯卡運行ollama本地大模型

顯卡是VEGA56&#xff0c;這個卡代號是gfx900 雖然ollama頁面上寫著這個卡可以&#xff0c;但是實際是不可以的 報錯如下&#xff1a; levelWARN sourceamd_windows.go:97 msg"amdgpu is not supported" gpu0 gpu_typegfx900:xnack 它認為的GPU型號是 gfx900:xna…

【JavaScript】解決 JavaScript 語言報錯:Uncaught SyntaxError: Unexpected identifier

文章目錄 一、背景介紹常見場景 二、報錯信息解析三、常見原因分析1. 缺少必要的標點符號2. 使用了不正確的標識符3. 關鍵詞拼寫錯誤4. 變量名與保留字沖突 四、解決方案與預防措施1. 檢查和添加必要的標點符號2. 使用正確的標識符3. 檢查關鍵詞拼寫4. 避免使用保留字作為變量名…

全棧 Discord 克隆:Next.js 13、React、Socket.io、Prisma、Tailwind、MySQL筆記(一)

前言 閱讀本文你需要有 Next.js 基礎 React 基礎 Prisma 基礎 tailwind 基礎 MySql基礎 準備工作 打開網站 https://ui.shadcn.com/docs 這不是一個組件庫。它是可重用組件的集合&#xff0c;您可以將其復制并粘貼到應用中。 打開installation 選擇Next.js 也就是此頁面…