Puncte:2

Ieșire DES SBOX cu Bitslice

drapel cn

Nu înțeleg cum să calculez biții de ieșire ai unui SBOX de la 6 la 4 cu tehnica bitslice în DES. Matthew Kwan a făcut o scurtă recapitulare în lucrarea sa „Reducing the Gate Count of Bitslice DES” din lucrarea originală Biham. El a scris:

Practic, pentru fiecare S-box, tehnica este de a lua două din intrare biți, extindeți-i la toate cele 16 funcții posibile ale două variabile și utilizați celelalte patru intrări S-box pentru a selecta dintre acele 16 funcții. Cu toate acestea, detaliile sunt puțin mai complicate

Cred că înțeleg cum să extind 2 variabile la 16 funcții (de la f0 la f15)... Dar cum selectez acum toate cele 4 ieșiri cu cei 4 biți de intrare rămași?

Lucrarea lui Matthew Kwan poate fi găsită aici: http://fgrieu.free.fr/Mattew%20Kwan%20-%20Reducing%20the%20Gate%20Count%20of%20Bitslice%20DES.pdf

Puncte:1
drapel ng

Algoritmul original al lui Eli Biham pentru a implementa orice S-box de 6 până la 4 biți, așa cum este descris în lucrarea lui Matthew Kwan este să

  • Evidențiază doi biți de intrare, să zicem $i_1$ și $i_2$
  • Construiește totul $2^{(2^2)}=16$ funcții pe un singur bit ale $i_1$ și $i_2$, Spune $f_0$ la $f_{15}$
  • Descrieți fiecare dintre cele patru ieșiri ale S-box-ului drept care dintre aceste funcții $f_j$ trebuie să meargă la acea ieșire pentru fiecare dintre $2^4=16$ combinații ale celorlalți patru biți de intrare $i_3$ $i_4$ $i_5$ $i_6$ a S-box-ului și implementați acest lucru utilizând patru straturi de multiplexare digitală pentru fiecare ieșire:
    • Pentru fiecare dintre $2^3=8$ combinatii de $i_4$ $i_5$ $i_6$, selectăm în funcție de $i_3$ care $f_j$ Este nevoie. De exemplu.dacă pentru o anumită ieșire și o anumită combinație de $i_4$ $i_5$ $i_6$ trebuie să selectăm $f_4$ când $i_3=0$ și $f_7$ când $i_3=1$, atunci putem face asta ca $(f_4\operatorname{NAND}\bar{i_3})\operatorname{NAND}(f_7\operatorname{NAND}i_3)$, costând $3$ porți (reducerea costului inversării $i_3$). Astfel, această etapă va costa $4\times8\times3=96$ porți totale (dar vezi optimizarea 1 de mai jos).
    • Pentru fiecare dintre $2^2=4$ combinatii de $i_5$ $i_6$, selectăm în funcție de $i_4$ care dintre cele două funcții ale etapei anterioare este necesară.
    • Pentru fiecare dintre $2$ valori ale $i_6$, selectăm în funcție de $i_5$ care dintre cele două funcții ale etapei anterioare este necesară.
    • Selectam in functie de $i_6$ care dintre cele două funcţii ale etapei anterioare este necesară.

Cele de mai sus face multiplexarea cu $4\times(8+4+2+1)\times3=180$ $\operatorname{NAND}$ porți (plus $4$ invertoare pentru $i_3$ $i_4$ $i_5$ $i_6$ dacă acestea trebuie luate în considerare).

Sunt posibile multe optimizări, inclusiv:

  1. Folosind $\operatorname{XOR}$ care permite o multiplexare cu doua porti/instructiuni in loc de trei, de ex. calculăm $((f_4\operatorname{XOR}f_7)\operatorname{ȘI}i_3)\operatorname{XOR} f_4$, observând că $f_4\operatorname{XOR}f_7$ vine gratuit, deoarece aceasta este încă o funcție a $i_1$ și $i_2$, astfel an $f_j$, probabil $f_3$ pentru o numerotare naturală; același lucru pentru etapele ulterioare de multiplexare, prin ajustarea a ceea ce calculează etapele anterioare. Această optimizare este foarte eficientă în software. Este în implementarea lui Biham și în contul lui Kwan.
  2. Tehnica de calcul $8$ Decat $16$ funcții $f_j$, prin reglarea polarității în multiplexare.
  3. În unele ocazii, reutilizarea unei funcții (dincolo de $f_j$) prin mai multe ieșiri S-box.
  4. În unele ocazii, nu este nevoie de toate funcțiile $f_j$, pentru că unul se întâmplă să nu fie folosit.
  5. În unele ocazii, posibilitatea de a elimina o etapă de multiplexare, deoarece intrarea de multiplexare nu are nicio influență asupra ieșirii dorite.
  6. În unele ocazii, posibilitatea de a simplifica un multiplexor, deoarece una dintre datele sale de intrare este constantă.
  7. Reordonarea lucrurilor care pot (intrarile $i_j$, intrările de date ale multiplexoarelor, ordinea biților de multiplexare $i_3$ $i_4$ $i_5$ $i_6$ pentru fiecare ieșire) pentru a maximiza aparițiile de 3/4/5/6.
fgrieu avatar
drapel ng
@ChopaChupChup: dacă ceva a fost încă neclar, vă rugăm să indicați ce anume, de ex. prin [editarea întrebării](https://crypto.stackexchange.com/posts/98757/edit).
ChopaChupChup avatar
drapel cn
Acum mi-e clar! Mulțumesc! În prezent lucrez la o prezentare pentru studiul meu. După aceasta, voi încărca aici o reprezentare vizuală, astfel încât viitorii studenți să nu aibă probleme cu acest subiect :-)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.