複習參考html
參考連接算法
site:www.wendangku.net 密碼學答案緩存
信息系統安全=設備安全+數據安全+內容安全+行爲安全安全
重合指數法對多表代換密碼算法的破解最有效。函數
一個加密系統至少由明文、密文、加密算法、解密算法和密鑰組成,其安全性是用密鑰決定的。加密
置換密碼又叫換位密碼,最多見的置換密碼有列置換和週期轉置換密碼.net
一個有6 個轉輪密碼機是一個週期長度爲26 的6 次方的多表代替密碼機械裝置。設計
密碼學歷史上第一個普遍應用於商用數據保密的密碼算法是DES。htm
DES密碼中全部的弱密鑰、半弱密鑰、四分之一弱密鑰和八分之一弱密鑰所有加起來,一共有256 個
安全性較差的密鑰對象
攻擊方法
統計分析攻擊
所謂統計分析攻擊就是指密碼分析者經過分析密文和明文的統計規律來破譯密碼。
數學分析攻擊
所謂數學分析攻擊是指密碼分析者針對加密算法的數學依據經過數學求解的方法來破譯密碼.
僅知密文攻擊
所謂僅知密文攻擊是指密碼分析者僅根據截獲的密文來破譯密碼。由於密碼分析者所能利用的數據資源僅爲密文,所以這是對密碼分析者最不利的狀況。
所謂已知明文攻擊是指密碼分析者根據已經知道的某些明文密文對來破譯密碼.
攻擊者老是能得到密文,並猜出部分明文
計算機程序文件加密特別容易受到這種攻擊
所謂選擇明文攻擊是指密碼分析者可以選擇明文並得到相應的密文。
對於這種形式的密碼分析,破譯者已知的東西只有兩樣:加密算法、待破譯的密文。
與選擇明文攻擊相對應,破譯者除了知道加密算法外,還包括他本身選定的密文和對應的、已解密的原文,即知道選擇的密文和對應的明文。
選擇文本攻擊是選擇明文攻擊與選擇密文攻擊的結合。破譯者已知的東西包括:加密算法、由密碼破譯者選擇的明文消息和它對應的密文,以及由密碼破譯者選擇的猜想性密文和它對應的已破譯的明文。
很明顯,惟密文攻擊是最困難的,由於分析者可供利用的信息最少。
採用混淆、擴散和乘積的方法來設計密碼
混淆:使密文和明文、密鑰之間的關係複雜化。
擴散:將每一位明文和密鑰的影響擴大到儘量多的密文位中。
置換(換位)
置換密碼經不起已知明文攻擊
代替(替換)
單表代替密碼: 只使用一個密文字母表,而且用密文字母表中的一個字母來代替明文字母表中的一 個字母。 凱撒密碼 仿射密碼 經不起窮舉攻擊 單表代替密碼可用統計分析攻破。
多表代替密碼: Vigenere密碼 , 一個明文字母有多種代替。
多名碼代替密碼
經得起統計分析是對近代密碼的基本要求!
分組密碼:明文、密文和密鑰的分組長度都是64位。
共有8個S盒
每一個S盒有6個輸入,4個輸出,是一種非線性壓縮變換。
設輸入爲b1 b2 b3 b4 b5 b6 ,則以b1b6組成的二進制數爲行號,b2b3b4b5組成的二進制數爲列號。 列交點處的數(二進制)爲輸出
P盒是置換盒,提供雪崩效應
在今天看來,DES算法已經再也不安全,其主要緣由是源於密鑰空間的限制,容易被窮舉攻破
DES的輪函數F是由三個部分:擴展置換、非線性代換和線性置換組成的。
總體特色
S盒變換 ByteSub(State)
①S盒變換是AES的惟一的非線性變換,是AES安全的關鍵。
②AES使用16個相同的S盒,DES使用8個不相同的S盒。
③AES的S盒有8位輸入8位輸出,DES的S盒有6位輸入4位輸出。
行移位是置換
行移位變換對狀態的行進行循環移位。
第 0行不移位,第1行移 C1字節,第2行移 C2字節,第3行移 C3字節。
列混合是代替
列混合變換把狀態的列視爲GF(28)上的多項式a(x),乘以一個固定的多項式c(x),並模 x4+1:
b(x)=a(x)c(x) mod x4+1
其中,c(x)=03x3+01x2+01x+02
可以抵抗目前全部的已知攻擊:
窮舉攻擊。
差分攻擊。
線性攻擊。
Square攻擊。
2、SMS4 密碼概況
①分組密碼:
數據分組長度=128位、密鑰長度=128位
數據處理單位:字節( 8位),字(32位)
②密碼算法結構:
基本輪函數加迭代
對合運算:解密算法與加密算法相同
非線性字節變換部件S盒:
四個S盒
8位輸入、8位輸出。
本質上, 8位的非線性置換。
以輸入的前半字節爲行號,後半字節爲列號,行列交叉點處的數據即爲輸出。
1.1977年DES頒佈。1981年美國針對DES的應用制定了四種基本工做模式:
電碼本模式(ECB):暴露明文的數據模式。
密文反饋連接模式(CBC):明密文連接:加密解密錯誤傳播無界
密文連接: 加密錯誤傳播無界,解密錯誤傳播有界
密碼反饋模式(CFB):錯誤傳播無界
輸出反饋模式(OFB):加解密都沒有錯誤傳播,但因無錯誤傳播而對密文的篡改難以檢測。
2.稱長度小於分組長度的數據塊爲短塊,必須採用合適的技術解決短塊加密問題。
短塊處理技術:
一、填充技術
二、密文挪用技術
三、序列加密
特性
分類
序列密碼結構可分爲驅動部分和組合部分兩個主要組成部分。
僅當鏈接多項式g(x)爲本原多項式時,其線性移位寄存器的輸出序列爲m序列。
設f(x)爲GF(2)上的多項式,使f(x)| x p-1的最小正整數p稱爲f(x)的週期。若是f(x)的次數爲n,且其週期爲2 ^n-1,則稱f(x)爲本原多項式。
已經證實,對於任意的正整數n,至少存在一個n次本原多項式。並且有有效的產生算法。
反饋移位寄存器輸出序列生成過程當中,反饋函數對輸出序列週期長度
起着決定性的做用,而移位寄存器對輸出的序列起着決定性的做用
門限發生器要求:LFSR的數目是奇數,確信全部的LFSR的長度互素,且
全部的反饋多項式都是本原的,這樣可達到最大週期。
RC4密碼與基於移位寄存器的序列密碼不一樣。
它是一種基於非線性數據表變換的序列密碼。
公開密鑰密碼的基本條件:
①E和 D互逆; 基本條件,保密條件
D(E(M))=M
② Ke ≠ Kd且由Ke 不能計算出 Kd ;安全條件
③E和 D都高效。 實用條件
④E(D(M))=M 保真條件
若是知足① ② ③可保密,若是知足② ③ ④可保真,若是4個條件都知足,可同時保密保真。
確保數據祕密性和真實性
加密
①隨機地選擇兩個大素數 p和 q,並且保密;
②計算n=pq,將 n公開;
③計算φ(n)=(p-1)(q-1),對φ(n)保密;
④隨機地選取一個正整數e,1<e<φ(n)且(e,φ(n))=1,將 e公開; //(e,F(n))最大公約數爲1
⑤根據 ed=1 mod φ(n),求出d,並對d保密;
⑥加密運算:C=M^e mod n
⑦解密運算:M=C^d mod n
(p-1)和(q-1)的最大公因子要小。
d不能過小,要足夠大
p和q要足夠大
p和q應爲強素數
e的選擇
隨機且含1多就安全,但加密速度慢。因而,有的學者建議取e=216+1=65537
RSA密碼創建在大合數分解的困難性之上。
ELGamal密碼創建在離散對數的困難性之上
公鑰密碼算法通常是創建在對一個特定的數學難題求解上,那麼RSA算法是基於
大整數因子分解困難性、ElGamal 算法是基於有限域乘法羣上離散對數的困難
離散對數問題:
①設p爲素數,則模p的剩餘構成有限域:
Fp={0,1,2,… ,p-1}
Fp 的非零元構成循環羣Fp
Fp ={1,2,… ,p-1}
={α,α2,α3,,αp-1},
則稱α爲Fp*的生成元或模 p 的本原元。
②求α的摸冪運算爲:
y =αx mod p,1≤x≤p-1,
準備:隨機地選擇一個大素數p,且要求p-1有大素數因子。再選擇一個模p的本原元α。將p和α公開。
⑴ 密鑰生成
用戶隨機地選擇一個整數d做爲本身的祕密的解密鑰,2≤d≤p-2 。
計算y=αd mod p,取y爲本身的公開的加密鑰。
由公開鑰y 計算祕密鑰d,必須求解離散對數,而這是極困難的。
(2) 加密
將明文消息M(0≤M≤p-1)加密成密文的過程以下:
①隨機地選取一個整數k,2≤k≤p-2。
②計算: U =y k mod p;
C1=αk mod p;
C2=UM mod p;
③取 C=(C1 ,C2)做爲密文。
⑶ 解密
將密文(C1 ,C2)解密的過程以下:
①計算V=C1 d mod p;
②計算M=C2 V -1 mod p。
橢圓曲線密碼已成爲除RSA密碼以外呼聲最高的公鑰密碼之一。
它密鑰短、簽名短,軟件實現規模小、硬件實現電路省電。
廣泛認爲,160位長的橢圓曲線密碼的安全性至關於1024位的RSA密碼,並且運算速度也較快。
設p是大於3的素數,且4a^3+27b^2 ≠0 mod p ,稱
y2 =x3 +ax+b ,a,b∈GF(p)
爲GF(p)上的橢圓曲線。
由橢圓曲線可獲得一個同餘方程:
y2 =x3 +ax+b mod p
其解爲一個二元組<x,y>,x,y∈GF(p),將此二元組描畫到橢圓曲線上便爲一個點,因而又稱其爲解點。
對於一個公鑰密碼,若是知足
E(D(M,Kd),Ke)=M,
則可確保數據的真實性。
真實性 保密性
通常方法:
簽名通訊協議: A ----M---- B
① A用本身的解密鑰 KdA對數據 M進行簽名:
SA =D(M,KdA)
②若是不須要保密,則 A直接將 SA 發送給用戶B。
③若是須要保密,則A查到B的公開的加密鑰KeB ,並用 KeB 對 SA 再加密,獲得密文C,
C=E(SA ,KeB)
④最後,A把 C發送給 B,並將 SA或 C留底。
B收到後,如果不保密通訊,則先查到A的公開加密鑰KeA ,而後用KeA 對簽名進行驗證:
E(SA,KeA)=E(D(M,KdA),KeA)=M
⑥如果保密通訊,則B先用本身的保密的解密鑰KdB 對C解密,而後再查到A的公開加密鑰KeA ,用KeA 對簽名進行驗證:
D(C,KdB)=D(E(SA,KeB),KdB)= SA
E(SA,KeA)=E(D(M,KdA),KeA)=M
若是可以恢復出正確的M,則說明SA是A的簽名,不然SA不是A的簽名。
合理設計明文的數據格式:
發方標識 收方標識 報文序號 時間 數據 糾錯碼
M=<A,B,I,T,DATA,CRC>
記 其中 H=<A,B,I,T> 。
因而,A以 <H,SIG(M,KdA)> 爲最終報文發給B,其中H爲明文形式。
分組:將輸入分爲L-1個大小爲b位的分組。
填充:若第L-1個分組不足b位,則將其填充爲b位。
附加:再附加上一個表示輸入的總長度分組。
共L個大小爲b位的分組。
因爲輸入中包含長度,因此攻擊者必須找出具備相同Hash值且長度相等的兩條報文,或者找出兩條長度不等但加入報文長度後Hash值相同的報文,從而增長了攻擊的難度。
目前大多數Hash函數均採用這種結構
主處理
主處理是SHA-1 HASH函數的核心。
每次處理一個512位的分組,循環次數爲填充後報文的分組數L
SHA-1的輸入爲長度小於264位的報文,輸出爲160位的報文摘要,該算法對輸入按512位進行分組,並以分組爲單位進行處理。
簡述SHA1的算法
(1)附加填充位;
(2)初始化連接變量; //初始化緩衝區
(3)以512 位的分組爲單位處理信息,其核心是一個包含4 個循環的模塊,每一個循環
由20 個步驟組成;
(4)每一循環均以當前正在處理512bitYq 和 160bit 的緩存值A,B,C,D 和E 爲輸入,
而後更新緩存內容;
(5)獲得最終散列值;
公鑰證書是PKI中最基礎的組成部分
公鑰證書是一種包含持證主體標識,持證主體公鑰等信息,並由可信任的簽證機構(CA)簽名的信息集合。公鑰證書主要用於確保公鑰及其與用戶綁定關係的安全。公鑰證書的持證主體能夠是人、設備、組織機構或其它主體。公鑰證書能以明文的形式進行存儲和分配。任何一個用戶只要知道簽證機構(CA)的公鑰,就能檢查對證書的簽名的合法性。若是檢查正確,那麼用戶就能夠相信那個證書所攜帶的公鑰是真實的,並且這個公鑰就是證書所標識的那個主體的合法的公鑰。從而確保用戶公鑰的完整性。
認證和數字簽名的區別:
①認證老是基於某種收發雙方共享的保密數據來認證被鑑別對象的真實性,而數字簽名中用於驗證簽名的數據是公開的。
②認證容許收發雙方互相驗證其真實性,不許許第三者驗證,而數字簽名容許收發雙方和第三者都能驗證。
③數字簽名具備發送方不能抵賴、接收方不能僞造和可以公開驗證解決糾紛,而認證則不必定具有
認證和加密的區別: 加密用以確保數據的保密性,而認證用以確保報文發送者和接收者的真實性以及報文的完整性。