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

Xây dựng chương trình ứng dụng chữ ký điện tử ký lên văn bả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 (1.5 MB, 76 trang )

LỜI CẢM ƠN
Em xin chân thành cảm ơn thầy giáo Th. S Trần Hồng Anh – Trung tâm học liệu
_ Đại học Thái Nguyên đã giúp đỡ em hoàn thành bài báo cáo “Xây dựng chương
trình ứng dụng chữ ký điện tử ký lên văn bản” này.
Là một sinh viên chuyên ngành mạng, em đã nhận được nhiều sự giúp đỡ từ phía
các thầy cô trong bộ môn từ việc chọn đề tài cho đến hoàn chỉnh bài báo cáo. Em cũng
nhận thấy được sự tâm huyết và nhiệt tình của các thầy cô và đặc biệt là của thầy Trần
Hồng Anh–giáo viên hướng dẫn của em, giúp em biết được rằng mình cần phải cố
gắng nhiều hơn nữa trong học tập và nghiên cứu.
Dưới đây là bài báo cáo của em, tuy em đã cố gắng song không thể tránh khỏi
những sai sót. Vì vậy em rất mong nhận được sự đóng góp của thầy cô và bạn bè cho
đề tài của em hoàn thiện hơn.

Em xin trân trọng cảm ơn!
Nguyễn Trọng Khiêm

1


LỜI CAM ĐOAN
Em xin cam đoan:
Những nội dung trong đồ án này là do bản thân em thực hiện dưới sự hướng dẫn
trực tiếp của thầy giáo hướng dẫn: ThS. Trần Hồng Anh.
Mọi tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công
trình, thời gian, địa điểm công bố.
Mọi sao chép không hợp lệ hoặc có bất kì thông tin sai lệch nào, em xin chịu
hoàn toàn trách nhiệm trước Hội Đồng.

2



MỤC LỤC
LỜI CẢM ƠN..............................................................................................................................1
LỜI CAM ĐOAN........................................................................................................................2
MỤC LỤC...................................................................................................................................3
DANH MỤC HÌNH ẢNH...........................................................................................................5
DANH MỤC BẢNG....................................................................................................................6
LỜI MỞ ĐẦU..............................................................................................................................7
CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA VÀ BẢO MẬT THÔNG TIN...............................8
1. Sơ lược về lịch sử mật mã...................................................................................................8
2. Một số vấn đề an toàn và bảo mật thông tin.....................................................................10
2.1 Tại sao phải an toàn và bảo mật thông tin...................................................................10
2.2 Các kĩ thuật được sử dụng...........................................................................................11
2.3 Các phương pháp được sử dụng..................................................................................11
3. Các bài toán về an toàn và bảo mật thông tin...................................................................12
4. Thám mã và tính an toàn của các hệ mã...........................................................................13
4.1 Vấn đề thám mã...........................................................................................................13
4.2 Tính an toàn của một hệ mật mã .................................................................................13
5. Vấn đề mã hóa dữ liệu......................................................................................................14
5.1 Định nghĩa hệ mã hóa..................................................................................................14
5.2 Hệ mã hoá đối xứng.....................................................................................................15
5.3 Hệ mã hoá hoá khoá công khai....................................................................................19
6. Thuật toán mã hóa khóa công khai RSA..........................................................................21
6.1Mô tả sơ luợc thuật toán mã hóa RSA:.........................................................................21
6.2 Lịch sử cuộc cách mạng toán học mã RSA.................................................................22

3


6.3 RSA, cuộc cách mạng của các nhà toán học................................................................23
6.4 RSA và chính phủ điện tử............................................................................................24

6.5 Quy trình tạo khóa , mã hóa và giải mã RSA..............................................................24
6.7 Một số phương pháp tấn công mã hóa RSA ...............................................................29
6.8 Các vấn đề đặt ra trong thực tế....................................................................................29
CHƯƠNG 2: KHÁI NIỆM, SƠ ĐỒ VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ SỬ DỤNG
THUẬT TOÁN MÃ HÓA RSA................................................................................................34
1. Khái niệm chữ ký điện tử..................................................................................................34
2. Hàm băm và chữ ký:.........................................................................................................35
2.1 Hàm Băm.....................................................................................................................35
2.2 MD5.............................................................................................................................38
2. Sơ đồ chữ ký điện tử RSA và xác thực điện tử:................................................................47
2.2 Mô hình chữ ký điện tử sử dụng khóa công khai.........................................................49
2.3 Cách thức hoạt động của chữ ký điện tử và chứng chỉ điện tử....................................49
2.4 Kiểm tra xác nhận trên tài liệu đã ký...........................................................................51
2.5 Cách làm việc của chữ ký điện tử..............................................................................51
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG..................................................57
1. Yêu cầu:............................................................................................................................57
2. Phân tích thiết kế hệ thống:...............................................................................................57
2.1 Mô hình USE – CASE:................................................................................................57
2.2 Biểu đồ trình tự............................................................................................................60
3. Một số hình minh họa chương trình:...............................................................................67
KẾT LUẬN................................................................................................................................75
TÀI LIỆU THAM KHẢO.........................................................................................................76

4


DANH MỤC HÌNH ẢNH
Hình 1.1: Gậy mật mã..................................................................................................................8
Hình 1.2: Sơ đồ mã hóa.............................................................................................................15
Hình 1.3: Mô tả thuật toán mã hóa khóa đối xứng....................................................................16

Hình 1.1: Mô tả thuật toán mã hóa và giải mã theo khối...........................................................17
Hình 1.2: Mô tả thuật toán mã hóa dòng...................................................................................18
Hình 1.3: Giải pháp mật mã đối xứng hay sử dụng nhất...........................................................18
Hình 1.4: Mô tả thuật toán mã hóa khóa công khai...................................................................20
Hình 1.5: Ba nhà khoa học Shamir, Rivest và Adleman...........................................................22
Hình 2.1: Thể hiện cơ bản về hàm băm hay thông số MAC......................................................36
Hình 2.2: Tạo bản thông điệp tóm lược sử dụng MD5..............................................................39
Hình 2.3: Xử lý MD5 của khối đơn 512 bít (HDMD5).............................................................40
Hình 2.4: Tác vụ của MD5: [abcd k s i].................................................................................42
Hình 2.5: Mô hình chữ ký điện tử..............................................................................................49
Hình 2.6: Mô hình tạo chữ ký vào văn bản giữa hai bên gửi nhận...........................................50
Hình 2.7: Quá trình ký trong thông điệp....................................................................................54
Hình 2.8: Quá trình kiểm tra xác nhận chữ ký trên tài liệu........................................................55
Hình 2.9: Quá trình làm việc của một Chữ ký điện tử..............................................................56
Hình 3.1: Mô hình Use_case......................................................................................................57
Hình 3.2: Tiến trình sinh khóa...................................................................................................60
Hình 3.3: Tiến trình tạo chữ ký điện tử......................................................................................61
Hình 3.4: Tiến trình kiểm tra chữ ký.........................................................................................61
Hình 3.5: Tiến trình mã hóa.......................................................................................................62
Hình 3.6: Tiến trình giải mã.......................................................................................................63

5


Hình 3.7: Biểu đồ cộng tác tiến trình sinh khóa........................................................................63
Hình 3.8: Biểu đồ cộng tác tạo chữ ký điện tử..........................................................................64
Hình 3.9: Biểu đồ cộng tác kiểm tra chữ ký điện tử..................................................................64
Hình 3.10: Biểu đồ cộng tác tiến trình mã hóa.........................................................................65
Hình 3.11: Biểu đồ cộng tác tiến trình giải mã.........................................................................66
Hình 3.12: Giao diện chính chương trình..................................................................................67

Hình 3.13: Form giao diện chương trình ký nhận và xác thực chữ ký điện tử..........................68
Hình 3.14: Quá trình ký nhận trên văn bản................................................................................69
Hình 3.15: Xác nhận lưu tệp tin sau khi ký nhận.......................................................................70
Hình 3.16: Quá trình xác thực nội dung văn bản.......................................................................71
Hình 3.17: Hiển thị chữ ký của văn bản....................................................................................72
Hình 3.18: Hiển thị thông báo sau khi xác thực........................................................................73
Hinh 3.19: Mô phỏng thuật toán RSA......................................................................................74
Hình 3.20: Ví dụ quá trình mã hóa giải mã sử dụng thuật toán RSA........................................74

DANH MỤC BẢNG
Bảng 1: Mô tả độ phức tạp của giải thuật RSA.........................................................................26
Bảng 2: Mã hóa và giải mã trong RSA......................................................................................27
Bảng 3: Ví dụ cụ thể RSA..........................................................................................................28

6


LỜI MỞ ĐẦU
Trong những năm qua ngành Công nghệ thông tin của Việt Nam có tốc độ phát
triển tương đối cao (dự kiến đến giai đoạn 2011-2015 tốc độ phát triển của ngành công
nghệ thông tin đạt 12%, doanh thu lên tới 3, 3 tỷ USD vào năm 2015) mang đến nhiều
tiện ích cho cá nhân, tổ chức cũng như toàn xã hội. Ứng dụng của các sản phẩm từ
ngành Công nghệ thông tin hết sức đa dạng: hệ thống các phần mềm hỗ trợ quản lý,
công nghệ số, công nghệ 3G, 4G, chữ kí số… Công nghệ thông tin đã góp phần nâng
cao chất lượng, hiệu quả, tiết kiệm thời gian, tài chính trong nhiều lĩnh vực như tài
chính-ngân hàng, viễn thông, giáo dục, quản lí hành chính nhà nước. Với tốc độ phát
triển nhanh chóng của ngành Công nghệ thông tin đã tạo ra môi trường mạng ổn định,
thuận tiện tuy nhiên tính bảo mật chưa thực sự cao.
Đứng trước thực trạng đó con người cần một ứng dụng mới đáp được nhu cầu của
con người về tính bảo mật, nâng cao độ tin cậy của dữ liệu. Chữ kí điện tử và chữ kí số

ra đời đáp ứng thực trạng trên.
Trong báo cáo em xin trình bày một số hiểu biết của bản thân về chữ kí số và chữ
kí điện tử và các ứng dụng của nó trong thực tế .
Qua đó, chúng em xin được gửi lời cảm ơn đến thầy Th. S Trần Hồng Anh đã tận
tình hướng dẫn em thực hiện báo cáo này.
Bài báo cáo của em thực hiện dưới góc độ của sinh viên nên còn nhiều hạn chế và
thiếu sót. Vì vậy, rất mong nhận được sự góp của thầy và các bạn để có thể hoàn thiện
bài một cách tốt hơn!

Em xin chân thành cảm ơn!
Sinh viên thực hiện: Nguyễn Trọng Khiêm

7


CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA VÀ BẢO MẬT
THÔNG TIN
1. Sơ lược về lịch sử mật mã
Nhu cầu sử dụng mật mã xuất hiện rất sớm, từ khi con người biết trao đổi và
truyền đưa thông tin cho nhau, đặc biệt khi các thông tin đó được thể hiện dưới hình
thức ngôn ngữ, thư từ. Theo như nghiên cứu, các hình thức mật mã sơ khai đã được tìm
thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập cổ đại. Trải qua hàng
nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi trên khắp thế giới từ Đông sang
Tây nhằm đảm bảo an toàn, bí mật cho việc trao đổi và truyền thông tin giữa con người
và giữa các quốc gia, đặc biệt trong các lĩnh vực quân sự, chính trị, ngoại giao.
Có rất nhiều dụng cụ (thiết bị) và các kĩ thuật khác nhau đã được sử dụng để mã
hóa. Một trong những dụng cụ (thiết bị) đã được sử dụng sớm nhất có lẽ là gậy mật mã
“scytale” (tiếng Hy Lạp là: σκυτάλη), dùng để liên lạc thông tin mật giữa những người
chỉ huy quân đội.


Hình 1.1: Gậy mật mã
“Scytale” gồm một gậy được vót nhọn ở đầu, xung quanh được quấn bởi một
mảnh giấy da được ghi thông điệp cần chuyển. Khi mở giấy da ra ta thấy những kí tự
khó hiểu, tuy nhiên khi ta quấn quanh một gậy mật mã khác theo đúng kích thước thì
ta nhận được bản thông điệp ban đầu.
Tiến thêm một bước nữa, họ đã sáng tạo ra mã hóa hoán vị và mã hóa thay thế
nguyên thủy bằng cách sử dụng bảng ô vuông dạng bàn cờ (Polybius checkerboard).

8


Bảng này có 5 dòng và 5 cột chứa tất cả chữ cái trong đó. Sau đó, mỗi chữ cái biến đổi
thành 2 số, số thứ nhất là số hàng mà chữ cái ở hàng đó, và số thứ 2 là cột chứa chữ cái
đó. Vì thế, chữ cái A biến thành số 11, tương tự vậy, chữ cái B biến thành số 12, v. v…
Suốt mấy nghìn năm lịch sử, các thông điệp được truyền đưa và trao đổi với nhau
thường là các văn bản, tức là có dạng các kí tự trong một ngôn ngữ nào đó. Vì vậy, các
thuật toán lập mã thường cũng đơn giản chỉ là các thuật toán xáo trộn, thay đổi các kí
tự được xác định bởi các phép chuyển dịch, thay thế hay hoán vị các kí tự trong bảng kí
tự của ngôn ngữ tương ứng. Hoạt động ngược lại của việc bảo mật thông tin là khám
phá bí mật từ các bản mã mật “lấy trộm” được, thường gọi hoạt động này là thám mã.
Thám mã thường tập trung vào việc tìm khóa mật mã nhằm giải mã bản mã mật “lấy
trộm” được, do đó còn gọi công việc đó là phá khóa.
Trong thế kỉ 20, với những tiến bộ vượt bậc của kĩ thuật tính toán và truyền
thông, ngành mật mã đã có những tiến bộ to lớn. Vào những thập niên đầu của thế kỉ,
sự phát triển của các kĩ thuật biểu diễn, truyền và xử lý tín hiệu đã có tác động giúp cho
các hoạt động lập và giải mã từ thủ công chuyển sang cơ giới hóa rồi điện tử hóa. Các
văn bản, các bản mật mã trước đây được viết bằng ngôn ngữ thông thường nay được
chuyển bằng kĩ thuật số thành các dãy tín hiệu nhị phân, hay các dãy số, việc thực hiện
các phép lập mã, giải mã trở thành việc thực hiện các hàm số học. Toán học và kĩ thuật
tính toán bắt đầu trở thành công cụ cho việc phát triển khoa học về mật mã.

Năm 1976, hai tác giả Diffie và Hellman đưa ra khái niệm về mã hóa sử dụng
khóa công khai và một phương pháp trao đổi công khai để tạo ra một khóa bí mật
chung mà tính an toàn được đảm bởi độ khó của bài toán tính “lôgarit rời rạc”.
Năm 1978, Rivest, Shamir và Adleman tìm ra một hệ mật mã khóa công khai (hệ
RSA) và một sơ đồ chữ kí điện tử hoàn toàn có thể ứng dụng trong thực tiễn, tính bảo
mật và an toàn của chúng được bảo đảm bằng độ phức tạp của bài toán số học nổi tiếng
là bài toán phân tích số nguyên thành các thừa số nguyên tố.
Sau phát minh ra hệ mật mã RSA, việc nghiên cứu để phát minh ra các hệ mã hóa
khóa công khai khác, và ứng dụng các hệ mật mã khóa công khai vào các bài toán khác
9


nhau của an toàn thông tin đã được tiến hành rộng rãi, lý thuyết mật mã và an toàn
thông tin trở thành một lĩnh vực khoa học được phát triển nhanh trong vài ba thập niên
cuối của thế kỉ 20 cho tới ngày nay.

