Siguria e DES-it dhe principi i dizajnimit te S-boxave

DES(Data Encryption Standard)  është  algoritmi kriptues me i  përdoruri në    gjithë botën , ku siguria e tij qëndron ne çelës e jo ne algoritëm. 
Për shumë vite, tek shumë njerëz fjalët: “secret code making (krijimi i kodit secret)” dhe “DES” ishin fjalë sinonime për ta. Origjina e DES-it  starton që nga viti 1970. Ne vitin 1972 pas disa hulumtimeve, qeveria Amerikane vëndosi për krijimin e një algoritmi kriptografik me të cilin do të mbronte informacionet e rëndësishme shtetërore, kështu qeveria shpalli një konkurs për të gjithë ata që do të ishin të aftë të ua prezantonin një projekt qeverisë  që do të përmbushte kërkesat e tyre. Projekti duhet të përmbushte këto kërkesa: të këtë shkallë të lartë të sigurisë,përshkrim detal,siguria të jetë në çelës jo ne algoritëm,publik  efikas dhe i certifikuar,implementimi harduerik,eficientë,të jetë i  verifikueshëm dhe i   eksportueshëm.
Në vitin 1974 u pranua projekt propozimi i  algoritmit nga Horst Feistel i  quajtur Lucifier algorithm. Me 23 Nentor  1976 u pranua si standard federal nga NIST( National InstitutE of Standards and Technology ) dhe ju ndryshua emri nga Lucifier Algorithm në DES(Data Encryption Standard).

## Teknikat për enkriptim: Difuzionin dhe Konfuzionin.
Difuzioni : Paraqet fshehjen e relacionit ne mes plaintext dhe ciphertext. Kjo arrihet ne atë menyrë që me shume karaktere të plaintextit të ndikojnë në një karakter të ciphertext-it.
Konfuzioni : Paraqet fshehjen e relacionit ne mes të ciphertext dhe çelësit secret. 
Procesi i enkriptimit me anë të DES-it kryhet ne gjashtëmbëdhjetë cikle. Fillimisht ne hyrje të tij japim plaintext-in i cili ka gjatësi fikse 64 bit. Poashtu ne hyrje japim edhe çelësin i cili ngjashem ka 64 bit(ku çdo i   8-ti bit paraqet bitin për paritet).Me qëllim të rritjes së sigurisë plaintext-i  kalon fillimisht nepër INITIAL PERMUTATION (IP), i cili nuk ndryshon gjatësinë , por bëhet vetëm një ndryshim i  pozitave të bitëve të plaintext. Nga ana tjetër edhe çelësi 64 bitësh kalon nepër PERMUTED CHOICE(PC-1) ne të cilin përveq që bëhet ndërrimi i vendeve të bitëve, pas daljes çelësi do të këtë gjatësi 56 bit, për arsye se largohen bitat me pozitë 8,16,24,32,40,48,56,64(bitat e paritetit). Këta 8 bitat që injorohen nuk përdoren në algoritëm por shfrytëzohen për gjetjen e gabimeve.
                

                               PC-1
              57   49    41   33    25    17    9 
               1   58    50   42    34    26   18 
              10    2    59   51    43    35   27 
              19   11     3   60    52    44   36 
              63   55    47   39    31    23   15 
               7   62    54   46    38    30   22 
              14    6    61   53    45    37   29 
              21   13     5   28    20    12    4 

Këtu shohim se me hyrjen e çelësit ne PERMUTED CHOICE bitii 57 bëhet biti i parë biti i 49 bëhet i  dyti dhe kështu me rradhë. Nga vetë numrii  antarve të PC-1 shihet se 8 bitat e paritetit largohen.
                            
                           IP
            58    50   42    34    26   18    10    2
            60    52   44    36    28   20    12    4
            62    54   46    38    30   22    14    6
            64    56   48    40    32   24    16    8
            57    49   41    33    25   17     9     1
            59    51   43    35    27   19    11    3
            61    53   45    37    29   21    13    5
            63    55   47    39    31   23    15    7

