generate_keys - Bash-Skript zur Erzeugung von Schlüssel-Tabellen


Beschreibung

Für die sichere Übertragung von Daten kann es notwendig sein, diese zu verschlüsseln. Ein Beispiel hierfür ist die symmetrische Verschlüsselung von Daten mit demselben Schlüssel bei Sender und Empfänger. Derartige Schlüssel sollten auf (echten) Zufallszahlen basieren. Unter Linux können solche Zufallszahlen recht einfach mittels /dev/urandom erzeugt werden:

user@domain:~> od -A n -t x -N 4 /dev/urandom

Je nach Umfang und Anzahl der Schlüssel kann die manuelle Erzeugung sehr aufwändig sein. Das Bash-Skript generate_keys erzeugt daher Tabellen von Schlüsseln mit beliebiger Länge, die direkt in einem C- oder C++-Programm verwendet werden können.

Quellen

Installation

Eine Installation ist nicht notwendig. Das Skript ist in ein beliebiges Verzeichnis zu kopieren und ausführbar zu machen:

user@domain:~> chmod u+x ./generate_keys

Beispiel

Das Skript ist ohne Optionen aufzurufen:

user@domain:~> ./generate_keys

Nach dem Aufruf fragt es nach der Anzahl der zu erzeugenden Schlüssel und erzeugt daraufhin eine Tabelle mit der entsprechenden Zahl an Schlüsseln:

Number of keys (each key is 32 Bit long):16

Don't forget to include /!

#define NUMBER_OF_SYM_KEYS 16 //!< specifies the number of keys in this list

const uint32_t sym_key_tab[NUMBER_OF_SYM_KEYS] PROGMEM = {
0xf8ef722f, //!< KEY0 --> to be adapted for each device separately!
0xd18ea6bb, //!< KEY1 --> to be adapted for each device separately!
0x5356ae45, //!< KEY2 --> to be adapted for each device separately!
0x9e13fa7f, //!< KEY3 --> to be adapted for each device separately!
0xca12c060, //!< KEY4 --> to be adapted for each device separately!
0x9871b7a9, //!< KEY5 --> to be adapted for each device separately!
0x605c3383, //!< KEY6 --> to be adapted for each device separately!
0x95d7de38, //!< KEY7 --> to be adapted for each device separately!
0x38d66c47, //!< KEY8 --> to be adapted for each device separately!
0x3953af86, //!< KEY9 --> to be adapted for each device separately!
0x376e4dfa, //!< KEY10 --> to be adapted for each device separately!
0x3a16c1f2, //!< KEY11 --> to be adapted for each device separately!
0x85885142, //!< KEY12 --> to be adapted for each device separately!
0x6c8c3d0e, //!< KEY13 --> to be adapted for each device separately!
0xc0929c40, //!< KEY14 --> to be adapted for each device separately!
0xe2dccf90 //!< KEY15 --> to be adapted for each device separately!
};

Diese Tabelle kann nun direkt im Code als Schlüssel-Tabelle verwendet werden. Das Schlüsselwort "PROGMEM" ist nur für den ATmega relevant, um die Tabelle im Flash-Speicher abzuspeichern. Bei Verwendung anderer Controller (beispielsweise STM32Fxxx) kann "PROGMEM" einfach entfernt werden.

Fehlerquellen

Folgende Punkte sind bei der Erstellung Schlüsseln aus diesen Tabellen zu beachten:

Lizenz

Alle hier veröffentlichten Quellen stehen unter der GPLv3.

Versionsinfo

Anregungen oder weitere Informationen

Hier kann ein Kommentar hinterlassen werden:

Name:

Kommentar: