Tải bản đầy đủ (.pdf) (83 trang)

THUẬT TOÁN CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (965.53 KB, 83 trang )

NGHIÊN CỨU THUẬT TOÁN CHỮ KÝ SỐ
TRÊN ĐƯỜNG CONG ELLIPTIC


MỤC LỤC
Trang
Trang phụ bìa ......................................................................................................
Bản cam đoan .....................................................................................................
Mục lục................................................................................................................
Tóm tắt luận văn..................................................................................................
Danh mục các ký hiệu, viết tắt, các bảng, các hình vẽ .......................................
LỜI MỞ ĐẦU .................................................................................................. 1
CHƯƠNG 1: MẬT MÃ KHÓA CÔNG KHAI VÀ CHỮ KÝ SỐ.............. 3
1.1. Mật mã khóa công khai ........................................................................... 3
1.1.1. Thuật toán mã hóa khóa công khai ................................................... 6
1.1.2. Các yêu cầu đối với mật mã khóa công khai .................................... 8
1.1.3. Các ứng dụng sử dụng mật mã khóa công khai ................................ 9
1.1.4. Ưu điểm của mật mã khóa công khai ............................................. 10
1.2. Một số hệ mật mã khóa công khai quan trọng ...................................... 10
1.2.1. Thuật toán Diffie-Hellman.............................................................. 11
1.2.2. Mật mã khóa công khai RSA .......................................................... 13
1.2.3. Mật mã khóa công khai ElGamal ................................................... 16
1.3. Chữ ký số .............................................................................................. 20
1.3.1. Lược đồ chữ ký số .......................................................................... 20
1.3.2. Phân loại lược đồ chữ ký số ............................................................ 22
1.3.3. Thuật toán chữ ký số (DSA) ........................................................... 23
1.3.4. Ưu điểm của chữ ký số ................................................................... 26
1.4. Kết luận chương .................................................................................... 27
CHƯƠNG 2: HỆ MẬT DỰA TRÊN ĐƯỜNG CONG ELLIPTIC ......... 28
2.1. Cơ sở toán học....................................................................................... 28
2.1.1. Trường hữu hạn .............................................................................. 28




2.1.2. Đường cong Elliptic trên trường hữu hạn Fp .................................. 31
2.1.3. Đường cong Elliptic trên F2m ........................................................ 34
2.2. Hệ mật trên đường cong Elliptic (ECC) ............................................... 36
2.3. Vấn đề logarit rời rạc trên đường cong elliptic (ECDLP) .................... 37
2.3.1. Tấn công Pohlig-Hellman ............................................................... 38
2.3.2. Tấn công Pollard’s rho.................................................................... 39
2.4. Kết luận chương .................................................................................... 42
CHƯƠNG 3: XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN ĐƯỜNG
CONG ELLIPTIC ......................................................................................... 44
3.1. Thuật toán chữ ký số trên đường cong elliptic ..................................... 44
3.1.1. Các tham số miền ECDSA ............................................................. 44
3.1.2. Tạo và xác minh một đường cong elliptic ngẫu nhiên ................... 46
3.1.3. Tạo miền tham số ............................................................................ 51
3.1.4. Xác minh tham số miền .................................................................. 54
3.1.5. Cặp khóa ECDSA ........................................................................... 56
3.1.6. Tính toán chữ ký ECDSA ............................................................... 58
3.2. Phân tích tính bảo mật........................................................................... 61
3.2.1. Vấn đề logarit rời rạc trên đường cong elliptic (ECDLP) .............. 62
3.2.2. Các tấn công lên hàm băm .............................................................. 64
3.2.3. Các tấn công khác ........................................................................... 66
3.3. Đề xuất ứng dụng với thiết bị có tài nguyên hạn chế ........................... 68
3.4. Kết luận chương .................................................................................... 70
KẾT LUẬN .................................................................................................... 72
TÀI LIỆU THAM KHẢO ............................................................................ 74


Tóm tắt
Tên đề tài:

