Dijital İmza ilkel nesnesi, verilerinizin hiç kimsenin müdahalesine uğramadığını doğrulamanızı sağlar. İmzalı verilerin gizliliğini değil, özgünlüğünü ve bütünlüğünü sağlar. Asimetriktir, yani bir çift anahtar (ortak anahtar ve özel anahtar) kullanır.
Dijital İmza ilkel öğesinin aşağıdaki özellikleri vardır:
- Özgünlük: Gizli anahtarınız yoksa
PublicKeyVerify.Verify(signature, message)
'nin doğrulayacağı bir imza oluşturamazsınız. - Asimetrik: İmza oluşturmak için, imzanın doğrulanmasında kullanılandan farklı bir anahtar kullanılır. Bu sayede, imzaları doğrulamak için ortak anahtarı, imza oluşturamayan taraflara dağıtabilirsiniz.
Asimetriye ihtiyacınız yoksa bunun yerine daha basit ve daha verimli olan MAC ilkelini kullanmayı düşünün.
Dijital imzaların işlevi Tink'te bir çift ilkel olarak temsil edilir:
- 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 vardır. Genel olarak aşağıdakiler geçerlidir:
- ECDSA_P256, en yaygın kullanılan seçenektir ve makul bir varsayılan ayardı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, belirlenebilir imzalar oluşturur ve en iyi doğrulama performansını sağlar (ancak imzalama işlemi ECDSA_P256 veya ED25519'dan çok daha yavaştır).
Minimum güvenlik garantileri
- İmzalanacak verilerin uzunluğu herhangi bir değer olabilir.
- Eliptik eğri tabanlı şemalar için uyarlanabilir seçili mesaj saldırılarına karşı 128 bit güvenlik düzeyi
- RSA tabanlı şemalar için uyarlanabilir seçili mesaj saldırılarına karşı 112 bit güvenlik düzeyi (2048 bit anahtarlara izin verilir)
Değiştirilebilirlik
Bir saldırgan, zaten imzalanmış bir mesaj için farklı bir geçerli imza oluşturabiliyorsa imza şeması değiştirilebilir durumdadır. Bu durum çoğu senaryoda sorun oluşturmasa da bazı durumlarda programcılar geçerli imzaların benzersiz olduğunu varsayarlar ve bu durum beklenmedik sonuçlara yol açabilir.
Örnek kullanım alanı
Verileri dijital olarak imzalamak istiyorum.