加密與安全_密鑰體系的三個核心目標之完整性解決方案

文章目錄

  • Pre
  • 機密性
  • 完整性
    • 1. 哈希函數(Hash Function)
      • 定義
      • 特征
      • 常見算法
      • 應用
      • 散列函數常用場景
      • 散列函數無法解決的問題
    • 2. 消息認證碼(MAC)
      • 概述
      • 定義
      • 常見算法
      • 工作原理
      • 如何使用 MAC
      • MAC 的問題
  • 不可否認性
    • 數字簽名(Digital Signature)
  • 總結

在這里插入圖片描述


Pre

加密與安全_常見的分組密碼 ECB、CBC、CFB、OFB模式介紹

加密與安全_ 解讀非對稱密鑰解決密鑰配送問題的四個方案

密鑰體系的三個主要目標

機密性:確保第三者無法通過密文猜測出明文。
完整性:確保第三者無法篡改原文內容。
不可否認性:確保第三者不能冒充其他人發送消息。
在這里插入圖片描述

接下來我們將圍繞以下幾點展開:

  1. 重述密鑰體系的三個主要目標:機密性、完整性和不可否認性。
  2. 介紹確保機密性的對稱密碼和非對稱密碼的作用。
  3. 詳細講解如何通過技術手段確保消息的完整性。
  4. 介紹確保不可否認性的技術方法。
  5. 總結加密與消息完整性及不可否認性的方法及其應用場景。

機密性

對稱密碼:使用相同的密鑰進行加密和解密。主要的實現方式包括AES、DES等。

  • 優點:加密速度快,適合大數據量的加密。
  • 缺點:密鑰管理困難,需確保密鑰的安全傳遞。

非對稱密碼:使用一對密鑰進行加密和解密,公鑰加密,私鑰解密。主要的實現方式包括RSA、ECC等。

  • 優點:無需安全通道傳遞公鑰,私鑰無需共享。
  • 缺點:加密速度較慢,不適合大數據量的加密。

對稱密碼和非對稱密碼解決的是機密性,也就是確保 Eve 即便截獲到密文,也無法猜測出 Alice 和 Bob 傳遞的是啥內容。


完整性

有的時候,Eve 并非需要破解消息。 比如 Alice 辛辛苦苦寫了一個程序,Eve 晚上偷偷在程序后面追加了一些代碼。 第二天 Alice 將被替換的程序發給了 Bob。 雖然 Eve 沒有截獲任何密鑰,但事實上也破壞了 Alice 和 Bob 之間的信任關系。

所以密鑰體系仍然需要解決完整性,即第三者無法篡改原文內容.

在這里插入圖片描述

為了確保消息的完整性,即防止消息在傳輸過程中被篡改,我們可以使用以下技術手段:

1. 哈希函數(Hash Function)

定義

哈希函數將任意長度的數據映射為固定長度的散列值(哈希值)。 散列函數是一個單向計算函數,只有一個輸入和對應的輸出。f(x)=y . 其中x稱為消息, 而y則稱為散列值。 f(x)=y可以跟進消息內容計算出對應的散列值,而我們就可以通過散列值來檢查信息的完整性

特征

一個合格工業級散列函數,必須具備以下特征

  • 固定長度的散列值

    無論x是多長的消息,單向散列函數必須能夠生成固定長度的y(散列值)。比如SHA-256它所計算出來的散列值永遠是 256 比特

  • 計算速度非常快

    當然快是相對的,盡管隨著x的變大,計算時間勢必會加長。但如果不能在現實的時間內計算出來,那么就喪失實際應用的價值了

  • 散列值的唯一性

    散列值的唯一性稱之為抗碰撞性。也就是只要x不同那么計算出來的y一定不能相同。抗碰撞性分為兩類: 強抗碰撞性和弱抗碰撞性

    弱抗碰撞性指的是x確定,那么y也就確定。 此時找到一個散列值等于y的x是非常困難的.

    在這里插入圖片描述

    和弱抗碰撞性對應的是強抗碰撞性。強抗碰撞性指的是在茫茫數據集中,指定任意一個y,找到 x 和 x’ 是非常困難的

    在這里插入圖片描述
    一個合格的散列函數,必須同時具備強抗碰撞性和弱抗碰撞性。

  • 單向性: 根據x可以計算出y,但無法根據y反推出x。

    在這里插入圖片描述

