Skip to content

Dijital İmzalar ve RSA İmza Şeması

Asimetrik şifreleme ile verinin "gizliliğini" (confidentiality) sağlamayı, kriptografik özet (hash) fonksiyonlarıyla da verinin "bütünlüğünü" (integrity) korumayı öğrendik. Ancak dijital dünyada çözülmesi gereken çok büyük bir problem daha vardır: Kimlik Doğrulama (Authentication) ve İnkar Edememezlik (Non-repudiation).

Bana internet üzerinden gelen bir e-postanın veya banka talimatının, gerçekten iddia edilen kişi tarafından gönderildiğini ve sonradan "bunu ben göndermedim" diyemeyeceğini nasıl garanti edebiliriz? İşte bu noktada, asimetrik şifreleme mantığının tam tersi yönünde çalışan Dijital İmzalar (Digital Signatures) devreye girer.

📌 Paradigma Değişimi: Şifreleme vs. İmzalama

Asimetrik sistemlerde (örneğin RSA) anahtar kullanım yönü amaca göre tamamen değişir:

  • Gizlilik (Şifreleme) Amacıyla: Mesaj, alıcının Açık Anahtarı ile şifrelenir. Sadece alıcının Gizli Anahtarı ile çözülebilir. (Herkes mesaj gönderebilir, sadece alıcı okuyabilir).
  • Kimlik Doğrulama (İmzalama) Amacıyla: Mesaj, göndericinin Gizli Anahtarı ile imzalanır. Herkes göndericinin Açık Anahtarı ile bu imzayı doğrulayabilir. (Sadece sahibi imza atabilir, herkes imzanın doğruluğunu teyit edebilir).

🔒 Dijital İmzanın Formal Tanımı

Bir dijital imza şeması temelde üç algoritmadan oluşan bir bütündür:

Tanım: Dijital İmza Şeması (Digital Signature Scheme)

Bir dijital imza şeması, mesaj uzayı M, imza uzayı S ve anahtar uzayı K olmak üzere şu 3 temel algoritmadan oluşur:

  1. Anahtar Üretimi (KeyGen): Göndericiye ait bir (pk,sk) anahtar çifti üretir. Burada pk herkesin bildiği açık anahtar (public key), sk ise sadece göndericinin bildiği gizli anahtardır (secret key).
  2. İmza Oluşturma (Sign): Göndericinin sk gizli anahtarı ve mM mesajı girdi olarak alınır, sS dijital imzası üretilir:s=Signsk(m)
  3. İmza Doğrulama (Verify): Göndericinin pk açık anahtarı, m mesajı ve s imzası girdi olarak alınır. İmza gerçekten bu mesaj için ve bu gizli anahtar ile üretilmişse Geçerli (True), aksi takdirde Geçersiz (False) çıktısı üretilir:Verifypk(m,s){True,False}

🏗️ Hash ve İmza Paradigması (Hash-and-Sign)

Teorik olarak koca bir dosyayı veya uzun bir metni doğrudan asimetrik anahtarla imzalayabilirsiniz. Ancak matematikte büyük sayılarla üs alma işlemleri son derece yavaştır. 2 GB'lık bir video dosyasını doğrudan RSA ile imzalamak saatler sürer.

Ayrıca doğrudan mesajı imzalamak, "Varoluşsal Sahtecilik" (Existential Forgery) adı verilen matematiksel saldırılara kapı aralar. Bu nedenle modern kriptografide asla doğrudan mesaj imzalanmaz.

💡 Altın Kural: Önce Özetle, Sonra İmzala!

Dijital imza atılmadan önce mesajın, çakışmaya dayanıklı bir H kriptografik hash fonksiyonu (örneğin SHA-256) ile özeti çıkarılır. Daha sonra gizli anahtar ile sadece bu küçük özet değeri (hash) imzalanır.

s=Signsk(H(m))

Alıcı da mesajın hash'ini kendi hesaplar ve gelen imzadaki hash ile karşılaştırır. Dosya ne kadar büyük olursa olsun, imzalama işlemi daima sabit boyutlu (örneğin 256 bit) bir sayı üzerinden saniyeler içinde gerçekleşir.


🔑 RSA Dijital İmza Algoritması

Dünyada en çok bilinen ve kök sertifikalarda hala yaygın olarak kullanılan imza yöntemi RSA tabanlıdır. Matematiksel altyapısı, daha önce öğrendiğimiz RSA şifrelemesi ile tamamen aynı asalları ve totient kurallarını kullanır.

Tanım: RSA İmza Şeması

1. Anahtar Üretimi: İki büyük asal sayı p ve q seçilir. Modül n=pq ve ϕ(n)=(p1)(q1) hesaplanır. gcd(a,ϕ(n))=1 olacak şekilde açık üs a seçilir. ad1(modϕ(n)) denkliğini sağlayan gizli üs d hesaplanır.

  • Açık Anahtar (Doğrulama için): (a,n)
  • Gizli Anahtar (İmzalama için): (d,n)

