freeodev
  Kimyada şifreleme
 
ilk basta calisacagimiz sistemler hep klasik sistemler olacak ve blok
uzunlugumuz 1 olacak. yani fonksiyonumuza soktugumuz harf gruplari birer birer
olacak.

sifreleme algoritmamiz F(x,k) diye gosterilecek. bu x' harf blogunu k anahtari
ile isleme sokuyoruz demek olacak. desifre icin o k anahtarinin tersini
alacagiz, ve onu da F(x,k' gibi (bu döküman spymastersnake.org malıdır)gosterecegiz, yani algoritma ayni sifreleme ve
desifre anahtarlarimiz farkli olacak. anahtar belliyse,ne dendigi anlasilacak
gibiyse F(x) diye de gosterebiliriz fonksiyonu/algoritmayi, gorunce sasirmayin.

ilk ornekte anlayabilecegiz bunu. simdilik aklima bunlar geliyor. dogruyu
soylemek gerekirse dun gece yarisindan sonra cok guzel bir yazi yazmistim,
oldukca da ayrintili ve uzundu, ama bir hata sonucu silindi yazi , simdikini de
elimden geldigince aceleye getirmemeye calisiyorum...

unutmadan bir aciklama daha yapalim. bizim sifreleme isleminde geri donmek
onemli, yoksa bir ise yaramayacak bu degil mi?, o zaman bu fonksiyon'un tersi
olmali. lise 1 matematiginden hatirlarsak bir fonksiyonun tersinin olmasi 1-1 ve
orten olmasina baglidir. aslinda orten olmamasi burada sifreleyip metni gizlemek
isteyen icin iyi bir koruma, dusmanin isini zorlastirir (NIYE? hadi calistirin
saksilari). ama biz bu kadar detaya ilk basta girmeyecegiz, ve acik metin
uzayimiz ve sifreli metin uzayimiz 1-1 ve orten olacak.
yani alfabelerimizin kumelerini dusunecek olursak:
bizim acik metindeki alfabelerimizin kumesi kararlastirdigimiz gibi burada 26
harf var. ve bu uzaydan/kumeden fonksiyon bizi yine 26 harflik bir uzaya/kumeye
goturecek ve o da 26 harf olacak.

eskiden bahsetmistik, sistemler 2 turlu oluyor, stream ciphers ve block
ciphers... stream in turkcesini bulamadim, kusura bakmayin. guzel tam bir
karsilik bulamadim. anlami mesajimizi en kucuk parcalar halinde sifreliyoruz ,
tek tek... blok'ta ise adi uzerinde, mesajimizi blok blok alip fonksiyona
sokuyoruz. dedigim gibi ilk baslarda hep stream ciphers olarak calisacagiz. bu
bir nevi blok uzunlugu 1 olan block cipher 'da diyebiliriz. byte byte (yada bit
bit) calisila bilir. yani text sifreleyecegimiz icin bizim en kucuk bilgi
birimimiz bir karakter olacak stream ciphers'imizda.

daha oncede soylemistik, benim tembelligim yuzunden , kullanacagimiz alfabe
ingiliz alfabesi olacak. turkce klavye kullanamiyorum. ... yani A-Z arasi 26
harfe sirasiyla 0-25 arasi sayilar ile eslestirecegiz. boylece fonksiyonlara
harfleri sokunca islem yapabilecegiz. ve buyuk harfleri kullanacagiz. noktalama
isaretleri ve rakamlar olmayacak, bosluk ta olmayacak. boylece 26 ingiliz
alfabesini kullanacagiz. metinleri bu forma sokacagiz. (bu islemin adi ENCODE
dur), sifrelemeden once metni uygun hale sokariz bizim fonksiyonumuzun
gerektirdigi gibi...

ve kolay anlasilsin diye encode(bu döküman spymastersnake.org malıdır) ederken metinleri 5'li bloklar halinde
yazacagiz... mesela acik metin soyle olsun: "selam herkese,bu ilk ve 1. encode
ornegimiz!" ve bunun encode edilmis hali : "SELAM HERKE SEBUI LKVEE NCODE ORNEG
IMIZ" olacak...

ve ilk gorecegimiz klasik sistemler hep monoalfabetik olacak. bunun anlami,
bizim elimizdeki alfabede her harf BIR VE TEK harf ile eslesecek. yani A harfi
D'ye gidiyorsa HER ZAMAN d'ye gidecek. bu degismeyecek.

bu monoalfabetik sistemlerde yeni bir alfabe kurulur. mesela, ilk ornegimizde
gorecegimiz gibi biz harfleri 3 kaydiracagiz diyecegiz. yeni alfabemiz belli
olacak bu sekilde.