哈希函數具有不可逆性和抗碰撞性,即難以通過哈希值反推出原始數據,也難以找到兩個不同的輸入具有相同的哈希值。

在一些場合中,單向散列函數也稱之為"消息摘要函數"、“哈希函數"和"雜湊函數”. 計算出的散列值也稱之為"消息摘要"或者"指紋"


常見算法

  • MD4/5 : MD 是消息摘要(Message Digest)的縮寫。 常用的是 MD5,目前 MD5 已經被證實強抗碰撞性是不安全的,即根據 md5 的算法,現在已經可以產生具有相同y的兩個不同x了。所以在安全性高的場合中,不建議使用 md5
  • SHA-1/256/384/512: 這是一個系列。后面的數字表示y的長度(SHA-1 除外)。 SHA-1 已經被證實強抗碰撞性是不安全的,而 SHA-256/384/512 仍未被攻破,所以后面這三個仍可以使用。后面這三類統稱SHA-2
  • SHA-3: 算法和 SHA-2 已經完全不一樣了。 SHA-3 使用的是Keccak算法。Keccak算法理論上可以生成任意長度的散列值,目前在 SHA-3 規范中規定了SHA3-224\256\384\512這四種版本。Keccak使用的是一種稱之為海綿結構的分組算法,大意是將x進行分組,然后每個分組計算生成y’,再將y’作為輸入和下一個明文分組一起計算
  • RIPEMD-160: 這個算法系列有兩個版本: RIPEMD 和 RIPEMD-160。 其中 RIPEMD 已經被證實強抗碰撞性是不安全的。但 RIPEMD-160 仍然是安全的

應用

  • Alice發送消息前,計算消息的哈希值,并將消息和哈希值一起發送給Bob。
  • Bob收到消息后,計算消息的哈希值,并與Alice發送的哈希值比較,確保消息未被篡改。

散列函數常用場景

  • 口令加密
  • 消息認證碼
  • 數字簽名
  • 偽隨機數生成器
  • 一次性口令

散列函數無法解決的問題

散列函數只能確保信息內容不被篡改,而無法保證消息一定是從合法渠道發來的。 例如 Eve 可以偽裝成 Alice 向 Bob 發送消息和對應的散列值。 Bob 接受到消息和散列值后,如果校驗一致,那么也只能證明消息沒有經過篡改,而無法證明消息是 Alice 發來的。

而為了解決這個問題,就需要同時使用散列值和數字簽名了


2. 消息認證碼(MAC)

概述

散列函數中,我們提到過通過散列函數我們確保消息原文并沒有被篡改過。但無法保證消息是雙方真實意思的表現。

比如說 Bob 收到一條借款消息,上面寫著請 Bob 給 Alice 的銀行賬戶 xxxxx 轉 1000. Bob 通過計算消息內容的散列函數,證實消息沒有被篡改過。 那么此時此刻,Bob 應該給這個賬戶轉賬嗎?

不能!

因為 Bob 并不能證實這條消息是來自于 Alice 的。 有可能這條消息來自于 Eve。 所有僅通過散列函數只能解決是否篡改,而不能解決是否真實。

這是 Bob 以為的

在這里插入圖片描述

而實際上卻是這樣的:
在這里插入圖片描述

而消息認證碼則可以解決這個問題.

定義

消息認證碼是基于哈希函數或對稱加密算法生成的一段固定長度的代碼,用于驗證消息的完整性和真實性。消息認證碼是一種確認信息完整性并可以進行認證的技術,簡稱 MAC(Message Authentication Code)。 MAC 由兩部分組成: 消息 + 共享密鑰
在這里插入圖片描述

和散列函數類似, MAC 可以將任意長度的消息計算出固定長度的輸出值。但和散列函數不同的是,如果沒有共享密鑰,則無法計算出最終的 MAC 值。 所以通過這一個性質來確保安全性.

