Forum: Mikrocontroller und Digitale Elektronik Idee - kleiner Kopierschutz (und Kunden können trotzdem die Software updaten)


von Jens (Gast)


Lesenswert?

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

von Floh (Gast)


Lesenswert?

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.

von Jens (Gast)


Lesenswert?

hallo, die herstellung kann ich nicht übernehmen.

von Floh (Gast)


Lesenswert?

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?
:-)

von oszi40 (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Andreas K. (derandi)


Lesenswert?

Kann er nur die Software beeinflussen oder darf er auch an die Hardware?

von ED (Gast)


Lesenswert?

hat eigentlich keiner seinen ersten post gelesen?

von Irgendeiner (Gast)


Lesenswert?

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.

von ED (Gast)


Lesenswert?

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ß

von ED (Gast)


Lesenswert?

jo Irgendeiner ...

zu meinem post: nicht vergessen die pcapp kann man auch "knacken" :D

von Oliver J. (skriptkiddy)


Lesenswert?

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.

von ED (Gast)


Lesenswert?

auch der AES bootloader muss vorher aufgespielt werden.

von Oliver J. (skriptkiddy)


Lesenswert?

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.

von ED (Gast)


Lesenswert?

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.

von Oliver J. (skriptkiddy)


Lesenswert?

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.

von ED (Gast)


Lesenswert?

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 :)

von Oliver J. (skriptkiddy)


Lesenswert?

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.

von Carsten S. (dg3ycs)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von oszi40 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.