web-dev-qa-db-fra.com

Comment peut-il être facile d'écrire mais "impossible" d'extraire la clé privée d'un jeton de chiffrement?

Un certain nombre de crypto-dongles affirment qu'il est impossible d'extraire la clé privée stockée une fois écrite.

Yubico :

Les informations de la clé AES YubiKey ne peuvent jamais être extraites d'un appareil YubiKey - uniquement programmées pour lui.

Nitrokey :

Outre les solutions logicielles ordinaires, les clés secrètes sont toujours stockées en toute sécurité à l'intérieur de la Nitrokey. Leur extraction est impossible, ce qui rend Nitrokey immunisé contre les virus informatiques et les chevaux de Troie.

L'affirmation telle qu'elle est littéralement énoncée semble être un non-sens marketing. Le dongle lui-même a accès à la clé privée afin de pouvoir la lire.

Pourtant, c'est une affirmation intéressante. Le choix des mots - "jamais", "toujours", "impossible" - suggère qu'il y a quelque chose qui peut être prouvé ici. Ou peut-être que je leur donne trop de crédit. Y a-t-il quelque chose à cela? Qu'Est-ce que c'est?

Je suppose qu'ils signifient qu'il est impossible d'extraire la clé privée sans altérer physiquement le crypto-dongle. Il semble plausible que l'on puisse montrer qu'il n'y a tout simplement pas de canal physique pour relayer la clé privée à l'extérieur de l'appareil. Cela complique l'écriture de la clé et je ne vois pas comment cela pourrait être résolu. Une façon que je pouvais voir est de ne pas écrire la clé mot pour mot, mais en quelque sorte de lui permettre d'être aléatoire, mais je crois que ces appareils permettent réellement d'écrire la clé.

Ou peut-être y a-t-il plus de substance que cela. Pour tout ce que je sais, ces appareils utilisent un mécanisme exotique pour stocker des bits qui ne peuvent vraiment pas être lus directement sans détruire l'appareil.


J'ai trouvé une réponse ici suggérant qu'il y a de la vraie viande à cela, mais elle n'entre pas dans les détails.

https://security.stackexchange.com/a/92796/4588

Extraire des clés privées directement de la carte est presque impossible. Avec des travaux de destruction de paquets d'acide et de microscopie électronique, une équipe qualifiée et suffisamment de temps, d'argent et de chance, vous pouvez en théorie extraire des clés, mais cela implique non seulement un accès physique mais un scénario où la carte sera physiquement détruite.

38
Praxeolitic

Eh bien "impossible" est impossible à prouver, c'est pourquoi dans la réponse liée, j'ai dit "presque impossible", peut-être même que cela le surestime. En utilisant un périphérique matériel sécurisé, le vecteur d'attaque passe de "malware installé à distance sur l'hôte vole le secret" à "l'attaquant doit physiquement avoir accès au périphérique matériel et supprimer de manière destructive la clé privée". Ce dernier n'est certes pas impossible, mais il est beaucoup plus difficile.

Ces clés USB fonctionnent de manière très similaire aux cartes à puce. J'ai plus d'expérience avec les cartes à puce, je vais donc l'utiliser dans la réponse, mais la plupart des mêmes principes s'appliquent. En fait, beaucoup de ces dongles usb utilisent une carte à puce SoC en interne. Ils sont bon marché, programmables et offrent une sécurité robuste, donc dans de nombreuses applications, il est logique d'utiliser simplement une carte à puce en interne plutôt que d'essayer de construire quelque chose de nouveau.

Une carte à puce programmable est un ordinateur complet sur une seule puce ou un système sur puce (SoC). Maintenant, c'est un ordinateur très limité mais toujours un ordinateur. La connexion au "monde extérieur" de la carte à puce est une interface série simple à faible privilège. La carte reçoit une commande (plus comme une demande) de l'hôte et la carte répond avec une réponse. Les commandes sont limitées à ce que la carte a été programmée pour faire.

