Padding und Zufallszeichen

Zufallswerte sind Voraussetzungen für sichere kryptographische Verfahren, da die Vorhersage z.B. eines Schlüssels für einen Angreifer maximal schwer sein muss. Sicheres Padding ist notwendig damit nicht Teile des Klartextes einem Angreifer bekannt sind und die Schlüsselsuche so erheblich erleichtert.

=

Padding

Bei Verschlüsselung mit symmetrischen Blockchiffren und asymmetrischen Chiffren wird der Klartext in Blöcke geteilt und der Algorithmus darauf angewandt, deshalb muss der letzte Block auf die notwendige Größe aufgefüllt werden, wenn der letzte Block nicht lang genug ist.

Ein Empfänger weiß nach einer Entschlüsselung nicht, wo der Klartext aufhört, muss im Padding angegeben sein, wie lange das Padding, wofür es verschiedene Möglichkeiten gibt. Entweder geben die Daten selbst implizit an, wieviele Zeichen gepaddet werden, oder ein bestimmter Wert gibt ab wo gepaddet wird, wobei dieser Wert vom Ende zum Anfang gesucht werden muss. Einem Empfänger muss auch mitgeteilt werden, ob überhaupt Padding stattgefunden hat, deshalb wird oft immer gepaddet mit dem Nachteil dass ein kompletter zusätzlicher Block verarbeitet werden muss.

Ist für eine Anwendung immer genau definiert, was Nutzdaten und was Paddingzeichen sind, muss nicht explizit angegeben werden, wieviele Zeichen als Paddingzeichen zu interpretieren sind. Bei MAC-Berechnungen wird deshalb oft einheitlich mit Nullen gepaddet, während bei digitalen Signaturen der Hash-Wert mit Zufallszahlen aufgefüllt wird, um nicht zuviel vom signierten Wert zu verraten. Paddingschemen sind in PKCS #1 oder PKCS #5 zu finden.

=

echter Zufall

Die meisten "Zufallszahlen" werden von Computern generiert die dafür einen Algorithmus verwenden und damit Pseudo-Zufallszahlen erzeugen, auch wenn diese unter Anwendung kryptographischer Prinzipien und mathematischer Probleme erstellt werden - sie bleiben ja dennoch deterministisch. Ein RNG (Random Number Generator) kann also ein PRNG (Pseudo RNG) oder TRNG (True RNG) sein. Ein TRNG ist als in Hardware zu konzipieren und muss von äußeren Einflüssen unabhängig (Temperatur, Spannung, Strahlung,...) sein. Die Qualität einer Zufallszahl kann durch ihre Entropie angegeben werden.

Entropie ist ein Maß für die Unordnung oder Zufälligkeit im Gebiet der Thermodynamik (Boltzmann Prinzip) und wurde von Claude Elwood Shannon in die Informationstheorie übernommen. Auf Smart Cards werden oft spannungsgesteuerte Oszillatoren eingesetzt. Zufallszahlen eines TRNG werden oft zur Generierung des Seeds für einen PRNG eingesetzt - so meist auch bei Smart Cards, da eine komplette Unabhängigkeit von äußeren Einflüssen bei Smart Cards schwierig ist.

=

Pseudozufall

Ein PRNG muss Statistische Tests für Zufälligkeit bestehen, Serial Test, Coupon Collector Test, mehrdimensionale Spektral Tests, etc. PRNG sind deterministisch und bei kennen des Algorithmus und der Eingangsparameter sind auch die Zufallszahlen zu ermitteln. Ein Eingangsparameter ist die Seed, welche selbst eine gute Entropie aufweisen sollte. Ein Problem ist die Periodizität, ein PRNG wird irgendwann wieder in denselben Status kommen und dieselben Zufallszahlen generieren.

Ende der 90er wollte man mit PKCS #14 einen Standard für PRNG schaffen, ist aber nunmehr nicht mehr offiziell. Damals begann man Familien für PRNGs auf Basis der angewandten Mechanismen zusammenzufassen. PRNG verwenden Hash-Algorithmen oder Blockchiffren (im Counter Mode) oder beides.

Ein CSPRNG (Cryptographically Secure Pseudo RNG) hat neben statistischen Tests weitere Eigenschaften zu erfüllen.

  • Es muss schwierig sein, die nächste Zufallszahl des CSPRNG vorherzusagen auch wenn Teile oder alle vorher Zufallszahlen analysiert werden, und im besonderen muss es
  • schwierig sein, den internen Status des CSPRNG aus der Analyse seines Outputs zu extrahieren

CSPRNG sollen auch Reverse Engineering widerstehen, die stärksten dafür der auf dem Faktorisierungsproblem beruhenden Algorithmen, (z.b. Blum Blum Shub) sind entsprechend langsam. Stromchiffren verwenden PRNG oft als Erzeuger für den Schlüsselstrom, der mit dem Klartext dann XOR gerechnet wird, was Probleme aufwerfen kann, siehe RC4 und WEP.

=