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

Chữ ký số và ứng dụng trong quản lý văn bản điện tử

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 (2.21 MB, 73 trang )


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
o0o






PHÙNG THỊ NGUYỆT







CHỮ KÝ SỐ VÀ ỨNG DỤNG TRONG QUẢN LÝ
VĂN BẢN ĐIỆN TỬ















HÀ NỘI – 2011




ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
o0o






PHÙNG THỊ NGUYỆT






CHỮ KÝ SỐ VÀ ỨNG DỤNG TRONG QUẢN LÝ
VĂN BẢN ĐIỆN TỬ



Ngành: Công nghệ thông tin

Chuyên ngành: Hệ thống thông tin
Mã Số: 60.45.05

LUẬN VĂN THẠC SỸ

Người hướng dẫn khoa học: PGS. TS Đoàn Văn Ban



HÀ NỘI – 2011
1


MỤC LỤC
Danh mục các từ viết tắt 3
Danh mục các hình vẽ 4
MỞ ĐẦU 5
Chương 1. An toàn thông tin, Hệ mã hoá khoá công khai 8
1.1.1 Tại sao phải bảo mật an toàn thông tin 8
1.1.2 Các giải pháp bảo mật an toàn thông tin [2] 8
1.2 Hệ mã hoá 9
1.2.1 Khái niệm mã hoá dữ liệu 9
1.2.2 Phân loại hệ mã hoá 9
1.2.2.1 Hệ mã hoá khóa đối xứng 10
1.2.2.2 Hệ mã hoá khóa công khai 11
1.3 Cở sở toán học dùng trong hệ mật mã [1] 13
1.3.1 Ước chung lớn nhất, bội chung nhỏ nhất 13
1.3.2 Số nguyên tố 15
1.3.3 Quan hệ đồng dư 15
1.3.4 Cấu trúc nhóm 17

1.3.4.1 Phép nhân, phép luỹ thừa, phép chia 17
1.3.4.2. Phần tử sinh 18
1.4. Một số hệ mã hoá khoá công khai 19
1.4.1 Hệ mã hoá khoá công khai RABIN [1] 19
1.4.1.1. Sơ đồ 19
1.4.1.2. Ví dụ minh họa 20
1.4.2. Hệ mã hóa khoá công khai ELGAML [2] 23
1.4.2.1. Sơ đồ 23
1.4.2.2 Ví dụ minh hoạ 24
1.4.3 Hệ mã hóa khoá công khai RSA 24
1.4.3.1 sơ đồ 24
1.4.3.2 Ví dụ minh hoạ 25
1.4.3.3 Độ an toàn 26
1.5 Kết luận chương 26
Chương 2. Chữ ký số 28
2.1 Giới thiệu 28
2.2 Khái niệm 28
2.2.1 Khái niệm 28
2.2.2 Sơ đồ chữ ký số [2] 28
2.2.3 Các ưu điểm của chữ ký số 29
2.2.4 Quá trình thực hiện chữ ký số khóa công khai 30
2.3 Hàm băm [2, 6] 31
2.3.1 Khái niệm 31
2.3.2 Các hàm băm thông dụng 32
2.3.2.1 Thuật toán hàm băm MD5 32
2.3.2.2 Hàm băm SHS/ SHA 34
2.4 Thuật toán chữ ký số [1, 2, 7] 35
2



2.4.1 Thuật toán chữ ký RSA 35
2.4.1.1 Sơ đồ 35
2.4.1.2 Ví dụ minh hoạ 36
2.4.1.3 Độ an toàn của chữ ký RSA 36
2.4.2 Thuật toán chữ ký DSA/ DSS 37
2.4.2.1 Sơ đồ 37
2.4.2.2 Ví dụ 38
2.4.2.3 Độ an toàn của chữ ký DSA 38
2.5 Kết luận chương 39
Chương 3. Chứng thực khóa công khai 41
3.1 Giới thiệu 41
3.2 Chứng thực khoá công khai 41
3.2.1 Khái niệm 41
3.2.2 Các nhà cung cấp dịch vụ chữ ký số, chứng thực chữ ký số tại Việt Nam 43
3.3. Chứng thực khóa công khai X.509 [3] 44
3.3.1. Sự chứng thực của người dùng 45
3.3.1.1. Giới thiệu khuôn dạng chứng chỉ X.509 45
3.3.1.2. Sự chứng thực người dùng 47
3.3.2 Huỷ bỏ sự chứng thực 49
3.3.3. Các thủ tục chứng thực 50
3.4 Kết luận chương 51
Chương 4. Xây dựng chương trình ứng dụng 53
4.1 Giới thiệu 53
4.2 Các chức năng của chương trình 53
4.3. Cài đặt chương trình 58
4.3.1. Môi trường xây dựng ứng dụng 58
4.3.2 Quản trị hệ thống Admin 59
4.3.3 Người sử dụng 62
4.4 Kết luận chương 68
Kết quả và hướng phát triển 69

Danh mục các tài liệu tham khảo 71








3



Danh mục các từ viết tắt
MD5 Message Digest 5
CA Certificate Authority
RSA Rivest, Shamir, Adleman
SHA Secure Hash Algorithm
DSS Digital Signature Standard
DSA Digital Signature Algorithm
PKI public-key infrastructures
PEM Privary Enhanced Mail
ITU International Telecommunication Union
online OCSP Online Certificate Status Protocol
certificate revocation list CRL
SHS Secure Hash Standard
















4


Danh mục các hình vẽ
Hình 1.1 Quá trình thực hiện cơ chế mã hoá 10
Hình 1.2. Quá trình thực hiện mã hoá khoá công khai 12
Hình 2.1. Sơ đồ mô tả quá trình ký và gửi các tệp văn bản 30
Hình 2.2. Sơ đồ mô tả quá trình nhận các tệp văn bản 31
Hình 2.3. Minh họa hàm băm 32
Hình 2.4: Đặc điểm của các thuật toán băm SHA 35
Hình 3.1. Khuôn dạng chứng chỉ X.509 phiên bản 3 46
Hình 3.2 Ví dụ minh hoạ sơ đồ thứ tự phân cấp 49
Hình 3.3. Các thủ tục chứng thực 51
Hình 4.1: Giao diện chương trình ứng dụng 54
Hình 4.2: Thực đơn Hệ thống của chương trình 54
Hình 4.3: Thực đơn Tệp của chương trình 55
Hình 4.4: Thực đơn Chỉnh sửa của chương trình 55
Hình 4.5: Thực đơn Chức năng của chương trình 56
Hình 4.6 và hình 4.7: Admin thực hiện Đăng nhập hệ thống 59