2. İmza Oluşturma (Gönderici): Gönderici m mesajının özetini h=H(m) çıkarır. Kendi gizli anahtarı (d) ile bu özeti imzalar:

shd(modn)

Oluşan (m,s) çifti (mesaj ve imza) alıcıya gönderilir.

3. İmza Doğrulama (Alıcı): Alıcı gelen s imzasını, göndericinin açık anahtarı (a) ile çözerek orijinal hash değerine (h) ulaşmaya çalışır:

hsa(modn)

Alıcı aynı zamanda gelen m mesajının hash'ini kendisi de hesaplar (H(m)). Eğer h==H(m) ise imza geçerlidir, belge değiştirilmemiştir ve kesinlikle gönderici tarafından imzalanmıştır.

Teorem: RSA İmzasının Doğruluğu

Doğrulama adımında sa(modn) işleminin sonucu her zaman orijinal mesajın özeti olan H(m) değerine denktir.

İspat

İmza oluşturma denkleminden biliyoruz ki sH(m)d(modn).

Doğrulama fonksiyonunda s yerine bu eşdeğerini koyduğumuzda:

sa(H(m)d)aH(m)da(modn)

Anahtar üretim adımından ad1(modϕ(n)) olduğunu biliyoruz. Çarpma işleminin değişme özelliği gereği da=ad'dir. RSA şifrelemesinin doğruluk ispatında Euler ve Çin Kalan Teoremleri yardımıyla gösterdiğimiz kural (bkz. RSA Şifreleme İspatı) burada da birebir geçerlidir:

H(m)adH(m)(modn)

Böylece saH(m)(modn) eşitliği sağlanır ve imzanın doğru şekilde eşleştiği kanıtlanmış olur.


📝 Çözümlü Uygulama: Sayısal RSA İmzası

Örnek: RSA İmza Oluşturma ve Doğrulama Adımları

Bir kullanıcının RSA anahtar çifti için başlangıç asalları p=5 ve q=11 olarak seçilmiştir. Açık üs değeri a=3 olarak belirlenmiştir. Bu kullanıcı, hash değeri H(m)=14 olarak hesaplanan bir PDF dosyasını imzalayacaktır.

Gerekli anahtarları oluşturunuz, dosyanın dijital imzasını (s) hesaplayınız ve alıcı tarafında bu imzanın nasıl doğrulandığını gösteriniz.

💡 Çözümü Göster / Gizle

1. Anahtar Üretimi:

  • Modül: n=pq=511=55
  • Euler Totient: ϕ(n)=(51)(111)=410=40
  • Açık üs a=3 verilmiş. gcd(3,40)=1 şartı sağlanıyor.
  • Gizli üs d'nin bulunması (3d1(mod40)): 327=81=(402)+11(mod40) olduğundan d=27'dir.
  • Açık Anahtar (Doğrulayıcı): (3,55)
  • Gizli Anahtar (İmzalayıcı): (27,55)

2. İmza Oluşturma (Gönderici Adımı): Gönderici dosyanın hash değerini (H(m)=14) sadece kendisinin bildiği d=27 gizli anahtarıyla imzalayacaktır:

s1427(mod55)

Hesaplamayı "Ardışık Kare Alma" yöntemiyle küçültelim:

14114(mod55)142=196=(553)+3131(mod55)144312=961=(5517)+2626(mod55)148262=676=(5512)+1616(mod55)1416162=256=(554)+3636(mod55)

Üs değerini parçalayalım (27=16+8+2+1):

1427=1416148142141142736163114(mod55)

Parçalı çarparak mod 55 alalım: 3616=576=(5510)+26263114=434=(557)+49496 (İşlem kolaylığı için 6 yazdık)

Son çarpımı yapalım:

26(6)=156

156'nın mod 55 altındaki pozitif dengini bulalım (553=165 ekleyelim):

156+165=9s=9

Oluşturulan Dijital İmza: s=9

3. İmza Doğrulama (Alıcı Adımı): Alıcı dosyayı ve s=9 imzasını alır. Göndericinin açık anahtarı olan a=3 ve n=55 değerlerini kullanarak imzayı açar:

hsa(modn)h93(mod55)

İşlemi yapalım:

93=729

729'un 55 ile bölümünden kalanı bulalım (5513=715):

729715=14h=14

Sonuç: Alıcının imzadan çıkardığı değer (h=14), dosyanın orijinal hash değeri (H(m)=14) ile birebir eşleşmiştir. İmza KESİNLİKLE geçerlidir; belge yolda değiştirilmemiştir ve sadece d=27 anahtarına sahip kişi tarafından oluşturulmuştur.

Akademik amaçlarla tasarlanmış açık kaynaklı eğitim arşivi. Bu sitedeki tüm ders notları ve içerikler CC BY-NC-SA 4.0 Lisansı ile korunmaktadır.