Protokół ślepych podpisów
Protokół ślepych podpisów – forma cyfrowego podpisu, w której podpisywany dokument nie jest znany osobie podpisującej. Ślepy podpis może być potem zweryfikowany z wiadomością. Ślepe podpisy są na ogół wykorzystywane w protokołach opartych na prywatności, w których autor wiadomości i podpisujący to różne osoby. Do przykładów należą systemy elektronicznych wyborów i elektronicznych pieniędzy.
Prosta analogią używaną do porównania ze ślepymi podpisami, jest zamykanie wiadomości z kalką w kopercie, która potem jest podpisywana przez inna osobę. Pomimo że osobą podpisująca nie widziała wiadomości, to każdy może potem stwierdzić jej autentyczność.
Ślepe podpisy uniemożliwiają również powiązanie wiadomości z jej autorem, nawet po przekazaniu jej oryginału do osoby która ja wcześniej podpisała. Wykorzystywane jest to w przypadku e-pieniędzy. Bank podpisuje e-pieniądz posiadaczowi konta. Następnie taki pieniądz może zostać łatwo zweryfikowany (łatwo udowodnić, że bank go zatwierdził), jednak nawet bank nie wie komu i kiedy go podpisał. W przypadku e-pieniędzy próba wielokrotnego użycia tego samego banknotu umożliwia ustalenie jego właściciela. Podobnie jest w przypadku elektronicznych głosowań. Każdy jest uprawniony do jednego głosu. Dlatego przed oddaniem głos podpisuje się ślepym podpisem. Oczywiste jest że osoba podpisująca nie powinna rozpoznać informacji którą podpisała, nawet kiedy ta informacja trafi wraz z podpisem do „elektronicznej urny”.
Jeden z najprostszych algorytmów ślepych podpisów jest oparty na podpisie RSA. Tradycyjnie podpis RSA jest wyliczany poprzez podniesienie do potęgi wiadomości do tajnego wykładnika wszystko modulo publiczne Ślepa wersja dodaje losowy czynnik taki że Następnie jest spotęgowane przez publiczny wykładnik wartość jest tutaj użyta jako czynnik oślepiający. Osoba podpisująca otrzymuje iloczyn wiadomości i czynnika oślepiającego Ślepy podpis jest wtedy obliczany jako:
Autor wiadomości może wtedy usunąć czynnik oślepiający wyliczając prawidłowy podpis RSA wiadomości
Można łatwo sprawdzić poprawność algorytmu: