Nitrokey Start supporte les courbes elliptiques (ECC)

Le RSA-2048 devient de plus en plus instable

Pour des raisons de sécurité, l'Office fédéral allemand pour la sécurité de l'information (Bundesamt für Sicherheit in der Informationstechnik ou BSI) ne recommande plus d'utiliser des clés RSA d'une longueur de 2048 bits après 2022. Cela signifie que des touches plus longues devront être utilisées dans un avenir prévisible. En supposant une période d'utilisation de cinq ans, des clés plus sûres devraient déjà être générées. Cependant, les clés RSA plus longues avec 3072 bits ou 4096 bits sont nettement plus lentes. Pour cette raison, Nitrokey Start (resp. le firmware sous-jacent Gnuk) supporte le cryptage au moyen de la cryptographie à courbe elliptique (ECC) depuis quelque temps. Cette méthode est considérée comme aussi sûre pour les petits systèmes de clés que pour les clés RSA plus longues et elle est également beaucoup plus rapide.

Notions de base de la cryptographie à courbe elliptique

Contrairement à la RSA, il existe de nombreuses formes différentes (appelées courbes) de cryptographie à courbe elliptique. La NSA a notamment participé à l'élaboration des courbes du NIST. Même s'il n'y a aucune trace de portes dérobées dans les courbes, l'utilisation d'une certaine courbe peut poser un problème de confiance. Heureusement, le Nitrokey Start supporte plusieurs courbes, à savoir NIST, SECG et Curve25519. Dans ce qui suit, nous utiliserons Curve25519 et Ed25519 qui est basé sur cela, qui ont tous deux une bonne réputation et sont considérés comme sûrs. Cet article fournit un bon point d'entrée pour acquérir une compréhension générale de la cryptographie à courbe elliptique.

Système Exigences

Pour créer des clés basées sur des courbes elliptiques au démarrage de Nitrokey, le firmware 1.2 et GnuPG version 2.1.16 ou supérieure doivent être installés.

Vous pouvez lire la version du firmware de Nitrokey Start via'gpg2 -card-status' :

> gpg --card-status
Reader ...........: 20A0:4211:FSIJ-1.2.4-67083322:0
...

Le chiffre après'FSIJ' indique l'état du logiciel - dans ce cas, il est 1.2.4. La cryptographie à courbe elliptique peut être utilisée avec Nitrokey Start à partir de la version 1.2.x. Si un firmware plus ancien est installé, vous pouvez le mettre à jour à l'aide de ces instructions.

Vous pouvez en savoir plus sur la version installée de GnuPG via'gpg2 --version'. Au moins la version 2.1.16 est requise. La dernière version de GnuPG pour Windows se trouve ici et la dernière version pour MacOS se trouve ici. Une version appropriée de GnuPG est incluse dans les distributions GNU/Linux Debian (à partir de Stretch), Arch Linux, Fedora (à partir de la version 26) et openSUSE Tumbleweed. Malheureusement, seul GnuPG 2.1.15 est actuellement inclus dans la dernière version d'Ubuntu (17.10) et son utilisation n'est donc pas encore possible. A la fin de cet article se trouvent des instructions pour mettre à jour manuellement GnuPG sur Ubuntu.

Important : GnuPG 2.0 est toujours utilisé, mais le support pour GnuPG 2.0 sera épuisé vers la fin de 2017. Tous les partenaires de communication doivent utiliser GnuPG 2.1 ou une version plus récente pour le chiffrement des courriels au moyen de ECC, sinon des problèmes d'incompatibilité pourraient survenir. Par conséquent, vous ne devriez utiliser ECC que si vous êtes sûr de pouvoir contourner ce problème.

Génération de touches au démarrage de Nitrokey

Une fois ces conditions remplies, vous pouvez commencer. (Attention : les touches existantes seront écrasées dans le processus !) Vous avez maintenant deux options. La première option est de créer la clé directement sur le Nitrokey Start. L'avantage ici est que la clé ne se trouve jamais à l'extérieur de l'appareil et ne peut donc jamais être lue. La deuxième option consiste à importer une clé précédemment générée localement. L'avantage dans ce cas est que vous pouvez stocker en toute sécurité une sauvegarde de la clé, qui peut ensuite être restaurée en cas de perte de la Nitrokey. Seule la première option est décrite ci-dessous. Pour créer une clé avec sauvegarde, vous pouvez accéder aux instructions suivantes et utiliser ces informations générales pour transférer la clé vers le Nitrokey.

Dans GnuPG il y a déjà une commande'generate', qui peut être utilisée pour créer facilement des clés sur le périphérique. (Mise à jour 20.11.2017 : Avec GnuPG 2.2.2.2 et supérieur, pendant la commande "generate" vous pouvez entrer la taille de touche "25519" pour sélectionner Curve25519. Dans ce cas, vous pouvez sauter les lignes suivantes.) Cependant, il n'est pas encore possible de sélectionner directement le type de clé, la clé doit donc d'abord être préparée. Pour cela, nous utilisons les commandes suivantes :

> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 1 22 ed25519" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 2 18 cv25519" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 3 22 ed25519" /bye

Alternativement, d'autres courbes peuvent être sélectionnées, comme décrit dans la section suivante.

Maintenant nous entrons'gpg2 -card-edit' et voyons que ed25519 ou cv25519 est sous'key attributes' au lieu de rsa2048.

> gpg2 --card-edit
Reader ...........: 20A0:4211:FSIJ-1.2.4-67083322:0
Application ID ...: D276000124010200FFFE670833220000
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 67083322
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: ed25519 cv25519 ed25519
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Ensuite, nous créons la clé.

gpg/card> admin
Admin commands are allowed

gpg/card> generate
Make off-card backup of encryption key? (Y/n) n
Please note that the factory settings of the PINs are
PIN = '123456' Admin PIN = '12345678'
You should change them using the command --change-pin
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: Jane Doe
Email address: [email protected]
Comment:
You selected this USER-ID:
"Jane Doe <[email protected]>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
gpg: key 7F8C68E1B084E169 marked as ultimately trusted
gpg: revocation certificate stored as '/home/jane/.gnupg/openpgp-revocs.d/F8C00BC1636A7D7604A31A877F8C68E1B084E169.rev'
public and secret key created and signed.

Le Nitrokey Start intègre désormais la cryptographie à courbe elliptique au lieu des clés RSA et peut être utilisé comme d'habitude.

Courbes disponibles

Dans la procédure ci-dessus, nous avons choisi la courbe ed25519 et cv25519 de Daniel Bernstein. Des courbes NIST ou SECG peuvent également être utilisées. La configuration s'effectue comme suit :

Option Courbes NIST :

> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 1 19 nistp256" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 2 18 nistp256" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 3 19 nistp256" /bye

Option Courbes SECG : Avertissement : Cette courbe n'est pas recommandée pour le cryptage de courriels mais uniquement pour les cas d'utilisation liés à Bitcoin !

> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 1 19 secp256k1" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 2 18 secp256k1" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 3 19 secp256k1" /bye

Courbe d'option25519 :

> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 1 22 ed25519" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 2 18 cv25519" /bye
> gpg-connect-agent "SCD SETATTR KEY-ATTR --force 3 22 ed25519" /bye

Mise à jour de GnuPG sur Ubuntu

Les étapes suivantes ne sont nécessaires que si vous utilisez une version d'Ubuntu plus ancienne que 18.04 ! Vous pouvez installer GnuPG 2.1.18 sur ce système avec les commandes ci-dessous. Cela implique des paquets Debian plus récents, ce qui est l'option la plus simple. Cette approche a été testée avec succès sur Ubuntu 17.10. Cependant, l'apparition de problèmes lors de l'utilisation ne peut être exclue.

$ mkdir gnupg_tmp
$ cd gnupg_tmp
$ wget http://ftp.debian.org/debian/pool/main/g/gnupg2/gnupg_2.1.18-8~deb9u1_amd64.deb
$ wget http://ftp.debian.org/debian/pool/main/g/gnupg2/dirmngr_2.1.18-8~deb9u1_amd64.deb
$ wget http://ftp.debian.org/debian/pool/main/g/gnupg2/gnupg-agent_2.1.18-8~deb9u1_amd64.deb
$ wget http://ftp.debian.org/debian/pool/main/g/gnupg2/scdaemon_2.1.18-8~deb9u1_amd64.deb
$ sudo dpkg -i *
$ cd ..
$ rm -rf gnupg_tmp

Si vous voulez annuler l'installation, vous devez exécuter les commandes suivantes :

$ sudo dpkg --remove --force-depends gnupg dirmngr gnupg-agent scdaemon
(removes manually installed packages)
$ sudo apt-get install gnupg dirmngr gnupg-agent scdaemon
(installs the appropriate packages from regular package repositories)

23.10.2019

Comments

In most of our models we are restricted by the algorithms supported by the chip vendor so that we can't support this curve anytime soon. However, for curiosity, please add a reference to find more information about that curve.
To know more about "anders_1032_1" 1033 bit elliptic curve go to the secure url address at: https://intern.fh-wedel.de/~an/crypto/accessories/domains_anders.html You can contact the creator directly at the e-mail: an [you know what to put here] fh-wedel [dot] de if you have any questions or doubts about these elliptic curve.
how are the changes to start with new hardware/chip to support curve25519 in stick with more features (even PGP and FIDO2) next?

Pages

Add new comment

Fill in the blank.