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

Mã hoá bảo mật thông tin và ứng dụng trong thương mại đ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 (1.7 MB, 94 trang )



ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ


NGUYỄN VIỆT PHƢƠNG








Mã hoá bảo mật thông tin và ứng dụng
trong thƣơng mại điện tử







LUẬN VĂN THẠC SĨ CÔNG NGHỆ














Hà Nội, 2003

Mục lục
Lời mở đầu 4
Chương 1: Giới thiệu khái quát về mã hoá và bảo mật thông tin 6
1.1 Lịch sử của mã hoá 7
1.2 Định nghĩa mã hoá 11
1.3 Mục tiêu của hệ thống mã hoá 16
1.3.1 Xác thực người sử dụng (User Authentication) 16
1.3.2 Xác thực thông tin (Data authentication) 17
1.3.3 Chống phủ nhận thông tin (Non-repudiation of origin) 18
1.3.4 Bảo vệ tính riêng tư của thông tin (Data confidentiality) 18
Chương 2: Các phương pháp mã hoá và bảo mật thông tin 19
2.1 Mã hoá đối xứng 20
2.2 Mã hoá bất đối xứng 22
2.3 Mã hoá thông tin theo luồng và mã hoá thông tin theo khối
(Stream and Block Ciphers) 27
2.3.1 Mã hoá theo khối 27
2.3.2 Mã hoá theo luồng dữ liệu (Stream Cipher) 29
2.4 Một số thuật toán mã hoá đối xứng được công khai phổ biến 30
2.4.1 Data Encryption Standard (DES) 31
2.4.2 Thuật toán mã hoá 3DES 38
2.4.3 Advanced Encryption Standard (AES) 38

2.5 Một số loại mã hoá bất đối xứng 41
2.5.1 RSA 41
2.5.2 El Gamal 42
2.5.3 Elliptic Curve Cryptosystems (ECCs) 42
2.6 Các phương pháp mã hoá lai (hybrid) 42
2.6.1 Hệ thống khoá mã công khai 43
2.6.2 Khoá mã phiên (session key) 46
Chương 3: Ứng dụng các hệ thống mã hoá trong môi trường thương mại
điện tử 48
3.1 Hạ tầng cơ sở hệ thống khoá mã công khai - PKI 48
3.1.1 Đơn vị cấp phát chứng chỉ - CA 49
3.1.2 Chứng chỉ (Certificates) 51

3.1.3 Đơn vị đăng ký (Registration Authority) 51
3.1.4 Các bước trong PKI 52
3.2 Hàm một chiều và chữ ký điện tử 53
3.2.1 Tính toàn vẹn của thông tin 54
3.2.2 Hàm Hash một chiều 55
3.2.3 Hàm một chiều sử dụng trong mã hoá so với hàm hash một
chiều 56
3.2.4 Chữ ký điện tử (Digital Signatures) 56
3.2.5 Tiêu chuẩn chữ ký điện tử Quốc gia Hoa kỳ - DSS 59
3.2.6 Các thuật toán Hash 59
3.3 Quản lý khoá mã 61
3.3.1 Nguyên tắc quản lý khoá mã 63
3.4 Bảo mật Internet 65
3.4.1 HTTP 65
3.4.2 S-HTTP 66
3.4.3 HTTPS 67
3.4.4 SSL 67

3.4.5 MIME 68
3.4.6 S/MIME 69
3.4.7 Bảo mật các thông tin giao dịch trực tuyến - SET 69
3.4.8 Cookies 70
3.4.9 SSH 71
3.4.10 IPSec 72
Chương 4: Nghiên cứu triển khai ứng dụng xác thực người sử dụng bằng
hệ thống RSA SecurID 76
4.1 Tầm quan trọng của vấn đề xác thực người sử dụng 76
4.2 SecurID và phương pháp xác thực truy nhập hai thành phần 77
4.3 Mô hình tổng quan hệ thống bảo mật SecurID, các thành phần và
chức năng cơ bản 80
4.3.1 RSA ACE/Server 81
4.3.2 Thẻ RSA SecurID 83
4.3.3 RSA ACE/Agents 84
4.4 Quản lý và phát triển hệ thống bảo mật SecurID 86
4.4.1 Quản lý an ninh hệ thống 86
4.4.2 Cấp phát và thay thế thẻ SecurID 87
4.4.3 Tự động phát triển hệ thống bảo mật với trình duyệt Web 88

4.4.4 Thiết lập các báo cáo theo yêu cầu 88
4.5 Những ưu điểm nổi bật của hệ thống bảo mật RSA SecurID 88
4.5.1 Khả năng bảo mật và tính ổn định cao, sẵn sàng đáp ứng các
yêu cầu bảo mật trong tương lai 89
4.5.2 Quản lý tập trung, dễ dàng 89
4.5.3 Đơn giản, hiệu quả độ an toàn cao 89
Kết luận 91
Tài liệu tham khảo 93
– 4 –
LỜI MỞ ĐẦU

