C'est ainsi que fonctionnent les cartes à puce. Si vous voulez une clé USB, vous savez où la trouver.
Les cartes à puce sont conçues pour la sécurité. Ils sont conçus pour être inviolables . Ils sont conçus pour stocker des secrets et se suicider plutôt que de renoncer à leurs secrets. Vous ne pouvez pas (avec un effort raisonnable, sauf les défauts d'implémentation) en extraire les données ou les cloner.
Les cartes à puce sont (censées être) conçues de sorte que si vous essayez de contourner l'interface du logiciel et de lire directement leur mémoire, vous ne pouvez pas. Les seules interfaces externes sont les lignes d'alimentation et série. Tout le reste est à l'intérieur d'une cage de Faraday (pour contrer les mesures d'émissions) qui est protégée par une couche de produits chimiques corrosifs (acides, je pense) de sorte que si vous essayez de faire un trou dans la couche de protection, la puce (en particulier la mémoire) être endommagé au-delà de la récupération.
La puce est conçue pour tirer une puissance constante, pour éviter les fuites d'informations lors de la consommation d'énergie . Il est également conçu pour permettre aux opérations de prendre un temps constant. Les puces pour cartes à puce ne disposent donc pas d'optimisations matérielles telles que les pipelines d'instructions ou la gestion de l'alimentation pour réduire la dissipation thermique. Les puces pour cartes à puce contiennent souvent des pièces qui ne servent à rien, à rendre les émissions et la consommation d'énergie plus constantes ou plus difficiles à analyser, et à rendre la rétro-ingénierie difficile.
Un certain nombre de choses rendent les cartes à puce plus lentes que les puces non sensibles à la sécurité. Étant donné que les cartes à puce n'ont pas leur propre alimentation, elles doivent écrire dans la mémoire flash assez souvent - elles ne peuvent pas se permettre de mettre les choses en cache dans la RAM. Sinon, l'adversaire pourrait couper le pouvoir à des moments avantageux (pour lui). Le logiciel doit utiliser des algorithmes à temps constant (pour éviter les attaques de synchronisation ), pas l'algorithme le plus rapide possible. Le logiciel doit être écrit avec des redondances, au cas où l'adversaire braquerait un laser sur la carte pour retourner quelques bits en mémoire et mettre le logiciel dans un état qui n'aurait pas dû être accessible (oui, c'est une véritable attaque).
De telles mesures de sécurité ont un coût. De plus, comme les attaques continuent de s'améliorer, la conception des puces doit suivre. La plupart des types de puces deviennent de plus en plus puissants selon la loi de Moore, mais avec les cartes à puce, les améliorations techniques sont principalement absorbées par la nécessité de contrer les nouvelles attaques.
Il existe des cartes qui prennent en charge les clés RSA 4k. Mais ils sont rares. Il y a quelques années, Java Card 3 a été introduite pour prendre en charge presque toutes les fonctionnalités du langage Java; Je pense qu'une carte capable de le faire serait capable de signer avec 4k RSA. Mais ils ne l'ont pas vraiment fait, en partie parce que les améliorations techniques sont apportées par l'augmentation des protections de sécurité, et en partie parce que de nombreuses améliorations techniques ont été apportées aux cartes sans contact, qui nécessitent moins de puissance et des temps de réponse plus rapides.
Mais il n'y a pas beaucoup de marché pour le RSA 4k. Alors que les cartes à puce atteignaient ce point, ECC est devenu largement disponible. Vous pouvez obtenir le même niveau de sécurité que 4k RSA avec des clés ECC beaucoup plus petites. Le seul inconvénient du passage de RSA à ECC est la prise en charge de l'algorithme dans toute votre infrastructure, mais les périphériques intégrés tels que les cartes à puce sont la partie la plus difficile: à peu près tout ce qui concerne le serveur prend en charge ECC de nos jours.
Si vous avez vraiment besoin de quelque chose de plus puissant, il existe des dongles USB avec une puissance de calcul "réelle", qui peuvent stocker des clés cryptographiques et effectuer des opérations cryptographiques avec une interface PKCS # 11. Ces dongles n'ont pas à peu près la même résistance à la falsification physique qu'un PKCS # 11 typique. C'est un compromis entre sécurité et performances.
Lectures complémentaires: