先聲明兩個基本概念
代換 或? 替換(substitution),用別的元素代替當前元素。des的s-box遵循這一設計。
abc-->def
置換(permutation),只改變元素的排列順序。des的p-box遵循這一設計。
abc-->bac
**本文并未介紹初始置換(Initial Permutation)和初始置換的逆置換。這兩個置換并不提供任何密碼學意義。
DES最核心的算法就是feistel結構的16輪加密 。
該結構以工作在IBM的德國密碼研究員Horst Feistel的名字命名。其中涉及輪函數(shù)F,和每一輪的子密鑰K。
明文數(shù)據(jù)分成左右各32bit,記為LE,RE。
feistel結構的可逆性:
F函數(shù)內部:
依次經(jīng)過:
-
擴展置換(Expansion Permutation):將輸入的32位數(shù)據(jù)擴展為48位。這個步驟的目的是引入更多的比特位,并增加數(shù)據(jù)的混淆性。
-
子密鑰混合(Key Mixing):將48位的擴展數(shù)據(jù)與輪密鑰進行異或運算。每一輪DES使用的子密鑰都是從主密鑰生成的。通過將擴展數(shù)據(jù)與輪密鑰混合,增加了密鑰的影響力,增強了密碼算法的安全性。
-
S盒替換(Substitution Box):8個不同的s盒(s1-s8),每個盒將6bit數(shù)據(jù)進行非線性替換,輸出4位bit數(shù)據(jù)。S盒的作用是混淆數(shù)據(jù),增加密碼算法的復雜性和非線性性。S盒是DES中唯一的非線性元件,也是算法強度核心。其設計準則考慮了對抗差分攻擊,線性攻擊。
**線性:F(x1 xor x2)=F(x1) xor F(x2),xor為異或。
**此處以s1為例,盒內每一行是對0-15的一種置換。
????????4.P盒置換(Permutation Box):對經(jīng)過S盒替換的數(shù)據(jù)進行固定的置換操作。這個步驟的目的是重新排列數(shù)據(jù)位,加強密碼算法的混淆性和擴散性。
Key Schedule
子密鑰K的生成方法:
標準的DES要求密鑰為64bit,但是每8位中最后一位為奇偶校驗位,不參與真正的加密。
pc--permutation choice,也是帶<壓縮屬性>的p-box
經(jīng)過pc1盒----舍棄奇偶校驗位(共8bit,剩下56bit)并置換。
記56bit的左28bit為C0,右28bit為D0。C0,D0兩部分獨立進行循環(huán)左移,左移的位數(shù)根據(jù)當前的加密輪次不同。
文章來源:http://www.zghlxwxcb.cn/news/detail-755915.html
合并為56bit再經(jīng)過pc2盒,壓縮置換(舍棄第9,18,22,25,35,38,43,54位),即可生成當前輪次的48bit子密鑰。文章來源地址http://www.zghlxwxcb.cn/news/detail-755915.html
到了這里,關于[密碼學]DES的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!