Hallo zusammen,
ich untersuche gerade ob das RSA-Kryptosystem auf einem FPGA
implementiert werden kann und bin jetzt an einer entscheidenden Frage
dran...
Soweit mir bekannt ist, sind Potenzfunktionen (a^b) nur dann
synthesefähig, wenn entweder die Basis (a) oder der Exponent (b) ein
Vielfaches von 2 sind. Das gleiche gilt für die Modulo-Funktion
Sehe ich das soweit richtig?
Gibt es gegebenenfalls eine andere Möglichkeit eine Potenzfunktion zu
realisieren, sodass diese nicht nur in der Simulation funktioniert,
sondern auch auf einem echten FPGA?
Ich kann das leider nicht testen, da ich kein FPGA-Board besitze..
Hinweis:
Beim RSA Kryptosystem wird ein Text durch folgende Funktion
verschlüsselt:
c = m^e mod n
Danke und Grüße
Du kannst jede beliebige Potenz in Hardware rechnen, z.B. durch
wiederholte Multiplikation. Alles eine Frage des Aufwandes. Wobei RSA in
einem endlichen Körper rechnet, oder? Da gibt es noch ganz andere
Möglichkeiten.
Btw, du brauchst keine FPGA-Hardware zum testen. Ein HDL-Simulator
reicht, zb. GHDL, Icarus, oder Verilator.
Vancouver schrieb:> Ein HDL-Simulator reicht
Er "reicht" nicht nur, sondern er ist im Grunde der erste logische
Schritt zum lauffähigen Design.
Student schrieb:> Ich kann das leider nicht testen, da ich kein FPGA-Board besitze..
Ein FPGA-Designer testet sein Design ganz ohne Zielhardware im
Simulator. Der Simulator ist der Debugger für HDL-Code.
> Beim RSA Kryptosystem wird ein Text durch folgende Funktion> verschlüsselt:> c = m^e mod n
"mod n" könnte je nach 'n' wesentlich spannender werden als "m^e". Denn
fertige Multiplizierer gibts auf einem FPGA. Aber keine Dividierer...
Student schrieb:> ich untersuche gerade ob das RSA-Kryptosystem auf einem FPGA> implementiert werden kann und bin jetzt an einer entscheidenden Frage> dran...
Implementieren ist sehr ungenau. Prinzipiell kann man in einem FPGA
alles machen was man mit einer Turingmaschine eben machen kann. Die
Frage ist dann aber wie lange ein Durchlauf dauert, wie viele Ressourcen
man für die unterschiedlich schnellen Implementierungen braucht, ob man
eine Pipeline bauen kann, ...
Was soll denn das RSA-Kryptosystem machen? Quasi wie ein RSA Token nur
ab und zu mal was berechnen was dann auch gerne einige viele ms dauern
darf oder ist das eine akademische Überlegung?
a^b kannst du zur Not in b-1 Multiplikationen berechnen, das braucht nur
sehr wenige Ressourcen, dauert aber möglicherweise lange.
Student schrieb:> ich untersuche gerade ob das RSA-Kryptosystem auf einem FPGA> implementiert werden kann
Wie möchtest du eine solche Aufgabe lösen, wenn du nicht einmal in der
Lage bis, die einfachsten Möglichkeiten der digitalen Rechenverfahren zu
googlen?
Selbstredend kann man mit einem FPGA alles machen, was ein Prozessor
kann. Also auch Real-Berechnung, Iterationen, Rekursionen. Man muss es
nur implementieren.
Das einzige, was jeweils zu diskutieren gibt, ist der Aufwand und wie
man es im Detail löst.
Student schrieb:> Beim RSA Kryptosystem wird ein Text durch folgende Funktion> verschlüsselt:> c = m^e mod n
Schon mal Die Suchmaschine Deiner Wahl bemüht? Mit "RSA + FGPA" finden
sich zahlreiche Paper zu dem Thema, z.B.
http://www.ajer.org/papers/v4(06)/Q04601440151.pdf. Die Abb. 2 in diesem
Paper zeigt eine mögliche Implementation mit 3 Multiplikator- plus einem
"modular exponential"-Blöcken.
Bin kein Mathe-Crack, aber obige Formel sieht aus, als ob für eine
effiziente Implementation eh erst mal umfaktoriert werden muss,
insbesondere bei erforderlichen Wort-Breiten von 64bit.
Student schrieb:> ich untersuche gerade ob das RSA-Kryptosystem auf einem FPGA> implementiert werden kann und bin jetzt an einer entscheidenden Frage> dran...
"Kryptofunktion auf dem FPGA-Testen", riecht verdächtig nach einer
Projektanfrage, die uns vor kurzem angetragen wurde.
@TE: Du arbeitest nicht zufällig für eine schwäbische Firma?
Eine eigene Frage?
Dieser Thread ist über 6 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.