Salı, Nisan 26, 2011

ŞžİFRELEME YÖNTEMLERİ

Þifreleme nasıl yapılır ve hangi yöntemler kullanılır. Bu sorunun cevabını örneklerle açıklamaya çalışacağım. En basitinden en karmaşığına doğru ilerleyelim.

Örnek :

SEMİH ----> HİMES

Bu en basit yöntemdir, çözülmesi saniyeler bile almaz fakat zamanında Leonardo Da Vinci'nin notlarını bu şekilde kaydettiğini unutmayalım. Aynı mantıkla başka bir örnek:

Örnek :

KARABASAN ----> LBSBCBÞBO

Hemen çözdünüz değil mi? Bu örnekte yazının devamında "Þifreçözüm" ana başlığı altında inceleyeceğim bir noktanın altını çizeyim yeri gelmişken. Harf tekrarlarına dikkat ettiniz mi?

(cok basit arkadaslar)

Metni Gizleme Yöntemi :

Amaç şifrelenmiş bir metni çeşitli dönüşümler uygulayarak başka bir metnin içine yerleştirmektir. Gayet basit bir örnek metnin tüm harflerini başka bir metinde sözcüklerin ilk harflerine gizleyerek verilebilir.

Örnek :

Ben ilk lafımı yazıp aşkımı zincirledim.

Lakin her durum için böyle bir şeyi oluşturmak kolay değildir ve zaman alır. Ayrıca anlamlı bir metin oluşturabilmek için yüksek yapay zekalı uygulamalar geliştirmek şarttır. Günümüzde doğal dilleri anlamada çok fazla gelişme kaydedilememişken, öyle olsa bile çok rahat kırılabileceğini göz ardı etmemek gerek. Bazı metin gizleme yöntemleri de şunlardır:

Harf İşaretleme : Metne gizlenecek harflerin kağıda daha derin işlenmesidir. Daha koyu değil, o zaman herkes anlardı. Daha derin, ancak belli bir açıyla bakıldığında anlaşılabilecek şekilde.

Görünmez Mürekkep : Belli bir ısıya ulaşmadan ya da kimyasal yöntemler kullanılmadan okunamayacak özel bir mürekkep ile yazılır.

İğneleme : Gizlenecek harfler gözle görülmeyecek biçimde iğne ile delinir, kağıt ışığa tutularak okunur.

Bu örnekler çok eski gibi durmaktadır, fakat aynı mantıkla çalışan günümüzden bir örnek verebiliriz. 256 bitlik resimlerimiz olduğunu düşünelim. 256 bitlik resmin son bitinin değiştirilmesi resimde göz ardı edilebilecek derecede küçük bir değişikliğe sebep olur. Böylelikle pek çok resmin olduğu bir saklama biriminde istenilen bilgi değiştirilen bitler yardımıyla saklanabilir.


Yerine Koyma Yöntemi :

Düz bir metindeki harflerin yerine başka harf, sayı veya değer koyma yöntemidir. Sezar şifresi bu yöntemin en iyi örneklerindendir. Sezar şifresinde her harf kendinden sonraki üçüncü harfle yer değiştirmektedir. Daha sonra "Algoritmalar" başlığı altında inceleyeceğim için şimdilik küçük bir örnek veriyorum.

Örnek :

SEN DE Mİ BRUTUS -------> UHP GH İL DTYVYU
Tek Kullanımlık Þerit

Bu yöntemde de şifrelenecek metin uzunluğunda bir anahtar kullanılır. Bu anahtar metin için üretilmiştir ve tek kullanımlıktır. Bu yöntemin şifrelemedeki en güvenilir yöntem olduğunu söyleyebiliriz. Kullandığımız şeritin içeriğinin rastgele olması güvenilirliği açısından çok önemlidir.

Öncelikle şifrelenecek metnimizin uzunluğunda rastgele bir anahtar üretiriz. Ardından metnimizdeki harflerin alfabemizdeki sayısal karşılığı ile ürettiğimiz anahtardaki harflerin sayısal karşılıklarını toplarız. Eğer toplam alfabemizdeki harf sayısını aşıyorsa alfabemizdeki harf sayısını toplamdan çıkartırız. Daha sonra oluşan metni ister sayısal karşılığını kullanarak ister harf karşılığını kullanarak şifreli metin haline getiririz. Çözmek için ise bu işlemlerin tersi uygulanır. İletiyi alacak kişiye şerit ulaştırılır, şeritteki harflerin sayısal karşılıkları şifreli metindeki harflerin sayısal karşılıklarından çıkartılır. Eğer sonuç eksi çıkıyorsa alfabemizdeki harf sayısı sonuca eklenir. Elde edilen sayısal karşılığın harf dönüşümü yapılarak düz metne ulaşılır.

Saldırganın şifreçözüm yapabilemesi için şeridi eline geçirmesi gerekli, başka hiç bir yolu yok. Saldırganın elindeki işe yarayabilecek tek bilgi ise metnin uzunluğundan anahtarın uzunluğunu bilmesidir fakat şeridi ele geçirmediği sürece metni kırması mümkün değildir. Bu yüzden tek kullanımlık şerit yönteminin güvenilirliği çok yüksektir.


Örnek :

Düz Metin : EÃ�İLMEZ BAÞIN GİBİ GÖKLER BULUTLU EFEM
Anahtar : DAÃ�LAR YOLDAÞIN GİBİ SANA NE MUTLU EFEM


E Ã� İ L M E Z B A Þ I N G İ B İ G Ö K L E R B U L U T L U E F E M
D A Ã� L A R Y O L D A Þ I N G İ B İ S A N A N E M U T L U E F E M



Yukarıdaki örnekten de rahatça anlayabileceğimiz gibi anahtarın yani tek kullanımlık şeritimizin uzunluğu düz metnimizin uzunluğuyla aynı olmak zorundadır. Ben de harf sayısını eşitlemek için düz metnimizde bir değişikliğe yol açmayacağından metnimize bir boşluk ekledim.


6 9 12 15 16 6 29 30 2 1 23 11 17 30 8 12 2 12 30 8
5 1 9 15 1 21 30 28 18 15 5 1 23 11 17 30 8 12 2 12

Sayısal dönüşüm yaparsak :


19 14 15 6 21 30 2 25 15 25 24 15 25 30 6 7 6 16 30
30 22 1 17 1 30 17 6 30 16 25 24 15 25 30 6 7 6 16


Üst kısmın devamı :



Þifreli Metin : 11, 10, 21, 30, 17, 27, 59, 58, 20, 16, 28, 12, 40, 41, 25, 42, 10, 24, 32, 20, 49, 26, 16, 23, 22, 60, 19, 31, 45, 41, 49, 39, 40, 55, 36, 13, 13, 22, 46

Sayı dizisi haline getirmiş olduğumuz şifrelenmiş metnimizden elimizdeki anahtarı kullanıp aynı işlemleri tersine uygulayarsak düz metnimize ulaşabiliriz :

EÃ�İLMEZ BAÞIN GİBİ GÖKLER BULUTLU EFEM

Aşağıda C yazılım dili ile yazmış olduğum Tek Kullanımlık Þerit yöntemini kullanan bir örnek mevcut.



Kaynak Betiği Uygulaması

Matris Yöntemi :

Matris yönteminde B=A-1 eşitliğini sağlayan A ve B gibi iki matrisimiz olsun. Doğal olarak A.B=B.A=I eşitliği vardır. C gibi bizim birazdan kendimizin oluşturacağı bir matris ve D gibi aşağıdaki denklemi sağlayacak iki matrisimiz olsun.

A.C=D
B.D=B.A.C=I.C=C

Bu yöntem işimizi görecek ve gayet de zevkli. Öncelikle alfabemizdeki harfler için sayısal karşılıklar bulalım.


A B C Ç D E F G Ã� H I İ J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
N O Ö P R S Þ T U Ü V Y Z . ,
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32


Örnek :

Þifrelemek istediğimiz metnimiz HAYAL SANATLARI KULÜBÜ olsun :


H A Y A L S A N A T L A R I K U L Ü B Ü
10 1 28 1 15 30 22 1 17 1 24 15 1 21 11 30 14 25 15 26 2 26



Toplam 22 değer var. Bunlardan 3x8 matris elde edelim.



Matrisin son iki değerine dikkat edelim. 22 değerden 3x8 matris elde edebilmek için boş kalan son iki değeri metni etkilemeyeceğinden boşluk değerine karşılık gelen 30 sayısı ile doldurdum. Þimdiki basamakta da rastgele değerleri olan 3x3 bir matris ile, A matrisi olur kendisi, C matrisini çarpalım. Oluşturacağımız matris 3x3 olmak zorundadır çünkü C matrisimizin satır sayısı 3'tür. Matematiksel işlem yapabilmek için ve A matrisi tersi alınabilir kare bir matris olduğundan 3x3'lük bir matristir. Yani A matrisinin satır ve sütun sayısı C matrisinin satır sayısına bağlıdır. Ayrıca oluşturduğunuz A matrisinin tersi alınabilir olduğundan emin olun yoksa metni şifreleseniz bile çözmeniz mümkün olmaz.







Sayısal dönüşüm yaptığımız ilk metni tekrar yazalım.

Düz Metin : 10, 1, 28, 1, 15, 30, 22, 1, 17, 1, 24, 15, 1, 21, 11, 30, 14, 25, 15, 26, 2, 26, 30, 30

Þifrelenmiş Metin : 75, 54, 138, 70, 50, 163, 137, 93, 23, -22, 65, -9, 29, 55, 25, 2, 89, 79, 153, 96, 52, 189, 167, 123

Gördüğünüz üzere düz metinde pek çok tekrar eden harf vardı ama şifrelenmiş metnimizde hiç yok. Böylece basit düşünen şifre kırıcıların işlerine başlayabilecekleri önemli bir noktayı ortadan kaldırdık.

Gelelim şifrelenmiş metnimizin çözülmesi aşamasına. Metnimizi şifrelerken kullandığımız A matrisinin tersi olan B matrisini şifrelenmiş metni çözmek için kullanacağız.



O halde;



B.D=C eşitliğini kullanarak;





Tek satır haline getirip sayılara karşılık gelen harfleri yazarsak başlangıçtaki metnimizi elde ederiz:

HAYAL SANATLARI KULÜBÜ


Algoritmalar


Algoritmayı basitçe bir yöntemi baştan sona adım adım hayata geçirmeyi sağlayan bir yönerge olarak tarif edebiliriz. Veri şifreleme için kullanılmış ve kullanılmakta olan bazı algoritmalara genel olarak değinelim.
Skytale

Skytale M.Ö 475 yılında Kuzey Yunanistan topraklarında bir kent olan Sparta'da geliştirilmiş ilk şifreleme aletidir. O dönem için askeri bir devrim olan bu basit aygıt dünya tarihinde bir ilktir. Bir çubuğun etrafına sarılmış düz uzunca bir kağıda yazılan metin kağıt düzleştirildiğinde anlaşılmayan bir metne dönüşür.

Daha iyi anlaşılabilmesi için bir örnek vereyim.

Örnek :

İletmek istediğimiz metnimiz

SAVAÞ BİTTİ YAKINDA MAPUSHANE ESİRLERLE DOLACAK

olsun. Çubuğumuz da bir sargısında sekiz harf döndürecek kalınlıkta ve altı sıra olsun. Anlaşılması daha kolay olsun diye kat oluşumunu engellemek için harf sayısını fazla tuttum. Ancak doğal koşullarda böyle bir şeye ihtiyaç yoktur. Metnimizi bu aygıtı kullanarak şifrelersek elde edeceğimiz metin uzun kağıdımızda yukarıdan aşağıya şu sırada olacaktır;


S B Y A S E R L A İ A H S L A V T K M A İ E C A T I A N R A Þ İ N P E L D K D U E O



Þifrelenmiş metnimizi çubuğun etrafına sararsak şu şekli elde etmiş oluruz:


S A V A Þ
B İ T T İ
Y A K I N D
A M A P U
S H A N E
E S İ R L E
R L E D O
L A C A K


Sezar

M.Ö 60'lı yıllarda ünlü Roma İmparatoru Julius Caesar düz metin şifrelemeyi askeri anlamda kullanan ilk kişi olarak tarihe geçer. Sezar kullandığı yöntemde alfabedeki harfleri kendinden sonraki üçüncü harfle değiştirmiş. Sezar algoritması şöyledir;


<--- Çözme Yönü




A B C Ç D E F G Ã� H I İ J K L M N O Ö P R S Þ T U Ü V Y Z
A B C Ç D E F G Ã� H I İ J K L M N O Ö P R S Þ T U Ü V Y Z

Þifreleme Yönü --->





Bu yöntemde bitişi başlangıca bağlayıp bir döngü haline getiririz. Sezar üç harf atlayarak kullanmış. Biz elbette daha farklı şekilde kullanabiliriz. Þifreyi çözmeyi zorlaştırmak için sıralı bir harf dizini yerine rastgele harf dizini kullanmak çok daha mantıklı. Yine de bu algoritma çok rahat kırılabilir. Bunu yazının devamında Þifreçözüm altında inceleyeceğim. Aşağıda C yazılım dili ile yazmış olduğum Sezar algoritmasını kullanan bir örnek mevcut.


Kaynak Betiği Uygulaması

Enigma

Biraz da 2. Dünya Savaşı'nın kaderini değiştiren Enigma'dan bahsedelim. Özü Rotor Makinasının işleyişine dayanan Enigma Alman Arthur Scherbuis tarafından geliştirilmiş bir şifreleme aracıdır.

Rotor makinasıysa veri giriş ve çıkışı için iki ayrı levhadan oluşan bir disktir. Hem veri giriş levhasında, hem de veri çıkış levhasında 26 adet bağlantı noktası bulunmaktadır. Makinanın gizemini de bu bağlantı noktalarının birbirine rastgele bağlanması oluşturuyordu.

İngilizler Almanların Enigma ile şifrelenmiş belgelerini bir türlü çözemezler, ta ki bir baskında bir Enigma aygıtını ellerine geçirinceye kadar.

Müttefik kuvvetlerde şifrebilimcilik yapan bilgisayar biliminin babası İngiliz Alan Turing, kendisi o ünlü Turing makinasının mucididir, işlem gücü günümüz adi hesap makinalarından bile düşük ilk bilgisayarlardan sayılan geliştirdikleri Colossus adlı bilgisayarla Enigma'yı kırmayı başarmıştır.

Bunun ardından Almanların ilk saldırıyı yapmalarına izin veren İngilizler daha sonra savaşı lehlerine çevirmişlerdir.


Blowfish

Bruce Schneier tarafından 1993'te yazılmış algoritmanın bazı açıkları bulunmasına rağmen yine güvenli olarak kabul görmekte. Anahtar uzunluğu ile 32 bit ile 448 bit arasında değişebilir. Bruce Schneier daha sonra Blowfish'teki gedikleri kapatarak Twofish adında yeni bir algoritma daha yazmıştır.
Vigenère

Blaise de Vigenère adlı bir Fransız tarafından 16. yy'da bulunan bu algoritmanın mantığı çoklu alfabe kullanımına dayanır. Vigenère algoritmasında bir düz metnimiz bir de kendini tekrar eden bir anahtarımız vardır. Düz metnimizdeki harflerimiz anahtar sözcüğümüzün alfabedeki sırası kadar ötelenir. Bu şekilde tekil alfabeli algoritmaların en zayıf noktası büyük ölçüde kapatılmıştır çünkü böylece harf sıklıklarının eşitsizlikleri ortalama bir değere çekilmiş olur. Yine de Vigenère algoritması 19. yy başlarında kırılmıştır.

Örnek :

Düz Metin : BİRLİK YAZILIM

Anahtar : SEMİH



B İ R L İ K Y A Z I L I M
S E M İ H S E M İ H S E M İ
2 12 21 15 12 14 30 28 1 29 11 15 11 16
22 6 16 12 10 22 6 16 12 10 22 6 16 12


->


Þifreli Metin : 24, 18, 37, 27, 22, 36, 36, 44, 13, 39, 33, 21, 27, 28

Þifreli metnimiz artık bir sayı dizisi. Anahtarımız da belli SEMİH, istediğimiz zaman bu işlemi tersine çevirerek düz metni elde edebiliriz. Aşağıda C yazılım dili ile yazmış olduğum Vigenère algoritmasını kullanan bir örnek mevcut.

Kaynak Betiği Uygulaması

Skipjack

Skipjack düz yazıyı 64 bitlik parçalar halinde 80 bitlik anahtar kullanarak 32 defa yinelenen bir dahili döngü kullanarak şifrelemektedir. Skipjack kullanımı gizli olan bir algoritmadır. Sadece belirli yonga ve donanımlarla kullanılabilmektedir.
D.E.S

IBM tarafından geliştirilen DES 1977 yılında Amerikan hükümeti tarafından bir standart olarak kabul edilir. Simetrik anahtarlı bir algoritma olan DES ilk çıktığından beri pek çok saldırıya uğramış. Bunlardan bir kısmı başarılı olmuş. Günümüzde DES en bilinen algoritmalardan biridir ve yaygın olarak kullanılmaktadır. Lakin yine de D.E.S artık güvenilir bir algoritma olma özelliğini yitirmiştir.




Düz yazıyı 64 bitlik parçalar halinde 56 bitlik anahtar kullanarak şifreli metin haline getirir. Düz yazı çeşitli işlem ve yedeklemelerden geçtikten sonra oluşan veri daha güvenli olması için düz yazı ile XOR'lanır. Bu döngü her seferinde anahtarın farklı bitleri kullanılarak 16 defa tekrarlanır.
Üçlü D.E.S

Üçlü DES, DES algoritmasının üç defa kullanıldığı bir algoritmadır ve DES'e göre daha güvenlidir. Üçlü DES'te düz metin 64 bitlik parçalar halinde 192 bitlik anahtar yardımıyla şifrelenir. Anahtarın ilk 64 biti ile düz yazı ilk şifrelemeden geçer. Ardından şifrelenmiş metin anahtarın ikinci 64 bitlik kısmı ile çözme işlemine tabi tutulur. Son adımda metnimiz anahtarın üçüncü 64 bitlik kısmı ile tekrar şifrelenir. Eğer üç anahtar parçası da birbirinin aynısı ise işlem DES ile aynıdır, farklı ise ikinci anahtar parçasını kullanarak metne uyguladığımız çözme işlemi şifrelenmiş metni iyice karmaşık hale getirecektir.
A.E.S

Joan Daemen ve Vincent Rijmen adında iki Belçikalı tarafından 1998 yılında geliştirilmiş bir algoritma olan A.E.S Amerikan hükümeti tarafından 2001 yılında bir standart olarak kabul edilmiştir. A.E.S 128, 192 ve 256 bitlik anahtarlar kullanmaktadır.
I.D.E.A

Þimdiye dek üretilmiş en hızlı ve en güvenilir algoritma olduğu düşünülen I.D.E.A 128 bitlik anahtar kullanmaktadır. 64 bitlik parçalar halinde gizli anahtar yöntemi ile şifreleme yapan I.D.E.A Xuejia Lai tarafından geliştirilmiştir. I.D.E.A'nın işleyişi biraz karmaşıktır. 128 bitlik anahtardan üretilen alt anahtarlar 64 bitlik metnimiz ile çeşitli cebirsel işlemlere ve XOR işlemine tabi tutulmaktadır.

128 bitlik anahtarımızı bölerek 16 bitlik ilk 8 parçamızı elde ederiz. 128 bitlik anahtarımızdan başka bir 16 bitlik 8 parça daha elde etmek için anahtarımızın bitlerini sola doğru 25 bit öteler ve sekize böleriz. İkinci işlem toplamda 16 bitlik 52 alt anahtar elde edilinceye kadar tekrar edilir.

Düz metin 16 bitlik 4 parçaya bölünür bu parçalar alt anahtarlarla belli sıralarda toplama, çarpma gibi cebirsel ve XOR işlemi gibi mantıksal işlemlere sokulur. Sekizli döngüler sonunda çıkan çeşitli değerler bir diğer işlemin girdisini oluşturur.

R.S.A

Günümüzde en yaygın olarak kullanılan açık anahtarlı şifreleme algoritması olan R.S.A 1977 yılında Ron Rivest, Adi Shamir ve Len Adleman tarafından geliştirilmiştir.

RSA'nın çalışma mantığı şöyledir;

p ve q gibi iki asal sayı belirlenir. Mod alınacak değerimiz n=p.q şeklinde hesaplanır. Euler'in totient fonksiyonu ile t=(p-1).(q-1) değeri hesaplanır. t değeri ile en büyük ortak böleni 1 olan bir e değeri bulunur. e.d=1 mod t olacak şekilde bir d değeri hesaplanır.

açık anahtar(e, n),
gizli anahtar(d, n) 'dir.

Düz metnimiz M olsun. Þifreli metnimiz C=Me mod n şeklinde elde edilir. Þifreyi çözmek için ise şu basamakları takip ederiz;

Düz metin : Cd mod n = (Me)d mod n = M 'dir.

Örnek :

p=7, q=9 olsun.

n=7.9=63 olur.

t=(7-1).(9-1)=48

e=5

5.d=1 mod 48 ise;

d=29'dur. Çünkü 5.29=145=1 mod 48'dir.

açık anahtar(5,63),
gizli anahtar(29, 63)'tür.

Düz metnimiz M=4 olsun.

Þifreli metnimiz C=45 mod 63=15'dır.

Þimdi şifremizi çözelim,

Düz metin = 1629 mod 63 = (45)29 mod 63 = 4 olarak elde edilir.


Þifreçözüm


Þifreçözüm kullanılan algoritmanın zayıflıklarından, şifrelenen metin hakkındaki bilgilerden yola çıkarak şifrelenmiş metnin nasıl kırılabileceğini araştıran bilim dalıdır. Yüksek matematiksel yöntemler kullanarak yapılan şifrelemeyi çözebilmek için doğal olarak yüksek bir matematik bilgisi ve uygulaması gerekmektedir. Þifreçözüm için bir yol geliştirmiş olsanız bile çoğu şifrenin insan gücü ile çözülmesi pek mümkün değildir. Bu iş için kullanılacak yöntemi deneyebilecek yüksek işlem gücünde donanımlar gerekmektedir. Bu bilim dalının ne denli önemli olduğunu ve devletlerin bu konuya ne kadar önem verdiğine yazının devamında "Günümüzde Þifrebilimin Önemi" başlığı altında etraflıca değineceğim.
Güvenli Sistemler

Yeri gelmişken biraz da güvenli sistemlerden bahsedelim. Güvenli sistemler ikiye ayrılır; Koşulsuz Güvenli Sistemler ve Matematiksel Güvenli Sistemler.

Koşulsuz Güvenli Sistemler, şifrelenmiş metinden uzunluğu ne olursa olsun düz metni oluşturmak için yeterli bilgi elde edilemeyecek sistemlere denir.

Zaten şifrelemenin mantığı şifreçözücünün şifrelenmiş metinden elde edebileceği anlamlı bilgiyi mümkün olduğunca anlamsız hale getirmektir.

Matematiksel Güvenli Sistemler de, şifrelenmiş metni kırmanın maliyeti düz metinden fazla olan ve/veya şifrelenmiş metni kırmak için gereken zaman bilginin geçerlilik süresinden fazla olan sistemlere denir.

Örneğin şifresi saat başı değişen bir kasanın şifresi en iyi cihazlarla ancak bir ayda kırılabiliyorsa ya da kasanın içinde üç liralık bilgi varken kasanın şifresini kırmanın maliyeti beş lira ise bu sistemler Matematiksel Güvenli Sistemlerdir.


Algoritmaların Gücü

Þifrelerin çözülmesi başlı başına bir sanattır, anahtarı bilmeden şifrelenmiş metinden düz metni elde etmek gibi. Önemli olan noktalardan biri de algoritmaların ne denli güçlü olduklarıdır.

Mantıken anahtarlı herhangi bir algoritma olası tüm anahtarların denenmesi ile kırılabilir. Anahtarı bulmak için tüm olasılıkları teker teker deneme yöntemine kaba kuvvetle kırma denir. Deneme yanılma yöntemi de diyebileceğimiz bu yöntem en zayıf fakat en kesin yöntemdir.

Deneme yanılma yöntemiyle kırılmaya çalışılan bir algoritmanın gücü doğal olarak doğrudan anahtarın uzunluğuyla alakalıdır.

Hiç yorum yok:

Yorum Gönder