Eliptik eğri dijital imza algoritması

Kriptografide Eliptik Eğri Dijital İmza Algoritması (ECDSA), eliptik eğri şifrelemesi kullanan birçok çeşit Dijital İmza Algoritması (DSA) sunar.

DSA ile anahtar ve imza boyut karşılaştırması 
Genel olarak eliptik eğri kriptografisinde olduğu gibi, açık anahtarın bit boyutu ECDSA için yeterli olduğu düşünülen güvenlik seviyesinin bitlerin yaklaşık iki katı kadardır. Örneğin, 80 bitlik bir güvenlik düzeyinde bir ECDSA' nın (yani saldırganın gizli anahtarı bulmak için maksimum operasyon deneme yapması gerektiği anlamına gelir) genel anahtarının boyutu 160 bit olurken, bir DSA genel anahtarının boyutu en az 1024 bit'tir.  Öte yandan, güvenlik seviyesinin   uzunluğunda olduğu hem DSA hem de ECDSA için imza boyutu yaklaşık olur, başka bir deyişle 80 bit güvenlik düzeyi için yaklaşık 320 bitlik imza gerekir.

İmza oluşturma algoritması 
Diyelim ki Alice, Bob'a imzalı bir mesaj göndermek istiyor.  İlk olarak, eğri parametreleri olan üzerinde anlaşmalıdırlar.  Cisme ve eğri eşitliğine ek olarak, eğri üzerinde asal mertebenin temel noktası olan G ve G' nin çarpımsal mertebesi olan n' ye ihtiyaç vardır.

 asal bir sayı olmak zorundadır. Aslında, halkasının sıfırdan farklı her elemanının tersine olduğunu varsayarız, yani  cisim olmak zorundadır. Buda bize ' nin asal olması gerektiğini gösterir. (bkn. Bézout Teoremi)

Alice,  aralığından rastgele seçilmiş özel anahtar olan  'yı ve eğrinin public keyi olan  içeren bir anahtar çifti oluşturur. , eliptik eğri skaler nokta çarpımını temsil eder.

Alice, mesajını imzalayabilmesi için aşağıdaki adımları takip etmelidir:

 'yi hesaplar. (Burada HASH Kriptografik özet fonksiyonu temsil eder.)
 ,  'in en solundaki bitleri olan  olsun; burada  n. mertebeden bir grubun mertebesi olsun.
  arasından kriptografik olarak güvenli rastgele bir tam sayı  seçer.
 Eğri noktaları olan  hesaplar.
  hesaplanır. Eğer  ise 3. adıma geri dönülür.
  hesaplanır. Eğer  ise 3.adıma geri dönülür.
 İmza çifte  olur. Ayrıca  de uygun bir imza çiftidir.

Standartların belirttiği gibi, ' nın sadece gizli olması yeterli değildir, aynı zamanda farklı imzalar için farklı  seçilmesi de önemlidir, aksi takdirde 6. adımdaki denklemde  özel anahtarını çözülebilir: Bilinmeyen aynı  değeri ve bilinen iki farklı  ve   kullanılarak üretilen farklı iki imza olan  ve  için saldırgan  ve  hesaplayabilir ve saldırgan  formülünden  hesaplayabilir. Şimdi ise saldırgan  formülü üzerinde düzenleme yaparak özel anahtar olan ' yı elde edebilir. Bu uygulama hatası, örneğin PlayStation 3 oyun konsolu için kullanılan imzalama anahtarını çıkarmak için kullanıldı. ECDSA imzasının özel anahtarları sızdırabilmesinin bir başka yolu,  hatalı bir rastgele sayı üreteci tarafından üretilir. Rastgele sayı üretmedeki bu tür bir başarısızlık, Android Bitcoin Cüzdan kullanıcılarının Ağustos 2013' te fonlarını kaybetmelerine neden oldu .  'nın her mesaj için benzersiz olmasını sağlamak için, bir kişi rastgele sayı üretimini tamamen atlayabilir ve  'yı hem mesajdan hem de özel anahtardan türeterek deterministik imzalar oluşturabilir.

İmza doğrulama algoritması 

Bob'un Alice'in imzasını doğrulaması için açık anahtar eğri noktası olan  bir kopyasına sahip olması gerekir. Bob,  'nun geçerli bir eğri noktası olduğunu şu şekilde doğrulayabilir:

  nın   kimlik elemanına eşit olmadığını kontrol eder.
  nın eğri üzerinde olduğunu kontrol eder.
  olduğunu kontrol eder.

