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

Benzer belgeler