Tải bản đầy đủ (.doc) (97 trang)

tìm hiểu chữ ký số và ứng dụng của nó

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 (820.31 KB, 97 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN LIỆU
TÌM HIỂU CHỮ KÝ SỐ
VÀ ỨNG DỤNG CỦA NÓ
LUẬN VĂN THẠC SĨ
HÀ NỘI - 2009
ii
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN LIỆU
TÌM HIỂU CHỮ KÝ SỐ
VÀ ỨNG DỤNG CỦA NÓ
Ngành: Công nghệ thông tin
Chuyên ngành: Truyền dữ liệu và Mạng máy tính
Mã số: 60 48 15
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS. HỒ VĂN CANH
HÀ NỘI - 2009
LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng
cá nhân, không sao chép lại của người khác. Trong toàn bộ nội dung của luận văn, những
điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều
nguồn tài liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp
pháp.
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định
cho lời cam đoan của mình.
Hà Nội, ngày 29 tháng 11 năm 2009
Học viên
Nguyễn Văn Liệu


iii
LỜI CẢM ƠN
Lời đầu tiên, tôi xin bày tỏ lòng biết ơn sâu sắc đến TS. Hồ Văn Canh – Cục Kỹ
thuật nghiệp vụ I – Bộ Công An, người đã tận tình hướng dẫn, chỉ bảo và giúp đỡ tôi
trong suốt quá trình nghiên cứu và hoàn thành luận văn này.
Tôi xin chân thành cảm ơn các thầy cô giáo trường Đại học Công nghệ - ĐHQG
Hà Nội đã giảng dạy và cung cấp cho chúng tôi những kiến thức rất bổ ích trong thời gian
học cao học, giúp tôi có nền tảng tri thức để phục vụ nghiên cứu khoa học sau này.
Tôi cũng xin cảm ơn Lãnh đạo và đồng nghiệp tại đơn vị đã tạo điều kiện và giúp
đỡ tôi trong suốt quá trình nghiên cứu và hoàn thành luận văn.
Tôi cũng xin bày tỏ lòng cảm ơn đến gia đình và bạn bè, những người luôn quan
tâm, động viên và khuyến khích tôi.
Hà Nội, ngày 29 tháng 11 năm 2009
Học viên
Nguyễn Văn Liệu
iv
MỤC LỤC
LỜI CAM ĐOAN iii
LỜI CẢM ƠN iv
MỤC LỤC v
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT vii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ viii
MỞ ĐẦU 1
CHƯƠNG 1: CÁC KHÁI NIỆM TOÁN HỌC CƠ BẢN 2
1. 1 CÁC CẤU TRÚC ĐẠI SỐ 2
1.1.1 Nhóm 2
1.1.2 Vành 2
1.1.3 Trường 3
1.2 SỐ HỌC TRÊN MODULO 3
1.2.1 Định nghĩa Modulo 3

1.2.2 Các phép toán số học trên Modulo 3
1.2.3 Tính chia hết của các số nguyên - Thuật toán Euclide 3
1.3 TRƯỜNG GALOA 5
1.3.1 Trường Galoa 5
1.3.2 Tìm số nghịch đảo 6
1.3.3 Số học đa thức 6
1.3.4 Phép toán đa thức với Modulo đa thức 6
1.4 LÝ THUYẾT SỐ 7
1.4.1 Các số nguyên tố 7
1.4.2 Phân tích ra thừa số nguyên tố 7
1.4.3 Các số nguyên tố cùng nhau và GCD 8
1.4.4 Định lý Ferma (Định lý Ferma nhỏ) 8
1.4.5 Hàm Ole 8
1.4.6 Định lý Ole 9
1.4.7 Kiểm tra tính nguyên tố 9
1.4.8 Định lý phần dư Trung Hoa 10
1.4.9 Căn nguyên tố 10
1.4.10 Logarit rời rạc 11
CHƯƠNG 2: MẬT MÃ, HÀM BĂM 11
2.1 HỆ MẬT MÃ KHOÁ CÔNG KHAI 11
2.1.1 Giới thiệu 11
2.1.2 Hệ mật mã RSA [3] 12
2.1.3 Hệ mật mã Elgamal [3] 13
2.1.4 Hệ mật mã Rabin [3] 16
2.1.5 Các hệ mật mã dựa trên các bài toán NP-đầy đủ [3] 17
2.1.6 Các Hệ mật mã xác suất [3] 19
2.2 HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC 22
2.2.1 Cơ bản về đường cong Elliptic 22
2.2.2 Các hệ mật dựa trên đường cong Elliptic [4] 24
2.2.3 Đánh giá hệ mật ECC 26

2.3 HỆ MẬT TRÊN KHÔNG GIAN KHÔNG GIAO HOÁN 27
v
2.3.1 Giới thiệu chung 27
2.3.2 Hệ mã hoá khoá công khai trên nhóm Bện [6] 28
2.4 HÀM BĂM 30
2.4.1 Đặt vấn đề 30
2.4.2 Hàm băm MD5 30
2.4.4 Hàm băm Davies – Mayer và ứng dụng của TT Rijndael vào hàm băm 33
2.4.5 Các hàm băm sử dụng thuật toán Rijndael 35
CHƯƠNG 3: CÁC MÔ HÌNH CHỮ KÝ SỐ 35
3.1 TỔNG QUAN VỀ CHỮ KÝ SỐ 35
3.1.1 Giới thiệu về chữ ký số 35
3.1.2 Định nghĩa lược đồ chữ ký số 36
3.1.3 Phân loại chữ ký số 37
3.1.4 Tầm quan trọng và ý nghĩa thực tiễn của chữ ký số 40
3.2 CÁC LƯỢC ĐỒ CHỮ KÝ SỐ CƠ BẢN 43
3.2.1 Lược đồ RSA [3] 43
3.2.2 Lược đồ Elgamal [3] 44
3.2.3 Lược đồ chữ ký số chuẩn DSS [3] 45
3.3 LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN EC 46
3.3.1 Lược đồ chữ ký ECDSA [4] 46
3.3.2 Lược đồ ký mù Harn trên EC [4] 47
3.3.3 Lược đồ chữ ký Nyberg – Rueppel trên EC 48
3.4 LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN KHÔNG GIAN KHÔNG GIAO HOÁN 48
3.4.1 Giao thức trao đổi khoá mật trên không gian không giao hoán 49
3.4.2 Lược đồ chữ ký số trên không gian không giao hoán 49
3.5 MỘT SỐ LƯỢC ĐỒ CHỮ KÝ SỐ KHÁC 51
3.5.1 Lược đồ chữ ký số Rabin [3] 51
3.5.2 Lược đồ chữ ký số Schnorr [3] 51
3.5.3 Lược đồ chữ ký số một lần [5] 52

3.5.4 Lược đồ chữ ký số Fail – Stop [5] 54
3.5.5 Lược đồ chữ ký uỷ nhiệm 55
CHƯƠNG 4: CHỮ KÝ CHỐNG CHỐI BỎ VÀ ỨNG DỤNG 57
4.1 ĐẶT VẤN ĐỀ 57
4.2 LỊCH SỬ PHÁT TRIỂN CỦA CHỮ KÝ CHỐNG CHỐI BỎ [32] 58
4.3 LƯỢC ĐỒ CHỮ KÝ CHỐNG CHỐI BỎ 60
4.3.1 Lược đồ chữ ký Chaum-van Antverpen [3] 60
4.3.2 Tính hợp thức của các giao thức 61
4.3.3 Độ an toàn của Lược đồ chữ ký Chaum-van Antverpen 63
4.4 MỘT SỐ BIẾN THỂ CỦA LƯỢC ĐỒ CHỮ KÝ CHỐNG CHỐI BỎ 64
4.4.1 Chữ ký chống chối bỏ Zero-Knowledge 64
4.4.2 Chữ ký chống chối bỏ có thể chuyển đổi 66
4.4.3 Chữ ký chống chối bỏ với người chứng minh phân tán 68
4.4.4 Chữ ký chống chối bỏ trên EC 70
4.4.5 Chữ ký với người thẩm định được chỉ định 73
4.5 ỨNG DỤNG CỦA LƯỢC ĐỒ CHỮ KÝ CHỐNG CHỐI BỎ 77
4.5.1 Nhận xét chung 77
4.5.2 Một số ứng dụng chung 78
KẾT LUẬN 84
1. CÁC VẤN ĐỀ ĐƯỢC TÌM HIỂU TRONG LUẬN VĂN 84
2. HƯỚNG NGHIÊN CỨU TIẾP THEO 85
vi
TÀI LIỆU THAM KHẢO 86
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
CHỮ VIẾT
TẮT
TỪ GỐC NGHĨA TIẾNG VIỆT
3-DES Triple Data Encrytion Standard
Áp dụng giải thuật DES 3 lần cho
mỗi khối dữ liệu

AES Advanced Encryption Standard Hệ mật mã tiên tiến
CDP Conjugacy Decision Problem Vấn đề phân xử liên hợp
CDP
Conjugacy Decomposition
Problem
Vấn đề phân tích liên hợp
CSP Conjugacy Search Problem Vấn đề tìm kiếm liên hợp
DES Data Encryption Standard Hệ mật mã chuẩn
DLP Discrete Logarithm Problem Vấn đề Logarit rời rạc
DSS
Digital Signature Standard
Chuẩn chữ ký số
DVS Designated Verifier Signature
Chữ ký người thẩm định được chỉ
định
ECC Elliptic curve cryptography Hệ mã hóa đường con Elliptic
ECDSA Elliptic Curve Digital Signature
Algorithm
Thuật toán ký trên EC
EDLP Elliptic Discrete Logarithm
Problem
Vấn đề Logarith rời rạc trên EC
GCD Greatest Common Divisor Ước số chung lớn nhất
GCSP Generalized Conjugacy Search
Problem
Vấn đề tìm kiếm liên hợp suy rộng
IFP Integer Factorization Problem Vấn đề phân tích thừa số nguyên
LCM Least Common Multiple Bội số chung nhỏ nhất
LHS Left Hand Side Phía bên trái
MUO

M. Mambo, K. Usuda, E.
Okamoto
Lược đồ ký uỷ nhiệm được đề xuất
bởi M. Mambo, K. Usuda và E.
Okamoto
RHS Right Hand Side Phía bên phải
RSA
Ron Rivest, Adi Shamir, Len
Adleman
Thuật toán mã hóa khóa công khai
do 3 tác giả Ron Rivest, Adi Shamir,
Len Adleman đề xuất
vii
SDVS
Strong Designated Verifier
Signature
Chữ ký người thẩm định được chỉ
định mạnh
SHA Secure Hash Algorithm Thuật toán hàm băm an toàn
TTP Trusted Third Party Thành phần thứ ba tin cậy
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 2.1 So sánh kích thước khóa RSA và ECC với cùng mức độ an toàn 26
Hình 2.2 So sánh mức độ bảo mật giữa ECC với RSA / DSA 26
Hình 2.3 Biểu diễn hình học một số bện 28
viii
Hình 2.4 Biểu diễn hình học của bện kết hợp, bện nghịch đảo, bện tương đương 29
Hình 3.1 Lược đồ chữ ký số với phần đính kèm 39
Hình 3.2 Lược đồ chữ ký số khôi phục thông điệp 39
Hình 3.3 Sự trao đổi khóa k giữa Bob và Alice 49
Hình 3.4. Sự trao đổi khóa f giữa Bob và Alice 49

Hình 3.5 Sơ đồ xác nhận chữ ký số giữa Bob và Alice 50
Hình 3.6 Cách thứ hai để xác nhận chữ ký số 51
Hình 4.1 Mô hình để P1,2 chứng tỏ với P3 quyền được thẩm định chữ ký 83
ix
MỞ ĐẦU
Trong các hoạt động thương mại điện tử cũng như việc xây dựng một nền
hành chính điện tử, không thể không tính đến mức độ chính xác, an toàn của các
bản thông báo điện tử được gửi đi và đến cũng như việc xác thực đối tượng gửi bản
thông báo đó. Điều này nói lên sự cần thiết của việc xác thực và chữ ký số.
Hiện nay, Bộ Thương mại và Ngân hàng Nhà nước Việt Nam đã được Chính
phủ cho phép triển khai chữ ký số và xác thực trong thanh toán điện tử từ năm
2006. Hiện nay, Hàn Quốc cũng đang giúp ta triển khai hạ tầng cơ sở khoá công
khai PKI trong chính phủ điện tử.
Tất cả kết quả trên chủ yếu là được chuyển giao từ bên ngoài. Xét về lĩnh
vực an ninh quốc gia, chúng ta sẽ đặt câu hỏi: mức độ an toàn của chữ ký số và tính
xác thực của văn bản có đảm bảo yêu cầu của chúng ta không khi mà chúng ta phải
nhập ngoại hoàn toàn dây chuyền công nghệ ?
Để giúp các nhà an ninh an toàn mạng có được cơ sở đánh giá mức độ an
toàn của hệ thống đó, em chọn đề tài: “Tìm hiểu chữ ký số và ứng dụng của nó”
làm đối tượng để nghiên cứu phục vụ cho luận văn của mình.
Bố cục của luận văn gồm 4 chương:
Chương 1. Các khái niệm toán học cơ bản
Chương 2. Mật mã, hàm băm
Chương 3. Các mô hình chữ ký số
Chương 4. Chữ ký chống chối bỏ và ứng dụng
Trong đó, Chương 4 là trọng tâm của luận văn này. Ở chương này, luận văn
đi sâu tìm hiểu mô hình chữ ký số chống chối bỏ, một số biến thể của mô hình này
cũng như đưa ra một số trường hợp có thể áp dụng mô hình chữ ký này trong cuộc
sống. Trong chương này em cũng đưa ra chương trình demo bằng ngôn ngữ C# để
có thể hình dung rõ hơn về mô hình chữ ký có thể được áp dụng.

Do khả năng còn hạn chế, đặc biệt là khả năng toán học cho nên mặc dù em
đã có nhiều cố gắng nhằm hoàn thành tốt nhất nhiệm vụ của mình nhưng không
khỏi còn có nhiều thiếu sót. Em rất mong được sự chỉ bảo, đóng góp của các thầy
cô giáo để luận văn này được hoàn thiện hơn.
Em xin chân thành cảm ơn./.
1
CHƯƠNG 1: CÁC KHÁI NIỆM TOÁN HỌC CƠ BẢN
1. 1 CÁC CẤU TRÚC ĐẠI SỐ
1.1.1 Nhóm
Cho một tập các phần tử hoặc “số” và một phép toán hai ngôi, mà kết quả
cũng là một phần tử của tập hợp đó. Tức là ứng với mỗi cặp phần tử trên tập đó, kết
quả của phép toán cũng là một phần tử xác định của tập đã cho. Tính chất này ta
gọi là tính đóng của phép toán trên tập đang xét, ta có định nghĩa sau đây về nhóm.
Định nghĩa nhóm. Tập hợp G cùng với phép toán ‘.’ đóng kín trên G được
gọi là nhóm, nếu nó thỏa mãn các tính chất sau với mọi phần tử a, b, c thuộc G:
- Tính kết hợp (a.b).c = a.(b.c)
-
o Có đơn vị e: e.a = a.e = a
- Có nghịch đảo a
-1
: a.a
-1
= e
o
Nếu có thêm tính giao hoán a.b = b.a, thì gọi là nhóm Aben.
Định nghĩa nhóm Cyclic.
Giả sử cho trước một nhóm hữu hạn (G, .) (tức G là một tập hợp khác rỗng
và gồm một số hữu hạn phần tử). Khi đó, một phần tử a Є G được gọi là phần tử
sinh của G nếu: a
k

= a.a.a a = e (k lần a)
và không tồn tại số nguyên dương h < k mà a
h
= e , trong đó số k là số phần
tử của tập hợp G.
Một nhóm (G, .) có ít nhất một phần tử sinh thì được gọi là nhóm cyclic.
1.1.2 Vành
Cho một tập R các “số” với hai phép toán là cộng và nhân. Tập với hai phép
toán trên được gọi là vành, nếu hai phép toán thoả mãn các tính chất sau:
- Với phép cộng, R là nhóm Aben
- Với phép nhân, có: tính đóng ; tính kết hợp; tính phân phối đối với phép
cộng a(b+c) = ab + ac .
Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán.
Nếu phép nhân có nghịch đảo và không có thương 0, thì nó tạo thành miền
nguyên
2
1.1.3 Trường
Trường là một tập hợp F với hai phép toán cộng và nhân, thoả mãn:
- Với phép cộng F là nhóm Aben
- Với phép nhân F trừ phần tử 0 là nhóm Aben.
- a(b+c) = ab + ac (với mọi a, b, c Є )
1.2 SỐ HỌC TRÊN MODULO
1.2.1 Định nghĩa Modulo
Cho số tự nhiên n và số nguyên a.
Định nghĩa: a mod n là phần dư dương khi chia a cho n.
1.2.2 Các phép toán số học trên Modulo
Cho số n. Ta muốn thực hiện các phép toán theo Modulo của n. Ta có thể
thực hiện các phép toán trên các số nguyên như các phép cộng, nhân các số nguyên
thông thường sau đó rút gọn lại bằng phép lấy Modulo hoặc cũng có thể vừa tính
toán, kết hợp với rút gọn tại bất cứ thời điểm nào:

(a+b) mod n = [a mod n + b mod n] mod n (*)
(a.b) mod n = [a mod n . b mod n] mod n (**)
Như vậy khi thực hiện các phép toán ta có thể thay các số bằng các số tương
đương theo Modulo n đó hoặc đơn giản hơn có thể thực hiện các phép toán trên các
đại diện của nó: Z
n
= { 0, 1, 2, 3, …, n-1 }.
- Z
n
với các phép toán theo Modulo n tạo thành vành giao hoán có đơn vị.
Thực vậy tính đóng của các phép cộng và nhân dựa trên hai công thức (*) và (**).
Các tính chất kết hợp, giao hoán và nghịch đảo được suy ra từ các tính chất tương
ứng của các số nguyên.
- Các chú ý về tính chất rút gọn:
+ Nếu (a+b) ≡ (a+c) mod n, thì b ≡ c mod n
+ Nhưng (ab) ≡ (ac) mod n, thì b ≡ c mod n chỉ khi nếu a là nguyên tố cùng
nhau với n
1.2.3 Tính chia hết của các số nguyên - Thuật toán Euclide
3
Tập hợp Z là đóng kín đối với các phép cộng, trừ và nhân, nhưng không
đóng kín đối với phép chia. Cho hai số nguyên bất kỳ a và b, b  1. Thực hiện phép
chia a cho b ta sẽ được hai số q và r sao cho
a = b.q + r , 0  r  b .
Số q được gọi là số thương của phép chia a cho b, ký hiệu a div b, và số r
được gọi là số dư của phép chia a cho b, ký hiệu a mod b.
Một số nguyên d được gọi là ước số chung của hai số nguyên a và b nếu da
và db. Số nguyên d được gọi là ước số chung lớn nhất của a và b nếu d  0, d là
ước số chung của a và b, và mọi ước số chung của a và b đều là ước số của d . Ta
ký hiệu ước số chung lớn nhất của a và b là gcd(a,b).
Hai số a và b được gọi là nguyên tố với nhau, nếu chúng không có ước số

chung nào khác 1, tức là nếu gcd(a,b) = 1. Một số nguyên n > 1 bất kỳ đều có thể
viết dưới dạng:
1 2
1 2
.
k
k
n p p p
aa a
=
trong đó p
1
, p
2
, , p
k
là các số nguyên tố khác nhau,

1
,

2
, ,

k
là các số mũ
nguyên dương. Nếu không kể thứ tự các thừa số nguyên tố, thì dạng biểu diễn đó là
duy nhất, ta gọi đó là dạng khai triển chính tắc của n .
Định lý 1.1 Nếu b  0 và b a thì gcd(a ,b) = b.
Nếu a = bq + r thì gcd(a,b) = gcd(b,r).

Một số nguyên m được gọi là bội số chung của a và b nếu am và bm. Số m được
gọi là bội số chung bé nhất của a và b , và được ký hiệu là lcm(a ,b), nếu m  0, m
là bội số chung của a và b , và mọi bội số chung của a và b đều là bội của m .
Với hai số nguyên dương a và b ta có quan hệ lcm(a,b).gcd(a,b) = a.b
Thuật toán sau đây thực hiện tìm USCLN của hai số nguyên bất kỳ:
Thuật toán Euclide tìm ước số chung lớn nhất
INPUT: hai số nguyên không âm a và b , với a b .
OUTPUT: ước số chung lớn nhất của a và b.
1. Trong khi còn b  0, thực hiện:
1.1. đặt r

a modb , a b , b  r.
2. Cho ra kết quả (a).
Ta biết rằng nếu gcd(a,b) = d, thì phương trình bất định
a.x + b.y = d
có nghiệm nguyên (x,y), và một nghiệm nguyên (x,y) như vậy có thể tìm được bởi
thuật toán Euclide mở rộng như sau:
4
Thuật toán Euclide mở rộng :
INPUT: hai số nguyên không âm a và b với a b.
OUTPUT: d = gcd(a,b) và hai số x,y sao cho a.x + b.y = d.
1. Nếu b = 0 thì đặt d a , x 1, y  0, và cho ra (d,x,y).
2. Đặt x
2
 1, x
1
 0 , y
2
 0 , y
1

 1.
3. Trong khi còn b 

0, thực hiện:
3.1. qa divb, r  a modb , x  x
2
 qx
1
, y  y
2
 qy
1
.

a b, b r , x
2
 x
1
, x
1
 x , y
2
 y
1
và y
1
y.
4. Đặt d  a, x x
2
, y  y

2
, và cho ra kết quả (d,x,y).
1.3 TRƯỜNG GALOA
Ta muốn đi tìm một trường số có hữu hạn các phần tử, tức là một tập hữu
hạn các phần tử mà ở đó có thể cộng trừ, nhân, chia mà không vượt ra ngoài phạm
vi tập hữu hạn các phần tử đó. Trường Galoa thuộc lọai đó và đóng vai trò quan
trọng trong lý thuyết mã
.
Có thể chứng minh được rằng số các phần tử của trường hữu hạn bất kỳ bằng
lũy thừa của p
m
của số nguyên tố p nào đó, ta ký hiệu
trường Galoa đó là GL(p
m
). Thông t
hường ta sử dụng các trường: GL(p) và GL(2
m
).

1.3.1 Trường Galoa
Trường Galoa GL(p), với p là số nguyên tố.
- GL(p) gồm tập {0,1, … , p-1}
- Với các phép toán cộng và nhân Modulo, như đã biết GL(p) tạo thành một
vành giao hoán. Vì p là số nguyên tố nên mọi số khác 0 nhỏ hơn p đều nguyên tố
cùng nhau với p, do đó GL(p) tạo thành trường vì mọi a thuộc {1, … , p-1} đều có
phần tử nghịch đảo a
-1
: a . a
-1
= 1.

Như vậy trên GL(p) ta có thể thực hiện các phép toán cộng, trừ, nhân, chia
theo Modulo p.
5
1.3.2 Tìm số nghịch đảo
Xét bài toán: nếu GCD(m, b) = 1, tìm nghịch đảo của b theo Modulo m. Ta
mở rộng thuật toán Euclide vừa tìm ước chung lớn nhất của m và b, vừa tính
nghịch đảo trong trường hợp GCD(m, b) = 1.
Thuật toán Euclide mở rộng:
EXTENDED EUCLID(m, b)
1.(A1, A2, A3)=(1, 0, m);
(B1, B2, B3)=(0, 1, b)
2. if B3 = 0
return A3 = gcd(m, b); no inverse
3. if B3 = 1
return B3 = gcd(m, b); B2 = b
–1
mod m
4. Q = A3 div B3
5. (T1,T2,T3)=(A1 – Q*B1,A2 – Q*B2, A3 – Q*B3)
6. (A1, A2, A3)=(B1, B2, B3)
7. (B1, B2, B3)=(T1, T2, T3)
8. goto 2
1.3.3 Số học đa thức
Xét tập các đa thức P
n
có bậc nhỏ hơn hoặc bằng n:
Trên tập các đa thức đó có thể có một số cách khác nhau thực hiện các phép toán
cộng và nhân đa thức:
- Có thể thực hiện các phép toán thông thường trên đa thức
- Các phép toán trên đa thức với các hệ số trên Modulo p

- Các phép toán trên đa thức với các hệ số trên Modulo p và sau đó lấy
Modulo theo đa thức m(x).
Sau đây ta xét riêng trường hợp khi các phép toán cộng, nhân đa thức được
thực hiện với phép lấy Modulo theo một đa thức nào đó.
1.3.4 Phép toán đa thức với Modulo đa thức
Cho đa thức g(x) bậc n và các hệ số của các đa thức xét trong mục này lấy
trong trường Galoa GF(p) với p là số nguyên tố. Viết đa thức f(x) dưới dạng:
f(x) = q(x) g(x) + r(x)
trong đó r(x) là phần dư khi chia f(x) cho g(x). Rõ ràng bậc của r(x) sẽ nhỏ hơn
bậc của g(x). Ta viết r(x) = f(x) mod g(x)
6
Nếu không có phần dư, tức là r(x) = 0, ta nói g(x) là ước của f(x) hay g(x)
chia hết f(x) hay f(x) chia hết cho g(x).
Trong trường hợp g(x) không có ước ngoài 1 và chính nó, thì ta nói g(x) là
đa thức nguyên tố hoặc không rút gọn được.
Việc tìm ước chung lớn nhất của hai đa thức được trình bày trong thuật toán
tương tự như Euclide như sau:
Tìm đa thức ước chung lớn nhất GCD(a(x), b(x))
- c(x) = GCD(a(x), b(x)) nếu c(x) là đa thức bậc lớn nhất mà chia hết cả
a(x),b(x)
- Có thể điều chỉnh thuật toán Euclid’s Algorithm để tìm nó:
EUCLID[a(x), b(x)]
1. A(x) = a(x); B(x) = b(x)
2. if B(x) = 0 return A(x) = gcd[a(x), b(x)]
3. R(x) = A(x) mod B(x)
4. A(x) ¨ B(x)
5. B(x) ¨ R(x)
6. goto 2
Thuật toán tìm nghịch đảo của một đa thức theo một đa thức nguyên tố cùng
nhau với nó, được trình bày tương tự như Ơcolit mở rộng.

Phép toán đa thức với Modulo đa thức
Cho g(x) là đa thức nguyên tố bậc n. Khi đó tập các đa thức bậc nhỏ hơn
bằng n với các phép toán cộng và nhân đa thức theo Modulo của đa thức nguyên tố
g(x) tạo thành trường hữu hạn, gọi là trường Galoa và ký hiệu là GL(p
n
).
Trường Galoa GL(2
n
) gồm 2
n
phần tử. Muốn trường Galoa có số phần tử lớn
tuỳ ý, ta chỉ việc tăng và lấy n thích hợp. Đặc biệt việc tính toán các phép toán cộng
trừ, nhân, chia trên đó rất nhanh và hiệu quả trên các thao tác của các thiết bị phần
cứng.
1.4 LÝ THUYẾT SỐ
1.4.1 Các số nguyên tố
Số nguyên tố là các số nguyên dương chỉ có ước số là 1 và chính nó. Các số
nguyên tố là trung tâm của lý thuyết số. Số các số nguyên tố là vô hạn.
1.4.2 Phân tích ra thừa số nguyên tố
7
Một trong những bài toán cơ bản của số học là phân tích ra thừa số nguyên tố
số a, tức là viết nó dưới dạng tích của các số nguyên tố. Lưu ý rằng phân tích là bài
toán khó hơn rất nhiều so với bài toán nhân các số để nhận được tích.
Ta có kết luận, mọi số nguyên dương đều có thể phân tích duy nhất thành
tích các lũy thừa của các số nguyên tố:

.
Ví dụ: 91=7×13; 3600=2
4
×3

2
×5
2

Thông thường để tìm phân tích trên, ta phải kiểm tra tính chia hết cho các số
nguyên tố từ nhỏ đến lớn và thực hiện phép chia liên tiếp cho các số nguyên tố, rồi
gộp thành lũy thừa của các số nguyên tố.
1.4.3 Các số nguyên tố cùng nhau và GCD
Hai số nguyên dương a và b không có ước chung nào ngoài 1, được gọi là
nguyên tố cùng nhau. Ngược lại có thể xác định ước chung lớn nhất bằng cách
trong các phân tích ra thừa số của chúng, tìm các thừa số nguyên tố chung và lấy
bậc lũy thừa nhỏ nhất trong hai phân tích của hai số đó.
1.4.4 Định lý Ferma (Định lý Ferma nhỏ)
a
p-1
mod p = 1
trong đó p là số nguyên tố và a là số nguyên bất kỳ khác bội của p: GCD(a,p) = 1.
Hay với mọi số nguyên tố p và số nguyên a không là bội của p, ta luôn có a
p
= a mod p. Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên
dương nhỏ hơn p.
1.4.5 Hàm Ole
Cho n là một số nguyên dương. Khi thực hiện phép tính đồng dư n của mọi
số nguyên khác ta nhận được tập đầy đủ các phần dư có thể có là: 0, 1, 2,…, n-1
Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với n và
quan tâm đến số lượng các phần tử như vậy đối với số nguyên dương n cho trước.
Ví dụ. Với n = 10:
- Tập đầy đủ các phần dư là {0,1,2,3,4,5,6,7,8,9}
- Tập rút gọn các phần dư nguyên tố với 10 là {1,3,7,9}
- Số các phần tử của tập rút gọn trên là giá trị của hàm Ole Ф(n). Như vậy,

Ф(10) = 4.
8
Muốn tính Ф(n) việc đếm số các số ngưyên tố cùng nhau với n và nhỏ hơn
n được loại bỏ vì đây là bài toán tốn nhiều công sức. Nói chung có thể tính hàm Ơle
của một số dựa trên biểu thức phân tích ra thừa số của số đó.
- Dễ dàng thấy, nếu p là số nguyên tố Ф(p) = p-1
- Nếu p và q là hai số nguyên tố khác nhau, thì có thể chứng minh được rằng:
Ф(p.q) = (p-1)(q-1)
- Nếu s và t là hai số nguyên tố cùng nhau, thì Ф(s.t) = Ф(s).Ф(t)
1.4.6 Định lý Ole
Định lý Ole là tổng quát hoá của Định lý Ferma
a
Ф
(n)
mod n = 1
với mọi cặp số nguyên dương nguyên tố cùng nhau a và n: gcd(a,n)=1.
1.4.7 Kiểm tra tính nguyên tố
Giả sử cần tìm một số nguyên tố rất lớn. Lấy ngẫu nhiên một số đủ lớn, ta sẽ
kiểm tra xem số đó có phải là số nguyên tố không. Phương pháp truyền thống là
thử bằng phép chia. Tuy nhiên phương pháp này chỉ hiệu quả khi xét các số nhỏ.
Có phương pháp khác, mà ta sẽ xét ở đây, sử dụng các phép kiểm tra tính nguyên tố
thống kê dựa trên các tính chất:
- Mọi số nguyên tố phải thỏa mãn
- Nhưng có một số số không nguyên tố, gọi là giả nguyên tố cũng thoả mãn
tính chất đó.
Cụ thể là phép kiểm tra dựa trên Định lý Ferma như sau: nếu số n cần kiểm
tra tính nguyên tố là số nguyên tố, thì nó sẽ thoã mãn định lý Ferma đối với mọi số
a nhỏ hơn nó a
n-1
mod n = 1. Như vậy, lấy ngẫu nhiên số a và kiểm tra xem nó có

tính chất trên không. Nếu có thì n có thể là số nguyên tố, nếu cần độ tin cậy lớn
hơn, thì ta kiểm tra liên tiếp nhiều lần như vậy với các số ngẫu nhiên a được chọn.
Sau mỗi lần qua được phép thử, xác suất để n là số nguyên tố lại tăng lên. Chú ý:
- nếu b
i
mod n = 1, thì b
2i
mod n = (1)
2
mod n = 1 và
- nếu b
i
mod n = n–1, thì b
2i
mod n = (n-1)
2
mod n = (n
2
–2n +1) mod n = 1
Kiểm tra số n có là số nguyên tố không, ta chỉ cần xét n là lẻ, khi đó n-1 là
chẵn và biểu diễn nó dạng (n–1)= 2
k
.q
Khi đó để tính a
n-1
, ta tính a
q
, sau đó bình phương liên tiếp k lần.
Thuật toán Miller - Rabin
TEST (n) is:

1. Find integers k, q, k > 0, q odd, so that (n–1)= 2
k
.q
9
2. Select a random integer a, 1<a<n–1
3. if a
q
mod n = 1 then return (“maybe prime");
4. for j = 0 to k – 1 do
5. if (a
2
j
q
mod n = n-1)
then return(" maybe prime ")
1. return ("composite")
Xem xét về mặt xác suất: Nếu thuật toán Miller Rabin trả về số “composite”
thì số đó chắc chắn không là số nguyên tố. Ngược lại số đó có thể là số nguyên tố
hoặc giả nguyên tố theo nghĩa nó thoả mãn định lý Fecma với số a < n. Người ta
chứng minh được rằng xác suất để số giả nguyên tố đó không là số nguyên tố là là
¼. Suy ra nếu lặp t phép thử với các lựa chọn ngẫu nhiên khác nhau của số a, thì
khi đó xác suất để số n sau t phép thử là số nguyên tố là: 1-(1/4)
t
1.4.8 Định lý phần dư Trung Hoa
Tính toán trên modulo của một tích các số mod M với M= m
1
m
2
m
k

, trong đó GCD(m
i
, m
j
) = 1, với mọi i khác j. Định lý phần dư Trung Hoa cho phép
làm việc trên từng modulo m
i
riêng biệt. Vì thời gian tính toán các phép toán trên
Modulo tỷ lệ với kích thước của số lấy modulo nên điều đó sẽ nhanh hơn tính toán
trên toàn bộ M.
Có thể triển khai Định lý Trung Hoa theo một số cách như sau:
- Tính toán theo modulo số lớn: Để tính A mod M, với M khá lớn và A là
biểu thức số học nào đó. Trước hết ta cần tính tất cả a
i
= A mod m
i
. Sau đó sử
dụng công thức
trong đó M
i
= M/m
i
C
i
= (M
i
-1
mod m
i
) với 1 ≤ i ≤ k

- Giải hệ phương trình modulo: Cho a
i
= x mod m
i,

với GCD(m
i
, m
j
) = 1,
với mọi i khác j. Khi đó ta cũng áp dụng Định lý phần dư Trung Hoa để tìm x.
1.4.9 Căn nguyên tố
Từ Định lý Ole ta có a
Ф
(n)
mod n=1, với a và n là nguyên tố cùng nhau. Nếu
không có số mũ dương nào nhỏ hơn Ф(n), mà có tính chất như vậy đối với a, thì
khi đó ta gọi a là căn nguyên tố của n. Cụ thể như sau:
10
- Xét m để a
m
mod n = 1, GCD(a,n)=1
Theo Định lý Ơle ta có m = Ф(n) thỏa mãn hệ thức trên, nhưng có thể cũng
có giá trị nhỏ hơn của m < Ф(n) cũng thoả mãn.
Khi đạt được m như vậy, thì nó cũng thoả mãn với bội của m, tức là sẽ có vòng
lặp.
- Nếu giá trị m = Ф(n) là số dương nhỏ nhất thoả mãn công thức trên thì a
được gọi là căn nguyên tố của n.
- Nếu p là số nguyên tố và a là căn nguyên tố của p, thì các luỹ thừa của a:
a

0
, a
1
, …, a
p-2
sẽ sinh ra nhóm modulo p.
Việc tìm các căn nguyên tố a của n sẽ có ích trong việc xét mã công khai.
1.4.10 Logarit rời rạc
Bài toán ngược của bài toán lũy thừa là tìm logarit rời rạc của một số modulo
p, tức là tìm số nguyên x sao cho a
x
= b mod p
Hay còn được viết là x = log
a
b mod p hoặc x = ind
a,p
(b)

Nếu a là căn nguyên tố của p và p là số nguyên tố, thì luôn luôn tồn tại
logarit rời rạc, ngược lại thì có thể không.
CHƯƠNG 2: MẬT MÃ, HÀM BĂM
2.1 HỆ MẬT MÃ KHOÁ CÔNG KHAI
2.1.1 Giới thiệu
Việc ra đời hệ mật mã khoá công khai là một tiến bộ có tính chất bước ngoặt
trong lịch sử mật mã. Khởi đầu là ý tưởng của W. Diffie và M.E. Hellman được
11
trình bày vào năm 1976 tại Hội nghị quốc gia hàng năm của AFIPS (Hoa kỳ). Năm
1977, R.L. Rivest, A. Shamir và L.M. Adleman đề xuất hệ mật mã khoá công khai
RSA mà độ an toàn dựa vào bài toán khó “phân tích số nguyên thành thừa số
nguyên tố”. Cũng vào thời gian đó, M.O. Rabin đề xuất hệ mật mã khoá công khai

dựa vào cùng bài toán số học khó nói trên. Sau đó, nhiều hệ mật mã khóa công khai
ra đời: hệ McEliece năm 1978 dựa trên độ NP-khó của bài toán giải mã đối với các
hệ mã cyclic tuyến tính; hệ Merkle-Hellman dựa trên tính NP- đầy đủ của bài toán
xếp ba lô; hệ mật mã ElGamal dựa trên độ khó của bài toán lôgarit rời rạc. Một số
hệ mật mã xác suất khoá công khai cũng được phát triển sau đó bởi Goldwasser-
Micali và Blum-Goldwasser. Tất cả các hệ mật mã khoá công khai kể trên sẽ được
trình bày trong chương này cùng với một số tính chất liên quan của chúng.
2.1.2 Hệ mật mã RSA [3]
2.1.2.1 Mô tả hệ mật mã RSA
Sơ đồ chung của hệ mật mã khoá công khai được cho bởi
S = (P , C , K , E , D )
trong đó P là tập ký tự bản rõ, C là tập ký tự bản mã, K là tập các khoá, ứng với
mỗi khoá k gồm có hai phần k =(k’, k''), k' là khoá công khai dành cho việc lập mật
mã, còn k'' là khoá bí mật dành cho việc giải mã. Với mỗi ký tự bản rõ x∈P , thuật
toán lập mã E cho ta ký tự mã tương ứng y =E (k', x) ∈ C , và với ký tự mã y thuật
toán giải mã D sẽ cho ta lại ký tự bản rõ x : D (k'', y) = D (k'', E (k', x)) =x.
Để xây dựng hệ mật mã khoá công khai RSA, chọn một số nguyên n =p.q là
tích của hai số nguyên tố lớn, chọn một số e sao cho gcd(e,
φ
(n)) =1, và tính số d
sao cho : e.d ≡ 1(mod
φ
(n)).
Mỗi cặp k =(k’,k''), với k' =(n,e) và k'' = d sẽ là một cặp khoá của một hệ mật
mã RSA cụ thể cho một người tham gia.
Như vậy, sơ đồ chung của hệ mật mã RSA được định nghĩa như trên, trong
đó: P = C = Zn , trong đó n là một số nguyên Blum;
K = {k =(k’,k''): k' =(n,e) và k'' = d, gcd(e,
φ
(n)) =1,

e.d ≡ 1(mod
φ
(n))};
E và D được xác định bởi:
E (k', x) = x
e
modn, với mọi x ∈P ,
D (k'', y) = y
d
modn, với mọi y ∈C .
Để chứng minh định nghĩa trên là đúng, ta phải chứng minh rằng với mọi cặp khoá
k = (k' , k'' ), và mọi x ∈P , ta đều có D (k'', E (k', x)) = x .
12
Thực vậy, do e.d ≡ 1(mod
φ
(n)) ta có thể viết e.d = t .
φ
(n) +1. Nếu x nguyên tố với
n, thì dùng định lý Euler ta có
D (k'', E (k', x)) =
( ) 1 ( )
. (mod ) .
ed t n t n
x x x x n x
φ φ
+
≡ ≡ =
Nếu x không nguyên tố với n , thì do n =p.q , hoặc x chia hết cho p và nguyên tố với
q, hoặc x chia hết cho q và nguyên tố với p, và
φ

(n) =(p -1).(q -1), trong cả hai trường
hợp ta đều có

( ) 1
( ) 1
(mod ),
(mod );
t n
t n
x x p
x x q
φ
φ
+
+


từ đó suy ra
( ) 1
(mod ),
t n
x x n
φ
+

tức D (k'', E (k', x)) =x.
2.1.2.2 Thực hiện hệ mật mã RSA
Để thực hiện hệ mật mã RSA, ngoài việc tính toán hàm E và hàm D, ta còn
phải chọn cho mỗi người tham gia một bộ (n,e,d) để tạo các khoá công khai k' và
khoá bí mật k''. Để đảm bảo độ mật, n =p.q là số nguyên rất lớn (do đó p,q cũng

phải là những số nguyên tố rất lớn); rất lớn có nghĩa là p,q phải có biểu diễn thập
phân cỡ hơn 100 chữ số, do đó n có cỡ hơn 200 chữ số thập phân trở lên.
2.1.2.3 Tính an toàn của hệ mật mã RSA
Hệ mật mã RSA được xem là an toàn, nếu tuân thủ các điều kiện cơ bản: mỗi
người tham gia phải độc lập lựa chọn các tham số n, e,d của riêng mình, chọn n
cũng có nghĩa là chọn các thừa số p,q của n (n =p.q), và do có p,q nên tính được
φ
(n) = (p -1).(q -1), và từ đó tìm được e,d tương đối dễ dàng; nhưng cũng chính vì
vậy mà sau khi đã chọn thì mỗi người tham gia phải giữ tuyệt đối bí mật các giá trị
p,q,d , chỉ công bố khoá công khai (n,e) mà thôi.
Tuy nhiên, đó là điều kiện chung, còn trong thực tế vẫn có thể còn nhiều sơ
hở mà người thám mã có thể lợi dụng để tấn công vào tính bảo mật của các hệ mã
RSA khó mà lường trước hết được.
2.1.3 Hệ mật mã Elgamal [3]
2.1.3.1 Mô tả hệ mật mã Elgamal
Sơ đồ hệ mật mã khoá công khai ElGamal được cho bởi
S = (P , C , K , E , D ),
trong đó: P =
p
Z

, C =
p p
Z Z
∗ ∗
×
, với p là một số nguyên tố;
13
K ={k = (k', k'') : k' =(p,
α

,
β
) , k'' = a ,
β

α
a
mod p}; ở đây k’ là khoá
công khai, k
’’
là khoá bí mật,
α
là một phần tử nguyên thuỷ theo mod p, tức của
p
Z

.
Các thuật toán lập mã
K
e

= E (k' ,.) và giải mã
K
d
′′
= D (k'',.) được xác định
như sau: Với mỗi x∈P =
p
Z


, để lập mật mã cho x trước hết ta chọn thêm một số
ngẫu nhiên d ∈ Z
p-1
rồi tính:
K
e

(x,d ) = (y
1
, y
2
), với y
1
= α
d
mod p, y
2
= x.β
d
mod p.
Với mọi số ngẫu nhiên d bất kỳ, ta đều xem
K
e

(x,d ) là mật mã của x. Và thuật toán
giải mã được xác định bởi
K
d
′′
(y

1
, y
2
) =
1
2 1
.( ) mod .
a
y y p

Các phép lập mật mã và giải mã được xác định như vậy là đúng, vì ta có với
mọi x∈P =
p
Z

và mọi d ∈ Z
p -1
:

K
d
′′
(
K
e

(x,d )) = x.β
d
.


d.a
)
-1
mod p = x.β
d
.
β
-d
mod p = x.
2.1.3.2 Tính an toàn của hệ mật mã Elgamal
Với hệ mật mã ElGamal, mỗi người tham gia tự chọn cho mình các tham số
p,
α
, a, rồi tính
β
, sau đó lập và công bố khoá công khai k' =(p,
α
,
β
), nhưng phải giữ
tuyệt mật khoá bí mật k'' = a. Bài toán biết khoá công khai tìm ra khoá bí mật chính
là bài toán tính lôgarit rời rạc, một bài toán khó cho đến nay chưa có một thuật toán
nào làm việc trong thời gian đa thức giải được. Chú ý là chọn modulo p là số
nguyên tố sao cho p -1 có ít nhất một ước số nguyên tố lớn. Điều đó là thực hiện
được nếu p được chọn là số nguyên tố Sophie Germain.
Do mức độ an toàn của hệ mã ElGamal phụ thuộc vào độ phức tạp của việc
tìm lời giải cho bài toán logarit rời rạc nên cần thiết phải sử dụng số nguyên tố p đủ
lớn (tối thiểu là 512-bit) và q là số nguyên tố 160-bit là ước số của p-1. Nếu sử
dụng số nguyên tố p có 512 bit thì chữ ký được tạo ra sẽ có độ dài 1024-bit và
không phù hợp với các ứng dụng sử dụng thẻ thông minh vốn có nhu cầu sử dụng

chữ ký ngắn hơn.
Ngoài ra, còn có khả năng khoá bí mật k'' = a bị lộ do cẩu thả trong việc sử
dụng số ngẫu nhiên d, đặc biệt là khi để lộ số d được dùng. Thực vậy, nếu để lộ số
d, thì khoá bí mật a được tính ra ngay theo công thức sau đây:
1
2 1
( ) mod( 1).a x ky y p

= − −
14
Như vậy, một người thám mã có khả năng tấn công theo kiểu “biết cả bản
rõ” có thể phát hiện ra khoá a nếu biết d .
Một trường hợp khác làm mất tính an toàn của hệ mật mã ElGamal là việc
dùng cùng một số d cho nhiều lần lập mật mã. Thực vậy, giả sử dùng cùng một số
ngẫu nhiên d cho hai lần lập mã, một lần cho x
1
, một lần cho x
2
, và được các bản
mã tương ứng (y
1
,y
2
) và (z
1
,z
2
). Vì cùng dùng một số d nên y
1
=z

1
. Và do đó theo
công thức lập mã ta có z
2
/y
2
= x
2
/x
1
, tức là x
2
= x
1
.z
2
/y
2
. Như vậy, một người thám
mã, một lần “biết cả bản rõ” dễ dàng phát hiện được bản rõ trong các lần sau.
2.1.3.3 Các hệ mật mã tương tự ElGamal
Hệ mật mã ElGamal được xây dựng dựa trên các yếu tố: một nhóm hữu hạn
cyclic (
p
Z

), một phần tử nguyên thuỷ (
α

p

Z

) sao cho bài toán tính lôgarit rời rạc
là rất khó thực hiện. Vì vậy, nếu có đủ các yếu tố đó thì ta có thể xây dựng các hệ
mật mã tương tự ElGamal. Sơ đồ của một hệ mật mã tựa ElGamal như sau:
S = (P , C , K , E , D ),
trong đó: P =G, C =
G G×
, với G là một nhóm cyclic hữu hạn;
K ={k = (k', k'') : k' =(G,
α
,
β
) , k'' = a ,
β
=
α
a
},
ở đây
α
là một phần tử nguyên thuỷ của nhóm G.
Các thuật toán lập mã
K
e

= E (k' ,.) và giải mã
K
d
′′

= D (k'',.) được xác định
như sau: Với mỗi x∈P =G, để lập mật mã cho x trước hết ta chọn thêm một số
ngẫu nhiên d (0 ≤ d ≤ |G|) rồi tính:
K
e

(x,d ) = (y
1
, y
2
), với y
1
= α
d
, y
2
= x.β
d
.
Với mọi số ngẫu nhiên d bất kỳ, ta đều xem
K
e

(x,d) là mật mã của x. Và thuật toán
giải mã được xác định bởi
K
d
′′
(y
1

, y
2
) = y
2
. (y
1
a
)
-1
mod p. Phép nhân trong các biểu
thức nói trên đều là phép nhân của G.
Có hai nhóm thường được sử dụng để xây dựng các hệ mật mã tương tự
ElGamal là :
1. Nhóm nhân của trường Galois GF(p
n
): Trường Galois GF(p
n
) là trường
của các đa thức với hệ số trong Z
p
lấy theo modulo là một đa thức bậc n bất khả
qui; với phép cộng và phép nhân là phép cộng và phép nhân đa thức theo modulo
đó. Trường có p
n
phần tử, có thể xem mỗi phần tử là một đa thức bậc n -1 với hệ số
thuộc Z
p
= {0,1,2, ,p -1}, thậm chí là một vectơ n chiều mà các thành phần là các
hệ số của đa thức đó. Tập tất cả các đa thức khác 0 lập thành nhóm nhân của trường
GF (p

n
), và người ta chứng minh được rằng nhóm nhân đó là cyclic.
15
Như vậy, nhóm G = GF (p
n
) là nhóm cyclic cấp p
n
-1. ta có thể chọn một
phần tử nguyên thuỷ của nhóm đó, và thiết lập bài toán lôgarit rời rạc tương ứng, từ
đó xây dựng được hệ mật mã tương tự ElGamal.
2. Nhóm cộng của đường cong elliptic (trình bày ở phần sau):
2.1.4 Hệ mật mã Rabin [3]
2.1.4.1 Mô tả hệ mật mã Rabin
Sơ đồ hệ mật mã khoá công khai Rabin được cho bởi
S = (P , C , K , E , D ),
trong đó: P =C = Z
n
, trong đó n là một số nguyên Blum, n =p.q, với p và q là hai
số nguyên tố có tính chất p ≡ 3(mod4), q ≡ 3(mod4),
K = {k = (k', k'') : k' =(n,B), k'' =(p,q), 0≤B ≤ n –1},
các thuật toán E và D được xác định bởi
E (k' ,x) = x (x +B) modn ,
D (k'',y) =
2
mod .
4 2
B B
y n+ −

Mỗi người tham gia chọn cho mình các yếu tố n, B, p, q để lập nên khoá

công khai và khoá bí mật của mình. Với mỗi bộ khoá K, các thuật toán
K
e

= E (k' ,.)

K
d
′′
= D (k'',.) không lập thành một cặp song ánh, cụ thể là
K
e

không phải là một
đơn ánh, vì nếu w là một căn bậc hai của 1 theo mod n thì
K
e

(w(x +
2
B
) -
2
B
) =
K
e

(x), có 4 căn bậc hai của 1 theo modn , tức là ta có 4 giá trị khác nhau của đối số x
cho cùng một giá trị

K
e

(x).
Giải mã :
K
d
′′
= D (k'',.). Đặt C = B
2
/4 +y, ta có
K
d
′′
(y) =
/ 2modC B n

, do
đó để có
K
d
′′
(y), ta cần tính
C
modn, tức cần giải phương trình z
2
≡ C modn.
Tương đương với hệ thống gồm hai phương trình sau đây:
2
2

mod ,
mod .
z C p
z C q







(1)
Vì p và q là các số nguyên tố nên ta có
1
2
1mod
p
C p


,
1
2
1mod
q
C q


. Theo giả thiết, p
≡ 3(mod4) và q ≡ 3(mod4), nên

1 1
4 4
p q+ +
va`
là các số nguyên; và ta có
1 1
2 2
4 4
( ) (mod ), ( ) (mod ).
p q
C C p C C q
+ +
± ≡ ± ≡
16

×