主頁 >  其他 > 必學的密碼學基本知識

必學的密碼學基本知識

2020-09-14 10:08:19 其他

文章更新于:2020-04-02
注:本文參考自機械工業出版社《密碼工程原理與應用》,

點擊目錄可跳轉

    • 一、密碼學研究范圍
      • 1.1、密碼學的作用
      • 1.2、木桶理論
      • 1.3、對手的設定
    • 二、密碼學簡介
      • 2.1、加密
      • 2.2、認證
      • 2.3、公鑰加密
      • 2.4、數字簽名
      • 2.5、PKI
      • 2.6、攻擊
        • 2.6.1 唯密文攻擊
        • 2.6.2 已知明文攻擊
        • 2.6.3 選擇明文攻擊
        • 2.6.4 選擇密文攻擊
        • 2.6.5 生日攻擊
        • 2.6.6 中間相遇攻擊
    • 三、Enjoy!

一、密碼學研究范圍

密碼學是一門關于加密的藝術和科學,

1.1、密碼學的作用

密碼學是整個安全系統的一部分,但也是最關鍵的一部分,
密碼學通常提供系統的訪問控制功能,

1.2、木桶理論

每個安全系統的安全性都取決于它最脆弱的部分,

為了提高系統的安全性,我們需要提高系統最脆弱地方的安全性,所以我們必須先知道那些是最脆弱的,這可以用一個分層的樹結構來完成,系統的每部分都是有哪些環節,同時每個環節還有哪些子環節,我們可以將這些環節組織成一顆攻擊樹(attack tree)

1.3、對手的設定

因為如果有攻擊者想要攻擊系統,它一定會攻擊系統最薄弱的環節,

所以我們必須把對手設定為最狡猾的對手,這樣我們才能更好的完善我們系統的安全性!

二、密碼學簡介

注1:密碼學傳統上為了方便舉例稱發送方為 Alice ,接收方為 Bob,竊聽者為 Eve

注2:如果你查字典,你會發現密鑰讀(yue),但是一些密碼學的老教授讀的時候會讀 (yao),所以在不致產生歧義(密鑰(yue)和蜜月同音~))的時候,你讀哪種應該都是可以的,

2.1、加密

  1. 為了不讓我們發送的資訊被竊聽,我們可以選擇在發送資訊前,將明文 m 通過加密函式 E 用密鑰 ke 進行加密成密文 c ,然后再發送,

  2. 接收方受到密文 c 以后通過解密函式 D 用密鑰 ke 進行解密為明文 m ,至此,資訊發送完成,

  3. 如果 Eve 進行了竊聽,那么他只能得到密文,沒有密鑰 ke 它將無法得到明文,

  4. 那么問題來了,如何傳送密鑰嗎?如果有安全的信道用來傳送密鑰,那么直接用來發送資訊好了?

    這涉及到了密鑰的分發問題,這里先不拓展,暫且認為 AliceBob 使用了另外一個安全的信道進行密鑰的協商,比如上次見面的時候協商,或寫在紙上郵寄過去等,

  5. kerckhoff原則

    加密方案的安全性必須僅僅依賴于對于密鑰 ke 的保密,而不依賴于對于演算法的保密,

    事實證明,不公開的演算法往往是存在問題的,是經不起檢驗的,

2.2、認證

在上一章節中,我們解釋了如何進行加密以防止 Eve 竊聽到明文,但是這卻防不住 Eve 對資訊進行修改,

因為 Eve 既然可以竊聽到信道,那么他相應的也有可能對資訊進行修改、攔截刪掉、或者改變幾個資訊的順序,這些都是可能的,

而接收方卻無法分辨資訊是否被篡改,為了解決這個問題,我們引入了認證的概念,

  1. 和加密一樣,認證也需要使用一個密鑰,這里記為 ka

  2. 在發送資訊之前,我們先使用 ka 對資訊進行計算得到一個訊息認證碼(Message Authentication Code),也可以稱為 MAC

  3. 發送資訊的時候,連 MAC 也一起發送過去,

  4. Bob 接收到資訊mMAC 以后,自己對資訊計算一遍 MAC ,看是否與發過來的 MAC 相同,如果相同,說明資訊安然無恙,如果不相同,就說明資訊被篡改或已損壞,直接丟棄便是,

  5. 現在如果 Eve 進行竊聽即便同時篡改了資訊,但因為他沒有認證密鑰 ka ,所以他的篡改是無法起到作用的,因為 Bob 收到發現 MAC 不對就該扔了不是~

  6. 但是這還有一個問題,就是這還不足以抵擋 訊息重放攻擊 , 什么是訊息重放攻擊呢?

    就比如說,Eve 竊聽到資訊并不篡改,而是連同 MAC 保存下來,等待一段時間以后,再連同 MAC 一起發送給 Bob ,由于 MAC 是有效的,所以 Bob 會認為訊息有效,

    如果在某些場景資訊的順序很重要的話,這同樣會造成危害,為了避免這種情況,我們可以在訊息中加上編號,并在接收的時候驗證編號,如果受到的編號小于已經收到的資訊編號,便丟棄,說白了就是如果收到 2 號資訊以后,才收到 1 號資訊,1 號資訊就會被丟棄,

