Forum: Compiler & IDEs Quellcode für RSA-Algorithmus auf einem Mikrocontroller


von Michi (Gast)


Lesenswert?

Habe mir schon verschiedene symmetrische Verschlüsselungsverfahren
angeschaut und nun würde mich interessieren, ob von Euch schon einmal
jemand den RSA in C (nicht C++ auf dem PC) implementiert hat.

Falls ja würde mich der Quellcode dazu interessieren, um abschätzen zu
können, ob dieser in einem ATMega gerechnet werden kann oder nicht.
Freue mich auf Eure Rückmeldungen :-))

von Jörg Wunsch (Gast)


Lesenswert?

Nur so, was willst du denn tun?

Erstens, AES dürfte von allen der freundlichste Algorithmus für
einen Controller sein, was die reine Verschlüsselung angeht.

Zweitens, wenn du einen DH key exchange machen willst, musst du dir
vor allen Dingen und in erster Linie um das nötige Maß an Zufall
Gedanken machen.  Damit steht und fällt die Sicherheit des
Schlüsseltauschs.  Sowie dein PRNG auch nur einigermaßen
vorhersagbare Werte erzeugt, hast du praktisch verloren.

Ansonsten lässt sich sowas sicher auf einem nicht zu kleinen ATmega
implementieren.  Je nach Anwendungsfall dürfte der RAM eher knapp
werden als der ROM (es sei denn, du kannst auf externen RAM
zurückgreifen).

von Michi (Gast)


Lesenswert?

Ich möchte wichtige Daten (Datenmenge ist gering) zwischen zwei
Mikrocontrollern auf einer Karte austauschen. Den AES habe ich schon
einmal auf einem kleinen Mikrocontroller implementiert und der
funktioniert auch gut.

Nun würde ich aber gerne ein asymmetrisches Verschlüsselungsverfahren
(RSA) einsetzen, kann jedoch die notwendigen Ressourcen dafür im
Mikrocontroller sowie die Rechenzeit auf einem ATMega nicht
einschätzen.

Hast Du Erfahrungen mit dem RSA bzw. mit der Implementierung auf einem
Mikrocontroller?

von Jörg Wunsch (Gast)


Lesenswert?

Nö, eigene Erfahrungen habe ich nicht, ist eher Hörensagen.

von Jörg Wunsch (Gast)


Lesenswert?

Hab' mal jemanden gefragt, der sich auskennt.

Es ist ziemlich unrealistisch.  Die Rechenzeiten dürften im Bereich
von Sekunden liegen, es sind so um die 1000 Multiplikationen von 1024
* 1024 bits auszuführen.  Außerdem ist der Algorithmus durch die lange
Rechenzeit einfach zu attackieren, da man aus der tatsächlichen
Rechenzeit auf den Schlüssel schließen kann.

von Michi (Gast)


Lesenswert?

Wenn der ATMega dafür z.B. 3 Sekunden benötigen würde, wäre das noch OK,
aber um dies besser einschätzen zu können müsste ich es eben mal
ausprobieren.
Daher die Frage, hast Du einen Quellcode oder könntest Du einen
besorgen, um dies auf einem Mikrocontroller auszuprobieren zu können?

von Chris (Gast)


Lesenswert?

> Wenn der ATMega dafür z.B. 3 Sekunden benötigen würde, wäre
> das noch OK, [...]

Nicht Jörgs letzten Satz gelesen? Wenn der Chip so lange braucht, ist
die erwünschte Sicherheit wahrscheinlich nicht mehr gegeben.

von Michi (Gast)


Lesenswert?

Ich habe Jörgs letzten Satz schon gelesen, aber wie lange ich für eine
Verschlüsselung benötige obliegt ja mir (dem ATMega), der benötigt
lediglich eine Mindestzeit bis der Algorithmus durchgerechnet ist,
danach würde er aber noch eine zusätzliche zufällige Zeit lang warten.
Damit dürften Rückschlüsse auf den Schlüssel schwierig werden.

Aber nun eine Frage an Dich Chris, kennst Du Dich mit dem RSA aus?
Falls ja, kannst du mir nähere Infos zu einem guten Quellcode für den
Mikrocontroller liefern?

von Chris (Gast)


Lesenswert?

> Aber nun eine Frage an Dich Chris, kennst Du Dich mit dem RSA aus?

Nein, tut mir Leid. Zur konkreten Implementierung von RSA fehlt mir
noch das (mathematische) Hintergrundwissen.

Theoretisch (imho) kann man auch bei deinem Verfahren die tatsächliche
Rechenzeit herausfinden; je nach Implementierung der Warteschleife
weist der Stromverbrauch des AVRs in der Warteschleife ein messbar
anderes Muster auf als beim Rechnen.
Das sind Kleinigkeiten, aber je nach gewünschter Sicherheit sollte man
darüber evtl. Gedanken machen.

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.