Hình 4.7 và hình 4.8: Admin thực hiện Đăng ký người dùng mới 60
Hình 4.9, hình 4.10 và hình 4.11: Admin thực hiện Tạo khóa cho người dùng mới
61
Hình 4.12 và hình 4.13: Admin thực hiện Quản lý người dùng 62
Hình 4.14: Thực hiện mở tệp mới và soạn thảo văn bản 63
Hình 4.15: Người sử dụng thực hiện ký và lưu văn bản 63
Hình 4.16 và hình 4.17: Thực hiện mở tệp Giấy triệu tập nhận được 64
Hình 4.18: Chọn File khoá công khai để xác thực 65
Hình 4.19 và hình 4.20: Thực hiện tải khóa công khai theo Tên tài khoản (theo
User Name của người sử dụng) 65
Hình 4.21: Chọn nơi lưu khoá công khai tải về 66
Hình 4.22: Xác thực văn bản theo khoá công khai tải về 66
Hình 4.23: Thông báo xác thực văn bản không bị giả mạo và Thông tin người ký 66
Hình 4.24: Thông báo văn bản đã bị giả mạo trên đường truyền 67
Hình 4.25 và hình 4.26: Thông báo văn bản không bị thay đổi nội dung hoặc bị giả
mạo trên đường truyền và người ký không có trong cơ sở dữ liệu quản lý. 67






5


MỞ ĐẦU

1. Lý do chọn đề tài
Cùng với sự phát triển của công nghệ thông tin và truyền thông, giao dịch điện tử
đã và đang phát triển mạnh mẽ trên thế giới thay thế dần các giao dịch truyền thống. Rất

nhiều nước có chủ trương vừa phát triển các hoạt động cung ứng dịch vụ điện tử, vừa
xây dựng hệ thống pháp luật đầy đủ, minh bạch để đảm bảo giá trị pháp lý của các thông
điệp điện tử và giao dịch điện tử. Tại Việt Nam, giao dịch điện tử đã được áp dụng tại
các lĩnh vực thuế, hải quan, thương mại điện tử,
Giao dịch điện tử là một lĩnh vực tương đối mới tại Việt Nam, xuất hiện cùng với
sự phổ cập mạng Internet và máy tính từ cuối những năm 1990 đầu những năm 2000. Qua
quá trình hình thành và phát triển, lĩnh vực giao dịch điện tử tại Việt Nam đã được đặc
biệt quan tâm phát triển. Khung pháp lý cho lĩnh vực này đã từng bước được hoàn thiện,
Quốc hội đã thông qua Luật thương mại, Luật giao dịch điện tử, Luật công nghệ thông tin.
Thủ tướng chính phủ đã ban hành Quyết định số 1073/QĐ-TTg ngày 12/7/2010 Phê duyệt
kế hoạch tổng thể phát triển thương mại điện tử giai đoạn 2011 – 2015 Việc ban hành
các văn bản pháp lý này đã thể hiện rõ sự quyết tâm của Nhà nước trong việc thúc đẩy
nhanh, mạnh các giao dịch điện tử, tạo động lực cho sự phát triển của nền kinh tế.
Trong các hoạt động của giao dịch điện tử thì việc đảm bảo an toàn, an ninh
thông tin, dữ liệu cho người dùng là rất cần thiết và là ưu tiên hàng đầu. Theo kết quả
khảo sát thương mại điện tử Việt Nam 2010 của Bộ Công thương, trong 7 trở ngại khiến
thương mại điện tử chưa phát triển thì vấn đề an ninh, an toàn thông tin chiếm vị trí gần
cao nhất (chỉ sau trở ngại về môi trường xã hội và tập quán kinh doanh). Các phương
pháp mã hóa, chữ ký số, chứng chỉ số, cơ sở hạ tầng khóa công khai và các ứng dụng
của chữ ký số, chứng chỉ số trong các giao dịch điện tử là một trong những giải pháp
giải quyết vấn đề này. Từ thực tế này, tôi chọn đề tài: “Chữ ký số và ứng dụng trong quản
lý văn bản điện tử”. Đây sẽ là đề tài có ý nghĩa thực tế rất lớn bởi vì sau khi hành làng
pháp lý cho giao dịch điện tử được xây dựng, hạ tầng kỹ thuật và nhân lực hình thành
thì mục tiêu tiếp theo sẽ là triển khai giao dịch điện tử sâu rộng đến toàn bộ các hoạt
động của nền kinh tế mà song hành cùng đó là vấn đề bảo đảm an toàn, an ninh thông
tin trong các hoạt động. Trong hoàn cảnh Việt Nam hiện nay, việc phát triển các giao
dịch điện tử chậm trễ một phần là do vấn đề an toàn, an ninh thông tin trong giao dịch
chưa tạo được sự quan tâm đúng mức. Luận văn sẽ tập trung phân tích áp dụng các giải
6



pháp kỹ thuật như mã hóa, chữ ký số, chứng chỉ số nhằm đảm bảo an toàn, an ninh cho
các giao dịch điện tử, thúc đẩy giao dịch điện tử tại Việt Nam tiếp tục phát triển.
2. Mục tiêu nghiên cứu
 Nghiên cứu các giải pháp mã hoá để bảo mật thông tin và những phương pháp, kỹ
thuật tạo chữ kí số trên các tài liệu, văn bản điện tử để xác thực nguồn gốc tài liệu
hay văn bản của người gửi.
 Xây dựng một chương trình ứng dụng có khả năng bảo mật nội dung thông tin dưới
dạng văn bản điện tử, tạo chữ ký trên văn bản điện tử cần thiết và chứng thực chữ ký
số trên văn bản điện tử; góp phần phục vụ những người quản lý đơn vị trao đổi thông
tin mật với các đối tác, điều hành công việc từ xa.
Luận văn sẽ tập trung nghiên cứu và làm rõ hơn về ý tưởng, cơ sở toán học, thuật
toán và độ phức tạp của mã hoá nói chung và của mã hoá khoá công khai nói riêng.
3. Phương pháp nghiên cứu
Nghiên cứu các tài liệu về mã hoá, hệ mật mã của các tác giả trong và ngoài nước,
các bài báo, thông tin trên mạng, …
Nghiên cứu ngôn ngữ lập trình hướng đối tượng Visual basic 6, Visual C
#
2008 để
viết một ứng dụng về chữ ký số.
4. Tổng quan luận văn
Luận văn được trình bày trong 4 chương, phần kết quả và hướng phát triển.
Chương 1 An toàn thông tin, Hệ mã hoá khoá công khai
Chương này giới thiệu tổng quan về an toàn thông tin và hệ mã hoá khoá công
khai. Giới thiệu cơ sở toán học và một số hệ mã hoá khoá công khai phổ biến như Rabin,
Elgmal, RSA. Trong đó giới thiệu chi tiết về hệ mã hoá khoá công khai RSA về cách mã
hoá, giải mã và độ an toàn của thuật toán.
Chương 2 Chữ ký số
Chương này giới thiệu về khái niệm chữ ký số và sơ đồ chữ ký số tổng quan. Sau
đó giới thiệu một số hàm băm phổ biến dùng trong thuật toán chữ ký số như MD5, SHA -

1. Tiếp đó giới thiệu chi tiết về hai thuật toán chữ ký số được sử dụng rộng rãi hiện nay là
RSA và DSA.
Chương 3. Chứng thực
Chương này giới thiệu chứng thực số - chứng chỉ điện tử và giới thiệu chi tiết về
chứng thực số X.509.
Chương 4. Xây dựng chương trình ứng dụng
7


Từ cơ sở lý thuyết đã trình bày ở trên, chương này của luận văn tiến hành cài đặt
thuật toán ký RSA. Chữ ký được hình thành trên cơ sở kết hợp thuật toán băm MD5 với
thuật toán ký RSA.
5. Các kí hiệu dùng trong luận văn
P Là tập hữu hạn các văn bản có thể.
A Là tập hữu hạn các chữ ký có thể.
K Là tập hữu hạn các khoá có thể.
S Là tập các thuật toán ký.
V Là tập các thuật toán kiểm thử.
C Là tập hữu hạn các bản mã có thể;
E Là tập hợp các hàm mã hóa có thể;
D Là tập các hàm giải mã có thể;
e
k
Thuật toán mã hoá

d
k
Thuật toán giải mã
gcd Ước chung lớn nhất
lcm Bội chung nhỏ nhất

Sig
k
Thuật toán ký
Ver
k
Thuật toán kiểm tra chữ ký














8


Chương 1. An toàn thông tin, Hệ mã hoá khoá công khai

1.1 An toàn thông tin
1.1.1 Tại sao phải bảo mật an toàn thông tin
Ngày nay với sự phát triển bùng nổ của công nghệ thông tin, hầu hết các thông tin
của doanh nghiệp như chiến lược kinh doanh, các thông tin về khách hàng, nhà cung cấp,
tài chính, mức lương nhân viên,… đều được lưu trữ trên hệ thống máy tính. Cùng với sự

phát triển của doanh nghiệp là những đòi hỏi ngày càng cao của môi trường kinh doanh
yêu cầu doanh nghiệp cần phải chia sẻ thông tin của mình cho nhiều đối tượng khác nhau
qua Internet hay Intranet. Việc mất mát, rò rỉ thông tin có thể ảnh hưởng nghiêm trọng
đến tài chính, danh tiếng của công ty và quan hệ với khách hàng.
Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp có thể dẫn
đến mất mát thông tin, thậm chí có thể làm sụp đổ hoàn toàn hệ thống thông tin của doanh
nghiệp. Tóm lại, có bốn yêu cầu cơ bản về bảo mật truyền thông:
 Đảm bảo tin cậy: Các nội dung thông tin không bị theo dõi hoặc sao chép bởi
những thực thể không được uỷ thác.
 Đảm bảo toàn vẹn: Các nội dung thông tin không bị thay đổi bởi những thực thể
không được uỷ thác.
 Sự chứng minh xác thực: Không ai có thể tự trá hình như là một bên hợp pháp
trong quá trình trao đổi tin.
 Không thể thoái thác trách nhiệm: Người gửi tin không thể thoái thác về những sự
việc và những nội dung thông tin mà thực tế họ đã gửi đi.
1.1.2 Các giải pháp bảo mật an toàn thông tin [2]
Trước những nguy cơ hiểm hoạ về an toàn thông tin, phần này đề xuất các giải
pháp bảm mật về an toàn thông tin:
a) Phương phá p che giấ u, bảo đảm toàn vn và xác thực thông tin.
 ”Che” dữ liệ u (Mã hóa): Thay đổ i hì nh dạ ng dữ liệ u gố c, ngườ i khá c khó nhậ n ra.
 “Giấ u” dữ liệ u: Cấ t giấ u dữ liệ u này trong môi trường dữ liệu khá c.
 Bảo đảm toàn vn và xác thực thông tin.
9


K thut: Mã hóa, Hàm băm, Giấ u tin, Ký số, Thủy ký, Giao thứ c bả o toà n thông tin ,
Giao thứ c xá c thự c thông tin,
b) Phương phá p kiể m soá t lố i và o ra củ a thông tin.
 Kiể m soá t, ngăn chặ n cá c thông tin và o ra Hệ thố ng má y tí nh.
 Kiể m soá t, cấ p quyề n sử dụ ng cá c thông tin trong Hệ thố ng má y tí nh.

 Kiể m soá t, tìm diệt “sâu bọ” (Virus, “Trojan horse”, ) vào ra Hệ thống máy tính.
K thut: Mậ t khẩ u (PassWord), Tườ ng lử a (FireWall), Mạng riêng ảo (Virtual Private
Network), Nhận dạng, Xác thực thực thể, Cấ p quyề n hạ n.
c) Phát hiện và xử lý các l hổng trong An toàn thông tin.
 Các “l hổng” trong cá c Thuậ t toá n hay giao thứ c mậ t mã , giấ u tin.
 Các “l hổng” trong cá c Giao thứ c mạ ng.
 Các “lỗ hổ ng” trong cá c Hệ điề u hà nh mạ ng.
 Các “lỗ hổ ng” trong cá c ứng dụ ng.
d) Phố i hợ p cá c phương phá p.
Xây dự ng “hành lang”, “đườ ng đi” An toà n cho thông tin gồ m 3 phầ n:
 Hạ tầng mật mã khó a công khai (Public Key InfraStructure - PKI).
 Kiể m soá t lố i và o - ra: Mậ t khẩ u, Tườ ng lử a, Mạng riêng ảo, Cấ p quyề n hạ n.
 Kiể m soá t và Xử lý cá c lỗ hổ ng.
