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

Is there any plan to have this support on any other product any time soon (Nitrokey Storage in my case) ? Or did I miss it somehow ?

Yes, we want to add ECC support to NK Pro and NK Storage too sometime next year.

Hi,

by adding support to the Pro line, do you mean by way of buying a new device? I understand that the Storage firmware is upgradeable, but not the Pro firmware (barring flashing a new one via a serial connection).

regards, Antoine 

The next major version of Nitrokey Pro and Storage which supports ECC would require a new hardware. Firmware updates won't bring ECC support, other than for the Nitrokey Start.

Looking at the white paper for the OpenPGP 3.x cards I only see some references to curves based on Brainpool. As some have pointed out on the GnuPG mailing list Brainpool has a lot in common with the now untrusted NIST curves. Really hope the OpenPGP 3.x cards will support curve 25519 like the Gnuk does. I am also wondering when an actual ver. 3 smartcard will be made/sold to the public?

If NitroKey can get a device working with 25519 and storage Ill be buying a new device that day! Been using the Nitrokey Pro for about a year and love it!

Hello,

if Nitrokey Start supports Ecliptic curves, you should update it's page (https://shop.nitrokey.com/shop/product/nitrokey-start-6), as Id doesn't mention that.

 

Can you please confirm that Nitrokey Start supports EC.

Thank you for the reminder. We will update it later today. I confirm that NK Start supports ECC.

Hello,

how is the support coming along?

What do you mean?

I always used to read article in news papers but now as I am a user of net therefore from now I am using net for articles or reviews, thanks to web.
At this time I am ready to do my breakfast, after having my breakfast coming again to read other news.
Hi there would you mind letting me know which webhost you're utilizing? I've loaded your blog in 3 completely different browsers and I must say this blog loads a lot faster then most. Can you suggest a good hosting provider at a honest price? Thank you, I appreciate it!
Hey, sure we can, we use: https://www.dotplex.com/

Why would anyone even use RSA2048 by default, when RSA4096 has been out for long and is supported by all major distributions? Is the smart card on Nitrokey not compatible with 4k?

RSA-4096 with the Nitrokey Pro is reasonable fast. But with Nitrokey Start each operation takes about 8 seconds. Here ECC is a very good alternative.

Did I understand you right? As a Nitrokey Storage user, I won't get ECC as a firmware update but have to buy a new a new one?

Yes. This is because the cryptography in Nitrokey Storage is real hardware.

How about having a "loyal customer upgrade plan". Could upgrade the OpenPGP v2.1 card to a OpenGPG 3.x version.  Customers send in their old devices and pay for the upgrade?

Unfortunately this wouldn't work. Our prices are too low and we don't have margin for this. In addition, the handling of returned devices and associated payments would be extra effort which needs to be paid. It is the same as buying a new phone: You don't get points for being a loyal whatever-brand customer.

Any ETA for new Nitrokey Pro (With ECC support)?
Does Nitrokey Storage already support ECC?

Is it possible to boot OS with Nitrokey Storage? (This would be killer feature for me, so I don't have to carry extra memory stick with me)

Nitrokey Pro and Storage with ECC support should come in the next few weeks, maybe March.

Yes, you can boot operating systems from the Nitrokey Storage.

Ack!  I just ordered a Pro last week, and now a new version supporting ECC will be available in just a few weeks?!  This info should really be made [more] available on the web page - outside of the headline "Nitrokey Start Supports Elliptic Curves (ECC)"

I will be happy enough with the Pro, I imagine, but really would have preferred to have both RSA4096 and ECC.

 

RSA is becoming increasingly insecure, so if you want the storage, it will be for storing files not rsa. ;)

The storage does not interest me; I can secure commercial flash storage by other means. I only use NK for gpg and nothing else.

Excellent pieces. Keep writing such kind of information on your site. Im really impressed by your blog. Hi there, You've done an incredible job. I'll certainly digg it and personally recommend to my friends. I'm confident they'll be benefited from this site.

Just noticed, that social links in footer of the page aren't working.

They are working fine for me. But you really need to click them. Just hovering the mouse over it is not sufficient. Do you use an aggressive add-on like NoScript perhaps?

seriously, 3074 bit? is this a typo???

Correct is 3072 bit. Thank you for the notice.

Is there an estimate or at least vague idea when the new Nitrokey Pro with ECC will be available? I read "the next few weeks, maybe March." but no update since. I looking to buy a smartcard device and would be alright with waiting a bit.

We don't have an exact date yet but the device is working, we just need to get logistics sorted out. Latest would be June.

Thank you for your reply! Besides ECC, are there further improvements or changes?

No.

Does the Nitrokey Start support 3 RSA keys PLUS 3 ECC keys or 3 keys total which can be either RSA or ECC?

What about the Nitrokey Pro and Storage when they come out?

Any news when new version of NitrokeyPro will be available?

We are just launching a new NK Storage v2 this week. NK Pro v2 will be next, during this summer.

