KriptoGrafiye Giriş

Peki, sifreleme diye gordugumuz, o harflerle oynadigimiz oyun ne? , kelimeleri
alip, anahtarlar kelimeler ile bunlarda degisiklik yapmak... evet, genel olarak
bu kriptolojinin temeli. ogrenmeye buradan baslayacagiz zaten. bu klasik
kriptoloji'de kriptanaliz yapmayacaksaniz, elinizde bulmaca cozmek diye
nitelendirdigim sey var demektir. ha!, bu sakin kucumsuyoruz anlamina gelmesin,
bu konununda COK derin analizl(bu döküman spymastersnake.org malıdır)eri, sistemleri var, ama onlara burada giremeyiz
buyuk ihtimalle, ilgilenen ki$ilerin olacagini sanmiyorum. nerede kalmistik?
ogrenmeye baslamak icin, kriptolojinin nasil birsey olup olmadigini (yenir mi?
icilir mi?) anlamak icin, baslangicta temelleri boyle atmamiz lazim...

bu yazida temel bilgiler , arac gerecler vermeye calisacagim; ama hepsine
kisaca deginecegim, evet biliyorum buryi takip edenlerin hepsinin matematik
altyapisi ust duzey degil, ama burada mod islemini de sayfalarca anlatamam
tahmin edeceginiz gibi. onun icin burasi daha cok hic bilmeyenlere fikir
verecek, ne tur konulara ihtiyaci olacak diye bir fikir vermeli bence...

BUYUK SAYILAR + 2'lik SISTEM, NEDIR BU 'BIT'LER
------------------------------------------------
evet, madem kriptoloji ile ugrasicaz, elimizin altinda buyuk sayilar gorucez,
bunlarla dusunmeye alisacagiz, peki ama ne kadar buyuk? daha once bu buyuk
sayilarla bilgisayarlarin yapilari geregi bit'ler seklinde ifade edip ugrasmanin
daha kolay oldugundan bahsetmistik. ornek: programcilar bilir, bir karakter
normalde 8 bitten olusur. o da 2 uzeri diye baktigimizda, 8 bitle elde
edebilecegimiz 0-255 (bu döküman spymastersnake.org malıdır)arasinda 256 sayi vardir. onun icin bir karaktere 256
degisik veri aktarabiliriz (bir kerede tabi).
ayni sekilde , normal sartlarda c++ 'da bir long integer
32-bittir(derleyiciye/compiler'a gore degisir). o zaman,bir degiskene 0 - 2^32
arasinda degerler atayabiliriz demektir(i$aretsiz durumda tabiki, konuyu
karistirmamak icin detaya girmedim)...
8 bit =2^8=256
32 bit=2^32=4294967296
gibi...

simdi bakalim, buyuk sayilar ne kadar buyukmus... kriptolojiyle
ilgilenmeyenlerin bile ilgisini cekebilecek bir tablo yazicam assagiya, bir
kitaptan alinti (kitap amerikan, ornekler oraya uygun tabiki)... artik alisalim
sayilari 2^ (iki uzeri) diye dusunmeye... ( ' ^ ' uzeri demektir ) ... ayrica
hatirlayalim; 10 uzeri 5 (10^5=100000) bes basamakli bir sayi anlamina gelir.
assagidaki sayilarin buyuklugunu siz tahmin edin. ondan dolayi artik bu sayilara
isim vermektense bu sekilde ifade ediliyorlar.

eee, bize ne bundan, ne alakasi var bunun kriptografiyle, sifrelemeyle
diyebilirsiniz. biz ne guzel bulmaca cozecektik, harflerle oynayacaktik... ...
ama artik cok guclu aletler var insanlarin elinde. o sekilde yapilan islemler
oyle yada boyle cozulebilmekte, onemli bilgiler icin ise yaramamakta... daha
sonra goreceksiniz aslinda bu 128 bitlik bir sayi nasilda buyukmus meger, yada
ne kadar yetersizmis belkide(bu döküman spymastersnake.org malıdır)... neden olabilir degilmis bu kadar buyuk sayilarla
islemler yapabilmek, BILINMEYENI bulabilmek ...

gunde yildirim dusmesiyle olme ihtimali -> 9 milyarda bir (2^33)
piyango(US) kazanma ihtimali -> 4 milyonda bir (2^22)
yukaridaki ikisi bir arada (kotu gun) -> 2^55'te bir sansliymisiz
bir sonraki buzul cagina kadar zaman -> 14000 yil (2^14)
gune$in nova'ya donmesine kalan sure -> 10^9 yil. (2^30)
dunyanin yasi -> 10^9 yil. (2^30)
evrenin yasi -> 10^10 yil (2^34)
dunyadaki atomlarin sayisi!!!!!! -> 10^51(2^170)
gunesteki atomlarin sayisi!!!!!! -> 10^57 (2^190) (ne sadece 10^6 kati fark mi
var?, 1000 000)
galaksideki atomlarin sayisi!!!!! -> 10^67 (2^223) yani 256 bitlik bir sifredeki
rakam bundan daha buyuk
evrendeki atomlarin sayisi(karadelik haric)-> 10^77 (2^265) sadece 10 milyar
kati.
EVRENIN HACMI -> 10^84cc(santimetre kup) (2^280)

aslinda cok buyuk dedigimiz sayilarin o kadar da buyuk olmadigina bir iki ornek
vermek istedim. artik herkes bu sayilara isimler vermektense (milyar zilyon
zitrilyon gibi ) bunlari kisaca bitlerle ifade etme konusunda hemfikirdir
sanirim.

peki nedir bu bitler... cok detayli anlatmayacagim. hack ile ugrasan bilgisayara
asikar insanlar olarak cogunuz biliyorsunuzdur zaten (di mi? )... kisaca
ortaokuldan bildigimiz mod2 demektir... elimizdeki rakamlar sadece 0 ve 1 dir,
ve butun sayilar bu rakamlarla yazilir (normalde 0,1,...,9 rakamlari ile
yazdigimiz butun sayilar, bu onluk duzen oluyor)...

o zaman,
10'luk duzen 2'lik duzen
---------------- ----------
0 0
1 1
2 10
3 11
4 100
5 101
6 110
....

128 bitlik bir sayiyi demek 2'lik duzende yazildiginda (yani 0 ve 1 lerle) 128
tane basamagi olan sayi... yani 128 tane 0 ve 1'in bir araya gelmis hali...

aman ha, 5 bitlik 10110 sayisi (onbin yuz on) anlaminda degil, ... ok?.. eski
bir yazida bit'lerden bahsetmistik anahtar uzunlugunu anlatirken. bir yerden
sonra sifirdan baslayip anlatamiyorum. bazi seyleri , cok basit matematiksel
ifadeleri bildiginizi varsayacagim, en azindan ilk giris yazilarindan sonrasi
icin. ok?... herkesin seviyesini tahmin edemeyecegim icin cok GENEL sekilde
yaziyorum. sayet daha once duymadiysaniz bunlari buradan ogrenemeyebilirsiniz.
ama en azindan burada neyi ogrenmeniz gerektigine I$Ik tutariz. sonra foruma
sorarak cozum bulmaya calisiriz. aklima baska cozum gelmiyor.

MOD
-------
eh, biraz bildiginizi sayiyoruz dedik, ama yinede mod nedir diye anlatmamiz
lazim.
sIkIcI matematik derslerinden de hatirladigimiz bildigimiz mod bu (ortaokul)...
mesela
0 = 0 mod 5
1 = 1 mod 5
2 = 2 mod 5
3 = 3 mod 5
4 = 4 mod 5
5 = 0 mod 5 (bundan sonrasi basa donuyor)...
6 = 1 mod 5
...
mod 5 dedigimizde artik dunyamizda sadece 0,1,2,3,4 var. bundan buyuk degerleri
bunlara gore ifade ediyoruz...
mesela 54 = 4 mod 5... gibi...
peki negatif sayilar?
-3 = ? mod 5...
madem 5=0 (mod5), o zaman, 0 gordugum yere onu silip 5 koyabilirim demektir
bu... -3 = -3 + 0 = -3 + 5 = 2 mod5
ok?

bilmeyenler icin kolay yol : mod'lu islemlerde (HEPSINDE) bir sayiyi
sevmedinizmi yerine ayni sayinin moddaki baska bir degerini yazabilirsiniz.
mesela biz yukarida 0 yerine 5 yazdik. ayni sekilde bu baska islemlerde de
olabilir (US ALMA HARIC)...
or: 15-18=? mod5 'te 15 - 18 = 15 + 0 - 18 = 15 + 5 - 18 = 20 - 18 = 2 mod 5
gibi... (cok alakasiz oldu ama bilmeyenlere ornek olsun diye)...

daha fazla girmeyecegim matematik hesaplarina. zaten uzunca bir sure daha
fazlasina ihtiyacimiz olmayacak. yinede burada hic alakasi olmayan insanlarinda
oldugunu unutmamaya calisiyorum, dalar kopup gidersem hemen uyarin

gelelim COK ihtiyacimiz olacak diger matematik terimlerine

ASAL SAYI (prime number)
--------------------------
malum, 1 ve kendisinden baska sayiya bolunmeyen sayi. bu neredeyse butun
kriptografinin temelidir. yeri geldiginde coook tartisilacagi icin hic
girmiyorum simdi ... bir iki aklima ilk gelen ozellikleri:
- 1 sayisi istisnadir
- cift asal sayi sadece 2'dir. geri kalan butun ciftler 2'ye bolunur, yani asal
degildir (composite number).
- 3,5, 7... diye gittigine bakmayin, sayissi sinirsizdir (ispatli)...
- bize bir sonraki asal sayiyi veren bir fformul bilinmiyor.
- sIklIgI/dagilimi nispeten ongorulemezdirr (ek bilgi: ama yaklasik deger veren
fonksiyonlar vardir, meraklanmayin asla o kadar girmeyecegizEHEHEHEH)
- sayilar buyudukce git gide 2 asal sayi aarasindaki fark acilma egilimi gosterir
ufff, o kadar cok ki. basli basina master doktora tezi olan bir konu sayilar
teorisi(number theory). hic girmiyorum, bari bu yazida kaybolmayayim...
- bir sonraki asal sayiyi bulabilmek en buuyuk problemlerden biridir(zaman
acisindan). tabiki cok buyuk sayilardan bahsediyoruz.
- bu sebepten cok buyuk asallari bir yerdee tutamazsiniz.

ilginizi cekerse internette bu konuda zilyon tane site bulabilirsiniz,
amatorunden akademigine.

OBEB (ortak bolenlerin en buyugu) (gcd=greatest common divisor)
-----------------------------------------------------------

adi uzerinde aslinda, ortaokulda niye bu kadar zorlanmisiz anlamiyorum. 2 sayi
var ve bu sayilari bolen en buyuk sayi bize bu fonksiyonun cevabini verir. kolay
olsun diye fonksiyona gcd ismi verilir, ve 2 girdisi vardir, mesela gcd(12,8)=4
gibi... daha da tembel bir sekilde sadece (12,8)=4 diye de yazilir... sayi
teorisinde (yani kriptografide de) " (a,b) " diye gordugunuz aslinda a ve
b'nin OBEB'idir. ok?...

iki sayiyi bolen tek sayi 1 ise ARALARINDA ASAL(relatively prime) denir. bu
durum icin sayilarin asal olmasi gerekmez, sadece ortak bolen sayi olmasin
yeter. mesela 9 ve 26 aralarinda asaldir, ama ikiside asal degildir tek tek...
(9,26)=1 gibi... tamam?

simdilik bu kadar yeter(anlami= aklima bu kadar geliyor ). cok dallandirmadan
bitirelim konuyu...
buralarda merak ettiginiz vs konular varsa bu baslikta cevaplayarak devam
edebiliriz.

unutmadan, kriptolojide sadece tam sayilar ile ugrasacagiz. ustelik bunlar
pozitif olacaklar, yani -'li sayilari da mod ile halledecegiz ... o kadar da
karmasik olmayacak yani matematik olayimiz (nasil yalan, nasil yalan?!?!?!?! )

artik biraz kriptoloji konusmaya baslayabiliriz. forum ilk acildiginda biraz
tanimlara girmistim, simdi sifirdan baslamayi dusunuyorum, yinede ilk topic'lere
de baksaniz fena olmaz. anlatim tarzimi takip eden herkes biliyor, kitap yazar
gibi degil, okuyanin karsisinda anlatir gibi anlatmak daha da hosuma gidiyor,
daha yararliymis gibi geliyor bana, niyeyse?... geri kalan bilgiyi zaten
kitaplarda/nette de bulabilirsiniz. zaten oyle dokuman gibi yazacagim sey en
fazla bir kitaptan/dokumandan alinti/tercume olacaktir... o zaman da link
veririm sizlere ugrasmam yazmayla

evet, en buyuk problemimiz terminoloji. burada ortak seyler kullanmak
zorundayim, cunku kaynaklar neredeyse hep benzer seyler kullanirlar, ve baska
biryer okumaya calistiginizda bocalarsiniz. bir sure sonra kari$maya baslar.

kriptoloji bilginin sifrelenmesi. eh!, biz genel olarak haberlesmenin
sifrelenmesi olarak alacagiz. ama asil olay herhangi bir bilginin sifrelenmesi.
elimizde oncelike bir metin var (kisaca M diyebiliriz).

ilk basta cok basit sistemlerle calisacagiz. ve basit sistemin alfabeside basit
olur di mi?, ilk basta anlatimi kolaylastirmak icin, bilmeyenlerin baska
detaylarda kaybolmamasi icin buyuk harflerle calisacagiz. yani noktalama
isaretlerini ve kucuk harfleri vs gozardi ediyoruz simdilik. once bu metni
yollamak uzere uygun hale getirecegiz, isaretleri ayiklamak, harfleri kucultmek
buyutmek vs gibi...

ben yazarken turkce klavye kullanmiyorum (bkz. sekil a) . hem bunun icin hemde
zamani az olan ve tembel birisi oldugum icin en azindan baslangicta
anlatilanlara ornekleri kitaplardan hazir hesaplanmis ornekler vermek istiyorum.
aceleden yanlis degerler verip kafa karistirmanin manasi yok. zaten kontrol
edecek zamanim da yok. ..

hesap kitap yaparken ingilizce alfabedeki A-Z arasindaki 26 harfi 0-25 sirasiyla
numaralandiracagiz. istersek ileride buna bosluk, noktalama isareti falan
ekleyebilecegiz, mesela '.'=26, ','=27 vs gibi...

bu islemin adi encode etmek, kodlamak diyebilir miyiz buna?.ama henuz
sifrelemedik dikkat... simdi elimizde anlasilabilir, sifrelenmemis hazir metin
olacak (plaintext, P veya message M diye isimlendirecegiz ). kisaca bizim alfabe
dunyamiza(biz karar verdik basta) uygun sifrelenmeye hazir bilgiye/metne M veya
P diyoruz.

kisaca bu ilk elimizdeki gizlemek istedigimiz bilgi. saklariz, yollariz
tursusunu kurariz. ama yolda bir dusman var (E , enemy yada eavesdropper). o
yolda bu yolladigimiz paketi dinleyebilecek, ve anlasin istemiyoruz. o zaman biz
bunu sifreli metin haline getirip (ciphertext, C ) oyle yollayacagiz... peki
nasil sifreleyecegiz? bunun icin E'den farkimiz olmasi lazim, di mi? iste bu
fark SADECE benim ve mesaji alacak olanin ortak bildigi bir bilgi olmali.. buna
ANAHTAR diyoruz (KEY). genelde sifreleyen kisi A ile , paketi alan kisi B ile
gosterilir (ben oyle yapacagim en azindan). kriptoloji, kriptografi ,
kriptanaliz, kriptanalist , vs vs vs gibi bi ton tanimi onceden ilk topicte
yapmistim, yeniden kalabaliga gerek yok.

COK BASIT $iFRELEME
-------------------------------------------
cinslerine gore 2 ye ayrilir algoritmalar:
1) simetrik anahtar sistemleri (gizli anahtar, private key) : A ve B'deki
anahtarlar aynidir, sifreleyen anahtar ayni zamanda desifre de yapar. fonksiyona
bir kez sokarsiniz ( f(x) ), ve sonra o fonksiyonun tersine soktugunuzda eski
halini alir (ayni anahtarla) ... A ve B'nin guvenli(dinlenmeyen) bir sekilde bir
araya gelip(yada haberlesip) ORTAK bir anahtara karar vermeleri gerekir.

