Eliptik eğri nokta çarpımı - Elliptic curve point multiplication

Eliptik eğri skaler çarpım bir nokta boyunca art arda bir nokta ekleme işlemidir eliptik eğri kendisine defalarca. Kullanılır eliptik eğri kriptografisi (ECC) bir üretim aracı olarak tek yönlü işlev Literatür bu işlemi şu şekilde sunar: skaler çarpım, yazıldığı gibi Eliptik bir eğrinin Hessian formu. Bu operasyon için yaygın bir isim de eliptik eğri nokta çarpımıama bu, iki nokta arasında çarpma olduğu gibi yanlış bir izlenim uyandırabilir.

Temel bilgiler

Bir eğri verildiğinde, E, sonlu bir alandaki bazı denklemler boyunca tanımlanmıştır (örneğin E: y2 = x3 + balta + b), nokta çarpma o eğri boyunca bir noktanın tekrarlanan eklenmesi olarak tanımlanır. Olarak belirtin nP = P + P + P + … + P bazı skaler (tam sayı) için n ve bir nokta P = (x, y) eğri üzerinde yatan E. Bu tip eğri Weierstrass eğrisi olarak bilinir.

Modern ECC'nin güvenliği, karar vermenin inatçılığına bağlıdır. n itibaren Q = nP bilinen değerleri verilen Q ve P Eğer n büyük (olarak bilinir eliptik eğri ayrık logaritma problemi diğerine benzeterek kriptografik sistemler ). Bunun nedeni, eliptik bir eğri üzerine iki noktanın eklenmesinin (veya kendisine bir noktanın eklenmesinin), eliptik eğri üzerinde, konumu ilk ikisinin konumlarıyla hemen açık bir ilişkisi olmayan üçüncü bir nokta vermesidir ve bunu birçok kez tekrar eder. fazla bir puan verir nP bu aslında her yerde olabilir. Sezgisel olarak bu, bir noktaya değinmiş olsaydınız P bir daire üzerinde açısına 42,57 derece eklemek, yine de "çok uzak olmayan" bir nokta olabilir Pancak 1000 veya 1001 çarpı 42.57 derece eklemek, çemberin herhangi bir yerinde olabilecek bir nokta verecektir. Bu süreci geri döndürmek, yani verilen Q = nP ve P ve belirleyici n bu nedenle, yalnızca mümkün olan her şeyi deneyerek yapılabilir n—Bilimsel olarak zorlu bir çaba, n büyük.

Nokta işlemleri

