Implementieren Sie Kryptographiealgorithmen in einem ARM-Mikrocontroller

Stellen Sie sich eine Situation vor, in der Sie einige Verschlüsselungsverfahren in Ihrem ARM-Mikrocontroller ausführen möchten. (Beispielsweise eine Datei empfangen, mit 3DES und einigen Hash-Funktionen verschlüsseln und zurückgeben.)

Soweit ich weiß, haben wir hier zwei Möglichkeiten:

  1. Das Rad neu erfinden! dh einige Funktionen schreiben, um beschriebene Kryptografiealgorithmen auszuführen.
  2. Hinzufügen bereits geschriebener Bibliotheken in unser Projekt und einfache Verwendung ihrer Methoden.

Jetzt möchte ich von der zweiten Lösung mit OpenSSL- Bibliotheken profitieren . Aber ich bin mir da nicht sicher! Ist es möglich, diese Bibliotheken zur IAR- IDE hinzuzufügen ? Soll ich den OpenSSL- Quellcode neu kompilieren, bevor ich ihn zu meinem Programm hinzufüge?

Ich schätze eine Schritt-für-Schritt-Lösung sehr.

"Verschlüsseln mit ... und einigen Hashes" - mehrere Hashes bieten keine Sicherheit und können tatsächlich Schwachstellen einführen. Wenn Sie nur unterschiedliche Hashes für verschiedene Eingaben durchführen möchten, ist dies jedoch kein Problem.

Antworten (1)

Ja, Sie müssen die Bibliothek in IAR neu kompilieren, um sie in Ihrem Projekt verwenden zu können. Eine Schritt-für-Schritt-Anleitung finden Sie in dieser Antwort .

Ich schlage vor , statt OpenSSL einen Blick auf mbedTLS oder Tiny SSL zu werfen , da Ihr Projekt wahrscheinlich von der Verwendung einer kleineren Bibliothek profitieren wird.

Einverstanden - OpenSSL ist ein riesiges Legacy-Paket, mit dem man nur schwer arbeiten kann. Betrachten Sie auch nacl.cr.yp.to . Wenn Sie nur 3DES (veraltet!) und SHA-2 wollen, können Sie diese separat als Referenzimplementierungen erhalten. Vergessen Sie nicht, den richtigen CBC-Modus, IV, Key-Scheduling- und Padding-Modus zu verwenden!
@pjc50 Kann ich NACL auch in meinen ARM-Programmen verwenden?
Da ich einige Signaturen generieren und verifizieren möchte, denke ich, dass OpenSSL die einzige Option ist, oder?
Ich glaube, Sie brauchen dafür SHA-2. Es ist auch in mbedTLS implementiert.
NaCl ist auf ARM ausgerichtet: hyperelliptic.org/tanja/vortraege/20121129.pdf und kann Signaturen machen, allerdings nur crypto_sign_edwards25519sha512batch und keine PGP-kompatiblen Signaturen.