主頁 >  其他 > 【總結】密碼學詳細學習

【總結】密碼學詳細學習

2021-12-07 09:23:55 其他

【總結】密碼學詳細學習

  • 備注
  • 一、基本知識
    • 1.術語
    • 2.保密原則
    • 3.安全性
    • 4.安全目標
    • 5.加密原則
    • 6.數學基礎
    • 7.數學難題
  • 二、密碼編碼
    • 1.古典密碼
      • (1)置換密碼
      • (2)代換密碼
        • 單字符代換:
      • 多字符代換
      • 一次一密
    • 2.現代密碼
      • (1)對稱密碼(單鑰密碼)
      • (2)分組密碼(塊密碼)
      • (2)非對稱密碼(雙鑰密碼)
      • (3)單向函式
  • 三、數字簽名與密鑰管理
    • 1.數字簽名
    • 2.密鑰管理
      • (1)密鑰生成
      • (2)密鑰分發
  • 四、密碼分析
    • 1.敵手模型
    • 2.攻擊場景
    • 3.攻擊方式
      • (1)窮舉法
      • (2)頻率分析
      • (3)長度測驗法
      • (4)重合指數法
      • (5)社會工程學
      • (6)逆向工程學
      • (7)彩虹表攻擊
      • (8)確定性分析
      • (9)差分密碼分析
      • (10)線性密碼分析
      • (11)差分線性分析
      • (12)密鑰相攻擊
  • 導圖

備注

2021/12/3 星期五
多門考試和課程設計接踵而至,我只能選擇用兩天時間突擊密碼學了,邊學邊記錄一下

一、基本知識

1.術語

  • 明文:沒有經過加密,任何人都能看得懂的文字
  • 密文:經過加密后的文字
  • 密鑰:明文與密文轉換的引數

2.保密原則

是現代密碼學和古典密碼學的重要區別

  • 現代密碼原則:密碼系統的安全性不依賴于演算法的保密而依賴于密鑰的安全
  • 古典密碼原則:密碼系統的安全性依賴于演算法的保密和密鑰的安全

3.安全性

絕對安全(無條件安全):
指的是攻擊者在擁有無限的計算資源的條件下也無法被攻破的秘密體制,對于一個加密演算法,如果明文空間的每種概率分布,其中的每個明文和每個密文都滿足,不論特定密文是否出現,特定明文出現概率都相同(即:P(M=m|C=c) = P(M=m))
計算安全:
攻擊在有限計算資源的條件下很難攻破密碼體制,將攻擊者的攻擊視作一個演算法,要求演算法的時間復雜度O(n^c)足夠大,無法遍歷密鑰(n為密鑰的二進制位數,c為常數)

當前默認加密演算法至少需要能夠抵抗選擇明文攻擊

4.安全目標

破壞性從上到下依次降低

  • 攻擊者不能獲得密鑰
  • 攻擊者不能獲得全部明文
  • 攻擊者不能獲得明文的任何部分
  • 攻擊者不能獲得明文的任何函式

5.加密原則

  • 擴散(diffusion):明文及密鑰的影響盡可能散布到多密文中(置換)
  • 混淆(confusion):使明文和密文間的統計相關性最小化(代換)

6.數學基礎

包括數論、概率論、近世代數、代數幾何、計算復雜性

7.數學難題

多項式求解、離散對數、大整數分解、背包問題、二次剩余、模n平方根、Diffie-Hellman

二、密碼編碼

1.古典密碼

(1)置換密碼

明文中的字符保持不變,通過改變字符順序進行加密

  • 柵欄密碼:
    加密:將明文分成k組,取每組的第i個字符連成密文段i,再將密文段全部相連形成密文
    解密:將密文分成k組,取每組的第i個字符連成明文段i,再將明文段全部相連形成明文
    密鑰:k

(2)代換密碼

明文中的字符順序保持不變,通過將字符替換成其他字符進行加密

單字符代換:

單表代換:

  • 加法密碼:
    (也叫移位密碼特例為凱撒密碼)
    加密:E(x)=(x+k)%m
    解密:D(x)=(x-k)%m
    密鑰:k
  • 乘法密碼:
    加密:E(x)=(kx)%m
    解密:D(x)=(k^-1
    x)%m
    密鑰:k
  • 仿射密碼:
    加密:E(x)=(a*x+b)%m
    解密:D(x)=(x-b)/a%m
    密鑰:(a,b)
  • 棋盤密碼:
    編制密碼表:繪制5*5的方格,將i和j放入同一個格子,給每一個格子一個坐標(x,y)
    加密:將明文依次替換為坐標對
    解密:將密文在密碼表中找到坐標對應的值

