Dove posso trovare un elenco canonico di nomi di curve ellittiche e i loro alias?

6

Recentemente ho avuto un problema in cui ho creato un certificato client EC che utilizzava la curva sect571k1 e ho ricevuto alcuni strani errori nel tentativo di utilizzarlo come certificato client tramite Mozilla Firefox. Risulta che Firefox supporta secp521r1 ma non sect571k1 .

Avevo creato il certificato utilizzando keytool di Java, che riporta la curva come 570-bit EC key , mentre openssl x509 mi dice che è sia ASN1 OID: sect571k1 che NIST CURVE: K-571 . Un po 'di googling mi porta a RFC 4492 che elenca diverse chiavi e i loro vari alias, ma non elenca molte delle curve che vengono comunemente discusse, come djb Curve25519 e qualsiasi brainpool curve. (La% di% di co_de di Java non sembra consentire di scegliere la curva esatta, ma solo la dimensione in bit della chiave, quindi non ho davvero avuto scelta.)

My LibreSSL supporta ~ 90 curve diverse mentre il mio Java supporta ~ 50 curve diverse. Mi piacerebbe essere sicuro che qualsiasi cosa che faccio con strumenti "più capaci" saranno compatibili con i browser web, e sarebbe bello sapere quali sono gli equivalenti per tutti questi nomi.

    
posta Christopher Schultz 14.05.2018 - 18:07
fonte

1 risposta

1

Per TLS ci sono naturalmente elenco ufficiale di curve, ma non ho un elenco completo e completo di nomi di curve ellittiche di cui sono a conoscenza. Tuttavia, quando si esaminano diverse implementazioni TLS, si noterà rapidamente che esiste un numero limitato di curve ellittiche supportate da tutte le principali implementazioni.

Per la massima interoperabilità, è necessario utilizzare secp256r1 (NIST P-256) o secp384r1 (NIST P-384), poiché sono utilizzati dalla maggior parte delle CA per i propri certificati, sono supportati da tutte le principali implementazioni TLS e saranno anche contenuti in TLS 1.3 (che contiene solo un totale di cinque curve (secp256r1, secp384r1, secp521r1, curve25519 (x25519) e curve448 (x448)).

Probabilmente il Curve25519 avrà un ruolo importante in futuro, poiché ha molte proprietà desiderabili (molto veloce, facile da implementare, evita la dispersione di informazioni tramite canali laterali), ma è stato incluso solo di recente in molti importanti standard.

    
risposta data 27.06.2018 - 17:56
fonte

Leggi altre domande sui tag