AÇIK ANAHTARLI KRİPTOGRAFİ (PUBLIC KEY CRYPTOGRAPHY)
Bu
belgede, açık anahtarlı kriptografinin ne olduğundan ve açık anahtarlı
kriptografi uygulamalarından bahsedilmektedir. Belgede verilen bilgileri tam
olarak anlayabilmek için -şart olmamakla beraber-, geleneksel şifrelemenin
mantığı ve geleneksel (simetrik) şifreleme algoritmaları ile ilgili bilgi
sahibi olunması faydalı olacaktır.
Belgenin son hali, http://wolf.comu.edu.tr/~evreniz/belgeler/pkc/pkc.html adresinden temin edilebilir.
Bu belge, A. Murat EREN, Faruk ESKİCİOĞLU ve S. Serdar YÜKSEL'in 2002 yılındaki çalışmalarının bir kısmından A. Murat EREN tarafından derlenmiştir; belgeyi bu açıklama satırlarını silmemek kaydı ile istediğiniz gibi kullanabilirsiniz.
Belge içerisindeki bilgiler Cryptography and Network Security (William Stallings) isimli eser başta olmak üzere Applied Cryptography (Alfred J. Menezes, Paul C. van Oorschot, A. Vanstone) ve konu ile ilgili çeşitli makalelerden derlenmiştir.
Belge hakkındaki eleştirileriniz, tavsiyelerinizi ve kriptografi hakkındaki sorularınız için meren [at] uludag.org.tr mail adresini kullanabilirsiniz.
v.0.2 (05/2003) A. Murat EREN, meren [at] uludag.org.tr, http://cekirdek.uludag.org.tr/~meren
Belgenin son hali, http://wolf.comu.edu.tr/~evreniz/belgeler/pkc/pkc.html adresinden temin edilebilir.
Bu belge, A. Murat EREN, Faruk ESKİCİOĞLU ve S. Serdar YÜKSEL'in 2002 yılındaki çalışmalarının bir kısmından A. Murat EREN tarafından derlenmiştir; belgeyi bu açıklama satırlarını silmemek kaydı ile istediğiniz gibi kullanabilirsiniz.
Belge içerisindeki bilgiler Cryptography and Network Security (William Stallings) isimli eser başta olmak üzere Applied Cryptography (Alfred J. Menezes, Paul C. van Oorschot, A. Vanstone) ve konu ile ilgili çeşitli makalelerden derlenmiştir.
Belge hakkındaki eleştirileriniz, tavsiyelerinizi ve kriptografi hakkındaki sorularınız için meren [at] uludag.org.tr mail adresini kullanabilirsiniz.
v.0.2 (05/2003) A. Murat EREN, meren [at] uludag.org.tr, http://cekirdek.uludag.org.tr/~meren
Açık Anahtarlı KriptografiAçık Anahtarlı Kripto Sistemlerin PrensipleriAçık Anahtarlı Kripto Sistemlerin KarakteristikleriAçık Anahtarlı Kripto Sistem UygulamalarıAçık Anahtarlı Kriptografi İçin GrekliliklerAçık Anahtarlı Kripto Analiz
RSA AlgoritmasıAlgoritmanın TanımıHesaplama yöntemleriŞifreleme ve DeşifrelemeAnahtar ÜretimiRSA'nın GüvenliğiÇarpan ProblemiZaman Atakları
Anahtar YönetimiAçık Anahtarların DağıtımıAçık Anahtarların DuyurulmasıHerkes Tarafından Erişilebilir Adres RehberiAçık Anahtar YetkilisiAçık Anahtar SertifikasıGizli Anahtarların Açık Anahtarlı DağıtımıBasit Gizli Anahtar DağıtımıGüvenli Gizli Anahtar Dağıtımı ve Kimlik DoğrulamaMelez (Hibrit) Bir YöntemDiffie-Hellman Anahtar Değişimi
Eliptik Eğri KriptografisiEliptik EğrilerSonlu Alanlardaki Eliptik EğrilerEliptik Eğriler ile KriptografiDiffie-Hellman Anahtar Değişimi ÖrneğiEliptik Eğri Şifrelemesi/DeşifrelemesiEliptik Eğri Kriptografisinin Güvenliği
AÇIK ANAHTARLI KRİPTOGRAFİ
Açık anahtarlı kriptografinin gelişmesi, bütün
kriptografi tarihindeki en büyük devrimdir. Başlangıcından günümüze kadar,
bütün kriptografik sistemler, süpstütüsyon ve permütasyon işlemlerinin temel
alınmasıyla oluşturuldular. Sadece elle hesaplanabilen algoritmalarla
çalışabilme döneminden sonra, şifreleme/deşifreleme yapan rotor makinelerinin
ortaya çıkması sonucunda, geleneksel kriptografide büyük bir gelişme
kaydedildi. Elektro mekanik rotor, çok fazla inceliklere sahip ve karmaşık
kriptografik sistemlerin geliştirilebilmesini sağladı. Mevcut bilgisayarlarla
daha karmaşık sistemler tasarlandı ve en tanınanlarından olan -IBM´in- Lucifer
girişimi gelişerek DES´i oluşturdu ve DES`i dünyadaki kriptografi teknikleri
arasında en yüksek seviyeye getirdi. Rotor makineleri ve DES (Data Encryption
Standart), önemli avantajlar sunmalarına rağmen, halen, süpstütüsyon ve
permütasyon işlemlerine bağımlıdırlar.
Açık anahtarlı kriptografi, daha önceki gelişmelerden
radikal bir kopuştur. Açık anahtarlı kriptografik sistemlerin en önemli
noktaları, süpstütüsyon ve permütasyondan çok matematiksel işlevler üzerine
temellenmiş olmalarıdır. Daha da önemlisi, açık anahtarlı kriptografi, tek
anahtar kullanan simetrik geleneksel şifreleme algoritmalarının tersine, iki
ayrı anahtarın asimetrik kullanımını öngörür. Birazdan göreceğimiz gibi,
anahtar dağıtımı ve kimlik denetimi gibi gizlilik ve güven gerektiren
durumlarda, iki anahtar kullanımı etkili sonuçlar ortaya koymuştur.
İlerlemeden önce, açık anahtarlı şifreleme ile ilgili
bazı yaygın, yanlış bilgilerden bahsetmeliyiz. Bu yanlış düşüncelerden birisi,
açık anahtarlı şifrelemenin, kriptoanalize karşı geleneksel şifreleme
yöntemlerinden daha güvenli olduğudur. Örneğin böyle bir iddia, Gardner´ın
meşhur Scientific America adlı 1977 yılında yayınladığı makalesinde
yapıldı . Aslında, şifrelemenin güvenliği, anahtarın uzunluğuna ve, kırılan
şifreli metnin içerdiği hesapsal işlemlerin karmaşıklığına dayanır. İster geleneksel
ister açık anahtarlı şifreleme olsun, kriptonaliz bakış açısına göre birini
direğinden üstün tutmak yanlış olur.
Bir ikinci yanlış düşünce de, genel amaçlı kullanım
için geliştirilmiş bir teknik olan açık anahtarlı şifrelemenin, geleneksel
şifrelemeyi modası geçmiş kıldığıdır. Tam tersine, geleneksel şifrelemeden
vazgeçileceği sanısı, açık anahtarlı şifreleme yöntemlerinin, matematiksel
fonksiyonlarından dolayı, ihtimal dışı gözüküyor.
Son olarak, açık anahtarlı şifreleme kullanılırken,
geleneksel şifrelemenin daha hantal anahtar dağıtım merkezleri ile
karşılaştırıldığında, açık anahtarlı sistemlerin anahtar dağıtımının üzerinde
kafa yorulması gerekmeyen, sıradan ve basit bir iş olduğuna dair yanlış bir
anlayış vardır. Aslında, protokolün bazı biçimleri gereklidir fakat, geleneksel
şifreleme yöntemlerinin ihtiyaç duyduğu merkez temsilciler ve prosedürler, açık
anahtarlı şifrelemenin ihtiyaç duyduklarından daha basit daha karmaşık ya da
daha etkili değildir.
Bu bölüm, açık anahtarlı şifrelemeye genel bir giriş
mahiyetinde olacaktır. İlk önce, işin kavramsal çerçevesine bakmaya
çalışacağız. Bu noktada açık anahtarlı kriptografi ile ilgili enteresan bir
anektodu es geçmek olmaz: açık anahtarlı kriptografinin, pratik olarak
uyarlanışı gösterilmeden, tekniğin mimarisi geliştirildi ve doğru kabul
edilerek yayınlandı. Kimse pratiğini görmeden teorisi kabul gördü. Daha sonra,
açık anahtarlı şifreleme yöntemi için, uygulanabilir olarak gösterilen en
önemli şifreleme/deşifreleme algoritması olan, RSA algoritmasını inceleyeceğiz.
Daha sonrada, açık anahtarlı sistemler için, anahtar dağıtımını ve anahtar
dağıtım yönetimlerini inceleyeceğiz.
Açık anahtarlı kripto sistemlerinin çoğunluğu, sayılar
teorisini temel almıştır. Bu bölümde verilen sonuçları algılamak için, sayılar
teorisini anlamanıza yada biliyor olmanıza çok da gerek yoktur. Bununla
birlikte, açık anahtarlı şifreleme algoritmaları hakkında kesin bir yargıya
varmak için, sayılar teorisinin bazı kısımlarını bilmek gerekmektedir.
Açık
Anahtarlı Kripto Sistemlerin Prensipleri
Açık anahtarlı şifrelemenin genel amacı,
gerçekleştireceği devrim ile geleneksel şifrelemenin en büyük iki problemine
çözüm sağlamaktı. Bu problemlerden ilki gizli anahtarların dağıtımıdır. Gizli
anahtar derken, geleneksel kriptografi uygulamalarının (DES, IDEA, Blowfish,
CAST128, RC5, ...) kullandığı anahtarları kastediyoruz.
Geleneksel şifrelemeden yararlanarak birbirlerine
şifrelenmiş metinler gönderecek olan taraflar, şifreleme ve de şifreleme
işlemleri için, ya bir şekilde kendilerine ulaştırılmış olan anahtarı
kullanacaklar, ya da, bir anahtar dağıtım merkezinden faydalanacaklardır. Açık
anahtarlı kriptografinin mucitlerinden birisi olan Whitfield Diffie (diğeri de
Stanford Üniversitesinden Martin Hellman`dır), kriptografinin özü olan,
iletişimde %100 güvenlik esasını hiçe sayan bir anahtar dağıtım merkezi
kullanma gerekliliğini ortadan kaldırdı. Tarafların kullanacakları gizli anahtarları
bir anahtar dağıtım yetkilisinden almaları, istediği taktirde üçüncü parti bir
kişinin iletişimi anlaşılır kılabileceği tehlikesini barındırmakta idi.
Diffie, üzerinde düşündüğü ikinci problem olan
"dijital imza" konusunun, önceki ile ilgisi olmayan başka bir konu
olduğunu gördü. Eğer kriptografinin kullanımı, sadece askeri konularda değil,
özel ve kâr amaçlı uygulamalarda da kullanılacak kadar yaygın olsaydı, bu
durumlar için kullanılacak elektronik belge ve dokümanlarda da, kağıt
dokümanlarda kullanılan kişisel imzalara gerek duyulurdu. Ve dijital imzalar
sayesinde, bir mesajı kimin gönderdiği kesinlikle bilinmiş olur ve bu da
herkesi memnun eden bir metot olurdu.
Diffie ve Hellman, 1976`da, her iki probleme de, daha
önceki bütün kriptografik gelişimlerden ve buluşlardan farklı, radikal bir
çözüm getiren hayret verici bir buluş gerçekleştirmeyi başardılar.
Az sonra, açık anahtarlı kriptografinin iskeletine göz
atacağız. Daha sonra da, bu yöntemin kalbi olan şifreleme/de şifreleme
algoritmalarının ihtiyaçlarını göreceğiz.
Açık
Anahtarlı Kripto Sistemlerin Karakteristikleri
Açık anahtarlı şifreleme/deşifreleme algoritmaları,
şifreleme için bir anahtara, de şifreleme içinse bu anahtarla ilişkisi olan ama
bu anahtar olmayan ikinci bir anahtara ihtiyaç duyarlar. Bu durumda bir
güvenlik sağlamış olur. Bu algoritmalar şu önemli karakteristiğe sahiptirler:
·
Sadece kriptografik
algoritma ve de şifreleme anahtarı verilmişken, bir takım hesaplamalar yolu ile
şifreleme anahtarını bulmak mümkün değildir.
Bununla
beraber RSA gibi bazı algoritmalar şu karakteristikleri de gösterirler:
·
Her iki benzer anahtar
da şifreleme ve de şifreleme için kullanılabilir. Bununla beraber, bir anahtar
şifreleme için kullanılmışsa, de şifreleme için diğer anahtar kullanılmalıdır.
Şekil 1(a), açık anahtarlı şifreleme yöntemi
gösterilmiştir. Başlıca adımlar şunlardır:
1.
Her ağdaki her son
sistem, mesaj alındığında şifreleme ve de şifreleme için kullanacak olduğu
anahtar parçasını yaratır.
2.
Her sistem, şifreleme
anahtarını herkesçe erişilebilecek bir dosya yada yazmaç içerisine kaydederek
paylaştırır. Bu anahtarın, açık olan kısmıdır (public key). Özel anahtar saklı
tutulur.
3.
Eğer, A, B`ye bir mesaj
yollamak isterse, mesajı B`nin açık anahtarını kullanarak şifreler.
4.
B, mesajı aldığında, bu
mesajı kendi özel anahtarını kullanarak de şifre eder. Diğer hiçbir alıcı
mesajı de şifreleyemez, çünkü mesajı de şife edecek olan özel anahtarı sadece B
bilir.
|
Bu şekilden de anlaşıldığı üzere her katılımcı,
diğerlerinin açık anahtarlarına erişim hakkına sahiptir. Ve katılımcılar özel
anahtarlarlarını lokal olarak yaratırlar. Bu yüzden, özel anahtarların
paylaşılmasına gerek yoktur. Herhangi bir sebepten ötürü özel anahtarlar sahipleri
tarafından değiştirilmek istenebilirler, bu durumda değişmiş olan yeni açık
anahtar ilgili yerlere yeniden gönderilerek eskisi ile yer değiştirilir.
Tablo 1, geleneksel ve açık anahtarlı şifrelemenin
farklarını açıkça göstermektedir. Geleneksel şifrelemede kullanılan anahtarı,
açık anahtarlı şifrelemede kullanılan anahtarlardan ayırmak için onu gizli
anahtar olarak anacağız. Açık anahtarlı şifrelemede kullanılan iki anahtarı
da, genel anahtar ve özel anahtar olarak anacağız. Özel anahtar,
her zaman gizli tutulacak olan anahtardır, fakat, geleneksel şifrelemedeki
gizli anahtarla karışmaması için ona gizli anahtar yerine özel anahtar diyoruz.
Geleneksel şifrelemede:
|
Açık anahtarlı şifrelemede:
|
Çalışması için:
|
|
1. Şifreleme ve de-şifreleme için aynı algoritma aynı
anahtarla birlikte kullanılır.
|
1. Şifreleme ve de-şifreleme için bir algoritma ve
anahtarlardan birisi kullanılır. Şifreleme için kullanılan anahtar,
de-şifreleme için kullanılamaz.
|
2. Gönderen ve alan, algoritmayı ve anahtarı paylaşmalıdır.
|
2. Gönderen ve alan, ilişkili anahtarlardan birine
sahip olmalıdırlar (aynı olanı değil).
|
Güvenlik için:
|
|
1. Anahtar gizli tutulmalıdır.
|
1. Anahtarlardan biri gizli tutulmalıdır.
|
2. Diğer bilgiler saklandığında, mesajı deşifre etmek
imkansız olmalıdır.
|
2. Diğer bilgiler saklandığında, mesajı deşifre etmek
imkansız olmalıdır.
|
3. Algoritma ve şifreli metin örnekleri bilmek,
anahtarı çözmek için yetersiz olmalıdır.
|
3. Algoritma, şifreli metin örnekleri bilmek ve
anahtarlardan birine sahip olmak, diğer anahtarı bulmak için yetersiz
olmalıdır..
|
|
|
Şimdi, Şekil 2 yardımıyla, açık anahtarlı şifreleme
yapısını oluşturan başlıca elementlere bakalım. A, mesaj gönderecek bir kaynak
olsun. Ve göndermeyi düşündüğü X=[X1,X2,…,XM],
genel bir alfabe kullanarak oluşturduğu, M sonlu sayısında kelimeden oluşan bir
mesaj olsun. Bu X mesajı, B alıcısı için tasarlanır. B, birbiri ile ilişkili
olan bir anahtar çifti yaratır: bir genel anahtar; KUb ve bir
özel anahtar KRb. KRb, yalnız B tarafından
bilinir. KUb ise, A tarafından erişilebilecek olan B`nin açık
anahtarı olacaktır.
X düz metnini ve KUb anahtarını
girdi olarak alan A, mesajı şifreleyerek, Y=[Y1,Y2,…,YN]metnine
dönüştürür.
Y=EKUb(X)
Alıcı olan B, özel anahtarın sahibi olarak, şifreli
metni düz yazıya aşağıdaki fonksiyon ile çözümleyebilir.
X=DKRb(Y)
Bir rakip, iletişimi izleyerek şifreli
metin Y`yi ele geçirirse, ve KUb `ye sahipse, aynı zamanda, KRb
ya da, X için bir erişim hakkına sahip değilse, X ya da KRb `yi
elde etme girişiminde bulunacaktır. Rakibin, şifreleme ve deşifreleme
algoritmalarını bildiği varsayılır. Eğer, rakip sadece bu mesaj ile
ilgileniyorsa, şifreli metni üzerinde yapacağı
hesaplamalarla, bir düz metni oluşturmaya çabalayacaktır.
Bununla beraber, rakibin teşebbüsü genellikle gelecek mesajları da okuyabilmek
üzere, tahmini ^KRb üstünde
hesaplamalar yaparak KRb `yi elde etmek olur.
|
Her iki benzer anahtardan, yani,
şifreleme için kullanılacak olan anahtar ve diğeri de deşifreleme için
kullanılmak anahtardan genel olarak bahsetmiş olduk. Umarız, oldukça farklı
olan bu kriptografik yapıyı açıklayabilmek için yeterli olmuştur. Şekil 2`de,
güvenliğin sağlanması gösterilirken, 2 ve 3`te, açık anahtarlı kriptografinin
kimlik doğrulamayı nasıl sağladığı gösterilmiştir:
Y=EKRa(X)
X=DKUa(Y)
Bu durumda, A, B`ye göndermek üzere
bir mesaj hazırlıyor ve göndermeden önce mesajı kendi özel anahtarıyla
şifreliyor. B, bu mesajı, -sadece- A`nın genel anahtarını kullanarak deşifre
edebilir. Çünkü, A mesajı kendi özel anahtarı ile şifrelemiştir dolayısıyla
sadece, A bu mesajı hazırlayabilir. Bu yüzden özel anahtar ile şifrelenmiş tüm
mesajlar dijital imza olarak düşünülebilir. Bununla birlikte, A`nın kendi özel
anahtarı ile şifrelediği mesajın, A`nın özel anahtarına sahip olmayan bir kişi
tarafından değiştirilmesi imkansızdır, dolayısıyla, bu şekilde, hem bütünlük
hem de kaynak doğrulama ihtiyaçları karşılanmış olur.
Önceki yapıda, tüm mesaj şifrelenmiş
ve gönderici ve mesajın içeriğinin güvenliği sağlanmıştı. Fakat bu, mesajın
saklanması ve pratik kullanımı esnasında sorunlara neden olacaktır. Her
doküman, pratik kullanım için düz metin halinde saklanmalıdır. Fakat
orijinalliğinin ispat edilmesi gereken durumlarda kullanılmak üzere, mesajın
şifrelenmiş hali de ayrıca saklanmalıdır. Bu işi başarmanın daha verimli bir
yolu olarak, mesajın en önemli olan bitlerinin şifrelenmesi düşünülebilir.
Örneğin öyle bir bit grubu olsun ki, bu kısım mesajın tanımlayıcısı olsun ve bu
belirleyici bilinmeden/değiştirilmeden dokümanda bir değişiklik yapılması
mümkün olmasın. Eğer bu belirleyici, göndericinin özel anahtarı ile
şifrelenmişse, bu kısım, mesajın orijinalliğini, ardışıklığını ve içeriğini
güvenlik altında tutan bir imza gibi düşünülebilir. Bu belgede dijital imzanın
ayrıntılarına derinlemesine girilmeyecektir. Belki ilerleyen zamanlarda, talebe
göre bu konuda bilgi içeren bir kısım da belgeye eklenebilir.
Şunu vurgulamak önemlidir ki,
şifreleme olayı açıklandığı kadarki hali ile gizliliği sağlamaz. Yani, mesajın
değiştirilmesi engellenilmiş olsa da, bu mesajın gizlice dinleyenlerce ele
geçirilmesini engelleyemez. Ortadadır ki, mesajın bir parçasının imza olacak
şekilde şifrelenmiştir ve mesajın geriye kalan kısmı şifrelenmemiş şekilde
gönderilmiştir. Hatta mesajın tamamının şifrelenmiş olması halinde bile, Şekil
3`te gösterildiği gibi, gizlilik mümkün değildir. Çünkü, herhangi bir izleyici,
mesajı göndericinin genel anahtarı yardımıyla deşifre edebilir.
Bununla birlikte, hem kimlik
doğrulama, hem de, gizlilik iki açık anahtar kullanılması ile sağlanabilir
(Şekil 4):
Z=EKUb[EKRa(X)]
X=DKUa[DKRb(Z)]
|
Bu durumda, bir mesajı şifrelemeye
başlamadan önce, onu özel anahtarımız ile şifreleriz. Bu adım kimlik
doğrulamayı sağlar. Daha sonra, bu yeni şifreli mesajı, alıcının genel anahtarı
ile yeniden şifreleriz. Bu da gizliliği sağlar. Bu metodun dezavantajı iki kez
şifrelenmiş olan metinin iki kez deşifrelenerek açılması esnalarında
kaybedilecek fazladan zaman olarak düşünülebilir. Fakat mesaja sağladığı
gizlilik ve kimlik doğrulama vazgeçilemez bir özelliktir.
Açık
Anahtarlı Kripto Sistem Uygulamaları
Açıklamaya başlamadan önce, açık anahtarlı kripto
sistemlerin bir yönünü açıklamalıyız yoksa, karışıklığa yol açmış oluruz. Açık
anahtarlı sistemler karakteristik olarak, birisi gizli tutulan, diğeri ise
genel kullanım için açılmış olan iki anahtarla çalışan kriptografik
algoritmalar kullanırlar. Uygulamaya bağımlı olarak, gönderici, ya kendisinin
özel anahtarını, ya alıcının genel anahtarını ya da ikisini birden, kimi
kriptografik fonksiyonları gerçeklemek için kullanır. Geniş bir bakış açısı
ile, açık anahtarlı kripto sistemlerin kullanımını üç kategoride
inceleyebiliriz:
·
Şifreleme/De-Şifreleme:
Gönderici, bir
mesajı alıcının genel anahtarı ile şifreler.
·
Dijital İmza:
Gönderen, mesajı kendi özel
anahtarı ile imzalar. Bu imzalama, mesajın tamamını yada önemli görülen
belirleyici bir kısmını şifrelemek ile yapılır.
·
Anahtar Değişimi:
İki taraf ortaklaşa bir oturum
anahtarını değiş tokuş ederler. Bir çok farklı yöntem mümkündür. Anahtar
değişimi senaryoları ilerde ayrıntıları ile ele alınacaktır.
Kimi algoritmalar, bu özelliklerden sadece bir yada
iki tanesini gerçekleştirebilirken, bazıları bunların tümünü
gerçekleştirebilir. Tablo 2, kimi açık anahtarlı algoritmaların bu
özelliklerden hangilerini desteklediğini göstermektedir.
Algoritma
|
Şifreleme/De-şifreleme
|
Dijital İmza
|
Anahtar Değişimi
|
RSA
|
Evet
|
Evet
|
Evet
|
Diffie-Hellman
|
Hayır
|
Hayır
|
Evet
|
DSS
|
Hayır
|
Evet
|
Hayır
|
|
Açık
Anahtarlı Kriptografi için Gereklilikler
Kripto
sistem, Tablo 2`de, iki benzer anahtarı temel alan kriptografik algoritmaya
bağlıkları yoluyla ifade edilmiştir. Diffie ve Hellman, bu algoritmaların
varlığını göstermeksizin bu sistemi varsaymışlardır. Bununla beraber, bu
algoritmaların yerine getirmeleri gereken durumları şöyle ifade etmişlerdir:
1.
Bir B için, anahtar parçalarını (genel anahtar ve özel anahtar)
yaratmak, hesapsal olarak kolay olmalıdır.
2.
Gönderenin (A olsun), mesajı göndereceği kişinin (B olsun) genel
anahtarını bildiği ve şifrelenecek olan mesajı (M olsun) bildiği durumda, uygun
şifreli metni yaratmak hesapsal olarak kolay olmalıdır.
C=EKUb(M)
3.
Alıcı B`nin, özel anahtarını kullanarak, şifrelenmiş mesajı orijinal
haline getirmesi hesapsal olarak kolay olmalıdır.
M=DKRb(C)=DKRb[EKUb(M)]
4.
Herhangi bir rakip için, genel anahtarı bilerek, özel anahtarı bulması
hesapsal olarak imkansız olmalıdır.
5.
Herhangi bir rakip için, genel anahtarı, şifreli metini (C`yi) bilerek
orijinal mesajı (M`yi) elde etmesi hesapsal olarak imkansız olmalıdır.
Bunlara
ek olarak, yararlı olmasına rağmen gerekli olmayan altıncı bir madde
ekleyebiliriz:
6.
Şifreleme ve de-şifreleme fonksiyonları her iki sıra ile de uygulanabilir
olmalıdır.
M=EKUb[DKRb(M)]
Bunlar
gerçekleştirilmesi çok zor gerekliliklerdir bu yüzden, açık anahtarlı
kriptografi fikrinin ileri sürüldüğünden bu yana geçen yıllar süresince sadece
tek bir algoritma geniş bir kitle tarafından kabul edilmiştir.
Bu
kadar zor gerekliliklerin istenmesinin sebeplerini açıklamadan önce en önemli
noktayı, tek yönlü fonksiyonu (one-way function) açıklayalım. Söz konusu olan
tek yönlü fonksiyon şöyledir: fonksiyonun bire-bir olduğu bir aralıkta, tersini
hesaplamak imkansız iken, fonksiyonun kendisinin hesaplanması kolaydır.
Y=f(X) çok kolay,
X=f-1(Y) imkansız...
Genellikle,
"kolay" dan kasıt, fonksiyonun girdi uzunluğuna bağlı olarak
polinomal bir zaman süresi içerisinde çözülebilir olmasıdır. Şöyle ki, eğer
girdi uzunluğu n bit kadarsa, fonksiyonun hesaplanması için gereken süre a bir
sabit sayı iken, na gibi bir fonksiyonla orantılı olmalıdır. Çoğu
algoritmanın, P sınıfı algoritma olduğu söylenir. "imkansız"
ise, oldukça bulanık bir durumu ifade etmek için kullanılır. Bir problemin
çözümünün olanaksız olduğundan, giriş büyüklüğüne bağlı olarak çözüm için
harcanan çabanın, polinomal zamandan daha hızlı arttığı durumda bahsedebiliriz.
Örneğin, girdi n bit ile gösterilirken, fonksiyonun çözülme zamanı 2n
gibi bir fonksiyona bağlı olarak artıyorsa, bu fonksiyonun çözümünün imkansız
olduğunu düşünebiliriz. Ne yazık ki, eğer bir algoritma parçası bu kompleksliği
barındırıyorsa, bu karışıklığı belirlemek zordur. Ayrıca , hesapsal
kompleksliğin geleneksel fikirleri bir algoritmanın kompleksliğini en kötü
duruma yada ortalama bir duruma odaklar. Bu oranlar kriptografi için
değersizdir. Çünkü kriptografide bir fonksiyonu tüm girilenler için tersine
çevirmek nerdeyse olanaksızdır, bu genelleme, en kötü durum yada ortalama durum
için geçerli değildir.
Şimdi,
bir taraftan hesaplanması kolay, diğer bir taraftan ise belirli ek bilgiler
bilinmedikçe hesaplanması olanaksız olan tuzak kapılı tek yönlü fonksiyonun
(trap-door one-way function) açıklanmasına bakalım. Polinominal zamanda
fonksiyonun tersi ek bilgiyle hesaplanabilir. Adım-adım özetleyebiliriz: Tuzak
kapılı tek yönlü fonksiyon, tersine çevrilebilir fonksiyonların (fk)
bir ailesidir. Şöyle ki;
Y= fk
(X)
|
k ve X biliniyorsa, kolay
|
X=fk-1(Y)
|
k ve X biliniyorsa, kolay
|
X=fk-1(Y)
|
Y biliniyor fakat k
bilinmiyorsa
çözülemez
|
Böylece,
uygulamalı genel anahtarın yapısının gelişimi uygun bir tuzak kapılı tek yönlü
fonksiyon bulunuşuna bağlıdır.
Açık
Anahtarlı Kripto Analiz
Brute-force
saldırısına karşı (Brute-force saldırısı, anahtar uzayının tüm elemanlarının
sırası ile algoritma içerisinde teker teker denenmesi yolu ile doğru anahtarı
elde etmeye çalışmaktır), bir genel anahtarlı şifreleme yapısı geleneksel şifreleme
yapıları ile aynı derecede savunmasızdır. Çözüm aynıdır: Geniş anahtar uzayı
kullanmak. Bununla birlikte, hesaba katılan bir trade-off vardır. Açık
anahtarlı kripto sistemler, bazı kısa, tersine dönüştürülebilir matematiksel
fonksiyonların kullanımına bağlıdır. Bu fonksiyonların hesabının karışıklığı,
anahtardaki bitlerin sayısıyla doğrusal olarak ölçülemeyebilir; ancak
karışıklık daha hızlı artar. Anahtarın büyüklüğü, brute-force saldırısını makul
olanaklılık derecesinin dışına çıkarmak için yeterince büyük olmalıdır. Aynı
zamanda da pratik şifreleme ve de-şifreleme için yeterince küçük olmalıdır.
Pratikte, önerilmiş olan anahtar büyüklükleri brute-force saldırısını olanaksız
kılar (Elbette bu hesaplama teknolojilerindeki hızlı gelişime bağlı olarak
göreceli bir durumdur). Ancak, sonuçta şifreleme ve de şifreleme hızları genel
amaç kullanımı için çok yavaş olur. Gizli anahtarlı simetrik şifrelemenin açık
anahtarlı şifrelemeye nazaran çok daha hızlı olmasından ötürü, açık anahtarlı
şifreleme yaygın olarak anahtar yönetimi ve imza kullanımlarında
sınırlandırılır.
Saldırının
diğer bir şekli; özel anahtarı hesaplamanın bir yolunu bulmak için, verilen
genel anahtarı kullanmaktır. Şu ana dek, bir genel anahtarlı algoritma
parçacığı için bu tip bir saldırının başarılı olmasının mümkün olmadığı
matematiksel olarak ispatlanmamıştır. Böylece, verilen herhangi bir
algoritma (geniş çapta kullanılan RSA algoritmalarını içeren) şüphelidir.
Kriptonalizin tarihi, bütünüyle farklı bir yönden bakıldığında çözümü bulunabilecek,
bir yönden de çözümsüz gibi gözüken bir problemin varlığını gösterir.
Son
olarak, genel anahtarlı sistemler için tuhaf bir saldırı şekli daha vardır.
Özünde bu saldırı bir olası-mesaj saldırısıdır. Varsayalım ki; 56 bitlik DES
anahtarıyla gönderilmek üzere oluşturulmuş bir mesaj olsun. Bir saldırgan,
genel anahtarı kullanarak olası tüm anahtarları şifreleyebilir ve herhangi bir
mesajı gönderilmiş şifreli metinle karşılaştırarak deşifre edebilirdi. Böylece
genel anahtarlı yapının anahtar büyüklüğünün önemi kalmaz, saldırı 56 bitlik
bir anahtara yapılan brute-force saldırısına dönüştürülürdü. Bu saldırı; bu
gibi basit mesajlara rasgele bazı bitler eklenerek, önlenebilir.
RSA
ALGORİTMASI
Diffie
ve Hellman tarafından hazırlanmış öncü bir makale 1976 yılında, kriptografi
için yeni bir yöntem tanıttı, ve sonuçta, genel anahtarlı sistemlerin
gerekliliklerini yerine getiren bir kriptografik algoritmada görüş birliğine
varan kriptolojistlere karşı meydan okudu. Bu meydan okumaya karşı yanıtlardan
ilki; 1977'de MIT'de Ron Rivest, Adi Shamir, ve Len Adleman (RSA) tarafından
ortaya atıldı, ve ilk olarak 1978'de (A Method for Obtaining Digital Signatures
and Public-Key Cryptosystems, February 1978) basıldı. Rivest-Shamir-Adleman
(RSA) yapısı; üstünlüğü kabul gördüğünden itibaren, geniş çapta tek olarak
kabul edildi ve genel anahtarlı şifreleme yönteminin genel amacını yerine
getirdi.
RSA
yapısı, birtakım n`ler için 0 ve n-1 arasındaki tamsayılardan oluşan şifreli ve
düz metinin içinde yer alan bir blok şifrelemedir. Bu bölümde RSA`yı bazı
detaylarla birlikte, algoritmanın açıklamasıyla başlayarak inceleyeceğiz. Daha
sonra RSA`nın hesapsal ve kripto analitik anlamlarını incelemeye çalışacağız.
Algoritmanın
Tanımı
Rivest,
Shamir, ve Adleman tarafından bulunan yapı, destekleyici görüşlerle birlikte
ifadenin kullanımını meydana getirir. Düz metin, blokların içinde şifrelenir.
Her blok, birtakım n sayısından daha az bir ikili değere sahiptir.
Bloğun büyüklüğü, log2(n)’e eşit yada ondan daha az olmalıdır;
pratikte, blok büyüklüğü 2k bittir, 2k<n<=2k+1
aralığında. Şifreleme ve de şifreleme bazı düz metin bloğu M ve şifreli
metin bloğu C için şu şekildedir:
C=Me
mod n
M=Cd
mod n=(Me)d mod n=Med mod n
Hem
gönderen hem de alıcı n`in değerini bilmelidir. Gönderen e`nin
değerini bilir, ve sadece alıcı d`nin değerini bilir. Böylece; KU=(e,n) bir genel anahtar, ve KR=(d,n) bir
özel anahtar olur ve bu bir genel anahtarlı şifreleme algoritmasıdır. Genel
anahtarlı şifreleme için tatmin edici olması için, bu algoritma için aşağıdaki
gereklilikler yerine getirilmelidir:
1. M<n
olduğu koşulda, Med=M mod n iken, e,d ,n
değerlerini bulmak mümkün olmalıdır.
2. M<n
koşulunu sağlayan tüm M değerleri için, Me ve Cd hesaplanması nisbeten kolay olmalıdır.
3.
Yalnız e ve n verildiğinde, d `nin hesaplanması imkansız
olmalıdır.
Şimdi,
ilk sorun üzerinde odaklanalım ve diğerlerine sonra geçelim. Aşağıdaki form
için bir ilişki bulmamız gerekiyor:
Med=M mod n
Euler`in
teoremine göre, verilen iki asal sayı p ve q, ve iki tamsayı n ve m olmak
üzere, n=pq ve 0<m<n olduğu durumda, keyfi seçilmiş
bir k tamsayısı seçilmiş sayılar ile şöyle
bir ilişki oluşturur:
Hesaplama
Yöntemleri
Şimdi,
RSA`nın kullanımı için gerekli hesabın karışıklığıyla ilgili önemli noktaya
geri dönüyoruz. Aslında düşünülmesi gereken iki önemli nokta vardır: anahtar
üretimi, şifreleme/deşifreleme. Önce şifreleme/deşifreleme işlemlerine bakmaya
çalışacak ve daha sonra anahtar üretimi konusuna döneceğiz.
Şifreleme
ve Deşifreleme
RSA`da
hem şifreleme hem de deşifreleme, tamsayıların tamsayı kuvvetlerini almayı ve
mod alma işlemlerini gerektirir. Eğer ilk önce tamsayıların üslerini alıp, daha
sonra mod n ile
indirgersek, ara değerler devasa büyüklükte sayılar olurlar. Neyse ki bu sorunu
bir nebze azaltmak için modüler aritmetiğin şu özelliğinden yararlanabiliriz:
[(a mod n)x(b mod n)]mod n=(axb) mod n
Bu sayede, ara değerleri modül n`e
göre indirgeyebiliriz. Bu da
hesaplamayı pratik hale getirir.
Diğer bir husus, üssün verimidir. Çünkü,
RSA ile, potansiyel olarak büyük üsler ile işlem yaparız. Verimin nekadar
artabiliceğini görmek için, X16`yı hesaplamak istediğimizi
varsayalım. Dürüst bir yöntem 15 çarpım gerektirir:
X16=X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X
Bununla birlikte, aynı sonuca, her
bir kısmi sonucun karesini alarak X2,X4,X8,X16
olacak şekilde dört adımda da ulaşabiliriz.
Daha genel olarak varsayalım ki biz
am değerini hesaplamak istiyoruz ve biliyoruz ki a ve m
birer pozitif tam sayı. Eğer biz m`i
bk,bk-1…b0 gibi ikilik sayı gibi ifade edecek
olursak:
Bu sonuç sayesinde, ab
mod n işlemini hesaplamak üzere aşağıdaki algoritmayı geliştirebiliriz. Ve
algoritmanın altındaki tablo da algoritmanın çalışmasını örneklemektedir. C değerinin
aslında gerekli olmadığını düşünebilirsiniz; gerçekten de algoritma içerisinde
direk bir fonksiyonu yoktur. Fakat son değeri üssün değerine eşit olacağından
dolayı açıklayıcı bir niteliktedir.
c0; d1
for ik downto 0
do c2 x c
d(d x d)mod n
if
bi=1
then
cc+1
d(d x a)mod n
return d
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
|
1
|
2
|
4
|
8
|
17
|
35
|
70
|
140
|
280
|
560
|
|
7
|
49
|
157
|
526
|
160
|
241
|
298
|
166
|
67
|
1
|
Anahtar
Üretimi
Açık anahtarlı kriptosistemin
uygulamasından önce, her iki katılımcı anahtar parçalarını üretmelidir. Bu
üretim işlemi aşağıdaki vazifeleri ihtiva eder:
·
İki asal sayı hesaplanması, p ve q
·
e ya da d`nin seçilip diğerinin hesaplanması.
Öncelikle, p ve q nun seçimini düşünelim.
Çünkü, herhangi bir potansiyel saldırgan n=pq`nun değerini biliyor olacaktır,
ayrıntılı methodlarla p ve q nun bulunmasını engellemek için, p ve q sayıları
yeterince büyük bir seriden seçilmiş olmalıdırlar (p ve q büyük sayılar
olmalıdır). Diğer bir yandan, büyük asal sayıları bulmak için kullanılan yöntem
yeterince verimli olmalıdır.
Günümüzde, verimli ve büyük asal sayılar
üreten kullanışlı bir teknik yoktur. Genel olarak kullanılan yöntem şöyle
çalışmaktadır: istenen büyüklük aralığında rastgele bir tek sayı seçilir ve
bunun asal olup olmadığını kontrol edilir. Eğer asal değilse, bu işlem asal bir
sayı buluncaya kadar sürdürülür.
Asallığı kontrol eden bir çok test
geliştirilmiştir. Testlerin nerdeyse tümü yaklaşıklıktan bahseder yani, test,
verilen (yeterince büyük) bir tam sayının muhtemelen asal olup olmadığını
belirleyecektir. Bu kesinlik eksikliğine karşın, testler, sayının asal olma
olasılığının 1,00`a çok yakın olduğu durumlarda çalışabilirler. Örnek olarak,
en verimli ve popüler test algoritmalarından birisi Miller-Rabin
algoritmasıdır. Bu algoritmada ve diğer bir çok algoritmada,n sayısının
asallığını kontrol etmek için, n ile bir takım işlemlere sokulmak üzere n den
küçük bir rastgele a sayısı seçilir. Eğer n testi geçemezse bunun anlamı n sayısının
asal olmadığıdır. Eğer n testi geçerse bu durumda sayı asal olabilir,
olmayadabilir. Eğer n sayısı bu gibi çok fazla sayıda (milyonlarca..) testten
başarılı olursa, n için muhtemelen asal denilir.
Özet olarak, asal sayı kontrol prosedürü
aşağıdaki adımları izler:
1. Rastgele bir tek tam sayı "n"
seçilir.
2. a<n koşulunu sağlayan bir rastgele bir
a sayısı seçilir.
3. n için asallığı yaklaşık olarak test eden
Miller-Rabin gibi bir test gerçekleştirilir, eğer n testi geçemezse birinci
adıma geri dönülür.
4. Eğer n bir çok sayıda testi başarı ile
geçmişse n kabul edilir yada ikinci adıma geri dönlülür.
Bu, oldukça sıkıcı bir işlemdir fakat
biliyoruz ki, bu işlem sadece yeni bir genel ve özel anahtar (KU,KR)
gerektiğinde uygulanır.
Asal bir sayı bulunana dek geri çevrilen
sayıların sayısı önemli bir ayrıntıdır. Sayılar teoreminin bir sonucuna, asal
sayılar teorisine göre bir N asal sayısına yakın olan ilk asal sayı, bu
sayıya ortalama ln N adet tam sayı kadar uzaklıktadır. Bu durumda, bir asal
sayı bulunduğunda, bir sonraki asal sayı yaklaşık olarak
ln N tamsayı ötede
olacaktır. Ve bu aralıkta bulunan çift sayıların asal olmadığı kesin
olduğundan, bir asal sayıya ulaşması için en fazla ln N/2 deneme yapması
gerekecektir. Bunun anlamı şudur: örneğin 2200 sayısını merkez
alarak asal sayı aramaya başlayan bir kişinin bir asal sayıya ulaşmak için sayı
ekseninde bir yöne doğru yaklaşık ln(2200)/2=70 sayı denemesi
gerekmektedir.
P ve q değerlerine sahip
olunmasından sonra bir e değeri seçilmesi ve d değerinin hesaplanması ya da
alternatif olarak d değeri seçilerek e değerinin hesaplanmasının ardından
anahtar üretme işlemi tamamlanmış olacaktır. e sayısını seçerken, bu sayının eşitliğini sağlaması gerektiğini biliyoruz. Daha sonra da, eşitliği sonucunda d değerini
elde etmeliyiz. Neyseki, aynı anda iki tam sayının en büyük ortak bölenini
bulan, ve bu bölen 1 ise, bu sayılardan birisinin tersini, diğerinin modülüne
göre hesplayan tek bir algoritma var... Bu algoritma uzatılmış Euclid
algoritması olarak anılmaktadır. Prosedür, yarattığı bir seri halindeki
rastgele sayıların her birisini, ile arasında asal olan bir
sayı buluncaya dek teker teker dener. Tekrar şu soruyu sorabiliriz: ile aralarında asal olacak
şekilde kullanışlı bir sayı bulmak için kaç rastgele sayıyı test etmeliyiz?
Şunu kolayca gösterebiliriz ki, rastgele seçilmiş iki sayının aralarında asal
olma olasılığı 0.6`dır. Bu da demek oluyor ki, aradığımız tam sayıya ulaşmak
için bir kaç test yapmamız yeterli olacak.
RSA`nın
Güvenliği
Rsa
algoritmasına saldırmak için kullanılabilecek üç metod aşağıdaki gibidir:
·
Brute-force: Bütün özel anahtarların denenmesi ile
gerçekleştirilir.
·
Matematik Ataklar: Birkaç yöntem vardır, hepsinini amacı çarpımı
oluşturan iki asal sayıyı bulmaktır.
·
Zaman Atakları: Deşifreleme algoritmasının çalışması esnasında
geçen zamana bağlıdır.
Brute-force
yöntemine karşı RSA`nın savunması diğer diğer kripto sistemlerin çözümünden
farklı değildir, çözüm geniş anahtar uzayı kullanmaktır. e ve d`nin bit sayıları ne kadar büyük
olursa o kadar iyidir. Bununla beraber, hem anahtar üretimi hem de şifreleme/de
şifreleme işlemleri için algoritmanın içerdiği hesaplamalar kompleksleşecek,
büyük anahtarlarla çalışan sistemin de çalışma zamanından kaybı olacaktır.
Biz bu
alt kısımda Brute-force`dan ziyade matematiksel ve zaman ataklar ile
ilgileneceğiz.
Çarpan
Problemi
RSA`ya
gerçekleştirilebilecek matematik atak yöntemlerini üç alanda inceleyebiliriz:
·
n `in
çarpanlarından iki tanesi, kendisini oluşturan asal sayıların bulunması. Bu sayıların
bulunmasıyla =(p-1)(q-1) hesaplanabilir ve dolayısıyla d=e-1(mod) hesaplanabilir.
RSA`ya yönelik en çok
tartışılan kriptoanaliz yöntemi, n sayısını kendisini oluşturan iki asal
çarpanına ayırmaktır. Verilmiş bir , n için hesaplanması, , n `in çarpanlarına ayrılması demektir. Günümüzde, verilen , n ve e için d değerini hesaplayan algoritmalar üs alma problemi gibi zaman ile de ilgili bir problem yaratmaktadırlar. Bu nedenle çarpanlara ayırma performansını, RSA`nın güvenliği için bir tehdit olarak düşünebiliriz.
Anahtarın Rakam Sayısı
|
Yaklaşık Bit Sayısı
|
Verinin Elde Edilmesi
|
MIPS-yılı
|
Algoritma
|
100
|
332
|
Nisan 1991
|
7
|
Quadratik eleme
|
110
|
365
|
Nisan 1992
|
75
|
Quadratik eleme
|
120
|
398
|
Haziran 1993
|
830
|
Quadratik eleme
|
129
|
428
|
Nisan 1994
|
5000
|
Quadratik eleme
|
130
|
431
|
Nisan 1996
|
500
|
Genelleştirilmiş sayı alanı
elemesi
|
|
Son
zamanlara kadar, çarpanlara ayırma atakları quadratik eleme adı verilen bir
yöntem kullanılarak yapılıyordu. RSA-130 için yapılan atakta, daha yeni bir
algoritma kullanıldı: "Genelleştirilmiş sayı alanı elemesi (GNFS:
Generalized Number Field Sieve)". Bu sayede, RSA-129` dan daha büyük bir
sayının çarpanlarına ayrılması 10%`luk bir çaba ile gerçekleştirilebildi.
Bilgisayar
teknolojisinin hızla gelişmesi ve çarpanlara ayırma algoritmalarının zamanla
rafine edilerek daha kaliteli hale gelmeleri neticesinde, büyük anahtar
boyutları kullanmanın verdiği gözdağı yavaş yavaş kriptoanalistler için
önemsizleşiyor. Tablodan da, bir algoritma değişikliğinin ne kadar muazzam bir
hız yükselişi sağladığını görebilirsiniz. Üstelik, GNFS`nin üzernde yapılacak
bir rafinasyon işlemi sonucunda çok daha etkin bir algoritma ortaya çıkarılması
çok mümkündür. Aslında, "Özel Sayı Alanı Elemesi (SNFS: Special Number
Field Sieve)" adında bir algoritma, özelleştirilmiş şekli ile sayıların
çarpanlarını GNFS`ye göre çok daha hızlı bulmaktadır. 9 numaralı şekilde, bu
iki algoritmanın performans karşılaştırmasını görebilirsiniz. Şunun beklenmesi
gereklidir ki, ani bir atakla SNFS kadar yada ondan daha hızlı çalışabilecek
bir genel çarpanlara ayırma algoritması geliştirilebilir. Bu yüzden RSA`da
kullanacağımız anahtar boyutunu seçerken çok dikkatli olmalıyız. Yakın bir
gelecekte, 1024 yerine 2048 bitlik anahtarlar kullanılması çok da imkansız
görünmüyor...
|
Ek
olarak, algoritma geliştiricileri ve araştırmacılar, asal çarpanlarına kolayca
ayrılabilen n sayılarının üretilmemesi için, p ve q sayıları seçilirken bazı
kısıtlamaların göz önünde bulundurulması gerektiğini belirtiyor ve şunları
tavsiye ediyorlar:
1.
p ve q sayılarının uzunlukları birbirinden sadece birkaç rakam farklı
olmalı. Bu yüzden, hem p hem de q sayısı 1075 ile 10100
aralığından seçilmeli.
2.
Hem (p-1) hem de (q-1) büyük bir asal çarpan içermeli.
3.
gcd(p-1,q-1) küçük olmalı.
Ayrıca,
[WIEN90 (Refernası kaybetmişim en kısazamanda ekleyeceğim)]`da da ispatlandığı
üzere, eğer e<n ve d<n1/4 ise, d kolaylıkla
hesaplanabilirdir.
Zaman
Atakları
Eğer
halen, bir kriptografik algoritmanın güvenliği konusunda emin olmanın ne kadar
zor olduğu konusunda ders almamış birisi varsa, zaman atakları onun için çok
çekici ve çarpıcı bir örnek olacaktır. Bir kriptografi uzmanı olan Paul Kocher,
bir bilgisayarın şifreli bir metni çözerken harcadığı zaman dilimlerinden
yararlanarak, o metnin oluşturulması esnasında kullanılan özel anahtarı
hesaplayabileceğini kanıtladı (1996, Timing Attacks on Implementations of
Diffie-Hellman, RSA, DSS, and Other Systems). Zaman atakları sadece RSA için
değil, diğer açık anahtarlı kriptografik sistemler içinde uygulanabilir bir
saldırı metodudur. Bu atak şu iki konu sebebiyle çok dikkat çekici: bu atak
tamamiyle beklenmedik bir yönden geliyor ve, ikinciside bu sadece
chipertext-only atağı (Yani sadece şifreli metnin üstünde, metin hakkında
herhangi bir ek bilgi olmaksızın gerçekleştirilen atak; bu atak yöntemi normal
koşullarda başarıya ulaşması en az umulan ataklardan birisidir).
Zaman
atağı, bir hırsızın, soymak istediği bir kasanın parola kombinasyonunu tahmin
etmek için, o kasayı açan bir kişinin çevirdiği her bir numaranın ne kadar süre
aldığını dikkatle izlemesine oldukça benzemektedir. Bu atak yöntemini, modüler
üs alma algoritmasını kullanarak açıklayabiliriz fakat, atak yöntemi
belirlenmiş zamanlarda çalışmayan herhangi bir uygulamaya da adapte edilebilir.
Bu algoritmada, her adımda, modüler üs alma işlemi bit-bit ve bir modüler
çarpım işlemi gerçekleştiriliyor. Ayrıca, ekstra bir modüler çarpım işlemide
değeri 1 olan her bit için yapılıyor.
olsun. Atak, en soldaki bitten, bk`dan başlayarak
bit bit ilerlemeye başlasın. Farzedelim ki, ilk j bit biliniyor. Verilmiş bir
şifreli metin için atağı gerçekleştiren kişi, ilk j adımı for döngüsü
ile bitirebilir. İşlemin sonradan gelen adımları bilinmeyen üs bitine bağlıdır.
Eğer bit set edilmişse, d(d x a) mod n işlemi çalışacaktır. a ve
d`nin bazı değerleri için modüler çarpım son derece yavaş olacaktır ve atağı
gerçekleştiren kişi bu bitlerin değerinin ne olduğunu anlayacaktır. Bu yüzden,
eğer deşifreleme algoritmasının çalışma zamanı dikkatle gözlenirse, bu
algoritma parçası her 1 bit için çalışma zamanını yavaşlatacaktır ve o an
üzerinde çalıştığı bitin değerinin 1 olduğu tahmin edilebilecektir. Aynı
şekilde algoritmanın anlık çalışma zamanı hızlıysa o anda üstünde çalışılan
bitin değerinin 0 olduğu anlaşılacaktır.
Pratikte, modüler üs alma tanımlamaları tüm algoritmanın
çalışma zamanı üzerinde bu kadar büyük değişiklikler yaratmamaktadır, yinede
algoritmalar içerisinde, bu atağı pratik hale getirecek yeterince materyal
bulunmaktadır. Detaylar için Paul Kocher`in yukarda ismi verilmiş olan
makalesini inceleyebilirsiniz.
Bununla beraber zaman atakları önemli bir tehlikedir. Atağı
önlemek için çok basit önlemler kullanılabilir:
·
Sabit üs alma zamanı: Tüm üs alma fonksiyonlarının çalışma zamanı
eşit hale getirilebilir. Fonksiyonun çalışması erken bitse dahi, geriye bir
değer döndürmesi bir miktar bekletilerek hepsinin çalışma zamanı belli bir
değerde sabitlenebilir. Bu çok basit bir önlem olur fakat, performansı kötü
yönde çok fazla etkileyecektir...
·
Rastgele gecikme: Daha iyi bir performans, üs alma algoritmasına
rastgele bekleme süresi eklenerek zaman atağını yanıltılmasıyla elde
edilebilir. Kocher, bu rastgele değerlerin dikkatsizce seçilmesi durumunda,
zaman atağı gerçekleştiren kişinin biraz daha fazla gayret göstererek yine
başarıya ulaşmasının mümkün olacağına dikkat çekiyor.
·
Körleştirmek: Üs alma işleminin gerçekleştirilmesinden önce,
şifreli metin parçasını rastgele bir sayı ile çoğaltarak zaman atağını gerçekleştiren
kişinin sağlıklı bir veri elde etmesi engellenebilir. RSA Data Security
kuruluşunun geliştirdiği bir koruma yöntemi mevcuttur. RSA Data Security, bu
atak yönteminin toplam performansa 2% ila 10%`luk bir kayıp getirdiğininde
altını çizmekte...
ANAHTAR
YÖNETİMİ
Açık
anahtarlı kriptografinin en önemli rollerinden birisi, anahtar dağıtımı
problemine getirdiği yeniliktir. Açık anahtarlı şifreleme kullanmak için iki
çok önemli neden vardır:
·
Açık anahtarların dağıtımı.
·
Gizli anahtarların dağıtımı için açık anahtarlı şifreleme kullanımı.
Sırayla
bu iki konuyuda inceleyeceğiz.
Açık
Anahtarların Dağıtımı
Açık
anahtarları dağıtmak için kullanılan birkaç teknik vardır. Nerdeyse tüm
önerilmiş yöntemleri açağıdaki gibi gruplayabiliriz:
·
Genel duyuru,
·
Herkez tarafından erişilebilir adres rehberi,
·
Açık anahtar yetkilisi,
·
Açık anahtar sertifikası.
Açık
Anahtarların Duyurulması
Açık
anahtarlı şifrelemenin en önemli özelliği, açık anahtarın açık olmasıdır. Bu
yüzden, eğer birisi RSA gibi bir açık anahtarlı şifreleme algoritmasının
kullanımını tamamiyle kabul etmişse, bu kişi açık anahtarını bir başkasına gönderebilir
ya da, bütün iletişim ağına duyurabilir. Örneğin, RSA algoritmasını kullanan
PGP`nin (Pretty Good Privacy) popülaritesinin artması sonucu bir çok PGP
kullanıcısı, herkese açık forumlara, USENET haber gruplarına ya da mail
listelerine attıkları mesajların sonuna açık anahtarlarını eklemeyi
benimsediler.
Bu
yöntemin çok kolay ve kullanışlı olmasına karşın, büyük bir yetersizliği
vardır: Herhangi birisi siz olduğunu idda ederek açık anahtarını kişilere
duyurabilir. Yani bir kullanıcı kendisini olmadığı halde A kullanıcısı gibi
tanıtabilir ve kendi açık anahtarını A kullanıcısının açık anahtarıymış gibi
kişilere ilan edebilir. Gerçek A kullanıcısı sahtekarlığın farkına varana kadar
ya da bir başka kullanıcı onu uyarana dek, sahte A kullanıcısı gerçek A kullanıcısına
gönderilmek üzere şifrelenmiş bütün mesajları okuyabilir.
Herkes Tarafından
Erişilebilir Adres Rehberi
Herkezce
erişilebilir dinamik bir açık anahtar adres rehberinin iyi bir şekilde
korunması ve organize edilmesiyle çok yüksek derecede güvenlik sağlanabilir.
Adres rehberlerindeki anahtarların dağıtımı ve korunması güvenilir kimi kişi
veya kuruluşların sorumluluğunda olmalıdır. Böyle bir hizmet tasarlanırken en azından- aşağıdaki koşullar
sağlanmış olunmalıdır:
1.
Adres rehberinn her elemanı için bulunacak {ad, açık anahtar} bölümleri
iyi korunmalıdır.
2.
Her kullanıcı rehber yetkilileri ile bir açık anahtar kaydetmeli ve bu
işlemi yüz yüze ya da kimlik kontrolü ile güvenli hale getirilmiş bir iletişim
metodu ile yapmalıdırlar.
3.
Herhangi bir üye adres rehberindeki genel anahtarını, bu anahtarla çok
fazla verinin şifrelenmiş olmasından dolayı ya da bu anahtarla ilişkili olan
özel anahtarın herhangi bir sebepten ötürü güvenilirliğini yitirmesinden ötürü
istediği bir zaman yenisi ile değiştirebilmelidir.
4.
Bu sistemin yönetimi, periyodik olarak adres rehberini güncellemeli, bir
telefon rehberinde olduğu gibi isimleri ve genel anahtarlarının kopyasını
saklamalı ve güncellemeleri, geniş bir kitleye ulaşabilen yayın organı (gazete
gibi) yoluyla diğer kullanıcılara haber vermelidir.
5.
Üyeler aynı zamanda adres rehberine elektronik yolla da
ulaşabilmelidirler, bunun için de adres rehberinin yönetimi, gizlilik ve kimlik
denetimi gerektiren güvenli bir iletişim metodu kullanılması zorunluluğunu
yerine getirilmiş olmalıdır.
Bu
yapının bireysel genel duyuru metodundan daha güvenli olduğu oldukça açıktır
fakat, halen kimi savunmasız noktalar bulunmaktadır. Eğer bir saldırgan, adres
rehberi yöneticisinin özel anahtarını bir şekilde ele geçirir ya da onu
hesapsal metodlarla bulmayı başarırsa, kolay bir şekilde güvenlik engellerini
aşarak kişilerin açık anahtarlarını istediği açık anahtarlar ile değiştirip,
onlara gelecek olan mesajları okuyabilir, ve istediği kişiyi taklit ederek
diğer üyelere onun adına mesaj atabilir.
Açık
Anahtar Yetkilisi
Genel
anahtar yönetimi için daha güçlü bir güvenlik, herkez tarafından erişilebilir
adres defteri üzerinde daha sıkı bir kontrol uygulanması ile elde edilebilir.
G. L. Popek ve C. S. Kline'ın 1979 yılında yayımladıkları "Encryption and
Secure Computer Networks" isimli makaleleri baz alınarak oluşturulmuş
tipik senaryo Şekil 12`de gösterilmiştir. Bu yapıda da, önceki yapıda olduğu
gibi, bütün üyelerin açık anahtarlarının saklandığı ve dağıtımının yapıldığı
dinamik bir merkezi rehberin varlığı söz konusu. Buna ek olarak, her üye
yöneticiye ait olduğunu bildikleri bir açık anahtara sahipler. Şekil 12`de de
numaralanmış olan aşağıdaki adımlar ile anahtar dağıtımı gerçekleşir:
|
1.
A Kullanıcısı, B kullanıcısının şu anki
açık anahtarını öğrenmek istediğini ifade eden ve zaman ile imzalanmış (timestamped)
bir mesajı genel anahtar yöneticisine gönderir.
2.
Yönetici, kendi özel anahtarı olan KRauth ile şifrelenmiş bir
mesajı A kullanıcısına cevap olarak gönderir. Bu sayede, A kullanıcısı bu
mesajı yöneticinin açık genel anahtarı ile deşifre eder ve bu mesajın
yöneticiden geldiğine emin olur. Mesaj aşağıdakileri ihtiva eder:
·
A kullanıcısının B kullanıcısı için mesaj yollayabilmesi için B kullanıcısının
genel anahtarı,
·
Orijinal istek; A kullanıcısının, yöneticiye gönderdiğini düşündüğü
istek ile, yöneticinin aldığını bildirdiği isteğin aynı olup olmadığını
karşılaştırması için,
·
Orijinal zaman imzası; bu sayede A kullanıcısınınnın gelen mesajın eski
olmadığı ve dolayısıyla, gönderilmiş genel anahtarın B kullanıcısı yerine bir
başkasının genel anahtarı olmadığından emin olması için.
3.
A kullanıcısı B`nin genel anahtarını kullanarak, içierisinde A`nın
tanımlayıcısı (IDA) ve bu iletişimin tanımlayıcısı olan bir kelime (N1)
içeren mesajı şifreler ve B kullanıcısına gönderir.
4.
4. ve 5. adımlarda, B kullanıcısı A kullanıcısının genel anahtarını
öğrenmek üzere yöneticiye 1. Adımda A `nın yaptığı gibi bir mesaj gönderir ve
1. ve 2. adımlardaki iletişimin aynısı, yönetici ile B arasında gerçekleşir.
Bu noktaya gelindiğinde, genel anahtarlar A ve
B`ye güvenli şekilde iletilmiştir. Ve artık bu kullanıcılar kendi aralarında güvenli
iletişime başlayabilirler. Yine de, ekstra iki adım daha eklenebilir:
5.
B kullanıcısı A `nın genel anahtarını kullanarak, A`nın tanımlayıcı
kelimesini (N1) ve kendi yarattığı yeni bir tanımlayıcı kelimeyi (N2)
şifreler ve gönderir. Çünkü (3) mesajını sadece B deşifre edebilir, ve B`nin N1`i
(6) mesajı ile döndürmesi, A`nın konuştuğu kişinin umduğu B olduğundan emin
olmasını sağlayacaktır.
6.
A kullanıcısı da B `nin genel anahtarı ile, içerisinde N2`nin
bulunduğu mesajı şifreleyip B `ye gönderir ve böylece, B konuştuğu kişinin
umduğu A olduğundan emin olur.
Görüldüğü
gibi, toplam 7 mesaj gerekmektedir. Bununla beraber, ilk dört adım her
mesajlaşma istendiğinde gerçekleştirilmeyebilir, çünkü lullanıcılar
birbirlerinin genel anahtarlarını daha sonraki kullanımlar için
saklayabilirler. Bir kullanıcı periyodik olarak, sürekli konuştuğu kişilerin
genel anahtarlarının halen geçerli olduğundan emin olmak için genel anahtar
isteğinde bulunmalıdır.
Açık
Anahtar Sertifikası
Şekil
12`de verilen yöntem çok çekici olmasına karşın hala bazı açık noktaları
vardır. Genel anahtar yöneticisi, sistemin önemli bir dar boğazını teşkil
etmektedir. Bir kullanıcı temasa geçmek istediği her kullanıcı için genel
anahtarlarını istemek üzere yöneticiye başvurmalıdır. Yine öncekinde olduğu
gibi, isim rehberi ve anahtarları, çalınmaya ya da müdahalelere karşı yönetici
tarafından korunmaya çalışılmaktadır.
Alternatif
bir yöntem, ilk kez L. M. Kohnfelder tarafından, 1978 yılında yayımlanan "A
Method for Certification" isimli makalede sunulmuştur. Bu yönteme göre
kullanıcılar sertifika kullanarak, bir genel anahtar yöneticisine başvurmadan
güvenli bir yolla anahtarlarını değiştirebilmekte ve güvenli iletişime
başlayabileceklerdir. Bir sertifika yöneticisi/yetkilisi tarafından
oluşturulmuş sertifika, bir genel anahtarı ve ek bilgiyi içerir. Ve bu
sertifika üzerindeki genel anahtara uygun özel anahtar ile beraber kullanıcıya
verilir. Bir kullanıcı diğer bir kullanıcıya açık anahtarını, sertifikasını
göndererek gösterir. Diğer kullanıcı da, bu sertifikanın bir otorite tarafından
yaratılmış olduğunu doğrulayabilir. Bu yöntemin gerekliliklerini şu şekilde
sıralayabiliriz:
1.
Herhangi bir kullanıcı bir sertifikanın kullanıcısının adını ve açık
anahtarını öğrenmek üzere okuyabilir.
2.
Herhangi bir kullanıcı bu sertifikanın, sertifika yöneticileri
tarafından oluşturuluş orijinal bir sertifika olduğunu kanıtlayabilir.
3.
Sertifikaları sadece sertifika yöneticisi/otoritesi değiştirebilir ve
yaratabilir.
Bu
gereklilikler, Kohnfelder'in makalesinde geçen gereklilikler. Bu gerekliliklere
1983 yılında D. E. Denning tarafından 1983 yılındaki "Cryptography and
Data Security" isimli makalesi ile şu gereklilik de eklenmiştir:
4.
Herhangi bir kullanıcı bir sertifikanın geçerliliğini kanıtlayabilir.
Bir
sertifika şeması Şekil 13`te gösterilmiştir. Her kullanıcı bir genel anahtara
ve bir sertifikaya sahip olmak üzere sertifika yöneticisine başvurmalıdır.
Başvurular yüz yüze, ya da kimlik denetimi ve gizlilik sağlanması ile güvenli
hale getirilmiş bir iletişim yöntemi ile gerçekleştirilmelidir.
Hiç yorum yok:
Yorum Gönder
isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler