體制

分組密碼是將明文消息編碼表示后的數(shù)字序列劃分成長(zhǎng)為n的組,每個(gè)組(可稱(chēng)為長(zhǎng)度為n的矢量)分別在密鑰控制下變換成等長(zhǎng)的輸出數(shù)字序列。
其加密函數(shù)E:V_n × K → V_m。 其中V_n和V_m分別為n維和m維的矢量空間,K為密鑰空間。它與流密碼不同之處在于輸出的每一位數(shù)字不是只與相應(yīng)時(shí)刻輸入的明文數(shù)字有關(guān),而是與一組長(zhǎng)為n的明文數(shù)字有關(guān)。這種密碼實(shí)質(zhì)上是字長(zhǎng)為n的數(shù)字序列的代換密碼。

混淆和擴(kuò)散

  1. 混淆(Confusion) 是一種加密操作,使得密鑰與密文之間的關(guān)系變得模糊(通過(guò)代換器來(lái)完成,即S盒)
  2. 擴(kuò)散(Diffusion) 是一種加密操作,使得一個(gè)明文符號(hào)能夠分散為多個(gè)密文符號(hào),其目的是隱藏明文字符出現(xiàn)次數(shù)的統(tǒng)計(jì)概率。

Feistel密碼結(jié)構(gòu)

Feistel提出利用乘積密碼可獲得簡(jiǎn)單的代換密碼,乘積密碼指順序地執(zhí)行兩個(gè)或多個(gè)基本密碼系統(tǒng),使得最后的密碼強(qiáng)度高于每個(gè)基本密碼系統(tǒng)產(chǎn)生的結(jié)果。其思想實(shí)際上是Shannon提出的利用乘積密碼實(shí)現(xiàn)混淆和擴(kuò)散思想的具體應(yīng)用。

Feistel加密結(jié)構(gòu)

加密算法的輸入是分組長(zhǎng)為2w的明文和一個(gè)密鑰k,將每組明文分成左右兩半L和R,在進(jìn)行完n輪迭代后,左右兩半再合并到一起產(chǎn)生密文分組。第i輪迭代的前一輪輸出的函數(shù):

L_i = R_{i-1}
R_i = L_{i-1} xor F(R_{i-1}, k_i)

Feistel解密結(jié)構(gòu)

解密過(guò)程本質(zhì)上和加密過(guò)程是一樣的,算法使用密文作為輸入,但使用子密鑰K_i的次序與加密過(guò)程相反。這一特征保證了解密和加密可采用同一算法。

DES算法描述

明文分組長(zhǎng)度為64比特,密鑰長(zhǎng)度為56比特。在加密過(guò)程中將有三個(gè)階段:

  1. 一個(gè)初始置換IP,用于重新排列明文分組的64比特?cái)?shù)據(jù)。
  2. 進(jìn)行具有相同功能的16輪變換,每輪變換中都有置換和代換運(yùn)算,在第16輪變換的輸出后,將結(jié)果分成左右兩半,并交換次序。
  3. 最后再經(jīng)過(guò)一個(gè)逆初始置換逆IP從而產(chǎn)生64比特密文。

這里需要注意的是,無(wú)論是初始置換還是最終的逆初始置換,都不能增減DES的安全性。其設(shè)計(jì)的初衷并不被人所知,但是看起來(lái)其目的是將明文重新排列,使之適應(yīng)8-bit寄存器。其映射規(guī)則如下:矩陣為8×8矩陣,自左至右,自上至下依次排位,矩陣中的某次位數(shù)目即為明文中該次位的比特值映射到buffer的偏移量。

f函數(shù)

f函數(shù)在DES的安全性中起到了至關(guān)重要的作用,f函數(shù)的作用是將上一輪的右半邊的結(jié)果,以及該輪所獲得的密鑰作為輸入數(shù)據(jù),輸出結(jié)果是通過(guò)異或操作來(lái)加密。

在f函數(shù)最開(kāi)始

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: