---
title: 'Dijital İmzalar'
source: 'https://academia.sh/tr/kurslar/kimlik-ve-kriptografi/dijital-imzalar'
course: 'Kimlik, Erişim ve Kriptografi'
language: tr
updated: '2026-08-17T18:08:36+00:00'
license: 'CC BY-SA 4.0'
---

# Dijital İmzalar

İmzanın kanıtladığı ve kanıtlamadığı kalemin ayrılması: 440 bitlik yığının her biti ve 512 bitlik imzanın her biti tek tek çevrildiğinde doğrulamanın 952 denemenin hiçbirinde ayakta kalmaması, altı kalemden ikisinin kanıtlanıp dördünün kanıtlanmaması, anahtarlı karmanın göndereni 2 adaya imzanın 1 adaya indirmesi ve imzalama anahtarı sızdığında 2.190 geçmiş imzanın tartışmalı hâle gelmesi.

Önceki ders doğrulanmayan bir kalemle kapandı: anahtar değişimi ortak sırrı üretiyor ama karşı
tarafın kim olduğunu söylemiyordu. Kanıt dışarıdan gelmek zorundaydı ve beşinci derste o kanıtın
yönü bir kez görülmüştü — özel anahtarla yapılan bir işlem açık anahtarla geri alınıyor ve geri
alınabilmesi kaynağı gösteriyordu.

Bu ders o yönü kendi biçimiyle ele alır. **Dijital imza (digital signature)**, özel anahtarla
üretilen ve açık anahtarla doğrulanan bir değerdir; doğrulama için gizli hiçbir kalem gerekmez.
Ölçülecek şey imzanın çalışıp çalışmadığı değil, tam olarak neyi kanıtladığı ve neyi
kanıtlamadığıdır.

## İmza ve Tek Bitlik Değişiklik

**KT20:** imza, özel anahtarı elinde tutan tarafça üretilir ve açık anahtarla herkes tarafından
doğrulanır; doğrulama için gizli hiçbir kalem gerekmez.

**KT21:** imza, imzalanan bayt dizisinin tamamına bağlıdır; tek bir bitin değişmesi doğrulamayı
düşürür.

```js
// imza/uret.mjs — imza uretilip dogrulanir, sonra imzalanan verinin her biti tek tek
// cevrilip dogrulamanin kac kez ayakta kaldigi sayilir. Kurgu bolgesel olcum aginda bir
// gunluk okuma yigini imzalanir. Anahtar malzemesi yazdirilmaz.
import { generateKeyPairSync, sign, verify } from "node:crypto";

// KT20: imza, ozel anahtari elinde tutan tarafca uretilir ve acik anahtarla herkes
//       tarafindan dogrulanir; dogrulama icin gizli hicbir kalem gerekmez.
// KT21: imza, imzalanan bayt dizisinin tamamina baglidir; tek bir bitin degismesi
//       dogrulamayi dusurur.

const { publicKey: ACIK, privateKey: OZEL } = generateKeyPairSync("ed25519");
const YIGIN = Buffer.from("SUBE-03|2026-03-01|okuma=4180|toplam=8813304|kayit=1240");
const imza = sign(null, YIGIN, OZEL);

console.log("imzalanan yigin :", YIGIN.length, "bayt,", YIGIN.length * 8, "bit");
console.log("imza boyu       :", imza.length, "bayt");
console.log("degismemis yigin:", verify(null, YIGIN, ACIK, imza) ? "gecerli" : "gecersiz");

let ayakta = 0;
for (let i = 0; i < YIGIN.length * 8; i++) {
  const b = Buffer.from(YIGIN); b[i >> 3] ^= 1 << (i & 7);
  if (verify(null, b, ACIK, imza)) ayakta++;
}
console.log(`yigin biti cevrildi: ${YIGIN.length * 8} deneme, dogrulama ayakta kalan: ${ayakta}`);

let imzaAyakta = 0;
for (let i = 0; i < imza.length * 8; i++) {
  const s = Buffer.from(imza); s[i >> 3] ^= 1 << (i & 7);
  if (verify(null, YIGIN, ACIK, s)) imzaAyakta++;
}
console.log(`imza biti cevrildi : ${imza.length * 8} deneme, dogrulama ayakta kalan: ${imzaAyakta}`);

const { publicKey: BASKA } = generateKeyPairSync("ed25519");
console.log("baska acik anahtarla dogrulama:",
  verify(null, YIGIN, BASKA, imza) ? "gecerli" : "gecersiz");
```

```
imzalanan yigin : 55 bayt, 440 bit
imza boyu       : 64 bayt
degismemis yigin: gecerli
yigin biti cevrildi: 440 deneme, dogrulama ayakta kalan: 0
imza biti cevrildi : 512 deneme, dogrulama ayakta kalan: 0
baska acik anahtarla dogrulama: gecersiz
```

Dokuz yüz elli iki denemenin hiçbirinde doğrulama ayakta kalmadı. Yığının 440 bitinin herhangi
biri ya da imzanın 512 bitinin herhangi biri çevrildiğinde sonuç aynıdır: geçersiz. Bu, ikinci
derste ölçülen çığ etkisinin imza tarafındaki karşılığıdır — imza, veriyi bir bütün olarak
bağlar ve hiçbir bölümü ayrı ele alınmaz.

Son satır ayrı bir kalemdir. İmza, üretildiği özel anahtarın **eşi** olan açık anahtarla
doğrulanır; başka bir açık anahtarla doğrulama geçersiz döner. Doğrulayan tarafın elinde doğru
açık anahtarın bulunması, bu zincirin ayrı bir kalemidir ve bu dersin sonunda açıkta kalacak
kalem tam olarak budur.

İmza boyu da bir karardır. Buradaki 64 bayt, beşinci dersteki 256 baytlık çıktıyla
karşılaştırıldığında dörtte birdir; kurgu ağda günde 12.400 imza üretiliyorsa fark günde 2,4
MiB'lik bir yüktür. İmzanın boyu güvenliğini değil, taşınma maliyetini belirler.

## İmza Özet Üzerinden Üretilir

Yığın 55 bayttı, ama imzalanan şey doğrudan o 55 bayt değildir. İmza şemaları veriyi önce bir
karma fonksiyonundan geçirir ve asimetrik işlemi **özet** üzerinde yapar. Nedeni beşinci derste
ölçülen boyut sınırıdır: asimetrik işlem sabit ve küçük bir girdi alır, oysa imzalanacak veri
herhangi bir uzunlukta olabilir. Sabit uzunluklu özet bu iki gereksinimi bağlar.

Bunun doğrudan sonucu, imzanın güvenliğinin karma fonksiyonunun **çakışma direncine** bağlı
olmasıdır. İkinci dersteki tabloda "şubeler arası imzalanan özet" satırının çakışma sütununda
yer almasının nedeni budur. Aynı özeti veren iki farklı yığın bulunabilirse, birine üretilen
imza ötekine de uyar; imzalayan taraf bir yığını imzalarken, hiç görmediği başka bir yığını da
imzalamış olur.

Sayı buradan çıkar. Çakışma direnci düştüğünde tartışmalı hâle gelen imza sayısı, imzalama
anahtarının sızmasındaki sayıyla aynıdır — kurgu ağda 2.190. Ama neden farklıdır: birinde
anahtar başkasının eline geçmiştir, ötekinde anahtara hiç dokunulmamıştır ve zincirin başka
bir halkası kırılmıştır. Zincirin kalemleri bu yüzden ayrı ayrı sayılır; imzanın güvenliği en
zayıf halkasının güvenliğidir.

Buradan çıkan ikinci kural anahtar ayrımıdır. Aynı anahtar çiftinin hem şifreleme hem imza için
kullanılması kalem sayısını yarıya indirir ama iki kırılmayı tek köke bağlar: imza anahtarının
sızması, o çiftle şifrelenmiş bütün trafiği de açar. Kurgu ağda ayrı çiftler kullanmak katılımcı
başına iki anahtar kalemi demektir — 7 katılımcıda 14 kalem — ve bunun karşılığı, bir kırılmanın
öteki kullanımı düşürmemesidir.

## İmzanın Kanıtladığı ve Kanıtlamadığı

**KT22:** imza, imzalayan tarafın özel anahtarı elinde tuttuğunu kanıtlar; o anahtarın kime ait
olduğunu, ne zaman kullanıldığını ve o an çalınıp çalınmadığını kanıtlamaz.

