- Blom-Verfahren
-
Das Verfahren von Blom ist ein kryptographischer Algorithmus zum Austausch symmetrischer Schlüssel. Es wird derzeit im HDCP-Protokoll (dem Kopierschutzverfahren des HDTV) eingesetzt.
Eine vertrauenswürdige Partei gibt dabei jedem der n Teilnehmern 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 jedoch k 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 k Benutzer können (bei optimaler Parameterwahl, siehe weiter unten) nichts ausrichten. Es handelt sich dabei um ein Schwellwertverfahren (engl. threshold scheme).
Inhaltsverzeichnis
Vorteile des symmetrischen Schlüsselaustausch
Das Verfahren ist sowohl wesentlich schneller als auch einfacher zu programmieren als zum Beispiel das RSA-Verfahren. Somit kann das Blom-Verfahren auch in leistungsschwachen Mikrochips eingesetzt werden.
Nachteile
Wenn einige Teilnehmer zusammenarbeiten, oder aber deren Schlüssel geknackt, geklaut oder anderweitig komprimittiert werden, können alle Schlüssel berechnet werden.
Das Protokoll
Der Schlüsselaustausch erfordert eine vertrauenswürdige Partei (Trent) und n Benutzer (neue Benutzer können auch nachträglich bequem hinzugefügt werden). Alice und Bob seien im folgenden zwei Benutzer.
Protokoll Vorbereitung
Die vertrauenswürdige Partei Trent wählt eine geheime, zufällige und symmetrische k×k-Matrix D über GF(p), wobei p vorzugsweise eine Primzahl sein sollte. Diese Matrix muss zum Hinzufügen eines neuen Benutzers bekannt sein.
D sei zum Beispiel (p = 17):
Hinzufügen eines neuen Teilnehmers
Ein neuer Benutzer Alice möchte der Schlüsselaustausch-Gruppe beitreten. Trent wählt für Alice eine öffentliche Benutzerkennung (am besten in Abhängigkeit ihres Namens). Dies ist hier mathematisch gesehen ein Vektor IAlice mit k Komponenten aus GF(p).
Anschließend berechnet Trent den privaten Schlüssel von Alice: gAlice = (D * I) Der private Schlüssel kann nun von Alice verwendet werden, um einen gemeinsamen Schlüssel mit einem beliebigen anderen Gruppenteilnehmer zu berechnen.
IAlice = , dann ist gAlice =
IBob = , dann ist gBob =
Berechnung eines gemeinsamen Schlüssels zwischen Alice und Bob
Nun möchte Alice mit Bob kommunizieren. Alice kennt hierzu Bobs Identifikation (nämlich den Vektor IBob) und den eigenen privaten Schlüssel gAlice.
Sie berechnet nun: kAlice / Bob = gAlice * IBobt (t bedeutet transponiert)
Bob kann dasselbe machen (aber natürlich mit seinem privaten Schlüssel und Alice Identifikationsvektor).
Beispiele:
kAlice / Bob =
kBob / Alice =
Bemerkungen
Damit erst k oder mehr korrumpierte Benutzer das System knacken können, müssen ihre Benutzerkennungen (also die Vektoren IBenutzer) in k Gruppen linear unabhängig sein, d. h. jede Auswahl von k Vektoren ist linear unabhängig. Dies kann dadurch erreicht werden, dass die durch alle Benutzervektoren aufgespannte Matrix einen MDS-Code darstellt (maximum distance seperable Fehlerkorrekturcode). Die Benutzerkennungen sind dabei die Spalten dieser Matrix.
Quellen
- A. Menezes, P. van Oorschot, S. Vanstone: Handbook of applied cryptography, CRC Press, 1996
- R. Blom, "An optimal class of symmetric key generation systems"
- IACR-Seite zur Publikation
Kategorie:- Kryptologisches Verfahren
Wikimedia Foundation.