Dijital İmza

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)'nin doğruladığı bir imza oluşturmak mümkün değildir.
  • Asimetrik: İmza oluşturmak için kullanılan anahtar, imzayı doğrulamak için kullanılan anahtardan farklıdı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

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:

Aşağıdaki kuantum sonrası olmayan algoritmalar için 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 da beklenmedik sonuçlara yol açabilir.

Örnek kullanım alanı

Verileri dijital olarak imzalamak istiyorum.