Şifreleme işlemi antik çağlardan günümüze kadar insanoğlunun üzerinde düşündüğü ve çalışmalar yaptığı konulardan birisi olmuştur. Şifreleme işlemini belli bir tekniğe dayandırarak gerçekleme ise Sezar’ın basit yer değiştirme tekniği ile başlamıştır diyebiliriz. Zamanla kullanılan şifreleme tekniklerin deşifre edilmesi farklı teknik ve şifreleme yöntemleri bulmak adına yapılan çalışmaları arttırmıştır. Teknolojinin hızla gelişmesiyle beraber ayrı bir araştırma ve bilim dalı olarak kriptoloji(şifre bilimi) ortaya çıkmıştır. Günümüz teknolojisinin baş döndürücü hızla gelişimine paralel olarak bilgisayar, akıllı telefon, vb. elektronik cihazlar hayatımızda daha fazla yer almaya ve daha fazla kullanılmaya başlamıştır. Bu cihazlar aracılığıyla banka işlemleri, alış-veriş(e-ticaret) ve haberleşme gibi bir çok işlemin kolaylıkla gerçekleştirilebiliyor olması insanları cezbettiği için her geçen bu tür cihazları kullanan insan sayısının artmaktadır. Güvensiz bir ortam olan internet üzerinden bu kadar çok işlemin güvenli bir şekilde gerçekleştirilmesinin sağlanması ise gelişen teknolojinin en büyük dezavantajlarından birisidir. İnternet, sağladığı sınırsız imkanlar ve sunduğu onca kolaylıklara karşın son derece güvensiz bir ortamdır. Onun için bu ortamda bankacılık işlemleri, askeri sistemler, özel görüşmeler gibi işlemleri gerçekleştirirken iki nokta arasında veya sistemler arası haberleşmede gizlilik, bütünlük ve kullanılabilirlik ilkelerine göre bilginin güvenliği sağlanmalıdır. Bu kapsamda ilk olarak güvenli iletim ortamının sağlanması adına bir çok çözüm üretilebilir fakat %100 güvenli hiç bir sistem yoktur sözü göz önünde bulundurulacak olursa iletilecek olan bilgi üzerinde de ayrıca bir güvenlik tedbiri uygulanmalıdır diyebiliriz. Bu tedbirlerden en önemlisi olarak sayılabilecek olan giden ve gelen verinin şifrelenerek anlaşılmaz hale getirilmesi ve bu şekilde iletilmesidir. Yıllardır bu alanda yapılan çalışmalar neticesinde bir çok şifreleme tekniği bulunmuş ve kullanılmıştır. Fakat bunlardan bazısı zayıflık barındırdığı, bazısı gelişen teknoloji karşısında gücünü kaybettiği, bazısının da yeni donanımlarla uyumlu çalışamaması neticesinde rafa kaldırıldığını söyleyebiliriz. Bu zorlu süreçlerden güvenilirliğini ispatlayarak ve koruyarak günümüze kadar gelebilen bir kaç tane şifreleme algoritması vardır. Bunlardan birisi de en yaygın kullanılan asimetrik şifreleme algoritmalarından birisi olan RSA şifreleme algoritmasıdır. Bu makale kapsamında günümüzde en çok kullanılan açık anahtarlı(asimetrik) şifreleme algoritmalarından olan RSA şifreleme algoritması incelenecektir. RSA şifreleme algoritmasının ortaya çıkış tarihinden başlanarak, anahtarların üretimi, şifreleme ve şifre çözme işlemlerinin nasıl gerçekleştirildiği, algoritmanın doğruluğunun ispatı ve algoritmanın gücünden bahsedilerek algoritmaya karşı yapılan saldırıların neler olduğunu ve nasıl yapıldığı incelenecektir. 2. RSA ALGORİTMASI3. TARİHİ4. İŞLEMLER![]()
Şekil 1 - Açık anahtarlı şifreleme ile haberleşme
Açık anahtarlı şifreleme mantığınının anlaşıldığı kabul edilirse, açık anahtarlı şifreleme yöntemi olan RSA için anahtarlar üretimi, şifreleme ve şifre çözme işlemlerinin nasıl yapıldığını inceleyebiliriz.4.1 Anahtar Üretimi1-) Bundan sonra N ile ifade edeceğimiz çok büyük tamsayıyı oluşturacak olan iki faklı ve büyük asal sayı belirlenir. Bu sayılar p ve q olarak isimlendirilir. 2-) İki asal sayının çarpımını asal çarpanlarına ayırmak asal olmayan sayıları asal çarpanlarına ayırmaktan daha zor olduğu için N tam sayısını oluştururken bu iki asal sayının çarpımından elde ettiğimiz değeri kullanıyoruz. N = p.q 3-) N sayısının totient değeri hesaplanır. Totient, sayılar teorisinde bir tam sayının o sayıdan daha küçük ve o sayı ile aralarında asal olan sayı adedini belirten fonksiyondur. Genellikle Euler Totient ya da Euler'in Totienti olarak adlandırılan Totient, İsveçli matematikçi Leonhard Euler tarafından tanımlanmıştır. Totient fonksiyonu, Yunan harflerinden phi(φ) ile simgelendiği için Phi fonksiyonu olarak da anılabilir.[1] φ(N) = (p-1)(q-1) 4-) 1 < e < φ(N) ve EBOB(e, φ(N)) = 1 Yukarıdaki matematiksel ifadeden de anlaşıldığı üzere 1 ile Totient değeri arasında olan ve Totient değeri ile aralarında asal olan bir tam sayı seçilir ve e olarak isimlendirilir. Burada seçilecek olan e sayısının küçük seçilmesi(ör: 3 gibi) mod ve üs alma gibi işlemleri yaparken performanstan kazandırıyor olsa da bazı durumlarda güvenliği azaltmaktadır. 5-) d.e ≡ 1 (mod φ(N)) Denkliğini sağlayan ve gizli anahtarı oluşturmada kullanılacak olan d sayısı bulunur. Burada yapılacak olan işlem e sayısının mod φ(N)’de tersinin bulunmasıdır. Bu değeri bulurken Genişletilmiş Öklid Algoritması kullanılabilir. Yapacağımız örnekte bu algoritmanın nasıl uygulanacağını göstereceğim için burada detaya girmiyorum. Açık ve gizli anahtar oluşturmak için gerekli olan tüm değişkenleri/değerleri oluşturduk. Gizli anahtarı oluşturan d sayısının hesaplanmasında kullanılan (p,q, φ(N)) sayılarının gizli kalması şartı ile (N,e) çifti açık anahtarı; (N,d) çifti ise gizli anahtarı oluşturmaktadır. 4.2 Şifreleme İşlemic = me (mod N) 4.3 Şifre Çözme İşlemim = cd (mod N) 4.4 Örnek- İlk adım olarak N tamsayısını oluşturacağımız p ve q sayılarını seçelim. Gerçekte çok büyük iki farklı asal sayı olması gerekiyor fakat burda örnek yaptığımız için küçük sayılar kullanıyoruz. p = 7 ve q = 19 - İkinci adım olarak bu sayıların çarpımını bularak N tam sayısının değerini buluyoruz. N = p.q => N = 7.19 => N = 133 - Bu N sayısının Totient değerini hesaplıyoruz. φ(N) = (p-1).(q-1) => φ(N) = 6.18 = 108 - Son olarak bu Totient değeri ile aralarında asal olan e sayısı seçerek e’nin tersine eşit olan d sayısını buluyoruz. 1 < e < 108 ve EBOB(e, 108) = 1 Denklemlerini sağlayan e sayısını 5 olarak seçelim. Öyleyse 5’in mod 108’e göre tersini bulursak, d sayısını da bulmuş olucaz. d.5 ≡ 1 (mod 108) denkliğini sağlayan d sayısını genişletilmiş öklid algoritması kullanarak bulabileceğimizi söylemiştik. Şimdi bunu nasıl yapacağımıza bakalım; önce Öklid algortimasını uygulayarak bu iki sayının en büyük ortak bölenini buluruz(Biz zaten bu sayıları aralarında asal olacak şekilde seçtiğimiz için bir yanlışlık yapmaz isek sonucun 1 olması gerekiyor): 108 = 21.5 + 3 5 = 1.3 + 2 3 = 1.2 + 1 2 = 2.1 + 0 Sıfırdan bir önceki değer bize bu iki saynın EBOB’unu vermektedir. Öyleyse: EBOB(108,5) = 1 Yani beklendiği üzere bu iki sayı aralarında asaldır. Şimdi bir adım daha ileri giderek Genişletilmiş Öklid Algoritmasını uygulayalım ve d sayısını bulalım. Bunun için de EBOB’tan yola çıkarak geriye doğru giden matematiksel/mantıksal işlemler yapmamız gerekiyor. 1 = 3 – 1.2 = 3 – 1.(5 – 1.3) = 3 – 5 + 3 = 2.3 -5 = 2.(108 – 21.5) – 5 = 2.108 - 42.5 – 5 = 2.108 - 43.5 Hangi sayının tersi aranıyorsa onun yanındaki çarpan kendisinin tersi olmaktadır. Biz 5 sayısının mod 108’de tersini arıyorduk, o zaman 5 sayısının yanındaki çarpan aradığımız değerdir. Bu sayı görüldüğü üzere (-43)’tür veya başka bir deyişle 108+(-43) = 65’tir. Sonuç olarak gizli anahtar için aradığımız d sayısını 65 olarak bulmuş olduk. Tüm değerleri bulduğumuza göre artık açık ve gizli anahtarlarımızı oluşturarak şifreleme ve şifre çözme işlemlerine geçebiliriz. Şifrelemede kullanılacak açık anahtarımız : (N,e) = (133,5) Şifre çözmede kullanılacak gizli anahtarımız : (N,d) = (133,65) Anahtarlarımız ile şifreleme ve şifre çözme işlemini gerçekleyerek şifrelenen metin ile şifre çözme sonucunda elde edilen metnin aynı olup olmadığını test edelim. Bu örnek için m=15 sayısını açık anahtarımız ile şifreleyip gizli anahtarmız ile açalım ve çıkan sonuçları karşılaştıralım. c = me = 155 = 78 (mod 133) m = cd => m = 7865 (mod 133) => m = 15 Not: Bu işlemlerin doğruluğunu Wolfram Alpha kullanarak test edebilirsiniz. 5. YAPILAN ATAKLAR![]()
Şekil 2 - Yan Kanal Saldırılarında kullanılabilecek bilgiler
RSA’e yapılan yan kanal analizi saldırılarında başarılı sonuçlar elde edilmiş olmasına karşın kriptanaliz yöntemleri ile pratikte RSA’ın kırılması hala daha gerçekleşmemiştir. Anahtar üretiminde kullanılan sayının büyüklüğüne göre RSA’ın güvenlik seviyeside artmaktadır. Yani yeni saldırı metotları veya daha güçlü makineler kullanılarak yapılacak olan saldırıları bertaraf etmek için daha büyük asal sayılar kullanılabilir. Bügüne kadar yapılan her bir saldırı ağır matematik işlemleri içeren ayrı bir makale olabilecek seviyededir. Onun için yapılan saldırıları ele alıp inceleme gibi bir seçeneğimiz bu makale kapsamında bulunmamaktadır. Bu bölümde daha çok yapılan saldırı çeşitleri ele alınarak tanıtılacak ve bu saldırıları kimlerin bulduğuna değinilecektir. Bahsi geçen saldırı çeşitleri hakkında yapılan çalışmalar üzerine detaylı bilgi edinmek isteyenler için ise referans olarak makalelerin kaynakları verilecektir.Zamanlama Saldırıları Temel felsefe, algoritmanın ya da algoritmanın adımlarının birinde yürütülen işlemin ne kadar sürede çalıştığını tespit edip buna göre çıkarımlar yapmaktır. ![]()
Şekil 3 - Zamanlama saldırısı gerçeklenmesi
Bu alanda yapılan ilk çalışma amerikalı bir kriptocu olan Paul Carl Kocher tarafından 1995 yılında gerçekleştirilmiş.[2] Bu çalışmadan beş yıl sonra bu sefer başka bir kriptocu olan Werner Schindler 2000 yılında çinli kalan teoremi ile RSA’ya karşı bir zamanlama saldırısı yapılabileceğini göstermiştir.[3] Daha sonra ise 2003 yılında Brumley ve Boneh yaptıkları çalışma ile bir ağ üzerinden elde edilen veriler kullanılarak RSA’yı çarpanlarına ayırmanın daha kolay ve pratik bir yolunu bulduklarını açıkladır.[4]Güç Analizi Saldırıları Bilindiği gibi en küçük donanım parçası transistörlerdir. Bir transistörün girişine uygulanan gerilim ile üzerinden akım geçmeye başlar. Bu akımdan dolayı transistörde güç tüketimi ve elektromanyetik alan oluşur. Güç analizi saldırılarında da işte bu akım farklarından yararlanarak bilgi toplanmaya çalışılır. Bu saldırı çeşidinin iki farklı türü vardır; sadece işlemcinin harcadığı enerjinin analiz edildiği Basit Güç Analizi(Simple Power Analysis) ile buna ek olarak istatistiki analizlerden ve hata düzeltme algoritmalarından yararlanılarak yapılan Farksal Güç Analizi(Differential Power Analysis) saldırılarıdır. RSA’e yapılan güç analizi saldırıları için öncelikli olarak ünlü kriptocu Kocher’in diferansiyel güç analizi üzerine yapmış olduğu çalışmalar[5][6] incelenmelidir. Bu çalışmaların yanında bir türk güvenlik uzmanı olan Onur Acıiçmez’in bu konu üzerine yaptığı ve başarılı sonuçlar elde ettiği çalışmasına[7] göz atılabilir. Hata Analizi Saldırıları Algoritma işletilirken çevresel bazı parametrelerin(sıcaklık, sistem saati, ışık, radyasyon, voltaj vb.) değiştirilmesi sağlanarak sistemde hatalı çalışmaya sebebiyet verilir. Hataya zorlanan sistemden elde edilen yanlış çıktılar ile beklenen doğru çıktıların karşılaştırılması ile elde edilen bilgiler yorumlanarak kriptografik anahtar ve algoritmanın koruduğu varlıklar hakkında bilgi toplanmaya çalışılır. Hata analizi ile RSA’e yapılan ilk saldırı 2010 yılında uygulanmıştır.[8] Bunun dışında incelenmesi gereken diğer bir çalışma ise Bellcore saldırısıdır.[9] Akustik Kriptanaliz Şifreleme ve şifre çözme işlemleri sırasında işlemci üzerinde yapılan matematiksel işlemler artmaktadır. Bundan dolayı da işlemciden insan kulağının duyabildiği ve duyamadığı bazı sesler çıkmaktadır. İşte bu seslerin geliştirilen cihazlar aracılığı ile dinlenmesi ve analiz edilip yorumlanarak bilgi toplanması işlemidir. RSA’in mimarlarından olan Shamir 2004 yılında sadece işlemciden çıkan ses ile zamanlama saldırısı yapılabileceğini ispatlayarak bu saldırı tekniği için kapıyı aralamış oldu. Daha sonra içerisinde yine Shamir’inde bulunduğu bir ekip bu araştırmalarını geliştirerek 2013 yılının sonlarında başarılı sonuçlar veren yeni bir saldırı tekniğini duyurmuşlardır.[10] Elektromanyetik Alan Saldırıları İşlemcilerin temelini oluşturan donanımın en küçük parçası olan transistörler durum geçişlerinde yüksek akım çekerler. Bu akım değişimi ile bir elektromanyatik alan oluşur. İşte bu yan kanal bilgisi analiz edilerek işlenen veri hakkında bilgi toplama üzerine inşa edilmiş bir saldırıdır. Bu alanda yapılan saldırı ve nasıl yapıldığı, intel atom işlemcileri üzerine yapılmış olan çalışma üzerinde incelenebilir.[11] Çarpanlara ayırma saldırısı Klasik şifre çözme yöntemi olan kaba kuvvet saldırısının RSA veriyonudur diyebiliriz. Anahtar üretimnde kullanılan N tam sayısını çarpanlarına ayırıp p ve q asal sayılarını bulmak amaçlı yapılan saldırıları kapsamaktadır. Bu işlemlerin nasıl gerçekleştiğini öğrenmek için bu alanda yapılan birkaç çalışmaya göz atmak yeterli olacaktır.[12][13] Küçük ‘e’ sayısı saldırısı Kullanıcının aynı mesaji bir çok kişiye aynı e sayısı ile şifreleyip gönderdiği durumda eğer e sayısı 3 gibi küçük bir sayı ise o zaman araya girip trafiği dinleyen bir kişi topladığı veriler ile çinli kalan teoremini kullanarak gönderilen mesajı ele geçirebilir. Daha detaylı olarak bu saldırıyı incelemek için bu saldırı üzerine geliştirilmiş olan Hastad ve Coppersmith teorileri incelenebilir.[14] Kuantum Hesaplama Gücü ile yapılan Saldırılar RSA basit görünen fakat bir o kadar da işlem gücü gerektiren matematik temelli bir şifreleme ve şifre çözme algoritmasıdır. Bu işlemler büyük sayıların modülü ve üslerinin hesaplanması olduğu için ciddi anlamda sağlam bir donanıma sahip bilgisayar veya paralel olarak çalışan bilgisayarlar üzerinde gerçekleştirildiği zaman verim alınabilir, aksi taktirde bu işlemlerin yapılması yıllar sürebilir. Ünlü matematikçi Peter Shor 1994 yılında kuantum bilgisayarlar üzerinde çalışan ve RSA algoritmasının güvenlik duvarı olan N sayısının çarpanlarına ayrılması işlemini yerine getiren Shor Algoritmasını[15] duyurur. Bu algoritma kendisine verilen bir sayının çarpanlarını çıktı olarak üretmek üzerine çalışmaktadır. Bu da demek oluyorki kuantum bilgisayarların gelişimi ile günümüzde kullanılan RSA algoritmalarının kırılması mümkün olacak. 6. DOĞRULUK İSPATIap ≡ a (mod p) yani ap-1 ≡1 (mod p) Burada p, asal bir sayı ve a ise p’den küçük sıfırdan farklı herhangi bir tamsayıdır. Bu teorem ile kabaca, p gibi asal bir sayıdan küçük bir tamsayının modüler olarak (p-1). üssünü hesapladığımızda bunun her zaman 1 tamsayısına eşit olduğu söylenir. Matematik bilgisi çok da kuvvetli olmayan birisi için oldukça soyut görünmesine rağmen bu teorem RSA algoritması için çok önemlidir. Gerçi RSA algoritmasında Fermat’nın küçük teoremi değil onun Euler tarafından genelleştirilmiş hali kullanılır. Görüldüğü üzere, Fermat ve Euler tarafından, sadece entelektüel bir edimin sonucunda bulunmuş bir teorem yüz yıllar sonrasında (Fermat 17. Euler ise 18. yüzyıllarda yaşamışlardır), elektronik imza gibi devrim niteliğindeki bir teknolojiye temel oluşturmaktadır. Pierre de Fermat bu teoremi öne sürmüş, fakat ispatlamamıştır. Teorem, daha sonra Leonhard Euler tarafından 1736'da ispatlanmıştır. Teorem asallık testlerinde ve bilgisayarda büyük sayılarla işlemlerde kullanılır. Örneğin; a = 2 ve p = 7 ise, 27 = 128, ve 128 − 2 = 7 × 18 sayısı 7'nin tam katıdır.[16] 6.1. Fermat’ın Küçük Teoremi ile İspatap-1 ≡ 1 (mod p) d.e ≡1 (mod φ(N)) yani d.e ≡1 (mod (p-1)(q-1)) Öyleyse; d.e -1 = k.(p-1)(q-1) şeklinde yazılabilir. (me)d ≡ m (mod N) yani (me)d ≡ m (mod p.q) (me)d ≡ m (mod p) ve (me)d ≡ m (mod q) olduklarını gösterebilirsek Çinli kalan teoremi göre (me)d ≡ m (mod p.q) olduğunu ispatlamış oluruz. (me)d ≡ m (mod p) olduğunu göstermek için m ≡ 0 (mod p) ve m ≢ 0 (mod p) durumlarına bakalım. İlk durumda (me)d, p 'nin katı olduğundan (me)d ≡ 0 ≡ m (mod p). İkinci durumda da mp-1 'in Fermat’nın küçük teoreminden dolayı 1’e denk olmasını kullanarak ispatı yapabiliriz: (me)d = m(e.d-1).m = mk.(p-1)(q-1).m = (mp-1)k.(q-1).m ≡ 1k(q-1).m ≡ m (mod p) (me)d ≡ m (mod q) olduğunu da benzer şekilde gösterip algoritmanın doğruluğunu ispatlamış oluruz. 6.2. Euler Teoremi ile İspatHer m mesajı için (me)d ≡ m (mod p.q) denkliğinin doğru olduğunu göstermek istiyoruz. e.d ≡ 1 (mod φ(N)) olduğunu biliyoruz. Dolayısıyla negatif olmayan bir h tamsayısı için e.d çarpımını e.d = 1 + h. φ(n) şeklinde yazabiliriz. m ve n’nin aralarında asal olduğunu varsayarsak: ![]() Sonuç olarak açık anahtarlı şifreleme algoritmalarında, sistemin güvenliği anahtar uzunluğuna bağlıdır. Bu algoritmaları daha güvenli hale getirmek için büyük/uzun anahtar değerleri kullanılmaktadır. Günümüzde de RSA şifreleme algoritmasını daha güvenli hale getirebilmek için çok daha büyük asal sayılar kullanılmaktadır. RSA şifreleme algoritması ile şifrelenmiş mesajın kırılması için anahtarların üretildiği bu asal sayıların tahmin edilmesi veya bulunması gerekmektedir. Günümüzde RSA algoritmasında anahtarları üretmek için kullanılan asal sayılar binlerce haneli olarak üretilebilmektedir. Bu da RSA algoritmasının kriptanaliz ve kaba kuvvet saldırıları ile kırılmasının şu anki teknoloji ile yıllar sürebileceğine işarettir. Bundan dolayı RSA şifreleme algoritması hala daha gücünü korumaktadır. |
Yorumlar(0)