Back to IF4020 Kriptografi

ECC - ECDH, ElGamal, dan Encoding Pesan

Questions/Cues

  • Parameter apa yang harus disepakati dua pihak sebelum memakai ECC?
  • Bagaimana Diffie-Hellman dipindahkan ke kurva eliptik (ECDH)?
  • Bagaimana enkripsi dan dekripsi pada Elliptic Curve ElGamal?
  • Mengapa pesan harus di-encode menjadi titik, dan bagaimana metode Koblitz bekerja?
  • Apa keunggulan dan aplikasi ECC?

Reference Points

  • IF4020 Kriptografi — Elliptic Curve Cryptography Bagian 2 (Slides 37-52)

Kerangka ECC

ECC adalah sistem kunci-publik sejenis RSA, Rabin, ElGamal, dan Diffie-Hellman: tiap pengguna punya kunci publik (enkripsi/verifikasi tanda tangan) dan kunci privat (dekripsi/pembuatan tanda tangan). Kurva eliptik dipakai sebagai perluasan sistem lain: ECDH, EC ElGamal (ECEG), dan ECDSA. Operasi matematika dasarnya adalah perkalian titik (padanan perpangkatan pada RSA).

Parameter publik yang disepakati:

  1. Persamaan kurva (nilai , , dan prima ),
  2. grup eliptik yang dihasilkan,
  3. titik basis dari grup tersebut.

Pasangan kunci: kunci privat = integer ; kunci publik = titik .

Elliptic Curve Diffie-Hellman (ECDH)

Padanan Hybrid Cryptography dan Diffie-Hellman: eksponensiasi diganti perkalian titik .

LangkahAliceBob
1privat , publik privat , publik
2kirim , terima kirim , terima
3

Keduanya mendapat karena . Penyadap hanya tahu ; menghitung darinya adalah masalah Diffie-Hellman kurva eliptik, yang bergantung pada ECDLP.

Contoh (kurva , ): Alice memilih : . Bob memilih : . Alice: ; Bob: . Kunci rahasia bersama .

Elliptic Curve ElGamal (ECEG)

Alice mengirim pesan ke Bob (privat , publik ):

  1. Encode menjadi titik pada kurva.
  2. Pilih bilangan acak .
  3. Cipherteks adalah pasangan titik: .

Dekripsi: Bob menghitung lalu mengurangkannya dari titik kedua:

lalu men-decode menjadi .

ElGamal biasa (Algoritma ElGamal)EC ElGamal
Cipherteks
Menutupi pesandikalikan ditambahkan
Dekripsibagi dengan kurangi dengan

Encoding Pesan Menjadi Titik

Pesan harus diubah menjadi titik kurva sebelum dienkripsi.

  • Metode sederhana: petakan tiap karakter ASCII ke satu titik. Untuk 256 karakter diperlukan kurva dengan minimal 256 titik. Mis. ENCRYPT = 69 78 67 82 89 80 84, tiap nilai ke satu titik. Kurang aman karena pemetaannya tetap (mirip substitusi monoalfabetik).
  • Metode Koblitz: pilih kurva dengan titik; kodekan karakter menjadi (angka 0-9, huruf A-Z = 10-35); pilih parameter basis (disepakati); untuk tiap coba sampai merupakan kuadrat residu sehingga ada. Decoding: .

Contoh: ( titik), huruf B , . tidak punya ; memberi (cek: ). Jadi B . Decode: B.

sequenceDiagram
    participant A as Alice
    participant B as Bob
    Note over A,B: sepakat kurva dan titik basis B
    B->>A: P_B = bB (kunci publik)
    Note over A: encode M menjadi P_M, pilih acak k
    A->>B: P_C = [kB, P_M + kP_B]
    Note over B: P_M = (P_M + kP_B) - b(kB)
    Note over B: decode P_M menjadi M

Keamanan, Aplikasi, dan Keuntungan

Untuk melindungi kunci AES-128, RSA memerlukan 3072 bit sedangkan ECC cukup 256 bit. Meningkatkan keamanan RSA berarti memperbesar kunci secara drastis, sedangkan pada ECC pertambahan ukuran kunci tidak signifikan. Aplikasi: piranti nirkabel, smart card, web server yang menangani banyak sesi enkripsi, dan perangkat dengan daya/penyimpanan/komputasi terbatas. Keuntungan: selain confidentiality, integrity, authentication, dan non-repudiation seperti sistem lain, ECC memberi kunci lebih pendek, proses enkripsi/dekripsi/verifikasi tanda tangan lebih cepat, serta hemat storage dan bandwidth.

Summary

ECC memakai parameter publik berupa kurva, prima , dan titik basis ; kunci privat adalah integer dan kunci publik titik . ECDH: Alice dan Bob bertukar dan lalu keduanya menghitung (contoh: ). EC ElGamal: pesan di-encode menjadi titik , cipherteks adalah , dekripsi dengan mengurangkan . Pesan dikonversi menjadi titik lewat pemetaan sederhana (kurang aman) atau metode Koblitz (, decode ). ECC memberi keamanan setara RSA dengan kunci jauh lebih pendek (256 vs 3072 bit untuk AES-128), cocok untuk perangkat terbatas.