1.2 Hệ mã hoá
1.2.1 Khái niệm mã hoá dữ liệu
Mã hoá dữ liệu là mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất
cứ ai, ngoại trừ những ai được phép đọc. Mã hóa sử dụng thuật toán và khóa để biến đổi
dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext) sang hình thức mật mã vô nghĩa
(code hay ciphertext). Chỉ có những ai có thông tin giải mã thì mới giải mã và đọc được
dữ liệu.
1.2.2 Phân loại hệ mã hoá
Có nhiều cách phân loại hệ mã hoá, sau đây xin giới thiệu một cách đó là: Phân
loại mã hoá theo đặc trưng của khoá. Theo cách phân loại nay thì hệ mã hoá được chia
thành hai loại đó là:
 Hệ mã hóa khóa đối xứng (có khoá riêng và khoá chung trùng nhau).
 Hệ mã hóa khóa phi đối xứng (Khóa công khai có khoá riêng và khoá chung khác
nhau).
10



1.2.2.1 Hệ mã hoá khóa đối xứng
Hệ mã hoá khóa đối xứng là Hệ mã hóa mà biết được khóa mã hoá thì có thể “dễ”
tính được khóa giải mã và ngược lại.
Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhận phải
thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã. Sau đó, bên gửi sẽ mã
hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông điệp đã mã hoá
cho bên nhận. Bên nhận sau khi nhận được thông điệp đã mã hoá sẽ sử dụng chính khoá
bí mật mà hai bên thoả thuận để giải mã và lấy lại bản rõ (Plaintext).








Hình 1.1 Quá trình thực hiện cơ chế mã hoá
Hình 1.1 là quá trình tiến hành trao đổi thông tin giữa bên gửi và bên nhận thông
qua việc sử dụng phương pháp mã hoá khoá đối xứng. Trong quá trình này, thì thành
phần quan trọng nhất cần phải được giữ bí mật chính là khoá. Việc trao đổi, thoả thuận về
thuật toán được sử dụng trong việc mã hoá có thể tiến hành một cách công khai, nhưng
bước thoả thuận về khoá trong việc mã hoá và giải mã phải tiến hành bí mật. Chúng ta có
thể thấy rằng thuật toán mã hoá khoá đối xứng sẽ rất có lợi khi được áp dụng trong các cơ
quan hay tổ chức đơn lẻ. Nhưng nếu cần phải trao đổi thông tin với một bên thứ ba thì
việc đảm bảo tính bí mật của khoá phải được đặt lên hàng đầu.
Mã hoá đối xứng có thể được phân thành hai loại:
 Loại thứ nhất tác động trên bản rõ theo từng nhóm bits. Từng nhóm bits này được
gọi với một cái tên khác là khối (Block) và thuật toán được áp dụng gọi là mã hoá
khối( Block Cipher). Theo đó, từng khối dữ liệu trong văn bản ban đầu được thay
thế bằng một khối dữ liệu khác có cùng độ dài. Đối với các thuật toán ngày nay thì

kích thước chung của một khối là 64 bits.
 Loại thứ hai tác động lên bản rõ theo từng bit một. Các thuật toán áp dụng được
gọi là mã hoá dòng (Stream Cipher). Theo đó, dữ liệu của văn bản được mã hoá từng
bit một. Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuật toán mã hoá
11


khối và nó thường được áp dụng khi lượng dữ liệu cần mã hoá chưa biết trước
Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES
(3DES), RC4, AES…
 DES: viết tắt của Data Encryption Standard. Với DES, bản rõ (Plaintext) được
mã hoá theo từng khối 64 bits và sử dụng một khoá là 64 bits, nhưng thực tế thì
chỉ có 56 bits là thực sự được dùng để tạo khoá, 8 bits còn lại dùng để kiểm tra
tính chẵn, lẻ. DES là một thuật toán được sử dụng rộng rãi nhất trên thế giới.
Hiện tại DES không còn được đánh giá cao do kích thước của khoá quá nhỏ 56
bits, và dễ dàng bị phá vỡ.
 Triple DES (3DES): 3DES cải thiện độ mạnh của DES bằng việc sử dụng một
quá trình mã hoá và giải mã sử dụng 3 khoá. Khối 64-bits của bản rõ đầu tiên sẽ
được mã hoá sử dụng khoá thứ nhất. Sau đó, dữ liệu bị mã hóa được giải mã
bằng việc sử dụng một khoá thứ hai. Cuối cùng, sử dụng khoá thứ ba và kết quả
của quá trình mã hoá trên để mã hoá. C = EK3(DK2(EK1(P))).
P = DK1(EK2(DK3(C)))
 AES: Viết tắt của Advanced Encryption Standard, được sử dụng để thay thế cho
DES. Nó h trợ độ dài của khoá từ 128 bits cho đến 256 bits.
Do đó hệ mã hoá khoá đối xứng có ưu điểm và nhược điểm sau:
a. Ưu điểm
Giải mã và mã hoá “nhanh” hơn hệ mã hoá khoá công khai
b. Nhược điểm
 Hệ mã hoá khoá đối xứng “không an toàn” so với hệ mã hoá khoá công khai bởi lý
do sau:

Người mã hoá và người giải mã phải có “chung” một khoá. Khóa phải được giữ bí
mật tuyệt đối, vì biết khoá này “dễ” xác định được khoá kia và ngược lại.
 Vấn đề thỏa thuận khoá và quản lý khóa chung là khó khăn và phức tạp. Người gửi
và người nhận phải luôn thống nhất với nhau về khoá. Việc thay đổi khoá là rất
khó và dễ bị lộ. Khóa chung phải được gửi cho nhau trên kênh an toàn.
Ngoài ra với hệ mã hoá khoá đối xứng không thể thực hiện chữ ký điện tử (sẽ được
trình bày trong chương 2) do chỉ có một khoá chung duy nhất. Vì vậy không thể dùng
trong giao dịch điện tử.
1.2.2.2 Hệ mã hoá khóa công khai
Hệ mã hoá khoá công khai là hệ mã hoá có khoá lập mã và khoá giải mã khác
nhau, biết được khoá này “khó” tính được khoá kia.
12


Hệ mã hoá này được gọi là hệ mã hoá khoá công khai vì khoá lập mã được công
khai (gọi là khoá công khai – Public key), Khoá giải mã giữ bí mật (gọi là khoá riêng –
Private key). Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ
biết khóa công khai.









Hình 1.2. Quá trình thực hiện mã hoá khoá công khai
Quá trình truyền và sử dụng mã hoá khoá công khai được thực hiện như sau:
 Bên gửi yêu cầu cung cấp hoặc tự tìm khoá công khai của bên nhận trên một server

chịu trách nhiệm quản lý khoá.
 Sau đó hai bên thống nhất thuật toán dùng để mã hoá dữ liệu, bên gửi sử dụng
khoá công khai của bên nhận cùng với thuật toán đã thống nhất để mã hoá thông
tin được gửi đi
 Khi nhận được thông tin đã mã hoá, bên nhận sử dụng khoá bí mật của mình để
giải mã và lấy ra thông tin ban đầu.
Vậy là với sự ra đời của Mã hoá công khai thì khoá được quản lý một cách linh hoạt
và hiệu quả hơn. Người sử dụng chỉ cần bảo vệ khoá bí mật.
Một số hệ mã hóa khóa công khai phổ biến như RSA, Rabin, Egmal,
Do đó hệ mã hoá khoá công khai có ưu điểm và nhược điểm sau:
a. Ưu điểm
 Đơn giản trong việc lưu chuyển khóa: Chỉ cần đăng ký một khóa công khai và mọi
người sẽ lấy khóa này về để trao đổi thông tin với người đăng ký. Vì vậy không
cần kênh bí mật để truyền khóa.
13


 Mi người chỉ cần một cặp khóa công khai – khóa bí mật là có thể trao đổi thông
tin với tất cả mọi người.
 Là tiền đề cho sự ra đời của chữ ký điện tử và các phương pháp chứng thực điện tử
b. Nhược điểm
Mã hóa và giải mã chm hơn hệ mã hóa khóa đối xứng.
1.3 Cở sở toán học dùng trong hệ mật mã [1]
1.3.1 Ước chung lớn nhất, bội chung nhỏ nhất
Số nguyên d được gọi là ước chung của các số nguyên a
1
, a
2
, …, a
n

, nếu nó là
ước của tất cả các số đó.
Một ước chung d >0 của các số nguyên a
1
, a
2
, …, a
n
, trong đó mọi ước chung của
a
1
, a
2
, …, a
n
đều là ước của d, thì d được gọi là ước chung lớn nhất (UCLN) của a
1
, a
2
,
…, a
n
. Ký hiệu d = gcd (a
1
, a
2
, …, a
n
) hay d = UCLN(a
1

, a
2
, …, a
n
). Nếu gcd (a
1
, a
2
, …,
a
n
) = 1, thì các số a
1
, a
2
, …, a
n
được gọi là nguyên tố cùng nhau.
Số nguyên m được gọi là bội chung của các số nguyên a
1
, a
2
, …, a
n
, nếu nó là bội
của tất cả các số đó.
Một bội chung m >0 của các số nguyên a
1
, a
2

, …, a
n
, trong đó mọi bội chung của
a
1
, a
2
, …, a
n
đều là bội của m, thì m được goi là bội chung nhỏ nhất (BCNN) của a
1
, a
2
,
…, a
n
. Ký hiệu m = lcm (a
1
, a
2
, …, a
n
) hay m = BCNN (a
1
, a
2
, …, a
n
).
Ví dụ: Cho a =20, b =25, gcd (20, 25) = 5, lcm (20, 25) = 100.

Hai số 20 và 13 là nguyên tố cùng nhau, vì gcd (20, 13) = 1
Thuật toán Euclide tìm ước 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 mod b, a ←b , b ← r.
2. Cho ra kết quả (a).
Ví dụ: Tìm gcd (528, 234) bằng thuật toán Euclide
Ta có bảng mô phỏng kết quả sau:




14


a
b
r
528
234

234
60
60
60
54
54
54
6

6
6
0
0
Kết luận gcd (528, 234) = 6.
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:
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 div b, r ← a mod b, x ← x
2
- q*x
1
, y ← y
2
- q*y
1

.
3.2. 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).
Ví dụ: Dùng thuật toán Euclide mở rộng tính gcd (528, 234)
Ta có bảng mô phỏng sau:
a
b
q
r
x
y
x
1
y

2

y
1

y
2

528
234




0
1
1
0
234
60
2
60
1
-2
1
0
-2
1
60
54

3
54
-3
7
-3
1
7
-2
54
6
1
6
4
-9
4
-3
-9
7
6
0
9
0
-39
88
-39
4
88
-9
Ta có thể kiểm chứng lại rằng sau mi lần thực hiện chu trình gồm hai lệnh 3.1 và
3.2, các giá trị x, y, r thu được luôn thoả mãn 532*x + 234*y = r. Khi kết thúc các vòng

lặp (ứng với giá trị b = 0), thực hiện tiếp lệnh 4 ta thu được kết quả d = 6, x = 4 và y = -9,
cặp số (4, -9) thoả mãn: 528*4 + 234*(-9) = 6.
528 = 2*234 + 60
234 = 3*60 + 54
60 = 1* 54 + 6
54 = 9*6 + 0
15


Thuật toán Euclide tìm ước chung lớn nhất của hai số là cơ sở trong bài toán phân
tích một số nguyên n thành thừa số các số nguyên tố
1.3.2 Số nguyên tố
Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có hai ước là 1 và chính nó.
Số nguyên tố có vai trò và ý nghĩa to lớn trong số học và lý thuyết mật mã. Bài
toán kiểm tra tính nguyên tố của một số nguyên dương n và phân tích số n thành thừa số
nguyên tố là các bài toán rất được quan tâm.
Phương pháp kiểm tra tính nguyên tố: Phương pháp cổ điển và phương pháp
„xác suất‟.
Phương pháp phân tích số nguyên n thành thừa số các số nguyên tố thực chất
là bài toán tìm ước chung lớn nhất của hai số.
Cơ sở toán học chung cho hệ mã hóa khóa công khai đó là các định lý về số
nguyên tố như định lý Fecma, định lý Euler, định lý số dư Trung Hoa,
1.3.3 Quan hệ đồng dư
Tất cả các bài toán trong hệ mã hóa khóa công khai đều dùng đến quan hệ đồng dư.
Đầu tiên ta xét khái niệm về đồng dư theo modulo.
Cho các số nguyên a, b, m (n > 0). Ta nói rằng a và b “đồng dư” với nhau theo
modulo m, nếu chia a và b cho m nhận được cùng một số dư (hoặc a – b chia hết cho m).
Ký hiệu: a ≡ b (mod m).
Ví dụ:
23 ≡ 11 (mod 4) vì chia 23 và 11 cho 4, được cùng số dư là 3.

Phương trình đồng dư tuyến tính
Phương trình đồng dư tuyến tính có dạng: a*x = b (mod m ) (1)
Trong đó a, b, n là các số nguyên, m > 0, x là ẩn số. Phương trình (1) có nghiệm khi và
chỉ khi d = gcd (a, m ) / b, và khi đó nó có đúng d nghiệm theo modulo m.
Bây giờ ta xét hệ thống các phương trình đồng dư tuyến tính.
16


 
 
 










