Dijital İmzalar:
Bazı açık-anahtar algoritmaları dijital imzalar üretmek için kullanılabilir. Bir dijital imza, bazı gizli anahtarlar kullanılarak yaratılmış küçük bir bilgi parçasıdır ve imzanın gerçekten uygun bir özel anahtar kullanılarak üretildiğini doğrulamak için kullanılabilecek bir açık-anahtar vardır. İmzayı üretmek için kullanılan algoritma öyle olmalıdır ki gizli anahtarı bilmeden geçerli sayılabilecek bir anahtar üretmek mümkün olmasın.
Dijital imzalar mesajın gerçekten istenilen göndericiden geldiğini doğrulamak için kullanılır (sadece gönderenin kendi anahtarına karşılık gelen gizli anahtarı bildiğini kabul ettik). Bunlar ayrıca dokümanları timestamp (zaman-pulu) ile işaretlemek için de kullanılabilir: güvenilen bir kişi dokümanı imzalar ve kendi anahtarı ile de zaman-pulunu imzalar, böylece dokümanın belirtilen zamanda var olduğunu doğrular. Dijital imzalar bir açık-anahtarın belirli bir kişiye ait olduğunu doğrulamak (veya onaylamak) için de kullanılabilir. Bu işlem, anahtarın ve bunun sahibi hakkındaki bilginin birleşiminin (kombinasyonunun - combination), güvenilen bir anahtar ile imzalanması suretiyle yapılır. Üçüncü bir kişinin ( güvenilen anahtarın sahibi) dijital imzası, açık anahtar ve açık-anahtarın sahibi hakkındaki bilgiler genelde sertifikalar (certificates) olarak adlandırılır. Üçüncü kişi (Third Party) anahtarına güvenilmesinin sebebi, bunun başka bir güvenilir anahtar ile imzalanmış olmasından olabilir. sonuçta bazı anahtarlar güven hiyerarşisinin kökü (root) olmalıdır (öyleki, buna güvenilmez çünkü bir başkası tarafından imzalanmıştır, ama bir öncekine inandığınızdan anahtar güvenilir olabilir). Bir merkezileştirilmiş anahtar altyapısında (centralized key infrastructure), güven ağında çok az kök vardır (örneğin, hükümet birimleri; böyle kökler de sertifika otoriteleri olarak adlandırılırlar). Dağılmış bir altyapıda evrensel olarak kabul edilmiş köklerin olmasına gerek yoktur, ve her kesimin farklı güvenilir kökleri olabilir. Bu, örneğin PGP deki, güven ağı (web of trust) kavramıdır. Keyfi bir dokümanın bir dijital imzası tipik olarak dokümandan alınan bir mesaj özeti (message digest) hesaplaması , ve imzalayan hakkında bilgi, bir zaman-pulu, vs. ile ilişkilendirilerek yaratılır. Ortaya çıkan dizi uygun bir algoritma kullanılarak imzalayanın özel anahtarı kullanılarak şifrelenir. Sonuçta elde edilen şifrelenmiş bitler bloğu imzadır. Genelde, onu imzalamak için kullanılan açık-anahtar hakkındaki bilgi ile beraber dağıtılır. Bir imzayı onaylamak için önce anahtarın , anahtara sahip olduğu düşünülen kişiye ait olup olmadığının belirlenmesi (güven ağı veya önsel bir bilgi kullanarak) ve sonra da kişinin açık-anahtarı kullanılarak imzanın çözülmesi gerekir. eğer imzası uygun bir şekilde çözülürse ve bilgi mesajınkiyle uyuşursa (uygun mesaj özeti vs.) imzanın geçerli olduğu kabul edilir. Dijital imzaların yapımı ve onayı için gerekli pek çok algoritma ücretsiz olarak elde edilebilir. En yaygın algoritma RSA dır.
Kriptografik Hash (Karıştırma ---Parçalara Ayırma) Fonksiyonları:
Kriptografik hash fonksiyonları (KHF) değişik durumlarda kullanılır, örneğin bir dijital imza yaparken mesaj metninin hesaplanması için. Bir hash fonksiyonu, olası hash değerleri arasında olası mesajların dağıtıldığı bir yol kullanılarak bir mesajın bitlerini sabit-büyüklükteki bir hash değerine sıkıştırır. Bir KHF bunu, belirli bir hash değerini parçalara ayırabilecek bir mesajın ortaya çıkması olayını oldukça zorlaştıracak bir yolla yapar. KHF genelde 128 bit veya daha büyük hash değerleri üretirler. Bu sayı ( ) dünyada değiş-tokuş edilebilecek tüm mesajların sayısından bile daha büyüktür. 128 bitten daha büyük sayıya olan gereksinimin temeli doğum günü paradoksuna dayanmaktadır. Doğum günü paradoksu kabaca şöyledir: Bir hash fonksiyonu verilen bir mesajı 128 bitlik bir hash metnine adreslerse, parçalara ayrılmış mesaj rasgele seçildiğinde aynı metnin iki kez hesaplanmasını bekleyebiliriz. Bilgisayarlar için ucuz hafıza çipleri kullanıma sunuldukça 128 bit mesaj metinlerinden daha genişlerine ihtiyaç duyulmaya başlanmıştır (daha şimdiden 160 bit standart hale geldi). Pekçok iyi KHF ücretsiz olarak bulunabilmektedir. En ünlü KHF MD ailesinden MD4 ve MD5 tir. MD4 kırılmış durumda, ve MD5 halen yaygın olarak kullanılmasına rağmen güvensiz olarak düşünülebilir. SHA-1 ve RipeMD-160 halen sapasağlam durmaktadırlar.
Kriptografik Rasgele Sayı Üreteçleri:
Kriptografik Rasgele Sayı Üreteçleri (KRSÜ) kriptograifk uygulamalar, örneğin anahtarlar için, rasgele sayılar üretmektedir. Pekçok programlama dili veya uygulamada bulunan geleneksel RSÜ leri kriptografik uygulamalar için uygun değillerdir (bunlar kriptanalistlerin saldırılarına direnmek için değil, sadece istatistiksel rasgelelik için tasarlanmışlardır). Optimal durumda, rasgele sayılar kestirilemez rasgeleliğin gerçek fiziksel kaynaklarını temel almaktadırlar. Bu tip kaynaklar yarı-iletken cihazlardaki gürültüyü, bir ses girişinin (audio input) en küçük öenm bitlerini , veya kullanıcının klavye tuşlarına vuruşları veya cihazların kesme noktaları arasındaki aralıkları içerebilir. Fiziksel bir kaynaktan elde edilen gürültü sonra her bitin diğer her bir bite bağımlı olması için bir KHF ile "süzülür". Rasgelelik içermek amacıyla genelde (binlerce bitten oluşan) geniş bir havuz kullanılır, ve havuzdaki her bir bit giriş gürültüsünün (input noise) her bir bitine ve havuzdaki diğer her bite kriptografik olarak güçlü bir yolla bağımlı yapılır. Gerçek fiziksel rasgelelik kullanılamadığında, pseudo-random (sahte-rasgele) sayılar kullanılmalıdır. Aslında bu istenilmeyen durum genel amaçlı bilgisayarlarda sıklıkla ortaya çıkar.
Önemli olan nokta, verinin herhangi bir dış gözlemci için kestirilemez olmasıdır; bunu elde etmek için, rasgele-havuz en az 128 bit gerçek entropi içermelidir. Kriptografik Pseudo-Rasgele Sayı Üreteçleri tipik olarak, rasgelelik içeren geniş bir havuza ("çekirdek değeri") sahiptir. Havuzdan veri alınarak havuza iade edilen bitler (havuzun içeriğinin ortaya çıkmasını önlemek için (veriyi seçimlin olarak) bir KHF üzerinden çalıştırırlar. Daha fazla bite ihtiyaç olduğunda havuzdaki her bir biti diğer her bite bağımlı yapan uygun bir rasgele anahtarla (havuzun hiç kullanılmamış tarafından olabilir) havuzun içeriğini şifreleyerek havuzu karıştırır. Önceki veya gelecekteki kestirimleri daha da zorlaştırmak için havuz karıştırılmadan önce yeni çevresel gürültüler havuza eklenmelidir. RSÜ kötü yapılmışlarsa sistemin en zayıf noktaları olacaklardır.
Kriptografik Algoritmaların Gücü
İyi kriptografik sistemler öyle tasarlanmalıdırlar ki bunları kırmak mümkün olduğu kadar zor olsun. Uygulamada kırılamayacak sistemler yapmak olasıdır (ancak genelde bu ispatlanamaz). Bir sistem tasarımcısı için sistemi kırılabilir bırakmanın hiçbir özrü yoktur. Güvenliği aşmak için kullanılabilecek her mekanizma açığa çıkarılmalı, belgelenmeli ve son kullanıcının dikkatine sunulmalıdır. Teoride, herhangi bir anahtarlı kriptografik metot olası tüm anahtarların denenmesi ile kırılabilir. Eğer tüm anahtarların denendiği kaba kuvvet (brute force) kullanımı tek yolsa, gerekli hesaplama gücü anahtarın uzunluğu ile üstel olarak artar. 32 bitlik bir anahtar ( yani 4,294,967,296 ) adım alır. Bu herhangi bir ev bilgisayarı ile yapılabilecek bir şeydir. 40 bitlik anahtarlar adım alır- bu tür bir hesaplama (kullanılan algoritmanın etkinliğine bağlı olarak ) modern bir ev bilgisayarında bir hafta gibi bir zaman gerektirir. 56 bit anahtarlı bir sistem (DES gibi) esaslı bir zahmet gerektirir ( çok sayıda ev bilgisayarının güç paylaşımı ile bunu kırmak birkaç ay alır), ama özel donanımlarla kolayca kırılabilir. Özel donanımların maliyetleri de doğal olarak yüksektir, ama organize suç örgütleri, büyük hükümey ve şirketler bunları alabilirler. 64 bitli anahtarlarda şimdiden kırılabilir durumdadırlar. 80 bitli anahtarlar bir kaç yıl sonra kırılabilecekken ve 128 bitli anahtarlar kaba kuvvet ile muhtemelen kırılamayacaklardır. Ancak anahtar uzunluğu tek önemli konu değildir. Pek çok cipher olası tüm anahtarlar denenmeden de kırılabilir. Genelde, diğer metotların daha da etkili kullanımı ile bile kırılamayacak cipherlar tasarlamak çok zordur. Kendi cipher’larınızı tasarlamak eğlenceli olabilir, ancak gerçek uygulamalarda bunu yapmanız tavsiye edilmemektedir. Çoğunlukla, algoritmanın gizliliğine dayanan algoritmalar güvenli değillerdir. Özellikle yazılım yoluyla, herhangi bir kimse algoritmayı tersine çevirip çalıştırabilecek (disassamble) birini kiralayabilir. Açık-anahtarlı kriptografide kullanılan anahtarların uzunluğu simetrik cipher’larda kullanılanlardan daha uzundur. Bunun nedeni, kriptanalistler için kullanılan ekstra yapıdır. Burada problem doğru anahtarın tahmin edilmesi değil, gizli anahtarın açık-anahtardan türetilmesidir. RSA da bu işlem iki asal çarpanı olan bir tamsayının üretilmesi (? Factoring) ile yapılmaktadır. RSA kripto-sisteminin karmaşıklığı hakkında biraz bilgi vermek gerekirse, 256 bitlik bir modulus evde kolayca ve 512 bitlik anahtarlar üniversitedeki araştırma grupları tarafından birkaç ay içinde kırılabilir. 768 bitlik anahtarlar muhtemelen uzun vadede güvende sayılmazlar. 1024 ve daha büyük bitli anahtarlar RSA ya karşı büyük kriptografik ilerlemeler kaydedilmedikçe güvende sayılırlar.
Kriptanaliz ve Kriptosistemlere Saldırılar:
Kriptanaliz uygun anahtarların bilinmeden şifrelenmiş iletişimlerin çözülmesi sanatıdır. En önemli kriptanaliz tekniklerinden bazıları aşağıda verilmiştir:
Cipher-text only (Sadece Şifreli Metin) Saldırısı:
Bu saldırı tipinde, saldırıyı yapan kişi mesajın içeriği hakkında hiç bir şey bilmemektedir, ve sadece şifreli-metni kullanarak çalışmalıdır. Uygulamada düz metne (plain text) - pek çok mesaj türü sabit başlık formatlarına olduğundan - ilişkin tahminler yapmak genelde olasıdır. Sıradan mektuplar ve belgeler bile kestirilebilir bir şekilde başlamaktadır. Örneğin, pek çok klasik saldırıda ciphertext’in frekans analizi kullanılmaktadır, ancak modern cipherlara karşı bu yöntem iyi çalışmamaktadır. Buna rağmen mesajlar bazen istatistiksel bir yanlılık içermektedirler.
Bilinen Düz-Metin Saldırısı:
Saldırgan ciphertext’in bazı kısımlarından düz metni tahmin edebilir veya bölebilir. Geriye kalan iş bu bilgiyi kullanarak ciphertext bloklarını çözmektir. Bu işlem, veriyi şifrelemek için kullanılan anahtarın belirlenmesi ile yapılabilir. En sık kullanılan Bilinen Düz Metin Saldırısı, blok cipher’lara karşı lineer kriptanaliz saldırısıdır.
Seçilmiş Düz Metin Saldırısı:
Saldırgan bilinmeyen anahtar ile şifrelenmiş istediği her metni elde edebilmektedir. Buradaki iş, şifreleme için kullanılan anahtarı belirlemektir. Bu saldırı için iyi bir örnek, blok cipherlara karşı (ve bazı durumlarda hash fonksiyonlarına karşı) uygulanabilen diferensiyel kriptanalizdir. Bazı kriptosistemler, özellikle RSA, seçilmiş-düz metin saldırılarına karşı açıktır. Bu tip algoritmalar kullanıldığında, uygulama (veya protokol) öyle tasarlanmalıdır ki saldırgan istediği düz metni şifrelenmiş olarak elde etmeMElidir.
Ortadaki Adam Saldırısı:
Bu saldırı, kriptografik iletişim ve anahtar değişimi protokolleri ile ilgilidir. Fikir şudur; iki kişi güvenli iletişim için anahtarlarını değiş-tokuş ederken (örneğin Diffie-hellman kullanarak), bir düşman kendisini iletişim hattındaki iki kişi arasına yerleştirir. Sonra bu düşman her iki kişi ile ayrı bir anahtar değiş-tokuşu gerçekleştirir. Her iki kişi farklı bir anahtar kullanarak işlerini tamamlayacaklardır ki bu anahtarlar düşman tarafından bilinmektedirler. Bu noktadan sonra saldırgan uygun anahtar ile herhangi bir iletişimi deşifre edebilecek ve bunları diğer kişiye iletmek için diğer anahtar ile şifreleyecektir. Her iki tarafta güvenli bir şekilde konuştuklarını sanacaklardır, ancak gerçekte saldırgan konuşulan herşeyi duymaktadır.
Ortadaki-adam-saldırısını engellemenin bir yolu dijital imzaları kullanabilen bir açık anahtar kriptosistemi kullanmaktır. Kurulum için her iki tarafta karşı tarafın açık anahtarını bilmelidir (ki bu bazen açık anahtar kriptosisteminin esas avantajını baltalamaktadır). Paylaşılan gizlilik oluşturulduktan sonra, taraflarkendi dijital imzalarını karşı tarafa göndermelidir. Ortadaki-Adam bu imzaları taklit etmeye çalışacak, fakat imzaların sahtesini yapamayacağı için başarısız olacaktır.
Bu çözüm, açık anahtarların güvenli bir biçimde dağıtımı için bir yolun varlığı halinde yeterlidir. Böyle bir yol X.509 gibi bir sertifika hiyerarşisidir. Bu, örneğin, IPSec (Internet Protocol Security) ’de kullanılmaktadır.
Gizili anahtar ile kriptosistemin çıktısı arasındaki korelasyon kriptanaliz için ana bilgi kaynağıdır. En kolay durumda, gizli anahtar hakkkındaki bilgi direkt olarak kriptosistemden sızdırılır. Daha karmaşık durumlar, kriptosistem hakkında gözlenen (ölçülen) bilgi ile tahmin edilen anahtar bilgisi arasındaki korelasyon üzerinde çalışmayı gerektirir. Bu sıkça çok ileri düzey saldırı durumlarında kullanılır. Örneğin, blok cipherlara karşı lineer (ve diferansiyel) saldırılarda kriptanalist bilinen (seçilmiş) düz metin ve gözlenen şifreli-metin üzerinde çalışır.
1980 lerin sonuna doğru Adi Shamir ve Eli Biham tarafından tanıtılan direfansiyel kriptanaliz, blok cipherlara (özellikle DES ’e) karşı bu fikri (korelasyon fikrini) tam anlamıyla uygulayan ilk saldırıdır. Sonraları Mitsuru Matsui DES ’e karşı daha etkili olan lineer kriptanalizi ileri sürmüştür. Sonraqdan benzer fikirlere sahip saldırı çeşitleri geliştirilmiştir.
Bu konuya ilişkin belki de en iyi tanıtım EUROCRYPT ve CRYPTO ’nun 1990 lı yıllar boyuncaki sayılarında verilmiştir.Çalışmaya, Mitsuru Matsui’nin DES’in lineer kriptanalizi hakkındaki tartışması ile, veya Lars Knudsen ’in budanmış diferansiyeller fikri ile (örneğin, IDEA kriptanalizi) başlayabilirsiniz. Ayrıca Eli Biham ve Adi Shamir’in DES’İn kriptanalizi hakkındaki kitabı bu konu üzerine "klasik" bir çalışma olarak görülebilir.
Korelasyon fikri kriptografide temeldir ve pek çok araştırmacı bu tip saldırılar karşısında güvenliği sağlamaya çalışmışlardır. örneğin, Knoudsen ve Nyberg diferansiyel kriptanalize karşı güvenliği sağlamak üzerine çalışmışlardır.