web-dev-qa-db-fra.com

Comment le stockage de clés privées GPG / SSH sur des cartes à puce se compare-t-il aux clés USB ordinaires?

J'ai une compréhension de base de la cryptographie à clé privée/publique et je l'utilise depuis longtemps pour les connexions SSH et le cryptage/signature GPG. Cependant, j'ai toujours conservé la clé privée/les porte-clés à l'emplacement par défaut, dans mon répertoire personnel (.gnupg et .ssh). Évidemment, je peux transférer les clés sur un lecteur USB, ce qui signifie théoriquement que ni un enregistreur de frappe sur mon ordinateur, ni le lecteur USB seul ne suffira pour accéder à ma clé privée.

Quels sont les avantages des cartes à puce capables de stocker des clés privées et des appareils tels que YubiKey Neo (qui semble être une carte à puce + un lecteur USB dans un seul dongle) offrent ci-dessus le stockage de clés privées sur un simple ancien clé USB?

La carte à puce "révèle-t-elle" la clé privée à des applications comme SSH ou GPG? Si c'est le cas, il semble que quiconque possède le PIN et l'appareil lui-même puisse toujours accéder à la clé privée et n'offre aucun avantage par rapport aux lecteurs USB ordinaires. Sinon, comment fonctionnent exactement les applications sans savoir la clé privée?

26
user3243135

La carte à puce "révèle-t-elle" la clé privée à des applications comme SSH ou GPG? Si c'est le cas, il semble que quiconque possède le PIN et l'appareil lui-même puisse toujours accéder à la clé privée et n'offre aucun avantage par rapport aux lecteurs USB ordinaires. Sinon, comment fonctionnent exactement les applications sans savoir la clé privée?

Idéalement, non.

Le principal avantage d'un tel jeton est qu'il garde sa clé secrète et effectue une activité de chiffrement (comme le déchiffrement, la signature, etc.) sur le périphérique matériel lui-même, sans jamais divulguer la clé privée.

Ainsi, par exemple, vous pouvez demander la clé publique à l'appareil et utiliser cette clé publique pour crypter un fichier (avec ou sans l'appareil présent). Mais pour décrypter le fichier, vous devez brancher le token et demandez-le pour décrypter le fichier pour vous.

Les détails d'implémentation réels varient selon les appareils, mais c'est l'idée générale de ce que vous voulez faire.

De plus, ces jetons de chiffrement utilisent souvent des mesures de sécurité physiques pour empêcher un attaquant de démonter l'appareil et de récupérer directement la clé. Il n'est pas possible de protéger avec une certitude à 100%, mais des mesures telles que l'utilisation d'une conception à puce unique (au lieu d'inclure une puce de mémoire discrète) et de généreuses portions d'époxy sont courantes.

20
tylerl

Cartes à puce OpenPGP ne dévoilez pas vos clés secrètes. Les tâches de signature et de déchiffrement de base sont effectuées par le processeur cryptographique intégré de la carte et ne sont disponibles qu'après avoir entré votre code PIN.

Imaginez que votre client OpenPGP (par exemple, GnuPG) envoie une demande "décrypter ce bloc de chiffrement" qui est ensuite effectuée par la carte (le chiffrement réel est effectué à l'aide d'un chiffrement de bloc beaucoup plus rapide et sur le processeur de l'ordinateur), ou " signer cet ID utilisateur de cette clé ", qui est à nouveau effectué par la carte.

Si la clé a été générée sur la carte, elle ne quittera jamais la carte. Alternativement, les clés peuvent être générées sur votre ordinateur et téléchargées sur la carte - elles ne quitteront plus la carte, mais pourraient être extraites de l'ordinateur qu'elles 'ai été créé le.


Clés USB stocke la clé entière accessible. S'il est connecté à votre ordinateur, les clés privées peuvent être téléchargées depuis celui-ci.

7
Jens Erat

Honnêtement, tout dépend vraiment de la carte elle-même. Les dispositifs de sécurité externes pour ce travail prennent généralement l'une des trois formes suivantes: stocker les secrets sur lesquels le PC calcule; faire tout le stockage secret et le calcul eux-mêmes; quelque chose entre les deux. Les cartes qui offrent une réelle sécurité font la signature avec des clés intégrées, de préférence générées sur l'appareil aussi. L'idée est que la clé ne quitte jamais l'appareil en aucune circonstance car le client ne peut pas faire confiance (c'est-à-dire les logiciels malveillants).

Leur utilisation vous aide de deux manières:

  1. Les logiciels malveillants sur PC sont réduits à la falsification de messages alors que la carte à puce est interne. Selon la configuration, la personnalisation du logiciel malveillant peut également nécessiter une réduction supplémentaire de vos risques.

  2. La perte d'une carte à puce à un voleur ne devrait pas vous inquiéter autant que la perte d'un ordinateur portable ou d'une clé USB pleine de secrets.

  3. Vous pouvez mettre une carte à puce dans le portefeuille que vous transporterez probablement de toute façon.

  4. Beaucoup d'ordinateurs portables commerciaux ont des lecteurs de cartes à puce de nos jours.

Une fonctionnalité particulière que vous devriez rechercher est un pavé PIN intégré au lecteur. La raison en est que cela peut vous aider à établir un chemin de confiance où votre PIN va directement à la carte à puce. Sans cela, vous pourriez l'avoir entré dans un ordinateur infesté de logiciels malveillants via le clavier. Un chemin de confiance aurait empêché les compromis via le mot de passe/broche de certaines clés USB de chiffrement "certifiées". Un exemple de celui avec cette fonctionnalité est dans le lien ci-dessous (avec les anciens liens vers les instructions de la carte à puce GPG).

http://www.gnupg.org/howtos/card-howto/en/ch02s02.html

OpenSSH avec des cartes à puce ici.

http://www.gooze.eu/howto/using-openssh-with-smartcards

3
Nick P