```js
// imza/kalem.mjs — imzanin kanitladigi ve kanitlamadigi kalemler, butunluk ile inkar
// edilemezligin ayrimi ve imzalama anahtari sizarsa dusen kalem (model). Kurgu bolgesel
// olcum agi sayilari kullanilir.

// KT22: imza, imzalayan tarafin ozel anahtari elinde tuttugunu kanitlar; o anahtarin
//       kime ait oldugunu, ne zaman kullanildigini ve o an calinip calinmadigini
//       kanitlamaz.

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const KALEM = [
  ["veri imzalandiktan sonra degismedi", "evet"],
  ["imzayi ureten taraf ozel anahtari tutuyordu", "evet"],
  ["o ozel anahtar kime ait", "hayir"],
  ["imza ne zaman uretildi", "hayir"],
  ["imzalayan icerigi gormus ve kabul etmis miydi", "hayir"],
  ["anahtar o anda calinmis miydi", "hayir"],
];
const A = [-46, 13];
yaz(A, "kalem", "kanitlaniyor");
for (const [ad, k] of KALEM) yaz(A, ad, k);
const olan = KALEM.filter(([, k]) => k === "evet").length;
console.log(`${KALEM.length} kalemden kanitlanan ${olan}, kanitlanmayan ${KALEM.length - olan}`);

const KATILIMCI = 7;                                 // kurgu: merkez + 6 sube
console.log(`\nayni yigin iki yolla imzalansa (${KATILIMCI} katilimci):`);
const B = [-22, 12, 12, 16];
yaz(B, "yol", "dogrulayan", "gonderen", "ucuncu tarafa");
yaz(B, "", "taraf", "adayi", "kanit");
yaz(B, "anahtarli karma", 2, 2, "hayir");
yaz(B, "dijital imza", KATILIMCI, 1, "evet");

const SUBE = 6, GUN = 365;
console.log(`\nimzalama anahtari sizarsa (${SUBE} sube, gunde 1 yigin):`);
const C = [-26, 14, 14];
yaz(C, "kalem", "bir subede", "tum aginda");
yaz(C, "tartismali gecmis imza", GUN, SUBE * GUN);
yaz(C, "yeni anahtar cifti", 1, SUBE);
yaz(C, "dagitilacak acik anahtar", 1, SUBE);
yaz(C, "yeniden imzalanacak yigin", GUN, SUBE * GUN);
```

```
kalem                                          kanitlaniyor
veri imzalandiktan sonra degismedi                     evet
imzayi ureten taraf ozel anahtari tutuyordu            evet
o ozel anahtar kime ait                               hayir
imza ne zaman uretildi                                hayir
imzalayan icerigi gormus ve kabul etmis miydi         hayir
anahtar o anda calinmis miydi                         hayir
6 kalemden kanitlanan 2, kanitlanmayan 4

ayni yigin iki yolla imzalansa (7 katilimci):
yol                     dogrulayan    gonderen   ucuncu tarafa
                             taraf       adayi           kanit
anahtarli karma                  2           2           hayir
dijital imza                     7           1            evet

imzalama anahtari sizarsa (6 sube, gunde 1 yigin):
kalem                         bir subede    tum aginda
tartismali gecmis imza               365          2190
yeni anahtar cifti                     1             6
dagitilacak acik anahtar               1             6
yeniden imzalanacak yigin            365          2190
```

Altı kalemden ikisi kanıtlanıyor, dördü kanıtlanmıyor. Bu oran imzanın zayıflığı değil,
kapsamının tanımıdır; kanıtlanmayan dört kalemin her biri ayrı bir mekanizma ister. Zaman için
bağımsız bir zaman damgası, anahtarın çalınıp çalınmadığı için bir iptal düzeni, anahtarın
sahibi için bir kimlik belgesi gerekir — üçü de bu konunun dışındadır ve üçü de kendi güven
kökünü getirir.

İmzanın ürettiği ikinci kalem — imzayı üretenin özel anahtarı elinde tutması — bir kimlik
değildir. Anahtarın **kime** ait olduğu imzanın içinde yazmaz. Ne zaman imzalandığı da yazmaz;
imzaya bir zaman damgası eklenebilir ama o damgayı da imzalayan taraf koyar ve dolayısıyla
damga, imzalayanın iddiasıdır. Anahtarın imzalama anında çalınmış olup olmadığı ise imzaya
hiçbir biçimde yansımaz: çalınmış bir anahtarla üretilen imza, geçerli bir imzadır.

## Bütünlük ve İnkâr Edilemezlik

İkinci tablo bu dersin kavramsal ayrımını sayıya bağlar. Dördüncü derste ölçülen anahtarlı
karma da bütünlük sağlıyordu — gövde değişirse etiket tutmuyordu. Fark, bütünlüğün ötesindedir.