The details of the Nitrokey Storage says, that ECC is supported

"Secure key storage for encryption of emails, hard disks and files. Compatible with GnuPG/OpenPGP, S/MIME, X.509, SSH, TrueCrypt/VeraCrypt and many more. RSA-2048, RSA4096, and ECC-256 are supported."

however, the comparison sheet of the NitroKey devices says the opposite.

 

Do you need to update the table?

Thank you for the pointer. The data sheet has been updated just recently. We are going to launch an announcement soon.

Hey there,

after reading different comments and finding different information in different fact sheets I feel confused.

I want to switch away from my yubikey to a smartcard which is developed with a focus on OSS. Nitrokey seems to do the trick. What I need is Curve25519 for my GPG Key and TOTP slots.

I could not find a nitrokey product which has both. Am I right or did I miss something?

Cheers
Jakob

You are right. Curve25519 ist supported by Nitrokey Start. TOTP ist supported by Nitrokey Pro and Nitrokey Storage.

can this guide be used on Nitrokey Storage 2? If so, I would buy one.

"Update 20.11.2017: With GnuPG 2.2.2 and higher, during "generate" command you can enter the keysize "25519" to select Curve25519. In this case you can skip the following lines.) However it is not as yet possible to select the type of key directly, so the key must first be prepared."

Nitrokey Storage 2 (as well as Pro 2) doesn't support Curve25519 but Brainpool and NIST instead.

Oh, I see, in that case, is there a significant difference in level of security between, brainpool and rsa2048/rsa4096

I am just wondering how many times more secure brainpool is than RSA.

And if there will be a storage version that will support curve25519 in the future.

RSA 2048 is deprecated and shouldn't be used for keys which are assumed to be used for several years. Instead RSA-3072 and ECC-256 are recommended and secure alternatives. Of course, longer key length are even more secure. AFAIK, The particular curve (Brainpool, NIST, Curve25519) shouldn't make much of a difference in terms of security.

If that's the case, should I be upgrading my nitrokey-storages? Is that an option?

You can't upgrade Nitrokey Storage but you can use RSA-4096 with Nitrokey Storage 1 already.

Any possibility to see a Nitrokey Pro equipped w/ RSA 4096 AND Curve25519 support? Maybe in the course of 2019? For many people I know (including myself) this is really the feature combination they are waiting for. Thanks!
Sooner or later, that will come. Please subscribe our newsletter to get informed right away.
Also add a German made Elliptic Curve with a 1033 bit prime called "anders_1032_1" made by Prof. Dr. Michael Anders to all your line of products. Is the only elliptic curve the author makes openly available for commercial use at no cost. The author himself thinks there is consensus that 256 bit elliptic curves should be enough for decades. My personal opinion is that in the past NSA has made DES to be a secure algorithm but small enough to crack it... probably they are doing the same with P-256, P-384 and P-512 even if they don't contain some vulnerability themselves (safecurves web site and others seems to think otherwise) they can just be too small and the several sizes are just to make people think they have options... while all can be to small to start with... not for normal computer world but for those with billions of dollars and own laboratories to make things happen. At least in dedicated security hardware like Nitrokey should be safe to use these "anders_1032_1" elliptic curve. For what? Currently there is no software for it, but make it available and I'm sure people will start modifying GnuPG, E-mail programs and maybe others to benefit from the much higher security level of the elliptic curve... that if the current comparisons are to be hold truth should give equivalent symmetric security up to ~516 bit. Heck, those "military grade" (no such grade in most countries... but who cares?) software company's will love to have support for that for sure... "be even more secure than your bank", "your bank may use 384 bit elliptic curve but we offer support for a 1033 bit one" or even better "have the most secure bank in the country with our {insert here your random company name} encryption/ digital signature/ authentication solution, and use Nitrokey to keep the key secure on hardware". You get the idea... even if it is not really needed it will be nice to have a bigger option already available... specially if someone finds out in the near future that 256 bit elliptic curves are not so secure as they would hope. Parameters: ID: anders_1032_1 MODUL: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc73 coeff_A: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc70 coeff_B: d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d0015b3 q_MODUL: 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000184ce99c462d57387687f83e43f191166f0a07b527136b230558cabe982fc856bf6239a1c95e44421a71c553d223e1e8b6941687648973a94d4027ca61abe02331 X0: 0d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d001500acc1de24000000d02a1d001500bad000000d02a1d001500f0e000000d02a1d0015d Y0: 57029d58aeccbf320f5c337d84b7b30d8a412149ed8c526a4d9c0faa829f4ebfbb966bd235bf7dbcb21679b463ecdf73eb80031fb1855e96d37b67731863374e4295dcf904eac0f4cf22604bbfb66c6e4b1e72de7ad6a7289b6c921f8bebf2fcef346ba5f9ce1d6ce660510e345118d42168edb704be01b3ac41f7e485cfdd3df9 END

Pages

Add new comment

Fill in the blank.