nn
max
max
max
mod

mod
mod
22

11

Ta ký hiệu: m = m
1
*m
2
* *m
k
, M
i
= m / m
i
. Ta có định lý sau đây:
Định lý Số dư Trung Hoa
Định lý số dư Trung Hoa là tên gọi do người phương Tây đặt cho định lý này.
Người Trung Hoa gọi nó là bài toán Hàn Tín điểm binh. Sử ký Tư Mã Thiên viết rằng khi
Hàn Tín điểm quân số, ông cho quân lính xếp hàng 3, hàng 5, hàng 7 rồi báo cáo số dư.
Từ đó ông tính chính xác quân số đến từng người.
Gần đây, định lý số dư Trung Hoa có nhiều ứng dụng trong các bài toán về số
nguyên lớn áp dụng vào lý thuyết mật mã.
Định lý: Giả sử n > 1 là số nguyên dương và m
1
, m
2
, , m
n
là n số nguyên lớn hơn
1 đôi một nguyên tố cùng nhau. Đặt M = m
1
* m

2
* * m
n
. Cho trước các số nguyên a
1
,
a
2
, , a
n
khi đó tồn tài duy nhất một số nguyên x (0  x < M) thoả mãn các phương trình
đồng dư sau đây:
 
 
 










nn
max
max
max
mod


mod
mod
22
11

Bản chất của bài toán Hàn Tín điểm binh là việc giải hệ phương trình đồng dư bậc
nhất:
 
 
 










nn
max
max
max
mod

mod
mod
22

11

Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo mođun
M = m
1
*m
2
* *m
k
, trong đó m
1
, m
2
, , m
n
đôi một nguyên tố cùng nhau. Trong bài toán
Hàn Tín n = 3 và m
1
= 3, m
2
= 5, m
3
= 7.
Ta xét phương trình đồng dư bậc hai có dạng đơn giản sau: x
2
≡ a (mod m)
17


Trong đó m là một số nguyên dương, a là số nguyên với gcd (a, m) =1, và x là ẩn

số. Phương trình đó không phải bao giờ cũng có nghiệm, khi nó có nghiệm thì ta nói a là
một thặng dư bậc hai mod m ;
Bây giờ ta xét việc giải phương trình đồng dư bậc hai: x
2
≡ a (mod m) (2)
trong một trường hợp đặc biệt khi m = p là số nguyên tố có dạng p = 4*n +3, tức p
đồng dư với 3 theo mod 4, và a là một số nguyên nguyên tố với p. Theo tiêu chuẩn Euler
ta biết phương trình (2) có nghiệm khi và chỉ khi a
(p-1)/2
≡ 1 (mod p). Khi đó ta có:
a
(p-1)/2
≡ a (mod p)
a
2(n+1)
≡ a (mod p)
Do đó x = ±a
n +1
(mod p) là hai nghiệm của phương trình (2).
1.3.4 Cấu trúc nhóm
Phần lớn các tính toán liên quan đến hệ mật mã khoá công khai và tiền điện tử,
chúng ta thường sử dụng tập các số nguyên từ 0 tới p-1, trong đó p là số nguyên tố lớn.
Những số này cùng với hai phép toán: phép nhân * và phép luỹ thừa sẽ tạo thành các cấu
trúc nhóm có những tính chất quan trọng được sử dụng để mật mã và bảo mật tiền điện tử.
1.3.4.1 Phép nhân, phép luỹ thừa, phép chia
Xét tập Z(p)
*
= {1, 2, 3, 4, , p-2, p-1}. Dễ nhận thấy, nếu ta nhân hai số bất kỳ
trong tập này với nhau, sau đó lấy số dư theo modulo p, thì kết quả là một số vẫn nằm
trong tập đó. Nghĩa là Z(p)

*
đóng với phép nhân.
Mặt khác, nếu ta lấy một số bất kỳ trong tệp đó, ví dụ số k, khi đó sẽ tồn tại một số
khác, ký hiệu là k
-1
, sao cho k * k
-1
= 1 mod p. Nghĩa là mọi số nguyên trong tập này đều
có phần tử nghịch đảo bội (multiplicative inverse).
Hai tính chất này khẳng định rằng Z(p)
*
là một nhóm với phép nhân mod p. Tương
tự, chúng ta có thể khẳng định nó cũng là nhóm với phép luỹ thừa, vì phép luỹ thừa thực
chất là bội của các phép nhân
Ví dụ 6
3
= 6 * 6 * 6 (Lưu ý: 0 được loại khỏi Z(p)
*
bởi vì nó không có phần tử
nghịch đảo bội. Nếu ta bổ sung 0 vào Z(p)
*
, thì chúng ta nhận được Z(p), chứa tất cả các
số dư theo mod p, kể cả 0)
Giả sử ta có Z(11)
*
= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Nếu nhân 5 với 8, chúng ta có
5*8 = 40 ≡ 7 mod 11, tất nhiên 7  Z(11)
*
. Chúng ta cũng có 5 * 9 = 45 ≡ 1 mod 11, nên
9 là nghịch đảo của 5, hoặc ngược lại. Tương tự 2 và 6 là nghịch đảo của nhau. Vậy

18


Z(11)
*
là đóng với phép nhân và luỹ thừa, các phần tử đều có phần tử nghịch đảo nên nó
là một nhóm.
Trên tập Z(p)
*
, chúng ta có thể định nghĩa thêm phép toán khác, phép chia. Chúng ta
định nghĩa phép chia cho k, ký hiệu là „/‟ như là phép nhân với phần tử nghịch đảo của k, đó là
k
-1
.
Ví dụ 8 / k = 8 * k
-1
. Nếu k = 9 trong Z(11)
*
, thì 8 / 9 = 8 * 9
-1
= 8 * 5 = 40 ≡ 7 mod
11. Tương tự, 3 / 10 = 3 * 10
-1
= 3 * 10 = 30 ≡ 8 mod 11.
1.3.4.2. Phần tử sinh
Giả sử g là một số của Z(p)
*
, g được gọi là phần tử sinh (generator) mod p nếu tập
tất cả các luỹ thừa của g tạo ra tập tất cả các phần tử của Z(p)
*

. Nghĩa là: {g
1
mod p, g
2

mod p, . . ., g
p-1
mod p} = Z(p)
*

