ElGamal-kryptering

ElGamal-kryptering är inom kryptografin ett system som baseras på asymmetrisk kryptering och Diffie-Hellmans nyckelöverföring. Systemet uppfanns av Taher Elgamal 1984[1]. ElGamal används bl.a. av GNU Privacy Guard (GPG), nyare versioner av Pretty Good Privacy (PGP).

ElGamal-kryptering kan definieras med hjälp av en cyklisk grupp G {\displaystyle G} . Krypteringens säkerhetsnivå beror på svårigheten på ett problem i G {\displaystyle G} relaterat till beräkning av diskreta logaritmer.

Algoritmen

ElGamal-kryptering består av tre komponenter: nyckelgeneratorn, krypteringsalgoritmen och dekrypteringsalgoritmen.

Nyckelgeneratorn fungerar enligt följande, i en situation där Bob vill kunna ta emot krypterade meddelanden:

  • Bob genererar en effektiv beskrivning av en cyklisk grupp G {\displaystyle G} av ordning q {\displaystyle q} och generator g {\displaystyle g} .
  • Bob tar ett slumpmässigt utvalt x {\displaystyle x} från { 0 , , q 1 } {\displaystyle \{0,\ldots ,q-1\}} .
  • Bob beräknar
h = g x {\displaystyle \left.h=g^{x}\right.} .
  • Bob delar ut h {\displaystyle h} tillsammans med beskrivningen av G , q , g {\displaystyle G,q,g} som sin publika nyckel. Bob behåller x {\displaystyle x} som sin privata nyckel, som hålls hemlig.

När Alice vill skicka ett hemligt meddelande M {\displaystyle M} till Bob, krypterar hon det med hans publika nyckel ( G , q , g , h ) {\displaystyle (G,q,g,h)} , enligt krypteringsalgoritmen:

  • Alice konverterar M {\displaystyle M} till ett element m {\displaystyle m} i G {\displaystyle G} .
  • Alice väljer ett slumpmässigt y {\displaystyle y} ur { 0 , , q 1 } {\displaystyle \{0,\ldots ,q-1\}} , och beräknar sedan
c 1 = g y {\displaystyle \left.c_{1}=g^{y}\right.} och
c 2 = m h y . {\displaystyle c_{2}=m\cdot h^{y}.}
  • Alice sänder chiffertexten ( c 1 , c 2 ) {\displaystyle (c_{1},c_{2})} till Bob.

För att dekryptera chiffertexten ( c 1 , c 2 ) {\displaystyle (c_{1},c_{2})} använder Bob sin privata nyckel x {\displaystyle x} , enligt dekrypteringsalgoritmen:

  • Bob beräknar m = c 2 c 1 x {\displaystyle m=c_{2}\cdot c_{1}^{-x}} .

Detta fungerar eftersom

c 2 c 1 x = m h y g x y = m g x y g x y = m . {\displaystyle c_{2}\cdot c_{1}^{-x}=m\cdot h^{y}\cdot g^{-xy}=m\cdot g^{xy}\cdot g^{-xy}=m.}

Om meddelandet M {\displaystyle M} är för stort för G {\displaystyle G} kan det delas upp i flera delar, där varje del kan krypteras individuellt.

Fotnoter

  1. ^ Taher ElGamal, "A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms", IEEE Transactions on Information Theory, v. IT-31, n. 4, 1985, pp469–472 or CRYPTO 84, pp10–18, Springer-Verlag.