Warum sind gängige Smartcards wie die SLE5528 fast immer auf <16 KB verfügbaren Speicher und einen sehr langsamen 8-Bit-Prozessor beschränkt? Was ist der begrenzende Faktor, der es technisch / wirtschaftlich unmöglich macht, diese Grenzen anzuheben?
EDIT: Vielleicht sollte ich etwas mehr Hintergrund geben, warum ich diese Frage stelle. Für einen Kunden bei der Arbeit mussten wir ein Smartcard-Modul integrieren, das im Grunde genommen als Keystore fungierte (ähnlich denjenigen, die Sie in übergeordneten Programmierbibliotheken wie PKCS11 verwenden können). Wir sind ständig an die Grenzen dieses Geräts gestoßen (können nicht mehr als ein paar Schlüssel speichern, können keinen Schlüssel größer als 1k speichern, müssen mindestens 5 Sekunden warten, bevor wir die Schlüsselliste abrufen usw.). Die einzige Person am Ende unseres Lieferanten, die ich erreichen konnte, war ein Anbieter, der mir die Antwort "So funktionieren Smartcards" gab. Es ist nicht so, dass es keinen wirklichen Markt für die Speicherung von RSA-Schlüsseln mit einer Größe von> 4 KB auf einer Karte gibt. Ich würde gerne den wahren Grund dafür kennen.
quelle
Antworten:
Es ist der zusätzliche Preis, der durch die Sicherheitsfunktionen verursacht wird, die den Preis in die Höhe treiben. Technisch gesehen kann man den nichtflüchtigen Speicher von Smartcards nicht mit normalem Flash- oder EEPROM-Speicher vergleichen. Zum Beispiel ist es möglich, einen normalen Flash-Speicher zu öffnen, Drähte auf den Chip zu kleben und den Speicherinhalt auszulesen. Mit Smartcards sollte dies nicht möglich sein (oder realistischer: Es sollte so kompliziert und teuer sein, dass es sich nicht lohnt).
Gleiches gilt für die CPU. Smartcard-CPUs verfügen über eine Vielzahl integrierter Sicherheitsfunktionen, die für normale CPUs überhaupt nicht erforderlich sind. Sie sollten zum Beispiel keine Informationen über den Code, den sie ausführen, durch die Menge an Strom verlieren, die sie ziehen, oder irgendetwas durch HF-Strahlung verlieren.
Alle diese Seitenkanalverkleidungen haben jedoch nicht nur einen Preis für die Herstellungskosten, sondern auch für die Rechenleistung. Es ist nur wichtiger, sicher zu sein als schnell zu sein.
Es sind jedoch Smartcards mit mehr Speicher verfügbar. Sie können sie mit mehr als 100 KB Speicher kaufen. Sie sind jedoch teuer.
Die Empfehlung in den Kommentaren, die Schlüssel von RSA auf ECC zu ändern, ist sehr gut. Die Schlüsselgröße von ECC im Vergleich zu RSA bei gleichem Sicherheitsniveau ist viel kleiner. So holen Sie mehr aus Ihrem begrenzten nichtflüchtigen Speicher heraus. ECC ist wahrscheinlich auch schneller.
quelle
So funktionieren Smartcards. Wenn Sie einen USB-Stick möchten, wissen Sie, wo Sie ihn finden.
Smartcards sind auf Sicherheit ausgelegt. Sie sind manipulationssicher . Sie sollen Geheimnisse speichern und Selbstmord begehen, anstatt ihre Geheimnisse preiszugeben. Sie können die Daten nicht (mit angemessenem Aufwand, außer bei Implementierungsfehlern) daraus extrahieren oder klonen.
Smartcards sind (sollen) so konzipiert, dass Sie dies nicht können, wenn Sie versuchen, die Softwareschnittstelle zu umgehen und ihren Speicher direkt zu lesen. Die einzigen externen Schnittstellen sind Strom- und serielle Leitungen. Alles andere befindet sich in einem Faradayschen Käfig (um Emissionsmessungen entgegenzuwirken), der durch eine Schicht ätzender Chemikalien (Säuren, glaube ich) geschützt ist. Wenn Sie also versuchen, ein Loch in die Schutzschicht zu bohren, wird der Chip (insbesondere der Speicher) bis zur Wiederherstellung beschädigt werden.
Der Chip ist so konstruiert, dass er konstante Leistung verbraucht , um zu vermeiden , dass Informationen durch den Stromverbrauch verloren gehen . Es wurde auch so entwickelt, dass der Betrieb eine konstante Zeit in Anspruch nimmt. Smartcard-Chips verfügen also nicht über Hardwareoptimierungen wie Anweisungspipelines oder Energieverwaltung, um die Wärmeableitung zu reduzieren. Smartcard-Chips enthalten häufig Teile, die eigentlich keinen Zweck erfüllen, um die Analyse von Emissionen und Stromverbrauch konstanter oder schwieriger zu machen und das Reverse Engineering zu erschweren.
Eine Reihe von Dingen macht Smartcards langsamer als nicht sicherheitsrelevante Chips. Da Smartcards kein eigenes Netzteil haben, müssen sie ziemlich oft in den Flash-Speicher schreiben - sie können es sich nicht leisten, Dinge im RAM zwischenzuspeichern. Andernfalls könnte der Gegner die Stromversorgung zu für ihn vorteilhaften Zeiten unterbrechen. Software muss zeitkonstante Algorithmen verwenden (um Timing-Angriffe zu vermeiden ), nicht den schnellstmöglichen Algorithmus. Software muss mit Redundanzen geschrieben werden, falls der Gegner einen Laser auf die Karte richtet, um einige Bits im Speicher umzudrehen und die Software in einen Zustand zu versetzen, der nicht erreichbar sein sollte (ja, das ist ein echter Angriff).
Sicherheitsmaßnahmen wie diese sind kostenpflichtig. Da sich die Angriffe weiter verbessern, muss das Design der Chips mithalten. Die meisten Arten von Chips werden nach dem Gesetz von Moore immer leistungsfähiger, aber bei Smartcards werden die technischen Verbesserungen hauptsächlich durch die Notwendigkeit absorbiert, neuen Angriffen entgegenzuwirken.
Es gibt Karten, die 4k RSA-Schlüssel unterstützen. Aber sie sind ungewöhnlich. Vor einigen Jahren wurde Java Card 3 eingeführt, um fast alle Funktionen der Java-Sprache zu unterstützen. Ich denke, eine Karte, die dazu in der Lage ist, kann mit 4k RSA signieren. Aber sie haben es nicht wirklich geschafft, teils weil technische Verbesserungen durch zunehmenden Sicherheitsschutz aufgegriffen werden, und teils weil viele technische Verbesserungen in kontaktlose Karten gesteckt wurden, die weniger Stromverbrauch und schnellere Reaktionszeiten erfordern.
Aber es gibt nicht viel Markt für 4k RSA. Als Smartcards diesen Punkt erreichten, wurde ECC allgemein verfügbar. Sie können dieselbe Sicherheitsstufe wie 4k RSA mit viel kleineren ECC-Schlüsseln erhalten. Der einzige Nachteil beim Wechsel von RSA zu ECC ist die Unterstützung des Algorithmus in Ihrer gesamten Infrastruktur, aber eingebettete Geräte wie Smartcards sind der schwierigste Teil: Heutzutage unterstützt so ziemlich alles, was serverseitig ist, ECC.
Wenn Sie wirklich etwas Stärkeres benötigen, gibt es USB-Dongles mit „echter“ Rechenleistung, die kryptografische Schlüssel speichern und kryptografische Operationen mit einer PKCS # 11-Schnittstelle ausführen können. Diese Dongles haben nicht annähernd die gleiche physische Manipulationsbeständigkeit wie ein typisches PKCS # 11. Es ist ein Kompromiss zwischen Sicherheit und Leistung.
Weiterführende Literatur:
quelle