Kriptoloji: Kriptografi, Kriptanaliz ve Kriptografik Mühendislik

Kriptoloji: Kriptografi, Kriptanaliz ve Kriptografik Mühendislik

Kriptolojinin matematiksel temelleri, klasik şifreler, AES, RSA, eliptik eğriler, kriptanaliz, doğrulanmış şifreleme, dijital imzalar, TLS 1.3, yan kanal analizi ve kuantum sonrası kriptografi üzerine 25 ünitelik ders.

Kriptoloji, bilgi güvenliğini matematiksel yöntemler ve tanımlanmış saldırgan modelleri altında inceleyen kriptografi ile bu yöntemlerin çözümleme ve güvenlik sınırlarını araştıran kriptanalizi kapsar. Çalışma alanı; klasik şifreleme, sayı teorisi, bilgi kuramsal güvenlik, hesaplamalı güvenlik tanımları, simetrik ve açık anahtarlı algoritmalar, anahtar yönetimi, protokoller ve kriptografik uygulama güvenliği olarak düzenlenmiştir. Her yöntem, dayandığı varsayımlar, işlemsel tanımı, güvenlik özellikleri ve bilinen sınırlamalarıyla değerlendirilir.

Matematiksel önkoşullar Ayrık Matematik ve Veri Yapıları ve Algoritma Analizi dersleriyle ilişkilidir. Kriptografik algoritmaların yazılım sistemlerindeki uygulanması Güvenli Yazılım Mühendisliği, daha geniş savunma mimarisi ise Siber Güvenlik Mühendisliği derslerinde ele alınır. Temel kavramlar için AES-GCM, HMAC, Kriptografik Özet ve TLS 1.3 wiki maddelerine başvurulabilir. Bu ilişkiler, bir kriptografik ilkelin matematiksel özelliği ile onu kullanan sistemin güvenliğinin ayrı değerlendirme düzeyleri olduğunu ortaya koyar.

Kod blokları, belirtilen matematiksel dönüşümlerin yeniden üretilebilir öğretim örnekleridir. Gerçek uygulamalarda güncel standartlarla uyumlu kriptografi kitaplıkları, uygun anahtar yönetimi ve protokol düzeyinde doğrulama gereklidir. Klasik şifreler, küçük sayısal RSA örnekleri ve basitleştirilmiş güvenlik deneyleri üretim amaçlı güvenlik çözümleri olarak kullanılmamalıdır.

Ünite 1: Kriptolojinin Tarihsel Gelişimi ve Güvenlik Temelleri

Kriptografi, kriptanaliz ve sistem güvenliği

Kriptoloji, bilgiyi belirli bir saldırgan modeline karşı korumaya çalışan kriptografi ile bu korumanın varsayımlarını ve zayıflıklarını inceleyen kriptanalizi birlikte ele alır. Bir sistemin güvenliği yalnızca kullanılan şifreleme algoritmasının adına bağlanamaz: anahtarın nasıl üretildiği, nasıl saklandığı, mesajın hangi biçimde kodlandığı, hangi tarafın kimliğinin doğrulandığı ve çözümlenen veriye nasıl davranıldığı aynı güvenlik sınırının parçalarıdır. Örneğin bir dosyanın AES ile şifrelenmesi gizlilik sağlayabilir; fakat doğrulama etiketi veya ayrı bir MAC yoksa dosyaya müdahale edildiğinin güvenilir biçimde anlaşılması garanti edilmez. Yöntemlerin değerlendirilmesinde korunan özellik, kabul edilen varsayım ve başarısızlık koşulu birbirinden ayrılır.

Gizlilik, saldırganın mesajın içeriğine ilişkin belirleyici bilgi edinmesini önlemeyi; bütünlük, yetkisiz değişikliği fark etmeyi; kimlik doğrulama, iletinin iddia edilen tarafla ilişkisini doğrulamayı amaçlar. İnkâr edilememe iddiası ise dijital imzanın matematiksel geçerliliği ile imza anahtarının hukuken ve fiilen kimin denetiminde olduğu arasındaki fark hesaba katılmadan kurulamaz. Erişilebilirlik ve hizmet sürekliliği çoğu zaman kriptografiden daha geniş mimari kararlar gerektirir.

Kriptografik Yöntemlerin Tarihsel Gelişimi

Klasik yerine koyma ve yer değiştirme şifreleri, anahtar uzayı ve dilin istatistiksel yapısı arasındaki gerilimi görünür kıldı. Kerckhoffs ilkesi, yöntemin gizliliğinden değil anahtarın gizliliğinden güvenlik beklenmesini sistemli hale getirdi. Shannon'ın bilgi kuramsal yaklaşımı, mutlak gizliliğin neyi gerektirdiğini gösterdi; modern hesaplamalı kriptografi ise sınırlı kaynaklı saldırganlara karşı matematiksel güvenlik deneyleri tanımladı. DES'in yerini AES'in alması, RSA ve Diffie–Hellman'ın açık anahtarlı yaklaşımı yaygınlaştırması, doğrulanmış şifrelemenin protokollere taşınması ve kuantum sonrası standartlaşma tek bir tarih çizgisinin farklı mühendislik cevaplarıdır.

Bir koruma tasarlarken önce varlık (örneğin kaydedilmiş konuşma), ardından saldırganın kabiliyeti (ağ dinleme, dosya değiştirme, anahtar çalma), istenen özellik ve güven sınırı belirlenir. Bundan sonra algoritma ailesi, anahtar yönetimi ve doğrulama testleri seçilir. Bu işlem sırasının tersine çevrilmesi, güçlü bir ilkelin yanlış bağlamda kullanılmasına yol açar.

Kriptografik İlkeler ve Protokol Bileşimi

Bir özet fonksiyonu, rastgele anahtar üreticisi veya blok şifre birer ilkeldir; bunları kimlik, tazelik, tekrar oynatma koruması ve hata davranışıyla birleştiren yapı ise protokoldür. Protokol denetiminde mesajların sırası, hata dönüşlerinin görünürlüğü, zaman aşımı, anahtar yenileme ve saklanan bağlam birlikte incelenir. Bir bileşenin güvenlik ispatı, onu kullanan her protokolün otomatik olarak güvenli olduğunu göstermez.

Sezar Şifresinin Tanımı ve Güvenlik Sınırı

Tarihsel şifreleme dönüşümü sonlu bir alfabe üzerinde tanımlanır. Önce bir harf alfabesi seçilir; örneğin 26 harfli Latin alfabesinde A=0, B=1, ..., Z=25 dönüşümü kurulur. Sezar şifrelemesi E_k(x)=(x+k) mod 26, çözme işlemi D_k(y)=(y-k) mod 26 biçiminde uygulanır. k=3 için ATAK sözcüğü sırasıyla A→D, T→W, A→D, K→N dönüşümlerinden geçer ve DWDN oluşur. Çözme algoritmasının doğru çalışması yalnızca modüler toplamanın tersinden kaynaklanır; şifrenin güvenli olduğunu kanıtlamaz. Saldırgan 26 olası kaydırmanın tamamını hesaplayabilir. Açık metnin Türkçe olduğu bir sistemde Türkçe alfabe, harf normalizasyonu ve boşluk politikasının en başta tanımlanması gerekir; 26 harfli örneği 29 harfli Türkçe alfabeye sessizce taşımak yanlıştır.

Sezar örneği kriptografi, kriptanaliz ve gerçekleştirim güvenliği arasındaki ayrımı gösterir. Kriptografi iki dönüşümü ve anahtarı tanımlar; kriptanaliz anahtarı bilmeden metni kurtarmaya çalışır; kriptografik mühendislik karakter kodlaması, veri biçimi, hatalı giriş ve anahtar yaşam döngüsüyle ilgilenir. Sezar'ın güvenlik sınırını anlamak, AES gibi çağdaş şifrelerde 'anahtar uzunluğu', 'algoritmanın açıklığı' ve 'saldırganın erişimi' terimlerini doğru kullanmanın başlangıcıdır.

Tarihsel Gelişimde Güvenlik Gereksinimleri

Klasik tek alfabeli şifrelerin temel sorunu, açık metnin istatistiksel özelliklerini korumalarıdır. Çok alfabeli Vigenère yaklaşımı tek bir kaydırmayı tekrar eden anahtar dizisine dönüştürdü, fakat anahtar periyodu yeni bir zayıflık oluşturdu. Tek kullanımlık şifre güvenliğinin bilgi kuramsal koşulları Shannon tarafından biçimselleştirildi. Açık anahtarlı kriptografi, anahtar dağıtımının önceden paylaşılan sır gerektirmesi sorununa farklı bir yanıt verdi. Modern AEAD tasarımları ise gizlilik ile bütünlüğün birlikte tanımlanması ihtiyacına cevap verir. Bu tarihsel sıra, algoritmaları yalnız yayın yılıyla değil karşılanan güvenlik gereksinimiyle okumayı sağlar.

Ünite 2: Klasik Şifreleme Yöntemleri ve Kriptanaliz

Klasik yerine koyma şifresi ve frekans saldırısı animasyonu
Klasik yerine koyma şifresi ve frekans saldırısı

Yerine koyma, transpozisyon ve anahtar uzayı

Sezar şifresinde bir harfin sayısal karşılığı x ise şifreli harf E_k(x)=(x+k) mod 26 olur. Afin şifre bunu E_(a,b)(x)=(ax+b) mod 26 biçimine genişletir; a sayısının 26 ile aralarında asal olması çözmenin önkoşuludur. Harf yerlerini değiştiren transpozisyon, simgeleri değiştirmeden konumlarını yeniden düzenler. Bunların tümü güncel güvenlik standardı değil, kriptanalizin nasıl düşündüğünü gösteren tarihsel modellerdir.

Vigenère türü çok alfabeli dönüşümlerde anahtar tekrar ettiği için harf dağılımı tek bir dağılım olarak görünmez. Ancak anahtar periyodu bilinir veya tahmin edilirse metin periyotlarına ayrılarak her alt dizinin frekansları incelenebilir. Kasiski tekrar aralıkları ve çakışma indeksi, aday periyot bulmada yardımcı istatistiklerdir; az veri veya alışılmadık dilde yanıltıcı olabilir. Kriptanaliz bundan sonra aday anahtarı üretir, çözümü dil modeliyle puanlar ve elde edilen açık metnin bağlamsal doğruluğunu ayrıca denetler.

Sezar Şifresinin Python ile Gösterimi

Aşağıdaki işlev Latin alfabesindeki harfleri dönüştürür, diğer karakterleri korur ve negatif kaydırmayla aynı algoritmanın tersini kullanır. Uygulama, klasik bir yerine koyma şifresinin dönüşümünü gösterir; gizli veri saklama amacıyla güvenli değildir.

def caesar(text, shift):
    result = []
    for c in text:
        if 'A' <= c <= 'Z':
            result.append(chr((ord(c)-65+shift) % 26 + 65))
        elif 'a' <= c <= 'z':
            result.append(chr((ord(c)-97+shift) % 26 + 97))
        else:
            result.append(c)
    return ''.join(result)

assert caesar(caesar('Cryptology 2026', 9), -9) == 'Cryptology 2026'

Klasik Şifrelemede İstatistiksel Zayıflıklar

Frekans analizi, yöntem gizli olsa bile yapısal örüntünün bilgi sızdırabileceğini gösterir. Rotor makineleri ve mekanik düzenekler bu örüntüyü karmaşıklaştırmış olsa da operasyonel prosedür, anahtar dağıtımı ve tekrar kullanımından doğan açıklar devam etmiştir. Şifreleme tasarımlarının tarihsel gelişiminde, her yeni yöntemin önceki sistemin hangi güvenlik eksikliğine yanıt verdiği belirlenir.

Sezar, afin ve Vigenère: şifreleme, çözme ve saldırı hesabı

Sezar şifresinde önce alfabetik karşılıklar bulunur, ardından her konuma aynı k eklenir ve modül alınır. Anahtarı 26 olasılıktan biri olan bu şemayı çözmenin maliyeti harf sayısıyla birlikte doğrusal büyür: 26 adayın her biri O(L) zamanda üretilebilir. Anahtar alanı küçük olmakla kalmaz; harflerin frekansı yalnız yer değiştirir. Harf olasılıkları yaklaşık p_i ise aday çözümün dil modeliyle uyumu Σ_i (o_i-E_i)^2/E_i gibi ki-kare puanlarıyla değerlendirilebilir; kısa metin ve özel adlar sonucu bozabilir.

Afin şifre E_(a,b)(x)=(ax+b) mod 26 kuralını kullanır. Çözme ancak gcd(a,26)=1 olduğunda mümkündür; ters katsayı a^(-1) genişletilmiş Öklid yöntemiyle elde edilir ve D(y)=a^(-1)(y-b) mod 26 hesaplanır. Örneğin a=5,b=8 ile A değeri 8 olur; aynı anahtarla her harf aynı çıktıya gittiği için frekans izi hâlâ korunur. Çarpan a için 12 uygun değer ve b için 26 seçenek vardır: 312 anahtarı taramak güncel gizlilik sağlamaz.

Vigenère'de anahtar kelimenin harf değerleri k_0,...,k_(r-1) seçilir; konum i için c_i=(m_i+k_(i mod r)) mod 26 uygulanır. Anahtar uzunluğu r biliniyorsa metin r ayrı Sezar sütununa bölünür. Önce tekrar eden harf kümelerinin aralıklarıyla olası periyot aranabilir (Kasiski incelemesi), ardından çakışma indisi IC=Σ_i n_i(n_i-1)/(L(L-1)) ile sütunların dil benzerliği karşılaştırılabilir. Bu istatistikler kesin anahtar vermez; hipotezi daraltır. Anahtar dizisi her mesajda tekrar kullanıldıkça aynı konumlardaki dil izleri birikir.

Hill Şifresi ve Permütasyon Tabanlı Şifreler

Hill şifresi bir vektör bloğu c=K m mod 26 ile işler. Geri dönüş için yalnız matrisin sayısal tersi değil, determinantın 26 ile aralarında asal olması gerekir. Örneğin determinantı çift olan bir matris için tekil olmayan bir gerçek sayı matrisi olsa bile modüler çözme yapılamaz. Transpozisyon şifresi harflerin değerini değiştirmeyip konumunu permüte eder; dolayısıyla unigram frekansı değişmezken çoklu harf istatistiği ve diziliş örüntüsü etkilenir. Tek alfabeli şifre, çok alfabeli şifre, blok doğrusal dönüşümü ve transpozisyon farklı mekanizmalardır; tümünün modern şifreye evrilmiş güvenli tasarımlar olduğu iddia edilemez.

Sezar Şifresinde Anahtar Uzayının Taranması

