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:
- Persamaan kurva (nilai , , dan prima ),
- grup eliptik yang dihasilkan,
- 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 .
Langkah Alice Bob 1 privat , publik privat , publik 2 kirim , 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 ):
- Encode menjadi titik pada kurva.
- Pilih bilangan acak .
- Cipherteks adalah pasangan titik: .
Dekripsi: Bob menghitung lalu mengurangkannya dari titik kedua:
lalu men-decode menjadi .
ElGamal biasa (Algoritma ElGamal) EC ElGamal Cipherteks Menutupi pesan dikalikan ditambahkan Dekripsi bagi 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: ). JadiB. 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 MKeamanan, 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.
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.
Additional Information
ECDSA: Tanda Tangan Digital
Slide menyebut ECDSA tetapi tidak merincinya. Skema: privat , publik , titik basis berorde . Tanda tangan pesan dengan hash : pilih acak , , ; kirim . Verifikasi: , , , terima jika . tidak boleh bocor atau dipakai ulang: kasus Sony PS3 (2010) dan beberapa dompet Bitcoin kehilangan kunci privat karena berulang.
Praktik Modern
- ECDHE (ephemeral) pada TLS 1.3 memberi forward secrecy, umumnya dengan X25519.
- Ed25519 untuk tanda tangan (SSH, Signal). ECIES adalah skema enkripsi hibrida standar untuk kurva eliptik, menggantikan pendekatan “encode pesan menjadi titik” karena tidak ada kebutuhan encoding: titik hasil ECDH hanya diturunkan menjadi kunci simetrik.
- Ancaman: algoritma Shor pada komputer kuantum memecahkan ECDLP; mitigasinya kriptografi pasca-kuantum (ML-KEM, ML-DSA) atau skema hibrida.
Catatan Keamanan
Validasi titik yang diterima (apakah di kurva dan berorde benar) wajib untuk mencegah invalid-curve attack. Kurva yang memiliki orde berfaktor kecil juga rentan small-subgroup attack; karena itu dipakai kofaktor dan pemeriksaan titik.
Proyek Eksplorasi Mandiri
- Implementasikan ECDH dan EC ElGamal (dengan encoding Koblitz) pada kurva ; enkripsi kata
HELLOdan dekripsi kembali.- Bandingkan waktu RSA-3072 dan ECDH P-256 memakai
openssl speed rsa3072 ecdhp256.Bacaan Lanjutan
- Stallings, Cryptography and Network Security, Bab “Elliptic Curve Cryptography”.
- RFC 7748 (X25519/X448) dan RFC 6979 (ECDSA deterministik).
- Bernstein & Lange, SafeCurves:
safecurves.cr.yp.to.