pdf ps tez şifreleme eğrisi eliptik ücretsiz
Transkript
pdf ps tez şifreleme eğrisi eliptik ücretsiz
KÖR SAYISAL İMZA SİSTEMİNİN GELİŞTİRİLMESİ VE UYGULANMASI BLIND DIGITAL SIGNATURE SYSTEM DEVELOPMENT AND IMPLEMENTATION İSMAİL BÜTÜN Hacettepe Üniversitesi Fen Bilimleri Enstitüsü Yönetmeliğinin ELEKTRİK ve ELEKTRONİK Mühendisliği Anabilim Dalı İçin Öngördüğü YÜKSEK LİSANS TEZİ olarak hazırlanmıştır. 2006 Fen Bilimleri Enstitüsü Müdürlüğü'ne, Bu çalışma jürimiz tarafından ELEKTRİK – ELEKTRONİK MÜHENDİSLİĞİ ANABİLİM DALI’nda YÜKSEK LİSANS TEZİ olarak kabul edilmiştir. Başkan :…................................ (Prof.Dr. Selçuk GEÇİM) Üye(Danışman) :.…............................. (Yrd.Doç.Dr. Mehmet DEMİRER) Üye (Var ise Eş Danışman) :…............................. (Doç.Dr. Abdullah ÇAVUŞOĞLU) Üye :…............................. (Yrd.Doç.Dr. Ali Ziya ALKAR) Üye :…........................... (Yrd.Doç.Dr. Derya ALTUNAY) ONAY Bu tez, ..... /..... / ....... tarihinde Enstitü Yönetim Kurulunca kabul edilmiştir. Prof. Dr. Ahmet R. ÖZDURAL FEN BİLİMLERİ ENSTİTÜSÜ MÜDÜRÜ ÖZ Verilerin, her türlü bilgi teknolojileri kullanılarak doğrulanmasına “Elektronik İmza” denilmektedir. “Sayısal İmza” ise elektronik imzanın özel bir çeşidi olup, açık anahtarlı şifreleme algoritmalarını kullanarak elektronik veri bütünlüğünü ve doğruluğunu garanti eder. Sayısal imzanın işlevi, elektronik ortamda aslından ayrılamayan sahte imzayı ve orijinal dokümanların değiştirilmesini önlemektir. Sayısal imzada amaç ise elle imza atma işlemini elektronik ortamda yapabilmek için zemin yaratmaktır. Yazılı dokümanlarda kullanılan imzalar gibi, sayısal imzalar da günümüzde elektronik verilerin sahiplerini tanılamada kullanılmaktadır. Bu tezde “Sayısal İmza” nın özel bir uygulaması olan “Kör Sayısal İmza (KSİ) Blind Digital Signature” protokolü tanıtılmaktadır. Kör sayısal imza, çok kullanıcılı ortamlardaki kullanıcı gizliliğinin ön planda olduğu birçok kriptografi uygulamasında kullanılabilmektedir; elektronik oylama sistemleri, elektronik ödeme sistemleri vb. Bu tezde kriptografi genel perspektifinden bakıldığında KSİ’nin uygulama alanları gösterilmeye çalışılmıştır. Bu bağlamda ilk olarak açık anahtarlı kriptografi algoritmalarından olan RSA, ardından kriptografideki şifreleme-deşifreleme alanında gelinen en son noktalardan biri olan ECC (Eliptik Eğri Kriptografisi) tanıtılmış ve aralarındaki farklar ortaya konulmuştur. Tezin ilerleyen bölümlerinde KSİ protokolünün D.Chaum tarafından geliştirilmiş olan ve RSA’yı kullanan versiyonu tanıtılıp, yazılım uygulaması yapılmıştır. Bu çalışmada, J.L.Camenisch’in DSA’yı kullanmış olduğu KSİ’sini temel alarak geliştirmiş olduğumuz ve ECDSA’yı kullanan KSİ protokolünün tanıtımı ile yazılım uygulaması yapılmış ve elde edilen sonuçlar karşılaştırılarak sunulmuştur. Anahtar Kelimeler: Kör Sayısal İmza, Sayısal İmza, RSA Şifreleme Algoritması, Eliptik Eğri Şifreleme Algoritması, Eliptik Eğri Sayısal İmza Algoritması (ECDSA) Danışman: Yrd.Doç.Dr. Mehmet DEMİRER, Hacettepe Üniversitesi, Elektrik Elektronik Mühendisliği Bölümü, Elektrik Elektronik Mühendisliği Anabilim Dalı i ABSTRACT The verification of data by using any means of the information technologies is called “Electronic Signature”. The “Digital Signature” is a special kind of electronic signature, which uses public key cryptography algorithms to provide data integrity and authenticity. The function of digital signature is to prevent fake signatures that cannot be distinguished from the original ones, and to prevent the modification of the original documents. The aim of digital signature is to form a basis for hand written signatures in electronical ways. Digital signatures, as in hand written signatures, are used to identify the owners of electronic data today. In this thesis, “Blind Digital Signature (BDS)” is presented as a special application of the “Digital Signature” scheme. Blind digital signature can be used in many applications of cryptography, where user privacy is important, such as electronical voting systems, electronic payment systems, etc. It is intended to point out the application areas of the BDS in cryptography. In this sense, firstly the RSA scheme, one of the common public key algorithms; then, the ECC scheme, one of the latest ways in encryption-decryption of the cryptology, is presented and distinctive properties of both schemes are compared. Then the BDS protocol using RSA, developed by D.Chaum is implemented. Afterwards, we devised the blind digital signature protocol using ECDSA, based upon J.L.Camenisch’s protocol that originally used DSA, is presented and implemented. Consequently, the results are shown and compared. Keywords: Blind Digital Signature, Digital Signature, RSA Encryption Algorithm, ECC Encryption Algorithm, Elliptic Curve Digital Signature Algorithm (ECDSA) Advisor: Asst.Prof. Mehmet DEMİRER, Hacettepe University, Department of Electrical and Electronics Engineering, Electrical and Electronics Engineering Section ii TEŞEKKÜR Sayın hocam Yrd.Doç.Dr. Mehmet DEMİRER (tez danışmanım), çalışmamın sonuca ulaştırılmasında ve karşılaşılan güçlüklerin aşılmasında bana yön gösterici olmuştur. Kendisine anlayışı için ve gösterdiği sabırdan ötürü teşekkürlerimi sunmayı bir borç biliyorum. Bu çalışma sırasında desteklerini esirgeyemeyen TÜBİTAK MAM (Marmara Araştırma Merkezi) BTE (Bilişim Teknolojileri Enstitüsü)’deki tüm iş arkadaşlarıma ve yöneticilerime de teşekkürlerimi sunarım. Sayısal imza alanındaki engin bilgisini benimle paylaşarak çalışmamın ilerlemesinde önemli katkılarda bulunan kıymetli arkadaşım Muhammed Serdar SORAN’a da teşekkürlerimi sunarım. Son olarak benden hiçbir zaman desteklerini esirgemeyen, beni bu yaşa getirip her zaman yanımda olan babam Orhan BÜTÜN’e, annem Emine BÜTÜN’e ve diğer aile fertlerimize teşekkür ederim. İsmail BÜTÜN Hacettepe Üniversitesi 2006 Ankara iii İÇİNDEKİLER DİZİNİ Sayfa 1. GİRİŞ .............................................................................................................. 1 1.1. Kriptografiye Genel Bir Bakış ................................................................... 2 1.2. Gizli Anahtarlı Kriptografi ......................................................................... 4 1.3. Açık Anahtarlı Kriptografi ......................................................................... 6 1.3.1. Açık Anahtarlı Kriptografi ile Şifreleme.............................................. 6 1.3.2. Açık Anahtarlı Kriptografi ile Sayısal İmzalama................................. 8 1.3.3. Tek Yönlü Fonksiyonlar .................................................................... 8 1.3.4. Açık Kapılı Tek Yönlü Fonksiyonlar [10] ........................................... 9 1.3.5. Asal Çarpanlara Ayırma Problemi..................................................... 9 1.3.6. Ayrık Logaritma Problemi................................................................ 10 1.4. Açık ve Gizli Anahtarlı Kriptografilerin Karşılaştırılması ......................... 11 2. AÇIK ANAHTARLI KRİPTOGRAFİ ALGORİTMALARI.................................. 13 2.1. RSA Algoritması..................................................................................... 13 2.1.1. RSA ile Şifreleme............................................................................ 14 2.1.2. RSA ile Sayısal İmzalama............................................................... 14 2.1.3. RSA Algoritmasının Güvenliği......................................................... 14 2.2. Eliptik Eğri Algoritması (ECC) ................................................................ 15 2.2.1. Abelian Gruplar ............................................................................... 16 2.2.2. Eliptik Eğriler ................................................................................... 16 2.3. Eliptik Eğri Kriptografisi (ECC) ............................................................... 27 2.3.1. Eliptik Eğri Şifrelemesi/Deşifrelemesi.............................................. 28 2.3.2. Eliptik Eğri Kriptografisinin Güvenliği .............................................. 29 2.4. RSA ve ECC Algoritmalarının Karşılaştırılması...................................... 30 3. ELİPTİK EĞRİ SAYISAL İMZA ALGORİTMASI (ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM - ECDSA) ................................................................. 33 3.1. DSA (Digital Signature Algorithm) .......................................................... 33 3.2. ECDSA................................................................................................... 35 3.3. NIST Tarafından Önerilen Eliptik Eğriler [36] ......................................... 36 4. ELEKTRONİK İMZA ...................................................................................... 38 4.1. Elektronik İmzaya Genel Bir Bakış ......................................................... 38 4.2. Sayısal İmza .......................................................................................... 42 4.2.1. Sayısal İmzanın İşleyişi:.................................................................. 43 4.2.2. Özet Fonksiyonu ............................................................................. 43 4.2.3. SHA-1 Algoritması .......................................................................... 44 4.2.4. MD5 Algoritması ............................................................................. 45 4.2.5. SHA-1 ile MD5 in karşılaştırılması [10] ........................................... 45 4.3. Bir Mesajı İmzalama............................................................................... 46 4.4. İmzalanmış Bir Mesajın Doğrulanması:.................................................. 47 4.5. Sayısal İmza Protokolleri........................................................................ 48 iv 5. KÖR SAYISAL İMZA ..................................................................................... 49 5.1. D.Chaum’un Kör Sayısal İmza Modeli.................................................... 50 5.1.1. Orijinal RSA ile Sayısal İmzalama Modeli ....................................... 50 5.1.2. Chaum’un Kör Sayısal İmza Protokolü ........................................... 52 5.2. D.Chaum’un Elektronik Ödeme Modeli .................................................. 54 5.2.1. e-parayı Çekme Aşaması ............................................................... 55 5.2.2. Ödeme Aşaması ............................................................................. 56 5.2.3. Depozit Aşaması............................................................................. 56 5.2.4. Chaum’un Elektronik Ödeme Modeli için Uygulama Örneği ........... 57 5.3. Ecash ..................................................................................................... 58 5.3.1. Ecash ile Ödeme İşleminin Seyri .................................................... 60 5.4. Elektronik Oylama için Uygulama Örneği............................................... 61 5.5. J. L. Camenisch‘in Kör Sayısal İmza Modeli [35] ................................... 62 5.5.1. İlklendirme aşaması: ....................................................................... 62 5.5.2. İstemci aşaması: ............................................................................. 62 5.5.3. İmzalama aşaması:......................................................................... 63 5.5.4. Körleştirmenin giderilmesi aşaması: ............................................... 63 5.5.5. Doğrulama aşaması:....................................................................... 63 5.6. Bu Tezde Geliştirilen Kör Sayısal İmza Modeli ...................................... 63 5.6.1. İlklendirme ve ECDSA için Anahtar Çifti Oluşturma: ....................... 63 5.6.2. ECDSA ile Mesajın Körleştirilmesi: ................................................. 64 5.6.3. ECDSA ile İmzalama: ..................................................................... 64 5.6.4. ECDSA ile Körleştirmenin Giderilmesi ............................................ 65 5.6.5. ECDSA ile İmza Doğrulama:........................................................... 66 5.6.6. Doğrulama Aşamasının İspatlanması ............................................. 67 6. UYGULAMALAR ve DEĞERLENDİRMELER ............................................... 68 6.1. D.Chaum’un Kör Sayısal İmza Modelinin Uygulaması ........................... 68 6.1.1. İlklendirme Aşaması........................................................................ 68 6.1.2. Körleştirme Aşaması....................................................................... 71 6.1.3. İmzalama Aşaması ......................................................................... 73 6.1.4. Körleştirmenin Giderilmesi Aşaması ............................................... 75 6.1.5. İmzanın Doğrulanması.................................................................... 77 6.1.6. Farklı bir İmza ile Doğrulama Aşamasının Geçilmeye Çalışılması.. 79 6.2. Bu Tezde Geliştirilen Kör Sayısal İmza Modelinin Uygulaması.............. 81 6.2.1. İlklendirme Aşaması........................................................................ 81 6.2.2. Körleştirme Aşaması....................................................................... 82 6.2.3. İmzalama Aşaması ......................................................................... 84 6.2.4. Körleştirmenin Giderilmesi Aşaması ............................................... 86 6.2.5. İmzanın Doğrulanması.................................................................... 88 6.2.6. Farklı bir İmza ile Doğrulama Aşamasının Geçilmeye Çalışılması.. 90 6.3. Performans Analizi ................................................................................. 91 7. SONUÇLAR .................................................................................................. 97 8. EKLER DİZİNİ .............................................................................................102 v ŞEKİLLER DİZİNİ Sayfa Şekil 1 Gizli Anahtarlı Kriptografi Sistemi Örneği.................................................... 5 Şekil 2 Açık Anahtarlı Kriptografi Sistemi Örneği.................................................... 7 Şekil 3 Eliptik Eğri örnekleri [10] ........................................................................... 19 Şekil 4 Eliptik eğri üzerindeki bir P noktasının ikiye katlanması [11]..................... 20 Şekil 5 yP = 0 durumunda P noktasının ikiye katlanması [11].............................. 21 Şekil 6 E23(1, 1) Eliptik Eğrisine ait noktalar [10] .................................................. 24 Şekil 7 RSA ve ECC’nin Güvenlik Seviyelerinin Karşılaştırılması [14].................. 31 Şekil 8 : Bir düz metnin sayısal imzasının, imza sahibinin gizli anahtarı kullanılarak açık anahtarlı bir şifreleme algoritması ile oluşturulması. .............................. 46 Şekil 9 : İmza sahibinin imzaladığı iddia edilen düz metin-sayısal imza çiftinin, imza sahibinin açık anahtarı kullanılarak açık anahtarlı bir algoritma ile doğrulanması. ............................................................................................... 47 Şekil 10 Orijinal RSA ile sayısal imzalama modeli................................................ 51 Şekil 11 RSA ile oluşturulan imzasının doğrulanması .......................................... 52 Şekil 12 Kör sayısal imzalama – körleştirme ve imzalama safhaları .................... 53 Şekil 13 Kör sayısal imzalama – körleştirmenin kaldırılması ve elde edilen sayısal imzanın doğrulanması safhaları .................................................................... 54 Şekil 14 Geliştirilen kör sayısal imzalama modeli – körleştirme ve imzalama safhaları ........................................................................................................ 65 Şekil 15 Geliştirilen kör sayısal imzalama modeli– körleştirmenin kaldırılması ve elde edilen sayısal imzanın doğrulanması safhaları...................................... 66 Şekil 16 m mesajını seçmesi için kullanıcıya sunulan pencere ............................ 69 Şekil 17 Körleştirilerek imzalanacak olan m mesajı............................................. 69 Şekil 18 m mesajının SHA-1 özetini kaydetmesi için kullanıcıya sunulan pencere70 Şekil 19 Bulunan parametrelerin ve m’ mesaj özetinin kullanıcıya gösterilmesi ... 71 Şekil 20 Körleştirmek istenilen mesaj özetinin seçilmesi ...................................... 71 Şekil 21 Körleştirilen mesaj özetinin (m’) kaydedilmesi ........................................ 72 Şekil 22 Körleştirilen mesaj özetinin (m’) ekranda kullanıcıya gösterilmesi .......... 72 Şekil 23 İmzalanılacak olan körleştirilmiş mesaj özetinin (m’) seçilmesi............... 73 Şekil 24 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün kaydedilmesi....... 74 Şekil 25 Körleştirilen mesaj özetinin (m’) imzası olan (s’) ekranda gösterilmesi ... 74 Şekil 26 Körleştirmenin giderileceği, körleştirilmiş mesaj özetinin imzasının (s’) bulunduğu dosyanın seçilmesi ...................................................................... 75 Şekil 27 m mesajının özetine ait s imzasının kaydedilmesi .................................. 76 Şekil 28 m mesajının özetine ait s imzasının ekranda gösterilmesi...................... 76 Şekil 29 Kullanıcının s imzasının bulunduğu dosyayı seçmesi............................. 77 Şekil 30 Kullanıcının s imzasından elde ettiği m mesajının özetini H(m)’ kaydetmesi .................................................................................................... 78 Şekil 31 H(m) ile H(m)’ ve imza doğrulanma bilgilerinin ekranda gösterilmesi ..... 78 Şekil 32 m mesajına ait s imzası .......................................................................... 79 Şekil 33 m mesajına ait s imzasında 1 ikillik değişikliğin yapılması ...................... 80 Şekil 34 s imzasında yapılan 1 ikillik değişikliğin sonucunda imzanın reddedilmesi ...................................................................................................................... 80 Şekil 35 NIST eliptik eğrilerinden birini seçmesi için kullanıcıya sunulan pencere 81 Şekil 36 Bulunan eliptik eğri parametrelerinin ve anahtarların kullanıcıya gösterilmesi ................................................................................................... 82 vi Şekil 37 m mesajını seçmesi için kullanıcıya sunulan pencere ............................ 83 Şekil 38 Körleştirilen mesaj özetinin (m’) kaydedilmesi ........................................ 83 Şekil 39 Körleştirilen mesaj özetinin (m’) ekranda kullanıcıya gösterilmesi .......... 84 Şekil 40 İmzalanılacak olan körleştirilmiş mesaj özetinin (m’) seçilmesi............... 85 Şekil 41 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün kaydedilmesi....... 85 Şekil 42 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün ekranda gösterilmesi ................................................................................................... 86 Şekil 43 Körleştirmenin giderileceği, körleştirilmiş mesaj özetinin (m’) imzasının (s’) bulunduğu dosyanın seçilmesi ...................................................................... 87 Şekil 44 m mesajının özetine ait (s, R) imzasının kaydedilmesi ........................... 87 Şekil 45 m mesajının özetine ait (s, R) imzasının ekranda gösterilmesi............... 88 Şekil 46 Kullanıcının (s, R) imzasının bulunduğu dosyayı seçmesi...................... 89 Şekil 47 sG ile (rQ + H(m)R) ve imza doğrulanma bilgilerinin ekranda gösterilmesi ...................................................................................................................... 89 Şekil 48 m mesajına ait (s, R) imzası ................................................................... 90 Şekil 49 m mesajına ait (s, R) imzasında 1 ikillik değişikliğin yapılması ............... 90 Şekil 50 (s,R) imzasında yapılan 1 ikillik değişikliğin sonucunda imzanın reddedilmesi.................................................................................................. 91 Şekil 51 Mesajın körleştirilmesi aşaması için işlemcide harcanan süreler (sn)..... 92 Şekil 52 İmzalama aşaması için işlemcide harcanan süreler (sn) ........................ 93 Şekil 53 Körleştirmenin giderilmesi aşaması için işlemcide harcanan süreler (sn) 93 Şekil 54 Doğrulama aşaması için işlemcide harcanan süreler (sn) ...................... 94 Şekil 55 Farklı algoritmalardaki işlemlerin birlikte değerlendirilmesi ..................... 94 Şekil 56 Değişik anahtar uzunluklarına ait güvenlik seviyelerinin MIPS cinsinden gösterimi........................................................................................................ 96 Şekil 57 512 ikillik bir bloğun SHA-1 ile işlenmesi [10] .......................................104 vii ÇİZELGELER DİZİNİ Sayfa Çizelge 1 Çarpanlara ayırmanın yıllara göre gelişimi [10] .................................... 10 Çizelge 2 Açık ve Gizli Anahtarlı Kriptografilerin Karşılaştırılması........................ 12 Çizelge 3 E23(1, 1) Eliptik Eğrisi üzerindeki noktalar............................................. 23 Çizelge 4 ECC ve RSA’nın Kripto Analizleri için Gerekli Olan İşlemsel Güçlerin Karşılaştırılması [10] ..................................................................................... 30 Çizelge 5 RSA ve ECC’nin Anahtar Uzunluklarının Karşılaştırılması [14] ............ 31 Çizelge 6 NIST tarafından önerilen asal alan üzerindeki eliptik eğriler................. 37 Çizelge 7 Aynı mesaj için belirtilen işlemlerde işlemci tarafından harcanan süreler (sn cinsinden)................................................................................................ 92 Çizelge 8 Aynı mesaj için belirtilen algoritmalarda kullanılan anahtarların ikillik uzunluklarının ve güvenlik seviyelerinin karşılaştırılması .............................. 95 viii SİMGELER VE KISALTMALAR ECC Elliptic Curve Cryptology - Eliptik Eğri Kriptografisi ECDSA Elliptic Curve Digital Signature Algorithm – Eliptik Eğri Sayısal İmza Algoritması FIPS Federal Information Processing Standard - Ulusal Bilgi İşleme Standardı, ABD GF Galois Field - Galois Sonlu Alanı MAC Message Authentication Codes - Mesaj Doğrulama Kodu MD5 Message Digest Algorithm - Mesaj Özetleme Algoritması MIPS Million Instructions Per Second - Saniye Başına Yapılan Bir Milyon İşlem MIT Massachusetts Institute of Technology - Massachusetts Teknoloji Enstitüsü, ABD NIST National Institute of Standards and Technology - Ulusal Standart ve Teknoloji Enstitüsü, ABD OBEB Ortak Bölenlerin En Büyüğü RSA Rivest Shamir Adleman Algoritması SHA Secure Hash Algorithm - Güvenli Özet Algoritması ix 1. GİRİŞ Sayısal imzalar günümüzde elektronik verilerin yazarlarını/sahiplerini tanılamada kullanılmaktadır. Bu tezde sayısal imzanın özel bir uygulaması olan Kör Sayısal İmza ile ilgili bir çalışma gerçekleştirilmiştir. Tezin genel akışı şu şekildedir: 1. Bölüm: İlk kısımda kriptografiye genel bir bakış yapılmıştır. Gizli Anahtarlı Kriptografi ile Açık Anahtarlı Kriptografiden bahsedilmiş ve kıyaslamaları verilmiştir. Açık anahtarlı kriptografinin Sayısal İmzalamanın temeli olduğu burada vurgulanmıştır. Sayısal imzalamanın önemli algoritmalarından olan Tek Yönlü Fonksiyonlar anlatılmıştır. Sayısal imzalamada kullanılan açık anahtarlı kriptografinin dayandığı temel matematiksel problemler olan Asal Çarpanlara Ayırma Problemi ile Ayrık Logaritma Problemleri de bu kısımda anlatılmıştır. 2. Bölüm: Bu kısımda açık anahtarlı kriptografi algoritmalarından olan RSA ve ECC ele alınmıştır. Sırası ile RSA ile şifreleme, RSA ile sayısal imzalama ve RSA algoritmasının güvenliği konuları işlenmiştir. Ardından ECC incelenmiştir. Abelian Gruplar ve Eliptik Eğrilere değinilip, eliptik eğriler üzerindeki aritmetik işlemlerden bahsedilmiştir. ECC şifrelemesi/deşifrelemesi ile ECC güvenliği konularına değinilip ECC’nin RSA ile kıyaslaması yapılmıştır. 3. Bölüm: Bu kısımda ilk olarak sayısal imza algoritması olan DSA tanıtılmış. Ardından ECC’nin sayısal imzalama için oluşturulan protokolü olan ECDSA incelenmiştir. Son olarak NIST tarafından asal alan için önerilen eliptik eğrilerden bahsedilmiştir. 4. Bölüm: Bu kısımda ise Elektronik İmza ve Sayısal İmza kavramları incelenmiş, bu kavramların ülkemizdeki geldiği noktalar gösterilmiştir. Sayısal imzalamada en çok kullanılan özet fonksiyonları olan SHA1 ve MD5’e değinilmiştir. Ardından sayısal imzalamayı oluşturan İmzalama ve Doğrulama aşamaları anlatılmıştır. 5. Bölüm: Kör Sayısal İmza bu kısımda sunulmuştur. İlk olarak RSA ile sayısal imza modeli anlatılmış, ardından D.Chaum’un bu modeli nasıl bir kör sayısal imza modeline çevirdiği anlatılmıştır. Ardından kör sayısal imzalanın kullanım alanlarından biri olan Elektronik Ödeme yönteminde D.Chaum’un modeli 1 gösterilerek bir uygulama örneği verilmiştir. Daha sonra Elektronik Oylama için kör sayısal imzanın bir uygulama örneği verilmiştir. Müteakip alt bölümde J.L.Camenisch’in DSA’yı referans alan kör sayısal imza modeli gösterilmiştir. Son olarak bu tezde geliştirilen ve ECDSA’yı referans alan kör sayısal imza modeli gösterilmiştir. 6. Bölüm: Bu kısımda, bizim tezde geliştirdiğimiz kör sayısal imza modeli ile D.Chaum’un modeli için Borland C++ programı kullanılarak oluşturulan uygulama örnekleri verilmiştir. Ardından bu uygulama örneklerinin, kör sayısal imzalamanın Körleştirme, İmzalama, Körleştirmeyi Giderme ve Doğrulama aşamaları için performans analizleri yapılmıştır. Yapılan analizler karşılaştırmalı olarak sunulmuş ve çıkarılan sonuçlar aktarılmıştır. 1.1. Kriptografiye Genel Bir Bakış Kriptografi alanındaki en temel hedef, karşılıklı iki tarafın güvenli olmayan bir kanal üzerinden güvenli bir haberleşme yapabilmelerini sağlamaktır. Güvenli teriminin muhtemelen birçok tanımı vardır. Güvenliğin önemli kıstaslarından birisi, karşılıklı haberleşen iki tarafın gerçekleştirdiği konuşmanın içeriğinin hattı dinleyen üçüncü bir kişi tarafından anlaşılamamasının sağlanmasıdır. Bu kriptografinin temel işlemlerinden olan şifreleme ile mümkündür. Şifreleme işlemi, mesaj metnine uygulanan bir çeşit dönüştürme ile şifreli metnin elde edilmesidir. Bu işlemle gönderici taraf mesajlarını şifreleyip, elde ettiği şifreli metni alıcı tarafa yollar. Şifreli metin öyle bir şekilde oluşturulmalıdır ki, hattı dinleyen herhangi bir kişi şifreli metinden mesaj metnini elde edememelidir. Ancak, deşifreleme adı verilen bir geri dönüştürme işlemi ile alıcı tarafın şifreli metinden mesaj metnini elde etmesi mümkün olmalıdır. Her iki işlem de, şifreleme ve deşifreleme, verimli ve güvenli olmalıdır. Kriptografik sistemin güvenlik seviyesi hem algoritmaya hem de anahtar boyutuna bağlıdır. MIPS (saniye başına yapılan bir milyon işlem) ölçütündeki aynı zaman aralığında, uzun anahtarların kısa anahtarlara göre tahmin edilebilme olasılığı daha düşüktür. Ayrıca anahtara eklenen her bir ek ikillik (bit) için, mevcut anahtarın tahmin edilebilme zamanı iki katına çıkmaktadır. 2 Kriptografinin ilk zamanlarında sistemler gizli anahtar kavramı ile tasarlanmaktaydı. Burada haberleşme yapacak olan taraflar, haberleşme öncesinde şifreleme ve deşifreleme işlemlerinde kullanılacak olan özel bir anahtar üzerinde anlaşmaya varmalıdır. Bu anahtar üzerinde anlaşma yapılırken çok gizli olunmalıdır. Buna ek olarak, anlaşma sonrasında bu anahtar kesinlikle gizli tutulmalı ve sadece haberleşmeyi yapacak iki taraf bunu bilmelidir. Taraflar daha sonra bu gizli anahtar sayesinde güvenli bir haberleşme sağlayabilirler. Bu gizli anahtar üzerinde anlaşmaya varma işlemi tahmin edilenden güç olabilmektedir. Şöyle bir soruyu gündeme getirmiştir: “Haberleşme öncesi gizli anahtar belirleme işlemi olmaksızın güvenli bir biçimde şifreleme ve deşifreleme işlemleri gerçekleştirilebilir mi?” Diffie ve Hellman [1] bu probleme, kriptografiye yeni bir bakış açısı kazandıran makalelerinde bir çözüm sunmuşlardır. Çözümlerinde; karşılıklı taraflar, güvenli olmayan bir kanaldan gizli anahtar üzerinde güvenli bir biçimde anlaşabilmekte ve bunun için haberleşme öncesinde herhangi bir işlem gerekmemektedir. Verdikleri yapının temeli bir sayı teorisi yaklaşımına dayanmaktaydı (ayrık logaritma probleminin çözümündeki zorluklar). Her ne kadar verdikleri yapının güvenliğini şu ana kadar kırabilen olmamış ise de, bu yapının tamamıyla güvenli olduğunu ispat edebilen de olmamıştır. Diffie ve Hellman anahtar üzerinde anlaşma problemine çözüm getirmenin yanı sıra, Açık Anahtarlı Kriptografi olarak anılacak olan bir metodolojinin ana hatlarını belirlediler. Bu yöntem, anahtar üzerinde anlaşma için kullanılabileceği gibi başka kriptografik problemlerde de kullanılabilecekti. Açık Anahtarlı Kriptografideki ana fikir; şifreleme için açık anahtar, deşifreleme içinse gizli anahtar olmak üzere iki ayrı anahtarın kullanılmasıdır. Anahtarlar öyle bir şekilde tasarlanmalıdır ki açık anahtardan gizli anahtarın belirlenmesi mümkün olmamalıdır. Diffie ve Hellman, açık anahtar kriptografisinin pratikte nasıl uygulanacağını gösteren somut bir çalışma vermemişlerdir. İlk açık anahtarlı kriptosistem Rivest, Shamir ve Adleman [2] tarafından gerçeklenmiştir (RSA Algoritması). Onların sistemi de Diffie ve Hellman’ın sisteminde olduğu gibi koşulsuz bir sayı teorisine dayanmaktaydı (asal çarpanlara ayırma problemindeki zorluklar). Açık anahtarlı kriptografi kavramı dikkate değer yeni bir konuyu gündeme getirmiştir: Sayısal İmza. Geleneksel elle atılan imzanın elektronik ortamdaki karşılığı olan 3 sayısal imzanın amacı, bir şahsın herhangi bir elektronik dokümanı “sayısal” olarak imzalamasını sağlamaktır. Bunun için tıpkı geleneksel imzalarda olduğu gibi sayısal imza şu özelliklere sahip olmalıdır: kolay üretilebilme, kolay kontrol edilebilme ve zor taklit edilebilme. İmzalama için gizli anahtar, doğrulama içinse açık anahtar kullanılarak bu özellikler sağlanmıştır. Zaman geçtikçe açık anahtarlı kripto sistemlerin ve sayısal imzaların gerçeklenmesinde çeşitli yöntemler ileri sürülmüştür, ElGamal ve Schnorr [3], [4]. Araştırmacılar bu teknikleri kavradıktan sonra daha karışık imza protokolleri geliştirmek için kullanmaya çalıştılar. Bu protokollerden birisi Kör Sayısal İmza [5], [6], [7], [8], [9]’dır. Kör sayısal imzalar elektronik ödeme (e-para) ve çevrimiçi (online) oylama gibi uygulamalarda kullanılmaktadır. Bu tezde Sayısal İmza’nın özel bir yöntemi olan Kör Sayısal İmza tanıtılmaya çalışılmıştır. David Chaum [5]‘un tasarladığı kör sayısal imza protokolü ele alınmış ve paralelinde protokolde kullanılan RSA şifreleme algoritmasının yerine ECC şifreleme algoritması kullanılarak Chaum’un protokolü geliştirilmeye çalışılmıştır. 1.2. Gizli Anahtarlı Kriptografi Gizli anahtarlı kriptografi, simetrik kriptografi ya da tek anahtarlı kriptografi olarak da adlandırılır. Tek bir anahtarın hem şifreleme hem de şifre çözme amacıyla kullanıldığı geleneksel bir yöntemdir. Gizli anahtarlı kriptografi sadece şifrelemeyle değil, kimlik denetimiyle de ilgilenir. Kimlik denetiminde kullanılan yöntemlerden biri MAC (Message Authentication Code)‘dır. MAC kriptografik sağlama için toplama olarak da bilinmektedir ve şu şekildeki bir C fonksiyonu ile oluşturulur: MAC = CK(M) Burada M değişken uzunluklu mesajdır, K sadece gönderici ve alıcı tarafından bilinen gizli anahtardır ve CK(M) ise sabit uzunluklu doğrulayıcıdır. MAC mesajın ilk üretildiği yerde mesaja eklenir, diğer durumda ise doğru olduğu bilinen mesaja eklenir. Alıcı, MAC’i tekrar hesaplayarak mesajı doğrular [10]. Gizli anahtarlı kriptografide temel problem, göndericinin ve alıcının ortak bir anahtar üzerinde anlaşmalarını üçüncü bir kişinin eline geçmeyecek şekilde yapmalarıdır. Bu problemin çözümü, iki tarafın da hattın dinlenilmediğinden emin oldukları ve 4 korkusuzca iletişim kurabilecekleri güvenli bir kanalın oluşturulmasıdır; ancak bu gizli anahtarlı yapıların dezavantajıdır; avantajlı oldukları nokta ise açık anahtarlı yapılara göre daha hızlı olmalarıdır. Şekil 1 Gizli Anahtarlı Kriptografi Sistemi Örneği E ve D sırası ile şifreleme ve deşifreleme işlemlerini ifade edecek şekilde bir Gizli Anahtarlı Kriptografi Sisteminin örneği Şekil 1‘de gösterilmiştir. Burada Ayşe’nin düz metni (M) şifrelemek için kullandığı k anahtarı ile Barış’ın şifreli metni çözmekte kullandığı k anahtarı aynıdır ve güvenli bir kanal kullanılarak paylaşılmıştır. Şifreli metin ise güvenli olmayan bir kanal kullanılarak paylaşılmıştır. Sistemin genel işleyişi şu şekildedir: • Ayşe düz metni k anahtarını kullanarak şifreler, C = E(M, k) • Ayşe şifreli metni (C), güvenli olmayan kanaldan Barış’a yollar. • Barış aldığı şifreli metni (C), k anahtarını kullanarak deşifre eder ve orijinal düz metni (M) elde eder, D(C, k) = D(E(M, k), k) = M 5 1.3. Açık Anahtarlı Kriptografi Kriptografide anahtarların üretilmesi, iletilmesi ve saklanması Anahtar Yönetimi olarak bilinir. Gizli anahtarlı yapılarda genellikle güvenli anahtar yönetiminin sağlanmasında problem yaşanır. Anahtar yönetimi problemini çözmek amacıyla Whitfield Diffie ve Martin Hellman, 1976 yılında Açık Anahtarlı yapıları geliştirdi. Açık anahtarlı kriptografinin iki temel kullanımı vardır, şifreleme ve sayısal imza. Bu yapıda taraflar biri açık diğeri gizli olmak üzere birer çift anahtar edinir. Açık anahtar herkesin erişimine açıktır, gizli anahtar ise sadece sahibinin erişebileceği şekilde saklanmalıdır. Burada gönderenin ve alıcının aynı gizli bilgiyi tutma durumu ortadan kalkmıştır. Bütün iletişim sadece açık anahtarları gerektirir, gizli anahtarlar ne iletilir ne de paylaşılır. Bu sistemde, kaygı duyulacak tek nokta açık anahtar ve anahtar sahibinin, güvenilir ve doğru şekilde eşleştirilmesidir (örneğin, güvenilir bir dizinde). Açık anahtarı kullanarak herhangi bir kişi şifreli mesaj gönderebilir, ancak gönderilen şifreli mesajı sadece kullanılan açık anahtarın eşi olan gizli anahtar açabilir. Bundan başka, açık anahtarlı kriptografi sadece gizliliği (şifreleme) sağlamak amacıyla değil, kimlik denetimi (sayısal imza) ve daha birçok teknik için kullanılır. Açık anahtarlı sistemlerde, gizli anahtarın açık anahtarla matematiksel bir bağlantısı vardır. Bu sebeple açık anahtarlı bir sisteme açık anahtarı kullanarak saldırmak her zaman mümkündür. Buna karşı savunma, açık anahtardan gizli anahtarı elde etme işlemini mümkün olduğunca zorlaştırmaktır. Anahtarları oluşturmak için çözülmesi zor olan matematiksel problemler kullanıldığından, açık anahtarı kullanarak gizli anahtarı elde etme işlemi de gerekli olan zaman dilimi içinde (usefull time) imkânsız kabul edilir. 1.3.1. Açık Anahtarlı Kriptografi ile Şifreleme E ve D sırası ile şifreleme ve deşifreleme işlemlerini ifade edecek şekilde bir Açık Anahtarlı Kriptografi Sisteminin örneği Şekil 2‘de gösterilmiştir. Burada ilk olarak Barış açık ve gizli anahtarlardan oluşan bir anahtar çifti (KBaçik, KBgizli) üretir. Ayşe, Barış’a şifreli bir mesaj (C) göndermek istediğinde, Barış’ın açık anahtarını (KBaçik) güvenli olmayan kanaldan elde eder ve mesajını (M) bu anahtarla şifreleyerek Barış’a yine güvenli olmayan kanaldan gönderir. Barış Ayşe’den gelen şifreli metni (C) kendi 6 gizli anahtarını (KBgizli) kullanarak deşifre eder ve böylece orijinal düz metni (M) elde etmiş olur. Şekil 2 Açık Anahtarlı Kriptografi Sistemi Örneği Sistemin genel işleyişi şu şekildedir: • Ayşe güvenli olmayan kanaldan Barış’ın açık anahtarını (KBaçik) alır. • Ayşe (M) düz metnini Barış’ın açık anahtarını (KBaçik) kullanarak şifreler, C = E (M, KBaçik) • Ayşe şifreli metni (C) güvenli olmayan kanaldan Barış’a yollar. • Barış aldığı şifreli metni (C), kendi gizli anahtarını (KBgizli) kullanarak deşifreler ve orijinal düz metni (M) elde eder, D(C, KBgizli) = D (E (M, KBaçik), KBgizli) = M Hattı dinleyen herhangi birisi (kulak misafiri) Barış’ın gizli anahtarına (KBgizli) sahip olmadığı sürece, Barış’a gönderilen şifreli metni (C) okuyamaz. Herhangi bir kişi Barış’a şifreli bir mesaj gönderebilir, ancak gönderilen mesajı sadece Barış deşifre ederek okuyabilir. 7 1.3.2. Açık Anahtarlı Kriptografi ile Sayısal İmzalama Açık anahtarlı kripto sistemlerinin önemli bir uygulaması sayısal imzalardır. Bir dokümanın sayısal imzası, dokümana ve imzalayanın özel anahtarına bağlı bilgi parçasıdır. Sayısal imzaların görevi geleneksel elle atılan imzalar ile aynıdır. Sayısal imza konusu daha sonraki bölümlerde ayrıntılı olarak incelenmiştir (Bakınız: Bölüm 4). Bu nedenle burada genel bir fikir vermek açısından bir sayısal imzalama işleminin örneği verilmiştir: Bir mesajı imzalamak için Ayşe, hem kendi gizli anahtarını, hem de mesajın kendisini kullanarak bazı işlemler yapar. Bu işlemlerin sonucunda sayısal imza elde edilir ve elde edilen imza mesaja eklenir. Gelen imzalı mesajdaki imzanın doğruluğunu anlamak için Barış gelen mesajı, imzayı ve Ayşe’nin açık anahtarını kullanarak yaptığı işlemler sonucunda imzanın gerçekten Ayşe’ye ait olup olmadığını anlayabilir. 1.3.3. Tek Yönlü Fonksiyonlar Açık anahtarlı kripto sistemlerin temelini, çözümü zor olan matematiksel problemlerin oluşturduğundan bahsedilmişti. Burada geçen “zor” kelimesi, problemin çözümü için gerekli olan işlemsel ve zamansal güçlükleri ifade etmektedir. Kriptografi terminolojisinde bu tip zor problemlere Tek Yönlü Fonksiyon denir. Tek yönlü fonksiyonlar, bir yöndeki çözümü diğer yöndeki çözüme göre çok daha zor olan matematiksel problemleri içermektedir. Örnek olarak asal çarpanlara ayırma problemi ile ayrık logaritma problemi verilebilir. Bu tür problemlerde bir yönde yapılan hesaplar birkaç saniyede yapılabilirken, ters yöndeki hesaplar ise aynı işlemci kapasitesi ile onlarca yıl alabilmektedir. Tek yönlü fonksiyon, tanımlı olduğu kümenin elemanlarını başka bir kümenin elemanlarını, her bir fonksiyon elemanının bir tane tersi olacak şekilde birebir eşler. Buradaki koşul, fonksiyonun hesabının kolay, tersinin mümkün olmamasıdır: Y = f(X) kolay X = f -1(Y) mümkün değil 8 Genellikle kolay terimi, bir problemin giriş uzunluğunun fonksiyonu olan polinomal bir zamanda çözülebilmesi demektir. Eğer giriş uzunluğu n ikillik ise, fonksiyonu çözmek için gerekli olan zaman na ile orantılıdır, burada a bir sabittir. mümkün değil terimi ise daha karışık bir kavramdır ancak şu şekilde tarif edilebilir: giriş uzunluğuna bağlı olarak bir problemi çözmek için gerekli olan zamanın polinomal bir zamandan fazla olmasıdır. Örneğin, bir problemin giriş uzunluğu n ise ve problemi çözmek için gerekli olan zaman 2n ise bu problemin çözümü mümkün değil denilir. Açık anahtarlı kripto sistemlerde kullanılan tek yönlü fonksiyonlarda, ters yönde çözüme ulaşabilmek için “açık kapı (trap door)” olarak bilinen bir ipucu taraflar arasında paylaşılır. Bu ipucu, kripto sistemde tanımlanmış olan kullanıcılara ait “gizli anahtar” dır [10]. 1.3.4. Açık Kapılı Tek Yönlü Fonksiyonlar [10] Açık kapılı tek yönlü fonksiyonda da ileri yönde fonksiyonun hesaplanması kolay iken ters yönde hesaplanması mümkün değildir. Ancak fonksiyonun ters yönü için belirli bir ipucu ile hesaplama yapmak mümkündür. Bu belirli ipucu fonksiyonun polinomal zaman içerisinde çözülmesine imkân tanımaktadır. Konuyu şu şekilde toparlamak mümkündür: Bir açık kapılı tek yönlü fonksiyon, terslenebilir fk fonksiyonlarından oluşan bir ailedir ve Y = fk(X) eğer k ve X biliniyor ise, kolay X = fk-1(Y) eğer k ve Y biliniyor ise, kolay X = fk-1(Y) eğer Y biliniyor ve k bilinmiyor ise, mümkün değil 1.3.5. Asal Çarpanlara Ayırma Problemi Asal çarpanları büyük olan bir sayıyı çarpanlarına ayırmak oldukça güçtür. Ancak günümüzde işlemcilerin artan gücüyle ve iyileştirilen çarpanlara ayırma algoritmaları ile verimli zamanda (usefull time) bu mümkün olabilmektedir. Bu yüzden Çizelge 1’de görüldüğü gibi; RSA için yeterli güvenlik seviyesini sağlayabilmek için gerekli olan anahtar boyutu 1991 yılında 332 ikillik (100 basamaklı bir sayı) iken, 1999 yılında 512 ikillik (155 basamaklı bir sayı) olmuştur. 9 Çizelge 1 Çarpanlara ayırmanın yıllara göre gelişimi [10] 1.3.6. Ayrık Logaritma Problemi • Euler Sayısı φ(n): Euler sayısı φ(n), n sayısından küçük olup n ile aralarında asal olan sayıların adedini vermektedir. 1 sayısı bütün sayılarla aralarında asal sayılmaktadır [27]. Örneğin, 24 sayısı ile aralarında asal olan sayılar; 1, 5, 7, 11, 13, 17, 19 ve 23’tür. Dolayısı ile 24’ün Euler Sayısı, φ(24) = 8’dir. • Birincil Kök (Primitive Root): g ile n aralarında asal ise (OBEB(g, n)=1) ve φ(n) Euler sayısı olmak üzere g sayısı (φ(n) mod n) in modüler katı ise; g’ye n’nin birincil kökü denilir [28]. Örneğin, 7 sayısı 41 sayısının birincil köküdür. (gerçekten, 41 sayısının birincil kökleri şu şekilde verilir: 6, 7, 11, 12, 13, 15, 17, 19, 22, 24, 26, 28, 29, 30, 34, 35) • Ayrık Logaritma: a ve n ile aralarında asal olan herhangi iki tamsayıdır. g, n’ nin birincil kökü olmak üzere, 0,1,2, …, φ(n)-1 (φ(n) Euler sayısıdır) sayılarının içinde şu şartı sağlayan bir µ sayısı vardır: a ≡ gµ (mod n) µ sayısına a’nın g tabanında mod n’ye göre ayrık logaritması denilir ve şu şekilde gösterilir [29], [30]: µ = indeksg a (mod n) Örneğin, 15 ≡ 73 (mod 41) olduğundan; 15 sayısının 7 tabanında mod 41’e göre ayrık logaritması 3’tür. 10 1.4. Açık ve Gizli Anahtarlı Kriptografilerin Karşılaştırılması Açık anahtarlı kriptografinin öncelikli avantajı, gizli anahtarın herhangi bir şekilde taşınması gibi bir durum söz konusu olmadığı için daha fazla güvenlik sağlamasıdır. Bunun aksine gizli anahtarlı yapılarda, şifrelemede ve deşifrelemede kullanılan aynı anahtar olduğu için, gizli anahtarın el ile ya da iletişim kanalları üzerinden iletilmesi söz konusudur. Bu da gizli anahtarın istenmeyen kişilerce elde edilme olasılığını doğurur. Açık anahtarlı yapıların diğer bir önemli avantajı reddedilemez sayısal imzalar oluşturabilmesidir. Gizli anahtarlı yapılar kullanılarak yapılan kimlik denetiminde gizli bir bilginin paylaşılması ve bazı durumlarda üçüncü bir kişiye güven duyulması gerekliliği vardır. Bu durumda taraflardan biri, anahtarın diğerlerince kötü niyetle kullanıldığını iddia edebilir. Ancak açık anahtarlı yapılarda herkes kendi anahtarından sorumlu olduğu için böyle bir durum söz konusu değildir. Bu özelliğe reddedilemezlik denir. Açık anahtarlı yapıları kullanmanın dezavantajı şifreleme hızıdır. Çoğu gizli anahtarlı yapı açık anahtarlı yapılara göre daha hızlıdır. En güvenli ve hızlı yöntem iki yapıyı birlikte kullanmaktır ki bunu sağlayan yapı Diffie-Hellman Anahtar Değişim Protokolü’dür. Açık anahtarlı kriptografide, onay kurumuna yapılan başarılı bir saldırı sonucu, herhangi bir kullanıcının açık anahtarı yerine istenilen açık anahtar koyularak, bu kullanıcıya gönderilen mesajlar elde edilebilir; değiştirilerek kullanıcıya, kullanıcının kendi açık anahtarıyla şifrelenerek gönderilebilir. Bazı durumlarda açık anahtarlı yapılar gereksizdir. Gizli anahtarlı kriptografi tek başına yeterlidir. Örneğin gönderici ve alıcı yüz yüze görüşerek anahtar üzerinde anlaşabilirler. Yahut bütün anahtarları bilen ve yöneten bir otorite bulunduğu durumlarda, açık anahtarlı kriptografi önemini yitirir. Ancak kullanıcı sayısı arttığında bu da problem olabilir. Tek kullanıcının bulunduğu bir ortamda açık anahtarlı yapılar çok anlamlı değildir. Örneğin kişisel dosyalarınızı şifreli saklamak isterseniz, istediğiniz herhangi bir gizli anahtar algoritmasıyla kendi kişisel şifrenizi anahtar olarak kullanarak şifreleme 11 yapabilirsiniz. Genel olarak açık anahtarlı yapılar, çok kullanıcılı açık ortamlar için idealdir. Açık ve gizli anahtarlı kriptografilerin karşılaştırılması Çizelge 2‘de verilmiştir. Çizelge 2 Açık ve Gizli Anahtarlı Kriptografilerin Karşılaştırılması. Açık anahtarlı kriptografide Gizli anahtarlı kriptografide İŞLEYİŞ 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ÜVENLİK 1. Anahtar gizli tutulmalıdır. 1. Anahtarlardan biri gizli tutulmalıdır. 2. Diğer bilgiler saklandığında, mesajı deşifre etmek imkânsız olmalıdır. 2. Diğer bilgiler saklandığında, mesajı deşifre etmek imkânsı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. Açık anahtarlı yapılar, gizli anahtarlı yapıların yerine geçmeye aday değil, daha çok onları daha güvenli hale getirecek tamamlayıcı bir unsurdur. Örneğin, gizli anahtarları açık ağlar üzerinden taşımak için açık anahtarlı kriptografinin kullanılması gibi. 12 2. AÇIK ANAHTARLI KRİPTOGRAFİ ALGORİTMALARI Bu bölümde tez çalışmasında kullanılmış olan RSA ve ECC algoritmalarının incelemesi yapılmıştır. ECC algoritması anlatılmadan önce konuya temel oluşturacak olan Eliptik Eğri ve Abelian Grup kavramlarından bahsedilmiştir. Bölüm sonunda ise bu iki algoritma karşılaştırılmıştır. 2.1. RSA Algoritması Son 20-30 yıl içerisinde çığır açan araştırmalardan birisi, RSA tabanlı açık anahtarlı kripto sistemin geliştirilmesidir. Bu sistem, hem şifreleme hem de sayısal imza atma olanağı tanır. Sistemi 1977 yılında Ronald Rivest, Adi Shamir ve Leonard Adleman geliştirmiştir. Sistem adını, geliştiricilerinin isimlerinin ilk harflerinden alır. RSA kripto sistemi günümüzde halen yüzlerce hatta binlerce araştırmacının ilgisini çekmektedir. Böyle bir kripto sistemde, her bir tanımlı kullanıcının bir gizli anahtarı bir de açık anahtarı bulunmaktadır. Bir kullanıcı mesaj içeriğini diğer kullanıcının açık anahtarını kullanarak şifreleyebileceği gibi, kendi gizli anahtarı ile de mesajı imzalayarak mesajın kendine ait olduğunu ispatlayabilir. Bir başka deyişle, alıcı taraf şifreli mesajı kendi özel anahtarını kullanarak deşifreleyebileceği gibi gönderici kişinin açık anahtarını kullanarak gönderici kişinin kimliğini (imzasını) doğrulayabilir. Başka bir kullanıcı, tanımlı bir kullanıcının meşru imzasını, bu kullanıcının gizli anahtarı olmaksızın taklit edemez. RSA açık anahtarlı kripto sisteminin güvenirliği “asal çarpanlara ayırma” probleminin zorluğuna bağlıdır. RSA algoritması şöyle çalışır: Öncelikle p ve q olmak üzere iki tane asal sayı üretilir. Bunların birbirleriyle çarpılmasıyla n = p*q elde edilir. Bundan sonra n sayısından küçük ve (p-1)*(q-1) sayısıyla 1 dışında herhangi bir ortak böleni bulunmayan bir e sayısı seçilir. Daha sonra (e*d -1) sayısının (p-1)*(q-1) çarpımına tam olarak bölünmesini sağlayan bir d sayısı bulunur. e ve d değerleri, sırasıyla, açık ve gizli üs olarak adlandırılırlar. Açık anahtarı (n,e) çifti, gizli anahtarı ise (n,d) çifti oluşturur. p ve q sayıları ya yok edilmeli ya da gizli anahtar ile birlikte saklanmalıdır. Gizli anahtar olan d sayısının, (n,e) sayılarından elde edilmesi zor bir işlemdir. Eğer bir kişi n sayısını çarpanlarına ayırarak p ve q sayılarını elde edebilirse gizli anahtarı da kolaylıkla bulabilir. Bu sebeple RSA sisteminin güvenliği çarpanlarına ayırma 13 probleminin zorluğu temeline dayanır. Çarpanlarına ayırma işleminin kolay bir yönteminin bulunması, RSA algoritmasının kırılması anlamına gelir. 2.1.1. RSA ile Şifreleme Ayşe’nin Barış’a m mesajını göndermek istediğini farz edelim. Ayşe, m mesajının e üssünü alarak, c=me (mod n), c şifreli mesajını elde eder. Burada kullanılan (n,e) Barış’ın açık anahtarıdır. Bu işlemleri yaptıktan sonra Ayşe şifreli c mesajını Barış’a gönderir. Barış aynı şekilde gelen şifreli mesaj c’nin üssünü alır. m=cd (mod n) Ancak bu sefer kendi gizli anahtarını kullanır. e ve d arasındaki bağlantı Barış’ın mesajı doğru mesajı elde ettiğinin kanıtıdır. Barış’ın gizli anahtarını sadece Barış bildiği için, gelen şifreli mesajı da sadece Barış okuyabilir. 2.1.2. RSA ile Sayısal İmzalama Ayşe’nin Barış’a m mesajını göndermek istediğini varsayalım. Ama Ayşe mesajı gönderirken Barış’ın mesajın değişmediğinden ve mesajın Ayşe’den geldiğinden emin olmasını istiyor. Ayşe mesajı önce bir özet fonksiyonundan geçirir ve kendi gizli anahtarıyla (n,d), elde ettiği h özetinin üssünü alarak s=hd (mod n), şifreli mesaj özetiyle birlikte mesajın kendisini (m,s) Barış’a gönderir. Barış, mesajı aldığı zaman, mesajı tekrar özet fonksiyonundan geçirir ve elde ettiği mesaj özetiyle, şifreli mesaj özetinin şifresini çözerek elde ettiği özeti karşılaştırır. Eğer sonuçlar aynıysa Barış, gelen mesajın değişmediğinden ve kaynağının Ayşe olduğundan emin olabilir. 2.1.3. RSA Algoritmasının Güvenliği RSA algoritmasının kriptografik güvenliği n sayısının ikillik uzunluğuyla doğru orantılıdır. n sayısının ikillik uzunluğuna anahtar uzunluğu denir. Yakın zamana kadar 512 ikillik anahtar uzunluğu standart kabul edilirken, artık güvenli kabul edilmemektedir. Çünkü 512 ikillik bir anahtar, 1999 yılının Ağustos ayında internet üzerinden birbirine bağlı çok sayıda bilgisayarın dört aylık çalışması sonucunda çarpanlarına ayrılabildi. Bununla beraber 1024 bitlik bir anahtarın çarpanlarına ayrılabilmesi için gerekli zamanın bir milyar yıldan (MIPS ölçütünde) fazla olduğu tahmin ediliyor. Gelecekte güvenli bir RSA sistemi için 2048 ikillik anahtar uzunluğuna kadar ihtiyaç duyulacağı ön görülmektedir [11]. 14 2.2. Eliptik Eğri Algoritması (ECC) Eliptik eğriler geleneksel cebir ve geometride geçtiğimiz 150 yıl boyunca kapsamlı bir biçimde incelenmiştir. Böylelikle bu konuda zengin ve derin bir teori meydana gelmiştir. Eliptik eğri sistemlerinin kriptografiye uygulanması ilk olarak Washington üniversitesinde Neal Koblitz ve Victor Miller tarafından gündeme getirilmiştir. Eliptik Eğri Kriptografisi (ECC) olarak adlandırılan bu sistem RSA’ya karşı rakip olarak ortaya konulmuştur. Son beş yıla kadar açık anahtarlı kriptografi kullanan standartların ve ürünlerin hemen hemen hepsi, şifreleme ve sayısal imza için RSA’yı kullanmaktaydı. RSA’nın güvenli kullanımı için, çalışılan ikillik uzunlukları zaman içerisinde büyümüş ve dolayısıyla RSA kullanan uygulamalar üzerine büyük bir hesapsal yük getirmiştir. Özellikle büyük sayıların transferini güvenli bir biçimde gerçekleştirmesi gereken ticari siteler bundan çok fazla etkilenmişlerdir. Böylelikle kriptografi alanındaki araştırmacılar, bu sorunlara çözüm getirebilecek olan ECC’yi geliştirdiler. ECC’nin RSA’ya karşı en büyük avantajı, RSA‘nın sağladığı güvenlik seviyesine ECC’nin çok daha küçük bit uzunlukları ile erişebilmesi nedeniyle kullanıcıların şifreleme ve deşifreleme esnasında hesaplamalar için harcadıkları iş yükünün azalmasıdır. Diğer bir taraftan, her ne kadar ECC’nin teorisi kısa bir süre önce ortaya atıldıysa da, ECC kullanan ürünler kısa süre içerisinde kendisini göstermeye başlamıştır. ECC, açık anahtarlı kriptografi için öngörülmüş IEEE P1363 standartlarını [33] yerine getirmektedir. ECC’nin matematiksel teorisinin açıklanması RSA teorisinin açıklanmasından daha zordur. Bu kısım eliptik eğriler ve ECC üstüne küçük de olsa bir altyapı oluşturmak üzere hazırlanmıştır. Birçok kripto sistem cebirsel grupların kullanımını gerektirir. Eliptik eğriler de eliptik eğri gruplarının oluşturulmasında kullanılabilirler. Grup, üzerlerinde özel tanımlanmış aritmetik işlemlerin yapıldığı elemanlardan oluşan bir kümedir. Eliptik eğri grubu için bu özel işlemler geometrik olarak tanımlanmıştır. Grubun elemanları için daha katı kurallar belirleyerek, örneğin bir eğrideki nokta sayısının sınırlandırılması gibi, eliptik eğri grubunun temelini oluşturacak bir altküme oluşturmak mümkündür [10]. 15 2.2.1. Abelian Gruplar Aşağıdaki aksiyomları sağlayacak şekilde bir G Abelian grubu şöyle tanımlanır; G grubuna ait her (a, b) çiftine karşılık ● ikillik işlemi sonucunda oluşan (a ● b) ye uygun olarak G grubundan bir çift eleman bulunabiliyorsa o grup Abelian’dır ve {G, ● } ile gösterilir: 1. Kapalılık: Eğer a ve b G’ ye ait ise, a ●b de G’ye aittir. 2. Birleşme: G’de tanımlı her a, b ve c için; a ● (b ● c) = (a ● b) ● c dir. 3. Birim Eleman: G’de tanımlı her a için, a ● e = e ● a = a yı sağlayan G’ye ait bir e elemanı vardır. 4. Ters Eleman: G’de tanımlı her a için, a ● a’ = a’ ● a = a yı sağlayan G’ye ait bir a’ elemanı vardır. G’de tanımlı her a ve b için; a ● b = b ● a dir. 5. Değişme: Burada geçen ● ikillik işlemi; toplama, çarpma ya da herhangi bir matematiksel operatörü temsil etmektedir. Açık anahtarlı şifreleme algoritmalarının bir kısmı Abelian grupları kullanmaktadır ve bunlardan birisi ECC’dir. ECC de ikillik işlem olarak, eliptik eğri üzerinde toplama kullanılmaktadır. Çarpma ise tekrarlanan toplama şeklinde tanımlanmıştır. Örneğin, a x k = ( a + a + … + a, k kere) burada toplama eliptik eğri üzerindedir. Kripto analiz yapacak kişinin a ve (a x k) verilmiş iken k yı belirlemesi gerekecektir. Eliptik eğriler iki değişken ve bunlara ait katsayılar ile tanımlanırlar. Kriptografide, değişkenler ve katsayılar belirli bir sonlu alandaki elemanlarla sınırlandırılmışlardır ki bu da sonlu bir Abelian grubun tanımına uyar. 2.2.2. Eliptik Eğriler Burada ilk olarak eliptik eğriler, geometrik özelliklerinin anlaşılabilmesi için gerçel sayılar kümesinde incelenecektir. Daha sonra Zp (asal) ve GF(2m) - (2m elemanlı ikillik küme) alt kümeleri için incelenecektir. GF’in açıklaması Ek-3‘te verilmiştir. 16 GF (Galois Field) Sonlu alanlar birçok kriptografik uygulamada önemli rol oynar. Sonlu bir alanın mertebesinin (alandaki eleman sayısı) bir asal sayının kuvveti olması gerektiği gösterilmiştir: n pozitif tam sayı olmak üzere pn. pn inci dereceden bir sonlu alan genellikle GF(pn) ile gösterilir; GF Galois alanının kısaltmasıdır ve sonlu alanlarla ilgili ilk çalışmayı yapan Galois’in anısına ithaf edilmiştir. Bu alanların kriptografide kullanılan iki özel durumu vardır. n=1 durumunda oluşan GF(p) sonlu alanı ile p=2 durumunda oluşan GF(2n) sonlu alanı. Verilen bir p asal sayısı için p ninci dereceden sonlu alan GF(p), {0, 1, …, p-1} tamsayılarından oluşan Zp kümesi ile bu kümede tanımlı mod p li aritmetik işlemlerden oluşur. Verilen bir n pozitif tam sayısı için 2n inci dereceden sonlu alan GF(2n), {0, 1, …, 2n-1} tamsayılarından oluşan Z2n kümesi ile bu kümede tanımlı mod 2n li aritmetik işlemlerden oluşur. Burada {0, 1, …, 2n-1} tamsayıları n-ikillik bir kelimeye denk gelmektedir. Reel Sayılarda Tanımlı Eliptik Eğriler Eliptik eğriler elips değildirler. Bu şekilde adlandırılmalarının sebebi, bir elipsin çevresinin hesaplanması için kullanılan kübik denklemlere benzer ifadeler ile gösterilmeleridir. Genel olarak, eliptik eğriler için tanımlanan kübik denklemler aşağıdaki formdadır: y2 + axy + by = x3 + cx2 + dx + e bu denklemdeki a, b, c, d ve e sayıları reel sayılardır ve x ile y de reel sayılar kümesinden değerler almaktadır. ECC için şu formdaki eliptik eğriler yeterlidir: y2 = x3 + ax + b (3.1) En büyük dereceli üs 3 olduğundan dolayı bu tip denklemler kübik olarak adlandırılırlar. Ayrıca, eliptik eğrinin tanımlamasında verilen denkleme ek olarak, sonsuzdaki nokta ya da sıfır noktası adı verilen ve O ile gösterilen bir eleman vardır. Böyle bir eliptik eğrinin çizilebilmesi için şu eşitliğin çözülmesi gerekir: 17 y = ( x 3 + ax + b) a ve b nin verilen değerleri için eliptik eğrinin çiziminde her bir x değerine karşılık pozitif ve negatif olmak üzere iki adet y değeri bulunmaktadır.Şekil 3’de iki eliptik eğri örneği gösterilmektedir. Görüldüğü gibi denklem katsayıları değiştikçe, değişik görünüşte eliptik eğriler oluşmaktadır... (3.1) denklemini sağlayan (x, y) noktaları ile birlikte O noktasından oluşan E(a, b) noktalar kümesini ele alalım. Farklı (a, b) çiftinin kullanımı, E(a, b) kümelerinin farklı olmasına sebep olmaktadır. Bu açıdan tekrar Şekil 3‘e bakılacak olunursa, eğrilere ait kümelerin sırası ile E(-1, 0) ve E(1, 1) olduğu görülür. Eliptik Eğrilerde Toplamanın Geometrik Tanımı x3 + ax + b eşitliğinin tekrarlayan kökü yoksa E(a, b) kümesinde bir grup tanımlanabilir. Bunun için şu eşitsizliğin sağlanması gerekir: 4a3 + 27b2 ≠ 0 (3.2) Eliptik eğri grupları toplanabilir gruplardır yani temel fonksiyonları toplamadır. (3.2) eşitliğini sağlayan a ve b lerden oluşan E(a, b) eliptik eğri kümesinde + ile gösterilen toplama işlemine ait kurallar geometrik terimlerle şu şekilde tanımlanır: Eğer bir eliptik eğri üzerindeki üç nokta düz bir çizgi üzerinde bulunuyorsa, bunların toplamı O’dur. Bu açıklamadan yola çıkarak, bir eliptik eğri üzerindeki toplama işlemine ait diğer kurallar şöyle sıralanabilir: 1. O toplama için etkisiz elemandır. O = -O, eliptik eğri üzerindeki herhangi bir P (P ≠ O) noktası için, P + O = P olur. 2. Çizilen bir dikey çizgi, aynı x koordinatı için eliptik eğriyi P1 = (x, y) ve P2 = (x, -y) gibi iki noktada kesiyorsa, bu çizgi aynı zamanda eliptik eğriyi sonsuzdaki noktada da kesiyordur. Bu yüzden, P1 + P2 + O = O ve P1 = -P2 olur. Böylece eliptik eğri üzerindeki bir noktanın negatif noktasını bulmak için aynı x koordinatı ile y koordinatının x eksenine göre simetriği kullanılır. Bunu Şekil 3’de görebilirsiniz. Eliptik eğri üzerindeki her P noktası için -P nin de eğri üzerinde olduğuna dikkat ediniz. 18 Şekil 3 Eliptik Eğri örnekleri [10] 3. x koordinatı farklı olan Q ve R noktalarını toplamak için, bu iki noktadan geçen düz bir çizgi çizdiğimizde eliptik eğriyi kesen nokta olan P1’i buluruz. Ve çok kolay bir şekilde görülebilir ki, P1 noktası sadece bir tanedir (eğer çizdiğimiz 19 doğru, Q veya R noktalarından birisinden teğet geçiyorsa bu durumda P1 = Q veya P1 = R alırız). Buradan Q + R + P1 = O ve dolayısıyla Q + R = -P1 olacaktır. Şekil 3’ü inceleyiniz. 4. Bir P = (xP, yP) noktasını ikiye katlamak (kendisi ile toplamak) için, eğriye P noktasından teğet olan bir doğru çizilir. Eğer yP sıfır değilse, tanjant doğrusu eliptik eğriyi başka bir –R noktasında keser. Daha sonra –R’ nin x eksenine göre simetriği alınıp R bulunur. Bu işlem P noktasının ikiye katlanması olarak bilinir; eliptik eğri grubu üzerindeki bir noktanın ikiye katlanması şu şekilde tanımlanır: P + P = 2P = R. Şekil 4‘ü inceleyiniz. Şekil 4 Eliptik eğri üzerindeki bir P noktasının ikiye katlanması [11] 5. Eğer P noktasında yP = 0 ise, eliptik eğrinin P noktasındaki tanjant doğrusu dikeydir ve eliptik eğriyi başka bir noktada kesmez, bakınız Şekil 5. Tanımdan, böyle bir noktada 2P = O’dur. Eğer 3P’yi bulmak istersek, 2P + P’den bulabiliriz. Bu da P + O = P’dir, 3P = P’dir. 3P = P, 4P = O, 5P = P, 6P = O, 7P = P, vb. 6. Eliptik eğri üzerindeki bir P noktasının bir pozitif k tam sayısı ile çarpılması şu şekilde tanımlanmaktadır, P nin k kere toplanmasıdır: 20 2P = P + P, 3P = P + P + P, …vb. Şekil 5 yP = 0 durumunda P noktasının ikiye katlanması [11] Açıklanan kurallar listesi ile E(a, b) eliptik eğri kümesinin bir Abelian grup olduğu gösterilebilir. Eliptik Eğrilerde Toplamanın Cebirsel Tanımı Bu bölümde eliptik eğriler üzerinde toplama yapabilmemizi sağlayacak olan çeşitli sonuçlar verilmiştir[12]. Birbirinin negatifi olmayan farklı P = (xP, yp) ve Q = (xQ, yQ) noktaları için, bu iki noktayı birleştiren doğrunun eğimi şöyle bulunur: ∆= yQ − y P xQ − x P Bu doğru eliptik eğriyi bir noktada daha keser ki bu nokta P ve Q noktalarının toplamının negatifidir. Birkaç cebirsel işlemden sonra R = P + Q toplamı şu şekilde bulunabilir: xR = ∆2 – xP – xQ 21 yR = - yP + ∆(xP – xR) Bir noktanın kendisi ile toplanması ise şu şekildedir: P + P = 2P = R, yP ≠ 0 2 ⎡ 3x P 2 + a ⎤ xR = ⎢ ⎥ − 2xP ⎣ 2 yP ⎦ ⎡ 3x 2 + a ⎤ yR = ⎢ P ⎥(x P − x R ) − y P 2 y P ⎣ ⎦ Zp Üzerindeki Eliptik Eğriler Gerçel sayılarla hesaplama yapmak çok zaman alır ve yuvarlama hatalarından dolayı güvenilir değildir. Kriptografik uygulamalar hızlı ve kesin aritmetiğe ihtiyaç duyar; bu yüzden ECC, değişkenleri ve katsayıları sonlu bir alanın elemanları ile sınırlandırılmış eliptik eğrileri kullanmaktadır. Kriptografik uygulamalarda iki ayrı eliptik eğri ailesi kullanılmaktadır: Zp’de tanımlı asal eğriler ve GF(2n)’de (Galois Field) tanımlı ikillik eğriler. Yazılım uygulamaları için asal eğriler en iyisidir [13]. Çünkü ikillik eğrilerde kullanılan bit sığdırma (fitting) işlemi asal eğrilerde gerekmemektedir. Donanım uygulamalarında ise ikillik eğriler en iyisidir, çünkü daha az mantık kapısı ile daha güçlü ve hızlı bir kripto sistemi kurmaya imkân sağlamaktadırlar. Bu iki eliptik eğri ailesi sırası ile bu ve sonraki bölümlerde incelenecektir. Zp’de tanımlı asal eğriler için, bir kübik eşitlik kullanılmaktadır ve değişkenler ile katsayılar 0’dan p -1’e kadar olan tamsayı değerlerini almaktadır. p herhangi bir asal sayı olup, hesaplamalar (mod p) ye göre yapılmaktadır. Örneğin Z23 altkümesi 0’dan 22’ye kadar olan tam sayılardan oluşur ve bu altkümedeki bütün işlemlerin sonucu da 0 ile 22 arasındaki bir tamsayıdır. Reel sayılarda tanımlı eliptik eğrilerde olduğu gibi, Zp’de tanımlı asal eğriler için de yine (3.1) eşitliği kullanılacaktır, ancak değişkenler ve katsayılar Zp ile sınırlandırılmıştır: y2 mod p = (x3 + ax + b) mod p (3.3) Şimdi (3.3), eşitliğini sağlayan bütün (x, y) çiftlerinden ve sonsuzdaki O noktasından oluşan bir Ep(a, b) kümesini ele alalım. 22 Örneğin, p = 23 ve eliptik eğrimiz de y2 = x3 + x + 1 olsun. Burada, a = b = 1 olur. Bu durumda, 4 x 13 + 27 x 12 (mod 23) = 8 ≠ 0 dir ve E23(1, 1) Eliptik Eğrisi (3.2) eşitsizliğini sağlamış olur. Şekil 3b de bu eğrinin grafiği gösterilmiştir. Şekilde görülen eğri denklemi sağlayan bütün reel sayıları içermektedir fakat biz eliptik eğri kümesi için (mod p’den dolayı) sadece (0, 0) ile (p-1, p-1) arasında olan ve denklemi sağlayan negatif olmayan tamsayılardan oluşan noktalarla ilgilenmekteyiz. Çizelge 3‘de O noktası hariç, E23(1, 1) Eliptik Eğrisi üzerindeki noktalar listelenmiştir. Çizelge 3 E23(1, 1) Eliptik Eğrisi üzerindeki noktalar. (0, 1) (6, 4) (0, 22) (6, 19) (1, 7) (7, 11) (1, 16) (7, 12) (3, 10) (9, 7) (3, 13) (9, 16) (4, 0) (11, 3) (5, 4) (11, 20) (5, 19) (12, 4) (12, 19) (13, 7) (13, 16) (17, 3) (17, 20) (18, 3) (18, 20) (19, 5) (19, 18) Bu noktalar listesi aşağıdaki yolla oluşturulmuştur: 1. 0 ≤ x < p koşulunu sağlayan her x değeri için x3 + ax + b (mod p) hesaplanmıştır. 2. Önceki adımın her sonucu için, sonucun (mod p) ‘ye göre karekökü olup olmadığına bakılır, eğer yoksa bu x değerine karşılık Ep(a, b) de herhangi bir değer yoktur ( x, Ep(a, b) üzerinde değildir). Aksi halde, karekök koşulunu sağlayan iki adet y vardır (y’nin 0 olduğu durum haricinde). Bu (x, y) değerleri Ep(a, b)’nin noktalarıdır. E23(1, 1) Eliptik Eğrisine ait noktalar Şekil 6 da gösterilmiştir, bir nokta hariç bütün noktaların y = 11.5 e göre simetrik olduğuna dikkat edin. 23 Şekil 6 E23(1, 1) Eliptik Eğrisine ait noktalar [10] Ep(a, b) kümesinde x3 + ax + b (mod p) nin tekrarlayan kökü yoksa bu küme için sonlu bir Abelian grup tanımlanabilir ve şu koşulu sağlanmalıdır: (4a3 + 27b2) mod p ≠ 0 mod p Ep(a, b) için anlatılan toplamaya ait kurallar, reel sayılar kümesinde tanımlı eliptik eğriler için anlatılan cebirsel toplama ile aynıdır. Her P, Q ∈ Ep(a, b) olacak şekilde alınan noktalar için aşağıdaki kurallar geçerlidir: 1. P + Q = P. 2. Eğer P = (xP, yP) ise, P + (xP, -yP) = O olur. (xP, -yP) noktası, P’nin negatifidir, P olarak gösterilir ve Ep(a, b) üzerindedir. (xP, -yP) nin Şekil 3b de gösterilen Ep(a, b) eliptik eğrisi üzerinde bir nokta olduğuna dikkat edilmelidir. Örneğin, E23(1, 1)’ de P = (13, 7) alalım. Bu durumda - P = (13, -7) olacaktır. -7 mod 23 24 = 16 olduğundan dolayı, -P noktası aslında, yine E23(1, 1)’de yer alan (13,16) noktasıdır. 3. Eğer P = (xP, yP) ve Q = (xQ, yQ) ise ve P ≠ -Q ise, bu durumda R = P + Q = (xR, yR) şu kurallarla hesaplanır: xR = (λ2 – xP – xQ) mod p yR = (λ(xP – xR)) – yP) mod p λ için koşul, λ= yQ − y P xQ − x P 3x P + a 2 yP mod p eğer P ≠ Q ise mod p eğer P = Q ise 2 4. çarpma tekrarlanan toplama şeklinde tanımlanmıştır: örneğin, 4P = P + P + P + P. Şifrelemede kullanılan değişik eliptik eğrilerin güvenliğini belirlemede kullanılan yöntemlerden birisi, sonlu bir Abelian grup üzerinde tanımlı olan eliptik eğrinin sahip olduğu noktaların sayısıdır. Ep(a, b) sonlu grubu için, eğri üzerindeki noktaların sayısı N, şu aralıktadır: p+1-2 p ≤N ≤p+1+2 p Büyük p sayılar için Ep(a, b) üzerindeki noktaların sayısı neredeyse ZP deki elemanların sayısına eşittir. GF(2m) Üzerindeki Eliptik Eğriler GF(2m)’de tanımlı eğriler için, bir kübik eşitlik kullanılmaktadır ve değişkenler ile katsayılar değerlerini, herhangi bir m için GF(2m)’den almaktadır. Hesaplamalarda GF(2m) deki aritmetik kurallara göre yapılmaktadır. 25 Kriptografik uygulamalarda GF(2m) için kullanılabilecek olan kübik eşitlik Zp için kullanılandan biraz farklıdır; y2 + xy = x3 + ax2 + b (3.4) Burada yine x ve y değişkenleri ile a ve b katsayıları GF(2m)’in elemanıdırlar, hesaplamalar da GF(2m)’de yapılmaktadır. Şimdi (3.4) ü sağlayan bütün (x, y) çiftlerinden ve sonsuzdaki O noktasından oluşan E2m(a, b) kümesini ele alalım. b ≠ 0 olduğu durumlarda E2m(a, b) e dayanan sonlu bir Abelian grup tanımlanabilir. Her P, Q ∈ E2m(a, b) için toplamaya ait kurallar şu şekildedir: 1. P + O = P 2. Eğer P = (xP, yP) ise P + (xP, xP + yP) = O dur. (xP, xP + yP) noktası P’nin negatifidir ve - P olarak belirtilir. 3. Eğer P = (xP, yP) ve Q = (xQ, yQ) noktaları P ≠ -Q ve P ≠ Q eşitsizliklerini sağlıyorlarsa, R = P + Q = (xR, yR) noktası şu şekilde bulunur: xR = λ2 + λ + xP + xQ + a yR = λ(xP + xR) + xR + yP λ için koşul, λ= yQ + y P xQ + x P 4. Eğer P = (xP, yP) ise R = 2P = (xR, yR) noktası şu şekilde bulunur: xR = λ2 + λ + a yR = xP2 + xR (λ + 1) λ için koşul, λ = xP + (yP / xP) 26 2.3. Eliptik Eğri Kriptografisi (ECC) Eliptik eğri kriptosistemlerde eliptik eğri, üzerinde işlem yapılacak grubun elemanların kümesinin ve işlemlerin nasıl tanımlanacağının seçilmesi işlemlerinde kullanılmaktadır. ECC’deki toplama işlemi RSA’daki modüler çarpma işlemine; çoklu toplama işlemi ise, RSA’daki modüler üs alma işlemine denk gelmektedir. Bütün kripto sistemlerin temeli çözülmesi zor bir matematik problemine dayanır. Eliptik eğri kripto sistemlerinin güvenliği ayrık logaritma problemine dayanır. Daha özel olarak, ECC (Eliptik Eğri Kriptografisi), Eliptik Eğri Ayrık Logaritma Probleminin (ECDLP) zorluğuna güvenir. Daha önce de belirtildiği gibi, bir eliptik eğri grubunda seçilen bir P noktasını ikiye katlayarak, 2P noktasına ulaşılabilir. 3P noktasını elde etmek için 2P noktasına P noktası eklenir. Bu yolla nP noktasının elde edilmesine bir noktanın Skaler Çarpımı denilir. ECDLP skaler çarpımın sonucunun geri izlenememesi esasına dayanır. Diyelim ki; P, Q ∈ Ep(a, b) ve k < p iken, Q = kP olsun. k ve P verildiğinde Q değerini hesaplamak nispeten kolay olduğu halde, Q ve P verildiğinde k değerini hesaplamak gerçekten çok zordur. Buna eliptik eğriler için ayrık logaritma problemi denilmektedir. Burada Certicom’un internet sitesinden alınan ayrık logaritma problemi ile ilgili bir örneğe bakacak olursak [11]: • E23(9, 17) de tanımlı olan y2 mod 23 = x3 + 9x + 17 mod 23 eliptik eğri grubunda, Q = (4, 5) noktasının P = (16, 5) tabanına göre ayrık logaritması olan k nedir? • k’yı bulmanın bir yolu Q’yu bulana kadar P’ nin katlarının hesaplanmasıdır ve buna Brute Force atağı denilir. P’nin ilk birkaç katı şunlardır: P = (16, 5); 2P = (20, 20); 3P = (14, 14); 4P = (19, 20); 5P = (13,10); 6P = (7, 3); 7P = (8, 7); 8P = (12, 17); 9P = (4, 5) 9P = (4, 5) = Q olduğundan, Q = (4, 5) noktasının P = (16, 5) tabanına göre ayrık logaritması k = 9’dur. Gerçek bir uygulamada, burada gösterildiği gibi Brute Force atağı ile belirlenemeyecek büyüklükte bir k seçilmelidir. 27 Ayrık logaritma problemini kullanan iki ECC yaklaşımı vardır: Diffie - Hellman anahtar değişim algoritmasının eşleniği ve ECC şifrelemesi/deşifrelemesi. İlk yaklaşım bu tezde kullanılmadığı için anlatılmayıp, ikinci yaklaşımdan bahsedilecektir. 2.3.1. Eliptik Eğri Şifrelemesi/Deşifrelemesi Literatürde, eliptik eğriler yardımıyla şifreleme/deşifreleme yapan birçok yaklaşım bulunmaktadır. Burada bu yöntemlerden en basiti incelenecektir. Bu sistem içerisindeki ilk işlemde, düz metin halinde olan m mesajı, şifrelenip yollanabilmesi için x-y koordinatı ile belirlenmiş Pm noktası haline getirilir. Bu Pm noktası tıpkı bir düz metin gibi şifrelenip yollanacak, daha sonra alıcı tarafında da deşifre edilecektir. Bir mesajı, bir noktaya ait x ya da y koordinat noktasına basitçe çeviremeyiz, çünkü tüm olası noktalar Ep(a, b) içinde bulunmayabilir; örneğin Çizelge 3’e bakınız. Eliptik eğriler kullanılarak şifreleme / deşifreleme sistemi şu şekilde yapılabilir: Sistem parametre olarak bir G noktası ve bir Ep(a, b) eliptik grubuna ihtiyaç duyar. Önce p ~ 2180 olacak şekilde bir p asal sayısı ve (3.3) denklemindeki eliptik eğri parametreleri olan a ve b seçilsin. Böylece, eliptik noktalar grubu olan Ep(a, b) oluşturulur. Sonrasında Ep(a, b) içerisinden, başlangıç noktası olacak olan G = (x1, y1) seçilir. G’ nin seçilmesindeki en önemli kriter, nG = O eşitliğini sağlayan en küçük n değerinin çok büyük bir sayı olması gerekliliğidir. A, n’ den küçük bir nA tamsayısı seçer. Bu A’nın özel anahtarıdır. Daha sonra A, PA = nA * G hesabıyla Ep(a, b)’nin bir noktası olan kendi açık anahtarını oluşturur. Benzer şekilde B de bir nB tamsayısı seçer ve PB= nB * G açık anahtarını oluşturur. Pm gibi bir mesajı şifrelemek ve bir B kullanıcısına göndermek isteyen A kullanıcısı, rastgele pozitif bir k tam sayısı seçer ve Cm şifreli metninin noktalarını aşağıdaki şekilde elde eder: Cm = {kG, Pm + kPB } A kullanıcısının şifreleme esnasında B’nin açık anahtarı olan PB’den yararlandığına dikkat ediniz. 28 B aşağıdaki şekilde mesajı deşifre eder: Pm + kPB - nB(kG) = Pm + k(nBG) - nB(kG) = Pm A, Pm mesajını, ona kPB ekleyerek maskeledi. k değerini bilmeyen kimse A’nın uyguladığı maskeyi kaldıramaz. Bunun yanında A, nB özel anahtarını bilen bir kişinin maskeyi kaldırabilmesi için bir ipucu bırakmaktadır. Bir saldırganın mesajı elde edebilmesi için, kG ve G verildiğinde k yı hesaplayabilmelidir ki bu zor bir problem olarak bilinmektedir. Şifreleme işlemine bir örnek verecek olursak [12]; p = 751, Ep(-1, 188) y2 = (x3 - x + 188) ve G = (0, 376) alalım. A eliptik noktaya çevrilmiş olan Pm=(562, 201) mesajını B’ye yollamak istemektedir ve rastgele bir sayı seçer: k = 386. B’nin açık anahtarı PB = (201, 5) dir. Buradan kG = 386(0, 376) = (676, 558) ve Pm + kPB = (562, 201) + 386(201, 5) = (385, 328) olur. A’nın B’ye yolladığı şifreli metin şudur: {(676, 558), (385, 328)}. 2.3.2. Eliptik Eğri Kriptografisinin Güvenliği ECC’nin güvenliği, kP ve P verildiğinde k değerini elde etmenin zorluğuna bağlıdır. Bu durum, eliptik eğri ayrık logaritma problemi olarak adlandırılır. Eliptik eğri ayrık logaritma alan bilinen en hızlı teknik Pollard rho (rho=eşkenar dörtgen) yöntemidir. Çizelge 4’te, bu yöntem ile RSA’daki tamsayının iki asal çarpanına “Generalized Number Field Sieve” yöntemi ile ayrılması esnasında gereken işlemsel güçler karşılaştırılmıştır. Çizelgeden de anlaşılacağı üzere, RSA’nın sağladığı direnci ECC, çok daha düşük anahtar boyutları ile sağlamaktadır. Bu yüzden ECC, düşük anahtar boyutu ile sağladığı yüksek güvenlik sayesinde RSA’ya karşı büyük bir hesapsal üstünlük sağlamaktadır. Günümüzde çözülebilen en büyük anahtar boyutu RSA için 512 ikillik ve ECC içinse 109 ikilliktir. 109 ikillik ECC’nin çözümü için harcanan efor şimdiye kadar bir açık anahtarlı kriptografi algoritması için harcanmış en büyük çabayı ifade etmektedir. Yaklaşık dört ayda 9500 makinenin paralel çalışması sonucu şifre çözülebilmiştir. Bu, 512 ikillik RSA’yı çözmekte harcanan çabanın dört katına denk gelmektedir [11]. 29 Çizelge 4 ECC ve RSA’nın Kripto Analizleri için Gerekli Olan İşlemsel Güçlerin Karşılaştırılması [10] 2.4. RSA ve ECC Algoritmalarının Karşılaştırılması • RSA’da kullanılan tamsayı çarpanlarına ayırma problemi ile ECC’de kullanılan ayrık logaritma problemlerinin ikinci derece üstsel algoritmalar ile çözümleri mümkündür. Ancak eliptik eğri kriptosistemlerinin kırılması RSA sistemlerine göre çok daha zordur. • Yapılan testlerde işlemsel yük (computational overhead) bakımından ECC’nin RSA’ya göre on kat daha hızlı olduğu gösterilmiştir. • Haberleşme sistemlerinde ECC, RSA’ya göre daha az bant genişliğine ihtiyaç duyar. • 155 bitlik ECC algoritmasının çözüm zorluğu, yaklaşık olarak 1024 bitlik RSA algoritmasının çözüm zorluğuna denktir. • Aynı güvenlik seviyesine (kripto sistemi kırmak için harcanacak zaman) sahip açık anahtarlı kriptografik sistemler içerisinde ECC’nin anahtar boyu en küçüktür, dolayısıyla ECC daha az belleğe ihtiyaç duymaktadır. Çizelge 5‘te farklı anahtar uzunluklarına sahip RSA ve ECC kripto sistemlerinin kırılabilmesi için gerekli olan süreler MIPS yıl cinsinden verilmiştir. Bu çizelgeye ait grafik ise Şekil 7‘de gösterilmiştir. 1 MIPS yıl ın manası, saniyede bir milyon işlem yapma kapasiteli bir makinenin bir yıl boyunca hesaplama yapmasıdır ki bu da 30 yaklaşık olarak 3x1013 işleme tekabül etmektedir. 1-GHz lik Pentium işlemci yaklaşık olarak 250 MIPS lik bir makinedir[10]. Çizelge 5 RSA ve ECC’nin Anahtar Uzunluklarının Karşılaştırılması [14] RSA anahtar Kırmak için gerekli süre (MIPS uzunluğu (bit) yıl) 104 512 ECC anahtar uzunluğu (bit) RSA/ECC anahtar uzunluk oranı 106 5:1 108 768 132 6:1 1011 1024 160 7:1 1020 2048 210 10 : 1 1078 21000 600 35 : 1 Şekil 7 RSA ve ECC’nin Güvenlik Seviyelerinin Karşılaştırılması [14] 31 Bu değerler incelendiğinde şu sonuçlara varılmaktadır: Aynı güvenlik seviyesi için ECC’nin anahtar uzunluğu RSA’nın anahtar uzunluğuna oranla çok daha kısadır (Çizelge 5‘e göre minimum 5 kat daha kısa). Bir başka deyişle, aynı anahtar uzunluğu için ECC’nin güvenlik seviyesi RSA’nınkine göre daha yüksektir. Uygulanabilir anahtar uzunluğu güvenlik seviyesine göre belirlenmektedir. Günümüzde pratik olarak 160-192 bitlik ECC anahtarları kullanılmaktadır. RSA içinse; ticari uygulamalarda 1024 bitlik, daha kritik (yüksek güvenlik gerektiren) uygulamalarda 2048 bitlik anahtarlar kullanılmaktadır. Bu da yaklaşık olarak, sırası ile 160 bit ile 210 bitlik ECC anahtar uzunluklarına denk gelmektedir [14]. 32 3. ELİPTİK EĞRİ SAYISAL İMZA ALGORİTMASI (ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM - ECDSA) Eliptik Eğri Sayısal İmza Algoritması (Elliptic Curve Digital Signature Algorithm ECDSA) Sayısal İmza Algoritmasının (Digital Signature Algorithm - DSA) eliptik eğri eşleniğidir. 3.1. DSA (Digital Signature Algorithm) Sayısal İmza Algoritması (DSA) 1991 yılında NIST tarafından ileri sürülmüştür. Daha sonra ABD Hükümeti Federal Bilgi İşleme Standardı (Federal Information Processing Standard - FIPS)’nda yer almıştır. Güvenliği ayrık logaritma probleminin çözülmesinin güçlüğüne dayanır [32]. İşleyişi şu şekildedir; DSA Alan Parametrelerinin Üretilmesi: Her bir taraf kendi alan parametrelerini güvenli bir biçimde oluşturur. 1. ( q | p – 1 ) özelliğini sağlayan 160 ikillik bir q asal sayısı ile 1024 ikillik bir p asal sayısı seçilir. 2. Zp’den bir h elemanı seçilir ve ( g ≠ 1) durumu sağlanana kadar g hesaplanır: g=h p −1 q mod p 3. Böylece alan parametreleri p, q ve g olur. DSA Anahtar Çiftinin Üretilmesi: (p, q, g) alan parametrelerine sahip her bir A tarafında şu işlemler uygulanır: 1. 1≤ x ≤ q -1 aralığından rastgele bir x tamsayısı seçilir. 2. y hesaplanılır: y = gx mod p 3. A’nın açık anahtarı y olur; A’nın gizli anahtarı ise x olur. 33 DSA ile İmza Üretilmesi: Bir m mesajını imzalamak için, A tarafı şunları yapar: 1. 1≤ k ≤ q -1 aralığından rastgele bir k tamsayısı seçilir. 2. X ve r hesaplanır, eğer r = 0 ise adım 1’e dönülür: X = gk mod p , r = X mod q 3. k -1 hesaplanır: k -1 mod q 4. e hesaplanır: e = SHA-1(m) 5. s hesaplanır, eğer s =0 ise adım 1’e dönülür: s = k -1 {e + xr} mod q 6. A’nın m mesajı için imzası (r, s) olur. DSA ile İmza Doğrulanması: A’nın m üzerindeki imzası (r, s) imzasını doğrulamak için, B tarafından A’nın alan parametreleri (p, q, g) ile açık anahtarı (y) elde edilir ve şunlar yapılır: 1. r ve s nin [1, q-1] aralığındaki tamsayılar olduğu doğrulanır. 2. e hesaplanılır: e = SHA-1(m) 3. w hesaplanır: w = s -1 mod q 4. u1 ve u2 hesaplanır: u1 = ew mod q ve u2 = rw mod q 34 5. X ve v hesaplanır: X = gu1 yu2 mod p ve v = X mod q 6. Eğer, (v = r) koşulu mutlaka sağlanıyorsa imza kabul edilir. 3.2. ECDSA ECDSA 1999 yılında ANSI standardı olarak kabul edilmiştir, 2000 yılında ise IEEE ve NIST standartlarına kabul edilmiştir. Bunların yanı sıra 1998 yılında ISO standardı olarak kabul edilmiştir. [32] Aşağıda ECDSA kullanılarak imza üretme ve doğrulama için gerekli olan prosedürler anlatılmaktadır: ECDSA Anahtar Çifti Oluşturulması: D = (q, FR, a, b, G, n, h) eliptik eğri alan parametrelerine sahip bir A kişisinin açık ve gizli anahtarları şu şekilde bulunur: 1. [1, n-1] aralığından rastgele bir d tamsayısı seçilir. 2. Q = dG noktası hesaplanılır. Bu durumda A kişisinin açık anahtarı Q noktası, gizli anahtarı ise d tamsayısı olur. ECDSA ile İmza Üretilmesi: Bir m mesajını imzalamak için D = (q, FR, a, b, G, n, h) eliptik eğri alan parametrelerine ve d gizli anahtarına sahip olan bir A kişisi tarafından şu adımlar izlenilir: 1. Rastgele bir k tamsayısı 1 ≤ k ≤ n – 1 aralığından seçilir. 2. kG = (x1, y1) ve r = x1 mod n hesapları yapılır. Eğer r = 0 ise adım-1‘e dönülür. 3. k -1 mod n hesaplanılır. 4. e = SHA-1(m) hesaplanılır. 35 5. s = k -1 (e + dr) mod n hesaplanılır. Eğer s = 0 ise adım-1‘e dönülür. Böylece A’nın m mesajı için imzası (r, s) olur. ECDSA ile İmza Doğrulanması: A’nın m mesajı üzerindeki (r, s) imzasını doğrulayabilmek için, B A’nın D = (q, FR, a, b, G, n, h) eliptik eğri alan parametrelerinin ve ilgili Q açık anahtarının aslına uygun kopyalarını elde etmelidir. B tarafından daha sonra şu adımlar izlenilir: 1. r ve s nin [1, n-1] aralığında olduğu doğrulanır. 2. e = SHA-1(m) hesaplanılır. 3. w = s -1 mod n hesaplanılır. 4. u1 = ew mod n ve u2 = rw mod n hesaplanılır. 5. X = u1G + u2Q = (x1, y1) hesaplanılır. Eğer X = O ise imza reddedilir. Diğer durumda v = x1 mod n hesaplanılır. 6. Eğer v = r koşulu sağlanıyorsa imza kabul edilir. 3.3. NIST Tarafından Önerilen Eliptik Eğriler [36] 2000 yılının Şubat ayında NIST, FIPS 186-1 standardını ECDSA’yı da içerecek biçimde güncelledi. Yeni standart kullanılacak olan sonlu alan ve eliptik eğriler için öneriler getirmekteydi ve FIPS 186-2 [37] olarak adlandırıldı. FIPS 186-2 tarafından önerilen 10 adet sonlu alan vardır: 5 adet Fp asal alanı için; P192, P-224, P-256, P-384, P521 ve 5 adet de F2m ikilllik alanı için; F2163 , F2233 , F2283 , F2409 , F2571. Her bir asal alan için bir adet rastgele seçilmiş eliptik eğri önerilirken, her bir ikillik alan içinse bir adet rastgele seçilmiş eliptik eğri ve bir adet de Koblitz eğrisi önerilmektedir. Alanların ikillik dereceleri, bilinen gizli anahtarlı şifreleme sistemlerinde kullanılan anahtar uzunluklarının en az iki katı olacak şekilde seçilmiştir. Çünkü ayrıntılı anahtar denemesi yöntemi ile k-ikillik bir blok şifrenin kırılması için geçen süre ile Pollard Rho 36 algoritması kullanılarak 2k-ikillik alan dereceli bir eliptik eğriye sahip eliptik eğri sayısal imza algoritmasının kırılabilmesi için gereken süre yaklaşık aynıdır. Asal Alandaki NIST Eğrilerinin Tanımı Asal alanda tanımlı NIST eliptik eğrileri Çizelge 6‘da listelenmiştir. Fp’de tanımlı bir E eliptik eğrisi kendisini tanımlayan y2 = x3 + ax + b denkleminin a, b ∈ Fp katsayıları ile nitelendirilir. Bütün NIST eğrilerinde a = -3 ‘tür, çünkü Jacobian koordinatları kullanıldığında nokta ikiye katlama algoritmalarını daha hızlı çalıştırmaktadır. Fp’de tanımlı E eğrisi üzerindeki noktaların sayısı nh dır, burada n bir asal olup h ise kofaktör olarak adlandırılmaktadır. Fp’deki rastgele seçilmiş bir eliptik eğri (P ikillik sayısı m olan bir asaldır) P-m ile gösterilmektedir. Çizelge 6 NIST tarafından önerilen asal alan üzerindeki eliptik eğriler 37 4. ELEKTRONİK İMZA 4.1. Elektronik İmzaya Genel Bir Bakış Ülkemizde 15 Ocak 2004 tarihli ve 5070 sayılı Elektronik İmza Kanunu’nda yer alan şekliyle “Elektronik İmza”; başka bir elektronik veriye eklenen veya elektronik veriyle mantıksal bağlantısı bulunan ve kimlik doğrulama amacıyla kullanılan elektronik veriyi tanımlar. Bir başka deyişle; bilginin üçüncü tarafların erişimine kapalı olduğu bir ortamda, bütünlüğü bozulmadan (bilgiyi ileten tarafın oluşturduğu orijinal haliyle) ve tarafların kimlikleri doğrulanarak iletildiğini elektronik veya benzeri araçlarla garanti eden harf karakter veya sembollerden oluşmuş bir seti ifade eder. Elektronik imza kavramı çok genel bir tanım olup kişilerin elle atmış olduğu imzaların tarayıcıdan geçirilmiş hali olan sayısallaştırılmış imzaları, kişilerin göz retinası, parmak izi ya da ses gibi biyolojik özelliklerinin kaydedilerek kullanıldığı biyometrik önlemleri içeren elektronik imzaları veya bilginin bütünlüğünü ve tarafların kimliklerinin doğruluğunu sağlayan sayısal imzaları içermektedir. Sayısal imza, imzalanan metine göre farklılık gösterir ve içeriğin matematiksel fonksiyonlardan geçirilerek eşsiz olduğu düşünülen bir değer bulunması sureti ile elde edilir. Yani kişilerin, elle atılan imzada olduğu şekilde tek imzası yoktur; bunun yerine imzalamada kullanılan anahtarları vardır. “Kör Sayısal İmza” ya gelince, bir kimsenin bir dokümanın bilgisine sahip olmadan o dokümanı imzalayabilmesini sağlayan sayısal imza protokolüne verilen addır. 5070 sayılı Elektronik İmza Kanunu’nda geçen “elektronik imza” kavramı sayısal imzayı işaret etmektedir. Elektronik Sertifika Elektronik sertifika, elektronik imzanın doğrulanması için gerekli olan veriyi ve imza sahibinin kimlik bilgilerini içeren elektronik kaydı ifade etmektedir. Elektronik sertifikalar, kanuna uygun olarak faaliyette bulunacak elektronik sertifika hizmet sağlayıcılarından belirli bir ücret karşılığında temin edilecektir. 38 Elektronik sertifika hizmet sağlayıcısının sertifika üzerindeki elektronik imzası, sertifikanın bütünlüğünü ve doğruluğunu garanti edecektir. Elektronik sertifikalar, atılan imzanın doğruluğunun teyit edilebilmesi için gereklidir. Elektronik İmzanın Hukuki Sonuçları Elektronik İmza Kanunu’nda; güvenli elektronik imza, elle atılan imzaya eşdeğer kabul edilmiş ve elektronik imza ile oluşturulmuş verilerin senet hükmünde olacağı belirtilmiştir. Ancak kanunların resmi şekle veya özel bir merasime tabi tuttuğu hukuki işlemler ile teminat sözleşmelerinin güvenli elektronik imza ile gerçekleştirilemeyeceği hükme bağlanmıştır. Diğer bir deyişle, kanunların merasimi ya da üçüncü tarafların şahitliğini gerek gördüğü emlak alım satımı, veraset ve intikal, evlenme gibi işlemler elektronik imza ile gerçekleştirilememektedir. Elektronik İmzanın Uygulama Alanları Elektronik imzanın; bankalar ve finans kurumları, şube ağına sahip sigorta şirketleri, kamu kurum ve kuruluşları, holdingler ve diğer büyük şirketler, üniversiteler, yüksek iletişim ve bilgi güvenliği gereksinimi olan organizasyonlar başta olmak üzere orta ve uzun vadede yaygın bir uygulama alanı bulabileceği değerlendirilmektedir. Gerek kamusal gerekse ticari alandaki muhtemel elektronik imza uygulamaları arasında aşağıdakiler sayılabilir: Kamusal Alandaki Uygulamalar: • Her türlü başvurular (ÖSS, KPSS, LES, pasaport vb) • Kurumlar arası iletişim (Emniyet Müdürlükleri, Nüfus ve Vatandaşlık İşleri Müdürlükleri vb) • Sosyal güvenlik uygulamaları • Sağlık uygulamaları (Sağlık personeli - hastaneler - eczaneler) • Vergi ödemeleri • Elektronik oy verme işlemleri 39 Ticari Alandaki Uygulamalar: • İnternet bankacılığı • Sigortacılık işlemleri • Kâğıtsız ofisler • e-Sözleşmeler • e-Ticaret Elektronik İmzaya İlişkin Düzenlemeler • 5070 sayılı Elektronik İmza Kanunu (23 Ocak 2004 tarih ve 25355 sayılı Resmi Gazete) • Sertifika Mali Sorumluluk Sigortası Yönetmeliği (26 Ağustos 2004 tarih ve 25565 sayılı Resmi Gazete) • 2004/21 sayılı Başbakanlık Genelgesi (6 Eylül 2004 tarih ve 25575 sayılı Resmi Gazete) • 5070 Sayılı Elektronik İmza Kanununun Uygulanmasına İlişkin Usul ve Esaslar Hakkında Yönetmelik (6 Ocak 2005 tarih ve 25692 sayılı Resmi Gazete) • Elektronik İmza ile İlgili Süreçlere ve Teknik Kriterlere İlişkin Tebliğ (6 Ocak 2005 tarih ve 25692 sayılı Resmi Gazete) • Zorunlu Sertifika Mali Sorumluluk Sigortası Genel Şartları (27 Ocak 2005 tarih ve 25709 sayılı Resmi Gazete) • Sertifika Mali Sorumluluk Sigortası Tarife ve Talimatı (27 Ocak 2005 tarih ve 25709 sayılı Resmi Gazete) 40 Elektronik İmza Altyapısının Çalışma Prensipleri 1. Kullanıcı elektronik sertifika için elektronik sertifika hizmet sağlayıcısına başvurur. Sertifika hizmet sağlayıcısı kullanıcının kimliğini geçerli ve güvenilir belgelerle tasdik eder. 2. Sertifika hizmet sağlayıcısı sertifikanın kaydını bir dizinde toplar. 3. Kullanıcı kendi gizli anahtarıyla mesaj sahibinin kimlik doğrulaması, mesajın bütünlüğünü ve inkâr edilemezliğini sağlayarak mesajı imzalar ve karşı tarafa gönderir. 4. Karşı taraf mesajı alır. Elektronik imzasını kullanıcının açık anahtarıyla onaylar ve kullanıcının sertifikasının geçerliliğini ve durumunu kontrol etmek için veri kütüğünde sorgulama yapar. 5. Veri kütüğü sertifikanın geçerli/iptal durum bilgilerini karşı tarafa iletir. Elektronik Sertifika Hizmet Sağlayıcısı Elektronik sertifika hizmet sağlayıcısı 5070 sayılı Kanununa göre; “Elektronik sertifika, zaman damgası ve elektronik imzalarla ilgili hizmetleri sağlayan kamu kurum ve kuruluşları ile gerçek veya özel hukuk tüzel kişilerdir.” Kullanıcılar için sertifika yayımlar, sertifika durum bilgilerini güncel tutar ve sertifika iptal listeleri hazırlar, güncel sertifikaları ve sertifika iptal listelerini isteyen kişilere sunar, süresi dolan ya da iptal edilen sertifikaların arşivini tutar. Elektronik Sertifika Hizmet Sağlayıcısının (ESHS) Yükümlülükleri Elektronik Sertifika Hizmet Sağlayıcısı; • Güvenli ürün ve sistemleri kullanmak, • Hizmeti güvenilir bir biçimde yürütmek, • Sertifikaların taklit ve tahrif edilmesini önlemek ile ilgili her türlü tedbiri alma ile ilgili şartları sağlamakla yükümlüdür. 41 Telekomünikasyon Kurumunun Türkiye’de Kamu Alanındaki Elektronik İmza Yapılanmasına İlişkin Rolü Kamu hizmetlerinin daha hızlı sunulması, yaygınlaştırılması, doğru ve yeterli bilgi sağlanması, işletme giderlerinin azaltılmasını da beraberinde getirmiştir. Bu durumdan hareketle, ülkemizde kullanımı giderek yaygınlaşacak olan elektronik imza uygulamaları kapsamında kamuda gereksiz mükerrer yatırımların önlenmesi, uyumlu, birlikte ve güvenilir bir yapıda çalışılmasını sağlamak maksadıyla, Telekomünikasyon Kurumu tarafından yapılan öneri doğrultusunda 10 Haziran 2004 tarihli e-Dönüşüm Türkiye VI. İcra Kurulu Toplantısı’nda kamu çalışanlarının kurumsal sertifikalarının tek merkezden sağlanması yönünde karar alınması sağlanmıştır. Bu karar uyarınca Kamu Sertifikasyon Merkezi yapısının kurulması ve işletilmesi görev ve sorumluluğu TÜBİTAK-UEKAE’ye verilmiştir [39]. Tüm kamu kurum ve kuruluşlarının aynı kurumsal sertifika yapısı altında toplanmasını hedefleyen, sadece kamu kurum ve kuruluşlarına kurumsal sertifikaların oluşturulması ve sertifika yaşam çevriminin yönetilmesini sağlayacak bu yapının gözden geçirilmesi ve uygunluğunun izlenmesi görev ve sorumluluğu ise Telekomünikasyon Kurumu'na aittir. 4.2. Sayısal İmza Yazılı dokümanlarda kullandığımız imzalar gibi, sayısal imzalar da günümüzde eposta veya elektronik verilerin yazarlarını/sahiplerini tanılamada kullanılmaktadır. Sayısal imzalar, Sayısal Sertifikalar kullanılarak yaratılır ve doğrulanırlar. Bir bilgiyi imzalamak, güvenli bir alışverişi gerçekleştirmek için kişiye özel Sayısal Sertifikaya ihtiyaç vardır. Günümüzde uluslararası yasama organları sayısal imzaları ıslak imzalar gibi yasal olarak bağlayıcı ve uluslararası çapta kabul edilebilir kılmak için yasalar çıkarmışlardır. Sayısal imzaların sağladığı başlıca önemli fonksiyonlar şöyledir: • Tanılama (doğruluk): Bir kişinin (veya sunucunun, müşterinin vs.) kimliğini doğrulamadır. Veriyi imzalayan kişinin yetkinliğini garanti ederek işleme kimin dahil olduğunu ya da mesajın gerçekten kimden geldiğini karşı tarafa gösterir. Ayrıca tanılama işleminin doğru olarak yapılabilmesi için sayısal sertifikayı veren kurumun tarafsız, güvenilir ve dünya çapında tanınıyor olması gerekmektedir. 42 • Gizlilik: Verinin gizliliği, alıcının açık anahtarının mesajı şifrelemede kullanılması sayesinde gerçekleştirilir. Kriptografi, okunur bir formattaki bilginin başkalarının okuyamayacağı bir formata dönüştürülmesi bilimidir. Bu süreçte, bilgi hedeflenen alıcı dışında bir başkasının okuyamayacağı veya değiştiremeyeceği bir şekilde kodlanır (şifreleme). Şifreleme ve deşifreleme, verinin okunabilir ve kodlanmış formatlara dönüştürülmesini sağlayan bir matematiksel formül veya "algoritma" ile bir anahtar gerektirir. Anahtar, sayısal imzayı veya şifreli mesajı üretmek için ham metin ile birleştirilmiş özel bir sayıdır. Yolda alıkonulsa bile mesajı deşifre etme kabiliyetine sahip olmayan bir kişi tarafından kesinlikle okunamaz (deşifre). • Veri Bütünlüğü (değiştirilemezlik): Sayısal imzalar verinin bütünlüğünü koruyarak okuduğunuz mesajın, kazayla veya kötü niyetle size gelene kadar değişmediğini veya değiştirilmediğini garanti eder. Teknik olarak anlatmak gerekirse, sayısal olarak imzalanan dokümanın "hash" denilen küçük bir özeti tutulur. İmzalama işleminin ardından dokümanda yapılacak herhangi bir değişiklik, bu sayısal özeti farklı ve sonuç olarak geçersiz kılacaktır. • İnkâr edilemezlik: Sayısal imza sahibi bir kişi daha sonra bunu inkâr edemez, çünkü ilgili doküman için sayısal imzayı sadece bu kişi oluşturabilir. 4.2.1. Sayısal İmzanın İşleyişi: Sayısal imzanın nasıl işlediğini anlamak için kriptografik bir algoritmadan, özet fonksiyonundan (hash function) bahsetmek gerekir. Asimetrik (açık anahtarlı) şifreleme yöntemleri şifreleme ve şifre çözme için farklı anahtarlar, simetrik (gizli anahtarlı) şifreleme yöntemleri ise iki işlem için de aynı anahtarı kullanır. Özet fonksiyonları ise sadece şifreler. Özet fonksiyonlarından orijinal mesaja geri dönüş hiç bir şekilde mümkün değildir. Bir mesajı imzalamak, öncelikle mesajın, özet fonksiyonundan geçirerek özetini çıkarmak ve çıkan özeti şifrelemek anlamına gelir. 4.2.2. Özet Fonksiyonu Özet fonksiyonu bir mesajın 16 veya 20 bitlik parmak izini çıkarır. Belli bir mesaj aynı özet algoritması kullanıldığında, aynı mesaj özetini verir. Eğer iyi bir özet fonksiyonu 43 kullanılıyorsa, mesajda yapılan tek ikillik bir değişim bile mesaj özetinin değişmesine sebep olur. Özet fonksiyonu kullanarak, kimlik denetimi amacıyla gizli anahtarla bütün mesajı şifrelemek zorunluluğu ortadan kalkar. Özet fonksiyonunun özellikleri: İdeal bir özet fonksiyonu H iki özelliği sağlamalıdır, • H çarpışmaya dayanıklı olmalıdır H(x) = H(y) yi sağlayıp, eşit olmayan x ve y elemanlarının bulunması zor olmalıdır. • H fonksiyonu girişindeki bütün kısmi bilgileri saklamalıdır. Bir başka deyişle, y = H(x) i sağlayan bir y verildiğinde, x hakkında herhangi bir bilgi elde etmek mümkün olmamalıdır. SHA-1 [15] ve MD5 [16] algoritmalarının bu özellikleri sağladıkları gösterilmiştir [17]. Özet fonksiyonlarının kullanım amaçları: Özet fonksiyonları şu amaçlarla kullanılırlar: • Saklanan bilginin bütünlüğünün sağlanması amaçlı. Bilgideki herhangi bir değişiklik mesaj özetindeki bitlerin % 50’sinin değişmesine sebep olur. • Sözde rastgele (pseudo-random) sayı üretme amaçlı. Kriptografide, hemen hemen bütün uygulamalarda sözde rastgele sayılara ihtiyaç vardır. • İmzalanmış bir belgedeki bütünlüğü ispatlama amaçlı. Bir mesaj imzalanmadan önce özet fonksiyonundan geçirilerek mesaj özeti elde edilir. Elde edilen mesaj özeti gönderenin gizli anahtarıyla şifrelenir ve mesaja eklenerek gönderilir. Bu da gönderenin kimliğinin ispatıdır. Kullanılan özet fonksiyonlarına örnek olarak SHA-1, MD4, MD5 gibi algoritmalar gösterilebilir. 4.2.3. SHA-1 Algoritması SHA, NIST (National Institute of Standards and Technology - Ulusal Standart ve Teknoloji Enstitüsü, ABD) tarafından geliştirilmiştir ve 1993’te ABD’de ulusal bilgi işleme standardı (FIPS) olarak yayınlanmıştır (FIPS PUB 180). 1995’te yenilenerek, FIPS PUB 181 olarak standartlaşmıştır ve bundan sonra SHA-1 adını almıştır [10]. 44 SHA-1 Algoritmasının açıklaması Ek-1‘de verilmiştir. 4.2.4. MD5 Algoritması MD5 mesaj özeti algoritması Ron Rivest tarafından MIT’de geliştirilmiştir. Birkaç yıl öncesine kadar, brute-force ve kripto analitik endişeler yükselene dek, MD5 en çok kullanım gören güvenilir özet algoritmasıydı [10]. Algoritma herhangi bir uzunluktaki mesajı girdi olarak alır ve çıktı olarak 128-ikillik mesaj özetini verir. Girdi mesajı 512-ikillik bloklar halinde işlenmektedir. Bir 512-ikillik bloğun işlenebilmesi için 64 adım gerekmektedir. MD5 algoritmasının özelliği özet kodunda yer alan her bir ikilliğin girdi mesajında yer alan her bir ikilliğin bir fonksiyonu olmasıdır. 4.2.5. SHA-1 ile MD5 in karşılaştırılması [10] • “Brute-Force” atağına karşı güvenlik: En açık ve en önemli fark, SHA-1 özetinin MD5 özetinden 32 ikillik daha uzun olmasıdır. Brute force (kaba kuvvet) tekniği kullanılarak, verilen bir özete uygun olan bir mesajın üretilebilme güçlüğü MD5 için 2128 mertebelerinde işlem gerektirirken, SHA-1 için 2160 işlem gerektirmektedir. Benzer şekilde brute force tekniği ile aynı özete sahip iki mesajın üretilebilme güçlüğü MD5 için 264 mertebelerinde işlem gerektirirken, SHA-1 için 280 işlem gerektirmektedir. Buna göre, SHA-1 brute force atağına karşı MD5’e göre oldukça kuvvetlidir. • Kripto analize karşı güvenlik: Tasarım itibarıyla MD5 kripto analiz atağına karşı savunmasızdır. Bu durum SHA-1 için geçerli değildir. • Hız: Her iki algoritma da mod 232 ye göre toplama işlemleri içerdiği için 32ikillik mimarilerde daha iyi çalışırlar. SHA-1 de bir dizi işlem 80 adımdan oluştuğu için 160-ikillik tampon bellek gerektirirken, MD5 de bir dizi işlem 64 adımdan oluştuğu için 128-ikillik tampon bellek gerektirmektedir. Buna göre, aynı donanımda SHA-1 MD5’e göre daha yavaş çalışmaktadır. • Basitlik ve az yer kaplama(compactness): Her iki algoritmanın da anlaşılması ve gerçeklenmesi kolaydır. Büyük programlara ve yer değiştirme tablolarına ihtiyaç duymazlar. 45 • “little endian” a karşı “big endian” mimarisi: MD5 bir mesajı 32-ikillik kelimeler çevirirken “little endian” tasarımını kullanırken, SHA-1 “big endian” tasarımını kullanmaktadır. Bu tasarımların kullanımı her iki algoritmaya da diğerine karşı önemli bir avantaj sağlamamaktadır. 4.3. Bir Mesajı İmzalama Şekil 8’de gösterildiği gibi bir düz metnin imzalanması için şu adımlar izlenilir: • M mesajı özet fonksiyonundan geçirilerek H özet değeri elde edilir. • Elde edilen H özet değeri imza sahibinin gizli anahtarıyla şifrelenerek S imzası elde edilir. • Elde edilen imza mesaja eklenerek {M,S} şeklinde gönderilir. Şekil 8 : Bir düz metnin sayısal imzasının, imza sahibinin gizli anahtarı kullanılarak açık anahtarlı bir şifreleme algoritması ile oluşturulması. 46 4.4. İmzalanmış Bir Mesajın Doğrulanması: Doğrulama iki öğenin karşılaştırılması işlemidir. Şekil 9’da gösterildiği gibi bir sayısal imzanın doğrulanabilmesi için şu adımlar izlenilir: • Alınan {M,S} mesajında M ve S kısımları birbirinden ayrılır. • M mesajı, özet fonksiyonundan tekrar geçirilerek H’ özet değeri elde edilir. • Gönderenin açık anahtarıyla, S imzasının şifresi çözülerek deşifre edilmiş özet değeri H’’ elde edilir. • H’ ve H’’ özet değerleri karşılaştırılır. • Eğer H’ ve H’’ değerleri birbirlerine eşitse, mesaj doğrulanmış ve güvenilir demektir. Eğer birbirlerinden farklı ise, mesaj ya iletim sırasında değiştirilmiş, ya da mesajı gönderen kişi olduğunu söylediği kişi değil demektir. Bu durumda mesajı reddetmek gerekir. Şekil 9 : İmza sahibinin imzaladığı iddia edilen düz metin-sayısal imza çiftinin, imza sahibinin açık anahtarı kullanılarak açık anahtarlı bir algoritma ile doğrulanması. 47 4.5. Sayısal İmza Protokolleri Sayısal İmza Protokolleri insanların dokümanlarını güvenli ve verimli bir biçimde elektronik olarak “imzalama” larını sağlar. Bir başka deyişle, sayısal imzaları taklit etmek zor iken geçerliliğini doğrulamak kolaydır. Kriptografide çığır açan makalelerinde Diffie ve Hellman [1] , sayısal imza konusuna ilk olarak değinmişlerdir. Bu konudaki ilk yapı Rivest, Shamir ve Adleman [2] tarafından bir sayı teorisi yaklaşımına dayandırılarak oluşturulmuştur. Sayısal imzaların güvenliğine dair ilk resmi taslak Goldwasser, Micali ve Rivest [18] tarafından verilmiştir. Makalelerinde sayısal imzalara yapılabilecek en güçlü atak olan var olan adaptif seçilmiş mesaj atağını (an existential adaptive chosen-message attack) incelemişlerdir. Bunun ötesinde bu türdeki bir atağa karşı güvenli olan bir sayısal imza protokolü sunmuşlardır. Çarpanlara ayırmanın zor olduğu durumlarda devreye sokulan ClawFree permutasyonları temel alınarak geliştirilmiştir. Bu güvenlik seviyesini koruyan daha sonraki protokollerde, sırası ile şu fonksiyonlar temel alınarak geliştirilmiştir: tuzak kapısı(trapdoor) permutasyonları[19], tek yönlü permutasyonlar [20] ve son olarak tek yönlü fonksiyonlar [21]. 48 5. KÖR SAYISAL İMZA İnternette bizi endişelendiren en önemli problemlerden birisi “Kişisel Haklar” dır. Kişisel hakların korunması yolunda, 1982 yılında D. Chaum “Kör Sayısal İmza” kavramını ilk olarak ileri sürdü. 1993’te Elektronik Ödeme Sistemlerindeki müşterilerin gizliliğini sağlamak için bu kavramın uygulamasını yaptı. Bu kavram, geleneksel sayısal imzada yapılan değişiklikler ile meydana getirilmiştir. Kör sayısal imza, imzalayıcı kişinin imzalayacağı dokümanın içeriğini görmeden imzalamasına olanak tanır. Bunun ötesinde imzalayıcı kişi doküman/imza çiftini görse dahi, o dokümanı kimin için ya da ne zaman imzaladığını tespit edemez (her ne kadar imzanın geçerliliğini doğrulayabilse bile). Bu gözleri kapalı olarak bir dokümanı imzalamaya eşdeğerdir. İmzayı ve dokümanı daha sonra gördüğünüzde imzanın size ait olup olmadığını doğrulayabilirsiniz fakat orijinal dokümanı kimin için ya da ne zaman imzaladığınızı anımsamakta güçlük çekeceğiniz açıktır. İlk bakışta bu kavram biraz tuhaf gelebilir - bir dokümanı okumadan niçin imzalamaya ihtiyaç duyulsun ki? Görülmüştür ki bu kavram, kullanıcı gizliliğinin ön planda tutulduğu sistemlerde verimli bir şekilde uygulanabilmektedir. Bu sistemlere örnek, çevrimiçi (online) oylama ve elektronik ödemedir. Çevrimiçi olarak bir oy kullandığınızda, bu oyu kimin için kullandığınızın bilinmemesini istersiniz. Elektronik ödemede de benzer şekilde, bir başka kişinin size ait bir harcamayı ne zaman yaptığınızı ya da kimliğinizi öğrenmesini istemezsiniz. Tıpkı gerçek parada olduğu gibi, herhangi bir yerde yaptığınız alışverişte kimliğinizi satıcıya göstermezsiniz. Satıcı sizi tanımaz ancak satıcı size verdiğiniz paranın sahte olup olmadığını söyleyebilir. Özel olarak, bu elektronik ödeme senaryosunda, doküman bir e-paraya ya da elektronik dokümana ve imzalayıcı ise bankaya karşılık gelmektedir. Alışverişlerinde kör imzalanmış eparaları kullandığı müddetçe müşteri, gizliliğini muhafaza edecektir. Kör Sayısal İmzalar ile ilgili literatürde kayda değer protokoller geliştirilmiştir [8], [9], [11], [12]. Bu protokoller çeşitli elektronik ödeme sistemlerinde kullanılmaktadır. Chaum’un gösterdiği kör sayısal imza protokolünde iki taraf bulunmaktadır, istemci tarafı ve imzalayıcı taraf. Bir istemcinin bir imzalayıcıdan kör sayısal imza istediğinde, ilk olarak istemci bir körleştirme katsayısı ile mesajın sahibini körleştirir ve bu halde mesajı imzalayıcıya gönderir. İmzalayıcı, körleştirilmiş mesajı kendi gizli anahtarını kullanarak imzalar ve oluşan kör sayısal imzayı istemciye geri yollar. Bundan sonra 49 istemci kör sayısal imzadan körleştirme katsayısını çıkartarak imzalayıcının imzasını elde edebilir. İmzanın meşruluğunu doğrulamak için imzalayıcının açık anahtarından faydalanılabilir. Bir kör sayısal imza protokolü için gereksinimler şunlardır: 1. Doğruluk: bir mesaja ait imzanın doğruluğu imzalayıcının açık anahtarı ile gösterilebilir. 2. Körleştirme: mesaj içeriği imzalayıcıya gösterilmemelidir, kör sayısal imzanın sahibi mesaj içeriğini görmez. 3. Taklit edilemezlik: imzanın kendisi imzalayıcısının kanıtıdır ve başka hiç kimse taklit bir imza kullanarak doğrulama aşamasını geçemez. 4. İzlenemezlik: kör sayısal imza sahibi imza yayımlandığında imzanın atıldığı mesajla imza arasında bir bağ kuramaz. 5.1. D.Chaum’un Kör Sayısal İmza Modeli Asal çarpanlara ayırma algoritmasına dayanan ve kriptografi literatürüne giren ilk kör sayısal imza modeli D.Chaum [5] tarafından ileri sürülmüştür. Model, aşağıda anlatılacak olan RSA ile sayısal imzalama modelini [2] temel almaktadır. 5.1.1. Orijinal RSA ile Sayısal İmzalama Modeli p ve q iki büyük asal sayı olmak üzere, n = p*q olsun ve e de öyle seçilmiş olsun ki n ile aralarında asal olsun, OBEB(n,e) = 1. İmzalayıcının açık anahtarı (n,e) ve gizli anahtarı ise (p, q, d) olsun. n’nin çarpanları bilinmediği müddetçe, açık anahtardan gizli anahtarın elde edilmesinin çok zor olduğu ispatlanmıştır [2]. Son olarak H çarpışmaya dayanıklı bir özet fonksiyonu olsun. Tanım 1: Verilen bir m mesajı için, eğer aşağıdaki şart sağlanıyorsa (m, s) çifti geçerli bir RSA imzasıdır: se = H(m) (mod n) m mesajını ve (p, q, d) gizli anahtarını bilen bir imzalayıcı (m,s) çiftini şu şekilde üretebilir: 50 s = H(m)d (mod n) (m,s) in geçerli olup olmadığı aşağıdaki eşitliğin sağlanması ile kontrol edilebilir: se = H(m) (mod n) Çünkü d * e = 1 (mod φ(n)) dir. se = ( H(m)d )e = ( H(m) )d*e = H(m) (mod n) H hash fonksiyonunun kullanılmasının sebebi güvenliği ve verimliliği arttırmasıdır. Bu modelin imzalama safhası Şekil 10‘da, doğrulama safhası da Şekil 11‘de gösterilmiştir. Orijinal RSA ile sayısal imzalama modeli incelendikten sonra artık bu modelin nasıl bir kör sayısal imzalama modeline çevrileceği gösterilebilir. Bu yapı D. Chaum’a aittir [5]. Şekil 10 Orijinal RSA ile sayısal imzalama modeli 51 Şekil 11 RSA ile oluşturulan imzasının doğrulanması 5.1.2. Chaum’un Kör Sayısal İmza Protokolü Chaum’un kör sayısal imza protokolü beş aşamadan oluşmaktadır: ilklendirme, körleştirme, imzalama, körleştirmeyi giderme ve doğrulama. Bu aşamalar aşağıda açıklanmıştır: 1. İlklendirme aşaması: İmzalayıcı rastgele iki büyük asal sayı seçer p, q ve bu sayıları kullanarak n = p*q ile φ(n) = (p-1)*(q-1) yi hesaplar. Daha sonra e*d ≡ 1 mod φ(n) ve OBEB(e, φ(n)) =1 olacak şekilde iki büyük asal sayı olan e ve d yi seçer. Burada (e,n) imzalayıcının açık anahtarı ve d ise gizli anahtarıdır. İmzalayıcı (p,q,d) yi gizli tutar ve (e,n) ile h(.)’ı (h: SHA1 veya MD5 gibi tek yönlü bir özet fonksiyonu) yayımlar. 2. Körleştirme aşaması: İstemci m mesajına sahiptir ve bunun imzalayıcı tarafından imzalanmasını ister. İstemci rastgele bir r tamsayısını körleştirme faktörü olarak seçer. İstemci, m’ = re * h(m) mod(n) yi hesaplar ve imzalayıcıya yollar. Bakınız : Şekil 12 52 3. İmzalama aşaması: m’ nü istemciden aldıktan sonra imzalayıcı s’ = m’d mod(n) yi hesaplar ve istemciye yollar. Bakınız : Şekil 12 Şekil 12 Kör sayısal imzalama – körleştirme ve imzalama safhaları 4. Körleştirmeyi kaldırma aşaması: s’ nü imzalayıcıdan aldıktan sonra istemci, s = s’ * r -1 mod(n) yi hesaplar. Bakınız : Şekil 13 53 5. Doğrulama aşaması: s, m mesajına ait imzadır. Diğer kullanıcılar bu imzanın meşruluğunu, se ≡ h(m) mod (n) yi hesaplayarak doğrulayabilirler. Bakınız : Şekil 13 Şekil 13 Kör sayısal imzalama – körleştirmenin kaldırılması ve elde edilen sayısal imzanın doğrulanması safhaları 5.2. D.Chaum’un Elektronik Ödeme Modeli 1983 yılında D.Chaum ilk elektronik ödeme sistemini ortaya koydu. Chaum’un e-para sisteminde üç taraf vardır: müşteri, banka ve satıcı. Müşteri bankadan e-parayı çeker, bu sırada banka müşterinin hesabında yeterli miktarın olup olmadığını kontrol eder. Yeterli miktar var ise müşteri e-parayı bankadan alır. Müşteri bu e-parayı istediği mal ya da hizmet için kullanabilir. Alış-veriş tamamlandığında satıcı e-parayı bankada bozdurur. Bu sırada banka e-parayı doğrular ve daha önce harcanıp harcanmadığını kontrol eder. Son olarak işler yolunda giderse banka e-paranın karşılığını satıcının hesabına aktarır. Chaum protokolünün ayrıntıları şu şekildedir [38]: 54 5.2.1. e-parayı Çekme Aşaması • Müşteri bir m mesajını seri numarası olarak seçer ve bu mesajı rastgele seçilmiş bir r körleştirme katsayısı ile çarparak körleştirir, M’ = B(m,r) Burada B körleştirme fonksiyonudur. • Körleştirilmiş M’ mesajını bankaya güvenli bir biçimde iletmek için müşteri bankanın PKB açık anahtarını kullanarak bu mesajı şifreler, EPKB (M’) • Banka şifrelenmiş ve körleştirilmiş mesaj kendisine ulaşınca kendi gizli anahtarı olan SKB yi kullanarak bu mesajı deşifreler: M’ = DSKB (EPKB (M’) ) • Banka müşteriye e-parayı transfer edebilmek için müşterinin hesabında yeterli miktarın olup olmadığını kontrol eder. Yeterli miktar var ise banka körleştirilmiş M’ mesajını kendi gizli anahtarı olan SKB yi kullanarak imzalar, S’ = ESKB (M’) • Banka kör sayısal imza olan S’ nü müşteriye geri yollar ve yine güvenli bir şekilde gitmesi için müşterinin açık anahtarı olan PKC ile şifreler, EPKC (S’) • Son olarak müşteri kör sayısal imzayı S’ elde edebilmek için EPKC (S’) şifreli metnini kendi gizli anahtarı olan SKC yi kullanarak deşifreler, S’ = DSKC (EPKC (S’) ) • Müşteri körleştirmeyi giderme fonksiyonu ve ilgili r körleştirme katsayısını kullanarak m üzerindeki imza olan S yi elde eder, S = B-1 (S’,r) 55 Bu senaryoda (m,S) banka tarafından yayımlanan e-parayı temsil etmektedir. 5.2.2. Ödeme Aşaması • Müşteri internet üzerindeki herhangi bir sitede yapacağı herhangi bir alış veriş için (m,S) e-parasını kullanabilir. Güvenlik ihtiyaçlarından dolayı, müşteri satıcıya e-parayı öderken bu ödemeyi satıcının açık anahtarı olan PKM yi kullanarak şifrelemedir, böylece herhangi bir davetsiz misafirin araya girerek bu e-paraya ulaşması engellenir. EPKM (m,S) • Daha sonra satıcı kendi özel anahtarı olan SKM yi kullanarak müşteriden gelen e-parayı elde eder (m,S) = DSKM ( EPKM (m,S) ) • Satıcı e-parayı (m,S) elde ettikten sonra, bankanın açık anahtarını PKB kullanarak bu e-paranın banka tarafından geçerli kılınıp kılınmadığını kontrol eder. m = EPKB (S) • Bunun ardından satıcı talep edilen malı ya da hizmeti müşteriye ulaştırır. 5.2.3. Depozit Aşaması • Satıcı e-parayı elde ettiği zaman, bu e-parayı kendi banka hesabına depozit ettirebilir. İlk olarak satıcı (m,S) yi güvenli bir kanalı kullanarak bankaya yollar; bankanın açık anahtarını PKB yi kullanarak e-parayı (m,S) şifreler, EPKB (m,S) • Şifreli (m,S) e-parasını alan banka, SKB gizli anahtarını kullanarak deşifre eder, (m,S) = DSKB ( EPKB (m,S) ) • Daha sonra banka bu e-paranın kendisi tarafından yayınlanıp yayınlanmadığını kontrol etmek için şu doğrulamayı yapar, 56 m = EPKB (S) • Son olarak banka e-paranın karşılığı olan miktarı satıcının hesabına aktarır. 5.2.4. Chaum’un Elektronik Ödeme Modeli için Uygulama Örneği E-paranın Çekilmesi Ayşe sayısal karşılığı olan C yi üretir. Bu sayısal karşılığın içerisinde çekilecek olan paranın miktarı (bu örnekte 50YTL) ve oluşturulan e-para için rastgele büyük bir “seri numarası”ndan oluşmaktadır. Ayşe C yi alır ve Banka’ya bu e-parayı kör bir şekilde imzalamasını ister. Bir başka deyişle, Ayşe ve Banka, gerçekleştirilen işlemler sonucunda Ayşe’nin e-parasına ait geçerli bir imza elde edeceği bir kör sayısal imza protokolü üzerinde anlaşırlar. Protokolün başarılı bir şekilde gerçekleştirilmesinden sonra Banka Ayşe’nin hesabından 50YTL düşer. E-paranın Harcanması Ayşe Kripto Kitapçılıktan seçtiği kriptografi kitabını yollamasını ister. Ayşe geçerli olan 50YTL lik C e-parasını Bankanın imzası ile Kripto Kitapçılığa yollar. Kripto Kitapçılık C e-parasın geçerliliğini, üzerindeki imzadan Bankanın açık anahtarını kullanarak doğrular. Eğer imza geçerli ise, Kripto Kitapçılık protokolü bitirir. E-paranın Depozitosu Kripto Kitapçılık C e-parasını ve üzerindeki imzayı Bankaya yollar. Banka e-para üzerindeki imzayı doğrular, e-paranın gerçekten kendisi tarafından imzalanıp imzalanmadığını kontrol eder. Eğer imza doğru ise Banka bu e-paranın harcanmış olup olmadığını kontrol eder. Eğer her iki kontrolden de geçilirse, e-para üzerindeki imza geçerli ise ve e-para henüz harcanmamış ise, Banka Kripto Kitapçılığın hesabına 50YTL yi geçer. Böylece e-para ile gerçekleştirilen bir alışveriş tamamlanmaktadır. Burada Ayşe’nin kimliğinin, hem Banka hem de Kripto Kitapçılık tarafından bilinmediğine dikkat etmek gerekir. Bunun nedeni e-para üzerinde kör imza kullanılmasıdır. Böylece sahibi 57 görülmeyecek şekilde imzalanmış e-parayı kullandığında satıcı bu e-paranın sahibinin Ayşe olduğunu söyleyemez. Bunun ötesinde bu e-para imza çifti Bankaya ulaştığında, Banka daha önce sahibi görülmeyecek şekilde imzaladığı bu e-parayı Ayşe ile ilişkilendiremez, çünkü imzaladığı metin hakkında hiçbir bilgisi yoktur. 5.3. Ecash Ecash, bir Hollanda Firması olan DigiCash'in yazılım programıdır. Ecash, donanımı gerektirmeyen ve müşterinin bilgisayarının hard diskine kaydedilen CyberWallet olarak adlandırılan özel bir yazılım aracılığıyla işleyen, nakit paraya uyarlanmış ön ödemeli bir sistemdir. Ödeme sisteminin bütün güvenliği, şifreleme sistemlerinin uygulanmasına dayanmaktadır. Yani ecash teknolojisinin çekirdeğini, DigiCash'in kurucusu ve başkanı David Chaum tarafından geliştirilen şifreleme teknikleri oluşturmaktadır. Ecash'in ana fikri, bir tür "elektronik nakit para (Cybermoney)" yaratmaktır. Elektronik bir para hesabı (CyberWallet) üzerinden, internette işlemlerin bütün kapsamı ile gerçekleştirilmesi mümkün olmakta; ayrıca hem satıcının parasını güvenli bir şekilde elde etmesi hem de alıcının özel alanının korunması garanti edilmiş olmaktadır. Burada değer birimleri belirli bir itibari kıymeti ve özel seri numaraları olan datalardan oluştuğu için token-based sistem söz konusudur. Sistemin ayrıntılı olarak işleyiş şekli, lisans sahibi bankanın yapacağı değişikliklere bağlıdır. Almanya'da bugün için, bu ödeme sistemi bakımından Deutsche Bank AG lisans sahibidir. Aşağıdaki açıklamalarda bu yüzden Deutsche Bank’ın uygulaması dikkate alınmıştır. Ecash sistemi daha 1994 yılında, internette toplam 30.000 ecash hesabı açarak uygulama kabiliyetini gözler önüne sermiştir. Deutsche Bank’ta, DigiCash ve Ecash Teknolojileri ile yaptığı ortak çalışma ile ecash'i geliştirmiş ve Alman Piyasasına adapte etmiştir. Ecash'te internette mal veya hizmet edimleri alımını sağlayacak elektronik bir ödeme sistemi söz konusudur. Ecash, online ödemeler için hesaplı, güvenli ve anonim bir yöntemdir. Müşteri, bu ödeme aracını bilgisayarındaki EcashWallet-Software olarak adlandırılan yazılım programı sayesinde kullanacaktır. Bu elektronik para çantası ile müşteri, banka ve satıcı ile haberleşir. Müşterinin ayrıca Deutsche Bank 24'te, normal banka havalesi ile kendi şahsi cari hesabından para havale ederek yükleyebileceği bir ecash hesabı mevcuttur. Ecash hesabından müşteri, elektronik paraları çekebilir, para yatırabilir veya bu paraları ödeme amacıyla 58 ilgili satıcıya gönderebilir. Ecash hesabının idare edilmesi, elektronik paraların verilmesi ve paraların gerçek olduğunun garanti edilmesi konusunda sanal banka yetkilidir. Bu sistemin en büyük avantajı sağladığı yüksek güvenlik standardıdır. Para meblağının havalesi bakımından çok az risk söz konusudur. Ayrıca müşterinin kişisel bilgilerinin korunması da garanti edilmiştir. Ecash ile online ödemeler yapabilmek için, müşterinin bir cari hesabı, Deutsche Bank 24 nezdinde ayrı bir ecash hesabı ve ayrıca kendi bilgisayarına bir ecash-elektronik para çantasının yüklenmiş olması gerekmektedir. Ecash müşterinin internette yapacağı ödemelerin daha rahat, kolay ve güvenli olmasını sağlayan bir elektronik çantadır. Ecash şu şekilde işlemektedir: Müşterinin cari hesabının borçlandırılması karşılığında şu an için 1.500 Euro’luk üst sınıra kadar istenilen meblağ, müşterinin Deutsche bank 24'teki ecash hesabına havale edilir. Müşteri, bu elektronik paraları ecash hesabından kolayca bilgisayarına yükleyebilecek ve böylece internette alış veriş yapabilecektir. Ecash'in sağladığı faydaları şu şekilde sıralayabiliriz: • Ecash'de kullanılan şifreleme teknolojisi en yeni standartlara dayanmaktadır ve uzmanlar tarafından dünya çapında kabul edilmektedir. • Ecash'i kullanmak için ayrıca (kart terminali veya kart okuma aleti gibi) bir donanıma ihtiyaç yoktur. Ecash esas itibariyle nakit para ile yapılan ödeme gibi işlemektedir. Yani müşteri karşı tarafa kişisel bilgilerini göndermeyeceği için, müşterinin alış veriş işlemi analiz edilemeyecektir. Diğer bir ifade ile ecash’in en mükemmel özelliği, ödeme işleminin seyrinin tamamen anonim olmasıdır. İhraç bankası dahi, onay işlemi sırasında bu ecash değerlerini esasen kime verdiğini bilemeyecektir. Banka sadece "double spending check" işlemi çerçevesinde, bu değerlerin kendisine ait olup olmadığını ve şimdiye kadar kullanılıp kullanılmadığını tespit edebilecektir. Bu anonimlik "kör imza" ile sağlanmaktadır. Ecash ile alış veriş yapmak her zaman mümkündür (İnternette satın alınmak istenen malın bulunduğu web sayfasında, istenilen ürün seçilir. Ecash işaretli buton tıklanır ve ödeme hemen yapılır. İstenen ürün elektronik formdaysa - örneğin; bilgi veya 59 yazılım gibi - ödeme işlemi gerçekleştikten hemen sonra müşteri, ağ üzerinden istediği ürünü satın almış olur. Diğer ürünler ise, satıcı tarafından genel olarak posta yoluyla gönderilmektedir). Ecash lisansına sahip bir banka ile çalışan müşteri için, işlem sırasında artık tekrar banka ile bağlantı kurmaya gerek olmayacaktır. Ecash'in diğer bir önemli özelliği de ödemenin hemen yapılabilmesidir. Yani satıcı ücretini hemen alır. Eğer müşteri ödemesi gereken meblağdan daha fazla miktarda bir ödeme yapmışsa, elektronik madeni paralar herhangi bir problem olmadan doğrudan doğruya müşterinin ecash-elektronik çantasına tekrar havale edilecektir [40]. 5.3.1. Ecash ile Ödeme İşleminin Seyri Ecash ile ödemeler derhal ve onay verme giderleri söz konusu olmaksızın gerçekleşmektedir. Ecash bu yüzden küçük meblağların ödenmesi açısından da ekonomiktir. Müşteri, tıpkı nakit para ile yapılan ödemelerde olduğu gibi tamamen anonim kalmaktadır. Müşteriye, Deutsche Bank 24 tarafından ücretsiz bir ecash hesabı açılır. Müşteriye ayrıca, kendi bilgisayarı üzerinden ödeme işlemi yapmasını sağlayacak, elektronik çanta olarak adlandırılan bir yazılım da verilecektir. Müşterinin talebi üzerine ecash değer birimleri ihraç edilirse, ilgili meblağ müşterinin cari hesabından indirilir ve bankanın takas hesabı olarak adlandırılan havuz hesabına aktarılır. Bundan sonra müşterinin, ecash ile internette işlem yapabilmesi için, cari hesabından ecash hesabına para havale etmesi gerekecektir. Müşteri ecash hesabından, istediği meblağı madeni para formunda kendi elektronik çantasına yükleyebilecektir. Bu andan itibaren, müşteri dilediği zaman bilgisayarındaki bu elektronik paralar üzerinde tasarruf edebilir ve bankadan bağımsız olarak internetteki ödeme işlemlerini halledebilir. Müşteri, Ecash işaretini gördüğü her internet sayfasından alış veriş yapabilir. Alım işlemi sırasında ödeme doğrudan doğruya müşterinin elektronik para çantası üzerinden gerçekleştirilmektedir. Bir ödeme işlemi sırasında madeni paralar, müşterinin bilgisayarından satıcıya gönderilmektedir. Ecash değer birimleri satıcının bilgisayarında kopyalanmaz. Satıcı, bu paraları hemen online teyit için Deutsche Bank 24'e iletecektir. Elektronik paralar banka 60 tarafından, sadece bir defa kullanılıp kullanılmadıklarının tespiti bakımından bir kontrole tabi tutulur. Banka sonucu satıcıya bildirir. Elektronik paralar her iki testi de başarıyla geçerlerse, paralar hemen satıcı hesabına alınarak kaydedilecektir. Her bir değer birimi sadece bir defa yaratılır ve ödeme zamanında da kullanılmakla sona erer. Bu suretle ecash, elektronik paraya hayali bir tedavül kabiliyeti tanımaktadır. Elektronik değer birimleri kendisine gönderilen satıcının, ihraç bankasında ecash hesabı yoksa veya satıcının hemen yeni ecash değerlerine ihtiyacı varsa, tasdik zamanında çözülen her bir değer için yeni bir değer yaratılır ve satıcıya gönderilir. Burada tamamen yeni ve aynı şekilde sadece bir defa verilen seri numaraları söz konusudur. Ancak bu tür bir sanal tedavül kabiliyetinin mümkün olup olmadığı, nihai olarak lisans sahibi bankaya bağlıdır. Deutsche Bank’ın sistemi bunu öngörmemektedir [40]. 5.4. Elektronik Oylama için Uygulama Örneği Bu kısımda, Schneir [17] tarafından verilen bir protokol ile kör sayısal imza protokolünün elektronik oylama için nasıl uygulanacağı gösterilmiştir. Protokolde oy kullanacak kişi olan Ayşe ile oyu sayacak olan Merkezi Oy Sayma Sistemi (MOSS) olmak üzere iki taraf vardır. Oyların “Evet” ve “Hayır” olarak kullanılacağı varsayılsın. Elektronik oylama protokolü kayıt olma ve oylama olarak iki kısıma ayrılmıştır:. Kayıt olma Ayşe iki adet oy pusulası oluşturur, B1 ve B2 – bunlar seri numaralarından ve oylama ile ilgili bazı bilgilerden oluşmaktadır. Bunun yanında, B1 “Evet” oyunu ve B2 de “Hayır” oyunu taşımaktadır. Ayşe B1 ve B2 oy pusulalarını körleştirir ve bunları MOSS’ye yollar. MOSS veri bankasını kontrol ederek Ayşe’nin daha önce oy kullanmadığından emin olduktan sonra körleştirilmiş oy pusulalarını imzalayarak Ayşe’ye geri yollar. Oylama Ayşe körleştirmeyi giderir ve şimdi MOSS tarafından imzalanmış olan geçerli iki oyu vardır. 61 Ayşe oyunu seçer (“Evet” veya “Hayır”) ve MOSS’nin imzası ile birlikte, oy pusulası/imza çiftini MOSS’nin açık anahtarını kullanarak şifreler. Ayşe oyunu (şifrelenmiş oy pusulası/imza çiftini) MOSS’ye yollar. MOSS gelen şifreli oy pusulası/imza çiftini deşifre eder ve oy pusulasındaki seri numarasını, bu oyun daha önce kullanılıp kullanılmadığını tespit etmek için, veri tabanından kontrol eder. Bu kontrolden geçerse, MOSS oyu geçerli sayarak mevcut sayıma ekler, seri numarasını saklar ve veritabanına kaydeder. Seçimin sonunda MOSS sonuçlarla birlikte her seri numarasına karşılık gelen oyu yayınlar. 5.5. J. L. Camenisch‘in Kör Sayısal İmza Modeli [35] D.Chaum’un kör sayısal imza modelinin güvenliği asal çarpanlara ayırma probleminin zorluğuna dayanırken, J.L.Camenisch’in modelinin güvenliği ayrık logaritma probleminin zorluğuna dayanmaktadır. Temel olarak DSA’yı referans almaktadır ve DSA’da yapılan değişikliklerle oluşturulmuştur. Model Chaum’un modelinde olduğu gibi beş aşamadan oluşmaktadır: ilklendirme, körleştirme, imzalama, körleştirmeyi giderme ve doğrulama. İlgili prosedürler aşağıda verilmiştir. Aşağıdaki prosedürler DSA’da yapılan değişikliklerle elde edilmiş kör sayısal imza versiyonudur. 5.5.1. İlklendirme aşaması: İmzalayıcı rastgele büyük bir p asal sayısını, p-1’in bir asal çarpanı olan q sayısını ve Zp alanından q sayısından küçük bir g sayısını seçer. İmzalayıcının gizli anahtarı Zq alanından seçilmiş rastgele bir x sayısıdır ve ilgili açık anahtarı ise y = gx (mod p) dir. Bunlara ek olarak, imzalayıcı imzalama servisini sağlayabilmek için her bir talebe karşılık rastgele bir k tamsayısı seçer ve r’ = gk (mod p) yi hesaplar. Daha sonra OBEB(r’, q) = 1 koşulunu kontrol eder. Eğer koşul sağlanıyorsa r’ sayısını istemciye yollar. 5.5.2. İstemci aşaması: İstemci rastgele a ve b tamsayılarını seçer. Ardından r yi ve m‘ nü hesaplar: r = (r’)a gb (mod p) 62 m’ = amr’r -1 (mod q) Burada m’ körleştirilmiş mesajdır. Daha sonra istemci körleştirilmiş mesajı imzalanmak üzere imzalayıcıya gönderir. 5.5.3. İmzalama aşaması: İmzalayıcı körleştirilmiş m’ mesajını aldıktan sonra kör sayısal imzayı s’ şu şekilde hesaplar ve istemciye geri yollar: s' = xr’ + km’ (mod q) 5.5.4. Körleştirmenin giderilmesi aşaması: İstemci, s’ kör sayısal imzasını aldıktan sonra s’ üzerindeki körleştirmeyi şu şekilde giderir ve s sayısal imzasını elde eder: s = s’r(r’)-1 + bm (mod q) (r, s) ikilisi m mesajına ait sayısal imzadır. 5.5.5. Doğrulama aşaması: İlgili parametrelere sahip herhangi bir taraf şu eşitliği kontrol ederek imzanın geçerliliğini doğrulayabilir: gs = y r * r m (mod p) 5.6. Bu Tezde Geliştirilen Kör Sayısal İmza Modeli Bu model J. L. Camenisch‘in kör sayısal imza modelinin ECDSA(Eliptik Eğri Sayısal İmza Algoritması)’ya uyarlanması ile elde edilmiştir. Protokol şu şekildedir: 5.6.1. İlklendirme ve ECDSA için Anahtar Çifti Oluşturma: İmzalayıcı tarafından D = (q, FR, a, b, G, n, h) eliptik eğri alan parametreleri belirlenir. İmzalayıcının imzalama servisini sağlayabilmesi için her bir talebe karşılık rastgele bir k tamsayısını seçmesi gerekir. k tamsayısı seçildikten sonra R’ = kG = (x1, y1) ve r’ = x1 mod n 63 hesapları yapılır. Daha sonra r’ ≠ 0 koşulu kontrol edilir. Eğer koşul sağlanıyorsa R’ noktası istemciye yollanılır. Eğer koşul sağlanmıyorsa yeni bir k tamsayısı bulunarak işlem tekrarlanılır. İmza sahibi olacak bir Y kişisinin anahtarlarının bulunabilmesi için şu adımlar izlenir: 1. [1, n-1] aralığından rastgele bir d tamsayısı seçilir. 2. Q = dG noktası hesaplanılır. Bu durumda imza sahibinin açık anahtarı Q noktası, gizli anahtarı ise d tam sayısı olur. 5.6.2. ECDSA ile Mesajın Körleştirilmesi: X kişisine ait bir m mesajının körleştirilebilmesi için ilk olarak Y’nin D = (q, FR, a, b, G, n, h) eliptik eğri alan parametreleri elde edilir. Ardından şu hesaplamalar yapılır: 1. R’ = ( x1’ , y1’ ) 2. r’ = x1’ mod n 3. [1, n-1] aralığından rastgele A ve B tamsayıları seçilir. 4. R = AR’ + BG = (x1 , y1) 5. r = x1 mod n 6. m’ = A H(m) r’ r -1 mod n H özet fonksiyonu olup, SHA-1 algoritmasının kullanılması önerilmektedir. Bu durumda m mesajının sahibi olan X kişisinin gizli parametreleri A ve B tam sayıları olur. Körleştirilmiş mesaj da m’ olur, bakınız Şekil 14. 5.6.3. ECDSA ile İmzalama: X kişisine ait m’ körleştirilmiş mesajını imzalayabilmesi için Y kişisi tarafından şu adımlar izlenilir: 1. s’ = ( dr’ + km’ ) mod n hesabı yapılır. 64 Böylece Y nin m’ mesajı için imzası s’ olur, bakınız Şekil 14. Şekil 14 Geliştirilen kör sayısal imzalama modeli – körleştirme ve imzalama safhaları 5.6.4. ECDSA ile Körleştirmenin Giderilmesi Y nin m’ mesajı üzerindeki s’ imzasından m mesajına ait (s, R) imzasını elde etmek için X kişisi tarafından şu adımlar izlenilir: 1. R’ = ( x1’ , y1’ ) hesaplanılır. 2. r’ = x1’ mod n hesaplanılır. 65 3. r’ ve s’ nün [1, n-1] aralığında olduğu doğrulanır. 4. s = ( s’ r (r’)-1 + BH(m) ) mod n 5. R = AR’ + BG = (x1 , y1) hesaplanılır. hesaplanılır. Böylece Y nin m mesajına ait (s, R) imzası elde edilmiş olunur Şekil 15. 5.6.5. ECDSA ile İmza Doğrulama: Y nin m mesajına ait (s, R) imzasını doğrulayabilmek için herhangi bir Z kişisi tarafından Y nin D = (q, FR, a, b, G, n, h) eliptik eğri alan parametreleri ile Q açık anahtarının aslına uygun kopyaları elde edilir. Daha sonra şu adımlar izlenilir: 1. R = (x1 , y1) 2. r = x1 mod n 3. u1 = sG mod n hesaplanılır. 4. u2 = rQ + H(m)R mod n hesaplanılır. 5. Eğer u1 = u2 koşulu sağlanıyorsa imza kabul edilir, aksi halde imza reddedilir, bakınız Şekil 15. Şekil 15 Geliştirilen kör sayısal imzalama modeli– körleştirmenin kaldırılması ve elde edilen sayısal imzanın doğrulanması safhaları 66 5.6.6. Doğrulama Aşamasının İspatlanması (sG) mod n denkleminde, s = s’ r (r’)-1 + BH(m) kullanılarak, (sG) mod n = ( s’ r (r’)-1 + B H(m) )G mod n elde edilir. Daha sonra s’ = ( dr’ + km’ ) kullanılarak, (sG) mod n = ( (dr’ + km’) r (r’)-1 + BH(m) )G mod n elde edilir. Bu denklemde de m’ = A H(m) r’ r -1 kullanılarak, (sG) mod n = { (dr’ + k [A H(m) r’ r -1] )r (r’)-1 + B H(m) }G mod n elde edilir. Bu denklem açılırsa ve (dG = Q) ile (R’ = kG) yerlerine konulursa, (sG) mod n = (rdG + kGAH(m) + BH(m)G) mod n = (rQ + R’AH(m) + BH(m)G) mod n (sG) mod n = (rQ + H(m) (AR’ + BG)) elde edilir. Bu denklemde de (R = AR’ + BG) kullanılarak, (sG) mod n = (rQ + H(m)R) mod n elde edilmiş ve doğrulama aşamasının uygun bir şekilde oluşturulduğu gösterilmiş olunur. 67 6. UYGULAMALAR ve DEĞERLENDİRMELER 6.1. D.Chaum’un Kör Sayısal İmza Modelinin Uygulaması D.Chaum’un RSA ile geliştirdiği kör sayısal imza protokolünün yazılım uygulaması Borland C++ programı kullanılarak yapılmıştır. Uygulamada yüksek hassasiyet içeren aritmetik işlemleri tamamlayabilmek için Shamus yazılım firması tarafından geliştirilen MIRACL yazılım kütüphanesinin 4.8’inci sürümü kullanılmıştır. [34]. Bu kütüphane akademik çalışmalarda kullanılmak üzere, ücretsiz olarak kullanıma açılmıştır. Ticari uygulamalar içinse firma ücret talebinde bulunmaktadır. 6.1.1. İlklendirme Aşaması Uygulamada ilk olarak RSA için gerekli olan p ve q asal sayıları, olasılıksal asallık testi kullanılarak hesaplanmaktadır. Bulunan asal sayılar 81 ondalık basamak uzunluğundadırlar. Bunların çarpımı olan n = p*q sayısı ise 162 ondalık basamak uzunluğundadır. n’nin ikillik uzunluğu ise 400’dür. Daha sonra φ = (p-1)*(q-1) hesaplanır. Ardından n’den küçük olan e,d,r ve rp sayıları bulunur. Bu sayıların kriterleri sağlayıp sağlamadığı e * d ≡ 1 mod(φ) r * rp ≡ 1 mod(n) hesapları ile kontrol edilir. Parametrelerin hesaplanmasının ardından ilk olarak körleştirilecek olan m mesajı dosyadan okunur (bu örnekte banknot.txt), bakınız Şekil 16 ve Şekil 17. Bu mesajın SHA-1 özeti alınır ve *.sha uzantısı olacak şekilde kaydedilir(bu örnekte banknot.sha), bakınız Şekil 18. m' = SHA-1 (m) Bulunan parametrelerle birlikte mesajın özeti ekranda gösterilir, bakınız Şekil 19. 68 Şekil 16 m mesajını seçmesi için kullanıcıya sunulan pencere Şekil 17 Körleştirilerek imzalanacak olan m mesajı 69 Şekil 18 m mesajının SHA-1 özetini kaydetmesi için kullanıcıya sunulan pencere 70 Şekil 19 Bulunan parametrelerin ve m’ mesaj özetinin kullanıcıya gösterilmesi 6.1.2. Körleştirme Aşaması Bu aşamada kullanıcıdan körleştirmek istediği mesajı seçmesi için bir pencere açılır (bu örnekte banknot.sha), bakınız Şekil 20. m mesajının SHA-1 özeti olan H(m), m’ = H(m)* re mod(n) işlemi ile körleştirilir. Ardından kullanıcıdan körleştirilmiş mesaj özetini (m’) kaydetmesi için bir pencere açılır, bakınız Şekil 21. Kaydedilen dosya *1.bds uzantısı ile kaydedilir (bu örnekte banknot1.bds). Bütün bu işlemlerin ardından körleştirilen mesaj özeti (m’) ekranda kullanıcıya gösterilir, bakınız Şekil 22. Şekil 20 Körleştirmek istenilen mesaj özetinin seçilmesi 71 Şekil 21 Körleştirilen mesaj özetinin (m’) kaydedilmesi Şekil 22 Körleştirilen mesaj özetinin (m’) ekranda kullanıcıya gösterilmesi 72 6.1.3. İmzalama Aşaması Kullanıcıdan imzalanılacak olan, körleştirilmiş mesaj özetini seçmesi için bir pencere açılır (bu örnekte banknot1.bds), bakınız Şekil 23. Ardından körleştirilmiş mesaj özeti s' = (m’)d mod(n) işlemi ile imzalanır. Kullanıcıdan körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nü kaydetmesi için bir pencere açılır, bakınız Şekil 24. Kaydedilen dosya *2.bds uzantısı ile kaydedilir (bu örnekte banknot2.bds). Bütün bu işlemlerin ardından körleştirilen mesaj özetinin (m’) imzası olan (s’) ekranda kullanıcıya gösterilir, bakınız Şekil 25. Şekil 23 İmzalanılacak olan körleştirilmiş mesaj özetinin (m’) seçilmesi 73 Şekil 24 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün kaydedilmesi Şekil 25 Körleştirilen mesaj özetinin (m’) imzası olan (s’) ekranda gösterilmesi 74 6.1.4. Körleştirmenin Giderilmesi Aşaması Kullanıcıdan körleştirmenin giderileceği, körleştirilmiş mesaj özetinin imzasının (s’) bulunduğu dosyayı seçmesi için bir pencere açılır (bu örnekte banknot2.bds), bakınız Şekil 26. Ardından körleştirilmiş mesaj özetinin (m’) imzası olan (s’) ne uygulanan, s = (s’) * r -1 mod(n) işlemi ile r körleştirme katsayısı giderilerek m mesajının özetine ait s imzası elde edilmiş olunur. Kullanıcının, m mesajının özetine ait s imzasını kaydetmesi için bir pencere açılır, bakınız Şekil 27. Kaydedilen dosya *3.bds uzantısı ile kaydedilir(bu örnekte banknot3.bds). Bütün bu işlemlerin ardından m mesajının özetine ait s imzası ekranda kullanıcıya gösterilir, bakınız Şekil 28. Şekil 26 Körleştirmenin giderileceği, körleştirilmiş mesaj özetinin imzasının (s’) bulunduğu dosyanın seçilmesi 75 Şekil 27 m mesajının özetine ait s imzasının kaydedilmesi Şekil 28 m mesajının özetine ait s imzasının ekranda gösterilmesi 76 6.1.5. İmzanın Doğrulanması Kullanıcıdan m mesajının özetine ait s imzasının doğrulanabilmesi için, s imzasının bulunduğu dosyayı seçmesi için bir pencere açılır (bu örnekte banknot3.bds), bakınız Şekil 29. m mesajının özetine ait s imzasının doğrulanması için ilk önce, H(m)’ = se mod(n) işlemi ile s imzasından m mesajının özetinin bir kopyası elde edilir. Kullanıcının s imzasından elde ettiği m mesajının özetini H(m)’ kaydetmesi için bir pencere açılır, bakınız Şekil 30. Kaydedilen dosya *4.bds uzantısı ile kaydedilir (bu örnekte banknot4.bds). Ardından m mesajının ilk halinin (banknot.txt) SHA-1 özeti alınarak H(m) bulunur ve elde edilen H(m)’ mesaj özeti ile karşılaştırılır. Eğer değerler eşitse imza doğrulanır, aksi halde imza reddedilir. H(m) ile H(m)’ ve imza doğrulanma bilgileri ekranda kullanıcıya gösterilir, bakınız Şekil 31. Şekil 29 Kullanıcının s imzasının bulunduğu dosyayı seçmesi 77 Şekil 30 Kullanıcının s imzasından elde ettiği m mesajının özetini H(m)’ kaydetmesi Şekil 31 H(m) ile H(m)’ ve imza doğrulanma bilgilerinin ekranda gösterilmesi 78 6.1.6. Farklı bir İmza ile Doğrulama Aşamasının Geçilmeye Çalışılması Şimdi bir önceki adıma geri dönüp, s = (H(m))d imzasını ele alalım: Şekil 32 m mesajına ait s imzası s imzasında yapılacak 1 ikillik değişikliğin sonucunu gözlemlemek için “banknot3.bds” dosyasında şu değişikliği yapalım (116 = 00012 ve 316 = 00112), bakınız Şekil 32 ve Şekil 33. Yapılan değişiklik sonucunda elde edilen H(m)’ mesaj özeti ile m mesajının (banknot.txt) SHA-1 özeti H(m) karşılaştırılmıştır. Sonuç olarak karşılaştırılan değerler eşit olmadığı için imza reddedilmiştir, bakınız Şekil 34. 79 Şekil 33 m mesajına ait s imzasında 1 ikillik değişikliğin yapılması Şekil 34 s imzasında yapılan 1 ikillik değişikliğin sonucunda imzanın reddedilmesi 80 6.2. Bu Tezde Geliştirilen Kör Sayısal İmza Modelinin Uygulaması Bu tezde ECDSA ile geliştirilen kör sayısal imza protokolünün yazılım uygulaması Borland C++ programı kullanılarak yapılmıştır. Bu uygulamada da D.Chaum’un modelinin uygulamasında olduğu gibi yüksek hassasiyet içeren aritmetik işlemler bulunduğu için MIRACL yazılım kütüphanesi kullanılmıştır [34]. 6.2.1. İlklendirme Aşaması Uygulamada ilk olarak kullanıcıdan ECDSA’da kullanılacak olan, asal alanda tanımlı NIST eliptik eğrilerinden birini (P-192, P-224, P-256, P-384, P-521) seçmesi istenir, bakınız Şekil 35. Seçilen eliptik eğriye ait p, a, b, n, x, y ve q parametreleri ilgili dosyadan yüklenir. Ardından Bölüm-5.6.1’de anlatılan prosedürlere uygun olarak imza sahibinin açık anahtarı olan Q noktası ve gizli anahtarı olan d tam sayısı bulunur. Açık anahtar “public.ecs”, gizli anahtar ise “private.ecs” dosyasına kaydedilir. Ardından herbir imzalama işleminde imzalayıcı tarafından yeniden üretilecek olan açık parametresi R’ noktası ile gizli parametresi k tam sayısı bulunur. Eliptik eğri parametreleri, imza sahibinin hesaplanan açık ve gizli anahtarları ile açık ve gizli parametreleri kullanıcıya gösterilir, bakınız Şekil 36. Şekil 35 NIST eliptik eğrilerinden birini seçmesi için kullanıcıya sunulan pencere 81 Şekil 36 Bulunan eliptik eğri parametrelerinin ve anahtarların kullanıcıya gösterilmesi 6.2.2. Körleştirme Aşaması Bu aşamada kullanıcıdan körleştirmek istediği mesajı seçmesi için bir pencere açılır (bu örnekte banknot.txt), bakınız Şekil 37. Daha sonra m mesajının SHA-1 özeti H(m) bulunur. Mesaj sahibinin gizli parametreleri olan A ve B tam sayıları ile açık parametresi olan R noktası Bölüm-5.6.2’deki prosedürlere uygun olarak bulunur. m mesajının SHA-1 özeti olan H(m), m’ = A H(m) r’ r -1 mod n işlemi ile körleştirilir. Ardından kullanıcıdan körleştirilmiş mesaj özetini (m’) kaydetmesi için bir pencere açılır, bakınız Şekil 38. Kaydedilen dosya *.bds uzantısı ile kaydedilir (bu örnekte banknot.bds). Bütün bu işlemlerin ardından körleştirilen mesaj özeti (m’) ekranda kullanıcıya gösterilir, bakınız Şekil 39. 82 Şekil 37 m mesajını seçmesi için kullanıcıya sunulan pencere Şekil 38 Körleştirilen mesaj özetinin (m’) kaydedilmesi 83 Şekil 39 Körleştirilen mesaj özetinin (m’) ekranda kullanıcıya gösterilmesi 6.2.3. İmzalama Aşaması Kullanıcıdan imzalanılacak olan, körleştirilmiş mesaj özetini seçmesi için bir pencere açılır (bu örnekte banknot.bds), bakınız Şekil 40. Ardından körleştirilmiş mesaj özeti s’ = ( dr’ + km’ ) mod n işlemi ile imzalanır. Kullanıcıdan körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nü kaydetmesi için bir pencere açılır, bakınız Şekil 41. Kaydedilen dosya *.ecs uzantısı ile kaydedilir (bu örnekte banknot.ecs). Bütün bu işlemlerin ardından körleştirilen mesaj özetinin (m’) imzası olan (s’) ekranda kullanıcıya gösterilir, bakınız Şekil 42. 84 Şekil 40 İmzalanılacak olan körleştirilmiş mesaj özetinin (m’) seçilmesi Şekil 41 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün kaydedilmesi 85 Şekil 42 Körleştirilmiş mesaj özetinin (m’) imzası olan (s’) nün ekranda gösterilmesi 6.2.4. Körleştirmenin Giderilmesi Aşaması Kullanıcıdan körleştirmenin giderileceği, körleştirilmiş mesaj özetinin imzasının (s’) bulunduğu dosyayı seçmesi için bir pencere açılır (bu örnekte banknot.ecs), bakınız Şekil 43. Ardından körleştirilmiş mesaj özetinin (m’) imzası olan (s’) ne uygulanan, s = ( s’ r (r’)-1 + Bm ) mod n işlemi ile körleştirme giderilerek m mesajının özetine ait s imzası elde edilmiş olunur. Kullanıcının, m mesajının özetine ait s imzasını kaydetmesi için bir pencere açılır, bakınız Şekil 44. Kaydedilen dosya *_unb.ecs uzantısı ile kaydedilir(bu örnekte banknot_unb.ecs). Bütün bu işlemlerin ardından m mesajının özetine ait (s, R) imzası ekranda kullanıcıya gösterilir, bakınız Şekil 45. 86 Şekil 43 Körleştirmenin giderileceği, körleştirilmiş mesaj özetinin (m’) imzasının (s’) bulunduğu dosyanın seçilmesi Şekil 44 m mesajının özetine ait (s, R) imzasının kaydedilmesi 87 Şekil 45 m mesajının özetine ait (s, R) imzasının ekranda gösterilmesi 6.2.5. İmzanın Doğrulanması Kullanıcıdan m mesajının özetine ait (s, R) imzasının doğrulanabilmesi için, s imzasının bulunduğu dosyayı seçmesi için bir pencere açılır (bu örnekte banknot_unb.ecs), bakınız Şekil 46. m mesajının özetine ait (s, R) imzasının doğrulanabilmesi için ilk olarak eliptik eğri parametreleri ilgili dosyadan yüklenilir ve u1 = sG mod(n) hesaplanılır. Ardından “public.ecs” dosyasından imza sahibinin Q açık anahtarı okunur ve u2 = rQ + H(m)R mod n hesaplanılır. Ardından u1 ve u2 değerleri karşılaştırılır. Eğer değerler eşitse imza doğrulanır, aksi halde imza reddedilir. u1 ile u2 ve imza doğrulanma bilgileri ekranda kullanıcıya gösterilir, bakınız Şekil 47. 88 Şekil 46 Kullanıcının (s, R) imzasının bulunduğu dosyayı seçmesi Şekil 47 sG ile (rQ + H(m)R) ve imza doğrulanma bilgilerinin ekranda gösterilmesi 89 6.2.6. Farklı bir İmza ile Doğrulama Aşamasının Geçilmeye Çalışılması Şimdi bir önceki adıma geri dönüp, (s, R) imzasını ele alalım. Şekil 48 m mesajına ait (s, R) imzası (s, R) imzasında yapılacak 1 ikillik değişikliğin sonucunu gözlemlemek için “banknot_unb.ecs” dosyasında şu değişikliği yapalım (116 = 00012 ve 316 = 00112), bakınız Şekil 48 ve Şekil 49. Şekil 49 m mesajına ait (s, R) imzasında 1 ikillik değişikliğin yapılması Yapılan değişiklik sonucunda elde edilen sG değeri ile rQ + H(m)R değeri karşılaştırılmıştır. Sonuç olarak karşılaştırılan değerler eşit olmadığı için imza reddedilmiştir, bakınız Şekil 50. 90 Şekil 50 (s,R) imzasında yapılan 1 ikillik değişikliğin sonucunda imzanın reddedilmesi 6.3. Performans Analizi Bu kısımda, uygulaması yapılan D.Chaum’un ve İsmail Bütün’ün kör sayısal imza protokollerinin şu aşamalar için performans analizleri yapılmıştır: • Mesajın körleştirilmesi aşaması • İmzalama aşaması • Körleştirmenin giderilmesi aşaması • Doğrulama aşaması Performans analizleri için Borland C++’da bulunan clock komutu kullanılmıştır. Bu komut ile belirtilen iki olay (event) arasında işlemcide harcanan süreyi saniye cinsinden verir. Çizelge 7‘de Intel Centrino Pentium 1733 Mhz işlemcili ve 512 Mb RAM’e sahip bir sistemde, aynı mesaj için belirtilen algoritmalarda işlemci tarafından harcanan süreler (sn cinsinden) verilmiştir. 91 Çizelge 7 Aynı mesaj için belirtilen işlemlerde işlemci tarafından harcanan süreler (sn cinsinden) Algoritma RSA ECDSA NIST192 ECDSA NIST224 ECDSA NIST256 ECDSA NIST384 ECDSA NIST521 Mesajın Körleştirilmesi 0.5342 0.0470 0.1374 0.0560 0.1498 0.3310 İmzalama 0.5376 0.0152 0.0500 0.0154 0.0154 0.0312 Körleştirmenin giderilmesi 0.0844 0.0154 0.0934 0.0158 0.0314 0.0496 Doğrulama 0.5220 0.0498 0.1752 0.0876 0.2188 0.3688 Mesajın körleştirilmesi, imzalama, körleştirilmenin giderilmesi ve son olarak doğrulama aşamalarının tümünde en hızlı algoritma NIST192 eğrisini kullanan ECDSA kör sayısal imzalama algoritması olmuştur; bakınız Şekil 51, Şekil 52, Şekil 53 ve Şekil 54. Mesajın körleştirilmesi, imzalama ve doğrulama aşamalarında en yavaş algoritma RSA kör sayısal imzalama algoritması iken, mesaj belirsizliğinin giderilmesi aşamasında en yavaş algoritma ise NIST224 eğrisini kullanan ECDSA kör sayısal imzalama algoritması olmuştur. Bütün aşamalar birlikte değerlendirildiğinde NIST192 eğrisini kullanan ECDSA kör sayısal imzalama algoritmasının en iyi performans değerine sahip olduğu, RSA kör sayısal imzalama algoritmasının ise en kötü performans değerine sahip olduğu görülmüştür; bakınız Şekil 55. Şekil 51 Mesajın körleştirilmesi aşaması için işlemcide harcanan süreler (sn) 92 Şekil 52 İmzalama aşaması için işlemcide harcanan süreler (sn) Şekil 53 Körleştirmenin giderilmesi aşaması için işlemcide harcanan süreler (sn) 93 Şekil 54 Doğrulama aşaması için işlemcide harcanan süreler (sn) Şekil 55 Farklı algoritmalardaki işlemlerin birlikte değerlendirilmesi 94 Kullanılan algoritmaların anahtar uzunluklarına bakılacak olunursa; Bölüm 2.4’de gösterildiği gibi 155 ikillik ECC algoritmasının çözüm zorluğu, yaklaşık olarak 1024 ikillik RSA algoritmasının çözüm zorluğuna denktir. Buna göre incelenen algoritmaların RSA algoritmasına göre eşleştirilmiş anahtar uzunlukları da Çizelge 8‘de gösterilmiştir. Bu kıstaslara göre kullanılan algoritmaların güvenirlik sıralaması da yine Çizelge 8‘de gösterilmiştir. Verilen anahtar uzunluğu - güvenlik seviyesi bilgilerine ait grafik ise Şekil 56‘da gösterilmiştir. Çizelge 8 Aynı mesaj için belirtilen algoritmalarda kullanılan anahtarların ikillik uzunluklarının ve güvenlik seviyelerinin karşılaştırılması Algoritma Anahtar Uzunluğu (ikilllik) RSA Anahtar Eşleniği (ikillik) RSA ECDSA NIST192 ECDSA NIST224 ECDSA NIST256 ECDSA NIST384 ECDSA NIST521 400 192 224 256 384 521 400 1728 2464 3584 7680 14067 Kırmak için gerekli süre (MIPS yıl) 103 1012 1021 1023 1035 1069 Bu bilgiler ışığında NIST521 eğrisini kullanan ECDSA kör sayısal imzalama algoritmasının en iyi anahtar uzunluğu-güvenlik seviyesi kriterine sahip olduğu görülmektedir. RSA’yı kullanan kör sayısal imzalama algoritmasının ise verilen algoritmalar içerisinde en kötü anahtar uzunluğu-güvenlik seviyesi kriterine sahip olduğu görülmektedir. 95 Şekil 56 Değişik anahtar uzunluklarına ait güvenlik seviyelerinin MIPS cinsinden gösterimi 96 7. SONUÇLAR Belgelerin kişiye özgü hale getirilmesi ve içeriğinin değiştirilememesi, dokümanlarını saklama ihtiyacı bulunan bütün kişi ve kuruluşların talebidir. Yeterli derecede güvenilir bir sayısal imza yöntemi, hukuksal olarak da sayısal imzaların bağlayıcılığının sağlanabilmesi yolundaki süreci hızlandıracaktır. Finansal sistemler ve internet gibi ağ ortamındaki anlaşmalarda kullanılabilecek böylesi güvenilir sayısal imzaların varlığı, daha çok kişi ve kuruluşun sayısal imza kullanma isteğinin oluşmasını sağlayabilir. Eliptik eğri kriptosistemler, güvenlik olanaklarını arttırırken kaynak gereksinimlerini azaltan özellikleriyle geleceğin şifreleme yaklaşımları arasında oldukça çekici bir yerde durmaktadır. Günümüzün artan anahtar büyüklüğü ihtiyaçlarına rağmen, böylesi bir özelliğe hiçbir zaman hayır denilemeyeceği açıktır. Özellikle kaynak sıkıntısı çeken akıllı kartlar, cep telefonları, avuç içi bilgisayarlar gibi cihaz ve donanımlardaki güvenlik uygulamaları için oldukça faydalı bir gelişmedir. İşlemci kapasitesi ve hafıza büyüklüğü gibi kıstaslarda oldukça sınırlı kaynaklara sahip böylesi cihaz ve donanımlar üzerinde ECC kullanan uygulamalar, RSA ve benzeri açık anahtarlı şifreleme algoritmalarını kullanan uygulamalara göre daha az işlemci döngüsüne, daha az hafıza gereksinimi ve daha kısa anahtar uzunlukları ile daha yüksek güvenlik seviyelerine ulaşabilmektedirler. Eliptik eğri kriptosistemleri, e-ticaretin ilerleme sürecinde önemli bir alternatif çözüm olarak kendini hissettirecektir. Çünkü bu sistemler, ikillik başına güvenliği, emsali diğer geleneksel açık anahtarlı şifreleme yöntemlerine göre oldukça arttırmaktadır. Bu yüzden gereksinim duyulan donanım kapasitesi de düşmektedir. Bu özellikle kaynak sıkıntısı yaşanılan durumlarda öne çıkan bir özellik olmaktadır. Böylelikle daha hızlı donanım gerçeklemelerinin oluşturulabilmesi sağlanmaktadır. Eliptik eğri kriptosisitemlerinin bir diğer artısı ise, diğer açık anahtarlı şifreleme sistemleri için bilinen pek çok atak yönteminden etkilenmemeleridir. Bu şifreleme yaklaşımının sayısal imzalar için uygulanmasını sağlayan eliptik eğri sayısal imza algoritması (ECDSA) da, temel olarak günümüzde standartlaşan DSA algoritması ile mantıksal olarak çok farklı bir çizgide durmamaktadır. Bu tez çalışmasında gösterilmeye çalışıldığı gibi etkin ve tatmin edici kör sayısal imzaların oluşturulabilmesinde seçkin bir alternatif olabilir. 97 Günümüzün gelişen haberleşme teknolojileri sayesinde insanlar bankacılık ve benzeri işlemlerini evlerinden dahi çıkmadan internet yolu ile yapabilmektedirler. eticaretin giderek yaygınlaşması ile insanların kontrolsüz internet ağı üzerindeki güvenliklerini arttırabilmek, bunun yanında anonimliklerini de sağlayabilmek için çalışmalar başlatılmıştır. Bu çalışmaların bir ürünü olarak karşımıza D.Chaum tarafından geliştirilen “Kör Sayısal İmza” kavramı ortaya çıkmıştır. Kör sayısal imza kavramının e-ticaret ve e-oylama için birçok uygulaması yapılmıştır. Bu tez çalışmasında da mevcut bulunan kör sayısal imza protokolleri gözden geçirilmiş ve bunlara alternatif olabilecek yeni bir yaklaşım ele alınmıştır. Bölüm 6.2’de yapılan performans ve anahtar uzunluğu - güvenlik analizlerinin ışığında bu tezde geliştirilen ve ECDSA’yı kullanan kör sayısal imza algoritmasının, RSA’yı kullanan D.Chaum’un kör sayısal imza algoritmasına göre daha güvenilir ve daha hızlı olduğu gösterilmiştir. Örneğin NIST192 eğrisi üzerinden 192 ikillik anahtar uzunluklu ECDSA’yı kullanan ve bu tezde geliştirilen kör sayısal imza algoritmasının, 400 ikillik anahtar uzunluklu RSA’yı kullanan D.Chaum’un kör sayısal imza algoritmasına göre 4 kat daha güvenli ve 10 kat daha hızlı olduğu yapılan analizlerde gösterilmiştir, bakınız Şekil 55 ve Şekil 56. Böylelikle bu tezde geliştirilen kör sayısal imza protokolü tercih edildiğinde, ECC’nin diğer açık anahtarlı kriptografi algoritmalarına karşı sahip olduğu bütün avantajları kullanılmış olacaktır. ECC’nin istenen güvenlik seviyesi için daha küçük anahtar büyüklüğü imkânını sunması; daha hızlı kriptografik işlemler, daha az donanım ve yazılım gereksinimi gibi avantajları da beraberinde getirmektedir. Bu avantajlar kaynak kısıntısının bulunduğu durumlar için özellikle daha caziptir. 98 KAYNAKLAR [1] W. Diffie and M. E. Hellman. New directions in cryptography. IEEE Trans. Inform. Theory, IT-22:644-654, November 1976. [2] Ronald L. Rivest, Adi Shamir, and Leonard M. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2):120-126, 1978. [3] T. ElGamal. A public key cryptosystem and signature scheme based on discrete logarithms. In Proc. CRYPTO 84, 1984. [4] C. P. Schnorr. Efficient identification and signatures for smart cards. In G. Brassard, editor, Proc. CRYPTO 89, pages 239-252. Springer-Verlag, 1990. Lecture Notes in Computer Science No. 435. [5] David Chaum. Blind signatures for untraceable payments. In R. L. Rivest, A. Sherman, and D. Chaum, editors, Proc. CRYPTO 82, pages 199-203, New York, 1983. Plenum Press. [6] David Chaum. Blind signature system. In D. Chaum, editor, , Proc. CRYPTO 83, pages 153-153, New York, 1984. Plenum Press. [7] D.Chaum, A.Fiat, and M.Naor. Untraceable electronic cash. In S. Goldwasser, editor, Proc. CRYPTO 88, pages 319-327. Springer-Verlag, 1988. Lecture Notes in Computer Science No. 403. [8] A. Juels, M. Luby, and R. Ostrovsky. Security of blind digital signatures. In Proc. CRYPTO 97, Lecture Notes in Computer Science, pages 150-164. SpringerVerlag, 1997. Lecture Notes in Computer Science No. 1294. [9] David Pointcheval and Jacques Stern. Provably secure blind signature schemes. In M.Y. Rhee and K. Kim, editors, Advances in Cryptology- ASIACRYPT’96, pages 252-265. Springer-Verlag, 1996. Lecture Notes in Computer Science No. 1163. [10] William Stallings. Cryptogarphy and Network Security: Principles and Practice.Prentice Hall, 2003 [11] Elliptic Curve Cryptology, Haziran 2006, www.certicom.com adresinden ulaşılabilir. [12] Koblitz, N. A Course in Number Theory and Cryptography. New York: SpringerVerlag, 1994. [13] Fernandes, A. “Elliptic Curve Cryptography”. Dr. Dobb’s Journal, December 1999. [14] PKI and Contents Protection, Mayıs 2006, www.softforum.co.kr adresinden ulaşılabilir. 99 [15] National Institute of Standards and Technology (NIST). FIPS Publication 180: Secure Hash Standard (SHS), May 11, 1993. [16] Ronald L. Rivest. The MD5 message-digest algorithm. Internet Request for Comments, April 1992. RFC 1321. [17] B. Schneier. Applied Cryptography: Protocols, Algorithms, and Source Code in C. John Wiley & Sons, New York, 1993. [18] Shafi Goldwasser, Silvio Micali, and Ronald L. Rivest. A digital signature scheme secure against adaptive chosen-message attacks. SIAM J. Computing, 17(2):281-308, April 1988. [19] Mihir Bellare and Silvio Micali. How to sign given any trapdoor function. In Proc. 20th ACM Symp. on Theory of Computing, pages 32-42, Chicago, 1988. ACM [20] M. Naor and M. Yung. Universal one-way hash functions and their cryptographic applications. In Proc. 21st ACM Symp. On Theory of Computing, pages 3343, Seattle, 1989. ACM. [21] John Rompel. One-way functions are necessary and sufficient for secure signatures. In Proc. 22nd ACM Symp. On Theory of Computing, pages 387394, Baltimore, Maryland, 1990. ACM. [22] Peter Wayner. Digital Cash: Commerce on the Net. Academic Press, 1996. [23] Mihir Bellare and Philip Rogaway. Random oracles are practical: A paradigm for designing efficient protocols. In First ACM Conference on Computer and Communucations Security, pages 62-73, Fairfax, 1993. ACM. [24] Amos Fiat and Adi Shamir. How to prove yourself: Practical solutions to identification and signature problems. In A.M. Odlyzko, editor, Proc. CRYPTO 86, pages 186-194. Springer-Verlag, 1987. Lecture Notes in Computer Science No. 263. [25] National Institute of Standards and Technology (NIST). FIPS Publication 46-1: Data Encryption Standard, January 22, 1988. Originally issued by National Bureau of Standards. [26] T. Okamoto. Provable secure and practical identification schemes and corresponding signature schemes. In CRYPTO92, pages 31-53. SPVER, 1992. Lecture Notes in Computer Science No. 740. [27] Sloane, N. J. A. and Plouffe, S. The Encyclopedia of Integer Sequences. San Diego, CA: Academic Press, 1995. [28] Burton, D. M. "The Order of an Integer Modulo ," "Primitive Roots for Primes," and "Composite Numbers Having Primitive Roots." §8.1-8.3 in Elementary Number Theory, 4th ed. Dubuque, IA: William C. Brown Publishers, pp. 184205, 1989. 100 [29] Gauss, C. F. §57 in Disquisitiones Arithmeticae. Leipzig, Germany, 1801. Reprinted New Haven, CT: Yale University Press, 1965. [30] Schneier, B Applied Cryptography: Protocols, Algorithms, and Source Code in C, 2nd ed. New York: Wiley, 1996. [31] S. von Solms and D. Naccache, “On blind signature and perfect crime,” Computer and Security, vol. 11, pp. 581-583, 1992. [32] D.Johnson and A.Menezes, “The Elliptic Curve Digital Signature Algorithm (ECDSA)”, February 2000, CORR 99-34, Dept. Of C&O, University of Waterloo, www.cacr.math.uwatreloo.ca adresinden ulaşılabilir. [33] Standard Specifications For Public-Key Cryptography, Mayıs 2006, http://grouper.ieee.org/groups/1363 adresinden ulaşılabilir. [34] Multiprecision Integer and Rational Arithmetic C/C++ Library, Shamus Software Ltd, Temmuz 2006, http://indigo.ie/~mscott/ adresinden ulaşılabilir. [35] Yan-Chi Lai and Min-Shiang Hwang, “A Study on Digital Blind Signature and Its Applications to Electronic Voting and Electronic Cash”, June 2002, Submitted In Partial Fulfillment of the Requirements for the Degree of Master of Science in Information Management at Chaoyang University of Technology, Taiwan [36] M. Brown, D. Hankerson, J. Lopez, and A. Menezes, "Software Implementation of the NIST Elliptic Curves over Primes Fields," Proc. of CT-RSA 2001, LNCS, Vol. 2020, pp. 250--265, Springer-Verlag, 2001. [37] National Institute of Standards and Technology, Digital Signature Standard, FIPS Publication 186-2, February 2000. [38] Zulfikar Amin Ramzan and Ronald L. Rivest, “Group Blind Digital Signatures: Theory and Applications”, May 1999, Submitted to the Department Of Electrical and Computer Science in partial fulfillment of the requirements for the degree of Master of Science in Computer Science and Electrical Engineering at the Massachusetts Institute Of Technology, USA. [39] Kamu Sertifikasyon Merkezi, Ağustos 2006, http://www.kamusm.gov.tr/net/index.jsp adresinden ulaşılabilir. [40] "Elektronik Ödeme Araçları, Elektronik Paranın Merkez Bankasının Para Politikası ve Kara Para Aklama Açısından Değerlendirilmesi", Uluslararası İnternet Hukuku Sempozyumu, 21-22 Mayıs 2001 İzmir, İzmir 2002, s. 219279. 101 8. EKLER DİZİNİ EK 1. SHA-1 ALGORİTMASININ AÇIKLAMASI EK 2. MIRACL KÜTÜPHANESİ 102 EK 1. SHA-1 ALGORİTMASININ AÇIKLAMASI Algoritma girdi olarak 264 bitten küçük mesajları almaktadır ve çıktı olarak 160 bitlik mesaj özetini verir. Girdi mesajı 512 bitlik bloklar halinde işlenmektedir. Mesajın işlenişi şu adımlardan oluşmaktadır: • Adım 1: Eklenti bitlerinin ilavesi. Mesaj uzunluğu 512 moduna göre 448 olacak şekilde (uzunluk ≡ 448 mod 512), mesaja bitler ilave edilir. Mesaj uzunluğu istenilen ölçütte olsa dahi eklenti her zaman ilave edilmektedir. , eklenti bitlerinin uzunluğu 1 ile 512 arasında değişmektedir. Eklenti bitleri, 1 bitini takip eden yeterli sayıdaki 0 bitlerinden oluşmaktadır. • Adım 2: Mesaj uzunluğunun eklenmesi. 64 bitlik bir blok mesaja eklenmektedir ve adım 1 den önceki orijinal mesajın uzunluğunun bilgisini içerir. • Adım 3: MD tampon belleğinin ilklendirilmesi. Ara ve son sonuçları bulundurmak üzere 160 bitlik bir tampon bellek kullanılmaktadır. Tampon bellek 5 adet 32 bitlik yazmaçtan oluşmaktadır (A, B, C, D, E). Bu yazmaçlar aşağıdaki 32 ikillik tamsayılar ile ilklendirilmiştir(16 lık tabanda): A = 67 45 23 01 B = EF CD AB 89 C = 98 BA DC FE D = 10 32 54 76 E = C3 D2 E1 F0 • Adım 4: Mesajın 512 bitlik bloklar halinde işlenmesi. 20 adımlık 4 turdan oluşan kısım algoritmanın kalbidir. Buradaki akış Şekil 57’de gösterilmiştir. 4 turunda benzer yapısı vardır, ancak hepsinde kullanılan ana mantıksal fonksiyon farklıdır ve bunlar f1, f2, f3 ve f4 olarak adlandırılacaktır. 103 Şekil 57 512 ikillik bir bloğun SHA-1 ile işlenmesi [10] Her turda girdi olarak, mevcut işlenmekte olan 512 bitlik bloğu (Yq) ve 160 bitlik tampon bellek değeri olan ABCDE yi alır. Bellek değerini günceller. Ayrıca her turda toplamalar için sabit değer olarak Kt ler kullanılır, 0 ≤ t ≤ 79 olmak üzere t burada 4 tura ait olan toplam 80 adımı temsil etmektedir. Bu K katsayısının 4 tura ait farklı değerleri şöyledir: 0 ≤ t ≤ 19 Kt = 5A827999 20≤ t ≤ 39 Kt = 6ED9EBA1 40 ≤ t ≤ 59 Kt = 8F1BBCDC 60 ≤ t ≤ 79 Kt = CA62C1D6 104 Dördüncü turun (sekseninci adım) çıktısı ile birinci turun girdisi (CVq) mod 232 de toplanarak CVq + 1 elde edilir. • Adım 5: Çıktı. Bütün 512 bitlik (L tane) bloklar işlendikten sonra, Lninci aşamanın sonunda 160 bitlik mesaj özeti üretilmiş olur. SHA-1 de yapılan işlemleri özetleyecek olur isek: CV0 = IV CVq + 1 = TOPLAM32(CVq, ABCDEq) MD CVL = Buradaki terimler şöyledir; IV = adım 3 te tanımlanmış olan ABCDE tampon belleğinin ilk değeri ABCDEq = qnuncu mesaj bloğu işlenirken son turun çıktısı L = adım 2 den sonraki mesajın uzunluğu TOPLAM32 = girişlerdeki 32 bitlik kelime çiftleri ayrı ayrı mod 232 de toplanırlar MD = en son mesaj özeti değeri 105 EK 2. MIRACL KÜTÜPHANESİ MIRACL taşınılabilir bir C kütüphanesidir ve yüksek basamak sayılı aritmetik isteyen bütün durumları kapsayabilecek 100’ü aşkın yordamdan oluşmaktadır. MIRACL yordamlarından bazıları 1. Alt Seviye Yordamlar add Fonksiyon: void add(x,y,z) big x,y,z; Tanım: big formatındaki iki sayıyı toplar. Parametreler: big formatında üç tane sayı; x, y ve z. Çıkışta z=x+y. Dönüş değeri: Yok Kısıtlamalar: Yok Örnek: add(x,x,x); /* Bu x’in de•erini ikiye katlar */ convert Fonksiyon: void convert(n,x) int n; big x; Tanım: Bir tam sayıyı bir big sayı formatına çevirir. Parametreler: Bir n tamsayısı ve big sayı formatındaki x sayısı. Dönüş değeri: Yok Kısıtlamalar: Yok 106 copy Fonksiyon: void copy(x,y) flash x,y; Tanım: big ya da flash formatındaki bir sayıyı diğerine kopyalar. Parametreler: big ya da flash formatındaki iki x ve y sayısı. Çıkışta y=x. Eğer x ve y aynı değişken iseler, herhangi bir işlem yapılmaz. Dönüş değeri: Yok Kısıtlamalar: Yok divide Fonksiyon: void divide(x,y,z) big x,y,z; Tanım: big formatındaki bir sayıyı diğerine böler. Parametreler: big formatındaki üç sayı x, y ve z. Çıkışta z=x/y; x=x mod y. Eğer x ve z aynı değerde iseler sadece bölüm, eğer y ve z aynı değerde iseler sadece kalan geri döndürülür. Dönüş değeri: Yok Kısıtlamalar: x ve y parametreleri birbirinden farklı, y ise sıfırdan farklı olmalıdır. Örnek: divide(x,y,y); x’in y ile bölümünden kalan değer x’e eşitlenir. Bölüm geri döndürülmez. mirexit Fonksiyon: void mirexit() 107 Tanım: Mevcut MIRACL oturumundan sonra gerekli temizliği yaparak dâhili değişkenleri serbest bırakır. Mütakiben mirsys’e çağrı yapılırsa MIRACL sistemi yeniden başlatılır. Parametreler: Yok Dönüş değeri: Yok Kısıtlamalar: mirsys’ten sonra çağırılmalıdır. mirsys Fonksiyon: miracl *mirsys(nd,nb) int nd,nb; Tanım: Mevcut program akışı içerisinde MIRACL sistemini aşağıdaki gibi ilklendirir. Herhangi bir MIRACL yordamı kullanılmadan önce mutlaka çağırılmalıdır. (1) Hata izleme mekanizması başlatılır. (2) herbir big/flash formatındaki sayı için kullanılacak bilgisayar kelime uzunlukları nd ve nb kullanılarak hesaplanır. (3) big sayı formatı için gerekli olan onaltı değişken ilklendirilir. (4) Oturumda kullanılan belirli değişkenler ilklendirilir. (5) Rastgele sayı üreticisi irand(0L) çağrısı ile başlatılır. Parametreler: Herbir big/flash formatındaki sayı için basamak sayısı nd ile sayı tabanı nb. Dönüş değeri: Eğer bütün oturum değişkenlerine ulaşılabiliyorsa, Miracl Oturum İşaretçisi döndürülür. Eğer oturum oluşturmaya yeterli bellek yoksa NULL döndürülür. Kısıtlamalar: nb sayı tabanı normalde 1‘den büyük olmalı ve MAXBASE‘e eşit ya da ondan küçük olmalıdır. 0 sayı tabanı’full-width’ sayı tabanın kullanılacağını ifade eder. nd basamak sayısı ise belirli bir maksimum değerden küçük olmalıdır, bu ise mr_utype tipine ve MR_FLASH’ın tanımlanıp tanımlanmamasına göre değişir. 108 Örnek: miracl *mip=mirsys(500,10); Bu 500 ondalık basamaklı big ya da flash formatındaki sayıları kullanmak üzere MIRACL sistemini ilklendirir. multiply Fonksiyon: void multiply(x,y,z) big x,y,z; Tanım: big formatındaki iki sayıyı çarpar. Parametreler: big formatındaki üç sayı x,y ve z. Çıkışta z=x.y Dönüş değeri: Yok Kısıtlamalar: Yok numdig Fonksiyon: int numdig(x) big x; Tanım: big formatındaki bir sayının basamak sayısını belirle. Parametreler: big formatındaki x sayısı. Dönüş değeri: x’in basamak sayısı. Kısıtlamalar: Yok subtract Fonksiyon: void subtract(x,y,z) big x,y,z; Tanım: big formatındaki iki sayı birbirinden çıkartır. Parametreler: big formatındaki üç sayı x, y ve z. Çıkışta z=x-y. 109 Dönüş değeri: Yok Kısıtlamalar: Yok 2. ileri Seviye Yordamlar bigrand Fonksiyon: void bigrand(w,x) big w,x; Tanım: big formatındaki rastgele bir sayı üretir.irand ile başlatılan ve tümleşik olan bir rastsal sayı üretecini kullanır. Parametreler: big formatındaki iki sayı w ve x. Çıkışta x big formatındaki bir rastsal sayıdır ve 0≤x<w aralığındadır.. Dönüş değeri: Yok Kısıtlamalar: Yok isprime Fonksiyon: BOOL isprime(x) big x; Tanım: Olasılıksal asallık testini (probabilistic primality test) kullanarak big formatındaki bir sayının asal olup olmadığını test eder. NOT: Bu yordam big formatındaki x sayısını PRIMES dizindeki listelenmiş küçük asal sayılara böler. Normalde 1000’den küçük asal sayılar kullanılmaktadır. Parametreler: big formatındaki x sayısı. Dönüş değeri: Eğer x (kesine yakın) asal ise TRUE boole değerini aksi halde ise FALSE boole değerini döndürür. Kısıtlamalar: Yok 110 power Fonksiyon: void power(x,n,z,w) long n; big x,z,w; Tanım: big formatındaki bir sayının tam sayı kuvvetini alır. Parametreler: big formatındaki iki sayı x ile z, ve n tam sayısı. Çıkışta w=xn . Eğer w ve z farklı iseler w=xn mod z. Dönüş değeri: Yok Kısıtlamalar: n’in değeri pozitif olmalıdır. powmod Fonksiyon: void powmod(x,y,z,w) big x,y,z,w; Tanım: big formatındaki bir sayının kuvvetini bir diğeri ile alır sonra da bu sonucun modunu big formatındaki bir başka sayı ile alır. Parametreler: big formatındaki dört sayı x, y, z ve w. Çıkışta w=xy mod z. Dönüş değeri: Yok Kısıtlamalar: y nin değeri pozitif olmalıdır. w ve z parametreleri aynı olmamalıdır. 111 3. Anlık Değişkenler Bu değişkenlerin hepsi miracl.h kütüphanesinde tanımlı olan miracl yapısının üyeleridir. Hepsine mip(Miracl Instance Pointer) vasıtası ile ulaşılır. BOOL EXACT; TRUE olarak ilklendirilir. flash aritmediğinde yuvarlama gerçekleşirse FALSE yapılır. int INPLEN; Giriş dizisinin uzunluğu. İkillik veri girişi yapılacağı zaman kullanılır. int IOBASE; Giriş ve çıkış için kullanılacak olan “yazdırılabilir” sayı tabanı. 2 ≤ IOBASE ≤ 256 aralığında olmalıdır. int IOBSIZ I/O arabelleğinin boyutu. BOOL ERCON; Olağan durumda hatalar oluştuğunda hata mesajı üretir ve derhal programı durdurur. int ERNUM; Oluşan son hatanın numarası. char IOBUFF[ ]; I/O tampon belleği. int NTRY; Olasılıksal asallık testi için kullanılan iterasyon sayısı. int *PRIMES; Küçük asal sayılardan oluşan tabloya ulaştıran işaretçidir. BOOL RPOINT; TRUE yapıldığında sayıların tam kısımları çıkışa verilir. Diğer durumda ise kesirli gösterim ile çıkışa gönderilirler. 112 ÖZGEÇMİŞ Kişisel Bilgiler: Adı Soyadı : İsmail BÜTÜN Doğum Yeri : İskenderun Doğum Yılı : 1981 Medeni Hali : Bekâr Eğitim ve Akademik Durumu: Lise : 1996 - 1999 Meram Fen Lisesi Lisans : 1999 - 2003 Hacettepe Üniversitesi Elektrik Elektronik Mühendisliği Bölümü Yabancı Dil : İngilizce İş Tecrübesi: 2005 - 2006 TÜBİTAK MAM (Marmara Araştırma Merkezi) BTE (Bilişim Teknolojileri Enstitüsü) – devam İrtibat: [email protected] 113