mikrocontroller.net

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


Autor: freeky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: freeky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, ich verwende einen ATMega 644P.

Gruß
  Christoph

Autor: spi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verschlüssele es.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: freeky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: freeky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.