Ich arbeite im Moment an einem größeren Projekt und frage mich, ob man irgendwie verhindern kann, dass unautorisierte Personen die Firmware am Board auslesen, ändern oder auch einfach eine neue raufladen.
Ich konnte zu diesem Thema leider keine brauchbaren Informationen finden und hoffe ihr könnt mir da helfen. Irgendwie muss das doch möglich sein..
Das Umprogrammieren des Flash-Speichers kannst Du überhaupt nicht verhindern. Es bleibt nun mal ein programmierbarer Microcontroller.
Du kannst das Auslesen der Flash-Speichers durch entsprechendes Setzen von Fuses verhindern, s. Datenblatt Kap. 26, 27, 28. Ein Neuprogrammieren geht dann nur mit gleichzeitigem Löschen.
Je nach krimineller Energie kann man natürlich den Chip "aufsägen" und den Flash unter dem Elekronenmikroskop auslesen. Scheint zwar abwegig, aber wurde bei Chips, wo es sich lohnt, schon angedacht, z. B. Geldkarten.
Zum Thema Lockbits wirst du im englischsprachigen Forum eher fündig, habe da schon ähnliche Fragen gesehen,
Ich glaube nicht, dass du dir darum so große sorgen machen musst. Das Programm, welches du in der IDE geschrieben hast, landet in der Form nicht auf dem µC. Es wird kompeliert. Wenn jemand es auslesen könnte, währen Variablennamen, Kommentare etc. nicht zufinden.
Normalerweise sind die Programme nicht so wertvoll, daß sich der Aufwand lohnt. Wenn Du nicht weisst, daß es Lockbits gibt, dann bist Du kein Profi. Dann überschätzt Du eher den Wert Deiner Softwre und unterschätzt den Aufwand für Reverse Engineering.
Wenn Du in der Liga spielen würdest in der es sich richtig rentiert, dann würdest Du schon gar nicht mit einem Atmega anfangen. Die Angriffe gegen Atmegas sind vielfältig und bekannt. Amateure hingegen hält man mit den Lockbits zu 99% draußen.
Das war hart gesprochen Udo, aber wohl wahr. Aber da man ja durch den Arudino komplett Open Source Hardware und Software benutzt spricht ja eigentlich auch nichts dagegen, alles was man tut wieder unter OS Lizenzen zu veröffentlichen. Dann tun sich die Leute auch einfacher das gekaufte Device zu hacken, und nach ihren Wünschen anzupassen. Für viele ist das ja auch ein extra Kaufanreiz. Für so Leute wie die meisten hier im Forum.
Aber da kann und will ich Dir natürlich nicht drein reden, das ist ja eine persönliche Entscheidung. Ich weis ja nicht einmal, od da was verkauft werden aoll oder nicht. Ich sehe es nur bei der Arbeit bei vielen Kollegen, die bei Steuerungssoftware einen Bausteinschutz aktivieren damit niemand ihren Code ändert. Tritt dann ein Fehler auf, ist meistens der passende Baustein schneller neu programmiert, als der Schreib-/Leseschutz entfernt, und der Fehler korrigiert. Obwohl das inklusive Cracksoftware im Internet suchen eine Sache von unter einer Stunde ist. Wenn die Quelen ganz fehlen, dann wird es schon in so einfachen Dingen wie bei SPSen sehr zäh Funktionen heraus zu finden. Da jagt man dann einzelnen Bits schon mal mehrere Tage nach, und verflucht den Typen der das Backup verschlampt hat, oder der vergessen hat die MOD zu kopieren, bevor das letzte Lesegerät den Geist aufgab. Bei Mikrocontrollern wird es dann wirklich uninteressant wenn es nicht um absolute Hightech geht.
Der wohl sicherste Schutz um Amateure aus dem Board heraus zu halten ist es einfach den USB Port zu entfernen.
Der einfachste Schutz Amateure fern zu halten ist: Lock Fuses setzen und die Typbezeichnung abschleifen. ISPs haben viele Amateure. Aber sobald die Typbezeichnung fehlt UND die Lock Fuses gesetzt sind, wird für 99% die Luft mehr als dünn. Und die restlichen 1% die sowas können überlegen sich dann ob es nicht doch einfacher ist ALLES selber zu programmieren. Wie gesagt: Reverse Engineering ist teuer. Und eine "Cracksoftware" für Mikrocontroller die die Lockbits aushebt kenne ich für Atmels nicht.
Das was Udo Klein geschrieben hat, liest sich zwar erst mal ein wenig harsch, aber bei ernsthaftem Nachdenken, kann ich nicht anders als ihm Recht geben. Ob jemand der hier im Forum fragen muss, wie man einen Atmel gegen Auslesen schützen kann, etwas von solchem Wert produziert, das sich der zeitliche und finanzielle Aufwand lohnt es zu entschlüsseln, muss arg bezweifelt werden.
Wenn es sich wirklich lohnt, es zu entschlüsseln, wird es auch entschlüsselt. Da nutzen gesetzte Lockbits nichts, da nutzt es nichts, die Seriennummer abzuschleifen oder wegzulasern. Ich persönlich finde diese ganzen Schutzmechanismen sowieso albern. Im besten Fall bringen sie nichts, im schlimmsten Fall behindern sie rechtmässige Benutzer. Eine entfernte Seriennummer kann wahrscheinlich ein paar "Dummuser" abhalten einen Chip auszulesen, aber sicher nicht, einen erfahrenen Profi, der jede Menge Geld und technische Hilfsmittel im Rücken hat.
Wenn ich wirklich schon mal etwas von solchem Wert produziert hätte, das sich eine Verschlüsselung lohnt, müsste ich mir auch sehr, sehr ernsthaft überlegen, ob so etwas überhaupt einem Atmel-Chip anvertraut werden darf. Sicherlich sind Chips, mit denen Millionen Leute rumspielen, für den alle Datenblätter erhältlich sind und die jede Menge Profis in- und auswendig kennen nicht die erste Wahl für ernsthaft zu sichernde Daten.
Alles oben geschriebene ist nur meine persönliche Meinung. Jeder, der will, darf gern anderer Meinung sein ohne das ich darin einen Grund sehen würde, mit ihm oder ihr zu streiten.
Ich seh auch nicht, was man mit einem ATMega anstellen könnte, das jemand, der das Prinzip was es tut nachvollziehen kann, nicht nachprogrammieren könnte. Ohne reverse-Engineering, ohne auslesen des HEX-Files - man kann viel anstellen mit dem Arduino, aber zaubern kann man nicht.
Was man mit einem Atmega anstellen könnte was sich nicht einfach nachprogramieren lässt? Ein Meteotime Decoder. Außer man hätte einen Schlüssel dazu Der entsprechende Thread bei mikrocontroller.net zeigt wie weit Amateure in der Öffentlichkeit gehen.
Ich fand die Antwort von Udo schon auch etwas hart formuliert, er hat natürlich Recht hat.
Wenn man nicht weiß was es mit den Fuse Bits auf sich hat, kann der Code des Autors nicht von so hoher Qualität sein.
Aber jetzt mal Butter bei den Fischen, gefühlt 90% hier sind so wie ich keine Profis, also nur Hobby das halt Spaß macht.
Wäre ja trauig wenn ein reiner Autodidakt (z.b so wie ich) , mehr drauf hat als z.b einer der Info Studiert hat und dessen Job es ist Programme oder Firmware zu entwickeln.
Was ich den Profis damit sagen will, man kann es auch anders ausdrücken
Und die Autodidakten zapfen von den Profis Wissen ab.
Was man mit einem Atmega anstellen könnte was sich nicht einfach nachprogramieren lässt? Ein Meteotime Decoder
@Udo:
Du hast dir wohl den C## angesehen, den ich teilweise nicht verstanden habe.
Gab einen Thread von mir dazu.
Schaut so aus als wenn du es nach C++ portiert hast ?
@rudirabbit: Also ich bin beileibe auch kein Profi, sondern lerne ständig noch dazu 8) Aber ich frage mich immer noch, was ein Hobbytüftler wie ich so hervorbringen könnte, was extra schützenswert wäre - vielleicht fehlt mir einfach die Fantasie
ich frage mich immer noch, was ein Hobbytüftler wie ich so hervorbringen könnte, was extra schützenswert wäre - vielleicht fehlt mir einfach die Fantasie
Du glaubst nicht, was alles als schützenswert angesehen wird, wenn du dich mal aus der Opensource-Welt wegbewegst.
Ausserdem ist oft geschützt, was jeder einfach nachmachen oder kopieren kann (könnte), aber nicht darf.
-- Noch ein Grund, warum ich während der Arbeitszeit nicht Arduino spielen darf,
müsste ich nämlich formal immer ein Copyright des Arbeitgebers anbringen --
Auch als Hobbytüftler kannst du der Meinung sein, deine Software darf nicht jeder weiterverwenden.
Musst du natürlich vorsichtig sein, von wem du sie zusammenkopiert/abgeschrieben hast, und unter welchen Voraussetzungen das erlaubt war.
Ob man dann, um den "Raubkopierern" das legale Verbot klarer zu machen, dem Kopieren einige Schwierigkeiten in den Weg legt, ist die zweite Frage.
Und ob hier in der OpenSource-Welt du im richtigen Forum bist, oder du nicht evtl. einem Anwalt etwas Geld zukommen lassen willst, eine weitere...
michael_x:
Du glaubst nicht, was alles als schützenswert angesehen wird, wenn du dich mal aus der Opensource-Welt wegbewegst.
Du weißt ja, welches Zitat man Albert Einstein zuschreibt: "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
Unter diesem Gesichtspunkt betrachtet kann ich mir schon vorstellen wie viele Leute wie viele Dinge als schützenswert ansehen - allein, verstehen kann ich es nicht so richtig.
A propos Einstein: Wirklich geniale Ideen sind in der Regel nicht geschützt.
Aber, anlässlich der IAA:
Auf das Rad hat nie jemand ein Patent gehabt , aber z.B. alle dreistelligen Zahlen mit einer 0 in der Mitte sind geschützt.
Sonst hiesse der Porsche 901 statt 911
Oder nimm ein Magenta Quadrat als dein Firmenlogo.
Da brauchst du keinen Kopierschutz zu knacken, um das hinzukriegen. Probleme fangen erst danach an.
Nicht nur Schneekugelhersteller haben Probleme damit, dass viele das so sehen:
Oh, das ist schön, das kann ich auch, sogar billiger.
Aber stimmt schon, eine OpenSource-Community ist sympathischer.
@Udo:
Du hast dir wohl den C## angesehen, den ich teilweise nicht verstanden habe.
Gab einen Thread von mir dazu.
Schaut so aus als wenn du es nach C++ portiert hast ?
Ja, habe ich mir angesehen und die Portierung auch für einfach befunden. Aber portiert habe ich das nicht. Grund: auch wenn es einfach ist kostet es Zeit. Weiterhin passt es nicht in mein DCF77 Projekt weil ich für den Meteotime Code nicht so vorgehen kann wie beim Rest. Und mein Ziel ist nun mal ein maximal störungsresistenter Decoder - um zu lernen wie man sowas optimal hinbekommt. Und da passt der Meteo Decoder einfach nicht dazu. Davon abgesehen wäre es selten dumm diesen Decoder nachzuimplementieren und den dann auch noch zu veröffentlichen. Solange das Ding nach Deutschem Recht geschützt ist lasse ich die Finger davon. Wenn ich eine Wettervorhersage brauche, dann nehme ich mein Smartphone in die Hand und fertig.
Vielen Dank für die vielen Antworten und Sorry für die späte Rückmeldung (hab vergessen, dass ich diesen Thread gestartet habe).
Zur kurzen Erklärung:
Wie bereits erkannt, bin ich kein Profi im Bezug auf Arduino. Ich würde mich nicht einmal wirklich als Anfänger bezeichnen. Tatsache ist, dass ich im Moment (nicht alleine) an einem größeren Projekt arbeite, das ein solches Board verwendet um bestimmte Geräte zu steuern. Gesteuert wird das ganze aber im Endeffekt von hinten über eine C# Anwendung (für die ich zum großen Teil zuständig bin). Das Board hat nur die Aufgabe, Befehle die es bekommt auszuführen (vereinfacht: Geräte ein/aus).
Ich hatte vorher noch nie mit Mikrocontrollern zu tun und hab daher auch keine Ahnung was Lockbits und dergleichen sind (werd mir das aber bei Gelegenheit mal anschauen).
Jedenfalls wollte ich mal schnell ein paar Informationen zu dem Thema einholen, da ich sonst nichts dazu finden konnte.
Beim Kopierschutz geht es nicht darum, dass wir Angst haben dir Firmware könnte dekompiliert werden, sondern entweder ausgelesen und auf andere (nicht zu unserem Produkt gehörigen) Boards geladen werden, oder von irgendwelchen Ganoven durch eine Software ersetzt werden, die dann Schäden produziert.
Zweitere Variante wird zwar eher unwahrscheinlich sein, jedoch wäre es gut gegen solche Fälle geschützt zu sein, da tatsächlich große Schäden entstehen können.
Ja, Open Source mag sympathischer sein und ich bin auch schwer dafür. Gewisse Projekte können aber schon allein aus Sicherheitsgründen nicht offengelegt werden und abgesehen davon finde ich es nicht gerade unsympathisch (oder abnormal), für seine Arbeit entlohnt zu werden. Oder arbeitet ihr etwa alle grats?
Ich finde, Produkte mit kommerziellem Nutzen, bei denen wir nicht von ein paar Tagen oder Wochen, sondern von ein paar Jahren Aufwand sprechen, können auch ruhig etwas kosten (Zur Info nebenbei: Ich habe im Moment keine Freizeit, außer wenn ich schlafe, wozu ich nicht ausreichend komme).
Aber ich bin sowieso dafür, dass einfach alles gratis ist. Sobald ich alles was ich zum Leben brauche gratis bekomme, verlange ich auch für meine Arbeit kein Geld mehr. Und sobald man es nicht mehr bereuen muss, sensible Informationen nach außen gegeben zu haben, gibt es keine Geheimnisse mehr.
Edit:
Aber die Firmware könnten wir an sich tatsächlich unter einer Open Source Lizenz weitergeben. Vielleicht machen wir das auch. Es geht aber wie gesagt in erster Linie um das verhindern von Schäden.
Was ist den das für lauwarmer Kaffee? Genau aus diesem Grund verwendet ihr also ein Open Source Projekt? Welchen Sinn ergibt das? Wer weiß in welchen Libs die es hier so gibt, irgendwelche Hintüren drin sind? Schon mal drüber nachgedacht?
Dein Aufsatz verbessert in keinem Fall dein, bzw. euer vorhaben. Ich halte nichts davon open source einzukassieren, zu vermarkten aber dann selber nix beitragen. Das ist echter Mist!
tYSoftware:
und abgesehen davon finde ich es nicht gerade unsympathisch (oder abnormal), für seine Arbeit entlohnt zu werden. Oder arbeitet ihr etwa alle grats?
Wenn wir Dir hier im Forum Deine Fragen beantworten schon :0
tYSoftware:
Ich finde, Produkte mit kommerziellem Nutzen, bei denen wir nicht von ein paar Tagen oder Wochen, sondern von ein paar Jahren Aufwand sprechen, können auch ruhig etwas kosten
Das ist mal eine gesunde Einstellung: Man entwickelt mit Open-Source-Software auf Open-Hardware-Elektronik mit kostemlosen Support aus verschiedenen Foren ein Projekt und schaut, dass man möglichst viel Reibbach damit macht. Ich denke nicht, das die Arduinos oder die Software dazu oder vielleicht Dein Linux, das Du möglicher Weise benutzen könntest, oder Dein eventuelles Visual C# in ein paar Tagen oder Wochen fertiggestellt waren. Deiner Argumentation nach könntest Du ja dafür ruhig etwas bezahlen.
Ich hatte vorher noch nie mit Mikrocontrollern zu tun und hab daher auch keine Ahnung was Lockbits und dergleichen sind (werd mir das aber bei Gelegenheit mal anschauen).
Jedenfalls wollte ich mal schnell ein paar Informationen zu dem Thema einholen, da ich sonst nichts dazu finden konnte.
Beim Kopierschutz geht es nicht darum, dass wir Angst haben dir Firmware könnte dekompiliert werden, sondern entweder ausgelesen und auf andere (nicht zu unserem Produkt gehörigen) Boards geladen werden, oder von irgendwelchen Ganoven durch eine Software ersetzt werden, die dann Schäden produziert.
Leseschutz != Schreibschutz. Mir scheint Du hast nicht nur von Mikrocontrollern wenig Ahnung. Und Du hast nicht die Zeit oder Lust die Datenblätter zu lesen.
Gewisse Projekte können aber schon allein aus Sicherheitsgründen nicht offengelegt werden und abgesehen davon finde ich es nicht gerade unsympathisch (oder abnormal), für seine Arbeit entlohnt zu werden. Oder arbeitet ihr etwa alle grats?
Kein Problem. Wohin kann ich mein Angebot schicken? Eure Fragen beantworte ich alle locker. So wie Du fragst bin ich mir mehr als sicher, daß ich Euch genügend Entwicklungsaufwand sparen kann damit sich das sogar rechnet.