ilk basta gorecegimiz 3 sistem olacak.
1) kaydirilmis alfabeli sifreleme
2) atlamali alfabeli sifreleme
3) afin alfabeli sifreleme (1-2 nin karisimi)

basliyoruz:

Kaydirilmis Alfabeli Sifreleme:
===============================

burada fonksiyonumuz F(x,k)=x+k seklinde olacak.
yani fonksiyona soktugumuz x harfini k kadar kaydiracagiz.
mesela k=3 icin A harfi bize D 'yi verecek.
F(A,3)=A+3=0+3=3=D olacak...
burada bir sorunla karsilasiyoruz, peki Y'yi 3 kaydirinca nolucek?, o da basit,
harf uzayimiz 0-25 arasi, yani 25'ten buyuk bir sayinin bizde karsiligi yok. en
yapicaz? bu sorunu da mod26 diyerek hallediyoruz. yani Y'yi 3 harf kaydirirsak
Z'den sonra ba$a A'ya donuyoruz...
o zaman, meger fonksiyonumuz
F(x,k)=x+k mod26 diyoruz

hadi bir ornek verelim:
anahtarimiz 3 olsun (sezar'a itafen, o bunu kullanmis, o yuzden sezar sifresi de
denir bu yonteme)... ve b(bu döküman spymastersnake.org malıdır)u 3 anahtarini yalniz ben ve konusacagim kisi biliyor,
baskasi bilmiyor.
o zaman fonksiyonumuz F(x,3)=x+3 mod26 oluyor. (yani harfleri 3 kaydirmak)...

o zaman A harfi F(A,3)=0+3=3=D mod26 oluyor,
ve B de, F(B,3)=F(01,3)=01+3=4=E mod26 oluyor.
bu sekilde F(Y,3)=F(24,3)=24+3=27=1=B mod26 oluyor.

o zaman butun alfabemiz:
ABCDE FGHIJ KLMNO PQRST UVWXY Z iken su hali aliyor:
DEFGH IJKLM NOPQR STUVW XYZAB C

hadi ornek olsun diye bir sifreli metin yazayim:

----------------------------------------
sistem:kaydirmali alfabe. F(x,k)=x+k mod26
harf uzayi: A-Z , 26 harf ingiliz alfabesi
sifreli metin:
MFTWV DTQCP WPXPO PYPXP XPEYT XTKVZ WLJRP WDTYS LJTCW TFRFC WFZWD FYGTO TGTOT
GTOTO LGTOT
----------------------------------------

anahtari soylemiyorum siz bulursunuz, ilk bulan da acik metni yazar buraya

bunun icin neler yapabiliriz? , frekans analizi yapmak icin oldukca kisa bir
metin. yani harflerin sIkliklari ile calisamayacagiz. aslinda manasida yok,
cunku harf uzayimiz sadece 26 harf, yani anahtarimiz k'de 0 ve 25 arasinda
olabilir. onlari denemek cok daha kolay.
anahtar uzayimiz 2^5=32 den kucuk. yani bu sistemin anahtar uzayi 5 bitlik bile
degil.

k=3 bizim sifreleme anahtarimiz. o zaman bizim desifre icin anahtarimiz ne? k=-3
tabiki... yani desifre icin algoritmamiz F(x,-3)=x+(-3) mod 26 olacak. cok kolay
anlasiliyordur eminim, bu sefer diger yonde 3 kaydiracagiz alfabeyi.

bir diger sistem ise biraz daha farkli.

Atlamali alfabe sistemleri:
===================
bu sistemde ise alfabemiz kaydirilarak degil anahtarimiz ile carpilarak elde
edilecek. yani
F(x,k)=kx mod26 olacak.

burada biraz lise1 cebir bilgimizi yoklamamiz lazim. burada ne zaman bu
fonksiyonun tersi olur?. sifreleyecegimiz harfe x, sifrelenmis karsiligina y
diyelim. o zaman kx=y mod26 oluyor,
biz y'yi biliyorken x'e nasil ulasiriz?
x=y/k mod26 olur. yani k'nin mod26'da tersinin olmasi lazim. hmm, bu durumda ne
yapacagiz? ne zaman tersi olur. lise1 cebir derki
(bu döküman spymastersnake.org malıdır)
a'nin modn de tersi: b sayisi a nin tersi ise a*b=1 modn olmali.

******ONEMLI:
yani a ve n aralarinda asal degilse, yani OBEB(gcd)'si 1 degilse o zaman bu
sistemde geri donus olmayacaktir. cunku sayet anahtarimiz 2 olsaydi, A=0 bizi
F(A,2)=0*2=0=A verecekti, ve bunun yaninda 13 numarali harf N 'de bizi
F(N,2)=F(13,2)=13.2=26=0=A mod26 yi verecektir bize. yani sifreli metinde A
gordugumuzde bunun acik metinde asil kaynaginin N'den mi gelme yoksa A'dan mi
gelme oldugunu anlayamayacagiz... iste fonksiyonumuzun 1-1 olmasi bunun icin
onemli, tersinin olabilmesi icin.