**Bütünlük (integrity)** verinin değişmediğini gösterir ve iki mekanizma da bunu yapar.
**İnkâr edilemezlik (non-repudiation)** ise imzalayanın "bunu ben üretmedim" diyememesidir ve
bunun için gönderen adayının **bire** inmesi gerekir.

Anahtarlı karmada anahtarı iki taraf bilir; doğrulayabilen taraf sayısı ikidir ve gönderen
adayı da ikidir. Alıcı, aynı etiketi kendisi de üretebildiği için üçüncü bir tarafa hiçbir şey
kanıtlayamaz. Dijital imzada gizli kalem tek tarafta durur: doğrulayabilen taraf sayısı yedidir
— açık anahtarı olan herkes — ve gönderen adayı birdir. Üçüncü tarafa kanıt sunulabilir.

"Sunulabilir" sözcüğü koşulludur ve koşulu birinci tablodadır. İnkâr edilemezlik, ancak özel
anahtarın gerçekten yalnız o tarafta bulunduğu kabul edilirse geçerlidir. Anahtar bir dosyada
duruyorsa ve o dosyaya birkaç kişi erişebiliyorsa, matematiksel olarak kusursuz bir imza da
"ben yapmadım" savunmasını çürütmez. Bu yüzden inkâr edilemezlik kriptografik değil, kriptografi
ile desteklenen **işletimsel** bir özelliktir.

## Zincirin Altı Kalemi

Bir imzanın doğrulanmasından bir sonuç çıkarabilmek için aynı anda doğru olması gereken kalem
sayısı altıdır ve beşi teknik, biri işletimseldir.

Birincisi imzalayanın özel anahtarının gizli kalmasıdır. İkincisi, imzanın üzerinde üretildiği
karma fonksiyonunun çakışma direncidir. Üçüncüsü doğrulayanın doğru açık anahtarı elinde
tutmasıdır. Dördüncüsü şema parametrelerinin doğru seçilmiş olmasıdır.

Beşinci kalem en sessiz olanıdır: imzalanan bayt dizisi ile doğrulanan bayt dizisinin **birebir
aynı** olması. İmza bir anlam üzerine değil, bir bayt dizisi üzerine üretilir. Kurgu ağda
şube, günlük yığını bir metin satırına çevirip imzalar; merkez o satırı ayrıştırıp kendi
biçiminde yeniden yazar ve sonra doğrulamaya kalkarsa doğrulama düşer — veri değişmemiş olsa
bile. Ters durumu daha ağırdır: doğrulama, gelen ham baytlar üzerinde yapılıp iş mantığı
**yeniden ayrıştırılmış** bir kopya üzerinde yürütülürse, imzalanan şey ile üzerinde işlem
yapılan şey ayrışır. Bu yüzden imza doğrulanan bayt dizisi ile kullanılan veri aynı kaynaktan
gelmelidir.

Altıncı kalem şema seçimine bağlıdır. Bazı imza şemaları her imza için taze bir rastgele değer
ister ve o değerin tekrarlanması özel anahtarı açığa çıkarır; bu, dördüncü dersteki nonce
koşulunun imza tarafındaki karşılığıdır. Bu dersteki şema imzayı belirlenimci biçimde üretir ve
kalemi ortadan kaldırır. Altı kalemden biri, şema seçimiyle beşe indirilebilir — kalem sayısını
azaltmanın en ucuz yolu, kalemi yönetmek yerine gereksiz kılmaktır.

## Kök Kırılırsa

Üçüncü tablo kursun üçüncü sütununu bu mekanizma için doldurur. İmzalama anahtarı sızarsa kaç
kalem düşer? Doğrudan düşen kalem, o anahtarla imzalanmış bütün geçmiş yığınlardır: bir şubede
365, kurgu ağın tamamında 2.190 imza tartışmalı hâle gelir. "Tartışmalı", geçersiz demek
değildir — imzalar hâlâ doğrulanır, ama artık gönderen adayı bir değildir ve inkâr edilemezlik
niteliği geriye dönük olarak düşer.

Yenileme bedeli iki ayrı kalemde sayılır. Yeni anahtar çifti üretmek ve açık anahtarı dağıtmak
altı kalemdir — ucuzdur, çünkü dağıtılan kalem gizli değildir. Geçmişi kurtarmak ise 2.190
kalemdir: her yığının yeni anahtarla yeniden imzalanması. İkinci sayı çoğu kurulumda ödenmez ve
geçmiş, tartışmalı bırakılır.

