Kodimi Simetrik (Kriptografi)

Kodimi simetrik është një formë e kriptosistemit në të cilën kodimi dhe dekodimi i të dhënave bëhet duke përdorur një çelës të vetëm sekret.Kodet simetrike bazohen në metoda të zëvendësimit dhe transpozicionit të shkronjave(karaktereve,bitave).Para zhvillimit të kriptosistemit me çelës publik(p.sh.RSA),kodimi simetrik ishte e vetmja mënyrë për të bërë konfidenciale të dhënat.

Që kodimi të jetë i sigurt ,algoritmi për kriptim duhet të jetë aq i fuqishëm sa që edhe nëse sulmuesi e njeh procesin me të cilin është bërë kodimi,ai nuk do të jetë në gjendje që përmes të dhënave të koduara(ciphertext) të gjejë të dhënat që janë koduar(plaintext).
Nëse kodimi i të dhënave përdoret për komunikim të sigurt mes dy entitetesh,këto dy entitete duhet të shkëmbejnë çelësin sekret përmes një kanali të sigurt transmetues,ashtu që askush tjetër të mos e posedojë atë.

Algoritmet më të shfrytëzuara që bazohen në kodim simetrik janë DES(Data Encryption Standard) dhe AES(Advanced Encryption Standard).

Puna e algoritmeve simetrike
Dërguesi e krijon një mesazh,karakteret e të cilit janë shkronja të një alfabeti.Ky mesazh kalon nëpër algoritmin e përzgjedhur për kodim me çelësin privat të cilin palët komunikuese e kanë vendosur përmes një kanali të sigurt.Me procesin e kodimit krijohet një mesazh i koduar,i palexueshëm për sulmuesit potencial.

C=E(P,K)Cryptography and Network Security,W.Stalling-5th Edition

Marrësi e merr mesazhin e koduar dhe e kalon atë nëpër procesin e dekodimit me të njejtin algoritëm dhe çelës me të cilat edhe është koduar mesazhi.

P=D(C,K)

 E-Funksioni kodues
 D-Funksioni dekodues
 K-Çelësi
 P={p1,p2...pn}-Mesazhi real
 C={c1,c2...cn}-Mesazhi i koduar

Kodet Zëvendësuese
Kodet zëvendësuese e mapojnë çdo shkronjë të mesazhit në një shkronjë tjetër,numër ose simbol.
Kodi i Cezarit
Kodi i Cezarit është kodi më i vjetër kriptografik zëvendësues. Për të koduar një mesazh me kodin e Cezarit ,çdo shkronjë e mesazhit duhet të zëvendësohet me shkronjën e cila ndodhet tri vende më larg shkronjës në fjalë në alfabet.
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  D  E  F  G H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C
Kështu për shembull ,mesazhi :
              Sulmojme ne agim!
në kodin e Cezarit do të jetë:
              Vxoprmph qh djlp!
Algoritmi i Cezarit për kodim është :

C = E(P, K) = (P + K) mod 26

Ndërsa,funksioni për dekodim është:

P = D(K, C) = (C - K) mod 26

Cezari e përdori këtë algoritëm me çelës 3,por algoritmi mund të përdoret me çfarëdo çelësi K.

Ky algoritëm për kodim nuk është i sigurt meqë janë vetëm 25 mundësi të përzgjedhjes së çelësit dhe kjo e bën që kodi të dekodohet me të ashtuquajturin brute-force sulm.Brute-Force sulmi bazohet në shqyrtimin e çdo mundësie për çelës dhe gjetjen e tekstit që është më afër gjuhës së kuptueshme.Kodi mund të thyhet edhe përmes një kripo-analize të detajuar.Meqë një shkronjë e caktuar mapohet në vetëm një shkronjë tjetër  të alfabetit ,sulmuesi mund të llogarit frekuencën e shkronjave dhe në këtë mënyrë të nxjerrë çelësin sekret përmes mapimit të shkronjave më të përdorura në kod , me shkronjat më të përdorura të gjuhës.
Playfair Kodi
Playfair Kodi i trajton diagramet në mesazhin për kodim si njësi më vete dhe këto njësi i kthen në diagrame kodesh.Ky kod bazohet në shfrytëzimin e një matrice 5x5 të konstruktuar përmes një fjale të çfarëdoshme e cila përdoret si çelës.Konstruktimi i matricës bëhet duke vendosur në matricë fjalën e përzgjedhur si çelës,çdo shkronjë në një pozitë të matricës  për të mbushur rreshtat me rradhë.Fushat e matricës që mbesin të zbrazëta mbushen me shkronjat e alfabetit të cilat nuk ndodhen në fjalën çelës sipas rendit alfabetik.
*Shkronjat I dhe J vendosen në një fushë të vetme.
Kështu,nëse fjala çelës është Genti,matrica do të ketë këtë pamje:
 G  E  N  T  I/J A  B  C  D  F H  K  L  M  O P  Q  R  S  U V  W  X  Y  Z
Për kodimin e mesazhit kalohet nëpër hapat si në vijim:
 Mesazhi ndahet në grupe me nga dy shkronja.Nëse shkronja në fund mbetet vetëm,ju mund të shtoni cilëndo shkronjë që dëshironi për të mbushur diagramin. (TUNGJATJETA- TU NG JA TJ ET AX)
 Në qoftë se një diagram përmban dy shkronjat e njëjta,në mes tyre vendoset një shkronjë e çfarëdoshme dhe ndarja me nga dy fillon përsëri. 
 Karakteret e diagramit të fjalës së koduar fitohen duke marrë diagramin dhe duke gjetur shkronjën që ndodhet në prerjen e rreshtit ku ndodhet elementi i parë i diagramit me kolonën ku ndodhet elementi i dytë i diagramit për karakterin e parë dhe anasjelltas për karakterin e dytë. 
 Nëse të dy shkronajt e diagramit bien në të njejtin rresht,secila shkronjë zëvendësohet me shkronjën në të djathtë (shkronja e cila ndodhet në shtyllën e fundit zëvendësohet me atë të shtyllës së parë të atij rreshti). 
 Nëse të dy shkronjat e diagramit bien në të njejtën shtyllë,të dyja zëvendësohen me shkronjën poshtë tyre(nëse shkronja ndodhet në rreshtin e fundit ajo zëvendësohet me shkronjën në rreshtin e parë për atë kolonë).

