网络安全笔记2——单钥密码体制
網絡安全筆記2——單鑰密碼體制
參考課程:中國大學MOOC《網絡安全》——北京航空航天大學
文章目錄
- 網絡安全筆記2——單鑰密碼體制
- 古典密碼
- 代換密碼
- 置換密碼
- 流密碼
- 分組密碼
- 概念
- Shannon的密碼設計思想
- 數據加密標準(DES)
- 運算步驟
- 注意事項
- DES算法詳細圖解
- S盒和P盒
- DES的安全性
- 高級加密標準(AES)
- 算法簡介
- AES加密算法詳解(圖文解釋)
- AES對應用密碼學的積極影響
- SM4密碼算法
- 基本運算
- 加密算法
- 解密算法
- SM4的安全性
- 分組密碼的工作模式分類
- 電碼本模式(ECB)
- 密碼分組鏈接模式(CBC)
- 密碼反饋模式(CFB)
- 輸出反饋模式(OFB)
- 計數器模式(CTR)
- 分組密碼總結
密碼體制的語法定義
- 明文消息空間M:可能的明文字母串集合
- 密文消息空間C:可能的密文字母串集合
- 加密密鑰空間K:可能的加密密鑰集合
- 解密密鑰空間K’:可能的解密密鑰集合
- 有效的密鑰生成算法ζ:N → K × K’
- 加密算法E:M × K → C
- 解密算法D:C × K’ → M
- 密鑰生成算法:?整數1l,ζ(1l)輸出長為l的密鑰對:(ke,kd) ∈ K × K’
- 加密/解密過程:?m ∈ M,c ∈ C
c = Eke(m)
m = Dkd(c) = Dkd(Eke(m))
密鑰體制的分類
- 若ke=kd,則加密算法稱為單鑰加密體制(對稱加密體制或私鑰加密體制)
- 若ke≠kd,則加密算法稱為雙鑰加密體制(非對稱加密體制或公鑰加密體制)
單鑰密碼按照加解密運算的特點分類
- 流密碼(Stream Cipher):數據逐比特加密,即數據流與密鑰流逐比特進行異或(XOR)運算;
- 分組密碼(Block Cipher):對數據分組進行處理。
古典密碼
古典密碼學有兩大基本方法
- 置換密碼:明文字母保持不變,但順序被打亂。
- 代換密碼:明文字母被替換,但順序保持不變。
代換密碼主要包括:單表代換(一個明文字母對應的密文字母是確定的);多表代換(一個明文字母可以表示為多個密文字母);弗納姆密碼:將每消息比特和相應的密鑰比特進行比特異或運算
代換密碼
單表代換
凱撒密碼(單表代換)
維吉尼亞密碼(多表代換)
- 引入密鑰的概念:根據密鑰來決定用哪一行的密表來進行代換。
- 使用詞組作為密鑰:詞組中每一個字母都作為索引來確定采用某個代換表,加密時需要循環使用代換表完成明文字母到密文字母的代換,最后所得到的密文字母序列即為密文。
弗納姆密碼(代換密碼)
弗納姆密碼(Vernam Cipher)的基本原理是:將明文與密鑰進行模2加法運算。如果M=C=K={0,1}*,則弗納姆密碼就是代換密碼的特例;如果密鑰串只使用一次,那么弗納姆密碼就是一次一密密碼。
弗納姆密碼也可以看成序列密碼(流密碼)的雛形。
置換密碼
置換密碼又稱換位密碼,是通過重新排列明文中元素的位置而不改變元素本身來實現加密的體制,它廣泛應用于現代分組密碼的構造。
置換就是簡單的換位,每次置換都可以用一個置換矩陣來表示,且都有一個與之對應的逆置換矩陣。
流密碼
原理
- 明文m=m1,m2,… …ml
- 偽隨機序列k=k1,k2,… …kl
- 密文ci = Eki(mi)
- 解密過程與加密過程相同且互逆
- 流密碼的安全性完全依賴于偽隨機數的強度
有限狀態自動機
- 若密鑰流是一個完全隨機的非周期序列,則我們可以用它來實現一次一密體制。
- 但實用中的流密碼大多采用有限存儲單元和確定性算法,可用有限狀態自動機(Finite State Automation)來描述。
- 因此,由有限狀態機產生的序列是偽隨機序列。
流密碼的分類
同步流密碼
自同步流密碼
祖沖之密碼
2011年,我國商用密碼算法——祖沖之密碼算法(ZUC)被批準成為新一代寬帶無線移動通信系統(LTE)國際標準,即4G的國際標準
我國向3GPP提交的算法標準包含如下內容:
- 祖沖之密碼算法(ZUC):用于產生密鑰序列
- 128-EEA3:基于ZUC的機密性算法
- 123-EIA3:基于ZUC的完整性保護算法
分組密碼
概念
分組密碼(Block Cipher)是將明文消息編碼表示后的數字序列x1,x2,…,xi,劃分成長為m的組x = (x0,x1,…,xm-1),各組(長為m的矢量)分別在密鑰k = (k0,k1,…,kt-1)控制下變換成輸出長度為n的數字序列y = (y0,y1,…,yn-1)(長為n的矢量),其加密函數E:Vm × K → Vn,Vm和Vn是m、n維矢量空間,K為密鑰空間。
設計要求
Shannon的密碼設計思想
- 擴散(diffusion)
將每位明文及密鑰數字的影響盡可能迅速地散布到較多個輸出的密文數字中,以便隱蔽明文數字的統計特性。產生擴散的最簡單方法是通過“置換(Permutation)”(比如:重新排列字符) - 混淆(confusion)
其目的在于使作用于明文的密鑰和密文之間的關系復雜化,使明文和密文之間,密文和密鑰之間的統計相關特性極小化,從而使統計分析攻擊不能奏效。通常的方法是“代換(Substitution)”
數據加密標準(DES)
DES:Data Encryption Standard
DES數據加密標準是美國于1977年在全球范圍內公開的第一個現代單鑰加密算法,DES是一種分組密碼,其輸入的明文長度為64bit,密鑰長度為56bit,輸出的密文長度為64bit。
運算步驟
注意事項
- DES算法的加密和解密均采用上述3個步驟。
- 初始置換過程實際上為香農信息論中的“擴散(Diffusion)”;迭代運算過程就是香農信息論中的“混淆(Confusion)”。
- 如果加密時使用的輪密鑰次序為k1,k2,…,k16,那么解密時使用的輪密鑰次序為k16,k15,…,k1。
- DES采用Feistel網絡結構。Feistel密碼結構是一種對稱結構,滿足對合性。采用此結構的密碼,其好處是加解密可以使用同一個芯片。
DES算法詳細圖解
S盒和P盒
- S盒的作用是混淆(Confusion),主要增加明文和密文之間的復雜度(包括非線性度等)。DES的安全性直接取決于S盒的安全性。
- P盒的作用是擴散(Diffusion),目的是讓明文和密鑰的影響迅速擴散到整個密文中。即一位的明文或密鑰的改變會影響到密文的多個比特。
- S盒和P盒的作用體現了Shannon的擴散和混淆的密碼設計思想。
DES的安全性
1997年1月28日,美國RSA公司懸賞10000美元破譯DES。美國程序員RockeVerser用140天破譯成功。從此宣布了DES時代的終結。
2008年SciEngines公司的Rivyera將破解DES的時間縮減到1天以內,并一直保持著暴力破解DES的記錄。
于是,有人提出了TripleDES算法。
DES、TripleDES算法(3DES)已經不再使用,需要提出新的、更安全的數據加密標準。
高級加密標準(AES)
AES: Advanced Encryption Standard
AES是美國聯邦政府采用的一種用來替代DES的加密標準,其于2001年發布并在2002年成為有效的加密標準,已經被多方分析且廣為使用。
Rijndael是分組長度和密鑰長度均可變的分組密碼,其密鑰長度和分組長度可以獨立指定為128/192/256bit(都是64的倍數)。
AES的密鑰長度為128/192/256bit, 但分組長度固定為128bit。
算法簡介
AES加密算法詳解(圖文解釋)
AES對應用密碼學的積極影響
- AES具有加長可變的密鑰128/192/256b及數據分組長度128b,為各種應用要求提供了大范圍可選的安全強度。
- 128/192/256b密鑰對應的加密輪數為10/12/14。
- 避免了多重加密(例如3DES)的使用,減少了實際應用中的密鑰數量,可以簡化安全協議和系統的設計。
- AES的廣泛使用將導致同樣強度的新型雜湊函數的出現。
SM4密碼算法
2006年,我國國家密碼管理局公布了無線局域網產品使用的SM4 (原名SMS4)密碼算法,這是我國第一次公布自己的商用密碼算法,旨在加密與保護靜態儲存和傳輸信道中的數據。
特點
- 分組密碼算法,分組長度和密鑰長度128bit, 32輪迭代
- 以字節為單位對數據進行處理
- 解密算法與加密算法結構相同,輪密鑰的使用順序相反
基本運算
- 模2加和循環移位計算
32bit異或計算(⊕)和32bit循環左移(<<<) - 置換運算: S盒(Sbox)
8bit輸入、8bit輸出的置換運算,起混淆作用 - 非線性變換τ
以字為單位的非線性變換,由4個并行的S盒構成 - 線性變換L
以字為單位的線性變換,起擴散作用 - 合成變換T
由τ和L復合而成,起擴散和混淆作用 - 輪函數F
非線性迭代結構,以字為單位進行加密運算
加密算法
解密算法
SM4的安全性
SM4廣泛應用于無線局域網產品。從算法設計上看,SM4在計算過程中增加了非線性變換,理論上能大大加強算法的安全性。
近年來,國內外密碼學者對SM4進行了充分的分析與實驗,致力于SM4的低復雜度實現、混合加密技術的商用化、SM4抗攻擊能力的增強等方面,這些研究成果對改進SM4密碼和設計新密碼都是有幫助的。
至今, 我國國家密碼管理局仍然支持使用SM4密碼
分組密碼的工作模式分類
參考:分組密碼的模式——ECB、CBC、CFB、OFB、CTR
分組密碼算法只能加密固定長度的分組,但需要加密的明文長度可能會超過分組密碼的分組長度,這就需要對分組密碼算法進行迭代,以便將一段很長的明文全部加密。迭代的方法就被稱為分組密碼的工作模式。
分組密碼的模式主要有以下5種:
- 電碼本模式(ECB:Electronic CodeBook mode)
- 密碼分組鏈接模式(CBC:Cipher Block Chaining mode)
- 密碼反饋模式(CFB:Cipher FeedBack mode)
- 輸出反饋模式(OFB:Output FeedBack mode)
- 計數器模式(CTR:CounTeR mode)
電碼本模式(ECB)
對連續排列的消息進行加密(或解密)的最直接方式就是對它們逐段加密(或解密)。在這種情況下,消息分段恰好是消息分組。由于這種模式類似于在電報密碼本中查找指定的碼字,因此稱為電碼本模式(ECB, Electric Code Book)
- ECB加密: Ci ← E(Pi),i=1,2,…,m
- ECB解密: Pi ← D(Ci),i=1,2,…,m
注意: ECB模式是確定性的加密模式,也就是說,如果在相同的密鑰作用下,將P1,P2,…Pm加密2次,那么輸出的密文分組也是相同的。如果明文消息是可猜測的,那么攻擊者就會用試湊法猜測出明文。
因此, 在大多數應用中, 建議不要使用ECB模式。
- 加密
- 解密
密碼分組鏈接模式(CBC)
密碼分組鏈接(CBC, Cipher Block Chaining)運行模式是分組密碼算法。使用CBC模式,輸出是密碼分組的一個序列,這些密碼分組鏈接在一起使得每個密碼分組不僅依賴于所對應的原文分組,而且依賴于所有以前的數據分組。
- 加密
- 解密
初始化向量
當加密第一個明文分組時,由于不存在“前一個密文分組”,因此需要事先準備一個長度為一個分組的比特序列來代替“前一個密文分組”,這個比特序列稱為初始化向量,通常縮寫為IV。
- 一般來說,每次加密時都會隨機產生一個不同的比特序列來作為初始化向量。
- 由于IV的隨機性,密文分組Ci都將被隨機化,因此CBC的密文輸出是隨機化的。
- 發送給接收者的密文消息應該包括IV。因此對于m個明文分組,CBC將輸出m+1個密文分組。
分組損壞和比特缺失的影響
- 假設CBC模式加密的密文分組中有一個分組損壞了,例如由于硬盤故障導致密文分組的值發生了改變等,這種情況下,只要密文分組的長度沒有發生變化,則解密時最多只會有2個分組收到數據損壞的影響。
- 假設CBC模式加密的密文分組中有一些比特缺失了,例如由于通信錯誤導致沒有收到某些比特等,那么此時即使缺失1比特,也會導致密文分組的長度發生變化,此后的分組發生錯位,這樣一來,缺失比特的位置之后的密文分組也就全部無法解密。
密碼反饋模式(CFB)
密碼反饋模式(CFB,Cipher Feedback Mode)的特點是:將CFB模式輸出的密碼分組反饋至移位寄存器,作為分組密碼算法的輸入,經分組加密算法加密后形成密鑰流分組,再與輸入明文分組相異或。
- 加密
- 解密
輸出反饋模式(OFB)
輸出反饋模式(OFB,Output Feedback Mode)的特點是:將分組密碼的輸出分組反饋回去,這些反饋分組經分組加密后輸出一個密鑰流分組,再將密鑰流分組與明文分組相異或。
- 加密
- 解密
OFB模式和CFB模式的區別僅僅在于密碼算法的輸入。
CFB模式中,密碼算法的輸入是前一個密文分組,也就是將密文分組反饋到密碼算法中,因此被稱為“密文反饋模式”;
OFB模式中,密碼算法的輸入是密碼算法的前一個輸出,也就是將輸出反饋給密碼算法,因此被稱為“輸出反饋模式”。
計數器模式(CTR)
計數器模式(CTR, Counter) 的特征是:將計數器從初始值開始計數,所得到的值饋送給分組密碼算法。隨著計數的增加,分組密碼算法輸出連續的密鑰流分組,再將密鑰流與明文分組相異或。
- 加密
- 解密
計數器的生成方法,前8個字節為nonce,這個值在每次加密時必須時不同的。后8個字節為分組序號,這個部分逐次累加。
OFB模式與CTR模式的對比
- 兩者都是流密碼。
- OFB模式是將加密的輸出反饋到輸入,CTR模式是將計數器的值用作輸入。
分組密碼總結
| DES | 64 bits | 56 bits | 16 | 密鑰太短且分組長度不適應64-bits總線 |
| AES | 128 bits | 128/192/256 bits | 10/12/14 | 安全 |
| SM4 | 128 bits | 128 bits | 32 | 安全 |
總結
以上是生活随笔為你收集整理的网络安全笔记2——单钥密码体制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机未解决难题
- 下一篇: 梦三国服务器每天维护几次,梦三国:都在抱