Forum: Mikrocontroller und Digitale Elektronik Programm über Bootloader schützen


von freeky (Gast)


Lesenswert?

Hallo Allerseits!

Ich möchte die unautorisierte Verbreitung meines Programms erschweren, 
benötige aber trotzdem die Möglichkeit des Updates über einen 
Bootloader. Der Einsatz von entsprechender Verschlüsselung ist mir zu 
aufwendig.

Da ich jeden verwendeten MC erstmals selbst programmiere denke ich an 
folgende Vorgehensweise:

In den Bootloader schreibe ich eine Art Signatur, welche ich dann im 
eigentlichen Programm überprüfe.
Geht das so ohne weiteres?  Auch mit Bascom?
Ich könnte mir vorstellen dass der Bootloader vor dem Start des 
Programms die Signatur in den Eeprom schreibt und und das eigentlichen 
Programm diese dann liest und sofort wieder löscht.

Mir ist klar, das dies kein besonders guter Schutz ist, da man ja nur 
das eigentliche Programm entsprechend verändern muss. Da das Programm 
aber nur in Hex vorliegt, würde mir dies aber reichen, ich möchte es nur 
nicht zu einfach machen ohne mein Wissen das Programm zu verwenden.

Was denkt Ihr?

Grüße
   Christoph

von freeky (Gast)


Lesenswert?

Ach ja, ich verwende einen ATMega 644P.

Gruß
  Christoph

von spi (Gast)


Lesenswert?

verschlüssele es.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

freeky schrieb:
> Der Einsatz von entsprechender Verschlüsselung ist mir zu
> aufwendig.

Dann kannst Du´s auch lassen. Es muß ja kein AES sein, aber wenn Du 
Deine HEX-Files so verknotest, dass nur Dein Bootloder sie entheddern 
kann, wäre das doch schon mal was.

freeky schrieb:
> In den Bootloader schreibe ich eine Art Signatur, welche ich dann im
> eigentlichen Programm überprüfe.
> Geht das so ohne weiteres?  Auch mit Bascom?

Diese Mimik kann durch jedes andere Programm, dass diese Signatur 
emuliert, ausgehebelt werden. Auch Programme, die sich um den Bootloder 
einen feuchten Kehrricht scheren, laufen anstandslos. Andersherum wird 
ein Schuh draus: Der Bootloader muss die Signatur im Quellcode des 
Programmes suchen und wenn diese nicht passt, das Programm einfach nicht 
starten. Dazu musst Du freilich die LockBits setzen und auch SPI 
verriegeln. Findige Programmierer werden aber auch hierfür eine Lösung 
kennen.

freeky schrieb:
> Ich möchte die unautorisierte Verbreitung meines Programms erschweren,

Das gelingt Dir aber nur dann, wenn Du jedem Chip eine andere Kennung 
gibst, und jedem Kunden dann eine entsprechend passende Programmdatei 
zuspielst, die nur auf diesem Chip läuft. Bei XMegas kein Problem, bei 
einfachen Megas schon.

von freeky (Gast)


Lesenswert?

Knut Ballhause schrieb:
> freeky schrieb:
>> Der Einsatz von entsprechender Verschlüsselung ist mir zu
>> aufwendig.
>
> Dann kannst Du´s auch lassen. Es muß ja kein AES sein, aber wenn Du
> Deine HEX-Files so verknotest, dass nur Dein Bootloder sie entheddern
> kann, wäre das doch schon mal was.
>
Daran hab ich auch schon gedacht

> freeky schrieb:
>> In den Bootloader schreibe ich eine Art Signatur, welche ich dann im
>> eigentlichen Programm überprüfe.
>> Geht das so ohne weiteres?  Auch mit Bascom?
>
> Diese Mimik kann durch jedes andere Programm, dass diese Signatur
> emuliert, ausgehebelt werden. Auch Programme, die sich um den Bootloder
> einen feuchten Kehrricht scheren, laufen anstandslos. Andersherum wird
> ein Schuh draus: Der Bootloader muss die Signatur im Quellcode des
> Programmes suchen und wenn diese nicht passt, das Programm einfach nicht
> starten. Dazu musst Du freilich die LockBits setzen und auch SPI
> verriegeln. Findige Programmierer werden aber auch hierfür eine Lösung
> kennen.
>
Wenn ein anderes Programm, dass sich nicht um die Signatur schert 
eingespielt wird, dann ist mir das egal. Ich will ja nur mein Programm 
schützen.
Wenn die Signatur im Programm steht, dann nützt mir das doch überhaupt 
nichts. Dann läuft das Programm ja auch auf ATMegas bei denen der 
signierte Bootloader fehlt. Ich möchte ja mittels Signatur im schreib- 
und auslese geschützten Bootloader sicher stellen, dass es nur auf 
bestimmten, von mir entsprechend programmierten ATMegas läuft.


> freeky schrieb:
>> Ich möchte die unautorisierte Verbreitung meines Programms erschweren,
>
> Das gelingt Dir aber nur dann, wenn Du jedem Chip eine andere Kennung
> gibst, und jedem Kunden dann eine entsprechend passende Programmdatei
> zuspielst, die nur auf diesem Chip läuft. Bei XMegas kein Problem, bei
> einfachen Megas schon.
Jeden Chip eine andere Kennung ist richtig, das ist auch so geplant. Die 
Programmdatei bleibt gleich, die prüft nur ob der Schlüssel gültig ist.

Gruß
  Christoph

von Hagen R. (hagen)


Lesenswert?


von freeky (Gast)


Lesenswert?

Hagen Re schrieb:
> Beitrag "AVR-Bootloader mit Verschlüsselung"

Diese Thread hab ich mir die letzten Tage durchgezogen.
Denke ich werde Deinen Bootloader einsetzen.
Was mich erst davon abgehalten hat, war die fehlende Dokumentation im 
letzten Downloadpaket.
Habe nun auch die älteren Pakete runtergezogen und dort ist die Doku ja 
noch drin.

Hoffe nur, das ich das so ohne weiteres hinbekomme.

Grüße
  Christoph

von Karl H. (kbuchegg)


Lesenswert?

freeky schrieb:
>>
> Wenn ein anderes Programm, dass sich nicht um die Signatur schert
> eingespielt wird, dann ist mir das egal. Ich will ja nur mein Programm
> schützen.

Dann frage ich mich, warum du nicht einfach die Lockbits im Mega setzt 
und gut ists?

Dazu noch ein Bootloader mit dem man zwar einspielen aber nicht aulesen 
kann und du hast was du willst.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Na es geht sicher darum, dass keiner die Binär-/Hexdatei des 
Programmcodes entwendet, verbreitet und auf andere Controller/Hardware 
aufspielt, um das Produkt weiterzuvermarkten. In dem Fall geht es 
wirklich nur so, den Controller mit dem Code über Signaturen zu 
verheiraten, so dass keiner ohne den anderen spielt. Und dann die 
Lockbits setzen, damit die Signaturen im Flash oder EEPROM nicht 
überschrieben werden können. Die Binär-/Hexdatei muss dann eben auch so 
verschlüsselt werden, damit keiner die Sperren entfernen kann. Das setzt 
den "Kopierer" vor die schwierige Aufgabe, selber ein Programm schreiben 
zu müssen, um die Hardware zu verwenden. Was nicht gänzlich unmöglich 
ist...

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.