Blom-Verfahren

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Das Verfahren von Blom ist ein kryptographisches Protokoll zum Austausch symmetrischer Schlüssel mit Hilfe einer vertrauenswürdigen Partei. Das Verfahren ist wesentlich schneller als ein asymmetrisches Verfahren. Somit läuft es auch auf leistungsschwachen Mikrochips. Es wird derzeit im HDCP-Protokoll (dem Kopierschutzverfahren des HDTV) eingesetzt.

Der Schlüsselaustausch erfordert eine vertrauenswürdige Partei (Trent) und Benutzer (neue Benutzer können auch nachträglich bequem hinzugefügt werden). Die vertrauenswürdige Partei gibt dabei jedem der Teilnehmer einen geheimen privaten Schlüssel sowie eine öffentliche Identifikationsnummer. Mit diesen Daten kann jeder Protokollteilnehmer mit jedem anderen Teilnehmer mit Hilfe einfacher Berechnungen (nur lineare Algebra) einen symmetrischen Schlüssel austauschen.

Wenn oder mehr kompromittierte Benutzer zusammenarbeiten sollten, können sie das Verfahren knacken (d. h., sie können den Master-Schlüssel der o. g. vertrauenswürdigen Partei berechnen). Weniger als Benutzer können (bei optimaler Parameterwahl) nichts ausrichten. Es handelt sich dabei um ein Schwellwertverfahren (englisch threshold scheme).

Alice und Bob seien im Folgenden zwei Benutzer.

Protokoll-Vorbereitung

[Bearbeiten | Quelltext bearbeiten]

Die vertrauenswürdige Partei Trent wählt als Master-Schlüssel eine geheime, zufällige und symmetrische -Matrix über , wobei eine Primzahl sein muss. Diese Matrix muss zum Hinzufügen eines neuen Benutzers bekannt sein.

D sei zum Beispiel ():

Hinzufügen eines neuen Teilnehmers

[Bearbeiten | Quelltext bearbeiten]

Ein neuer Benutzer Alice möchte der Schlüsselaustausch-Gruppe beitreten. Trent wählt für Alice eine öffentliche Benutzerkennung (am besten abhängig von ihrem Namen). Dies ist hier mathematisch gesehen ein Vektor mit Komponenten aus .

Anschließend berechnet Trent den privaten Schlüssel von Alice: Der private Schlüssel kann nun von Alice verwendet werden, um einen gemeinsamen Schlüssel mit einem beliebigen anderen Gruppenteilnehmer zu berechnen.

, dann ist

, dann ist

Berechnung eines gemeinsamen Schlüssels zwischen Alice und Bob

[Bearbeiten | Quelltext bearbeiten]

Nun möchte Alice mit Bob kommunizieren. Alice kennt hierzu Bobs Identifikation (nämlich den Vektor ) und den eigenen privaten Schlüssel .

Sie berechnet nun das Produkt daraus: ( bedeutet transponiert)

Bob kann dasselbe machen (aber natürlich mit seinem privaten Schlüssel und Alices Identifikationsvektor).

Beispiele:

Damit erst oder mehr korrumpierte Benutzer das System knacken können, müssen ihre Benutzerkennungen (also die Vektoren ) in Gruppen linear unabhängig sein, d. h., jede Auswahl von Vektoren ist linear unabhängig. Dies kann dadurch erreicht werden, dass die durch alle Benutzervektoren aufgespannte Matrix einen MDS-Code darstellt (Maximum-Distance-Separable-Fehlerkorrekturcode). Die Benutzerkennungen sind dabei die Spalten dieser Matrix.