Niezaprzeczalny podpis
Podpis niezaprzeczalny to schemat podpisu cyfrowego , który pozwala sygnatariuszowi na wybranie, komu pozwoli weryfikować podpisy. Schemat dodaje wyraźne odrzucenie podpisu, uniemożliwiając sygnatariuszowi późniejszą odmowę weryfikacji podpisu przez pominięcie; sytuacji, która zdewaluowałaby podpis w oczach weryfikatora. Został wynaleziony przez Davida Chauma i Hansa van Antwerpena w 1989 roku.
Przegląd
W tym schemacie sygnatariusz posiadający klucz prywatny może opublikować podpis wiadomości. Jednak podpis niczego nie ujawnia odbiorcy/weryfikatorowi wiadomości i podpisu bez udziału w jednym z dwóch interaktywnych protokołów:
- Protokół potwierdzenia, który potwierdza, że kandydat jest ważnym podpisem wiadomości wystawionym przez sygnatariusza, identyfikowanego przez klucz publiczny.
- Protokół dezawuowania, który potwierdza, że kandydat nie jest ważnym podpisem wiadomości wystawionej przez sygnatariusza.
Motywacją dla schematu jest umożliwienie podpisującemu wyboru, komu podpisy będą weryfikowane. Jednakże odmowa wzięcia udziału w weryfikacji przez sygnatariusza może w późniejszym czasie twierdzić, że podpis jest nieważny, co obniżyłoby wartość podpisów dla weryfikatorów. wiarygodną zaprzeczenie osoby podpisującej .
Ważne jest, aby wymiany potwierdzenia i wyrzeczenia się nie były zbywalne. Osiągają to poprzez posiadanie właściwości wiedzy zerowej; obie strony mogą tworzyć transkrypcje zarówno potwierdzenia, jak i odrzucenia, które są nie do odróżnienia przez stronę trzecią od prawidłowych wymian.
Schemat podpisu wyznaczonego weryfikatora ulepsza podpisy, których można odmówić, umożliwiając, dla każdego podpisu, przeniesienie interaktywnej części schematu na inną stronę, wyznaczonego weryfikatora, zmniejszając obciążenie sygnatariusza.
Protokół o zerowej wiedzy
Następujący protokół został zaproponowany przez Davida Chauma .
Wybrano grupę G , w której problem logarytmu dyskretnego jest nierozwiązywalny i wszystkie operacje w schemacie odbywają się w tej grupie. Zwykle będzie to skończona grupa cykliczna rzędu p zawarta w Z / nZ , przy czym p jest dużą liczbą pierwszą ; ta grupa jest wyposażona w operację grupową mnożenia liczb całkowitych modulo n . Dowolny prymitywny element (lub generator), g , z G jest wybrany; obliczone potęgi g następnie łączą przestrzeganie ustalonych aksjomatów.
Alicja generuje parę kluczy, losowo wybiera klucz prywatny x , a następnie wyprowadza i publikuje klucz publiczny y = g x .
Podpisywanie wiadomości
- Alicja podpisuje wiadomość, m , obliczając i publikując podpis, z = m x .
Protokół bierzmowania (tj. wyznania).
Bob chce zweryfikować podpis, z , m przez Alicję pod kluczem, y .
- Bob wybiera dwie losowe liczby: a i b i używa ich do zaślepienia wiadomości, wysyłając do Alicji:
- c = m a g b .
- Alicja wybiera losową liczbę q , używa jej do oślepienia c , a następnie podpisuje ją swoim kluczem prywatnym x , wysyłając do Boba:
- s 1 = cg q i
- s 2 = s 1 x .
- s 1 x = (cg q ) x = (m a g b ) x g qx = (m x ) a (g x ) b+q = z za y b+q .
- Bob ujawnia a i b .
- Alicja sprawdza, czy aib są prawidłowymi wartościami ślepymi, a jeśli tak, ujawnia q . Odsłonięcie tych blindów powoduje, że wymiana wiedzy jest zerowa.
- Bob weryfikuje s 1 = cg q , udowadniając, że q nie zostało wybrane nieuczciwie, oraz
- s 2 = z a y b+q ,
- z za y b+q = (m x ) za (g x ) b+q .
Alicja może oszukiwać w kroku 2, próbując losowo odgadnąć s 2 .
Protokół zrzeczenia się
Alicja chce przekonać Boba, że z nie jest prawidłowym podpisem m pod kluczem, g x ; tj. z ≠ m x . Alicja i Bob uzgodnili liczbę całkowitą k , która określa obciążenie obliczeniowe Alicji i prawdopodobieństwo, że przypadkowo odniesie sukces.
- Bob wybiera losowe wartości, s ∈ {0, 1, ..., k} i a , i wysyła:
- v 1 = m s g a i
- v 2 = z s y a ,
- v 2 = z s y za = (m x ) s (g x ) za = v 1 x .
- Alicja, używając swojego klucza prywatnego, oblicza v 1 x , a następnie iloraz,
- v 1 x v 2 −1 = (m s g a ) x (z s g xa ) −1 = m sx z −s = (m x z −1 ) s .
- Alicja testuje następnie v 1 x v 2 −1 pod kątem równości z wartościami:
- (m x z −1 ) i dla i ∈ {0, 1, …, k} ;
- Alicja zobowiązuje się do i : wybiera losowe r i wysyła hash(r, i) do Boba.
- Bob ujawnia .
- Alicja potwierdza, że a jest prawidłową ślepą (tj. można wygenerować v 1 i v 2 ), a jeśli tak, ujawnia r . Odsłonięcie tych blindów powoduje, że wymiana wiedzy jest zerowa.
- Bob sprawdza hash(r, i) = hash(r, s) , udowadniając, że Alicja zna s , stąd z ≠ m x .
Jeśli Alicja spróbuje oszukać w kroku 3, zgadując losowo s , prawdopodobieństwo powodzenia wynosi 1/(k + 1) . Tak więc, jeśli k = 1023 i protokół przeprowadza się dziesięć razy, jej szanse wynoszą od 1 do 2 100 .