Hallo Zusammen, ich möchten gerne für einen Chinesen Binarys (nicht Quellcode) für STM32 Boards pro Stück verkaufen. Ich selbst kann die Software einspielen (mit Kopierschutz), allerdings sollen auch Kunden später die Software aktualisieren können... Doof wäre natürlich wenn der Chinese 3 Stück bezahlt und 30 verkauft, nachdem er die Binary hat. Wäre folgendes sinnvoll? 1. Beim ersten Aufspielen der Software bekommt jedes Board eine Etikette mit einer ID (z.B. "A456A":)), die auch im Flash-ROM steht und im EPROM steht eine zugehörige Hidden-ID (z.B. "B456B") 2. ID im Flash und Hidden-ID stehen in irgendeinem Zusammenhang, kann ich mir ja ausdenken. Ob der Zusammenhang stimmt wird bei jedem Start überprüft. 3. Kunden die die Software Updaten wollen, gehen zu Projekt-Homepage, geben Ihre ID an und bekommen eine Binary mit dieser ID zum bestehend Hidden Key. (in der Binary kann man das ja noch maschinell reinschreiben, wenns immer an der gleiche Stelle steht. Die Homepage hat eine Datenbank aller ID's und Hidden-IDs). Dadurch würde man 1. Auf der Homepage bemerken, wenn plötzlich viele Kunden mit der gleichen ID die Software updaten wollen. 2. Das unerlaubt Verfielfältigen des Boards erschweren. EEprom darf man nicht vergessen. (kann man den überhaupt beschreiben mit normalen Programmiergeräten?) Oder gibt es andere/bessere Wege so etwas zu berwerkstelligen? Nur Vertrauen wär nicht gut Vielen Dank Jens
Jens schrieb: > Oder gibt es andere/bessere Wege so etwas zu berwerkstelligen? Nicht beim Chinesen herstellen lassen? Wer die Herstellung aus der Hand gibt, kann nie sicher sein, wo die Daten überall hinwandern.
hallo, die herstellung kann ich nicht übernehmen.
Jens schrieb: > hallo, die herstellung kann ich nicht übernehmen. Dann beschreib doch bitte mal ein bisschen mehr, was du willst. Suchst du eine reine Software-Implementation, oder lässt sich mit der Hardware tricksen (EPROM, burrowed Widerstände, versteckte Prüfleitung in Multilayer,...) Wer soll die Hardware produzieren? Software selbstgestrickt? :-)
Ich würde gar keine Zahlen verstecken, sondern irgendwelche Takte zählen oder Zeiten prüfen, Spannung abfragen, Prüfzahlen bilden, notfalls EEPROM frisch beschriften (damit er als "Spezialteil" sichtbar ist)... Ein Programm haben findige Studenten selbst mit Zettel und Codetabelle in wenigen Tagen geknackt. Laufzeiten optimieren ist nicht nicht ganz so einfach.
Jens schrieb: > Oder gibt es andere/bessere Wege so etwas zu berwerkstelligen? Die Flash-Routinen für das Software-update könnten ja schon beim Prozessorhersteller einschließlich Krypto-Algorithmus aufgespielt werden. Diese dürfen danach nicht mehr von außen lesbar sein. (Partieller Zugriffsschutz). Liefern brauchst Du dann nur die Prozessoren und das Signierte Binary. Wenn die Signatur nicht zum geschützten Block paßt wird die SW nicht ausgeführt. Hilft natürlich nur solange wie der Prozessorhersteller und Dein Hardwarelieferant nicht kooperieren. Gruß Anja
Kann er nur die Software beeinflussen oder darf er auch an die Hardware?
hat eigentlich keiner seinen ersten post gelesen?
Der "Chinese" ist ja nicht doof, so ein Trivial-Verfahren ist in ein paar Minuten erledigt: Er geht zu Deiner Homepage, und lässt sich zwei Binaries mit verschiedenen IDs generieren. Die beiden Binaries vergleicht er und findet so die Stelle mit der ID. Nun hat er es ganz einfach und schaut mit dem Disassembler nach, wo diese ID abgefragt und verglichen wird. In der Nähe des Vergleichs steht ein bedingter Sprung. Diesen bedingten Sprung ändert der schlaue Chinese in einen festen Sprung oder in ein Nop, je nach dem. Ergebnis: Eine Software der die ID schnurz piep egal ist. So hat man schon vor 20 Jahren Software gecrackt.
vorab: es gibt keinen perfekten kopierschutz.. wenn du es so machst wie du beschreibst, wird der hersteller schnell merken wo die "hidden" id ist und schon vor einer update.bin auf den zusammenhang kommen.. mit ein wenig assambler wird er einen "kopierschutz" überspringen.. du könntest das nur machen wenn du die boards programmierst, ohne das der hersteller die bin bekommt. so hast du nicht nur die gewissheit das er nicht mehr macht als lizenziert, und die welt ist viel einfacher... wenn es so sein muss kannst du, die programmierapplikation, die der hersteller zum programmieren seiner boards nutzt, selber liefern. stm32 µc haben eine uniqueid viele andere auch.. die programmierapplication flasht erstmal eine bin aufs board die der programmierapplication diese unique id sendet. die programmierapplication erstellt eine bin die nur im zusammenhang mit der unique id läuft und flasht diese auf das board. zusätzlich kannst du eigene ids verwenden sodass du für deine datenbank eigene und einfachere ids hast. gruß
jo Irgendeiner ... zu meinem post: nicht vergessen die pcapp kann man auch "knacken" :D
Wie wäre es mit nem Cryptoverfahren? Nen AES-Bootloader würde sich anbieten. Der Schlüssel ist dann gerätespezifisch und den kennst nur du.
auch der AES bootloader muss vorher aufgespielt werden.
ED schrieb: > auch der AES bootloader muss vorher aufgespielt werden. Wenn ihm sein Werk so heilig ist, dann sollte er das erste Flashen der Boards selber unternehmen.
Skript Kiddy schrieb: > ED schrieb: >> auch der AES bootloader muss vorher aufgespielt werden. > > Wenn ihm sein Werk so heilig ist, dann sollte er das erste Flashen der > Boards selber unternehmen. ist auch das einzigst "sichere". aber das wird wohl nicht möglich sein.
ED schrieb: > aber das wird wohl nicht möglich sein. Warum nicht? Platinen fertigen und bestücken lassen und dann per Post zu ihm. Er kann dann das Erstflashen durchführen und dann das Produkt ausliefern. Dann sollten Updates relativ sicher durchführbar sein.
aus dem ersten post geht hervor das er nur eine art software entwickler ist... weder gehören ihm die platinen noch die produkte.. es werden denke ich auch nicht 10 platinchen sein.. wenn ich software entwicker engagiere tue ich das nicht für eine handvoll platinen. für ein schiffscontainer nach d und wieder zurück nach china wird sich das nicht lohnen. er kann ja da runter fliegen :)
ED schrieb: > aus dem ersten post geht hervor das er nur eine art software entwickler > ist... Finde ich nicht. Da hat sich der TO aber auch nicht wirklich klar ausgedrückt. Die genauen Umstände sollte er vielleicht nochmal genau darlegen, bevor hier weiter gemutmaßt wird. Gruß Skriptkiddy.
Hi, Skript Kiddy schrieb: > Wie wäre es mit nem Cryptoverfahren? > Nen AES-Bootloader würde sich anbieten. Der Schlüssel ist dann > gerätespezifisch und den kennst nur du. Skript Kiddy schrieb: > Wenn ihm sein Werk so heilig ist, dann sollte er das erste Flashen der > Boards selber unternehmen. ICh halte einen -wie auch immer- mit Cryptoverfahren arbeitenden Bootloader auch als das einzig HALBWEGS sichere ansehen. Und das erstflashen scheint ja gerade KEIN Problem sein, wenn man seinen erten Beitrag aufmerksam liest scheint es so, als das es so sowieso geplant ist und es nur um evtl. Firmwareupdates geht! Sonst wäre sein eigener Lösungsvorschlag ja auch unsinnig, Jens schrieb: > Ich selbst kann die Software > einspielen (mit Kopierschutz), allerdings sollen auch Kunden später die > Software aktualisieren können... > ... > Wäre folgendes sinnvoll? > > 1. Beim ersten Aufspielen der Software bekommt jedes Board > eine Etikette mit einer ID (z.B. "A456A":)), die auch im > Flash-ROM steht und im EPROM steht eine zugehörige > Hidden-ID (z.B. "B456B") Eine andere Methode könnte sein wenn man sicher weiß das ein bestimmter Teil des Programms auf ewig unverändert bleibt diesen einfach bestehen zu lassen und diesen Programmteil bei den Updates auszulassen. Das bedeutet der Kunde hat kein lauffähiges Programm in der HAnd. Im Prinzip ist das Update dann eine Art Patch Ist aber deutlich umständlicher und erfordert neben dem Schreiben des eigendlichen C Programms (gehe ich bei STM32 mal von aus) auch noch das man sich wirklich intensiv mit dem daraus entstandenen Assembler PROG sowie den genauen Adressen im Programspeicher beschäftigt damit die Bruchstücke später auch wirklich passen. Zu dem Mehraufwand kommt dann noch die eingeschränkte Flexibilität. Ich denke aber dagegen ist die Verschlüsselte übertragung der Binaries definitiv die bessere Wahl, da man dort wesentlich flexibler ist mit Ausnahme des Bootloaders auf keine bestehenden Strukturen rücksicht nehmen muss. Gruß Carsten
Hat das Board einen LAN Anschluss? Ist der STM32 in der Lage, sein eigenes Flash zu beschreiben? Dann sollte der Bootloader direkt eine Verbindung zum Server aufbauen und mit seiner Seriennnummer, einem Secret und einer mit dem Server verhandelten (PGP Schlüsseltausch?) Zahl einen Schlüssel generieren, womit die Daten übertragen werden, welche dann ins Flash gebrannt werden. Ähnlich kann es auch ohne direkten Netzzugang ablaufen - nur der Schlüsseltausch entfällt dann. Der Bootloader kann in beiden Fällen Seriennummer und Secret enthalten, welche auch dem Server bekannt sind. Das Geheimnis ist in diesem Fall der Bootloader - aber der soll sich ja auch nicht ändern. (EEprom entfällt dann) Sobald dieser kopiert wurde, ist dieses System offen. Dann greift nur noch die Methode, die SN zu sperren. Oder bei diesen Geräten eine SW auf das Gerät aufzuspielen, welche dem Benutzer sagt, sich mit Dir in Verbindung zu setzen. Die Kopierer werden nun, den ja bekannten Bootloader bei ihren Geräten so modifizieren, daß diese Geräte ihr Update von deren Server holen. Dies haben sie sich vorher bei Dir geholt (1x) ... Ergo muss die Betriebssoftware prüfen, ob der Bootloader einwandfrei ist ... Und für alle, die sich darüber streiten, wie er initial die SW da drauf bekommt: Jens schrieb: > Ich selbst kann die Software einspielen Gruß Jobst
Wichtiger als der Kopierschutz scheint mir ein klare Anschrift des Herstellers einzubrennen und eine Prüfsumme davon zu bilden. Wenn einer die Firma ändert schmiert das Ding nach 15 Minuten ab ...
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.