Kriptografik Hash Fonksiyonlari Ve Uygulamalari Cryptographic Hash Functions and Its Applications

i

T.C.
ERCİYES ÜNİVERSİTESİ
FEN BİLİMLERİ ENSTİTÜSÜ





KRİPTOGRAFİK HASH FONKSİYONLARI
VE
UYGULAMALARI




Tezi Hazırlayan
Seniye SOYALIÇ




Tezi Yöneten
Prof. Dr. Hüseyin ALTINDİŞ





Matematik Anabilim Dalı
Yüksek Lisans Tezi





Eylül 2005

KAYSERİ
ii



iii
TEŞEKKÜR





Tez çalışmalarım boyunca desteğini ve yardımlarını esirgemeyen Değerli Hocam Prof.
Dr. Hüseyin Altındiş'e, maddi ve manevi katkılarından dolayı aileme, çalışmalarım
boyunca fikir alışverişinde bulunduğum, desteğini esirgemeyen Sevgili arkadaşım
Şükran Özen'e, mekan konusunda sık sık rahatsız ettiğim Saime Özen'e ve diğer
arkadaşlara teşekkürü bir borç bilirim.



























iv

KRİPTOGRAFİK HASH FONKSİYONLARI VE UYGULAMALARI

Seniye SOYALIÇ
Erciyes Üniversitesi, Fen Bilimleri Enstitüsü
Yüksek Lisans Tezi, Eylül 2005
Tez Danışmanı:Prof. Dr. Hüseyin ALTINDİŞ

ÖZET

Üç bölümden oluşan tezin ilk bölümünde kriptografiye giriş yapılmış ve tezde
kullanılabilecek temel matematiksel kavramlara yer verilmiştir. İkinci bölümde
şifreleme algoritmaları incelenmiştir. Öncelikle bilgi güvenliği açıklanmış, kriptografik
ilkellerin bir sınıflandırması yapılıp, kriptoloji ile ilgili temel kavramların tanımları
verilmiştir. Konu günlük yaşamdan bir örnekle açıklanmaya çalışılmıştır.

Şifreleme ve deşifrelemede aynı anahtarın kullanıldığı simetrik anahtar şifreleme
tasarısı ele alınmıştır. Simetrik şifrelemenin ilk örneklerinden Caesar şifresi, akış
şifrelerinden Vernam Şifresi ve birer blok şifre olan basit yerine koyma, basit yer
değiştirme, çoklu alfabetik yerine koyma şifreleri, çarpım şifreleri örneklerle
açıklanmıştır.

Şifreleme ve deşifreleme işlemlerinde farklı anahtarların kullanıldığı açık anahtar
şifreleme tasarısı ele alınmıştır. Açık anahtar şifrelemenin en yaygın kullanılan RSA
algoritmasına yer verilmiş, örneklerle anahtar oluşumu izah edilmiş, sayısal bir mesaj
şifrelenmiş ve deşifrelenmiştir.

Tezin son bölümünde ise Hash fonksiyonları ve uygulamaları ayrıntılı olarak
incelenmiştir. Hash fonksiyonları, verinin bütünlüğünü korumakta ve dijital (sayısal)
imza tasarılarında kullanılırlar.

Keyfi sonlu boyutlu bir girdiden sabit boyutlu bir çıktı üreten hash fonksiyonunun
özellikleri tanımı ile birlikte verilmiştir. Hash fonksiyonun türleri ve arasındaki ilişkiler
irdelenmiştir.

v
Anahtarlı ve anahtarsız hash fonksiyonları ayrıntılı olarak ifade edilip, olası saldırılara
ve çeşitlerine yer verilmiştir.

Hash fonksiyonlarının; elektronik ortamlarda dijital imza tasarılarını oluşturmada
güvenliği ve bütünlüğü sağladığı görülmüştür. Doğum günü saldırısının hash
fonksiyonlarında çakışma bulmaya yönelik olduğu anlaşılmıştır. Fonksiyon, hesaplama
kolaylığı getirerek yükten kurtarmakla kalmayıp, mesajı anlaşılamaz hale getirerek de
kriptografik işlemlerde pratiklik ve güvenlik sağlamaktadır. Hash değerinden özgün
metne dönüş zor olduğundan hash fonksiyonları şifrelemenin ve dijital imzanın
vazgeçilmezlerinden olmuştur.

Anahtar sözcükler: Kriptoloji, Kriptografi, Kriptosistem, Açık Anahtarlı
Kriptosistemler, Hash Fonksiyonu, Dijital(Sayısal) İmza, Doğum Günü Paradoksu.























vi
CRYPTOGRAPHIC HASH FUNCTIONS AND ITS APPLICATIONS

Seniye SOYALIÇ
Erciyes University, Graduate School of Natural and Applied Sciences
M. S. Thesis, September 2005
Thesis Supervisor: Prof. Dr. Hüseyin ALTINDİŞ

ABSTRACT

This thesis consists of three chapters. In first chapter an introduction to cryptography
and basic mathematical concepts which will be used later are given. In the second
chapter encryption schemes are examined. Firstly, information security were explained,
a classification of cryptographic primitivies was made and then definitions of basic
concepts of cryptology are given. Then a hash function was tried to explain with an
example from daily life.

Symmetric key scheme where uses the same key in encryption and decryption was
discussed. First example of symmetric encryption Caesar Cipher, Vernam Cipher as a
stream cipher and from block ciphers; substitution cipher, transposition cipher,
polyalphabetic substitution cipher, product ciphers are explained with examples.

Then public key scheme which uses different keys in encryption and decryption was
discussed. RSA that is the most common algorithm of public key encryption, were
included in this chapter. Movement from here, “key construction” was explained and
then a numerical message was encrypted and decrypted in RSA examples.

In the last and basic chapter of thesis, Hash functions and its applications are discussed.
Hash functions are used to save data integrity and digital signiture schemes.

Hash function which yields a fixed size output from arbitrary finite size input, was
given with its properties. Hash function were described and its properties, relations
between each others were examined.

vii
Keyed and unkeyed hash functions were explained in detailed, probable attacks and
types were discussed.

As a result; we saw that hash functions supplies security and data integrity at the
constitution of a digital signiture. Function dosen't only provide some easiness for
computation, at the same time it makes a message unreadable. A birthday paradox
(attack) is interested finding collisions about a hash function. Thus a cryptographic hash
function supplies pratically and security in the cryptographic processes. Because of
difficulties about translate a hash value into orijinal text, hash functions has became one
of indispensable for encryption and digital signiture.

Keywords: Cryptology, Cryptography, Cryptosystem, Pubilc Key Cryptosystem, Hash
Function, Digital Signiture, Birthday Paradox.























viii
İÇİNDEKİLER

Sayfa

Kabul ve Onay Sayfası …………………………………………………………………ii
Teşekkür………………………………………………………………………………...iii
Özet……………………………………………………………………………………...iv
Abstract……………………………………………………………………………...…..vi
İçindekiler……………………………………………………………………………...viii
Kısaltmalar ve Semboller……...………………………………………………………..x

BÖLÜM 1

KRİPTOGRAFİYE GENEL BAKIŞ

1.1 Giriş…………………………………………….………………………………….1
1.2 Temel Matematiksel Kavramlar…………….……………………………………..3

BÖLÜM 2

ŞİFRELEME ALGORİTMALARI

2.1 Giriş......................................................................................................................12
2.2 Kriptografide Kullanılan Temel Terminoloji ve Kavramlar…..…………....…..15
2.3 SİMETRİK ANAHTAR ŞİFRELEME…………................................................21
Caesar Şifresi…………… ………………………………………………..….....22
2.3.1 Akış Şifreleri……………………………………………………………..……...24
Vernam Şifresi……………………………………………………...…..……….25
2.3.2 Blok Şifreler…………………………………………………………..………...26
Blok Şifre İşlem Modları……………...……………………..………………….27
Basit Yerine Koyma Şifreleri……………...………………………..…………..28
Çoklu Alfabetik Yerine Koyma Şifreleri………………………..…………...….29
Basit Yer Değiştirme Şifreleri…………...……...……………..………………..30
Çarpım Şifreleri........................................…..………………….……….……....30
DES..……..………………………………………….……...…………………..31
2.4 AÇIK ANAHTAR ŞİFRELEME …………..…………………………….….....31
RSA Açık Anahtar Şifreleme...………...……….……………………………...32
RSA Problemi…………………………..……….……………………………...33
ix
Diffie-Hellman Problemi…………………….…………………………………35
Discrete Logaritma Problemi…………………………………………………...37

BÖLÜM 3

KRİPTOGRAFİK HASH FONKSİYONLARI VE UYGULAMALARI

3.1 Giriş……………………………………………………………………..………..39
3.2 Genel Sınıflandırma……………………………………………………....………44
3.3 Hash Fonksiyonlarında Temel Kavram ve Özellikler……………………...…….45
3.4 Özellikler Arasındaki İlişkiler………………………………………...….…..…..51
3.5 Tekrarlı Hash Fonksiyonlarının Genel Yapıları……………………...….…….....52
3.6 Biçimlendirme ve Başlangıç Bileşenleri………...……………………….……....54
3.7 ANAHTARSIZ HASH FONKSİYONLARI (MDCs).………………….…….....55
3.7.1 Blok Şifrelere Dayanan Hash Fonksiyonları……………………………………55
3.7.2 Alışılmış Hash Fonksiyonları…………………………………………….......…57
MD Ailesi……………………………………………………………………….57
MD-2…………………………………………………………………………....57
MD-4…………………………………………………………………………....57
MD-5………………………………………………………………………........58
SHA-1 (Güvenli Hash Algoritması)…………………………………………….58
RIPEMD-160……………………………………………………………………65
3.7.3 Modüler Aritmetiğe Dayanan Hash Fonksiyonları.…...……………………......65
3.8 ANAHTARLI HASH FONKSİYONLARI (MACs)………...………………....65
3.8.1 Blok şifrelere Dayanan MACs..………………………..……………………….66
3.8.2 MDC ye Dayanan MAC……..………...………………………………………..67
3.8.3 Hash’ a Dayalı MAC............................................................................................69
3.9 Algoritmaların Güvenliği, Güvenlik Amaçları ve Temel Saldırılar……….........69
Genel Saldırı Çeşitleri………….………………………………………………70
3.9.1 Bir MDC nin Bit Boyutuna Saldırı………………………..………………….....76
3.9.2 Bir MAC nin Anahtar Uzayına Saldırı………………………...………………..76
3.9.3 Bir MAC nin Bit Boyutuna Saldırı……………………………………………...77
KAYNAKLAR................................................................................................................79
ÖZGEÇMİŞ.....................................................................................................................81

x
KISALTMALAR VE SİMGELER

Z : Tamsayılar Cümlesi

Q : Rasyonel Sayılar Cümlesi

R : Reel Sayılar

| | b a, : b x a ≤ ≤ olacak şekildeki x tamsayıları

¸ ¸
x : x 'e eşit veya x 'ten küçük en büyük tamsayı

