SEPTAGH
New member
Bu akşamki 2. konum...
Alfanumerik sifreler ve Sezar Sifresi kirilmasi mumkun sifrelerdir. Playfair onlar kadar tehlike arz etmese de yine de tam anlamiyla bi guvenlik saglio diemem. RSA ve KNAPSACK algoritmalari gunumuzde en cok kullanilan sifreleme algoritmalaridirlar. Bildigim kadariyla RSA daha fazla tercih edilen bi sifreleme methodu. Ozellikle 128 bitlik sifreleme anahtarinda kirilmasi yillar belki de yuzyillar alabiliyor. Sistem yoneticiligi yapan bi arkadasimin soledigine gore, Beowulf olarak bilinen bilgisayarlarla (her birinde 128 veya daha fazla islemcinin paralel calistigini hatirlatirim) 128 bitlik bir RSA sifresini 1 ay gibi bi surede kirmayi basarmislar. Tabi burda bu bir ay icerisinde sifreleme anahtarlarinin hic degistirilmedigini de soylemek isterim. Anahtarin 2 haftada bir degistirildigini dusunurseniz bu maksimum guvenlikte bir sisteme sahip olmaniz anlamina gelir.
1 Alfanumerik Sifreleme ve Sezar Sifresi
1.1 Basit Alfanumerik Sifreleme
1.1.1 Algoritma
Alfanumerik sifreler sifrelenecek olan metin veya kelime icerisindeki her harfin degerinin arttirilmasi veya azaltilmasiyla yeni bir karakter dizisi elde edilmesi ilkesine dayanir.
Diyelim ki sifrelemek istediginiz kelime “MART” . Ve diyelim ki sifreleme algoritmaniz her karakteri 1 arttiriyor. Yani;
M + 1 = N
A + 1 = B
R + 1 = S
T + 1 = U
Bunun sonucunda olusan yeni kelimeniz “NBSU” oldu. Simdi baska bir kelimeyi inceleyim. Diyelim ki bu sefer de “BABA” kelimesini sifreliceksiniz.
B + 1 = C
A + 1 = B
B + 1 = C
A + 1 = B
Sifrelenmis kelimeniz CBCB oldu. Soylemekte bi mahsur yok; bu sifrelenebilecek en kotu kelime
Buna bakan birisi neredeyse kelimeyi okuyabilir.
Simdi bir metin uzerinde calisalim. Sifreleyecegimiz metin “Baba bana kalem al” olsun
Ayni yolla sifrelersek kelimemiz su hale gelir
“Cbcb cbob lbmfn”
Bosluklari da sifreleyebiliriz (ki bu bize daha iyi bir guvenlik saglar). Ancak turkce de bi takim gercekler vardir. Onlardan biri de A harfinin turkcede en cok kullanilan harf olmasi. Sifrelenmis metine bakan birisi, metin icindeki en cok kullanilan harfi bulabilir. Ve eger biraz turkce biliosa bu harfin aslinda A harfi oldugunu anlar. Ornekte bu harf b harfidir. Sonucta b harfinin aslinda a harfi oldugunu anlayan birisi butun metni desifre edebilir. Tipki sizin yaptiginiz gibi her harften bir onceki alir ve metniniz kabak gibi ortaya cikar. Basit programlarda bu yontem kullanilabilir ve hizli calistigi icin de bilgisayari kasmaz. Ben bikac programimda bunu kullanmistim. Ama daha sonra en azindan sezar sifresini kullanmaya karar verdim.
1.1.2 Visual Basic Kodu
Sifreleme ve desifreleme yapan alt programlar asagidadir. Burda harfin ascii degerini 1 arttirip 256 ya gore modunu alioruz. Bu da bizim karakter setinde bi daire cizip dolasmamizi saglio
Sub sifrele(X As String)
Dim i As Integer
For i = 1 To Len(X)
Mid(X, i, 1) = Chr((Asc(Mid(X, i, 1)) + 1) Mod 256)
Next i
End Sub
Sub desifrele(X As String)
Dim i As Integer
For i = 1 To Len(X)
Mid(X, i, 1) = Chr((Asc(Mid(X, i, 1)) - 1) Mod 256)
Next i
End Sub
1.2 Sezar Sifresi
1.2.1 Algoritma
Sezar Sifresi olarak bilinen sifreleme aslinda bi alfanumerik sifrelemedir ancak kirilmasi biraz daha zordur. Once kendinize bir anahtar kelime secersiniz. Diyelim ki “deniz” sizin anahtar kelimeniz. Anahtar kelime secilirken icinde her harfin sadece bir kere gecmesi onemlidir. Sifelemek istediginiz kelime de “merhabalar” olsun. Islem asagidaki gibidir.
m e r h a b a l a r
d e n i z d e n i z
+____________________
(sifrelenmis kelimeniz)
Yani islem su hali aldi
m + d = yeni harf
e + e = yeni harf
r + n = yeni harf
.
.
.
Sifreleme anahtarimizi sifrelencek kelimenin uzerine eklioruz. Kelimemiz 10 harfi ve anahtarimiz da 5 harfliydi. Bu yuzden tekrar ekleme yaptik. Bu sekilde aslinda saglam bir sifreleme elde edioruz. Onceki yontemdeki A harfinden kaynaklanan zayiflik da ortadan kalkti gorduunuz gibi. Bu yontemin kirilmasi anahtar kelimenizin bulunmasiyla ya da kotu bir anahtar kelime secmenizle olabilir.
1.2.2 Visual Basic Kodu
Sifreleme ve desifreleme algoritmalarinin kodlari asagidaki gibidir.
Sub sifrele(ByVal x As String, ByVal anahtar As String)
Dim i As Long
Dim j As Long
Dim uzunluk As Integer
j = 1
uzunluk = Len(anahtar)
For i = 1 To Len(x)
Mid(x, i, 1) = Chr(((Asc(Mid(x, i, 1))) + Asc(Mid(anahtar, j, 1))) Mod 256)
j = (j Mod uzunluk) + 1
Next i
End Sub
Sub desifrele(ByVal x As String, ByVal anahtar As String)
Dim i As Long
Dim j As Long
Dim uzunluk As Integer
j = 1
uzunluk = Len(anahtar)
For i = 1 To Len(x)
Mid(x, i, 1) = Chr(((Asc(Mid(x, i, 1))) - Asc(Mid(anahtar, j, 1))) Mod 256)
j = (j Mod uzunluk) + 1
Next i
End Sub
Alt programi su sekilde kullanabilirsiniz
Call sifrele (sifrelencek metin,”deniz”)
Alfanumerik sifreler ve Sezar Sifresi kirilmasi mumkun sifrelerdir. Playfair onlar kadar tehlike arz etmese de yine de tam anlamiyla bi guvenlik saglio diemem. RSA ve KNAPSACK algoritmalari gunumuzde en cok kullanilan sifreleme algoritmalaridirlar. Bildigim kadariyla RSA daha fazla tercih edilen bi sifreleme methodu. Ozellikle 128 bitlik sifreleme anahtarinda kirilmasi yillar belki de yuzyillar alabiliyor. Sistem yoneticiligi yapan bi arkadasimin soledigine gore, Beowulf olarak bilinen bilgisayarlarla (her birinde 128 veya daha fazla islemcinin paralel calistigini hatirlatirim) 128 bitlik bir RSA sifresini 1 ay gibi bi surede kirmayi basarmislar. Tabi burda bu bir ay icerisinde sifreleme anahtarlarinin hic degistirilmedigini de soylemek isterim. Anahtarin 2 haftada bir degistirildigini dusunurseniz bu maksimum guvenlikte bir sisteme sahip olmaniz anlamina gelir.
1 Alfanumerik Sifreleme ve Sezar Sifresi
1.1 Basit Alfanumerik Sifreleme
1.1.1 Algoritma
Alfanumerik sifreler sifrelenecek olan metin veya kelime icerisindeki her harfin degerinin arttirilmasi veya azaltilmasiyla yeni bir karakter dizisi elde edilmesi ilkesine dayanir.
Diyelim ki sifrelemek istediginiz kelime “MART” . Ve diyelim ki sifreleme algoritmaniz her karakteri 1 arttiriyor. Yani;
M + 1 = N
A + 1 = B
R + 1 = S
T + 1 = U
Bunun sonucunda olusan yeni kelimeniz “NBSU” oldu. Simdi baska bir kelimeyi inceleyim. Diyelim ki bu sefer de “BABA” kelimesini sifreliceksiniz.
B + 1 = C
A + 1 = B
B + 1 = C
A + 1 = B
Sifrelenmis kelimeniz CBCB oldu. Soylemekte bi mahsur yok; bu sifrelenebilecek en kotu kelime
Simdi bir metin uzerinde calisalim. Sifreleyecegimiz metin “Baba bana kalem al” olsun
“Cbcb cbob lbmfn”
Bosluklari da sifreleyebiliriz (ki bu bize daha iyi bir guvenlik saglar). Ancak turkce de bi takim gercekler vardir. Onlardan biri de A harfinin turkcede en cok kullanilan harf olmasi. Sifrelenmis metine bakan birisi, metin icindeki en cok kullanilan harfi bulabilir. Ve eger biraz turkce biliosa bu harfin aslinda A harfi oldugunu anlar. Ornekte bu harf b harfidir. Sonucta b harfinin aslinda a harfi oldugunu anlayan birisi butun metni desifre edebilir. Tipki sizin yaptiginiz gibi her harften bir onceki alir ve metniniz kabak gibi ortaya cikar. Basit programlarda bu yontem kullanilabilir ve hizli calistigi icin de bilgisayari kasmaz. Ben bikac programimda bunu kullanmistim. Ama daha sonra en azindan sezar sifresini kullanmaya karar verdim.
1.1.2 Visual Basic Kodu
Sifreleme ve desifreleme yapan alt programlar asagidadir. Burda harfin ascii degerini 1 arttirip 256 ya gore modunu alioruz. Bu da bizim karakter setinde bi daire cizip dolasmamizi saglio
Sub sifrele(X As String)
Dim i As Integer
For i = 1 To Len(X)
Mid(X, i, 1) = Chr((Asc(Mid(X, i, 1)) + 1) Mod 256)
Next i
End Sub
Sub desifrele(X As String)
Dim i As Integer
For i = 1 To Len(X)
Mid(X, i, 1) = Chr((Asc(Mid(X, i, 1)) - 1) Mod 256)
Next i
End Sub
1.2 Sezar Sifresi
1.2.1 Algoritma
Sezar Sifresi olarak bilinen sifreleme aslinda bi alfanumerik sifrelemedir ancak kirilmasi biraz daha zordur. Once kendinize bir anahtar kelime secersiniz. Diyelim ki “deniz” sizin anahtar kelimeniz. Anahtar kelime secilirken icinde her harfin sadece bir kere gecmesi onemlidir. Sifelemek istediginiz kelime de “merhabalar” olsun. Islem asagidaki gibidir.
m e r h a b a l a r
d e n i z d e n i z
+____________________
(sifrelenmis kelimeniz)
Yani islem su hali aldi
m + d = yeni harf
e + e = yeni harf
r + n = yeni harf
.
.
.
Sifreleme anahtarimizi sifrelencek kelimenin uzerine eklioruz. Kelimemiz 10 harfi ve anahtarimiz da 5 harfliydi. Bu yuzden tekrar ekleme yaptik. Bu sekilde aslinda saglam bir sifreleme elde edioruz. Onceki yontemdeki A harfinden kaynaklanan zayiflik da ortadan kalkti gorduunuz gibi. Bu yontemin kirilmasi anahtar kelimenizin bulunmasiyla ya da kotu bir anahtar kelime secmenizle olabilir.
1.2.2 Visual Basic Kodu
Sifreleme ve desifreleme algoritmalarinin kodlari asagidaki gibidir.
Sub sifrele(ByVal x As String, ByVal anahtar As String)
Dim i As Long
Dim j As Long
Dim uzunluk As Integer
j = 1
uzunluk = Len(anahtar)
For i = 1 To Len(x)
Mid(x, i, 1) = Chr(((Asc(Mid(x, i, 1))) + Asc(Mid(anahtar, j, 1))) Mod 256)
j = (j Mod uzunluk) + 1
Next i
End Sub
Sub desifrele(ByVal x As String, ByVal anahtar As String)
Dim i As Long
Dim j As Long
Dim uzunluk As Integer
j = 1
uzunluk = Len(anahtar)
For i = 1 To Len(x)
Mid(x, i, 1) = Chr(((Asc(Mid(x, i, 1))) - Asc(Mid(anahtar, j, 1))) Mod 256)
j = (j Mod uzunluk) + 1
Next i
End Sub
Alt programi su sekilde kullanabilirsiniz
Call sifrele (sifrelencek metin,”deniz”)