www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Kopierschutz


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

hab folgendes Problem:

Verwende ein Lattice-SC-FPGA, das über keine 
Bitstream-Sicherungsmaßnahme
verfügt (Krypto-Block o.Ä.)

Wie kann ich mittels eines kleinen FPGAs (mit integriertem 
Flash-Speicher)
oder CPLDs das Anlaufen der SC-Funktion unterbinden ?
Das kleinere FPGA wäre über ein paar Leitungen mit dem SC verbunden.

Hat jemand soetwas schon mal gemacht ?

Vielen Dank für eure Ideen
Grüsse,

Stefan

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das geht ja, und man sollte wirlich einen flash-FPGA nehmen
nicht flash mcu, weil rauslesen von geschutzten flash-mcu
kostet in asien etwa 1000 eur fast egal welches flash-controller

actel flash ist aber viel sicherer

naturlich ist es moglich mit sicheren ic auch den schutz
falsch machen..

Antti

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan
Was willst du schützen? Den Bitstrom zum FPGA?
Oder willst du einen Nachbau eines ganzen Gerätes verhindern?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Antti
Verstehe nicht ganz, worauf du hinaus willst ? Fakt ist, wir benutzen
Lattice-SC-FPGAs.

@Lothar
Der Bitstrom zum FPGA soll nicht geschützt werden, da das SC-FPGA ohne
Umwege aus dem Config-Flashbaustein konfiguriert werden soll.
Das zuätzliche kleinere flash-basierte FPGA soll im Prinzip (möglichst
für den Angreifer in einer nicht nachvollziehbaren Art und Weise) die
Funktion des SC-FPGAs aktivieren, oder mit anderen Worten: Ohne die 
Kenntnis
des "Helfer"-Designs (im kleinen FPGA, CPLD) kann das SC-FPGA nicht 
verwendet werden.

Grüsse,
Stefan

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
anti-clone schutz

a) SRAM FPGA ohne encryption + flasch MCU == 1000 EUR und ist gehackt
b) SRAM FPGA ohne encryption + flasch FPGA/encrytpted (Actel) - SICHER

b- man es doch auch falsch machen so das die sichre IC doch
keine sicher bietet :(

antti

Autor: BorisM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann leider nicht ganz so viel zu deiner Frage schreiben, da ich so 
etwas noch nie selbst realisiert habe. Ich habe aber mal in einer 
Vorlesung was von "Challenge-Response-Authentifizierung" gehört -> 
gOOgle dürfte eine haufen Seiten ausspucken. Ich denke dass du mit 
diesem Verfahren dein Problem lösen kannst. Jedoch kann ich dir leider 
nichts über den Aufwand der Implementierung noch über die Sicherheit 
sagen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Antti,

man muss aber nicht unbedingt ein Flash-FPGA von Actel verwenden ... 
auch XP-FPGA von Lattice konfiguriert sich aus dem eigenen Flash.



>b) SRAM FPGA ohne encryption + flasch FPGA/encrytpted (Actel) - SICHER
Gibt es Application Notes hierzu ? Wird hier der Bitstream komplett 
verschlüsselt ? Das ist ja nicht das, was ich wirklich möchte (siehe 
antwort
an Lothar).


Grüsse,

stefan

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es muss nicht actel sein, aber XP und XP2 sind immerhin noch SRAM
FPGA egal das die intern flash haben, Actel ist von geburt her
flash technologie, das macht das rauslesen sehr viel mehr
komplizierter

WIE, ja es muss challenge-response etwas sein
und auch so das immer voll neue sequenzen verwendet
werden, und dann musss es auch richtig mit dem design
"gekoppelt" sein, weil das BITfile patching ist auch
nicht so unmoglich wie man es denkt
fur xilinx gibt es bit zu netlist decompilers
und lattice is fast gleiche arhitecture dh ware
auch nicht allzu schwer den bit file zu dekompilieren

Antti
PS kanns gerne privat email, addresse findest schon :)

Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt Ihr Buch-Quellen oder Application Notes mit einem konkreten 
Implementierungsansatz, um mein Haupt-FPGA-Design geschützt zu aktiveren 
bzw. zu deaktivieren ?

Die FPGA-Journal-Beiträge sind i.d.R. sehr allgemein gehalten.

Grüsse,

Stefan

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für SRAM-FPGAs wäre zB. eine Art TPM möglich:

www.xilinx.com/support/documentation/application_notes/xapp780.pdf

