Kodimi Simetrik (Kriptografi)

Nga Wikipedia, enciklopedia e lirë

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[Redakto | Redakto nëpërmjet kodit]

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)[1]

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)[1]

  • 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[Redakto | Redakto nëpërmjet kodit]

Kodet zëvendësuese e mapojnë çdo shkronjë të mesazhit në një shkronjë tjetër,numër ose simbol.

Kodi i Cezarit[Redakto | Redakto nëpërmjet kodit]

Kodi i Cezarit është kodi më i vjetër kriptografik zëvendësues.[1] 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.[1]

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[Redakto | Redakto nëpërmjet kodit]

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:

  1. 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.[1] (TUNGJATJETA- TU NG JA TJ ET AX)
  2. 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.[1]
  3. 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ë.[1]
  4. 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).[1]
  5. 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ë).[1]

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[Redakto | Redakto nëpërmjet kodit]

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[1]

Ndërsa,për dekodim:

Pi = (Ci - Kimod m)mod 26[1]

Metoda e Transpozicionit[Redakto | Redakto nëpërmjet kodit]

Metoda e transpozicionit bazohet në permutacionin e shkronjave të mesazhit.Kodi më i thjeshtë që e shfrytëzon këtë metodë është RAIL FENCE.[1] 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)[Redakto | Redakto nëpërmjet kodit]

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.[2] Këto kode poashtu bazohen në kodim simetrik.Prej tyre më të fuqishme janë DES dhe AES.

DES(Data Encryption Standard)[Redakto | Redakto nëpërmjet kodit]

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.[3]

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)[Redakto | Redakto nëpërmjet kodit]

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.[2]

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.[3] 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.[3]

Referimet[Redakto | Redakto nëpërmjet kodit]

  1. ^ a b c d e f g h i j k l Cryptography and Network Security,W.Stalling-5th Edition
  2. ^ a b Internet Security,Cryptographic Principles,Agorithms and Protocols-Man Young Rhee
  3. ^ a b c Foundations of Security-Neil Daswani,Cristoph Kern,Anita Kesavan