E2 | |
---|---|
Creator | NTT |
publicat | 1998 |
Dimensiunea cheii | 128 (192, 256) biți |
Dimensiunea blocului | 128 de biți |
Numărul de runde | 12 |
Tip de | Celula Feistel |
E2 ( English Efficient Encryption - effective encryption) - în criptografie , o familie de algoritmi criptografici bloc simetric bazați pe celula Feistel . E2 folosește un bloc de 128 de biți și chei de 128, 192, 256 de biți. Creat de NTT (Nippon Telegraph and Telephone) în 1998 și a fost prezentat la competiția AES . Succesorul acestui cifr este cifrul Camellia , care este, de asemenea, rezultatul muncii NTT (Nippon Telegraph and Telephone).
Cifrul E2, creat de NTT, a fost supus competiției AES împreună cu alte paisprezece cifruri. E2 a trecut cu succes testul de rezistență criptografică . Puterea cifrului E2 nu i-a afectat performanța. E2 a ocupat una dintre pozițiile de frunte atât în competiția pentru viteza de criptare/decriptare, cât și în viteza de generare a cheilor. În special, implementarea cifrului E2 ( compilatorul Borland ) a arătat o viteză de criptare/decriptare de 26 Mbps. Cu toate acestea, viteze de peste 25 Mbps au fost arătate și de alți cinci lideri. În timp ce scorurile de cifrare au variat în funcție de compilator, platformă și logică, tendința generală a rămas aceeași. Majoritatea autorilor care au scris despre concursul AES susțin că E2, împreună cu alte cifruri, au trecut cu succes prima rundă. Cu toate acestea, E2 nu a ajuns în finala primelor cinci cifre. NIST a remarcat că, în ciuda performanței bune la viteză și a absenței vulnerabilităților , cerințele pentru memoria nevolatilă sunt prea mari ( CAST-256 a suferit în mod similar ). [unu]
Lucrarea algoritmului de criptare poate fi împărțită în trei părți principale : funcția IT sau transformarea inițială (IT) , celula Feistel bazată pe funcția F, repetată de 12 ori și funcția FT sau convertorul final de date. ( transformarea finală în engleză (FT) ). Blocul algoritmului responsabil pentru planificarea cheilor ( ing. chei scheduling partea ), înainte de criptare, din cheia secretă K creează șaisprezece subchei {k1,..k16}, fiecare dintre acestea fiind un vector de biți de 128 de biți (un element de câmpul Galois (2 ^ 128 )). Prima transformare a textului simplu M este efectuată folosind funcția IT și două chei generate numerotate 13 și 14( și )
M'=IT(M, , )M` este împărțit în două blocuri de lungime egală , fiecare dintre elemente fiind un vector de biți de 64 de biți. Apoi se efectuează 12 cicluri de transformări în celula Feistel, în care blocul din dreapta la iterația curentă a ciclului este determinat prin adăugarea modulo doi a părții din stânga a iterației anterioare a ciclului și rezultatul funcției F, a cărei argumentele sunt partea dreaptă a iterației anterioare și tasta , iar blocului din stânga la pasul r al ciclului i se atribuie valoarea blocului din dreapta la pasul r-1. Ciclul se repetă de 12 ori, adică r se schimbă de la 1 la 12
= = .Etapa finală a criptării este execuția funcției FT. Rezultatul funcției FT, ale cărei argumente sunt concatenarea părților din dreapta și din stânga la ieșirea celei de-a 12-a iterații a celulei Feistel și cheile :
`Decriptarea are loc conform unei scheme similare cu criptarea. Lucrarea algoritmului de decriptare poate fi împărțită în trei părți principale: funcția IT (transformare inițială - informații inițiale în limba engleză (IT) ), 12 cicluri ale celulei Feistel cu funcție F și la sfârșit funcția FT ( transformare finală în engleză ). (FT) ). Blocul algoritmului responsabil pentru planificarea cheilor ( în engleză key shduling ) din cheia secretă imediat înainte de criptare generează 16 subchei { }, care sunt vectori de biți de dimensiunea 128 (un element al câmpului Galois GF(2^128)). În prima etapă se execută funcția IT, ale cărei argumente sunt criptograma C și două subchei
`Rezultatul funcției IT C` este împărțit în 2 părți egale de 64 de biți (jumătate de bloc): dreapta și stânga ( ). În continuare, sunt efectuate 12 cicluri ale celulei Feistel pe baza funcției F ( se modifică de la 12 la 1).
La sfârșitul ultimului ciclu al celulei Feistel, jumătățile blocului sunt concatenate ( ). Și la sfârșit - transformarea finală: se execută funcția FT , ale cărei argumente sunt rezultatul concatenării lui ` și două chei . Rezultatul executării funcției FT este textul simplu .
Pe baza cheii secrete ( { } are o dimensiune de jumătate de bloc, adică 64 de biți și este un argument pentru funcțiile de criptare și decriptare), subchei {i=1;2...16} ( vectori de biți de dimensiunea 128) sunt generate folosind funcția G și funcțiile S. Procedura de generare a cheii rămâne aproape neschimbată dacă lungimea cheii private este de 128, 192 sau 256 de biți. Dacă lungimea specificată este de 128 de biți, constantele sunt alese ca valori după cum urmează: , . Dacă lungimea cheii este de 192 de biți, valoarea cheii este , unde S() este funcția S.
BRS(),S(),P() — respectiv BRS-funcție, S-funcție, P-funcție; X,Y - cuvinte ale alfabetului binar cu o dimensiune de 64 de biți (jumătate din bloc); — chei de 128 de biți fiecare. H este un spațiu de dimensiune de 64 de biți .
Esența funcției F este conversia cuvintelor din alfabet binar de 64 de biți cu o cheie dată de 128 de biți. Rezultatul transformării este un cuvânt alfabet binar de 64 de biți.
Funcție IT sau convertor de date inițial:
H este spațiul cuvintelor din alfabet binar de 64 de biți; X,A,B — cuvinte binare de 128 de biți; BP() - funcția BP; este o operație binară .
Funcția FT sau convertorul de date final:
.H este spațiul cuvintelor din alfabet binar de 64 de biți; X,A,B — cuvinte binare de 128 de biți; () este o funcție inversă a funcției BP; este operația binară de.
Funcția FT este inversul funcției IT:
.Funcția BRL (funcția de rotire a octetului la stânga ) sau deplasarea ciclică la stânga este o parte integrantă a funcției F:
{ } este un cuvânt binar cu o dimensiune de 8 biți ( octeți ) sau, cu alte cuvinte, un element al câmpului Galois .
Funcția S este partea funcției F care este definită de s-box :
.Cutia S utilizată în funcția S este definită după cum urmează:
, UndeNu este interzisă utilizarea tabelelor cu valori deja calculate ale lui s(x) în calcule. Acesta este
225 | 66 | 62 | 129 | 78 | 23 | 158 | 253 | 180 | 63 | 44 | 218 | 49 | treizeci | 224 | 65 |
204 | 243 | 130 | 125 | 124 | optsprezece | 142 | 187 | 228 | 88 | 21 | 213 | 111 | 233 | 76 | 75 |
53 | 123 | 90 | 154 | 144 | 69 | 188 | 248 | 121 | 214 | 27 | 136 | 2 | 171 | 207 | 100 |
9 | 12 | 240 | unu | 164 | 176 | 246 | 147 | 67 | 99 | 134 | 220 | 17 | 165 | 131 | 139 |
201 | 208 | 25 | 149 | 106 | 161 | 92 | 36 | 110 | 80 | 33 | 128 | 47 | 231 | 83 | cincisprezece |
145 | 34 | patru | 237 | 166 | 72 | 73 | 103 | 236 | 247 | 192 | 57 | 206 | 242 | 45 | 190 |
93 | 28 | 227 | 135 | 7 | 13 | 122 | 244 | 251 | cincizeci | 245 | 140 | 219 | 143 | 37 | 150 |
168 | 234 | 205 | 51 | 101 | 84 | 6 | 141 | 137 | zece | 94 | 217 | 22 | paisprezece | 113 | 108 |
unsprezece | 255 | 96 | 210 | 46 | 211 | 200 | 85 | 194 | 35 | 183 | 116 | 226 | 155 | 223 | 119 |
43 | 185 | 60 | 98 | 19 | 229 | 148 | 52 | 177 | 39 | 132 | 159 | 215 | 81 | 0 | 97 |
173 | 133 | 115 | 3 | opt | 64 | 239 | 104 | 254 | 151 | 31 | 222 | 175 | 102 | 232 | 184 |
174 | 189 | 179 | 235 | 198 | 107 | 71 | 169 | 216 | 167 | 114 | 238 | 29 | 126 | 170 | 182 |
117 | 203 | 212 | 48 | 105 | 32 | 127 | 55 | 91 | 157 | 120 | 163 | 241 | 118 | 250 | 5 |
61 | 58 | 68 | 87 | 59 | 202 | 199 | 138 | 24 | 70 | 156 | 191 | 186 | 56 | 86 | 26 |
146 | 77 | 38 | 41 | 162 | 152 | 16 | 153 | 112 | 160 | 197 | 40 | 193 | 109 | douăzeci | 172 |
249 | 95 | 79 | 196 | 195 | 209 | 252 | 221 | 178 | 89 | 230 | 181 | 54 | 82 | 74 | 42 |
Funcția P - o parte integrantă a funcției F
P - matricea de transformare care descrie funcția P
G - funcția realizează următoarea mapare:
, Unde - funcția f.Funcția f este necesară pentru a calcula funcția G. Funcția f este definită după cum urmează:
P() este o funcție P, S() este o funcție S.
Operatorul binar este definit după cum urmează:
, Unde - adăugare logică pe biți (logic „sau”) cu 1 în inel .Operatorul binar de este definit după cum urmează:
, Unde - adăugare logică pe biți (logic „sau”) cu 1 în inel .Funcția BP, sau funcția de permutare a octetilor , face parte din funcția IT și din funcția FT. Este definit astfel:
,Unde .Inversul transformării BP, sau BP^{-1}, se calculează după cum urmează:
,Unde
Angajații Centrului de cercetare și dezvoltare în tehnologia informației Mitsubishi Electric Corporation Mitsuru Matsui și Toshio Tokita au descoperit că cifrul nu era rezistent la criptoanaliza diferențială . [3] În ciuda acestui fapt, cifrul (folosind 12 cicluri de criptare) rămâne puternic din punct de vedere practic. Deși Mitsuru Matsui și Toshio Tokita au reușit să arate că nivelul de securitate al cifrului E2 cu mai puține cicluri de criptare este semnificativ mai scăzut decât cel declarat de dezvoltatori.
Cerințe ridicate pentru memoria nevolatilă.
Criptosisteme simetrice | |
---|---|
Cifruri în flux | |
Rețeaua Feistel | |
Rețeaua SP | |
Alte |