bu olayi da k ve n nin OBEB'ini alarak hallediyoruz.
(k,n)=1 olan butun k anahtarlarinin tersi olacaktir...

eh, bu ne zarar sagladi bize?, saldiracak kisi butun anahtarlari denemek zorunda
degil, cunku biliyorki k=2 ve diger n ile aralarinda asal olmayan k anahtarlari
gecersiz. kullanilamaz. iste size en en en en basit kriptoanaliz. brute force
ile 26 harf denemeden hallediyoruz. (tabiki 26 harf denesek bile sorun degildi,
ama anahtar uzayimizin 26 degilde
345890273459872340587234098572304985723409587234 oldugu bir durumu dusunurseniz
o zaman bu tip saldirilar onemli olur...
(bu döküman spymastersnake.org malıdır)
bunun icin deneme metni veriyorum sifreli metin olarak, bunu da reply
edebilrisiniz ilk cozen sizseniz

-------
sistem:atlamali sistem F(x,k)=k*x mod26
alfabe uzayi: 26 harf ingiliz alfabesi A-Z
sifreli metin:
AVZQU WADAK WADAK QJIVJ IYIWI PAKJQ WCVOL UCNOL CVJAK QWCVM QPQMI JIPQJ QVYCV
AJQNQ LQPCL YAWQN
-------

kullanabilecegimiz anahtarlar hangisi?, artik k icin 0-25 arasi kullanamiyoruz.
mod26 icin, 26 ile aralarinda asal olan sayilar hangileri? 26=2.13, yani 2 ve 13
'e bolunmeyen her sayi 26 ile arasinda asal di mi?

BU SORUNU NASIL HALLEDERIZ?
peki bu 26 harfin hepsini kullanamayarak zarar ediyoruz. bunu nasil asariz...
sayet harf uzayimizin sayisi ASAL olursa, ondan kucuk butun sayilar bunu
bolemeyecektir, di mi?yani bir baska degisle aralarinda asal olacaklardir.
hmm, 26'ya yakin bir asal sayi buluruz. mesela 29, ve harf uzayimiz 29 harf
yapariz. ilk 26 si belli , A-Z... buna 3'de isaret ekleriz, toplam harf uzayimiz
29 olur o zaman.
mesela :
A-Z = 0-25 yapariz ilk bastaki gibi ve bu alfabeye +,-,= ekleriz. + =26, - =27
ve = =28 olsun. ne oldu artik elimizde kullanacagimiz 29 harf var, o zaman
mod29'da calisiriz artik F fonksiyonu icin. artik bu isaretleri de
kullanabilecegiz...

ve bunun guzel tarafi, 29 asal bir sayi oldugu icin kendisinden kucuk hicbir
sayiyla ortak boleni (OBEB) yoktur. yani yukaridaki aciklamaya gore 1-28 arasi
butun sayilari k anahtari olarak kullanabiliriz, cunku (k,29)=1 butun 0<k<29 lar
icin...

bununla da siz calisirsiniz artik.

bir sonraki yazida da bu iki sistemin karisimi olan afin sistemlere girmek
istiyorum. bu atlamaliyi anladiktan sonra o cok da zor degil. aralarinda asal
olmasi konusuna bakin. ve bir sayinin tersinin ne anlama geldigini (belli bir
modda) anlamaya calisin. tanimi bir kez daha veriyorum.
b sayisi modn'de a'nin tersi olsun. o zaman sunu saglamak zorunda a*b=1 modn
.... ornek: 3 ve 5 sayisi mod 14'te birbirlerinin tersidir.... 3*5=15=1 mod14.
ok? ama 2 nin mod14'te tersi yoktur. 2*a=1 mod14 hicbir sayida olmaz.
DIKKAT: (3,14)=1 ama (2,14)=2 ... di mi?... (a,b) nin anlami OBEB(a,b) idi,
hatirlarsiniz...

yorumlar, oneriler ve deneme sifreli-metinlerine cevaplari bekliyorum ... bu
sekilde olmasi hosunuza gidiyor mu? takip eden arkadaslar yorum yaparlarsa benim
isim cok daha kolay olur, hemde verimli olmus oluruz...

NOT: Ozellikle programcilikla ugrasan arkadaslarla beraber birseyler
yapabiliriz... buraya kadar olan kisim icin kalem kagit yeterli, ama sonrasinda
programcilikla ugrasan arkadaslar daha zevk alacaktir, eminim...

 

 
  Bugün 8 ziyaretçi (18 klik) kişi burdaydı!  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol