Şifrelenmiş Verinin Şaşırtan Kırılma Olasılığı
Eğer sizde bir yazılım geliştiricisi iseniz ya da benim gibi verilerin şifrelendiğini bilip ancak bu verinin kırılabilir olup olmadığını merak edenlerdenseniz buyurun kendi merakım için yaptığım araştırmanın çıktılarını sizinle paylaşayım.
Önce kısa bir şifreleme tarihi ile başlayalım…
Kriptolojinin başlangıcını bilen yok. Yazının bulunması ile birlikte haberleşmede kullanılan yazının güvenliğini sağlamak için kriptolojiye ilişkin methodlar kullanılmaya başlanmış. Bilinen ilk şifreleme işlemi milattan önce 1900'lerde Mısırlı bir katip tarafından daha önceden kullanılmamış hiyerogliflerin kullanımı ile başlıyor.
MÖ 5. yüzyılda Spartalılar tarafından ilk defa yer değiştirme algoritması kullanılmak üzere bir cihaz geliştirilmiş. Aslında cihazın çalışma prensibi çok basit. Ancak arkasındaki ince düşünce onu değerli kılan şey. Cihaz aslında belirli boyuttaki bir tahta idi. Tahtanın üzerine sarılmış bez parçası üzerine yazı yazılıyor. Yazı sadece aynı tahta enindeki bir tahtaya sarılması halinde okunabiliyordu. Sır yani “secret” buradaki tahtanın eniydi.
Roma döneminde bir diğer önemli şifreleme yöntemi bulundu ve bu yöntem Roma İmparatoru Julius Caesar adı ile anıldı. Mantık yine basitti. Harf, alfabedeki kendinden sonraki üçüncü harf ile değiştiriliyordu. Örneğin A, D oluyordu. D ise G gibi.
Ortaçağ döneminde Arapların bir çok çalışması oldu ve kriptoloji alanına önemli katılar yaptılar.
Leon Battista Alberti tek alfabeli sistemden çoklu alfabeli sisteme geçiş için kullanılan 24 hücresi olan cihazı geliştirdi. Nasıl çalıştığını bu video üzerinden öğrenebilirsiniz.
1883 yılında Auguste Kerckhoff şifreleme biliminin temel iki ilkesini şöyle tanımlamıştır:
- Bir şifrenin güvenliği kolayca değiştirilmeyen bir şeye dayanmamalıdır.
- Rakip hafife alınmamalıdır. Özellikle rakibin şifreleme ve şifre çözme algoritmalarını bildiği unutulmamalıdır. Bu yüzden bir şifreleme sisteminin gücü anahtar bilgisini gizli tutmaya dayanmalıdır, şifreleme yöntemini gizli tutmaya değil.
Bu kadar tarihi bilgi yeterli sanırım. Şimdi gelelim sorumuza: Bugün kullandığımız şifreleme algoritmaları yeterince güvenli mi? Güvenli ise peki şuna ne dersiniz. Bugün kullandığımız bilgisayarlar kat ve kat daha hızlı çalışmaya başlayınca, saniyede denedikleri olasılıklar kat ve kat fazlalaşında şifrelenmiş veri hala güvenli olacak mı?
Güvenlik dünyasında her zaman söylendiği gibi tam anlamı ile güvenlik yoktur. Aslında bunun en basit örneği kullandığımız şifreleme algoritmalarında. Kullanılan tüm şifreleme algoritmaları şu mantık üzerine şekillenmiştir: Şifrelenmiş verinin çözülme süreci anahtarın bilinmesi halinde makul bir sürede, bilinmemesi halinde imkansız derecede uzun sürede çözülmesi esasına dayanır. Bakın burada çözülememe diye bir durum yok. Sadece yeterli zamanı harcamanız lazım. Tabi ömrünüz yeterse :)
Şimdi biraz matematik yapalım.
Bugün elimizdeki bir bilgisayarın 1 mikro saniyede 1 şifre denemesi yaptığını düşünürsek.
- 32 bitlik bir anahtar ile şifrelenmiş bir verinin çözülme süresi 36 dakika kadar sürmekte.
- 128 bitlik bir anahtar ile şifrelersek ve çözmek istersek ne oluyor buna dersiniz? 5.4x10^24 yıl. İsterseniz bir de yazarak rakamı vereyim. 5.4 üstü 10 üzeri 24 yıl. Yani 5.400.000.000.000.000.000.000.000 yıl demek.
Bu sayıyı aranızda okuyabilen var mı? :) Bu arada saat ya da dakika demiyorum. Buradaki sayı yıl. Dolayısı ile biraz fazla gibi! Gerçi evrenin yaşının yaklaşık olarak 14.000.000.000 yıl olduğu düşünüldüğünde şifreyi çözmeye hemen başlasak iyi olur :)
Hadi zamanı biraz ileri alalım ve 1 mikro saniyede 1 işlem yapma kapasitesini 1 milyon (1.000.000) işlem yapma kapasitesine çıkaralım. Bu durumda ne olur dersiniz?
- 32 bitlik bir anahtarla şifrelediğimiz işlemi artık 36 dakikaya değil 2.15ms de çözebiliyoruz.
- 128 bitlik bir anahtar ile şifrelediğimiz işlemi ise 5.4x10^18 yılda. Yani 5.400.000.000.000.000.000 yılda çözebiliyoruz.
Yani işlem kapasitemiz 1 milyon kat gelişse bile 128 bitlik bir anahtar ile şifrelenmiş veriyi yine korkunç uzun bir sürede çözebiliyoruz.
Hadi işlem kapasitesi o kadar artırdık birde bu işin içine 1 milyon cihazı dahil edelim. Bu 1 milyon cihazı senkron çalıştırıp denemesini sağlayacak bir alt yapı kurduk diyelim. Ortaklaşa deniyorlar. Bu durumda ne olur dersiniz.
- 32 bitlik anahtarla şifrelenmiş veriden artık bahsetmeye gerek yok.
- 128 bitlik anahtarla şifrelenmiş veri 5.4x10^12 yılda. Yani 5.400.000.000.000 yılda çözülebiliyor.
Yani biz işlemcileri uçurduk ve mikro saniyede 1 milyon işlem yapar hale getirdik, sonra 1 milyon cihazıda sadece bu iş için konumlandırdık. Bunları yapmış olsak bile bunca yıl beklememiz gerekecek. Yani evrenin tüm varlık süresinin 385 katı uzun süre beklememiz gerekecek!!!
Yani anlayacağınız 128 bitlik bir anahtar bizi uzunca bir süre idare edecek gibi duruyor :) Bu sebeple 256 bitlik bir şifreyi kullanmaya bile ihtiyaç duymuyoruz. 3DES, AES, IDEA vb. şifreleme algoritmaları yeterli şifre uzunluğuna sahip ancak DES değil. Dolayısı ile DES tercih edilmemeli.
Bunca şeyin üstüne size bir şey diyip sizi bir hayal kırıklığına uğratayım.
“2005 tarihinde Dag Arne Oosvik, Adi Shamir ve Eran Tromer tarafından gerçekleştirilen birkaç cache timing saldırısı sonucu AES ile şifrelenmiş bir pdf dosyası kısacık bir zamanda kırılabilmiştir. Atakların en başarılı olanında şifre 800 deneme ve 65 milisaniye gibi kısacık zaman içerisinde kırılabilmiştir.”
Nasıl olur der gibisiniz… Dan beyin Linkendin profilini buldum.
Açıklama bölümünde yapmış oldukları geliştirmeden kısaca bahsetmiş.
Şimdi aklınıza şu gelebilir. Yukarda ne anlattın şimdi ne çıktı... Yani yanlış mıydı yazdıklarım. Aslında değildi. Konu olasılık olunca yukardaki gibi ancak olasılıkların dışında insan her zaman sızacak bir yöntem buluyor. Burada bulunan yöntem de şu: Şifreleme işlemini yapan makine üzerinde işlem sırasında kullanılan memory eğer silinmez ise paralelde işlemin kırılması için bu caching attack yapılabiliyor ve şifreleme çözülebiliyor. Dolayısı ile burada yapılan atak ince bir yaklaşım ancak büyük bir handikapı var: Sadece şifrelemenin yapıldığı makine üzerinde kırma işlemi yapılabiliyor… Dolayısı ile korkmayın hala 128 bit anahtarlı şifrelenmiş verileriniz güvenlik altında :)
Saygılarımla,
Doğan Aydın
Takip etmek isterseniz:
Twitter Profilim: https://twitter.com/dgnaydin
Linkedin Profilim: https://www.linkedin.com/in/doganaydin/
GitHub Profilim: https://github.com/trda