Nghiên cứu thuật toán chữ ký số trên đường cong
elliptic
Tóm tắt:
Luận văn thực hiện nghiên cứu lý thuyết trường hữu hạn, tổng quan về
các hệ mật mã hóa khóa công khai và thuật toán chữ ký số. Từ đó, dựa trên
những ưu điểm của hệ mật đường cong elliptic được áp dụng trong thuật toán
chữ ký số, luận văn thực hiện nghiên cứu, phân tích các vấn đề an ninh của
thuật toán chữ ký số trên đường cong elliptic và đưa ra lược đồ thực hiện thuật
toán trên các thiết bị có tài nguyên hạn chế.


DANH MỤC HÌNH VẼ
Trang
Hình 1.1. Mật mã khóa công khai ..................................................................... 5
Hình 1.2. Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực. 8
Hình 1. 3. Lược đồ trao đổi khóa Diffie-Hellman .......................................... 13
Hình 1.4. Mô hình mã hóa/giải mã mật mã khóa công khai RSA .................. 15
Hình 1.5: Lưu đồ mã hóa ElGamal ................................................................. 17
Hình 1. 6: Lưu đồ ký ElGamal ........................................................................ 19
Hình 1. 7: Lược đồ chữ ký số DSA................................................................. 24
Hình 2.1: Mô tả hình học của phép cộng hai điểm khác nhau trên đường cong
elliptic: P + Q = R. .......................................................................................... 32
Hình 2.2: Mô tả hình học của việc gấp đôi một điểm trên đường cong elliptic:
P + P = R. ........................................................................................................ 33
Hình 2.3. Giới hạn chuỗi {Xi} trong thuật toán Pollard’s rho, trong đó t = độ
dài đuôi và s = độ dài chu kỳ .......................................................................... 41


DANH MỤC BẢNG BIỂU
Trang

Bảng 3. 1. Thuật toán snh chữ ký số ECDSA. ............................................... 59
Bảng 3. 2. Thuật toán xác thực chữ ký số ECDSA......................................... 60


DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Ký hiệu

Tiếng Anh

Tiếng Việt

ANSI

American National Standard

Tổ chức tiêu chuẩn quốc gia

Institute

Hoa Kỳ

DLP

Discrete Logarithm Problem

Vấn đề logarit rời rạc

DSA


Digital Signature Algorithm

Thuật toán chữ ký số

DSKS

Duplicate-signature Key

Việc lựa chọn khóa bản sao

Selection

chữ ký

DSS

Digital Signature Standard

Chuẩn chữ ký số

ECC

Elliptic Curve Cryptography

Mật mã hóa đường cong
elliptic

ECDSA

Elliptic Curve Digital Signature


Thuật toán chữ ký số trên

Algorithm

đường cong elliptic

Elliptic Curve Discrete

Vấn đề logarit rời rạc trên

Logarithm Problem

đường cong elliptic

Institute of Electrical and

Tổ chức các kỹ sư điện, điện

Electronics Engineers

tử

IoT

Internet of Things

Mạng internet của các đồ vật

NFC


Near-Field Communications

Truyền thông trong phạm vi

ECDLP

IEEE

gần
NIST

National Institute of Standards

Tổ chức quốc gia về các tiêu

and Technology

chuẩn và công nghệ


RFID

Radio Frequency Identification

Xác thực tần số vô tuyến


LỜI MỞ ĐẦU
Ngày nay, sự phát triển của khoa học công nghệ thông tin và truyền thông