在這里插入圖片描述

MAC = 單向散列 + 共享密鑰

常見算法

HMAC (基于哈希函數的消息認證碼), CMAC (基于塊密碼的消息認證碼)等。

HMAC 的 H 指的是 Hash 的意思,是一種利用 Hash 來構造消息認證碼的算法。 我們說過MAC = 散列函數 + 共享密鑰 。 HMAC 使用的散列函數有:SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 幾種函數。

因此相對應的 HMAC 也稱為:HMAC-SHA-1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512.

HMAC 用數學公式來表示是:

hash(opadKey || hash(ipadKey || message ))

其中:

ipadKey 是 key(密鑰)ipad(內部 16 進制的 36 比特流) opadKey 是 key(密鑰)opad(外部 16 進制的 5C 比特流)

所以 HMAC 是兩層 HASH 的結果值。

在這里插入圖片描述

步驟分解:

密鑰填充:如果密鑰不足預設長度(散列函數的分組長度),則填充’0’。如果長呢?那就用散列函數計算固定長度的散列值作為密鑰值

  1. 將填充后的密鑰與 Ipad 進行異或操作,最后達到散列函數分組長度。此時將此值稱為IpadKey
  2. 將IpadKey附加在 message 開頭
  3. 將第三步的結果輸入 hash 函數,得出散列值
  4. 將填充后的密鑰與 Opad 進行異或操作,最后達到散列函數分組長度。此時將此值稱為OpadKey
  5. 將IpadKey附加在 message 末尾
  6. 將第六步的結果輸入 hash 函數,得出散列值

工作原理

  1. Alice和Bob共享一個對稱密鑰。
  2. Alice使用共享密鑰和哈希函數生成消息認證碼,并將消息和消息認證碼一起發送給Bob。
  3. Bob使用共享密鑰和哈希函數重新計算消息認證碼,并與Alice發送的消息認證碼比較,確保消息未被篡改。

如何使用 MAC

以 Bob 和 Alice 之間借錢的例子開始說。 假設這倆人之間通過 MAC 確保安全性,那么雙方處理流程應該大致是這個樣子

在這里插入圖片描述

  1. Alice 將借錢消息發給 Bob。
  2. Bob 收到借錢消息后并不急于執行,而是等著 Alice 發來消息認證碼 Alice
  3. 通過共享密鑰和散列函數計算出 mac
  4. Alice 將消息認證碼發送給 Bob
  5. Bob 按照相同的規則計算一遍 Mac
  6. Bob將自己計算的 Mac 和 Alice 發來的 Mac 比對一遍。通過是否相同判斷請求是否合法

MAC 的問題

在 MAC 算法里面既然提到了共享密鑰,那么就無法逃離對稱密鑰體系的宿命:“密鑰配送問題”。 而解決這個問題,目前來說只能依靠公鑰密鑰、Diffie-Hellman 密鑰交換,密鑰中心等解決方案.

使用 HMAC 可以解決消息合法性和完整性的問題,但卻無法抵御重放攻擊。 比如 Eve 截獲到 Alice 和 Bob 之間的 Hmac 報文后,無限制的重復這段報文。 那么 Bob 就會無限制的進行轉賬。所以使用 HMAC 進行消息認證時,也會配合序號、時間戳等輔助信息,來判斷報文是否需要處理。

同時 HMAC 也無法解決否認的問題,比如 Alice 完全可以事后否認找 Bob 借過錢,因為 Bob 完全有能力偽造出這段報文。即便 Bob 拿出了 MAC 值,也無法證明是 Alice 生成的。

那又該如何證明錢是由 Alice 借的呢?

這就需要數字簽名技術了


不可否認性

不可否認性確保消息的發送者不能否認曾經發送過消息,這通常通過數字簽名實現。

數字簽名(Digital Signature)

定義:數字簽名是一種基于非對稱密碼技術的認證機制,用于驗證消息的發送者身份和消息的完整性。

