Hệ Elgamal làm việc với nhóm Cyclic hữu hạn. Năm 1978, Kobliz đã đƣa một hệ trên ECC dựa trên hệ Elgamal.
Để xây dựng hệ mã hoá dựa trên đƣờng cong elliptic ta chọn đƣờng cong E(a, b) và một điểm G trên đƣờng cong làm điểm cơ sở. Mỗi ngƣời dùng A một khoá bí mật nA là một số nguyên, và sinh khoá công khai
PA = nA * G.
Khi đó hệ mã hoá đƣờng cong elliptic đƣợc xây dựng tƣơng tự hệ mã hoá ElGamal, trong đó thuật toán mã hoá và giải mã đƣợc xác định nhƣ sau:
Thuật toán mã hoá
Giả sử ngƣời dùng A muốn gửi thông điệp cần mã hoá Pm tới ngƣời dụng B, chọn một số ngẫu nhiên k và gửi thông điệp mã hoá Cm đƣợc tính nhƣ sau:
Cm = {k * G, Pm + k * PB } (PB là khoá công khai của B)
Thuật toán giải mã
Để giải mã thông điệp Cm = { k * G, Pm + k * PB }, ngƣời dùng B thực hiện tính nhƣ sau:
Pm + k * PB - nB * k * G = Pm + k * PB – k * nB * G = Pm + k * PB - k * PB = Pm
Chỉ có B mới có thể giải mã vì B có nB (là khoá bí mật).
Chú ý rằng ở đây Pm là một điểm thuộc đƣờng cong elliptic, quá trình mã hoá giải mã đƣợc thực hiện trên các điểm thuộc đƣờng cong E. Trong thực tế, để sử dụng đƣợc ngƣời ta phải tƣơng ứng một số với một điểm thuộc đƣờng cong elliptic. Khi đó mỗi thông điệp cần mã hoá sẽ tƣơng ứng với một dãy số. Mỗi số sẽ tƣơng ứng với một điểm trên đƣờng cong elliptic.
Tính bảo mật
Nếu kẻ tấn công giữa đƣờng, Oscar, có thể giải bài toán EDLP thì anh ta có thể biết đƣợc khoá bí mật từ nB của B từ các thông tin công khai G và nBG, và có thể giải mã thông điệp mà A gửi. Nhƣ vậy độan toàn (bảo mật) của thuật toán trên dựa vào độ khó của bài toán EDLP.
CHƢƠNG 4
MỘT VÀI ỨNG DỤNG