Ngày nay chúng ta đang sống trong kỷ nguyên của công nghệ thông tin và thương
mại điện tử với phần lớn cơ sở dữ liệu, giao dịch và đàm phán thương mại của các
tổ chức, doanh nghiệp đều được lưu trữ, thực hiện thông qua các hệ thống mạng
máy tính.
Tuy nhiên, trộm cắp thông tin và tội phạm máy tính ngày càng gia tăng với mức độ
nguy hiểm ngày càng nghiêm trọng hơn. Theo những nghiên cứu gần đây của Cục
điều tra Liên bang Mỹ (FBI) và Tổ chức Bảo mật Máy tính (CSI), trong vòng 12
tháng qua 85% trong số các công ty được hỏi thừa nhận rằng hệ thống của họ có
những lỗ hổng bảo mật. Và theo báo cáo tổn thất tài chính từ các công ty này, tổng
số thiệt hại lên đến 377 triệu USD - tăng 42% so với mức thiệt hại 265 triệu USD
trong năm 2000. Trong số này, mức độ thiệt hại do trộm cắp thông tin là 151 triệu
USD và do gian lận thương mại là 93 triệu USD – những con số rất lớn mặc dù số
vụ trộm cắp, gian lận thông tin không nhiều bằng số vụ virus tấn công hay số vụ
trộm cắp máy tính cá nhân. Chính vì vậy vấn đề đảm bảo an toàn cơ sở dữ liệu,
thông tin cá nhân là vấn đề sống còn của bất kỳ một tổ chức nào và bảo mật thông
tin là nền móng cơ bản để phát triển các dịch vụ thương mại điện tử.
Tại Việt Nam, sau bước đầu hoàn thành quá trình tin học hoá, thiết lập các mạng
máy tính cục bộ nhằm chia sẻ dữ liệu, trao đổi thông tin…, các ban nghành, tổ chức
và các doanh nghiệp đã bắt đầu lập các website, quảng bá thông tin, cho phép truy
vấn thông tin và tiến hành giao dịch trực tuyến thông qua mạng Internet. Vì lý do
đó, vấn đề bảo mật mạng máy tính, hạn chế sự tấn công, phá hoại của tin tặc
(hacker) đã bắt đầu thu hút được nhiều sự quan tâm, chú ý và trở thành đề tài nóng
bỏng trong thời gian gần đây.
Bảo mật mạng máy tính có nhiều khía cạnh nhưng chủ yếu được chia thành hai
loại:
1. Bảo mật hệ thống máy tính, chống lại các cuộc thâm nhập bất hợp pháp
bằng cách thiết lập, sử dụng các hệ thống Firewall, IDS,…
– 5 –
2. Chống lại việc gian lận, ăn cắp, sửa đổi thông tin giao dịch trên mạng
bằng cách thiết lập các hệ thống mã hoá thông tin, chữ ký điện tử…

Tầm quan trọng và tính cấp bách của việc an toàn bảo mật thông tin khi Việt Nam
đang từng bước phát triển thương mại điện tử đã thôi thúc tôi lựa chọn đề tài: “Mã
hoá bảo mật thông tin và ứng dụng trong thương mại điện tử”.
Mục đích cơ bản của tôi khi lựa chọn và thực hiện luận án này bao gồm:
 Nghiên cứu, nắm bắt cơ chế hoạt động của các phương pháp mã hoá
 Tìm hiểu khả năng ứng dụng các phương pháp mã hoá vào trong thực tiễn
nói chung và vào trong lĩnh vực thương mại điện tử nói riêng
 Tìm hiểu các vấn đề trở ngại về mặt công nghệ trong việc phát triển thương
mại điện tử ở Việt Nam và nghiên cứu phương hướng giải quyết
Bản luận án này được chia làm bốn chương:
Chương 1: Giới thiệu khái quát về mã hoá và bảo mật thông tin
Chương 2: Các phương pháp mã hoá và bảo mật thông tin
Chương 3: Ứng dụng các hệ thống mã hoá trong môi trường thương mại
điện tử
Chương 4: Nghiên cứu triển khai ứng dụng xác thực người sử dụng bằng hệ
thống RSA SecurID

– 6 –
CHƢƠNG 1: GIỚI THIỆU KHÁI QUÁT VỀ MÃ HOÁ
VÀ BẢO MẬT THÔNG TIN
Từ cryptology (chuyên khoa mật mã) có nguồn gốc từ tiếng Hy Lạp cổ đại và được
cấu tạo bởi hai thành phần: “cryptos” có nghĩa là che giấu, “logos” có nghĩa là từ
ngữ. Chuyên khoa mật mã đã có từ lâu đời, những phương pháp mã hoá đầu tiên
xuất hiện khoảng 4000 năm trước đây được coi là một nghệ thuật và được sử dụng
chủ yếu cho mục đích bảo vệ các thông tin trong quân sự, các thông điệp trong
quan hệ bang giao. Một ví dụ điển hình là đế chế Julius Caesar nổi tiếng thời La mã
cổ đại thường sử dụng lối viết chữ đan xen (cipher) để mã hoá các thông điệp gửi
cho quân đội của ông ta. Trải qua thời gian, các cá nhân cũng như các tổ chức chính
phủ đã nghiên cứu phát triển nhiều phương thức, thuật toán mã hoá có độ phức tạp
cao hơn, áp dụng rộng rãi trong nhiều lĩnh vực hơn khiến mã hoá thông tin dần trở

thành một phần quan trọng trong thế giới vi tính.
Chuyên khoa mật mã có thể được chia thành hai nghành khác nhau: mã hoá
(cryptography) và phá mã (cryptanalysis) [5].
Mã hoá là phương pháp lưu trữ và truyền thông tin dưới dạng sao cho chỉ có những
người có thẩm quyền mới đọc và xử lý được. Mã hoá là một phương pháp hiệu quả
để bảo vệ các thông tin nhạy cảm khi lưu trữ hoặc khi truyền trên các kênh truyền
thông.
Mặc dù mục tiêu cơ bản của mã hoá là bảo vệ, che giấu thông tin khỏi con mắt của
những kẻ tò mò bất hợp pháp, nhưng phần lớn các thuật toán đều có thể bị phá vỡ
và thông tin được giải mã (một cách bất hợp pháp) nếu kẻ tấn công có đủ thời gian
và các phương tiện cần thiết.
Phá mã là một lĩnh vực khoa học nhằm nghiên cứu độ an toàn và tìm cách phá vỡ
các thuật toán mã hoá cũng như các thành phần của chúng. Việc nghiên cứu độ an
toàn của thuật toán có thể tiến hành bởi các viện nghiên cứu nhằm tìm ra những
điểm yếu để ngăn chặn những kẻ gian lận, phá hoại hoặc tiến hành bởi các kẻ tấn
công (hackers) với mục đích thoả mãn trí tò mò và tìm cách gian lận, trộm cắp
– 7 –
thông tin.
Các chuyên gia mã hoá (cryptographer) nghiên cứu cải tiến và phát triển các thuật
toán nhằm bảo vệ và mã hoá thông tin còn các chuyên gia phá mã (cryptanalyst) thì
tìm cách giải mã, phá vỡ hệ thống do các chuyên gia mã hoá xây dựng lên. Mục
tiêu của các chuyên gia phá mã có thể không tốt nhưng những nỗ lực của họ, cộng
với sự phát triển mạnh mẽ sức mạnh xử lý của máy tính phần nào đã tác động
ngược trở lại, thôi thúc các chuyên gia mã hoá làm việc tốt hơn và thúc đẩy ngành
mã hoá phát triển nhanh hơn.
1.1 Lịch sử của mã hoá
Mã hoá có nguồn gốc khoảng 2000 năm trước công nguyên khi người Ai Cập cổ
đại sử dụng chữ tượng hình trang trí trên hầm mộ để miêu tả cuộc sống của người
đã khuất. Thực chất hành động này không nhằm che giấu thông tin, nhưng làm cho
hầm mộ trở nên lộng lẫy hơn, sang trọng hơn, tức là ẩn chứa một thông điệp rằng

người đã khuất thuộc một dòng tộc cao quý (hình 1.1) [6].

Hình 1.1: Chữ viết tượng hình đầu tiên
được sử dụng như một dạng mã hoá
Trong thực tế, mã hoá là phương pháp chủ yếu dùng để che giấu thông tin để những
người không có thẩm quyền không thể đọc được.
– 8 –
Người Hebrew sử dụng phương pháp mã hoá bằng cách tráo đổi các ký tự. Mỗi một
ký tự sẽ được gán tương ứng với một ký tự khác trong bảng chữ cái. Phương pháp
mã hoá này được gọi là atbash. Một ví dụ của từ khoá được sử dụng trong phương
pháp mã hóa atbash như sau:
ABCDEFGHI JK LMNOPQ R STU VW XYZ
ZYXWVUTSR QP ONMLKJ I HGF ED CBA
Khi đó từ “security” sẽ được mã hoá thành “hvxfirgb”. Đây là loại mã viết chữ đan
xen với các chữ cái được thay bằng chữ khác (substitution cipher). Cách viết đan
xen này còn được gọi là mã thay thế ký tự đơn lẻ (monoalphabetic substitution).
Một số cách viết khác sử dụng nhiều ký tự khác nhau để thay thế cho một ký tự.
Khoảng 400 năm trước Công nguyên, những người Spartans sử dụng hệ thống mã
hoá thông tin bằng cách viết các thông điệp lên những mảnh giấy cói quấn quanh
một cây quyền trượng. Thông điệp chỉ có thể đọc được khi mảnh giấy cói quấn
quanh cây quyền trượng có kích thước thích hợp. Phương pháp này được gọi
phương pháp viết chữ đan xen kiểu scytale (scytale cipher). Khi mảnh giấy cói
được tháo ra khỏi cây quyền trượng, các chữ viết trên mảnh giấy cói xuất hiện dưới
dạng một chuỗi các ký tự ngẫu nhiên. Những mảnh giấy cói chứa thông điệp được
truyền đến các chiến binh. Khi các chiến binh quấn mảnh giấy cói quanh cây quyền
trượng có đường kính và chiều dài thích hợp, các ký tự ngẫu nhiên sẽ sắp xếp theo
một trật tự xác định và thông điệp cần truyền tải sẽ hiện ra (hình 1.2) [6].

Hình 1.2: Cây quyền trượng được người Spartans
dùng để giải mã các thông điệp

Ngày nay các kỹ thuật này quá đơn giản nhưng thời đó rất ít người có thể đọc được
nên kỹ thuật ấy là một phương pháp để bảo vệ thông tin hiệu quả có độ an toàn cao.
– 9 –
Cuộc cách mạng mã hoá tiếp tục phát triển khi người châu Âu phát minh ra những
phương pháp và công cụ mã hoá mới dùng trong suốt thời kỳ Trung đại. Đến cuối
những năm 1800, mã hoá đã được sử dụng phổ biến trong các liên lạc truyền tin
giữa các đơn vị quân đội.
Trong cuộc chiến tranh Thế giới lần thứ II, các thiết bị mã hoá đơn giản đã được cải
tiến đáng kể bằng các kỹ thuật cơ khí, điện từ tạo ra các thiết bị truyền tin điện báo
và sử dụng sóng vô tuyến.
Chiếc máy mã hoá sử dụng các trục quay rotor khác nhau để tạo ra thông điệp phức
tạp rất khó giải mã là một bước đột phá quan trọng trong lĩnh vực mã hoá thông tin
quân sự. Chiếc máy nổi tiếng nhất do người Đức chế tạo có tên là Enigma. Chiếc
máy Enigma có 3 trục quay, một bàn phím và một trục quay hồi tiếp. Từ khoá gốc
được cấu hình cho máy trước khi tiến hành quá trình mã hoá. Khi người điều khiển
gõ một ký tự, máy sẽ thay thế ký tự ấy bằng một ký tự khác và trả về cho người
điều khiển. Quá trình mã hoá này được thực hiện bằng cách tịnh tiến trục quay một
số lần định trước để thay thế ký tự gõ vào bằng một ký tự khác. Nếu người điều
khiển gõ vào chữ T, máy Enigma có thể trả về ký tự M. Người điều khiển viết ký tự
M ra giấy rồi tịnh tiến trục quay và nhập ký tự tiếp theo. Sau mỗi một ký tự mã hoá,
người điều khiển lại tịnh tiến trục quay đến một vị trí mới. Quá trình này tiếp diễn
cho đến khi toàn bộ thông điệp được mã hoá. Việc lựa chọn ký tự thay thế cho từng
ký tự phụ thuộc vào cấu hình của trục quay. Do đó bí mật của quá trình xử lý này
(khoá mã) là cách người điều khiển tịnh tiến trục quay khi mã hoá và giải mã thông
tin.
Người điều khiển tại hai đầu phải thống nhất quy tắc tịnh tiến này để điều khiển
trục quay cho phù hợp. Mặc dù tại thời điểm đó, cơ chế mã hoá của máy Enigma
khá phức tạp nhưng một nhóm kỹ sư người Ba lan đã giải mã thành công và cung
cấp các thông tin về kế hoạch tấn công, di chuyển quân sự của người Đức cho
người Anh. Có thể nói rằng việc phá mã thành công đã giúp kết thúc chiến tranh

