Simetrik ve asimetrik şifreleme
- Simetrik şifreleme tek anahtarla hızlı çalışır, asimetrik şifreleme ise anahtar çiftiyle taşıma ve kimlik sorununu çözer.
- AES çalışma modlarını, anahtar boylarını ve anahtarın nerede saklanacağını örneklerle görürsün.
- HTTPS gibi gerçek sistemler iki aileyi hibrit biçimde birleştirir.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Önceki derste şifrelemenin anahtarla geri döndüğünü gördün. Şimdi yeni soru: kaç anahtar? Şifreleme iki aileye ayrılır ve ayrımı anahtar sayısı belirler.
Tek anahtarla çalışan aileye simetrik, anahtar çiftiyle çalışan aileye asimetrik denir. Bu ayrım hızı, anahtar dağıtımını ve algoritma seçimini doğrudan etkiler. Altay Kargo'nun mobil uygulaması iki aileyi her gün birlikte kullanır.
Müşteri bağlandığında asimetrik kriptografi sunucunun kimliğini kanıtlar, gönderi bilgileri ise simetrik şifreyle akar. Bu derste iki ailenin nasıl çalıştığını, en sık nerede hata yapıldığını ve anahtarı nasıl koruyacağını öğrenirsin.
Simetrik aile: AES ve çalışma modları
Simetrik ailede aynı anahtar veriyi hem kilitler hem açar. En yaygın örnek AES'tir. NIST'in FIPS 197 standardı AES'i üç anahtar boyuyla tanımlar: 128, 192 ve 256 bit. Algoritma veriyi 128 bitlik bloklar hâlinde işler ve her bloğu anahtar boyuna göre 10, 12 ya da 14 tur karıştırır.
Güncel işlemcilerin çoğunda AES için özel donanım komutları bulunur, bu yüzden gigabaytlarca veriyi saniyeler içinde şifrelersin. Disk şifreleme, veritabanı şifreleme ve TLS'in veri kısmı bu aileye dayanır. AES'in yanında ChaCha20 da yaygındır ve özel donanımı olmayan cihazlarda hızlı çalışır.
AES'i tek başına kullanmazsın, yanına çalışma modu seçersin. Mod, blokların birbirine nasıl bağlanacağını belirler. ECB modu her bloğu ayrı şifreler. Aynı düz bloğu her seferinde aynı şifreli bloğa çevirir ve verideki deseni dışarı sızdırır.
Bilinen örnekte ECB ile şifrelenen bir penguen resmi, şifreli hâlinde de penguen olarak seçilir. CBC modu her bloğu öncekiyle karıştırır ve tahmin edilemez bir başlangıç vektörü (IV) ister, ama değişikliği tek başına yakalamaz.
GCM modu hem şifreler hem de 16 baytlık kimlik doğrulama etiketi (tag) üretir. Biri şifreli veriyi yolda değiştirirse etiket tutmaz ve çözme işlemi hata verir. OWASP kimlik doğrulamalı modları önerir, ECB'den uzak durmanı söyler.
düz bloklar [ODEME_ONAYLANDI_] [ODEME_ONAYLANDI_] [TUTAR_500_TL____]
ECB [9f3a77c1...] [9f3a77c1...] [c71e0b42...]
aynı düz blok -> aynı şifreli blok, desen sızar
GCM [4be0d915...] [d29c6a08...] [07aa3e5f...]
+ 16 baytlık etiket, tek bit değişirse çözme reddedilirŞemadaki ilk iki düz blok aynı metni taşıyor. ECB satırında şifreli bloklar da aynı çıkıyor. Trafiği izleyen biri içeriği okuyamasa bile aynı mesajın tekrarlandığını görür ve sayar.
GCM satırında aynı düz bloklar farklı şifreli bloklara dönüşüyor, çünkü GCM her bloğu bir sayaçla karıştırır. GCM'in tek şartı var: aynı anahtarla aynı nonce değeri yalnız bir kez kullanılır. NIST SP 800-38D bu tekrarı yasaklar.
Nonce tekrarlanırsa saldırgan iki düz metnin farkını çıkarır ve sahte etiket üretebilir. Komut satırında da bir tuzak bekler: openssl enc aracı GCM gibi kimlik doğrulamalı modları desteklemez. Uygulamada AES-GCM'i olgun bir kriptografi kütüphanesiyle çağırırsın.
Etkinlik 1 / 7
AES-256-GCM kullanan sistemde GCM modu şifrelemeye ek olarak ne katar?
Şimdi aynı kuralı bir kod parçasında ara. Altay Kargo'nun gönderi servisi müşteri adreslerini AES-GCM ile şifreliyor. Anahtar koda gömülmemiş, çalışma anında ortam değişkeninden okunuyor.
Algoritma ve mod da doğru seçilmiş. Yine de bir satır, GCM'in tek şartını çiğniyor ve bütün adres kayıtlarını riske atıyor. Nonce gizli bir değer değildir, şifreli verinin yanında açıkça saklanır; tek şartı aynı anahtarla tekrar etmemesidir. Her satırı bu kurala göre oku ve tekrar eden değeri bul.
Etkinlik 2 / 7
Adres şifreleyen işlevde GCM'in nonce kuralını çiğneyen satırı seç.
Asimetrik aile ve anahtar çifti
Simetrik ailenin zayıf yanı anahtar paylaşımıdır. Başka şehirdeki sunucuya anahtarı nasıl ulaştıracaksın? Anahtarı aynı kanaldan yollarsan, kanalı dinleyen kişi anahtarı da kapar ve bütün trafiği okur. Sorun ölçekle büyür.
Her çift ayrı bir anahtar paylaşırsa 10 kişilik ekip 45, 100 kişilik ekip 4950 anahtar yönetir. Bu anahtarları tek tek elden teslim etmek de mümkün değildir. Asimetrik şifreleme tam bu sorunu çözmek için doğdu. 1970'lerde ortaya çıkan açık anahtar fikri, iki tarafın önceden hiç buluşmadan güvenli iletişim kurmasının yolunu açtı.
Asimetrik ailede iki anahtar birlikte üretilir ve matematiksel olarak eşlidir. Açık anahtarı (public key) herkese dağıtırsın. Özel anahtarı (private key) kimseyle paylaşmazsın. Şifrelemede yön şöyledir: gönderen, alıcının açık anahtarıyla kilitler.
Alıcı kendi özel anahtarıyla açar. Herkes sana mesaj kilitleyebilir, yalnız sen açarsın. Açık anahtarı bilmek özel anahtarı hesaplamaya yetmez; güvenlik bu tek yönlü zorluğa dayanır. Böylece 100 kişilik ekipte herkes yalnız kendi anahtar çiftini korur ve açık anahtarını ortak bir rehbere koyar.
SİMETRİK AES-256-GCM K ile kilitle -> K ile aç (hızlı, aynı sır iki tarafta) ASİMETRİK RSA alıcının açık anahtarıyla kilitle alıcının özel anahtarıyla aç (yavaş, sır tek kişide) İMZA (ters yön) ECDSA, RSA gönderenin özel anahtarıyla imzala gönderenin açık anahtarıyla doğrula
İmzada yön tersine döner. Sen özel anahtarınla imzalarsın, karşı taraf açık anahtarınla doğrular. Uygulamada büyük dosyayı değil, dosyanın özetini imzalarsın. İmza iki şeyi kanıtlar: mesaj senden geldi ve yolda değişmedi.
Yazılım güncellemeleri, mobil uygulama paketleri ve TLS sertifikaları bu yolla korunur. Yönü karıştıran kod ağır hata yapar. Gizli mesajı kendi özel anahtarınla kilitlersen, açık anahtarına sahip herkes onu açar. İmzanın varlığına bakıp geçerliliğini sınamayan kod da aynı derecede tehlikelidir; sahte imzalı paket böyle bir kontrolden rahatça geçer.
Etkinlik 3 / 7
Doğru mu, yanlış mı?
Açık anahtarla şifrelenen bir mesajı, çiftin özel anahtarı açar.
Asimetrik ailenin üyeleri aynı işi yapmaz. RSA hem şifreleme hem imza için kullanılır; şifrelemede OAEP, imzada PSS dolgusuyla çalışır. ECDSA ve Ed25519 yalnız imza atar. X25519 ise anahtar anlaşması yapar: iki taraf açık paylarını değişir ve ortak bir sırra ulaşır.
RFC 7748 bu eğriyi tanımlar. Kabloyu dinleyen kişi bu sırrı hesaplayamaz. Bir sunucuya SSH ile bağlanmak için anahtar üretirken de bu aileden seçim yaparsın. Kütüphane seçiminde kural tektir: algoritmayı kendin yazma, olgun kütüphaneyi çağır.
$ ssh-keygen -t ed25519 -C "[email protected]" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/ege/.ssh/id_ed25519): Enter passphrase for "/home/ege/.ssh/id_ed25519" (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ege/.ssh/id_ed25519 Your public key has been saved in /home/ege/.ssh/id_ed25519.pub The key fingerprint is: SHA256:Vga7w8qvp+socy8Ll1HRChnJV8ho3PNBhyPYZzbYVC4 [email protected] $ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJtKNUtiDoGEkdbilwfbKXoH2brrd16TKDEAQTOX8nsG [email protected]
Çıktıyı satır satır oku. -t ed25519 algoritmayı seçer, -C ise anahtara bir açıklama ekler; çoğunlukla e-posta adresi yazılır. Komut iki dosya üretir. Uzantısız id_ed25519 özel anahtardır ve makineden hiç çıkmaz.
Parola sorusunu boş geçmezsin, çünkü dosya çalınırsa parola özel anahtarı ikinci bir kilitle korur. .pub uzantılı dosya açık anahtardır ve bağlanacağın sunucudaki authorized_keys listesine eklenir. Parmak izi satırı açık anahtarın SHA-256 özetidir. Bir anahtarı doğrularken uzun açık anahtar yerine bu kısa değeri karşılaştırırsın.
Etkinlik 4 / 7
Algoritmayı ana işiyle eşleştir.
Hibrit şifreleme ve rastgele anahtar
Asimetrik işlemler simetrik olanlardan çok daha yavaştır. Gigabaytlık videoyu RSA ile şifrelemek mantıklı değildir; RSA zaten tek seferde anahtar boyundan kısa bir veri şifreler. Gerçek sistemler bu yüzden iki aileyi birleştirir ve buna hibrit şifreleme denir.
Önce asimetrik yöntemle rastgele bir simetrik anahtar üzerinde anlaşırsın. Sonra asıl veriyi bu anahtarla, AES ile şifrelersin. HTTPS de böyle çalışır: sertifika ve anahtar anlaşması asimetrik, sayfanın gövdesi AES ile akar. Şifreli e-posta ve dosya şifreleme araçları da aynı deseni izler.
Hibrit akışı bir dosya gönderiminde adım adım izle. Gönderen önce 32 baytlık rastgele bir oturum anahtarı üretir. Dosyayı bu anahtarla AES-GCM ile şifreler. Ardından oturum anahtarını alıcının açık anahtarıyla şifreler; bu işleme anahtar sarma denir.
Şifreli dosyayı ve sarılmış anahtarı birlikte yollar. Alıcı önce özel anahtarıyla oturum anahtarını açar, sonra o anahtarla dosyayı çözer. Gönderen kimliğini de kanıtlamak isterse dosyanın özetini kendi özel anahtarıyla imzalar. Her aile en iyi yaptığı işi üstlenir: asimetrik aile anahtarı ve kimliği, simetrik aile veriyi taşır.
Simetrik anahtarı nereden alırsın? Kafandan uydurmazsın, kriptografik açıdan güvenli bir rastgele sayı üretecinden alırsın. Programlama dillerindeki sıradan rastgele işlevler, örneğin oyunda zar atmak için kullanılanlar, tahmin edilebilir sayılar üretir ve anahtar için uygun değildir.
Python'da secrets modülü, Linux'ta /dev/urandom aygıtı bu iş için vardır. AES-256 tam 32 baytlık (256 bit) anahtar ister. Komut satırında OpenSSL'in rand alt komutu bu işi görür: -hex bayrağı çıktıyı onaltılık yazar, sondaki sayı bayt adedini verir.
Etkinlik 5 / 7
AES-256 için 32 baytlık rastgele anahtar üret ve onaltılık yazdır.
Anahtar boyu ve kuantum sonrası
Anahtar boyu aileye göre değişir, çünkü iki aile farklı matematik problemlerine yaslanır. RSA büyük bir sayıyı çarpanlarına ayırmanın zorluğuna dayanır. Eliptik eğri kriptografisi (ECC) ise eğri üzerindeki ayrık logaritma probleminin zorluğuna dayanır.
Simetrik anahtarda bilinen en iyi saldırı çoğu zaman bütün anahtarları tek tek denemektir. Bu farklar yüzünden aynı güç için çok farklı boylar gerekir. Güç bit cinsinden ölçülür. 128 bitlik güç, saldırganın yaklaşık 2 üzeri 128 işlem yapması gerektiği anlamına gelir.
Güç (bit) Simetrik RSA ECC 112 3TDEA 2048 bit 224-255 bit 128 AES-128 3072 bit 256-383 bit 192 AES-192 7680 bit 384-511 bit 256 AES-256 15360 bit 512 bit ve üstü
Tabloyu satır satır oku. 128 bitlik güç için AES-128, 3072 bit RSA ya da 256 bit ECC anahtarı gerekir. 2048 bit RSA 112 bitlik güce denk gelir ve bugün alt sınır sayılır. Güç arttıkça RSA anahtarı hızla büyür, ECC anahtarı ise yavaş büyür.
Kısa anahtar hız, bellek ve bant genişliği kazandırır. Mobil cihazlar ve yoğun sunucular bu yüzden ECC'yi tercih eder. İlk satırdaki 3TDEA, yani üçlü DES, artık yeni sistemlerde yer almaz. Tablo yalnız bugünkü bilgisayarlara karşı geçerlidir.
Kuantum bilgisayarlar bu tabloyu sarsabilir. Shor algoritması, yeterince büyük bir kuantum bilgisayarda hem RSA'yı hem de ECC'yi kırar. Böyle bir makine bugün yok. Ama saldırgan şifreli trafiği şimdiden kaydedip ileride çözmeyi bekleyebilir; bu tehdide şimdi kaydet, sonra çöz denir.
NIST 2024'te kuantum sonrası ilk standartlarını yayımladı. FIPS 203, anahtar paylaşımı için ML-KEM'i tanımlar. Güncel tarayıcılar ve OpenSSL'in yeni sürümleri, TLS'te X25519 ile ML-KEM-768'i birleştiren hibrit bir anahtar anlaşması kullanmaya başladı. Simetrik tarafta AES-256 kuantum çağında da yeterli kabul edilir.
Etkinlik 6 / 7
Mobil uygulaman 128 bitlik güç istiyor ve bant genişliği dar. Hangi anahtar iki koşulu birlikte karşılar?
Anahtar yönetimi ve sahadaki hatalar
Anahtar yönetimi, algoritma seçiminden daha çok hata üretir. En sık görülen hata anahtarı kaynak koda gömmek ve sürüm kontrolüne eklemektir. Depo bir gün herkese açılırsa ya da bir geliştiricinin bilgisayarı ele geçirilirse anahtar da gider.
Herkese açık depoları tarayan otomatik araçlar, yeni eklenen anahtarları çoğu zaman dakikalar içinde bulur. Bu yüzden anahtarı koddan çıkarıp bir sır yöneticisine, bulut anahtar kasasına (KMS) ya da donanım güvenlik modülüne (HSM) taşırsın. Ortam değişkeni koda gömmekten iyidir, ama hata ayıklama sayfalarında ya da süreç bilgisinde açığa çıkabilir; OWASP anahtarı orada da tutmamanı önerir. Uygulama anahtara çalışma anında, kendi kimliğiyle erişir ve her erişim kayda geçer.
Tespit tarafında da işin var. Sürüm kontrolüne gönderilen her değişikliği bir sır tarayıcısıyla denetlersin. Araç anahtar ve parola desenlerini yakalar ve gönderimi durdurur. Bir anahtarın sızdığından şüphelenirsen önce onu döndürürsün: yeni anahtarı üretir, sistemleri ona geçirir, eskisini iptal edersin.
Anahtarı depodan yalnız silmek yetmez, çünkü depo geçmişinde ve yedeklerde hâlâ durur. Sızma olmasa bile anahtarı belirlediğin sürenin sonunda döndürürsün. NIST SP 800-57 her anahtar için bir kullanım süresi belirlemeni önerir ve bu süreye kriptoperiyot der.
Derinleş:Zarf şifreleme ve anahtar kasaları
Bulut anahtar kasaları çoğu zaman zarf şifreleme (envelope encryption) denen bir desen kullanır. Kasada bir ana anahtar durur ve kasadan hiç çıkmaz. Uygulama her dosya ya da kayıt için yeni bir veri anahtarı üretir ve veriyi onunla şifreler. Sonra veri anahtarını kasaya gönderir.
Kasa onu ana anahtarla sarar ve geri verir. Uygulama sarılmış veri anahtarını şifreli verinin yanına yazar, düz hâlini bellekten siler. Çözmek gerektiğinde sarılmış anahtarı kasaya yollar ve açtırır. Bu desenin üç kazancı var.
Büyük veri kasaya hiç gitmez, bu yüzden işlem hızlıdır. Ana anahtarı döndürmek için yalnız küçük veri anahtarlarını yeniden sararsın. Her açma isteği kasanın denetim kaydına düşer, böylece kimin hangi veriyi ne zaman açtığını izlersin.
Aynı mantığı başka bir üründe uygula. Mesajlaşma uygulaması 2 GB'lık videoyu iki telefon arasında uçtan uca şifreli yollamak istiyor. Aradaki sunucu yalnız taşıyıcıdır ve videoyu okuyamamalıdır. Alıcı, videonun gerçekten arkadaşından geldiğini de bilmeli.
Videonun her baytını asimetrik algoritmayla şifrelemeye kalkarsan gönderim dakikalar yerine saatler sürer. Hibrit modeli hatırla ve iki ailenin işlerini ayır. Hangisi hızlıdır ve büyük veriyi taşır? Hangisi anahtar ve kimlik sorununu çözer?
Etkinlik 7 / 7
Uçtan uca şifreli video gönderiminde asimetrik kriptografi hangi işleri üstlenir?
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.
- Etkinlik 1· Simetrik aile: AES ve çalışma modları
- Etkinlik 2· Simetrik aile: AES ve çalışma modları
- Etkinlik 3· Asimetrik aile ve anahtar çifti
- Etkinlik 4· Asimetrik aile ve anahtar çifti
- Etkinlik 5· Hibrit şifreleme ve rastgele anahtar
- Etkinlik 6· Anahtar boyu ve kuantum sonrası
- Etkinlik 7· Anahtar yönetimi ve sahadaki hatalar