Der RVB-Agorithmus

Der von uns entwickelte RVB-Algorithmus wird an anderer Stelle genauer beschrieben und darf in der Software-Suite natürlich nicht fehlen. Die Software ist ebenfalls an anderer Stelle beschrieben, und wir übernehmen sie weitgehend.

Der RVB hat ähnliche Eigenschaften wie der Diffei-Hellman-Algorithmus, unterscheidet sich aber in der Parametrierung so stark, dass wir ihm eine komplett eigene Klassenschiene gönnen und ihn nicht an die DH-Familie anschließen (in Botan sind weiter Algorithmen enthalten, für die das ebenfalls gilt, so dass wir nichts grundsätzlich Neues unternehmen). Der Code wird im Manager-Verzeichnis RVB angelegt, allerdings innerhalb des Botan-Namespace. Details kann man (vorläufig) dem Quellcode entnehmen.

Als mathematische Bibliothek wird wie in den anderen RVB-Projekten ttmath verwendet. Wir nutzen allerdings nur die FLOAT-Implementation; bei den BIGINT-Variablen greifen wir auf die Botan-Klasse zurück, die den Vorteil hat, bereits in den ASN.1-Codierungen vorhanden zu sein (wir mussten so nur eine Programmzeile anpassen, während er andere Weg sicher deutlich unangenehmer gewesen wäre). In den ASN.1-Tags wurde der Typ REAL ergänzt; wir verwenden für die Kodierung die FLOAT-Darstellung als lesbaren String, dem das Byte 0x02 vorangestellt wird und der dadurch vollständig ASN.1/ISO 6093 NR2-konform gespeichert wird.

Botan verwendet für die Objektgenerierung an verschiedenen Stellen Factories, was als weitere Maßnahme den Header-File “rvc_include.h” notwendig macht, der ebenfalls wie build.h implizit in die Compilierung aufgenommen werden muss. Er enthält die notwendigen #define-Angaben, mittels der die RVB-Aufrufe in die verschiedenen Factories eingefügt werden. Die Positionen lassen sich im Editor mittels der Suche nach “BOTAN_HAS_RVB” leicht ermitteln.