Thế giới lần thứ II sớm hơn 2 năm [6]. Sau chiến tranh, thông tin chi tiết về chiếc
máy Enigma được công bố rộng rãi, một trong những chiếc máy này hiện đang
được trưng bày tại học viện Smithsonian Institute. [6]
– 10 –
Mã hoá có một lịch sử lâu dài và phong phú trong đó quân sự là một lĩnh vực lớn
sử dụng mã hoá để che giấu các thông tin quân sự cũng như để phá mã các thông
tin của đối phương. William Frederick Friedman tác giả của cuốn sách “Lý thuyết
ngẫu nhiên và ứng dụng trong mã hoá” được coi là cha đẻ của nghành mã hoá hiện
đại và ông là người đã phá mã được rất nhiều thông điệp quân sự trong chiến tranh
Thế giới thứ II [1].
Với sự phát triển của máy tính, các thuật toán, thiết bị và ứng dụng mã hoá đã phát
triển mạnh mẽ. Kỷ nguyên công nghệ thông tin đã đem lại những cơ hội chưa từng
thấy cho các chuyên gia nghiên cứu mật mã. Dự án nổi tiếng nhất và thành công
nhất là dự án phát triển thuật toán mã hoá Lucifer do IBM phát triển. Thuật toán
Lucifer bao gồm rất nhiều hàm và phương trình toán học phức tạp đã được Cơ quan
An ninh Quốc gia Hoa kỳ chấp thuận và sửa đổi thành tiêu chuẩn mã hoá quốc gia
Hoa kỳ - DES (Data Encryption Standard) [6]. DES đã được chấp thuận thành một
tiêu chuẩn liên bang và được sử dụng rộng rãi trong các giao dịch tài chính cũng
như trong các ứng dụng thương mại. Thuật toán DES có một lịch sử phong phú
trong các thuật toán mã hoá phát triển bằng máy tính và đã được sử dụng rộng rãi
trên 20 năm nay.
Ngày nay, mã hoá thông tin đã có một vai trò rất quan trọng trong đời sống kinh tế,
chính trị. Các thuật toán mã hoá được bảo vệ bởi tổ chức chính phủ và luật pháp.
Việc phát triển các chip chuyên dụng để giải mã đường truyền (ví dụ như Clipper
Chip) đã bị chính phủ một số nước liệt vào hành vi phạm pháp tương đương với
việc buôn bán sử dụng ma tuý (tất nhiên việc này cũng dấy lên nhiều làn sóng công
kích đòi hỏi quyền riêng tư và chống lại quyền nghe trộm của chính phủ).
Với sự phát triển của mã hoá, phần lớn các giao thức được phát triển từ thuở sơ
khai của máy tính đều được cập nhật bổ sung thêm tính năng mã hoá để đảm bảo
khả năng bảo mật thông tin. Mã hoá đã được sử dụng rộng rãi trong cả phần cứng

lẫn phần mềm để bảo vệ dữ liệu, các giao dịch ngân hàng, mạng extranet, thư tín
điện tử, giao dịch trên web, giao dịch trên mạng không dây, lưu trữ thông tin…
Con người ngày càng lệ thuộc vào sự phát triển của công nghệ, do đó con người sẽ
ngày càng lệ thuộc vào mã hoá, bởi vì bí mật luôn cần phải giữ kín.
– 11 –
1.2 Định nghĩa mã hoá
Mã hoá là phương pháp biến đổi dữ liệu ban đầu gọi là cleartext hay plaintext thành
dạng xuất hiện ngẫu nhiên không thể đọc được - gọi là ciphertext. Plaintext có thể
là các hình thức thông tin mà con người có thể hiểu được (văn bản) hoặc là dạng dữ
liệu mà máy tính có thể hiểu được (mã máy). Khi được biến đổi thành dạng
ciphertext, cả máy tính và con người đều không thể hiểu và xử lý được cho đến khi
nó được giải mã. Quá trình mã hoá cho phép truyền các thông tin bí mật qua các
kênh thông tin có tính chất không an toàn. Khi dữ liệu được lưu trữ trên máy tính,
dữ liệu có thể được đảm bảo an toàn bằng cách kiểm soát truy nhập về mặt logic và
về mặt vật lý. Tuy nhiên khi các thông tin nhạy cảm này truyền trên mạng, việc
kiểm soát truy nhập về mặt logic và vật lý không còn thực hiện được và thông tin
rất dễ bị rò rỉ [1].

Hình 1.3: Quá trình mã hoá biến đổi plaintext thành ciphertext
và giải mã biến đổi ciphertext thành plaintext
Plaintext thường được gọi là
M
(có nghĩa là thông điệp - message) hoặc là
P
.
Plaintext có thể là một chuỗi bits, một file văn bản, đồ hoạ hoặc một chuỗi âm
thanh được số hoá… Trong lĩnh vực máy tính,
M

P

thường được hiểu là dữ
liệu dạng cơ số nhị phân [1]. Plaintext có thể dùng để truyền hoặc để lưu trữ và
trong mọi trường hợp
M
,
P
là thông tin cần phải mã hoá.
Ciphertext được gọi là
C
và cũng có dạng mã nhị phân. Đôi khi ciphertext có kích
thước như
M
, đôi khi có kích thước lớn hơn [1]. Bằng việc kết hợp mã hoá với nén
dữ liệu,
C
có thể có kích thước nhỏ hơn
M
. Tuy nhiên mã hoá không thực hiện
nhiệm vụ này. Hàm mã hoá là
E
thao tác trên
M
tạo ra
C
. Ta có thể viết dưới
dạng biểu thức toán học như sau:
 
CME 

Trong quá trình ngược lại, hàm giải mã

D
thao thác trên
C
để tạo ra
M
:
– 12 –
 
MCD 

Do toàn bộ quá trình mã hoá rồi giải mã thông tin để khôi phục lại thông tin dạng
plaintext ban đầu nên ta có thể viết:
  
MMED 

Một hệ thống cho phép mã hoá và giải mã được gọi là hệ thống mã hoá
(cryptosystem). Hệ thống mã hoá có thể được tạo bởi các phần cứng chuyên dụng
hoặc bởi các đoạn chương trình trong phần mềm ứng dụng. Các hệ thống mã hoá có
thể sử dụng các thuật toán đơn giản hoặc phức tạp khác nhau nhưng nhìn chung các
thuật toán này là tập hợp những phép toán phức tạp biến đổi chuỗi plaintext. Phần
lớn các phương pháp mã hoá đều sử dụng một giá trị bí mật - thường là một chuỗi
dài các bit gọi là khoá mã (key) để kết hợp với thuật toán làm nhiệm vụ mã hoá và
giải mã [6].

Hình 1.4: Khoá mã chèn vào thuật toán
áp dụng lên thông điệp để tạo ra ciphertext
Thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là một tập hợp
các hàm toán học dùng trong tiến trình mã hoá và giải mã. Thông thường có hai
hàm tương quan với nhau, một hàm dùng cho quá trình mã hoá và một hàm dùng
cho quá trình giải mã.

Nếu độ an toàn của một thuật toán dựa vào việc giữ bí mật các bước xử lý bên
trong của thuật toán, thuật toán đó được gọi là thuật toán bị giới hạn (restricted
algorithm). Về mặt lịch sử, các thuật toán bị giới hạn khá được ưa chuộng, tuy
nhiên ngày nay các thuật toán như vậy không phù hợp với các tiêu chuẩn và rất khó
– 13 –
được chấp nhận rộng rãi [1]. Một cộng đồng lớn có số thành viên thường xuyên
thay đổi không thể sử dụng được những thuật toán này do mỗi khi một thành viên
rời khỏi nhóm, những thành viên còn lại trong nhóm phải chuyển sang sử dụng một
thuật toán khác. Nếu một người tình cờ (hay hữu ý) khám phá ra bí mật của thuật
toán, tất cả mọi người phải thay đổi thuật toán.
Tệ hơn, các thuật toán bị giới hạn không cho phép thực hiện các quy trình giám sát
chất lượng và tiêu chuẩn. Mỗi một nhóm người phải có một thuật toán riêng.
Những nhóm người đó không thể sử dụng các thiết bị phần cứng hoặc phần mềm
có sẵn, họ phải tự nghiên cứu thuật toán và tự triển khai hệ thống cho riêng mình.
Nếu thành viên trong nhóm phát triển không phải là các chuyên gia giỏi thì khó có
thể đánh giá chính xác mức độ an toàn của thuật toán và nếu một thành viên trong
nhóm phát triển rời khỏi nhóm thì không có gì đảm bảo thuật toán đó sẽ được giữ
bí mật.
Mặc dù có những hạn chế như trên, các thuật toán bị giới hạn vẫn được sử dụng
rộng rãi trong các ứng dụng có độ bảo mật thấp bởi vì người sử dụng có thể không
nhận ra hoặc không thực sự quan tâm đến các vấn đề rủi ro tiềm ẩn trong hệ thống
của họ.
Các hệ thống mã hoá hiện đại giải quyết vấn đề trên bằng cách sử dụng khoá mã,
gọi là
K
. Khoá mã này có thể là một giá trị ngẫu nhiên trong một số rất lớn các giá
trị. Khoảng chứa các giá trị có thể dùng làm khoá mã được gọi là khoảng mã
(keyspace). Khoảng mã càng lớn thì số lượng khoá mã có thể có càng lớn và kẻ tấn
công càng cần nhiều thời gian để dò tìm khoá mã [6].
– 14 –


Hình 1.5: Khoảng mã lớn hơn cho phép lựa chọn nhiều khóa mã hơn
Nếu kẻ nghe trộm bắt được thông tin truyền giữa hai người, kẻ nghe trộm có thể
xem được nội dung thông tin. Nhưng do các thông tin ấy được mã hoá nên kẻ nghe
trộm không thể hiểu được nội dung thông tin. Thậm chí nếu kẻ nghe trộm biết được
thuật toán mã hoá sử dụng nhưng nếu không có khoá mã thích hợp, kẻ nghe trộm
cũng không thể giải mã được thông tin. Như vậy thông tin nghe trộm được trở nên
không có giá trị.

Hình 1.6: Nếu không có khoá mã thích hợp,
thông tin trở nên không có giá trị đối với kẻ nghe trộm
Cả hai quá trình mã hoá và giải mã đều sử dụng khoá mã và có thể biểu thị dưới
– 15 –
dạng biểu thức toán học như sau:
 
CME
K


 
MCD
K


Các biểu thức này có tính chất:

  
MMED
KK



Những thuật toán mã hoá sử dụng chung một khoá mã để mã hoá và giải mã được
gọi là thuật toán mã hoá đối xứng (hình 1.7a). Những thuật toán mã hoá sử dụng
khoá mã để mã hoá và để giải mã khác nhau gọi là thuật toán mã hoá bất đối xứng
(hình 1.7b). Gọi
1
K
là khoá dùng để mã hoá và
2
K
là khoá dùng để giải mã, ta có:
 
CME
K

1

 
MCD
K

2

 
 
MMED
KK

12


Độ an toàn của các thuật thuật toán theo mô hình này hoàn toàn phụ thuộc vào khoá
mã mà không phụ thuộc vào thuật toán [1]. Điều này cũng có nghĩa là thuật toán
mã hoá có thể được công bố rộng rãi và được phân tích kỹ lưỡng.
Encryption Decryption
CipheretextPlaintext
Original
Plaintext
KeyKey

Hình 1.7a: Mã hoá và giải mã với cùng một khoá mã
Encryption Decryption
CipheretextPlaintext
Original
Plaintext
Decryption
Key
Encryption
Key

Hình 1.7b: Mã hoá và giải mã với hai khoá mã khác nhau
– 16 –
1.3 Mục tiêu của hệ thống mã hoá
Các hệ thống mã hoá hiện đại được phát triển nhằm đảm bảo 4 mục đích: xác thực
người sử dụng (user authentication), xác định tính toàn vẹn và nguồn gốc của thông
tin (data authentication), chống phủ nhận nguồn gốc thông tin (non-repudiation) và
đảm bảo tính riêng tư hay an toàn của thông tin (privacy or data confidentiality) [5].
1.3.1 Xác thực ngƣời sử dụng (User Authentication)
Khi người sử dụng muốn truy nhập vào một hệ thống máy tính, thông thường, bằng
cách này hay cách khác, người sử dụng cần cung cấp các thông tin nhận dạng cho
máy tính. Khi nhận được các thông tin ấy, máy tính kiểm tra xem người sử dụng có