Allerdings erfordert das auf FPGA-Seite auch einiges an Logik. Xilinx 
macht in der Appnote den SHA1-Hash und die one-wire-Kommunikation mit 
einer Picoblaze-CPU. Die hat aber den Nachteil, dass alles per SW 
gemacht wird und das Programm in einem Blockram steht. Und das ist 
wieder recht einfach auslesbar/manipulierbar.

Besser ist es, das meiste in "echter" HW zu machen, kostet aber 
Arbeit... Ein Teil kann ruhig in einer CPU gemacht werden, solange es 
nur der ist, den man über Sniffing ohnehin mithören kann...

Etwas hinderlich ist, dass es das Datenblatt vom DS2432 nur gegen NDA 
gibt. Auf einigen chinesischen Seiten wird der auch schon unter 
"gehackt" geführt, ob das stimmt, weiss ich nicht...

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roger,

danke für den interessanten Link.

Wenn ich mir das genau anschaue, so frage ich mich, ob es für einen 
Angreifer nicht relativ einfach wäre, das (in der Skizee des Links rot 
markierte) Enable-Signal manuell auf High zu setzen ?  Gerade ein 
Clock-Enable eines im Design oft verwendeten Taktes könnte relativ 
schnell ins Auge springen, oder ?

Grüsse,
Stefan

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Bitstream zu verstehen um zu sehen wo und wie so ein Enable Signal 
verwendet wird, und es dann auch noch wegpatchen - ich wuerde sagen das 
gestaltet sich wohl als aeusserst schwierig.
Jedoch nicht unmoeglich.

Cheers, Roger

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roger,

danke für deine Einschätzung.


Handelt es sich bei dem Altera-RefDesign um propietäre Templates oder 
kann man die auch in Nicht-"A"-Bausteinen verwenden ?

Grüsse,
Stefan

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Reference Design ist doch recht Altera lastig, zumal das meiste in 
AHDL geschrieben ist. Aber man kann sich davon inspirieren lassen und 
dann ein 3DES oder gleich AES core von http://www.opencores.org nehmen.

Cheers, Roger

Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo 123,

in Zusammenhang mit Deinem Link habe ich folgendes Paper von Altera 
gefunden:

http://www.altera.com/literature/wp/wp-01033.pdf


@Roger
Kannst Du mir sagen, ob dieses Referenzdesign ebenfalls AHDL-lastig ist 
?

Grüsse,

Stefan

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Kannst Du mir sagen, ob dieses Referenzdesign ebenfalls AHDL-lastig ist

Kann ich leider nicht, da ich dieses design nicht habe.

Cheers, Roger

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan Ist komplett in VHDL verfügbar

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es zu dem MAXIM-Referenzdesign von Altera (SHA-Engine) ein
Evalboard ?


Grüsse,
Stefan

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glaube nicht. Aber prinzipiell kannst du die Sache auch selber bauen. 
Ein CPLD müsste dann die Aufgabe des Dallas Chips übernehmen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan
Hast du dir schon mal die Frage gestellt, wie hoch das Interesse ist, 
dein FPGA-Design zu knacken. Lohnt sich das, oder ist es einfacher, zu 
messen, was hineingeht, was herauskommt und das "Dazwischen" dann 
nachzubilden?

Interessanter dürfte doch sein, ob jemand deine Hardware nachbaut und 
einfach deinen Bitstrom verwendet. Das kann jeder bessere Bastler, davor 
müsstest du dich schützen.

Xilinx hat auch eine Appnote, wo ein SHA-1-Wire Baustein an einen 
PicoBlaze angekoppelt wird, und daraus ein Good/Bad-Signal erzeugt wird. 
Wenn du dann noch zeitlich versetzt zur Abfrage eine Fehlfunktion 
auslöst, kommt keiner mehr dahinter, was da passiert ist...

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lothar, die von dir beschriebene App. Note ist das gleiche in Grün 
wie das was Stefan bei Altera ausgebraben hat. Einfache Freund-Feind 
Detektion zur Verhinderung des Bitstream Kopierens.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Einfache Freund-Feind Detektion zur Verhinderung des Bitstream Kopierens.
Richtig. Meine Frage war ja, ob das nicht ausreicht...
Wenn der SHA-Baustein nicht da ist, wird die sinnvolle Funktion des 
FPGAs eingestellt. Besser, weil verwirrender: es läuft fast korrekt 
weiter, aber ab und an passieren irgendwelche seltsamen Fehler...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sören,

>Aber prinzipiell kannst du die Sache auch selber bauen.

