Back to IF4020 Kriptografi

Algoritma ElGamal

Questions/Cues

  • Siapa pembuat ElGamal dan berbasis persoalan sulit apa?
  • Apa itu akar primitif dan logaritma diskrit?
  • Bagaimana membangkitkan kunci, mengenkripsi, dan mendekripsi ElGamal?
  • Mengapa cipherteks berukuran dua kali plainteks?
  • Bagaimana bukti korektness dekripsi?

Reference Points

  • IF4020 Kriptografi — Algoritma ElGamal (Slides 2-20)

Pendahuluan

Dibuat Taher Elgamal (1985) dalam makalah “A public key cryptosystem and a signature scheme based on discrete logarithms” (IEEE Trans. Information Theory 31(4)). Keamanannya terletak pada sulitnya menghitung logaritma diskrit: diberi prima dan bilangan bulat , cari dengan . Contoh: , Jawab: sebab .

Akar Primitif

Bilangan adalah akar primitif dari prima bila pangkat menghasilkan nilai-nilai berbeda (semua bilangan muncul tepat sekali), yaitu siklus berpanjang (mengingat ).

  • , akar primitif: (semua berbeda).
  • , bukan: (berulang, panjang siklus 3).

Untuk mencari semua akar primitif, coba .

Logaritma Diskrit

Bila akar primitif dari , untuk setiap bilangan bulat ada () dengan ; disebut logaritma diskrit dari berbasis . Perpangkatan modular mudah, logaritma diskrit sulit untuk bilangan besar. Contoh: 7 akar primitif dari 41, .

Properti dan Pembangkitan Kunci

ParameterKeteranganStatus
prima (boleh dipakai bersama kelompok)tidak rahasia
akar primitif dari , tidak rahasia
acak, rahasia (privat)
tidak rahasia (publik)
plainteksrahasia
ciphertekstidak rahasia

Kunci publik: tripel . Kunci privat: pasangan .

Enkripsi dan Dekripsi

Enkripsi: pecah plainteks menjadi blok dengan . Pilih bilangan acak , (baru untuk tiap blok):

Cipherteks blok = pasangan , sehingga ukuran cipherteks dua kali plainteks.

Dekripsi: hitung (Teorema Kecil Fermat), lalu

Bukti: ; dan , maka .

flowchart TD
    M["m"] --> ENC["a = g^k mod p<br/>b = y^k * m mod p"]
    K["k acak"] --> ENC
    PUB["y, g, p"] --> ENC
    ENC --> CT["Cipherteks (a, b)"]
    CT --> DEC["(a^x)^-1 = a^(p-1-x)<br/>m = b * (a^x)^-1 mod p"]
    PRIV["x (privat)"] --> DEC
    DEC --> M2["m"]

Contoh 1: Bob Membangkitkan Kunci

, (akar primitif), ; . Kunci publik , privat .

Alice mengenkripsi dengan : , . Cipherteks .

Bob: ; . ✓

Contoh 2: Pesan HALO

Alice: , , , . Bob mengodekan HALO = , dipecah blok , (semua ):

BlokDekripsi
070014631439741791700
111420011220168211251114

Cipherteks: dan ; Alice memperoleh kembali HALO.

Summary

ElGamal (Taher Elgamal, 1985) berbasis logaritma diskrit: diberi , mencari sulit sementara pemangkatan mudah. Ia memakai akar primitif dari prima (pangkatnya menelusuri semua ). Kunci: privat (), publik . Enkripsi blok dengan acak: , , cipherteks dua kali ukuran plainteks. Dekripsi: ; benar karena . Contoh : . Persoalan logaritma diskrit yang sama menopang Hybrid Cryptography dan Diffie-Hellman.