2) asimetrik anahtar sistemlir (acik anahtar, public key) : burada sifreleyen ve
desifre eden anahtarlar farklidir ve BIRISINI BILMEK DIGERINE DAIR EN UFAK BILGI
VERMEZ BIZE.... yani A mesaji B'nin SIFRELEYEN ANAHTARIYLA sifreler (acik
anahtar, public key) , sonra yollar ve B bu sifreli metini alir ve kendi DESIFRE
ANAHTARIYLA desifre eder ve okur mesaji. ne oldu? artik A ve B'nin bir araya
gelip ORTAK bir anahtara karar vermesine gerek yok. artik B gonul rahatligiyla
acik anahtarini A'ya email/telefon vs ile soyleyebilir. yolda dinleyen E icin
bu bir avantaj saglamaz, o anahtar SADECE SIFRELEYE BILIR. cozecek anahtar
sadece B'de gizli durmaktadir (private)

basit kripto sistemlerinde simetrik anahtarlar vardir sadece. en basitinden
baslayalim. ilk orneklerimiz hep harf harf sifreleme ile calisan sistemler
uzerine olacak (STREAM CIPHERS). daha ileride blocklar halinde veriyi (harfleri)
alip blocklar halinde sifreleyen sistemlere de deginiriz (BLOCK CIPHERS).

