Dijital İmza öğesi, verilerinizle oynanmadığını doğrulamanıza olanak tanır. İmzalı verilerin gizliliğini değil, gerçekliğini ve bütünlüğünü sağlar. Asimetriktir. Yani bir anahtar çifti (ortak anahtar ve özel anahtar) kullanır.
Dijital İmza temel öğesi aşağıdaki özelliklere sahiptir:
- Gerçeklik: Özel anahtarınız yoksa
PublicKeyVerify.Verify(signature, message)doğrulama için imza oluşturmak mümkün değildir. - Asimetrik: İmza oluşturulurken, doğrulanırken kullanılan anahtardan farklı bir anahtar kullanılır. Bu sayede, imzaları doğrulayan ortak anahtarı, kendileri imza oluşturamayan taraflara dağıtabilirsiniz.
Asimetriye ihtiyacınız yoksa bunun yerine daha basit ve verimli olan MAC temelini kullanabilirsiniz.
Dijital imzaların işlevi, Tink'te bir çift temel öğe olarak gösterilir:
- Verileri imzalamak için PublicKeySign
- İmzayı doğrulamak için PublicKeyVerify
Özel anahtar, mesajın kolayca gönderilemeyeceği bir yerde (ör. HSM veya KMS) bulunuyorsa imzalama işlemini yalnızca genel anahtarın kullanıldığı bir karma oluşturma adımı ve yalnızca özel anahtarın kullanıldığı bir imzalama adımı olarak ikiye bölen Prehash ve SignPrehash başlıklı makaleyi inceleyin.
Anahtar türü seçin
Çoğu kullanım alanı için ML_DSA_65 veya ECDSA_P256'yı kullanmanızı öneririz ancak çeşitli seçenekler de mevcuttur. Genel olarak aşağıdakiler geçerlidir:
- ML-DSA-65, kuantum güvenlidir. Bu özelliği etkin bir şekilde uyguluyoruz ve kullanılabildiği programlama dillerinde artık öneriyoruz.
Aşağıdaki kuantum sonrası olmayan algoritmalarda, yakın gelecekte anahtar türünü değiştirmeniz gerekeceğini tahmin edebilirsiniz.
- ECDSA_P256 en yaygın kullanılan seçenektir ve makul bir varsayılandır. Ancak ECDSA imzalarının değiştirilebilir olduğunu unutmayın.
- ED25519, deterministik imzalar oluşturur ve ECDSA_P256'dan daha iyi performans sağlar.
- RSA_SSA_PKCS1_3072_SHA256_F4, deterministik imzalar oluşturur ve en iyi doğrulama performansını sağlar (ancak imzalama, ECDSA_P256 veya ED25519'dan çok daha yavaştır).
Minimum güvenlik garantileri
- İmzalanacak veriler rastgele uzunlukta olabilir.
- Eliptik eğri tabanlı şemalar için uyarlanabilir seçilmiş mesaj saldırılarına karşı 128 bit güvenlik seviyesi
- RSA tabanlı şemalar için uyarlanabilir seçilmiş mesaj saldırılarına karşı 112 bit güvenlik seviyesi (2048 bit anahtarlara izin verir)
Dövülebilirlik
Bir saldırgan, zaten imzalanmış bir ileti için farklı bir geçerli imza oluşturabiliyorsa imza şeması esnektir. Bu durum çoğu senaryoda sorun oluşturmasa da bazı durumlarda programcılar geçerli imzaların benzersiz olduğunu varsayar ve bu durum beklenmedik sonuçlara yol açabilir.
Örnek kullanım alanı
Verileri dijital olarak imzalamak istiyorum.