Bir hash işlevi, girdisini bir sonlu sayılar kümesi içindeki bir değerle eşleştiren bir işlevdir. Genel olarak bu küme doğal sayılar aralığıdır. Basit bir hash işlevi x'lerin tamsayılardan oluştuğu f(x) = 0 eşitliği ile ifade edilir. Daha ilginç bir hash işlevi ise f(x) = x mod 37 dir. İşlevdeki x'in değeri, x'in 37 ile bölünmesinden kalandır.
Bir belgenin sayısal imzası belgeye bir hash işlevinin uygulanmasının sonucudur. Kullanım amacına uygun olarak, bir hash işlevi iki önemli özelliğinin sağlanmasını gerektirir. İlki, aynı değere haşlanan iki belgenin bulunması zor olmalıdır. İkincisi ise, verilen bir hash değerini sağlayan bir belgenin bulunması zor olmalıdır.
Bazı genel anahtarlı şifreler
[24] belgeleri imzalamakta kullanılabilir. İmzacı belgeyi kendi gizli anahtarı ile şifreler. İmzayı kontrol etmek ve belgeyi görmek isteyen biri basitçe imzacının genel anahtarını kullanarak belgenin şifresini çözer. Bu algoritma, iyi bir hash işlevinin gerektirdiği iki özelliği sağlar, fakat pratikte, bu algoritma kullanışlılık bakımından çok yavaştır.
Bir alternatif de, bu iki önemli özelliği sağlamak üzere tasarlanmış hash işlevleri kullanmaktır. SHA ve MD5 bu algoritma için örnek olarak verilebilir. Bu algoritma kullanıldığında, bir belge onunla hash'lenerek imzalanmıştır ve hash değeri de imzadır. Bir başka kişi imzayı, belgenin ondaki kopyasını ayrıca hash'leyerek ve bu hash değerini orjinal belgenin hash değeri ile karşılaştırarak kontrol eder. Bu iki değer aynıysa belgeler de birbirinin aynıdır.
Şüphesiz, şimdiki sorun imza denetimi ile etkileşecek bir saldırgana izin vermeksizin sayısal imzalarda hash işlevinin kullanılmasıdır. Belge ve imza şifrelenmeksizin gönderilirse, bir saldırgan belgeyi değiştirebilir ve alıcının bilgisi dışında değişmiş belgeye uygun bir imza üretebilir. Eğer sadece belge şifrelenmişse, saldırgan imzayı tahrif ederek imza denetiminin başarısız olmasına sebep olabilir. Bir üçüncü seçenek de belgenin ve imzanın bir melez genel anahtarlı şifreleme kullanarak şifrelenmesidir. İmzalayan, kendi gizli anahtarını kullanır, diğer herkes belgeyi ve imzayı kontrol etmek için onun genel anahtarını kullanır. Buradan sesler iyi geliyor da, etkisi yok. Eğer bu algoritma gerçekten belgeyi güvenilir kılıyorsa, belgenin tahrif edilmesine karşı da güvenilir olacaktır ve imzaya gerek kalmayacaktır. Yine de bir takım sorunlar hala vardır; imza ve belgenin ikisini birden tahrif edilmekten koruyamaz. Bu algoritmada, simetrik şifrenin oturum anahtarı imzalayanın gizli anahtarı kullanılarak şifrelenir. Başkaları oturum anahtarını elde etmek için genel anahtarı kullanabilir. Bu sebeple, saldırgan için oturum anahtarını elde etmek kolaydır ve onu kullanarak yerine koyduğu belgeleri ve imzaları şifreleyip göndericinin ismiyle başkalarına gönderebilir.
Çalışan bir algoritma sadece imzayı şifrelemek için bir genel anahtar algoritmasının kullanıldığı algoritmadır. Hash değeri imzalayanın gizli anahtarı kullanılarak şifrelendiğinden herhangi biri genel anahtarı kullanarak imzayı kontrol edebilir. İmzalı belge herhangi bir algoritma kullanılarak gönderilebilir, belge genel amaçlı ise hiçbir şifreleme de yapılmayabilir. Belge değişikliğe uğrarsa, imza denetimi başarısız olacaktır, ancak bu, imza denetiminin tam olarak neyi yakalayacağının varsayıldığı ile ilgilidir. Sayısal İmza Standardı (DSA - Digital Signature Standard) tam da yukarıda anlatıldığı gibi çalışan bir genel anahtarlı imza algortimasıdır. DSA, GnuPG tarafından kullanılan birincil imzalama algoritmasıdır.
Belge ile ilgili görüş ve önerilerinizi lütfen iletmekten çekinmeyiniz. GNUPG, açık anahtarlı kriptografi teknikleri üzerine temellenmiş bir uygulamadır. Açık anahtarlı kriptografi hakkında daha geniş bilgiyi
http://zion.comu.edu.tr/~evreniz/belgeler/pkc/pkc.html adresinden temin edebilirsiniz.