Podpis cyfrowy
Podział:
z dodatkiem - do weryfikacji podpisu wymagana jest cała wiadomość, posiada element dodatkowy (zwykle stosuje się tu funkcje skrótu);
z odtwarzaniem - nie wymagają całej wiadomości;
Podpis cyfrowy z odtwarzaniem
ogólny schemat podpisywania
ogólny schemat weryfikacji
Podpis cyfrowy z odtwarzaniem
Korzystamy z dodatkowej funkcji u zwaną funkcją redundancji (funkcja 1→ 1). W tym przypadku funkcja skrótu jest niepotrzebna.
ogólny schemat podpisywania
ogólny schemat weryfikacji
Sprawdzamy, czy m'= v(s).
Jeśli m'∉u(M) to podpis odrzucamy;
Jeśli m'∈ U(M) to odtwórz m z m' obliczając m = u -1(m).
Podpis cyfrowy z odtwarzaniem i z dodatkiem
ogólny schemat podpisywania
Ataki na podpis cyfrowy
Podrabianie podpisu
podrabianie egzystencjalne - intruz potrafi podrobić conajmniej jeden podpis;
podrabianie selektywne - intruz potrafi podrobić podpis dla wybranej wiadomości (lub klasy wiadomości);
całkowite podrobienie - intruz potrafi zrobić z podpisem co zechce. Jest to przypadek najgorszy.
Atak poprzez klucz - przypadek trudny
Atak poprzez wiadomość
atak poprzez tekst znany - intruz zna postać wiadomości jawnej, jak i podpis wiadomości;
atak poprzez tekst wybrany - intruz może uzyskać podpis dla wybranej przez siebie wiadomości;
atak adaptacyjny poprzez tekst wybrany - intruz może wykonać eksperyment z wiadomościami wybranymi przez siebie. Nie może natomiast eksperymentować z wiadomością oryginalną, którą w rzeczywistości chce złamać;
Schemat RSA
Jest to schemat podpisu z odtwarzaniem.
Algorytm generowania kluczy dla szyfru RSA (zobacz też wcześniej)
Wygeneruj dwie duże losowe i różne liczby pierwsze p i q;
Wyznacz n = pq oraz φ(n) = (p-1)(q-1);
Wybierz losowo liczbę e z przedziału 1< e <φ(n), taką, że NWD(e, φ(n)) =1;
Wyznacz liczbę d, taką, że ed ≡ 1(modφ(n));
Przyjmij klucz szyfrujący ke=(e,n) i deszyfrujący kd=(d,n);
Problem podpisywania
Wiadomość jest reprezentowana jako liczba.
Przyjmijmy klucze szyfrujące ke=(e,n) i deszyfrujące kd=(d,n);
Użytkownik A chce podpisać wiadomość. Wykonuje więc następujące kroki:
Oblicz m'= u(m) ∈ {0, 1, …, n-1}
s = (m')d mod n - podpis użytkownika pod wiadomością m.
Problem weryfikacji
Zadbaj o to, aby klucz publiczny (e, n) był prawdziwy;
se mod n = m', jeśli m'∉S to odrzuć m' jako podpis;
Odtwórz wiadomość m = u-1 (m');
Podpis możemy chcieć zaszyfrować za pomocą przekształcenia publicznego. Problemem jest podpis wiadomości i szyfrowanie. Istnieją dwie możliwości:
najpierw podpisujemy, a później szyfrujemy - zalecane;
najpierw szyfrujemy, a później podpisujemy - w tym przypadku ktoś może dostać się do szyfrogramu, a potem już własny zmodyfikowany podpis zaszyfrować - nie zalecane;
Pierwsza z powyższych możliwości posiada pewną trudność - problem przepełnienia (reblocking problem).
Przykład:
(eA, nA) - klucz do podpisywania;
(eB, nB) - klucz do szyfrowania;
nB > nA
nA=107 * 211 = 28907
e A=13
nB=127*173 = 21971
e B=13
d A= 2197
d B=20005
m = 13983
Podpis
s = 13893 2197 mod 28907 = 25215
Szyfrowanie
c =25215 13 mod 21971 = 5479 - postać zaszyfrowana podpisu;
Weryfikacja
c d mod nB=5479 20005 mod21971 = 3244
Weryfikacja podpisu
m” = 3244 13 mod 28907 = 276
m ≠ m”
Błąd w tym przypadku nie jest w obliczeniach, a w metodologii wykorzystywania przekształceń. Błąd polega na obliczaniu wartości nA, nB Aby się jego pozbyć moduł podpisujący (nA), powinien mieć mniejszą wartość niż moduł szyfrujący (nB). Warunek ten możemy otrzymać dokonując np. narzucenia aby nA miało r bitów, a nB r+1.
Prawdopodobieństwo wystąpienia błędu:
Funkcje redundancji
u(m) = m - funkcja identyczności;
u(m)=m || m - konkatenacja wiadomości sama z sobą;
funkcja Π - wg normy ISO/IEC 9796
Niech m = mr || m r-1 || … || m1
Oznaczmy naszą poszukiwaną funkcje u(m) przez MR
MR = MR 2r || MR 2r - 1 || … || MR 1
Rozpatrzmy przypadek dla r=5:
Każdy z bloków nieoznaczonych jest funkcją bloku poprzedniego Π. Jest to permutacja:
Schemat Rabina
Przestrzeń podpisów - zbiór reszt kwadratowych modulo n - S =QR n.
Algorytm generowania kluczy (zobacz szyfr Rabina)
Klucze: publiczny i prywatny;
Wygeneruj dwie duże, losowe, różne liczby pierwsze p i q;
Wyznacz n = pq;
Przyjmij ke = n oraz kd =(p, q);
Generowanie podpisu
Oblicz m' = u (m);
Wyznacz pierwiastek kwadratowy m' mod n i oznacz go przez s;
s jest podpisem wiadomości m;
Weryfikacja podpisu s
Zadbaj o to, aby klucz publiczny był prawdziwy;
Oblicz m' = s2 mod n;
Sprawdź, czy m'∈ S, jeśli nie podpis odrzuć;
Wyznacz m = u -1 (m);
Przykład:
p=7, q=11, n=77;
S = QR77={1, 4, 9, 15, 16, 23, 25, 36, 37, 53, 58, 60, 60, 64, 67, 71}
Załóżmy, że u(m)=m;
Niech m=23
Chcemy podpisać wiadomość m. Musimy znaleźć √ 23 mod 27. Pierwiastkami tymi są 10, 32, 45, 67. Wybierzemy s=32.
Weryfikacja:
m'=32 2 mod 77 = 23
m' = m
Standard amerykański DSS - norma FIPS 186
Standard ten przedstawiony jest w algorytmie DSA. Mechanizm podpisu wymaga funkcji skrótu h:{0, 1}*→Zp, dla pewnej liczby pierwszej p. DSS wymaga zastosowania SHA-1.
Algorytm generowania kluczy
Każdy użytkownik tworzy klucz publiczny i odpowiadający mu klucz prywatny, wykonując:
Wybierz liczbę pierwszą p, taką że 2 159<p<2160.
Wybierz r takie, że 0≤r≤8 oraz liczbę pierwszą q, taką, że 2 511+64r<p<2512+64r o takiej właściwości, że p|(q-1).
{ Wybierz generator g grupy cyklicznej rzędu p w Zq*}
Wybierz element b∈ Zq* i wyznacz g=b(q-1)/p mod q.
Jeśli g=1 to przejdź do kroku 3.1.
Wybierz liczbę losową a, taką że 1≤a≤p-1.
Wylicz ga mod q.
Publicznym kluczem użytkownika A jest czwórka (p, q, g, y), a kluczem prywatnym liczba a.
Algorytm generowania podpisu
Użytkownik A podpisuje binarną wiadomość m o dowolnej długości, wykonując następujące operacje:
Wybiera losowo tajną liczbę naturalną r, 0<r<p i zachowuje ją w sekrecie.
Oblicza t = (gr mod q) mod p.
Oblicza r -1mod p.
Wyznacza s = r -1(h(m)+bt) mod p.
Podpisem użytkownika A jest paa (s, t).
Algorytm generowania podpisu
Użytkownik B weryfikuje podpis (s, t) wiadomości m wykonany przez użytkownika A, wykonując następujące czynności:
Sprawdza, czy 0<s<p i 0<t<p. Jeśli nie, to odrzuca podpis.
Oblicza v=-1mod p i wyznacza h(m).
Oblicza w1= v*h(m) mod p oraz w2= tv mod p.
Oblicza
Akceptuje podpis gdy z=t.
Dowód poprawności tego schematu.
Jeśli (s, t) jest właściwym podpisem użytkownika A pod wiadomością m, to:
Schemat ElGamala
Generuje podpis z dodatkiem dla wiadomości binarnej dowolnej długości i wymaga funkcji skrótu h:{0,1}*→Zq dla pewnej liczby pierwszej q.
Algorytm generowania kluczy
Każdy użytkownik tworzy klucz publiczny i odpowiadający mu klucz prywatny, wykonując:
Wybierz liczbę pierwszą q i generator grupy multiplikatywnej Zg*.
Wybierz losowo liczbę całkowitą a∈{1,2,…q - 2}.
Oblicz y= ga mod q.
Publicznym kluczem użytkownika A jest trójka (g, y, q), a kluczem prywatnym liczba a.
Algorytm generowania podpisu
Użytkownik A podpisuje wiadomość m, wykonując następujące operacje:
Wybiera losowo tajną liczbę naturalną r, 0<r<q-2, taką że NWD(r, q-1)=1.
Oblicza t = gr mod q.
Oblicza r -1 mod p.
Wyznacza s= r -1 (h(m) - at) mod (q-1).
Podpisem użytkownika A jest para (s, t).
Algorytm weryfikacji podpisu
Użytkownik B weryfikuje podpis (s, t) wiadomości m wykonany przez użytkownika A, wykonując następujące operacje:
Sprawdza czy 0<t<q-1. Jeśli nie, to odrzuca podpis.
Oblicza w1=yt ts mod q.
Wylicza skrót h(m) wiadomości m.
Oblicza w2=gh(m) mod q.
Akceptuje podpis s gdy w2= w1.
Dowód poprawności schematu:
Jeśli (s, t) jest właściwym podpisem użytkownika A pod wiadomością m, to:
Warianty schematu ElGamala
Istnieje wiele wariantów schematu ElGamala różniących się w zależności od równania podpisującego (krok 4 alg. Generowania podpisu):
s= r -1 (h(m) - at) mod (q-1)
Po przekształceniu otrzymuje się:
h(m) = (rs + at) mod (q-1)
lub jeśli przyjąć, że u=h(m), v=t, z=s, to:
u=(rz + av) mod (q-1).
Można teraz otrzymać kolejne równania podpisujące przyjmując w równaniu powyższym, że każda ze zmiennych u, v, z może przyjmować nie powtarzające się wartości ze zbioru {h(m), t, s}. Takich możliwych permutacji jest 3! = 6. Zebrano je w poniższej tablicy podając także postać równania podpisującego I weryfikującego.
Lp. |
u |
v |
z |
Podpis |
Weryfikacja |
|
|
|
|
|
|
w1 = yv vz |
w2 = gu |
1 |
h(m) |
s |
t |
h(m)= rt+as |
gas st |
gh(m) |
2 |
h(m) |
t |
s |
h(m) = rs+at |
gat ts |
gh(m) |
3 |
s |
h(m) |
t |
s = rt+ah(m) |
gah(m) h(m)t |
gs |
4 |
s |
t |
h(m) |
s = rh(m)+at |
gat th(m) |
gs |
5 |
t |
h(m) |
s |
t = rs+ah(m) |
gah(m) h(m)s |
gt |
6 |
t |
s |
h(m) |
t = rh(m)+as |
gas sh(m) |
gt |
W kolumnie „podpis” wynik należy brać modulo (q-1). W kolumnach w1 i w2 wynik należy obliczać modulo q.
y = ga mod q.
Mechanizmy kryptograficzne - podpis cyfrowy
6