密碼學基礎——密碼學相關概念

目錄

1.1 密碼系統(Cryptosystem)

1.2 密碼編碼學

1.3 密碼分析學

1.4 基于算法保密

1.5 基于密鑰保密

1.6密碼系統的設計要求

1.7 單鑰體制

1.8 雙鑰體制

密鑰管理


1.1 密碼系統(Cryptosystem)

????????也稱為密碼體制,主要包括以下幾個基本要素:明文,密文,加密算法,解密算法和密鑰。用數學符號描述為:S = {M, C, K, E, D}

  • M明文:發送方即將要發送的消息。
  • C密文:明文經過密碼變換后的消息。
  • E加密:由明文變換為密文的過程。
  • D解密:由密文恢復出原明文的過程。
  • K密鑰/或密鑰空間:是一種特定的值,能使密碼算法按照指定的方式進行,并產生相應的密文,密鑰是密碼體制安全保密的關鍵。
  • 加密算法:對明文進行加密時所采用的一組規則。
  • 解密算法:對密文進行解密時所采用的一組規則。

密碼系統中的一些基本術語:

  • 加密員(密碼員):對明文進行加密操作的人員。
  • 接收者:傳送消息的預定對象。
  • 截收者:在信息傳輸和處理系統中,通過搭線竊聽、電磁竊聽、聲音竊聽等方式來竊取機密信息。 加密密鑰和解密密鑰:加密算法和解密算法的操作通常都是在一組密鑰控制下進行。
  • 單鑰密碼體制(對稱密碼體制):傳統密碼體制所用的加密密鑰和解密密鑰相同,或實質上等同,即從一個易于得出另一個。如DES、ARS、RC4、
  • 雙鑰密碼體制(非對稱密碼體制):若是加密密鑰和解密密鑰不相同,即從一個難于推出另一個。
  • 密碼分析:截收者通過分析可能從截獲的密文推斷出原來的明文或密鑰。
  • 密碼分析學:研究如何從密文推演出明文、密鑰或解密算法的學問。
  • 密碼分析員:從事密碼分析這一工作的人。
  • 被動攻擊:對一個保密通信系統采取截獲密文進行分析的這類攻擊。分為獲取消息的內容和業務流分析。
  • 主動攻擊:非法入侵者、攻擊者或黑客主動向系統竄擾,采用刪除、增添、重放、偽造等竄改手段向系統注入假消息,達到利已害人的目的。主要有三類:中斷、篡改、偽造。

???

?? 密碼學(cryptology):是一門關于發現、認識、掌握和利用密碼內在規律的科學,由密碼編碼學(cryptography)和密碼分析學(cryptanalysis) 組成。

1.2 密碼編碼學

  • 定義:密碼編碼學主要研究如何對信息進行編碼,以實現信息的保密性、完整性、認證性和不可否認性等安全目標。它通過設計各種加密算法和密碼體制,將明文信息轉化為密文形式,使得只有合法的接收者能夠在密鑰的幫助下還原出原始明文。
  • 具體內容
    • 設計加密算法:運用數學原理和計算方法,構造出復雜的變換規則,將明文按照特定方式進行混淆和擴散,例如著名的 AES(高級加密標準)算法,通過字節替換、行移位、列混合和輪密鑰加等操作,對明文進行多次變換,使其變成難以理解的密文。
    • 密鑰生成與管理:產生安全可靠的密鑰,并確保密鑰在生成、存儲、分發和使用過程中的安全性和保密性。例如,使用密鑰交換協議在不安全的網絡環境中安全地共享密鑰。
    • 構建密碼體制:將加密算法、密鑰管理等要素有機結合,形成一個完整的密碼系統,以滿足不同應用場景的安全需求,如對稱密碼體制、非對稱密碼體制等。