2. Một số vấn đề an toàn và bảo mật thông tin
2.1 Tại sao phải an toàn và bảo mật thông tin
Ngay từ thời xưa khi muốn giữ bí mật một thông tin nào đó hay một thông báo
gửi đi ta đã thấy con người đã dùng nhiều cách khác nhau từ các công cụ thô sơ (gậy
mật mã, v. v. ) đến các thiết bị máy móc phức tạp để bảo đảm thông tin khi trao đổi
được an toàn và bí mật, và chỉ có những người có quyền mới có thể biết được nội dung
của thông tin đó. Như vậy, an toàn thông tin là cách thức thực hiện nhằm ngăn cản
những người không có thẩm quyền có thể xem, sửa đổi một thông tin hay một thông
báo nào đó.
Ngày nay, với sự bùng nổ công nghệ thông tin đặc biệt là sự xuất hiện của mạng
Internet và các mạng cục bộ giúp cho việc trao đổi thông tin: thư điện tử, giao dịch trên
mạng, v. v…trở nên nhanh chóng và dễ dàng. Tuy nhiên, nhiều vấn đề mới nảy sinh
như: tin tức trên đường truyền (hoặc trong kho dữ liệu) có thể bị đánh cắp, có thể bị
sửa đổi sai lệch, và cũng có thể bị giả mạo. Do đó, một số thông tin mật như: bí mật

kinh doanh, tài chính, ngân hàng, các thông tin về an ninh của quốc gia, v. v… có thể
bị lộ hoặc bị giả mạo. Điều đó dẫn đến, những thiệt hại về tài chính, chính trị, an ninh,
… làm ảnh hưởng rất lớn đến lợi ích, tình hình của các công ty, các tổ chức hay cả các
quốc gia trên thế giới.
Đứng trước vấn đề đó, an toàn thông tin đã được đặt ra cấp thiết nhằm cung cấp
các thông tin, các phương pháp kĩ thuật, các chiến lược, các công cụ, v. v.. , nhằm bảo
vệ thông tin được an toàn. Đồng thời, sáng chế ra các ứng dụng có ý nghĩa trong thực
tiễn nhằm phục vụ cho các tổ chức, các công ty, các quốc gia, và hơn hết là phục vụ
cho cuộc sống của mỗi con người trong toàn xã hội.

10


2.2 Các kĩ thuật được sử dụng
Có hai kĩ thuật chính được sử dụng là: an toàn truyền thông và an toàn máy tính:
-

An toàn máy tính: Là sự bảo vệ các thông tin bên trong một hệ thống máy
tính.

- An toàn truyền thông: Là sự bảo vệ thông tin trong khi thông tin đang được
truyền từ hệ thống này sang hệ thống khác.
Có hai phương pháp chính được sử dụng là:
- Tường lửa: là hệ thống phần cứng, phần mềm hay hỗn hợp phần cứng – phần
mềm có tác dụng như một tấm ngăn cách giữa các tài nguyên thông tin của mạng nội
bộ và thế giới bên ngoài. Nó có nhiệm vụ là quyết định người nào, dịch vụ nào được
truy cập từ bên ngoài vào (hoặc từ bên trong ra bên ngoài) và mọi thông tin trao đổi
đều phải thực hiện thông qua nó. Tuy nhiên, nó cũng có một số giới hạn như: không
thể ngăn chặn thông tin bất hợp pháp không đi qua nó, chỉ có thể ngăn chặn thông tin
bất hợp pháp khi biết rõ các thông số địa chỉ, v. v…

- Mã hóa: là phương pháp che dấu thông tin dưới dạng đã mã hóa nhằm ngăn
chặn những người không có thẩm quyền sử dụng thông tin một cách bất hợp pháp.
2.3 Các phương pháp được sử dụng
Các chiến lược được sử dụng gồm:
- Quyền hạn tối thiểu: Nguyên tắc cơ bản trong an toàn thông tin nói chung là hạn
chế sự ưu tiên. Mỗi đối tượng trong hệ thống chỉ được cấp phát một số quyền hạn nhất
định đủ dùng cho công việc của mình.
- Phòng thủ theo chiều sâu: tức là tạo lập nhiều lớp bảo vệ khác nhau cho hệ
thống.

11


3. Các bài toán về an toàn và bảo mật thông tin
Có rất nhiều bài toán khác nhau về yêu cầu an toàn thông tin tùy theo tình huống
khác nhau, nhưng nhìn chung có một số bài toán mà ta thường gặp trong thực tiễn là
những bài toán sau đây:
- Bảo mật: Giữ thông tin được bí mật đối với tất cả mọi người, trừ những người
có quyền được đọc, được biết thông tin đó.
- Toàn vẹn thông tin: Đảm bảo thông tin không bị thay đổi hay xuyên tạc bởi
những người không được quyền hoặc bằng phương tiện không được phép.
- Xác thực một thực thể: Xác nhận danh tính của một thực thể, chẳng hạn một
người, một máy tính cuối trong mạng, một thẻ tín dụng…
- Xác thực một thông báo: Xác nhận nguồn gốc của một thông báo được gửi đến
- Chữ kí: Một cách để gắn kết một thông tin với một thực thể, thường dùng trong
bài toán nhận xác thực một thông báo cũng như nhiều bài toán xác thực khác.
- Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc được làm
một việc gì đó
- Cấp chứng chỉ: Cấp một sự xác nhận thông tin bởi một thực thể tín nhiệm.
- Báo nhận: Xác nhận một thông báo đã được nhận hay một dịch vụ đã được thực

hiện.
- Làm chứng: Kiểm thử việc tồn tại một thông tin ở một thực thể khác với người
chủ sở hữu thông tin đó.
- Chống chối bỏ: Ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết đã có
(thí dụ, đã kí vào một văn bản)
- Ẩn danh: Che dấu danh tính của một thực thể tham gia trong một tiến trình nào
đó (thường dùng trong giao dịch tiền điện tử)
- Thu hồi: Rút lại một giấy chứng chỉ hay ủy quyền đã cấp

12


4. Thám mã và tính an toàn của các hệ mã
4.1 Vấn đề thám mã
Mật mã được sử dụng trước hết là để đảm bảo tính bí mật cho các thông tin được
trao đổi, và do đó bài toán quan trọng nhất của thám mã cũng là bài toán phá bỏ tính bí
mật đó, tức là từ bản mật mã thì người thám mã có thể biết được nội dung bị che giấu
trong bản mật mã đó, tốt nhất là tìm ra bản rõ gốc của bản mật mã đó. Bài toán thường
gặp là bản thân sơ đồ hệ thống mật mã, kể cả các phép lập mã và giải mã không nhất
thiết bí mật, mà bí mật nằm trong chìa khóa mật mã K, nếu hệ mật mã là phi đối xứng.
Như vậy, ta có thể xem bài toán thám mã cơ bản là bài toán tìm khóa mật mã K. Do đó,
ta có thể phân loại bài toán thám mã thành các bài toán cụ thể như sau:
- Bài toán thám mã chỉ biết bản mã: Đây là bài toán phổ biến nhất, khi người
thám mã chỉ biết một bản mật mã Y.
- Bài toán thám mã khi biết cả bản rõ: Người thám mã biết một bản mật mã Y
cùng với bản rõ tương ứng X.
- Bài toán thám mã khi có bản rõ được chọn: Người thám mã có thể chọn một bản
rõ X, và biết bản mật mã tương ứng Y. Điều này có thể xảy ra khi người thám mã
chiếm được máy lập mã.
- Bài toán thám mã khi có bản mã được chọn: Người thám mã có thể chọn một

bản mật mã Y, và biết bản rõ tương ứng X. Điều này có thể xảy ra khi người thám mã
chiếm được máy giải mã.
4.2 Tính an toàn của một hệ mật mã
Tính an toàn của một hệ thống mật mã phụ thuộc vào độ khó khăn của bài toán
thám mã khi sử dụng hệ mật mã đó. Người ta đã đề xuất một số cách hiểu cho khái
niệm an toàn của hệ thống mật mã, sau đây ta giới thiệu vài cách hiểu thông dụng nhất:

13


An toàn vô điều kiện: Một hệ mật được gọi là an toàn không điều kiện nếu nó
không thể bị phá, thậm chí với khả năng tính toán không hạn chế, theo C. Shannon, hệ
là bí mật hoàn toàn.
An toàn được chứng minh: Một hệ thống mật mã được xem là có độ an toàn được
chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với hệ thống đó là
khó tương đương với một bài toán khó đã biết, thí dụ: Bài toán phân tích một số
nguyên thành tích các thừa số nguyên tố, hay bài toán tìm lôgarit rời rạc theo một
module nguyên tố, vv…
An toàn tính toán: Một hệ mật là an toàn về mặt tính toán nếu có một thuật toán
tốt nhất để phá nó cần ít nhất N phép toán, với N là số rất lớn. Thực tế, không có một
hệ mật mã nào có thể chứng tỏ là an toàn theo nghĩa trên. Do đó, người ta gọi một hệ
mật là “an toàn tính toán” nếu có một phương pháp tốt nhất phá hệ này nhưng với yêu
cầu thời gian lớn đến mức không chấp nhận được

5. Vấn đề mã hóa dữ liệu
Khái niệm mã hóa
Mã hoá là kỹ thuật đã được sử dụng lâu đời để đảm bảo an toàn thông tin. Hiện
nay có nhiều phương pháp mã hóa khác nhau, mỗi phương pháp có những ưu điểm và
nhựơc điểm riêng. Tùy theo yêu cầu cụ thể để lựa chọn phương pháp mã hóa.
5.1 Định nghĩa hệ mã hóa

Hệ mã hoá được định nghĩa là bộ năm: (P, C, K, E, D) trong đó:
P : là một tập hữu hạn các bản rõ có thể.
C : là tập hữu hạn các bản mã có thể.
K : là tập hữu hạn các khóa có thể.
E : là tập các hàm lập mã.
D : là tập các hàm giải mã.

14


Với mỗi: k ( kl, kg) thuộc K (mỗi khóa k bao gồm khóa khóa lập mã và khóa giải
mã), có một hàm lập mã e thuộc E và một hàm giải mã d thuộc D sao cho:
Lập mã:
Mỗi x ∈ P -> y = dkl(x) ∈ C ;
Giải mã :
Mỗi y ∈ C -> x = dkg(y) ∈ P ;

Hình 1.2: Sơ đồ mã hóa
Hiện nay các hệ mã hoá được phân thành hai loại chính:
- Hệ mã hóa đối xứng (hệ mã hóa cổ điển)
- Hệ mã hóa phi đối xứng (hệ mã hóa công khai).
5.2 Hệ mã hoá đối xứng
Hệ mã hóa đối xứng là hệ mã hóa mà từ khóa giải mã có thể tính được hóa mã
hóa và ngược lại. Trong một số trường hợp khóa mã hóa và giải mã có thể giống nhau.
Hệ mã hóa đối xứng yêu cầu người gửi và người nhận phải thỏa thuận khóa lập
mã, khóa giải mã, và tên của hệ mã hóa trước khi dữ liệu được gửi, khóa được thỏa
thuận này phải được giữ bí mật từ cả hai phía. Độ an toàn của hệ mã hóa này phụ thuộc
độ an toàn của khóa.