Aşağıdaki kod şifreleme değil, tüm Sezar anahtarlarını döndüren öğretim aracıdır. Bir adayın anlamlı olup olmadığı otomatik güvenlik kanıtı değil, dil bağımlı bir çözümleme adımıdır.

ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"
def caesar_candidates(ciphertext):
    data = ciphertext.upper()
    if any(ch not in ALPHABET + \" \" for ch in data):
        raise ValueError(\"Use A-Z and spaces for this demonstration\")
    for k in range(26):
        trial = \"\".join(ALPHABET[(ord(c) - 65 - k) % 26] if c != \" \" else \" \" for c in data)
        yield k, trial

assert dict(caesar_candidates(\"DWDN\"))[3] == \"ATAK\"

Playfair, Skytale, sütun transpozisyonu ve rotor makineleri

Playfair şifresi, tek harfi değil ikili harfleri 5×5 anahtar tablosunda değerlendirir; çiftlerin aynı satırda, sütunda veya dikdörtgen köşelerinde olmasına göre iki harfin yerleri değiştirilir. I/J harflerinin birleştirilmesi gibi alfabe kararları çözme ile birebir karşılık için tanımlanmalıdır. Skytale, harf konumunu fiziksel çubuk çevresindeki sarım düzeniyle değiştirir; belirleyici özellik karakter değerinden çok permütasyondur. Sütun transpozisyonunda anahtar sırası satır-sütun okuma düzenini belirler; birkaç aşamalı transpozisyon dahi dil istatistiğini tümüyle yok etmez.

Elektromekanik rotor makineleri, her tuşta dönüşen iç duruma bağlı farklı yerine koymalar üretir. Enigma örneğinde rotor sırası, başlangıç konumu, halka ayarı ve bağlantı panosu gibi parametreler gerçek anahtar alanını oluşturur; bu makinelerin tarihsel kriptanalizi basit 26 kaydırma denemesiyle aynı yöntem değildir. Buradaki tarihsel örnekler, bir sistemin algoritma ailesi, gerçek anahtar alanı, işletim prosedürü ve mesaj başlığı gibi konulardaki güvenliğinin neden birlikte ele alındığını öğretir.

Klasik Şifreleme Algoritmalarının Karşılaştırmalı Analizi

Sezar şifresinde harfi 0..25 aralığında tamsayıya dönüştürüp E_k(x)=(x+k) mod 26 hesaplarız; çözmede D_k(y)=(y-k) mod 26 uygulanır. k=3 seçildiğinde A→D, Y→B, Z→C olur. Bu dönüşümün önemli niteliği, aynı açık harfin her zaman aynı şifreli harfe dönüşmesidir; istatistik korunur. Afin şifrede E_{a,b}(x)=(ax+b) mod 26 kullanılır. a değerinin 26 ile aralarında asal olması zorunludur; çünkü ancak bu durumda a^{-1} mod 26 vardır. Örneğin a=5,b=8 için A→I; çözme işlemi x=21(y-8) mod 26 kullanır; 5·21 mod 26=1 olduğunu ayrıca doğrulayabiliriz.

Vigenère yönteminde anahtar harfleri konuma bağlı k_i kaydırması üretir: c_i=(p_i+k_i) mod 26. Burada asıl sorun, anahtarın tekrarlanmasıdır. Dönem uzunluğu tahmin edildikten sonra her i mod r sütunu sabit kaydırmalı bir metinmiş gibi istatistiksel olarak sınanabilir. Kasiski tekrarlarının ortak bölenleri birer aday dönemdir, kesin kanıt değildir. Çakışma indisi IC=Σ f_j(f_j−1)/(N(N−1)), rastgele ve doğal dile yakın sütunları ayırmaya yardımcı olur; kısa metinde tahmin belirsizliği yükselir. Hill şifresi ise birden fazla harfi c=Kp (mod 26) biçiminde bloklar; çözme için det(K) ile 26'nın aralarında asal olması gerekir. Anahtar uzayının büyüklüğü veya blok işleminin kullanılması, tek başına seçilmiş açık metin saldırılarına karşı güvenlik oluşturmaz.

Afin Şifrenin Şifreleme ve Çözme Denetimi

def affine(text, a=5, b=8, decrypt=False):
    assert __import__('math').gcd(a, 26) == 1
    inv = pow(a, -1, 26)
    out = []
    for ch in text.upper():
        if 'A' <= ch <= 'Z':
            n = ord(ch) - ord('A')
            v = (inv * (n - b)) % 26 if decrypt else (a * n + b) % 26
            out.append(chr(ord('A') + v))
        else:
            out.append(ch)
    return ''.join(out)

assert affine(affine('MATEMATIK'), decrypt=True) == 'MATEMATIK'

Kod 26 harfli Latin alfabesiyle sınırlıdır. Türkçe karakterler için ayrı bir alfabe eşlemesi gerektirir; güncel mesaj güvenliği sağlamaz. Alfabe normalizasyonu, boşluk bırakma politikası ve anahtar alanı kriptanalizde sonuçları etkiler.

Ünite 3: Sayılar Teorisi ve Modüler Aritmetik

Genişletilmiş Öklid ve modüler ters animasyonu
Genişletilmiş Öklid ve modüler ters
Square-and-multiply modüler üs alma animasyonu
Square-and-multiply modüler üs alma

Bölünebilme, EBOB ve modüler ters

Kriptografik tamsayı hesaplamaları büyük sayıların sıradan ondalık gösterimiyle değil, kalanın oluşturduğu eşdeğerlik sınıflarıyla çalışır. a ≡ b (mod n) ifadesi, n sayısının a-b farkını bölmesi anlamına gelir. Modüler toplama ve çarpma bu sınıflarda tanımlıdır; modüler bölme ise yalnızca bölenin tersinin bulunduğu durumda mümkündür. a sayısının n modülündeki çarpımsal tersi ancak gcd(a,n)=1 iken vardır.

Öklid algoritması gcd(a,b)=gcd(b,a mod b) eşitliğini tekrarlar. Genişletilmiş sürüm, EBOB'a ek olarak ax+by=gcd(a,b) eşitliğini sağlayan katsayıları üretir; EBOB birse x mod b, a için modüler terstir. Örneğin 17×2753 ≡ 1 (mod 3120) olduğundan 2753, 17'nin 3120 modülündeki tersidir. Sonuç yalnız sayı ezberleyerek değil, algoritmanın değişmezi izlenerek doğrulanmalıdır.

Hızlı üs alma ve CRT

a^e mod n işlemini üs kadar çarpma yaparak hesaplamak yerine ikili üs açılımı kullanılır. Her adımda taban karesi modüle göre alınır; üssün mevcut biti birse biriktirici çarpılır. Böylece yaklaşık O(log e) modüler çarpma gerekir. Çin kalan teoremi, aralarında asal modüllerdeki sonuçları tek çözüme birleştirir. Büyük RSA işlemlerinde bu ayrıştırma hızı artırabilir; ancak uygulama süre farkının anahtar bilgisi sızdırmaması ayrıca sağlanmalıdır.

# Yalnızca aritmetik öğretimi: üretim kriptografi uygulaması değildir.
def mod_inverse(a, modulus):
    old_r, r = a, modulus
    old_s, s = 1, 0
    while r:
        q = old_r // r
        old_r, r = r, old_r - q * r
        old_s, s = s, old_s - q * s
    if old_r != 1:
        raise ValueError(\"Modüler ters yok\")
    return old_s % modulus

assert mod_inverse(17, 3120) == 2753
assert pow(7, 128, 13) == 3

Asallık, Euler ve aritmetiğin güvenlik sınırı

Euler'in a^φ(n) ≡ 1 (mod n) sonucu yalnızca gcd(a,n)=1 koşulunda kullanılır. Fermat teoremi bunun asal modüldeki özel halidir; yalnızca bir eşitliği sağlaması, sayının her durumda asal olduğunu kanıtlamaz. Üretim anahtarı oluştururken güvenilir büyük tamsayı ve asallık algoritmaları, güvenli rastgelelik, yan kanala dayanıklı uygulama ve standart anahtar boyları birlikte gerekir. Küçük sayılı ders örnekleri gerçek anahtar üretimi için kullanılamaz.

RSA Aritmetiğinin Sayısal Doğrulaması

Küçük sayılarla p=61, q=53 seçilirse n=3233 ve λ(n)=lcm(60,52)=780 olur. e=17 için ters katsayı d=413'tür; çünkü 17×413 mod 780=1. m=65 mesajı üzerinde pow(65,17,3233)=2790 ve pow(2790,413,3233)=65 eşitlikleri, aritmetik işlemin terslenebilirliğini gösterir. Ancak bu örnek gerçek RSA anahtar üretiminde kabul edilemeyecek küçüklükte asallar kullanır, açık metni doğrudan deterministik biçimde dönüştürür ve hiçbir OAEP kodlaması içermez. Testin sonucu yalnız cebirsel doğruluk, güvenli şifreleme değildir.

Modüler Aritmetik Algoritmalarının Bileşimi

Bir RSA anahtarı oluşturulurken rastgele seçilmiş iki büyük asaldan n=pq hesaplanır; λ(n)=lcm(p-1,q-1) ile bir birim grubunun üssü belirlenir. Açık üs e için gcd(e,λ(n))=1 şartı kontrol edilir, sonra d=e^(-1) mod λ(n) hesaplanır. Bu sıranın gerekçesi açıktır: ortak bölen varsa ters yoktur, ters yoksa çözme işleminin bütün geçerli temsilciler için doğru olması sağlanamaz. Öğretim ölçeğinde p=61,q=53,n=3233,φ(n)=3120,e=17,d=2753 seçilip m=65 için c=65^17 mod 3233=2790, c^2753 mod 3233=65 işlemleri tek tek doğrulanabilir. Bu sayılar asla üretim güvenliği sağlamaz.

Hızlı üs alma işleminde başlangıçta result=1, base=a mod n, exp=e alınır. exp tek ise sonuç result·base mod n ile güncellenir; her yinelemede base=base² mod n, exp=exp//2 yapılır. Döngünün değişmezi result·base^exp ≡ a^e (mod n) bağıntısıdır. Böylece hem çalışma maliyeti hem de doğruluk aynı bağıntıyla tartışılır. Gizli üs ile uygulandığında bitlere bağlı farklı dallanma ve bellek davranışı güvenlik riski oluşturabileceğinden üretim kodunda özel büyük sayı kütüphanesi ve sabit zamanlı işlemler gerekir.

Asal Sayı Üretiminde Olasılıksal Testler

Üretimde 1024 bitlik bir rastgele sayının 'asal göründüğünü' belirlemek basit bir bölme tablosundan ibaret değildir. Aday üretici uygun uzunlukta rastgele tek sayılar kurar; küçük asal bölenler elenir, olasılıksal testler veya doğrulanmış asal üretme yöntemleriyle ilerlenir. Miller–Rabin testinde n−1=2^s d (d tek) olarak ayrılır ve seçilen tanıklar için a^d mod n değerinden başlayarak kareler sınanır. Birleşik sayı bazen belirli tanıklarla testi geçebilir; hata olasılığı kullanılan stratejiye bağlıdır. RSA güvenliği yalnız p ve q'nun asal olmasına değil, rastgeleliğe, uygun aralığa ve standartlarla uyumlu anahtar parametrelerine de bağlıdır.

Çin Kalan Teoreminin Algoritmik Doğrulaması

Çözme hızlandırmasında m_p=c^(d mod (p−1)) mod p ve m_q=c^(d mod (q−1)) mod q bulunur; CRT ile tek m mod n değeri yeniden kurulur. Bu, yaklaşık yarı boyuttaki modüller üzerinde hesap yaparak hızı artırır. Buna karşılık hatalı ara sonuçların gözlenebilir olması anahtar güvenliğini etkileyebilir. CRT sonucu m^e mod n == c biçiminde doğrulanabilir; doğrulama, uygun körleme ve fiziksel hata modeli birlikte değerlendirilmelidir.

Ünite 4: Cebirsel Yapılar, Sonlu Cisimler ve Eliptik Eğri Aritmetiği

Eliptik eğri nokta toplama animasyonu
Eliptik eğri nokta toplama

Grup ve Cisim Yapılarının Kriptografideki İşlevleri

Bir grup, kapalı bir işlem, birim öğe ve tersleriyle tanımlanır; işlemin değişmeli olması ayrıca Abel grubu özelliğidir. Bir cisim ise sıfır dışındaki öğelerin çarpma altında terslenebilmesini, toplama ve çarpmanın dağılımını gerektirir. Bu ayrım kriptografide somuttur: Diffie–Hellman bir çevrimsel grup üzerinde tanımlanırken AES'in bayt aritmetiği GF(2^8) sonlu cisminden yararlanır. Modüler tam sayılar Z/nZ, n bileşik olduğunda genellikle cisim değildir.

GF(2⁸) ve polinom işlemleri

GF(2) katsayılı polinomlar kullanıldığında baytın bitleri bir polinomun katsayılarıdır. Toplama XOR ile yapılır; çarpma ise polinomların çarpımının seçilen indirgenemez polinoma göre kalanının alınmasıdır. AES için kullanılan polinom x^8+x^4+x^3+x+1 olup ikili gösterimi 0x11B'dir. Örneğin 0x57 × 0x83 bu cisimde 0xC1 verir. Bu işlemler AES S-box ve MixColumns aşamalarının neden yalnız tam sayı çarpımı olmadığını gösterir.

Eliptik Eğri Grup İşlemleri

Asal karakteristikli basit bir eğri y² ≡ x³+ax+b (mod p) biçiminde yazılır. 4a³+27b² ifadesinin p modülünde sıfır olmaması tekil olmayan eğri koşuludur. Nokta toplama, doğrunun eğriyle kesişimi ve yansıtma geometrisinden elde edilir; gerçek hesap modüler aritmetiktir. kP skaler çarpımı, bitlere göre çiftleme ve toplama ile bulunur. Gizli k değerini yalnız P ve kP üzerinden geri elde etmenin zorluğu kullanılan grubun seçimine bağlıdır.

Gerçek ECC protokollerinde eğrinin doğrulanmış parametreleri, nokta kodlaması, alt grup düzeni, eş-etken ve geçersiz nokta davranışı dikkate alınır. Düz bir oyuncak eğri örneğinin güvenli ECDH anahtar değişimi anlamına gelmediğini, ayrıca kaynak doğrulamanın hâlâ gerekli olduğunu göstermek önemlidir.

Sonlu Cisim Aritmetiğinde Değişmezler ve Testler

Bir AES baytı için xtime(a), polinom gösterimini x ile çarpıp 0x11B polinomuna göre indirgeme anlamındadır. En yüksek bit sıfırsa sola kaydırma yeterli olur; en yüksek bit birse taşan dokuzuncu bit indirgenerek düşük sekiz bit 0x1B ile XOR edilir. Uygulamanın xtime(0x57)=0xAE ve xtime(0x83)=0x1D koşullarını sağlaması beklenir. Çarpmanın değişmeli olması ve sıfırla çarpımın sıfır olması özellik testleridir; birkaç örnek geçmesi indirgenemez polinomun doğru seçildiğini her durumda kanıtlamaz. Kütüphane içinde sabit zamanlı uygulama gerekliliği bu aritmetik örneğin ayrıca ele almadığı güvenlik katmanıdır.

GF(2⁸) Üzerinde Bayt Dönüşümleri

AES'in 8 bitlik öğeleri, ikili katsayılı polinomlar olarak yorumlanır. 0x57 değeri x^6+x^4+x^2+x+1, 0x83 ise x^7+x+1 polinomuna karşılık gelir. Toplama XOR'dur; çarpma yapıldıktan sonra indirgeme polinomu m(x)=x^8+x^4+x^3+x+1 (0x11B) ile kalan alınır. Öğretim testi 0x57 · 0x83 = 0xC1 sonucunu verir. Bu işlem CPU'nun olağan tamsayı çarpımı değildir: iki bitlik polinom katsayısı toplandığında taşıma yoktur, XOR uygulanır. xtime(a), en yüksek bit sıfırsa sola bir kaydırma, birse kaydırılan sonucun düşük sekiz bitini 0x1B ile XOR yapma biçiminde hesaplanabilir.

Bir alan öğesinin tersini bulma işlemi AES S-box'ın matematiksel temelini oluşturur. Sıfır özel durum olarak sıfıra eşlenir; diğer öğeler için GF(2⁸) içinde çarpımsal ters hesaplanır ve ardından bir afin bit dönüşümü uygulanır. Bu yapı, S-box'ı basit bir yer değiştirme tablosu gibi ezberlemek yerine doğrusal olmamanın nasıl inşa edildiğini gösterir.

Eliptik Eğri Noktalarının Geçerlilik Koşulları

Kısa Weierstrass biçiminde y²=x³+ax+b (mod p) üzerinde eğri seçerken 4a³+27b² ≠ 0 (mod p) tekillik dışlama koşuludur. Geçerli grup noktasının iki koordinatı eğri denklemini sağlar; sonsuzdaki nokta toplamanın birimidir. İki farklı nokta için eğim (y₂−y₁)(x₂−x₁)^(-1) mod p, teğet durumunda (3x₁²+a)(2y₁)^(-1) mod p hesabına dayanır. Paydadaki tersin bulunmaması geometrik olarak dikey doğru/sonsuzdaki nokta durumuyla değerlendirilir. Üretimde sabit zamanlı skaler çarpım, nokta doğrulama ve standart eğri seçimi kritik olup oyuncak eğri üzerinde türetilen sayısal örnekler gerçek anahtar üretme reçetesi değildir.

Sonlu Cisim ve Eliptik Eğri Aritmetiğinin Ayrımı

AES'in GF(2^8) alanında bir bayt, katsayıları GF(2) içinde olan en çok yedinci dereceden bir polinomdur. Toplama XOR'dur; çarpma polinom çarpımından sonra m(x)=x^8+x^4+x^3+x+1 modunda indirgemeyi gerektirir. 0x57·0x83=0xC1 örneği, tam sayılarda 87·131 hesaplamak değildir. xtime(a) işlemi en üst bit taşmadıysa sola kaydırma, taştıysa 0x1B ile XOR uygulanmasıyla elde edilir; böylece MixColumns çarpanları tablolara körü körüne bağımlı olmadan hesaplanabilir. S-kutusu da sıfır için özel durum ve diğer baytlar için alanın çarpımsal tersinden sonra afin dönüşüm içerir.

Buna karşılık eliptik eğri kriptografisinde grup işlemi bir eğrinin noktaları üzerinde tanımlanır. Küçük bir asal alan örneğinde y² ≡ x³+ax+b (mod p) denklemi üzerindeki P ve Q noktaları için P+Q eğrinin grup yasasına göre hesaplanır. P≠Q iken eğim (y_Q−y_P)(x_Q−x_P)^{-1} mod p biçimindedir; P=Q iken eğim türevden gelir. Sonlu cisim tersleri ve nokta sonsuzda durumu unutulursa yazılım sessizce yanlış noktalar üretebilir. Gerçek protokolde küçük alan örnekleri yerine standart eğriler, nokta kodlama doğrulaması, küçük alt grup önlemleri ve sabit zamanlı kütüphaneler kullanılır.

Ünite 5: Bilgi Kuramsal Güvenlik ve Entropi

One-time pad sonrası dağılım değişmezliği animasyonu
One-time pad sonrası dağılım değişmezliği

Belirsizlik ve olasılık dağılımı

Shannon entropisi H(X) = -Σ p(x) log₂ p(x) bir rasgele değişkenin ortalama bilgi içeriğini ölçer; gözlenen tek bir örneğin karmaşıklığıyla özdeş değildir. Koşullu entropi H(M|C), şifreli metin görüldüğünde açık mesaj hakkında kalan belirsizliği ifade eder. Mükemmel gizlilik koşulu, tüm izin verilen mesajlar için P(M=m|C=c)=P(M=m) olmasıdır: şifreli metni görmek mesajın olasılıklarını değiştirmez.

Tek Kullanımlık Şifrede Mükemmel Gizlilik

n bitlik mesaj, bağımsız ve tekdüze n bitlik anahtarla XOR yapılırsa C=M XOR K elde edilir. Sabit m,c çifti için bunları bağlayan tek k=m XOR c olduğundan, P(C=c|M=m)=2^-n her mesaj için aynıdır. Bu, doğru uzunlukta, gerçekten rastgele ve yalnız bir kez kullanılan anahtarda mükemmel gizlilik sağlar. İki mesajda aynı anahtar kullanılırsa C1 XOR C2=M1 XOR M2 olur; mesajlar arasındaki ilişki doğrudan görünür hale gelir. Dahası OTP mesajın değiştirilmediğini kendi başına kanıtlamaz; şifreli metne bit ekleyip çıkarmak açık metinde öngörülebilir değişiklik yaratır.

Bilgi Kuramsal ve Hesaplamalı Güvenlik Ayrımı

Her mesaj için eşit uzunlukta bağımsız anahtar dağıtma gerekliliği, büyük ölçekli uygulamalarda ağır bir maliyettir. Modern kriptografi daha kısa bir gizli anahtardan üretilen hesaplamalı olarak ayırt edilemez anahtar akışına geçer; buna karşılık artık mutlak değil, belirli karmaşıklık varsayımlarına ve saldırgan kaynak sınırlarına bağlı bir güvenlik iddiası kurulur. Anahtarın bit uzunluğu, parolanın insan davranışından kaynaklanan entropisi ve çıktı uzunluğu ayrı kavramlardır. Rastgelelik testini geçen bir akışın kriptografik olarak güvenli olduğu yalnız test sonucu ile ispatlanamaz.

Bilgi Sızıntısının Sayısal Modellemesi

Dört bitlik M1=1010 ve M2=0110 mesajları aynı K=1100 anahtarıyla işlenirse C1=0110, C2=1010 olur. Şifreli metinlerin XOR'u 1100 verir; bu değer iki açık metnin XOR'una eşittir. Anahtarın değeri bilinmese de saldırganın gözlediği ilişki kaybolmaz. Bir iletinin belirli baytlarının tahmini, diğer iletinin karşılık gelen baytlarına yönelik çıkarımı kolaylaştırır. Bu örnek yalnızca yanlış anahtar tekrarını göstermek içindir; rastgele seçilme, iletim bütünlüğü ve anahtar dağıtımı ayrı gereksinimlerdir.

Mükemmel Gizliliğin Olasılıksal Tanımı

Shannon'ın mükemmel gizlilik ölçütü, her m ve her gözlenebilir c için Pr[M=m | C=c]=Pr[M=m] eşitliğidir. One-time pad'de n bitlik M ile eşit uzunlukta, düzgün dağılan ve bağımsız K bir kere kullanılır; C=M XOR K ve M=C XOR K işlemleri uygulanır. Sabit m,c için bunları bağlayan tek anahtar k=m XOR c olduğundan Pr[C=c | M=m]=2^(-n) elde edilir. Böylece şifreli metin, saldırgana hangi mesajın seçildiğine ilişkin istatistiksel avantaj sağlamaz. İspatın tüm ağırlığı anahtarın tek kullanımlığına, gerçek rastgeleliğine ve uzunluğuna dayanır.

Aynı anahtar iki mesajda kullanılırsa C₁ XOR C₂=M₁ XOR M₂ olur; anahtar cebirsel olarak yok olur ve mesajlar arasında bilgi sızar. Bilinen bir mesaj, öteki mesajın aynı konumlardaki bitlerini açığa çıkarır. Bu, modern akış şifrelerinde anahtar–nonce çiftinin neden tekrar edemeyeceğinin en yalın açıklamasıdır; modern şifrelerin güvenliği buna ek hesaplama varsayımlarıyla kurulur.

Shannon Entropisi, Min-Entropi ve Anahtar Uzunluğu

Shannon entropisi H(X)=-Σ_x p(x)log₂ p(x) bir dağılımın ortalama belirsizliğini; min-entropi H∞(X)=-log₂(max_x p(x)) en olası değerin ne kadar tahmin edilebilir olduğunu ifade eder. Bir kaynağın her çıktısının 256 bit olması, 256 bit entropisi bulunduğunu göstermez: öngörülebilir zaman ve küçük sayaçtan üretilen 'rastgele' veri, uzun görünse bile düşük entropili olabilir. İyi bir CSPRNG, güvenli çekirdeğe sahip olsa dahi zayıf tohumlama sürecinin açığını düzeltemez. Güvenlik bitlerini değerlendirirken anahtar uzayı, parola dağılımı, protokolün saldırgana sunduğu sorgular ve çevrim içi hız sınırlaması birbirinden ayrılmalıdır.

Ünite 6: Hesaplamalı Güvenlik Modelleri ve İndirgeme İspatları

IND-CPA deney akışı animasyonu
IND-CPA deney akışı

Güvenlik Özelliklerinin Biçimsel Tanımlanması

'Şifre çözülemedi' gözlemi bir güvenlik tanımı değildir. Modern yaklaşımda önce saldırganın ne gördüğü, hangi sorguları yapabildiği, ne kadar hesaplama kaynağına sahip olduğu ve başarı ölçütünün ne olduğu belirlenir. IND-CPA deneyinde saldırgan eşit uzunluktaki iki mesajı seçer; deney rastgele birini şifreleyip verir; saldırgan hangi mesajın seçildiğini tahmin eder. Başarı olasılığının 1/2'den farkı ayırt etme avantajını tanımlar. Rastgeleleştirilmemiş deterministik şifreleme, aynı mesajın aynı çıktıya dönüşmesi nedeniyle bu deneyde genel olarak başarısız olur.

IND-CCA modeli daha güçlüdür: saldırgan, belirli kısıtlarla çözme sorguları da yapabilir. Bu fark, niçin 'gizli tutulan' ancak değiştirilebilir CBC çıktılarının protokol düzeyinde farklı hatalara yol açabileceğini gösterir. Bir AEAD tasarımının güvenliği de nonce kuralları ve etiket doğrulamasının doğru uygulanmasına bağlıdır.

Güvenlik İndirgemelerinin Matematiksel Yapısı

Bir güvenlik ispatı çoğunlukla şu biçimdedir: varsayılan ilkeyi kırabilen verimli saldırgan olsaydı, temel alınan zor problemi veya ilkelin güvenlik varsayımını da kırabilen bir algoritma kurulabilirdi. Bu, somut algoritmanın bütün kod yollarının hatasız olduğunu değil, belirli model altında mantıksal ilişkinin kurulduğunu gösterir. Hibrit argümanda gerçek sistem ile ideal deney arasına küçük değişikliklerle ara deneyler yerleştirilir; toplam ayırt etme farkı üçgen eşitsizliği üzerinden sınırlandırılır.

Parametre seçimi ve güvenlik bütçesi

128 bitlik simetrik güvenlik düzeyi ile 128 bitlik RSA modülü aynı şey değildir. Asimetrik sistemlerde güvenlik, anahtar uzunluğu kadar çarpanlara ayırma veya ayrık logaritma algoritmalarının bilinen maliyetine de bağlıdır. Nonce çakışma riski ve doğum günü sınırı, iletilen mesaj sayısıyla büyür. Güvenlik seviyesi belirlenirken yalnız tek isteğin değil, bir anahtarın bütün kullanım ömründeki mesaj sayısının, tehdit süresinin ve anahtar yenileme politikasının hesaba katılması gerekir.

Ayırt Etme Deneyinde Güvenlik İhlali Örneği

Saldırgan, deterministik bir şifreleme oracle'ına önce M0 mesajını gönderip C0 çıktısını kaydetsin. Ardından eşit uzunluktaki M0,M1 çiftini IND-CPA deneyine versin. Challenge çıktısı C0 ile aynıysa seçilen mesajın M0 olduğunu, değilse M1 olduğunu söyleyebilir. Çıktıların belirlenimci olması ve aynı anahtarla kullanılması, başarılı tahmini mümkün kılar. Bu deney, algoritma matematiksel olarak terslenebilir olsa bile gizliliğin neden rastgeleleştirme/nonce bağlamına ihtiyaç duyduğunu somutlaştırır. Elbette nonce kullanılmış olmak tek başına yeterli değildir: benzersizlik gereksinimi ve inşa güvenliği de gerekir.

IND-CPA Güvenlik Deneyinin Kurulması

Saldırgan iki eşit uzunlukta mesaj m₀,m₁ seçer. Meydan okuyucu rastgele bir b∈{0,1} bitini üretir ve c*=Enc(k,m_b) döndürür; saldırgan şifreleme sorgularıyla edindiği bilgilere dayanarak b' tahmininde bulunur. Ayırt etme avantajı Adv=|Pr[b'=b]−1/2| ile ölçülür. Eşit uzunluk koşulu gereklidir, çünkü normal şifreli metin biçimi mesaj uzunluğunu gösterebilir. Deterministik şifreleme seçilmiş açık metin erişimi altında çoğu zaman kolayca ayrıştırılır: saldırgan m₀'ı şifreletip sonuçla meydan okumayı karşılaştırır.

IND-CCA oyununda saldırgana belirli bir kısıt altında çözme sorguları da verilir; meydan okuma şifreli metninin aynısını çözdürmesine izin verilmez. Malleability ve doğrulama hatalarının görünür olması burada önemlidir. Oyun modeli ile gerçek API arasında eşleme kurulmadan 'IND-CCA güvenli' demek anlamsızdır: hangi şema, hangi hata modeli, hangi oracle ve hangi nonce sözleşmesi soruları yanıtlanmalıdır.

Hibrit Deneyler ve Ayırt Etme Avantajı

Bir güvenlik ispatında önce gerçek deney G₀ tanımlanır. Sonraki G₁ deneyinde tek bir bileşen, örneğin PRF çıktısı ideal rastgele fonksiyonla değiştirilir. Saldırganın iki deneyi ayırma gücü, kullanılan PRF'ye karşı kurulabilen bir ayırt ediciyle üstten sınırlandırılır. G₂ gibi sonraki oyunlarda yalnız bir özellik daha değiştirilir. Üçgen eşitsizliği kullanılarak toplam avantaj |Pr[G₀]-Pr[G_t]| ≤ Σ_i |Pr[G_i]-Pr[G_(i+1)]| biçiminde değerlendirilir. Bu muhakeme, hesaplamalı varsayım ile şemanın güvenlik iddiasının hangi adımda bağlandığını gösterir.

Güvenlik İndirgemelerinde Avantaj ve Maliyet

Bir indirgeme varlığı, 'kırılması matematiksel olarak imkânsız' anlamına gelmez. İndirgemeden gelen zaman kaybı, sorgu sayısı ve başarı olasılığı güvenlik parametresiyle birlikte değerlendirilir. Örneğin bir başarı olasılığı q/2^t kadar artıyorsa q, saldırganın yapabildiği sorguların sayısıdır; yalnız t bitlik etiket uzunluğunu söylemek yetmez. Nonce tekrar kullanımı, protokolün oyun varsayımlarını bozuyorsa güzel bir ispat uygulamayı kurtarmaz.

Kriptografik Güvenlik İddialarının Deneysel Formülasyonu

Bir şifreleme sisteminin doğru çalışması Dec_k(Enc_k(m))=m eşitliğiyle sınanabilir; fakat bu eşitlik güvenli gizliliği kanıtlamaz. IND-CPA deneyinde saldırgan eşit uzunlukta m_0,m_1 seçer, rastgele b∈{0,1} için Enc_k(m_b) sonucunu alır ve b' tahmini üretir. Ayırt etme avantajı, |Pr[b'=b]−1/2| üzerinden okunur. Saldırganın erişim yetkisi, kaç sorgu yaptığı ve hesaplama bütçesi belirtilmeden 'güvenlidir' sonucuna varılamaz. Deterministik, rastgeleleştirilmemiş bir şifre, aynı mesajı tekrar tekrar aynı biçimde üretiyorsa seçilmiş metin deneyinde gizlilik sorunları ortaya çıkabilir.

İndirgeme ispatında varsayımsal bir saldırgan A bulunursa onu kullanan bir B algoritması tanımlanır. B, A'nın etkileşim gördüğü ortamı simüle ederek temel varsayımın zor saydığı bir problemi çözmeye çalışır. İspatın kritik noktası, simülasyonun dağılımsal eşdeğerliği, ortaya çıkan avantaj kaybı ve zaman/sorgu maliyetidir. Modern protokol güvenliği bu nedenle tek bir şifreleme fonksiyonundan değil, birden çok varlık ve mesaj akışını tanımlayan tehdide özgü deneyden değerlendirilir.

Ünite 7: Kriptografik Rastgelelik ve Sözde Rastgele Yapılar

DRBG yaşam döngüsü ve yeniden tohumlama animasyonu
DRBG yaşam döngüsü ve yeniden tohumlama

Entropi Kaynağı, DRBG ve Anahtar Üretimi

Bir kriptografik anahtar üretim süreci fiziksel veya işletim sistemi entropi kaynağından başlayıp uygun bir koşullandırma, güvenli çekirdek, iç durum ve çıktı aşamalarına uzanır. Saldırganın tohum veya iç durumu öğrenmesi durumunda ileri/geri tahmin edilebilirlik özelliklerinin nasıl etkilendiği önemlidir. İyi görünümlü sayılar üretmekle önceki çıktılardan yenilerini hesaplamayı pratikte imkânsız kılmak farklı amaçlardır. Lineer eşlenik üreteç gibi istatistiksel simülasyon üreteçleri kriptografik sır üretmek için uygun değildir.

PRG, PRF ve PRP ayrımı

Bir PRG kısa gizli tohumu daha uzun, rastgele akıştan verimli saldırganlarca ayırt edilemeyen bir çıktıya genişletir. PRF, anahtarlı fonksiyon ailesinin siyah kutu davranışını rastgele fonksiyona yaklaştırır; PRP aynı fikri sabit boyutlu terslenebilir permütasyonlarda ele alır. AES blok şifre olarak PRP ailesinin bir örneğidir. 'Rastgele görünme' tek başına çıktıların birbirinin aynısı olmamasını, kimlik doğrulamasını veya güvenli anahtar dağıtımını sağlamaz.

Python Kriptografik Rastgelelik Arayüzü

Aşağıdaki işlev işletim sisteminin kriptografik rasgelelik arayüzünü kullanır. Kullanıcı parolasını bu çıktıyla karıştırmak, onu kendiliğinden güçlü anahtara dönüştürmez; paroladan anahtar üretimi ayrı bir KDF konusudur.

import secrets

session_key = secrets.token_bytes(32)  # 256 bit rastgele anahtar malzemesi
recovery_token = secrets.token_urlsafe(24)
assert len(session_key) == 32

Güvenilir rastgelelik kaynakları için yeniden başlatma, sanal makine çoğaltma, donanım hatası ve kapasite daralması da birer tehdit senaryosudur. Kaynak başarısızsa sabit tohuma veya saat bilgisine sessizce geri dönmek yerine işlemin başarısız olması tercih edilir.

DRBG yaşam döngüsü ve tohumun kaynağı

Kriptografik rastgelelik, işletim sistemi olaylarının entropi havuzunda toplanmasından başlayıp bir DRBG'nin durumunun ilklenmesi, güvenli çıktı üretilmesi ve gerektiğinde yeniden tohumlanmasına kadar sürer. Çıktının eşit dağılıyor gibi görünmesi tek başına öngörülemezliği kanıtlamaz. DRBG durumunun ele geçirilmesi halinde geçmiş ve gelecek çıktıların korunup korunmadığı ayrı güvenlik özellikleridir. Kodda random modülünün istatistiksel benzetim işlevi ile secrets modülünün kriptografik amaçlı çıktısı birbirine karıştırılmamalıdır. Parola sıfırlama bağlantısı, oturum belirteci ve nonce gibi farklı kullanım amaçları için uzunluk, benzersizlik ve gizlilik sözleşmeleri ayrı kurulmalıdır.

PRG, PRF, PRP ve Blok Şifre İlişkileri

Bir PRG kısa ve gizli tohumdan daha uzun görünürde rastgele bit dizisi üretir. Bir PRF F_k(x) ise aynı gizli anahtar ve giriş için aynı çıktıyı veren fakat anahtarı bilmeyen saldırgana rastgele fonksiyondan ayırt edilmesi güç görünen yapıdır. PRP sabit uzunlukta giriş kümesi üzerinde tersinir bir permütasyondur; AES, belirli varsayımlar altında PRP biçiminde modellenir. PRF ile KDF'nin ve PRP ile şifreleme kipinin aynı şey olmadığı önemlidir: blok şifre bir mesajı güvenli bir protokol kaydına dönüştürmek için nonce, kip ve doğrulama bileşenleri gerektirebilir.

İstatistiksel Rastgelelik ile Kriptografik Güvenlik Ayrımı

Üretilen milyonlarca baytta frekansların düzgün olması, başlangıç durumunun saldırgan tarafından tahmin edilmediğini göstermez. Bilinen cevap testleri DRBG'nin standartla uyumunu, sistem sağlığı testleri belirli arıza sınıflarını, tehdit modeli ise entropi kaynağının gerçekten güvenilmez gözlemciye kapalı olup olmadığını ele alır. Aynı süreçte tekrar başlayan sanal makineler, kopyalanmış konteyner anlık görüntüleri ve hatalı gömülü cihaz ilklenmesi beklenmeyen durum tekrarı oluşturabilir.

DRBG Başlatma, Üretim ve Yeniden Tohumlama

Bir kriptografik rastgele üretecin çıktısını anlamak için üç olayı ayırırız: instantiate aşamasında güvenilir entropi kaynağından başlangıç durumu alınır; generate aşamasında bu gizli durumdan çıktılar ve yeni iç durum türetilir; reseed aşamasında gerektiğinde yeni entropi katılır. İşletim sisteminin güvenli rastgelelik API'si uygulama için doğru soyutlamadır. Süre, süreç kimliği veya deterministik bir sabit tek başına güvenilir tohum değildir. Test edilebilir tekrar üretilebilir PRNG ile gizli anahtar ve nonce üreten CSPRNG farklı gereksinimlere karşılık gelir.

Bir AEAD sisteminde nonce'un tahmin edilemez olmasından daha kritik özellik, seçilen şema için gerekli eşsizlik koşuludur. Rastgele üretilen 96 bit nonce bir olasılık modeli sunar; uzun süreli anahtar altında büyük hacimde kullanım için sayaç/oturum ayrımı ya da çakışma bütçesi de gereklidir. Rastgelelik testi çıktının dağılımındaki belirli kusurları yakalayabilir, ama bir DRBG'nin bilinmeyen saldırgana karşı güvenli olduğunu istatistiksel test tek başına kanıtlayamaz.

Ünite 8: Blok Şifreler ve AES Algoritması

AES round dönüşüm hattı animasyonu
AES round dönüşüm hattı

Blok Şifrenin Matematiksel Tanımı

Blok şifre, sabit uzunluktaki bloğu bir anahtara bağlı terslenebilir dönüşümden geçirir. AES 128 bit blok kullanır; AES-128, AES-192 ve AES-256 ayrımı anahtar boyudur, blok boyu değildir. SubBytes doğrusal olmayan bayt dönüşümünü, ShiftRows bayt konumlarının yer değiştirmesini, MixColumns sütun düzeyinde sonlu cisim karışımını, AddRoundKey tur anahtarının XOR ile eklenmesini gerçekleştirir. Bu yapı; karıştırma ve yayılımın turlar boyunca nasıl birleştiğini açıklar. Tek bir 128 bitlik bloğun bağımsız şifrelenmesi, uzun bir mesaj için kendiliğinden güvenli şifreleme kipine dönüşmez.

Feistel ve Yerine Koyma–Permütasyon Ağları

Feistel ağında bloğun bir yarısı diğer yarının ve tur anahtarının fonksiyonu üzerinden güncellenir. Tur fonksiyonunun terslenebilir olması şart değildir; ters yön tur anahtarı sırası değiştirilerek uygulanabilir. Substitution-permutation network (SPN) ise birden fazla doğrusal olmayan S-box ve doğrusal yayılım katmanını birleştirir. Diferansiyel ve lineer kriptanaliz, giriş farkları ile çıktı fark/önyargılarının davranışını inceler; bir sistemin güvenliğini yalnız anahtar uzayının büyüklüğü belirlemez.

AES Test Vektörleri ve Gerçeklenim Güvenliği

Uygulama, resmi test vektörüyle doğrulanmalı; fakat doğru test vektörü sonucu sabit zamanlama, sağlam anahtar yaşam döngüsü veya güvenli kip seçimini kanıtlamaz. Yan kanal savunmaları yazılımda tablo erişimi ve önbellek davranışının değerlendirilmesini gerektirir. DES ve 3DES tarihsel olarak anlatılabilir; yeni şifreleme tasarımında varsayılan seçenek değildir. Kısıtlı kaynaklı IoT donanımında NIST SP 800-232 (2025) tarafından standartlaştırılan Ascon-AEAD128 gibi hafif algoritmalar farklı bir uygulama maliyeti dengesi sunar; AES'ten her durumda daha güvenli veya daha hızlı oldukları söylenemez.

AES Tur Dönüşümlerinin Doğrulanması

Blok şifre bir kütüphane içinde kullanılırken AES'in iç tur adımlarını tekrar yazmak yerine FIPS 197'de verilen bilinen giriş–anahtar–çıkış vektörleriyle arayüz sınanır. Testin ilk aşamasında bayt sıralaması ve blok uzunluğu, ikinci aşamasında anahtar uzunluğu ve anahtar genişletme, üçüncü aşamasında tersleme davranışı doğrulanır. Sonrasında kip seçimi, nonce yaşam döngüsü ve hatalı tag reddi ayrı test edilir. Böylece ilkel düzeyindeki doğruluk ile mesaj şifreleme protokolünün güvenliği birbirine karıştırılmaz.

AES-128, AES-192 ve AES-256: blok boyu, anahtar ve tur farkı

AES, Rijndael ailesinden standartlaştırılmış 128 bit bloklu bir şifredir. AES-128 için anahtar 128 bit ve tur sayısı 10; AES-192 için 192 bit ve 12; AES-256 için 256 bit ve 14'tür. Üç türde de durum 16 bayttan oluşan 4×4 matristir ve sütunlar halinde doldurulur. Nb=4 durum sütunu, Nk=4/6/8 anahtar sözcüğü, Nr=10/12/14 tur sayısı, dönüşümlerin tam parametrelerini belirler. Daha büyük anahtar aynı veriyi daha uzun bloklarla işlemez; AES blok boyu her zaman 128 bittir.

Bir AES şifrelemesinin ilk adımı, 16 baytlık açık bloğu sütun düzeninde duruma dönüştürüp ilk 16 baytlık tur anahtarını XOR ile uygulamaktır (AddRoundKey). Ardından ilk Nr−1 turda SubBytes, ShiftRows, MixColumns ve AddRoundKey sırasıyla çalışır. Son turda MixColumns yoktur: yalnız SubBytes, ShiftRows, AddRoundKey uygulanır. Çözme, ters tur anahtarlarıyla InvShiftRows, InvSubBytes, AddRoundKey ve uygun turlarda InvMixColumns kullanır. Çalışma sırası, doğruluk testlerinde tur sınırlarının nerede olduğunu belirler.

SubBytes dönüşümünün matematiksel işleyişi

SubBytes sabit bir S-box kullanır; bu tablo, GF(2⁸) üzerinde sıfır dışındaki baytın çarpımsal tersinden ve ardından afin bit dönüşümünden elde edilir. Başka deyişle algoritma önce doğrusal olmayan bir adım, sonra bitler arasında doğrusal ve sabit katkılı bir dönüşüm uygular. Bu, S-box değerlerini ezberlemekten daha önemlidir; AES'in bit düzeyindeki yayılma ve diferansiyel özellikleri buradan etkilenir. Öğretimde 0x53 baytının S-box sonrası 0xED olması ve geri dönüşümle tekrar 0x53 elde edilmesi birim test olarak kullanılabilir. Bir S-box çıkışını saldırganın gözleyebilmesi ile algoritmanın tümünü anahtarsız çözebilmesi farklı problemlerdir.

ShiftRows ve MixColumns Dönüşümlerinin İşlevleri

ShiftRows ilk satırı sabit tutar; ikinci satırı sola bir, üçüncüyü iki, dördüncüyü üç bayt kaydırır. Tek başına bayt değerlerini değiştirmez, baytların hangi sütunlarla etkileşeceğini değiştirir. MixColumns, her sütunu GF(2⁸) üzerinde sabit bir matrise çarpar: satır katsayıları 02 03 01 01, 01 02 03 01, 01 01 02 03, 03 01 01 02 biçimindedir. Örnek sütun d4 bf 5d 30, bu dönüşümden sonra 04 66 81 e5 olur. Böylece bir bayttaki değişikliğin birden çok bayta yayılması sağlanır. InvMixColumns matrisinin ilk satırı 0e 0b 0d 09 katsayılarını taşır ve modüler alan çarpımıyla ters yayılımı kurar.

AES Anahtar Genişletme Algoritması

AES-128, 16 baytlık anahtarı dört 32 bit sözcüğe ayırır (w[0..3]). Sonraki sözcük w[i]=w[i−4] XOR temp kuralıyla üretilir; her dördüncü sözcükte temp=SubWord(RotWord(w[i−1])) XOR Rcon[j] yapılır. AES-192 için Nk=6, AES-256 için Nk=8 kullanılır; AES-256'da ayrıca i mod 8=4 konumlarında SubWord uygulanır. Tur anahtarı üretimi AES-256'ya 14 tur kazandırır fakat salt anahtar boyunun iki katına çıkması güvenliğin doğrusal olarak ikiye katlandığı anlamına gelmez. Aynı anahtarın kaç blok için, hangi kipte ve hangi nonce politikasıyla kullanıldığı da önemlidir.

FIPS test vektörüyle uçtan uca doğrulama

FIPS 197'de kullanılan öğretim vektöründe açık blok 00112233445566778899aabbccddeeff, AES-128 anahtarı 000102030405060708090a0b0c0d0e0f ve şifreli blok 69c4e0d86a7b0430d8cdb78070b4c55a olur. Bir uygulama yalnız son sonucu değil, başlangıç AddRoundKey durumunu, ara tur çıktısını ve son turda MixColumns uygulanmadığını da doğrulamalıdır. AES tek blok çıktısını üretmek, güvenli bir dosya biçimi veya protokol tasarlamış olmak değildir; çok bloklu veri için 10. ünitedeki kip ve AEAD sözleşmesi gerekir.

# Yalnız standart AES-128 blok test vektörünü doğrular; uygulama kodu üretmez.
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
key = bytes.fromhex(\"000102030405060708090a0b0c0d0e0f\")
pt  = bytes.fromhex(\"00112233445566778899aabbccddeeff\")
enc = Cipher(algorithms.AES(key), modes.ECB()).encryptor()
assert enc.update(pt) + enc.finalize() == bytes.fromhex(
    \"69c4e0d86a7b0430d8cdb78070b4c55a\")
# ECB burada YALNIZCA tek blokluk FIPS vektörünün sınanması içindir.

AES-128 Birinci Tur Hesabı

Standart vektörde blok 00112233445566778899aabbccddeeff, anahtar 000102030405060708090a0b0c0d0e0f seçildiğinde başlangıç AddRoundKey çıktısı 00102030405060708090a0b0c0d0e0f0 olur. Bu 16 baytlık durumdaki her bayt S-box dönüşümünden geçirilirse ilk turun SubBytes çıktısı 63cab7040953d051cd60e0e7ba70e18c elde edilir. Satır kaydırması sonrasında 6353e08c0960e104cd70b751bacad0e7, sütun karıştırması sonrasında 5f72641557f5bc92f7be3b291db9f91a bulunur. Anahtar takvimindeki ilk tur anahtarı d6aa74fdd2af72fadaa678f1d6ab76fe ile XOR işlemi sonunda durum 89d810e8855ace682d1843d8cb128fe4 olur. Bu ara değerler AES'i 'tek komutla şifreledi' anlatımından gerçek turlu bir algoritma açıklamasına taşır. Tam vektörün son çıktısı 69c4e0d86a7b0430d8cdb78070b4c55a olmalıdır.

Bir ara durum yanlışsa hata kaynağına göre ayrım yapılabilir: ilk AddRoundKey yanlışsa byte sırası veya anahtar; SubBytes yanlışsa alan tersi veya S-box; ShiftRows yanlışsa sütun-satır yerleşimi; MixColumns yanlışsa GF(2⁸) çarpımı; son AddRoundKey yanlışsa anahtar genişletmesi denetlenir. Bu işlem sırası, düşük seviyeli bir AES gerçeklenmesini test etmenin güvenilir öğretim yöntemidir.

Feistel ve SPN Mimarisinin Karşılaştırılması

DES, 64 bitlik blokta Feistel ağı olarak çalışır; 56 etkin anahtar biti ve 16 tur içerir. Feistel'in temel özelliği, turun çekirdek fonksiyonu tersinir olmasa da iki yarının yer değiştirme ve XOR yapısının çözmeyi mümkün kılmasıdır. Triple DES (TDEA), DES işlemlerini birden çok kez uygular; tarihsel ve geriye dönük uyumluluk açısından bilinmelidir, fakat kısa blok ve eski güvenlik sınırları nedeniyle yeni tasarımın varsayılan seçimi değildir. AES ise Feistel değil, tersinir katmanlardan oluşan SPN biçimindedir. Blowfish, Twofish, Camellia ve ARIA gibi diğer şifre ailelerini de tek bir AES 'sürümü' saymak yanlıştır. Her algoritmanın blok boyu, anahtar takvimi, tur yapısı, standart konumu ve uygulama ekosistemi farklı değerlendirilir. Kriptografik gereksinim karşılamada algoritma seçiminin adı kadar kip, anahtar saklama ve kimlik doğrulama politikasına bakılmalıdır.

AES-128/192/256 Anahtar Sözcükleri ve Tur Anahtarları

AES her sürümde 128 bitlik blok kullanır. AES-128 için Nk=4, Nr=10, AES-192 için Nk=6, Nr=12, AES-256 için Nk=8, Nr=14 olup genişletme sonunda 4(Nr+1) adet 32 bit sözcük üretilir. Anahtar takvimi, w[i] sözcüğünü çoğunlukla w[i−Nk] XOR temp olarak kurar. i mod Nk=0 olduğunda temp=SubWord(RotWord(w[i−1])) XOR Rcon[i/Nk] uygulanır; AES-256 için i mod Nk=4 durumunda ek SubWord bulunur. Dolayısıyla AES-256 yalnız daha çok tur yapan AES-128 değildir; anahtar genişletmesi de farklıdır.

İlk AES-128 tur anahtarını somut olarak 00010203 04050607 08090a0b 0c0d0e0f üzerinden elde edebiliriz. Son sözcük 0c0d0e0f döndürülerek 0d0e0f0c, S-box ile d7ab76fe, ilk Rcon ile d6ab76fe olur. İlk sözcükle XOR sonrası d6aa74fd, bunu ardışık XOR'lar izleyince d2af72fa, daa678f1, d6ab76fe çıkar. Bu dört sözcük ilk tur anahtarıdır. Her aradaki 32 bitlik sonuç ayrı sınanabilirse, anahtar takvimi bozukken yalnız son blok çıktısına bakmanın tanı koyma güçlüğü ortadan kalkar.

AES Gerçeklenimi ve İlgili Teknik Çalışmalar

AES durum matrisi, tur anahtarı ve test vektörlerinin düşük seviyeli gerçekleştirimine ilişkin bir örnek C ile Hafif AES-128 Gerçekleştirimi makalesinde, kaynak kodun kapsamı ise Lightweight AES-128 proje kaydında incelenebilir. Proje yalnız AES blok çekirdeğini sağlar; GCM, güvenli anahtar depolama ve sabit zamanlı erişim özellikleri bulunmadığından tek başına üretim şifreleme sistemi sayılmaz. AES matematiğinin başka bir araştırma yönü AES Kriptanalizinde Cebirsel Temsil yazısındadır. Cebirsel temsilin sadeleşmesi, standart AES'in pratik olarak kırıldığına ilişkin sonuç değildir.

Ünite 9: Akış Şifreleri ve Anahtar Akışı Üretimi

CTR kipinde anahtar akışı üretimi animasyonu
CTR kipinde anahtar akışı üretimi

Anahtar akışının oluşturulması

Akış şifresi, anahtar ve nonce/sayaç gibi bağlam verilerinden üretilen bit akışını mesajla XOR yapar. C=M XOR KS işlemi ve M=C XOR KS tersliği basittir; güçlük aynı anahtar akışının farklı mesajlarda yeniden kullanılmamasını sağlamaktır. Eğer iki mesaj aynı KS ile işlenirse C1 XOR C2=M1 XOR M2; açık metinlerden biri tahmin ediliyorsa diğeri üzerinde doğrudan bilgi açığa çıkar.

ChaCha20 ve tarihsel RC4

ChaCha20, 32 bitlik sözcükler üzerinde toplama, döndürme ve XOR işlemlerini (ARX) birleştiren turlarla blok çıktısı üretir. Bir nonce ve blok sayacı, hangi anahtar akışı bloğunun üretileceğini belirler. Standartlaştırılmış ChaCha20-Poly1305 yapısı aynı akışı doğrulama etiketiyle birleştirerek AEAD sağlar; salt ChaCha20 ise kendi başına mesaj bütünlüğü sağlamaz. RC4, anahtar akışındaki istatistiksel önyargılar ve protokol kullanımındaki sorunlar nedeniyle tarihsel bir olumsuz örnek olarak ele alınır.

Anahtar Akışı Üretiminde Sayaç Yönetimi

Bir iletinin işlenmesinden önce anahtar kapsamı ve nonce üretim politikası belirlenir. Şifreleme sırasında sayaç bloklar arasında ilerler, sınırda taşma tespit edilir, çıktı ve meta veri birlikte saklanır. Sistem yeniden başlatıldığında veya yedekten döndüğünde aynı anahtar altında nonce üretilmiş olup olmadığı kontrol edilemeyecekse deterministik sayaç politikasının depolama tutarlılığı ayrıca tasarlanmalıdır. Rastgele nonce seçimi de büyük hacimde çakışma olasılığı hesabını gerektirir.

XOR akışı, durum ve ChaCha20 çeyrek turu

Bir akış şifresinde anahtar ve nonce üzerinden üretilen bit akışı S, mesajla XOR yapılarak C=M XOR S sonucunu verir. Aynı S ile çözme M=C XOR S biçimindedir. IETF ChaCha20, 256 bit anahtar, 96 bit nonce ve 32 bit blok sayacıyla 16 adet 32 bitlik sözcükten oluşan durum kurar. Dört sabit sözcük, sekiz anahtar sözcüğü, sayaç ve üç nonce sözcüğü Little Endian düzenindedir. Bir blok, 20 turdan (10 çift tur) sonra başlangıç durumuyla sözcük bazında toplama ve 64 baytlık serileştirme sonucu elde edilir.

Quarter-round dört sözcük üzerinde tekrarlanan toplama–XOR–döndürme zinciridir: a+=b; d^=a; d<<<16; c+=d; b^=c; b<<<12; a+=b; d^=a; d<<<8; c+=d; b^=c; b<<<7. Toplamalar mod 2^32 hesaplanır. İlk dört quarter-round sütunları, sonraki dördü çaprazları işler; bu çift düzen on kez uygulanır. Salsa20'nin benzer ARX yaklaşımıyla karıştırılmamalı, RC4'ün iç permütasyon ve bayt akışı ise ayrı ve güncel kullanım için uygun olmayan tarihsel örnek olarak değerlendirilmelidir.

ChaCha20-Poly1305 Anahtar Türetme ve Doğrulama

ChaCha20-Poly1305 protokolünde blok sayacı sıfırla üretilen ilk bloktan Poly1305 için tek kullanımlık anahtar malzemesi ayrılır; mesajın şifrelenmesi sayaç birden başlayarak sürer. AAD ve şifreli metin, 16 bayta hizalama dolguları ve uzunluk alanlarıyla belirli sırada doğrulama girdisine dönüştürülür. Etiket, bu verinin yetkisiz değiştirilmesini saptamayı hedefler. Aynı anahtar ve nonce çiftini farklı mesajlarla tekrar kullanmak hem gizliliği hem de doğrulama güvenliğini ciddi şekilde bozar; bir kütüphaneye nonce üretim sorumluluğu devrediliyorsa bunun belgelenmiş sözleşmesi izlenmelidir.

Sayaç Taşması ve Anahtar Akışı Sınırları

Sayaç alanının genişliği, tek nonce altındaki üretilebilecek blok sayısını sınırlar. IETF düzeninde sayaç 32 bittir, her blok 64 bayttır; gerçek protokollerde bundan daha sıkı kayıt ve anahtar sınırları uygulanabilir. Sayaç sıfıra dönerse eski anahtar akışı yeniden oluşabilir. Üretim yazılımında işlem kesintileri, yeniden başlatmalar ve eşzamanlı yazıcılar için nonce tahsis politikası kayıt başına tanımlanmalıdır.

ChaCha20'nin 16 sözcüklü başlangıç durumu ve blok hesabı

ChaCha20'nin 512 bitlik durumu dört sabit, sekiz 32 bitlik anahtar sözcüğü, sayaç ve 96 bit nonce ile kurulur. Sayıların sırası önemlidir: 32 bitlik sözcükler little-endian olarak yorumlanır. Her quarter-round, dört sözcük üzerinde ardışık mod 2^32 toplama, XOR ve 16, 12, 8, 7 bitlik sola döndürme uygular. Dört sütun ve dört diyagonal quarter-round bir çift tur oluşturur; yirmi turdan sonra sonuç başlangıç durumuna sözcük sözcük eklenir ve 64 baytlık anahtar akışı bloğu elde edilir. Sayaç her yeni blokta artar; aynı anahtar ve nonce altında sayaç uzayının yeniden kullanılması farklı mesajlar için aynı anahtar akışının tekrarına yol açabilir.

XOR tabanlı akış şifresinde C=P XOR S, P=C XOR S işlemi matematiksel olarak tersinirdir. Ancak aynı S iki mesaj için kullanılırsa C_1 XOR C_2=P_1 XOR P_2 olur; gizliliğin hangi nedenle çöktüğünü bu eşitlik doğrudan gösterir. ChaCha20-Poly1305 bu akışı Poly1305 etiketiyle birleştirir; yalnız ChaCha20 çıktısı kullanılarak iletilen bir mesajın değiştirilmediği doğrulanamaz. Poly1305 anahtarının her mesaj için türetilmesi ve etiket kontrolünden önce verinin kabul edilmemesi uygulamanın ayrılmaz parçasıdır.

Ünite 10: Blok Şifre İşletim Kipleri ve Kimliği Doğrulanmış Şifreleme

GCM kimliği doğrulanmış şifreleme animasyonu
GCM kimliği doğrulanmış şifreleme

ECB, CBC ve CTR Kiplerinin Güvenlik Özellikleri

ECB her bloğu bağımsız dönüştürdüğü için tekrar eden açık metin blokları tekrar eden şifreli bloklar üretir. CBC, önceki şifreli blokla XOR sonucu şifreler; rastgele ve uygun IV gerektirir ancak tek başına bütünlük sağlamaz. CTR, blok şifreden sayaç tabanlı anahtar akışı üretir ve nonce/sayaç tekrarına duyarlıdır. Bu kiplerin hiçbiri sırf şifreleme işlevi gördüğü için bütünlük garantisi vermez. Şifre çözme başarısızlıklarının farklı hata mesajlarıyla açığa çıkması, bazı protokollerde yan kanal ve oracle riskine yol açabilir.

AEAD Algoritmasının Girdi ve Çıktı Bileşenleri

Authenticated Encryption with Associated Data, şifrelenecek mesajı ve gizli tutulması gerekmeyen fakat bütünlüğü doğrulanacak bağlamı tek işlemde bağlar: encrypt(key, nonce, plaintext, aad) → ciphertext || tag. Çözme işleminde yanlış anahtar, değiştirilmiş ciphertext, uyuşmayan AAD veya geçersiz tag durumunda açık metin uygulanmaya verilmez. Örneğin kayıt kimliği ve protokol sürümü AAD içinde tutulursa bir kayda ait ciphertext'in başka bağlamda sessizce kullanılmasının önüne geçilebilir; uygulama yine de tekrarlı mesajlara karşı kendi zaman/kimlik denetimini yapmalıdır.

AES-GCM ile Doğrulanmış Şifreleme Uygulaması

Aşağıdaki örnek, ayrı kurulabilen cryptography kitaplığının yüksek seviyeli AES-GCM arayüzünü kullanır. Güvenli CSPRNG'den üretilen 96 bit nonce aynı anahtar altında yinelenmemelidir; koddaki rastgele seçim düşük hacimli eğitim örneğidir, yüksek hacimli servislerde anahtar başına toplam işlem sınırı hesaplanmalıdır.

import secrets
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.exceptions import InvalidTag

key = AESGCM.generate_key(bit_length=256)
aead = AESGCM(key)
nonce = secrets.token_bytes(12)
aad = b'record:v1:42'
sealed = aead.encrypt(nonce, b'example payload', aad)
assert aead.decrypt(nonce, sealed, aad) == b'example payload'
try:
    aead.decrypt(nonce, sealed, b'record:v1:43')
    raise AssertionError('Context change must fail')
except InvalidTag:
    pass

GCM'nin nonce yeniden kullanımı riski ile ChaCha20-Poly1305'in nonce kuralları ayrı ayrı incelenir. Kısıtlı donanımda Ascon-AEAD128 gibi standart seçenekler de değerlendirilir. Bu örnekteki anahtar üretimi, gerçek anahtar saklama, rotasyon veya erişim kontrolü tasarımının yerine geçmez.

Şifreli Kayıt Biçimi ve Yeniden Başlatma Koşulları

Diyelim ki bir servis, bir anahtarla koruduğu kayıtlar için version | key_id | nonce | ciphertext | tag biçimini kullanıyor. version ve key_id uygulamanın çözme yolunu belirler, fakat bunların doğrulanmadan keyfi kod yürütmeyi veya sınır dışı bellek ayırmayı tetiklemesine izin verilmez. Sürüm ve kayıt kimliği AAD'ye bağlanır. Anahtar kimliği değiştiğinde eski ve yeni ciphertext kayıtlarının hangi anahtarla çözüleceği saklanır; eski anahtarın silinmesi arşiv kurtarma planıyla uyumlu yürütülür. Bir kayıt bozulduğunda etiketi geçersiz saymak, kurtarma dosyasındaki kalan kayıtları yanlış anahtarla çözmeye çalışmaktan daha güvenlidir.

İşletim Kiplerinin Kullanım Alanları ve Güvenlik Sınırları

ECB her 128 bit bloğu bağımsız şifreler; aynı anahtar altında aynı açık blok aynı şifreli bloğa dönüşür ve desen bilgisi sızar. CBC'de ilk blok C₁=E_K(P₁ XOR IV), sonraki bloklar C_i=E_K(P_i XOR C_(i−1)) ile hesaplanır; çözmede P_i=D_K(C_i) XOR C_(i−1) kullanılır. CBC gizlilik sağlayabilir fakat bütünlük kanıtlamaz; padding oracle türü sorunlar, çözme hatasının veya başka bir denetim sonucunun saldırgana ayırt edilebilir biçimde gösterilmesiyle doğabilir. CFB/OFB geçmiş durumdan bir akış türetir, fakat senkronizasyon ve hata yayılımı farklıdır. CTR sayaç bloklarını E_K(nonce||counter) ile şifreleyip açık veriyle XOR yapar; paralelleştirilebilir, ama aynı sayaç dizisi iki mesajda asla tekrar kullanılmamalıdır. XTS, depolama sektörü gibi adreslenebilir veri birimleri için tasarlanmış bir disk şifreleme kipidir; rastgele değişikliklere karşı genel mesaj kimlik doğrulaması sağlamaz.

AES-GCM: Sayaç Şifrelemesi ve GHASH

AES-GCM'de anahtar, sayaç tabanlı şifrelemeyi ve GF(2^128) üzerinde GHASH doğrulamasını birlikte besler. Önce H=E_K(0^128) hash alt anahtarı hesaplanır. 96 bit nonce kullanıldığında J₀=nonce||0^31||1 başlangıç sayacı olur; şifreli bloklar inc32(J₀) ile başlayan sayaç değerlerinin AES çıktılarına XOR uygulanarak oluşturulur. GHASH, AAD ve şifreli metin bloklarını alan çarpımıyla katlayıp uzunlukları içeren son bloğu da işler. Etiket kabaca T=E_K(J₀) XOR GHASH_H(AAD,C) biçimindedir; standarttaki uzunluk, dolgu ve bit sırası ayrıntıları önemlidir. Şifreli metin değiştirildiğinde etiketi doğrulamadan açık metni dışarı vermek güvenlik sözleşmesini bozar.

Nonce Tekrarının GCM Güvenliği Üzerindeki Etkisi

Aynı GCM anahtarı ve nonce ile iki farklı mesaj işlenirse sayaç akışı tekrarlanır; iki şifreli metnin XOR'u ilgili açık metinlerin XOR'unu açığa çıkarabilir. GHASH doğrulaması da seçilmiş girdilerde riske girer. Bu nedenle tek işlemde rastgele 96 bit nonce üretildiğini görmek, uzun ömürlü yüksek hacimli sistemde çakışma olasılığını yeterince küçülttüğünü tek başına göstermez. Tasarım kaydı, anahtar başına beklenen mesaj sayısını, nonce üretim yöntemini, süreç yeniden başlatmayı ve anahtar döndürmeyi birlikte tanımlamalıdır.

AEAD Bütünlük Doğrulamasının Negatif Testi

Doğru bir API önce AAD ve açık veri ile şifreleme yapar, daha sonra aynı AAD altında etiketi doğrular. Şifreli metnin tek bitini değiştirmek veya AAD'yi farklı vermek, açık metni döndürmek yerine doğrulama hatası vermelidir. Doğrulama başarısızlığında kısmen çözümlenmiş veriyi diske veya uygulama tamponuna yazan bir akış, güçlü kripto ilkelini zayıf bir protokole dönüştürür.

# cryptography paketinin güncel AESGCM API'si; gerçek sistemde nonce stratejisi ayrıca tasarlanmalıdır.
import os
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.exceptions import InvalidTag
key = AESGCM.generate_key(bit_length=256)
nonce, aad, pt = os.urandom(12), b\"record:v1\", b\"example payload\"
sealed = AESGCM(key).encrypt(nonce, pt, aad)
assert AESGCM(key).decrypt(nonce, sealed, aad) == pt
try:
    AESGCM(key).decrypt(nonce, sealed[:-1] + bytes([sealed[-1] ^ 1]), aad)
    raise AssertionError(\"tampered record accepted\")
except InvalidTag:
    pass

GHASH Üzerinde Sonlu Cisim Aritmetiği

GCM, AES'in sayaç moduyla ürettiği şifreli metni bir doğrulama mekanizmasıyla birleştirir. Önce H=AES_K(0^128) hesaplanır ve kimlik doğrulama hesabında GF(2^128) alanının elemanı olarak kullanılır. AAD ve şifreli metin 128 bitlik bloklara ayrılır, son eksik blok sıfırlarla tamamlanır. GHASH birikimi Y_i=(Y_{i−1} XOR X_i)·H olarak ilerler; son blok AAD ve şifreli metnin bit uzunluklarını da bağlar. J_0 sayaç başlangıcına bağlı maskeleme ile etiket elde edilir. Böylece aynı anahtar altında yalnız veri içeriği değil, işlem bağlamı olarak verilen AAD de kimlik doğrulama kapsamındadır.

Uygulamada şifreli metnin yanında nonce, AAD'nin nasıl üretildiği ve tam etiket boyu açıkça belirlenmelidir. Etiket yanlışsa çözülen baytlar uygulama mantığına, loglara veya kalıcı depoya verilmez. Aynı anahtar ve nonce çiftini yeniden kullanmak GCM'nin güvenlik varsayımlarını ağır biçimde ihlal eder. Bu nedenle 96 bit nonce alanını çok sayıda bağımsız hizmetin rastgele seçmesine izin veren bir sistemde çakışma riski, anahtar rotasyonu, mesaj sayacı ve üretim sınırları aynı politika içinde tanımlanmalıdır.

Hatalı Doğrulama Etiketinin Reddedilmesi

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.exceptions import InvalidTag
import os
key, nonce, aad = AESGCM.generate_key(bit_length=256), os.urandom(12), b\"record:v1\"
ct = AESGCM(key).encrypt(nonce, b\"verified message\", aad)
assert AESGCM(key).decrypt(nonce, ct, aad) == b\"verified message\"
try:
    AESGCM(key).decrypt(nonce, ct[:-1] + bytes([ct[-1] ^ 1]), aad)
except InvalidTag:
    pass
else:
    raise AssertionError(\"tampered authentication tag accepted\")

Bu tek mesajlık örnekte nonce işletim sisteminden alınır; uzun süreli servislerde anahtar başına nonce tekilliğinin işletim düzeyinde güvenceye alınması gerekir.

Ünite 11: Kriptografik Özet Fonksiyonları ve Merkle Ağaçları

Merkle ağacı bütünlük toplulaştırma animasyonu
Merkle ağacı bütünlük toplulaştırması

Özet Fonksiyonlarının Direnç Özellikleri

Bir kriptografik özet fonksiyonu keyfi uzunlukta girdiyi sabit ya da belirlenmiş uzunlukta bir özete dönüştürür. Ön görüntü direnci bilinen h için H(m)=h sağlayan bir mesaj bulmayı, ikinci ön görüntü direnci bilinen m için farklı bir eşdeğer mesaj bulmayı, çakışma direnci ise herhangi iki farklı m1,m2 için aynı özeti bulmayı zorlaştırır. n bitlik rastgele davranan bir fonksiyonda genel çakışma araması doğum günü etkisi nedeniyle yaklaşık 2^(n/2) işlemle ilişkilendirilir; bu, n bitlik çıktının her amaçta n bit güvenlik sunduğu anlamına gelmez.

SHA-256 ve SHA-512 SHA-2 ailesinin, SHA3-256 ve SHAKE fonksiyonları ise farklı bir sünger yapısının örnekleridir. Özetleme şifreleme değildir: geri çözme anahtarı bulunmaz. Özet, mesajın göndericisini de tek başına doğrulamaz; herkes aynı verinin özetini hesaplayabilir. Kullanım amacı doğrulama olduğunda güvenilir karşılaştırma değeri veya MAC/imza gibi kriptografik bağlam şarttır.

Merkle Ağacının Oluşturulması ve Doğrulanması

Dosya parçaları ya da kayıtlar yapraklara ayrılır; her yaprak tür etiketli biçimde özetlenir; bitişik iki düğüm birleştirilerek üst düğüm özeti oluşturulur. Tek kök, veri kümesinin taahhüt değeridir. Bir yaprağın üyeliği, kardeş düğüm özetleri ve sıra bilgisiyle O(log n) uzunluklu yol üzerinden denetlenebilir. Yaprak ve iç düğümlere farklı alan etiketleri vermek, belirsiz ağaç yorumlarını önler. Merkle kökü, tek başına kaynağın kimliğini veya değişikliklerin yetkili olduğunu ispatlamaz; doğrulanmış ya da imzalı kökle karşılaştırılmalıdır.

import hashlib

def sha256(data: bytes) -> str:
    return hashlib.sha256(data).hexdigest()

original = sha256(b'archive part 01')
assert original != sha256(b'archive part 02')

İki girdinin farklı özet üretmesi, çakışma direncinin matematiksel kanıtı değildir. MD5 ve SHA-1 yeni çakışmaya duyarlı tasarımlarda tercih edilmez; eski delil sistemlerindeki kullanım inceleniyorsa güvenlik özelliği ile tarihsel izlenebilirlik ayrılmalıdır.

Merkle üyelik doğrulama mantığı

Dört dosya parçasının yaprak özetleri h0,h1,h2,h3 olsun. İç düğümler p01=H(0x01 || h0 || h1) ve p23=H(0x01 || h2 || h3) olarak hesaplanır; kök root=H(0x01 || p01 || p23) olur. İkinci parçanın üyeliğini doğrulamak isteyen tarafın tüm dosyayı değil, kendi yaprak özetiyle birlikte h0 ve p23 değerlerini, ayrıca sıralamayı bilmesi yeterlidir. Yaprak girdilerine 0x00 ayracı eklemek, yaprak ve iç düğüm olarak aynı bayt dizisinin iki anlama gelmesini zorlaştırır. Kök değerinin hangi tarafça yayımlandığı hâlâ ayrıca doğrulanmalıdır.

SHA-256 Blok İşleme ve Sıkıştırma Fonksiyonu

SHA-256 önce mesaj uzunluğunu koruyan bir dolgu uygular: bir 1 biti, uygun sayıda 0 biti ve mesajın bit uzunluğunu tutan 64 bitlik son alan eklenir. Her 512 bitlik blok 16 adet 32 bit sözcüğe ayrılır; zamanlama dizisi 64 sözcüğe genişletilir. Sekiz çalışma yazmacı, 64 tur boyunca Ch, Maj, Σ0, Σ1 ve sabitler üzerinden güncellenir; turun sonunda başlangıç zincir değeriyle toplama yapılarak yeni özet durumu elde edilir. SHA-256(\"\") için standart sonuç e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 değeridir. Bu test, algoritmanın boş girdide doğru olduğunu kontrol eder, çakışma direncini ispatlamaz.

SHA-1 ve MD5 tarihsel olarak önemlidir ancak modern çakışma direnci beklenen senaryolarda kullanılmamalıdır. SHA-3'ün Keccak sünger yapısı ile SHA-2'nin Merkle–Damgård türevi yapısı farklıdır; iki algoritmanın aynı bit uzunluğunda çıktı vermesi iç çalışma biçimlerini eşitlemez. SHAKE gibi genişletilebilir çıktı fonksiyonlarında çıktı uzunluğu ayrıca belirlenir.

Uzunluk Uzatma Saldırısı ve MAC Ayrımı

Merkle–Damgård tarzı bazı özetlerde Hash(secret||message) gibi doğrudan bir yapı, dahili duruma ve uzunluk kodlamasına ilişkin özellikler nedeniyle uzunluk uzatma saldırısına açık olabilir. Bir MAC oluşturmak için HMAC gibi özel tanımlanmış yapının kullanılması gerekir. Buna karşılık HMAC(k,m) farklı bir anahtarlı fonksiyon sözleşmesidir; hash çıktısının rastgele görünmesi, yalnız başına gönderen kimliğini kanıtlamaz.

Merkle Kanıtlarında Konum ve Alan Ayrımı

Bir Merkle ağacı kurulurken yaprak verisi H(0x00||data), iç düğüm H(0x01||left||right) olarak kodlanabilir. Alan ayrımı, bir yaprak içeriğinin yanlışlıkla iç düğüm gibi yorumlanmasını engellemeye yardım eder. Üyelik kanıtı kardeş özetleriyle birlikte her seviyede sol/sağ konumunu taşır; doğrulayıcı kökü yeniden hesaplayıp güvenilen kökle karşılaştırır. Başka bir kök değerini saldırgandan alıp yine saldırganın verdiği kanıtla eşlemek veri bütünlüğü garantisi değildir; kökün güvenilir yoldan sabitlenmesi gerekir.

SHA-256 Dolgulama, Mesaj Genişletme ve Sıkıştırma

SHA-256 bir bayt dizisini sekiz adet 32 bitlik durum sözcüğüne indirger. Mesajın sonuna önce tek bir 1 biti, ardından uzunluğu 448 mod 512 olacak kadar 0 biti ve en sona özgün mesaj bit uzunluğunun 64 bitlik gösterimi eklenir. Her 512 bit blok ilk 16 sözcükten başlar; W_t=σ_1(W_{t−2})+W_{t−7}+σ_0(W_{t−15})+W_{t−16} (mod 2^32) eşitliğiyle 64 sözcüğe genişletilir. Sonra Ch, Maj, Σ_0, Σ_1, tur sabitleri ve önceki durum kullanılarak 64 tur yapılır; sonuç başlangıç durumuyla mod 2^32 toplanır. Döngüdeki bit dönüşleri ile modüler toplamalar algoritmanın birer parçasıdır; yalnız bir hash() çağrısının yanında bu veri akışının bilinmesi uygulama doğrulaması açısından değerlidir.

Kriptografik hash, parola saklamada anahtarlı bir KDF'nin veya bütünlük doğrulamasında MAC'in yerine geçmez. İki dosyanın SHA-256 özetinin aynı olması pratik bir karşılaştırma sinyali sunar; özeti ayrıca güvenilir bir referansla doğrulamazsak saldırganın hem dosyayı hem beklenen özeti değiştirmesini önlemez. Merkle ağacında iç düğümler çocuk özetlerinden oluşur; kök değerin güvenilir biçimde sabitlenmesi, yaprağın içerik kanıtıyla birlikte sınanmasını sağlar. Bu ayrım, Adli Bilişimde Veri Kazıma Algoritması çalışmasındaki kaynak veri ile türev çıktının ayrımıyla ilişkilidir: kurtarılan baytlar, kaynağın bütünlük kanıtı ve inceleme tutanağı aynı şey değildir.

Ünite 12: Mesaj Doğrulama Kodları ve Anahtar Türetme Fonksiyonları

HMAC ve HKDF anahtar ayrımı animasyonu
HMAC ve HKDF anahtar ayrımı

Mesaj Doğrulama Kodunun Güvenlik Özellikleri

MAC, gizli anahtar bilen tarafların mesajın değiştirilmediğini ve geçerli anahtarla işlendiğini denetlemesine imkân verir. Dijital imzadan farklı olarak anahtarı paylaşan her taraf geçerli etiket oluşturabilir; üçüncü tarafa karşı tek başına imzacı ayrımı sağlamaz. Bir MAC doğrulayıcısı, geçersiz etiketi başarısız saymalı, hata üzerinden kısmi doğruluk bilgisi vermemeli ve etiket uzunluğunu tehdit modeliyle birlikte belirlemelidir. Rastgele seçilmiş kısa anahtar ve oyuncak XOR toplaması standart HMAC yerine geçmez.

HMAC, özet fonksiyonunu iki farklı ped ile anahtarlı iç ve dış aşamalarda kullanır. Salt hash(key || message) gibi sezgisel bileşimler aynı güvenlik sınırı ve özelliklerini taşımaz. GMAC, GCM yapısının doğrulama bileşenidir; Poly1305 ise belirli kullanım koşullarıyla güçlü tek kullanımlık MAC inşası sağlar. Bunların nonce, anahtar ve tekrar kullanım kuralları karıştırılmamalıdır.

HKDF Extract ve Expand Aşamaları

HKDF önce Extract aşamasında başlangıç anahtar malzemesinden daha düzenli bir sözde rastgele anahtar oluşturur, sonra Expand aşamasında kullanım bağlamını (info) ve istenen çıkış uzunluğunu kullanarak alt anahtar türetir. salt gizli olmak zorunda değildir ancak doğru protokol bağlamına göre belirlenmelidir; düşük entropili insan parolasını güçlü anahtara dönüştürmek için HKDF tek başına parola sertleştirme yöntemi değildir.

import hashlib, hmac

def hkdf_extract(salt: bytes, ikm: bytes) -> bytes:
    return hmac.new(salt, ikm, hashlib.sha256).digest()

def hkdf_expand_one(prk: bytes, context: bytes, size=32) -> bytes:
    if not 1 <= size <= 32:
        raise ValueError('Bu örnek tek SHA-256 bloğu üretir')
    return hmac.new(prk, context + b'\x01', hashlib.sha256).digest()[:size]

prk = hkdf_extract(b'app-salt-v1', b'example input key material')
assert hkdf_expand_one(prk, b'encrypt-v1') != hkdf_expand_one(prk, b'mac-v1')

Bu örnek RFC 5869'un yalnız tek bloklu genişletme adımını öğretir; standart uyumlu tam HKDF kitaplığı ve doğrulanmış anahtar yönetimi yerine konulmamalıdır. Bir serviste şifreleme, kimlik doğrulama ve dışa aktarma anahtarlarının farklı bağlam etiketleriyle ayrılması, yanlışlıkla aynı anahtarın farklı algoritmalarda kullanılmasını sınırlar.

HMAC'in iki katmanlı hesaplanması

HMAC, kısa veya uzun anahtarı hash fonksiyonunun blok boyuna göre düzenledikten sonra iç ve dış dolgulama kullanır: HMAC_K(m)=H((K' XOR opad)||H((K' XOR ipad)||m)). ipad tekrar eden 0x36, opad tekrar eden 0x5c baytlarından kurulur. Girdi anahtarının blok boyundan uzun olması halinde önce özetlenmesi, kısa olması halinde sıfırlarla tamamlanması gerekir. Sonuç, aynı mesaja sır olmadan SHA-256 uygulamaktan farklıdır. MAC doğrulaması yapılırken etiket uzunluğu ve karşılaştırmanın gözlenebilir zamanlama davranışı da protokolün parçasıdır.

HKDF'de çıkarım ile genişletmenin ayrılması

HKDF-Extract aşaması PRK=HMAC(salt,IKM) oluşturur; bu işlem mevcut giriş anahtar malzemesinin belirsizliğini tek başına mucizevi biçimde artırmaz. HKDF-Expand aşamasında T(1)=HMAC(PRK,info||0x01), T(2)=HMAC(PRK,T(1)||info||0x02) hesaplanır ve ihtiyaç duyulan kadar bayt birleştirilir. info alanına protokol sürümü, yön, amaç ve oturum tanıtıcısı bağlandığında aynı kökten farklı işler için ayrı anahtar malzemesi oluşturulabilir. HKDF-Expand ile tek SHA-256 çağrısı aynı işlem değildir; kullanılan HMAC'in çıktı uzunluğuna bağlı azami çıktı sınırlarına uyulmalıdır.

Anahtar Kullanım Amaçları ve Protokol Bağlamı

Şifreleme anahtarı, imza anahtarı, nonce üretim tohumu ve kimlik doğrulama anahtarını tek bir uzun bayt dizisinden konumsal kesitler alarak ayırmak bazen bağlam karışıklığına yol açabilir. Bir KDF şemasında farklı amaçlar açık info değerleriyle ayrılmalıdır. Aynı oturumda iki yön için aynı anahtar kullanılıyorsa kayıt sayaçları ve taraf rolü yanlış anlaşılabilir; yön bazlı ayırma güvenli protokol tasarımını kolaylaştırır.

HMAC ve HKDF ile Anahtar Ayrımı

HMAC, hash fonksiyonuna anahtar eklenmesiyle yapılan sıradan H(K||M) hesabından farklıdır: H((K' XOR opad)||H((K' XOR ipad)||M)) iki katmanlı yapısı, kullanılan hash'in Merkle–Damgård özelliklerine ilişkin belirli zaaflardan kaçınır. Anahtar normalleştirme, blok boyu ve ipad/opad sabitleri standarttaki sıralarıyla uygulanmalıdır. hmac.compare_digest benzeri sabit zamanlı karşılaştırma fonksiyonları uygulama katmanında uygundur; yine de hatalı doğrulamada yanıt ve günlüğe yazılan alanlar istemsiz bilgi sızıntısı oluşturabilir.

HKDF önce PRK=HMAC(salt, IKM) ile çıkartma (Extract) yapar; sonra uygulamaya özgü info etiketleri ve sayaçla Expand zincirini üretir. Aynı giriş anahtarından şifreleme, doğrulama ve kayıt anahtarları türetilecekse her amaç için farklı info bağlamı kullanılması, bir anahtarın başka protokol rolüne yanlışlıkla taşınmasını önler. salt gizli olmak zorunda değildir, ama her kullanımda nasıl seçildiği açık olmalıdır. IKM parolaysa yalnız HKDF uygulamak parola deneme maliyetini artırmaz; parola sertleştirme ayrı bir algoritmik gereksinimdir.

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.hkdf import HKDF

def derive(session_secret: bytes, label: bytes) -> bytes:
    return HKDF(algorithm=hashes.SHA256(), length=32,
                salt=b\"session-v1-salt\", info=b\"protocol/v1/\" + label).derive(session_secret)

secret = b\"demo-only-input-key-material-32!\"
assert derive(secret, b\"encryption\") != derive(secret, b\"authentication\")

session_secret bir demo sabitidir; gerçek uygulamada güvenli anahtar anlaşmasından veya uygun rastgelelik kaynağından elde edilmelidir.

Ünite 13: Parola Tabanlı Kriptografik Korumalar ve Kimlik Doğrulama

Parola Saklamada Tehdit Modeli

Kullanıcı parolaları tekdüze yüksek entropili anahtarlar değildir. Saldırgan parola doğrulama veritabanını elde ettiğinde denemelerini çevrimdışı ve paralel yapabilir. SHA-256(password) gibi hızlı bir özet, her denemeyi çok ucuz hale getirir. Salt, aynı parolayı kullanan hesapların aynı doğrulama değerini paylaşmasını ve önceden hesaplanmış toplu tabloları sınırlar; fakat tek başına her parola tahminini pahalı hale getirmez. Pepper, ana veritabanı dışında yönetilen sunucu sırrı olabilir; kullanım koşulları ve kayıp senaryosu tasarlanmalıdır.

Belleğe duyarlı parola türetme

Argon2id zaman ve bellek maliyetini birlikte kullanarak büyük paralel tahmin saldırılarına karşı maliyet oluşturur. scrypt benzer belleğe duyarlı yaklaşım sunar; PBKDF2 ise özellikle uyumluluk gereksinimlerinde kullanılabilir. Seçim yalnız parametre tablosundan kopyalanmamalıdır: sunucunun bellek sınırı, eşzamanlı giriş sayısı ve hizmet reddi riski birlikte ölçülür. İşlem, kullanıcıya özgü yeni bir salt üretimiyle başlar; doğrulama için salt ve parametreler kodlanır; parolanın kendisi ve pepper açık olarak saklanmaz.

Parola Sıfırlama ve Güvenli Geçiş İşlemleri

Eski bir KDF'den daha güçlü parametrelere geçerken başarılı doğrulamada yeni kodlama üretilebilir. Salt değiştirmek aynı parolanın gücünü artırmaz; gerektiğinde parola politikası ve çok faktörlü kimlik doğrulama ayrıca uygulanır. Sıfırlama jetonları CSPRNG ile oluşturulmalı, kısa süreli ve tek kullanımlık olmalı, doğrulama başarısızlığında hesap varlığı sızdırılmamalıdır. Parola KDF'si ile uygulama verisini şifreleyen AEAD anahtarı aynı yaşam döngüsüne sahip değildir.

RFC 9106, Argon2 için teknik işleyiş ve test vektörleri sağlar. Üretim tercihi için güncel güvenlik politikası ve kitaplık sürümü ayrı değerlendirilir.

Parola Türetme Fonksiyonlarında Maliyet Parametreleri

KDF parametresi seçerken rastgele tek bir donanım üzerinde en hızlı sonucu hedeflemek doğru değildir. Önce hedef işlemci ve eşzamanlı kullanıcı sayısı belirlenir, ardından Argon2id'nin bellek maliyeti ile hedef yanıt gecikmesi ölçülür. Saldırganın çok sayıda paralel tahmin yürütmesini zorlaştırırken giriş servisini bellek tüketimiyle hizmet dışı bırakmamak gerekir. Parola doğrulaması başarısız olduğunda cevap süresi ve hata metni kullanıcı varlığını sızdırmamalıdır; başarısız giriş sınırlaması KDF'nin yerini almaz, onu tamamlar.

Parola Doğrulayıcı Kayıt Biçimi

Parola doğrulayıcısı, kullanıcı parolasını düz metin saklamak yerine her hesap için bağımsız rastgele bir salt oluşturur; seçilen bellek maliyeti, iterasyon sayısı ve paralellik derecesiyle Argon2id gibi parola türetme işlemini çalıştırır. Veritabanında algoritma sürümü ve parametreleri, salt ve türetilmiş doğrulama değeri kodlanır. Girişte sunulan parola, saklı parametrelerle yeniden hesaplanır ve sabit zamanlı karşılaştırma yapan güvenilir kütüphane API'siyle değerlendirilir. Salt gizli değildir; pepper kullanılırsa ayrı bir gizli yönetim alanında tutulmalı ve pepper kaybı ile anahtar döndürmenin hesaba etkisi planlanmalıdır.

Çevrim içi kaba kuvvet riski, çevrim dışı ele geçirilmiş doğrulayıcı veritabanına uygulanan denemelerden farklıdır. Çevrim içi saldırıda hız sınırı, MFA ve deneme davranışı belirleyicidir. Çevrim dışında ise parola dağılımı ve seçilen KDF'nin bir tahmin başına CPU/bellek maliyeti önem kazanır. İterasyon sayısını keyfî artırmak aynı sunucuda hizmet reddi riskini de artırabilir; gerçek donanımda yük testi yapılmalıdır.

Parola Türetme Parametrelerinin Güncellenmesi

Başarılı girişte saklı kayıt eski iş faktörü kullanıyorsa parola tekrar hash'lenip yeni parametrelerle atomik biçimde güncellenebilir. Ancak geçiş sürecinde eski ve yeni kimlik doğrulayıcıların birbirine karıştırılmaması gerekir. Parola sıfırlamada kriptografik olarak rastgele, kısa ömürlü, tek kullanımlık belirteç; veritabanında belirtecin güvenli özeti; kullanımda atomik tüketim; günlüklerde gizli belirtecin bulunmaması ayrı kontrollerdir.

Parola doğrulamada hesaplama maliyeti ve geçiş

Bir parola saklama kaydının amacı, parolanın kendisini saklamadan sonraki oturum açmalarda eşitliği denetlemektir. Kayıtta algoritma sürümü, parametreler, salt ve çıktı birlikte taşınır; salt kullanıcılara göre ayrı üretilir. Argon2id'de bellek miktarı m, geçiş sayısı t ve paralellik derecesi p hem meşru oturum maliyetini hem çevrim dışı parola deneme maliyetini etkiler. Parametre seçimi tek bir benchmark değeriyle değil, sunucunun tepe eşzamanlılığı, bellek bütçesi ve hedef gecikmesine göre yapılmalıdır. Çok yüksek bellek maliyeti güvenliği artırırken servis dışı bırakma riskini de artırabilir.

Parola yenileme veya algoritma sürüm yükseltmesinde kullanıcı doğrulaması başarıyla tamamlandıktan sonra yeni parametrelerle tekrar türetim yapılır; önceki ve yeni kayıtların farklı algoritma kimlikleri taşıması geçişte belirsizliği önler. Çok faktörlü kimlik doğrulama ve oturum denetimi, güçlü parola KDF'sinin yerine değil yanına eklenir. Uygulamada parolaların, türetilmiş ham anahtarların ve doğrulama hatalarında hassas alanların loglanmaması gerekir.

Ünite 14: Açık Anahtarlı Şifreleme ve RSA Algoritması

RSA-OAEP hibrit şifreleme animasyonu
RSA-OAEP hibrit şifreleme

RSA Matematiksel Dönüşümü ve Güvenli Kodlama Şemaları

RSA anahtar kurulumunda iki yeterince büyük, bağımsız asal p,q seçilir; n=pq, λ(n)=lcm(p-1,q-1) hesaplanır; gcd(e,λ(n))=1 olacak biçimde e seçilir ve d=e^(-1) mod λ(n) bulunur. İmzasız oyuncak gösterimde c=m^e mod n, m=c^d mod n denklemleri doğru sonucu verebilir. Fakat bu ham RSA, deterministik ve cebirsel olarak biçimlendirilebilir olduğu için IND-CPA güvenli şifreleme değildir. Matematiksel doğrulukla kriptografik güvenlik eş anlamlı değildir.

OAEP ve hibrit şifreleme

RSA-OAEP, mesajı standart biçimde rastgeleleştiren ve belirli varsayımlarla güvenlik analizi yapılabilen şifreleme kodlamasıdır. Gerçek sistemde uzun mesajı bütünüyle RSA ile işlemek yerine kısa bir oturum anahtarı veya ortak sır güvenli biçimde oluşturulur; asıl veri AEAD ile şifrelenir. Alıcı önce asimetrik bileşenin geçerliliğini kontrol eder, sonra oturum anahtarını türetir ve şifreli verinin etiketini doğrular. Modern protokollerde HPKE veya standart KEM tabanlı yapıların hangi güvenlik modeli ve parametreleri sağladığı ayrıca incelenmelidir.

Eğitim Amaçlı RSA Kodlarının Güvenlik Sınırları

Arşivdeki küçük pow(m,e,n) örnekleri, modüler üs almayı açıklamak için değerlidir fakat onları gerçek veri gizliliği sağlayan bir RSA kitaplığı gibi sunmak yanlıştır. Standart PKCS#1 şemasını kullanan uygulama kodunda OAEP için hash/MGF parametrelerinin eşleşmesi, mesaj boyu kısıtı, anahtar şifreleme politikası, başarısızlık davranışı ve sertifika kimliği ayrı test edilir. Anahtar bir kez üretildiğinde verinin sonsuza dek gizli kalacağı iddia edilemez; anahtarın ifşası ve gelecekteki hesaplama gücü tehdit modeli içinde tutulur.

ElGamal ve cebirsel biçimlenebilirlik

ElGamal şemasında bir çevrimsel grupta alıcının h=g^x açık anahtarı, göndericinin tek kullanımlık r değeriyle (g^r, m·h^r) çiftine dönüşür. Alıcı birinci bileşeni gizli x üssüne yükseltip ikinci bileşenden ortak çarpanı ayırır. Bu yapı Diffie–Hellman sezgisini şifrelemeye bağlar; fakat temel ElGamal cebirsel olarak biçimlenebilir ve seçilmiş şifreli metin güvenliğini tek başına sağlamaz. Anahtar anlaşması veya kapsülleme tabanlı ve doğrulamalı yapıların neden tercih edildiği, bu özellikten hareketle anlaşılır. Eğri tabanlı ElGamal, RSA ve kod-temelli yaklaşımların aynı matematiksel problem üzerine kurulmadığı da açıkça belirtilmelidir.

RSA Anahtar Üretimi, Şifreleme ve Çözme İşlemleri

RSA'nın cebirsel çekirdeği n=pq modülü, açık üs e ve özel üs d üzerinden tanımlanır. Üretim sırası p,q asal seçimi, n=pq, λ(n)=lcm(p−1,q−1), gcd(e,λ(n))=1 denetimi ve d=e^(-1) mod λ(n) hesabıdır. Açık anahtar (n,e), gizli anahtarın merkezindeki değer (n,d) ve çoğu uygulamada CRT parametreleridir. Bir tamsayı temsilci m için ilk şifreleme işlemi c=m^e mod n, ters işlem m=c^d mod n olur. Küçük kontrol örneğinde p=61,q=53,n=3233,e=17,d=2753,m=65,c=2790 değerleri başlangıçtan bitişe gözlenebilir. Bu yalnız aritmetik doğrulamadır: deterministik, çarpımsal ve dolgulamasız RSA bir gizlilik protokolü değildir.

RSA-OAEP Mesaj Kodlama Aşamaları

RSA-OAEP şemasında mesaj önce byte dizisi olarak alınır; hash algoritması seçilir ve isteğe bağlı etiket bağlamının lHash özeti oluşturulur. Verinin uzunluğu modül boyuna göre kısıtlanır: mLen ≤ k−2hLen−2 (k modülün bayt uzunluğu, hLen hash çıktısı uzunluğu). DB=lHash||PS||0x01||M kurulur; rastgele seed üretilir; MGF1 ile veritabanı maskesi dbMask, maskedDB=DB XOR dbMask, sonra seed maskesi seedMask ve maskedSeed=seed XOR seedMask hesaplanır. Kodlanmış ileti EM=0x00||maskedSeed||maskedDB olarak tamsayıya çevrilir ve RSA açık üs işlemi uygulanır. Çözmede önce özel üs işlemi, ardından maskelerin ters sırasıyla açılması ve lHash/ayraç doğrulaması gelir. Hatalar, saldırgana farklı hata sınıfları üzerinden oracle sağlamayacak şekilde yönetilmelidir.

RSA Şifreleme ve İmza Kodlama Şemalarının Ayrımı

RSA-OAEP şifreleme amacıyla; RSASSA-PSS ise imza amacıyla tanımlanmıştır. PSS, mesaj özetini, rastgele salt değerini ve MGF1'i kontrollü bir EMSA-PSS kodlama içinde birleştirir; imza özel anahtarla, doğrulama açık anahtarla yapılır. Eski PKCS#1 v1.5 şemalarının tarihsel ve birlikte çalışabilirlik bağlamı vardır ancak yeni bir tasarımda OAEP ile PSS gibi modern şemaların gerekçesi ayrı incelenmelidir. Anahtar üretimi, şifreleme ve imzalama aynı ham üs alma işlemlerine indirgenerek güvenlik düzeyi açıklanamaz. Fark, tam şemanın kodlama, rastgelelik, alan ayrımı ve hata davranışındadır.

RSA-OAEP Uygulaması ve Olumsuz Testler

Aşağıdaki uygulama RSA matematiğini el yazısıyla kodlamaz; bakımı yapılan cryptography kütüphanesi üzerinden OAEP ve PSS'yi ayrı güvenlik sözleşmeleriyle kullanır. İmzalar şifreleme çıktısı değildir ve doğrulamadan önce veri güvenilir kabul edilemez.

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes
from cryptography.exceptions import InvalidSignature
sk = rsa.generate_private_key(public_exponent=65537, key_size=3072)
pk = sk.public_key()
msg = b\"signed and encrypted classroom record\"
oaep = padding.OAEP(mgf=padding.MGF1(hashes.SHA256()),
                    algorithm=hashes.SHA256(), label=None)
ct = pk.encrypt(msg, oaep)
assert sk.decrypt(ct, oaep) == msg
pss = padding.PSS(mgf=padding.MGF1(hashes.SHA256()),
                  salt_length=padding.PSS.DIGEST_LENGTH)
sig = sk.sign(msg, pss, hashes.SHA256())
pk.verify(sig, msg, pss, hashes.SHA256())
try:
    pk.verify(sig, msg + b\"!\", pss, hashes.SHA256())
    raise AssertionError(\"invalid signature accepted\")
except InvalidSignature:
    pass

Anahtar yönetiminde RSA-CRT, körleme ve hibrit şifreleme

Büyük veriyi doğrudan RSA ile şifrelemek modül boyu nedeniyle mümkün ve uygun değildir. Modern hibrit yaklaşımda rastgele simetrik oturum anahtarı oluşturulur; veri AEAD ile şifrelenir; anahtar yerleşik bir KEM veya doğru seçilmiş kapsülleme yaklaşımıyla alıcıya korunarak iletilir. RSA özel üs işleminde CRT hızlandırması, körleme ve doğrulama kötüye kullanımı ve yan kanalları sınırlama bakımından değerlendirilir. d ve asal çarpanlar sır olarak saklanır; açık anahtarın yayılması güvenlik hatası değildir.

RSA Şifreleme ve İmza İşlemlerinin Ayrılması

Anahtar üretimi tamamlandığında RSA işleminin kullanım amacı ayrıştırılmalıdır. Şifrelemede RSAES-OAEP alıcının açık anahtarıyla çalışır; alıcı gizli anahtarıyla açar. İmzada RSASSA-PSS gönderenin gizli anahtarıyla çalışır; herkes onun açık anahtarıyla kontrol edebilir. Bu iki işlem, okul kitabındaki 'özel anahtarla şifrele, açık anahtarla çöz' basitleştirmesine indirgenemez. PSS imzası mesaj gizliliği sağlamaz; OAEP şifreli metni de göndericinin kimliğine ilişkin başlı başına ispat değildir. İkisini birlikte kullanan bir protokol her işlevi doğru anahtar ve bağlam altında çalıştırmalıdır.

RSA-3072 anahtarına ve SHA-256 ile OAEP'e bakıldığında k=384 bayt ve hLen=32 bayttır; dolayısıyla tek OAEP mesajı en fazla 384−64−2=318 bayt olabilir. Bu yalnız kodlama sınırıdır, 'büyük dosyalar için RSA yeterlidir' sonucunun tersini gösterir. Bir dosya anahtarı kapsüllendikten sonra uzun veri AES-GCM veya ChaCha20-Poly1305 ile işlenmelidir. OAEP etiketinin iki tarafta aynı olması, MGF1'in seçilen hash algoritmasıyla uyuşması ve şifreli metnin beklenen modül boyunu taşıması çözme sözleşmesinin parçalarıdır.

RSA Parametre Uyuşmazlığında Hata Deneyi

Doğru OAEP şifreli metnini yanlış gizli anahtar veya farklı etiketle çözmeye çalışmak kabul edilmemelidir. İmzalı mesaja tek bayt eklemek PSS doğrulamasında hataya yol açmalıdır. Testte aynı anahtar ve doğru girdiyle şifreleme–çözme dönüşümü başarılı olurken, yanlış bağlamın kesin reddedilmesi olumsuz güvenlik testidir. Burada amaç gizli anahtar kurtarma saldırısı yapmak değil, API'nin yalnız yetkili durumda açık veri ürettiğini doğrulamaktır.

RSA-CRT ve Güvenli Kodlama Algoritmaları

RSA için iki ayrı büyük asal p,q seçilir ve n=pq hesaplanır. λ(n)=lcm(p−1,q−1) üzerinde gcd(e,λ(n))=1 koşulunu sağlayan açık üs alınır; gizli üs d≡e^{-1} (mod λ(n)) ile bulunur. Küçük eğitim örneğinde p=61,q=53 için n=3233, φ(n)=3120, e=17, d=2753 seçimi ed≡1 (mod 3120) koşulunu sağlar. m=65 için ham aritmetik dönüşüm 65^17 mod 3233=2790 ve 2790^2753 mod 3233=65 sonucunu verir; bu yalnız RSA çekirdeğinin doğruluğunu gösterir, modern şifreli iletişimin güvenlik ispatı değildir.

CRT hızlandırmada dP=d mod (p−1), dQ=d mod (q−1) ve qInv=q^{-1} mod p hazırlanır; iki küçük üs alma sonucunun Garner benzeri yeniden birleştirilmesiyle m hesaplanır. Yan kanal ve hata saldırısı riski nedeniyle üretim uygulamasında körleme, gizli değere bağlı dal/tablo erişimi denetimi ve sonuç bütünlük kontrolü gerekir. OAEP şifrelemede lHash, PS, 0x01 ve mesajdan DB kurulur; rastgele seed, MGF1 ile DB maskesi üretir, maskelenmiş seed yeniden türetilir. PSS imzası ise hash tabanlı EMSA kodlaması, salt ve imza doğrulama denetimi içerir. Kodlama şemaları matematiksel modüler üs alma adımından ayrı ve vazgeçilmezdir.

Ünite 15: Diffie–Hellman ve Eliptik Eğri Tabanlı Anahtar Anlaşması

ECDH ortak sır anlaşması animasyonu
ECDH ortak sır anlaşması

Diffie–Hellman Ortak Sırının Hesaplanması

Klasik Diffie–Hellman'da ortak grup parametreleri p,g bilinir; taraflardan biri gizli a, diğeri b seçer. Açık katkılar A=g^a mod p ve B=g^b mod p olur; iki taraf B^a ≡ A^b ≡ g^(ab) (mod p) sonucunu hesaplar. Dinleyici yalnız açık katkıları gördüğünde ortak sırrı hesaplamanın zorluğu seçilen grubun varsayımlarına bağlıdır. Bu basit cebirsel eşitlik, aktif saldırgana karşı tarafların kimliğini ispatlamaz: araya giren biri iki ayrı oturum kurabilir.

ECDH ve doğrulanmış anahtar değişimi

Eliptik eğri varyantında grup işlemi üs alma yerine skaler nokta çarpımıdır. X25519 belirli bir Montgomery eğrisi üzerinde standartlaştırılmış anahtar anlaşması arayüzüdür. Ortak sır ham haliyle uygulama şifreleme anahtarı olarak kullanılmak yerine oturum kimliği, taraf rolleri ve protokol bağlamına bağlı KDF girdisi olmalıdır. Açık anahtar biçimi ve düşük düzenli noktalarla ilgili standardın öngördüğü denetimler uygulamada önemlidir.

Oturum Anahtarının Yaşam Döngüsü

Bir el sıkışmada geçici anahtarlar oluşturulur, açık katkılar protokol mesajlarına bağlanır, kimlik doğrulama imza veya PSK ile sağlanır, transcript özeti anahtar türetmeye katılır, sonrasında trafik anahtarları türetilir. Geçici sırların zamanında silinmesi geçmiş oturumların daha sonra uzun ömürlü anahtar ifşasına karşı korunmasına katkı sağlar; bu özellik karşı taraf sahteciliğini tek başına önlemez. Tekrar oynatma ve yeniden anahtarlama politikaları ayrıca gerekir.

İleri okuma olarak karşılıklı doğrulanmış ECDH, HPKE ve kuantum sonrası KEM'lerin aynı protokol sınırında nasıl birleşebileceği incelenir; 'iki anahtar kullanılması' tek başına hibrit güvenliğin ispatı değildir.

Küçük Grupta Diffie–Hellman Örneği

Sadece matematiksel örnek için p=23,g=5,a=6,b=15 seçilsin. Açık katkılar A=5^6 mod 23=8 ve B=5^15 mod 23=19 olur. Birinci taraf 19^6 mod 23=2, ikinci taraf 8^15 mod 23=2 hesaplar. Sonuç eşitliği protokolün ortak değer oluşturduğunu gösterir; küçük grup nedeniyle saldırgan ayrık logaritmayı kolayca bulabilir. Kimlik doğrulaması da olmadığından bu örnek üretimde anahtar anlaşması amacıyla kullanılmamalıdır.

Diffie–Hellman Anahtar Anlaşması ve Ortadaki Adam Saldırısı

İki taraf ortak bir asal modül p ve uygun mertebeli grup oluşturucu g üzerinde anlaşır. Alice gizli a, Bob gizli b seçer; Alice A=g^a mod p, Bob B=g^b mod p üretip karşı tarafa iletir. Alice B^a mod p, Bob A^b mod p hesaplar ve her ikisi de g^(ab) mod p sonucuna ulaşır. Küçük sınıf örneğinde p=23,g=5,a=6,b=15 için A=8, B=19, ortak sonuç 2 olur. Ancak bu akış kimlik doğrulamaz; aktif ağ saldırganı iki ayrı oturum kurarak taraflara kendisini karşı tarafmış gibi tanıtabilir. 'Ortak sır hesaplandı' demek 'doğru kişiyle paylaşıldı' demek değildir.

ECDH ve X25519 ayrımı

Eliptik eğri tabanlı Diffie–Hellman'da açık değerler eğri üzerindeki noktalardır; ortak değer skaler çarpımla elde edilir. X25519 ise belirli Montgomery eğrisi üzerinde, RFC 7748'in tanımladığı 32 baytlık giriş/çıkış ve skaler işleme kurallarına sahip standart bir arayüzdür. İki tarafın çıktısı ortak sırrın ham malzemesi olarak KDF'ye verilmelidir. Her tür eğri kütüphanesinden rastgele nokta alıp aynı türden doğrulama uygulamak doğru değildir; geçersiz nokta, küçük alt grup ve tümü sıfır çıktı gibi sınırlar kullanılan standarda göre denetlenir.

İleti Dökümü ve Yön Bilgisinin Anahtar Türetmeye Bağlanması

Ortak sır yalnız bir bit dizisi değil, oturum kimliği ve protokol rolüyle ilişkili bir sonuçtur. HKDF kullanılarak protokol sürümü, iki tarafın açık parametreleri, transcript özeti ve yön etiketleri bağlanır; ayrı gönderme ve alma anahtarları türetilir. Sonrasında AEAD nonce sayacı taraf ve yön bazında tutulur. Bu işlem, salt hash(shared_secret) kullanmaktan farklı bir anahtar sözleşmesidir.

Anahtar Anlaşmasında Kimlik Doğrulama

Sonlu cisim Diffie–Hellman için ortak bir grup (G,g) belirlendiğinde Alice gizli a, Bob gizli b seçer. Alice A=g^a mod p, Bob B=g^b mod p üretir. Alice B^a, Bob A^b hesapladığında her ikisi g^{ab} değerine ulaşır. Bu eşitlik tek başına tarafların kimliğini doğrulamaz; araya giren bir aktör iki ayrı anahtar anlaşması yürütebilir. X25519 benzeri modern ECDH mekanizmaları özel anahtar skaler işlemlerini standartlaştırır, fakat açık anahtar kodlaması, uygunsuz nokta değerlerinin işlenmesi ve elde edilen sırrın bağlama bağlı HKDF ile türetilmesi protokol sorumluluğudur.

Protokolde client/server rolleri, sürüm, iki tarafın rastgelelikleri ve geçici açık anahtarları transcript hash'e dahil edilmelidir. Anahtar türetme işleminin girdisi yalnız paylaşılan sır değil, kabul edilen protokol bağlamı olmalıdır. Böylece aynı ham anlaşma değeri farklı amaçta sessizce tekrar kullanılmaz. Geçici anahtarlar oturum sonrasında imha edilse bile uygulamanın bellek, takas ve çökme dökümü politikaları ayrı değerlendirilmelidir.

Ünite 16: Dijital İmza Algoritmaları ve Açık Anahtar Altyapısı

Dijital imza ve PKI doğrulama animasyonu
Dijital imza ve PKI doğrulaması

Dijital İmza Doğrulama Algoritması

Dijital imza, imza anahtarıyla oluşturulan kanıtın açık anahtarla doğrulanmasına dayanır. Doğrulayıcı önce imzalanan bayt dizisinin kapsamını ve kodlamasını belirler, sonra doğru algoritma/parametreyle imzayı denetler ve açık anahtarın beklenen kimliğe ait olduğuna karar verir. Geçerli imza = yetkili işlem sonucu çıkarılamaz: imza doğru olabilir ama anahtar çalınmış, kullanım yetkisi bitmiş veya belgenin bağlamı yanlış yorumlanmış olabilir.

RSA-PSS, ECDSA ve EdDSA farklı matematiksel ve rastgelelik varsayımlarına sahiptir. ECDSA'da her imza için nonce'un yeniden kullanılması özel anahtarı açığa çıkarabilir; deterministik nonce üretimi belirli şemalarda bu sınıf hatayı azaltır fakat kötü uygulamayı her koşulda ortadan kaldırmaz. İmzadan önce yapılacak serileştirme, alan etiketleme ve sürüm tanımı belgenin mantıksal anlamının karışmamasını sağlar.

PKI ve sertifika zinciri

Bir X.509 sertifikası, özne/alan adı ile açık anahtar arasında imzalı bağ kurar. TLS istemcisi zincirdeki imzaları doğruladıktan sonra güven köküne ulaşmayı, alan adının SAN alanıyla eşleşmesini, sertifikanın kullanım amacını, geçerlilik dönemini ve ilgili kısıtlamaları denetler. Kök sertifikaya güven, salt kriptografik değil idari bir karardır. İptal ve sertifika durumu kontrolünün davranışı ortamın tehdit modeline ve uygulanan politikaya bağlıdır.

Dijital İmza, Elektronik Mühür ve Hukuki Etkiler

Belge bütünlüğünü matematiksel doğrulama ile gerçek kişinin iradesini ve yetkisini hukuken değerlendirme birbirinden ayrılır. Zaman damgası, kimlik kayıtları, yetkilendirme zinciri ve anahtarın saklanma koşulları destekleyici kanıt olabilir. Kriptoloji dersi bu araçların teknik özelliklerini açıklar; mevzuata dayalı nihai değerlendirme Bilişim Hukuku dersinin konusudur.

Sertifika şeffaflığı ve yetki sınırı

Bir sunucunun doğru SAN adına sahip sertifika sunması, yanlış düzenlenmiş bir sertifikanın hiç var olmadığı anlamına gelmez. Sertifika şeffaflığı günlükleri, kamusal web PKI ortamında sertifika düzenlenmesini denetlenebilir hale getirir; fakat günlükte görünmek sertifikanın uygulama düzeyindeki yetki politikasına uygun olduğunu göstermez. Güven kökü güncellemeleri, çapraz imzalı zincirler, süre aşımı ve iptal bilgilerindeki gecikme, güven kararının hem kriptografik hem de operasyonel yönleri bulunduğunu ortaya koyar.

İmza Algoritmalarının Matematiksel Farklılıkları

RSA-PSS, RSA özel üs hesabını olasılıksal bir mesaj kodlamasıyla birleştirir. ECDSA ise eğri grubunda bir özet temsilcisi ve k gibi her imzada doğru yönetilmesi gereken geçici skaler kullanır; r noktanın koordinatından, s=k^(-1)(z+rd) mod n hesabından elde edilir. Aynı geçici skalerin tekrar kullanımı veya öngörülebilirliği özel anahtarın çözülmesine yol açabilir. Ed25519, Edwards eğrisi üzerinde başka bir imza ailesidir; deterministik nonce türetme, kodlama ve grup kuralları bakımından ECDSA ile aynı algoritma değildir.

İmza Doğrulamasının Önkoşulları

Doğrulayıcı önce algoritma tanıtıcısını, anahtar biçimini, mesajın tam bayt gösterimini ve imza kodlamasını denetler. Ardından matematiksel doğrulama yapılır; ancak imzayı doğrulayan açık anahtarın kime ait olduğu PKI veya başka bir güven zincirinden gelir. İmza başarılı olsa bile belgenin tarihinin, yetkinin ve hukuki geçerliliğin otomatik olarak kanıtlandığı sonucuna varılamaz. İmza ile şifreleme de farklı güvenlik amaçlarına sahiptir: imza mesajı gizlemez.

Sertifika Zinciri ve Kimlik Eşleştirme

X.509 zincirinde uç sertifika, ara sertifikalar ve güven kökü ele alınır; imzalar, geçerlilik zamanları, temel kısıtlar, anahtar kullanımı, ad kısıtları ve uygulamanın beklediği sunucu adı doğrulanır. İptal bilgisi ve sertifika şeffaflığı gözlem/denetim mekanizmalarıdır; bunların rolü uygulama ve politika bağlamına göre sınırlıdır. 'Sertifika geçerli' sonucu, sunucunun uygulama katmanı güvenliğini veya iş mantığını kanıtlamaz.

İmza, Sertifika ve CMS Kapsayıcısı Ayrımı

Ed25519, ECDSA ve RSA-PSS aynı işlevi hedefleseler de matematiksel işlemleri ve güvenlik varsayımları farklıdır. ECDSA'da mesaj özeti, rastgele/kararlı nonce ve eliptik eğri skaler işlemleri birlikte değerlendirilir; aynı gizli anahtarla nonce tekrarının ciddi sonuçları olabilir. Ed25519 farklı bir deterministik imzalama tasarımına sahiptir. RSA-PSS'de imzalanan veri uygun EMSA-PSS kodlamasından geçer. Bir dosyadaki imzanın doğru çıkması ayrıca sertifikanın doğru kuruma ait olduğunun veya yazılımın güvenilir olduğunun otomatik kanıtı değildir: sertifika yolu, amaç kısıtları, geçerlilik aralığı, güven kökü ve iptal bilgileri ayrı kararlardır.

PKCS 7 ve Kriptografik İleti Sözdizimi yazısında incelenen CMS SignedData gibi kapsayıcılar, algoritma, imza, sertifika ve içerik ilişkilerini taşır; kapsayıcı biçimini şifreleme algoritmasıyla karıştırmamak gerekir. İmza doğrulayıcısı önce mesaj baytlarını ve hangi içeriğin imzalandığını belirler, ardından imzayı matematiksel olarak denetler, daha sonra sertifika politikasını ve uygulamanın güven sınırını uygular. İmzayı doğrulayıp bağlamı doğrulamayan yazılım yanlış belgeye güvenebilir.

Ünite 17: Kriptografik İletişim Protokolleri ve TLS 1.3

TLS 1.3 el sıkışma ve anahtar takvimi animasyonu
TLS 1.3 el sıkışma ve anahtar takvimi

TLS El Sıkışması ve Kayıt Koruma Aşamaları

TLS 1.3, istemci ve sunucunun ortak şifre takımıyla anlaşmasını, anahtar katkılarından ortak sır türetmesini, transcript bilgisini kimlik doğrulamaya bağlamasını ve uygulama verisini ayrı trafik anahtarlarıyla korumasını düzenler. El sıkışma tamamlanmadan uygulama verisinin hangi koşullarda gönderilebileceği önemlidir: 0-RTT verisi tekrar oynatmaya karşı sıradan trafikle aynı güvenlik garantisini vermez. Sürüm düşürme ve protokoller arası bağlam karışıklığını önlemek için sürüm/parametre kontrolü el sıkışmaya dahildir.

RFC 9846 (Temmuz 2026) TLS 1.3'ün aynı sürüm numarasını koruyan güncel tanımıdır ve RFC 8446'nın yerini alır. Güncelleme, farklı bağlantılar arasında KeyShare tekrarını yasaklamak ve artık terk edilmiş TLS 1.0/1.1 pazarlığını engellemek gibi gerekleri sıkılaştırır. Tarihsel TLS 1.3 açıklamalarını okurken protokol sürümü ile onu tanımlayan RFC belgesinin sürümü karıştırılmamalıdır.

Sertifika doğrulama ve uçtan uca akış

Güvenli bağlantı süreci DNS adının seçilmesi, sertifika zincirinin doğrulanması, geçici ortak anahtarın kurulması, anahtar türetimi, trafik şifreleme ve oturum sonlandırma aşamalarından oluşur. TLS şifreleme bağlantıyı korur, ancak uç noktadaki uygulamanın kötü niyetli girdiye dayanıklılığını veya verinin sunucuda güvenli saklandığını garanti etmez. Sertifika adı doğrulamasının kapatılması, TLS'in sunduğu önemli kimlik güvenliğini kaldırır.

TLS Oturum Anahtarlarının Yönetimi

Bir anahtarın envanteri; oluşturulma zamanı, amacı, kullanım izni, saklama alanı, sürüm, yenileme ve imha durumunu tutmalıdır. Şifreli yedekler, anahtar rotasyonu ve eski veriyi çözebilme gereksinimi birlikte planlanır. Anahtarların korunması için HSM/KMS kullanımı uygulama sınırını değiştirir; sadece anahtarın başka yerde tutulması, yanlış yetkilendirmeyi otomatik çözmez. Olay müdahalesinde hangi anahtarın etkilendiği ve hangi ciphertext kümesini koruduğu geriye dönük olarak izlenebilmelidir.

Protokol geçişinin regresyon testi

Bir istemci–sunucu testi normal el sıkışma, güvenilir sertifika, yanlış hedef alan adı, eski TLS sürümü pazarlığı, yeniden kullanılan geçici anahtar katkısı ve 0-RTT tekrar oynatma koşullarını ayrı ele almalıdır. Kabul edilen davranış, başarısız durumların hangilerinde bağlantının reddedileceği ve hangi hata kaydının üretileceği önceden tanımlanır. Yeni RFC'ye geçildiğinde yalnız belgede belirtilen gereksinimler değil, kullanılan TLS kitaplığının uygulama davranışı da test edilmelidir. Ölçüm sonuçları üretim trafiğinin gerçek güvenlik seviyesini tek başına ispatlamaz.

TLS 1.3'te mesaj sırasının işlevi

İstemci ClientHello ile sürüm ve şifre takımı tercihlerini, desteklenen grupları ve anahtar paylaşım değerlerini iletir. Sunucu ServerHello ile mutabık değerleri ve kendi anahtar paylaşımını seçer. ECDHE sonucu ve PSK varsa ona bağlı erken sırlar, HKDF tabanlı anahtar zamanlaması üzerinden el sıkışma trafik sırlarına dönüştürülür. EncryptedExtensions seçilen uzantıları, Certificate ve CertificateVerify sunucunun kimlik kanıtını, Finished ise transcript üzerinde anahtarlı doğrulamayı taşır. Finished tamamlandıktan sonra uygulama trafik anahtarlarıyla AEAD kayıtları korunur. El sıkışmanın kimlik ve anahtar türetme adımlarını sıra dışı ele almak, güvenlik kanıtı ve protokol durum makinesini bozar.

HKDF zamanlaması, 0-RTT ve tekrar oynatma

TLS 1.3'te erken, el sıkışma ve ana trafik sırları HKDF tabanlı ayrım süreçleriyle elde edilir. 0-RTT veri bazı oturum devam senaryolarında gecikme avantajı sağlar; fakat tekrar oynatma riski bulunduğundan idempotent olmayan işlemler için ek koruma gerekir. Trafik anahtarlarının yenilenmesi, uygulama protokolünün oturum açma yetkileri ve sertifika doğrulaması ayrı konulardır. RFC 9846, TLS 1.3 sürüm numarasını değiştirmeden RFC 8446'nın yerine geçen güncel tanımdır ve örneğin KeyShare değerlerinin bağlantılar arasında yeniden kullanılmasını yasaklar.

TLS Hataları ve Kriptografik Güvenlik Açıkları

Uygulama katmanının aldığı genel bağlantı hatası her zaman 'AES kırıldı' anlamına gelmez. Uygun uç adı doğrulanmamışsa sorun kimlik bağlama adımında; yanlış transcript veya yanlış anahtar türetildiyse Finished/AEAD doğrulamasında; protokol izin vermediği hâlde eski sürüm müzakere ediliyorsa sürüm politikası düzeyindedir. Ağ paketinden görülen ipuçları, anahtarları veya korunan uygulama verisini açık etmeden yorumlanmalıdır.

TLS 1.3 Oturum Güvenliği İşlem Sırası

TLS 1.3 el sıkışmasında istemci desteklenen sürümleri, anahtar paylaşımını ve şifre takımı seçeneklerini bildirir; sunucu ortak parametreleri seçer. Karşılıklı paylaşılan sırdan HKDF tabanlı anahtar çizelgesi ile el sıkışma ve uygulama trafiği anahtarları türetilir. Sertifika zinciri ve CertificateVerify, sunucunun kimlik beyanını transcript'e bağlar. Finished ile görülen el sıkışma mesajlarının bütünlüğü kontrol edilir. Bir TLS bağlantısının kurulması, uygulama katmanındaki yetkilendirme kararını kendiliğinden çözmez; yanlış sunucu adına kabul edilmiş geçerli bir sertifika beklenen güven hedefini sağlamaz.

Kayıt katmanında her trafik anahtarı için sıra numarasına bağlı nonce ve AEAD işlemi kullanılır. Aynı bağlantı üzerindeki sıra numaraları, yeniden anahtarlama ve kayıt sınırları uygulama katmanından görünmese bile protokol güvenliğinin parçasıdır. Oturum devamlılığı ve 0-RTT ayrı değerlendirilmelidir: erken veri, bazı tekrar senaryolarına karşı normal el sıkışmayla aynı garantiyi vermez; yan etkili işlemlerde kabul politikası buna göre tanımlanır. Güncel RFC yorumunda hangi metnin temel protokolü tanımladığı ve hangi belgenin onu değiştirdiği ayrıca kontrol edilmelidir.

Ünite 18: Kriptanaliz Yöntemleri ve Saldırı Karmaşıklığı

Saldırgan Yeteneği ve Güvenlik Varsayımları

Yalnız şifreli metin gören bir saldırgan ile kendi seçtiği açık metinleri şifreletebilen veya bazı şifreli metinleri çözme hizmetine gönderebilen saldırgan aynı değildir. Bilinen açık metin, seçilmiş açık metin ve seçilmiş şifreli metin modelleri sistemin hangi arabirimleri açtığını ifade eder. Bir protokolde başarısızlık kodlarının ayrışması veya doğrulama yapılmadan açık metnin kullanılabilmesi, teorik olarak izin verilmediği varsayılan sorguları pratikte mümkün hale getirebilir.

Diferansiyel, lineer ve yapısal yöntemler

Diferansiyel kriptanaliz belirli giriş farklarının çıktı farklarına hangi olasılıkla yol açtığını, lineer kriptanaliz belirli bit kombinasyonları arasındaki istatistiksel önyargıları inceler. Tam saldırı karmaşıklığı kullanılan tur sayısına, seçilen ilkelin yapısına, veri miktarına ve saldırganın sorgu imkânına bağlıdır. Yöntemlerin tarihsel önemini öğretmek için azaltılmış turlu oyuncak modeller yeterlidir; gerçek sistemleri kırmaya yönelik çalıştırılabilir istismar kodu dersin amacı değildir.

Kriptografik Gerçeklenim Kusurlarının Sınıflandırılması

Arşivdeki eğitim kodları üç ayrı hata ailesini düşündürür: matematiksel olarak doğru fakat güvenlik modeli eksik ham RSA, gizlilik sağlayıp bütünlük denetlemeyen CBC, ve artık önerilmeyen RC4/SHA-1'e dayalı şemalar. İncelemede önce hedef özellik yazılır, ardından örnek kodun giriş/çıkış sözleşmesi görülür, güvenlik varsayımı belirlenir ve olumsuz test sorulur. Örneğin AEAD için doğrulanması gereken özellik, değiştirilmiş AAD'nin plaintext üretmeyip etiket hatası doğurmasıdır. Bu, saldırı reçetesi değil savunma doğrulamasıdır.

Kriptografik çeviklik

Bir algoritmanın terk edilmesi kararı yalnız teorik kırılmaya bağlı değildir. Zayıflayan güvenlik marjı, yasal/kurumsal uyum, uygulama maliyeti, işletim sistemi desteği ve arşivlenmiş verinin kullanım süresi birlikte değerlendirilir. Algoritma kimliği ve anahtar sürümü veriye bağlı saklanmalı; sessiz algoritma pazarlığına izin verilmemeli, geçişte eski ve yeni kayıtlar test edilebilir biçimde ayrıştırılmalıdır.

Çarpanlara ayırma ve eğri yöntemleri

RSA'nın güvenlik analizi tamsayı çarpanlara ayırma probleminin bilinen en iyi algoritmalarını dikkate alır. Deneme bölmesi temel modeli öğretir ama büyük sayılarda yetersizdir; Pollard rho, eliptik eğri çarpanlara ayırma (ECM) ve sayı cismi eleği farklı sayı boyu ve çarpan dağılımlarında farklı maliyetlere sahiptir. ECM'nin eliptik eğri grup aritmetiğini kullanması, güvenli eğri üzerinde ECDH kırılmasıyla aynı problem olduğu anlamına gelmez. Algoritmaların maliyeti anahtar uzunluğu iddialarıyla doğru ilişkilendirilmeli; burada hedef kontrollü karmaşıklık analizidir.

Saldırgan Modeline Göre Kriptanaliz Maliyeti

Şifreli metin bilinen saldırıda saldırgan yalnız C'yi gözler; bilinen açık metin saldırısında belirli (M,C) çiftleri vardır; seçilmiş açık metin saldırısında istediği mesajları şifreletir; seçilmiş şifreli metin saldırısında uygun sınırlar altında çözme oracle'ına erişebilir. Bu modellerin karşılaştırılması bir şifrenin 'kırılmış' olup olmadığını doğru belirtmenin önkoşuludur. 2^128 büyüklüğünde saf anahtar arama maliyeti, algoritmanın yapısal olarak daha iyi bir saldırıya açık olmadığının kanıtı değildir.

Klasik ve Modern Kriptanaliz Tekniklerinin Karşılaştırılması

Sezar ve afin şifrelerde tek harf istatistiği anahtar adaylarını eler. Modern blok şifrelerde diferansiyel kriptanaliz, seçilen giriş farkı ΔX ile çıktı farkı ΔY arasında ideal rastgele davranıştan sapmaları araştırır. İyi seçilmiş S-box fark dağılımı tablosunda belirli giriş farklarının hangi çıkış farklarına kaç kez dönüştüğü hesaplanır; bir turdaki olasılıklar çok turlu yol olasılığına bağlanır. Lineer kriptanaliz ise giriş, çıkış ve anahtar bitleri arasında beklenen 1/2 olasılığından sapma gösteren parite ilişkileri arar. Küçük tur sayılı oyuncak SPN'de gözlenebilir zayıflık, tam turlu AES için pratik anahtar kurtarma yöntemi sunulduğu anlamına gelmez.

Küçük S-box Üzerinde Diferansiyel Dağılım

Dört bitlik bir S-box'ın giriş farkı dx için fark tablosu DDT[dx][dy], tüm x değerleri üzerinde S[x] XOR S[x XOR dx] == dy sayılarak kurulur. Her satırın toplamı 16 olmalıdır; dx=0,dy=0 için toplam 16'dır. Bu denetim, bir saldırganın belirli farkları neden tercih edebildiğini açıklarken bir algoritmanın tam güvenliğini ispatlamaz.

S = [0xC,5,6,0xB,9,0,0xA,0xD,3,0xE,0xF,8,4,7,1,2]
ddt = [[0]*16 for _ in range(16)]
for dx in range(16):
    for x in range(16):
        ddt[dx][S[x] ^ S[x ^ dx]] += 1
assert all(sum(row) == 16 for row in ddt)
assert ddt[0][0] == 16

Kriptanalitik, Protokol ve Gerçeklenim Saldırıları

Kaba kuvvet ve yapısal kriptanaliz matematiksel şifreyi hedefleyebilir. Padding oracle, nonce tekrar kullanımı, yanlış anahtar seçimi ve hata mesajlarının ayrıştırılabilmesi ise çoğunlukla şifreleme şeması veya protokol uygulamasının zayıflığıdır. Zamanlama, güç ve önbellek sızıntısı fiziksel yürütmeyi hedefler. Bu üç problem sınıfı raporda ayrılırsa algoritma değiştirme kararı ile uygulama düzeltmesi birbirine karışmaz.

Kriptanalizde Cebirsel Temsil ve Karmaşıklık Analizi

Kriptanaliz problemi önce hedefi tanımlar: anahtarı bulmak, açık metni ayırt etmek, sahte bir doğrulama etiketi üretmek veya protokol akışını yanlış kabul ettirmek aynı başarı ölçütü değildir. Bir yöntem q seçilmiş açık metin, t hesaplama işlemi ve m bellek gerektiriyorsa yalnız aranan anahtar sayısıyla kıyaslama eksik olur. Azaltılmış turlu bir şifreye ait diferansiyel iz veya denklemler, tam standart algoritma için otomatik saldırı sonucu üretmez. S-box üzerinden doğrusal yaklaşım kurulduğunda korelasyon küçük örneklemde rastlantısal sapmalara hassastır; gözlenen yanlılığın istatistiksel anlamı ayrıca sınanır.

Cebirsel gösterim ile saldırı karmaşıklığı arasındaki ayrım AES Kriptanalizinde Cebirsel Temsil çalışmasıyla ilişkilidir. Cebirsel bir dönüşümü daha az sembolle ifade etmek ile denklem sisteminden anahtarı gerçekçi zaman ve bellek sınırlarında çıkarmak birbirinden farklı başarı kriterleridir. Ders burada kişisel bir çalışmaya genel güvenlik kanıtı atfetmez; yöntemin kapsamını, varsayımlarını ve yayınlanan teknik çözümlemeyi karşılaştırmalı okumaya yönlendirir.

Ünite 19: Yan Kanal Analizi ve Kriptografik Gerçeklenim Güvenliği

Matematiksel Şifre Tasarımı ve Fiziksel Gerçeklenim

Doğru kriptografik algoritma, onu çalıştıran cihazın zamanlama, önbellek, güç tüketimi veya elektromanyetik davranışını gizlemez. Sırra bağlı koşul dalları ve tablo erişimleri gözlenebilir süre farklarına yol açabilir. 'Sabit zamanlı' hedefi yalnız bir döngüye değil, derleyici optimizasyonuna, kitaplığa, platforma ve hata yoluna göre değerlendirilir. Gizli veri üzerinde erken sonlanan karşılaştırmalar yerine standart kitaplığın uygun karşılaştırma arayüzü tercih edilir.

Yan kanal ve hata modeli

Yan kanal değerlendirmesinde önce saldırganın fiziksel cihazı mı, paylaşımlı sunucuyu mu yoksa ağ üzerinden zamanlamayı mı gözlediği belirlenir. Güç analizi ve hata enjeksiyonu farklı hata modelleridir. Maskeleme ara değerleri paylara ayırarak belirli sızıntı modellerine karşı direnç kurabilir; fakat güvenli rastgelelik ve donanım ölçümü gerektirir. Kritik anahtar işlemleri için doğrulanmış modüller, güvenli donanım kökleri ve HSM tercih edilebilir; bunlar protokol ve erişim politikası yanlışlarını sihirli biçimde düzeltmez.

Beyaz Kutu Kriptografisi ve Anahtar Koruma

Beyaz kutu kriptografisi, saldırganın kodu ve yürütme ortamını güçlü biçimde inceleyebildiği durumlarda anahtar koruma iddiasını ele alır. Yazılım içine gömülü bir anahtarın 'gizlendiği' varsayımı, saldırganın süreç belleğini ve makine kodunu görebildiği modelde çok sınırlıdır. Bu yüzden mümkünse gizli anahtarlar ayrı güven sınırında tutulmalı, kullanım izinleri kısıtlanmalı ve ifşa halinde hızlı iptal/yenileme uygulanmalıdır.

Kriptografik Testlerin Kanıt Düzeyleri

Test vektörü algoritmanın bilinen girdiye doğru çıktıyı verdiğini, özellik tabanlı testler decrypt(encrypt(m))=m gibi değişmezleri, olumsuz testler yanlış etiket ve nonce hatasının engellendiğini gösterir. Fuzzing ve protokol durum geçişi incelemesi, beklenmeyen kod yollarını araştırır. Ancak tek bir test dizisi yan kanalsızlık veya formal IND-CCA garantisi vermez. Matematiksel model, uygulama denetimi ve ölçüm birbirini tamamlar.

Sabit Zamanlı İşlemlerin Doğrulanma Sınırları

Yan kanal açısından aynı matematiksel sonucu veren iki algoritma eşdeğer olmayabilir. Gizli üs bitine bağlı dallanan modüler üs alma, anahtar baytıyla indekslenen tablo veya kısa devreyle sonlanan etiket karşılaştırması farklı süre/önbellek izi oluşturabilir. Sabit zamanlı programlama, sır bağımlı kontrol akışı ve erişim örüntülerini azaltmaya çalışır; yalnız kaynak kodun koşul içermediğini görmek makine kodunu ve çalışma zamanını garanti etmez. Derleyici, mikro mimari, frekans yönetimi ve bellek hiyerarşisi tehdit modeline girer.

Körleme, Maskeleme ve Hata Denetimi Yöntemleri

RSA körleme, işlemden önce girdiyi rastgele bir çarpanla dönüştürüp sonucu uygun biçimde geri alarak özel işlem sırasında gözlenen örüntülerle doğrudan mesaj arasında bağlantıyı azaltmayı hedefler. Maskeleme, ara hesapları rastgele paylara ayırabilir; fakat güçlü rastgeleliğe ve belirli sızıntı modeline dayanır. Hata denetimi, CRT hızlandırması sırasında bozulmuş sonuçların dışarı verilmesini önlemeye çalışır. Bunlar aynı savunma değildir; birinin uygulanması diğerlerini gereksiz kılmaz.

HSM ve anahtar yaşam döngüsü tasarımı

Güvenli anahtar yönetimi üretme, izin verme, kullanma, yenileme, askıya alma, yedekleme ve yok etme aşamalarını kapsar. HSM, belirli anahtar işlemlerini ayrılmış güven sınırında tutabilir; ancak hatalı yetki ataması ve yanlış protokol bağlama uygulama seviyesinde devam edebilir. İlgili standart ve denetimler, yanlış kullanım olasılığını azaltmak için anahtar kullanım amacını, olay kaydının sır içermemesini ve geri alınabilirlik sınırını birlikte değerlendirir.

Zamanlama, Arıza Enjeksiyonu ve Yan Kanal Testleri

Bir kriptografik uygulama standart test vektörlerinden doğru çıktı ürettiğinde işlevsel doğruluğu sınanmış olur; işlem süresinin gizli veriye bağlı olarak değişmediği veya güç tüketiminin sır sızdırmadığı kanıtlanmış olmaz. Gizli anahtara bağlı tablo indeksleri, koşullu dallanmalar, önbellek davranışı ve hata kodları farklı kanallardan bilgi taşıyabilir. 'Sabit zaman' değerlendirmesi, tek bir time.time() örneğinden değil; tehdit modeli, işlemci mimarisi, derleyici optimizasyonu ve ölçüm düzeniyle birlikte yorumlanır. İlgili maskeleme ve körleme yöntemleri belirli sızıntı modellerini hedefler, her fiziksel saldırıyı ortadan kaldırmaz.

C ile Hafif AES-128 Gerçekleştirimi ve Lightweight AES-128 kayıtları bellek düzenini ve AES tur algoritmasını incelemek için somut örneklerdir. Örneğin S-box tablo erişiminin gözlenebilir önbellek davranışı üretebilmesi, doğru şifreli metin çıktısından ayrı bir denetim gerektirir. Projenin köken/lisans kaydı ve gerçek kapsamı doğrudan proje sayfasında açıklanmıştır; akademik not bu ayrımı değiştirmez.

Ünite 20: Kuantum Sonrası Kriptografi ve Geçiş Stratejileri

Kuantum Hesaplamanın Kriptografik Tehdit Modeli

Shor algoritması, yeterince büyük hata düzeltilmiş kuantum bilgisayarlarda tamsayı çarpanlara ayırma ve ayrık logaritma problemlerini etkiler. Bu nedenle geleneksel RSA ve klasik ECC tabanlı kamu anahtarı güvenlik varsayımları uzun vadede risk taşır. Grover algoritmasının genel aramaya sağladığı hızlanma ise simetrik algoritmaları aynı biçimde 'kırmaz'; anahtar boyu ve kaynak hesabıyla değerlendirilmelidir. Kuantum tehdidi veri saklama süresiyle ilişkilidir: bugün kaydedilen şifreli trafik gelecekte yeniden analiz edilebilir.

ML-KEM, ML-DSA ve SLH-DSA

NIST'in 2024 tarihli FIPS 203 standardı kafes tabanlı ML-KEM anahtar kapsüllemeyi; FIPS 204 ML-DSA imzaları; FIPS 205 SLH-DSA karma tabanlı imzaları tanımlar. Bir KEM'in KeyGen, Encaps, Decaps işlemleri, doğrudan dosya şifrelemekten çok iki uçta ortak sır kurulması için kullanılır. Ortak sır, protokol bağlamına göre KDF'ye verilir; gerçek veri yine AEAD ile korunur. Parametre takımının güvenlik düzeyi, anahtar/şifreli metin boyutu, işlem gecikmesi ve uygulama olgunluğu birlikte karşılaştırılır. İmza şemaları KEM yerine, KEM de imza yerine kullanılamaz.

Kuantum Sonrası Geçişte Karar Ölçütleri

Bir kurumun arşivleme süresi 20 yıl, sistem yenileme aralığı 5 yıl ve korunacak kayıt miktarı çok yüksekse, seçim yalnız tek bir şifreleme gecikmesine göre yapılmaz. Mevcut kamu anahtarı bağımlılıkları haritalanır; kayıt, sertifika, firmware ve cihaz protokolü ayrı geçiş nesneleri olarak ele alınır. ML-KEM'in kapsülleme/çözme hızı kadar ciphertext genişlemesi, bellekte anahtar malzemesi ve beklenmeyen çözme başarısızlığının işlenme biçimi ölçülür. Hibrit geçişte klasik ve kuantum sonrası bileşenlerin transcript ve KDF bağlamına bağlanması, yalnız iki anahtarı ardışık eklemekten farklı bir güvenlik sözleşmesidir.

Kafes Tabanlı Anahtar Kapsülleme Prensipleri

ML-KEM, iki tarafın ortak sır oluşturmasını sağlayan bir KEM'dir: KeyGen açık ve gizli anahtarı oluşturur; Encaps(pk) ortak sır ile şifreli kapsülü üretir; Decaps(sk,ct) alıcının aynı sırra ulaşmasını hedefler. Matematiksel çekirdekte modüler cebir ve hata terimi taşıyan kafes problemleri yer alır; bu, geleneksel RSA'daki tamsayı çarpanlara ayırmayla aynı varsayım değildir. Kapsülleme sonucunun kendisi büyük veri şifrelemez; türetilmiş simetrik anahtar ve AEAD dosyayı veya ağ kaydını korur. Uygulama, şifreli kapsül boyu, algoritma parametre takımı, çözme hatası davranışı ve güvenlik düzeyi seçimini ayrı denetlemelidir.

Kuantum Sonrası İmza Ailelerinin Karşılaştırılması

ML-DSA modüler kafes tabanlı imza ailesiyken SLH-DSA durum bilgisi gerektirmeyen hash tabanlı bir ailedir. İkisinin anahtar, imza boyutu ve işlem maliyetleri farklıdır. Güvenlik seviyesi etiketi tek başına ağ paket boyunu, mikrodenetleyici belleğini veya sertifika zinciri üzerindeki yükü söylemez. Geçiş kararında mevcut RSA/ECC uygulamalarının nerede kullanıldığı çıkarılır ve uygun alternatif şema, sistem kısıtlarıyla eşleştirilir.

Klasik ve Kuantum Sonrası Anahtar Malzemesinin Bileşimi

Hibrit anahtar mutabakatında klasik ECDHE çıktısı ile ML-KEM ortak sırrını kullanmak, rastgele iki bayt dizisini birleştirmekten daha güçlü bir protokol tanımı gerektirir. Birleştirme fonksiyonu transcript'i, yöntem tanıtıcılarını, yönleri ve güvenli ayrıştırmayı içermelidir. Anahtar kapsüllemenin doğrulanmış eşe ait açık anahtarla yapılıp yapılmadığı, kimlik doğrulama problemidir; KEM tek başına bu problemi çözmez.

Kuantum Sonrası Geçişte Algoritma ve Protokol Değişiklikleri

ML-KEM'in işlevi anahtar kapsülleme, ML-DSA ve SLH-DSA'nın işlevi dijital imzadır. Anahtar kapsülleme bir mesajı doğrudan şifreleyen AES alternatifi değildir: Encaps(pk) ortak sır ve kapsül üretir; Decaps(sk,capsule) aynı sırrı geri elde etmeyi amaçlar. Üretilen sır, protokolün bağlam ve rol ayrımına uyan bir türetim adımından sonra AEAD anahtarına dönüşür. İmza algoritmalarında anahtar/mesaj/imza boyutları ve doğrulama maliyetleri sistem tasarımını etkiler; yalnız yaklaşık klasik-bit güvenlik düzeyine bakmak yeterli değildir.

Hibrit geçişte iki algoritmanın ortak sırları birleştiriliyorsa tam birleşim formülü, etki alanı ayrımı, hangi bileşenin başarısız olabileceği ve uzlaşma politikasının downgrade'e nasıl direndiği açıkça yazılmalıdır. Eski sertifika zincirleri, cihaz belleği, mesaj boyu, kayıt biçimi ve donanım ivmelendirme gereksinimleri de göçün parçasıdır. 'Kuantuma dayanıklı' nitelemesi deneysel bir sonuç değil, açık güvenlik varsayımları altında standartlaştırılmış mekanizmalara ilişkin değerlendirmedir.

Ünite 21: Eşik Kriptografisi ve Sır Paylaşımı Şemaları

Shamir sır paylaşımı ve yeniden kurma animasyonu
Shamir sır paylaşımı ve yeniden kurma

Bir gizli anahtarın tek bir kişide veya cihazda bulunması operasyonel bir risk oluşturur. Eşik yapılarının amacı bir sırrı sıradan parçalara bölerek her parçayı tek başına işe yarar hale getirmek değil; belirlenmiş sayıda katılımcının birlikte işlem yapabildiği matematiksel bir erişim yapısı kurmaktır. Bu ünite, eşik paylaşımı ile dağıtık imza protokolü arasındaki farkı açık tutar.

Shamir Sır Paylaşımında Polinom Hesabı

(t,n) paylaşımında en az t pay sırrı ortaya çıkarmak için yeterli, t−1 veya daha az pay ise ideal modelde sır hakkında bilgi vermeyecek biçimde tasarlanır. Bir asal p, p'den küçük sır s, rastgele ve bağımsız a₁,...,a_(t−1) katsayıları alınır; f(x)=s+a₁x+...+a_(t−1)x^(t−1) mod p polinomu kurulur. Sıfırdan farklı ve birbirinden farklı x_i noktalarında hesaplanan (x_i,f(x_i)) ikilileri paydır. Paylar sırla aynı gizlilik derecesinde korunmalı; rastgele katsayılar yeterince öngörülemez olmalıdır.

Örneğin p=17,s=5,t=3 ve yalnız sınıf gösterimi için a₁=2,a₂=3 seçelim. f(1)=10, f(2)=4, f(3)=4 bulunur. Üç noktadan Lagrange katsayıları hesaplanır: f(0)=Σ_i y_i Π_(j≠i)(−x_j)/(x_i−x_j) mod 17. Noktaların x değerleri farklı olmalı ve paydalarda kullanılan farkların modüler tersleri bulunmalıdır. Üçüncü dereceye kadar ek rastgele terim eklenirse eşik değişir; katsayıların seçimindeki yanlılık ise bilgi sızmasına neden olabilir.

Kötü Niyetli Katılımcılara Karşı Pay Doğrulama

Shamir paylaşımı tek başına kötü niyetli bir katılımcının yanlış pay vermesini engellemez. Feldman veya Pedersen türü doğrulanabilir sır paylaşımı, payların tutarlılığını kontrol etmeye yarayan taahhütleri ekler; bu mekanizmaların güvenlik ve gizlilik varsayımları farklıdır. Pay verilirken kimlik doğrulama, pay saklama ve paylaşım yenileme için bağımsız protokoller gerekir.

Eşik imza, MPC ve anahtarın yaşam döngüsü

Bir RSA veya ECDSA anahtarını Shamir yöntemiyle bölmek, otomatik olarak t tarafın gizli anahtarı yeniden birleştirmeden imza atmasını sağlamaz. Gerçek eşik imza protokolü, ara işlemleri güvenli çok taraflı hesaplamayla yürütür; özellikle ECDSA'da geçici nonce üretimi ve kötü niyetli pay tespiti önemlidir. Operasyonel seçim yapılırken tek nokta arızası, katılımcı devre dışı kalması, pay yenileme, yedekleme ve denetim kayıtlarının gizlilik sınırları birlikte hesaplanmalıdır.

Shamir Şemasında Yeniden Kurma ve Geçersiz Paylar

Bir t/n Shamir düzeninde gizli değer s, asal bir alanın elemanıdır ve sabit terimi s olan rastgele bir (t−1) dereceli polinom seçilir. Birbirinden farklı, sıfır olmayan x_i noktalarında f(x_i) hesaplanarak paylar üretilir. En az t doğru pay, Lagrange katsayılarıyla f(0) değerini yeniden kurar. Eşiğin altındaki paylar polinomu benzersiz belirlemez; fakat bu ifade ancak seçilen alan, rastgele katsayılar ve güvenli dağıtım varsayımları altında geçerlidir.

Payları yetkili katılımcılara ileten kanal şifreli ve kimliği doğrulanmış olmalıdır. Yanlış hazırlanmış veya düşmanca üretilmiş bir pay, sır birleştirme sonucunu bozabilir; doğrulanabilir sır paylaşımı, pay taahhütleri ve dağıtıcıya ilişkin güven modeli bu sebeple önem taşır. Birden fazla kişi arasında sırrı bölmek otomatik erişim denetimi, anahtar rotasyonu veya olay günlüğü sağlamaz; bunlar ayrıca sistem tasarımıdır.

Ünite 22: Kriptografik Taahhütler ve Sıfır Bilgi İspatları

Sigma protokolü commit-challenge-response animasyonu
Sigma protokolü commit-challenge-response

Kriptografik Taahhüt ve Hash Özeti Ayrımı

Bir taahhüt düzeninde gönderici önce Commit(m;r) ile gizlenmiş bir taahhüt üretir; daha sonra (m,r) değerlerini sunarak Verify(commitment,m,r) işleminden geçer. İdeal düzen hem gizleme (taahhüt mesajı açıklamamalı) hem bağlayıcılık (sonradan başka mesaja açmak zor olmalı) sağlar. Basit Hash(m) değeri düşük entropili bir mesajı sözlükle ortaya çıkarabilir; rastgele r değeri bu yüzden önemlidir. Pedersen tarzı bir yapıda C=g^m h^r biçimi kullanılabilir; güvenliğin hangi grup varsayımına dayandığı ve g,h ilişkisinin kim tarafından bilindiği açık belirtilmelidir.

Etkileşimli Sıfır Bilgi İspatlarının Aşamaları

Sıfır bilgi ispatı üç ayrı özelliği hedefler. Tamlık doğru bir tanığa sahip dürüst ispatlayıcının kabul edilmesini, sağlamlık yanlış önermenin kabul edilmesinin zor olmasını, sıfır bilgi ise doğrulayıcının tanığın kendisini öğrenmemesini ister. Basit Schnorr kimlik ispatında ortak grup ve Y=g^x açık değeri üzerinden ispatlayan rastgele r ile T=g^r gönderir; doğrulayıcı taze c meydan okuması seçer; yanıt z=r+cx mod q olur. Doğrulayıcı g^z ?= T·Y^c eşitliğini sınar. Hesaplamanın doğruluğu cebirden gelir: g^(r+cx)=g^r(g^x)^c. Ancak bu gösterim güvenlik ispatının kendisi değildir; meydan okumanın rastgeleliği, grup koşulları ve tekrar kullanım sınırları ayrıca açıklanmalıdır.

Fiat–Shamir ve bağlam kodlaması

Bazı etkileşimli ispatlar, meydan okumanın c=H(domain||statement||T||context) ile türetilmesiyle etkileşimsiz hale getirilebilir. Bu dönüşüm, hash fonksiyonunun rastgele oracle modeli veya başka açık varsayımlarla değerlendirilmesini gerektirir. Protokol alanı, uygulama adı, oturum ve ifade baytları belirsiz birleştirilirse farklı işlemler aynı ispatı kabul edebilir. Dolayısıyla 'sıfır bilgi kullanılıyor' cümlesi tek başına aktarımın doğru bağlandığını göstermez.

Sıfır Bilgi İspatlarının Kullanım Koşulları

Kimlik öznitelik ispatları, işlem doğrulama ve bazı gizlilik korumalı sistemler sıfır bilgiden yararlanır. Bununla birlikte ZK, mesaj şifrelemenin veya yetkilendirme politikasının yerine geçmez. İspat üretme süresi, doğrulama maliyeti, güvenilir kurulum gereksinimi ve ispat sisteminin desteklediği ifade sınıfı uygulama seçiminde belirleyicidir.

Taahhüt ve Sıfır Bilgi Güvenlik Özellikleri

Taahhüt mekanizması bir mesajı önceden bağlayıp daha sonra açıklama olanağı verir. Hesaplamalı bağlayıcılık, taahhüt verenin aynı değeri iki farklı mesaja geçerli biçimde açmasını zorlaştırır; gizleyicilik ise alıcının açıklamadan önce mesajı öğrenmesini engeller. Bir taahhüt her durumda mükemmel gizleme veya mükemmel bağlayıcılık sunmaz; kullanılan varsayımlar ve rastgeleliğin niteliği belirtilmelidir.

Sıfır bilgi ispatında üç ayrı özellik incelenir: doğru beyanın kabulü (tamlık), yanlış beyanın başarılı biçimde kanıtlanamaması (sağlamlık) ve doğru tanığa ilişkin gizli bilginin ifşa edilmemesi (sıfır bilgi). Bir Sigma protokolünde commit → challenge → response akışı bu rollerle okunur. Fiat–Shamir dönüşümü, etkileşimli meydan okumayı hash üzerinden kurabilir; bunun güvenlik varsayımları ve etki alanı ayrımı protokol modelinden ayrı düşünülemez. ZK kullanmak uygulamanın veritabanı sorgularını veya yetki denetimini kendiliğinden gizlemez.

Taahhüt ve Sıfır Bilgi Sistemlerinde Tehdit Modelleri

Bir taahhüt şeması, göndericinin bir değere bağlanmasını ve daha sonra açabilmesini sağlar; bağlayıcılık ile gizleme özellikleri birbirinden bağımsız değerlendirilir. Sıfır bilgi etkileşiminde doğrulayıcı rastgele bir meydan okuma verir; ispatlayan bir tanığı açıklamadan ilişkinin doğru olduğunu gösteren yanıt üretir. Bu akışın etkinliği, meydan okumanın tazeliği, durum bağlamı ve tekrar oynatma korumasına bağlıdır. Fiat–Shamir dönüşümü bazı etkileşimleri hash tabanlı, etkileşimsiz ispatlara taşıyabilir; ancak güvenlik varsayımları ve alan ayrımı açıkça incelenmelidir. ZK, MPC ve homomorfik şifreleme birbirinin doğrudan yerine konabilen algoritmalar değildir.

Ünite 23: Güvenli Çok Taraflı Hesaplama ve Homomorfik Şifreleme

MPC Tehdit Modeli ve Bilgi Sızıntısı

Güvenli çok taraflı hesaplamada taraflar özel girdileri x₁,...,x_n ile ortak bir f fonksiyonunu hesaplamak ister. İdeal amaç, belirlenen çıktı dışında tarafların girdileri hakkında daha fazla bilgi edinilmemesidir; fakat hangi tarafların işbirliği yapabileceği, kaçının kötü niyetli olduğu ve çevrim içi bağlantı kopmasının nasıl ele alınacağı açık seçilmelidir. Yalnız 'verileri birleştirmeden hesap yapıyoruz' ifadesi güvenlik tanımı için yeterli değildir.

Toplamsal Sır Paylaşımının Hesabı

Bir p modülünde Alice'in gizli x değeri r ve x−r mod p olarak paylaşılabilir. İlk parça r düzgün rastgele seçilirse tek başına x hakkında bilgi vermez. Paylar üzerinde toplama yerel olarak gerçekleştirilebilir: (x₁+x₂) mod p sonucunun payları, ilgili iki payın toplama işleminden doğar. Çarpma içinse düz toplama yeterli değildir; Beaver üçlüleri gibi çevrim dışı hazırlanmış ilişkili rastgelelik ve ek etkileşim gerekebilir. Bu nedenle bir aritmetik devrenin çarpma kapısı sayısı çoğu MPC protokolünün maliyetinde kritik rol oynar.

Homomorfik İşlemlerin Türleri ve Sınırları

Kısmi homomorfik şifreleme seçilmiş bir işlem ailesini korur. Toplamsal homomorfizmde Dec(Enc(a) ⊕ Enc(b))=a+b türünde bir özellik hedeflenir; işaretlenen ⊕ işlemi çoğu zaman ciphertext üzerinde sıradan bit XOR değildir. Biraz homomorfik veya tam homomorfik şifreleme (FHE) daha karmaşık devreler çalıştırabilir; buna karşılık gürültü büyümesi, yeniden ölçekleme, anahtar/şifreli metin şişmesi ve gerektiğinde bootstrapping maliyeti oluşur. CKKS yaklaşık sayısal hesaplamada doğruluk hatasına; BFV/BGV türü şemalar belirli tam sayı/polinom hesaplarına odaklanır. İsimlerin yazılması bu işlem bütçesinin analizinin yerine geçmez.

MPC ve Homomorfik Şifrelemede Sistem Modeli

Kullanıcı girdisi yalnızca işleyen sunucudan mı saklanacak, katılımcıların birbirinden de mi saklanacak? Sonuçlar kime açılacak? Sunucunun kötü niyetli sonuç üretmesi ispatla denetlenecek mi? Verinin giriş biçimi ve çıktıdaki birey bilgisi ayrıca korunacak mı? MPC ve FHE seçimi bu sorulara bağlıdır; anonimleştirme, erişim denetimi ve istatistiksel mahremiyet hedefleriyle ilişki açık kurulmalıdır.

MPC ve Homomorfik Şifrelemenin Hesaplama Maliyeti

MPC'de taraflar kendi girdilerini gizli tutarken ortak bir fonksiyonun çıktısını öğrenmeye çalışır. Güvenlik modeli, taraflardan kaçının gizli anlaşabileceğini, ağın senkron olup olmadığını ve tarafların dürüst-ama-meraklı mı yoksa kötü niyetli mi kabul edildiğini belirtmelidir. Aritmetik devre üzerinden toplama/çarpma adımlarının paylar üzerinde yürütülmesi, gerektiğinde etkileşim ve doğrulama mesajları gerektirir. Çıktının kendisi hassas veri açığa çıkarabileceğinden yalnız ara girdilerin gizlenmesi yeterli politika değildir.

Homomorfik şifreleme tarafında şifreli değerler üzerinde belirli işlemler gerçekleştirilebilir; ancak her şema sınırsız hesaplamayı aynı maliyetle desteklemez. Toplama/çarpma derinliği, hata/noise büyümesi, yeniden ölçekleme veya bootstrapping ve anahtar/şifreli metin boyutları uçtan uca hesaplama bütçesine eklenir. 'Şifreliyken işlemek' özelliği tek başına hizmetin çok kullanıcılı yetki ayrımını, istemci bütünlüğünü veya sorgu gizliliğini bütünüyle çözmez.

İleri Kriptografik Yapılara Genel Bakış

Shamir sır paylaşımı, derece t-1 olan bir polinomun t farklı değerlendirmesinden sırrı geri elde etmeye dayanır; daha az payın bilgi sağlamaması uygun rastgelelik ve cisim varsayımlarıyla ilişkilidir. Eşik imza sistemleri ise yalnız sır parçalamaktan farklı bir etkileşimli protokol gerektirir. Sıfır bilgi ispatı, tanığın kendisini açıklamadan belirli bir ilişkinin doğruluğunu ispatlamayı hedefler; tam güvenlik için doğruluk, sağlamlık ve sıfır bilgi ayrı tanımlanır. Güvenli çok taraflı hesaplama ve homomorfik şifreleme, tarafların ortak hesaplama yaparken girdilerin ifşasını sınırlamaya çalışır; işlem, iletişim ve tehdit modeli maliyetleri göz ardı edilmemelidir.

Ünite 24: Kriptografik Protokol Tasarımı ve Veri Biçimleri

Şifreli Dosya Biçiminin Bayt Düzeyinde Tanımı

Bir dosya şifreleme biçimi için algoritma seçilmeden önce tehdit modeli kurulur: dosyanın içeriği gizlenecek, değiştirilmesi reddedilecek, sürüm tanınacak ve yanlış anahtar açık veri üretmeyecektir. Şema örneğinde imzalı veya doğrulanmış başlık; sürüm, algoritma kimliği, KDF parametreleri, salt, nonce ve gerekli meta veri alanlarını içerir. Başlıkta AEAD'nin AAD alanıyla doğrulanması gereken bilgiler de bulunmalıdır. Girdi parolaysa parola KDF'si, rastgele yüksek entropili anahtarsa farklı bir anahtar türetme akışı kullanılır. Parola değerinin doğrudan AES anahtarı olduğu varsayılmaz.

Önce anahtar elde edilir; her kayıt için nonce tahsis edilir; başlığın AAD gösterimi tek bir kanonik byte dizisine çevrilir; açık veri AEAD ile mühürlenir; çıktı başlık, ciphertext ve etiket alanlarıyla saklanır. Açma işleminde boyutlar ve sürüm sınanır, yanlış parametreler erken reddedilir, AEAD etiketi doğrulanır ve ancak sonra açık veri tüketiciye aktarılır. Hatalı etikette geçici dosya silinir ve işlemin tamamlanmış gibi kaydedilmesine izin verilmez.

Bölümlenmiş Kayıtların Doğrulanması

Tek bir AEAD çağrısıyla bütün büyük dosyayı belleğe almak zorunlu değildir. Parçalara ayrılmış bir biçimde her parçanın indeksi, son parça işareti ve sürümü AAD'ye bağlanabilir; nonce, parçalar ve oturum anahtarı arasında benzersiz türetilmelidir. Son parça tanıtımı olmazsa saldırgan son parçaları kesip geçerli bir önek sunabilir. Parçaların yeniden sıralanması veya farklı dosyalar arasında değiştirilmesi de kayıt kimliğiyle önlenmelidir. Parçalı sistemin güvenlik sözleşmesi standart AEAD'nin üstünde yeni bir protokol sözleşmesidir.

Protokol Sürümleri ve Algoritma Geçişi

Kayıt biçimine algoritma kimliği koymak, saldırganın bu alanı isteğe göre düşürmesini engellemiyorsa otomatik çeviklik sağlamaz. Seçilen sürüm AAD'ye veya transcript'e bağlanmalı; uygulama kabul edilen algoritmaları ayrı bir politika üzerinden denetlemelidir. Eski kayıtların güvenle yeniden şifrelenmesi iki aşamalı işlem olarak ele alınır: eski kayıt eksiksiz doğrulanır, yeni anahtarla yeni kayıt üretilir, sonuç doğrulanır ve atomik geçiş yapılır. Eski dosyayı doğrulamadan silmek veri kaybı riski taşır.

Protokol Kabul Testleri ve Tekrarlanabilirlik

Yayımlanacak algoritma açıklaması için kabul testleri doğru anahtar, yanlış anahtar, yanlış AAD, değişmiş etiket, kesilmiş son blok, eksik kayıt, sıra değişikliği ve aynı nonce'ın yanlış kullanımına ilişkin testleri kapsamalıdır. Son senaryo üretimde tekrar kullanımı normalleştirmek için değil, nonce politikasının bunu engellediğini test etmek içindir. Bağımsız standart test vektörü bulunan algoritmalarda bu vektörler ayrıca kullanılmalıdır.

Veri Biçimi Ayrıştırma ve Güven Sınırları

Kriptografik bir mesaj biçiminde önce dış çerçevenin uzunluk ve sürüm alanları okunur; ancak bu alanlar saldırgan denetiminde olabileceğinden ayrıştırıcı uzunluk taşmalarını, yinelemeleri ve beklenmeyen algoritma belirteçlerini reddetmelidir. Kullanılacak algoritma pazarlığı yapılıyorsa hangi protokol sürümünde hangi algoritmaların geçerli olduğu açık allowlist ile belirlenir. AEAD doğrulaması başarılı olsa bile uygulama içeriğinin şema geçerliliği ayrıca sınanır; şifreleme/etiket denetimi tür karmaşasını veya yetki yükseltmesini önleyen genel amaçlı ayrıştırıcı değildir.

PKCS 7 ve Kriptografik İleti Sözdizimi çalışması, imza ve sertifika taşıyan CMS kapsayıcılarında algoritma işlemi ile mesajın sözdizimsel temsilini ayıran ilgili bir teknik okumadır. Gerçek uygulamada SignedData, EnvelopedData ve bunların BER/DER kodlamaları farklı işlem katmanları oluşturur. Şifreli içerik ile imzalı içeriğin kapsama sınırı değiştiğinde doğrulanmış gibi görünen fakat yanlış yorumlanan veriler oluşabilir. Doğrulama sürecinde önce veri biçimi ve imza kapsamı belirlenir, ardından ilgili kriptografik doğrulama uygulanır.

Ünite 25: Kriptografik Doğrulama, Deney Tasarımı ve Performans Analizi

Test Vektörleri, Özellik Testleri ve Biçimsel İspatlar

Kriptolojik bir araştırma üç farklı kanıt türünü karıştırmamalıdır. Bilinen cevap testi, doğru anahtar ve açık veri için algoritmanın standart ciphertext veya hash değerini üretmesini sınar. Özellik testi, bütün seçilmiş girdilerde decrypt(encrypt(m))=m gibi bir değişmezin çalıştığını örnekler üzerinden arar. Biçimsel güvenlik ispatı ise saldırgan modeli ve varsayımları açıkça tanımlayan teorik bir iddiadır. Bir algoritma binlerce örnek testinden geçip yine de zayıf anahtar üretimi, nonce tekrarı veya yan kanal nedeniyle tehlikeli olabilir.

Standart Test Vektörleriyle Doğrulama

AES-128 tek blok vektöründe key=000102030405060708090a0b0c0d0e0f, pt=00112233445566778899aabbccddeeff, beklenen ciphertext 69c4e0d86a7b0430d8cdb78070b4c55a kullanılır. SHA-256 için boş dizginin özeti ve RSA için modüler üs örnekleri ayrı katmanlarda sınanır. ECC testleri yalnız skaler çarpımın matematiksel sonucunu değil; geçersiz anahtar ve tümü sıfır ortak sır gibi hata durumlarını da denetlemelidir. Kütüphane arayüzleri sürüme bağlı olduğu için bağımlılık sürümü raporlanmalıdır.

Kriptografik Performans Deneyinin Düzeni

AES-GCM ile ChaCha20-Poly1305 karşılaştırılırken anahtar boyu, kayıt uzunluğu, işlemci donanım hızlandırması, kütüphane sürümü, iş parçacığı sayısı, bellek tamponu, sıcak/soğuk çalışma ve ölçüm döngüsü sabitlenir. Örneğin 1 KiB, 64 KiB ve 16 MiB kayıtlar farklı darboğazlar gösterebilir. İş hacmi throughput=processed_bytes/elapsed_seconds, kayıt gecikmesi ise çağrı başına süredir; ikisi aynı metrik değildir. Güvenlik düzeyleri eşdeğer görülmeden salt hız karşılaştırması yapılmamalıdır.

RSA-OAEP şifreleme/çözme ile RSA-PSS imzalama/doğrulama dört ayrı işlem olarak ölçülür. ML-KEM kapsülleme ve çözme işlemleri de RSA'nın büyük metin şifreleme süresiyle doğrudan kıyaslanmaz; benzer protokol görevi ve çıktı boyutu dikkate alınır. Her dağılımın ortanca, yüzde 95 gecikmesi, sapması ve bellek tüketimi ayrı raporlanmalıdır.

Tehdit Modeli ve Deney Sonuçları Arasında İzlenebilirlik

Rapor önce veri türünü, korunma süresini, saldırgan erişimini ve seçilen güvenlik iddiasını belirtir. Ardından algoritmanın izin verdiği anahtar/nonce politikası, standart test vektörleri, olumsuz testler, gözlenen kaynak maliyetleri ve kalan riskler tek çizgide ilişkilendirilir. Bulguyu desteklemeyen gösterişli grafikler veya gerçekte yürütülmemiş deney sayılarını kullanmak akademik güvenilirliği zedeler. Bu derste kod ve denklem birer doğrulama aracı olarak verilir; sonuçlar kaynaklı olmayan başarı iddialarına dönüştürülmez.

İşlevsel Doğruluk ve Kriptografik Güvence Ayrımı

Kriptografik bir gerçekleştirim önce algoritmanın standart test vektörlerinde doğru çalıştığını, ardından geçersiz girdileri doğru reddettiğini göstermelidir. Kapsam AES-128/192/256 ise üç anahtar boyu ayrı sınanır; RSA-OAEP için yanlış etiket veya anahtar, PSS için değiştirilmiş mesaj, AEAD için bozulmuş etiket ve AAD ayrı olumsuz testlerdir. Performans kıyaslamasında bytes/s tek başına yeterli değildir: anahtar hazırlama süresi, mesaj boyu dağılımı, nonce oluşturma, veri kopyalama, bellek ayırma, şifreleme ve doğrulama süresi ayrı ayrı kaydedilmelidir.

Küçük AES çekirdeği ile optimize kütüphane karşılaştırmasında aynı işlem gereksinimleri sağlanmalıdır. Yalnız çıplak AES bloğu hesaplayan bir döngüyü AEAD doğrulaması, nonce yönetimi ve I/O yapan servisle karşılaştırmak eşdeğer bir deney değildir. Uygulama geçmişine dayalı somut kodun Lightweight AES-128 sayfasında açık kaynak ve lisans bağlantılarıyla bulunması ölçülebilir ve yeniden incelenebilir bir dayanak sağlar; sonuçlar bu ders metninde ölçülmüş gibi varsayılmaz. Kaynak kodun kökeni ve kendi yapılan değişikliklerin kapsamı da ayrılmalıdır.

Kriptografik Değerlendirme Deneyinin Tasarımı

Bir algoritma karşılaştırması için önce güvenlik hedefi, tehdit modeli, anahtar boyu, işlem yoğunluğu ve veri boyu sabitlenir. Kurulum zamanı, şifreleme/çözme veya imzalama/doğrulama gecikmesi, bellek, çıktı boyu ve hata davranışı ayrı raporlanır. Soğuk/sıcak başlatma, donanım hızlandırması ve kitaplık sürümü belgelenir; tek çalıştırma ortalaması genel hız üstünlüğü sayılmaz. Başarılı fonksiyon testi, güvenlik ispatı yerine kullanılmaz. Bir kriptografik geçişte en iyi sonuç 'en yeni algoritmayı seçmek' değil, sistemde hangi riski hangi maliyetle azalttığını tekrarlanabilir biçimde gösterebilmektir.

Kaynakça

  • Jonathan Katz ve Yehuda Lindell. Introduction to Modern Cryptography, 3. baskı. CRC Press, 2025.
  • Çetin Kaya Koç (ed.). Cryptographic Engineering. Springer, 2009.
  • Alan G. Konheim. Computer Security and Cryptography. Wiley, 2007.
  • Helen Fouché Gaines. Cryptanalysis: A Study of Ciphers and Their Solution (özgün klasik çalışma; kullanılan baskının yayın bilgisi ayrıca doğrulanmalıdır).
  • Claude E. Shannon. “Communication Theory of Secrecy Systems.” Bell System Technical Journal, 1949.
  • Whitfield Diffie ve Martin E. Hellman. “New Directions in Cryptography.” IEEE Transactions on Information Theory, 22(6), 1976. https://doi.org/10.1109/TIT.1976.1055638
  • Ronald L. Rivest, Adi Shamir ve Leonard Adleman. “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems.” Communications of the ACM, 21(2), 1978. https://doi.org/10.1145/359340.359342
  • NIST. FIPS 197: Advanced Encryption Standard (AES), 2001; 2023 editoryal güncelleme. https://csrc.nist.gov/pubs/fips/197/final
  • NIST. SP 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, 2007. https://csrc.nist.gov/pubs/sp/800/38/d/final
  • NIST. FIPS 180-4: Secure Hash Standard (SHS), 2015. https://csrc.nist.gov/pubs/fips/180/4/upd1/final
  • NIST. FIPS 202: SHA-3 Standard, 2015. https://csrc.nist.gov/pubs/fips/202/final
  • NIST. SP 800-232: Ascon-Based Lightweight Cryptography Standards for Constrained Devices, 2025. https://csrc.nist.gov/pubs/sp/800/232/final
  • NIST. FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard, 2024. https://csrc.nist.gov/pubs/fips/203/final
  • NIST. FIPS 204: Module-Lattice-Based Digital Signature Standard, 2024. https://csrc.nist.gov/pubs/fips/204/final
  • NIST. FIPS 205: Stateless Hash-Based Digital Signature Standard, 2024. https://csrc.nist.gov/pubs/fips/205/final
  • IETF. RFC 2104, HMAC: Keyed-Hashing for Message Authentication, 1997. https://www.rfc-editor.org/info/rfc2104
  • IETF. RFC 5869, HMAC-based Extract-and-Expand Key Derivation Function (HKDF), 2010. https://www.rfc-editor.org/info/rfc5869
  • IETF. RFC 7748, Elliptic Curves for Security, 2016. https://www.rfc-editor.org/info/rfc7748
  • IETF. RFC 8017, PKCS #1: RSA Cryptography Specifications Version 2.2, 2016. https://www.rfc-editor.org/info/rfc8017
  • IETF. RFC 8032, Edwards-Curve Digital Signature Algorithm (EdDSA), 2017. https://www.rfc-editor.org/info/rfc8032
  • IETF. RFC 8439, ChaCha20 and Poly1305 for IETF Protocols, 2018. https://www.rfc-editor.org/info/rfc8439
  • IETF. RFC 9106, Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications, 2021. https://www.rfc-editor.org/info/rfc9106
  • IETF. RFC 9180, Hybrid Public Key Encryption, 2022. https://www.rfc-editor.org/info/rfc9180
  • IETF. RFC 9846, The Transport Layer Security (TLS) Protocol Version 1.3, 2026. https://www.rfc-editor.org/info/rfc9846
  • Adi Shamir. “How to Share a Secret.” Communications of the ACM, 22(11), 1979. https://doi.org/10.1145/359168.359176
  • Chandan Karfa ve diğerleri (ed.). Security, Privacy, and Applied Cryptography Engineering (SPACE araştırma bildirileri). Springer, 2026.
  • Kangkook Jee ve Aniket Kate (ed.). Applied Cryptography and Network Security (ACNS araştırma bildirileri). Springer, 2026.
İçindekiler
Bu sayfanın QR kodu