ElGamal

ElGamal je jeden z algoritmů asymetrické kryptografie, má ovšem nevýhodu, že šifrovaná data jsou dvakrát delší než data nešifrovaná. To je možná důvodem, proč není jeho nasazení tak masivní[zdroj⁠?], jako nasazení algoritmu RSA, který tímto nedostatkem netrpí. Opírá se o problém výpočtu diskrétního logaritmu.

Konstrukce systému

Nechť je zvolena veřejně známá cyklická grupa Z q {\displaystyle \mathbb {Z} _{q}^{\circ }} , tzn. celé číslo q {\displaystyle q} , tzv. modul grupy, a celé číslo g {\displaystyle g} , tzv. generátor dané grupy. Potom si i-tý účastník volí svůj tajný klíč k i {\displaystyle k_{i}} , tak, že 0 < k i < q {\displaystyle 0<k_{i}<q} a vypočte veřejný klíč k i p u b {\displaystyle k_{i}^{pub}} jako k i p u b = g k i mod q {\displaystyle k_{i}^{pub}=g^{k_{i}}\mod q} , jenž zveřejní. Pokud potom chce poslat uživatel A {\displaystyle A} zprávu P {\displaystyle P} uživateli B {\displaystyle B} (zpráva musí být menší než q {\displaystyle q} ), A {\displaystyle A} musí znát veřejný klíč B {\displaystyle B} , tzn. k B p u b {\displaystyle k_{B}^{pub}} . Poté probíhá komunikace podle následujícího schématu.

  • A {\displaystyle A} zvolí náhodné číslo k A {\displaystyle k_{A}} takové, že 0 < k A < q {\displaystyle 0<k_{A}<q} .
  • A {\displaystyle A} spočte k A p u b = g k A mod q {\displaystyle k_{A}^{pub}=g^{k_{A}}\mod q} , K = ( k B p u b ) k A mod q {\displaystyle K=(k_{B}^{pub})^{k_{A}}\mod q} a Q = P K mod q {\displaystyle Q=P\circ K\mod q} a pošle pár Q , k A p u b {\displaystyle Q,k_{A}^{pub}} uživateli B {\displaystyle B} .
  • Uživatel B {\displaystyle B} spočte K = ( k A p u b ) k B mod q {\displaystyle K=(k_{A}^{pub})^{k_{B}}\mod q} a k tomuto číslu určí inverzní prvek K 1 {\displaystyle K^{-1}} (vzhledem k operaci {\displaystyle \circ } v grupě Z q {\displaystyle \mathbb {Z} _{q}^{\circ }} ).
  • Uživatel B {\displaystyle B} spočte zprávu P {\displaystyle P} jako P = Q K 1 mod q {\displaystyle P=Q\circ K^{-1}\mod q} .

Korektnost algoritmu

S využitím vět algebry platí:

  • i , j N , g {\displaystyle \forall i,j\in \mathbb {N} ,\forall g} - generátor, q {\displaystyle q} - modul Z q , {\displaystyle \in \mathbb {Z} _{q}^{\circ },} cyklická grupa v modulu q.
  • k i 0 < k i < q , k j 0 < k j < q {\displaystyle k_{i}\iff 0<k_{i}<q,k_{j}\iff 0<k_{j}<q}
    • k i {\displaystyle k_{i}} a k j {\displaystyle k_{j}} jsou soukromé klíče i {\displaystyle i} a j {\displaystyle j}
  • k i p u b = g k i mod q K = ( k i p u b ) k j mod q {\displaystyle k_{i}^{pub}=g^{k_{i}}\mod q\land K=(k_{i}^{pub})^{k_{j}}\mod q} a ekvivalentně pro k j p u b {\displaystyle k_{j}^{pub}}
    • k i p u b {\displaystyle k_{i}^{pub}} je veřejný klíč a K {\displaystyle K} je soukromý sdílený klíč pro šifrování komunikace mezi i {\displaystyle i} a j {\displaystyle j}
  • K = ( g k i ) k j mod q = ( g k j ) k i mod q = g k i k j mod q {\displaystyle K=(g^{k_{i}})^{k_{j}}\mod q=(g^{k_{j}})^{k_{i}}\mod q=g^{k_{i}\cdot k_{j}}\mod q}
  • Q K 1 mod q = P K K 1 mod q = P mod q {\displaystyle Q\circ K^{-1}\mod q=P\circ K\circ K^{-1}\mod q=P\mod q}

{\displaystyle \square }

Analýza

Na prolomení toho systému by musel útočník vyřešit problém diskrétního logaritmu, což je považováno za nepolynomiální problém, protože v současnosti neexistuje algoritmus, který by zvládl vypočítat diskrétní logaritmus v cyklické grupě s polynomiální složitostí.

Pahýl
Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.