15



Hình 1.3: Mô tả thuật toán mã hóa khóa đối xứng
Ưu điểm: tốc độ mã hoá nhanh, đơn giản, dễ dùng.
Nhược điểm: độ an toàn thấp cụ thể như trong mã hoá dịch chuyển sử dụng bộ
chữ cái tiếng anh 26 chữ cái thì các giá trị có thể của khoá chỉ là 26, như vậy một
người chỉ cần thử với 26 khoá là có thể tìm được bản rõ, điều này là dễ dàng.
Ứng dụng: thường được dử dụng trong môi trường mà khoá có thể dễ dàng trao
đổi như trong cùng một văn phòng. Mã hoá cổ điển được dùng trong việc mã hoá thông
tin khi lưu trữ.
Mật mã đối xứng được chia làm hai dạng:
a. Mã hóa khối
Mã hóa khối là một giải pháp hoạt dộng chống lại sự hạn chế của dữ liệu tĩnh. Dữ
liệu được chia ra thành các khối với độ dài cụ thể và mỗi khối được mã hoá một cách
khác nhau.
Một thuật toán mã hóa khối là một hàm sắp xếp n – bit của khối bản rõ thành nbit của khối bản mã, trong đó n gọi là độ dài khối. Nó có thể được xem như là một hệ
mã hóa thay thế với kích thước kí tự được thay thế là lớn.

16


Hình 1.1: Mô tả thuật toán mã hóa và giải mã theo khối
b. Mã hóa dòng
Mã hóa là giải pháp hoạt động chống lại dữ liệu luôn luôn sử dụng một phương
thức để truyền. Sử dụng một vùng đệm, ít nhất bằng một khối, đợi cho toàn bộ thông
tin của khối đó được chứa trong vùng đệm sau đó khối đó sẽ được mã hoá rồi truyền
cho người nhận. Một sự khác nhau cơ bản giữa dữ liệu được truyền và dữ liệu nguyên
bản. Không như giải pháp sử dụng mật mã đối xứng là mỗi khối được sử dụng một
khóa khác nhau trong quá trình truyền thông tin.
Thuật toán mã hóa dòng là thuật toán mã hóa từng kí tự một của bản rõ, nó sử

dụng phép biến đổi quá trình lập mã biến thiên theo thời gian. Ngược lại thì mã hóa
khối hướng tới việc thực hiện đồng thời mã hóa một nhóm kí tự của bản rõ, nó sử dụng
một phép biến đổi quá trình lập mã đã được xác định trước.
Mô tả đơn giản của mã dòng được thể hiện dưới đây:

17


Hình 1.2: Mô tả thuật toán mã hóa dòng
Dưới đây là các giải pháp mật mã đối xứng hay sử dụng nhất:
Tên các thuật toán mã hóa
Advanced Encryption Standard (AES)
Triple Data Encryption Standard (3DES)
Data Encryption Standard (DES)
International Data Encryption Algorithim
(IDEA)
Blowfish
Towfish
Rivest Criper 5 (RC5)

Kích thước
khối mã hóa
Biến
64
64
64

Kích thước khóa

Biến

128
32, 64, 128

1-448
1-256
0-2048

128, 192, 256
168
56
128

Hình 1.3: Giải pháp mật mã đối xứng hay sử dụng nhất
Những hệ mã hoá đối xứng tiêu biểu: hệ mã hoá dịch chuyển, hệ mã hoá hoán vị
toàn cục, hoán vị cục bộ, mã hoá affine… Sau đây là ví dụ về hệ mã hoá dịch chuyển.
Ví dụ về hệ mã hoá dịch chuyển:
Có thể nói đây là hệ mã hoá đơn giản nhất. dùng các phép toán số học modulo 26.
bản mã và bản rõ là tập các ký tự tiếng anh 26 chữ cái. Các chữ cái A → Z tương
đương với các số thừ 0 → 25

a b c d e f g h i j k l m n o p q

r s

t u v w x y z

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

18



Trong hệ mã hoá dịch chuyển ta có: P = C = K = Z26.
Với k ∈ K ta định nghĩa cho x, y ∈ Z26. x là thông tin cần mã hoá, y là bản mã.
quá trình mã hoá và giải mã như sau:
Mã hoá: y = ek(x) = (x + k) mod 26;
Giải mã: x = dk(y) = (y - k) mod 26;
Với đầu vào:
x = “CONGNGHETHONGTIN”
Khoá k = 5;
Bản rõ số : 2, 14, 13, 6, 13, 6, 7, 4, 19, 7, 14, 13, 6, 19, 8, 13
Mã hoá: y = (x + 5) mod 26, thay lần lượt x vào công thức ta thu được.
Bản mã số: 7, 19, 18, 11, 18, 11, 12, 9, 24, 12, 19, 18, 11, 24, 13, 18
Bản mã chữ là: HTSLSLMJYMTSLYNS
Quá trình giả mã tiến hành ngượclại. x = (y – k )mod 26
Như ta thấy, khoá k chỉ có 26 giá trị nên việc thám mã có thể thực hiện được bằng
cách duyệt lần lượt các giá trị của k từ 1 → 26. Mã hoá dịch chuyển có độ an toàn rất
thấp.
5.3 Hệ mã hoá hoá khoá công khai
Hệ mã hoá phi đối xứng là hệ mã hoá mà: khoá lập mã khác khoá giải mã. Từ
khoá này “khó” tính được khoá kia trong thời gian chấp nhận được.
Hệ mã hoá phi đối xứng còn được gọi là hệ mã hoá khoá công khai vì khoá để mã
hoá có thể công khai cho mọi người biết. Sử dụng khoá công khai để mã hoá tin tức
nhưng chỉ có duy nhất người có khoá bí mật mới giải mã được thông tin. Khi thông tin
đã bị mã hoá thì thậm chí cả người mã hoá thông tin đó cũng không thể giải mã lại
thông tin. Đây chính là tính bất đối xứng của hệ mã hoá khoá công khai.