được quyền truy nhập vào hệ thống không. Đây cũng là nguyên tắc cơ bản được áp
dụng cho một người khi muốn trao đổi thông tin với người khác: trước tiên cần
phải xác định người đang tham gia trao đổi thông tin có đúng là người muốn trao
đổi không. Do đó cần phải có một số phương thức để cung cấp đặc điểm nhận dạng
nhằm đảm bảo người đang trao đổi thông tin là hợp lệ. Quá trình này được gọi là
xác thực định danh người sử dụng (user authentication).
Có rất nhiều cách để xác thực: người sử dụng có thể cung cấp các thông tin mà chỉ
người đó mới biết như mật khẩu (password), số hiệu người sử dụng (user-id), mã số
cá nhân (pin code), hoặc người đó cũng có thể cung cấp các thông tin riêng khác
như số chứng minh thư, thẻ từ, thẻ thông minh (smart card)… Ngoài ra, người sử
dụng cũng có thể dùng các đặc tính sinh học khác như dấu vân tay, hình dạng bàn
tay, đặc điểm võng mạc mắt. Các phương thức này đòi hỏi phải có các thiết bị đặc
biệt và cần các khoản đầu tư lớn. Tuy nhiên, các hệ thống sinh trắc học này không
thật hoàn hảo và đôi khi những người sử dụng hợp lệ lại bị từ chối không được truy
nhập hệ thống còn những kẻ thâm nhập bất hợp pháp lại được cấp quyền như một
người truy nhập hợp lệ [5].
Một cơ chế khác thường được sử dụng để nâng cao khả năng xác thực người sử
dụng đó là challenge - response (yêu cầu - đáp ứng). Nguyên tắc chung của phương
pháp này là khi người sử dụng muốn truy nhập vào hệ thống, hệ thống sẽ tạo ra một
mã challenge ngẫu nhiên gửi đến cho người sử dụng. Căn cứ vào mã challenge
– 17 –
nhận được, kết hợp với một số thông tin bí mật của mình, người sử dụng tạo ra một
mã response gửi trả về hệ thống. Hệ thống sẽ kiểm tra xem mã response đấy có hợp
lệ không và cấp quyền truy nhập cho người sử dụng. Trên thực tế, người sử dụng
có thể dùng thiết bị phần cứng hoặc phần mềm để tính toán các mã response một
cách tự động. Khi đó thực chất hệ thống xác thực tính hợp lệ của thiết bị tạo
response và thông tin mà người sử dụng cung cấp cho thiết bị ấy [5].
1.3.2 Xác thực thông tin (Data authentication)
Xác thực thông tin bao gồm hai mục đích: kiểm tra tính toàn vẹn của thông tin
(data intergrity) và kiểm tra nguồn gốc của thông tin (data origin authentication)

[5].
Kiểm tra tính toàn vẹn của thông tin (Data integrity)
Kiểm tra tính toàn vẹn của thông tin là một quá trình cho phép đảm bảo nội dung
của thông tin được gửi đi không bị sửa đổi bất hợp pháp trên đường truyền. Bản
thân quá trình kiểm tra tính toàn vẹn của thông tin không có ý nghĩa nếu không
đảm bảo được rằng thông tin đó có được gửi trực tiếp từ người hợp lệ hay không.
Hay nói cách khác không thể biết được thông tin có bị thay đổi hay chưa nếu nó
được gửi qua một người trung gian. Do đó kiểm tra tính toàn vẹn của thông tin bắt
buộc phải kết hợp với việc kiểm tra nguồn gốc của thông tin [6].
Khi người sử dụng A truyền một thông điệp đến cho người sử dụng B, trên đường
truyền có thể có một kẻ nghe trộm C. Nếu không có khả năng kiểm tra tính toàn
vẹn của thông tin, C có thể thay đổi nội dung thông điệp và chuyển tiếp cho B. B
không biết rằng thông điệp đã bị thay đổi và cho rằng đó là điều mà A muốn gửi.
Xác định nguồn gốc của thông tin (Data origin authentication)
Như đã nói ở trên, nếu chỉ xác định tính toàn vẹn của thông tin mà không xác định
nguồn gốc của nó thì quá trình xác thực thông tin trở nên vô nghĩa. Khi người A
gửi một thông điệp đến cho người B, trên đường truyền thông điệp bị người nghe
trộm C đánh cắp. Sau đó người nghe trộm C giả danh người A gửi một thông điệp
đến cho người B. Không có gì đảm bảo rằng thông điệp do C gửi giống với thông
điệp A muốn gửi cho B.
– 18 –
Chính vì vậy nhiệm vụ của hệ thống mã hoá là phải vừa đảm bảo tính toàn vẹn của
dữ liệu, vừa phải xác định nguồn gốc của dữ liệu.
1.3.3 Chống phủ nhận thông tin (Non-repudiation of origin)
Chống phủ nhận thông tin nhằm mục đích ngăn chặn các đối tượng tham gia quá
trình truyền tin phủ nhận thực tế rằng họ đã tham gia đầy đủ quá trình truyền tin
[5]. Hệ thống mã hoá có tính năng chống phủ nhận thông tin sẽ cung cấp các bằng
chứng về nguồn gốc của thông tin ngăn không cho người gửi phủ nhận rằng mình
là người gửi thông tin. Bên cạnh đấy hệ thống mã hoá có tính năng chống phủ nhận
thông tin cũng cung cấp các bằng chứng về quá trình truyền tin để ngăn không cho

