İlişkili Verilerle Kimliği Doğrulanmış Şifreleme (AEAD) temeli, veri şifreleme için en yaygın kullanılan temeldir 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 hangi açık metne karşılık geldiğini bilemez. Bu durumun önüne geçmek için Deterministik AEAD 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ı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. Belirtilmişse şifre çözme işlemi yalnızca aynı ilişkili veriler hem şifreleme hem de şifre çözme çağrılarına iletilirse başarılı olur.
Anahtar türü seçin
Çoğu kullanım için AES128_GCM'yi önersek de 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:
- QPS: Aynı anahtarla kaç ileti şifreleniyor?
- İ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 oluşturma.
- AES-EAX (AES128_EAX, AES256_EAX), AES128_CTR_HMAC_SHA256'ya kıyasla biraz daha az muhafazakar ve biraz daha hızlıdır.
- MLGR'nin anahtarını oluşturmamak.
- 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 feci şekilde başarısız olur.
- 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.
- Rastgele nonce'ler için sınırlar:
- Her bir düz metnin en fazla 8 GiB olduğu 232 mesaj
- Her bir düz metnin en fazla 32 MiB olduğu 248 mesaj
- Her biri en fazla 128 KiB olan 264 mesaj
- Java'da kullanmak için Conscrypt'i yükleyin.
- ADGKLS anahtarı oluşturulmuyor.
- Rastgele nonce'ler için sınırlar:
- 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.