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