it-swarm.dev

ECC in (Open) PGP

Com'è il supporto per ECC (crittografia a curva ellittica) in (Open) PGP finora? Sembra che GnuPG (The GNU Privacy Guard) non ha un'implementazione ufficiale - ma ho trovato progetto gnupg-ecc ( GnuPG abilitato ECC per RFC 6637) su Codice Google:

Questo progetto ha dato vita al supporto della crittografia a curva ellittica in OpenPGP come funzionalità per l'utente finale. Gli utenti possono semplicemente selezionare un'opzione di generazione della chiave ECC in

gpg2 --gen-key

e quindi usa la chiave pubblica generata come normalmente userebbe qualsiasi altra chiave pubblica, come mostrato qui .

So che Symantec supporta ECC. Ci sono ragioni per non usare ECC?

[~ ~ #] modifica [~ ~ #]

Ho fatto qualche ricerca in più e ho scoperto che ECC ha trovato la strada per la linea principale di gnupg da molto tempo, ma solo nella versione per sviluppatori :

$ gpg2 --expert --gen-key
gpg: NOTE: THIS IS A DEVELOPMENT VERSION!
gpg: It is only intended for test purposes and should NOT be
gpg: used in a production environment or with production keys!
Please select what kind of key you want:
    (1) RSA and RSA (default)
    (2) DSA and Elgamal
    (3) DSA (sign only)
    (4) RSA (sign only)
    (7) DSA (set your own capabilities)
    (8) RSA (set your own capabilities)
    (9) ECDSA and ECDH
   (10) ECDSA (sign only)
   (11) ECDSA (set your own capabilities)
Your selection?`
24
esskar

Vedo due motivi principali per cui potresti non voler usare ECC :

Motivo pratico: la comunicazione coinvolge necessariamente due parti, il mittente e il destinatario. ECC può essere utilizzato solo se supportato sia dal mittente che dal destinatario. Come hai notato, le implementazioni esistenti e distribuite non sono ancora all'altezza; se usi una chiave pubblica ECC, le persone potrebbero inviarti messaggi crittografati con quella chiave o verificare le tue firme con quella chiave, solo se la loro implementazione OpenPGP include il codice pertinente.

Quindi la tua scelta di ECC o meno ECC dipende dal fatto che tu voglia massimizzare l'interoperabilità o preferisca essere un "early adopter" (anche se nel caso di ECC, gli early adopter sono già lì; ECC sta diventando mainstream).

Motivo morale: matematicamente, non abbiamo prove che nessuno degli algoritmi crittografici che impieghiamo sia veramente robusto contro gli attacchi. Non sappiamo nemmeno se è matematicamente possibile essere robusto contro gli attacchi. In questo momento, l'unico metodo che abbiamo per valutare la forza di qualsiasi algoritmo crittografico è definirlo, e quindi lasciare che molti crittografi lavorino su di esso per alcuni anni. Se nessuna di queste persone intelligenti ha trovato qualcosa di sbagliato nell'algoritmo, allora puoi sapere che se l'algoritmo è debole, almeno non è ovviamente debole.

Le curve ellittiche sono state proposte come oggetti adatti alla crittografia nel 1985 (da Koblitz e Miller, indipendentemente). La matematica delle curve ellittiche è stata studiata per circa 40 anni prima. Quindi l'ECC può sfoggiare circa 70 anni di esposizione, 30 dei quali in un ambiente decisamente crittografico. Non è male.

Fattorizzazione intera , su cui si basa RSA, può vantare 35 anni di esposizione crittografica (RSA è stata proposta nel 1978) e più di un urlo 2500 anni per il sottostante matematica. Pertanto si può sostenere che la sicurezza di RSA è "più compresa" rispetto a quella delle curve ellittiche.


Personalmente, penso che ECC sia abbastanza maturo per essere implementato, e poiché ECC è molto di moda, le implementazioni diventano all'ordine del giorno e possiamo aspettarci che GnuPG si allineerà presto. Pertanto, la mia raccomandazione è: ECC va bene, purché tu sia pronto ad affrontare alcuni problemi di interoperabilità per alcuni anni.

(Un punto oscuro della distribuzione ECC è che ci sono pochissime implementazioni "generiche" di ECC; la maggior parte delle implementazioni sono specifiche di un insieme ristretto di curve supportate, spesso limitato alle due curve NIST P-256 e P-384. La scelta della curva perché la tua chiave ha quindi un impatto non banale sull'interoperabilità. P-256 va bene per la sicurezza, quindi puoi usarla e smettere di preoccuparti.)

25
Thomas Pornin

Attualmente, ECC è supportato in GnuPG 2.1 beta. Puoi compilarlo dal sorgente e vedere di persona che sono supportate le seguenti curve:

nistp256 nistp384 nistp521 brainpoolP256r1 brainpoolP384r1 brainpoolP512r1 secp256k1

9
Adrian

in GPG, per sicurezza, si starebbe lontani dal brainpool e dalle curve nist. le curve edDSA, montgomery ed edwards vanno bene. per ora ed25519 è stato schierato senza subrterfuge.

Anche se è solo per la firma/certificazione/autenticazione. Seguirà la crittografia.

le mailing list su ietf.org sono punti di partenza brillanti e controllano anche cryp.to.

L'uso di ECC con l'implementazione folle è peggio che usare anche RSA.

6
Njomsky