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
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.
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
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
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.
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...