(
x : x 'e eşit veya x 'ten büyük en küçük tamsayı

A : A 'nın eleman sayısı

x ln : x 'in doğal logaritması

x lg : 2 tabanında x 'in logaritması; x
2
log

*
n
Z : Çarpımsal Grup

n
Q : n mod 'e göre bütün kuadratik rezidülerin cümlesi

n
Q : n mod 'e göre bütün kuadratik non-rezidülerin cümlesi

⊕ : XOR İşlemi

∧ : Bit düzeyinde ‘ve’ işlemi

∨ : Bit düzeyinde ‘veya’ işlemi

|| : Bağlantı İşlemi

n x << : Sola kaydırma işlemi; x in en solundaki n biti al, sonucu sağdan sıfırla doldur.

n x >> : Sağa kaydırma işlemi; x in en sağındaki n biti al, sonucu soldan sıfırla doldur.

÷ : Bit düzeyinde tamamlama, tümleme operasyonu

e
E : Şifreleme Dönüşümü

d
D : Deşifreleme Dönüşümü

xi
TYHF : Tek Yol Hash Fonksiyonu

ÇDHF : Çakışma Dirençli Hash Fonksiyonu

IV : Başlangıç Değeri (Initialization Vector)

MDC : Mesaj Değişiklik Bulma Kodu (Manipulation Detection Code)

MAC : Mesaj Kanıtlama Kodu (Message Authentication Code)

NSA : Ulusal Güvenlik Ajansı (National Security Agency)

NIST : Ulusal Güvenlik ve Teknoloji Enstitüsü (National Institute of Security and

Technology)






















1













BÖLÜM 1

KRİPTOGRAFİYE GENEL BAKIŞ

1.1 Giriş

Günümüz teknolojisinin baş döndürücü hızı göz önüne alındığında, teknolojinin
gelişmesiyle ortaya çıkan güvenlik açığının ne kadar önem taşıdığı görülmektedir.
Kriptoloji, kişiler arası veya özel devlet kurumları arasındaki mesajlaşmalardan
sistemlerin oluşumunda ve işleyişindeki güvenlik boşluklarına kadar her türlü dalla
alakalıdır.

Kriptoloji, matematiğin hem şifre bilimi (kriptografi), hem de şifre analizini
(kriptanaliz) kapsayan dalıdır. Şifre biliminin amacı, ileti güvenliğini sağlamak, şifre
analizinin amacı ise varolan şifreleri çözmektir. Kriptolojinin temel kavramlarından biri
olan şifreleme bir düz metnin içeriğini okunamayacak hale getirme işlemidir.
Şifrelemede esas olan, iletinin istenmeyen şahıslar tarafından okunmasını engellemektir.
Deşifreleme (şifre çözümü) ise şifrelemenin tam tersi olup, şifreli metnin düz metne
çevrilmesi işlemidir. Bunu Şekil 1.1 de basitçe ifade edebiliriz.



Şekil 1.1. Bir Düz Metnin Şifrelenmesi ve Deşifrelenmesi.
Düz Metin
Şifreleme
Şifreli
Metin
Deşifreleme
Özgün
Düz Metin
2
Kriptografi Yunanca "gizli" anlamına gelen "kript" ve yazı anlamına gelen "graf" dan
türetilmiştir. Uzun ve büyülü bir tarihe sahiptir. Gizli haberleşme, bundan yaklaşık 4000
yıl önce kullanılmaya başlanmış; özellikle diplomasi ve askeri servislerde yer almış ve
II.Dünya Savaşı gibi modern savaşlarda önemli rol oynamıştır. İlk olarak Eski
Mısırlı'ların tarihi anıtlarındaki hiyeroglif yazılarının bazılarında görülen şifreleme daha
sonra İbrani'lerin kutsal kitaplarındaki belirli kelimelerde görülmüştür. 2000 yıl önce
Eski Roma İmparatoru Julius Caesar, Caesar şifreleme olarak bilinen ve simetrik
anahtar şifrelemenin klasik bir örneği olan basit bir yerine koyma şifresini kullanmıştır.
1460'larda Leon Alberti | | 2 , bir şifreleme tekerleği tasarlamış ve bir alfabedeki harflerin
görülme sıklığını analiz etmiştir. Blaise de Vigenère| | 2 1585'te kriptoloji üzerine bir
kitap yayınlamış ve çoklu alfabe değiştirme şifresini açıklamıştır.

Son yıllarda bilgisayarların hızlı bir şekilde yayılması ve buna bağlı olarak haberleşme
sistemlerinin gelişmesi, özel sektörün de dijital formda bilgiyi koruma ve güvenlik
servisini sağlama isteğini beraberinde getirmiştir. Elektronik ticaretin kullanılmaya
başlamasıyla da kriptografi alanına büyük çapta ticari bir ilgi olmuştur. İnternet
üzerindeki ticari işlemler, yılda milyar dolarları aşmaktadır. Bu kadar yüksek miktarlar
söz konusu olunca kriptografik güvenlik yöntemlerinin kullanımı zorunlu hale gelmiştir.
1970'lerin başında IBM'de çalışılmaya başlanan ve A.B.D. Teknoloji Standartları
Enstitüsü NIST tarafından her dört yılda bir güvenliği onaylanan Veri Şifreleme
Standardı kısa adıyla DES (Data Encryption Standard) tarihte en iyi bilinen kriptolojik
mekanizmadır.

Kriptografinin tarihte en güçlü gelişmesi Diffie ve Hellman'ın "New Directions in
Cryptography" adlı kitapları yayınlandığında olmuştur. 1978'de Rivest, Shamir ve
Adleman| | 1 , RSA olarak ifade edilen ilk pratik açık anahtar şifreleme ve imza tasarısını
keşfetmişlerdir. RSA, modüler aritmetiği kullanarak üstelleştirmeye dayanan, mesajları
şifrelemek, anahtar değiştirmek ve sayısal imza oluşturmak için kullanılan açık anahtarlı
şifreleme algoritmasıdır. Bu alanda başlıca ilerleme 1980'lerde görülmüş fakat hiç
kimse RSA'nın güvensiz olduğunu ifade etmemiştir. Güçlü ve pratik açık anahtar
tasarılarının discrete logaritmik problemlere dayanan başka bir sınıfı ise 1985'te El
Gamal | | 1 tarafından bulunmuştur.

3
Bugünün kriptografisi şifreleme ve şifre çözmeden daha fazlasını içerir. Kimlik
denetimi artık gizlilik kadar önemlidir. Herhangi bir iletiye adımızı ekleyip ağ üzerinden
gönderdiğimiz zaman kimliğimizi ispatlamak için elektronik yöntemlere ihtiyaç
duyarız. Kriptografinin buna sunduğu çözüm sayısal imzadır.

Şimdi kriptografide kullandığımız bazı matematiksel terimleri tanımlayarak konuyu
izah etmeye çalışalım.

1.2 Temel Matematiksel Kavramlar

Tanım 1.1. X ve Y iki cümle olmak üzere X in her elemanını Y nin yalnız bir
elemanına karşılık getiren f e bir fonksiyon denir. Y X f → : ile gösterilir.
X cümlesi fonksiyonun tanım bölgesi, Y ise değer bölgesi olarak adlandırılır.

Tanım 1.2. Y X f → : fonksiyonunda y∈Y için y nin ön görüntüsü y x f = ) ( olacak
şekilde bir X x ∈ elemanıdır. Y deki en az bir ön görüntüye sahip bütün elemanların
cümlesine f nin görüntüsü denir ve ) Im( f ile gösterilir.

Tanım 1.3. Y X f → : fonksiyonu için eğer Y değer bölgesindeki her eleman, X tanım
bölgesindeki en fazla bir elemanın görüntüsü ise f birebirdir denir.

Tanım 1.4. Y X f → : fonksiyonu için Y değer bölgesindeki her eleman, X tanım
bölgesindeki en az bir elemanın görüntüsü ise f örtendir denir.

Tanım 1.5. Y X f → : birebir ve örten ise bu taktirde Y y ∈ ∀ için x y g = ) ( ,
X x ∈ olacak şekilde X Y g → : birebir ve örten fonksiyonu bulunabilir öyle ki
y x f = ) ( dir. f den elde edilen bu g fonksiyonuna f in ters fonksiyonu veya
inversi denir.
1 −
= f g ile gösterilir. Kriptografide birebir ve örten fonksiyonlar
mesajların şifrelenmesinde, ters fonksiyonlar ise deşifrelenmesinde kullanılırlar.

Tanım 1.6. Y X f → : fonksiyonunda X x ∈ ∀ için ) (x f i hesaplamak kolay fakat
bütün ) Im( f y ∈ elemanları için y x f = ) ( olacak şekilde X x ∈ bulmak kolay
hesaplanabilir değilse f e tek yol fonksiyonu denir.

4
Tanım 1.7. Bir trapdoor tek yol fonksiyonu, y x f = ) ( olacak şekilde herhangi bir
) Im( f y ∈ için bir X x ∈ bulmayı olası kılan bazı ek bilgilerle verilmiş Y X f → :
tek yol fonksiyonudur.

Tanım 1.8. b a ve tamsayılar olsun. Bu taktirde eğer ac b = olacak şekilde bir c
tamsayısı mevcutsa b a, yi böler denir ve b a şeklinde gösterilir.

Teorem 1.1. (Bölünebilirliğin Özellikleri) Bütün c b a , , sıfırdan farklı tamsayıları için
aşağıdakiler doğrudur :

(i) a a
(ii) Eğer b a ve c b ise bu taktirde c a
(iii) Eğer b a ve c a ise ) ( cy bx a + ; Z y x ∈ ∀ ,
(iv) Eğer b a ve a b ise bu taktirde b a ± =

Teorem 1.2. ( Tamsayılarda Bölme Algoritması ) b≥1 olmak üzere b a ve tamsayı ise
bu taktirde q bölümü, r kalanı göstermek üzere r bq a + = , b r < ≤ 0 olacak şekilde
r q ve tamsayıları vardır ve tektir.

Bölmeden kalan r , ) (modb a r ≡ ve bölüm , q adivb q = ile gösterilir.

Tanım 1.9. Eğer a c ve b c ise c ye b a ve nin ortak böleni denir.

Tanım 1.10. Aşağıdaki özellikleri sağlayan negatif olmayan bir d tamsayısına b a ve
nin en büyük ortak böleni denir ve ) , ( ) , ( b a b a ebob d = = ile gösterilir.

(i) d , b a ve nin ortak bölenidir.
(ii) a c ve b c durumunda d c dır.

Tanım 1.11. Aşağıdaki özellikleri sağlayan negatif olmayan bir d tamsayısına b a ve
nin en küçük ortak katı denir ve | | b a d , = ile gösterilir.

(i) d a ve d b dır.
(ii) c a ve c b durumunda c d dır.
5

Teorem 1.3. b a ve pozitif tamsayıları için | | ) , ( . , b a b a b a = dır.

Tanım 1.12. 2 ≥ p pozitif tamsayısı olmak üzere p nin 1 ve p den başka pozitif
böleni yoksa p ye asaldır denir.

Tanım 1.13. b a, iki tamsayı olmak üzere 1 ) , ( = b a ise b a ve ye aralarında asaldır
denir.

Teorem 1.4. (Aritmetiğin Temel Teoremi) 2 ≥ ∀n olan her tamsayı ya asaldır ya da
asalların çarpımı şeklinde çarpanların sıra değişikliği hariç tek türlü yazılır. Yani p
i
ler
farklı asallar ve
i
e ler pozitif tamsayılar olmak üzere
k
e
k
e e
p p p n ... .
2 1
2 1
= dır.

Teorem 1.5.
k
e
k
e e
p p p a ... .
2 1
2 1
= ve
k
f
k
f f
p p p b ... .
2 1
2 1
= ; 0 ≥
i
e
, 0 ≥
i
f
ise bu
taktirde
= ) , ( b a
) , min( ) , min(
2
) , min(
1
... .
2 2 1 1 k k
f e
k
f e f e
p p p
| | b a, =
) , max( ) , max(
2
) , max(
1
... .
2 2 1 1 k k
f e
k
f e f e
p p p dır.

Tanım 1.14. 1 ≥ n için ), (n φ | | n , 1 aralığındaki n ile aralarında asal olan tamsayıların
sayısını göstersin. φ fonksiyonu Euler in φ fonksiyonu veya Euler in toplam fonksiyonu
olarak adlandırılır.

Teorem 1.6. (φ Fonksiyonunun Özellikleri)
(i) p asal ise bu taktirde φ ) ( p 1 − = p dır.
(ii)φ ) (n çarpımsaldır şöyle ki 1 ) , ( = n m için φ ) ( ). ( ) . ( n m n m φ φ = dir.
(iii) n nin standart formu
k
e
k
e e
p p p n ... .
2 1
2 1
= iseφ
|
|
¹
|

\
|

|
|
¹
|

\
|

|
|
¹
|

\
|
− =
k
p p p
n n
1
1
1
1
1
1 . ) (
2 1
… dır.

Algoritma 1.1. (En Büyük Ortak Böleni Hesaplamak İçin Euclidean Algoritması)
b a ve negatif olmayan a b ≥ olmak üzere iki tamsayı olsun. Buna göre b a ve nin en
büyük ortak bölenini bulmak için;
1. 0 ≠ b olduğu sürece şunu yaparız :
6
b a ← ifadesi a yerine geçici bir süre b yazılacağını diğer bir deyişle a yerine b nin
atanacağını göstermek üzere b a r (mod ← ) , b a ← , r b ← dir.
2. a ve b nin en büyük ortak bölenleri a dır.

Tanım 1.15. b a ve tamsayılar ve n pozitif bir tamsayı olmak üzere eğer n, a-b yi
bölerse a ya, n mod ye göre b ye kongrüenttir denir ve b a ≡ ) (modn ile gösterilir.

Teorem 1.7. (Kongrüansın Özellikleri) Z b a c b a ∈ ∀
1 1
, , , , için aşağıdakiler doğrudur.
(i) ) (modn b a ≡ ancak ve ancak a ve b , n ye bölündüklerinde aynı kalanı verir.
(ii) (yansıma) ) (modn a a ≡
(iii) (simetri) ) (modn b a ≡ iken ) (modn a b ≡ dır.
(iv) (geçişme) ) (modn b a ≡ ve ) (modn c b ≡ ise ) (modn c a ≡
(v) ) (mod
1
n a a ≡ ve ) (mod
1
n b b ≡ ise bu taktirde ) (mod
1 1
n b a b a + ≡ + ve
) (mod . .
1 1
n b a b a ≡ dır.

Tanım 1.16 { } 1 ,..., 2 , 1 , 0 − n tamsayılarının cümlesine n mod tamsayıları denir.
n
Z
ile
gösterilir. { } 1 ,..., 2 , 1 , 0 − = n Z
n
dır.
n
Z de toplama, çıkarma, çarpma n mod e göre
oluşturulur.

Tanım 1.17.
n
Z a ∈ olsun. a nın n mod e göre çarpımsal tersi 1 ≡ ax ) (modn olacak
şekilde x
n
Z ∈ tamsayısıdır. Eğer böyle bir x tamsayısı mevcutsa tektir ve a ya
tersinirdir denir. a nın tersi
1 −
a ile gösterilir.

Teorem 1.8. (Çin Kalan Teoremi) Eğer
k
n n n ,..., ,
2 1
pozitif tamsayıları ikişer ikişer
aralarında asal ise bu taktirde aşağıdaki kongrüans sistemi,
k
n n n n ... .
2 1
= modülüne
göre bir tek çözüme sahiptir.


) (mod
) (mod
) (mod
2 2
1 1
k k
n a x
n a x
n a x


7
Algoritma 1.2. (Gauss Algoritması) Çin kalan teoremindeki x çözümü
i i
n n N / = ve
) (mod
1
i i i
n N M

= olmak üzere

=
=
k
i
i i i
n M N a x
1
) (mod ile hesaplanır.


Tanım 1.18. Bir S cümlesi üzerinde bir ikili işlem S S S → × : * şeklinde tanımlı bir
dönüşümdür.Yani * , S deki elemanların her bir sıralı çiftini yine S nin elemanlarına
götüren bir kuraldır.

Tanım 1.19. G

bir cümle ve ∗ , G üzerinde bir ikili işlem olsun. Eğer aşağıdaki üç
şart sağlanıyorsa ) , ( ∗ G bir gruptur denir.

(i) (Birleşme Özelliği) G c b a ∈ ∀ , , için c b a c b a ∗ ∗ = ∗ ∗ ) ( ) (
(ii) (Birim eleman) G a ∈ ∀ için a a a = ∗ = ∗ 1 1 olacak şekilde 1 G ∈ vardır.
(iii) (Ters Eleman) G a ∈ ∀ için
1 −
∗ a a 1
1
= ∗ =

a a olacak şekilde G a ∈
−1
vardır.
Eğer G b a ∈ ∀ , için a b b a ∗ = ∗ ise G, Abel (Değişmeli) gruptur denir.

Tanım 1.20. G b ∈ ∀ için
i
b α = olacak şekilde bir i tamsayısı için G ∈ α var ise G
grubuna devir grubu denir. G ∈ α ise G grubunun üreteci olarak adlandırılır ve
> =< α G ile gösterilir.

Tanım 1.21. G bir grup ve G a ∈ olsun. 1 =
t
a olacak şekildeki en küçük pozitif t
tamsayısına a nın mertebesi denir. Eğer böyle bir t tamsayısı yoksa a nın mertebesi
∞ olur.

Tanım 1.22.
n
Z nin çarpımsal grubu } 1 ) , ( : {
*
= ∈ = n a Z a Z
n n
dir. Özel olarak n asal
ise } 1 1 : {
*
− ≤ ≤ = n a a Z
n
dır.

Tanım 1.23.
*
n
Z ın mertebesi
*
n
Z daki elemanların sayısı olarak tanımlanır.
*
n
Z ile
gösterilir. Euler'in φ fonksiyonu tanımından ) (
*
n Z
n
φ = olduğu görülür.

Teorem 1.9. 2 ≥ n bir tamsayı olsun.
(i) (Euler Teoremi)
*
n
Z a ∈ ise ) (mod 1
) (
n a
n

φ
dır.
8
(ii) Eğer n , farklı asalların çarpımı ve )) ( (mod n s r φ ≡ ise Z a ∈ ∀ için
) (modn a a
s r
≡ dır.

Teorem 1.10. p bir asal olsun.
(i) (Fermat Teoremi) 1 ) , ( = p a ise ) (mod 1
1
p a
p
=

dır.
(ii) Z a ∈ ∀

için )) ( (mod p s r φ ≡ ise
s r
a a ≡ (mod p) dır.
(iii) Z a ∈ ∀ için a a
p
≡ (mod p) dır.

Teorem 1.11. (Wilson Teoremi) p bir tek asal olmak üzere ) (mod 1 )! 1 ( p p − ≡ − dır.

Tanım 1.24.
*
n
Z a ∈ olsun. a nın mertebesi ) (a ord ile gösterilir ve ) (mod 1 n a
t

olacak şekildeki en küçük t tamsayısıdır.

Tanım 1.25.
*
n
Z a ∈ olsun. a nın mertebesi ) (n φ yani; ) ( ) ( n a ord φ = ise bu taktirde a
ya bir üreteç veya
*
n
Z ın bir ilkel elemanı, ilkel kökü denir.
*
n
Z bir üretece sahip ise
*
n
Z
a bir devir adı verilir.

Teorem 1.12. 0 > n tamsayısı bir ilkel köke sahipse ilkel köklerinin sayısı )) ( ( n φ φ
tanedir.

Tanım 1.26. n pozitif bir tamsayı ve g de mnin bir ilkel kökü olsun. 1 ) , ( = a n olan
pozitif bir a tamsayısı için ) ( 1 n r φ ≤ ≤ ve ) (modn a g
r
≡ olacak şekildeki r
tamsayısına g ilkel köküne göre a nın indisi denir ve a ind r
g
= şeklinde gösterilir.

Teorem 1.13. k n , birer pozitif tamsayı ve g de bir ilkel kök olsun. b a ve tamsayıları
ile n aralarında asal olmak üzere
(i) )) ( (mod 0 1 n ind
g
φ ≡ ve )) ( (mod 1 n g ind
g
φ ≡
(ii) )) ( (mod ) ( n b ind a ind ab ind
g g g
φ + ≡
(iii) )) ( (mod . n a ind k a ind
g
k
g
φ ≡ özellikleri sağlanır.

Tanım 1.27.
*
n
Z a ∈ olsun. ) (mod
2
n a x ≡ olacak şekilde
*
n
Z x ∈ var ise a ya n mod
e göre bir kuadratik rezidü denir. Eğer böyle bir
*
n
Z x ∈ yoksa a, n mod e göre
9
kuadratik non-rezidü olarak adlandırılır. n mod e göre kuadratik rezidülerin cümlesi
n
Q , kuadratik non-rezidülerin cümlesi ise
n
Q ile gösterilir.

Teorem 1.14. p tek asal ve α ,
*
p
Z ın bir üreteci olsun.
*
p
Z a ∈ nin, mod p ye göre
bir kuadratik rezidüdü olması için gerek ve yeter şart i çift bir tamsayı olmak üzere
) (mod p a
i
α ≡ olmasıdır.
*
p
Z daki elemanların yarısı kuadratik rezidü, diğer yarısı da
kuadratik non- rezidüdür. Yani 2 / ) 1 ( − = p Q
p
, 2 / ) 1 ( − = p Q
p
dır.

Örnek 1.2.
*
13
Z ın 6 = α üretecini alalım.α nın kuvvetlerini alarak değerleri bir
tabloda listeleyelim:




Buradan } 12 , 10 , 9 , 4 , 3 , 1 {
13
= Q ve } 11 , 8 , 7 , 6 , 5 , 2 {
13
= Q yazılır. Yani ) 13 (mod 3
2
= x
kongrüansı çözülebilirdir.

Teorem 1.15. p ve q iki farklı tek asal olmak üzere q p n . = olsun.
*
n
Z a ∈ nin
n mod e göre bir kuadratik rezidü olması için gerek ve yeter şart
p
Q a ∈ ve
q
Q a ∈
olmasıdır. Buradan şu sonucu çıkarırız:
4 / ) 1 )( 1 ( . − − = = q p Q Q Q
q p n
ve 4 / ) 1 )( 1 .( 3 − − = q p Q
n


Tanım 1.28.
n
Q a ∈ olsun. Eğer
*
n
Z x ∈ , ) (mod
2
n a x = i sağlıyorsa bu taktirde x e
) (mod n a nin bir karekökü denir.

Teorem 1.16. (Kareköklerin Sayısı)
(i) p tek asal ve
p
Q a ∈ ise a nın p mod ye göre iki karekökü vardır.
(ii) Daha genel olarak
i
p ler farklı tek asallar ve 1 ≥
i
e olmak üzere
k
e
k
e e
p p p n ... .
2 1
2 1
=
ise
n
Q a ∈ için a nın n mod e göre kesinlikle
k
2 farklı karekökü vardır.

Algoritma 1.3. (
n
Z de Çarpımsal İnversleri Hesaplama)
n
Z a ∈ olsun. n mod e göre
a nın inversini hesaplamak için;
İ 0 * 1 2 * 3 4 * 5 6 * 7 8* 9 10 * 11
i
α (modn)
1 6 10 8 9 2 12 7 3 5 4 11
10

1. ) , ( n a d = olmak üzere dt ny ax = + olacak şekilde y x ve tamsayılarını bulmak
için genelleştirilmiş Euclidean algoritmasını kullanırız.
2. 1 > d ise bu taktirde ) (mod
1
n a

yoktur. Aksi taktirde x tir.

Tanım 1.29. p , bir tek asal ve a bir tamsayı olsun.
|
|
¹
|

\
|
p
a
Legendre sembolü
¦
¦
¹
¦
¦
´
¦
∈ −
∈ =
|
|
¹
|

\
|
p
p
Q a
Q a
a p
p
a
, 1
, 1
, 0

olarak tanımlanır.

Legendre sembolü p asal olmak üzere bir a tamsayısının p mod ye göre kuadratik
rezidü olup olmadığının tespitinde kolaylık sağlar.

Teorem 1.17. (Euler Kriteri) p bir tek asal ve a ; 1 ) , ( = a p olan bir tamsayı ise
) (mod
2 / ) 1 (
p a
p
a
p−

|
|
¹
|

\
|
dır.

Tanım 1.30. (Jakobi Sembolü) Legendre Sembolünün tek olan fakat asal olması
gerekmeyen n tamsayılarına genelleştirilmiş halidir.

3 ≥ n ve
k
e
k
e e
p p p n ... .
2 1
2 1
= olmak üzere Jakobi Sembolü;

k
e
k
e e
p
a
p
a
p
a
p
a
|
|
¹
|

\
|
⋅ ⋅ ⋅
|
|
¹
|

\
|

|
|
¹
|

\
|
=
|
|
¹
|

\
|
2 1
2 1
olarak tanımlanır.

Tanım 1.31. Bir R cümlesi ve bu cümle üzerinde tanımlı + ve ∗ işlemleri
verildiğinde aşağıdaki özellikleri sağlayan (R ,+, ∗ ) üçlüsüne halka denir.
(i) (R ,+) birimi 0 ile belirtilen bir Abel grubudur.
(ii) ∗ işlemi birleşmelidir. ∈ ∀ c b a , , R için ) ( ) ( c b a c b a ∗ ∗ = ∗ ∗ dır.
(iii)∗ işleminin + işlemi üzerine sağdan ve soldan dağılma özelliği vardır.
∈ ∀ c b a , , R için ) ( ) ( ) ( c a b a c b a ∗ + ∗ = + ∗ ve ) ( ) ( ) ( a c a b a c b ∗ + ∗ = ∗ + dır.
11

Eğer (R ,+, ∗ ) üçlüsünün ikinci işlemine ( ∗ işlemi) göre birim elemanı varsa bu halkaya
birimli halka denir. ∈ ∀a R için 0 1 ≠ olmak üzere a a a = ∗ = ∗ 1 1 olacak şekilde
verilen 1 çarpma işleminin (∗ işleminin) birimidir.

∈ ∀ b a, R için a b b a ∗ = ∗ ise yani ikinci işlemin değişme özelliği varsa bu halkaya
değişmeli (komutatif ) halka denir.

Tanım 1.32. Bir ∈ a R elemanı için 1 = ∗b a olacak şekilde bir ∈ b R bulunabiliyorsa
bu taktirde a ya birim veya terine çevrilebilir eleman denir.

Tanım 1.33. Komutatif bir halkada sıfırdan farklı her elemanın çarpımsal tersi varsa bu
halkaya cisim denir.

Tanım 1.34. R komutatif bir halka ise bu taktirde R halkası üzerinde x bilinmeyenli
bir polinom ∈
i
a R ve 0 ≥ n olmak üzere
0 1
1
1
... ) ( a x a x a x a x f
n
n
n
n
+ + + + =



şeklinde ifade edilir.
i
a elemanları ) (x f deki
i
x lerin katsayıları olarak adlandırılır.
0 ≠
k
a için polinomdaki en büyük k tamsayısına ) (x f in derecesi denir ve ) ( deg x f
ile gösterilir.
k
a ise ) (x f in baş katsayısıdır. Eğer 0
0
≠ a ve
0
) ( a x f = (sabit polinom)
ise ) (x f in derecesi 0 dır. ) (x f in bütün katsayıları sıfırsa ) (x f sıfır polinom olarak
adlandırılır ve derecesi ∞ − olarak tanımlanır. ) (x f in baş katsayısı 1 ise ) (x f e monik
polinom denir.

Tanım 1.35. R , komutatif bir halka olsun ve katsayıları R den alınan x bilinmeyenli
bütün polinomların cümlesi R| | x olsun. R| | x aşağıda tanımlanan toplama ve çarpmaya
göre bir halkadır.

R| | x de iki polinom
0 1
... ) ( a x a x a x f
n
n
+ + + = ve
0 1
... ) ( b x b x b x g
m
m
+ + + = olsun.
s m n i = ≤ ≤ ) , max( 0 ,
i i i
b a d + = olmak üzere
0 1
... ) ( ) ( d x d x d x g x f
s
s
+ + + = + ve
m n t + ≤ ≤ 0 ,
t t o t t
b a b a b a c
0 1 1
... + + + =

iken
o
t
t
c x c x c x g x f + + + =
1
... ) ( ). ( dır.

12







BÖLÜM 2

ŞİFRELEME ALGORİTMALARI

Giriş 2.1

Kriptografi, bilgi güvenliğinin veri güvenliği, veri bütünlüğü, varlık kanıtlama ve veri
kaynağı kanıtlama gibi matematik tekniklerle bağlantılı yönleriyle ilgili çalışmalardır.
Kriptografi sadece bilgi güvenliği sağlama anlamına gelmez, daha ziyade bilgi
güvenliğini sağlama tekniklerinin bir sentezidir.

Bilgi güvenliği durumlara ve gereksinimlere göre bir çok yönde ortaya çıkar.
Yüzyıllardır özenle hazırlanan protokol ve mekanizmalar, bilgi fiziksel dokümanlarla
iletileceği zaman bilgi güvenliği sonuçlarını kullanarak ortaya çıkarılmıştır. Çoğunlukla
bilgi güvenliği hedefleri sadece matematiksel algoritmalar ve protokoller ile
başarılamayabilir. Arzu edilen sonuca ulaşmak için kurallara tahammül etmek ve
usulüne uygun teknikler kullanmak gerekebilir. Örneğin mektupların gizliliği, alıcı mail
servisi tarafından dağıtılan mühürlü zarflar tarafından sağlanır. Zarfların fiziksel
güvenliği sınırlıdır bu yüzden yetkisiz kişilerin mektubu açmasını suç kabul eden
kanunlar çıkarılır.

Bilgi güvenliğinde kullanılan temel malzeme imzadır. İmza; inkar edememe, veri
kaynağı doğrulama, kimlik saptama ve tanıklık gibi çoğu servisin temel taşıdır.
Sözleşme zamanında imza, kişinin kimliğinin çok önemli bir kısmını üstlenir. Ayrıca
imza kimlik saptama, yetki verme ve onaylama görevlerini yapacak şekilde kişiye özel
hazırlanır. Bütün bu yönleriyle bilgi güvenliğinin hedefleri dört ana başlık altında
toplanabilir.
13
1. Veri Güvenliği (Confidentiality): Veri güvenliği, bilginin içeriğini herkesten
saklamada kullanılan ve bunu yapmada yetkili olan bir servistir. Gizlilik (secrecy) veri
güvenliği ile eş anlamlı bir terimdir. Veri güvenliğini sağlamanın; fiziksel korumalardan
matematik algoritmalara kadar veriyi anlaşılmaz hale getiren sayısız yöntemleri vardır.

2. Veri Bütünlüğü (Data Integrity): Veri bütünlüğü, yetkisiz veri değişimini ele alan
bir servistir. Veri bütünlüğünü garanti etmek için yetkisiz şahıslar tarafından veri
kullanımını ortaya çıkaracak yeteneğe sahip olunmalıdır. Veri kullanımı ekleme, silme
ve yerine koyma gibi işlemleri içerir.

3. Kanıtlama (Authentication): Kanıtlama, kimlik saptama ile bağlantılı bir servistir.
Bu fonksiyon varlıkları ve bilgilerin her ikisini kullanır. Bir iletişim içine giren iki şahıs
birbirlerinin kimliklerini tanımalıdırlar. Bir kanal üzerinden teslim edilen bilginin
doğruluğu, bilginin; kaynağı, başlangıç tarihi, veri içeriği, gönderme zamanı gibi
özellikleri dikkate alınarak kanıtlanmalıdır. Bu sebeplerle kriptografi genellikle iki
önemli alt sınıfa bölünür: Varlık Kanıtlama (Entity Authentication) ve Veri Kaynağı
Doğrulama (Data Origin Authentication). Veri kaynağının doğrulanması kesinlikle veri
bütünlüğü sağlar. Eğer bir mesaj değiştirilirse, kaynak da değişmiş demektir.

4. İnkar edememe (Non-Repudiation): Önceki taahhütleri, çalışmaları veya faali-
yetlerin varlığını inkar etmeyi engelleyen bir servistir. Bir şahsa yönelik tartışmalar
ortaya çıktığı zaman ele geçmiş bazı çalışmaları inkar etmek, durumu çözmek için
gerekli bir araçtır. Örneğin; bir şahıs elindeki bir bilginin başka bir şahıs tarafından
alınmasına izin verebilir ve sonra böyle bir iznin verildiğini inkar edebilir. Sorunu
çözmek için güvenilir üçüncü bir şahsı içeren bir prosedür gereklidir.

Kriptografinin temel amaçlarından biri de teori ve uygulamada bu dört alanı yeterli
derecede ele almaktır. Bilgisayar üzerinden gerçekleşen toplumsal ilişkilerde, yüz yüze
ilişkilerdekine benzer kimi hayati gereklilikler mevcuttur: Bir kişinin gerçekten
söylediği kişi olması, ehliyet, pasaport v.b. evraklarının geçerli olması, gelen belgenin
gerçekten o kişiden gelmiş olması gibi. Bu ve benzeri gereklilikler bu dört alanla
sağlanmaktadır.

14
Bilgi güvenliğini sağlamada kullanılan temel kriptografik ilkellerin (primitivies, tools)
örnekleri şifreleme tasarılarını, hash fonksiyonlarını, dijital imza tasarılarını içerir.
Aşağıdaki şekil ilkellerin şematik bir listesini ve onların bağlantılarını verir.



Şekil 2.1. Kriptografik İlkellerin Sınıflandırması.

Bu ilkeller aşağıdaki gibi farklı kriterlere göre değerlendirilmelidir.

Anahtarsız
İlkeller
Keyfi Uzunluklu
Hash Fonk
Tek Yol
Permütasyonları
Rastlantısal
Diziler
Simetrik Anahtar
İlkelleri
Simetrik Anahtar
Şifreler

Keyfi Uzunluklu
Hash Fonk (MACs)
İmzalar
Kimlik Belirleme
İlkelleri
Açık Anahtar
İlkeller
Açık Anahtar
Şifreler
İmzalar
Kimlik Belirleme
İlkelleri
Blok
Şifreler
Akış
Şifreleri
Rastlantısal
Diziler
Güvenlik
İlkelleri
15
1. Güvenlik Düzeyi; ölçmek genellikle zordur. Çoğunlukla planlanmış hedefi bozmak
için gerekli operasyonların sayısına göre belirlenir. Tipik olarak güvenliğin düzeyi,
hedefi bozmak için gerekli çalışmaların miktarının bir üst sınırı ile tanımlanır.

2. Fonksiyonellik; farklı bilgi güvenlik hedeflerinin karşılanması için ilkellerin birleş-
tirilmesi gerekir.

3. Operasyon Metotları; ilkeller farklı girdiler ve farklı yollarla uygulandığı zaman tipik
olarak farklı karakteristikler ortaya koyarlar. Şu halde bir ilkel, uygulamanın şekline
veya kullanıma bağlı olarak çok farklı fonksiyonellikler sağlayabilir.

4. Performans; belli bir uygulama şekli içindeki bir ilkelin verimini belirtir. Örneğin;
bir şifreleme algoritması bitlerin sayısı ile derecelendirilebilir, sınıflandırılabilir.

5. Yerine Getirme Kolaylığı; ilkelin bir uygulama anındaki kavrama zorluğunu belirtir.
Farklı kriterlerin önemi uygulamaya ve uygun olanaklara çok bağlıdır. Örneğin;
hesaplama gücü sınırlı bir ortamda bir şahıs bir bütün olarak sistemin daha iyi
performansı için yüksek düzeyli güvenliği değiştirmek zorunda olabilir.

Son yirmi yıl sanattan bilime geçmede bir disiplin olarak geçiş dönemi olmuştur. Şimdi
ise yalnızca kriptografiye atfedilmiş birkaç uluslar arası bilimsel konferans ve ayrıca bir
uluslar arası bilimsel organizasyon olan bu alanda büyümeyi hedefleyen IACR
(Uluslar Arası Kriptografik Araştırma Kurumu) vardır.

2.2 Kriptografide Kullanılan Temel Terminoloji ve Kavramlar

Kriptoloji: Şifre bilimidir.

Kriptografi: Kodunu yalnız alıcısının açabileceği şekilde düzenlenen mesajların içeri-
ğini gizleme ve mesajı tekrar eski orijinal haline geri dönüştürme prensipleri ve
yöntemlerini içeren gizli dönüşümler bilimidir.

Açık Metin(Plaintext): Kriptografide iletilerin şifrelenmemiş halidir. Anlaşılır orijinal
metindir. Düz metin de denir.

Şifreli Metin(Ciphertext): Dönüştürülen metindir.
16
Anahtar(Key): Sadece gönderici ve alıcının bildiği şifreleyici tarafından kullanılan kritik
bilgilerdir.

Şifreleme(Encryption): Açık metni anlaşılmaz hale getirme, şifreli metne dönüştürme
sürecidir.

Deşifreleme(Decryption): Şifreli metnin tekrar anlaşılabilir hale getirilme sürecidir.

Açık anahtar(Public Key): Bir açık anahtar şifreleme sisteminde sadece mesajın şifre-
lenmesinde kullanılan, deşifreleme de kullanılmayan anahtardır.

Kriptanaliz: Bir kriptografik sistemin girdi veya çıktılarını inceleyerek, bilgi ve anahtar
olmaksızın orijinal verilere ulaşmayı amaçlayan yasa dışı analizdir. Aynı zamanda kod
kırma (codbreaking) olarak da adlandırılır.

Kriptanalist: Kriptanalizin uygulamacılarına denir.

Kriptografik Algoritma: Şifreleme ve deşifreleme işlemlerinde kullanılan matematik-
sel işlemler bütünüdür.

Simetrik Algoritmalar: Şifreleme ve deşifreleme işlemlerinde bir (aynı) anahtarın
kullanıldığı algoritmalardır. Gizli anahtar algoritmalar da denir.

Asimetrik Algoritmalar: Şifreleme ve deşifreleme işlemlerinde ayrı ayrı anahtarların
kullanıldığı, deşifreleme anahtarının şifreleme anahtarından elde edilemediği
algoritmalardır. Açık anahtar algoritmalar da denir.

Bir şahıs veya grup (entity): Bilgiyi kullanan, kabul eden veya gönderen kişi veya
araçtır.

Bir gönderici (sender): Bir haberleşmede bilgiyi meşru olarak gönderen kişidir.

Bir alıcı (receiver): Haberleşmede bilgiyi alan kişidir.

Saldırgan(Adversary): Taraflar arasındaki haberleşmede, alan veya gönderen kişi
olmayıp güvenliği kırmaya çalışan zararlı kimsedir.

17
Saldırı: Bir kriptosistemin bir kısmını veya tamamını kırmak için yapılan başarılı veya
başarısız teşebbüstür.

Kanal: Bilginin bir şahıstan diğerine taşınmasına yardımcı olan kişi veya araçtır.

A ; tanım alfabesi olarak adlandırılan sonlu bir cümledir. Örneğin A ={0,1} ikilik
alfabesi sık sık tanım alfabesi olarak kullanılır.

M ; mesaj uzayının cümlesi olarak adlandırılır. Tanım alfabesinin sembollerinin şerit-
lerinden oluşur. M nin her bir elemanına düz metin mesajı veya kısaca düz metin
(plaintext) denir ve P ile gösterilir.

C ; şifreli metin uzayının cümlesidir. Tanım alfabesinin sembollerinin şeritlerinden
oluşur. C nin her bir elemanına şifreli metin denir.

K ; anahtar uzayının bir cümlesini belirtir. K nın bir elemanı anahtar olarak adlandırılır.
Her bir e∈ K , M den C ye birebir-örten bir eşlemeyi belirtir ve
e
E ile belirtilir.
e
E ; şifreleme fonksiyonu veya şifreleme dönüşümüdür. Her bir ∈ d K , C den M ye
yani M C D
d
→ : birebir-örten bir eşleme belirtir.
d
D ; deşifreleme fonksiyonu veya
deşifreleme dönüşümüdür.

e
E dönüşümünü bir m∈M mesajına uygulama işleminden genellikle m nin şifre-
lenmesi veya m yi şifreleme diye söz edilirken;
d
D dönüşümünü bir c şifreli metnine
uygulama işleminden ise c nin deşifrelenmesi veya c yi deşifreleme olarak söz edilir.

Bir şifreleme tasarısı; her bir ∈ e K için bir tek ∈ d K olacak şekilde
1 −
=
e d
E D
özelliğini sağlayan { ∈ e E
e
: K } şifreleme dönüşümlerinin ve buna karşılık gelen
{ ∈ d D
d
: K } deşifreleme dönüşümlerinin bir cümlesidir. Burada bütün m∈ M için
m m E D
e d
= )) ( ( dir. Bir şifreleme tasarısından bazen bir şifreleyici gibi söz edilir.

18
Önceki tanımlardaki d e ve anahtarlarından bir anahtar çifti gibi söz edilebilir ve bu
( ) d e, ile gösterilir. Dikkat edelim ki d e ve aynı olabilirler. Bir şifreleme tasarısı
oluşturmak için bir M mesaj uzayı, bir C şifre metin uzayı, bir K anahtar uzayı ve
{ ∈ e E
e
: K } şifreleme dönüşümleri cümlesi ile buna karşılık gelen { ∈ d D
d
: K }
deşifreleme dönüşümleri cümlesi seçmek gerekir.

Şifrelemede sıkça karşılaşacağımız bir başka kavram ise bit kavramıdır. Bilgisayar
sistemlerinde bütün bilgiler, ikilik (binary) sistemde 1 ve 0 şeklinde ifade edilen
karakterlerle depolanır. İkilik sistemde her bir basamağa bit denir. Örneğin 10101101
sayısı sekiz bittir. Bit kavramı nicelik ifade edebilmek için uygun bir birim
olmadığından sekiz bite eşit olan byte birimi kullanılır. Ayrıca kilobyte byte 1 1024 = ,
megabyte byte kilo 1 1024 = dır. Sıkça karşılaşılan diğer kavram hexadecimal dır. Bu ise
bir sayının onaltılık tabandaki karşılığıdır.

Pozitif n tamsayısının ikilik temsilinde bitlerin sayısı
¸ ¸
n lg 1+ dır. n nin boyutu
yaklaşık olarak n lg dır.

Kriptografideki temel bazı kavramları verdik. Şimdi konuyu kriptolojik bir yaklaşımla
günlük hayattan örneklerle açıklamaya çalışalım.

Üç kahramanımız Ayşe, Burak ve Emel olsun. Ayşe Burak'a bir mesaj göndermek
istiyor, fakat Emel kıskanç bir şekilde onları hep takip ediyor. Mesajlarının içine
bakıyor. Ayşe ve Burak her hafta sonu buluşuyorlar ve Emel'den gizli nasıl şifre
kullanacaklarını karalaştırıyorlar. Hangi harfin yerine hangi işareti kullanacaklarını
gösteren şifre anahtarını belirliyorlar. Buraya kadar anlatılan anahtar değişimi hikayesi
esasen tüm kriptoloji tarihinin kısa bir özetidir. Her iki tarafta da bulunan anahtar
sayesinde yazılarınızı şifreleyebilir ve başkalarından gizleyebilirsiniz.

Ancak, Ayşe randevuya gelmezse veya Burak başka ülkedeyse anahtarın ulaştırılması
sorunu çözülemez. Anahtarların tümünü önceden kararlaştırırlar ve bir şifre defteri
oluştururlarsa, Emel bu şifre defterini ele geçirdiğinde tüm yazışmaları izleyebilir.

Dolayısıyla anahtarın taze üretilmesi ve dağıtılması kriptoloji için ön şartlardandır.

19
Anahtarın iletilmesi sorununu şöyle çözebiliriz:

Her mektubun içine bakıldığı, sadece kilitli demir kutulardaki mektupların okunmadığı
bir posta idaresi düşünelim. Ayşe önce bir kutu yaratıyor, içine Burak'a yazdığı
mektubu koyuyor. Asma kilidini takıyor ve sadece kendisinde duran anahtarın
açabildiği asma kilidini kilitliyor. Onları izleyen Emel postadan geçen mektubu
okuyamayacaktır. Fakat Burak da Ayşe'den gelen mektubu okuyamayacaktır. Kutu eline
geçen Burak bunun üzerine bir asma kilit de kendisi takıyor ve kilidi kapatmaksızın
Ayşe'ye geri gönderiyor.

Artık Ayşe'nin eline geçen kutunun üzerinde iki kilit vardır. Kilitlenmemiş olan Burak
'ın, diğeri ise Ayşe'nin kilididir. Ayşe kendi kilidini açar, kutunun üzerinden çıkarır.
Kutunun üzerinde sadece Burak'ın kilidi kalmıştır. Ayşe bu kilidi kilitler. Artık kilidi
ne kendisi ne de Emel açabilir. Mektubu ancak anahtar sahibi Burak okuyabilir.

Böylece simetrik anahtar sistemi ile şifre anahtarının iletilmesi sorunu Diffee, Hellman
ve Merkle tarafından teorik olarak halledilmiş oluyordu. Fakat bu tekniğin sayısal
ortama uygulanabilmesi için matematik modelin tek yönlü işlemlere izin vermesi
gerekiyor. Oysa herkes bilir ki matematik alanında tek yönlü işlem yoktur. Her işlem
tersten de yapılabilir. Teorik olarak tersten yapılamayacak bir matematik işlemi yoktur
diyebiliriz. Fakat bazı işlemlerin oldukça uzun zaman almaları söz konusu olabilir.

Ronald Rivest, Adi Shamir ve Leonard Adleman (RSA) üçlüsü bu sorunu asal sayıların
çarpımı ve geri elde edilmeleri süreci ile çözmeyi başardılar. İki asal sayıyı çarparak
elde ettiğimiz sonuç çok kolay ve hızlı bir işlemdir. Fakat tersten giderek sonucu
oluşturan çarpanları bulma oldukça uzun zaman alacaktır. RSA modelinin temeli
faktorizasyon işleminin yavaşlığı üzerine kuruludur. Anahtarı oluşturmak üzere
seçtiğimiz sayıların boyutları düşünüldüğünde, çarpanları bulma işlemi mevcut en hızlı
işlemcilerle yapıldığında bile binlerce gün tutan sürelere ulaşılmaktadır.

Böylece anahtarın iletilmesi sorunu 1976 yılına gelindiğinde çözülmüş oluyordu.

Şimdi ise asimetrik bir yöntem olan genel anahtar yöntemini örnekle açıklayalım :

20
Burak yaptırdığı kilitlerden tüm posta merkezlerine dağıtmış ve Ayşe'den mektup
bekliyor. Ayşe, mektubu koyduğu kutuyu Burak'ın anahtarı ile kilitliyor ve gönderiyor.
Anahtar sadece Burak'ta olduğu için Burak mektubu okuyacaktır. Böylece gizlilik
sorunu da halledilmiştir.

Sayısal kelimelerle ifade edecek olursak; Burak'ın açık anahtarı ile şifrelenen metin,
ancak Burak'ın özel anahtarı ile açılabilecek ve Burak yazılanları deşifre edecektir.

Fakat bu sistemde Emel, Ayşe tarafından gönderiliyormuş gibi bir mektup yazarak ve
Burak'ın kilidi ile kapatarak (açık anahtarla şifreleyerek) mektubu gönderirse ne
olacaktır? Haberleşmenin gizliliğinden ve doğru kişiden geldiğinden emin olunmalıdır .

Bunun için Ayşe kendi yazdıklarını önce kendi özel anahtarı ile şifreler. Sonra Burak'ın
açık anahtarı ile şifrelediği yazıyı tekrar şifreler. Burak'a gönderir. Burak kendi özel
anahtarı ile önce açık anahtarla şifrelenmiş yazıyı ayıklar, sonra da Ayşe'nin açık
anahtarını kullanarak şifreyi çözer ve mektubu okur. Bu işlemin hiçbir aşamasında Emel
mesajı çözemeyecektir.

Burada kimlik belirleme ve kimlik denetimi önem kazanmaktadır. Kimlik belirleme
birinin yada bir şeyin kimliğinin doğrulanmasıdır. Kimlik denetimi ise ilgili kişinin
işlemi yapmaya yetkisi olup olmadığının tespitidir.

Sayısal ortamda kullanılan imza neyin üzerine atılacaktır? Yassı selüloz yüzey
olmadığına göre imza neyi imzalayacaktır ?

İşte bu noktada hashing (özetleme, sıkıştırma ) ile ilgili yazılım devreye girmektedir.
Hazırladığımız bir evrakı imzalamaya karar verdiğimizde hashing işlemi bu evrakı bir
anlamda parçalara bölüp küçültmektedir.

Bu yöntem gemi ticaretinde yıllarca kullanılmış charterparty sistemine benzemektedir.
Yukarıdan aşağıya doğru yırtılan taşıma sözleşmesinin bir parçası kaptan tarafından
saklanmaktaydı. Parçalar bir araya geldiğinde mülkiyet geçmekteydi. Sözleşmeyi
yırttığınız anda hem içeriğin değişmesini engelliyor, bu parçanın diğer parçaya uyumu
halinde malların yeni sahibine imkan sağlıyordunuz.
21
Hashing işlemi de öyle bir işlemdir ki; bununla sıkıştırdığınız veriler (hash değeri), yani
evraka yazdıklarınız adeta birçok yerinden yırtılıp çok küçük boyuta (mesaj özeti)
indirilmekte, bir tür yığın oluşturulmaktadır. Bu küçülmüş içerik ile imza birbirine
harmanlanmaktadır. Böylece evrak artık değişemez hale gelmekte aynı zamanda
imzanızı da içermektedir. Yassı selüloz yüzeyi düşünecek olursak; kağıt yırtılmış,
katlanmış ve sonra sıcak mum mühür ile kapatılıp kimlik damganız üzerine vurulmuş
demektir.

Hashing sonucu elde edilen matematik algoritmik değere hash değeri adı verilir. Hash
değerinin en büyük özelliği o dokümanla sıkı sıkıya bağlı oluşudur. Yani o doküman
bir tek hash sonucunu mümkün kılabilir ve bir hash değeri sadece bir tek dokümana
uygulanabilir. Böylece bir kere dijital olarak imzalanmakla, belge üzerinde değişiklik
yapılması imkansız olmaktadır.

Kriptografik hash fonksiyonlarını, çeşitlerini ve uygulamalarını sonraki bölümlerde
ayrıntılı olarak işleyeceğiz.

Bir şifre sistemi algoritmalardan, düz metinlerden, şifre metinlerden ve anahtarlardan
oluşur. Kriptografik algoritma, şifreleme algoritması adı da verilen şifreleme ve şifre
çözümü için kullanılan matematiksel işlemler topluluğudur. Algoritmaların güvenlik
sorununu, günümüz kriptografisi anahtar ile çözmektedir. Bu anahtar çok değişik
değerler alabilen herhangi bir anahtar olabilir. Şifreleme ve deşifreleme için bir anahtar
kullanan algoritmalar olduğu gibi, kimi algoritmalar da farklı şifreleme anahtarı ve
deşifreleme anahtarı kullanır. Anahtar temelli algoritmalar simetrik ve asimetrik
algoritmalar olmak üzere iki tiptir.

Simetrik anahtar şifreleme tasarısından bahsedelim:

2.3 SİMETRİK ANAHTAR ŞİFRELEME

Simetrik anahtar şifrelemede; şifreleme anahtarından deşifreleme, deşifreleme
anahtarından şifreleme anahtarı hesaplanabilir. Çoğu simetrik şifreleme de şifreleme ve
deşifreleme anahtarları aynıdır. Gönderici ve alıcının iletişime başlamadan önce ortak
bir anahtar üzerinde anlaşmaları gerekir.

22
Simetrik anahtar algoritmaların güvenliği anahtara dayanır; anahtarın açığa çıkması
herkesin mesajları şifreleyebileceği ve deşifreleyebileceği anlamına geleceğinden
iletişimin gizli kalması gerektiği sürece anahtar da gizli kalmalıdır.

Tanım 2.1. K anahtar uzay olmak üzere { ∈ e E
e
: K } şifreleme ve { ∈ d D
d
: K }
deşifreleme dönüşümlerinin cümlelerinden oluşan bir şifreleme tasarısı düşünelim. Eğer
) , ( d e anahtar çifti için e yi bilerek d yi ve d yi bilerek e yi belirlemek kolay ise
bu şifreleme tasarısına simetrik anahtar şifreleme tasarısı denir. Tek anahtarlı, gizli
anahtarlı veya özel anahtarlı algoritmalar gibi terimler de kullanılır.

Bilinen en basit simetrik şifrelerden biri Caesar Şifresidir. Eski Roma İmparatoru Julius
Caesar'ın kullandığı bu şifre bütün kriptografiye giriş yazılarının standart örneğidir.
Caesar Şifresi şu şekilde kullanılır.

Caesar Şifresi

Alfabenin bütün harfleri bir kağıt şerit üzerine yazılır, şeridin başı sonuna yapıştırılır.
Gizli anahtar veya şifrenin değişkeni olarak 1 ile alfabedeki harf sayısının 1 eksiği
arasında bir k sayısı belirlenir. Şifrelenecek metindeki her harfin yeri şerit üzerinde
bulunur, sağa doğru k tane harf atlanır; şifre metin oluşturulurken her harfin yerine,
bulunan yeni harf yazılır.

Şifre metni deşifrelemek için aynı işlem, şeridi aksi yönde çevirerek gerçekleştirilir.
Şifreyi çözebilmek için alıcı ve gönderenin birbirlerine gizlice k anahtarını (sayısını)
iletmeleri gerekir. Açık metindeki her harfi belli bir kurala göre başka bir harfe
dönüştürmeye dayanan bu şifrelemeye karakter şifreleme veya monografik şifreleme
denir.

Juilus Caesar tarafından kullanılmış, her harfi kendisinden 3 sonraki harf ile değiştiren,
P açık metindeki her harfin sayısal karşılığını ve C şifre metindeki harflerin sayısal
karşılığını göstermek üzere modüler aritmetiğe dayanan şifre ise şöyledir:

23
Herhangi bir açık metni ) 29 (mod 3 + ≡ P C , 28 0 ≤ ≤ C bağıntısını kullanarak
şifrelerken, şifreli metni çözmek için ) 29 (mod 3 − ≡ C P , 28 0 ≤ ≤ P bağıntısını
kullanırız. İlk olarak her harf kendisine karşılık gelen sayısal denkliklere dönüştürülür.

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Z Y V Ü U T Ş S R P Ö O N M L K J İ I H Ğ G F E D Ç C B A

Daha sonra yukarıdaki şifreleme bağıntısı kullanılarak

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Z Y V Ü U T Ş S R P Ö O N M L K J İ I H Ğ G F E D Ç C B A

C B A Z Y V Ü U T Ş S R P Ö O N M L K J İ I H Ğ G F E D Ç
2 1 0 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3

tablosu elde edilir. Tabloda yukarıdan aşağıya şifreleme yapılırken, aşağıdan yukarıya
da deşifreleme yapılır.

Örnek 2.1. Şifrelemek istediğimiz metnimiz “BU MESAJ ÇOK ÖNEMLİDİR” olsun.
Mesaja karşılık gelen sayısal denklikleri yazmadan önce belli kelimelerin tanınmasına
dayanan başarılı şifre çözümlerini engellemek için mesajı beşli bloklara bölelim.
BU MESAJ ÇOK ÖNEMLİDİR
BUMES AJÇOK ÖNEML İDİR

Harflerin sayısal denkliklere dönüştürülmesiyle;
1 24 15 5 21 0 12 3 17 13 18 16 5 15 14 11 4 11 20
elde ederiz.
) 29 (mod 3 + ≡ P C Caesar dönüşümünün uygulanmasıyla
4 27 18 8 24 3 15 6 20 16 21 19 8 18 17 14 7 14 23
oluşturulur. Sayıların harflere dönüşümü ile

DYÖĞU ÇMFRN SPĞÖO LGLT mesajımızın şifrelenmesi tamamlanır.

Alıcı mesajı deşifre ederken ilk olarak harfleri sayıya dönüştürür. ) 29 (mod 3 − ≡ C P ,
28 0 ≤ ≤ P dönüşümünü kullanarak elde ettiği yeni sayısal değerleri tablodan
yararlanarak harflere çevirip, blokları birleştirerek mesajı okur.
24

Caesar şifresi, k alfabedeki harflerin değişme boyutunu temsil eden anahtar olmak
üzere ) 29 (mod k P C + ≡ , 28 0 ≤ ≤ C değiştirme dönüşümü ile tanımlanan benzer
şifrelerin ailesindendir.

Daha genel olarak b a ve tamsayıları için 1 ) 29 , ( = a olmak üzere ) 29 (mod b aP C + ≡ ,
28 0 ≤ ≤ C afin dönüşümü de düşünülebilir.

Simetrik anahtar şifreleme akış ve blok şifreleri olarak iki gruba ayrılır.

2.3.1 Akış Şifreleri

Simetrik anahtar şifreleme tasarılarının en önemli sınıflarından birini akış şifreleri
oluşturur. Birbirine eş uzunlukta bloklara sahip çok basit blok şifreler oldukları da
söylenebilir. Bunların daha kullanışlı olmalarının sebebi şifreleme dönüşümünün,
şifrelenecek açık metindeki her bir sembol için değişebilir olmasıdır. Akış şifreleri
donanımda blok şifrelerden daha hızlıdır. Yine de literatürde tamamen özelleştirilmiş
çok az akış şifresi vardır. Bu günümüzde daha avantajlı olan akış şifrelerinin gelecek
yıllarda da daha somut, açık amaçlar için kullanılabileceği şeklinde ifade edilebilir.
Bunun aksine blok şifreleme tasarılarının bazıları yayımlanmış ve halka açık alanlarda
standart hale gelmiştir.

Bu şifreleme sisteminde algoritmanın girdisi yalnızca anahtardır. Algoritma anahtardan
rasgele bir diziye çok benzeyen anahtar akış dizisi üretir. Daha sonra bu anahtar akış
dizisinin elemanları ile açık metin veya şifre metin dizisinin elemanları ikilik tabanda
toplanarak şifreleme veya deşifreleme işlemi tamamlanır. En iyi bilinen akış şifresi
Vernam Şifresidir.

Tanım 2.2. K K K K şifreleme dönüşümlerinin bir cümlesi için anahtar uzay olsun. Bir anah-
tar akışı (key stream) ∈
i
e e e ,..., ,
2 1
K K K K sembollerinin bir dizisidir.

Tanım 2.3. A AA A, q sembollerinin bir alfabesi ve
e
E , ∈ e K K K K olmak üzere bir uzunluğun-
daki bloklarla basit yerine koyma şifresi olsun. ...
3 2 1
m m m açık metin şeridi ve ...
3 2 1
e e e
K KK K dan alınan bir anahtar akışı olsun. Bir akış anahtar şifresi, ...
3 2 1
m m m açık metnini,
25
) (
i e i
m E c
i
= dönüşümünü kullanarak ...
3 2 1
c c c şifre metnini üreten şifreleme sistemidir.
i
d ,
i
e nin inversini gösterecek olursa bu taktirde
i i d
m c D
i
= ) ( dönüşümü şifre metin
şeridini deşifre eder.

Vernam Şifresi

Vernam şifresi, A AA A ={ } 1 , 0 alfabesi üzerinde tanımlı bir akış şifresidir. Bir
t
m m m ...
2 1

ikilik mesajı üzerine uygulanır ve
t
c c c ...
2 1
şifre metnini oluşturur. Burada
i i i
k m c ⊕ = , t i ≤ ≤ 1 dır.
Eğer anahtar keyfi seçilmiş ve bir daha tekrar kullanılmaz ise Vernam Şifresi tek
kullanımlık şerit (One-Time-Pad) veya tek kullanımlık sistem olarak adlandırılır. Tek
kullanımlık şerit yollanacak mesaj kadar uzun olan bir anahtardır. Şeritteki her harf
rasgele seçilmiş olmalıdır. Mesajdaki her harf ve şeritteki o harfe karşılık gelen harf
2.1 Örnek de olduğu gibi sayısal değerlerine çevrilip, toplanır. Şifreyi çözmek için aynı
anahtar şeridi ile işlem tersinden yapılır; bu sefer şeritteki harfler mesajdaki harflerden
çıkarılır. Toplama ve çıkarma işlemleri yine modüler aritmetiğe dayalı olarak yapılır.
Vernam Şifresi sadece şifre metin saldırılarına (bakınız 3.9) mutlak güven sağlar.

Örnek 2.2.

Şifresiz metin:BUMESAJTEKKULLANIMLIKŞERİTİLEŞİFRELENMİŞTİR
Şerit : DLYOKZRHFİVOUNLUJTEFIÇÜSJBŞLAKĞİHHDESZVZILÖ
Şifre metin : EHKŞEZÇÇİUIJHBLİŞHPNTÜBJTUDZEFPOALÖIĞLĞSDÜH

Harfleri rasgele seçilmiş bir şeride, harfleri düzenli olan bir mesaj eklersek elde
edeceğimiz harfler yine rasgele olacaktır. Şifreli mesajı çözmenin tek yolu hangi şeridin
kullanıldığını tahmin etmektir. Şerit ile mesaj aynı uzunlukta olduğundan bu da şeridin
bir kere kullanılmasını gerektirir. Şeritle şifrelenmiş mesajdan sızan tek bilgi, onun
varlığı ve uzunluğudur.

Bu tür şeritler eskiden tehlike anında hızlıca yakılabilmek için selülozdan imal
edilirmiş. Elçilikler ülkeleri ile güvenli iletişim sağlamakta bu yöntemleri kullanır,
26
şeritler diplomatik kurye ile getirilirmiş. Tek kullanımlık şeridin oldukça hantal bir
kullanıma sahip olduğunu görüyoruz.

2.3.2 Blok Şifreler

Simetrik anahtar blok şifreler kriptografik sistemlerin en önemli ve en iyi bilinen elman-
larıdır. Tek başlarına güvenliği sağlayabilmelerine rağmen hiçbir blok şifre bütün
uygulamalar için uygun değildir.

Bir blok şifre, A AA A alfabesi üzerinde sabit t uzunluğundaki şeritlere aktarılabilen açık
metni çözebilen ve aynı anda bir bloğu şifreleyen şifreleme tasarısıdır. Diğer bir
ifadeyle bir blok şifre n blok uzunluğu olmak üzere bitlik n − bir açık metin bloğunu
bitlik n − şifre metin bloklarına dönüştüren bir fonksiyondur.

Bir blok şifre E şifreleme,
1 −
E deşifrelemede kullanılmak üzere iki eş algoritmadan
oluşur. Algoritmaların her ikisi de girdi olarak bitlik n − bir blok ve bitlik k − bir
anahtarı alır; bitlik n − bir çıktı bloğu üretir.

K k ∈ ∀ herhangi sabit bir anahtar ve P herhangi bir blok olmak üzere P P E E
k k
=

)) ( (
1

dır. Burada deşifreleme fonksiyonu şifreleme fonksiyonunun inversidir.

Bazı şifreler değişik uzunluklara sahip olmalarına rağmen blok uzunluğu genellikle
− 64 bit veya − 128 bittir. 1990'ların ortalarına kadar en yaygın blok uzunluğu − 64 bit
iken yeni düzenlemelerde − 128 bitten daha uzun blok kullanımına dönüldü. k anahtar
boyutu için ise 40, 56, 64, 80, 128, 192 ve − 256 bitlik anahtarlar tercih edilirken, 2005
ten itibaren kaba güç saldırılarını (bakınız 3.9) engellemek için minimum anahtar
uzunluğu − 80 bit alınmaktadır.

Çoğu blok şifreler basit bir fonksiyonunun tekrar tekrar uygulanması ile oluşurlar. Bu
blok şifrelere tekrarlı blok şifreler ( iterated blok cipher ) denir. Her bir tekrar döngü,
devir ; tekrarlanan fonksiyon ise döngü fonksiyonu olarak adlandırılır.

Genellikle − 64 bit ve − 128 bitlik sabit uzunluklu bloklar üzerinde işlem yapan blok
şifre daha uzun mesajları şifrelemek için bazı işlem modları kullanır. Bunları şu şekilde
sıralayabiliriz.
27
Blok Şifre İşlem Modları

1. ECB ( Elektronik Kod Kitabı): En basit şifreleme modudur. Mesaj bloklara bölünür
ve her biri ayrı ayrı şifrelenir. Bu metodun dezavantajı benzer düz metin bloklarını
benzer şifre bloklarına dönüştürür; veri kalıbını gizleyemez.

2. CBC (Şifre-Blok-Zincirleme): Şifre-blok-zincirleme modunda her bir düz metin bloğu
şifrelenmeden önce bir önceki şifre metin bloğu ile toplanır. Bu yöntemle her bir şifre
metin bloğu bütün düz metin bloklarına bağlanmış olur. İleride yararlanacağımız için
CBC algoritmasını kısaca verelim:
Algoritma 2.1. (CBC-Şifre Blok Zincirleme )
GİRDİ: k- bitlik K anahtarı; n-bitlik başlangıç değeri (initialization vector) IV ; n-bitlik
E blok şifre; n-bitlik
t
x x x ,... ,
2 1
açık metin blokları
ÖZET:
t
c c c ,..., ,
2 1
şifre metin blokları üretmek; açık metni yeniden elde etmek için
deşifrelemek.
1.Şifreleme: .
0
IV c ← t j ≤ ≤ 1 için ) (
1 j j K j
x c E c ⊕ ←


2.Deşifreleme: .
0
IV c ← t j ≤ ≤ 1 için ) (
1
1 j K j j
c E c x


⊕ ← .

Şekil 2.2., CBC- algoritmasının işleyişini verir.

3.CFB ve OFB (Şifre-geribildirim ve Çıktı-Geribildirim ): Bu mod blok şifreyi akış
şifresine dönüştürür. Anahtar akış blokları oluşturur ve şifre metni elde etmek için düz
metin blokları ile toplanır. CFB de anahtar akış bloğu önceki şifre metin bloğunun
şifrelenmesi ile hesaplanır. OFB ise sonraki anahtar akış bloğunu, önceki anahtar akış
bloğunun şifrelenmesi ile elde eder.

CFB OFB
) (
1 −
⊕ =
i K i i
C E P C
i i i
O P C ⊕ =
IV C =
−1
) (
1 −
=
i K i
O E O
IV O =
−1


28
4. CTR ( Sayaç): Sayaç modu OFB de olduğu gibi bir blok şifreyi akış şifresine
dönüştürür. Bir sayacın değerlerini şifreleyerek sonraki akış anahtar bloğunu üretir.
Sayaç, uzun süreli tekrarlamayı garanti etmeyen, bir dizi üreten, herhangi basit bir
fonksiyon olabilir.

ECB hariç diğer bütün modlarda kullanılan IV başlangıç vektörü ( initialization vector),
ilk gerçek blok için işlemleri başlatmada kullanılan bir çeşit geçici bloktur. Gizli
olmasına gerek yoktur. Fakat aynı anahtarla tekrar kesinlikle kullanılmamalıdır. CBC ve
CFB modlarında bir IV nin tekrar kullanımı bilginin sızmasına neden olabilir.



Şekil 2.2. (CBC) Şifre Blok Zincirleme Şifrelemesi (IV; Başlangıç Değeri).

Blok şifreler yerine koyma şifreleri ve yer değiştirme şifreleri olmak üzere iki farklı
kategoride incelenebilir. Ayrıca bu şifrelemelerin bileşkesi ile daha kuvvetli şifrelemeler
elde edilebilir. Bu şifrelemeleri örneklerle destekleyerek kısaca incelemeye çalışalım.

a) Basit Yerine Koyma Şifreleri (Substitution Ciphers)

A A A A bir alfabe, M MM M ; A AA A üzerinde t uzunluğundaki bütün şeritlerin cümlesi olsun. K KK K ise A AA A
cümlesi üzerindeki bütün permütasyonların cümlesini göstersin. ∈ ∀e K KK K için bir
e
E
şifreleme dönüşümü aşağıdaki gibi tanımlanır:

c c c c m e m e m e m E
t t e
= = = ) ... ( )) ( )... ( ) ( ( ) (
2 1 2 1
, ) ... (
2 1 t
m m m m =
Blok Şifre
Şifreleme Anahtar
IV
Düz Metin
Şifre Metin
Blok Şifre
Şifreleme Anahtar
Şifre Metin
Düz Metin
Blok Şifre
Şifreleme
Şifre Metin
Düz Metin
Anahtar
29

Başka bir ifadeyle t-şeridinin içindeki her bir sembol, sabit bir e permütasyonuna göre
A AA A daki başka sembollerin yerini alır.
) ... (
2 1 t
c c c c = 'yi deşifrelemek için
1 −
= e d permütasyonu kullanılarak
m m m m c d c d c d c D
t t d
= = = ) ... ( )) ( ).... ( ) ( ( ) (
2 1 2 1
ile tanımlanır.

Caesar Şifresi yerine koyma şifresine örnek olarak gösterilebilir.

b) Çoklu Alfabetik Yerine Koyma Şifreleri

Bir çoklu alfabetik yerine koyma şifresi, A A A A alfabesi üzerinde t uzunluğundaki blokların
aşağıdaki özellikleri sağladığı blok şifredir:

(i) K K K K anahtar uzayı, t - nin ) ,... , (
2 1 t
p p p bütün sıralı permütasyonlarının cümlesinden
oluşur. Burada t i ≤ ≤ 1 olmak üzere her bir
i
p permütasyonu A A A A cümlesi üzerinde
tanımlıdır.
(ii) ) ,..., , (
2 1 t
p p p e = anahtarı altında ) ,..., , (
2 1 t
m m m m = mesajının şifrelenmesi
)) ( ),..., ( ), ( ( ) (
2 2 1 1 t t e
m p m p m p m E = ile verilir.
(iii) ) ,..., , (
2 1 t
p p p e = anahtarına karşılık olarak ) ,..., , (
1 1
2
1
1
− − −
=
t
p p p d deşifre anahtarı
kullanılır.

Örnek 2.3. (Vigenere şifreleri) A AA A= { } Z Y V C B A , , ,..., , , ve 3 = t olsun. ) , , (
3 2 1
p p p e =
seçelim.
1
p her harfi alfabede kendisinin üç sağındaki harfe;
2
p her harfi kendisinin
yedi sağındaki harfe ve
3
p de her harfi kendisinin on sağındaki harfe dönüştürsün.
Buna göre mesajımıza şifreyi uygulayalım:

= m ANAHTAR İPTAL EDİLDİ olsun. Mesajımızı üçlü bloklara bölelim.
ANA HTA RİP TAL EDİ LDİ olup,
= = ) (m E c
e
ÇUI JBI TÖA VGU ĞİS OİS elde edilir.

Çoklu alfabetik yerine koyma şifreleri, basit yerine koyma şifrelerinden daha
avantajlıdır.

30
c) Basit Yer Değiştirme Şifreleri (Transposition Ciphers)

t- blok uzunluklu bir simetrik anahtar şifreleme şeması düşünelim. K KK K , } ,..., 2 , 1 { t cümlesi
üzerindeki bütün permütasyonların cümlesi olsun.

∈ ∀e K K K K için şifreleme fonksiyonu; ) ... ( ) (
) ( ) 2 ( ) 1 ( t e e e e
m m m m E = , M MM M mesaj uzayı olmak
üzere ∈ = ) ... (
2 1 t
m m m m M MM M şeklinde tanımlanır. Bu şekildeki bütün dönüşümlerin
cümlesine basit yer değiştirme şifresi denir. Ayrıca e ye karşılık gelen deşifreleme
anahtarı ise
1 −
= e d invers permütasyonu olup, ) ... (
2 1 t
c c c c = yi deşifrelemek için
) ... ( ) (
) ( ) 2 ( ) 1 ( t d d d d
c c c c D = hesaplanır.

Bir yer değiştirme şifresi bir bloğun içindeki verilen sembollerin sayısını korur. Şu
halde kolaylıkla kriptanaliz edilebilir.

Örnek 2.3. 6 = t ve ) 631542 ( = e ile basit yer değiştirme şifresini düşünelim. Buna
göre = m CIPHER , = c RPCEHI olarak şifrelenir. Deşifreleme de ise ) 362541 ( = d
permüyasyonu kullanılır.

d) Çarpım Şifreleri (Product Ciphers)

Basit yer değiştirme ve yerine koyma şifreleri tek başlarına yüksek düzeyde güvenliği
sağlayamazlar. Bu dönüşümlerin birleştirilmesiyle daha güçlü şifreler elde edilebilir. En
pratik ve etkili simetrik anahtar sistemler çarpım şifreleridir.

Bir çarpım şifresi 2 ≥ t için
t
k k k
E E E ...
2 1
dönüşümlerin bir bileşimidir. Burada t i ≤ ≤ 1
ve
i
k
E , yer değiştirme veya yerine koyma şifresinden biridir.

Çarpım şifresinin temel fikri tek başına yetersiz olan birkaç basit işlemin birleşmesiyle
daha karmaşık bir şifreleme dönüşümü inşa etmektir. Bir yerine koyma ve yer
değiştirme şifresinin bileşkesi devir (round) olarak adlandırılır.

Örnek 2.3. M, C, K altı uzunluğunun bütün ikilik şeritlerinin bir cümlesi olsun. M
deki elemanların sayısı 64 2
6
= 'tür. ) ... (
6 2 1
m m m m = olsun ve
31
k m m E
k
⊕ = ) (
) 1 (
, ∈ k K ) ( ) (
3 2 1 6 5 4
) 2 (
m m m m m m m E = tanımlansın.
Burada ⊕ aşağıdaki gibi tanımlı XOR fonksiyonudur.
0 0 0 = ⊕ , 1 1 0 = ⊕ , 1 0 1 = ⊕ , 0 1 1 = ⊕

) 1 (
k
E , çoklu alfabetik yerine koyma şifresi ve
) 2 (
E , yer değiştirme şifresidir.
) 2 ( ) 1 (
E E
k
ise
bir devirdir.

DES (Data Encryption Standard)

DES veri şifreleme standardı en iyi bilinen simetrik anahtar blok şifredir. 1974 yılında
IBM tarafından geliştirilmiş ve 1977 yılında yasal olarak kabul edilmiştir. 64-bitlik açık
metin bloklarından 64-bitlik şifre metin bloklarını oluşturan bir Feistel şifresidir.
Şifrelemede ve şifreyi çözerken her ikisinde de aynı algoritma ve anahtarlar kullanılır.
DES işleminin anahtar uzunluğu − 56 bittir. Anahtar genellikle − 64 bit olarak seçilir
fakat her sekizinci biti yani 8.,16.,24.,32.,40.,48.,56.,64. bitler ihmal edilir.

Düz metin, ilk permütasyondan sonra yarısı sağda yarısı solda her biri − 32 bit
uzunluğunda iki parçaya bölünür. Daha sonra f fonksiyonu ve anahtar ile birleş-
tirilerek sonraki adıma geçilir. Aynı işlem 16 kez tekrarlanır. Son permütasyondan
sonra algoritma tamamlanarak biter.

Diğer blok şifreler ise FEAL, IDEA, SAFER K-64, RC5 'dır.

2.4 AÇIK ANAHTAR ŞİFRELEME

Açık anahtarlı kriptografi, her kullanıcıya; biri kullanıcıların bilgisine açık, diğeri
yalnızca kullanıcının kendisinde bulunan iki anahtarın verildiği şifreleme yöntemlerinin
genel adıdır. Asimetrik kriptografi veya çift anahtarlı kriptografi de denilmektedir. Bu
yöntemde kullanılan açık ve gizli anahtarlar birbirleriyle bir matematiksel ilişki
içerisindedirler. Bir gizli anahtarın şifrelediği veri, ancak o gizli anahtara karşılık gelen
açık anahtarla çözülebilir.

Bilgiyi gönderen taraf, bilginin güvenli bir şekilde transferini sağlamak için, gönderilen
bilgiyi alıcının açık anahtarı ile şifreler. Şifrenin çözümü sadece bu açık anahtara
32
karşılık gelen alıcının gizli anahtarı ile mümkündür. Ayrıca bilginin bütünlüğünün
sağlanması için gönderilen mesaj matematiksel bir yöntemle özetlenir. Bu özetin
özelliği, değiştirilmemesi veya en ufak bir değişiklik yapıldığında bunun fark edilmesini
sağlamasıdır. Gönderici, şifrelenmiş bilgiye ek olarak bu özeti de alıcıya gönderir. Alıcı,
şifresini çözdüğü bilgiyi özetleyerek, eklenmiş özetle karşılaştırır. Özetlerin aynı olması
mesajın değiştirilmediğini gösterir. Diğer önemli nokta, alıcı iletilen mesajın doğru
kişiden geldiğinden emin olmalıdır. Bunun için gönderen, mesajı sayısal olarak imzalar.
Sayısal imza (dijital imza) açık anahtar şifrelemenin sağladığı en önemli yararlardan
biridir. Sayısal imzalar mesajın gerçekten istenilen göndericiden gelip gelmediğini
doğrulamak için kullanılırlar.

Açık anahtar şifreleme sisteminde her bir şahıs e açık anahtarına ve buna karşılık gelen
d özel anahtarına sahiptir. Burada simetrik anahtar şifrelemenin aksine e den d yi
hesaplamak imkansız olmalıdır.

Tanım 2.2. K K K K , anahtar uzay olmak üzere sırasıyla { ∈ e E
e
: K K K K } ve { ∈ d D
d
: K K K K }
şifreleme-deşifreleme dönüşümlerinin cümlesinden oluşan bir şifreleme tasarısı
düşünelim. Eğer her birleştirilmiş ) , ( d e şifreleme-deşifreleme anahtar çifti için e
anahtarı açıktan oluşturulurken, d anahtarı gizli tutuluyorsa bu şifreleme tasarısına açık
anahtar şifreleme tasarısı denir.

Açık anahtarlı yapılar simetrik anahtarlı yapılara göre daha yavaştır. Açık anahtar
algoritmalar daha çok küçük dokümanların şifrelenmesi veya mesajların imzalanması
gibi uygulamalarda kullanılırken, simetrik anahtar algoritmalar büyük hacimli verilerin
şifrelenmesinde kullanılır.

En yaygın kullanılan açık anahtar algoritması; Ron Rivest, Adi Shamir ve Len Adleman
tarafından 1977 yılında geliştirilen RSA algoritmasıdır.

RSA Açık Anahtar Şifreleme

En çok bilinen ve en pratik açık anahtarlı tasarım olarak kabul edilen algoritma 1977 '
de Rivest, Shamir ve Adleman tarafından önerildi. Modüler aritmetiği kullanarak
üstelleştirmeye dayanan açık anahtarlı bu şifreleme algoritması, mesajların
33
şifrelenmesinde ve sayısal imza oluşturulmasında kullanılır. Algoritmanın güvenliği
büyük sayıların çarpanlarının hesaplanmasının zorluğuna dayanır.

Kısaca RSA problemini açıklayalım:

RSA Problemi

q p ve farklı tek asallar olmak üzere pq n = tamsayısı verildiğinde , (e 1 )) ( = n φ
olacak şekilde bir pozitif e tamsayısı ve ) (mod n c m
e
= olacak şekilde c tamsayılarını
bulmaktır. Başka bir ifadeyle RSA problemi, n bir bileşik bir tamsayı olmak üzere
n mod e göre e-inci kökleri bulmaktır. RSA problemini tanıdıktan sonra RSA açık
anahtar şifreleme metodu ile ilgili iki algoritmayı verelim.

Algoritma 2.1. (RSA Açık Anahtar Şifreleme İçin Anahtar Oluşumu) RSA açık
anahtarı ve ona karşılık gelen özel anahtarı oluşturmak isteyen A şahsı aşağıdaki
metodu uygular.

1. Her biri birbirinden farklı ve yeterince büyük rasgele q p, asallarını oluşturur.
2. q p n . = ve ) 1 ).( 1 ( − − = q p φ 'i hesaplar.
3. ( 1 )) ( , = n e φ olacak şekilde ) ( 1 n e φ < < tamsayısı seçer.
4. Genişletilmiş Euclidean Algoritmasını kullanarak )) ( (mod 1 n ed φ = olacak şekilde bir
tek ) ( 1 n d φ < < tamsayısını bulur.
5. A şahsının açık anahtarı } , { n e ve özel anahtarı da } , { n d olur.

Algoritma 2.2. ( RSA Açık anahtar Şifreleme): Bir B şahsı A şahsı için m mesajını
şifrelemesi ve A şahsının bu mesajı deşifrelemesi aşağıdaki şekildedir.

Şifreleme : B şahsı
1. A nın açık anahtarı {e,n} yi elde eder.
2. Varsa m mesajındaki harfleri | | 1 , 0 − n aralığında sayısal denkliklere dönüştürür.
3. ) (mod n m c
e
≡ i hesaplar.
4. c şifre metnini A ya gönderir.
Deşifreleme : A şahsı
34
1. Kendi özel anahtarı {n,d} yi kulanarak ) (mod n c m
d
≡ i hesaplar.
2. m mesajını deşifreler.

Örnek 2.4. 7 = p ve 17 = q farklı iki tek asal seçelim.
Bu durumda 119 . = = q p n olup,
96 ) 1 ).( 1 ( ) ( = − − = q p n φ bulunur.
1 )) ( , ( = n e φ , 1 ) 96 , ( = e olacak şekilde bir e tamsayısı seçelim. 5 = e alalım.
Bu durumda şifreleme anahtarı, açık anahtarımız } 119 , 5 { dır.

Deşifreleme anahtarı için )) ( mod( 1 . n e d φ = , n d ≤ ≤ 0 olacak şekilde d tamsayısı
bulunur. 1 5 . ≡ d ) 96 (mod olacak şekilde 77 = d dır.
Bu durumda deşifreleme anahtarı, gizli anahtarı } 119 , 77 { olacaktır.

Açık metnimiz 19 = m olsun.
) (mod n m c
e
= den ) 119 (mod 19
5
= c , 66 = c şifreli metnimizdir.
) (mod n c m
d
= den ) 119 (mod 66
77
= m , 19 = m açık metni elde ederiz.

Örnek 2.5. (RSA Şifreleme): 31 = p , 47 = q ve 13 = e olsun. Mesajımız
''MESAJI YENİLEYİN'' olsun. Mesajımızı ikilik bloklara ayıralım ve harfleri sayısal
denkliklerine dönüştürelim. Sondaki boşluğu doldurmak için keyfi olarak A harfini
seçelim.

ME SA JI YE Nİ LE Yİ NA
15 05 21 00 12 10 27 05 16 11 13 05 27 11 16 00
Şimdi 15 05 , 21 00, 12 10 , 27 05, 16 11, 13 05, 27 11, 16 00 bloklarını
sırasıyla
8 7 6 5 4 3 2 1
, , , , , , , m m m m m m m m ile adlandıralım ve 8 1 ≤ ≤ i olmak üzere
) 47 . 31 (mod
13
i i
m c ≡ denkliğini kullanarak birer birer şifreleyelim.

) 1457 (mod 189 ) 1505 (
13
1
≡ ≡ c ) 1457 (mod 681 ) 1611 (
13
5
≡ = c
) 1457 (mod 1131 ) 2100 (
13
2
≡ = c ) 1457 (mod 1109 ) 1305 (
13
6
≡ = c
) 1457 (mod 652 ) 1210 (
13
3
≡ = c ) 1457 (mod 896 ) 2711 (
13
7
≡ = c
35
) 1457 (mod 698 ) 2705 (
13
4
≡ = c ) 1457 (mod 14 ) 1600 (
13
8
≡ = c

Böylece şifre metin 0189 1131 0652 0698 0681 1109 0896 0014 olarak bulunur.
Aynı şifre metni deşifrelemek için 13 ün ) 1457 ( modφ ye göre inversi olan d sayısı
bulunur ve ) (mod n c m
d
≡ eşitliği kullanılır.

İlk olarak dünyaya duyurulan diğer bir açık anahtar algoritması ise Diffie- Hellman'nın
1976 yılındaki ''New Directions in Cryptography'' adlı makalelerinde yayımlanan Diffie
Hellman algoritmasıdır. Algoritmanın amacı, iki kullanıcının bir anahtarı güvenli bir
şekilde birbirlerine iletmeleri ve daha sonra da bu anahtar yardımı ile şifreli mesajları
birbirlerine gönderebilmelerini sağlamaktır. Dolayısıyla algoritma anahtar değişimi ile
sınırlıdır. Algoritmanın dayandığı problemi kısaca verelim.

Diffie-Hellman Problemi

Bir p asalı ve
*
p
Z ın bir α üreteci ve ) (mod ), (mod p p
b a
α α verildiğinde ) (mod p
ab
α
yi bulma problemidir.

Diffie Hellman problemine bağlı olarak El Gamal algoritması bir genel anahtar
algoritması şeklinde 1985'te T. El Gamal tarafından tasarlanmıştır. El Gamal farklı
logaritmik problemler üzerine dayandırılmış bir genel anahtarlama kripto sistemidir.
Şifreleme ve sayısal imza algoritmalarından oluşur. Şifreleme algoritması temelde
Diffie-Hellman problemine dayanır.

Algoritma 2.3. (El Gamal Açık Anahtar Şifreleme Tasarısı İçin Anahtar Oluşumu)

Her bir şahıs bir açık anahtarı ve ona karşılık gelen özel anahtarı şu şekilde oluşturur:

1. Yeterince büyük bir p asalını ve p mod ye göre
*
p
Z çarpımsal grubunun bir α
üretecini bulur. (α üretecini hesaplamak için
*
p
Z dan bir α elemanını seçer ve
k i ≤ ≤ 1 iken
i
p
n
b α ← yi hesaplar. Eğer 1 = b ise başa döner aksi taktirde çözüm α
dır. Burada
k
e
k
e e
p p p n p ... 1
2 1
2 1
= = − dır.)
36
2. 2 1 − ≤ ≤ p a olacak şekilde rasgele bir a tamsayısı seçer ve p
a
mod α yi hesaplar.
3. ) , , (
a
p α α açık anahtar ve a özel anahtardır.

Algoritma 2.4. (El Gamal Açık Anahtar Şifreleme) B şahsı A için bir m mesajını
aşağıdaki gibi şifreler ve A şahsı da bu şifre mesajı deşifreler.

Şifreleme:

1. A nın açık anahtarı ( ) , ,
a
p α α yı elde eder.

2. Mesajı { } 1 ,..., 2 , 1 , 0 − p cümlesinde bir m tamsayısı olarak ifade eder.

3. 2 1 − ≤ ≤ p k olacak şekilde rasgele bir k tamsayısı seçer.

4 ) (mod p
k
α γ = ve ) (mod ) .( p m
k a
α δ = yi hesaplar.

5. ) , ( δ γ = c şifre metnini A ya gönderir.

Deşifreleme: c den m açık metnini tekrar oluşturmak için A şahsı;

1. a özel anahtarını kullanarak ) (mod
1
p
a p − −
γ yi hesaplar. ) (
1 ak a a p − − − −
= = α γ γ

2. ( ) ) (mod p m
a
δ γ

≡ yi oluşturur.

Gerçekten ) (mod ) ( p m m
ak ak a
≡ ≡
− −
α α δ γ dır.

Örnek 2.6. 2357 = p olsun ve
*
2357
Z ın 2 = α üretecini seçelim. Özel anahtarımız ise
1751 = a olsun. Bu durumda 1185 ) 2357 (mod 2 ) (mod
1751
≡ ≡ p
a
α hesaplanır. Açık
anahtarımız ) 1185 , 2 , 2357 ( = = =
a
p α α olur.

2035 = m mesajını şifrelemek için 2 1 − ≤ ≤ p k aralığından 1520 = k tamsayısını
alalım. 1430 ) 2357 (mod 2
1520
≡ ≡ γ ve 697 ) 2357 (mod 1185 . 2035
1520
≡ ≡ δ bulunur.
Artık şifre metnimizi ) 697 , 1430 ( = = = δ γ c olarak gönderebiliriz. Bunu deşifrelemek
için ise 872 ) 2357 (mod 1430
605 1
≡ =
− − a p
γ hesaplanır, buradan orijinal mesaj
) 2357 (mod 2035 697 . 872 = = m olarak elde edilir.

Açık anahtar kriptografinin yararlandığı diğer bir problem ise Discrete Logaritma
Problemidir.
37

Discrete Logaritma Problemi

G , n –inci mertebeden bir devir grubu olsun. α ; G nin bir üreteci ve G ∈ β olsun.
1 0 − ≤ ≤ n x olmak üzere β α =
x
olacak şekildeki bir tek x tamsayısına α tabanına
göre β nın discrete logaritması denir ve β
α
log ile gösterilir. Discrete Logaritma
Problemi (DLP); bir p asalı ,
*
p
Z ın α üreteci ve
*
p
Z ∈ β verildiğinde ) (mod p
x
β α =
olacak şekilde 2 0 − ≤ ≤ p x tamsayısı bulma problemidir.

Discrete logaritma problemine dayanan diğer bir algoritma ise DSA dır. DSA, dijital
imza algoritması NIST tarafından yayınlanan sayısal imza standardının bir kısmıdır.
DSA, ''discrete logaritma problemi'' ne dayanır. Schnoor ve El Gamal tarafından
geliştirilen algoritmalarla benzer yapıdadır. DSA algoritması da RSA gibi açık anahtarlı
bir kriptografik algoritmadır. RSA'dan farkı sadece imzalama amaçlı olarak
kullanılması, şifreleme yapılamamasıdır.

Yukarıda verdiğimiz tanım ve algoritmalarda da görüldüğü gibi açık anahtar
algoritmalar asal sayılara gereksinim duyar. Günlük hayattaki konuşmalarda rasgele
terimi kullanıldığında asıl ifade edilmek istenen keyfi kelimesidir. Keyfi bir sayı
istenildiğinde hangi sayı olduğunun kişi için önemi yok iken bir rasgele sayı kesin bir
şekilde tanımlanmış matematiksel bir kavramdır: Her sayı eşit olasılı olmalıdır. Bir
rasgele keyfi bir sayı isteyenin isteğine cevap verecektir ama tersi doğru değildir. ''Her
sayı eşit olasılı olmalıdır'' ifadesi kullanılacak sayıların sonlu bir tanım bölgesine
sahipse anlamlı olur. Mesela rasgele bir tamsayı elde edilemez, bir aralıkta rasgele bir
sayı tamsayı elde edilebilir. Tek başına rasgele bir sayı da aslında çok anlamlı değildir.
Bu nedenle rasgele sayı dizilerinden bahsedilir. Burada matematik işin içine girer.
Örneğin; dar bir tanım aralığından seçilen rasgele sayılardan oluşan uzun bir dizi için,
her sayının yaklaşık aynı sayıda tekrarlanması beklenebilir. Bilgisayar ile rasgele sayı
elde etmek, rasgele sayı üretecek algoritmaların varlığı demektir. Burada amaç rasgele
sayı dizileri ile benzer özellikler gösteren sayı dizileri elde etmektir. Böyle sayılara
sahte-rasgele sayılar denir. Sahte rasgele diziler öngörülemez olmalıdır. Yani
algoritmaya, diziyi üreten üreticiye ve dizideki önceki bitlere ilişkin bilgiler mevcut
38
olduğunda bir sonraki bitin ne olduğu hesaplanamamalıdır. Ayrıcı üretici aynı girdileri
iki kez girdiği taktirde bütünüyle ilgisiz iki dizi elde etmelidir.

Rasgele sayılar bir sayının bileşik olup olmadığını test etmede kullanılırlar. Rastgele
sayılar üretip bunları çarpanlarına ayırmak yanlış bir yoldur. Bunun yerine rastgele
sayılar üretip bunların asal olup olmadıklarını test edilmelidir. Açık anahtar şifreleme
ve imza tasarılarında gereklidirler. Madeni para atma, zar sallama, bir rulet çevirme
rasgele sayılar üretir. Çoğu bilgisayar programı kullanıcı girdilerine karşı sistemin
yanıtını değiştirmede bir rasgele sayıya ihtiyaç duyar.

Şifreleme algoritmalarını ve gerekli olacağına inandığımız temel bilgileri verdikten
sonra kriptografide ayrı bir tutan hash fonksiyonlarını ve uygulamalarını inceleyelim.
























39




BÖLÜM 3

KRİPTOGRAFİK HASH FONKSİYONLARI VE UYGULAMALARI

3.1 Giriş

Kriptografik hash fonksiyonları modern kriptografide temel bir rol oynar. Geleneksel
hash fonksiyonları ile bağlantılı olmasına karşın çoğunlukla kriptografik olmayan
bilgisayar uygulamalarında kullanılırlar. Her iki durumda da büyük tanım bölgeleri
küçük değer bölgelerine dönüştürülür. Hash fonksiyonu girdi olarak bir mesajı alır ve
hash kodu, hash sonucu, hash değeri veya kısaca hash ile belirtilen bir çıktı üretir.
Daha kesin bir ifadeyle bir hash fonksiyonu keyfi sonlu boyutlu bit şeritlerini n-bit
diyebileceğimiz sabit uzunluklu şeritlere dönüştürür. D tanım bölgesi ve R değer bölgesi
için R D h → : ve R D > 'dır. Burada çakışmaların varlığı yani özdeş çıktıya sahip
girdi çiftlerinin olması kaçınılmazdır. h, t-bitlik girdilerin ) ( n t > tanım bölgesine
sınırlandığı taktirde yaklaşık
n t −
2 girdi birer çıktıya dönüşecektir. Rasgele seçilen iki
girdinin aynı çıktıyı sağlama olasılığı yaklaşık
n −
2 olup t den bağımsız olacaktır. Bir
kriptografik hash fonksiyonu; kanıtlama, mesaj bütünlüğü gibi farklı bilgi güvenliği
uygulamalarını daha kullanışlı hale getirmek için ilave güvenlik özelliklerinin eklendiği
bir hash fonksiyonudur. Kriptografik hash fonksiyonlarının temel fikri bir hash
değerinin, bir girdi şeridi için bazen damga, dijital parmak izi veya mesaj özeti olarak da
adlandırılan yoğun temsilcisi görevini görmesidir.

En iyi bilinen hash fonksiyonları MD-4, MD-5 ve SHA'dır. Fakat göreceğiz ki çok
farklı amaçla kullanılan birçok hash fonksiyonu vardır.

Kriptografik sistemlerin olmazsa olmaz özelliklerinden biri güvenirliktir. Sonraki
aranan özellik ise mesajı başkalarının anlayamayacağı fakat alıcının anlayabileceği
şekilde göndermektir. Bundan sonra gerekli olan ise mesajı okunaklı olmayan şekilde
gönderen fonksiyonlardır. Herhangi biri mesajı duyarsa anlayamamalı ve onu
40
çevirememelidir. Kriptografinin böyle fonksiyonlara ihtiyacı vardır. Çünkü bu
fonksiyonların ana özellikleri tersinin hesaplanmasının güç olmasıdır.

Hash fonksiyonları veri bütünlüğü ile dijital imza tasarıları için kullanılırlar. Açık
anahtarlı bir algoritmayla hazırlanan dijital imza, gönderilen bilginin sayısal içeriğinin
değiştirilmediğinin ve gönderen tarafın kimliğinin ispatı için atılır. Teknik olarak dijital
imza, imzalanmış belgenin özünü, özetini (hash) içeren, elektronik mesaja eklenmiş
bilgidir. İçerikte yapılacak bir değişiklik hash'ı geçersiz kılacaktır.

Bir mesaj ilk olarak özetlenir ve sonra hash değeri mesajın bir temsilcisi gibi orijinal
mesaj yerine imzalanır. Örneğin bir x' mesajının orijinal x mesajı ile aynı olup
olmadığına bakılırken; x′ nün hash değeri hesaplanır ve korunan hash değeri ile
kıyaslanır. Değerler eşitse girdilerinde eşit olduğu kabul edilir. Bu durumda mesaj
değiştirilmemiş demektir.

Hash fonksiyonu yardımıyla bir şahsın dokümanı üzerinde dijital imzanın çalışma
ilkesini Şekil 3.1. de olduğu gibi özetleyebiliriz.


Şekil 3.1. Dijital İmzanın Çalışma İlkesi.

Damgard ve Merkle, sıkıştırma fonksiyonu adı verilen bir fonksiyona göre bir hash
fonksiyonu tanımlayarak kriptografik hash fonksiyonunun dizaynını önemli ölçüde
etkilemişlerdir.

Hash fonksiyonları aşağıdaki gibi tanımlanabilir:

Mesaj Özeti
Ali'nin
Dokümanı
Ali'nin özel
anahtarı
Sayısal İmza
Mesaj Özeti Hash
şifreleme Deşifreleme
Ali'nin genel
anahtarı
Mesaj Özeti
Ali'nin
Dokümanı
Hash
Ali'nin
Dokümanı
Aynı mı?
41
Tanım 3.1. Bir hash fonksiyonu aşağıdaki şu iki özelliğe sahiptir.

i ) Sıkıştırma (Compression): Keyfi sonlu bit uzunluğundaki bir x girdisini n-bit
uzunluğundaki sabit ) (x h çıktısına dönüştürür.

ii ) Hesaplama Kolaylığı (Easy Computation): h ve bir x girdisi verildiğinde ) (x h i
hesaplamak kolaydır.

Başka bir ifadeyle hash fonksiyonu gönderilecek mesajdan matematiksel yollarla sabit
uzunlukta sayısal bilgi üretme işlemidir. Üretilen sayısal bilgi ''mesaj özeti'' olarak
bilinir. Mesaj özeti anlamsız bir bilgidir. Hash fonksiyonu geri dönüşümü olmayan bir
fonksiyondur; yani mesajın özetine bakarak mesajın kendisini elde etmek mümkün
değildir. Aynı özeti veren iki farklı mesaj bulmak da imkansız olmalıdır. Her mesajın
farklı özetinin olması, mesajda yapılacak en ufak bir değişiklikte imzanın geçersiz
kalmasını sağlayacaktır.

Hash fonksiyonunu günlük yaşamdan bir örnekle açıklamaya çalışalım.

Bir okul her bir öğrencisini kendi bilgisayarlarına bir dosya ile depolamak ister. Her bir
dosya için anahtar (veya kimlik numarası), kayıt olan öğrencilerin dokuz haneli okul
numaralarıdır. Burada her bir okul numarası için hafızada yer ayırmak oldukça zordur.
Hafızada dosyaları düzenlemenin sistematik yolu, uygun çok sayıda hafıza yeri
kullanmaktır. Böylece her dosyaya daha kolay ulaşılabilir. Düzenli dosyaların
sistematik metotları hash fonksiyonlarına dayandırılarak geliştirilmiştir. Bir hash
fonksiyonu her bir dosyanın anahtarını özel hafıza yeri olarak belirler. Bunun için
yaygın olarak kullanılan modüler aritmetiğe dayalı hash fonksiyonundan yararlanalım.

k depolanacak dosyanın anahtarı (öğrencinin okul numarası), m bir pozitif tamsayı
olsun. Hash fonksiyonunu m k h < ≤ ) ( 0 için ) (k h yı, m mod ye göre en küçük pozitif
k kalanına denk olacak şekilde ) (mod ) ( m k k h ≡ olarak tanımlayalım. m yi seçip
ayırmak istiyoruz bu yüzden dosyaları baştan sona m farklı 1 ,..., 2 , 1 , 0 − m hafıza
yerlerine bölelim. Burada dikkat edilecek ilk şey m nin, k tabanında bir kuvvet
olmamasıdır. Örneğin; öğrenci numaraları anahtar gibi kullanıldığında m, 10 un
kuvvetleri olmamalıdır. Aksi taktirde hash fonksiyonunun değeri, anahtarın son birkaç
42
basamağı olacaktır. Benzer şekilde b ve a rasgele küçük tamsayılar olmak üzere m
yerine a k
b
∓ sayısı kullanıldığı taktirde benzer olmalarına rağmen farklı anahtarlar aynı
hafıza yerine gönderilebilirler. Örnek olarak 111 = m ise ) 1 10 ( 111
3
− , 999 111
olduğundan ) 111 ( 1 10
3
≡ dır. Buradan 064212848 ve 064848212 okul numaraları aynı
hafıza bölgesine gönderilirler. Şöyle ki
) 111 (mod 14 1124 848 212 064 064212848 ) 064212848 ( ≡ ≡ + + ≡ ≡ h ve
) 111 (mod 14 1124 848 212 064 064848121 ) 064848212 ( ≡ ≡ + + ≡ ≡ h . Bu şekilde aynı
hafıza yerinde iki farklı dosya bulunmuş olur ki bu durumda bir çakışma olduğu
söylenir. Bazı zorluklardan kaçınmak için masal olabilir. Örneğin 2000 öğrenci
dosyasının elde edilebilir 5000 hafıza yeri varsa biz myi 4969 asalı olacak şekilde
seçebiliriz.

Çakışmaları çözmek için dosyaları farklı hafıza yerlerine gönderecek şekilde metoda
ihtiyaç vardır. Çakışma çözme yaklaşımının iki çeşidi vardır. İlk olarak bir çakışma
meydana geldiği zaman ilk hafıza yerine başka hafıza yerleri eklenir. Çakışma çözmek
için eklenen dosyaya girmek istediğimiz zaman önce özel anahtar için hash fonksiyonu
değerlendirilir, sonra da hafıza yerine eklenen liste araştırılır. İkinci yaklaşım ise bir
dosya önceden dolmuş olan hafıza yerine tayin edildiği zaman açık bir hafıza yeri
aramaktır. Bunu açıklamaya çalışalım.

Orijinal hash fonksiyonumuz ) ( ) ( k h k h
o
= yı göz önüne alarak hafıza yerlerinin
)... ( ), ( ), (
3 2 1
k h k h k h dizisini tanımlayalım. İlk olarak k anahtarıyla oluşturduğumuz
dosyayı ) (k h
o
yerine yerleştirmeye çalışırız. Eğer bu yer daha önceden doldurulmuş ise
bu dosyayı ) (
1
k h yerine yerleştirmeye çalışırız. Bu yer de meşgulse, işlemleri
),... ( ), (
3 2
k h k h hafıza yerleri için tekrarlarız.

) (k h
j
fonksiyonlarının bir dizisini m k h
j
< ≤ ) ( 0 olmak üzere ) (mod ) ( ) ( m j k h k h
j
+ ≡
olarak seçebiliriz. Bu fonksiyon dizisi k anahtarı ile oluşturulan dosyayı bir sonraki
yere olduğunca yakın yerleştirir. ) (k h
j
nın bu seçimiyle bütün hafıza yerleri kontrol
edilir ve böylece eğer bir açık yer varsa bulunur. Her ne kadar kullanışlı da olsa bu
seçim dosyaların aynı yerde kümelenmesi gibi çeşitli problemlere yol açar. Bu tür
problemlerden kaçınmak için double hash olarak adlandırılan başka bir teknik
43
kullanırız. Bunun için başlangıçtaki gibi ) (mod ) ( m k k h ≡ , m k h
j
< ≤ ) ( 0 fonksiyonu
seçilir. m asal olmak üzere ikinci hash fonksiyonu da 1 ) ), ( ( = m k g olacak şekilde
) 2 (mod 1 ) ( − + ≡ m k k g , 1 ) ( 0 − ≤ < m k g olarak alınır. Ayrıca
) )(mod ( ) ( ) ( m k jg k h k h
j
+ ≡ şeklinde alınırsa 1 ,..., 2 , 1 , 0 − = m j ve 1 ) ), ( ( = m k g
olduğundan bütün hafıza yerleri taranır.

Örnek 3.1. Bir okulda 5000 öğrenci olduğunu düşünelim ve bu öğrenciler için okul
bilgisayarında kişisel dosyalar oluşturalım. 4969 = m ve 4967 2 = − m asallarını;
) 4969 )(mod ( ) ( ) ( k jg k h k h
j
+ ≡ , 4969 ) ( 0 < ≤ k h
j
, ) 4969 (mod ) ( k k h ≡ ve
) 4967 (mod 1 ) ( + ≡ k k g fonksiyonlarını göz önüne alalım. Dosyaları hafıza yerlerine
yerleştireceğimiz öğrenci numaraları aşağıdaki gibi olsun.

047900151
329938157
212228844
325510778
344401659
5
4
3
2
1
=
=
=
=
=
k
k
k
k
k

132489973
509496993
546332190
034367980
372500191
10
9
8
7
6
=
=
=
=
=
k
k
k
k
k


) 4969 (mod 269
1
≡ k , ) 4969 (mod 1526
2
≡ k ve ) 4969 (mod 2854
3
≡ k olduğundan ilk
üç dosyayı sırasıyla 269, 1526, 2854 yerlerine göndeririz. ) 4969 (mod 1526
4
≡ k
buluruz. Bu yer daha önce
2
k ye ayrıldığından 216 ) 4967 (mod 1 ) (
4 4
≡ + ≡ k k g ve
1742 ) 4969 (mod 216 1526 ) 4969 )(mod ( ) ( ) (
4 4 4 1
≡ + ≡ + ≡ k g k h k h yi hesaplar ve
4
k
dosyasını da 1742 yerine atarız. ) 4969 (mod 3960
5
≡ k , ) 4969 (mod 4075
6
≡ k ,
), 4969 (mod 2376
7
≡ k ) 4969 (mod 578
8
= k olduğundan beş, altı, yedi ve sekizinci
dosyaları bu hafıza yerlerine göndeririz. ) 4969 (mod 578
9
≡ k elde ederiz. Bu yer dolu
olduğundan ) 4967 (mod 2002 1 ) (
9 9
≡ + ≡ k k g ve daha sonra da
2580 ) 4969 (mod 2002 578 ) 4969 )(mod ( ) ( ) (
9 9 9 1
≡ + ≡ + ≡ k g k h k h 'i hesaplayarak
9
k
dosyasını boş olan 2580 'e göndeririz.

Son olarak ) 4969 (mod 1526
10
≡ k buluruz. Fakat 1526 yeri daha önceden
2
k ye ayrıldı-
ğından 216 ) 4967 (mod 1 ) (
10 10
≡ + ≡ k k g ve 1742 ) 4969 )(mod ( ) ( ) (
10 10 10 1
≡ + ≡ k g k h k h
44
elde edilir. 1742 yeri yine önceden kullanıldığından
1958 ) 4969 )(mod ( 2 ) ( ) (
10 10 10 2
≡ + ≡ k g k h k h buluruz ki bu ise onuncu dosyayı
yerleştirdiğimiz boş yerdir. Şimdi yukarıda elde ettiğimiz değerleri bir tablo ile
özetleyelim. Dosyaların yerleştiği yerleri koyu yazalım.

Tablo 3.1 Dosyaların Yerleştiği Hafıza Yerleri.

Öğrenci Numaraları
) (k h ) (
1
k h ) (
2
k h
344401659
325510778
212228844
329938157
047900151
372500191
034367980
546332190
509496993
132489973
269
1526
2854
1526
3960
4075
2376
578
578
1526



1742




2580
1742









1958

Böylece hash fonksiyonu yardımıyla bütün dosyalar çakışma olmadan hafıza yerlerine
yerleştirilmiş olur.

Doğru kullanım için hash fonksiyonlarının amaca yönelik olarak sınıflandırılmaları
gerekir. Böyle bir fonksiyonel sınıflandırmada hash fonksiyonlarını iki başlık altında ele
alarak kısaca inceleyelim.

3.2 Genel Sınıflandırma

A. Değişiklilik Bulma Kodları (Modification Detection Codes-MDCs): Manipulation
Detection Kodları ve daha az yaygın olmakla birlikte Mesaj Bütünlük Kodları olarak da
bilinirler. MDCs'ın amacı temsilci bir görüntü veya mesajın hash'ını (özetini)
sağlamaktır. MDCs, anahtarsız hash fonksiyonlarının bir alt sınıfıdır. Bu hash
45
fonksiyonları hesaplanırken herhangi bir anahtar kullanılmaz. MDCs'ın temel
odaklarının belirli sınıflarını tanımlayalım.

i) Tek Yol Hash Fonksiyonları (TYHF): Belli bir hash değerine özetlenen bir girdiyi
bulmak güçtür. y x h = ) ( verildiğinde x i bulmak zordur.

ii) Çakışma Dirençli Hash Fonksiyonuları (ÇDHF): Aynı hash değerine sahip iki
girdi bulmak güçtür.

