Pourquoi les cartes à puce courantes comme le SLE5528 sont-elles presque toujours limitées à <16 Ko de mémoire disponible et à un processeur 8 bits très lent? Quel est le facteur limitant qui rend techniquement / économiquement impossible d'augmenter ces limites?
EDIT: Je devrais peut-être donner un peu plus d'informations sur les raisons pour lesquelles je pose cette question. Pour un client au travail, nous avons dû intégrer un module de carte à puce qui agissait essentiellement comme un magasin de clés (similaire à ceux que vous pouvez utiliser dans les bibliothèques de programmation de haut niveau comme PKCS11). Nous atteignions constamment les limites de cet appareil (ne peut pas stocker plus de quelques clés, ne peut pas stocker de clé supérieure à 1 Ko, doit attendre au moins 5 secondes avant de récupérer la liste des clés, etc.). La seule personne que j'ai pu contacter chez notre fournisseur était un fournisseur qui m'a donné la réponse "C'est ainsi que fonctionnent les cartes à puce". Ce n'est pas comme s'il n'y avait pas de véritable marché pour stocker des clés RSA de taille> 4K sur une carte. J'adorerais connaître la vraie raison derrière cela.
la source
Réponses:
C'est le prix supplémentaire causé par les fonctions de sécurité qui font monter le prix. Techniquement, vous ne pouvez pas comparer la mémoire non volatile des cartes à puce avec la mémoire flash ou eeprom normale. Par exemple, il est possible d'ouvrir une mémoire flash normale, de connecter des fils sur la puce et de lire le contenu de la mémoire. Avec les cartes à puce, cela ne devrait pas être possible (ou plus réaliste: cela devrait être si compliqué et coûteux que cela n'en vaut pas la peine).
Il en va de même pour le CPU. Les processeurs de carte à puce ont une tonne de fonctionnalités de sécurité intégrées qui ne sont pas du tout nécessaires pour les processeurs normaux. Par exemple, ils ne doivent pas divulguer d'informations sur le code qu'ils exécutent par la quantité de courant qu'ils tirent, ni divulguer quoi que ce soit par rayonnement RF.
Cela dit, tous ces stores à canal latéral ont un prix non seulement en termes de coût de fabrication, mais également de performances de calcul. Il est juste plus important d'être sûr que rapide.
Cela dit, des cartes à puce avec plus de mémoire sont disponibles. Vous pouvez les acheter avec plus de 100 Ko de mémoire. Mais ils sont chers.
La recommandation dans les commentaires de changer les clés de RSA à ECC est très bonne. La taille de clé d'ECC par rapport à RSA au même niveau de sécurité est beaucoup plus petite. Vous tirez ainsi le meilleur parti de votre mémoire non volatile limitée. L'ECC est également susceptible d'être plus rapide.
la source
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:
la source