多表代換:

  • 維吉尼亞密碼:
    加密:E(x)=(x[i]+k[i%n])%m
    解密:D(x)=(x[i]-k[i%n])%m
    密鑰:k[n]

多字符代換

  • 普萊費爾密碼:
    編制密碼表:
    1.繪制5*5方格
    2.選取密鑰(任意字符組合)
    3.將密鑰依次填入方格(重復的字符只保留第一次出現的位置,字符I和L視作同一個字符)
    4.其余字符按順序填入方格
    5.整理明文,每兩個字符組成一對,兩相同字符相連時在中間插入X
    加密:
    1.明文對在同一行時,密文為其右側的字符
    2.明文對在同一列時,密文為其下方的字符
    3.明文對在不同行列時,密文為明文對所在正方形的另外兩個角點上的字符
    解密:
    1.密文對在同一行時,明文為其右側的字符
    2.密文對在同一列時,明文為其上方的字符
    3.密文對在不同行列時,明文為密文對所在正方形的另外兩個角點上的字符

一次一密

每次加密都使用全新的密鑰,每個密鑰僅使用一次,是理論上絕對安全的加密方式

  • 費納姆密碼:

2.現代密碼

(1)對稱密碼(單鑰密碼)

優點:加密快,密鑰短,歷史悠久
缺點:密鑰管理困難,不能進行身份認證和數字簽名
序列密碼(流密碼):
給定種子通過演算法生成密鑰流,再將明文位或字符分別與密鑰流進行模加法運算
基礎:有限狀態自動機,二元序列偽隨機,線性反饋移位暫存器,m序列

  • A5-1:
    應用:蜂窩電話手機到基站間的通信加密,用戶sim卡中有不發生改變的基本密鑰K1,在產生會話時基站生成64位隨機密鑰k,并使用k1加密,發送給用戶,用戶使用k1解密后得到隨機密鑰k,隨機密鑰僅一次通話內有效,
  • RC4:
    演算法:
    1.初始置換
    (1)線性填充256位長的s表s[i]=i
    (2)回圈使用種子填充256位長的k表k[i]=seed[i%n]
    (3)用k表對s表進行初始置換,j=(j+s[i]+k[i])%256(j初始為0),交換s[i]和s[j]的位置
    2.密鑰流生成
    (1)i,j初始為零
    (2)回圈加密每一位,i=(i+1)%256,j=(j+s[j])%256,交換s[i]和s[j],t=(s[i]+s[j])%256
    (3)s[t]就是這一位的位密鑰,與該位進行異或得到位密文

(2)分組密碼(塊密碼)

將明文劃分為若干組(一般64位一組),再將各分組加密
基礎:SP網路,Feistel結構、SPN結構

  • DES:
    衍生:3DES
    演算法:
    1.輸入64位的明文資料
    2.初始置換IP
    3.在輪函式F中進行16輪迭代變換
    4.逆置換IP^-1
    5.得到64位密文資料
    輪函式:
    先將64位資料分成左右兩部分(L,R),每輪計算時,記錄R成為下一輪的L,同時讓R經過擴展表(E盒)、代換表(S盒)、置換表(P盒)的變換再與L進行異或成為下一輪的R
    密鑰生成演算法:
    1.初始置換(PC-1):根據置換表去除校驗位并對剩余字符進行置換
    2.輪迭代:將初始置換得到的56位字符分左右兩部分(C,D),C,D分別向左回圈移動移位得到下一輪的(C,D),并將本輪(C,D)輸入置換表PC-2得到本輪的密鑰K(48位)

  • AES:
    衍生:AES-128、AES-192、AES-256
    演算法:
    1.白化(輪密鑰加)
    2.進行輪迭代(128迭代10輪、192迭代12輪、256迭代14輪)[位元組代換、行移位、列混淆、輪密鑰加]
    3.最后一輪迭代[位元組代換、行移位、輪密鑰加]
    設計原理:
    AES將一個位元組視作一個系數為各位的七次多項式,而它可以通過在二元域上模一個不可約的八次多項式m(x)得到,選取m(x)為下x8 +x4 + x3+x+1并定義加法為兩位元組逐位異或,乘法為多項式在模m(x)下相乘的結果,同理,也可以將一個字視作一個系數為各位的三次多項式,m(x)為x4+1,

  • SM4:
    國密演算法

(2)非對稱密碼(雙鑰密碼)