B. Mesaj Kanıtlama Kodları (Message Authentication Codes-MACs): Mesaj kanıt-
layıcı kodların amacı herhangi ilave bir mekanizma kullanmadan mesajın kaynağı ve
bütünlüğüne ilişkin teminatların sağlanmasını kolaylaştırmaktır. MACs fonksiyonel iki
parametreye sahiptir. Biri mesaj diğeri ise gizli anahtardır. Bu hash fonksiyonları
anahtarlı hash fonksiyonlarının bir alt sınıfıdır.

Şu halde MDC durumunda girdi olarak bir mesaj verildiğinde herhangi biri hash
sonucunu hesaplayabilir. MAC durumunda ise girdi olarak bir mesaj verildiğinde ancak
anahtar bilgisi ile herhangi biri hash değerini hesaplayabilir.

Şekil 3.2. de hash fonksiyonlarının yukarıda kısaca açıklanan basitleştirilmiş sınıflan-
dırılması gösterilmiştir.

İlerideki tanımlara yardımcı olması açısından Tanım 3.1. de hesaplama kolaylığı ve
sıkıştırma özelliklerini verdik. Şimdi ise konu ile ilgili temel ve tanım özellikleri
verelim.

3.3 Hash Fonksiyonlarında Temel Kavram Ve Özellikler

