Forum: FPGA, VHDL & Co. Kopierschutz


von Stefan (Gast)


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

von Antti Lukats (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

von Stefan (Gast)


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

von Antti Lukats (Gast)


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

von BorisM (Gast)


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.

von Stefan (Gast)


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

von Antti Lukats (Gast)


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 :)

von 123 (Gast)


Lesenswert?


von Stefan (Gast)


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

von Georg A. (Gast)


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

von Roger S. (edge)


Lesenswert?


von Stefan (Gast)


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

von Roger S. (edge)


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

von Stefan (Gast)


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

von Roger S. (edge)


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

von 123 (Gast)


Lesenswert?


von Stefan (Gast)


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

von Roger S. (edge)


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

von Sören (Gast)


Lesenswert?

@Stefan Ist komplett in VHDL verfügbar

von Stefan (Gast)


Lesenswert?

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


Grüsse,
Stefan

von Sören (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

von Sören (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

von Stefan (Gast)


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

von Georg A. (Gast)


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

von Hacker (Gast)


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.

von Antti Lukats (Gast)


Lesenswert?

es gibt BIT to NETLIST converter fur xilinx

dh ist gar nicht so grosser aufwand..

Antti

von Georg A. (Gast)


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 ;)

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.