Eliptik eğri noktası işlemleri: Toplama (yön 1'de gösterilir), ikiye katlama (yönler 2 ve 4) ve olumsuzlama (yön 3).

Eliptik eğri noktaları için genel olarak tanımlanmış üç işlem vardır: toplama, ikiye katlama ve olumsuzlama.

Sonsuza gelin

Sonsuzdaki nokta kimlik öğesi eliptik eğri aritmetiği. Onu herhangi bir noktaya eklemek, kendisine sonsuzda nokta eklemek de dahil olmak üzere o diğer noktaya neden olur.

Sonsuz nokta da şu şekilde yazılır: 0.

Negatif nokta

Nokta olumsuzlaması öyle bir nokta bulmaktır ki, onu kendisine eklemek sonsuzda nokta ile sonuçlanacaktır ().

Aynı olan bir nokta olan eliptik eğriler için x koordine ama olumsuz y koordinat:

Nokta toplama

2 farklı nokta ile, P ve Qtoplama, eğrinin kesişiminden kaynaklanan noktanın olumsuzlanması olarak tanımlanır, Eve noktalarla tanımlanan düz çizgi P ve Q, nokta vermek, R.

.

Eliptik eğri varsayarsak, E, tarafından verilir y2 = x3 + balta + b, bu şu şekilde hesaplanabilir:

Bu denklemler, hiçbir nokta sonsuzluk noktası olmadığında doğrudur, . Bu, ECDSA doğrulama algoritması hash değeri sıfır olabilir.

Nokta ikiye katlama

Noktalar nerede P ve Q rastlantısaldır (aynı koordinatlarda), toplama işlemi benzerdir, tek fark iyi tanımlanmış düz bir çizgi yoktur P, böylece işlem, eğriye teğet olan sınırlayıcı durum kullanılarak kapatılır, E, şurada P.

Bu, aşağıdaki gibi hesaplanır:

nerede a eğrinin tanımlayıcı denkleminden, E, yukarıda.

Nokta çarpımı

Bir nokta çarpımını hesaplamanın basit yolu, tekrarlanan toplamadır. Bununla birlikte, bu, çarpma işleminin hesaplanması için tamamen üstel bir yaklaşımdır.

İkiye katla ve ekle

En basit yöntem, çift ve ekle yöntemidir,[1] benzer çarpma ve kareleme modüler üslemede. Algoritma şu şekilde çalışır:

Hesaplamak dPikili gösterimle başlayın d: , nerede İki olası yinelemeli algoritma vardır.

Yinelemeli algoritma, artan indeks:

  N ← P Q ← 0 i için 0'dan m'ye yap, eğer dben = 1 sonra Q ← nokta_add (Q, N) N ← nokta_ çift (N) dönüş Q

Yinelemeli algoritma, indeks azalan:

  Q ← 0 i için m'den 0'a kadar Q ← point_double (Q) eğer dben = 1 sonra Q ← point_add (Q, P) dönüşü Q

Yukarıdakileri yinelemeli bir işlev olarak yazmanın alternatif bir yolu şudur:

  f (P, d), d = 0 ise 0 döndürün, aksi takdirde d = 1 ise P döndürün, eğer d mod 2 = 1 ise, o zaman point_add (P, f (P, d - 1)) # toplama d tektir, aksi takdirde dönüş f (nokta_çift (P), d / 2) # d çift olduğunda iki katına çıkar

nerede f çarpma işlevi, P çarpılacak koordinat d koordinatın kendisine ekleneceği sayıdır. Misal: 100P olarak yazılabilir 2 (2 [P + 2 (2 [2 (P + 2P)])]) ve bu nedenle altı noktalı çift işlem ve iki nokta toplama işlemi gerektirir. 100P eşit olacaktır f (P, 100).

Bu algoritma günlük gerektirir2(d) tam nokta çarpımını hesaplamak için nokta ikiye katlama ve toplama iterasyonları. Bu algoritmanın pencere, kayan pencere, NAF, NAF-w, vektör zincirleri ve Montgomery merdiveni gibi birçok çeşidi vardır.

Pencereli yöntem

Bu algoritmanın pencereli versiyonunda,[1] bir pencere boyutu seçer w ve hepsini hesaplar değerleri için . Algoritma artık gösterimi kullanıyor ve olur

  Q ← 0 i için m'den 0'a Q ← nokta_double tekrarlama (Q, w) eğer dben > 0 sonra Q ← point_add (Q, dbenP) # d'nin önceden hesaplanmış değerini kullanarakbenP dönüş Q

Bu algoritma, çift ve ekle yaklaşımı ile aynı karmaşıklığa sahiptir ve daha az nokta eklemesi kullanmanın faydası vardır (pratikte ikiye katlamaktan daha yavaştır). Tipik olarak değeri w oldukça küçük olması için seçilmiştir. ön hesaplama algoritmanın önemsiz bir bileşenini hazırlar. NIST tarafından önerilen eğriler için, genellikle en iyi seçimdir. Bir için tüm karmaşıklık n-bit sayısı olarak ölçülür puan iki katına çıkar ve nokta eklemeler.

Sürgülü pencere yöntemi

Kayar pencereli versiyonda, puan çiftleri için puan eklemelerini değiştirmeye çalışıyoruz. Pencereli versiyondaki gibi benzer bir tablo hesaplıyoruz, sadece puanları hesaplıyoruz için . Etkili bir şekilde, yalnızca pencerenin en önemli bitinin ayarlandığı değerleri hesaplıyoruz. Algoritma daha sonra orijinal çift ve ekle gösterimini kullanır .

  Q ← 0 i için m'den 0'a kadar eğer dben = 0 sonra Q ← nokta_double (Q) else t ← d'den j (w - 1'e kadar) ek bitler (d dahilben) i ← i - j ise j 

Bu algoritma, ön hesaplama aşamasının normal pencereli yöntemin yaklaşık yarısı kadar karmaşık olması ve aynı zamanda nokta ikiye katlama için daha yavaş nokta eklemeleriyle işlem yapma avantajına sahiptir. Aslında, bu yaklaşımın üzerinde pencereli yöntemi kullanmak için çok az neden vardır, ancak ilki sabit zamanda uygulanabilmektedir. Algoritma gerektirir nokta iki katına çıkar ve en fazla nokta eklemeler.

w-ary bitişik olmayan form (wNAF) yöntemi

İçinde bitişik olmayan form nokta çıkarma işleminin, kayan pencere yöntemine kıyasla daha az (her ikisinden de) gerçekleştirilmesi için nokta toplama kadar kolay olduğu gerçeğinden yararlanmayı amaçlıyoruz. Çarpılanın NAF'si ilk önce aşağıdaki algoritma ile hesaplanmalıdır

   i ← 0 iken (d> 0) yap (d mod 2) = 1 sonra dben ← d modlar 2w           d ← d - dben       başka dben = 0 d ← d / 2 i ← i + 1 dönüş (dben − 1, di-2,…, D0)

İmzalı modulo işlevi nerede modlar olarak tanımlanır

   eğer (d mod 2w) >= 2w − 1       dönüş (d mod 2w) − 2w   yoksa d mod 2'yi döndürw