người gửi phủ nhận rằng thông tin bị truyền sai.
1.3.4 Bảo vệ tính riêng tƣ của thông tin (Data confidentiality)
Đây là phần quan trọng và có nguồn gốc lịch sử lâu đời nhất trong lĩnh vực mã hoá.
Trên thực tế vấn đề bảo vệ tính riêng tư của thông tin thường được quan tâm nhiều
hơn so với vấn đề xác thực người sử dụng và chống phủ nhận thông tin [5]. Điều
này có thể hiểu được bởi vì các dịch vụ xác thực và chống phủ nhận thông tin
thường được bảo vệ và là thuộc tính của các kênh truyền vật lý. Ví dụ như trường
hợp các lá thư truyền thống có thể được xác thực bằng nét chữ, chữ ký và được
đóng dấu niêm phong nên có thể xác định một cách tương đối chính xác người gửi
là ai.
Trong thời đại thương mại điện tử hiện nay, trên thế giới hàng ngày có hàng triệu
giao dịch trực tuyến với giá trị lên đến hàng tỷ đô la, do đó yêu cầu đảm bảo tính
riêng tư, an toàn thông tin ngày càng trở nên quan trọng hơn.
– 19 –
CHƢƠNG 2: CÁC PHƢƠNG PHÁP MÃ HOÁ VÀ
BẢO MẬT THÔNG TIN
Mặc dù mỗi thuật toán mã hoá có thể có rất nhiều thành phần khác nhau nhưng hầu
hết các thuật toán đều có hai thành phần chính: thuật toán và khoá mã [6]. Như đã
đề cập ở trên, thuật toán mã hoá thông thường là tập hợp các hàm toán học phức tạp
dùng để định hướng biến đổi thông tin thành dạng ciphertext. Khoá mã là một
chuỗi bit ngẫu nhiên được chèn vào thuật toán. Để hai đối tượng có thể trao đổi
thông tin với nhau thông qua một kênh liên lạc được mã hoá, hai đối tượng đó phải
sử dụng chung một thuật toán mã hoá và trong nhiều trường hợp phải sử dụng
chung một khoá mã. Hình 2.1 [6] phân loại các đặc điểm, thành phần và cơ chế
hoạt động của các phương pháp mã hoá.

Hình 2.1: Phân loại các phương pháp mã hoá
– 20 –
2.1 Mã hoá đối xứng
Một hệ thống mã hoá được gọi là đối xứng khi cả đối tượng truyền tin và nhận tin

cùng sử dụng chung một khoá mã [7]. Hệ thống này còn được gọi là hệ thống mã
hoá bí mật bởi vì phương pháp mã hoá này yêu cầu đối tượng truyền tin và nhận tin
phải giữ bí mật thông tin về khoá mã. Nếu khoá mã lọt vào tay đối tượng nghe
trộm, đối tượng nghe trộm có thể dùng khoá mã đó để giải mã và ăn cắp thông tin.
Trong hệ thống mã hoá đối xứng, từng cặp đối tượng muốn trao đổi thông tin với
nhau cần có một khoá mã riêng. Điều này có nghĩa nếu A muốn trao đổi thông tin
với B, cả A và B cần phải có chung một khoá mã. Nếu A cũng muốn trao đổi thông
tin với C và D thông qua phương pháp mã hoá đối xứng, A cần phải có 3 mã khoá
khác nhau, mỗi khoá mã ứng với một đối tượng liên lạc. Điều này không được
thuận tiện khi A phải trao đổi thông tin với hàng trăm, hàng ngàn đối tượng khác
nhau trong một thời gian dài. Khi đó A phải giữ rất nhiều khoá mã và phải sử dụng
đúng khoá mã cho từng đối tượng trao đổi thông tin. Nếu trong hệ thống mã hoá
đối xứng có 10 đối tượng, số khoá mã cần thiết để các đối tượng có thể trao đổi
thông tin với nhau là n*(n-1)/2 = 45 (với n là số người sử dụng trong hệ thống) và
nếu hệ thống mã hoá đối xứng có 100 người thì số khoá mã cần thiết là 4,950 [2].

Hình 2.2: Hệ thống mã hoá đối xứng, đối tượng truyền tin và nhận tin sử dụng
chung một khoá mã cho quá trình mã hoá và giải mã
Độ an toàn của phương pháp mã hoá đối xứng hoàn toàn phụ thuộc vào việc các
đối tượng bảo vệ khoá mã như thế nào. Điều này rất nguy hiểm khi hệ thống có
hàng ngàn đối tượng vì khi đó rất khó có thể đảm bảo rằng tất cả các đối tượng
– 21 –
tham gia truyền tin đều giữ khoá mã một cách an toàn.
Khi đối tượng A muốn trao đổi thông tin với B, A cần phải tìm cách để có khoá mã
của B. Việc này sẽ không an toàn nếu khoá mã của B được gửi cho A dưới dạng e-
mail bởi vì khoá mã đó không được bảo vệ và kẻ tấn công có thể đọc trộm e-mail
để lấy thông tin về khoá mã. A cũng có thể lấy khoá mã của B thông qua phương
pháp không sử dụng đường truyền (out-of-band): khi A muốn liên lạc với B, B có
thể lưu khoá mã của mình ra một đĩa mềm rồi chuyển cho A qua đường bưu điện
hoặc qua thư bảo đảm. Tuy nhiên việc đó rất phức tạp, không thuận tiện và cũng

không thật sự an toàn. Chính vì vậy, việc quản lý khoá mã là một vấn đề rất phức
tạp và quan trọng trong việc duy trì hoạt động của hệ thống mã hoá. Vấn đề này sẽ
được đề cập cụ thể trong các phần sau.
Do cả hai đối tượng trên một kênh truyền đều sử dụng chung một khoá mã để mã
hoá và giải mã nên hệ thống mã hoá đối xứng có thể cho phép bảo vệ sự riêng tư
của thông tin nhưng không thể xác thực người sử dụng cũng như chống phủ nhận
thông tin được. Hệ thống mã hoá đối xứng không có cách nào để chứng minh ai là
người gửi thông điệp đi khi cả hai cùng dùng chung một khoá mã.
Vậy vấn đề đặt ra là: nếu hệ thống mã hoá đối xứng có nhiều vấn đề và thiếu sót
như vậy thì tại sao phải sử dụng chúng? Các thuật toán mã hoá đối xứng có tốc độ
nhanh và khó bị phá vỡ. So với các thuật toán mã hoá bất đối xứng, thuật toán mã
hoá đối xứng chạy nhanh hơn rất nhiều [1]. Các thuật toán mã hoá đối xứng có thể
mã hoá và giải mã một khối lượng lớn dữ liệu trong khoảng thời gian ngắn trong
khi đó nếu sử dụng thuật toán mã hoá bất đối xứng thì thời gian chờ đợi lâu hơn rất
nhiều (thậm chí không thể chấp nhận được). Ngoài ra rất khó có thể giải mã được
thông tin nếu hệ thống mã hoá đối xứng sử dụng khoá mã có độ dài lớn.
Một số ưu điểm và nhược điểm của hệ thống mã hoá đối xứng:
Ưu điểm:
- Nhanh hơn rất nhiều so với hệ thống mã hoá bất đối xứng
- Rất khó có thể bị phá vỡ khi sử dụng khoá mã dài
Nhược điểm:
– 22 –
- Phân phát khoá mã: yêu cầu phải có một cơ chế an toàn để phân phát khoá

