Forum: FPGA, VHDL & Co. FPGA an Hardware und Kunden binden


von Rolf S. (audiorolf)


Lesenswert?

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?

von A. S. (Gast)


Lesenswert?

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)

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

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.

von A. S. (Gast)


Lesenswert?

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.

von Strubi (Gast)


Lesenswert?

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.

von DivisionByZero (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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?

von Rolf S. (audiorolf)


Lesenswert?

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.

von H-G S. (haenschen)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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

von Peter W. (logatom)


Lesenswert?

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
von bild (Gast)


Lesenswert?

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.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

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.

von Strubi (Gast)


Lesenswert?

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

von J. S. (engineer) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.