工作原理

  1. Alice使用自己的私鑰對消息的哈希值進行加密,生成數字簽名,并將消息和數字簽名一起發送給Bob。
  2. Bob使用Alice的公鑰對數字簽名進行解密,得到消息的哈希值,并計算接收到的消息的哈希值。
  3. Bob比較兩個哈希值,若相同,則確認消息完整且由Alice發送。

優點

  • 提供身份認證和完整性驗證。
  • 防止發送者否認發送過消息。

應用場景

  • 安全電子郵件、數字合同、軟件分發等需要驗證身份和完整性的場景。

總結

確保信息的機密性完整性不可否認性是密鑰體系的重要目標。對稱密碼和非對稱密碼主要解決機密性問題。哈希函數、消息認證碼(MAC)和數字簽名是實現消息完整性和不可否認性的主要技術手段。

應用建議

  • 對于大數據量的加密,使用對稱密碼如AES。
  • 對于身份驗證和不可否認性,結合使用非對稱密碼和數字簽名。
  • 對于消息完整性,使用哈希函數和消息認證碼。

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

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

相關文章

SketchUp Pro 2024:現代科技之詩意體驗

在那遙遠的唐朝,李白曾以詩酒為伴,游歷山川,揮灑才情。而今,若李白穿越時空,手握現代科技之利器——SketchUp Pro 2024,定會以詩意之筆,描繪這款軟件的神奇與魅力。 初識SketchUp Pro 2024 初…

Vue Router:History 模式 vs. Hash 模式

在開發 SPA(單頁應用程序)時,路由管理是不可或缺的一部分。Vue.js 框架中的 Vue Router 提供了兩種主要的路由模式:History 模式和 Hash 模式。理解這兩種模式的區別及其實現方式,對于開發和部署 Vue 應用至關重要。 …

k8s record 20240708

一、PaaS 云平臺 web界面 資源利用查看 Rancher 5臺 CPU 4核 Mem 4g 100g的機器 映射的目錄是指docker重啟后,數據還在 Rancher可以創建集群也可以托管已有集群 先docker 部署 Rancher,然后通過 Rancher 部署 k8s 想使用 kubectl 還要yum install 安…

如何分析前后端bug?

如何分析前后端bug,我來支你1??招 📝一般通過查看接口的方式分析前后端bug。 . 【方法】: web項目,用瀏覽器自帶的F12抓包看接口請求。 app客戶端,一般用fiddler等工具進行抓包接口。 . ?用經典的電商項目舉例&…

應用軟件受到網絡攻擊怎么辦?

大家都知道在目前的互聯網社會中,大型的網絡游戲與電商網站企業是網絡攻擊的重要對象,同時軟件應用也無法避免地會受到各種網絡攻擊,那么當我們的軟件應用被攻擊時,該怎么辦呢? 首先我們可以使用高防CDN,安…

2. 年齡問題

年齡問題 題目描述 本題為填空題,只需要算出結果后,在代碼中使用輸出語句將所填結果輸出即可。 S 夫人一向很神秘。這會兒有人問起她的年齡,她想了想說: "2020 年前,我丈夫的年齡剛好是我的 22 倍,…

ATA-8035射頻功率放大器在聲動力療法中的應用

聲動力療法是一種基于聲波能量的治療方法,廣泛應用于醫療和美容領域。它利用高強度聚焦的聲波來實現切割、破碎或加熱組織,以治療各種疾病和美容問題。在聲動力療法中,射頻功率放大器起著至關重要的作用,它負責提供足夠的能量來激…

達夢數據庫的系統視圖v$auditrecords

達夢數據庫的系統視圖v$auditrecords 在達夢數據庫(DM Database)中,V$AUDITRECORDS 是專門用來存儲和查詢數據庫審計記錄的重要系統視圖。這個視圖提供了對所有審計事件的訪問權限,包括操作類型、操作用戶、時間戳、目標對象等信…

詳解 | 什么是GeoTrust

GeoTrust是一家全球知名的數字證書頒發機構(Certificate Authority,簡稱CA),專注于提供SSL/TLS證書和其他相關的網絡安全產品。 1、歷史背景: GeoTrust成立于2001年,最初作為一個獨立的公司運營。2006年&a…

