ElGamal

Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä.
Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan.

ElGamal on julkisen avaimen salausmenetelmä, joka perustuu Diffie-Hellman avaimenvaihtojärjestelmään. Menetelmä perustuu logaritmien laskentaan ja sen on esittänyt Taher Elgamal vuonna 1985.[1]

ElGamal-menetelmää käyttävät mm. GNU Privacy Guard -ohjelmisto, PGP:n uudemmat versiot ja monet muut salausjärjestelmät. DSA (Digital Signature Algorithm) on ElGamal-allekirjoitusmenetelmän variantti, mutta sitä ei tule sekoittaa ElGamal-algoritmiin.lähde?

ElGamal voidaan määrittää missä tahansa syklisessä ryhmässä G. Sen turvallisuus riippuu diskreetin logaritmin laskemisesta ryhmässä G.

Algoritmi

ElGamal koostuu kolmesta komponentista: avainten generointi, salausalgoritmi ja salauksen purkualgoritmi.

Avainten generointi tapahtuu seuraavasti:

Liisa valitsee jonkin syklisen ryhmän G {\displaystyle G} . Olkoon q {\displaystyle q} ryhmän G {\displaystyle G} kertaluku eli alkioiden lukumäärä. Tämä kertaluku määrää Liisan käyttämän salakirjoitusjärjestelmän avaimen pituuden.

Seuraavaksi Liisa etsii jonkin ryhmän G {\displaystyle G} primitiivisen alkion g {\displaystyle g} . Primitiivisen alkion ominaisuus on se, että jokainen syklisen ryhmän G {\displaystyle G} alkio voidaan esittää tämän alkion potenssina. Tämän eksponentin laskemista kutsutaan ryhmän G {\displaystyle G} diskreetin logaritmin probleemaksi.

Liisa valitsee satunnaisen luvun x {\displaystyle x} joukosta { 0 , 1 , . . . , q 1 } {\displaystyle \lbrace 0,1,...,q-1\rbrace } .

Liisa laskee ryhmän G {\displaystyle G} alkion h = g x {\displaystyle h=g^{x}} .

Liisa julkaisee käyttämänsä syklisen ryhmän G {\displaystyle G} , sen kertaluvun q {\displaystyle q} , primitiivisen alkion g {\displaystyle g} ja laskemansa alkion h {\displaystyle h} . Nämä muodostavat hänen julkisen avaimensa. Luvun x {\displaystyle x} Liisa pitää salaisena avaimenaan.

Salausalgoritmi toimii seuraavasti:

Oletetaan, että Roope haluaa lähettää Liisalle salaisen viestin käyttäen Liisan julkistamaa salakirjoitusjärjestelmää.

Roope konvertoi aluksi viestinsä ryhmän G {\displaystyle G} alkioksi m {\displaystyle m} käyttäen jotain yksinkertaista ja tunnettua koodausta (vaikkapa ASCII-koodia).

Roope valitsee satunnaisen alkion y {\displaystyle y} lukujoukosta { 0 , 1 , . . . , q 1 } {\displaystyle \lbrace 0,1,...,q-1\rbrace } .

Tämän jälkeen hän laskee ryhmän G {\displaystyle G} alkiot c 1 = g y {\displaystyle c_{1}=g^{y}} ja c 2 = m h y {\displaystyle c_{2}=m\cdot h^{y}} .

Roope lähettää Liisalle salakielisen viestin ( c 1 , c 2 ) {\displaystyle (c_{1},c_{2})} .

Salauksen purku toimii seuraavasti:

Liisa laskee ryhmän G {\displaystyle G} alkion c 2 ( c 1 x ) 1 {\displaystyle c_{2}(c_{1}^{x})^{-1}} .

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

Ryhmän G {\displaystyle G} kertaluvun q {\displaystyle q} määräämää avaimen pituutta pitemmät viestit joudutaan pilkkomaan avaimen pituutta pienempiin osiin.

ElGamal-järjestelmää käytetään kuitenkin varsinaisten viestien salaamisen sijasta yleensä ns. avaimenvaihtojärjestelmänä. Tällöin lyhyt symmetrisen salauksen salakirjoitusjärjestelmän avain vaihdetaan ElGamal-järjestelmää käyttäen ja näin vaihdettua avainta käytetään sitten varsinaisten pitempien viestien salaamiseen.

Tehokkuus

Viestin salaamiseen ElGamal-järjestelmää käyttäen tarvitaan kaksi potenssiinkorotusta. Nämä potenssiinkorotukset voidaan kuitenkin laskea toisistaan riippumatta. Viestin purkamiseen tarvitaan kuitenkin vain yksi potenssiinkorotus. Desiferoinnissa käytetty laskukaava voidaan nimittäin kirjoittaa muotoon c 2 ( c 1 x ) 1 = c 2 c 1 x = c 2 c 1 q x {\displaystyle c_{2}(c_{1}^{x})^{-1}=c_{2}c_{1}^{-x}=c_{2}c_{1}^{q-x}} .

Toisin kuin RSA-menetelmässä, laskentaa ei voida nopeuttaa kiinalaista jäännöslausetta käyttäen.

Lähteet

  1. Taher Elgamal: A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms (PDF) caislab.kaist.ac.kr. heinäkuu 1985. Viitattu 13.5.2024. (englanniksi)
  • n
  • k
  • m
Kryptografiset algoritmit
Symmetrinen salaus
  • 3-DES
  • AES
  • AES-GCM
  • Blowfish
  • CAST-128
  • CAST-256
  • DES
  • GOST
  • IDEA
  • RC2
  • RC4
  • RC5
  • RC6
  • Salsa20
  • Skipjack
  • Twofish
Julkisen avaimen salaus
Kryptografiset tiivisteet
Salausprotokollat
Viestin todennuskoodit
Digitaaliset allekirjoituskoodit
Lohkosalaus
Muuta
Luettelo salausalgoritmeista