sifreleme islemimiz (encryption, encipher), ve desifre islemimiz (decrypt,
decipher) diye adlandiriliyor oyle veya boyle, bunlar bir fonksiyon olacak. buna
sifre, algoritma fonksiyon , veya cipher diyebilecegiz. sifreleme ve desifre
etme birbirinin tersi olacak. yani kisaca f(x)=x+3 ile sifreliyorsak , bunun
tersi olan f'(x)=x-3 ile desifre edecegiz. detaylar ileride.

encode etmek ne demek, niye boyle bir seye ihtiyac duyuyoruz.
bu sart cunku, oncelikle elimizde calistigimiz bir HARF-UZAYI olmali. ona gore
islemler yapmaliyiz. fonksiyona girecek ve cikacak seyleri bilmeliyiz. duz metni
(mesela bu yazi) sifrelemeye uygun hale getirmek uzere M (yada P) haline
cevirmek (encode etmek) bunun icin. ayrica bu tur sistemlerde harflerin sIkligi
analizler icin cok onemlidir, sistemin kirilmasi asamasinda. cogu zaman onun
icin bosluklar da kaldirilir. neyse detaylara girmeyelim cok ...

bu arada:M dedigimiz illa te(bu döküman spymastersnake.org malıdır)xt olmak zorunda degil, herhangi bir bilgi olabilir.
mesaj'i sadece yazi diye dusunmeyin, radyo dalgasi, bit-stream, mp3 dosyasi,
akliniza ne gelirse. kisaca mesaj

harf uzayi: adi uzerinde, kullanacagimiz harfler, mesela sadece buyuk harfleri
kullanacaksak 29 harfimiz olacak.soylemistim ben turkce klavye kullanmiyorum,
onun icin ingilizce harflerle anlatmak kolay olacak benim icin. yani
harf-uzayimiz , dunyamiz 26 harf olacak. A, ... , Z diye... istersek buna
bosluk ta ekleye biliriz ' _ ' diye. o zaman ne oldu? 30. istediginiz kadar
buyutursunuz, eger cephedeki askerlere sadece dusmanin yonunu soyleyecekseniz
size o zaman 8 tane harf yetecektir (ara yonlerle). ama benim bu yazimi
sifrelyecekseniz o zaman harf uzayinizin burada kac cesit karakter+rakam+isaret
varsa o kadar olmasi lazim...buraya kadar sorun yok di mi?...

eh, dunyamiz sadece buyuk harflerden olustugu icin mesajda (artik text
dusunuyoruz,karismasin isler simdilik)kucuk harfleri buyuk yapacagiz, bosluk
kullanamayacagiz, noktalama da yok... o zaman okunmasi bakmasi incelemesi zor
olur M'nin, hadi birde 5'lik bloklar halinde yazalim goze guzel gozuksun. hmm,
bakalim nasil olacak.
elimizdeki mesaj "ilk denemem!" olsun
encode edelim bunu: harfleri buyutecez, bizim harf-uzayimiza uygun hale getirip
noktalamayi kaldiracagiz, en son da 5'erlik gruplarla yazacagiz ki kolay
izleyebilelim.
P="ILKDE NEMEM"
butun yaptiklarimizin isleri kolaylastirmak icin kabul ettigimiz seyler oldugunu
goruyorsunuz, henuz bisey sifrelemedik bile.