Ta thấy Z(p)
*
= {1, 2, , p-1} biểu diễn cho một tập (được sắp xếp lại) các số g
1
, g
2
,
g
3
, , g
p-1
được tính theo mod p. Để cho tiện lợi chúng ta có thể viết mod p ở bên ngoài
cặp ngoặc đơn, hoặc có thể bỏ qua: {g
1
, g
2
, . . ., g
p-1
} mod p = Z(p)
*

hoặc có thể viết ngắn
gọn {g
1
, g
2
, . . ., g
p-1
} = Z(p)
*

Ví dụ, 3 là phần tử sinh của Z(7)
*
, bởi vì 3
1
= 3 mod 7, 3
2
= 9 ≡ mod 7 = 2, 3
3
= 27
mod 7 ≡ 6, 3
4
= 81 mod 7 = 4, 3
5
= 243 ≡ mod 7 = 5, 3
6
= 729 ≡ mod 7 = 1. Hiển nhiên
là {3, 3
2
, 3
3

, 3
4
, 3
5
, 3
6
} = {1, 2, 3, 4, 5, 6} tính theo mod 7.
Một bộ sinh theo mod p là một tập gồm k phần tử {g
1
, , g
k
}, trong đó các g
i
với i
= 1, 2, …, k là các phần tử sinh khác nhau.
Ví dụ, {3, 5} là bộ sinh của Z(7)
*
, bởi vì cả 3 và 5 đều là phần tử sinh của Z(7)
*
. Dễ
dàng kiểm tra được số 2 không phải là phần tử sinh theo mod 7, bởi vì: {2, 2
2
, 2
3
} mod 7
= {1, 2, 4}  Z(7)
*
. Nhưng tập {1, 2, 4} là tập con của {1, 2, 3, 4, 5, 6} = Z(7)
*
. Vậy có

thể nói hai phần tử sinh của nhóm con của Z(3)
*
theo mod 3.
Một nhóm được sinh bởi g được gọi là nhóm có bậc q mod p nếu q là số luỹ thừa
nhỏ nhất sao cho g
q
= 1 mod p. Ta xét lại hai phần tử sinh của Z(7)
*
là 3 và 5, bởi vì 6 là
số luỹ thừa nhỏ nhất để 1= 3
6
= 5
6
mod 7, nên Z(7)
*
là nhóm có bậc 6 mod 7 và không có
số luỹ thừa nào khác có tính chất trên.
Nói chung, với số nguyên tố q, 1 < q < p, G(q) được xem như là một nhóm (hoặc
nhóm con) bậc q mod p, nếu với phần tử sinh g, 1 < g < p, chúng ta có {g
1
, g
2
, g
3
, , g
q
}
là tập con của Z(p)
*
.

Giả sử g là phần tử của Z(p)
*
và g là phần tử sinh của Z(p)
*
nếu g là phần tử có bậc
là p-1, nghĩa là g
(p-1)
= 1, và không có số luỹ thừa nào nhỏ để bằng 1 theo mod p.
19


Cấu trúc nhóm là cơ sở trong các tính toán số dư theo modulo trong hệ mật mã khóa
công khai.
1.4. Một số hệ mã hoá khoá công khai
1.4.1 Hệ mã hoá khoá công khai RABIN [1]
1.4.1.1. Sơ đồ
Hệ mã hóa là bộ gồm 5 thành phần: {P, C, K, E, D}, trong đó:
+ P (Plaintext): là tập hữu hạn các bản rõ có thể;
+ C (CipherText): là tập hữu hạn các bản mã có thể;
+ K (Key): là tập hữu hạn các khóa có thể;
+ E (Encyption): là tập hợp các hàm mã hóa có thể;
+ D (Decyption): là tập các hàm giải mã có thể;
Với mi k

K, ta có hàm mã hóa e
k
: P

C và hàm giải mã d
k

: C

P
sao cho d
k
(e
k
(x)) = x,  x  P.
 Tạo khóa
Hệ mã hóa là bộ gồm 5 thành phần {P, C, K, E, D}, trong đó:
+ P = C = Zn, trong đó n là một số nguyên Blum, tính n = p*q;
+ Chọn khóa công khai là n và b (0

b

n-1); chọn khóa bí mật là p và q;
+ Chọn p và q là hai số nguyên tố lớn khác nhau có tính chất sau: p

3 (mod 4);
q

3 (mod 4) (tức là: p = 3 + 4*t, q = 3 + 4*m).
 Mã hóa
Vớ i bản rõ x  P, đị nh nghĩ a bản mã là: y = e
k
(x) = x* (x + b) (mod n).
 Giải mã
Vớ i bản mã y  C, bản rõ là: x = d
k
(y) =

24
2
bb
y 
(mod n).
+ Đặt z = x + b/2, ta có:
z
2
= x
2
+ b
2
/4 + 2x * b/2 = x
2
+ b
2
/4 + x * b = b
2
/4 + x * (x + b) (mod n).
Tức là z
2
= b
2
/4 + y (mod n).
+ Đặt T = b
2
/4 +y, ta có phương trình z
2



T (mod n), n = p * q (1)
Phương trình (1) tương đương với hệ phương trình (2):

2
2
z T (mod p)
z T (mod q)







(2)
20


+ Vì p, q là các số nguyên tố, nên ta có: T
(p -1)/2
 1 (mod p), T
(q -1)/2
 1 (mod q).
+ Nhân 2 vế với T ta được: T
(p +1)/2
 T (mod p), T
(q +1)/2
 T (mod q) hay ta có:

(p+1)/4 2

(p+1)/4 2
( T ) T mod p
( T ) T mod q







(3)
+ Từ (2), (3) ta có hệ phương trình:

(p+1)/4 2 2
(p+1)/4 2 2
( T ) z
( T ) z







(4)
+ Hệ phương trình (2) và do phương trình (1) có 4 nghiệm theo mod n nên tương ứng với
4 hệ phương trình sau:
(p 1)/ 4
(q 1)/ 4
z T modp

z T modq










(p 1)/ 4
(q 1)/ 4
z T modp
z T modq










(p 1)/ 4
(q 1)/ 4
z T modp
z T modq











(p 1)/ 4
(q 1)/ 4
z T modp
z T modq










Việc chọn giá trị nào trong 4 giá trị tìm được làm bản rõ là tùy thuộc vào những đặc
trưng khác của bản rõ mà người giải mã nhận biết.
1.4.1.2. Ví dụ minh họa
Vận dụng sơ đồ mã hóa Rabin thực hiện ví dụ minh họa:
+ Hai số nguyên tố khác nhau: p = 7; q = 11;
+ Số nguyên Blum: n =7 * 11 = 77; b = 9;
+ Bản rõ: x = 44.

 Tạo khóa
