Grundlegendes zur Authentifizierung mit ATSHA204A

Da es viele chinesische Unternehmen gibt, die das PCB-Design problemlos rückentwickeln und die .hex-Datei aus den Mikrocontrollern extrahieren können (sogar aus Embedded-Entwickler müssen ihren Produkten mehr Schutz bieten. In meinem Fall verwende ich einen STM32F103 und möchte den Krypto-IC ATSHA204A auf meiner Leiterplatte hinzufügen, um meine IP zu schützen. Auf diese Weise hoffe ich Selbst wenn sie den .hex aus der MCU holen und die Karte klonen können, funktioniert die Hex-Datei nicht, wenn sie den Krypto-Chip auf der Platine nicht erkennt.

Dieser Krypto-IC hat eine eindeutige Seriennummer wurde während der Herstellung geschrieben und kann immer gelesen werden. Es verfügt auch über einige Funktionen wie einen sicheren Bereich zum Aufbewahren geheimer Daten, die Möglichkeit, Zufallszahlen zu generieren und diese über I2C oder One-Wire an den Host zu senden, die Möglichkeit, den SHA-256-Hash eines bestimmten Strings zu berechnen und so weiter / p>

Jetzt versuche ich zu verstehen, wie ich damit arbeiten soll, da ich in Bezug auf das Thema Authentifizierung eine Art Noob bin. Nach dem, was ich beim Lesen des Datenblattes verstanden habe, sieht der Workflow folgendermaßen aus:

Personalisierung des Krypto-IC:

  1. Der sichere Bereich in der Krypto Der Chip wird vom Host (in meinem Fall STM32F103) nur einmal mit einem zufälligen geheimen Schlüssel für jedes Produkt gefüllt.

  2. Der geheime Schlüssel ist auch im Host-Flash vorhanden Speicher.

Authentifizierung der Karte (Mein Verständnis, was wahrscheinlich falsch ist):

  1. Der Host fordert eine Zufallszahl an vom Krypto-IC. Dann generiert der Host eine verkettete Zeichenfolge mit dem geheimen Schlüssel und der Zufallszahl (nonce?) Und berechnet den SHA-256-Hash davon.

  2. Nun sollte der Host die senden Zufälliger Schlüssel zurück zum Krypto-IC und erwarten von ihm, dass er denselben String mit dem geheimen Schlüssel im Krypto-IC generiert und den SHA-256-Hash davon berechnet.

  3. Crypto-IC sendet den berechneten Hash zurück an den Host und der Host vergleicht die Hashes.

  4. Wenn die Hashes übereinstimmen, validieren Sie. Wenn dies nicht der Fall ist, weigert sich der Host zu arbeiten.

Der Workflow ist wahrscheinlich falsch, aber die Hauptidee sollte etwas in der Nähe sein. Kann jemand dies erklären?

Antwort

Der Workflow ist wahrscheinlich falsch, aber die Hauptidee sollte sein etwas in der Nähe.

Nein, das ist im Grunde genommen nutzlos. Dies wäre in Ordnung, wenn Sie beispielsweise Ihren Krypto-IC verwenden würden, um die Authentizität von zu überprüfen ein Addon-Gerät (z. B. ein Drucker, der die Kassette überprüft, wurde von derselben Firma hergestellt).

Es hilft Ihnen nicht , da " weigert sich zu arbeiten " fliegt nicht, wenn jemand den Maschinencode Ihrer Firmware hat: Das Finden der Prüfung im zerlegten Maschinencode ist normalerweise nicht das schwer. Dann ist es so viel wie das Ersetzen eines " Sprungs zu „Stop and Do Nothing“ " durch eine " springe zu „start“ von nützlicher Funktionalität „"; In der Regel wird dazu ein Byte geändert.

Sie müssen den interessanten Teil Ihrer Firmware im permanenten Speicher verschlüsseln (normalerweise den integrierten Flash der MCU). Nur ein Bootloader, der den Krypto-Chip verwendet Das Entschlüsseln der Hauptfirmware würde unverschlüsselt bleiben. Beim Booten entschlüsselt der Bootloader die Firmware in den Arbeitsspeicher.

Kleines Problem: Sie müssten ziemlich clever sein, was die Hardware betrifft, damit man es nicht kann Schließen Sie einfach einen Logikanalysator zwischen Ihre MCU und den Krypto-IC an und schnüffeln Sie an den entschlüsselten Bytes.

Es gibt Problemumgehungen, die Dinge verschleiern, indem Sie wild im Speicher herumspringen, während Sie Dinge entschlüsseln usw. Das Problem ist, dass es nichts gibt Geheimnis darüber, es ist nur ein bisschen mehr Arbeit zu verstehen, wie das Herumspringen aus Maschinencode gemacht wird. (Und wenn Sie es schaffen, einen einzelnen Maschinencode in diesen Bus einzufügen, der die MCU dazu bringt, ihren gesamten RAM über einen Pin zu streamen, ist das Spiel auch vorbei; es spielt für Sie keine Rolle, ob Sie wissen, wo Dieser Code landet im RAM. Sie werden ihn später im Dump finden. Es ist nur wichtig, dass er irgendwann ausgeführt wird.)

Mit anderen Worten, wenn Sie wirklich an Ihre Firmware denken ist das kommerziell interessant (die Leute überschätzen das wild! Für Dinge, die nicht hauptsächlich Firmware sind, wie zum Beispiel für jedes Consumer-Gerät und jede industrielle Steuerung, ist es normalerweise schwierig, alle Teile zu beschaffen und die zu bauen Das gleiche / ähnliche Gerät ist billiger als das Original, und das vollständige Umschreiben der Firmware ist im Vergleich dazu oft einfach. Dann besteht Ihre einzige Chance darin, Geheimhaltung, verschlüsselten Speicher und sichere Ausführung zu integrieren (so dass RAM-Dumping unmöglich ist).

Es gibt Mikrocontroller, die das tun. Sie sind normalerweise etwas teurer.Aber, wie Sie sich vorstellen können, wenn Sie sich beispielsweise in einer Verteidigungsumgebung befinden, in der Sie die Firmware zertifizieren müssen, kann dies nicht manipuliert werden. Nun, das ist Ihr Weg.

Nintendo stellt Geräte her, bei denen der finanzielle Anreiz groß ist, dass niemand seine Firmware lesen oder sogar ändern darf:
Die Unfähigkeit der Benutzer, Software, die nicht von Nintendo lizenziert wurde, auf ihren Konsolen auszuführen, ist für ihr Geschäftsmodell von entscheidender Bedeutung. Daher ist es von größter Bedeutung, die Überprüfung der Signaturen des Spiels nicht umgehen zu können. Aus diesem Grund bietet ein Nintendo Switch mehrere Schutzschichten. Wie Sie sich vorstellen können, ist dies keine Garantie – es gab einfach Hobbyisten (nicht einmal Leute mit kriminellem / kommerziellem Interesse!), Die einen Weg dazu gefunden haben.

Aber Sie werden eines bemerken: Nur weil es schwierig ist, das Gerät zu perfektionieren, heißt das nicht, dass es sich nicht lohnt, das Klonen Ihres Geräts zu erschweren. Nach meiner bescheidenen Erfahrung kapitulieren Kloner normalerweise Sobald Sie verstehen müssen, wie ein Gerät funktioniert, um es zu kopieren, sind sie in der Lage, Ingenieure zu haben, die Ihre Arbeit mehr oder weniger erledigen können, und diese Ingenieure arbeiten normalerweise in Ihrer Branche, nicht in Ein gefälschtes Labor. Eine gute Abschreckung ist daher , die Firmware in Flash zu verschlüsseln. Es ist nicht perfekt, aber in dem Moment, in dem sie den Logikanalysator herausholen und Wochen mit dem Reverse Engineering Ihrer verbringen müssen Das In-RAM-Entschlüsselungsprotokoll, nur um etwas zu erhalten, das sie möglicherweise kopieren können, könnte ausreichen, um das finanzielle Risiko für zu hoch zu halten und sich für einige zu entscheiden etwas anderes.

Kommentare

  • " Leute überschätzen wild, dass ", aber die Leute überschätzen die Kosten für das Reverse Engineering genauso stark.
  • Vielen Dank für die großartige Antwort, ich kann nicht dafür stimmen, dass ich nicht genug Ruf habe. Ja, es ist im Grunde unmöglich, ' 100% sicher zu machen, aber das Hinzufügen einer sehr einfachen Sicherheitsmaßnahme mit einem Krypto-Chip im Wert von 0,3 US-Dollar könnte die Kosten für das Reverse Engineering von etwa dreistelligen US-Dollar auf erhöhen Vielleicht 5-stellig, während die erforderliche Zeit von einigen Tagen auf einige Monate erhöht wird, wenn die Sicherheit klug genug ausgelegt ist. Und es könnte die Hacker abwehren (abhängig vom finanziellen Potenzial des Produkts). Ich denke, ich werde weitermachen, indem ich den " interessanten Teil " der Hauptfirmware.
  • I ' skaliert Ihre Schätzung auf " und erhöht die Zeit von einer Stunde auf Vielleicht ein paar Tage ", und die Kosten sind in beiden Fällen grundsätzlich irrelevant. Die Kosten wären " im Wesentlichen kostenlos " für jeden, der ' die elektronischen Werkzeuge zum Lügen gebracht hat sowieso, und selbst wenn nicht, 200 € plus ein Laptop geben Ihnen einen vernünftigen Start.
  • Dann sollte ich aufgeben und überhaupt keinen Schutz verwenden? 🙂
  • @NotReallyaMaster, dass ' bei Ihnen liegt; Ich ' habe den gesamten letzten Absatz meiner Antwort dieser Frage gewidmet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.