Quellcode für RSA-Algorithmus auf einem Mikrocontroller

Gast #182308
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 :-))
Gast
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).
Gast
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?
Gast
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.
Gast
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?
Gast
> 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.
Gast
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?
Gast
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.