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

Temel Kimlik Doğrulaması’nı İlişkili Verilerle Şifreleme (AEAD) temel öğesi, veri şifrelemede kullanılan en yaygın temel öğedir ve çoğu ihtiyaç için uygundur.

AEAD aşağıdaki özelliklere sahiptir:

  • Gizlilik: Şifrelenmemiş metin hakkında, uzunluğu dışında hiçbir şey bilinmemektedir.
  • Özgünlük: Şifrelenmiş metnin altında yer alan şifrelenmiş düz metnin algılanmadan değiştirilmesi mümkün değildir.
  • Simetrik: Şifrelenmemiş metnin şifrelenmesi ve şifrelenmiş metnin şifresinin çözülmesi aynı anahtarla gerçekleştirilir.
  • Rastgele hale getirme: Şifreleme rastgele hâle getirilir. Aynı düz metne sahip iki mesaj farklı şifrelenmiş metinler verir. Saldırganlar, hangi şifrelenmiş metnin belirli bir şifrelenmemiş metne karşılık geldiğini bilemez. Bunu önlemek istiyorsanız bunun yerine Belirleyici AEAD'yi kullanın.

İlişkili veriler

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

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 de vardır (256 bit güvenlik için AES128'i aşağıdaki AES256 ile değiştirin). Genel olarak:

  • 16 baytlık Başlatma Vektörü (IV) ile AES128_TO_HMAC_SHA256, iyi sınırlara sahip en konservatif moddur.
  • AES128_EAX, AES128_TO_HMAC_SHA256'ya kıyasla biraz daha muhafazakar ve daha hızlıdır.
  • AES128_GCM genellikle, ileti sayısı ve ileti boyutu konusunda en katı sınırlara sahip olan en hızlı moddur. Düz metin ve ilişkili veri uzunluklarındaki (aşağıda) bu sınırlar aşıldığında, AES128_GCM başarısız olur ve anahtar materyalini sızdırır.
  • AES128_GCM_SIV, neredeyse AES128_GCM kadar hızlıdır; çok sayıda ileti için çok iyi sınırlara sahiptir, ancak biraz daha yaygındır. Bunu Java'da kullanmak için Conscrypt'i yüklemeniz gerekir.
  • XChaCha20Poly1305'in ileti sayısı ve ileti boyutu, AES128_GCM'den çok daha fazladır. Ancak başarısız olduğunda (çok düşük bir ihtimal) anahtar materyali de sızdırır. Donanım hızlandırmalı olmadığından, donanım hızlandırmanın kullanıldığı durumlarda AES modlarından daha yavaş olabilir.

Güvenlik garantileri

AEAD uygulamalarının sunduğu avantajlar:

  • CCA2 güvenliği.
  • En az 80 bit kimlik doğrulama gücü.
  • Toplam 250 bayt olmak üzere en az 232 mesajı şifreleme özelliği. En fazla 232 şifrelenmemiş metin içeren veya seçili şifrelenmiş metinlerin kullanıldığı hiçbir saldırının başarı olasılığı 2-32'den büyüktür.

Örnek kullanım alanları

Verileri şifrelemek ve şifrelenmiş metni bağlamına bağlamak istiyorum.