PODPIS CYFROWY, Podpis cyfrowy


Podpis cyfrowy

Podział:

Podpis cyfrowy z odtwarzaniem

0x08 graphic

0x08 graphic

Podpis cyfrowy z odtwarzaniem

Korzystamy z dodatkowej funkcji u zwaną funkcją redundancji (funkcja 1→ 1). W tym przypadku funkcja skrótu jest niepotrzebna.

  1. Sprawdzamy, czy m'= v(s).

  2. Jeśli m'∉u(M) to podpis odrzucamy;

  3. Jeśli m'∈ U(M) to odtwórz m z m' obliczając m = u -1(m).

Podpis cyfrowy z odtwarzaniem i z dodatkiem

0x08 graphic

Ataki na podpis cyfrowy

  1. Podrabianie podpisu

  1. Atak poprzez klucz - przypadek trudny

  2. Atak poprzez wiadomość

Schemat RSA

Jest to schemat podpisu z odtwarzaniem.

Algorytm generowania kluczy dla szyfru RSA (zobacz też wcześniej)

  1. Wygeneruj dwie duże losowe i różne liczby pierwsze p i q;

  2. Wyznacz n = pq oraz φ(n) = (p-1)(q-1);

  3. Wybierz losowo liczbę e z przedziału 1< e <φ(n), taką, że NWD(e, φ(n)) =1;

  4. Wyznacz liczbę d, taką, że ed 1(modφ(n));

  5. 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:

  1. Oblicz m'= u(m) ∈ {0, 1, …, n-1}

  2. s = (m')d mod n - podpis użytkownika pod wiadomością m.

Problem weryfikacji

  1. Zadbaj o to, aby klucz publiczny (e, n) był prawdziwy;

  2. se mod n = m', jeśli m'∉S to odrzuć m' jako podpis;

  3. 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:

  1. najpierw podpisujemy, a później szyfrujemy - zalecane;

  2. 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:

0x08 graphic

Funkcje redundancji

  1. u(m) = m - funkcja identyczności;

  2. u(m)=m || m - konkatenacja wiadomości sama z sobą;

  3. 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:

0x08 graphic

0x08 graphic
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;

  1. Wygeneruj dwie duże, losowe, różne liczby pierwsze p i q;

  2. Wyznacz n = pq;

  3. Przyjmij ke = n oraz kd =(p, q);

Generowanie podpisu

  1. Oblicz m' = u (m);

  2. Wyznacz pierwiastek kwadratowy m' mod n i oznacz go przez s;

  3. s jest podpisem wiadomości m;

Weryfikacja podpisu s

  1. Zadbaj o to, aby klucz publiczny był prawdziwy;

  2. Oblicz m' = s2 mod n;

  3. Sprawdź, czy m'∈ S, jeśli nie podpis odrzuć;

  4. 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:

  1. Wybierz liczbę pierwszą p, taką że 2 159<p<2160.

  2. 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).

  3. { Wybierz generator g grupy cyklicznej rzędu p w Zq*}

    1. Wybierz element b∈ Zq* i wyznacz g=b(q-1)/p mod q.

    2. Jeśli g=1 to przejdź do kroku 3.1.

  4. Wybierz liczbę losową a, taką że 1≤a≤p-1.

  5. Wylicz ga mod q.

  6. 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:

  1. Wybiera losowo tajną liczbę naturalną r, 0<r<p i zachowuje ją w sekrecie.

  2. Oblicza t = (gr mod q) mod p.

  3. Oblicza r -1mod p.

  4. Wyznacza s = r -1(h(m)+bt) mod p.

  5. 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:

  1. Sprawdza, czy 0<s<p i 0<t<p. Jeśli nie, to odrzuca podpis.

  2. Oblicza v=-1mod p i wyznacza h(m).

  3. Oblicza w1= v*h(m) mod p oraz w2= tv mod p.

  4. Oblicza

0x08 graphic

  1. 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:

0x08 graphic

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:

  1. Wybierz liczbę pierwszą q i generator grupy multiplikatywnej Zg*.

  2. Wybierz losowo liczbę całkowitą a∈{1,2,…q - 2}.

  3. Oblicz y= ga mod q.

  4. 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:

  1. Wybiera losowo tajną liczbę naturalną r, 0<r<q-2, taką że NWD(r, q-1)=1.

  2. Oblicza t = gr mod q.

  3. Oblicza r -1 mod p.

  4. Wyznacza s= r -1 (h(m) - at) mod (q-1).

  5. 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:

  1. Sprawdza czy 0<t<q-1. Jeśli nie, to odrzuca podpis.

  2. Oblicza w1=yt ts mod q.

  3. Wylicza skrót h(m) wiadomości m.

  4. Oblicza w2=gh(m) mod q.

  5. 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:

0x08 graphic

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

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
Podpisy Cyfrowe
2 Podpis cyfrowy
podpisy cyfrowe YI4DHXTULBMCSHA4PWFPG6WHM7N6UEMMOBKU43I
podpisy cyfrowe
Podpisy Cyfrowe (podpis cyfrowy) (2)
podpis-cyfrowy
Podpis cyfrowy id 365636 Nieznany
Podpisy Cyfrowe
Podpisy Cyfrowe (2)
podpis cyfrowy
Podpisy Cyfrowe K Cebulski
2 Podpis cyfrowy
Podpis cyfrowy
podpisy cyfrowe 2PEUYORIENKXJGNC72U7Y2XNQDFFFDAR4SRIE6A
Podpisy Cyfrowe

więcej podobnych podstron