İlişkilendirilmiş Veriler (AEAD) ile Kimliği Doğrulanmış Şifreleme

İlişkili Verilerle Kimliği Doğrulanmış Şifreleme (AEAD) temel öğesi, veri şifreleme için en yaygın temel öğedir ve çoğu ihtiyaca uygundur.

AEAD aşağıdaki özelliklere sahiptir:

  • Secrecy: Düz metnin uzunluğu dışında hiçbir şey bilinmez.
  • Özgünlük: Şifreli metnin temelindeki şifrelenmiş düz metni fark edilmeden değiştirmek imkansızdır.
  • Simetrik: Düz metnin şifrelenmesi ve şifreli metnin şifresinin çözülmesi aynı anahtarla yapılır.
  • Rastgeleleştirme: Şifreleme rastgeleleştirilir. Aynı düz metne sahip iki mesaj, farklı şifreli metinler üretir. Saldırganlar, hangi şifreli metnin belirli bir düz metne karşılık geldiğini bilemez. Bu durumun önüne geçmek için Deterministik AEAD kullanın.

İlişkili veriler

AEAD, şifreli metni belirli ilişkili verilere bağlamak için kullanılabilir. user-id ve encrypted-medical-history alanlarını içeren bir veritabanınız olduğunu varsayalım. Bu senaryoda user-id, encrypted-medical-history şifrelenirken ilişkili veri olarak kullanılabilir. Bu sayede, saldırganların tıbbi geçmişi bir kullanıcıdan diğerine taşıması engellenir.

İlişkili veriler isteğe bağlıdır. Belirtilirse şifre çözme işlemi yalnızca aynı ilişkili veriler hem şifreleme hem de şifre çözme çağrılarına iletildiğinde başarılı olur.

Anahtar türü seçin

Çoğu kullanım için AES128_GCM'yi öneririz ancak farklı ihtiyaçlar için çeşitli anahtar türleri vardır. AES128, 128 bit güvenlik, AES256 ise 256 bit güvenlik sunar.

Mod seçerken dikkat edilmesi gereken iki önemli güvenlik kısıtlaması vardır:

  1. QPS: Aynı anahtarla kaç ileti şifreleniyor?
  2. İleti boyutu: İletiler ne kadar büyük?

Desteklenen anahtar türleri:

  • 16 baytlık başlatma vektörüne (IV) sahip AES-CTR-HMAC (AES128_CTR_HMAC_SHA256, AES256_CTR_HMAC_SHA256), iyi sınırlara sahip en muhafazakar moddur.
    • Anahtar taahhütlü.
  • AES-EAX (AES128_EAX, AES256_EAX), AES128_CTR_HMAC_SHA256'ya kıyasla biraz daha az muhafazakar ve biraz daha hızlıdır.
    • Anahtar taahhütlü olmayan MLGR.
  • AES-GCM (AES128_GCM, AES256_GCM) genellikle mesaj sayısı (232) ve mesaj boyutu (mesaj başına yaklaşık 64 GB) konusunda en katı sınırlara sahip en hızlı moddur. Bu sınırlar aşıldığında AES-GCM, düz metni ve AES-GCM dahili anahtarının kimlik doğrulama bölümünü sızdırarak ciddi bir şekilde başarısız olur.
    • AES-GCM, sağlam [ABN] veya anahtar taahhütlü [GLR] değildir. İki farklı anahtarla şifresi çözülebilen bir şifreli metin oluşturmak mümkündür. Bu durum, pratik saldırılara yol açabilir [DGRW]. Anahtar, saldırgan tarafından seçiliyorsa tehdit modelinizi dikkatlice inceleyin.
  • AES-GCM-SIV (AES128_GCM_SIV, AES256_GCM_SIV) [RFC8452], tek seferlik rastgele sayının yanlışlıkla hatalı kullanımına karşı dayanıklıdır ve AES-GCM kadar performanslıdır. Rastgele IV'lere sahip AES-GCM-SIV için mesaj sayısı ve mesaj boyutu sınırları, AES-GCM'nin sınırlarından çok daha yüksektir. Bu sınırlar aşıldığında AES-GCM-SIV daha az yıkıcı bir şekilde başarısız olur: Yalnızca iki mesajın eşit olduğunu sızdırır. AES-GCM-SIV'nin kullanımı daha güvenlidir ancak pratikte daha az kullanılır.
  • XChaCha20-Poly1305 (XCHACHA20_POLY1305), AES-GCM'ye kıyasla çok daha yüksek bir ileti sayısı ve ileti boyutu sınırına sahiptir ancak başarısız olduğunda (çok düşük bir ihtimal) anahtar materyalini de sızdırır. Donanım hızlandırmalı olmadığından, donanım hızlandırmanın kullanılabildiği durumlarda AES modlarından daha yavaş olabilir.
    • Anahtar taahhütlü olmayan LGR.

AEAD şifreli metninin kablo biçimi hakkında daha fazla bilgi edinin.

Güvenlik garantileri

AEAD uygulamaları şunları sunar:

  • CCA2 güvenliği.
  • En az 80 bit kimlik doğrulama gücü.
  • Toplam 250 bayt ile en az 232 mesajı şifreleme özelliği. En fazla 232 seçilmiş düz metin veya seçilmiş şifreli metin içeren hiçbir saldırının başarı olasılığı 2-32'den fazla değildir.

Örnek kullanım alanları

Verileri şifrelemek istiyorum ve Şifreli metni bağlamına bağlamak istiyorum bölümlerine bakın.