"Nie wiesz, co podpisujesz" - protokoły ślepych podpisów

28.01.2010 - Agata Murawska
TrudnośćTrudność

Płatności elektroniczne to obecnie normalny element naszego życia. Są na tyle powszechne, że nie zastanawiamy się zbyt często, jak działa pieniądz cyfrowy. Równocześnie coraz częściej słyszy się o pomyśle przeprowadzania wyborów przez internet, oraz rozważa sposoby zapewniania bezpieczeństwa takiego systemu.
Co mają wspólnego te dwa, z pozoru całkowicie niepowiązane, przykłady informatyzacji naszego życia? Wspólnym mianownikiem jest hasło "ślepe podpisy".

O zwykłych podpisach wiemy już całkiem sporo - podstawy tego zagadnienia ujęte są na przykład w artykule "Alicjo, czy to naprawdę Ty?". Rozważania o podpisach ślepych zaczniemy od przykładu takiego podpisu w kontekście poczty:

US Airmail

Datownik

Pani na poczcie, otrzymując zaadresowaną kopertę, przybija pieczątkę datownika. Nie wie, co jest zawartością koperty, potwierdza jedynie datę jej otrzymania. Jeśli chcemy mieć podobne potwierdzenie na liście, znajdującym się wewnątrz koperty, musimy umieścić między listem a kopertą kalkę, która skopiuje stempel z datą. W ten sposób każdy, kto widzi list, może być pewien daty jego wysłania (nawet, jeśli koperta została podmieniona lub zgubiona). Równocześnie pani z okienka pocztowego nie zna treści listu - podbiła go bowiem "na ślepo".

Mówiąc "fachowo": podpisy ślepe to forma uwierzytelniania wiadomości bez zapoznawania się z jej treścią. To właśnie zrobiła pani na poczcie - uwierzytelniła (potwierdziła) datę nadania.

Co się dzieje w przypadku anonimowych płatności elektronicznych? Klient nawiązuje połączenie z bankiem, przedstawia się, a następnie wysyła żądanie podobne do przedstawionego na rysunku:

Datownik

Bank wie, że rozmawia z właściwym klientem, zatem odejmuje z jego konta kwotę podaną w wiadomości i podpisuje kupon (czyli kopertę z kalką) ślepym podpisem. Klient posiada teraz podpisany kupon, którego numeru nie zna bank. Może przy użyciu takiego "anonimowego banknotu" dokonywać płatności w internecie. Sprzedawca otrzymujący kupon kontaktuje się z bankiem, który sprawdza, czy podpisał kiedyś taki blankiet i wpisuje go na listę zrealizowanych. Ponieważ bank wcześniej nie widział kuponu, nie wie, kto był jego początkowym właścicielem.
To oczywiście bardzo uproszczony model - o pieniądzach cyfrowych przyjdzie nam jeszcze przeczytać. Na razie chodzi tylko o zrozumienie idei zastosowania ślepych podpisów.

Co z wyborami przez internet? Tutaj nasze cele to przede wszystkim:

  • upewnić się, że każdy zagłosował tylko raz
  • zapewnić tajność oddanego głosu
  • umożliwić weryfikację tego, że głos został oddany
  • sprawdzić, że wynik został dobrze policzony
Żeby zapewnić tajność, potrzebna jest nam niemożność powiązania podpisanego przez komisję wyborczą głosu z osobą głosującego. To kolejne miejsce, gdzie w ślepe podpisy cyfrowe sprawdzają się doskonale.

Za chwilę zastanowimy się, jak właściwie można podpisać coś na ślepo, wcześniej jednak odpowiedzmy sobie na pytanie: co tak naprawdę rozumiemy przez ślepy podpis?

Schemat ślepego podpisu można podzielić na fazy, których głównymi uczestnikami są podpisujący(P) i zaciemniający(Z). Te fazy to, kolejno:
1. Generowanie klucza [P] przez podpisującego, który generuje parę: klucz podpisywania i klucz weryfikacji, traktowane odpowiednio jak klucz prywatny i publiczny.
Dla pani na poczcie kluczem prywatnym był jej stempel pocztowy z datownikiem.
2. Zaciemnianie wiadomości [Z], polegające na zmodyfikowaniu wybranej wiadomości tak, żeby nie była rozpoznawalna dla podpisującego, a następnie wysłaniu jej do podpisania.
To właśnie nasze schowanie listu do koperty z kalką.
3. Generowanie podpisu [P], czyli po prostu podpisanie otrzymanej wiadomości i wysłanie jej z powrotem do nadawcy.
Na poczcie odbywa się ono nieco inaczej (nie odsyłamy zwykle listu do nadawcy, tylko do adresata), ale idea jest ta sama - koperta ze znaczkiem jest podbijana i przesyłana dalej.
4. Zdejmowanie zaciemnienia [Z] przy zachowaniu ważności podpisu - wymaga to przemienności oraz łączności operacji podpisywania i zaciemniania.
Wyjmujemy list z koperty
5. Weryfikacja podpisu odbywa się przy użyciu wiadomości, podpisu i klucza weryfikacji, który jest jawnym kluczem podpisującego. Może jej dokonać każdy.
Data jest wyraźnie widoczna dzięki kalce - jesteśmy pewni daty nadania.

Wyróżniamy dwa podstawowe rodzaje ślepych podpisów:
  • taki, w którym podpisujący nie ma zupełnie pojęcia, co podpisuje (całkowicie ślepe podpisy)
  • taki, w którym zawartość podpisanej wiadomości jest częściowo znana podpisującemu
W drugim przypadku osoba tworząca wiadomość decyduje, jaką część wiadomości ujawnić, a jaka ma pozostać utajniona.


Zanim przejdziemy do przykładowego protokołu, trzeba zastanowić się jeszcze, na czym miałoby polegać bezpieczeństwo ślepego podpisu. Może to trochę zaskakujące, ale właściwie nie do końca wiadomo, co rozumie się pod tym pojęciem.
Dlaczego? Zauważmy na początku, że zaciemnianie wiadomości i zdejmowanie zaciemnienia to forma fałszerstwa egzystencjalnego - przecież w efekcie tych operacji otrzymujemy podpisaną wiadomość, której podpisujący nie widział nigdy na oczy! W efekcie warunki bezpieczeństwa zwykłego podpisu są nam na nic.
Przełykając tę gorzką pigułkę można zastanawiać się dalej - jakie własności bezpiecznego ślepego podpisu powinny wynikać z jego zastosowań?
Pod koniec lat 90. dwóch Francuzów, D. Pointcheval i J. Stern, zaproponowało następującą definicję bezpieczeństwa, wynikającą z zastosowań:

Autor wiadomości po uzyskaniu $ l $ podpisów w $ l $ interakcjach z podpisującym, nie powinien być w stanie wygenerować $ l+1 $-go podpisu bez kolejnej interakcji.
W przeliczeniu na cyfrową gotówkę znaczy to, że nie możemy podrobić więcej pieniędzy, niż tyle, ile wydał nam bank.

5
Twoja ocena: Brak Ocena: 5 (1 ocena)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com