İnsanoğlu milattan önceki yıllardan beri değerli gördüğü, başkalarının bilmesini istemediği bilgileri saklamak/korumak istemiştir. Bunun için de farklı farklı şifreleme algoritmaları geliştirilmiştir. Şifreli metinler savaşlarda, istihbarat alanında vs. birçok yerde kullanılmaktadır.
Sezar şifresi ile başladığı varsayılan şifrelemenin, günümüzde MD5, SHA algoritmaları birçok çeşidi vardır. Her bir algoritma bir başka algoritmanın eksikliğini gidermek/performansını geliştirmek amacıyla oluşturulmuştur. Her ne kadar gelişen teknolojiyle şifreleme algoritmaları da bir gelişme gösterdiyse de %100 çözülemeyecek bir şifreleme algoritması henüz geliştirilememiştir.
Bazı şifreli metinler frekans analiziyle, yani o dilin alfabesinde bulunan harflerin kullanım sıklığıyla çözülmektedir. İlkel sayılabilecek şifreleme algoritmaları frekans analizi ile rahatlıkla çözülebilmektedir. Her alfabenin/dilin harf kullanım sıklıkları birbirinden farklı olmaktadır.
Sezar Şifresi
Sezar algoritması, tarihte ilk kripto çalışması olarak kabul edilmektedir. Bu algoritmaya göre, metindeki her bir karakter, kendisinden sonra gelen 3. karakter ile yer değiştirir ve yeni bir metin(şifrelenmiş metin) oluşur. Yani 3 karakter öteleme yapılmaktadır. Şifrenin çözümü, metin açık olduğundan oldukça basittir. Çözüm aşamasında şifrelenmiş metindeki karakterden önce gelen 3. Karakterle yer değiştirilir ve orijinal metin elde edilir. Türk alfabesi ele alındığında “ELMA” kelimesinin şifrelenmiş hali “ĞOÖÇ” olacaktır. Frekans analizi ile rahatlıkla çözülebilmektedir.
Vigenere Tablosu
Vigenere şifresi de ilk şifreleme metotlarından biridir. Bu şifreleme metodunda her bir harf başka bir harfle değil, metin başka bir harf kümesiyle, yani kelime ile şifrelenir. Orijinal metindeki her bir harfe karşılık gelen sayılar(sıra numaraları) yazılır. Altına tekrar edecek şekilde anahtar kelimedeki her bir harfe karşılık gelen sayılar yazılır ve alt alta toplanır. Toplam sonucu çıkan sayıların karşılığındaki harfler yerine koyularak şifreli metin elde edilir. Toplam sonucunda sayı alfabedeki harf sayısını geçiyorsa, o alfabedeki harf sayısına göre mod alınır. Anahtar kelimedeki harf sayısı dikkate alınarak, harf sayısı adedince aynı anahtar harfin kullanılacağı göz önüne alınır ve frekans analizi gerçekleştirilerek şifreli metin çözülebilir. Örnek olarak “ELMA” kelimesini “NAR” kelimesi ile şifrelemek istersek aşağıdaki gibi şifreleme işlemi gerçekleştirilir:
ELMA -> 6 15 16 1
NAR -> 17 1 21
Şifreli harfler toplanır:
06 15 16 01
17 01 21 17
—————-
23 16 08 18 -> Şifreli Metin -> “ŞMGO”
Yerine Koyma Şifrelemesi
Bu şifreleme algoritmasındaki temel amaç, bir alfabedeki her bir karakterin yerine, aynı alfabeden başka bir karakter koyarak şifreleme işlemini gerçekleştirmektir. Bu işlemde hangi karakterin yerine hangi karakterin geleceği konusunda bir kural yoktur, yani rastgele seçilebilir. Örnek olarak şifrelenecek “ELMA” metnindeki karakterlerin karşılığına gelecek harfler şu şekilde olsun:
E-> Z, L->T, M->E, A->K
Bu halde şifreli metin şu şekilde olacaktır: “ZTEK”
DES(Data Encryption Standard) Algoritması
DES Algoritması, blok şifreleme ve simetrik şifreleme mantığına dayalı bir standarttır. Bu algoritma ile bir anahtar vasıtasıyla şifreleme ve aynı anahtarla şifre çözme işlemleri yapılabilmektedir.
64 bit anahtar kullanılır fakat 8 biti parity olarak kullanıldığından, 56 bit anahtar uzunluğu geçerlidir. Her bir 64 bitlik blok iki parçaya bölünür.
Orijinal metne uygulanacak ilk permutasyon “initial permutation(başlangıç permutasyonu)”dur. Bitler başlangıç permutasyon tablosu doğrultusunda değiştirilir ve bir sonraki işleme (round) girdi olarak verilir. Her bir round’un çıktısı diğer bir round’un girdisidir. Son olarak final permutasyon tablosu doğrultusunda işlemden geçerek metin şifrelenir. Aşağıda örnek bir başlangıç permutasyon tablosu verilmiştir:
Bu tablodaki değerler aşağıdaki gibi kullanılmaktadır:
DES Algoritması 16 defa round kullanır. Her basamakta iki blok halinde şifreleme işlemi gerçekleştirilir.
RSA Algoritması
RSA Algoritması, 1977’de Ron Rivest, Adi Shamir ve Len Adleman tarafından geliştirilen ve adını bu üç ismin baş harflerinden alan bir açık anahtarlı şifreleme tekniğidir. Günümüzde en çok kullanılan şifreleme algoritmalarından biridir. Asimetrik bir algoritmadır ve biri açık diğeri kapalı olmak üzere iki anahtar kullanılmaktadır. Şifreleme işlemi tam sayılarla işleme dayalıdır ve güvenlik derecesi kullanılan asal sayıların büyüklüğü ile doğru orantılıdır. Aşağıdaki şekilde RSA algoritmasının şifreleme ve şifre çözme aşamaları gösterilmiştir:
RSA Algoritmasının şifreleme aşamaları şu şekildedir:
- “p” ve “q” olmak üzere iki adet asal sayı seçilir.
- n = p * q olmak üzere n sayısı oluşturulur.
- (p-1)*(q-1) çarpımı ile φ(n) değeri bulunur (Totient fonksiyonu).
- φ(n) ile aralarında asal olacak şekilde bir “E” tam sayısı seçilir. (1 < E <φ(n))
- E sayısı mod φ(n)’de tersi alınır, sonuç D olur.
Bu durumda E ve n açık anahtar, D ve n ise kapalı anahtar olmaktadır. Yani E ve n sayıları kullanılarak metin şifrelenir, D ve n sayılarını kullanarak şifrelenmiş metin çözülür. RSA kripto sisteminde kişilere şifreli mesaj gönderilebilmesi için o kişilerin açık anahtarlarına ihtiyacı vardır. Mesajı alan kişinin de mesajı okuyabilmesi için gizli bir anahtarın olması gerekir.
AES(Advanced Encryption Standard) Algoritması
Güvenilirlik açısından oldukça gelişmiş bir algoritma olan AES
, elektronik verilerin şifrelenmesinde kullanılmaktadır. Simetrik şifreleme mantığına dayanmaktadır ve hem şifreli metni çözme hem de orijinal metni şifrelemede kullanılan anahtarlar birbiriyle ilişkilidir. AES Algoritmasının aşamaları şu şekildedir:
- Orijinal metin 128 bitlik bloklara bölünür ve her bir blok 4*4’lük matrisler haline çevrilir.
- 128 bit uzunluğunda 11 adet anahtar oluşturulur.
- Veri bloğundaki bitler XOR işlemi ile anahtarla ilişkilendirilir.
- Bloğun her bir elemanı, referans tablosundan bir elemanla değiştirilip, eski elemanın iki onaltılık sayısı, yeni elemanın satır ve sütun sayısı olmaktadır.
- Bloktaki sütunlar 0, 1, 2 veya 3 sütun sola kaydırılır. Taşan sütunlar sağ tarafa eklenir.
- Son geçişte, aes bloğun sütunundan ve sabit belirlenen matrisin satırlarından yola çıkarak yeni hücredeki değerler bulunur.
- Anahtar kullanılarak, veriler bit bazında değiştirilir.
- Şifrelenmiş bloklar bir araya gelerek tek bir metin oluşur.
Şifrelenen metin için de aynı işlemler tersten sırayla yapılarak orijinal metne ulaşılır. Aşağıdaki şekilde AES algoritmasının şifreleme ve deşifreleme aşamaları gösterilmiştir:
MD5 Algoritması
MD5(Message Digest) algoritması 1991 yılında geliştirilmiş, hash fonksiyonlarına dayalı bir şifreleme algoritmasıdır. MD4 algoritmasından sonra geliştirilmiştir ve MD4 algoritmasına göre daha yavaş çalışıp daha güçlü şifreli metin üretmektedir. Tek yönlü olup, yalnızca şifreleme işlemi yapılmaktadır. Kabaca 4 aşamadan oluşmaktadır ve bu aşamalar da kendi içlerinde 16’şar aşamadan oluşmaktadır. Bu algoritmada, orijinal metnin uzunluğu fark etmeksizin çıktı 128 bittir. Örnek bir MD5 ile şifrelenmiş şifreli metin: “4237458aa3facb8ff978defa7cd22c0a”
Yukarıdaki şekilde MD5 algoritmasının işleyişi gösterilmiştir. Bu işleyiş 64 kez tekrar etmektedir. Şekilde “F”, doğrusal olmayan ve her turda kullanılan fonksiyonu temsil etmektedir. Mi 32 bitlik mesaj girdisini, Ki her bir işlem için farklı bir 32 bit sabit belirtir. “<<<s” ise sola kaydırma işlemini göstermektedir.
MD5 algoritmasının kırılması oldukça güç olup, oluşturulması da zaman almaktadır. Günümüzde web uygulamaları/sitelerinin veri tabanında kullanıcı şifresi gibi gizli tutulması gereken bilgilerin birçoğu md5 algoritmasıyla şifrelenmektedir. Bu durum da şifrenin unutulması halinde bir dezavantaj oluşturmaktadır ve çoğu zaman şifre sıfırlanıp yeni bir şifre belirlenmektedir.
SHA Algoritması
NSA(National Security Agency) tarafından geliştirilen, sayısal imza standardında oluşturulan bir şifreleme algoritmasıdır ve SHA-0, SHA-1, SHA-2 ve SHA-3 olmak üzere 3 versiyonu vardır.
SHA-1 algoritması MD5 algoritmasıyla oldukça benzerdir. Her bir iterasyonda sıkıştırma fonksiyonu kullanılır. Orijinal metin 512 bitlik blok halinde alınır ve 16 bitlik gruplara çevirir. İçindeki fonksiyon yardımıyla 2560 bite genişletilerek, 20’şer matematiksel fonksiyondan oluşan 4 tur çalıştırılır. Sonuç olarak 160 bit şifreli metin elde edilir.
SHA-3 algoritması daha önceki versiyonların eksiklikleri sonucu geliştirilmiş olup bir yarışma sonucu 2012 yılında duyurulmuştur. SHA algoritmalarının ve MD5 algoritmasının genel özellikleri aşağıdaki şekilde verilmiştir.
Md5 harika bir kodlama sistemi. Daha iyisi yok bence.
Yapay zekanın geliştirilmesiyle birlikte ileride ücretsiz olarak kırılması imkansız şifreleme algoritmaları geliştirilebilecek, indirilebilecek.
Geçen hafta veri güvenliği dersinde görmüştüm bunları. Tekrar oldu benim için teşekkürler.
bunlara kafa yetmez çok karışıkmış
Ne gerek var böyle şeylere md5 var daha iyisini bende görmedim…
MD5 yaygın olsada SHA en güveniliridir.Yüksek güvenlikli sistemler tarafından tercih ediliyor.