İlişkili Verilerle Kimlik Doğrulaması Yapılmış Şifreleme (Akış AEAD)

Akış AEAD ilkel, akış verileri için kimliği doğrulanmış şifreleme sağlar. Şifrelenecek veriler tek bir adımda işlenemeyecek kadar büyük olduğunda kullanışlıdır. Büyük dosyaların veya canlı veri akışlarının şifrelenmesi, bu API'nin tipik kullanım alanlarından biridir.

Şifreleme, şifrelenmiş metin içindeki konumlarına bağlı olan ve kaldırılamayan veya yeniden sıralanamayan segmentler halinde yapılır. Bir şifre metnindeki segmentler başka bir şifre metnine eklenemez. Mevcut bir şifre metnini değiştirmek için veri akışının tamamının yeniden şifrelenmesi gerekir.1

Şifrelenmiş metnin yalnızca bir kısmı aynı anda şifresi çözülüp kimliği doğrulandığından şifre çözme işlemi hızlıdır. Şifrelenmiş metnin tamamı işlenmeden kısmi düz metinler elde edilebilir.

Akış AEAD uygulamaları AEAD tanımını karşılar ve nOAE güvenlidir. Bu mülklerin özellikleri şunlardır:

  • Secrecy: Açık metinle ilgili olarak uzunluğu dışında hiçbir şey bilinmez.
  • Authenticity: Şifrelenmiş metnin altındaki şifrelenmemiş metnin değiştirilmesi fark edilmeden mümkün değildir.
  • Symmetric: Açık metnin şifrelenmesi ve şifrelenmiş metnin çözülmesi aynı anahtarla yapılır.
  • Rastgele hale getirme: Şifreleme rastgele hale getirilir. Aynı açık metne sahip iki mesaj farklı şifre metinleri oluşturur. Saldırganlar, belirli bir şifrelenmemiş metne hangi şifrelenmiş metnin karşılık geldiğini bilemez.

İlişkili veriler

Akış AEAD ilkel, şifre metnini 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, encrypted-medical-history şifrelenirken user-id ilişkili veri olarak kullanılabilir. Bu, saldırganların tıbbi geçmişi bir kullanıcıdan diğerine taşımasını engeller.

Anahtar türü seçin

Çoğu kullanım için AES128_GCM_HKDF_1MB'yi öneririz. Genel olarak:

  • AES-GCM-HKDF
    • AES128_GCM_HKDF_1MB (veya AES256_GCM_HKDF_1MB) daha hızlı seçenektir. Her biri 264 bayta kadar olan 264 dosyayı şifreleyebilir. Şifreleme ve şifre çözme işlemi sırasında yaklaşık 1 MB bellek tüketilir.
    • AES128_GCM_HKDF_4KB yaklaşık 4 KB bellek tüketir ve sisteminizde çok fazla bellek yoksa iyi bir seçimdir.
  • AES-CTR HMAC
    • AES128_CTR_HMAC_SHA256_1MB (veya AES256_CTR_HMAC_SHA256_1MB) daha muhafazakar bir seçenektir.

Güvenlik garantileri

Akış AEAD uygulamaları şunları sunar:

  • CCA2 güvenliği.
  • En az 80 bit kimlik doğrulama gücü.
  • En az 264 iletiyi3 toplam 251 bayt2 ile şifreleme olanağı . 232'ye kadar seçili düz metin veya seçili şifre metni içeren hiçbir saldırının başarı olasılığı 2-32'den büyük değildir.

Örnek kullanım alanı

Büyük dosyaları veya veri akışlarını şifrelemek istiyorum başlıklı makaleyi inceleyin.


  1. Bu kısıtlamanın nedenlerinden biri AES-GCM şifresinin kullanılmasıdır. Aynı konumda farklı bir açık metin segmentinin şifrelenmesi, IV'nin yeniden kullanılmasına eşdeğer olur ve bu da AES-GCM'nin güvenlik garantilerini ihlal eder. Bunun bir diğer nedeni de, saldırganın dosyanın önceki bir sürümünü tespit edilmeden geri yüklemeye çalışabileceği geri alma saldırılarını önlemesidir. 

  2. Her biri segment_size - tag_size bayt düz metin içeren 232 segment desteklenir. 1 MB'lık segmentler için toplam açık metin boyutu 232 * (220-16) ~= 251 bayttır. 

  3. Türetilmiş anahtar (128 bit) ve tek seferlik önek (bağımsız rastgele 7 baytlık değer) kombinasyonu tekrarlandığında AEAD aktarımı güvenli olmaz. 184 bit çarpışma direnci sunuyoruz. Başarı olasılığının 2-32'den az olmasını istiyorsak bu yaklaşık olarak 264 mesaja karşılık gelir.