Kimyada Şifreleme

'Konu Dışı Başlıklar' forumunda Mavi_Sema tarafından 30 Nisan 2009 tarihinde açılan konu

  1. Mavi_Sema

    Mavi_Sema Özel Üye

    Sponsorlu Bağlantılar
    Kimyada Şifreleme konusu Kimyada Şifreleme - Kimyada Şifreleme Nedir

    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...
     

Bu Sayfayı Paylaş