đã làm cho việc trao đổi, học hỏi thông tin trở nên không còn bị ảnh hưởng quá
nhiều bởi khoảng cách về địa lý nữa. Nhưng khi việc trao đổi thông tin trong
một môi trường mở như thế lại là điều kiện thuận lợi cho các kẻ phá hoại có thể
dễ dàng đánh cắp và thay đổi thông tin. Chính vì vậy, yêu cầu đặt ra khi trao
đổi thông tin trong môi trường mở như thế đó là phải có tính an toàn và xác
thực.
Sự ra đời của các hệ mật mã hóa chính là nhằm đảm bảo an toàn thông
tin trong quá trình trao đổi, nhất là sự ra đời của các hệ mật mã hóa công khai
đã tạo ra bước đột phá trong việc xác thực thông tin. Diffie và Hellman chính
là những người đi tiên phong trong lĩnh vực mật mã khóa công khai với sự ra
đời của thuật toán trao đổi khóa. Sau đó là sự ra đời của hàng loạt các hệ mật
mã hóa khác như RSA, Elgamal, ECC… Và các hệ mật này đóng vai trò quan
trọng trong thuật toán chữ ký số nhằm đảm bảo an toàn và tính xác thực của
thông tin.
Trong các hệ mật mã hóa khóa công khai thì hệ mật đường cong Elliptic
(ECC) được cho là một hệ mật có độ bảo mật cao và an toàn hơn nhiều so với
các thuật toán mật mã hóa khác. Nó được ứng dụng trong rất nhiều lĩnh vực và
được sử dụng nhiều nơi trên thế giới. Với các đặc tính của nó thì nó là thuật
toán mà được áp dụng phổ biến nhất trên cá thiết bị có tài nguyên hạn chế như
trong các thẻ NFC, RFID,… các thiết bị này có thể nói là phổ biến trong cuộc
sống ngày nay và cũng yêu cầu các thuật toán xác thực an toàn và hiệu quả.
Luận văn với tên gọi “Nghiên cứu thuật toán chữ ký số trên đường cong
elliptic” với mục đích chính là nghiên cứu thuật toán chữ ký số trên đường cong
elliptic (ECDSA), và dựa trên những ưu điểm của thuật toán này để đưa ra đề


xuất cho việc áp dụng thuật toán trên thiết bị có tài nguyên hạn chế như trong
các thẻ NFC, RFID,… Với mục tiêu trên, luận văn có bố cục như sau:
- Chương 1 - “Mật mã khóa công khai và chữ ký số”: Trong chương
này, luận văn sẽ đi vào trình bày tổng quan về hệ mật mã khóa công

khai và thuật toán chữ ký số.
- Chương 2 - “Hệ mật dựa trên đường cong elliptic”: sẽ mang đến cho
người đọc lý thuyết về đường cong elliptic và hệ mật dựa trên đường
cong elliptic.
- Chương 3 - “Xây dựng lược đồ chữ ký số trên đường cong elliptic”:
dựa vào lý thuyết elliptic và hệ mật đường cong elliptic để trình bày
lược đồ chữ ký số dựa trên đường cong elliptic và đề xuất ứng dụng
thuật toán trên các thiết bị có tài nguyên hạn chế.


CHƯƠNG 1: MẬT MÃ KHÓA CÔNG KHAI VÀ CHỮ KÝ SỐ
1.1. Mật mã khóa công khai
Ý tưởng về mật mã khóa công khai được Diffie và Hellman đưa ra vào
năm 1976 là hệ mật mã đối xứng. Thuật toán mật mã khóa công khai dựa trên
một khóa cho việc mã hóa và một mã khác cho việc giải mã. Hay nói cách khác
mật mã khóa công khai có tính chất bất đối xứng, nó bao gồm việc sử dụng hai
khóa riêng biệt tương phản với mã hóa khóa đối xứng là chỉ có một khóa. Việc
sử dụng hai khóa là quan trọng trong lĩnh vực cần tính bí mật và chứng thực.
Sự phát triển của mật mã khóa công khai đóng một vai trò rất lớn và tạo ra một
cuộc cách mạng trong kỹ thuật mật mã. Trong đó, những giải thuật khóa công
khai đều dựa trên những hàm toán học hơn là những phép thay thế và chuyển
vị trong những hệ mật mã cổ điển.
Khái niệm mật mã khóa công khai đã tạo ra sự cố gắng để giải quyết hai
vấn đề khó khăn nhất trong mã hóa quy ước đó là sự phân bố khóa và chữ ký
số:
• Trong mã hóa quy ước sự phân bố khóa yêu cầu hai hoặc nhiều người
truyền thông cùng tham gia một khóa mà bằng cách nào đó đã được
phân bố với họ hoặc sử dụng một trung tâm phân phối khóa.
• Nếu mật mã đã trở nên phổ biến thì những bản tin và tài liệu điện tử
sẽ cần những chữ ký tương đương mà đã sử dụng trong các tài liệu

giấy. Tức là một phương pháp có thể được nghĩ ra có quy định làm hài
lòng tất cả những người dùng tham gia khi một đoạn tin số được gửi
đi bởi một cá nhân nào đó hay không.
Những thuật toán mật mã khóa công khai có các đặc điểm sau [7]:
• Việc tính toán là không khả thi để giải mã khi mà chỉ dựa vào thuật
toán mã hóa và khóa mã hóa.