Bu, çarpma işlemini gerçekleştirmek için gereken NAF'yi üretir. Bu algoritma, noktaların önceden hesaplanmasını gerektirir ve negatifleri, nerede çarpılması gereken noktadır. Tipik Weierstrass eğrilerinde, sonra . Yani özünde negatiflerin hesaplanması ucuzdur. Ardından, aşağıdaki algoritma çarpımı hesaplar :

   Q ← 0 için j ← i - 1 aşağı 0 do Q ← nokta_ çift (Q) if (dj ! = 0) Q ← point_add (Q, djG) Q dönüşü

WNAF, ortalama olarak şu kadar yoğunluğun olacağını garanti eder: nokta ekleri (işaretsiz pencereden biraz daha iyi). 1 puan ikiye katlama gerektirir ve ön hesaplama için puan eklemeleri. Algoritma daha sonra gerektirir nokta ikiye katlama ve çarpmanın geri kalanı için nokta toplamaları.

NAF'nin bir özelliği, sıfır olmayan her elementin ardından en azından ek sıfırlar. Bunun nedeni, algoritmanın daha düşük olanı temizlemesidir. bitleri çıktısının her çıkarılmasıyla modlar işlevi. Bu gözlem birkaç amaç için kullanılabilir. Sıfır olmayan her elemandan sonra ek sıfırlar ima edilebilir ve saklanmaları gerekmez. İkinci olarak, 2 ile çoklu seri bölümler bir bölüm ile değiştirilebilir. sıfır olmayan her eleman ve her sıfırdan sonra 2'ye bölün.

OpenSSL'de FLUSH + RELOAD yan kanal saldırısının uygulanmasıyla, tam özel anahtarın, gerçekleştirilen 200 imzaya kadar önbellek zamanlaması gerçekleştirdikten sonra ortaya çıkarılabileceği gösterilmiştir.[2]

Montgomery merdiveni

Montgomery merdiveni[3] yaklaşım, nokta çarpımını bir sabit zaman miktarı. Bu, zamanlama veya güç tüketimi ölçümleri bir saldırgana maruz kaldığında yararlı olabilir. yan kanal saldırısı. Algoritma, double-and-add ile aynı gösterimi kullanır.

  R0 ← 0 R1 ← i için P m'den 0'a kadar eğer dben = 0 sonra R1 ← point_add (R0, R1) R0 ← point_double (R0) başka R0 ← point_add (R0, R1) R1 ← point_double (R1) dönüş R0

Bu algoritma, çarpanların değerine bakılmaksızın aynı sayıda nokta eklemeyi hesaplaması ve iki katına çıkarması dışında, ikiye katla ve ekle yaklaşımıyla aynı hıza sahiptir. d. Bu, bu seviyede algoritmanın zamanlama veya güç yoluyla herhangi bir bilgi sızdırmadığı anlamına gelir, ancak OpenSSL'de FLUSH + RELOAD yan kanal saldırısı uygulamasıyla, tam özel anahtarın önbellek gerçekleştirildikten sonra açığa çıkarılabileceği gösterilmiştir. çok düşük bir maliyetle yalnızca bir imzaya karşı zamanlama.[4]

Referanslar

  1. ^ a b Hankerson, Darrel; Vanstone, Scott; Menezes, Alfred (2004). Eliptik Eğri Şifreleme Rehberi. Springer Profesyonel Hesaplama. New York: Springer-Verlag. doi:10.1007 / b9764891 (etkin olmayan 2020-11-18). ISBN  0-387-95273-X.CS1 Maint: DOI Kasım 2020 itibarıyla etkin değil (bağlantı)
  2. ^ Benger, Naomi; van de Pol, Joop; Smart, Nigel P .; Yarom, Yuval (2014). Batina, Lejla; Robshaw, Matthew (editörler). "Ooh Aah ... Birazcık": Küçük Bir Miktar Yan Kanal Uzun Yol Gidebilir (PDF). Kriptografik Donanım ve Gömülü Sistemler - CHES 2014. Bilgisayar Bilimleri Ders Notları. 8731. Springer. s. 72–95. doi:10.1007/978-3-662-44709-3_5. ISBN  978-3-662-44708-6.
  3. ^ Montgomery, Peter L. (1987). "Pollard'ı hızlandırmak ve eliptik eğri çarpanlara ayırma yöntemleri". Matematik. Comp. 48 (177): 243–264. doi:10.2307/2007888. JSTOR  2007888. BAY  0866113.
  4. ^ Yarom, Yuval; Benger Naomi (2014). "FLUSH + RELOAD Önbelleği Yan Kanal Saldırısını Kullanarak OpenSSL ECDSA Birliklerini Kurtarma". IACR Cryptology ePrint Arşivi.