SP tīkls

Kriptogrāfijā SP tīkls jeb substitūcijas-permutācijas tīkls (SPN) ir virkne saistītu matemātisku operāciju, ko izmanto blokķīfa algoritmos, piemēram, AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK un Square.

Šāds tīkls kā ieejas datus izmanto atklātā teksta bloku un atslēgu, un, lai iegūtu šifrētā teksta bloku, piemēro vairākus pārmaiņus "raundus" vai "slāņus" no aizvietošanas (S-boxes) un permutācijas (P-boxes). S-box un P-box pārveido ieejas bitu (apakš)blokus par izejas bitiem. Parasti šīs transformācijas ir operācijas, kuras ir efektīvi veikt aparatūrā, piemēram, ekskluzīva vai (XOR) un bitu rotācija. Atslēga tiek ieviesta katrā raundā, parasti no tās atvasinātu "raundu atslēgu" veidā. (Dažās konstrukcijās pašas S-kastes ir atkarīgas no atslēgas.)

Dešifrēšanu veic, vienkārši apgriežot procesu otrādi (izmantojot S un P kastu inversijas un piemērojot apaļās atslēgas apgrieztā secībā).

S-box aizstāj nelielu bitu bloku (S-box ieeja) ar citu bitu bloku (S-box izeja). Šai aizvietošanai jābūt viens pret vienu, lai nodrošinātu invertizējamību (tātad atšifrēšanu). Jo īpaši izejas garumam jābūt tādam pašam kā ieejas garumam (attēlā pa labi ir S-box ar 4 ieejas un 4 izejas bitiem), kas atšķiras no S-box vispār, kas var arī mainīt garumu, piemēram, DES (Data Encryption Standard). S-box parasti nav vienkārši bitu permutācija. Labam S-box drīzāk piemīt īpašība, ka, mainot vienu ieejas bitu, mainās aptuveni puse no izejas bitiem (jeb lavīnas efekts). Tai būs arī tāda īpašība, ka katrs izejas bits būs atkarīgs no katra ieejas bita.

P-box ir visu bitu permutācija: tas ņem visu vienas kārtas S-box izvadus, permutē bitus un ievada tos nākamās kārtas S-box. Labai P-kastītei piemīt īpašība, ka jebkuras S-kastītes izejas biti tiek sadalīti pēc iespējas lielākam skaitam S-kastīšu ieeju.

Katrā raundā raunda atslēga (kas iegūta no atslēgas ar vienkāršām operācijām, piemēram, izmantojot S-box un P-box) tiek apvienota, izmantojot kādu grupu operāciju, parasti XOR.

Vienai tipiskai S-kastītei vai vienai P-kastītei vien nav lielas kriptogrāfiskās izturības: S-kastīti var uzskatīt par aizvietošanas šifru, bet P-kastīti var uzskatīt par transponēšanas šifru. Tomēr labi izstrādāts SP tīkls ar vairākām pārmaiņus S- un P-kastīšu kārtām jau atbilst Šenona sajaukšanas un difūzijas īpašībām:

  • Difūzijas iemesls ir šāds: Ja tiek izmainīts viens atklātā teksta bits, tad tas tiek ievadīts S-box, kura izejā mainās vairāki biti, tad visas šīs izmaiņas P-box sadala starp vairākiem S-box, tādējādi visu šo S-box izejas atkal mainās vairākos bitos utt. Veicot vairākus raundus, katrs bits mainās vairākas reizes turp un atpakaļ, tāpēc beigās šifrteksts pseidorandomā veidā ir pilnībā mainījies. Konkrēti, ja nejauši izvēlētam ieejas blokam apvērš i-to bitu, tad varbūtība, ka mainīsies j-tais izejas bits, jebkuram i un j ir aptuveni puse, kas ir stingrais lavīnas kritērijs. Un otrādi, ja tiek mainīts viens šifrteksta bits un pēc tam mēģināts to atšifrēt, rezultāts ir ziņojums, kas pilnīgi atšķiras no sākotnējā atklātā teksta - SP šifri nav viegli pārveidojami.
  • Apjukuma iemesls ir tieši tāds pats kā difūzijas iemesls: mainot vienu atslēgas bitu, mainās vairākas apaļās atslēgas, un katras apaļas atslēgas izmaiņas izplatās pa visiem bitiem, ļoti sarežģītā veidā mainot šifrtekstu.
  • Pat ja uzbrucējs kaut kādā veidā iegūst vienu vienkāršo tekstu, kas atbilst vienam šifrtekstam - uzbrukums ar zināmu vienkāršo tekstu vai, vēl ļaunāk, uzbrukums ar izvēlētu vienkāršo tekstu vai izvēlētu šifrtekstu -, neskaidrība un difūzija apgrūtina uzbrucējam atslēgas atgūšanu.

Lai gan Feistela tīkls, kurā izmanto S-veida kastes (piemēram, DES), ir diezgan līdzīgs SP tīkliem, ir dažas atšķirības, kas atsevišķās situācijās padara šo vai šo tīklu piemērotāku. Konkrētam sajaukšanas un izkliedes apjomam SP tīklam ir vairāk "iedzimtā paralēlisma", tāpēc, ja ir CPU ar daudzām izpildes vienībām, to var aprēķināt ātrāk nekā Feistela tīklu. Procesori ar nedaudzām izpildes vienībām, piemēram, vairums viedkaršu, nevar izmantot šo raksturīgo paralēlismu. Turklāt SP šifrēšanai ir nepieciešams, lai S-boxes būtu invertojamas (lai veiktu atšifrēšanu); Feistela iekšējām funkcijām šādu ierobežojumu nav, un tās var konstruēt kā vienvirziena funkcijas.


AlegsaOnline.com - 2020 / 2023 - License CC3