Ich möchte für eine bestehende Hardware eine Ersatz-FPGA-Software liefern, die der Benutzer auf das System aufspielen kann. Die schon im Markt befindliche Hardware ist frei verkäuflich und wird auch auf EBAY gehandelt. Ich möchte jetzt meinerseits alte Geräte aufkaufen, mit neuer SW ausstatten und verkaufen. Ausserdem sollen Besitzer solcher Geräte mit der SW beliefert werden können. Frage: Wie verhindere Ich, dass die SW kopiert und verteilt wird? Der FPGA hat einen Ausleseschutz über Efuse drin, den ich noch nicht verwendet habe und nicht einschätzen kann, wie sicher er ist. Wahrscheinlich läuft es darauf hinaus, dass Ich die Kunden auffordern müsste, die Geräte einzusetzen, damit Ich sie programmiere. Falls die SW dann nicht auslesbare wäre, wäre das zwar gut, aber nicht erstrebenswert, weil zuviel Aufwand. Eine Möglichkeit wäre, dass der Kunde einen Code bekommt, den er eintippen muss, um das neu bespielte Gerät mit meiner SW benutzen zu können, aber auch den könnte jemand weitergeben. Wer hat eine bessere Idee?
Da Du die Hardware nicht verlinkt hast, ist es schwierig etwas dazu zu sagen. Nicht jeder wird für 2 Geräte 2 Mal die gleiche Software (die gleiche Datei) kaufen. 2 Möglichkeiten: 1) Hardware-Dongle (in welcher Form auch immer) 2) Checksumme aus den Seriennummern der Hardware in den Code mit einfließen lassen (d.h.: Du erstellst einen FPGA-Code für jeden Satz Platinendaten)
Das müsste dann aber für JEDE einzelne Platine und Seriennummer passieren. Fragt sich, wie der FPGA rausbekommen soll, in welcher Platine er sich befindet. Oft ist sowas irgendwie codiert, aber meist nur in Form von ChargenCodes. Das ist dann so wie bei den Billigtresoren und Autofelgenschlössern: Dein Schlüssel passt zu jedem 50. Dongle wäre das Beste, aber das müsste in der Hardware ja vorgesehen sein. Bliebe noch ein dynamischer Code, den das Gerät erzeugt, sich im Internet mit den Logindaten des Kunden auf Deinem Server einlogged und sich eine Betriebslizenz für die Dauer des Einschaltens holt. So haben wir das mal gemacht. Der Kunde hat allerdings die Geräte im Dauereinsatz und musste sich nur Montags morgens einloggen. Es wurde aber erreicht, was erreicht werden sollte: Der Kunde konnte die Geräte nicht mit Lizenz verkaufen oder diese duplizieren, wei er sie nicht ausschalten konnte und jede Lizenz softmässig auf den Kunden fixiert war. Eine Möglichkeit gäbe es, wenn das Gerät ein Flash hat: Du nimmst es einmal ins Haus, liest das Flash aus und hinterlegst irgendwo in einem freien Bereich einen Code, der mit dem im FPGA passen muss und jagst ein FPGA-Image pro Kunde rein. Der Kunde müsste dann schon das Flash auslesen und komplett weitergeben. Das ist nicht 100% sicher, erfordert aber zwei technisch versierte Personen. Und wenn das Flashfile irgendwo auftaucht, ist erwiesen, wer er ausgelesen und weitergeben hat. Das muss mit Konventionalstrafe belegt werden. Wichtig ist, dass jeder sein eigenes FPGA-image hat, sonst taucht irgendwann im Internet mal ein file auf, das jeder laden kann.
Weltbester FPGA-Pongo schrieb im Beitrag #4834180: > Fragt sich, wie der FPGA rausbekommen soll, in welcher > Platine er sich befindet. Oft ist sowas irgendwie codiert, aber meist > nur in Form von ChargenCodes. Das ist dann so wie bei den Billigtresoren > und Autofelgenschlössern: Dein Schlüssel passt zu jedem 50. Es gibt (je nach Platine) hunderte Möglichkeiten, einen Schlüssel aus - Kalibrierwerten - Seriennummern - Mac-Adressen - Produktionsdaten zu erstellen. Kennen wir hier natürlich nicht. > Dongle wäre das Beste, aber das müsste in der Hardware ja vorgesehen sein. Bei einer allgemeinen Platine (laut UP ja frei erhältlich bei ebay), gibt es meist irgendwelche ungenutzte IO, die z.B. einen I2C-Chip oder sowas anschließen lässt.
Moin, > > Frage: Wie verhindere Ich, dass die SW kopiert und verteilt wird? > Gegenfrage(n): - Welche Plattform? - Wieviel Budget (für Implementierung des Schutzes) vs. erwarteten Ertrag? - Wie gross die Kundenbasis? - Wie wird die Plattform programmiert? Habe mich des öfteren mit der Thematik beschäftigt, und habe schliesslich auf eine ganz einfache pragmatische Lösung gesetzt. Fazit: Der Aufwand rechnet sich meist kaum, es zahlt sich eher aus, eine Community zu bilden und guten Support zu liefern. Allerdings: Software ohne HW separat zu verkaufen ist kein gutes Geschäft. So macht's womöglich Sinn, irgend eine billige HW, die irgendwas macht, zu liefern, denn typischerweise zahlt der Kunde für die SW ungern, obwohl da der grösste Brocken drinsteckt. Was auch noch ordentlich funktioniert, sind serialisierte "Updater-Tools" in Form eines USB-Sticks, aber das ist wieder etwas aufwendiger. Wenn Du HW mit (nicht riesige) Stückzahlen machen wolltest: Es gibt auch da von z.B. Lattice Möglichkeit, sich eine angepasste FPGA-Variante liefern zu lassen. Das macht das Knacken nerviger. Ansonsten gilt halt, auch oft trotz Fuses: Wer an den JTAG rankommt, kommt an sehr viel "undokumentierte" Features ran, also ist bei manchen Architekturen ein aes-verschwurbelter Bitstream ev. für die Katz, mal davon abgesehen, dass das in deinem Fall wegen separater HW/SW auch nicht praktikabel wäre.
Rolf S. schrieb: > Der FPGA hat einen Ausleseschutz über Efuse drin Willst Du uns den FPGA Typ (Hersteller, Familie) verraten? Ggfs. hat das Ding ja nicht nur EFUSE sondern auch ein via EFUSE verfügbarem Encryption Key ??? Frühere Familien (z.B. von Xilinx) boten Batteriebackup eines Encryption-Key was aber nur bei entsprechender Verdrahtung zugänglich ist... Selbst wenn die technischen Möglichkeiten es her geben ist es ungewiss ob man Dir den Aufwand zuraten soll. Du kannst zwar davon ausgehen dass die FPGA Firmware ggfs. als Kopien durchs Netz geistern werden, ob dies dann allerdings zu einem Minderumsatz führt (sprich Kunden die bei Dir gekauft hätten) oder aber als Werbung für Dich führen steht auf noch einem ganz anderen Blatt... Die Frage wäre daher eher: - Kann die von Dir angesprochene Hardware irgendwie auf sich aufmerksam machen (LCD-Display -> Copyright Ausgabe und (Kauf-)Link - Gibt es ggfs. (externe) Software welche ggfs. auch eine Verbesserung vertragen könnte (Verdongelung oder volles Featureset nur in Kombination) - Bedienungsanleitung [am besten in gedruckter Form] (z.B. mit Tastenkombination zum Freischalten des "verbesserten" Verhaltens... - Nix von alledem, was zum (Henk**) soll die Kunden dazu bringen eine neue Firmware zu kaufen... Gruß DivisionByZero
Bei den aktuellen Xilinx FPGAs kann man das schon verrammeln. Man kann einen AES Key per EFUSE rein brennen, dann ist der dauerhaft drin. Außerdem JTAG permanent deaktivieren und beim Brennen des Keys einstellen, dass nur noch verschlüsselte Bit Files akzeptiert werden. Dann kannst du über dein Design die Digital DNA auslesen und irgendwas damit im Design zur Verifikation anstellen. Diese DNA gibts nur genau einmal bei Xilinx. Aber ob das Aufwand/Nutzen Verhältnis passt?
also: Es gibt in dem Gerät eine Anzeige, die ich aber nicht erreichen kann, weil ich die firmware nicht habe und erst eine schreiben müsste, was aus Gründen es Aufwandes ausfällt. Es gäbe trotzdem eine Möglichkeit mit individuellen bitfiles, den Namen des Benutzers einzublenden. Das wäre jetzt eine gewisse Schutzfunktion. >was soll die Kunden dazu bringen eine neue Firmware zu kaufen... Die Kunden bekommen ein völlig neues Gerät mit anderen Funktionen. Optimal wäre eine Art Umschaltung, zwischen alter und neuer Funktion. Man müsste das alte FPGA auslesen, das bitfile zusammen mit dem eigenen ins Flash packen und dann eine bootoption reinbringen. Die Idee hinter dem Ganzen ist, sich die Entwicklung einer eigenen HW zu sparen. Das was Chris geschrieben hat, wäre super! Das war mir nicht bewusst, dass sich die FPGAs zu markieren lassen. Wenn Ich es aber richtig verstehe, würde es eigentlich reichen die digitale DNA zu lesen und ein image dafür zu brennen. Der User könnte die DNA auslesen, mir mitteilen und bekommt ein bitfile genau dafür. JTAG würde Ich gerne offenlassen, damit der user das image brennen kann. Problem: Die im Markt befindlichen Geräte haben einen älteren Altera.
Mach doch eine Online-Registrierung mit Namen etc. und die sollen sich jeder einen Freischaltcode anfordern nachdem sie die Seriennummer eingegeben haben. Das sollte 100% sicher sein.
Üblicherweise wird bei solchen Fragestellungen irgendwo ein I2C-EProm verwendet, um eine Seriennummer codiert zu hinterlegen, teilweise auch solche in irgendwelchen Sensoren oder anderen Chips. Dann ein kleines Lackfarbkleckslein auf die Anschlüsse, das als Garantiesiegel gilt. Das sollte potenzielle Bastler daran hindern, es freizukratzen, um es auszulesen und an Andere weiterzugeben. Wenn man eigene Boards entwickelt und in den Markt bringen möchte, ist es ein sehr probates Mittel, freie FPGA-Pins mit pulldowns und Widerständen zu verwenden und in der Auslieferung nach Lust und Laune mal niederohmige und hochohmige zu bestücken. Auf den ersten Blick sehen alle PCBs dann gleich aus, haben aber alle einen anderen Code, den man auslesen und einem FPGA-image zuordnen kann. Der user kann dann nicht so ohne Weiteres sein image auslesen und es auf anderen boards einsetzen, es sei denn, er kapiert, welcher Widerstand für so etwas benutzt wird und in welchem Wert er sich von einem anderen unterscheidet.
Christian R. schrieb: > [...]Diese DNA gibts nur genau einmal bei Xilinx.[...] Das ist leider nicht richtig. Bei der 7-Serie von Xilinx wird die DNA zum Beispiel mehrfach vergeben.
1 | "However, up to 32 devices within the family can contain the same DNA value." [UG470] |
:
Bearbeitet durch User
Ansich ein sehr interessantes Thema. Kann es eigentlich vom Hersteller Probleme geben wenn man dessen Produkt mit anderer Software verkauft? Könnte damit ja Theorethisch den aufgedruckten Zertifizierungen nicht mehr entsprechen. Das der Hersteller happy ist wenn unter seinem Namen Produkte vertrieben werden die er nicht beeinflussen kann glaube ich auch nicht. Rechtlich unbedenklich? Rolf S. schrieb: > Frage: Wie verhindere Ich, dass die SW kopiert und verteilt wird? Wie läuft das in der Industrie ab? Du hast den Bitstream verschlüsselt in einem Flash. Der wird in den FPGA geladen und dort enschlüsselt. So, wie willst du verhindern das der Nutzer der die Firmware runter lädt diese ins Internet stellt? (Du könntest einen downloader an bieten, dieser legt das file nicht direkt am rechner ab sondern spielt es direkt auf die hardware). Die Software an die Hardware zu binden ist ja noch ok, aber an eine Person binden (ohne eine Möglichkeit zum Weiterverkauf) finde ich Ethisch verwerflich. Ob dies gesetzlich möglich ist mag ich bezweifeln. Die Hard/Software kombi kann durchaus länger leben als du das Projekt führen willst. Das Produkt wirkt ims Gesammten nach der Beschreibung eher als Behinderung als verbesserung zum vorherigen Stand. Als End Nutzer schmeiß ich dir das durchs Fenster wenn ich einfach nur ein Software Update brauch für einen Bugfix und deine anti copy features beeinflussen nur die usability. Wie funktioniert überhaupt das Software update? Wirst da stark von der Hardware Platform beeinflusst. Die Fragestellung wirkt allgemein eher so als hätte jemand einfach Angst anscheinend leicht verdientes Geld durch vermutlich nicht mal gut geschriebene Software zu verdienen. Wieso? Der Schutz gegen deine Bedenken hängt stark mit der update Methode, der Hardware, der tatsächlichen Gefahrenlage, dem Wert deiner Software und einigem weiterem zusammen. OP scheint sich nicht wirklich damit auseinander zu setzen.
bild schrieb: > aber an eine Person binden (ohne eine Möglichkeit zum Weiterverkauf) > finde ich Ethisch verwerflich. ??? Die meisten Lizenzen an meinem Arbeitsplatz sind auch mich zugelassen. Man kann sie umschreiben lassen, aber zunächst einmal sind sie auf eine Person gebunden. Ein Verkauf ist meistens möglich, denn der Hersteller möchte ja nur verhindern, dass ungewollt kopiert wird. Peter W. schrieb: > Das ist leider nicht richtig. Bei der 7-Serie von Xilinx wird die DNA > zum Beispiel mehrfach vergeben."However, up to 32 devices within the > family can contain the same DNA value." [UG470] Kann es sein, dass es über die Packages und Typen verteilt wird? Ich meine "7er Serie" umfasst ja Spartan, Artix und Kintex mit jeweils X Baugrössen. Das sollte zur Trennung wohl reichen.
bild schrieb: > Kann es eigentlich vom Hersteller Probleme geben wenn man dessen Produkt > mit anderer Software verkauft? Könnte damit ja Theorethisch den > aufgedruckten Zertifizierungen nicht mehr entsprechen. Das der > Hersteller happy ist wenn unter seinem Namen Produkte vertrieben werden > die er nicht beeinflussen kann glaube ich auch nicht. > Rechtlich unbedenklich? Nicht wirklich. Siehe Fritzbox...auch wenn's gut ausgegangen ist. Bei FPGAs sieht die Rechtslage noch kniffliger aus, weil es bei einigen amerikanischen Richtern unter Hardware-Modifikation fällt, richtig mies wird es, wenn was nur annähernd vom DCMA abgedeckt werden kann, wie z.B. HDMI-Implementationen mit HDCP. So richtig offiziell wird man so ein FW-Modding-Geschäft nicht fahren können, deswegen sehe ich auch für einen 'Schutz' eines solchen Mods eher schwarz. Ganz abgesehen davon, dass solche Praxis beim typischen Consumer eher Stirnrunzeln hervorruft. Dazu kommt dann, dass die Rechtsabteilung der üblichen Verdächtigen gerne "Reverse Engineering" als verboten ansieht, und dich als Entwickler tüchtig nerven/lahmlegen kann. Wäre da also eher zögerlich und würde eher erwägen, irgend eine annehmbare Übereinkunft mit dem OEM zu finden. Oder eben auf eine Community bauen und den Geldverdiener-Aspekt inkl. Schutz fallen lassen. Muss ja nicht gleich immer alles dabei OpenSource sein... Jürgen S. schrieb: > Wenn man eigene Boards entwickelt und in den Markt bringen möchte, ist > es ein sehr probates Mittel, freie FPGA-Pins mit pulldowns und > Widerständen zu verwenden und in der Auslieferung nach Lust und Laune > mal niederohmige und hochohmige zu bestücken. Auf den ersten Blick sehen > alle PCBs dann gleich aus, haben aber alle einen anderen Code, den man > auslesen und einem FPGA-image zuordnen kann. Da sehe ich nicht wirklich, was das bringen soll. Ausserdem: Wer bestückt das (ev. von Hand)? Ich kenne keinen, der sowas in Stückzahlen macht. Zudem ist ja wohl die Hardware im besagten Fall schon im Feld... Gruss, - Strubi
Strubi schrieb: > Da sehe ich nicht wirklich, was das bringen soll. Ausserdem: Wer > bestückt das (ev. von Hand)? Ich kenne keinen, der sowas in Stückzahlen > macht. Natürlich nicht. Das ist die Bastellösung für die Kleinserienhersteller, die HW individualisieren möchten. Die Methodik ist dieselbe wie bei Common Customized Chips, bei denen jeder Nutzer seinen eigenen Code einstellt um seine Chipfunktion zu aktivieren. Das Beste ist nach wie eine eigene HW, die man nur selbst nutzt. bild schrieb: > Kann es eigentlich vom Hersteller Probleme geben wenn man dessen Produkt > mit anderer Software verkauft? In der Regel nicht, er kann ja erst einmal nichts dagegen machen. Gfs muss man Typenschilder entfernen, um nicht sein Logo und Produktnamen zu missbrauchen. > Könnte damit ja Theorethisch den aufgedruckten Zertifizierungen nicht mehr entsprechen. Das wiederum is ganz sicher so und bei einem FPGA in jedem Fall. Der Hersteller ist dann aber fein raus, weil sein Gerät und damit er selber nie wieder juristisch von Belang werden kann, da er sich darauf berufen kann, dass es die falsche SW hat. Verantwortlich und damit haftbar ist der Inverkehrbringer. Also entweder der Programmierer, der es draufjagt oder eben der Privatmann. Die Geräte müssen trotzdem CE haben und wenn man sich aus dem Müll was greift es umbastelt und verkauft oder offen anbietet, oder auch nur verschenkt, ist man Hersteller! Das ist besonders lustig bei Medizinprodukten, die ohne Modifikation noch keine waren und nach einer Modifikation plötzlich welche sind, weil sie ohne Kenntnis des Bastlers unter die Verordnung fallen. Auch passiert es, dass sie die Sicherheitsklasse ändern. Klassisches Beispiel sind refurbished Geräte, bei denen einer eine neue SW drauf macht, unachtsamerweise irgendwas nicht mehr mit einbaut oder etwas weglässt. Ich kenne einen konkreten Fall, wo sich durch Nutzung eines besseren Akkus, die Sicherheit verschlechtert hatte, weil man die dreifache Kapazität hatte und den Ersatzakku weggelassen hat, weil der nicht mehr geladen wurde. Damit fällt Redundanz weg und die FMEA ändert sich. Damit ist die Zulassung in der Regel hin, weil es nicht mehr in dem Zustand ist, wie es einmal war. Ich kann diesbezüglich nur klar davor warnen, an irgendwelchen Geräten rumzubauen, die irgendwie am menschlichen Körper oder im Umfeld der Diagnostik oder gar der Therapie benutzt werden. Besonders die Wellnessgeräte haben es in sich. Viele bewegen sich gerade so am Rand zur Pflichtzulassung als Medizinprodukt. Wer da auch nur einen Blockondensator hinzufügt oder eine andere Spannungsversorgung einbaut, der modifiziert die Schaltung und macht sich angreifbar. Für Medizinprodukte müssen z.B. Nachweise über Ableitstrommessungen gebracht werden, die GA muss einen gewissen Mindeststandard haben und allerlei Gefahrenhinweise beinhalten. Nichteinhaltung ist teuer, bei Gefahr sehr teuer und bei Schaden droht sogar Gefängnis.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.