simdi bizim fonksiyonumuz soyle olsun:
f(x)= x+k mod26 ... yani her 'x' harfi fonksiyona girdiginde k anahtari ile
toplanicak, ve mod 26 da cikan deger cikti olacak. onceden anahtara karar vermis
olsunlar. diyelim 3. bu ne demek , aslinda her harfi 3 kaydirin. stream
cipher'da harf harf calisacaktik di mi? o zaman,
I harfi icin : f(I) = f(8) = 8+3= 11 mod26 -> f(I)=L ( 11'in harf karsiligi L )
L harfi icin : f(L) = f(11) = 11 +3=14 mod26 -> f(L)=O
.... diye devam eder... (dikkat bir harfin sonucu 26 yi a$sa basa donecekti
(mesela f(Y)=24+3=27=1 mod26)

butun metin o zaman butun Plaintext'i fonksiyona soktugumuzda f(P)=C olacakti
ya.

P= ILKDE NEMEM
C= LONGH QHPHP (umarim aceleden yanlis yapmamisimdir )...

alin size sifreli metin C... gonul rahatligi ile gonderebiliriz (sezar boyle
dusunuyormus, onun icin adi caesar cipher kalmis )...
karsi taraf bunu cozmek icin her harften anahtar kadar harfi cikaracak (-3) ,
yani f'in tersini ... onu anlatmaya gerek yok sanirim f'(x)= x-3 mod26

ANAHTAR UZAYI:
simdi asil olaya gelelim, yazismalarimizi dinleyip inceleyen E ne yapabilir.
E'nin bizim harf uzayimizi ve algoritmanin calismasini tamamen ve eksiksiz
bildigini BASTAN KABUL ETTIGIMIZI biliyoruz(BKZ. ILK TOPICLER,ORADA ACIKLANDI
NIYE E HERSEYI BILIYOR KABUL EDILDIGI)... E'nin tek bilmedigi sey anahtarimiz,
yani K=3 ... o zaman ne yapabilir. K'nin kac tane ihtimali var (entropisi kac?
), 26 degil mi? , cunku 0-25 arasinda olmayan butun degerleri icin f(x)= x+k
mod26 'da K nin yerine 0-25 (bu döküman spymastersnake.org malıdır)arasindaki degerini yazariz ( hatirla: mod26 ) ...
eh, 26 'da 2^4 ve 2^5 arasi bir sayi, yani bu sistem 5 bitlik bile degil

yani: BIZIM ANAHTARIMIZIN OLABILDIGI TUM UZAY/KUME EN FAZLA 26 DEGISIK SEKILDE
OLUR. anahtarimizin entropisi 26. bundan farkli hangi sayiyi alirsak alalim yine
buraya dusecegiz mod26 sayesinde.

bu sistemde her harf belirli bir harfe gitti, dikkatinizi cekerim. yani A
herzaman A+3=D oldu gibi... o zaman buna bir care bulmak lazim... burada
yaptigimiz SHIFT, yani kaydirma. her harfin karsiligi bir baska harfe gidiyor,
ve her harf BELIRLI BIR HARFE gidiyor. bu da bizim icin bir sorun degil mi?...
eh , simdilik bu kadar yeter, devami baska bir yazida

biliyorum, hala biryerlere gelememis, cok ilerlememis gozukuyoruz. ama bence
temelinde (en azindan ILK BASTA) bazi kavramlari ogrenmeyip, dusunce tarzimizi
yerlestiremezsek ileride yaptiklarimiz anlamsiz kalacakti. yoksa bir yazida arka
arkaya anlamsiz gibi gozukecek, nedenini anlamayacagimiz basamaklarda yurumek
manasiz geldi bana. bu konuda da yorum/onerilerinizi bekliyorum.
baska seyler okurken kitaplarda buraya yazabilecegim temel seylere rastladigimda
hemen yazasim yeni bir topic olarak geliyor.

bu seferde sansimiza amaclar vurmus... neler amaclanir, neler yapilabilir
kriptografiyle.

herseyden once, kriptografiyle bir sistemde ozellikle bilgisayar gibi cok
degiskenli bir sistemde, ve yine daha kotusu bir cok bilgisayar/network olan
internet gibi COOK buyuk yapilarda organizmalarda kriptografiyle butun guvenlik
sorunlarinizi cozemezsiniz, cozdugunuzu sanirsaniz sadece yanilmis
olabilirsiniz. oncede demistim, on kapiniz 24 kilitli 3 katmanli belcika
celiginden kapi bile olsa (yok oyle birsey ) arka pencereniz bildigimiz 1.5
cmlik cam ise o ev guvende degildir. di mi?...
bu sadece kapidan kimsenin girmeyecegini garantiler bize. hepsi o kadar. daha
kotusu kriptografi o kadar derin incelenmesi gereken bir konudur ki, amatorce
yapilan uygulamalarda cogu zaman guvenlik aciklari olmasi kacinilmazdir. tabi bu
sinif arkadasiniza karsi yeterli olabilir(gerci arkadas var arkadas var EHEH).
ama daha ciddi guvenlik icin gercekten derin cok tarafli bir calisma yurutmek
gerekir. gayet ciddi, profesyonel calismalarin nasil kirildigini dusunun),
mesela PKzip algoritmasi (dictionary attack'i demiyorum), yada daha ciddi olan
GSM algoritmasi A5, aciga cikmasi ile saldiri gelistirilmesi bir olmus 3-5 saat
kadar surede kirilmis.

neyse, konuyu cok dagitmadan asil yazmak istedigim konuya gelecegim, bu yazi
oncekilere gore daha az teknik icerige sahip olacak (umidimiz )...

kriptografi diyoruz, sifreleyecegiz diyoruz, saklamak istedigimizi , yada
gondermek istedigimiz bilgiyi koruyacagiz diyoruz. peki sadece bu kadar mi
yapabildiklerimiz... tabi ki hayir... bu konu geni$ olarak 3-4 baslik altinda
toplaniyor:

1) privicy(mahrimiyet, kisiye ozel): bu gizlilik anlaminda, ama ozel hayat'taki
gizlilik anlaminda. mesela insanlarin ki$isel bilgilerinin gizli kalmasi gibi.