優點:密鑰管理簡單,能夠進行身份認證和數字簽名
缺點:運算慢,密鑰長,發展較短

  • RSA:
    演算法:
    1.密鑰生成
    取不相等的兩大素數p,q,令N=p*q,N的lambda函式為lcm(p-1,q-1),在1到lambdaN之間任取一與lambdaN互素的整數e,再求e在模lambda N下的逆元d,(e,N)為公鑰(d,N)為私鑰
    2.加密演算法
    密文c=E(m)=m^e(modN)
    3.解密演算法
    明文m=D?=c^d(modN)
    另:計算ab(modN)的方法是二元法,先將b寫成二進制形式,然后分離每一位(最高位為1號其他位依次編號),令c[0]=1,c[i]=c[i-1]2*m(b[i]-1)
  • ElGamal:
    演算法:
    1.密鑰生成
    取一大素數p,求其生成元g,找一亂數做私鑰x,通過g^x%p求公鑰y
    2.加密演算法
    密文有兩部分,先選一個亂數k,求出c1=gk%p,c2=m*yk%p,密文為(c1,c2)
    3.解密演算法
    直接計算m=c2*(c1x)-1即為明文
    另:該演算法是不確定性的,同一個密文使用不同的亂數k加密得到的密文不同(同一個密文最多有p-1個明文),所以k必須保密且僅使用一次,如果使用相同k被攻擊者得到,則可通過y^k%p得到私鑰
  • ECC:
    演算法:

(3)單向函式

也叫散列函式、雜湊函式或哈希函式,將任意長度的資訊映射為較短的、固定長度的值,一般用于訊息摘要

  • MD5:
  • SHA:
    衍生:SHA-1、SHA-128、SHA-256

三、數字簽名與密鑰管理

1.數字簽名

  • RSA:
  • 簽名演算法:
    與加密演算法一致,但是使用私鑰進行加密
    驗證演算法:
    與解密演算法一致,但是使用公鑰進行解密
  • ElGamal:
    簽名演算法:
    1.任選一個與大素數p的歐拉函式f互素的整數k
    2.計算s1=gkmodp,s2=(m-x*s1)*k-1modf
    3.(s1,s2)為簽名
    驗證演算法:
    簽名真實的等價條件為ys1*s1s2=gm(mod p)

2.密鑰管理

(1)密鑰生成

(2)密鑰分發

密鑰協商(Diffie-Hellman):

中心分發(KDC):

四、密碼分析

1.敵手模型

敵手一般假定在發送方與接收方之間,能夠截獲密文并企圖恢復明文

2.攻擊場景

攻擊性從上到下依次提高

唯密文攻擊: 攻擊者只能得到若干條同一密鑰加密的密文
已知明文攻擊: 攻擊者能拿到若干同一密鑰加密的明密文對
選擇明文攻擊: 攻擊者可以選擇一些明文并得到對應的密文
選擇密文攻擊: 攻擊者可以選擇一些密文并得到對應的明文

3.攻擊方式

(1)窮舉法

暴力窮舉: 窮舉全部密鑰
字典攻擊: 用所有可能的密鑰組成一個字典進行窮舉

(2)頻率分析

利用明文已知的統計規律進行破譯
單字符:
最常出現依次為E、T、A、O、I、N、S、H、R、D、L(有效攻擊單字符替換和置換密碼)
雙字符:
最常出現依次為TH、HE、IN、ER、AN、RE、DE、ON、ES、ST、EN、AT、TO、NT、HA、ND(有效攻擊多字符替換和置換密碼)
三字符:
最常出現依次為THE、ING、AND、HER、ERE、ENT、THA、NTH、WAS、ETH、FOR、DTH(有效攻擊多字符替換和置換密碼)

(3)長度測驗法

兩個相同的明文段加密成相同的密文段,則者兩個明文段之間的距離大概率是密鑰長度的整數倍,當有多個相同段時,密鑰長度大概率為段間距的最大公因數的因數,再利用重合指數法就可以驗證密鑰長度

(4)重合指數法

當猜對密鑰時,計算的概率值約為0.065,否則約為0.038

(5)社會工程學

通過對知道演算法的人的滲透獲得演算法

(6)逆向工程學

對含有加密演算法的程式進行逆向工程獲取其演算法

(7)彩虹表攻擊

預先計算常見的加密值形成資料庫,破解時查表得到明文

(8)確定性分析

利用已知兩和數學關系進行破譯

(9)差分密碼分析

通過分析兩個明文差值對密文的影響推斷密鑰,利用拉格朗日公式的思想,推斷加密演算法的等價變換破譯密碼

(10)線性密碼分析

尋找給定密碼的演算法的近似表達破譯密碼

(11)差分線性分析

將差分密碼分析和線性密碼分析組合破譯

(12)密鑰相攻擊

根據有某種關系的明密文對進行分析攻擊

導圖

密碼學

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

標籤:其他

上一篇:CobaltStrike使用-第六篇(域內滲透&橫向擴展)

下一篇:ollydbg除錯使用

標籤雲
其他(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