Ardından Bob şu adımları izler:

  ve  'nin  aralığında tam sayılar olduğunu doğrular. Değilse, imza geçersizdir.
  'yi hesaplar. Burada HASH imza üretirken kullanılan ile aynı kriptografik özet fonksiyonu temsil eder.
 , 'in en solundaki bitleri olan  olsun
  hesaplar.
  ve  ' yi hesaplar.
eğri noktalarını hesaplar. Eğer  ise imza geçersizdir. 
 Eğer  ise imza geçerli, değilse geçersizdir.

Shamir' in numarasını kullanarak, iki skaler çarpımın toplamını yani , bağımsız olarak yapılan iki skaler çarpımından daha hızlı hesaplanabileceğini unutmayın.

Algoritmanın doğruluğu 
Doğrulamanın neden doğru şekilde çalıştığı çok belli değildir. Nedenini görmek için, doğrulamanın 6. adımında hesaplanan eğri noktasını  olarak belirtelim:

Açık anahtarın  tanımından,

elde edilir. Eliptik eğride skaler çarpımın toplama üzerine dağılma özelliğinden,

ve ' nin doğrulamanın 5.adımındaki tanımını açarsak,

buradan  parantezine alındığında,

s' nin imzanın 6. adımdaki tanımını açarsak,

Bir elemanın tersinin tersi kendisini verir ve bir elemanın tersi ile kendisinin çarpımı birim elemanı vereceğinden,

' nin tanımından bu, doğrulama adımı 7'dir.

Güvenlik 
Aralık 2010'da, kendini "fail0verflow" diye adlandıran bir grup, Sony tarafından üretilen PlayStation 3 oyun konsolunun yazılımını imzalamak için kullanılan ECDSA özel anahtarının kırıldığını duyurdu ancak  bu saldırı yalnızca Sony algoritmayı düzgün şekilde uygulamadığı için gerçekleşti çünkü  rastgele değil sabit seçilmişti. Yukarıdaki İmza oluşturma algoritması bölümünde belirtildiği gibi, bu,  'yı çözülebilir hale ve tüm algoritmayı işe yaramaz hale getirir.

29 Mart 2011 tarihinde, iki araştırmacı, bir zamanlama saldırısı yaparak binary alan üzerinden ECDSA ile kimlik doğrulaması yapan OpenSSL kullanarak sunucunun TLS özel anahtarını almanın mümkün olduğunu gösteren bir IACR makalesi yayınladı. Güvenlik açığı, OpenSSL 1.0.0e' de düzeltildi.

Ağustos 2013’te, Java SecureRandom sınıfının bazı uygulamalarındaki hataların bazen  değerinde çakışma(collision) ürettiği ortaya çıktı. Bu, bilgisayar korsanlarının, kendilerine ait anahtarların sahiplerinin sahip olduğu bitcoin işlemleri üzerinde aynı kontrolü sağlayan özel anahtarı kırma izin verdi; aynı şekilde, Java kullanan ve ECDSA' nın kimliğini doğrulamak için kullanan ve bazı Android uygulama uygulamalarında PS3 imzalama anahtarını ortaya çıkarmak için kullanıldı.

Bu sorun, RFC 6979 tarafından tanımlandığı gibi deterministik  üretimi ile önlenebilir.

Endişeler 
ECDSA ile ilgili iki tür endişe vardır:

 Politik kaygılar: NIST'in ürettiği eğrilerin güvenilirliği, NSA' nın yazılımlarına, donanım bileşenlerine ve yayınlanmış standartlarına bilinçli bir şekilde arka kapı koymasının ardından, tanınmış kriptograflar, NIST eğrilerinin nasıl tasarlandığına dair şüphelerini dile getirdiler.
 Teknik kaygılar: Standartın doğru uygulama zorluğu, yavaşlığı ve Dual EC DRBG rastgele sayı üretecinin yetersiz savunma uygulamalarında güvenliği azaltan kusurların tasarlanması.

Bu sorunların her ikisi de libssh curved25519 giriş bölümünde özetlenmiştir.

Uygulamalar 
Aşağıda, ECDSA'ya destek sağlayan şifreleme kütüphanelerinin bir listesi bulunmaktadır:

 Botan
 Bouncy Castle
 cryptlib
 Crypto++
 libgcrypt
 OpenSSL
 wolfCrypt

Kaynakça

Dijital imza şemaları
Dijital imza