1.3 密碼分析學

  • 定義:密碼分析學主要研究如何通過分析截獲的密文、已知的加密算法以及可能獲取的相關信息,來推斷出原始明文、密鑰或解密算法等。它是對密碼體制進行安全性評估和攻擊的學科。
  • 具體內容
    • 分析加密算法:研究加密算法的數學原理和邏輯結構,尋找其中可能存在的弱點和漏洞。例如,通過對 RSA 算法中模數分解的難度分析,來評估其安全性。
    • 實施攻擊方法:利用各種技術和手段對密文進行攻擊,如窮舉攻擊、字典攻擊、差分密碼分析、線性密碼分析等。例如,窮舉攻擊通過嘗試所有可能的密鑰來解密密文。
    • 評估密碼體制安全性:根據對加密算法的分析和攻擊結果,對密碼體制的安全性進行量化評估,確定其能夠抵御何種類型和強度的攻擊,以及在何種情況下可能被破解。

密碼系統可以采用的兩種安全策略:基于算法保密和基于密鑰保密。在實際應用中,基于密鑰保密的方式使用得更為廣泛。

1.4 基于算法保密

  • 策略原理:該策略主要依靠對加密算法本身進行保密來實現信息安全。即通過隱藏加密算法的具體細節、操作步驟以及數學原理等,使得未授權者難以知曉信息是如何被加密的,從而無法輕易破解密文。
  • 優點:在一定程度上能提供安全保障,若算法保密工作做得好,外界難以通過分析算法來進行解密。在早期一些簡單的密碼系統中,這種方式較為常見,例如古代一些通過特定的字符替換或移位規則進行加密的方法,只要這些規則不被泄露,信息就具有一定的保密性。
  • 缺點
    • 難以實現絕對保密:隨著技術的發展和人員的流動,算法的細節很可能會被泄露。而且,保密算法的相關人員一旦出現疏忽或被敵方策反,整個密碼系統的安全性就會立刻崩潰。
    • 算法的開發非常復雜:一旦算法泄密,重新開發需要一定的時間;
    • 不便于標準化:由于每個用戶單位必須有自己的加密算法,不可能采用統一的硬件和軟件產品;
    • 不便于質量控制:用戶自己開發算法,需要好的密碼專家,否則對安全性難于保障。

1.5 基于密鑰保密

  • 策略原理:這種策略是將加密算法公開,但是通過使用密鑰來對信息進行加密和解密。合法用戶擁有正確的密鑰就能順利進行加解密操作,而沒有密鑰的攻擊者即使知道加密算法,也難以從密文還原出明文。例如在現代的對稱加密算法如 AES(高級加密標準)和非對稱加密算法如 RSA 中,算法都是公開的,安全性主要依賴于密鑰的保密性。
  • 優點
    • 安全性高且可驗證:由于算法公開,能夠接受全球范圍內密碼學專家的分析和檢驗,其安全性可以得到更可靠的評估。如果經過長時間的公開驗證后沒有發現重大安全漏洞,那么該算法在當前技術條件下是較為安全的。
    • 便于密鑰管理:可以通過專門的密鑰管理系統來生成、分發、存儲和更新密鑰,相較于保密算法,密鑰的管理更加集中和可控。而且可以根據不同的安全需求,靈活地更換密鑰,而無需改變加密算法。
    • 促進技術發展:公開的算法為密碼學研究人員提供了研究和改進的基礎,有利于推動密碼技術的不斷發展和創新。新的算法可以在已有的公開算法基礎上進行優化和改進,提高加密效率和安全性。
  • 缺點
    • 對密鑰的保密性要求極高。一旦密鑰泄露,那么整個密碼系統就會失去安全性,攻擊者可以利用獲取的密鑰輕易解密所有使用該密鑰加密的信息。因此,需要建立完善的密鑰保護機制,防止密鑰被竊取、篡改或泄露。

