Mittwoch, 8. Februar 2012


Topthema

Donnerstag, 29. Dezember 2005 | Topthema

About Security: Digitale Gutscheine vom Weihnachtsmann

(Link zum Artikel: http://www.entwickler.de/entwicklerde/kolumnen/026002)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

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.

About Security –
Die Features 2005
  • Einführung (#1, 2, 3, 4)
  • Eine typische Schwachstelle: Der Pufferüberlauf (#5, 6, 7, 8, 9, 10)
  • Schwachstellen in Webanwendungen:
  • - SQL-Injection (#11, 12, 13)
    - Cross-Site Scripting (#14, 15)
    - Skriptcode einschleusen (#16)
    - HTTP Request Smuggling (#17, 18, 19, 20)
    - HTTP Response Splitting (#21, 22, 23, 24, 25)
    - Gefahren für Webanwendungen (#26)
  • Webserversicherheit (#27, 28)
  • Firewall (#29, 30, 31, 32, 33, 34, 35, 36)
  • Logfiles (#37, 38)

Die Gutscheine sollten eine Reihe von Forderungen erfüllen [1]:

  • Ihre Echtheit muss überprüfbar sein.
    Dies ist bei digitalen Gutscheinen kein Problem: Der Weihnachtsmann signiert sie und gibt natürlich nur echte Gutscheine aus.
  • Sie müssen fälschungssicher sein.
    Bei digitalen Gutscheinen bedeutet dies insbesondere, dass sie nicht mehrmals eingelöst werden können, da sich ein Kopieren nicht verhindern lässt. Diese Forderung ist schon nicht mehr so einfach zu erfüllen. Jeder Versuch, einen bereits eingelösten Gutschein erneut einzulösen, muss erkannt werden. Der Händler muss also jeden vorgelegten Gutschein beim Weihnachtsmann überprüfen, bevor er ihn akzeptiert.
  • Aus Datenschutzgründen sollen sie anonym sein.
    Das bedeutet: Der Händler kennt zwar den Kunden, beim Einreichen des Gutscheins beim Weihnachtsmann kann dieser aber nur erkennen, dass der Gutschein von ihm stammt und vom Händler eingereicht wurde. Wer der Kunde ist, ist nicht zu erkennen.

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:

Blinde Signatur am Beispiel eines Umschlags

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:

  • Jeder Helfer wählt eine zufällige Zahl und bildet daraus eine "spezielle Zahl" n. Diese Zahl entspricht dem Blatt Papier im Beispiel.

  • Er wählt eine zufällige Zahl r, entsprechend einem Umschlag.

  • Dann wird
    test(r) * n
    berechnet, was dem Einstecken des Papiers in den Umschlag entspricht.

  • Das Ergebnis wird dem Weihnachtsmann übermittelt, der eine signierte Kopie zurückgeliefert bekommt:
    sign( test(r) * n )
    Dies entspricht dem markierten Briefumschlag.

  • Diese Zahl kann als
    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.

  • Im Geschäft kann geprüft werden, ob
    test( sign(n) )
    (also n) eine "spezielle Zahl" und damit ein gültiger Gutschein ist.
    Um die mehrfache Einlösung eines Gutscheins zu verhindern, führt der Weihnachtsmann eine Liste bereits eingelöster Gutscheine. Das Geschäft fragt beim Weihnachtsmann nach, ob der Gutschein eingelöst wird und akzeptiert ihn nur bei einer positiven Antwort.

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!

Carsten Eilers


[1]

David Chaum: Privacy Protected Payments — Unconditional Payer and/or Payee Untraceability; SMART CARD 2000: The Future of IC-Cards, Proceedings of the IFIP WG 11.6 International Conference; Laxenburg (Austria), 19.–20.10.1987, North-Holland, Amsterdam 1989, 69–93.

[2] David Chaum: Blind signatures for untraceable payments, Advances in Cryptology – Crypto '82, Springer, Heidelberg 1983, 199–203.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Kommentare

Folgende Links könnten Sie auch interessieren