Forum: Mikrocontroller und Digitale Elektronik RSA verschlüsselung auf ein 32-bit system


von Johannes (Gast)


Lesenswert?

Hallo,
ich muss eine RSA-dekodierung (in C) auf einem 32-bit Controller 
implementieren. Dazu habe ich einen 128Byte großen Public Modulus, den 
Public exponent und den Private Modulus (auch 128Byte(zum Testen)). 
Eigentlich ist es ja nicht schwer, wenn die Zahl nicht so groß wäre.
Ziel ist es, dass ich einen 128Byte-Array an eine gegenstelle schicke, 
dieser dort verschlüsselt wird und zurückgeschickt wird und ich es 
wieder entschlüssle. Dann sollte das selbe herauskomen und die 
gegenstelle hat sich authentifiziert.
Daher wollte ich es erst einmal auf meinem Computer (Windows und 
Eclipse) umsetzen (da ich hier einfacher debuggen und mir werte ausgeben 
kann).
Habe jetzt zwei implementierungen gefunden (source files), die ich für 
meine Verwendung verwenden könnte.

tiny-bignum
https://github.com/kokke/tiny-bignum-c

und

BearSSL
https://bearssl.org/

allerdings habe ich bei keinen von den Beiden genau durchgeblickt, wie 
es funktioniert. Ich blicke nicht durch, in welcher reihenfolge welche 
Funktionen aufgerufen werden müssen.

Ziel wäre es, wenn ich einen Array codiere und diesen dann wieder 
decodiere. Dann sollte ja das selbe wieder herauskommen.
Die dekodierung wird dann danach auf den Controller umgesetzt.

Kenn jemand eine von diesen beide projekten und kann mir einen hinweis 
geben? Oder hat jemand eine andere lösung wie ich es umsetzen kann? Wie 
wird es sonst auf Microcontrollern gemacht?


Johannes

von Gerd E. (robberknight)


Lesenswert?

Johannes schrieb:
> und die
> gegenstelle hat sich authentifiziert.

Es geht Dir also gar nicht ums Verschlüsseln, sondern eigentlich um 
Authentifizierung, korrekt?

Das ist ein bisschen ein anderer Fall.

> Wie
> wird es sonst auf Microcontrollern gemacht?

https://www.microchip.com/wwwproducts/en/atecc508a

Hat zusätzlich zur einfacheren Implementation und höheren 
Geschwindigkeit den großen Vorteil daß man an den privaten Schlüssel 
nicht so einfach herankommt. Mikrocontroller kann man trotz diverser 
Fuses und Readout-Protection normalerweise schon noch auslesen lassen, 
da gibt es in China extra Dienstleister für. Bei so einem 
Hardware-Crypto-IC ist das natürlich auch möglich, aber ungleich 
schwieriger.

Nachteil ist natürlich daß man der Implementation des Herstellers 
vertrauen muss und diese nicht selbst verifizieren kann.

von Axel S. (a-za-z0-9)


Lesenswert?

Johannes schrieb:
> ich muss eine RSA-dekodierung (in C) auf einem 32-bit Controller
> implementieren.

Warum "mußt" du das? Hausaufgabe?

> Eigentlich ist es ja nicht schwer, wenn die Zahl nicht so groß wäre.

Ach!

> Habe jetzt zwei implementierungen gefunden (source files), die ich für
> meine Verwendung verwenden könnte.
>
> https://github.com/kokke/tiny-bignum-c
>
> und
>
> https://bearssl.org/
>
> allerdings habe ich bei keinen von den Beiden genau durchgeblickt, wie
> es funktioniert.

Und? Dann klemm dich dahinter. Lies die Dokumentation. Schau dir die 
Beispiele dazu an. Oder Anwendungen, die jeweils darauf basieren.

> Oder hat jemand eine andere lösung wie ich es umsetzen kann? Wie
> wird es sonst auf Microcontrollern gemacht?

Krypto mit großen Zahlen verwendet immer irgendeine Bignum Bibliothek. 
Das ist von der mathematischen/algorithmischen Seite her auch eher 
trivial. Wenn du auch nur einmal Arithmetik größer als die Wortbreite 
der ALU implementiert hast (also z.B. 16-Bit Arithmetik auf einem AVR), 
dann kennst du das Prinzip und kannst das auch mit 128-Bit Zahlen 
machen. Dauert dann halt länger, aber sonst ist es das Gleiche.

Also mach halt, das ist keine Raketenwissenschaft.

Am Ende möchte ich trotzdem noch eine Warnung aussprechen: Krypto ist 
tückisch. Schon der kleinste Fehler kann alles kaputt machen. 
Geschätzt 99% der Sicherheitslücken in Krypto kommt von Leuten, die "nur 
mal schnell" für irgendwas Krypto machen mußten. Und dann aber zu bequem 
waren, es zu verstehen und nur schnell was copy&paste mäßig von 
Stackoverflow o.ä. verwendet haben. Wenn du dich nicht bei denen 
einreihen willst, dann mach es ordentlich. Oder laß es ganz.

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.