Kështu,për shembull fjala 
           ENDRIT
e koduar në Playfair Cipher do të jetë:
            NTCSGI

Për të dekoduar një kod te Playfair duhet të analizohen 26x26=676 matrica me kombinime të ndryshme të shkronjave.
Vigenere Kodi
Vigenere Kodi është kod polialfabetik i bazuar në përdorimin e kodit të Cezarit.Për secilën shkronjë të mesazhit përdoret një çelës tjetër për zhvendosjen e alfabetit dhe ky çelës përcaktohet në bazë të një fjale kyçe(çdo shkronjë e fjalës kyçe e jep çelësin në bazë të pozitës në alfabet, p.sh. shkronja 'd' jep çelësin 3 për zhvendosje).

Nëse e kemi një sekuencë shkronjash P=p1,p2...pn dhe fjalën kyçe K=k1,k2...km,kodimi do të bëhet si më poshtë :

C = C1, C2, ... ,Cn =E[(k1, k2,..., km), (p1, p2,..., pn)]= (p1 + k1) mod 26,...,(pm + km) mod 26,(pm + k1) mod 26,...,(p2m+km) mod 26,...

Kështu për kodimin e të dhënave përdoret formula :

Ci = (Pi + Kimod m)mod 26

Ndërsa,për dekodim:

Pi = (Ci - Kimod m)mod 26 
Metoda e Transpozicionit
Metoda e transpozicionit bazohet në permutacionin e shkronjave të mesazhit.Kodi më i thjeshtë që  e shfrytëzon këtë metodë është RAIL  FENCE. Teknika e kodimit përmes Rail Fence bazohet në vendosjen e shkronjave të mesazhit në diagonale njëra ndaj tjetrës që të lexohen si sekuenca rreshtash të ndryshëm.

Kështu, p.sh :
       Ditë e bukur
e koduar me Rail Fence do të jetë :
       'Dte uu'
          'ië bkr'
Një kod i pastër transpozicionues njihet shumë lehtë,sepse frekuenca e shkronjave është plotësisht e njejtë me mesazhin origjinal.Kjo i bën këto kode të lehta për tu thyer.

Kodet me transpozicion janë përdorur për herë të parë në makinat rotor,gjate Luftes Boterore II.
Kodet Blloqe (Block Ciphers)
Kodet Blloqe janë ato kode të cilat e marrin një bllok të të dhënave,e trajtojnë si njësi dhe e kodojnë në një bllok të dhënash të shifruara.Internet Security,Cryptographic Principles,Agorithms and Protocols-Man Young Rhee Këto kode poashtu bazohen në kodim simetrik.Prej tyre më të fuqishme janë DES dhe AES.
DES(Data Encryption Standard)
DES është algoritmi simetrik më i përdorur në kriptografi.Për të koduar me DES ,funksionit i jepen si hyrje mesazhi për kodim dhe çelësi me të cilin do të kodohet.

DES punon me blloqe prej 64 bitave,prandaj nëse gjatësia e mesazhit nuk është shumëfish i numrit 64 ,mesazhi i nënshtrohet padding-ut(shtimit të bitave për të arritur vlerën prej 64 bitash).Çelësi jepet poashtu 64 bitësh,por vetëm 56 bita prej tyre shfrytëzohen.8 bitat e tjerë mund të përdoren si bita pariteti.Foundations of Security-Neil Daswani,Cristoph Kern,Anita Kesavan

Procesimi i tekstit bëhet në tri faza.Së pari, blloku prej 64 bitash kalon nëpër një permutim fillestar (IP-Initial Permutation).Teksi i permutuar,kalon nëpër 16 raunde permutimi dhe zëvendësimi (të njejta).Pas këtyre raundeve ,teksti ndahet në dy vende dhe këto grupe 32 bitëshe i ndryshojnë vendet.Në fund,të dhënat kalojnë nëpër permutimin inverz IP−1 dhe fitohet kodi prej 64 bitash.
AES(Advanced Encryption Standard)
AES u publikua nga NIST(National Institute of Standards and Technology) në vitin 2001,me qëllimin për të zëvendësuar DES-in.

Struktura e këtij kodi është shumë mëe komplikuar se struktura e RSA,apo edhe kodeve të tjera simetrike.AES punon me blloqe me nga 128 bit,të dhënat e të cilëve vendosen në matrica 4x4. Këto matrica kalojnë nëpër një numër të caktuar raundesh që varet nga gjatësia e çelësit,gjatë të cilëve matrica kalon nëpër disa funksione transformuese si:
 Përzierje kolonash
 Zhvendosje rreshtash
 Zëvendësim i bitave,që bëhet përmes S-box-eve
 XOR të të dhënave të bllokut me një pjesë të çelësit
Dallimi i AES nga kodet e tjera simetrike është se kodimi edhe dekodimi nuk kryhen sipas një procedure të njejtë,gjë që paraqet nevojën për zhvillimin e dy aplikacioneve të ndryshme për komunikim me AES.
Referimet

Kategoria:Kriptografi