- Khả năng mở rộng: mỗi cặp đối tượng sử dụng một cặp khoá mã do đó nếu
số đối tượng tăng lên thì số khoá tăng rất nhanh theo hàm số mũ
- Không cung cấp khả năng xác thực và chống từ chối nguồn gốc thông tin
Một số thuật toán làm việc theo mô hình mã hoá đối xứng [6]:
- Data Encryption Standard (DES)
- Triple DES (3DES)

- Blowfish
- IDEA
- RC4, RC5, and RC6
Các thuật toán này sẽ được trình bày chi tiết hơn trong phần mã hoá theo luồng
thông tin và mã hoá theo khối.
2.2 Mã hoá bất đối xứng
Một thuật toán sử dụng khoá mã để mã hoá thông tin khác với khoá mã để giải mã
thông tin được gọi là thuật toán mã hoá bất đối xứng [7]. Trong một hệ thống sử
dụng thuật toán mã hoá bất đối xứng, mỗi đối tượng có một cặp khoá mã: một là
khoá mã công khai (public key) và một khoá mã cá nhân hay còn gọi khoá mã bí
mật (private key). Khoá mã công khai có thể công bố cho mọi người cùng biết còn
khoá mã cá nhân phải giữ bí mật. Nếu một thông điệp được mã hoá bởi khoá mã
công khai thì khoá mã cá nhân được dùng để giải mã và ngược lại.
Phần lớn các hệ thống mã hoá bất đối xứng lưu khoá mã công khai được trong thư
mục, cơ sở dữ liệu nên mọi đối tượng đều có thể sử dụng các khoá mã công khai
này để mã hoá và giải mã khi muốn trao đổi thông tin với nhau.
– 23 –

Hình 2.2: Hệ thống mã hoá bất đối xứng
Khoá mã công khai và khoá mã cá nhân có những mối quan hệ với nhau về mặt
toán học nhưng không thể dùng khoá mã cá nhân để tìm ra khoá công khai và
ngược lại. Điều đó có nghĩa nếu một kẻ nghe trộm lấy được khoá mã công khai của
B thì anh ta cũng không có cách nào tính toán để tìm ra được khoá mã cá nhân của
B.
Nếu đối tượng B mã hoá thông tin bằng khoá mã cá nhân và gửi cho A, đối tượng
A phải sử dụng khoá mã công khai của B để giải mã. A có thể giải mã thông điệp
của B và trả lời B dưới dạng mã hoá. Tất cả việc A cần làm là mã hoá thông điệp
trả lời B bằng khoá mã công khai của B, sau đó B có thể giải mã thông điệp ấy
bằng khoá mã cá nhân của mình.
Trong hệ thống mã hoá bất đối xứng, không thể dùng chung một khoá mã để đồng

thời giải mã và mã hoá. Thông điệp chỉ có thể được giải mã bằng khoá mã công
cộng nếu thông điệp ấy được mã hoá bằng khoá mã cá nhân tương ứng.
Cụ thể: đối tượng B có thể mã hoá thông điệp bằng mã khoá cá nhân rồi gửi cho A,
A nhận được và giải mã bằng khoá mã công khai của B. Bằng cách sử dụng khoá
mã công khai của B, A có thể biết rằng thông điệp ấy đến từ B. Hay nói cách khác
A có thể xác định được nguồn gốc của thông điệp ấy đến từ B bởi vì chỉ B là người
biết khoá mã cá nhân của anh ta.
Khi A muốn chỉ có B mới được quyền đọc trả lời của A, A có thể mã hoá thông
điệp trả lời bằng khoá mã công khai của B. Chỉ có B mới có thể giải mã được thông
điệp vì B là người duy nhất có khoá mã cá nhân tương ứng với khoá mã công khai
– 24 –
mà A dùng.
A cũng có thể mã hoá thông điệp trả lời cho B bằng mã khoá cá nhân của A khi A
muốn cho B biết thông điệp ấy đến từ A chứ không phải từ ai khác. Nếu A mã hoá
thông điệp trả lời bằng khoá mã công khai của B thì không thể xác thực được
nguồn gốc của thông tin bởi vì bất kỳ ai cũng có thể có khoá mã công khai của B.
Nếu A sử dụng khoá mã cá nhân để mã hoá thông điệp trả lời, B phải dùng khoá
mã công khai của A để giải mã và do đó B có thể biết chắc rằng thông điệp trả lời
đến từ A chứ không phải từ ai khác.
Nếu vấn đề bảo vệ tính riêng tư của thông tin là điều quan trọng nhất, người gửi có
thể mã hoá thông điệp gửi đi bằng khoá mã công khai của người nhận. Phương
pháp này gọi là định dạng thông điệp an toàn (secure message format) [6], khi đó
chỉ có người nhận với mã khoá cá nhân tương ứng mới có thể giải mã được thông
điệp ấy. Gọi khoá mã công khai của người gửi là PubA, khoá mã cá nhân của người
gửi là PriA, còn gọi khoá mã công khai của người nhận là PubB và khoá mã cá
nhân của người nhận là PriB, ta có thể biểu diễn quá trình này dưới dạng toán học
như sau:
Người gửi:
 
CME 

PubB

Người nhận:
 
MCD 
PriB

Nếu vấn đề xác thực nguồn gốc của thông tin là điều quan trọng nhất, người gửi có
thể mã hoá thông điệp gửi đi bằng khoá mã cá nhân của anh ta. Người nhận sử
dụng khoá mã công khai của người gửi để giải mã thông tin và đồng thời biết được
nguồn gốc của thông tin đó. Phương pháp này được gọi là định dạng thông điệp mở
(open message format) do bất kỳ người nào có khoá mã công khai của người gửi
đều có thể giải mã được thông tin, cũng chính vì vậy phương pháp này không cung
cấp khả năng bảo vệ tính riêng tư của thông tin. Ta có thể biểu diễn quá trình này
dưới dạng toán học như sau:
Người gửi:
 
CME 
PriA

Người nhận:
 
MCD 
PubA

×