Gökhan YİĞİTTÜRK & Abidin DOĞAN
Yalova Üniversitesi
1. Giriş
SEA, mantıksal AND, OR ve XOR gibi basit işlemler kullanarak çalışan düşük maliyetli bir şifreleme algoritmasıdır[1]. Bu özelliği sayesinde sınırlı komut seti olan işlemcilerde oldukça işe yarar[2].
SEA, textte, anahtarda ve işlemcide parametrik bir yapıya sahiptir. Bu esnek yapısı sayesinde farklı boyuttaki metinler, anahtarlar ve kelimeler üzerinde işlem yapabilmektedir[3]. Değişken döngü sayısı ve aşağıda tanımlanan parametrelerle birlikte Feistel yapısına dayalıdır.
- n: şifresiz metin boyutu, anahtar boyutu
- b: işlemci(ya da kelime) boyutu
- = : her Feistel[4] dalı için kelime sayısı
- : blok şifreleme döngü sayısı
Tek sınırlaması n
,6b
’nin katları şeklinde olmalıdır. Güvenliği sağlamak için gerekli minimum döngü sayısı;
= (For.1)
şeklinde olmalıdır.
Ayrıca gerekli minimum kelime sayısı;
= à (For.2)
olmalıdır.
SEA, lineer ve diferansiyel ataklara karşı güvenlik sağlar. Bu algoritmanın başka bir avantajı ise oldukça basit olmasıdır.
Bu basitlik, kolay uygulanabilirlik, az işlem gücü gerektirmesi ve az enerji tüketmesi gibi avantajlar sağlar. Örneğin, kablosuz algılayıcı ağlar da kullanılan sistem büyük yapılı şifreleme algoritmaları için uygun değildir[5]. Bu yüzden KAA’larda SEA block cipher oldukça işe yarayan bir algoritmadır. Bu avantajlarına rağman güvenlik açısından zayıflıkları vardır.Bu makaledeki amaç bu zayıflığı RSA algoritmasını kullanarak gidermektir.
RSA algoritması, Ron Rivest, Adi Shamir ve Leonard Adleman tarafından geliştirilmiştir. Adını bu kişilerin soyadlarının ilk harflerinden almıştır[6].
RSA, açık anahtarlı bir şifreleme yöntemidir. Tam sayıları çarpanlarına ayırmanın algoritmik zorluğuna dayana bir tür şifreleme algortiması olduğu için güvenilirdir. Hem şifreleme hem de elektronik imza atma olanağı sağlar.
Bu algoritmada biri gizli(Private Key) diğeri açık(Public Key) olmak üzere iki anahtar kullanılır[7]. Sistemin hem güvenilir hem de hızlı olması için kullanılacak anahtar boyutunun büyüklüğü önemlidir.
RSA’da gizli anahtarın paylaşılması gerekmediği için saklanması da gerekmez. Bu da sistemi depolama yükünden kurtarır[8]. Ancak büyük sayılarla işlem yapan bir algoritma olduğu için yavaştır. Band genişliğini fazlaca tüketir ve sistemi yavaşlatır. Bu uygulamada RSA’nın anahtar boyutunun 4096 bitten başlayarak 512 bite kadar çekilmesiyle işlem yükünü hafifletip işleyişinin hızlandırılması sağlanmıştır.
RSA algoritması anahtar üretimi, şifreleme ve şifre çözme olmak üzere 3 adımdan olışur.
Anahtar Üretimi[9] :
- p ve q olmak üzere biribirnden farklı iki adet yakın uzunlukta rastgele asal sayı seçilir.
- n=pq hesaplanır.
- φ(n) = (p-1)*(q-1) hesaplanır.
- İsmi e olan ve φ(n) ile aralarında asal olan bir tam sayı üretilir. 1<e<φ(n) koşulunu sağlamalıdır.
- de≡1 (mod φ(n) ) olacak şekilde bir d belirlenir.
Şifreleme[10]:
Bir M
mesajı gönderilmek istendiği zaman M
çevirilebilir bir protokol ile (dolgu şeması) 0<molacak şekilde bir m tamsayısına dönüştürülür.
Sonra şifrelenmiş mesaj c;
c= (mod n) (For.3)
olacak şekilde hesaplanır.
Şifre çözme ise;
m= (mod n) (For. 4)
işlemi ile de m bulunur. Sonra dolgu şemasının tersini alarak (M) elde edilir.
I. Önerilen yöntem
A. SEA Gerçeklenmesi
SEA algoritmasının en önemli özelliklerinden biri farklı işlemci ve anahtar/ham metin büyüklüklerinde çalıştırılabilir olmasıdır. Gerçeklemesi Java dilinde ve Netbeans İde’sinde yapılmıştır. Gereken anahtar ve ham metin büyüklüğü 96-bit olarak seçilmiştir.
Algoritmanın, verilen metni ne kadar süre içerisinde şifreleme/şifre çözme yaptığını hesaplayarak, başlangıçta ki verimi milisaniye(ms) cinsinden ölçülmüştür. Çalışma süresi uzun olan algoritmaların işlem yükünün fazla olması ve enerji tüketiminin standardın üzerine çıkması, çalışma sürelerinin orantılı bir şekilde hesaplandığını ortaya koymuştur. Elde edilen sonucun milisaniye cinsinden doğruluğunu kanıtlamak için yapılan uygulama birçok defa tekrarlanmıştır. Bu tekrarlardan çıkan ölçümlerin bir kısmının sonuçları aşağıdaki grafikte verilmiştir:
Fig.1. SEA_Grafik
Fig.1’de çıkan sonuç göz önüne alındığında SEA tek başına ortalama 37,6 ms gibi bir süre de şifreleme/şifre çözme işlemini gerçekleştirmiştir. Bu sonuç SEA’nın, az enerji gerektiren basit bir kullanımının olduğunu göstermiştir.
B. RSA Algoritmasının Gerçeklemesi
RSA’nın 4096-bit, 2048-bit, 1024-bit ve 512-bit anahtar uzunlukları kullanılarak her bir farklı anahtar boyutu için çalışma süreleri hesaplanmıştır. Bu hesaplamada ki amaç, RSA algoritmasının verimini bulmak ve RSA algoritmasını SEA’nın kullanıldığı gömülü sistem yapılarına uygun hale getirebilmektir.
Uygulama her farklı anahtar boyutu için birçok defa tekrarlanmıştır. Aşağıda verilen grafikler bu tekrarların bir kısmından oluşmaktadır. Uygulamanın algoritması yukarıda anlatılan işlemlerden ve çeşitli kaynaklardan yardım alarak oluşturulmuştur[11, 12, 13].
Gereken hesaplamalar aşağıda ki grafikler de ayrı ayrı anahtar bit uzunluklarına göre belirtilmiştir;
4096-bit;
Fig.2’deki grafikte görüldüğü üzere, RSA algoritmasının anahtar uzunluğu 4096-bit olduğunda çıkan ortalama çalışma süresi 7175,1 ms’dir. Bu sonuç göstermektedir ki, 4096-bit anahtar uzunluğundaki RSA’nın, işlem gücü yüksek ve çok enerji gerektiren bir algoritma olduğu anlaşılmıştır.
Fig. 2. RSA_Grafik(4096-bit)
2048-bit;
2048-bit anahtar uzunluklu RSA algoritması ile yapılan gerçeklemede ortaya çıkan ortalama çalışma süresi 1320,6 ms’dir.
Fig. 3. RSA_Grafik (2048-bit)
1024-bit;
1024-bit anahtar uzunluklu RSA algoritması ile yapılan gerçeklemede ortaya çıkan ortalama çalışma süresi 636 ms’dir.
Fig. 4. RSA_Grafik (1024-bit)
512-bit;
512-bit anahtar uzunluklu RSA algoritması ile yapılan gerçeklemede ortaya çıkan ortalama çalışma süresi 595,4 ms’dir.
Fig. 5. RSA_Grafik (512-bit)
A. SEA ve RSA Algoritmalarının İç İçe Gerçeklenmesi
RSA algoritmasının anahtar uzunluklarına göre çalışma süreleri bundan önceki aşamalarda test edilmiştir.
Bu kısımda, ham metin(şifrelenmemiş metin) SEA ile şifrelenmiştir. Daha sonra şifrelenmiş metin RSA algoritması kullanılarak tekrar şifrelenmiştir. Şifre çözme işlemini yaparken ise, önce RSA algoritması ile şifre çözme yapılmıştır. Son olarak, ortaya çıkan metin SEA tarafından çözümlenmiştir.
Bu basamaklar RSA algoritmasının bütün anahtar uzunlukları için teker teker gerçekleştirilmiştir.
SEA için yapılan işlemlerin ve testlerin birebir aynıları SEA-RSA algoritması için de yapılarak gereken sonuçlar hesaplanarak grafikleri aşağı da belirtilmiştir;
4096-bit RSA ve SEA;
4096-bit anahtar uzunluklu RSA algoritması ile SEA birleştirildiğinde ortaya çıkan uygulamanın ortalama çalışma süresi 14608,1 ms’dir
Fig. 6. SEA_ve_RSA_Grafik 1
2048-bit RSA ve SEA;
2048-bit anahtar uzunluklu RSA algoritması ile SEA birleştirildiğinde ortaya çıkan uygulamanın ortalama çalışma süresi 1363,9 ms’dir
Fig. 7. SEA_ve_RSA_Grafik 2
1024-bit RSA ve SEA;
1024-bit anahtar uzunluklu RSA algoritması ile SEA birleştirildiğinde ortaya çıkan uygulamanın ortalama çalışma süresi 696,9 ms’dir.
Fig. 8. SEA_ve_RSA_Grafik 3
512-bit RSA ve SEA;
512-bit anahtar uzunluklu RSA algoritması ile SEA birleştirildiğinde ortaya çıkan uygulamanın ortalama çalışma süresi 570,7 ms’dir.
Fig. 9. SEA_ve_RSA_Grafik 4
I. SONUÇ
SEA’nın tek başına hızlı çalıştığını ikinci bölümde ki incelememizde gördük. RSA algoritmasının çalışma süresinin anahtar boyutuyla doğru orantılı olarak arttığını üçüncü bölümdeki incelemelerimize dayanarak söylemek mümkündür.
SEA’nın güvenliğini artırmak için RSA ile birleştirmek temel amacımızdı. Bunu makalenin başından beri dile getirdik. Asıl önemli nokta güvenliği artırırken çalışma süresindeki artışı minimum düzeyde tutmaya çalışmaktır. Bu sebeple SEA’yı tek başına inceledik. RSA’yı da her bir anahtar boyutu için teker teker inceledik. Son olarak iki algoritmayı da birleştirip, RSA’nın her anahtar boyutu için bu birleşik algoritmayı tekrar inceledik.
4096-bit anahtar uzunluğuna sahip RSA ve SEA birleşimi olan algoritmanın çalışma süresi, RSA’nın tek başına çalışma süresinin iki katıdır. Sağladığı muazzam güvenlik artışına rağmen işlem yükü, enerji tüketimi ve gecikmesi göz ardı edilemeyecek kadar fazladır.
2048-bit anahtar uzunluğuna sahip RSA ve SEA birleşimi olan algoritmanın çalışma süresi ile RSA’nın tek başına çalışma süresi arasındaki fark 100 ms ‘den az olmasına rağmen bu süre SEA ile karşılaştırıldığında çok fazla durmaktadır.
1024-bit anahtar uzunluğuna sahip RSA ve SEA birleşimi olan algoritmanın çalışma süresi, RSA’nın tek başına çalışma süresi ile kıyaslandığında 70 ms den az gecikmeyle çalışmaktadır. Bu süre SEA ile karşılaştırıldığında öncekilere nazaran daha iyi bir sonuç olarak göze çarpmaktadır.
512-bit anahtar uzunluğuna sahip RSA ve SEA birleşimi olan algoritmanın çalışma süresi,RSA’nın çalışma süresinden daha kısadır.Bu da alınan sonuçlar arasında en iyi olanıdır.
Sonuç olarak 512-bit anahtar uzunluğuna sahip RSA ve SEA birleşimi olan algoritma, RSA nın tek başına çalışmasından hızlıdır. Bunun yanı sıra SEA ile karşılaştırıldığında göz ardı edilebilecek kadar az gecikme yaşamaktadır. 4096-bit,2048-bit,1024-bit anahtarlar kadar olmasa da SEA’nın güvenliğini büyük ölçüde artırmıştır. Bu güvenlik artışına rağmen işlem yükü, enerji tüketimi ve gecikmesi amaçladığımız gibi çoğu defa minimum düzey de kalsa da her zaman aynı sonuçlar alınamamaktadır. Sonucun net bir şekil de değil de değişken olması, sistemin bulunduğu çalışma ortamıyla alakalıdır. Bunun sonucunda Kablosuz Algılayıcı Ağların(KAA), küçük yapılı sistemlerden oluşması[14] nedeniyle bunlarda kullanılan SEA, bu sayede daha güvenli hale getirilmiştir.
Referanslar
- F. -X. Standaert, G. Piret, N. Gershenfeld, J.-J. Quisquater., “SEA: A Scalable Encryption Algorithm for Small Embedded Applications”, CARDIS 2006, Lecture Notes in Computer Science, vol. 3928, April 2006, pp. 222-236.
- F. Macé, F.-X. Standaert, J.-J. Quisquater, “FPGA Implementation(s) of a Scalable Encryption Algorithm”, IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 16, no.2, Nov. 2007, pp. 212 – 216
- SEA Şifreleme Algoritması Kullanarak Güvenli Kablosuz Algılayıcı Ağ Haberleşmesinin Gerçekleştirilmesi, Cüneyt BAYILMIŞ, Murat ÇAKIROĞLU
- Elastic Block Ciphers: The Feistel Cipher Case Debra L. Cook Moti Yung Angelos D. Keromytis Department of Computer Science Columbia University, New York, NY dcook,moti,angelos ✁ @cs.columbia.edu Technical Report May 19, 2004
- Yeni Bir Kablosuz Algılayıcı Ağ Veri Bağı Katmanı Güvenlik Protokolü, Necla BANDIRMALI, İsmail ERTÜRK
- RSA, https://tr.wikipedia.org/wiki/RSA
- The Mathematics of the RSA Public-Key Cryptosystem Burt Kaliski RSA Laboratories
- http://bidb.itu.edu.tr/seyirdefteri/blog/2013/09/08/rsa-algoritmas%C4%B1, RSA Algoritması
- Kriptoloji ve bir RSA Uygulaması, http://www.muratyildirimoglu.com/makaleler/rsa_kripto_sistemi.htm
- http://www.guvenatbakan.com/blog/rsa-sifreleme-algoritmasi/, RSA Şifreleme Algoritması
- http://www.muratguvenc.net/2011/02/06/rsa-sifreleme-algoritmasi/, RSA Şifreleme Algoritması
- RSA Şifreleme Algoritması ve Aritmetik Modül Uygulaması, Tarık YERLİKAYA, Hakan GENÇOĞLU, Mustafa Kadir EMİR, Mustafa ÇANKAYA, Ercan BULUŞ
- http://www.pki.iam.metu.edu.tr/yazi-makale/yunusEA_01.pdf , RSA Şifreleme Algoritması
- Kablosuz algılayıcı ağlarda kullanılan teknoloji ve protokoller üzerine bir inceleme, Oğuz ATA, Erdem UÇAR, Hasan H. BALIK