Tartışmalı geçmişi daraltmanın bir yolu, imzanın ne zaman üretildiğini imzalayandan bağımsız
bir tarafa yazdırmaktır. O durumda sızıntı tarihinden önceki imzalar tartışma dışında kalır ve
2.190 kalemin yalnız bir bölümü düşer. Bedeli, her imza için bir dış tarafa yapılan ek çağrı ve
o tarafın kendisinin yeni bir güven kökü hâline gelmesidir. Kalem sayısı azalmaz, yer değiştirir.

Bu, önceki derslerdeki yenileme bedelleriyle karşılaştırıldığında farklı bir biçimdedir. Simetrik
anahtar sızdığında yenileme **gizli** kalem taşımayı gerektiriyordu; imza anahtarında taşınan
kalem açıktır. Buna karşılık simetrik anahtarın yenilenmesi geçmişi tartışmalı hâle getirmez,
imza anahtarınınki getirir.

## Özet

- İmza özel anahtarla üretilir, açık anahtarla doğrulanır ve doğrulama gizli hiçbir kalem
  gerektirmez.
- İmza, imzalanan verinin tamamına bağlıdır: 440 bitlik yığının ve 512 bitlik imzanın bitleri
  tek tek çevrildiğinde 952 denemenin hiçbirinde doğrulama ayakta kalmaz.
- İmza altı kalemden ikisini kanıtlar; anahtarın kime ait olduğu, ne zaman kullanıldığı,
  içeriğin görülüp kabul edildiği ve anahtarın o an çalınmış olup olmadığı kanıtlanmaz.
- Bütünlüğü iki mekanizma da sağlar; inkâr edilemezlik gönderen adayının bire inmesini ister —
  anahtarlı karmada aday 2, dijital imzada 1'dir.
- İnkâr edilemezlik koşulludur: özel anahtarın gerçekten tek tarafta durduğu kabulüne dayanır ve
  bu kabul işletimsel bir kalemdir.
- İmzalama anahtarı sızarsa 2.190 geçmiş imza tartışmalı olur; yenileme 6 açık kalem dağıtımı,
  geçmişi kurtarmak ise 2.190 yeniden imzalama kalemidir.

## Sonraki Adım

Bu konu yedi derste bir zincir kurdu. Geri dönüşün kaç kaleme bağlı olduğu sayıldı, çakışma
direnci ölçüldü, deneme maliyeti eğrisi çıkarıldı, anahtar dağıtımının aritmetiği yazıldı,
roller ayrıldı, ortak sır güvensiz kanalda üretildi ve imza bütünlüğü kanıtladı. Zincirin her
halkası kendi kökünü adlandırdı.

Kökler sırayla şunlardı: kodlamanın kökü yoktu; şifrelemenin kökü anahtarın gizli kalmasıydı;
karmanın kökü çakışmanın bulunamamasıydı; parola saklamanın kökü parolanın aday listesinde
olmamasıydı; simetrik düzenin kökü paylaşılan anahtarın yalnız iki tarafta bulunmasıydı;
asimetrik düzenin kökü özel anahtarın tek tarafta durmasıydı; anahtar değişiminin kökü gizli
üslerin gönderilmemesiydi; imzanın kökü ise imzalama anahtarının sahibinde kalmasıydı. Sekiz
kökün hiçbiri algoritmanın kendisi değildir — her biri bir kalemin nerede durduğuyla ilgilidir.

Ama son çıktı bloğunda bir satır açık kaldı: imza, başka bir açık anahtarla doğrulandığında
geçersiz döndü — yani doğrulama, doğru açık anahtarın elde bulunmasına dayanıyor. O açık anahtar
doğrulayan tarafa açık kanaldan geldi. Beşinci derste sorulan soru burada da yanıtsızdır:
imzayı doğrulayan açık anahtarın **kime ait olduğunu** hiçbir şey kanıtlamıyor. Yanlış bir açık
anahtarı doğru sanan bir doğrulayıcı, o anahtarın eşiyle üretilmiş her imzayı geçerli sayar ve
bunu yaparken hiçbir hata görmez. Sonraki konu **Açık Anahtar Altyapısı**, bu tek kalemi bir
zincire bağlar: bir açık anahtarın bir kimliğe ait olduğunu söyleyen belge, o belgeyi imzalayan
taraf ve zincirin en tepesinde duran kök.