js+spring boot實現簡單前后端文件下載功能

jsboot項目實現自定義下載 一、前端頁面 1、先導入axios的js包 2、注意axios響應的格式:result.data.真實的數據內容 3、這里請求的url就是你boot項目的getMapping的url,保持一致即可 4、如果想在后端設置文件名,那么后端生成后&#xf…

目標檢測算法介紹來了!

隨著人工智能技術的迅猛發展,目標檢測算法在計算機視覺領域扮演著越來越重要的角色。它廣泛應用于安防監控、自動駕駛、醫學影像分析、機器人視覺等多個領域,極大地推動了智能化進程。本文將對目標檢測算法進行深入的探討,包括其基本原理、發…

使用 Streamlit 和 asyncio 模塊進行異步編程

概述 Streamlit 是一個用于構建數據應用程序的強大工具,但它本身并不直接支持異步編程。然而,通過結合 Python 的 asyncio 模塊,我們可以在 Streamlit 應用中實現異步處理,從而提高應用的響應性和效率。 為什么需要異步編程 在…

安卓應用開發學習:騰訊地圖SDK應用改進,實現定位、搜索、路線規劃功能集成

一、引言 我的上一篇學習日志《安卓應用開發學習:通過騰訊地圖SDK實現定位功能》記錄了利用騰訊地圖SDK實現手機定位功能,并能獲取地圖中心點的經緯度信息。這之后的幾天里,我對《Android App 開發進階與項目實戰》一書第九章的內容深入解讀…

【深度學習實戰(44)】Anchor based and Anchor free(無錨VS有錨)

1 anchor-based 深度學習目標檢測通常都被建模成對一些候選區域進行分類和回歸的問題。在單階段檢測器中,這些候選區域就是通過滑窗方式產生的 anchor;在兩階段檢測器中,候選區域是 RPN 生成的 proposal,但是 RPN 本身仍然是對滑窗…

leetcode--層數最深葉子節點的和

leetcode地址:層數最深葉子節點的和 給你一棵二叉樹的根節點 root ,請你返回 層數最深的葉子節點的和 。 示例 1: 輸入:root [1,2,3,4,5,null,6,7,null,null,null,null,8] 輸出:15 示例 2: 輸入&#xff…

多點GRE over IPsecVPN模式下nhrp的調優

一、實驗目的 在多點GRE over IPsecVPN模式下對nhrp進行調優,在總部開啟重定向、在分支開啟shortcut 網絡拓撲: 二、基礎設置 (一)如圖所示配置接口地址和區域,連接PC的接口位于trust區域、連接路由器的接口位于unt…

qt5.15關于qradiobutton遇到的坑

前言 不知道是只有我遇到了,還是qt本身就存在這個bug 當將2個qradiobutton放入到一個布局內,然后進行來回切換,若無數據刷新的情況下,切換無異常,當窗體內有數據開始刷新了,則點擊其中一個qradiobutton&am…

語法糖:代碼中的甜品

人不走空 🌈個人主頁:人不走空 💖系列專欄:算法專題 ?詩詞歌賦:斯是陋室,惟吾德馨 目錄 🌈個人主頁:人不走空 💖系列專欄:算法專題 ?詩詞歌…

以太網電路相關功能說明

RJ45模塊用于PHY芯片之間的互連,如圖1所示,RJ45有兩種組合形式,一種是分立式,網口變壓器和RJ45連接座是分開的,另一種是網口變壓器和RJ45集成在一起。 圖1 RJ45兩種主要形式 接下來以分立式RJ45的百兆網電路做個說明&a…

基于springboot+vue養老院管理系統+lw+源碼+講解+調試+演示視頻

第3章 系統分析 用戶的需求以及與本系統相似的在市場上存在的其它系統可以作為系統分析中參考的資料,分析人員可以根據這些信息確定出本系統具備的功能,分析出本系統具備的性能等內容。 3.1可行性分析 盡管系統是根據用戶的要求進行制作,但…