OpenSSH'de (ECDH, ECDSA, Ed25519, Curve25519) bulunan ve en iyi güvenlik seviyesini sunan ECC algoritmaları arasında ve (ideal olarak) neden?
OpenSSH'de (ECDH, ECDSA, Ed25519, Curve25519) bulunan ve en iyi güvenlik seviyesini sunan ECC algoritmaları arasında ve (ideal olarak) neden?
SSH'de iki algoritma kullanılır: bir anahtar değişim algoritması (Diffie-Hellman veya ECDH olarak adlandırılan eliptik eğri varyantı) ve bir imza algoritması. Anahtar değişimi, o oturum için verileri şifrelemek için kullanılacak gizli anahtarı verir. İmza, istemcinin doğru sunucuyla konuştuğundan emin olmasını sağlamak içindir (sunucu anahtar tabanlı istemci kimlik doğrulamasını zorlarsa istemci tarafından hesaplanan başka bir imza kullanılabilir).
ECDH bir eğri ; çoğu yazılım standart NIST eğrisi P-256 kullanır. Curve25519, "satış perdesi" P-256'dan daha güçlü değil daha hızlı olduğu başka bir eğridir. İnsan açısından performans farkı çok küçük: küçük bir bilgisayarda bir milisaniyeden daha az değerde hesaplamalardan bahsediyoruz ve bu SSH oturumu başına yalnızca bir kez oluyor. Fark etmeyeceksin. Her iki eğrinin de diğerinden "daha güçlü" olduğu söylenemez, pratik olarak (her ikisi de "kıramaz" diyarındadır) ne de akademik olarak (her ikisi de "128 bit güvenlik seviyesindedir").
Anahtar değişimi için ECDH kullanıldığında bile, çoğu SSH sunucusu ve istemcisi imzalar için DSA veya RSA anahtarlarını kullanır. Eliptik eğrilere dayalı bir imza algoritması istiyorsanız, bu ECDSA veya Ed25519; Eğri denkleminin kesin tanımı nedeniyle bazı teknik nedenlerden dolayı, bu P-256 için ECDSA, Curve25519 için Ed25519. Yine de, hiçbiri diğerinden daha güçlü değil ve hız farkı bir insan kullanıcı tarafından tespit edilemeyecek kadar küçük. Ancak çoğu tarayıcı (Firefox ve Chrome dahil) artık ECDH'yi desteklemiyor (dh de).
P-256 kullanımı şu anda daha iyi birlikte çalışabilirlik sağlamalıdır, çünkü Ed25519 çok daha yeni ve yaygın değil. Ancak yapılandırdığınız ve kendi makinelerinizden erişmek istediğiniz belirli bir sunucu için birlikte çalışabilirlik çok önemli değildir: hem istemci hem de sunucu yazılımını siz kontrol edersiniz.
Yani, temelde seçim estetiğe, yani mantıklı bir neden olmaksızın tamamen size kalmış. Zaten bu seçim güvenlik sorunlarına neden olmayacak; kriptografik algoritmalar, en zayıf değil, tüm sisteminizin en güçlü parçasıdır.
Ed25519'a Giriş 'ten, hız açısından bazı avantajlar ve bazı güvenlik avantajları vardır. Daha ilginç güvenlik avantajlarından biri, birkaç yan kanal saldırısına karşı bağışık olmasıdır:
- Gizli dizi indeksi yok. Yazılım, RAM'deki gizli adreslerden verileri asla okumaz veya yazmaz; adreslerin örüntüsü tamamen tahmin edilebilir. Bu nedenle yazılım, önbellek zamanlama saldırılarına, hiper iş parçacığı saldırılarına ve CPU önbelleği yoluyla adres sızıntısına dayanan diğer yan kanal saldırılarına karşı bağışıktır.
- Gizli dal koşulları yoktur. Yazılım hiçbir zaman gizli verilere dayalı koşullu şubeler gerçekleştirmez; sıçrama paterni tamamen tahmin edilebilir. Bu nedenle yazılım, şube tahmin birimi aracılığıyla bilgi sızıntısına dayanan yan kanal saldırılarına karşı bağışıktır.
Karşılaştırma için, çeşitli algoritmalar üzerinde gösterilen birkaç gerçek dünya önbellek zamanlama saldırısı oldu. http://en.wikipedia.org/wiki/Timing_attack
Ed25519'un (EC) DSA'ya göre önemli bir pratik avantajı vardır: İkinci algoritma ailesi, bozuk bir rastgele sayı oluşturucu ile birlikte imzalar için kullanıldığında tamamen bozulur. Böyle bir RNG hatası daha önce olmuştur ve çok iyi bir şekilde tekrar olabilir.
Teorik olarak, uygulamalar bu özel soruna karşı koruma sağlayabilir, ancak çok daha zordur her iki ucun da güvenli davranışı açıkça belirten bir algoritmayı (uyumluluk ihtiyaçlarınıza bağlı olarak) tercih etmekten veya uygulamaktan daha doğru bir uygulama kullandığını doğrulamak için (Ed25519).
Curve25519'un, eğrinin şekli nedeniyle çeşitli yan kanal saldırılarına ve uygulama hatalarına karşı daha az uygun hale geldiğinden, aslında NIST eğrilerinden daha güvenli olduğu izlenimine kapılmıştım. Bkz .: http://safecurves.cr.yp.to
Ed25519, anahtar sözleşmeyi imzalamak için aynı anahtarı kullanabilme avantajına sahiptir (normalde Bunu yap). Bunun bir Edwards eğrisi olma özelliği olup olmadığını söyleyecek kadar matematiği yeterince iyi bilmiyorum, ancak anahtar anlaşma için Montgomery koordinat sistemine (etkin bir şekilde Curve25519'a) dönüştürüldüğünü biliyorum ... Ed25519 daha fazlası bir eğriden ziyade, akılda tutulması gereken diğer şeyler arasında (örneğin hashing) deterministik anahtar üretimini belirtir. Bu, birlikte çalışabilirliği korumak için farklı şekilde ele alınmaları gerektiğinden, olduğu gibi DJB uygulamaları hakkında sinir bozucu bir şeydir.
Şimdiye kadar hiçbir yanıtın doğrudan değinilemediği bir şey, sorularınızın az çok ilgisiz isimleri, sanki bunlar birbirine eşdeğer alternatiflermiş gibi bir araya getirmesidir ki bu aslında durum böyle değildir.
ECDH ve ECDSA sadece şifreleme yöntemlerinin isimleridir.
ECDH , iki tarafın güvenli olmayan bir anahtar üzerinde güvenli bir anahtar üzerinde pazarlık yapmak için kullanabileceği bir anahtar değişim yöntemidir. iletişim kanalı. Bu, DH (Diffie-Hellman) anahtar değişim yönteminin bir varyasyonudur. ECDH, Eliptik Eğri Diffie – Hellman anlamına gelir. Yine de ECDH yalnızca bir yöntemdir; bu, onu yalnızca belirli bir eliptik eğri ile kullanamayacağınız, onu birçok farklı eliptik eğri ile kullanabileceğiniz anlamına gelir.
ECDSA , bir veri parçasını, verilerde yapılacak herhangi bir değişikliğin imza doğrulamasının başarısız olmasına neden olacak şekilde imzalamak için kullanılabilir, ancak bu tür bir değişiklikten sonra saldırgan verileri doğru şekilde yeniden imzalayamaz. DSA 'nın (Dijital İmza Algoritması) bir varyasyonudur. ECDSA, Eliptik Eğri Dijital İmza Algoritması anlamına gelir. Ayrıca ECDSA yalnızca farklı eliptik eğrilerle kullanılabilen bir yöntemi açıklar.
ECDH ve ECDSA'nın güvenliği bu nedenle iki faktöre bağlıdır:
Curve25519 belirli bir eliptik eğrinin adıdır. Diğer eğriler Curve448, P-256, P-384 ve P-521 olarak adlandırılır.
Ed25519 , EdDSA 'nın somut bir varyasyonunun adıdır. . SHA-512 ve Curve25519 kullanarak EdDSA gerçekleştirirken, bu varyasyon Ed25519 olarak adlandırılır. EdDSA, tıpkı ECDSA gibi bir imza algoritmasıdır.
Bu nedenle, bir uygulama yalnızca anahtar değişimi için ECDH'yi veya verileri imzalamak için ECDSA'yı kullandığını söylüyorsa, belirli bir eğriden bahsetmeden, genellikle NIST eğrilerini (P-256, P-384 veya P-) kullanacağını varsayabilirsiniz. 512), yine de uygulama aslında kullanılan eğriyi her zaman açıkça belirtmelidir.
Güvenlik hakkındaki sorunuza cevap vermek gerekirse: ECDH ve ECDSA'nın kavramsal güvenli anahtar değişimi ve imzalama yöntemleri olduğu hemen hemen kanıtlanmıştır, dolayısıyla güvenlik ECDH ve ECDSA'nın en büyük kısmı, birisinin genel olarak eliptik kriptografiyi nasıl kıracağına (çok az olası ama imkansız değil) veya kullanılan eğrilerde bir kusur bulup bulmadığına (daha muhtemel) bağlıdır.
Bazı insanların NIST standart eğrileri yerine Curve25519'u tercih etmesinin nedeni, NIST'in neden bu eğrileri mevcut alternatifler lehine seçtiğini açıkça belgelememiş olmasıdır. " Eğriler, görünüşte en iyi güvenlik ve uygulama verimliliği için seçilmiştir " genel ifadesi, pazarlamaya çok benziyor ve kriptografik uzmanları ikna etmiyor.
NIST ayrıca 2006'da rastgele sayı üreteci tabanlı bir eliptik eğri şifrelemesini (Dual_EC_DRB) standartlaştırdı ve New York zamanları (Edward Snowden tarafından sızdırılan notları inceledikten sonra) NIST'i standardize etmek için etkileyen NSA olduğunu iddia etti bu özel rasgele sayı üreteci. Bu jeneratörde çok büyük bir zayıflık keşfedildi ve bunun NSA tarafından o jeneratöre dayalı TLS şifrelemesini kırabilmek için yerleştirilen kasıtlı bir arka kapı olduğuna inanılıyor. Görünüşe göre ANSI, Dual_EC_DRB ilk kez kendilerine gönderildiğinde zayıflığı keşfetti, ancak bundan nasıl kaçınılacağının farkında olmalarına rağmen, ne algoritmayı geliştirdiler ne de zayıflıkları duyurdular, bu yüzden buna izin verilmediğine inanılıyor (tıkaç emri) ). Zayıflık kamuya açık hale geldiğinde, standart 2014'te geri çekildi.
Bu arka plan bilgisiyle, elbette, insanlar gizemli NIST eğrisi parametrelerinin kaynağının aslında NSA olup olmadığını merak etmeye başladılar, çünkü bu eğriler de henüz kamuya açıklanmayan gizli zayıflıkları da içeriyor olabilir, ancak NSA biliyor olabilir. onlar hakkında ve böylece bu eğrilere dayanarak kriptografiyi kırabilir. Bu iddia için hiçbir kanıt yok, hatta varsayımsal bir kanıt bile yok ama kesinlikle mümkün ve bir peri masalından daha gerçekçi görünüyor. İşte bu yüzden insanlar bu eğrilere olan güvenlerini kaybettiler ve bunların dünya çapında herhangi bir gizli servisten etkilenme ihtimalinin düşük olduğu alternatiflere geçtiler.
Curve25519, Alman-Amerikan matematikçi ve kriptolog Daniel J tarafından yayınlandı Aynı zamanda ünlü Salsa20 akış şifresini ve şimdi yaygın olarak kullanılan ChaCha20 varyantını da tasarlayan Bernstein, 2005'te. Poly1305 mesaj kimlik doğrulamasını da icat etti. Google, ChaCha20'nin Poly1305 ile kombinasyon halinde, algoritma bozulmuş olduğu için RC4'ün kaldırılması gerektiğinden sonra TLS'de kullanılmak üzere güvenli bir alternatif olduğuna karar verdi. AES blok yonga cihazını kullanmaktan çok daha az hesaplama gücü gerektirir (pil çalışma süresinden tasarruf sağladığı için mobil cihazlar için çok yararlıdır), ancak yine de karşılaştırılabilir güvenlik sağladığına inanılmaktadır. ChaCha20 / Poly1305, RFC 7905'te standartlaştırılmıştır ve bugün itibariyle TLS istemci-sunucu iletişiminde yaygın olarak kullanılmaktadır. Dolayısıyla, Bernstein bir NSA casusu olsaydı, ki bu pek olası değildir, o zamanki haliyle hepimiz mahkum olacaktık, bugün sıklıkla kullanıldığı için TLS, verileri gizli servislerin gözünden korumak için muhtemelen yararsız olacaktır.