2) confidentiality(gizlilik): aslinda yukaridaki ile cok yakin anlami var, ama
aradaki nuans onemli. (bu döküman spymastersnake.org malıdır)iki kelimenin arasindaki ince farki bilmeyenler guzel bir
sozlukten faydalanabilirler, ama dedigim gibi, ikiside genel olarak BILGININ
GIZLI KALMASI olarak dusunulebilir. bu ilk iki aciklama icin ornek vermeye gerek
yok sanirim.

3) data integrity(Veri butunlugu): bunu anlatmak daha kolay, verinin butunlugu
bile anlatiyor herseyi. bana gonderilen bilgi degistirilmis mi(sifreli yada
sifresiz olsun)?, eksik var mi ? yada sirasi bozulmus, karistirilmis mi?, iste
verinin butunlugu kisaca bu... mesela, ben sahibi oldugum sirketin bir ofisine
"xx'e 100 milyon odeme yap" diyorum, ama dinleyen kisi onu xy diye degisitiryor,
kendine gelsin diye. yada miktari degistiriyor, yada yolladigim veri'den bilgi
siliyor, sirasini karistiriyor, yada 3 parcada gonderilen bir verinin bir kismi
(ortadaki mesela) silinebilir vs vs vs .

4) non-repudiation (teyid- inkar edememe) : buna tam bir karsilik bulamadim, bu
da yanlis oldu zaten, gercek anlami; veriyi yollayanin yolladigini daha sonra
inkar edememesi. yani ben buraya kriptografik olarak dijital imza ile bir post
atsam, daha sonra attigimi inkar edemeyecek olmam.

