Dijital İmza

Dijital imza, hiç kimsenin verilerinizde değişiklik yapılmadığını doğrulamanıza olanak tanır. İmzalanan verilerin özgünlüğünü ve bütünlüğünü sunar ancak gizliliğini sağlamaz. Asimetriktir, yani bir çift anahtar (ortak anahtar ve özel anahtar) kullanır.

İmzalar aşağıdaki özelliklere sahiptir:

  • Özgünlük: Özel anahtarınız olmadığı sürece PublicKeyVerify.Verify(signature, message) tarafından doğrulanacak bir imza oluşturmak mümkün değildir.
  • Asimetrik: İmza oluşturulurken doğrulamadan farklı bir anahtar kullanılır. Bu işlem, imza oluşturamayan taraflara imzaları doğrulamak için ortak anahtarı dağıtmanıza olanak tanır.

Asimetriye ihtiyacınız yoksa daha basit ve daha verimli MAC'i kullanmayı düşünebilirsiniz.

Dijital imzaların işlevleri 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 ECDSA_P256 kullanmanızı öneririz ancak çeşitli seçenekler de mevcuttur. Genel olarak aşağıdakiler geçerlidir:

  • ECDSA_P256 en yaygın kullanılan seçenektir ve makul bir varsayılandır. Bununla birlikte ECDSA imzalarının mallanabilir olduğunu unutmayın.
  • ED25519, belirleyici imzalar oluşturur ve ECDSA_P256'dan daha iyi performans sağlar.
  • RSA_SSA_PKCS1_3072_SHA256_F4, belirleyici imzalar oluşturur ve en iyi doğrulama performansını sunar (ancak imzalama işlemi ECDSA_P256 veya ED25519'dan çok daha yavaştır).

Minimum güvenlik garantisi

  • İmzalanacak verilerin uzunluğu rastgele olabilir
  • Elips biçimli eğri tabanlı şemalar için uyarlanabilir seçilmiş mesaj saldırılarına karşı 128 bit güvenlik düzeyi
  • RSA tabanlı şemalar için uyarlanabilir seçilmiş mesaj saldırılarına karşı 112 bit güvenlik düzeyi (2048 bit anahtarlara izin verir)

Örnek kullanım alanı

Verileri dijital olarak imzalamak istiyorum bölümünü inceleyin.

Esneklik

Saldırgan, önceden imzalanmış bir ileti için farklı bir geçerli imza oluşturabiliyorsa imza şeması dövülebilir. Bu çoğu senaryo için sorun olmamakla birlikte, bazı durumlarda programcılar geçerli imzaların benzersiz olduğunu dolaylı yoldan varsayar ve bu durum beklenmedik sonuçlara yol açabilir.