Wednesday, January 04, 2006

 

DES - sumar

  • cifru bloc iterat
    eKi : { 0 , 1 }Ki x { 0 , 1}l
    → { 0 , 1}l este functia de tur (runda, iteratie); cheia de runda Ki se obtine din cheia K; eki este bijectiva; 1 ≦ i ≦ t, t este numarul de tururi
  • cifru Feistel
    este un cifru bloc iterat care cripteaza un mesaj in clar de lungime 2l, in biti, (L0 , R0) in mesajul cifrat (Lt , Rt) pentru care functia de tur este eKi cu (Li , Ri) = eKi (Li-1 , Ri-1) unde:
    Li = Ri-1
    Ri = Li-1 ⊕ f(Ri-1 , Ki)
  • DES
    • este un cifru Feistel pentru care l = 32, k=56, t=16
    • cheia K are o lungime de 64 biti la care pozitiile 8, 16, 24 .., 64 pot fi folosite pentru paritate; cheia de runda Ki are o lungime de 48 biti
    • Li = Ri-1
      Ri = Li-1 ⊕ f(Ri-1 , Ki)
      unde f(Ri-1 , Ki) = P ( S ( E ( Ri-1) ⊕ Ki ) ) cu E o permutare,fixata, de expansiune de la 32 la 48 biti, P o lata permutare fixata pe 32 biti
    • algoritm generare chei
      • din cheia K se elimina bitii de paritate; se aplica permutarea PC1
        5749413325179
        1585042342618
        1025951433527
        1911360524436
        63554739312315
        7625446383022
        1466153453729
        211352820124
        rezultand doua secvente de 28 biti ( C0 , D0)
      • pentru fiecare tur Ki rezulta prin aplicarea permutarii PC2
        1417112415
        3281562110
        2319124268
        1672720132
        415231374755
        304051453348
        444939563453
        464250362932
        asupra lui ( Ci , Di) unde Ci si Di se obtin din Ci-1 , Di-1 prin alunecare stanga cu o pozitie pentru tururile 1,2, 9, 16 sau cu doua pozitii pentru celelate tururi
    • algoritm criptare
      • blocului de text in clar i se aplica permutarea IC
        585042342618102
        605244362820124
        625446383022146
        645648403224168
        57494133251791
        595143352719113
        615345372921135
        635547393123157
        rezultand secventele de 32 de biti ( L0 , R0 )
      • pentru fiecare tur i se calculeaza Li = Ri-1 si Ri = Li-1 ⊕ f(Ri-1 , Ki) unde f(Ri-1 , Ki) se caluleza astfel:
        • se expandeaza Ri-1 de la 32 biti la 48 biti, E(Ri-1) unde E este data de
          3212345
          456789
          8910111213
          121314151617
          161718192021
          202122232425
          242526272829
          28293031321
        • se face un XOR intre E(Ri-1) si Ki rezultand 8 secvente de 6 biti ( B1 , ..., B8)
        • fiecarei secvente Bj i se aplica maparea Sj; pentru Bj = b1b2 .. b6 se calculeaza randul r = 2 b1 + b6 si coloana c = b2b3b4b5; cu r si c astfel calculati se obtin maparile conform cu tabelele
          S1
          r/c0123456789101112131415
          01441312151183106125907
          10157414213110612119538
          24114813621115129731050
          31512824917511314100613

          S2
          r/c0123456789101112131415
          01518146113497213120510
          13134715281412011069115
          20147111041315812693215
          31381013154211671205149

          S3
          r/c0123456789101112131415
          01009146315511312711428
          11370934610285141211151
          21364981530111212510147
          31101306987415143115212

          S4
          r/c0123456789101112131415
          07131430691012851112415
          11381156150347212110149
          21069012117131513145284
          33150610113894511127214

          S5
          r/c0123456789101112131415
          02124171011685315130149
          11411212471315015103986
          24211110137815912563014
          31181271142136150910453

          S6
          r/c0123456789101112131415
          01211015926801334147511
          11015427129561131401138
          29141552812370410113116
          34321295151011141760813

          S7
          r/c0123456789101112131415
          04112141508133129751061
          11301174911014351221586
          21411131237141015680592
          36111381410795015142312

          S8
          r/c0123456789101112131415
          01328461511110931450127
          11151381037412561101492
          27114191214206101315358
          32114741081315129035611
        • secventei obtinute prin concatenarea celor 8 secvente de 4 biti Sj( Bj ) i se aplica permutarea P
          1672021
          29122817
          1152326
          5183110
          282414
          322739
          1913306
          2211425
      • secventei de 64 biti ( R16 , L16) i se aplica inversa permutarii IC
    • algoritm decriptarare
      se foloseste algoritmul de criptare cu cheile in ordine inversa
FIPS-46-3

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?