Mittwoch, 8. Februar 2012 |
Heute, etwas außer der Reihe, mal etwas anderes: Wie der Weihnachtsmann digitale Gutscheine einführte... Natürlich benutzt auch der Weihnachtsmann inzwischen Computer. Als es einmal Probleme mit der Auswertung der Wunschzettel gab, hatte der für den IT-Bereich zuständige Elf einen Vorschlag: Es sollten digitale Gutscheine verschenkt werden, die die Kinder dann anschließend im lokalen Spielzeuggeschäft einlösen können.
Die Gutscheine sollten eine Reihe von Forderungen erfüllen [1]:
Ein Protokoll, das diese Forderungen erfüllt, lässt sich anschaulich folgendermaßen darstellen:
Wird ein Blatt Papier in einen innen mit Kohlepapier versehenen
Briefumschlag gesteckt und der Umschlag dann mit einer Markierung versehen,
so wird der Abdruck dieser Markierung auf das Papier übertragen.
Nun wird angenommen, dass der Weihnachtsmann eine spezielle Markierung
(zum Beispiel ein Siegel) besitzt, welche den garantierten Wert von beispielsweise 25 Euro
hat: Der Weihnachtsmann zahlt für jedes Blatt Papier mit der
Markierung 25 Euro aus. Helfer stecken nun die Gutscheine (d.h. ein Blatt
Papier) in solche Umschläge und bringen sie zum Weihnachtsmann. Der
versieht die Umschläge auf der Außenseite mit der Markierung.
Zur Bescherung werden diese Umschläge dann als Geschenk verteilt. Der
Beschenkte entnimmt den Gutschein, geht nach Weihnachten in ein
Geschäft, holt sich sein Geschenk und "bezahlt" mit dem
Gutschein. Die Geschäfte überprüfen die Markierung auf dem
Gutschein, bevor sie ihn als Zahlungsmittel akzeptieren. Wenn der
Weihnachtsmann die Gutscheine von den Geschäften zur Gutschrift
vorgelegt bekommt, weiß er, dass die Gutscheine sich in von ihm
markierten Umschlägen befanden. Da er aber nicht weiß, welcher
Gutschein sich in welchem Umschlag befand, weiß er auch nicht,
welches Kind in welchem Geschäft war.
Folgendes Bild zeigt das Vorgehen:
Die Grundidee dieses Verfahrens wird als blinde Signatur bezeichnet: Jemand signiert etwas, ohne es dabei zu sehen. Er kann später erkennen, dass er das, was er zurückerhält, selber signiert hat. Er weiß aber nicht, wie es bei der Signatur ausgesehen hat.
Realisierung
Für das Protokoll wird ein Signatursystem mit folgenden Eigenschaften
verwendet:
Nachrichten können vom Weihnachtsmann signiert und diese Signatur kann
von allen anderen Teilnehmern getestet werden. Es existieren eine
Signierfunktion sign und eine Testfunktion test,
für die gilt
1. test( sign(a) ) = a = sign( test(a) )
2. sign( a * b ) = sign( a ) * sign( b).
Die Lösung bei Verwendung Digitaler Signaturen funktioniert analog dem Verfahren mit Umschlägen:
n. Diese Zahl entspricht
dem Blatt Papier im Beispiel.r,
entsprechend einem Umschlag.test(r) * n
berechnet, was dem Einstecken des Papiers in den Umschlag entspricht.sign( test(r) * n )
Dies entspricht dem markierten Briefumschlag.sign( test(r) ) * sign(n)
betrachtet und r durch Multiplikation mit seiner
multiplikativen Inversen entfernt werden. Man erhält den
signierten Gutschein
sign(n)
(entsprechend dem Entfernen des Briefumschlags). Die Korrektheit der
Signatur kann durch Anwendung des öffentlichen Schlüssels
test des Weihnachtsmanns überprüft werden, wenn
test( sign(n) ) = n
gilt.test( sign(n) )
(also n) eine "spezielle Zahl" und damit ein
gültiger Gutschein ist. Das Verfahren der blinden Signatur wurde 1982 [2] von David Chaum vorgestellt, der daraus das "digitale Geld" DigiCash entwickelt hat. Eine ziemlich pfiffige Lösung, die sich leider nicht durchgesetzt hat.
In der nächsten Woche geht es wieder um Firewall-Protokolle: Nachdem in About Security #37 beschrieben wurde, was, wo und wie protokolliert wird, geht es dann um die Auswertung der gesammelten Informationen.
Ich wünsche allen Lesern ein erfolgreiches neues Jahr!
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen! |