Zum Flashen, in's EEPROM schreiben und zum Testen brauche ich einige Befehle die ich einem MC über eine serielle Verbindung mitteile, die aber für Anwender nicht verfügbar sein sollen und auch mit Packet Sniffing nicht nachvollziebar sein sollen. Deshalb suche ich Public Key Cryptography für MCs, also sowas wie SSH, aber für maximal 10 kB Flash und maximal 512 Byte RAM. Wo kann man sowas downloaden?
Dafür brauchst Du kein PK-System. Ein einfaches symmetrisches reicht. Du musst nur den Key geheim halten. Und der ist ja im Controller-Flash gespeichert. Das Flash ist doch Lock-Bits etc. geschützt. Algorithmen gibt es viele...
Und in der Software liegt der gleiche Key, wodurch dieser Schutz mit genügend krimineller Energie vermutlich verhältnismäßig schnell ausgehebelt wäre. Eine asymmetrische Verschlüsselung dürfte aber dagegen auch nur bedingt helfen, da der public-Key eben (wie der Name schon sagt) öffentlich sein muss. Effektiv wäre eine asymmetrische Verschlüsselung evtl. gegen reverse engineering der zu flashenden Daten, wenn sie nur mit dem private-Key des Controllers entschlüsselbar sind. Wir hatten vor einigen Wochen einen Thread über asymmetrische Verschlüsselung auf Mikrocontrollern, wenn ich mich nicht irre. Vielleicht ging es da aber auch nur um symmetrische. Ich meine auf jeden Fall, dass eine Verschlüsselung, besonders eine asymmetrische (wo ja mit Zahlen mit >1000 Binärstellen gerechnet werden muss), hohe Anforderungen an nicht spezialisierte µC stellt und auf langsameren Modellen kaum möglich ist. 512 Bytes RAM sind IMHO zu wenig für eine einigermaßen sichere asymmetrische Verschlüsselung. Ich gehe mal davon aus, dass du dir schon genau überlegt hast, wieso du überhaupt eine Verschlüsselung brauchst. Ich möchte hier nur mal am Rande erwähnen, dass man z.B. ohne weiteres ein selbsterstelltes oder verändertes (solange Prüfsummen u.ä. stimmen) BIOS auf normale PC-Mainboards flashen und das aktuelle auslesen kann. Es geht dennoch nichts über gut dokumentierte und standardisierte Schnittstellen. :-)
Public Key hat einen klaren Vorteil aufgrund der asymmetrischen Verschlüsselung. Zwar muss das PC-Programm den öffentlichen Schlüssel vom µC kennen, aber den kannst Du offen an die Wand hängen. Erst der private Schlüssel im µC hilft bei der Entschlüsselung von Daten vom PC an den µC, und da ranzukommen ist entschieden schwieriger. Etwas schwieriger ist es, die Daten vom µC an den PC narrensicher zu verschlüsseln.
Wenn das PC-Programm die Daten erst erzeugt und dann verschlüsselt, bringt ein PK-System gar nichts. Dann kann man die Daten mit einem Debugger kurz vor der Verschlüsselung abfangen und auch eigene Daten zum Verschlüsseln übergeben. Also nichts gewonnen. Ergo kann man auch ein einfacheres, symmetrisches Verfahren verwenden. Es ist wie mit dem Kopierschutz. Du kannst Dich verrenken wie Du willst, einen effektiven Kopierschutz gibt's nicht.
@Unbekannter: Die Lock-Bits kann man ja remote setzen/löschen; deshalb brauche ich PCC. Sonst spielen da die Anwender im Flash rum und das wäre nicht gut. @A.K.: Beispielsweise bei SSH ist die Verbindung in beide Richtungen gleich sicher; da gibt's keine Richtungs-Abhängigkeit.
@Rolf: Bei SSH werden aber beide Endpunkte als gleichwertig und sicher betrachtet, nur die Strecke dazwischen ist relevant. Das ist hier anders, der µC ist sicher, der PC evtl. nicht.
> Die Lock-Bits kann man ja remote setzen/löschen
Normal ist es der Sinn der Lockbits, dass man sie eben nicht einfach so
zurücksetzen kann (höchstens indem gleichzeitig alle Daten gelöscht
werden).
Rolf, wenn die "geheimen" Daten auf einem PC erzeugt werden, über den Du keine Kontrolle hast, kannst Du mit Verschlüsselung gar nichts verhindern. Die Verschlüsselung nützt Dir nur etwas, wenn Du z.B. per Bootloader das Flash updaten willst, der Bootloader eine Entschlüsselungsroutine inkl. geheimen Schlüssel besitzt, und Du das verschlüsselte Flash-Image auf Deinem PC, der nur unter Deiner Kontrolle steht, erzeugst. Und in genau diesem einem Fall, in dem Du mit Verschlüsselung wirklichen Schutz aufbauen kannst, nützt Dir auch eine symmetrische Verschlüsselung vollkommen. Immer daran denken: Das Problem das PK-Systeme im Gegensatz zur symmetrischen Verschlüsselung lösen, ist die einfachere Verteilung der Schlüssel, und sonst nichts. Der Schutz eine PK-Systems ist ansonsten vollkommen gleich.
@Christoph: Beim MSP430 und so ziemlich jeden anderen MC sind die Lock-Bits für das JTAG; über den UART kann man aber ALLES ausgeben oder eingeben. Und das soll nur authorisierten Personen möglich sein. Die Möglichkeit beliebige Bytes und Words von jeder Adresse zu lesen/Schreiben ist nötig, damit nicht jede Abfrage neu in den MC programmiert werden muß sondern am PC generiert werden kann; außerdem soll die Software möglichst orthogonal sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.