Friday, January 06, 2006

 

Algoritmi semnatura digitala

    majoritatea schemelor cu recuperarea mesajului sunt aplicate mesajelor de lungime fixa, in timp ce schemele cu anexa se aplica mesajelor de lungimi variabile
  • scheme cu anexa
      algoritmul de verificare primeste ca intrare mesajul
    • algoritmi generali
      • generarea cheii
          fiecare entitate creeaza o cheie privata pentru semnarea mesajelor si o cheie publica pentru verificare
        1. o entitatea A selecteaza o cheie privata ce defineste o multime a transformarilor de semnare SA = {SA,k/ k ∈ I} unde fiecare SA,k este o functie injectiva de la Ps la S
        2. SA defineste o transformare de verificare VA :Psx S → {adevarat, fals} ai
          adevaratdaca SA,k(p) = s*
          VA(p, s*) =
          falsaltfel
          pPh, s*S, p = h(p) cu p ∈ P
          VA poate fi calculata fara a cunoaste semnatura privata a emitentului
        3. cheia publica a lui A este VA si cheia privata este multimea SA
      • semnarea/verificarea
          o entitatea A produce o semnatura s ∈ S pentru un mesaj p ∈ P ce mai tarziu poate fi verificata de o alta entitate B
        1. semnarea
            entitatea A executa
          1. selecteaza un element k ∈ I
          2. calculeaza p = h(p) si s* = SA,k(p)
          3. semnatura lui A pentru p este s*; atat p cat si s* sunt puse la dispozitia entitatilor care doresc sa verifice semnatura
        2. verificarea
            entitatea B executa
          1. obtine cheia publica autentica, VA a lui A
          2. calculeaza p = h(p) si v = VA(p, s*)
          3. accepta semnatura daca si numai daca v = adevarat
    • ElGamal
    • DSA
      este o varianta a semnaturii ElGamal
      • generarea cheilor
        1. selecteaza un numar prim q ai 2159 < q < 2160
        2. alege t ai 0 ≦ t ≦ 8 si un numar prim p, 2511+64t < p < 2511+64t cu proprietatea q|(p-1)
        3. selecteaza un generator α al grupului ciclic de ord q din Zp*
          1. selecteaza un element g ∈ Zp* si calculeaza α = g(p-1)/q mod p
          2. daca α = 1 at reia de la pasul anterior
        4. selecteaza aleator un intreg a ai 1 ≦ a ≦ q-1
        5. calculeaza y = αa mod p
        6. cheia publica a lui A este (p, q, α, y) si cheia privata este a
      • semnarea/verificarea
        • semnarea
            entitatea A semneaza un mesaj, p, de lungime arbitrara
          1. selecteaza aleator un intreg k, 0 < k < q, k va ramane secret
          2. calculeaza r = (αk mod p) mod q
          3. calculeaza k-1 mod q
          4. calculeaza s = (k-1(h(p)+ar)) mod q
          5. semnatura lui A este (r, s)
          in standardul DSS functia h este SHA-1
        • verificarea
            entitatea B verifica semnatura lui A, (r, s) pentru mesajul p
          1. obtine cheia publica autentica a lui A, (p, q, α, y)
          2. verifica ca 0 < r < q si 0 < s < q, altfel respinge semnatura
          3. calculeaza w = s-1 mod q si h(p)
          4. calculeaza u1 = (wh(m)) mod q si u2 = (rw) mod q
          5. calculeaza v = ( (au1 yu2) ) mod q
          6. accepta semnatura daca v = r
    • PKCS#1
      aceasta schema nu utilizeaza caracteristica de recuperare a mesajului a schemei RSA si foloseste o functie de dispersie (MD-2 sau MD-5)
    • Schnorr
    • Feige-Fiat-Shamir
  • scheme cu recuperarea mesajului
      algoritmul de verificare nu necesita mesajul
    • algoritmi generali
      • generarea cheii
          fiecare entitate creeaza o cheie privata pentru semnarea mesajelor si o cheie publica pentru verificare
        1. o entitatea A selecteaza o cheie privata ce defineste o multime a transformarilor de semnare SA = {SA,k/ k ∈ I} unde fiecare SA,k este o functie injectiva de la Ps la S
        2. SA defineste o transformare de verificare VA :SPs ai ∀ pPs, ∀ k ∈ I, VA º SA,k = 1Ps
          VA poate fi calculata fara a cunoaste semnatura privata a emitentului
        3. cheia publica a lui A este VA si cheia privata este multimea SA
      • semnarea/verificarea
          o entitatea A produce o semnatura s ∈ S pentru un mesaj p ∈ P ce mai tarziu poate fi verificata de o alta entitate B; mesajul p este recuperat din s
        1. semnarea
            entitatea A executa
          1. selecteaza un element k ∈ I
          2. calculeaza p = r(p) si s* = SA,k(p)
          3. semnatura lui A este s*; s* este pus la dispozitia entitatilor care doresc sa verifice semnatura
        2. verificarea
            entitatea B executa
          1. obtine cheia publica autentica, VA a lui A
          2. calculeaza p = VA(s*)
          3. verifica ca pPr si in acest caz accepta semnatura
          4. recupereaza mesajul p din p calculand r-1(p)
        functia redundanta r si inversa sa sunt cunoscute public; selectia lui r este critica pentru securitatea sistemului
    • RSA
      atat spatiul de semnare Ps cat si spatiul semnaturilor S sunt reprezentate de Zn
      • generarea cheilor
          fiecare entitate creeaza o cheie publica RSA si o cheie privata corespondenta; o entitate A executa
        1. genereaza doua numere prime distincte, p si q, de acceasi marime
        2. calculeaza n = pq si φ = (p-1)(q-1)
        3. selecteaza aleator in intreg e, 1 < e < φ ai cmmdc(e, φ) = 1
        4. calculeaza intregul (Euclid extins) d, 1 < d < φ ai ed ≡ 1 mod φ
        5. cheia publica a lui A este (n, e) si cheia privata este d
      • semnarea/verificarea
          entitatea A semneaza un mesaj p ∈ P si oricare alta entitate B poate verifica smenatura lui A si recupera mesajul p din semnatura
        1. semnarea
            o entitate A executa
          1. calculeaza p = r(p) ca un intreg in intervalul [0, n-1]
          2. calculeaza s = pd mod n
          3. semnatura lui A pentru p este s
        2. verificarea
            o alta entitate B executa
          1. obtine cheia publica autentica a lui A, (n, e)
          2. calculeaza p = se mod n
          3. verifica ca p ∈ Pr si daca nu rejecteaza semnatura
          4. recupereaza mesajul p = r-1(p)
    • Rabin
    • Nyberg-Rueppel
DSS PKCS#1

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?