+ Chọn hai số nguyên tố lớn khác nhau p, q: p

3 (mod 4), q

3 (mod 4).


p = 7 và q = 11. Tính n = p * q = 77.
+ Chọn P = C = Z
n
với số nguyên Blum: n = 77.
+ Chọn b với 0

b

n-1);

b = 9.
+ Chọn khóa công khai là (n, b).
+ Chọn khóa bí mật là (p, q).
 Mã hoá
Giả sử mã hóa bản rõ là: x = 44.
Bản mã là:
y = e
k
(x) = x * (x + b) (mod n) = 44 * (44 + 9) mod 77 = 2332 mod 77 = 22
 Giải mã
21



Bản mã là: y = 22.
Bản rõ là: x = d
k
(y) =
2
bb
y
42

mod n
=
2
99
y
42

mod 77
=
y1
- 9 * 2
-1
mod 77
=
y1
- 9 * 39 mod 77
=
y1
- 351 mod 77
=

23
- 43 mod 77 (1)
* Vì :
2
2
9
9 4 mod 77 1 mod 77
4
  
và 2 * 39

1 (mod 77)

2
-1
= 39.
* Để giải (1) ta cần tính:
T
mod n giải phương trình: z
2


T mod n


2
2
z T (mod p)
z T (mod q)









Giải hệ phương trình trên ta được 4 nghiệm theo mod n như sau:
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq









(1)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq










(2)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq









(3)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq










(4)
+ Giải hệ phương trình (1)
(1)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq











2
3
z 23 mod 7
z 23 mod11











z 529 mod 7
z 12.167 mod11






Đặt m = 7 * 11 = 77.
M
1
= m / m
1
= 77 / 7 = 11.

Phần tử nghịch đảo của 11 theo mod 7 là 2, vì: 11 * 2

1 mod 7  b
1
= 2.
M
2
= m / m
2
= 77 / 11 = 7.


Phần tử nghịch đảo của 7 theo mod 11 là 8, vì: 7 * 8

1 mod 11  b
2
= 8.
Nghiệm của hệ này là:
z

(a
1
* M
1
* b
1
+ a
2
* M
2
* b
2
) mod m với: a
1
= 529; a
2
= 12.167

(529 * 11 * 2 + 12.167 * 7 * 8) mod 77
22




(11 * 638 + 681 * 352) mod 77

[(11 * 638 mod 77) + (681 * 352 mod 77)] (mod 77)

11 + 56 (mod 77)

67
+ Giải hệ phương trình (2)
(2)
(p 1)/ 4
(q 1)/ 4
z T mod p
z T mod q











z 529 mod 7
z 12.167 mod11







Nghiệm của hệ này là:
z

a
1
* M
1
* b
1
+ a
2
* M
2
* b
2
(mod m) với: a
1
= 529; a
2
= -12.167


529 * 11 * 2 + (-12.167) * 7 * 8 (mod 77)


11 * 638 – 681 * 352 (mod 77)



[(11 * 638 mod 77) - (681 * 352 mod 77)] (mod 77)


11 - 56 (mod 77)


- 45 (mod 77)


32 (vì: -45 = 77 * (-1) + 32)
+ Giải hệ phương trình (3)
(3)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq











z 529 mod 7

z 12.167 mod11






Nghiệm của hệ này là:
z

a
1
* M
1
* b
1
+ a
2
* M
2
* b
2
(mod m) với: a
1
= -529; a
2
= 12.167


(-529) * 11 * 2 + 12.167 * 7 * 8 (mod 77)



-11 * 638 + 681 * 352 (mod 77)


[(681 * 352 mod 77)] - (11 * 638 mod 77)] (mod 77)


(56 - 11) (mod 77)


45 (mod 77)


45
+ Giải hệ phương trình (4)
(4)
(p 1)/ 4
(q 1)/ 4
z T modp
z T modq













z 529 mod7
z 12.167 mod11






Nghiệm của hệ này là:
z

a
1
*M
1
* b
1
+ a
2
* M
2
* b
2
(mod m) với: a
1
= -529; a
2

= -12.167


(-529) * 11 * 2 + (-12.167) * 7 * 8 (mod 77)


-11 * 638 – 681 * 352 (mod 77)
23




- [(11 * 638 mod 77) + (681 * 352 mod 77)] (mod 77)


-(11 + 56) (mod 77)


- 67 (mod 77)


10 ( vì: -67 = 77 * (-1) + 10)
Như vậy:
+ Với z = 67 thì x =
23
- 43 mod 77 = 67 – 43 mod 77 = 24
+ Với z = 32 thì x =
23
- 43 mod 77 = 32 – 43 mod 77 = 66
+ Với z = 45 thì x =

23
- 43 mod 77 = 45 – 43 mod 77 = 2
+ Với z = 10 thì x =
23
- 43 mod 77 = 10 – 43 mod 77 = 44
Việc chọn giá trị nào trong trong 4 giá trị tìm được làm bản rõ là tùy thuộc vào
những đặc trưng khác của bản rõ mà người giải mã nhận biết (thí dụ bản rõ dưới dạng số
phải có biểu diễn nhị phân là mã của một văn bản tiếng Anh thông thường). Trong trường
hợp này chọn bản rõ là 44.
1.4.2. Hệ mã hóa khoá công khai ELGAML [2]
1.4.2.1. Sơ đồ
Hệ mã hóa là bộ gồm 5 thành phần: {P, C, K, E, D}, trong đó:
+ P (Plaintext): là tập hữu hạn các bản rõ có thể;
+ C (CipherText): là tập hữu hạn các bản mã có thể;
+ K (Key): là tập hữu hạn các khóa có thể;
+ E (Encyption): là tập hợp các hàm mã hóa có thể;
+ D (Decyption): là tập các hàm giải mã có thể;
Với mi k

K, ta có hàm mã hóa e
k
: P

C và hàm giải mã d
k
: C

P
sao cho d
k

(e
k
(x)) = x,  x  P.
*Tạo cặp khóa (bí mt, công khai) (a, h) :
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Z
p
là “khó” giải. Chọn
phần tử nguyên thuỷ g  Z
p
*. Đặt P = Z
p
*, C = Z
p
*

Z
p
*.
Chọn khóa bí mật là a  Z
p
*. Tính khóa công khai h  g
a
mod p.
Định nghĩa tập khóa:

= {(p, g, a, h): h  g
a
mod p}. Các giá trị p, g, h được
công khai, phải giữ bí mật a.
Với Bản rõ x P và Bản mã y  C, với khóa k


định nghĩa:
* Lp mã:

×