Këtu shohim përmutacionin fillestar ,i cili përmban një mesazh prej 64 bitësh. Ku plaintexti pas hyrjes ne këtë përmutacion peson ndryshime. Biti i 58 bëhet biti i parë, biti i 50 biti i dytë e kështu me rradhë.
DES-I punon me bita, ose numra binar (0 dhe 1) njëjtë sikurse pajisja kompjutërikë. Një grup prej 4 bitave na jep  një numer  heksadecimal,  p.sh  Numri binar “0001” na jep numrin heksadecimal     “1”.  DES-i punon duke kriptuar  grupe të mesazhit me nga 64 bit që eshtë e njëjtë me 16 numrat heksadecimal.  Ҫelësi 56-bit ndahet ne dy çelësa 28-bitësh , dhe pastaj çelësat 28-bitësh zhvendosen për 1 ose 2 vende majtas, 

                  Iteration     Number of
                      Number      Left Shifts
                          1          1
                          2          1
                          3          2
                          4          2
                          5          2
                          6          2
                          7          2
                          8          2
                          9          1
                         10          2
                         11          2
                         12          2
                         13          2
                         14          2
                         15          2
                         16          1

Këtu shohim zhvendosjen majtas për një ose dy pozita.

Kështu p.sh: nese marrim një plaintext:”  8787878787878787”  dhe e kriptojmë me çelësin "0E329232EA6D0D73" fitojmë ciphertext  “0000000000000000” ,nese këtë ciphertext që e fituam e dekriptojmë me të njëjtin çelës  që e bëme enkriptimin do të fitojmë  plaintext  të njëjtë.  Kjo na tregon që Des-I eshtë një algoritëm kriptues simetrik,ku i njëjti çelës bëne enkriptimin dhe dekritpimin, pra marrësi edhe dërguesi punojnë me të njëjtin çelës. 
DES-I është një “Block Cipher” i cili opëron me plaintext me gjatësi prej 64 bit, dhe kthen ciphertext me të njëjtën gjatësi prej 64 bit.  Secili bllok pas hyrjes ne përmutacionin fillestar ka  ndryshime  në radhitjen e bitave .Pas këtij përmutacioni  plaintext  ndahet ne dy blloqe me nga 32 bitë, ne gjysmën e majtë të bllokut dhe gjysmën e djathtë të bllokut. 
Ne figuren me poshtë kemi sqarime rreth ekzekutimit të algoritmit DES.

## Algoritmi
1.Përmutacioni fillestar, 

2.64 bit blloku hyrës ndahet në dy blloqë 32 bitëshe 

3.16 runde me funktionin „f“ dhe çelësin K 

4.Dy blloqët 32 bitëshe, ne 64 bit bllokë 
5.Përmutacioni përfundimtar 

## Siguria e DES-it
DES-I nuk mund konsiderohet më i sigurtë, për arsye se  çelësi 56-bit eshtë shumë i shkurtër.  Në kohën e krijimit të DES-it qëveria amerikane nuk e kishte këtë mendim, përkundrazi  tallej me mendimet e njërzve  që dikush mund ta thyente DES-in.
Shume diskutime jane zhvilluar për sigurinë e DES-it. Jane të njohura dy metoda të cilat përdoren me shpesh për gjetjen e çelësit (thyerjen e DES-it): Brute Force
Attack si dhe Kriptoanaliza. Brute Force Attack bazohet ne tëstimin e të gjitha kombinimeve të mundshme të çelsëave. Me çelës me gjatësi prej 64 bit egzistojnë gjitshej 2 çelësa të ndryshëm. Si metodë e dytë njihet e ashtu quajtura Kriptoanaliza e cila për dallim nga metoda e parë nuk bazohet ne gjatësinë e çelësit por në natyrën  e algoritmit. Me anë të kësaj metode do të ishin të nevojshme dy cifte  plaintext-ciphertext. 
Ne menyrë që të rritet siguria e DES-it egzistojnë edhe variantet e tij siç  janë Double DES apo triple DES, tek të cilat gjatësia e çelësit(efektive) eshtë 112 respektivisht 168 bit.
Po ashtu DES-I përdoret edhe ne mode të ndryshme si ECB(ElektronicCodeBlock),CBC(Cipher Block Chaining),CFB(CipherFeedBack) dhe OFB(OutputFeedBack).
Kujtojmë: Siguria e enkriptimit të një  mesazhi nuk duhet të qëndrojë në algoritëm por çelësin ne cilin është enkriptuar.
**Çelësat e dobët**: Ne kriptografi jane çelësa që përdorin një cipher specific, që e bëne ciphertëxt-in e sigurt ne një menyrë të padeshirusheme. Çelësat e dobët e përbëjnë një pjese shume të vogel të hapësires se përgjithsme të çelësave,  që do të thotë se: nëse ne gjenerojmë një çelës të rastësishëm (random) për enkriptimin e një mesazhi, atëherë mundësia që çelësi i gjeneruar t’i takojë pjesës së çelësave të dobët është shumë e vogël.Gjatë zbatimit të enkriptimit, çelësi 56 bit ndahet në 16 nën çelësa ku nga një çelës përdoret në secilin prej 16 rundeve, duke u bazuar në algoritmin e DES-it.Çelësi i   dobët i DES-it prodhon 16 nënçelësa identik
                       E(K, E(K, M)) = M 