19


Trong hai khoá: khóa lập mã được gọi là khoá công khai (public key), khoá giả

mã được gọi là khoá bí mật (khoá riêng: private key).

Hình 1.4: Mô tả thuật toán mã hóa khóa công khai

Phương thức mật mã bất đối xứng sử dụng: Rivest Shamir Adleman (RSA),
Diffie-Hellman-Error-Correcting-Code-(ECC)- El Gamal
Đặc điểm của hệ mã hoá khoá công khai:
Khi biết các điều kiện ban đầu, việc xác định cặp khoá công khai và khoá bí mật
phải được thực hiện dễ dàng tức là trong thời gian đa thức.
Trong thời gian đa thức, người gửi có thể mã hoá thông tin P bằng khoá công
khai và thu được bản mã C.
Người nhận cũng phải dễ dàng giải mã được bản mã C để thu được thông tin P.
Khi biết được khoá công khai, khó có thể tính được khoá bí mật, khó ở đây
không phải là không thể tính được mà là bài toán tính khoá bí mật từ khoá công khai là
bài toán có độ phức tạp lớn, không khả thi về mặt thời gian.
Ưu điểm: Chỉ cần bí mật khoá riêng. Thuật toán được viết cho nhiều người sử
dụng, độ an toàn cao hơn mã hoá khoá khoá bí mật.

20


Nhược điểm: Sử dụng phức tạp hơn hệ mã hoá cổ điển, tốc độ mã hoá chậm ( tốc
độ mã hoá phụ thuộc vào độ phức tạp của thuật toán mã hoá và giả mã), thuật toán mã
hoá có độ phức tạp càng cao, tức là càng an toàn thì tốc độ mã hoá và giải mã nó càng
chậm.
Ứng dụng: Hệ mã hoá khoá công khai được sử dụng chủ yếu trên các mạng công
khai như internet. Đối với hệ mã hoá khoá công khai thì có thể gửi cả khoá công khai
và bản mã trên một đường truyền thông tin không an toàn. Một ứng dụng quan trọng
khác của hệ mã hoá khoá công khai là sử dụng cặp khoá của hệ mã hoá để tạo chữ ký
điện tử, dùng khoá riêng để tạo chữ ký và dùng khoá công khai để kiểm tra chữ ký.