• Một trong hai khóa có liên quan đến nhau được dùng để mã hóa, còn
khóa còn lại thì được dùng để giải mã.
Trong mật mã khóa công khai, tất cả những người tham gia đều được truy
cập để biết khóa công khai của nhau, và khóa riêng là chỉ được tạo bởi mỗi cá
nhân và do đó khóa riêng cần phải được giữ kín. Khi nào khóa riêng của người
dùng còn được bảo vệ bí mật, thông tin trao đổi là an toàn. Tại bất kì thời điểm
nào, một hệ thống có thể thay đổi khóa riêng của nó và đưa ra khóa công khai
khác để thay thể khóa cũ của nó.
Mật mã hóa công khai có thể được ứng dụng trong bảo mật truyền tin và
chứng thực:
• Bảo mật trong truyền tin: bên A sẽ dùng khóa công khai của bên B để
mã hóa bản tin, bản mã này sẽ chỉ có thể giải được bằng khóa riêng của
bên B (hình 1.1 a).
• Chứng thực: bên A kí lên tin cần gửi bằng cách mã hóa với khóa bí mật
của A và gửi bản tin này cho B. Khi B muốn kiểm tra tính tin cậy của tin
nhận được, B chỉ việc kiểm tra bàng việc dùng khóa công khai của A để
giải mã bản tin, nếu giải mã đúng thì bản tín đáng tin cậy (hình 1.1 b).


a) Mã hóa với khóa công khai.

b) Chứng thực với khóa riêng.

Hình 1.1. Mật mã khóa công khai [7].


1.1.1. Thuật toán mã hóa khóa công khai
a. Các bước tiến hành trong quá trình mã hóa khóa công khai
(i) Mỗi người dùng tạo một cặp khóa để dùng cho mã hóa và giải mã.
(ii) Mỗi hệ thống công bố rộng rãi khóa mã bằng cách đặt khóa vào một
thanh ghi hay một file công khai. Đây chính là khóa công khai, khóa
còn lại được giữ riêng và bí mật.
(iii) A muốn gửi cho B thì A phải mã hóa bản tin bằng khóa công khai của
B rồi gửi cho B, vì chỉ có B mới có khóa riêng được dùng để giải mã
bản tin. Khi A đã mã hóa bản tin bởi khóa công khai của B thì ngay cả
A cũng không thể giải mã được bản mã này khi chỉ biết khóa công khai
của B.
(iv) Khi B nhận được bản tin đã mã hóa từ A, B giải mã bằng khóa riêng
của mình. Không ai có thể giải mã được bản mã này bởi chỉ có B mới
có khóa riêng.
b. Mô hình đảm bảo tính tin cậy
Trong mô hình đảm bảo tính tin cậy, người nhận B sinh ra một cặp khóa:
khóa công khai PUB và khóa riêng PRB. Khóa công khai PUB được công bố cho
tất cả các người dùng khác được biết, còn khóa riêng PRB thì chỉ có B mới biết.
Khi người A muốn gửi bản tin cho B, A sẽ dùng khóa công khai của người nhận
B để mã hóa. Chỉ có B sử dụng khóa riêng PRB của mình để giải mã bản tin
được.
Với bản tin X và khóa PUB, người dùng A dùng một thuật toán mã hóa
E để tạo ra bản mã Y = {Y1,Y2,…,YN}:
Y = E(X,PUB)
Người nhận B dùng thuật toán D để tạo lại bản tin X:



X = D(Y,PRB)
Mô hình mật mã khóa công khai dùng để bảo đảm độ tin cậy được mình
họa trên hình 1.1a.
c. Mô hình đảm bảo tính xác thực
Trong mô hình bảo đảm tính xác thực, A chuẩn bị gửi bản tin cho B,
dùng khóa riêng của mình là PRA để mã hóa bản tin xác thực. B có thể dùng
mã công khai của A là PUA để giải mã vì chỉ có A mới có thể tạo ra được bản
mã đó, nó được sử dụng làm chữ ký số.
Với bản tin X và khóa riêng PRA, người gửi A dùng thuật toán E để tạo
ra bản mã Y = {Y1,Y2,…,YN}:
Y = E(X,PRA)
Người nhận B dùng thuật toán giải mã D để tạo lại bản tin X
X = D(Y,PUA)
Mô hình hệ mật mã khóa công khai để đảm bảo tính xác thực được minh
họa trên hình 1.1b.
Mô hình mật mã này không đảm bảo được tính tin cậy vì bản tin truyền
đi mặc dù không thể bị thay thế (không ai có thể mã hóa bằng một khóa khác
mà dùng khóa công khai của A giải mã ra bản tin có nghĩa được), nhưng bất kì
ai cũng có thể dùng khóa công khai của A để giải mã và đọc được bản tin này.
Đê có thể đảm bảo được cả tính tin cậy thì phải sử dụng hai lớp mã hóa.
Người gửi A mã hóa bản tin dùng khóa riêng của mình là PRA để mã hóa bản
tin của mình (tạo ra chữ ký số). Sau đó, dùng khóa công khai PUB của B để mã
hóa lần hai cho bản mã đó. Quá trình này yêu cầu bên nhận để giải mã được
chính xác bản mã thì cần phải có hai khóa: khóa riêng PRB của B và khóa công
khai PUA của A để giải mã.


Z = E(E(X,PRA),PUB)
X = D(D(Z,PRB),PUA)
Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực được

minh họa trên hình 1.2.

Bản rõ
X

PRA

PUB

Mã hóa

Mã hóa

E(X,PRA)

E(E(X,PRA),PUB)

PRB

PUA

Giải mã

Giải mã

D(Z,PRB)

D(D(Z,PRB),PUA)

Z


Bản rõ
X

Hình 1.2. Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực.
1.1.2. Các yêu cầu đối với mật mã khóa công khai
Hệ thống mật mã khóa công khai phụ thuộc vào thuật toán mã hóa dựa
trên hai khóa có liên hệ với nhau. Diffie và Hellman đã đòi hỏi hệ thống này bỏ
qua việc chứng minh sự tồn tại của thuật toán. Tuy nhiên, họ đã đưa ra các điều
kiện mà thuật toán đó phải đạt được.
• Nó phải được tính toán dễ dàng cho bên B để khởi tạo một cặp khóa
(khóa công khai PUb, khóa riêng PRb).
• Nó phải tính toán dễ dàng cho bên gửi A, việc biết khóa công khai và
bản tin M để mã hóa, để tạo ra từ mã tương ứng:
C = E(PUb, M)
• Nó phải tính toán dễ dàng cho bên nhận B để giải mã bản mã nhận được
bằng việc sử dụng khóa riêng để khôi phục bản tin gốc:
M = D(PRb, C) = D[PRb, E(PUb, M)]
• Việc tính toán giải mã là không thể đối với kẻ địch khi đã biết khóa công
khai để tìm mã riêng.


• Việc tính toán là không thể đối với kẻ địch khi biết khóa công khai và
bản mã để khôi phục bản tin gốc M.
Trên đây là các yêu cầu bắt buộc, như dấu hiệu cho thấy rằng chỉ một vài
thuật toán là được chấp nhận sử dụng phổ biến trong một vài thời kì từ khi mật
mã khóa công khai được đưa ra.
Các yêu cầu được đúc rút lại để cần cho một hàm cửa sập một chiều.
Hàm một chiều là một hàm tương tự như mỗi hàm có một giá trị nghịch đảo
duy nhất, với điều kiện phép tính của hàm là dễ dàng, nhưng trái lại phép tính

nghịch đảo là không thể:
Y = f(x) là dễ
X = f-1(Y) là không thể tính được
Nói cách khác, “dễ dàng” ở đây được xác đinh bởi một bài toán là nó có
thể giải quyết được trong một thời gian nhất định (có tính khả thi). Nếu hàm
chiều dài đầu vào là n bit thì thời gian để tính tỉ lệ với na (a là hằng số). Nhằm
đảm bảo tính bảo mật, người a sử dụng khóa có kích thước đủ lớn (thường là
hàng trăm chữ số thập phân).
1.1.3. Các ứng dụng sử dụng mật mã khóa công khai
Tùy vào từng ứng dụng mà các người dùng có thể sử dụng hoặc khóa
riêng của mình hoặc khóa công khai của người nhận, hoặc cả hai khóa để thực
hiện một số ứng dụng sau đây:
(i) Giữ bí mật bản tin giữa hai bên: người gửi mã hóa bản tin bằng khóa
công khai của người nhận, người nhận dùng khóa riêng của mình để
giải mã.
(ii) Chữ ký số: người gửi mã hóa đoạn tên (ký tên / xác thực) bằng khóa
riêng của mình, người nhận dùng khóa công khai của người gửi để giải


mã bản tin. Chữ ký được áp dụng tới đoạn tin hay với một khối dữ liệu
nhỏ mà được liên kết trong một số phương thức với đoạn tin.
(iii) Trao đổi khóa: người gửi mã hóa bản tin hai lần, lần một là mã hóa bản
tin bằng khóa riêng của mình, lần hai là mã hóa liên tiếp bản mã đã
được mã trong lần một bằng khóa công khai của người nhận. Người
nhận giải mã bằng khóa riêng của mình, sau đó dùng khóa công khai
của người gửi để giải mã.
1.1.4. Ưu điểm của mật mã khóa công khai
Ưu điểm nổi bật của mật mã khóa công khai so với mật mã khóa bí mật
là khóa có thể công bố công khai, không cần phải có một kênh liên lạc bí mật
để truyền khóa. Người dùng có thể công bố khóa công khai của mình trên một

trang công khai tin cậy nào đó cùng với các người dùng khác để có thể công bố
cho mọi người dùng khác biết. Bất kỳ người dùng nào cũng có thể dùng khóa
công khai của bạn để mã hóa bản tin và gửi cho người nhận và chỉ có người
nhận mới có thể đọc được chính xác bản tin đó (vì chỉ người nhận mới có khóa
để giải mã bản mã đó). Mật mã khóa công khai ngoài việc mã hóa, trao đổi bản
tin, xác thực còn được dùng làm chữ ký số.
1.2. Một số hệ mật mã khóa công khai quan trọng
Theo [3], chỉ một vài thuật toán mã hóa khóa công khai là an toàn và
thực tiễn. Trong số đó, chỉ một số loại là thích hợp cho việc mã hóa. Số khác
chỉ thích hợp cho chữ kí số. Trong số các thuật toán mã hóa khóa công khai,
chỉ có 4 thuật toán là RSA (1978), ElGamal (1985), Schorr (1990) và ECC
(1985) là được xem là thích hợp cho cả mã hóa và chữ ký số. Một số thuật toán
mã hóa khóa công khai khác được thiết kế để chỉ thích hợp cho an toàn chữ kí
số là DSA (1991). Trong mục này, luận văn sẽ trình bày một số hệ mật mã khóa


công khai nổi tiếng như Diffie-Hellman, RSA, ElGama và thuật toán mật mã
đường cong Elliptic (ECC) sẽ được luận văn đề cập đến trong chương 2.
1.2.1. Thuật toán Diffie-Hellman
Thuật toán Diffe-Hellman được đưa ra vào năm 1976. Thuật toán này sử
dụng phép tính lũy thừa mô-đun q (q là một số nguyên tố) như một thuật toán
trao đổi khóa. Phép tính lũy thừa có ưu điểm là dễ dàng tính toán trên trường
hữu hạn GF(q) nhưng lại gặp rất nhiều khó khăn trong việc tính toán logarit
trên trường hữu hạn GF(q).
Thuật toán Diffie-Hellman có thể được mô tả như sau:
Gọi q là một số nguyên tố và a là một phần tử nguyên tố với q. Sau đó,
tính lũy thừa của a có thể tạo tất cả các giá trị nguyên từ 1 đến (q – 1) theo một
thứ tự nào đó. Với bất kì số nguyên Y được tạo bởi a mũ X được biểu diễn như
sau:
Y º aX mod q

Trong đó, 1 £ X £ q – 1.
Sau đó, để có thể xác định được X thì phép tính logarit rời rạc theo a
trên GF(q) là cần thiết:
X = log aY trên GF(q), 1 £ Y £ q – 1.
Phép tính Y từ X là tương đối dễ dàng, nhưng phép tính ngược lại X từ
Y là khó hơn rất nhiều.
Giả sử, người dùng i lựa chọn ngẫu nhiên một số nguyên Xi và người
dùng j chọn ngẫu nhiên một số nguyên Xj thuộc GF(q) khác 0. Người dùng i
giữ Xi là bí mật, và gửi đi:
Yi º aXi mod q


