Anar al contingut

Sifrat ElGamal

De L'Enciclopèdia, la wikipedia en valencià
Taher ElGamal

El procediment de sifrat/dessifrat ElGamal es referix a un esquema de sifrat basat en el problema matemàtic del logaritme discret. És un algoritme de criptografia asimètrica basat en l'idea de Diffie-Hellman i que funciona d'una forma pareguda a este algoritme discret.

L'algoritme de ElGamal pot ser utilisat tant per a generar firmes digitals com per a sifrar o dessifrar.

Va ser descrit per Taher Elgamal en 1984 i s'usa en software GNU Privacy Guard, versions recents de PGP, i atres sistemes criptogràfics. Este algoritme no està baix cap palés lo que ho fa d'us lliure.

La seguritat de l'algoritme es basa en la suposició que la funció utilisada és d'un sol sentit per la dificultat de calcular un logaritme discret.

El procediment de sifrat (i dessifrat) està basat en càlculs sobre un grup cíclico qualsevol G lo que du a que la seguritat del mateix depenga de la dificultat de calcular logaritmes discrets en G.

L'algoritme original

Mostrem el criptosistema propost inicialment per Tahar ElGamal en el seu artícul.

Generació de la clau

Per a generar la clau, Alicia tria un número primo p qualsevol tal que el logaritme discret no és soluble en un temps assumible en Zp* (grup multiplicativo mòdul un primer p). Açò últim es traduïx que p−1 tinga un factor primer gran (lo que fa que el problema del logaritme discret siga difícil[1]).

Ademés Alicia elegix dos números aleatoris g (el generador del grup cíclico (Zp*)) i a (que actuarà com a clau privada) tal que a∈{0,…,p−1}.

Alicia calcula el valor de K=ga(modp). La clau pública serà (g,p,K), mentres que el valor de a ho mantindrà en secret. Rebujant a de l'equació K=ga(modp) obtenim la relació següent entre els components de la clau pública i la clau privada loggK(modp)=a en lo que el criptosistema és segur sempre que siga difícil trobar el logaritme discret.

Sifrat

Supongam que Bruce té un text clar que vol enviar sifrat a Alicia. Lo primer per fer és convertir este text en un sancer m entre 1 i p−1 (m∈Zp). Açò no és part del sifrat, sino que és una manera de codificar estàndart, coneguda per tots. Després Bruce tria arbitrariamente un número b∈{2,…,p−1} (que mantindrà secret) para finalment calcular:

y1=gb(modp)
y2=Kbm(modp)

El mensage sifrat final correspon a la tupla Cb(m,b)=(y1,y2)

Dessifrat

Per a dessifrar aprofitem que:

y1−ay2(modp)=(gb)−aKbm(modp)=g−ab(ga)bm(modp)=(ga)−b(ga)bm(modp)=m(modp)

Per tant per a dessifrar es té que realisar el següent càlcul:

y1−ay2(modp)

a on y1−a representa l'invers de y1a mòdul p lo que indica que per a calcular el dessifrat, és necessari conéixer a, que és la clau privada d'Alicia.

Pel menuda teorema de Fermat es demostra que y1−a=y1p−1−a i ho podem aplicar.

Demostració: El menuda teorema de Fermat indica que xp−1(modp)=1 en p primer i x>0 coprimo en p. Elevant a a l'expressió obtenim que xp−1a(modp)=1a=1. Per tant x(p−1)⋅a(modp)=xap−a(modp)=xa⋅xp−1−a(modp)=1. Rebujant xp−1−a(modp)=x−a(modp)

Eixemples

Simple

Alicia elegix els valors:

p=17 (cosí aleatori i suponem que p-1=16 té un factor primer gran lo que no és cert)
g=3 (generador aleatori)
a=6 (clau privada aleatòria)

Alicia calcula

K=ga(modp)=36(mod17)=15 (valor calculat)

Per tant la clau pública serà (g,p,K)=(3,17,15).

Bruce té el text clar

m=9 (el qual està entre 1 i p-1)

Bruce tria un b=5 aleatori entre 2 i p-1 Bruce calcula

y1=gb(modp)=35(mod17)=5
y2=Kbm(modp)=155⋅9(mod17)=1.

Per lo que el text sifrat és Cb(m,b)=(y1=5,y2=1)

Per a dessifrar Alicia usa la clau privada (a=6) i la Menuda Teorema de Fermat:

m=y1p−1−ay2(modp)=510⋅1(mod17)=9.

Complex

Vejam una aplicació més real de l'algoritme:

Alicia elegix els valors:

p=15485863 (cosí aleatori i per a p−1=15485862=3*2*72*52673 suponem que 52673 és sufientemente gran)
g=7 (generador aleatori)
a=21702 (clau privada aleatòria)

Alicia calcula

K=ga(modp)=721702(mod15485863)=8890431 (valor calculat)

Per tant la clau pública serà (g,p,K)=(7,15485863,8890431).

Bruce té el text clar "HIJO"

m=7⋅263+8⋅262+9⋅26+14=128688 (el qual està entre 1 i p-1)

Bruce tria un b=480 aleatori entre 2 i p-1

Bruce calcula

y1=gb(modp)=7480(mod15485863)=12001315
y2=Kbm(modp)=8890431480⋅1286889(mod15485863)=8263449.

Per lo que el text sifrat és Cb(m,b)=(y1=12001315,y2=8263449) que al decodificarlo queda:

y1=12001315=1*265+0*264+6*263+21*262+11*26+1=BAGVLB
y2=8263449=18*264+2*263+4*262+0*26+25=SCEAZ

En lo que el mensage a enviar és (BAGVLB, SCEAZ)

Per a dessifrar Alicia usa la clau privada (a=21702):

y1−ay2(modp)=14823281⋅8263449(mod15485863)=128688 ya que per la chicoteta teorema de fermat tenim
y1−a(modp)=y1p−1−a(modp)=1200131515464160=14823281

Generalisació

Lo únic que s'utilisa de la congruència mòdul p és que el conjunt (ℤ/p)×={x∈ℤ:1≤x<p} forma un grup en les operacions mòdul p i que en dit grup el problema del logaritme discret resulta difícil.

Per lo tant, pot canviar-se en este criptosistema al grup (ℤ/p)× per qualsevol atre grup G en el que el logaritme discret siga complicat.

Per eixemple, resulta prou efectiu utilisar com a grup una curva elíptica sobre ℤ/p (vore Criptografia de curva elíptica), ya que no es coneix un algoritme de temps subexponencial capaç de resoldre el problema del logaritme discret en curves elíptiques en general.[2]

Referències

  1. ↑ Koblitz, Neal (2006). «Discrete log», A course in number theory and cryptography, segona edició (en anglés), Springer, pp. 102-103. ISBN 0-387-94293-9.
  2. ↑ Erro en la seqüencia d'órdens: no existix el mòdul «Citas».


Referències