Verständnisfrage: Wenn ich nicht weiss, wie das Design im MAXIM
im Einzelnen aussieht, und wenn das Altera-Referenzdesign genau auf
dieses MAXIM-Design abgestimmt ist,
wie kann ich dann ohne weitere Kenntnisse das MAXIM-Design nachbauen, so 
dass das Altera-Referenzdesign immer noch lauffähig ist ?
Oder hat der MAXIM-Baustein die gleichen Innereien wie das 
Altera-Referenzdesign ?

Grüsse,

Stefan

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip ist es symmetrisch, du müsstest also nur die FPGA-Logik 
zweimal bauen.

Die Idee basiert einfach auf dem Hash-Prinzip. Der Maxim verwurstet 16 
32-Bit-Worte (512Bit) per SHA1 zu einem 160Bit-Hash. Der Inhalt der 16 
Worte setzt sich u.a. aus der Seriennummer, einem "geheimen" 
einprogrammierten Schlüssel und einer "Challenge" zusammen. Die werden 
dem Chip vom FPGA aus geschickt. Die Challenge ist dabei irgendein 
Zufallswert.

Der Hashwert (Digest) wird wieder ausgelesen und *im FPGA* mit einem auf 
dieselbe Weise berechneten Digest verglichen. Ist es identisch, war der 
Schlüssel identisch und nur um den gehts.

Das ganze System lebt aber von ein paar Vorraussetzungen:

- Der Schlüsselwert ist im FPGA irgendwo in der Logik begraben 
(vorgeladenes RAM ist KO), im Maxim (hoffentlich) nicht auslesbar.

- Die Zufallszahl der Challenge muss wirklich zufällig sein. Das führt 
meistens zu recht seltsamen Schaltungen, die die Metastabilität 
ausnutzen...

- Der Ablauf des SHA1 auf beiden Seiten darf nicht tracebar oder 
manipulierbar sein, beim DS* nimmt man das mal an... Aber es hilft ja 
nix, wenn das FPGA ein Fake-Digest injiziert bekommen kann, und damit zu 
allem Ja und Amen sagt.

- Der letzte Punkt bedeutet eigentlich, dass zB. die Lösung von Xilinx 
fürn A... ist, weil der Picoblaze aus einem Blockram läuft, und das ganz 
einfach manipulierbar ist. D.h. der SHA1 muss eigentlich in echter HW 
ablaufen. Das geht schon, ist aber etwas Gefummel.

Was zB. dagegen völlig harmlos ist, ist das Auslesen der DS-Seriennummer 
in SW und die Übermittlung an die SHA1-HW. Das kann man durch Sniffing 
ohnehin mitbekommen, also ist es egal, wie sich man das macht. Solange 
der Default-Zustand der Erkennung "Feind" ist ;-)

Man sollte sich also schon gut überlegen, was man wie macht und welche 
Ansprüche man so an den Cloneschutz hat. Ein Loch an der falschen Stelle 
und der ganze Aufwand war umsonst...

Autor: Hacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ganze System lebt aber von ein paar Vorraussetzungen:

Eine andere Vorraussetzung an diesen Systemen ist, dass das Bit-File 
nicht manipulierbar ist.

Diese Annahme stimmt nur insoweit, dass man aus einem Bit-File nur unter 
größten Mühen eine HDL-Beschreibung bekommt.

Aber für einen Angriff auf diese Systeme braucht man das nicht. Es 
reicht, wenn man z.B. im Bit-File ein Bit findet, dass den Output des 
internen Zufallsgenerators auf einen festen Wert legt. Oder die Eingänge 
des Vergleichers, oder, oder, oder.

Das schöne daran: Man kann diese Suche automatisieren und auch 
parallelisieren. Und die Hardware dafür ist auch billig, nämlich das 
Ziel-FPGA.

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es gibt BIT to NETLIST converter fur xilinx

dh ist gar nicht so grosser aufwand..

Antti

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, dann hat man den ganzen Logikwust ohne jegliche Annotationen. Da 
müsste man erstmal den Teil finden, der den Digest-Vergleich macht oder 
dann die Sperre einschaltet. Ginge bei einem XC3042 sicherlich (nur 
passt da kaum ein SHA1 rein), aber bei allem, was über 200kGates und 
tausenden FFs liegt, ist das sicherlich etwas haarig.

Zum Reverse-Engineeren eine bestimmten "supertollen" und geheimen 
Eigenschaft des FPGAs ist das sicherlich noch hilfreich/denkbar, aber 
nur fürs Clonen alleine ist das IMO zuviel Aufwand. Wenn es länger 
dauert, das Ding zu clonen, als selbst from-scratch zu entwickeln, ist 
was faul am Geschäftsmodell ;)

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.