1.6密碼系統的設計要求

  • 系統即使達不到理論上不可破譯,也應該是實際上不可破譯的(也就是說,從截獲的密文或某些已知的明文和密文對,要決定密鑰或任意明文在計算上是不可行的);
  • 加密算法和解密算法適用于所有密鑰空間的元素
  • 系統便于實現和使用方便;
  • 系統的保密性不依賴于對加密體制或算法的保密,而依賴于密鑰(著名的Kerckhoff原則,現代密碼學的一個基本原則)。

密碼體制從原理上分為兩類:

  • 單鑰密碼體制(One-key System)或對稱密碼體制(Symmetric Cryptosystem)
  • 雙鑰密碼體制(Two-Key System)或公開密碼體制(Public Key Cryptosystem)

1.7 單鑰體制

????????對稱密碼體制(symmetric cryptosystem)的加密密鑰和解密密鑰相同,也叫單鑰密碼體制或者秘密密碼體制

  • 單鑰體制的加密密鑰和解密密鑰相同
  • 單鑰體制有很高的保密性,很強的安全性,根據這種特性,單鑰加解密算法可通過低費用的芯片來實現。
  • 單鑰體制不僅可用于數據加密,也用于消息的認證。

單鑰體制對明文消息的加密有兩種方式:

  • 流密碼(序列密碼,Stream Cipher:對明文消息按字符(如二元數字)逐位地進行加密。
  • 分組密碼(Block Cipher:將明文消息分組(含有多個字符),逐組地進行加密。

下面為對稱密碼體制的基本流程,發送者需要發送明文消息m,發送前在加密器中使用密鑰K將明文加密,得到密文c;接受者受到密文c后在解密器使用密鑰K解密得到明文消息m。

1.8 雙鑰體制

????????雙鑰體制又稱作公鑰體制。采用雙鑰體制的每個用戶都有一對選定的密鑰:一個是可以公開的,可以像電話號碼一樣進行注冊公布;另一個則是秘密的。? ?

公鑰密碼中,加密密鑰一般是公開的,因此被稱為公開密鑰(public key),簡稱公鑰。相對地,解密密鑰是絕對不能公開的,不可以將它發送給別人(通信對象也不可以),只能由自己使用,因此被稱為秘密密鑰(private key),簡稱私鑰。因此公鑰密碼體制也叫做雙鑰密碼體制。公鑰和私鑰是一一對應的,一對公鑰和私鑰統稱為密鑰對(key pair)。公鑰和私鑰是不能分別單獨生成的,成對存在。
???

雙鑰密碼體制的特點:將加密和解密能力分開

  • 可以實現多個用戶加密的消息只能由一個用戶解讀,可用于公共網絡中實現保密通信。
  • 由一個用戶加密的消息而使多個用戶可以解讀,可用于實現對用戶的認證。

密鑰管理

  • 主要包括密鑰產生、分配、存儲、銷毀等問題。
  • 密鑰管理是影響系統安全的關鍵因素,即使密碼算法再好,若密鑰管理問題處理不好,就很難保證系統的安全保密。

下面是公鑰密碼體制的基本流程:

  • 密鑰生成:用戶首先生成一對密鑰,一個是公鑰K1,一個是私鑰K2。這對密鑰在數學上是相關的,但從公鑰很難推導出私鑰。例如,RSA 算法中,通過選擇兩個大素數相乘等一系列操作生成公鑰和私鑰。
  • 加密過程:當發送方要向接收方發送明文信息m時,發送方使用接收方的公鑰K1對明文進行加密得到密文C。由于公鑰是公開的,所以任何人都可以獲取接收方的公鑰來加密信息。加密后的信息稱為密文,這個過程是基于公鑰和特定的加密算法實現的。
  • ?解密過程:接收方收到密文C后,使用自己的私鑰K2對密文進行解密,從而得到原始的明文信息m。只有擁有正確私鑰的接收方才能完成解密操作,因為私鑰是保密的,所以保證了信息的安全性。

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

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

相關文章

初始JavaEE篇 —— Mybatis-plus 操作數據庫

找往期文章包括但不限于本期文章中不懂的知識點: 個人主頁:我要學編程程(?_?)-CSDN博客 所屬專欄:JavaEE 目錄 前言 Mybatis-plus 快速上手 Mybatis-plus 復雜操作 常用注解 TableName TableField TableId 打印日志 條件構造器 …

PyQt6實例_批量下載pdf工具_主線程啟用線程池

目錄 前置: 代碼: 視頻: 前置: 1 本系列將以 “PyQt6實例_批量下載pdf工具”開頭,放在 【PyQt6實例】 專欄 2 本系列涉及到的PyQt6知識點: 線程池:QThreadPool,QRunnable; 信號與…

1.2 斐波那契數列模型:LeetCode 面試題 08.01. 三步問題

動態規劃解三步問題:LeetCode 面試題 08.01. 三步問題 1. 題目鏈接 LeetCode 面試題 08.01. 三步問題 題目要求:小孩上樓梯,每次可以走1、2或3步,計算到達第 n 階臺階的不同方式數,結果需對 1e9 7 取模。 2. 題目描述…

UE5 學習筆記 FPS游戲制作30 顯示擊殺信息 水平框 UI模板(預制體)

文章目錄 一制作單條死亡信息框水平框的使用創建一個水平框添加子元素調整子元素順序子元素的布局插槽尺寸填充對齊 制作UI 根據隊伍,設置文本的名字和顏色聲明變量 將變量設置為構造參數根據隊伍,設置文本的名字和顏色在構造事件中,獲取玩家…

HTTP---基礎知識

天天開心!!! 文章目錄 一、HTTP基本概念1. 什么是HTTP,又有什么用?2. 一次HTTP請求的過程3.HTTP的協議頭4.POST和GET的區別5. HTTP狀態碼6.HTTP的優缺點 二、HTTP的版本演進1.各個版本的應用場景2、注意要點 三、HTTP與…

數據結構 KMP 字符串匹配算法

KMP算法是計算機科學中的一種字符串匹配算法,KMP是三個創始人名字首字母 題目 AcWing - 算法基礎課 前置知識點 KMP算法是一種高效的字符串匹配算法,算法名稱取自于三位共同發明人名字的首字母組合。該算法的主要使用場景就是在字符串(也叫…

Conda配置Python環境

1. 安裝 Conda 選擇發行版: Anaconda:適合需要預裝大量科學計算包的用戶(體積較大)。 Miniconda:輕量版,僅包含 Conda 和 Python(推薦自行安裝所需包)。 驗證安裝: co…

數倉開發那些事(11)

某神州優秀員工:一閃,領導說要給我漲米。 一閃:。。。。(著急的團團轉) 老運維:Oi,兩個吊毛,看看你們的hadoop集群,健康度30分,怎么還在抽思謀克&#xff1f…

MyBatis Plus 中 update_time 字段自動填充失效的原因分析及解決方案

? MyBatis Plus 中 update_time 字段自動填充失效的原因分析及解決方案 前言一、問題現象二、原因分析1. 使用了 strictInsertFill/strictUpdateFill 導致更新失效2. 實體類注解配置錯誤3. MetaObjectHandler 未生效4. 使用自定義 SQL 導致自動填充失效5. 字段類型不匹配 三、…

C++ STL常用算法之常用算術生成算法

常用算術生成算法 學習目標: 掌握常用的算術生成算法 注意: 算術生成算法屬于小型算法&#xff0c;使用時包含的頭文件為 #include <numeric> 算法簡介: accumulate // 計算容器元素累計總和 fill // 向容器中添加元素 accumulate 功能描述: 計算區間內容器元素…

axios基礎入門教程

一、axios 簡介 axios 是一個基于 Promise 的 HTTP 客戶端&#xff0c;可用于瀏覽器和 Node.js 環境&#xff0c;支持以下特性&#xff1a; 發送 HTTP 請求&#xff08;GET/POST/PUT/DELETE 等&#xff09; 攔截請求和響應 自動轉換 JSON 數據 取消請求 并發請求處理 二…

短視頻團隊架構工作流程---2025.3.30 李劭卓

短視頻團隊架構&工作流程—2025.3.30 李劭卓 文章目錄 短視頻團隊架構&工作流程---2025.3.30 李劭卓1 工作職責1.1 編劇&#xff1a;1.2 主編&#xff1a;1.3 總編&#xff1a;1.4 導演&#xff1a;1.5 攝影&#xff1a;1.6 演員&#xff1a;1.7 后期&#xff1a;1.8 美…

MySQL 高效 SQL 使用技巧詳解

MySQL 高效 SQL 使用 技巧詳解 一、為什么需要優化 SQL&#xff1f; 性能瓶頸&#xff1a;慢查詢導致數據庫負載升高&#xff0c;響應時間延長。資源浪費&#xff1a;低效 SQL 可能占用大量 CPU、內存和磁盤 I/O。 目標&#xff1a;通過優化 SQL 將查詢性能提升 10 倍以上&am…

AI基礎03-視頻數據采集

上篇文章我們學習了圖片的數據采集&#xff0c;今天主要了解一下視頻數據采集的方法。視頻是由一系列圖像構成的&#xff0c;其中每一張圖片就是一幀。視頻數據采集方法通常有自動圖像采集和基于處理器的圖像采集兩種。我們學習一下如何利用python 工具和筆記本計算機攝像頭進行…

Scala 數組

Scala 數組 引言 Scala 作為一門多范式編程語言&#xff0c;融合了面向對象和函數式編程的特點。數組是編程語言中非常基礎和常見的數據結構&#xff0c;在 Scala 中也不例外。本文將詳細介紹 Scala 中的數組&#xff0c;包括其定義、操作以及在實際開發中的應用。 Scala 數…

Text-to-SQL將自然語言轉換為數據庫查詢語句

有關Text-To-SQL方法&#xff0c;可以查閱我的另一篇文章&#xff0c;Text-to-SQL方法研究 直接與數據庫對話-text2sql Text2sql就是把文本轉換為sql語言&#xff0c;這段時間公司有這方面的需求&#xff0c;調研了一下市面上text2sql的方法&#xff0c;比如阿里的Chat2DB,麻…

golang 的strconv包常用方法

目錄 1. 字符串與整數的轉換 2. 字符串與浮點數的轉換 3. 布爾值的轉換 4. 字符串的轉義 5. 補充&#xff1a;rune 類型的使用 方法功能詳解 代碼示例&#xff1a; 1. 字符串與整數的轉換 方法名稱功能描述示例Atoi將字符串轉換為十進制整數。strconv.Atoi("123&q…

MATLAB詳細圖文安裝教程(附安裝包)

前言 MATLAB&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司開發的一款高性能的編程語言和交互式環境&#xff0c;主要用于數值計算、數據分析和算法開發。內置數學函數和工具箱豐富&#xff0c;開發效率高&#xff0c;特別適合矩陣運算和領域特定問題。接下來就…

ShapeCrawler:.NET開發者的PPTX操控魔法

引言 在當今的軟件開發領域&#xff0c;隨著數據可視化和信息展示需求的不斷增長&#xff0c;處理 PPTX 文件的場景日益頻繁。無論是自動化生成報告、批量制作演示文稿&#xff0c;還是對現有 PPT 進行內容更新與格式調整&#xff0c;開發者都需要高效的工具來完成這些任務。傳…

HTML5貪吃蛇游戲開發經驗分享

HTML5貪吃蛇游戲開發經驗分享 這里寫目錄標題 HTML5貪吃蛇游戲開發經驗分享項目介紹技術棧核心功能實現1. 游戲初始化2. 蛇的移動控制3. 碰撞檢測4. 食物生成 開發心得項目收獲后續優化方向結語 項目介紹 在這個項目中&#xff0c;我使用HTML5 Canvas和原生JavaScript實現了一…