đến người dùng j. Tương tự, người dùng j cũng gửi đi:
Yj º aXj mod q
đến người dùng i.
Cả hai người dùng i và j có thể tính:
Kịj º aXi.Xj mod q
và sử dụng Kij như một khóa chung giữa hai bên. Người dùng i tính Kij bằng
phép tính lũy thừa Yj với khóa riêng Xi:
Kij º YjXj mod q º aXi.Xj mod q
người dùng j cũng tính tương tự và được Kij.
Thật vậy, cả hai người dùng i và j đã trao đổi một khóa bí mật từ Xi và
Xj là riêng, các tham số công khai là (q, a, Yi, Yj). Do đó, kẻ tấn công buộc
phải thực hiện phép tính logarit rời rạc, điều mà được cho là không thực tế, khi
mà số nguyên tố là rất lớn.
Khi sử dụng trường hữu hạn GF(q), trong đó q là một số nguyên tố hay
q = pk (p là số nguyên tố, k là một số nguyên), là cần thiết để chắc chắn tham
số q – 1 là một số nguyên tố lớn, ngược lại thì nó có thể dễ dàng để có thể tính
được phép tính logarit rời rạc trên trường GF(q).
Đây là thuật toán tiên phong trong việc sử dụng thuật toán trao đổi khóa

và là sơ khai của hệ mật mã khóa công khai sau này.


Người dùng A

Người dùng B

Tạo số nguyên ngẫu nhiên bí
mật X từ tập {1,2,…,q-1}

Tạo số nguyên ngẫu nhiên bí
mật Y từ tập {1,2,…,q-1}

Tính aX (mod q)
Và công khai nó

Tính aY (mod q)
Và công khai nó

aY.X (mod q)

aX.Y (mod q)

Khóa chung bí
mật aX.Y (mod q)

Hình 1. 3. Lược đồ trao đổi khóa Diffie-Hellman [3].
1.2.2. Mật mã khóa công khai RSA
Thuật toán RSA được phát minh bởi Rivest, Schamir và Adleman vào
năm 1976, nó là thuật toán mã hóa khóa công khai đầu tiên và dựa trên thuật

toán Diffie-Hellman. Thuật toán RSA sử dụng hai khóa: khóa công khai và
khóa riêng. Mỗi người dùng sẽ giữ cho mình một khóa riêng và khóa này là bí
mật. Nếu khóa này sử dụng cho việc mã hóa thì khóa còn lại được sử dụng cho
việc giải mã, bản tin đã bị mã hóa chỉ có thể được giải mã bằng khóa còn lại và
ngược lại.


Theo [1], cơ sở thuật toán dựa trên tính khó của bài toán phân tích các số
lớn thành tích các thừa số nguyên tố: không tồn tại thuật toán thời gian đa thức
(theo độ dài biểu diễn nhị phân của số đó) cho bài toán này. Chẳng hạn, việc
phân tích một số là tích của 2 số nguyên tó lớn hàng trăm chữ số có thể sẽ mất
hàng ngàn năm tính toán với một máy PC trung bình có CPU khoảng trên 2Ghz.
Thuật toán RSA được mô tả như sau:
Cho một khóa côn khai e và mô-đun n, khóa riêng d được sử dụng cho
việc giải mã phải được tìm dựa trên n. Chọn hai số nguyên tố lớn p và q, và tìm
mô-đun n được tìm bằng việc thực hiện phép nhân p và q:
n = p.q
chọn khóa mã hóa e mà e và (n) là nguyên tố với nhau, nghĩa là gcd(e,(n)) =
1, trong đó (n) = (q – 1)(p – 1) được gọi là hàm Euler.
Sử dụng thuật toán euclid, khóa riêng d thực hiện cho việc giải mã có thể
được tính toán bằng việc thực hiện phép tính nghịch đảo của e:
d º e-1 mod (n) hoặc ed º 1 mod (n).
Khóa giải mã d và n là có quan hệ nguyên tố với nhau. Các số e và n
được gọi là các khóa công khai, trong khi đó d được gọi là khóa riêng.
Để thực hiện mã hóa bản tin m, từ mã c tương đương với khối tin tức có
thể được tìm thấy sử dụng theo công thức mã hóa sau:
c º me mod n
Để giải mã bản tin này, từ mã c được tính lũy thừa d mô-đun n để có thể
khôi phục được bản tin m như sau:
m º cd (mod n) º med (mod n) º m (mod n)

do ed º 1 (mod (n)) theo định lý Euler.


Hình 1.4. Mô hình mã hóa/giải mã mật mã khóa công khai RSA [3].
Thuật toán RSA
Xây dựng: Chọn các tham số
1. Chọn hai số nguyên tố lớn p và q. Tính n = p.q và (n) = (p – 1)(q – 1).
2. Chọn e, 1 £ e £ (n) – 1 sao cho gcd(e, (n)) = 1.
3. Tìm d sao cho e.d = 1 (mod (n)).
Khóa công khai (PUb) là (e, n).
Khóa riêng (PRb) là (d, p, q).
Ví dụ 1.1 [1]: Chọn p = 11, q = 13
n = 11.13 = 143.
(n) = (p – 1)( q – 1) = 10.12 = 120.
e = 37 (gcd(37, 120) = 1).
d.e = 1 (mod (n))  d = 13.


Để mã hóa một chuỗi nhị phân, ta phải bẻ ra thành nhiều đoạn có độ dài
u bit, sao cho 2u £ 142  u = 7. Mỗi đoạn như vậy sẽ là một số nằm trong
khoảng 0-127.
Giả sử, ta cần mã hóa bản tin X = (0000010) = 2, ta có:
E(X) = X37 = 12 (mod 143)  Y = (00001100)
Giải mã như sau:
X = D(Y) = 1213 = 2 (mod 143).
1.2.3. Mật mã khóa công khai ElGamal
Thuật toán ElGamal có thể được dùng cho cả mã hóa và chữ ký số. An
ninh của mô hình ElGamal dựa vào độ khó của phép tính logarit rời rạc trên
GF(q), trong đó q là một số nguyên tố lớn.
Để mô tả hệ thống ElGamal, ta chọn một số nguyên tố lớn p và hai số

ngẫu nhiên g và x thỏa mãn g < p và x < p, tại đó x là khóa riêng. Số ngẫu nhiên
g là một số có căn hai nguyên tố với p. Khóa công khai được xác định bởi (y,
g, p). Sau đó, ta thực hiện phép tính y º gx (mod p). Để mã hóa bản tin m, 0 <
m £ p – 1, đầu tiên đặt một số ngẫu nhiên k sao cho gcd(k, p – 1) = 1. Bản tin
đã được mã hóa có thể được thực nhiện nhanh bởi cặp (r, s) như sau:
r º gk (mod p)
s º ykm (mod p)
Để giải mã m, chia s cho rx:
m = s/rx (mod p – 1)
Để kí lên một bản tin đã cho m, đầu tiên chọn một số ngẫu nhiên k mà
gcd(k, p – 1) = 1 và thực hiện m º xr + ks (mod p – 1) dùng thuật toán Euclid


mở rộng để tìm s. Kĩ thuật cơ bản cho việc mã hóa và kí sử dụng thuật toán
ElGamal như một hệ thống mật mã được mô tả như sau:
a. Mã hóa ElGamal
Để tạo một cặp khóa, đầu tiên chọn một số nguyên tố p và hai số ngẫu
nhiên g và x sao cho g, x < p. Sau đó tính:
y º gx (mod p)
Khóa công khai là (y, g, p) và khóa riêng là x < p.
Để mã hóa bản tin m, 0 £ m £ p – 1, ta chọn một số ngẫu nhiên k sao cho
gcd(k, p – 1) = 1. Bản tin đã được mã hóa được tạo theo cặp (r, s):
r º gk (mod p)
s º ykm (mod p)
Chú ý: kích thước của bản mã là gấp đôi kích thước của bản tin. Để giải
mã bản tin, ta thực hiện phép chia s cho rx được biểu diễn như sau:
rx º (gk)x (mod p)
s/rx º ykm/(gk)x º (gx)km/(gk)x º m (mod p – 1)

Hình 1.5: Lưu đồ mã hóa ElGamal [3].



×