Ön Görüntü Direnci (Preimage Resistant): x x ′ , girdi; y y ′ , çıktı ve h anahtarsız
hash fonksiyonu olmak üzere; önceden belirtilmiş bütün çıktılar için hash değeri bu
çıktı olan herhangi bir x girdisi hesaplanabilir olmamalıdır. Yani; karşılık geldiği girdi
bilinmeyen herhangi bir y verildiğinde y x h = ′) ( olacak şekilde herhangi bir x′ ön
görüntüsü bulmak kolay olmamalıdır.

46
İkinci Ön Görüntü Direnci ( 2.nd Preimage Resistant ): Belirlenen herhangi bir girdi
ile aynı çıktıya sahip ikinci bir girdinin bulunması hesaplanabilir olmamalıdır. Yani bir
x verildiğinde ) ( ) ( x h x h ′ = olacak şekilde x x ′ ≠ olmak üzere ikinci bir x′ ön görüntüsü
bulmak kolay olmamalıdır.

Çakışma Direnci (Collision Resistant): Aynı çıktıya sahip farklı iki x x ′ , girdileri
bulmak kolay hesaplanabilir olmamalıdır. Yani girdilerin seçimi serbest olmak üzere
) ( ) ( x h x h ′ = olacak şekilde herhangi iki x x ′ , girdisi bulmak kolay olmamalıdır.



Şekil 3.2. Kriptografik Hash Fonksiyonları ve Uygulamalarının Basitleştirilmiş
Sınıflandırması.

Yukarıda verdiğimiz tanımlar için alternatif olarak aşağıdaki terimler de kullanılır.

Ön Görüntü Direnci ≡ Tek Yol Fonksiyonu
İkinci Ön Görüntü Direnci ≡ Zayıf Çakışma Direnci
Çakışma Direnci ≡ Güçlü Çakışma Direnci

Bir dijital imza tasarısı düşünelim ki içinde x mesajından daha çok ) (x h hash değerine
uygulanan imza olsun. Burada h bir ikinci ön görüntü direncine sahip bir MDC
HASH
FONKSiYONLARI
ANAHTARSIZ ANAHTARLI
MDCs Diğer
Uygulamalar
Diğer
Uygulamalar
MACs
Ön Görüntü
Direnci
2.Ön Görüntü
Direnci
TYHF ÇDHF
Çakışma
Direnci
47
olmalıdır. Aksi taktirde bir C düşmanı, A şahsının ) (x h üzerindeki imzasını
gözlemleyebilir. Bu taktirde ) ( ) ( x h x h ′ = olacak şekilde bir x′ bulur ve x' yü A nın
imzaladığını iddia edebilir. Eğer C gerçekten A nın imzaladığı mesajı seçebilirse bu
taktirde C nin ikinci ön görüntü bulmaktansa yalnızca bir ) , ( x x ′ çakışma ikilisi bulması
gerekir. Bu durumda çakışma direnci de gereklidir.

Tanım 3.2. Tek Yol Hash Fonksiyonu (TYHF) Bir h hash fonksiyonu Tanım 3.1.'e ek
olarak ön görüntü ve ikinci ön görüntü özelliklerini sağlarsa bu fonksiyona tek yol hash
fonksiyonu denir. Yani;

i) Keyfi sonlu boyutlu x girdisini n sabit uzunluğundaki ) (x h çıktısına dönüştürür.
ii) Bir x girdisi verildiğinde ) (x h i hesaplamak kolaydır.
iii) y x h = ) ( olacak şekildeki x i bulmak kolay olmamalıdır. (Ön Görüntü Direnci)
iv) Bir x girdisi verildiğinde ) ( ) ( y h x h = özelliğini sağlayan y bulmak kolay olmama-
lıdır.(İkinci Ön Görüntü Direnci)

Tanım 3.3. Çakışma Dirençli Hash Fonksiyonu (ÇDHF) Tanım 3.1.'e ek olarak
ikinci ön görüntü direnci ve çakışma direnci özelliklerini sağlayan hash
fonksiyonlarıdır. Örnek 3.1. çakışma dirençli hash fonksiyonu için güzel bir örnektir.

Literatürde bu fonksiyonlar için;
Tek Yol Hash Fonksiyonu ≡ Zayıf Tek Yol Hash Fonksiyonu ve Çakışma Dirençli
Hash Fonksiyonu ≡Güçlü Tek Yol Hash Fonksiyonu alternatif terimleri kullanılır.

Örnek 3.2. (Hash Fonksiyonlarının Özellikleri)

i) n x x g mod ) (
2
= fonksiyonu bir ön görüntü direncine sahiptir fakat ne sıkıştırma
fonksiyonu ne de ikinci ön görüntü direncine sahip bir fonksiyonudur.

7 mod ) (
2
x x g = fonksiyonunu düşünelim. ) 7 (mod 1
2
≡ x fonksiyonu için 1 = x bir
çözümdür. ) ( ) 1 ( x g g ′ = olacak şekilde 6 = ′ x kolaylıkla bulunabilir ki bu ise ikinci ön
görüntü direncine tezattır.

48
ii) k sabit anahtar, E herhangi bir blok şifre olmak üzere x x E x f
k
⊕ = ) ( ) ( fonksiyonu
ön görüntü ve ikinci ön görüntü direncine sahip bir fonksiyondur. Fakat sıkıştırma
fonksiyonu değildir.

Uygulamalar esnasında hash özelliklerinden gerçekten hangilerinin ve neden gerektiği
anlaşılmalıdır. Mesela çakışma dirençli hash fonksiyonlarını oluşturmak tek yol hash
fonksiyonlarını oluşturmaktan daha güçtür. Çakışma dirençli hash fonksiyonu yaklaşık
olarak bit uzunluğunun iki katı hash değerine sahiptir. Eğer güvensiz bir grup veya şahıs
hash fonksiyon girdilerinin kesin içeriğini kontrol ederse bir MDC, çakışmaya dirençli
hash fonksiyonu olmalıdır. Yalnız bir şahsı içeren durumlarda tek yol hash fonksiyonu
olması yeterlidir.

TYHF larında girdi bitleri ve çıktı bitleri bağlantılı olmamalıdır. Sadece bitlerin küçük
bir sayısı için ) ( ) ( x h x h ′ = olacak şekilde farklı x ve x′ girdileri bulmak güç olmalıdır.
Bu özelliğe yakın çakışma direnci diyebiliriz. Herhangi bir alt şeridi geri almak giriş
girdisini geri almak kadar güç olmalıdır. Hatta girdilerin bir kısmı bilinse bile kalan
kısmı bulmak zor olmalıdır. Bu özelliğe de kısmi ön görüntü direnci diyebiliriz. Eğer t
girdi bitleri bilinmeden kalmışsa ortalama
1
2
− t
hash operasyonu ile bunlar bulunmaya
çalışılır.

Tanım 3.4. Tek Yol Fonksiyonu(TYF) Bir tek yol fonksiyonu; f nin tanım
bölgesindeki her x için ) (x f i hesaplamak kolay olacak şekilde bir f fonksiyonudur.
Fakat f nin değer bölgesindeki bütün y ler için ) (x f y = olacak şekilde herhangi bir
x bulmak kolay hesaplanabilir değildir.

Yukarıda tek yol fonksiyonu, tanım bölgesi sabit boyutlu girdilere dayanan tek yol hash
fonksiyonlarından farklı olarak tanımlanmıştır. Ayrıca ikinci ön görüntü direncine sahip
olması gerekmez. Birçok tek yol fonksiyonu aslında sıkıştırma değildir. Çoğu görüntü
elemanları tek ön görüntüye sahiptir ve bunlar için ikinci ön görüntü direncinin
sağlanması mantıksızdır.


49
Örnek 3.3. Bir asal sayı 1 den büyük ve kendisinden başka böleni olmayan pozitif
tamsayıdır. 48611 = p ve 53993 = q asallarını seçelim.
2624653723 . = = q p n ve { } 1 ,..., 3 , 2 , 1 − = n X olsun.
X üzerinde X x ∈ için
x
r ,
3
x ün n e bölündüğünde kalan olmak üzere
x
r x f = ) (
olarak tanımlayalım.
1981394214 ) 2489991 ( = f
1981394214 . 5881949859 2489991
3
+ = n den ) (x f i hesaplamak nispeten kolaydır.
Fakat işlemleri tersine çevirmek oldukça güçtür. Şöyle ki; bir kalan verildiğinde, küpü
alınan x değerini bulmak zordur. Bu işlem n mod e göre küp kökünün modülünün
hesaplanmasına ilişkindir. Eğer n nin çarpanları bilinmiyor ve çok büyükse bu zor bir
problemdir.

Örnek 3.4. { } 16 ,..., 3 , 2 , 1 = X alalım ve her X x ∈ için
x
r ,
x
3 in 17 ile bölümünden
kalan olmak üzere
x
r x f = ) ( olarak tanımlayalım.

x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
) (x f 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1

1 ile 16 arasında bir sayı verildiğinde bu sayının f altındaki görüntüsünü almak
nispeten kolaydır. Bununla birlikte 7 gibi bir sayı verildiğinde bir tabloya sahip olmadan
7 ) ( = x f olacak şekildeki x i bulmak oldukça güçtür. Eğer verilen sayı 3 ) ( = x f ise
1 = x olduğu açıktır. Fakat değer bölgesindeki birçok eleman için böyle kolay değildir.
Önemli olan nokta ) (x f i hesaplamak için yapılan çalışmaların sayısı ile ) (x f
verildiğinde x i bulmak için yapılacak çalışmaların sayısındaki farktır. Dolayısıyla ) (x f
bir tek yol fonksiyonudur.

Hash fonksiyonları genellikle tek yol özelliğini gerektiren, sıkıştırma özelliğini
gerektirmeyen uygulamalarda kullanılır. Bu yüzden hash fonksiyonlarını girdilerle
çıktılar arasındaki ilişkiye dayanarak üç sınıfa ayırmak kullanışlı olacaktır.

50
1. Genel Hash fonksiyonları: Bu fonksiyonlar Tanım 3.1. deki gibi olup genellikle keyfi
uzunluktaki girdileri n-bitlik çıktılara sıkıştıran tek yol özelliklerinin eklendiği
fonksiyonlardır.

2. Sıkıştırma Hash Fonksiyonları (Sabit Boyutlu Hash Fonksiyonları): Bu fonksiyonlar
Tanım 3.1. fonksiyonlar olup, tanım bölgesi sabit uzunlukta girdilere kısıtlanan tek yol
özelliklerinin eklendiği fonksiyonlardır. Örneğin m-bitlik girdileri n-bitlik çıktılara
sıkıştırır, n m > dir.

3. Sıkıştırma Olmayan Tek Yol Fonksiyonları: Bu fonksiyonlar m n = hariç sabit
boyutlu hash fonksiyonlarıdır. Tek yol permütasyonları içerirler ve daha açık olarak,
tersine çevrilemeyen hesaplanabilir fonksiyonlar olarak tanımlanabilirler.

Örnek 3.5. ) ( ) , ( x E k x f
k
= i düşünelim. Burada E , DES i temsil etsin. f ; ) , ( k x
girdisinin bir tek yol fonksiyonu değildir. Çünkü herhangi ) , ( k x f y = fonksiyon değeri
verildiğinde bir k′ anahtarı seçilebilir ve ) (
1
y E x
k


= ′ hesaplanabilir. Burada
) , ( k x ′ ′ zayıf bir ön görüntüdür. Benzer olarak k biliniyorsa ) , ( k x f bir tek yol
fonksiyonu değildir. ) , ( k x f y = ve k verildiğinde k kullanılarak y nin deşifrelenmesi
ile x elde edilir. Buna zıt olarak ) , ( k x f ; k nın bir tek yol fonksiyonudur. Şöyle ki;
) , ( k x f y = ve x verildiğinde
55
2 kadar operasyon içinden bir k ön görüntüsünün
nasıl bulunacağı bilinemez.

Örnek 3.6. Bir tek yol fonksiyonu DES veya rasgele fonksiyon gibi davranan herhangi
E blok şifresinden oluşturulabilir: Herhangi bilinen sabit bir k anahtarı için
x x E x f
k
⊕ = ) ( ) ( . Herhangi bir y seçimi için x x E y
k
⊕ = ) ( olacak şekilde herhangi
x ve bir k anahtarı bulmak güçtür. Çünkü herhangi bir x için ) (x E
k
ve böylece
x x E
k
⊕ ) ( rasgele olacaktır. Ancak tesadüfen y ye eşit olma şansı olacaktır. Şu halde
) (x f bir TYF gibi görünür. Fakat sadece sabit uzunluklu girdiler kullanılmadığından
TYHF değildir.

Örnek 3.7. q p ve asallarının uygun seçimleri için q p q p f . ) , ( = bir tek yol
fonksiyonudur: q p ve asalları verildiğinde q p n . = hesaplamak kolaydır. Fakat n
51
verildiğinde q p ve tamsayı çarpanlarını bulmak zordur. RSA ve birçok kriptografik
sistemler bu özelliğe güvenirler.

Örnek 3.8. (Sonlu Cisimlerde Üstelleştirme) Yeterince büyük p asallarının birçok
seçimi ve yeterli büyüklükteki sıralı çarpımlarının bir
*
p
Z ∈ α elemanı için (örneğin bir
üreteç gibi) p x f
x
mod ) ( α = bir tek yol fonksiyonudur. Burada
*
p
Z ,
p
Z nin çarpımsal
grubu olup { } 1 ) , ( :
*
= ∈ = p a Z a Z
p p
dır. Kök ve çarpım teknikleri kullanılarak p, x ve
α verildiğinde ) (x f kolaylıkla hesaplanabilir. Fakat p nin birçok seçimi için ) , , ( α p y
verildiğinde p y
x
mod ≡ α , 2 0 − ≤ ≤ p x bölgesinde bir x bulmak discrete logaritma
probleminin kontrol edilmesi güç olduğundan zordur. Tabi ki ) (x f in bazı belirli
değerleri için fonksiyon tersine çevrilebilir. Örneğin 1 ve 1 − in kendi ön görüntüleri 0
ve 2 / ) 1 ( − p olarak bilinir ve { } 10 ,..., 2 , , 1 , 0 gibi x in herhangi değerlerinin küçük bir
cümlesi için ) (x f hesaplanarak da bu değerler bilinebilir. Gerçekten değer bölgesindeki
bütün y ler için ön görüntü bulmak güçtür.

3.4 Özellikler Arasındaki İlişkiler

Teorem 3.1. “Hash fonksiyonlarının çakışma direnci, ikinci ön görüntü direncini

gerektirir.”

İspat: h çakışma direncine sahip bir fonksiyon olsun. Bir
j
x girdisi belirleyelim. Eğer h
ikinci ön görüntü direncine sahip değilse bu taktirde ) ( ) (
j i
x h x h = olacak şekilde bir
i
x
girdisi bulunabilir. Bu durumda aynı hash çıktısına sahip farklı ) , (
j i
x x girdi çifti
bulunmuş olur ki bu ise çakışma direncine tezattır.

Teorem 3.2. “Çakışma direnci ön görüntü direncini garanti etmez.”

g çakışma dirençli bir hash fonksiyonu olsun ve keyfi uzunluktaki girdiyi n-bit
uzunluğundaki çıktıya dönüştürsün. h fonksiyonu

¹
´
¦
=
), ( || 0
, || 1
) (
x g
x
x h
durumlarda diger
; ise uzunluğu bit n x

52

olarak tanımlansın. Burada ||, bağlantı belirtsin. Bu taktirde h, bitlik n − + ) 1 ( çakışma
direnci olan fakat ön görüntü direncine sahip olmayan bir hash fonksiyonudur. Basit bir
örnek olarak; sabit uzunluktaki girdiler üzerindeki birim fonksiyonunun çakışma ve
ikinci ön görüntü direnci vardır fakat ön görüntü direnci yoktur. x x h = ) ( birim
fonksiyonunda x verildiğinde ön görüntüyü hesaplamak oldukça kolayken,
) ( ) ( x h x h ′ = olacak şekilde farklı x x ′ , girdileri bulmak ve x verildiğinde ) ( ) ( x h x h ′ =
olacak şekilde x' girdisi bulmak oldukça güçtür. Bu örnek gösterir ki çakışma direnci
belirli hash çıktılarının ön görüntülerini bulma zorluğunu garanti etmez.

Teorem 3.3. Çakışma dirençli herhangi f sıkıştırma fonksiyonu keyfi uzunluklu
girdiler alınarak çakışma dirençli bir h hash fonksiyonuna genişletilebilir.

Algoritma 3.1. kullanılarak bu işlem hızlı ve verimli bir şekilde yapılabilir. Algoritma,
böyle bir hash fonksiyonu bulmayı bir sıkıştırma fonksiyonu bulmaya indirger.

3.5 Tekrarlı Hash Fonksiyonlarının Genel Yapıları

Birçok anahtarsız hash fonksiyonu tekrarlı bir sürece göre düzenlenir. Öyle ki keyfi
uzunluktaki girdiler, girdinin sabit uzunlukta bloklarının başarılı işlemlere tabi
tutulmasıyla özetlenirler. Bir tekrarlı hash fonksiyonu, n t + bitlik bir girdiyi bitlik n −
bir çıktıya dönüştüren bir f sıkıştırma fonksiyonu kullanılarak oluşturulur.

Keyfi sonlu uzunluktaki bir x hash girdisi, sabit uzunluklu bitlik r −
i
x bloklarına
bölünür. Bu işlem genellikle r blok uzunluğunun bir çarpımı (katı) olan bit uzunluğu
elde etmek için padding adını verdiğimiz ekstra bit ekleme gerektirip, doldurulmamış
girdinin bit uzunluğunu gösteren bir blok içerir. Bundan sonra her bir
i
x bloğu dahili
sabit uzunluklu f hash fonksiyonuna bir girdi görevi görür. Bazı sabit n-ler için n bit
uzunluğunun yeni bir ara sonucunu hesaplayan h ın sıkıştırma fonksiyonu, önceki
bitlik n − ara sonucun bir fonksiyonu ve x
i
bloğunun sonraki girdisi gibidir.

i
H , i evresinden sonraki kısmı sonucu belirtsin.
t
x x x x ...
2 1
= girdisi için tekrarlı bir
hash fonksiyonu için genel işlemler aşağıdaki gibidir :
IV H =
0
Başlangıç Değeri
53
) , (
1 i i i
x H f H

= , t i ≤ ≤ 1 ; ) ( ) (
t
H g x h =
1 − i
H , 1 − i ile i arasında bitlik n − zincir değişkeni görevini görür ve
0
H önceden
tanımlanmış başlangıç değeridir. İsteğe bağlı bir g çıktı dönüşümü, bitlik n − zincir
değerlerini bitlik m− ) (
t
H g sonucuna dönüştürmek için kullanılır; g genellikle
t t
H H g = ) ( birim dönüşümüdür.

Algoritma 3.1. Özetlemede (hashing) Merkle'in Meta Metodu

GİRDİ: Çakışma dirençli f sıkıştırma fonksiyonu
ÇIKTI: Anahtarsız çakışma dirençli h hash fonksiyonu

1. Kabul edelim ki f , bitlik r n − + ) ( girdiyi bitlik n − çıktıya dönüştürsün. (Kesinlik
için 128 = n ve 512 = r düşünebiliriz.) bitlik n − hash değerlerini üreten bir h hash
fonksiyonu f den aşağıdaki gibi oluşturulur.

2. b uzunluğundaki bir x girdisini her biri bit r − uzunluklu
t
x x x ...
2 1
bloklarına bölelim.
Eğer gerekirse son
t
x bloğu 0 -bit ile doldurulur.

3. Ekstra
1 + t
x final bloğu, parça blok, tanımlayalım. Doğruluğu kanıtlanmış b 'nin ikili
reprezantasyonunu elde etmek için
r
b 2 < kabul edelim.

4. 0 ın j bitlik şeridini
j
0 ile gösterelim. x in n-bitlik hash değeri olan
) || ( ) (
1 1 + +
= =
t t t
x H f H x h sonucu
n
H 0
0
= ; ) || (
1 i i i
x H f H

= , 1 1 + ≤ ≤ t i den
hesaplanır.

Algoritma 3.2. MD Güçlendirmesi (Merkle-Damgárd Güçlendirmesi) b-bit
uzunluğundaki
t
x x x x ...
2 1
= mesajı özetlenmeden önce (
i
x ler konuyla ilgili sıkıştırma
fonksiyonuna uygun r bit uzunluğunda bloklar olmak üzere)
1 + t
x , parça bloğu eklenir. b
için
r
b 2 < olduğu kabul edilir.

Teorem 3.4. (Cascading Hash Fonksiyonları) Eğer
1
h ve
2
h den ikisinden biri
çakışma dirençli bir hash fonksiyonu ise bu taktirde ) ( || ) ( ) (
2 1
x h x h x h = de çakışma
dirençli bir hash fonksiyonudur.
54

Not 3.1. Kesin bit şeritlerine bağlı hash değerleri gibi, ASCII(tablo 3.4), EBCDIC gibi
farklı veri reprezantasyonları hash değerleri hesaplanmadan önce ortak bir formata
dönüştürülmelidir.

3.6 Biçimlendirme ve Başlangıç Bileşenleri

Doldurma (Padding) ve Parça Bloklar: Blok blok özetleme (hashing) metotları için
bir hash girdi şeridine onu blok boyutunun katı yapacak bir miktar bit genellikle
özetlemeden önce eklenir.

Algoritma 3.3. Doldurma Metodu I

GİRDİ: Aşamaları işlemek için x verisi ve veri girdisinin blok boyutu bit n − uzunluğu
verilsin.
ÇIKTI: Bit uzunluğu n nin bir katı olan doldurulmuş x′ verisi.
Bit uzunluğu n nin bir katı olan bir x′ şeridi elde etmek için gereken birkaç tane (belki
hiç) 0 bit x verisine eklenir.

Algoritma 3.4. Doldurma Metodu II

GİRDİ: Aşamaları işlemek için x verisi ve veri girdisinin blok boyutu bit n − uzunluğu
verilsin.
ÇIKTI: Bit uzunluğu n nin bir katı olan doldurulmuş x′

verisi.
1. x e bir tek 1-bit eklenir.
2. Bit uzunluğu n nin bir katı olan bir x′ şeridi elde etmek için gereken birkaç tane
(belki hiç) 0 bit x verisine eklenir.

I. Doldurma metodu belirsizdir. Orijinal verinin bitleri − 0 doldurma sırasında eklenmiş
olanlardan ayırt edilemeyebilir. Böyle metotlar, verinin uzunluğu alıcı tarafından
biliniyorsa kabul edilebilir. II. doldurma metodu belirsiz değildir. Her bir doldurulmuş
x′ mesajı, doldurulmamış bir tek x mesajına karşılık gelir.

Başlangıç Değerleri (IVs-initial values): İlk değerin ( IV ) sabit veya veri girdisinin bir
fonksiyonu olup olmayacağı hash fonksiyonunun hesaplamasında rasgele seçilir. Farklı
55
dosyalar aynı anahtar kullanılarak şifrelendiği zaman başlangıç vektörü çok önemlidir.
Bir hash değeri oluşturmada ve doğruluğunun kanıtlanmasında aynı IV kullanılmalıdır.
Eğer kanıtlayıcı tarafından öncelikli olarak bilinmiyorsa mesajla birlikte aktarılmalıdır.
Sonraki durumlarda bu garantili olarak bir bütünlük içinde yapılmalıdır. (Düşmanların
elindeki bağımsızlık seviyelerini azaltmak için hash fonksiyon prensiplerine uygun
olarak olası IVs in küçük veya sabit bir cümlesi tanımlanmalıdır.)

3.7 ANAHTARSIZ HASH FONKSİYONLARI (MDCs)

Genel özelliklerinden hareketle belirli hash fonksiyonlarının yapılarını oluşturduk. Bu
başlık altında MDC olarak bilinen anahtarsız hash fonksiyonlarının bir alt sınıfını
işleyeceğiz. Yapısal bir bakış açısıyla bu kodlar kendi dahili sıkıştırma
fonksiyonlarından oluşan işlemlerin doğasına dayandırılarak kategorize edilebilirler. Bu
yönden tekrarlı hash fonksiyonlarının üç geniş kategorisi; blok şifrelere dayanan hash
fonksiyonları, alışılmış hash fonksiyonları ve modüler aritmetiğe dayalı hash
fonksiyonları olarak ele alınırlar.

3.7.1 Blok Şifrelere Dayanan Hash Fonksiyonları

Temel fikir var olan bir blok şifre sistemini kullanmak ve performansı önemli ölçüde
etkilemeden yeni özetleme özellikleri eklemektir.

Bir ) , ( r n blok şifresi; bitlik r − anahtar kullanarak bitlik n − açık metinden
bitlik n − şifre metnine, tersine çevrilebilen bir fonksiyon tanımlar. Eğer E böyle bir
şifre ise bu taktirde ) (x E
k
, x in k anahtarı altında şifrelenmesini belirtir.

bitlik n − blok şifrelerden oluşan hash fonksiyonlarının tartışması tek uzunluklu
( bit n − ) ve çift uzunluklu ( bit n − 2 ) hash değeri üretenler olmak üzere aralarında
bölünürler. Burada 'tek' ve 'çift' blok şifre çıktılarının boyutları ile ilgilidir.
64
2 operasyonun olanaksız olduğu kabul edilirse tek uzunluklu hash fonksiyonlarının
amacı yaklaşık 64 = n blok uzunluğunun şifreleri için bir TYHF sağlamaktır. Ya da
128 = n blok uzunluğunun şifrelenmesi için bir ÇDHF sağlamaktır. Çoğu çift uzunluklu
hash fonksiyonları için bitlik n − blok şifreler yaklaşık 64 = n boyutunda mevcuttur. Bu
boyutun tek uzunluklu hash kodları çakışma dirençli değildir. Böyle blok şifreler için
56
amaç bit n − 2 uzunluklu ÇDHF larının hash kodlarını elde etmektir. Bu hash
fonksiyonlarında kullanılan anahtarın boyutu yaklaşık olarak şifrenin blok uzunluğu ile
aynıdır. (Yani n-bit). Diğer taraftan hash fonksiyonları büyük anahtarlar kullanır. (Yani
bit n − 2 ). Böyle hash fonksiyonlarında dikkat edilecek diğer özellik şifrenin blok
uzunluğuna denk bir hash çıktısı üretmek için gerekli blok şifre operasyonlarının
sayısıdır.

Şimdi bu açıklama altında hash fonksiyonlarını sınıflandırıp Matyas Meyer - Oesas,
Davies Meyer, Miyagucci Preneel algoritmalarından ve MD-4, MD-5, SHA-1,
RIPEMD gibi algoritmaları içine alan mesaj özet ailesinden bahsedelim.

Algoritma 3.5. MATYAS MEYER-OESAS HASH

GİRDİ: x bit dizisi
ÇIKTI: x in bitlik n − hash kodu
1. x girdisi n -bitlik bloklara bölünür ve eğer gerekli ise son bloğu tamamlamak için
doldurulur. t tane bitlik n − bloktan oluşan doldurulmuş mesajı
t
x x x x ...
3 2 1
ile
gösterelim. Sabit bitlik n − IV başlangıç değeri önceden belirtilmelidir.
2.
t
H çıktısı şöyle tanımlanabilir:
IV H =
0
; =
i
H t i x x E
i i H g
i
≤ ≤ ⊕

1 , ) (
) (
1

Burada g , n bitlik girdileri E için uygun K anahtarına dönüştürür. Eğer E , n bit
uzunluğunda ise g birim fonksiyon olur.

Algoritma 3.6. DAVİES MEYER HASH

Davies-Meyer Hash fonksiyonu ön görüntü direnci, ikinci ön görüntü direnci ve
çakışma direnci özelliklerini sağlayan anahtarsız bir hash fonksiyonudur.
GİRDİ: x bit dizisi
ÇIKTI: x in n - bitlik hash kodu
1. x girdisi bitlik k − bloklara bölünür. Burada k anahtar boyutudur. Ve eğer gerekirse
son blok doldurulur. t tane bitlik k − bloktan oluşan doldurulmuş mesajı
t
x x x x ...
3 2 1
ile
gösterelim. Sabit bir bitlik n − başlangıç değeri önceden belirtilmelidir.
2.
t
H çıktısı şöyle tanımlanabilir:
IV H =
0
;
1 1
) (
− −
⊕ =
i i x i
H H E H
i
, t i ≤ ≤ 1
57
Algoritma 3.7. MİYAGUCHİ-PRENEEL HASH

Algoritmanın tasarısı Matyas Meyer–Oesas Algoritmasına özdeştir. Çıktıdaki
1 − i
H
hariç. Önceki algoritmada olduğu gibi toplanır. Daha net bir ifadeyle
i
H şöyle
tanımlanır:
IV H =
0
; =
i
H
1 ) (
) (
1

⊕ ⊕

i i i H g
H x x E
i
, t i ≤ ≤ 1

Burada Davies-Meyer Hash, Matyas Meyer-Oesas Hash ın duali olarak değerlen-
dirilebilir. Bu durumda
1 − i
H ile
i
x zıt roller oynarlar. DES, Davies–Meyer
algoritmasında blok şifre gibi kullanıldığında girdi, bitlik − 56 bloklarda işlemden
geçirilir, halbuki Matyas-Meyer-Oesas ve Miyaguchi-Preneel bitlik − 64 blokları
işleme tabi tutar.

3.7.2. Alışılmış Hash Fonksiyonları

Alışılmış hash fonksiyonları özetlemenin açık amaçları için özel olarak düzenlenmiştir.
Bu fonksiyonlar mesaj özet ailesinden yararlanılarak oluşturulurlar. Uygulamada çok iyi
ilgi alan bu fonksiyonlar MD-4 hash fonksiyonuna dayanırlar. MD-4, bitlik − 32
makinelerin bilgisayar yazılım uygulamalarına özgü olarak dizayn edilmişlerdir. Tablo
3.2 bu hash fonksiyonları için gerekli parametreleri tanımlar. “Döngü × Her Biri İçin
Döngü Adımları” girdi blokları üzerinde uygun sıkıştırma fonksiyonu içinde yapılan
uygulamaları belirtir. Şimdi mesaj özet ailesini tanıyalım.

MD (Mesaj Özeti) Ailesi

a. MD-2

1992 yılında tanımı verilen mesaj özet algoritması bitlik − 128 blok boyutuna sahiptir.
Algoritma kırılmış olup, yeni uygulamalar için kullanılmamaktadır. Mesaj özeti
bit − 128 uzunluğundadır.

b. MD-4

1990 yılında Ron Rivest tarafından geliştirilmiştir. MD-4, bitlik − 128 bir hash değeri
üretir. Mesaj bitlik − 512 bloklarda tekrarlı yapı içinde ve her blok üç farklı döngüde
58
işlemden geçirilir. Aynı hash değerine sahip iki mesaj bulmak yaklaşık
64
2 uygulama
gerektirirken; önceden belirlenmiş bir hash değerini sağlayan bir mesaj bulmak yaklaşık
128
2 uygulama gerektirir. MD-4 için
20
2 sıkıştırma fonksiyonu uygulamasında
çakışmalar bulunmuştur. Bu sebeple MD-4 ün çakışma dirençli hash fonksiyonu olarak
kullanımı tavsiye edilmez.


Tablo 3.2 MD-4'e Dayalı Seçilmiş Hash Fonksiyonlarının Özeti.











c. MD-5

MD-5, Ron Rivest tarafından 1991'de geliştirilmiştir. MD-4 ün güçlendirilmiş versiyonu
gibi düzenlenmiştir. Mesaj bitlik − 512 bloklarda 16*32 bitlik alt bloklar halinde
işlemden geçirilir. Algoritma dört farklı döngüden oluşur. Çıktı 4 tane bitlik − 32 blok
olup bitlik − 128 hash değeri verir.

Bu günkü MD-4 çakışmaları bulunmadan önce uygulamalarda yaygın bir kullanıma
sahipti. MD-5 için de Ağustos 2004'te çakışmalarını bulan bir metot Çinli araştır-
macılar tarafından bildirilmiştir.

d. SHA-1 Güvenli Çırpma Algoritması (Secure Hash Algorithm)

SHA-1 bir mesaj özet algoritması ve bir kriptografik hash fonksiyonu olup NSA
tarafından düzenlenip, NIST tarafından yayımlanmıştır. Algoritmanın orijinal
tanımlaması Güvenli Hash Standardı olarak 1993'te yayımlandı. Bu standart SHA-1,
SHA-256, SHA-384 ve SHA-512 olmak üzere dört güvenli çırpma (hash) algoritması
İsim Bit Uzunluğu Döngü ve Döngü Başına adım
MD-4
MD-5
RIPEMD-128
SHA-1
RIPEMD-160
128
128
128
160
160
16 3×
16 4× (iki kere)
16 4×
20 4×
16 5× (iki kere)
59
belirtir. Algoritmaların hepsi de tekrarlıdır. TYHF ları ''mesaj özeti '' olarak adlandırılan
özetlenmiş bir temsilci üretmek için mesajı bazı işlemlerden geçirir. Her algoritma iki
evrede tanımlanabilir: Ön işlemler ve hash hesaplaması. Ön işlemler mesajı doldurma,
doldurulmuş mesajı m bitlik bloklara bölme ve hash hesaplamasında kullanılan
başlangıç değerini saptama gibi adımları içerir. Hash hesaplaması doldurulmuş
mesajdan bir mesaj listesi, cetveli üretir. Bu listeyi fonksiyonlar, sabitler ve kelime
operasyonları ile beraber hash değerlerinin bir serisini üretmek için kullanır. Hash
hesaplaması tarafından üretilen son hash değeri mesaj özetini belirler. Bu dört algoritma
özetleme sırasında kullanılan verinin kelimeleri ve blokların boyutuna göre farklılık
gösterir. Tablo 3.3 dört güvenli hash algoritmasının temel özelliklerini temsil eder.

Mesajın uzunluğu, mesaj içindeki bitlerin sayısıdır. Boş mesaj 0-bit uzunluğundadır.
Eğer mesajın içindeki bitlerin sayısı 8 in katı ise, sadelik için mesajı onaltılık olarak
ifade edebiliriz. Onaltılık bir rakam (hex digit), {0,1…,9,a,b,…,f} kümesinin bir
elemanıdır. Bir onaltılık rakam 4-bitlik bir diziyi ifade eder. 0=0000, 1=0001,
2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000, 9=1001, a=1010, b=1011,
c=1100, d=1101, e=1110, f=1111 dır. Mesela ondalık 79 sayısı
ikilik tabanda 0100 1111 olup, onaltılık tabanda 4f ye (Tablo 3.4) karşılık gelir. Bir
kelime 8 onaltılık rakam dizisi şeklinde ifade edilir. Böylece bir kelime 32 4 8 = × bit
olur. Gerekirse mesajın toplam uzunluğunu 512 nin katı yapmak için mesaj doldurma
işlemi yapılır. N × 512 uzunlukta doldurulmuş bir mesajın üretilmesi için mesajın
sonuna sırasıyla bir adet " 1 " , m adet ''0'' ve bitlik − 64 bir tamsayı eklenir. bitlik − 64
bir tamsayı I orijinal mesajın uzunluğudur. Bundan sonra mesaj SHA tarafından
bitlik − 512 N blok olarak işlenecektir.

Bir tamsayı, bir kelime veya kelime çifti olarak gösterilebilir. 0 ile 1 2
32
− (dahil)
arasındaki bir tamsayı 32-bitlik bir kelime gibi temsil edilebilir. Mesela 291 sayısı
onaltılık tabanda 00000123 ile ifade edilir. Aynı şekilde 0 ile 1 2
64
− (dahil) arasındaki
bir tamsayı ise bitlik − 64 bir kelime gibi temsil edilebilir. Eğer Z ,
64
2 0 < ≤ Z olan
bir tamsayı ise bu taktirde Y X Z + = . 2
32
;
32
2 0 < ≤ X ve
32
2 0 < ≤ Y olur ki
Z tamsayısı ) , ( y x kelime çifti ile temsil edilir. Bu özellik SHA-1 ve SHA-256 için
kullanılır. Eğer Z ;
128
2 0 < ≤ Z olan bir tamsayı ise bu taktirde Y X Z + = . 2
64
;
60
64
2 0 < ≤ X ve
64
2 0 < ≤ Y olur ki Z tamsayısı ) , ( y x kelime çifti ile temsil edilir. Bu
özellik SHA-384 ve SHA-512 için kullanılır.

SHA-1, güvenli hash algoritması MD-4 e dayanır. NIST tarafından US federal hükümet
uygulamaları için geliştirilmiştir. SHA-1, DSA (dijital imza algoritması) ile birlikte
elektronik postalar, elektronik fon transferi, veri saklaması ve veri bütünlüğü garantisi
ve veri kaynağı doğrulaması gerektiren tüm uygulamalarda kullanılabilir. Amacı,
güvenli iletişimde mesajlara, iletilen tüm veriyi kullanarak bir mesaj özeti yaratmaktır.
Varış noktasında mesaj açıldığında tekrardan hesaplanacak özet ile karşılaştırılacak
mesajın, mesaj alıcıya ulaşana kadar değiştirilip değiştirilmediğini kontrol edebilecek
bir güvence sistemi oluşturulur.


Tablo 3.3 Güvenli Hash Algoritmalarının Özellikleri.

Algoritma
(bit)
Mesaj Boyutu
(bit)
Blok Boyutu
(bit)
Kelime Boyutu
(bit)
Mesaj Özet
Boyutu ( bit)
1 − SHA
64
2 <
512 32 160
256 − SHA
64
2 <
512 32 256
384 − SHA
128
2 <
1024 64 384
512 − SHA
128
2 <
1024 64 512


Yukarıdaki tablodan da anlaşıldığı gibi SHA-1 ve SHA-256 için her mesaj bloğu 512
bite sahiptir. Yani on altı tane bitlik − 32 kelimenin bir dizisi gibi ifade edilirken; SHA-
384 ve SHA-512 için her mesaj bloğu 1024 bite sahiptir. On altı tane bitlik − 64
kelimenin bir dizisi gibi ifade edilir. Son yıllarda bitlik − 160 çıktı üreten SHA-1
algoritmasına yönelik saldırılar sonuç vermiş, Şubat 2005'te çakışma bulmak için
tahmin edilen
80
2 operasyondan daha az olan
69
2 operasyonla çakışmalar bulunmuştur.

Şimdi ise SHA-1 algoritması tarafından kullanılan bazı işlem, fonksiyon ve sabitleri
verelim.

) (x ROTL
n
dairesel sola kaydırma işlemi; x , bitlik − 32 bir kelime ve n ,
32 0 < ≤ n olacak şekildeki bir tamsayı olmak üzere
61
) 32 ( ) ( ) ( n x n x x ROTL
n
− >> ∨ << = şeklinde tanımlanır. Bu işlem sadece SHA-1
algoritmasında kullanılır. ) ( S X
n
şeklinde de gösterilebilir. SHA-1, 4 döngüde
gerçekleşir, her döngü 20 adımdır.16 kelimelik bloklar 80 kelimelik bloklara
genişletilir.
79 1 0
,..., , f f f mantıksal fonksiyon dizisini kullanır. Her bir
t
f fonksiyonu
79 0 < ≤ t olmak üzere üç tane z y x , , bitlik − 32 kelimeleri üzerinde işlem yapar ve
çıktı olarak da bitlik − 32 kelimeler üretir. ) , , ( z y x f
t
fonksiyonu aşağıdaki gibi
tanımlanır.
¦
¦
¹
¦
¦
´
¦
⊕ ⊕
∧ ⊕ ∧ ⊕ ∧
⊕ ⊕
∧ ÷ ⊕ ∧
=
z y x
z y z x y x
z y x
z x y x
z y x f
t
) ( ) ( ) (
) ( ) (
) , , (
79 60 ,
59 40 ,
39 20 ,
19 0 ,
≤ ≤
≤ ≤
≤ ≤
≤ ≤
t
t
t
t
dır.

SHA-1 bitlik − 32
79 1 0
,..., , K K K olmak üzere 80 sabit kelimenin bir dizisini kullanır.
Bu sabitler
t
5a827999 , 0 t 19
6ed9eba1 , 20 t 39
K
8f1bbcdc , 40 t 59
ca62c1d6 , 60 t 79
≤ ≤ ¦
¦
≤ ≤
¦
=
´
≤ ≤
¦
¦
≤ ≤
¹
şeklinde verilir.

SHA için hash hesaplaması başlamadan önce
) 0 (
H başlangıç hash değeri belir-
lenmelidir.
) 0 (
H daki kelimelerin sayısı ve boyutu mesaj özetinin boyutuna bağlıdır.
SHA-1 için başlangıç değerleri aşağıdaki gibi bitlik − 32 beş kelimeden onaltılık
tabanda
( )
( )
( )
( )
( )
0
0
1
0
2
0
3
0
4
0
H 67452301
H efcdab89
H 98badcfe
H 10325476
H c3d2e1f 0
=
=
=
=
=
şeklinde oluşturulur.

Bir M mesajının hash hesaplaması yapılmadan eğer gerekiyorsa algoritmaya bağlı
olarak mesajı 512 veya 1024 bitin bir katı yapmak doldurma (padding) yapılır.
62
Doldurulan mesaj − 512 bitlik N bloğa ayrılır;
) ( ) 2 ( ) 1 (
,..., ,
N
M M M . Ön işlemler
tamamlandıktan sonra aşağıdaki adımlar kullanılarak sırasıyla her bir mesaj bloğuna
işlemler uygulanır. Toplama işlemi ) (+ ,
32
2 modülüne göre yapılır.
1 = i den N e kadar:
1. } {
t
W mesaj cetveli hazırlanır;
¦
¹
¦
´
¦
⊕ ⊕ ⊕
=
− − − −
) (
16 14 8 3
1
) (
t t t t
i
t
t
W W W W ROTL
M
W
79 16 ,
15 0 ,
≤ ≤
≤ ≤
t
t
olmak üzere.

2. Beş çalışma değeri d c b a , , , ve e , ) 1 ( − i inci hash değeri ile başlatılır.

) (
4
) (
3
) (
2
) (
1
) (
0
i
i
i
i
i
H e
H d
H c
H b
H a
=
=
=
=
=

3. 0 = t dan 79 a kadar:
T a
a b
b ROTL c
c d
d e
W K e d c b f a ROTL T
t t t
=
=
=
=
=
+ + + + =
) (
) , , ( ) (
30
5


4. i -inci
) (i
H ara hash değerleri hesaplanır.

) 1 (
4
) (
4
) 1 (
3
) (
3
) 1 (
2
) (
2
) 1 (
1
) (
1
) 1 (
0
) (
0





+ =
+ =
+ =
+ =
+ =
i i
i i
i i
i i
i i
H e H
H d H
H c H
H b H
H a H

) ( N
M işlendikten sonra − 160 bitlik mesaj özeti
) (
4
) (
3
) (
2
) (
1
) (
0
N N N N N
H H H H H ile
gösterilir.

63
Örnek 3.8. Orijinal mesajımız " "abc olsun. Mesajımızın ASCII (Tablo 3.4) ikili kod
formatında gösterimi 01100001 01100010 01100011 dır.

1. " 1 " eklenir: 01100001 01100010 01100011

2. Mesaj uzunluğu 24 = I olup 1. adımdan sonra bitlerin sayısı 25 olur, bloğun son 64
biti de orijinal mesaja ayrılacağından 423 adet " 0 " ekleriz. Toplamda 512 bit olur. Bu
onaltılık olarak ;

61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 dizisini verir.

Orijinal mesajdaki bitlerin sayısının iki kelimelik gösterimi yapılır. 24 = I ün onaltılık
düzende iki kelimelik gösterimi 00000000 00000018 olarak bulunur. Böylece
doldurulmuş mesajın son hali

61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000018 şeklinde bulunur. Mesajımız bu hali ile
toplam 512 bit olup bir bloktan oluşmaktadır. Yani 1 = N dır. Burada
0
W 61626380 = ,
1
W 00000000 = , ….,
15
W 00000018 = dır.
Ön işlemler tamamlanmış olup algoritmanın diğer adımları sırasıyla uygulanarak hash
değeri

"a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d" olarak hesaplanır.










64

Tablo 3.4 ASCII Tablosu.

DEC HEX OCT CHAR DEC HEX CHAR DEC HEX CHAR DEC HEX CHAR

0 00 000 NUL 32 20 BOŞLUK 64 40 @ 96 60 '
1 01 001 SOH 33 21 ! 65 41 A 97 61 a
2 02 002 STX 34 22 " 66 42 B 98 62 b
3 03 003 ETX 35 23 # 67 43 C 99 63 c
4 04 004 EOT 36 24 $ 68 44 D 100 64 d
5 05 005 ENQ 37 25 % 69 45 E 101 65 e
6 06 006 ACK 38 26 & 70 46 F 102 66 f
7 07 007 BEL 39 27 ' 71 47 G 103 67 g
8 08 010 BS 40 28 ( 72 48 H 104 68 h
9 09 011 HT 41 29 ) 73 49 I 105 69 i
10 0a 012 LF 42 2a * 74 4a J 106 6a j
11 0b 013 VT 43 2b + 75 4b K 107 6b k
12 0c 014 FF 44 2c , 76 4c L 108 6c l
13 0d 015 CR 45 2d - 77 4d M 109 6d m
14 0e 016 SO 46 2e . 78 4e N 110 6e n
15 0f 017 SI 47 2f / 79 4f O 111 6f o
16 10 020 DLE 48 30 0 80 50 P 112 70 p
17 11 021 DC1 49 31 1 81 51 Q 113 71 q
18 12 022 DC2 50 32 2 82 52 R 114 72 r
19 13 023 DC3 51 33 3 83 53 S 115 73 s
20 14 024 DC4 52 34 4 84 54 T 116 74 t
21 15 025 NAK 53 35 5 85 55 U 117 75 u
22 16 026 SYN 54 36 6 86 56 V 118 76 v
23 17 027 ETB 55 37 7 87 57 W 119 77 w
24 18 030 CAN 56 38 8 88 58 X 120 78 x
25 19 031 EM 57 39 9 89 59 Y 121 79 y
26 1a 032 SUB 58 3a : 90 5a Z 122 7a z
27 1b 033 ESC 59 3b ; 91 5b [ 123 7b {
28 1c 034 FS 60 3c < 92 5c \ 124 7c |
29 1d 035 GS 61 3d = 93 5d ] 125 7d }
30 1e 036 RS 62 3e > 94 5e ^ 126 7e ~
31 1f 037 US 63 3f ? 95 5f _ 127 7f DEL



65
e. RIPEMD-160

Ripemd-160, MD-4 e dayanan bir hash fonksiyonudur. − 160 bitlik mesaj özet
algoritması Hans Dobbertin, Antoon Bosselaers ve Bart Preneel tarafından Avrupa da
geliştirildi ve 1996 yılında ilk olarak yayımlandı. Geniş kapsamlı Ripemd-160
sıkıştırma fonksiyonu 21 kelimelik girdileri (5 kelimelik zincir değişkeni ve 16
kelimelik mesaj) 5 kelimelik çıktılara dönüştürür. Bu program dosyaları karşılaştırmak
ve değiştirilip değiştirilmediğini anlamak için ve çoğunlukla daha büyük özetler
gerektiren uygulamalarda kullanılır. Ripemd algoritmasının Ripemd-128, Ripemd-256,
Ripemd-320 olarak adlandırılan sırasıyla 128, 256 ve − 320 bitlik versiyonları da vardır.

3.7.3 Modüler Aritmetiğe Dayanan Hash Fonksiyonları

Modüler aritmetiğe dayanan hash fonksiyonlarının ana fikri ModM yi kullanarak bir
sıkıştırma fonksiyonunun esası gibi tekrarlı hash fonksiyonu oluşturmaktır. Modül
operasyonlarını kullanarak sonucu küçültüp, hash fonksiyonunu biçimlendirmek için
kullanılır. MASH-1 (Modular Arithmetic Secure Hash) ve MASH-2 yapıları modüler
aritmetiğe dayanan hash fonksiyonlarıdır. MASH-1 ve MASH-2 anahtarsız kriptografik
hash fonksiyonları olup ön görüntü, ikinci ön görüntü ve çakışma direncini sağlarlar.

3.8 ANAHTARLI HASH FONKSİYONLARI (MACs)

Amacı mesajın bütünlüğünü garantilemek, mesajı kanıtlamak olan anahtarlı hash
fonksiyonları Message Authentication Code algoritmaları olarak da adlandırılırlar.
MDC algoritmalarının sayısının fazlalığına karşın 1995 'ten önce ancak birkaç tane
MAC algoritması ileri sürülebildi. Çoğu tekrarlı MACs tekrarlı hash fonksiyonları gibi
tanımlanabilirler. Bu durumda bir MAC anahtarı genellikle g çıktı dönüşümünün bir
kısmı olabileceği gibi, ilk tekrarda sıkıştırma fonksiyonuna bir girdi olabilir ve
f sıkıştırma fonksiyonuna her evrede dahil olabilir.

Dijital bilginin kaynak, köken ve içeriğinin reddedilmez bir yolunu ortaya koymak için
1976'da Diffie ve Hellman tarafından ilk kez ortaya çıkarılan dijital imza tasarılarının
düzenlemesinin teknik problemi ve onların yerine getirilmesi iyi anlaşılmıştır fakat bazı
uygulamalar için onlar çok fazla depolama ve hesaplama gerektirmektedir. Bu yüzden
66
bazı uygulamalar halen veri bütünlüğü ve veri kaynağı belgelenmesinde MAC
algoritmaları kullanır. MACs imzalardan daha zayıf garanti sağlarlar. Bu yüzden
tarafların birbirine güvendiği simetrik ortamlarda tercih edilmelidir. Bankalar son
yetmiş yıldır mesaj doğrulamada MACs ı kullanmaktadırlar. Bir MAC kullanmak için
gönderen ve alıcının bir gizli K anahtarını paylaşması gerekir. ( k bitlik rasgele bir bit
şeridi – tipik değerleri 128 ,..., 56 = k ) Mesajı korumak için, gönderen mesaja uygun
bit m− uzunluklu bit şeridini MAC yi hesaplar ve bu şeridi mesaja ekler. (Tipik m
değerleri 32, …,64 ) MAC, mesajın ve anahtarın her bitinin karmaşık bir
fonksiyonudur. Mesajın alındısı üzerinde alıcı, MAC yi yeniden hesaplar ve gönderilen
MAC değerine karşılık gelip gelmediğinin doğruluğunu kanıtlar.

3.8.1 Blok Şifrelere Dayanan MACs
En yaygın kullanılan MAC algoritması şifre-blok zincirinin (CBC-Cipher Block
Chaining) kullanımı sağlayan bir blok şifreye dayanan CBC-MAC dır. Genellikle blok
şifrenin temelini oluşturan DES ile kullanılır. Blok şifre blok uzunluğu 64 = n olan E
blok şifresi ve MAC anahtarı olarak da bitlik − 56 bir DES anahtarı alınır. CBC-MAC
aşağıdaki sıkıştırma fonksiyonu verilen ile tekrarlı bir MAC dır:
) (
1 i i K i
x H E H ⊕ =

, t i ≤ ≤ 1 .
Burada ) (x E
K
; k bitlik K anahtarını bitlik n − E blok şifresi ve 0
0
= = IV H ile
kullanarak x in şifrelenmesini belirtir. İlk olarak eğer gerekli ise x doldurulur,
doldurulan metin bitlik n −
t
x x x ,... ,
2 1
bloklarına bölünür daha sonra CBC işlemleri
yapılır. g çıktı dönüşümü olmak üzere MAC, ) ( ) ( MAC
t K
H g x = olarak hesaplanır

Algoritma 3.10. CBC-MAC

GİRDİ: x verisi; E blok şifrenin belirtilmesi; E için gizli k MAC anahtarı
ÇIKTI: E nin blok uzunluğu n olmak üzere x üzerinde n-bitlik MAC

1. Eğer gerekiyorsa x i doldurulur. Doldurulmuş metni bitlik n −
t
x x x ,... ,
2 1
bloklarına
bölünür.
67
2. k anahtarı ve E kullanılarak
K
E şifrelemeyi belirtsin.
t
H bloğunu aşağıdaki gibi
hesaplanır.
) (
1 1
x E H
K
← ; ) (
1 i i K i
x H E H ⊕ ←

, t i ≤ ≤ 2 (Standart CBC algoritma 2.1 , 0 = IV ,
şifre metin blokları
i i
H C = atılır)
3. MAC nin gücünü artırmak için isteğe bağlı işlemler kullanılabilir. İkinci bir k k ≠ ′
gizli anahtarı ile ) (
1
t k t
H E H


← ′ , ) (
t K t
H E H ′ ← hesaplanır.
4. MAC, n-bitlik
t
H bloğudur.

MAC ye dayanan bu şifre-blok-zincirleme algoritmasını Şekil 3.4.de olduğu gibi
gösterebiliriz.

3.8.2 MDC ye Dayanan MAC (MDCs 'den MACs ' ın Oluşturulması
Kriptografik hash fonksiyonlarına dayanan MAC algoritmaları elde etme çalışmaları
birkaç öneri ile sonuçlanmıştır. Bir MDC algoritmasından bir MAC oluşturmak için
bilinen bir öneri; gizli bir k anahtarını MDC girdisinin bir kısmı olarak dahil etmektir.
Aşağıdaki örnek; dikkatli analizler gerektiren bir hash fonksiyonundan bir MAC
oluşturulmasını öneren bir örnektir.


Şekil 3.4. MAC Algoritmasına Dayalı CBC.
E E
0
1
x
2
x
k
1
H
k
2
H
...
E
1 −
E

E
1 − t
H
t
x
t
H
k

k′

k
H

İsteğe
Bağlı
68

Örnek 3.9. (Gizli Ön Ek Metodu): Bir
t
x x x x ...
2 1
= mesajı ve f sıkıştırma fonksiyonu
ile IV H =
0
, ) , (
1 i i i
x H f H

= ;
t
H x h = ) ( şeklinde tanımlanan tekrarlı bir MDC h
fonksiyonu düşünelim. Kabul edelim ki h; önceden kararlaştırılmış bir gizli k anahtarı
ile bir MAC algoritması gibi kullanılsın. Bu şekilde x üzerinde ileri sürülen MAC,
) || ( x k h M = dır. Daha sonra keyfi tek bir y bloğu tarafından x mesajının genişletilmesi
ile herhangi biri k anahtarını bilmeden ) , ( y M f gibi ) || || ( y x k h M = ′ sonucunu
çıkarabilir. Orijinal MAC M zincir değişkeni görevini görür.

Örnek 3.10. (Gizli Son Ek Metodu): Alternatif bir öneri gizli bir anahtarını bir son ek
gibi kullanmaktır. x üzerindeki bir MAC , ) || ( k x h M = dır. Bu durumda doğum günü
saldırısı uygulanabilir. Bir saldırgan x mesajını veya onun ön ekini seçmekte serbesttir.
O ) 2 (
2 / n
işlem içinde ) ( ) ( x h x h ′ = olacak şekilde bir x x ′ , mesaj çifti bulabilir. k nın
bilgisi gerekmez; burada n zincir değişkeninin ve son çıktının boyutu olarak kabul
edilir. Yasal anlamda x üzerinde bir MAC M yi elde etmek bir saldırgana yeni bir
x′ mesajı için doğru bir ) , ( M x′ metin çifti üretme fırsatı verir. Dikkat edelim ki bu
metot gerçekten özetler (hashes) ve son tekrarda hash değerini şifreler; MAC nin bu
zayıf formunda MAC değeri yalnızca son zincir değerine bağlıdır ve anahtar yalnızca
bir adımda kullanılır.

Yukarıdaki örnekler gösterir ki bir MAC anahtarı MAC hesaplamalarının başında ve
sonunda gerekebilir.

Örnek 3.11. (Gizli Zarf Metodu) Bir k anahtarı ve MDC h için x mesajı üzerindeki
MAC şu şekilde hesaplanır:
) || || || ( ) ( k x p k h x h
k
= dır.

Burada p, k yı bir blok uzunluğuna tamamlamak için kullanılan bir şerittir.
Hesaplamanın en az iki tekrarı içermesini garanti eder. Örneğin, eğer h bir MD5 ve k
bitlik − 128 ise p bitlik − 384 bir doldurma şerididir.


69
3.8.3 Hash’a Dayalı MAC

HMAC nin tanımı hash ile belirttiğimiz kriptografik hash fonksiyonu ve gizli bir K
anahtarı gerektirir. HMAC, SHA-1, MD-5, RIPE-MD hash fonksiyonlarından birini
kullanır. Bir HMAC fonksiyonu gönderen tarafından, bir gizli anahtar ve mesajın
özetlenmesi ile MAC değeri üretmek için kullanılır. MAC, mesajla birlikte alıcıya
gönderilir.

Örnek 3.12. (Hash a Dayalı MAC) Bir k anahtarı ve MDC h için x mesajı üzerinde
MAC yi; )) || || ( || || ( ) HMAC(
2 1
x p k h p k h x = ile hesaplanır. Burada
2 1
, p p sıkıştırma
fonksiyonu için tamamıyla dolu bir blok olarak tamamlamak için yeterli uzunluktaki
şeritlerdir.

3.9 ALGORİTMALARIN GÜVENLİĞİ, GÜVENLİK AMAÇLARI VE
TEMEL SALDIRILAR

Güvenlik derecesi, algoritmadan algoritmaya değişiklik gösterir. Bu, kırılmanın ne
kadar zor olduğuna bağlıdır. Bir algoritmayı kırmanın maliyeti şifrelenmiş verinin
değerinden fazlaysa veya kırmak için gereken süre şifrelenmiş verinin gizli kalması
gereken süreden fazlaysa büyük olasılıkla güvendesiniz demektir. Tek bir anahtar ile
şifrelenmiş veri miktarı, algoritmayı kırmak için gereken veri miktarından az ise yine
büyük olasılıkla güvendesiniz demektir. ''Büyük olasılıkla'' çünkü şifre analizinde her
zaman yeni gelişmeler, buluşlar söz konusudur. Zaman içinde çoğu verinin değeri
düşer. Şifrelemenin güvenliği anahtar uzunluğuna ve kırılan şifreli metnin içerdiği
hesapsal işlemlerin karmaşıklığına dayanır.

Yıllardır kriptografik ilkellerin ve protokollerin üzerinde çok farklı saldırı tipleri
saptanmıştır:

Bir pasif saldırı; düşmanın sadece iletişim kanalını dinlediği saldırıdır. Bir pasif
saldırgan sadece verinin bütünlüğünü tehdit eder.

Bir aktif saldırı; düşmanın, kanal üzerinde gönderilen mesaja silme, ekleme veya diğer
yollarla müdahale ederek değiştirmeye teşebbüs ettiği saldırıdır. Bir aktif saldırgan veri
bütünlüğü ve verinin kaynağı (verinin kimliği) ile ilgili bilgileri tehdit eder.
70

Algoritmayı kırmaya ilişkin kategoriler ise sertlik-güç derecelerine göre şu şekilde
sınıflandırılmıştır.

Genel Saldırı Çeşitleri

1. Sadece Şifre Metin Saldırısı: Kriptanalist, aynı şifreleme algoritmasını kullanılarak
şifrelenmiş çeşitli mesajların şifre metinlerine sahiptir. Kriptanalistin görevi mümkün
olduğunca çok sayıdaki mesajın açık metnini kurtarmak veya mesajları şifrelemek için
kullanılan anahtarları, aynı anahtarla şifrelenen başka mesajları çözmek için anlamaktır.

2. Bilinen Açık Metin Saldırısı: Kriptanalist sadece çeşitli mesajların şifrelenmiş
haline değil, bu mesajların açık metinlerine de erişebilir. Bir yada daha fazla
)) ( , (
i k i
x h x MAC metin çifti elde edebilir. Görevi mesajları şifrelemek için kullanılan
anahtarları veya aynı anahtarla şifrelenmiş yeni mesajları çözebilecek bir algoritma
bulmaktır.

3. Seçilmiş Açık Metin Saldırısı: Kriptanalist sadece çeşitli mesajların şifre
metinlerine ve bunlarla ilişkilendirilmiş açık metinlere erişmekle kalmayıp, aynı
zamanda da şifrelenmiş açık metinleri seçebilmektedir. Saldırgan tarafından seçilen
i
x
ler için bir yada fazla )) ( , (
i k i
x h x MAC metin çifti elde edebilir. Bu bilinen açık metin
saldırısından daha güçlü bir saldırıdır, çünkü kriptanalist şifrelemek için açık metnin
belirli bloklarını, anahtar hakkında daha fazla bilgi sağlayabilecek olanlarını
seçebilmektedir.

4. Uyarlanabilir Seçilmiş Açık Metin Saldırısı: Bu seçilmiş açık metin saldırısının
özel bir türüdür. Kriptanalist, şifrelenmiş açık metni seçmekle kalmayıp, aynı zamanda
seçimini önceki şifrelemeleri esas alarak değiştirebilmektedir. Seçilmiş açık metin
saldırısında bir kriptanalist, sadece bir büyük açık metin bloğunu seçebilirken;
uyarlanabilir seçilmiş açık metin saldırısında daha küçük bir açık metin bloğu seçebilir
ve ilkinin sonuçlarını esas alarak bir başkasını seçebilir.

5. Seçilmiş Anahtar Saldırısı: Bu saldırı kriptanalistin anahtarı seçebileceğini ifade
etmez; anlamı değişik anahtarlar arasındaki ilişki hakkında biraz bilgisi olduğudur.

71
6. Rubber-Hose Kriptanalistler: Kriptanalist bir kişiye anahtar kendisine verilene
kadar gözdağı verir, şantaj yapar. Bunlar çok güçlü saldırılardır ve bazen anahtarı
kırmanın en iyi yoludur.

7. Kaba Güç (Brute Force ) Saldırısı: Bir şifre metninin okunaklı mesaj elde edilene
kadar birer birer her olası anahtarın denenmesiyle deşifre edildiği saldırılardır. Bir
anahtar araştırmasını engellemek için tek yol yeterince büyük anahtarlarlar seçmektir.

8. Doğum Günü Saldırısı (Birthday Attack): Büyük bir popülasyondan iki özdeş
değer elde etmek için kullanılan bir saldırı biçimidir. Kriptografik hash fonksiyonlarına
uygulanan, çakışma bulmak için kullanılan bir tür kaba güç (brute force) saldırısıdır.
İsmini 23 kişilik bir grupta iki veya daha fazla kişinin aynı doğum gününü paylaşma
olasılığının 2 / 1 den büyük olması gibi şaşırtıcı sonuçtan alır. Bu olay ''doğum günü
paradoksu (birthday paradox)'' olarak adlandırılır.

N elemanlı bir kümeden rasgele elemanlar seçildiğinde tekrarlayan bir elemanı yüksek
olasılıkla ) ( N O seçimden sonra ulaşılır. Böyle saldırılar kare-kök saldırıları arasında
adlandırılırlar. Hash fonksiyonu ile ilgisi bir tek yol hash fonksiyonu için belli bir hash
değerinin çakışmasını bulmak ön görüntü veya 2. ön direncini bulmaktan daha kolay
olmasından gelir. Sonuç olarak tek yol hash fonksiyonu gerektiren imza tasarıları
doğum günü saldırılarına karşı savunmasızdır. Bu saldırı m bit uzunluklu hash değerine
bağlı olarak uygulama adımlarının sayısı ) 2 (
2 / m
O olan bütün anahtarsız hash
fonksiyonlarına (Teorem 3.5.) uygulanabilir.

Doğum günü paradoksunu aşağıdaki gibi açıklayabiliriz:

Bir X rasgele tamsayı değişkeni 1 ile n arasında düzenli gruplara ayrılsın.
n x P
i
/ 1 ) ( = n i ,..., 1 = ve bu X değişkeninin bir k örneğinin seçimi için ) , ( k n P nın en
az bir eşi olma olasılığı nedir? Örnek olarak 12 = k öğrencili bir sınıf verilsin. İki
öğrencinin aynı doğum gününe sahip olma olasılığı nedir? Farz edelim ki
365 = n doğum günü bir yıla dağıtılsın. Yani olasılık 365 / 1 midir?

İfade kolaylığı açısından ''eş olmama '' olasılığı ) , ( k n Q olsun. Verilen bir k için
72
( ) olmama eş
N

=
)! (
!
) 1 ( ... ) 1 (
k n
n
k n n n

= + − × × − ×
n elemanlarının cümlesinden alınan k elemanları ile ''eş olmama'' nın elde edilme
yoludur. Eğer eşe sahip olmama durumu olmadan n nin dışında k seçmenin bütün
yollarının sayısını düşünürsek;

( )
k
olma eş
n n n n N = × × × =

... ve eşi olmama olasılığı ) , ( k n Q ;
) , ( k n Q =
( )
( )
k
olma eş
olmama eş
n k n
n
N
N
)! (
!

=


ile verilebilir.
) , ( 1 ) , ( k n Q k n P − = dır.
k
n k n
n
k n P
)!. (
!
1 ) , (

− =
(
¸
(

¸

|
¹
|

\
| + −
× × |
¹
|

\
| −
× |
¹
|

\
| −
− =
n
k n
n
n
n
n
k n P
1
...
2 1
1 ) , (
(
¸
(

¸

|
¹
|

\
| −
− × × |
¹
|

\
|
− × |
¹
|

\
|
− − =
n
k
n n
k n P
1
1 ...
2
1
1
1 1 ) , (
(
¸
(

¸

|
¹
|

\
| −
− × × |
¹
|

\
|
− × |
¹
|

\
|
− − =
n
k
n n
k n P
1
1 ...
2
1
1
1 1 ) , (
0 ≥ ∀x için
x
e x

≤ − ) 1 ( eşitsizliği kullanılırsa
( ) ( ) ( ) | |
n k n n
e e e k n P
/ ) 1 ( / 2 / 1
... 1 ) , (
− − − −
× × × − ≥
(
¸
(

¸

+ + + −
− ≥
n
k
n n
e k n P
1
...
2 1
1 ) , (
(
¸
(

¸


− ≥
n
k k
e k n P
2
) 1 .(
1 ) , ( bulunur.

Örnek 3.12. 365 = n

Aynı doğum gününe sahip iki kişi bulma olasılığı %50 olacak şekilde bir odadaki
insanların sayısını k ile belirtmek istiyoruz. Burada kabul edelim ki 365 = n gün olsun.
k kişinin minumum sayısını 2 / 1 ) , ( = k n P olacak şekilde belirtmek istiyoruz. Biliyoruz
ki
(
¸
(

¸
− ×

− =
n
k k
e k n P
2
) 1 (
1 ) , ( idi.
73

(
¸
(

¸
− ×

− =
n
k k
e
2
) 1 (
1
2
1


(
¸
(

¸
− ×

− = −
n
k k
e
2
) 1
2
1


(
¸
(

¸
− ×

=
n
k k
e
2
) 1 (
2
1
Her iki tarafın e tabanında logaritmasını alırsak
⇒ln
|
¹
|

\
|
2
1
= ln
|
|
¹
|

\
|
(
¸
(

¸
− ×

n
k k
e
2
) 1 (

⇒ ln 2 =
(
¸
(

¸
− ×
n
k k
2
) 1 (

⇒ = 2 ln 2n
2
) 1 ( k k k ≤ − × ⇒ k n = ± 2 ln 2 dır.
Buradan 365 = n gün, k minumum kişi sayısı olmak üzere 2 ln 365 2 × × ≥ k veya
4944 , 22 ≥ k bulunur. Bir odada 23 = k kişi varsa aynı doğun gününe sahip iki kişi
bulma olasılığı %50 den büyüktür.
(
¸
(

¸
− ×

− ≥
n
k k
e k n P
2
) 1 (
1 ) , (
|
¹
|

\
| ×
− ≥
730
22 23
1 ) 23 , 365 ( e P
71 5000175182 , 0 ) 23 , 365 ( ≥ P (Güçlü Çakışma) dir.
Başka bir ifadeyle şöyle özetleyebiliriz.

İki kişinin aynı doğum gününe sahip olmama olasılığı q ,
492703 . 0
365
343
365
363
365
364
365
365
= ⋅ ⋅ ⋅ = q olur.
Buradan en az iki kişinin aynı doğum gününe sahip olma olasılığı 507297 . 0 1 = − q dır.
Bu olasılık odadaki kişi sayısına bağlı olarak hızla artar. Örneğin 46 kişinin aynı doğum
gününü paylaşma olasılığı 0.948253 tür.

Doğum günü paradoksu, çakışma bulmak için rasgele eşler seçmekten daha hızlı
çakışma çiftleri bulmak için hash fonksiyonlarına uygulanabilir.



74
Örnek 3.13.
128
2 = n olsun.

Hash değerleri birbirine eşit olacak şekilde yani ) ( ) ( y H x H = olacak şekilde y x, gibi
farklı iki 128-bitlik vektör bulma olasılığını düşünelim. Bu aynı hash değerinde
herhangi bir ) , ( y x çiftinin güçlü çakışma problemidir. Eşitliği sağlayacak
y vektörlerinin sayısı ;
2 ln 2n k = yani 2 ln 2 2
128
× × = k dır.
64 64
2 1774 . 1 2 ln 2 2 × = × = k bulunur.
n n n k ≈ = = 18 . 1 2 ln 2 dır.
9. Zincir Saldırıları

bitlik − 512
i
x mesaj bloklarını ile 128 bitlik ) (
0
IV H H
i
= zincir değişkenlerini girdi
olarak alan ve f sıkıştırma fonksiyonu ) , (
1 i i i
x H f H =
+
olmak üzere bitlik − 128 bir
hash değeri üreten çakışma dirençli tekrarlı bir hash fonksiyonu düşünelim. Sabit 10
blokluk x mesajı (640 byte) için ) (x h H = düşünelim. Kabul edelim ki biri 10 bloktan
herhangi birinin seçip yerine H fonksiyonunu etkilemeden yerine başka bir blok
koymak istesin. Eğer h rasgele dönüşüm gibi davranırsa bitlik − 512 böyle blokların
sayısı yaklaşık
384 128 512
2 2 / 2 = dır. Bu
384
2 bloktan herhangi birini bulmanın metodu
hash üzerine bir saldırı oluşturmaktan farklıdır.

10. Meet-in the-middle Zincir Saldırıları

Bu saldırılar doğum günü saldırılarına benzerler fakat çakışmalar bütün hash değeri
üzerinde değil de ara zincir değişkenlerinde aranır.

Bu saldırılar altında MDC ye saldırmak isteyen bir saldırganın amacı aşağıdaki gibidir.

a) Tek Yol Hash Fonksiyonlarına Saldırı: Bir y hash değeri verildiğinde ) (x h y = olacak
şekilde bir x ön görüntüsü bulmak veya )) ( , ( x h x ikilisi verildiğinde ) ( ) ( x h x h ′ = olacak
şekilde ikinci bir x x ′ ≠ ( olmak üzere) x′ girdisi bulmaktır.

b) Çakışma Dirençli Hash Fonksiyonlarına Saldırı: ) ( ) ( x h x h ′ = olacak şekilde herhangi
iki x x ′ , girdileri bulmaktır. Bir çakışma dirençli hash fonksiyonu doğum günü
saldırılarına karşı koyacak şekilde düzenlenmelidir.
75

Şekil 3.5. Saldırganların Amaçları.


Hash değerinin önceden verilmediği uygulamalar da vardır. Bunlar saldırgana daha
büyük özgürlük sağlar. Örneğin dijital imzalarda bir d dokümanı ) (d H ile imzalanır.
) (d H üzerinde herhangi bir kısıtlama olmadığından saldırgan ) ( ) ( d H d H ′ = olacak
şekilde bir farklı d d ′ , çifti belirler. ) (d H yi kullanarak d yi imzalar ve orijinal metnin
d′ olduğunu iddia eder. ) ( ) ( d H d H ′ = olduğundan saldırganın iddiası yalanlanamaz.
Bu yüzden hash fonksiyonu çakışma direncine sahip olmalıdır; hash'ı aynı değeri veren
farklı bir şeritleri oluşturmak mümkün olmamalıdır.

MAC ye saldırmak isteyen bir saldırganın amacı ise şöyledir:

Önceden k anahtarı ile ilgili bir bilgi olmadan bir yada daha fazla )) ( , (
i k i
x h x ikilileri
verildiğinde bazı
i
x x ≠ metinleri için )) ( , ( x h x
k
ikilisi hesaplamaktır. Burada
hesaplama direnci ele alınarak MACs ile eşlenen
i
x metinlerinin düşman tarafından
seçilen metinlerle elde edilip edilemeyeceğine bakılır. Bilinen, seçilmiş, uyarlanabilir
metin saldırısı MACs için mevcuttur. Saldırıların belirli bir ortamda tırmanıp
tırmanmadığına bakmazsızın MACs mutlaka seçilmiş metin saldırılarına karşı
koymalıdır.

Hash fonksiyonlarının hesaplanabilir güvenliğinin değerlendirilebilmesi için hash
fonksiyonunu düzenleyenin ve düşmanın her ikisinin de anlaşılması gerekir. Aşağıdaki
tabloda bunu özetlemeye çalışalım.


h h h
?
y
x
?
y y
? ?
76
Tablo 3.5 t -bitlik MAC Anahtarlı, n-bitlik Hash Fonksiyonlarının Dizayn Amacı.
(
f
P bir MAC yi doğru tahmin eden sahtekarlığın olasılığını belirtir.)

TYHF

Ön Görüntü Direnci
2. Ön Görüntü Direnci
n
2
n
2
Ön görüntü üretmek;
2.girdi , aynı görüntü
bulmak
ÇDHF
Çakışma Direnci

2 /
2
n

Herhangi bir çakışma
üretmek
MAC
Anahtar geri alınamaz;
hesaplama direnci

t
2
) 2 , 2 max(
n t
f
P
− −
=
MAC anahtarını ortaya
çıkarmak ; yeni
(msj,MAC) üretmek


Temel saldırılar yapılırken algoritmalarda kullanılan bit boyutları ve algoritmanın
anahtar uzayı göz önüne alınır.

3.9.1 Bir MDC nin Bit Boyutuna Saldırı: n -bitlik ) (x h ile sabit bir x mesajı
verilsin. x ile çakışık bir girdi bulmak için basit bir metotla rasgele x′ mesajı seçmek ve
) ( ) ( x h x h ′ = olup olmadığını kontrol etmektir. Hash değerinin aynı rasgele değere
yaklaştığı kabul edilirse; eşlenme olasılığı
n −
2 dır.

Teorem 3.5. Temel Hash Saldırıları: n-bitlik hash fonksiyonu için
n
2 hashing
(özetleme) operasyonu içinde bir ön görüntü veya ikinci ön görüntü bulmak için tahmini
bir saldırı beklenebilir. Mesajları seçebilen bir saldırgan için bir doğum günü saldırısı,
yaklaşık
2 /
2
n
operasyon içinden ) ( ) ( x h x h ′ = olacak şekilde x x ′ , çakışık mesaj çifti
bulunmasını sağlar.

Tanım 3.6. Bir n bitlik anahtarsız hash fonksiyonu ideal güvenliğe sahiptir. Eğer

1. Bir hash çıktısı verildiğinde ön görüntü ve ikinci ön görüntünün her birini üretmek
yaklaşık olarak
n
2 operasyon gerektiriyorsa ve

2. Bir çakışma üretmek yaklaşık olarak
2 /
2
n
operasyon gerektiriyorsa.

3.9.2 MAC Anahtar Uzayına Saldırı: Bir MAC anahtarı saptamak için eksiksiz,
ayrıntılı bir araştırma yoluyla denemeler yapılabilir. Bir saldırgan bir tek bilinen MAC
metin çifti ile bu metin üzerinde bütün olası anahtarların yönetiminde n-bitlik MAC
hesaplayabilir. Sonra bilinen çift ile hesaplanan MAC değerlerinden hangilerinin
77
uyuştuğunu kontrol eder. Bu, t-bitlik anahtar uzay için
t
2 MAC operasyonu gerektirir
ve
n t −
+ 2 1 adayın kalması beklenir. Bir MAC anahtarı
t
2 den daha az operasyonla geri
alınamaz. Bir MAC uzayına olası bir saldırı anahtarı geri almadan farklıdır. t-bitlik bir
anahtar ve sabit bir girdi için rasgele seçilen bir anahtar n-bitlik doğru MAC yi
t −
≈ 2 ,
n t < olasılığı ile sağlayacaktır.

3.9.3 Bir MAC nin Bit Boyutuna Saldırı: MAC sahtekarlığı, herhangi bir x girdisi ve
herhangi birinden elde edilmiş anahtar bilgisine sahip olmadan doğru MAC üretmeyi
içerir. n-bitlik bir MAC algoritmasına göre verilen bir girdi için bir MAC yi tahmin
etme veya verilen bir MAC çıktısı için bir ön görüntüyü tahmin etmenin başarı olasılığı
yaklaşık olarak
n −
2 kadardır, MDC de olduğu gibi. Bununla birlikte buradaki bir fark
bilinen MAC-metin çifti anahtar bilgisi veya verilen girdiler için MACs ı sağlayan girdi
ve çıktı değerlerinden oluşan bir bileşenden (black box) her ikisi olmadan MAC
değerlerinin doğruluğu kanıtlanamaz. İdeal olarak bir saldırgan olasılığı ) 2 , 2 max(
n t − −

den daha iyi olan yeni doğru bir ) , ( y x MAC metin çifti üretememelidir. Yani bir
anahtar veya MAC değerini ) 2 , 2 max(
n t − −
den daha iyi tahmin edememelidir.

Ön görüntü ve ikinci ön görüntü saldırılarının her ikisi için hash fonksiyonunun girdi
çıktı çiftlerinin büyük bir miktarını önceden hesaplayan bir rakip, sonraki saldırı zamanı
için depolama ile ön hesaplamaları değiş tokuş edebilir. Örneğin; Bir 64-bitlik hash
değeri için eğer rasgele
40
2 girdi seçip ayrılırsa, sonra onların hash değerini hesaplar ve
(hash değeri, çıktı) çiftlerini depolar. Böylece uzay, bir düşmanın ön görüntü bulma
olasılığını
64
2

ten
24
2

e çıkarmasını sağlar.

Farz edelim ki bir hash fonksiyonu n bitlik hash değeri üretsin. Temsilci olarak kabul
edelim ki
80
2 operasyon hesaplanabilirliğinin dışında uygun olsun.
40
2 basit operasyon
tamamıyla olasıdır,
56
2 sına da yeterli uygulamalarla tam olarak erişilebilir. Bu taktirde
n hakkında aşağıdaki ifadeler hazırlanabilir.

1. Bir TYHF için, 80 ≥ n olması gerekir. Etraflı çevrimdışı saldırılar
n
2 operasyon
gerektirir. Bu yukarıda bahsedildiği gibi hesaplamalarla azaltılabilir .

2. Bir ÇDHF için 160 ≥ n olması gerekir. Doğum günü saldırıları uygulanabilir.
78
3. Bir MAC için 80 64 − bitlik bir MAC anahtarı ile birlikte 64 ≥ n olması birçok
uygulama için yeterlidir. Eğer tek bir MAC anahtarı kullanımda kalıyorsa saldırılar bir
veya daha fazla MAC metin çiftine uygulanabilir. Fakat düzgün bir MAC algoritması
için ön görüntü ve 2. ön görüntü direnci anahtarın bilgi eksikliğinden takip edilmelidir.
Şu halde güvenlik n den ziyade anahtarın boyutuna bağlı olmalıdır.

Bir blok şifrenin amacı güvenliği sağlamak; bir saldırganın amacı ise şifre metinden
çeşitli kod anahtarları yardımıyla açık metni oluşturmaktır. Bir blok şifreye, eğer bir
anahtar bulunur ise tamamen kırılabilirdir ve eğer saldırgan, anahtar olmaksızın şifre
metinden açık metnin bir kısmını elde edebilirse kısmen kırılabilirdir denir.

O halde bir anahtarın uzunluğu ne olmalıdır? Bu sorunun tek yanıtı yoktur, duruma göre
değişir. Ne kadar güvenliğe gereksinim duyduğunuzu belirlemek için kendinize bazı
sorular sormanız gerekir. Verilerinizin değeri nedir? Ne kadarlık bir süre için
korunmaları gerekir? Düşmanlarınızın kaynakları nelerdir? Bir sisteme en zayıf
noktasından saldırılır. Eğer hem simetrik hem de açık anahtarlı algoritmaları kullanan
bir sistem tasarlıyorsanız, her tip şifreleme algoritması için söz konusu olan anahtar
uzunlukları bunların her biri üzerinden sisteme yapılacak saldırıların eşit güçlükte
olacağı şekilde seçilmelidir. 128-bit anahtarlı bir simetrik algoritmayı 384-bit anahtarlı
bir açık anahtar algoritma ile kullanmanın hiçbir anlamı yoktur.















79
KAYNAKLAR

[1] Menezes, A., Van Ooorschot, P., Vanstone, S., Handbook of Applied

Cryptography, CRC Press, 1996.

[2] http:// world.std.com/ ~cme/htlm/timeline.htlm, Oct. 2001.

[3] Altındiş, H., Sayılar Teorisi ve Uygulamaları, Berdan Matbaası, İstanbul, 1999.

[4] http://sertifika.bilten.tubitak.gov.tr./net/teknik/kriptografi.jsp.

[5] www.site.uottawa.ca/ ~chouinar/Handout_CSI4138.Authentication.pdf.

[6] http://en.wikipedia.org/wiki/cipher_block_chaining.

[7] Rosen, K.H.,Elemantary Number Theory and Its Applications, New Jersey, 1987.

[8] Vladimir Omar Calderón Yaksic, A study on hash functions for cryptography, 2-

3, 6-10, SANS Institute, 2003

[9] Preneel, B., Leuven, K.U., The Davies-Meyer Hash Function, Version1.1, 2004.

[10] Preneel, B.,Cryptanalysis of Message Authentication Codes, 2004.

[11] Federal Information Processing Standards Publication 180-2, Specifications For
The Hash Secure Standart, 3-16, 2002.

[12] Federal Information Processing Standards Publication 198, Announcing The
Standard for Keyed-Hash Message Authentication Code(HMAC), 2002.

[13] Özen, Ş., Açık Anahtar Şifreleme, Knapsack Şifreleri ve Hash fonksiyonları,
Yüksek Lisans Tezi, F.B.E. Erciyes Üniversitesi, 2003.

[14] Preneel, B., Leuven, K.U., The MASH Functions,Version1.1, 2004.

[15] Fischer, M., J., Cryptography and Computer Security, Yale University, 2003.

[16] Bellare, M., Canetti, R., Krawczyk, H., Message Authentication Using Hash
Functions-The HMAC Construction, Vol.2, No1, 1996.


80
[17] http://gsu.linux.org.tr/kripto-tr/kripto-giris.htlm.

[18] Lenstra, A.K., Progress In Hashing Cryptanalysis, Lucent Technology, Bell
Laboratories, 2004.

[19] Schafer, E., An Introduction To Cryptography, Santa Clara University.

[20] Kumanduri, R., Romeo, C., Number Theory With Computer Applications,
Prentice Hall, New Jersey, 1998.

[21] Soğukpınar, İ., Yetkilendirme ve Kriptolama, Gebze İleri Teknoloji Enstitüsü
Mühendislik Fakültesi.

[22] http://www.anujseth.com/crypto/history.htlm, Oct.2002.

[23] http://webhome.idirect.com/~jproc/crypto_hist.htlm, June.2003.

[24] Stallings, W., Cryptography and Network Security Principles and Practice, New
Jersey, 2003.
[25] http://www.mutasyon.net/makaleler.asp?id=30























81
ÖZ GEÇMİŞ

Adı Soyadı : Seniye SOYALIÇ

Baba Adı : Alaattin

Anne Adı : Şerife

Doğum Yeri / Tarihi : Kayseri / 1981

İlk ve orta öğretimini Kayseri'de tamamladı. 1998 yılında Selçuk Üniversitesi Fen
Edebiyat Fakültesi Matematik bölümünü kazandı. 1999 yılında Erciyes Üniversitesi'ne
yatay geçiş yaptı. Erciyes Üniversitesi Fen-Edebiyat Fakültesi Matematik Bölümü'nden
2002 yılında mezun oldu. Aynı yıl Erciyes Üniversitesi Fen Bilimleri Enstitüsü
Matematik Bölümü'nde yüksek lisansa başlayıp, 2003 yılında ise öğretmen olarak
göreve atanmıştır.

Adres : Kılıçaslan Mah. Zaviye Sk. No: 2/6
38030 Melikgazi / KAYSERİ
E-Posta : seniye_mat@hotmail.com

Sign up to vote on this title
UsefulNot useful