5) authentication/authorization: adi uzerinde otorizasyon. kimlik tanimlanmasi.
ve yetki izni verilmesi. en basitinden ATM'ye banka kartinizi soktugunuzda
kartin arkasindaki manyetik bant sizin kimliginizi bildirir(identification), siz
pin yazarak deklare ettiginiz o kisi oldugunuzu ispatlarsiniz(authentication),
ve bu sayede sisteme giris icin yetki alirsiniz(authorization)

ayrica, bunlardan farkli olarak bazi bir verinin tekrar ulasmasi halinde onun
gecersiz olmasi var(data integrity'de kullaniliyor), bu yukaridaki bircok
maddenin birlesiminden oldugu icin ayri bir maddeymis gibi yazmadim. anlatmak
istedigim: ben xx'e 100 milyon odeme yap diye haber gonderdigimde, xx bu paketi
yolda kaydedince aynen kendisi bir kez daha yollayabilirdi, fazladan 100M daha
alirdi o zaman. yada, askeri haberlesmeyi dusunun, dusmanin yerini cepheye
bildiren telsiz gorusmesini kaydedip, 3 gun sonra tekrar yayinlayip ayni telsiz
gorusmesini oraya yeniden bir dusman varmis gibi gosterebilirim. yada bir ucagin
ben dusman degilim haberlesmesini kopyalayip ( havacilikla ilgisi olanlar bilir,
IFF = Identify-Friend-or-Foe) , kendi ucagimda ulke sinirlarina girdiginde de
yayinlayabilirdim di mi? yada uyduya bilmem kac derece don diye giden haberi,
alip 100 kere daha dondururdum di mi? (hanim! TRT biraz karincali gosteriyor,
ben bi antene bakim gelim). bankamatiklerin merke!
zle olan haberlesmesi dinlenip yapilabilecekleri dusunsenize vs vs vs... tabi
kripto butun bunlara cozum buluyor, hemen heveslenmeyin

butun bu maddelere daha 100lerce ornek verilebilir.

peki bir kripto algoritmasinin veya protokolun iyi yada kotu olmasi nedir? bu
nasil kistaslara gore belirlenir? bunu da bir sonraki yazida ele alalim.

onceki yaziya, sabah sabah birsey anlamadim valla yorumu gelince ayni zamanda
daha az teknik (sayisal) bilgiler iceren yazilar da yazmaya karar verdim. bu
sekilde yonlendirmeniz iyi oluyor. buradaki arkadaslarin , ilgilenenlerin hangi
yonlerle ilgilendigini bilmek isimi kolaylastirir. her yazidan belli oluyordur,
hangi seviyede yazmak konusunda kafamda hep 'leri oldugu. o yuzden sizden gelen
tepkilere gore yonelecegim. ama "nasil GSM kirariz, ATM'ye birsey yapilabilir
mi?" gibi sorular haric tabik(bu döküman spymastersnake.org malıdır)i... 2 sebepten dolayi, 1) burada bu konularda var
olan ataklarin teorisini burada isleyebilecek duzeyde degiliz(henuz) )
2)bunlar uygulamada, pratikte oyle bir program calistirip birisinin
bilgisayarina saldirmaya benzeyen basit seyler degil. sadece ataklar
gelisitiriyor ve teoride guvenlik kiriliyor. mesela GSM otorizasyonlari vs...

XOR

1
Hosted by www.Geocities.ws