注:加密認證 是兩個不同的概念,加密只能保證不泄露明文,而認證則是保證訊息的完整性,

2.3、公鑰加密

在上述我們討論的加密方案中,兩者發送資訊需要有一個加密密鑰 ke ,我們可以設想一下,如果一個團隊人數比較多的話,交換密鑰是一個非常麻煩的事情,而且人一多,密鑰的數量也顯著增多,

你的老板可不希望你把大量的作業時間話花費在交換密鑰上,

為了解決這個問題,我們引入 公鑰加密 的概念,

  1. 首先我們使用一種特殊的演算法生成一對密鑰(SBob ,PBob),其中 SBob 為私鑰,PBob 為公鑰,

  2. 然后 Bob 公開他的公鑰!這樣一來,所有人都可以獲取 Bob 的公鑰,這也符合公鑰的名字哈,

  3. 接著 Alice 就可以使用 Bob 的公鑰對資訊 m 進行加密成密文 c ,然后發送給 Bob

  4. Bob 受到密文 c 以后,使用 私鑰 SBob 對密文進行解密得到明文 m

  5. 那么 Bob 想給 Alice 發資訊是用自己的私鑰進行加密嗎?不可能的,那樣任何擁有 Bob 公鑰的人都將可以解密資訊,那用什么加密?給 Alice 發資訊當然是用 Alice 的公鑰啦!

  6. 所以說,給誰發資訊就用誰的公鑰加密,而解密資訊則只有對應的私鑰才可以,那么如果你想讓人家給你發資訊,你公開自己的公鑰就可以了,

注1:公鑰和私鑰是不一樣的,不像之前提到的加密密鑰 ke ,在公鑰加密系統中,甚至連加密函式和解密函式都是不一樣的,

注2:沒有私鑰你想解密公鑰加密的資訊?你解密個試試,我看著你解密,

2.4、數字簽名

前文我們提到了訊息認證碼的概念,其實數字簽名可以理解為使用公鑰加密技術實作的訊息認證碼,

假設 Alice 想要發送訊息給 Bob:
1、Alice 先校驗出要發送資訊的 Hash ,然后 使用私鑰對 Hash 進行加密得到加密結果 s
2、Alice 將訊息和加密結果 s 一同發送給 Bob
3、Bob 收到以后使用 Alice 的公鑰對加密結果 s 進行解密,得到由 Alice 發送的 Hash
4、Bob 自己計算一遍 Hash 然后對比,進行驗證,

2.5、PKI

使用公鑰加密的數字簽名雖然保證了訊息的加密,但卻無法保證使用但是正確的公鑰,可能公鑰已經被掉包了卻渾然不知,

PKI 的中心思想是設立一個中心機構,稱為證書機構或CA,每個用戶都把他的公鑰報給CA并向CA證明自己,然后CA使用數字簽名簽署用戶的公鑰,

之后,每個人都只需要有CA的公鑰即可驗證對方是否是正確的要通信的人,

2.6、攻擊

2.6.1 唯密文攻擊

只有密文,試圖將其解密成明文,難度最大,

2.6.2 已知明文攻擊

同時知道明文和密文,試圖得到解密密鑰,

2.6.3 選擇明文攻擊

比已知明文攻擊更強大,
可以構造指定明文的密文,試圖得到解密密鑰,

2.6.4 選擇密文攻擊

比選擇明文攻擊更強大,
可以構造指定明文的密文,也可以得到指定密文的明文,試圖得到解密密鑰,

2.6.5 生日攻擊

此攻擊得名于生日悖論,
如果一個房間里由23個人,那么其中兩個人生日相同的概率超過50%,

一般來說,如果一個元素可以取N種不同的值,那么隨機選擇了大約 N\sqrt N 個元素之后,就可以預期出現第一次碰撞,

很多情況下,我們討論 n 位的值,因為有 2n 個可能的值,所以集合中需要有 2n\sqrt {2^n} = 2n/2 個元素才能預期出現第一次碰撞,我們將經常談到 2n/2 這個屆,或稱為生日屆,

2.6.6 中間相遇攻擊

中間相遇攻擊與生日攻擊同屬于碰撞攻擊,

在生日攻擊中,我們期待同一個值在相同的元素集合中出現兩次,即出現碰撞,
而在中間相遇攻擊中,我們則自己構建一個集合,并等待這兩個集合出現交際,即出現碰撞,

三、Enjoy!

有后續…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33703.html

標籤:其他

上一篇:CVE-2020-1938 Apache-Tomcat-Ajp 檔案包含漏洞復現

下一篇:計算機網路學習筆記NO.1 計算機網路概述

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more