6. Thuật toán mã hóa khóa công khai RSA
Trong mật mã học, RSA là một thuật toán mã hóa khóa công khai. Đây là thuật
toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. RSA
đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa
công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là
đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
6.1Mô tả sơ luợc thuật toán mã hóa RSA:
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí
mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa
và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã
hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng
khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có
người biết khóa cá nhân mới có thể giải mã được.
Một ví dụ trực quan: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn
duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc
hộp có khóa đã mở và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy
viết thư bình thường và khóa lại (lúc này ngay cả Bob cũng không thể đọc lại hay sửa
thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp
21


với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa
mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.
6.2 Lịch sử cuộc cách mạng toán học mã RSA
Khi phương pháp mã khóa công khai chưa ra đời, người ta sử dụng hầu như cùng
một “khóa” để mã hóa cũng như giải mã chung cho cả người gửi và người nhận thông
tin (hệ mã đối xứng). Với hệ mã này, một trong những khó khăn lớn của ngành an ninh
và mã hóa lúc đó là làm sao gửi an toàn chìa khóa bí mật trên các kênh truyền tin công
khai có nhiều người tham gia.


Hình 1.5: Ba nhà khoa học Shamir, Rivest và Adleman
Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của Cơ Quan
Truyền Thông Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng rằng: Nếu người nhận
tin đưa một nhiễu nào đó lên đường truyền công khai mà chỉ riêng anh ta biết cách khử
nhiễu, thì mọi thông tin mật gửi đến cho anh ta đều có thể đưa lên kênh truyền tin công
khai đó. Những người khác, dù bắt được tín hiệu cũng không thể nào giải mã được tin
mật.
Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng 'hàm một
chiều' Theo đó, chỉ có thể tìm hàm ngược nếu biết thông tin nào đó, giống như khôi

22


phục tín hiệu khi biết cái nhiễu do mình tạo ra. Nhưng ông không thực hiện được điều
này, do không biết liệu hàm một chiều có tồn tại hay không.
Bốn năm sau Clifford Cocks- một nhân viên mới của GCHQ- được Patterson kể
cho nghe ý tưởng của James Ellis và ông đã tìm ra hàm một chiều cần thiết chỉ trong
vòng nửa giờ: đó chính là phép nhân! Nhân hai số nguyên tố lớn bao nhiêu cũng được
là điều hết sức dễ dàng, nhưng khi biết tích của chúng, để tìm lại các thừa số thì ta cần
phân tích số đã cho ra thừa số nguyên tố. Điều này hầu như không thể làm được với
các số đủ lớn. Thật vậy, để phân tích (n =p*q) ra thừa số nguyên tố, cần chia lần lượt n
cho các số nguyên tố nhỏ hơn. Theo một định lý nổi tiếng trong số học, có khoảng
(n/log n) số nguyên tố bé hơn n. Nếu n có khoảng 300 chữ số thì sẽ phải làm khoảng
10150/300 phép chia. (Nếu dùng máy tính tốc độ 1 tỷ phép tính/giây, ta sẽ mất chừng..
tỷ tỷ tỷ năm để phân tích số n!). Như vậy, hàm số thiết lập sự tương ứng giữa hai số p,
q với tích n=p*q chính là hàm một chiều. Giải pháp thật đơn giản và Cocks cũng không
tự cảm nhận được đầy đủ ý nghĩa của kết quả đạt được. Kết quả của Cocks được giữ
tuyệt mật. Nó có sức thuyết phục lớn trong nội bộ GCHQ. Nhưng phương tiện tính
toán thời đó không cho phép triển khai thuật toán. Năm 1978, kết quả của Cocks được

Rivest, Shamir và Adleman phát triển tạo nên cuộc cách mạng trong lĩnh vực mật mã,
cuộc cách mạng RSA.
6.3 RSA, cuộc cách mạng của các nhà toán học
Hệ mã RSA đã đưa đến một cuộc cách mạng thực sự. Giờ đây, với hệ mã RSA,
không cần phải gửi chìa khóa giải mã cho người nhận thông tin nữa. Hệ mã RSA sử
dụng 2 khóa. Khóa lập mã của tôi được công khai với người ta (để người ta có thể gửi
thông tin mã hóa cho tôi), còn khóa giải mã của tôi là khóa riêng tôi giữ, do đó chỉ tôi
mới có thể đọc được thông tin mã hóa người đó gửi, còn người khác không thể tìm ra
khoá giải mã trong một thời gian chấp nhận được.
Từ khi RSA ra đời đến nay, có nhiều hệ mã với các hàm một chiều khác nhau
được đưa ra. Tuy nhiên, chỉ có RSA và hệ mã gần với nó, là được sử dụng rộng rãi, vì
người ta có thể tin hàm được dùng đúng là hàm một chiều.
23


6.4 RSA và chính phủ điện tử
Trong chính phủ điện tử, có hai điều quan trọng. Một là, làm thế nào để bảo đảm
các văn bản trao đổi qua mạng không bị thay đổi nội dung (đảm bảo tính toàn vẹn của
văn bản). Hai là, làm thế nào để xác minh người gửi văn bản đó (xác nhận chủ thể).
RSA cũng như các hệ mã khóa công khai khác đã giải quyết trọn vẹn 2 vấn đề đặt ra.
Tuy nhiên, tốc độ mã hóa của RSA rất chậm (gấp chừng 1000 lần so với các hệ mã đối
xứng), nên với các văn bản lớn, việc mã hoá bằng RSA là không khả thi. Do vậy, RSA
được ứng dụng để giải quyết các vấn đề trên theo một số phương thức riêng.
Thí dụ: xác nhận “giá trị băm” thay vì xác nhận văn bản, dùng kết hợp mã đối
xứng, như DES, IDEA ( để mã hoá văn bản) và RSA (để mã hóa chìa khóa )..
Ngày nay, các hệ mã khóa công khai và các tiện ích đi kèm đã được thương mại
hóa. Bạn có thể mua trên thị trường hoặc tải từ Internet về để dùng. Tuy nhiên, độ an
toàn của các sản phẩm như vậy không cao. Như đã phân tích trên đây, vấn đề là phải có
những số nguyên tố lớn để lập khóa. Không ai cho ta biết rằng, trong hệ mã mà ta mua
về, các số nguyên tố được dùng đã sinh ra như thế nào. Chúng ngẫu nhiên đến mức

nào, hay là đã có sẵn trong một kho của người làm khóa. Và nếu cần, người bán cho ta
có thể tìm ra khóa giải mã của bằng cách duyệt toàn bộ cái kho mà anh ta đã biết rõ.
Cho đến nay, người ta vẫn tin rằng RSA là không thể phá được. Điều này không
còn chính xác nữa, vì đã có một số phương pháp tấn công RSA đã được công bố mặc
dù vẫn chưa đưa ra chương trình hoàn chỉnh.
6.5 Quy trình tạo khóa , mã hóa và giải mã RSA
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an
toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp
khóa gồm khóa công khai và khóa bí mật theo các bước sau:
-

Chọn 2 số nguyên tố lớn p và q với p≠q, lựa chọn ngẫu nhiên và độc lập.

-

Tính: N=p*q

24


-

Tính: Ф(N) = (p-1)(q-1)

-

Chọn một số tự nhiên e sao cho 1 < e <Ф(N) và là số nguyên tố cùng nhau
với Ф(N)

-


Tính: d sao cho de ≡ 1 (mod Ф(N)) (hay d= (1 + i * Phi_N) / E) với i= 1, n
Khóa công khai: Ku = {e, N}
Khóa bí mật: Kprl = {d, p, q}

Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p
và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi biết
e. Nếu không sử dụng dạng sau của khóa bí mật thì p và q sẽ được xóa ngay sau khi
thực hiện xong quá trình tạo khóa.
a, Mã hóa:
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành
một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa
thuận trước.
Mm
Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa
của m theo công thức:
C=m*e mod N
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ bằng phương
pháp bình phương. Cuối cùng Bob gửi C cho Alice.
b, Giải mã:
Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm được m từ c theo công
thức sau:
m = c*d mod N

25


×