**Çelësat gjysmë të dobët:**
Përveç çelësave të dobët egzistojnë edhe çelësat gjysmë të dobët. Ata bëjnë që të prodhohen dy lloje të nënçelësave që përseritën nga 8 herë secili. Egzistojnë 6 palë çelësa gjysmë të dobët . 

                                                 
Nje grup  njohës  të mirë të kriptografisë sugjeruan që çelësi  të mos jetë 56 bit, por, të jetë  75 bit minimum për block cipher-in egzisues dhe  90 bita të tjerë për krijimin e  block ciphers të reja.
Një  gjerman e quajti DES-in "out-of-date  and not safe enough(Jashtë përdorimit dhe jo mjaft i sigurtë)".
Ne vitët e hershme të 1998 Electronic Frontier Foundation kanë krijuar nje makinë për thyerjen e DES-it, e cila mund të gjejë çelësin e kriptimit të DES-it për vetëm disa ditë kërkimi , e  cila kushton vetëm 200,000$. 
Me këtë makine të thjeshtë do të duheshin mijera vite për ta thyer DES-in. Mirëpo me ndërtimin e paisjeve me komplekse kjo kohë është reduktuar dukshëm. Një makine e tillë e cila do ti përmbante 1milion paisje enkriptuese, secila nga të cilat do të kryente një enkriptim për mikrosekond do ta arrinte ta thyente për afer 10 orë. Mirëpo kjo makinë ne kohen kur u konstruktua kushtoi rreth 20milion $. Me kohë janë konstruktuar edhe makinat tjera të cilat do ta arrinin ta gjenin çelësin edhe me shpejt edhe me lire, megjithatë kostoja e tyre ishte me e madhe se sa ndoshta edhe vet vlera e informatës se enkriptuar. 

## S-box-at
Në kriptografi, një S-Box (Kuti e zëvendësimit (ang. Substitution-box)) është një komponent bazik e algoritmeve simetrikë të cilat përdorin zëvendësimin.S-boxat jane pjesa jolineare e DES-it që e bëjen edhe me të veshtire thyerjen ealgoritmit të DES-it me kriptoanaliza të ndryshme ata mundesojnë konfuzionin e të dhenave.
Ne hyrje të S-box hyrja 48 bitshe ndahet ne 8 pjesë 6-bitëshe. Biti i parë dhei fundit i një hyrje(6bit) përcaktojnë rreshtin e elementit ndërsa 4 bitat e tjerë   përcaktojnë kolonën përkatëse dhe kështu ne dalje të secilit nga S-boxat do të këmi 4 bita.Kështu p.sh nese në S1 hyjnë bitat 100100 siç thamë edhe me parë biti i pare
dhe i fundit paraqesin rreshtin ndërsa 4 bitat e tjerë kolonën kështu do të kemi: (10)2=(2)10  që paraqet rreshtin(0010)2=(2)10 që paraqet kolonen
Kështu ne dalje të S1 fitojmë daljen 4bitëshe 1110.

## Referimet
http://sq.wikipedia.org/wiki/Desi_dhe_siguria_e_tij
http://sq.wikipedia.org/wiki/S-box 
https://web.archive.org/web/20140412191539/http://www.inno-logic.com/resources/17.php 
https://web.archive.org/web/20131020084457/http://www-math.ucdenver.edu/~wcherowi/courses/m5410/des.pdf 
http://page.math.tu-berlin.de/~kant/teaching/hess/krypto-ws2006/des.htm 
http://www.freeswan.org/freeswan_trees/freeswan-1.5/doc/DES.html