Donc, si nous avons une carte à puce programmée pour signer numériquement une instruction (comme une demande de paiement dans une carte de crédit EMV), l'hôte enverra une demande via l'interface série à la carte composée d'une commande et de quelques entrées. La carte a analysé la commande et en supposant qu'elle est valide, elle renvoie une signature numérique à l'hôte via la même interface. À bien des égards, il ressemble à une relation client-serveur avec la carte à puce étant le serveur et le système hôte étant le client. La clé privée ne quitte jamais la carte pendant le processus. C'est juste une demande, une réponse. L'hôte n'a aucun mécanisme pour forcer la carte à puce à retourner la clé privée ou à faire tout ce pour quoi elle n'était pas programmée. Bien sûr, cela suppose qu'il n'y a pas de commande "veuillez me donner toutes les clés privées" qui serait évidemment inutile et n'apporterait aucune sécurité. La carte à puce peut avoir un utilisateur assigné PIN et le PIN fait partie du format de commande. La carte à puce vérifie le PIN et si elle n'est pas valide, elle rejettera la commande. Elle possède sa propre mémoire interne afin qu'elle puisse enregistrer en interne le nombre de tentatives non valides et être programmée pour s'arrêter (ou dans des cas extrêmes effacer la carte).

La programmation (clignotante) d'une carte à puce se fait avant l'expédition. Bien sûr, si un attaquant pouvait simplement reprogrammer la carte à puce pour exécuter un programme "donnez-moi toutes vos clés", il ne serait pas sécurisé, donc la plupart des cartes utilisent une sorte de bit de sécurité en mémoire à écriture unique. La carte est donc programmée et le bit d'écriture défini. La carte rejettera alors toute tentative future de reprogrammation.

Essayez de ne pas vous accrocher à une carte à puce en faisant exactement cela. Ce sont des appareils programmables, donc leur mise en œuvre variera, mais le concept général est que vous avez cet ordinateur autonome avec son propre stockage interne sécurisé qui a été programmé pour répondre aux demandes d'un hôte via une simple interface à faible autorisation. Je suis d'accord que le mot "impossible" est du marketing mais ce n'est pas si loin de la vérité. On pourrait dire pratiquement impossible. La conception très basique et la fonctionnalité verrouillée signifient que vous vous retrouvez avec un appareil durci difficile à attaquer.

Cependant l'ancien axiome " il n'y a pas de sécurité de l'information sans sécurité physique " s'applique toujours. La clé privée se trouve toujours physiquement dans la carte à puce. Avec un accès physique et une motivation suffisante, vous pouvez faire à peu près n'importe quel secret. Comme dans l'exemple lié, la carte à puce peut être contournée et la clé lue directement dans la mémoire physique. Une méthode courante consiste à prendre la carte, à retirer le SoC et à utiliser la déconstruction à l'acide pour brûler l'emballage. En utilisant un microscope électronique et suffisamment de compétences, vous pouvez localiser l'endroit sur le silicium qui stocke les clés, connecter les fils et les lire. Cela a été fait, ce n'est certainement pas impossible, mais dans la plupart des cas, ce n'est pas le type d'attaque ou d'attaquant contre lequel nous essayons de nous défendre. Honnêtement, si votre attaquant allait à ce niveau, je serais plus inquiet pour une clé de 5 $ .

46
Gerald Davis

Les modules cryptographiques matériels comme celui-ci sont réglementés par un ensemble de normes appelées FIPS 140-2 qui spécifient les longueurs ridicules auxquelles les appareils doivent se rendre pour protéger les clés privées à l'intérieur.

Il existe quatre niveaux FIPS 140-2 , résumés brièvement comme suit:

Niveau 1: Il fait des choses crypto-y de base.

Niveau 2: "Inviolable"; il est impossible d'extraire ou de modifier les clés privées sans endommager l'appareil de manière évidente (ex: briser un sceau, ressouder les broches, etc.).

Niveau 3: Ces appareils devraient avoir une "forte probabilité de détecter l'accès physique" et ils mettent à zéro les clés en cas de falsification - pensez aux racks de serveurs avec capteurs sur les panneaux d'accès. Ou dans le cas de cool nouvelle recherche DARPA , des circuits qui se dissolvent lorsqu'ils sont exposés à l'air et à l'humidité.

Niveau 4: Renforce les exigences de détection de sabotage et de remise à zéro des clés. Doit également être très résistant aux attaques qui utilisent des températures et des tensions extrêmes.


Alors quand tu dis

Pourtant, c'est une affirmation intéressante. Le choix des mots - "jamais", "toujours", "impossible" - suggère qu'il y a quelque chose qui peut être prouvé ici.

Je suppose qu'ils signifient "éprouvés" par rapport aux normes FIPS 140-2. Et en fait, en cliquant sur les liens que vous avez fournis, ces deux appareils sont certifiés FIPS 140-2 Niveau 2.

23
Mike Ounsworth