




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、信息安全機制,第2章 信息安全機制,信息安全機制,本章學習目標,通過本章學習,讀者應該掌握以下內容: 對稱加密機制及典型算法 非對稱加密機制及算法 數字簽名的原理 數據完整性驗證的原理及典型算法,信息安全機制,2.1 加密機制 2.1.1 密碼學基礎知識 一個密碼體制被定義為一對數據變換,其中一個變換應用于我們稱之為明文的數據項,變換后產生的相應數據項稱為密文;而另一個變換應用于密文,變換后的結果為明文。這兩個變換分別稱為加密變換(Encryption)和解密變換(Decryption)。加密變換將明文和一個稱為加密密鑰的獨立數據值作為輸入,輸出密文;解密變換將密文和一個稱為解密密鑰的數據值作
2、為輸入,信息安全機制,加密和解密,加密 解密 M:明文 C:密文 KE:加密密鑰 KD:解密密鑰,信息安全機制,2.1.2 對稱加密算法 加密:Ek(M)=C 解密:Dk(C)=M 序列密碼算法(stream cipher) 分組密碼算法(block cipher) 加密過程主要是重復使用混亂和擴散兩種技術,混亂(confusion)是改變信息塊使輸出位和輸入位無明顯的統計關系。擴散(diffusion)是將明文位和密鑰的效應傳播到密文的其它位。 對稱密碼算法有很多種 :DES、triple DES、IDEA、RC2、RC4、RC5、RC6、GOST、FEAL、LOKI,信息安全機制,2.1.
3、3 DES算法,首先把明文分成若干個64-bit的分組,算法以一個分組作為輸入,通過一個初始置換(IP)將明文分組分成左半部分(L0)和右半部分(R0),各為32-bit。然后進行16輪完全相同的運算,這些運算我們稱為函數f,在運算過程中數據與密鑰相結合。經過16輪運算后,左、右兩部分合在一起經過一個末轉換(初始轉換的逆置換IP-1),輸出一個64-bit的密文分組,1、算法描述,信息安全機制,密鑰位移位,從密鑰的56位中選出48位。通過一個擴展置換將數據的左半部分擴展成48位,并通過一個異或操作與48位密鑰結合,通過8個S盒(substitution box)將這48位替代成新的32位,再依
4、照P-盒置換一次。以上四步構成復雜函數f(圖中虛線框里的部分)。然后通過另一個異或運算,將復雜函數f的輸出與左半部分結合成為新的右半部分,每一輪的運算過程,信息安全機制,密鑰通常表示為64-bit,但每個第8位用作奇偶校驗,實際的密鑰長度為56-bit。在DES的每一輪運算中,從56-bit密鑰產生出不同的48-bit的子密鑰(K1,K2K16)。首先,56-bit密鑰分成兩部分(以C、D分別表示這兩部分),每部分28位,然后每部分分別循環左移1位或2位(從第1輪到第16輪,相應左移位數分別為:1、1、2、2、2、2、2、2、1、2、2、2、2、2、2、1)。再將生成的56-bit組經過一個壓
5、縮轉換(compression permutation),舍掉其中的某8個位并按一定方式改變位的位置,生成一個48-bit的子密鑰Ki,每一輪中的子密鑰的生成,信息安全機制,48-bit組被分成8個6-bit組,每一個6-bit組作為一個S盒的輸入,輸出為一個4-bit組。每個S-盒是一個4行16列的表,表中的每一項都是一個4-bit的數。S盒的6-bit的輸入確定其輸出為表中的哪一個項,其方式是:6-bit數的首、末兩位數決定輸出項所在的行;中間的四位決定輸出項所在的列。例如:第6個S盒如表2-1所示,假設第6個S-盒的輸入為110101,則輸出為第3行第10列的項(行或列的記數從0開始),
6、即輸出為4-bit組0001,S-盒置換,信息安全機制,三重DES 如上所言,DES一個致命的缺陷就是密鑰長度短,并且對于當前的計算能力,56位的密鑰長度已經抗不住窮舉攻擊,而DES又不支持變長密鑰。但算法可以一次使用多個密鑰,從而等同于更長的密鑰。三重DES算法表示為: C=EK3(DK2(EK1(M) 通常取K3=K1,則上式變為: C=EK1(DK2(EK1(M,信息安全機制,2.1.4 RC5算法 RC5是Ron Revist發明的。RSA實驗室對64bit分組的RC5算法進行了很長時間的分析,結果表明對5輪的RC5,差分攻擊需要264個明文;對10輪需要245個明文;對15輪需要26
7、8個明文,而這里最多只可能有264個明文,所以對15輪以上的RC5的攻擊是失敗的。Rivest推薦至少使用12輪。 RC5是具有參數變量的分組密碼算法,其中可變的參量為:分組的大小、密鑰的大小和加密的輪次。該算法主要使用了三種運算:異或、加、循環,信息安全機制,RC5的分組長度是可變的,下面我們將采用64bit的分組來描述算法。加密需要使用2r+2(其中r表示加密的輪次)個與密鑰相關的32bit字,分別表示為S0、S1、S2S2r+1。創建這個與密鑰相關的數組的運算如下:首先將密鑰的字節拷貝到32bit字的數組L,如果需要,最后一個字可以用零填充。然后利用線性同余發生器初始化數組S,信息安全機
8、制,S0=P Si=(Si-1+Q) mod 232 (其中 i=1 to 2(r+1)-1,P=0 xb7e15163,Q=0 x9e3779b9) 最后將L與S混合: 初始化: i=j=0 A=B=0 然后做3n次循環:(其中c為密鑰所占32bit字數目,亦即數組L的長度,n為2(r+1)和c中的最大值)。 A=Si=(Si+A+B)3 B=Lj=(Lj+A+B)(A+B) i=(i+1) mod 2(r+1) j=(j+1) mod c,信息安全機制,加密過程: 首先將明文分組(64bit)分成兩個32位字A和B(假設字節進入字的順序為第一個字節進行寄存器的低位置),然后進行如下的運算:
9、 A=A+S0 B=B+S1 for(i=1;i=r;i+) A=(AB)B)+S2i; B=(BA)A)+S2i+1; 輸出的A、B為密文,信息安全機制,解密時,把密文分成A和B,然后進行如下運算: for(i=r;r=1;r-) B=(B-S2i+1)A) A; A=(A-S2i)B) B; B=B-S1 A=A-S0 此時輸出的A、B為解密后得到的明文,信息安全機制,2.1.5 非對稱加密體制,公開密鑰體制把信息的加密密鑰和解密密鑰分離,通信的每一方都擁有這樣的一對密鑰。其中加密密鑰可以像電話號碼一樣對外公開,由發送方用來加密要發送的原始數據;解密密鑰則由接收方秘密保存,作為解密時的私用
10、密鑰。公開密鑰加密算法的核心是一種特殊的數學函數單向陷門函數(trap-door one way function)。即該函數從一個方向求值是容易的,但其逆變換卻是極其困難的,因此利用公開的加密密鑰只能作正向變換,而逆變換只有依賴于私用的解密密鑰這一“陷門”才能實現,信息安全機制,公開密鑰體制最大的優點就是不需要對密鑰通信進行保密,所需傳輸的只有公開密鑰。這種密鑰體制還可以用于數字簽名,即信息的接收者能夠驗證發送者的身份,而發送者在發送已簽名的信息后不能否認。公開密鑰體制的缺陷在于其加密和解密的運算時間比較長,這在一定程度上限制了它的應用范圍。公開密鑰體制在理論上被認為是一種比較理想的的計算密
11、碼的方法,但現在真正實用的公開密鑰算法還不是很多,目前公認比較安全的要算RSA算法及其變種Rabin算法。算法表示為: Ek1(M)=C Dk2(C)=M Dk2(Ek1(M)=M (其中k1和k2為一對密鑰中的私有密鑰和公開密鑰,信息安全機制,2.1.6 RSA算法,RSA算法的思路如下:為了產生兩個密鑰,先取兩個大素數,p和q。為了獲得最大程度的安全性,兩數的長度一樣。計算乘積 n=p*q,然后隨機選取加密密鑰e,使e和(p-1)*(q-1)互素。最后用歐幾里得(Euclidean)擴展算法計算解密密鑰d,d滿足ed1 mod (p-1)(q-1),即de-1 mod (p-1)(q-1)
12、。則e和n為公開密鑰,d是私人密鑰。兩個大數p和q 應該立即丟棄,不讓任何人知道。一般選擇公開密鑰e比私人密鑰 d小。最常選用的e值有三個3,17,65537,信息安全機制,加密消息時,首先將消息分成比n小的數據分組(采用二進制數,選到小于n的2的最大次冪),設mi表示消息分組,ci表示加密后的密文,它與mi具有相同的長度。 加密過程:ci=mie(mod n) 解密過程:mi=cid(mod n,信息安全機制,2.1.7 密鑰與密碼破譯方法,1、密鑰的窮盡搜索 破譯密文最簡單的方法,就是嘗試所有可能的鑰匙組合。 2、密碼分析 在不知道鑰匙的情況下,利用數學方法破譯密文或找到秘密鑰匙的方法,稱
13、為密碼分析。密碼分析有兩個基本目標:利用密文發現明文,利用密文發現鑰匙。 3、其它密碼破譯方法,信息安全機制,2.2 數據完整性機制 密碼學除了為數據提供保密方法以外,還可以用于其他的作用: 鑒別(authentication):消息的接收者可以確定消息的來源,攻擊者不可能偽裝成他人。 抗抵賴(nonrepudiation):發送者事后不能否認自己已發送的消息。 完整性(integrity):消息的接收者能夠驗證消息在傳送過程中是否被修改;攻擊者不可能用假消息來代替合法的消息,信息安全機制,2.2.1 數據完整性驗證,消息的發送者用要發送的消息和一定的算法生成一個附件,并將附件與消息一起發送出
14、去;消息的接收者收到消息和附件后,用同樣的算法與接收到的消息生成一個新的附件;把新的附件與接收到的附件相比較,如果相同,則說明收到的消息是正確的,否則說明消息在傳送中出現了錯誤,信息安全機制,2.2.2 單向散列函數 單向散列函數(one-way hash function),也叫壓縮函數、收縮函數,它是現代密碼學的中心,是許多協議的另一個結構模塊。散列函數長期以來一直在計算機科學中使用,散列函數是把可變長度的輸入串(叫做預映射,pre-image)轉換成固定長度的輸出串(叫做散列值)的一種函數。 利用單向散列函數生成消息的指紋可以分成兩種情況。一種是不帶密鑰的單向散列函數,這種情況下,任何人
15、都能驗證消息的散列值;另一種是帶密鑰的散列函數,散列值是預映射和密鑰的函數,這樣只有擁有密鑰的人才能驗證散列值。單向散列函數的算法實現有很多種,如Snefru算法、N-Hash算法、MD2算法、MD4算法、MD5算法,SHA-1算法等等,信息安全機制,MD5算法描述 MD5以512bit的分組來處理輸入文本,每一分組又劃分為16個32bit的子分組。算法的輸出由4個32bit分組組成,將它們級聯形成一個128bit的散列值。首先填充消息使用其長度恰好為一個比512的倍數僅小64bit的數。填充方法是在消息后面附一個1,然后填充上所需要的位數的0,然后在最后的64位上附上填充前消息的長度值。這樣
16、填充后,可使消息的長度恰好為512的整數倍,且保證不同消息在填充后不相同,2.2.3 消息摘要算法MD5,信息安全機制,2.3 數字簽名機制,數字簽名機制需要實現以下幾個目的: l 可信:消息的接收者通過簽名可以確信消息確實來自于聲明的發送者。 l 不可偽造:簽名應是獨一無二的,其它人無法假冒和偽造。 l 不可重用:簽名是消息的一部分,不能被挪用到其它的文件上。 l 不可抵賴:簽名者事后不能否認自己簽過的文件,信息安全機制,2.3.1 數字簽名的基本原理 數字簽名實際上是附加在數據單元上的一些數據或是對數據單元所作的密碼變換,這種數據或變換能使數據單元的接收者確認數據單元的來源和數據的完整性,并保護數據,防止被人(如接收者)偽造。 簽名機制的本質特征是該簽名只有通過簽名者的私有信息才能產生,也就是說,一個簽名者的簽名只能唯一地由他自己產生。當收發雙方發生爭議時,第三方(仲裁機構)就能夠根據消息上的數字簽名來裁定這條消息是否確實由發送方發出,從而實現抗抵賴服務。另外,數字簽名應是所發送數據的函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論