Karma Şifreleme

Temel Karma Şifreleme, simetrik şifrelemenin verimliliğini ortak anahtar (asimetrik) kriptografisinin rahatlığıyla birleştirir. Herkes ortak anahtarı kullanarak verileri şifreleyebilir ancak verilerin şifresini yalnızca özel anahtara sahip kullanıcılar çözebilir.

Karma Şifrelemede gönderen, her mesajın şifrelenmemiş metnini şifrelemek için yeni bir simetrik anahtar oluşturarak şifrelenmiş metin oluşturur. Bu simetrik anahtar, alıcının ortak anahtarıyla kapsanır. Karma Şifre Çözme'de, simetrik anahtarın alıcı tarafından kapsayısı kaldırılır ve daha sonra, orijinal düz metni kurtarmak amacıyla şifrelenmiş metnin şifresini çözmek için kullanılır. Şifreli metnin anahtar kapsülüyle birlikte nasıl depolanacağı veya iletileceği hakkında ayrıntılı bilgi için Tink Karma Şifreleme kablosu biçimi bölümüne bakın.

Karma Şifreleme aşağıdaki özelliklere sahiptir:

  • Gizlilik: Özel anahtara erişimi olmadığı sürece hiç kimse şifrelenmiş şifrelenmemiş metin hakkında (uzunluğu hariç) herhangi bir bilgi alamaz.
  • Asimetri: Şifreli metnin şifrelenmesi ortak anahtarla yapılabilir ancak şifre çözme için özel anahtar gereklidir.
  • Rastgele hâle getirme: Şifreleme rastgele yapılır. Aynı şifrelenmemiş metne sahip iki mesaj aynı şifrelenmiş metni sağlamaz. Bu, saldırganların hangi şifrelenmiş metnin belirli bir şifrelenmemiş metne karşılık geldiğini bilmesini önler.

Karma Şifreleme, Tink'te bir çift temel öğe olarak gösterilir:

  • Şifreleme için HybridEncrypt
  • Şifre çözme için HybridDecrypt

Bağlam bilgisi parametresi

Düz metne ek olarak, Karma Şifreleme fazladan bir parametreyi (context_info) kabul eder. Bu parametre, genellikle bağlamdan örtülü olan herkese açık verilerdir ancak elde edilen şifrelenmiş metne bağlı olması gerekir. Bu, şifrelenmiş metnin bağlam bilgilerinin bütünlüğünü doğrulamanıza izin verir ancak gizliliğin veya orijinalliğinin garanti edilmediği anlamına gelir. Gerçek bağlam bilgisi boş veya null olabilir. Ancak sonuçta ortaya çıkan şifrelenmiş metnin doğru şifresinin çözülmesini sağlamak için şifre çözme için aynı içerik bilgisi değeri sağlanmalıdır.

Karma şifrelemenin somut bir uygulaması, bağlam bilgilerini şifrelenmiş metne çeşitli şekillerde bağlayabilir. Örneğin:

  • AEAD simetrik şifreleme için ilişkili veri girişi olarak context_info kullanın (RFC 5116 ile karşılaştırın).
  • HKDF için "CtxInfo" girişi olarak context_info kullanın (uygulamada anahtar türetme işlevi olarak HKDF kullanılıyorsa RFC 5869'a bakın).

Anahtar türü seçin

Çoğu kullanım alanı için DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM anahtar türünü kullanmanızı öneririz. Bu anahtar türü, RFC 9180'de belirtildiği gibi Karma Ortak Anahtar Şifreleme (HPKE) standardını uygular. HPKE; anahtar kapsülleme mekanizması (KEM), anahtar türetme işlevi (KDF) ve ilişkili verilerle ilişkili kimliği doğrulanmış bir şifreleme (AEAD) algoritmasından oluşur.

DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM özellikle şunları kullanır:

  • KEM: Paylaşılan gizli anahtarı türetmek için HKDF-SHA-256 ile Curve25519 üzerinden Diffie–Hellman.
  • KDF: Gönderen ve alıcı bağlamını elde etmek için HKDF-SHA-256.
  • AEAD: HPKE standardına göre oluşturulmuş 12 baytlık nonce'larla AES-256-GCM.

Desteklenen diğer HPKE anahtar türleri aşağıdakileri içerir, ancak bunlarla sınırlı değildir:

  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305
  • DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_P521_HKDF_SHA512_HKDF_SHA512_AES_256_GCM

KEM, KDF ve AEAD algoritma seçenekleri hakkında daha fazla bilgi için RFC 9180 bölümüne bakın.

Tink, artık önerilmese de Victor Shoup'un ISO 18033-2 standardında açıklandığı gibi bazı ECIES varyasyonlarını da destekler. Desteklenen bazı ECIES anahtar türleri aşağıda listelenmiştir:

  • ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256

Minimum özellikler

  • Düz metin ve bağlam bilgileri rastgele uzunlukta olabilir (0..232 bayt aralığında)
  • Uyarlanabilir seçili şifrelenmiş metin saldırılarına karşı güvenlik sağlayın
  • Elips biçimli eğri tabanlı şemalar için 128 bit güvenlik

Örnek kullanım alanları

Veri alışverişi yapmak istiyorum konusuna bakın.