Cryptology Academy · Ders

Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme

Python ve Node'da secrets, os.urandom ve güvenli sarmalayıcıları kullanın.

4. ders / 413 adım

Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.

Üç Kategori

Üç farklı kriptografik değerin güvenli biçimde üretilmesi gerekir: (1) Anahtarlar — uzun ömürlüdür; öngörülemez ve gizli olmalıdır. (2) IV'ler — ileti başına kullanılır, herkese açık olabilir ancak öngörülemez (CBC) veya benzersiz (GCM) olmalıdır. (3) Tek kullanımlık sayılar — kullanım başına benzersiz olmalıdır; rastgele olmaları gerekebilir veya gerekmeyebilir.

Simetrik Anahtarlar

AES-128: secrets.token_bytes(16). AES-256: secrets.token_bytes(32). ChaCha20: secrets.token_bytes(32). KDF olmadan parolalardan asla anahtar türetmeyin (PBKDF2/Argon2). Farklı algoritmalar veya amaçlar arasında anahtarları asla yeniden kullanmayın.

Asimetrik Anahtar Üretimi

from cryptography.hazmat.primitives.asymmetric import ec, rsa rsa_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) ec_key = ec.generate_private_key(ec.SECP256R1()) # The library handles entropy sourcing internally

AES-CBC için IV

AES-CBC, ileti başına eşit dağılımlı rastgele 16 baytlık bir IV gerektirir. Aynı anahtarla bir IV'yi asla yeniden kullanmayın. CBC kipinde asla sayaç kullanmayın. Üretim: iv = os.urandom(16). IV'yi şifreli metnin başına ekleyin — gizli olması gerekmez, yalnızca öngörülemez olması gerekir.

AES-GCM için Tek Kullanımlık Sayı

AES-GCM, her (anahtar, ileti) çifti için benzersiz bir 96 bitlik tek kullanımlık sayı gerektirir. Tek kullanımlık sayının yeniden kullanılması GCM'yi felaket düzeyinde bozar: saldırgan kimlik doğrulama anahtarını ele geçirir ve iletilerde sahtecilik yapabilir. Ya rastgele 12 baytlık bir tek kullanımlık sayı (2^32 iletide doğum günü sınırına ulaşılır) ya da bir sayaç kullanın.

Sayaç Tabanlı Tek Kullanımlık Sayılar

Tek anahtarla yüksek hacimli şifreleme için: her anahtar başına kalıcı bir sayaç tutun. nonce = counter.to_bytes(12, "big"). Her şifrelemeden sonra sayacı artırın. Sayacı kalıcı depolamaya kaydedin — yeniden başlatma sırasında sıfırlanması yeniden kullanıma neden olur.

Tek Kullanımlık Sayı Yanlış Kullanımına Dayanıklı AEAD'ler

AES-GCM-SIV ve Deoxys-II, tek kullanımlık sayıların yanlış kullanımına dayanıklıdır: tek kullanımlık sayının yeniden kullanılması güvenliği deterministik şifreleme düzeyine düşürür (kimlik doğrulama anahtarı sızmaz). Tek kullanımlık sayıların benzersizliğini garanti etmenin zor olduğu durumlarda (dağıtık sistemler, çökme ve yeniden başlatma senaryoları) önerilir.

Anahtar Türetme için HKDF

Ham anahtar malzemesini birden fazla amaç için doğrudan kullanmayın. Amaca özgü anahtarlar türetin: from cryptography.hazmat.primitives.kdf.hkdf import HKDF. hkdf = HKDF(SHA256(), 32, salt, info=b"enc_key"). key = hkdf.derive(master_key). Her amaç için farklı info değerleri kullanın.

Oturum Anahtarları

Oturuma özgü anahtarları, paylaşılan bir sırdan (örneğin ECDH çıktısından) HKDF kullanarak türetin. TLS 1.3, el sıkışma ve uygulama verileri için ayrı istemci ve sunucu anahtarları türetir. Oturum anahtarları, ele geçirmenin etkisini sınırlar: bir oturum anahtarının öğrenilmesi diğerleri hakkında hiçbir bilgi vermez.

Anahtar Sarmalama

Bir anahtarı güvenli biçimde depolamak için AES-KW (RFC 3394) veya AES-GCM kullanarak onu bir Anahtar Şifreleme Anahtarı (KEK) ile sarın. Sarılmış anahtar bir veritabanında depolanabilir veya iletilebilir. KEK, bir HSM'de ya da donanım destekli bir anahtar deposunda (Android Keystore, Apple Secure Enclave) saklanır.

Denetim Kontrol Listesi

Dağıtımdan önce kontrol edin: (1) tüm anahtarlar os.urandom/secrets kullanılarak üretiliyor. (2) Sabit kodlanmış anahtar veya IV yok. (3) IV'ler aynı anahtarla asla yeniden kullanılmıyor. (4) GCM tek kullanımlık sayıları ileti başına benzersiz. (5) Anahtar döndürme takvimi tanımlı. (6) Anahtar türetmede farklı info dizeleriyle HKDF kullanılıyor.

Hızlı Kontrol

AES-GCM'de bir tek kullanımlık sayının yeniden kullanılmasının sonucu nedir?

Özet

Anahtarların gerçekten rastgele üretilmesi gerekir; CBC IV'leri rastgelelik gerektirir; GCM tek kullanımlık sayıları ise benzersizlik gerektirir. os.urandom/secrets kullanın, HKDF ile türetin ve KEK'lerle sarın. Tek kullanımlık sayıların yanlış kullanımına dayanıklı AEAD'ler kazara yeniden kullanıma karşı koruma sağlar. Sıradaki konu: Sıfır Bilgi İspatları.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Cryptology Academy öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
67
Dersler
261

Sıkça Sorulan Sorular

“Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme” dersi ücretsiz mi?

Evet — “Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.

“Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme” dersinde ne öğreneceğim?

Python ve Node'da secrets, os.urandom ve güvenli sarmalayıcıları kullanın. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gerçek Rastlantısallık ve Sözde Rastlantısallık
  2. Kriptografik Olarak Güvenli PRNG'ler
  3. Entropi Tükenmesi ve Zayıf Anahtar Hataları
  4. Anahtarları, Nonce'ları ve IV'leri Güvenle Üretme
← Cryptology Academy Sayfasına Dön