HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TP. HỒ CHÍ MINH
BÀI GIẢNG
BẢO MẬT HỆ THỐNG THÔNG TIN
DÀNH CHO HỆ ĐÀO TẠO TỪ XA
Biên soạn: Lê Phúc
Tháng 7/2007
MỞ ĐẦU
Tài liệu này được xây dựng với mục đích giúp sinh viên hệ đào tạo từ xa nghiên cứu các
vấn đề về bảo mật hệ thống thông tin. Bảo mật hệ thống thông tin là tập các kỹ thuật, dịch vụ, cơ
chế và ứng dụng phụ trợ giúp triển khai các hệ thống thông tin với độ an toàn cao nhất, mà cụ thể
là để bảo vệ ba đặc trưng cơ bản của một hệ thống an toàn là tính Bí mật, tính Toàn vẹn và tính
Khả dụng của thông tin.
Tính bảo mật của hệ thống là vấn đề được cân nhắc ngay khi thiết kế hệ thống và được
thực hiện xuyên suốt trong quá trình thi công, vận hành và bảo dưỡng hệ thống. Trong thời điểm
mà việc kết nối vào mạng Internet, nơi chứa rất nhiều nguy cơ tấn công tiềm ẩn, đã trở thành một
nhu cầu sống còn của các hệ thống thông tin thì vấn đề bảo mật càng cần phải được quan tâm và
đầu tư đúng mức.
Tài liệu này nhắm đến đối tượng sinh viên là những người vừa học vừa làm, do đó các vấn
đề bảo mật thực tế trên mạng được quan tâm nhiều hơn là các cơ sở lý thuyết. Các chuyên đề về
mật mã cũng được trình bày đơn giản theo cách nhìn của người sử dụng, không quá chuyên sâu về
cơ sở toán học, do đó, nếu có nhu cầu tìm hiểu sâu hơn hoặc chứng minh các thuật toán, sinh viên
cần phải đọc thêm các tài liệu về lý thuyết số.
Nội dung tài liệu được chia thành 3 chương:
-Chương 1:Tổng quan về bảo mật hệ thống thông tin, trình bày các vấn đề chung về bảo
mật và an toàn hệ thống, các nguy cơ và các phương thức tấn công vào hệ thống thông tin, các
ứng dụng bảo vệ hệ thống thông tin đang được sử dụng như Firewall và IDS…
-Chương 2: Mật mã và xác thực thông tin, trình bày các cơ chế mật mã và xác thực nhằm
đảm bảo tính Bí mật và Toàn vẹn của thông tin. Phần này mô tả nguyên lý của các thuật toán mật
mã thông dụng, hàm băm, chữ ký số và các vấn đề quản lý khoá.
-Chương 3: Các ứng dụng bảo mật trong hệ thống thông tin, trình bày các ứng dụng thực
tế như các giao thức xác thực, bảo mật trong kết nối mạng với IPSec, bảo mật trong ứng dụng
Internet với SSL và SET.
Cuối mỗi chương đều có phần tóm tắt, các câu hỏi trắc nghiệm và bài tập, giúp sinh viên
hệ thống hoá lại kiến thức đã học. Đặc biệt, các bài tập thực hành và lập trình sẽ giúp sinh viên
nắm rõ hơn phần lý thuyết, nên cố gắng thực hiện các bài tập này một cách chu đáo.
Hy vọng tài liệu này sẽ ít nhiều giúp ích cho việc nghiên cứu chuyên đề an toàn hệ thống
thông tin của các bạn sinh viên.
Tháng 7/2007.
Tác giả.
1
CHƯƠNG I
TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG THÔNG TIN
Giới thiệu:
Chương này giúp học viên nắm được các khái niệm thường dùng trong bảo mật và an
toàn hệ thống, nguyên tắc xây dựng một hệ thống thông tin bảo mật, nhận diện và phân tích các
nguy cơ và rủi ro đối với hệ thống thông tin, từ đó có kế hoạch nâng cấp và bảo vệ hệ thống.
Nội dung chương này gồm các phần như sau:
-Các đặc trưng của một hệ thống bảo mật.
-Nguy cơ và rủi ro đối với hệ thống thông tin.
-Các khái niệm dùng trong bảo mật hệ thống
-Chiến lược bảo mật hệ thống AAA.
-Một số hình thức xâm nhập hệ thống.
-Kỹ thuật ngăn chặn và phát hiện xâm nhập.
I.1 TỔNG QUAN
Vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong những vấn đề quan trọng
cần cân nhắc trong suốt quá trình thiết kế, thi công, vận hành và bảo dưỡng hệ thống thông tin.
Cũng như tất cả các hoạt động khác trong đời sống xã hội, từ khi con người có nhu cầu
lưu trữ và xử lý thông tin, đặc biệt là từ khi thông tin được xem như một bộ phận của tư liệu sản
xuất, thì nhu cầu bảo vệ thông tin càng trở nên bức thiết. Bảo vệ thông tin là bảo vệ tính bí mật
của thông tin và tính toàn vẹn của thông tin. Một số loại thông tin chỉ còn ý nghĩa khi chúng được
giữ kín hoặc giới hạn trong một số các đối tượng nào đó, ví dụ như thông tin về chiến lược quân
sự chẳng hạn. Đây là tính bí mật của thông tin. Hơn nữa, thông tin không phải luôn được con
người ghi nhớ do sự hữu hạn của bộ óc, nên cần phải có thiết bị để lưu trữ thông tin. Nếu thiết bị
lưu trữ hoạt động không an toàn, thông tin lưu trữ trên đó bị mất đi hoặc sai lệch toàn bộ hay một
phần, khi đó tính toàn vẹn của thông tin không còn được bảo đảm.
Khi máy tính được sử dụng để xử lý thông tin, hiệu quả xử lý thông tin được nâng cao lên,
khối lượng thông tin được xử lý càng ngày càng lớn lên, và kéo theo nó, tầm quan trọng của thông
tin trong đời sống xã hội cũng tăng lên. Nếu như trước đây, việc bảo vệ thông tin chỉ chú trọng
vào vấn đề dùng các cơ chế và phương tiện vật lý để bảo vệ thông tin theo đúng nghĩa đen của từ
này, thì càng về sau, vấn đề bảo vệ thông tin đã trở nên đa dạng hơn và phức tạp hơn. Có thể kể ra
hai điều thay đổi lớn sau đây đối với vấn đề bảo vệ thông tin:
1-Sự ứng dụng của máy tính trong việc xử lý thông tin làm thay đổi dạng lưu trữ của
thông tin và phương thức xử lý thông tin. Cần thiết phải xây dựng các cơ chế bảo vệ thông tin
theo đặc thù hoạt động của máy tính. Từ đây xuất hiện yêu cầu bảo vệ sự an toàn hoạt động của
máy tính (Computer Security) tồn tại song song với yêu cầu bảo vệ sự an toàn của thông tin
(Information Security).
2-Sự phát triển mạnh mẽ của mạng máy tính và các hệ thống phân tán làm thay đổi phạm
vi tổ chức xử lý thông tin. Thông tin được trao đổi giữa các thiết bị xử lý thông qua một khoảng
cách vật lý rất lớn, gần như không giới hạn, làm xuất hiện thêm nhiều nguy cơ hơn đối với sự an
toàn của thông tin. Từ đó xuất hiện yêu cầu bảo vệ sự an toàn của hệ thống mạng (Network
2
Security), gồm các cơ chế và kỹ thuật phù hợp với việc bảo vệ sự an toàn của thông tin khi chúng
được trao đổi giữa các thiết bị trên mạng.
Cùng với việc nhận diện hai điều thay đổi lớn đối với vấn đề bảo đảm an toàn thông tin,
hiện nay, khái niệm bảo đảm thông tin (Information Assurance) được đề xuất như một giải pháp
toàn diện hơn cho bảo mật thông tin. Theo đó, vấn đề an toàn của thông tin không còn chỉ giới
hạn trong việc đảm bảo tính bí mật và tính toàn vẹn của thông tin, phạm vi bảo vệ không còn giới
hạn trong các hệ thống máy tính làm chức năng xử lý thông tin nữa, mà diễn ra trong tất cả các hệ
thống tự động (automated systems). Yêu cầu bảo vệ không còn chỉ tập trung ở vấn đề an toàn
động (Security) nữa mà bao gồm cả vấn đề an toàn tĩnh (Safety) và vấn đề tin cậy của hệ thống
(Reliability).
Trong phạm vi tài liệu này, vấn đề Bảo mật hệ thống thông tin (Information System
Security) là vấn đề trọng tâm nhất. Toàn bộ tài liệu sẽ tập trung vào việc mô tả, phân tích các cơ
chế và kỹ thuật nhằm cung cấp sự bảo mật cho các hệ thống thông tin. Một hệ thống thông tin,
theo cách hiểu ngầm định trong tài liệu này, là hệ thống xử lý thông tin bằng công cụ máy tính,
được tổ chức tập trung hoặc phân tán. Do vậy, nội dung của tài liệu sẽ vừa đề cập đến vấn đề bảo
mật máy tính (Computer Security) và bảo mật mạng (Network Security). Tuy vậy, các kỹ thuật
bảo mật mạng chỉ được đề cập một cách giản lược, dành phần cho một tài liệu khác thuộc chuyên
ngành Mạng máy tính và truyền thông, đó là tài liệu Bảo mật mạng.
I.2 CÁC ĐẶC TRƯNG CỦA MỘT HỆ THỐNG THÔNG TIN BẢO MẬT
Một hệ thống thông tin bảo mật (Secure Information System) là một hệ thống mà thông
tin được xử lý trên nó phải đảm bảo được 3 đặc trưng sau đây:
-Tính bí mật của thông tin (Confidentiality)
-Tính toàn vẹn của thông tin (Integrity)
-Tính khả dụng của thông tin (Availability).
Confidentiality
Secure
Integrity
Availability
Hình 1.1: Mô hình CIA
Ba đặc trưng này được liên kết lại và xem như là mô hình tiêu chuẩn của các hệ thống
thông tin bảo mật, hay nói cách khác, đây là 3 thành phần cốt yếu của một hệ thống thông tin Bảo
mật. Mô hình này được sử dụng rộng rãi trong nhiều ngữ cảnh và nhiều tài liệu khác nhau, và
3
được gọi tắt là mô hình CIA (chú ý phân biệt với thuật ngữ CIA với ý nghĩa Confidentiality,
Itegrity, Authentication trong một số tài liệu khác).
Phần sau đây sẽ trình bày chi tiết về từng đặc trưng này.
I.2.1
Tính bí mật:
Một số loại thông tin chỉ có giá trị đối với một đối tượng xác định khi chúng không phổ
biến cho các đối tượng khác. Tính bí mật của thông tin là tính giới hạn về đối tượng được quyền
truy xuất đến thông tin. Đối tượng truy xuất có thể là con người, là máy tính hoặc phần mềm, kể
cả phần mềm phá hoại như virus, worm, spyware, …
Tuỳ theo tính chất của thông tin mà mức độ bí mật của chúng có khác nhau. Ví dụ: các
thông tin về chính trị và quân sự luôn được xem là các thông tin nhạy cảm nhất đối với các quốc
gia và được xử lý ở mức bảo mật cao nhất. Các thông tin khác như thông tin về hoạt động và
chiến lược kinh doanh của doanh nghiệp, thông tin cá nhân, đặc biệt của những người nổi tiếng,
thông tin cấu hình hệ thống của các mạng cung cấp dịch vụ, v.v… đều có nhu cầu được giữ bí mật
ở từng mức độ.
Để đảm bảo tính bí mật của thông tin, ngoài các cơ chế và phương tiện vật lý như nhà
xưởng, thiết bị lưu trữ, dịch vụ bảo vệ, … thì kỹ thuật mật mã hoá (Cryptography) được xem là
công cụ bảo mật thông tin hữu hiệu nhất trong môi trường máy tính. Các kỹ thuật mật mã hoá sẽ
được trình bày cụ thể ở chương II. Ngoài ra, kỹ thuật quản lý truy xuất (Access Control) cũng
được thiết lập để bảo đảm chỉ có những đối tượng được cho phép mới có thể truy xuất thông tin.
Access control sẽ được trình bày ở phần 3 của chương này.
Sự bí mật của thông tin phải được xem xét dưới dạng 2 yếu tố tách rời: sự tồn tại của
thông tin và nội dung của thông tin đó.
Đôi khi, tiết lộ sự tồn tại của thông tin có ý nghĩa cao hơn tiết lộ nội dung của nó. Ví dụ:
chiến lược kinh doanh bí mật mang tính sống còn của một công ty đã bị tiết lộ cho một công ty
đối thủ khác. Việc nhận thức được rằng có điều đó tồn tại sẽ quan trọng hơn nhiều so với việc biết
cụ thể về nội dung thông tin, chẳng hạn như ai đã tiết lộ, tiết lộ cho đối thủ nào và tiết lộ những
thông tin gì,…
Cũng vì lý do này, trong một số hệ thống xác thực người dùng (user authentication) ví dụ
như đăng nhập vào hệ điều hành Netware hay đăng nhập vào hộp thư điện tử hoặc các dịch vụ
khác trên mạng, khi người sử dụng cung cấp một tên người dùng (user-name) sai, thay vì thông
báo rằng user-name này không tồn tại, thì một số hệ thống sẽ thông báo rằng mật khẩu (password)
sai, một số hệ thống khác chỉ thông báo chung chung là “Invalid user name/password” (người
dùng hoặc mật khẩu không hợp lệ). Dụng ý đằng sau câu thông báo không rõ ràng này là việc từ
chối xác nhận việc tồn tại hay không tồn tại một user-name như thế trong hệ thống. Điều này làm
tăng sự khó khăn cho những người muốn đăng nhập vào hệ thống một cách bất hợp pháp bằng
cách thử ngẫu nhiên.
I.2.2
Tính toàn vẹn:
Đặc trưng này đảm bảo sự tồn tại nguyên vẹn của thông tin, loại trừ mọi sự thay đổi
thông tin có chủ đích hoặc hư hỏng, mất mát thông tin do sự cố thiết bị hoặc phần mềm. Tính toàn
vẹn được xét trên 2 khía cạnh:
-Tính nguyên vẹn của nội dung thông tin.
-Tính xác thực của nguồn gốc của thông tin.
4
Nói một cách khác, tính toàn vẹn của thông tin phải được đánh giá trên hai mặt: toàn vẹn
về nội dung và toàn vẹn về nguồn gốc.
Ví dụ: một ngân hàng nhận được lệnh thanh toán của một người tự xưng là chủ tài khoản
với đầy đủ những thông tin cần thiết. Nội dung thông tin được bảo toàn vì ngân hàng đã nhận
được một cách chính xác yêu cầu của khách hàng (đúng như người xưng là chủ tài khoản gởi đi).
Tuy nhiên, nếu lệnh thanh toán này không phải cho chính chủ tài khoản đưa ra mà do một người
nào khác nhờ biết được thông tin bí mật về tài khoản đã mạo danh chủ tài khoản để đưa ra, ta nói
nguồn gốc của thông tin đã không được bảo toàn.
Một ví dụ khác, một tờ báo đưa tin về một sự kiện vừa xảy ra tại một cơ quan quan trọng
của chính phủ, có ghi chú rằng nguồn tin từ người phát ngôn của cơ quan đó. Tuy nhiên, nếu tin
đó thật sự không phải do người phát ngôn công bố mà được lấy từ một kênh thông tin khác, không
xét đến việc nội dung thông tin có đúng hay không, ta nói rằng nguồn gốc thông tin đã không
được bảo toàn.
Sự tòan vẹn về nguồn gốc thông tin trong một số ngữ cảnh có ý nghĩa tương đương với sự
đảm bảo tính không thể chối cãi (non-repudiation) của hệ thống thông tin.
Các cơ chế đảm bảo sự toàn vẹn của thông tin được chia thành 2 loại: các cơ chế ngăn
chặn (Prevention mechanisms) và các cơ chế phát hiện (Detection mechanisms).
Cơ chế ngăn chặn có chức năng ngăn cản các hành vi trái phép làm thay đổi nội dung và
nguồn gốc của thông tin. Các hành vi này bao gồm 2 nhóm: hành vi cố gắng thay đổi thông tin khi
không được phép truy xuất đến thông tin và hành vi thay đổi thông tin theo cách khác với cách đã
được cho phép.
Ví dụ: một người ngoài công ty cố gắng truy xuất đến cơ sở dữ liệu kế toán của một công
ty và thay đổi dữ liệu trong đó. Đây là hành vi thuộc nhóm thứ nhất. Trường hợp một nhân viên
kế toán được trao quyền quản lý cơ sở dữ liệu kế toán của công ty, và đã dùng quyền truy xuất của
mình để thay đổi thông tin nhằm biển thủ ngân quỹ, đây là hành vi thuộc nhóm thứ hai.
Nhóm các cơ chế phát hiện chỉ thực hiện chức năng giám sát và thông báo khi có các thay
đổi diễn ra trên thông tin bằng cách phân tích các sự kiện diễn ra trên hệ thống mà không thực
hiện chức năng ngăn chặn các hành vi truy xuất trái phép đến thông tin.
Nếu như tính bí mật của thông tin chỉ quan tâm đến việc thông tin có bị tiết lộ hay không,
thì tính toàn vẹn của thông tin vừa quan tâm tới tính chính xác của thông tin và cả mức độ tin cậy
của thông tin. Các yếu tố như nguồn gốc thông tin, cách thức bảo vệ thông tin trong quá khứ cũng
như trong hiện tại đều là những yếu tố quyết định độ tin cậy của thông tin và do đó ảnh hưởng đến
tính toàn vẹn của thông tin. Nói chung, việc đánh giá tính toàn vẹn của một hệ thống thông tin là
một công việc phức tạp.
I.2.3
Tính khả dụng:
Tính khả dụng của thông tin là tính sẵn sàng của thông tin cho các nhu cầu truy xuất hợp
lệ.
Ví dụ: các thông tin về quản lý nhân sự của một công ty được lưu trên máy tính, được bảo
vệ một cách chắc chắn bằng nhiều cơ chế đảm bảo thông tin không bị tiết lộ hay thay đổi. Tuy
nhiên, khi người quản lý cần những thông tin này thì lại không truy xuất được vì lỗi hệ thống. Khi
đó, thông tin hoàn toàn không sử dụng được và ta nói tính khả dụng của thông tin không được
đảm bảo.
5
Tính khả dụng là một yêu cầu rất quan trọng của hệ thống, bởi vì một hệ thống tồn tại
nhưng không sẵn sàng cho sử dụng thì cũng giống như không tồn tại một hệ thống thông tin nào.
Một hệ thống khả dụng là một hệ thống làm việc trôi chảy và hiệu quả, có khả năng phục hồi
nhanh chóng nếu có sự cố xảy ra.
Trong thực tế, tính khả dụng được xem là nền tảng của một hệ thống bảo mật, bởi vì khi
hệ thống không sẵn sàng thì việc đảm bảo 2 đặc trưng còn lại (bí mật và toàn vẹn) sẽ trở nên vô
nghĩa.
Hiện nay, các hình thức tấn công từ chối dịch vụ DoS (Denial of Service) và DDoS
(Distributed Denial of Service) được đánh giá là các nguy cơ lớn nhất đối với sự an toàn của các
hệ thống thông tin, gây ra những thiệt hại lớn và đặc biệt là chưa có giải pháp ngăn chặn hữu
hiệu. Các hình thức tấn công này đều nhắm vào tính khả dụng của hệ thống.
Một số hướng nghiên cứu đang đưa ra các mô hình mới cho việc mô tả các hệ thống an
toàn. Theo đó, mô hình CIA không mô tả được đầy đủ các yêu cầu an toàn của hệ thống mà cần
phải định nghĩa lại một mô hình khác với các đặc tính của thông tin cần được đảm bảo như:
-Tính khả dụng (Availability)
-Tính tiện ích (Utility)
-Tính toàn vẹn (Integrity)
-Tính xác thực (Authenticity)
-Tính bảo mật (Confidentiality)
-Tính sở hữu (Possession)
I.3 CÁC NGUY CƠ VÀ RỦI RO ĐỐI VỚI HỆ THỐNG THÔNG TIN
I.3.1
Nguy cơ:
Nguy cơ (threat) là những sự kiện có khả năng ảnh hưởng đến an toàn của hệ thống.
Ví dụ: tấn công từ chối dịch vụ (DoS và DDoS) là một nguy cơ đối với hệ thống các máy
chủ cung cấp dịch vụ trên mạng.
Khi nói đến nguy cơ, nghĩa là sự kiện đó chưa xảy ra, nhưng có khả năng xảy ra và có khả
năng gây hại cho hệ thống. Có những sự kiện có khả năng gây hại, nhưng không có khả năng xảy
ra đối với hệ thống thì không được xem là nguy cơ.
Ví dụ: tấn công của sâu Nimda (năm 2001) có khả năng gây tê liệt toàn bộ hệ thống mạng
nội bộ. Tuy nhiên, sâu Nimda chỉ khai thác được lỗi bảo mật của phần mềm IIS (Internet
Information Service) trên Windows (NT và 2000) và do đó chỉ có khả năng xảy ra trên mạng có
máy cài đặt hệ điều hành Windows. Nếu một mạng máy tính chỉ gồm toàn các máy cài hệ điều
hành Unix hoặc Linux thì sâu Nimda hoàn toàn không có khả năng tồn tại, và do vậy, sâu Nimda
không phải là một nguy cơ trong trường hợp này.
Có thể chia các nguy cơ thành 4 nhóm sau đây:
-Tiết lộ thông tin / truy xuất thông tin trái phép
-Phát thông tin sai / chấp nhận thông tin sai
-Phá hoại / ngăn chặn hoạt động của hệ thống
-Chiếm quyền điều khiển từng phần hoặc toàn bộ hệ thống
Đây là cách phân chia rất khái quát. Mỗi nhóm sẽ bao gồm nhiều nguy cơ khác nhau.
6
Nghe lén, hay đọc lén (gọi chung là snooping) là một trong những phương thức
truy xuất thông tin trái phép. Các hành vi thuộc phương thức này có thể đơn giản
như việc nghe lén một cuộc đàm thoại, mở một tập tin trên máy của người khác,
hoặc phức tạp hơn như xen vào một kết nối mạng (wire-tapping) để ăn cắp dữ
liệu, hoặc cài các chương trình ghi bàn phím (key-logger) để ghi lại những thông
tin quan trọng được nhập từ bàn phím.
Nhóm nguy cơ phát thông tin sai / chấp nhận thông tin sai bao gồm những hành
vi tương tự như nhóm ở trên nhưng mang tính chủ động, tức là có thay đổi thông
tin gốc. Nếu thông tin bị thay đổi là thông tin điều khiển hệ thống thì mức độ thiệt
hại sẽ nghiêm trọng hơn nhiều bởi vì khi đó, hành vi này không chỉ gây ra sai dữ
liệu mà còn có thể làm thay đổi các chính sách an toàn của hệ thống hoặc ngăn
chặn hoạt động bình thường của hệ thống.
Trong thực tế, hình thức tấn công xen giữa Man-in-the-middle (MITM) là một
dạng của phương thức phát thông tin sai / chấp nhận thông tin sai. Hoạt động của
hình thức tấn công này là xen vào một kết nối mạng, đọc lén thông tin và thay đổi
thông tin đó trước khi gởi đến cho nơi nhận.
Giả danh (spoofing) cũng là một dạng hành vi thuộc nhóm nguy cơ phát thông tin
sai / chấp nhận thông tin sai. Hành vi này thực hiện việc trao đổi thông tin với
một đối tác bằng cách giả danh một thực thể khác.
Phủ nhận hành vi (repudiation) cũng là một phương thức gây sai lệch thông tin.
Bằng phương thức này, một thực thể thực hiện hành vi phát ra thông tin, nhưng
sau đó lại chối bỏ hành vi này, tức không công nhận nguồn gốc của thông tin, và
do đó vi phạm yêu cầu về tính toàn vẹn của thông tin.
Ví dụ: một người chủ tài khoản yêu cầu ngân hàng thanh toán từ tài khoản của
mình. Mọi thông tin đều chính xác và ngân hàng đã thực hiện lệnh. Tuy nhiên sau
đó người chủ tài khoản lại phủ nhận việc mình đã đưa ra lệnh thanh toán. Khi đó,
thông tin đã bị sai lệch do nguồn gốc của thông tin không còn xác định.
Nhóm nguy cơ thứ 3 bao gồm các hành vi có mục đích ngăn chặn hoạt động bình
thường của hệ thống bằng cách làm chậm hoặc gián đoạn dịch vụ của hệ thống.
Tấn công từ chối dịch vụ hoặc virus là những nguy cơ thuộc nhóm này.
Chiếm quyền điều khiển hệ thống gây ra nhiều mức độ thiệt hại khác nhau, từ việc
lấy cắp và thay đổi dữ liệu trên hệ thống, đến việc thay đổi các chính sách bảo mật
và vô hiệu hoá các cơ chế bảo mật đã được thiết lập.
Ví dụ điển hình cho nhóm nguy cơ này là các phương thức tấn công nhằm chiếm
quyền root trên các máy tính chạy Unix hoặc Linux bằng cách khai thác các lỗi
phần mềm hoặc lỗi cấu hình hệ thống. Tấn công tràn bộ đệm (buffer overflow) là
cách thường dùng nhất để chiếm quyền root trên các hệ thống Linux vốn được
xây dựng trên nền tảng của ngôn ngữ lập trình C.
I.3.2
Rủi ro và quản lý rủi ro:
Rủi ro (risk) là xác suất xảy ra thiệt hại đối với hệ thống.
Rủi ro bao gồm 2 yếu tố: Khả năng xảy ra rủi ro và thiệt hại do rủi ro gây ra. Có những rủi
ro có khả năng xảy ra rất cao nhưng mức độ thiệt hại thì thấp và ngược lại.
7
Ví dụ: rủi ro mất thông tin trên hệ thống không có cơ chế bảo vệ tập tin, chẳng hạn như
Windows 98. Windows 98 không có cơ chế xác thực người sử dụng nên bất cứ ai cũng có thể sử
dụng máy với quyền cao nhất. Nếu trên đó chỉ có chứa các tập tin văn bản không có tính bí mật
thì việc mất một tập tin thì thiệt hại gây ra chỉ là mất công sức đánh máy văn bản đó. Đây là dạng
rủi ro có xác suất xảy ra cao nhưng thiệt hại thấp.
Một ví dụ khác: trên máy chủ cung cấp dịch vụ có một phần mềm có lỗi tràn bộ đệm, và
nếu khai thác được lỗi này thì kẻ tấn công có thể chiếm được quyền điều khiển toàn bộ hệ thống.
Tuy nhiên, đây là phần mềm không phổ biến và để khai thác được lỗi này, kẻ tấn công phải có
những kỹ năng cao cấp. Rủi ro hệ thống bị chiếm quyền điều khiển được đánh giá là có khả năng
xảy ra thấp, nhưng nếu có xảy ra, thì thiệt hại sẽ rất cao.
Cần chú ý phân biệt giữa nguy cơ và rủi ro. Nguy cơ là những hành vi, những sự kiện
hoặc đối tượng có khả năng gây hại cho hệ thống. Rủi ro là những thiệt hại có khả năng xảy ra
đối với hệ thống.
Ví dụ: Tấn công từ chối dịch vụ là một nguy cơ (threat). Đây là một sự kiện có khả năng
xảy ra đối với bất kỳ hệ thống cung cấp dịch vụ nào. Thiệt hại do tấn công này gây ra là hệ thống
bị gián đoạn hoạt động, đây mới là rủi ro (risk). Tuy nhiên, không phải bất kỳ tấn công từ chối
dịch vụ nào xảy ra cũng đều làm cho hệ thống ngưng hoạt động, và hơn nữa, tấn công từ chối dịch
vụ không phải là nguồn gốc duy nhất gây ra gián đoạn hệ thống; những nguy cơ khác như lỗi hệ
thống (do vận hành sai), lỗi phần mềm (do lập trình), lỗi phần cứng (hư hỏng thiết bị, mất điện,
…) cũng đều có khả năng dẫn đến gián đoạn hệ thống.
Một ví dụ khác, xét trường hợp lưu trữ tập tin trên một máy tính chạy hệ điều hành
Windows 98 đã nói ở trên. Nguy cơ đối với hệ thống là các hành vi sửa hoặc xoá tập tin trên máy
người khác. Những người hay sử dụng máy tính của người khác cũng được xem là nguy cơ đối
với hệ thống. Rủi ro đối với hệ thống trong trường hợp này là việc tập tin bị mất hoặc bị sửa.
Trong thực tế, việc đề ra chính sách bảo mật cho một hệ thống thông tin phải đảm bảo
được sự cân bằng giữa lợi ích của việc bảo đảm an toàn hệ thống và chi phí thiết kế, cài đặt và
vận hành các cơ chế bảo vệ chính sách đó.
Công việc quản lý rủi ro trên một hệ thống là quy trình cần thiết để nhận diện tất cả những
rủi ro đối với hệ thống, những nguy cơ có thể dẫn đến rủi ro và phân tích lợi ích / chi phí của giải
pháp ngăn chặn rủi ro. Quy trình phân tích rủi ro bao gồm các bước:
-Nhận dạng các rủi ro đối với hệ thống
-Chọn lựa và thực hiện các giải pháp để giảm bớt rủi ro.
-Theo dõi và đánh giá thiệt hại của những rủi ro đã xảy ra, làm cơ sở cho việc điều chỉnh
lại hai bước đầu.
I.3.3
Vấn đề con người trong bảo mật hệ thống:
Con người luôn là trung tâm của tất cả các hệ thống bảo mật, bởi vì tất cả các cơ chế, các
kỹ thuật được áp dụng để bảo đảm an toàn hệ thống đều có thể dễ dàng bị vô hiệu hoá bởi con
người trong chính hệ thống đó.
Ví dụ: hệ thống xác thực người sử dụng yêu cầu mỗi người trong hệ thống khi muốn thao
tác trên hệ thống đều phải cung cấp tên người dùng và mật khẩu. Tuy nhiên, nếu người được cấp
mật khẩu không bảo quản kỹ thông tin này, hoặc thậm chí đem tiết lộ cho người khác biết, thì khả
năng xảy ra các vi phạm đối với chính sách an toàn là rất cao vì hệ thống xác thực đã bị vô hiệu
hoá.
8
Những người có chủ ý muốn phá vỡ chính sách bảo mật của hệ thống được gọi chung là
những người xâm nhập (intruder hoặc attacker) và theo cách nghĩ thông thường thì đây phải là
những người bên ngoài hệ thống.
Tuy nhiên, thực tế đã chứng minh được rằng chính những người bên trong hệ thống,
những người có điều kiện tiếp cận với hệ thống lại là những người có khả năng tấn công hệ thống
cao nhất. Đó có thể là một nhân viên đang bất mãn và muốn phá hoại, hoặc chỉ là một người thích
khám phá và chứng tỏ mình. Các tấn công gây ra bởi các đối tượng này thường khó phát hiện và
gây thiệt hại nhiều hơn các tấn công từ bên ngoài.
Những người không được huấn luyện về an toàn hệ thống cũng là nơi tiềm ẩn các nguy cơ
do những hành vi vô ý của họ như thao tác sai, bỏ qua các khâu kiểm tra an toàn, không tuân thủ
chính sách bảo mật thông tin như lưu tập tin bên ngoài thư mục an toàn, ghi mật khẩu lên bàn làm
việc, …
I.4 NGUYÊN TẮC XÂY DỰNG MỘT HỆ THỐNG BẢO MẬT
I.4.1
Chính sách và cơ chế:
Hai khái niệm quan trọng thường được đề cập khi xây dựng một hệ thống bảo mật:
-Chính sách bảo mật (Security policy)
-Cơ chế bảo mật (Security mechanism)
Chính sách bảo mật là hệ thống các quy định nhằm đảm bảo sự an toàn của hệ thống.
Cơ chế bảo mật là hệ thống các phương pháp, công cụ, thủ tục, …dùng để thực thi các
quy định của chính sách bảo mật.
Chính sách bảo mật có thể được biểu diễn bằng ngôn ngữ tự nhiên hoặc ngôn ngữ toán
học.
Ví dụ: trong một hệ thống, để bảo đảm an toàn cho một tài nguyên (resource) cụ thể,
chính sách an toàn quy định rằng chỉ có người dùng nào thuộc nhóm quản trị hệ thống
(Administrators) mới có quyền truy xuất, còn những người dùng khác thì không. Đây là cách biểu
diễn bằng ngôn ngữ tự nhiên.
Có thể biểu diễn quy định này bằng ngôn ngữ toán học như sau:
Gọi:
U là tập hợp các người dùng trong hệ thống.
A là tập hợp các người dùng thuộc nhóm quản trị.
O là tập hợp các đối tượng (tài nguyên) trong hệ thống
Thao tác Access(u, o) cho giá trị TRUE nếu người dùng u có quyền truy xuất đến
đối tượng o, ngược lại, cho giá trị FALSE.
Quy định p trong chính sách an toàn được phát biểu như sau:
u U, o O: Access(u, o) = TRUE u A
Ma trận cũng thường được dùng để biểu diễn một chính sách bảo mật.
Ví dụ: một hệ thống với các tập người dùng U = {u1, u2, u3, u4} và tập đối tượng O = {o1,
o2, o3, o4}. Các thao tác mà một người dùng u có thể thực hiện được trên một đối tượng o bao gồm
đọc (r), ghi (w) và thực thi (x). Quy định về khả năng truy xuất của từng người dùng đến từng đối
tượng trong hệ thống được biểu diễn bằng ma trận như sau:
9
u1
u2
U3
o1
x
x
R
o2
x
r
R
o3
w
R
o4
w
R
u4
Quan sát ma trận, ta biết rằng người dùng u3 được quyền đọc trên tất cả các đối tượng từ
o1 đến o4, trong khi đó người dùng u4 thì không có quyền truy xuất đến bất kỳ đối tượng nào.
Cơ chế bảo mật thông thường là các biện pháp kỹ thuật.
Ví dụ: xây dựng bức tường lửa (firewall), xác thực người dùng, dùng cơ chế bảo vệ tập tin
của hệ thống quản lý tập tin NTFS để phân quyền truy xuất đối với từng tập tin / thư mục trên đĩa
cứng, dùng kỹ thuật mật mã hoá để che giấu thông tin, v.v…
Tuy nhiên, đôi khi cơ chế chỉ là những thủ tục (procedure) mà khi thực hiện nó thì chính
sách được bảo toàn.
Ví dụ: phòng thực hành máy tính của trường đại học quy định: sinh viên không được sao
chép bài tập của sinh viên khác đã được lưu trên máy chủ. Đây là một quy định của chính sách
bảo mật. Để thực hiện quy định này, các cơ chế được áp dụng bao gồm: tạo thư mục riêng trên
máy chủ cho từng sinh viên, phân quyền truy xuất cho từng sinh viên đến các thư mục này và yêu
cầu sinh viên phải lưu bài tập trong thư mục riêng, mỗi khi rời khỏi máy tính phải thực hiện thao
tác logout khỏi hệ thống.
Trong cơ chế này, các biện pháp như tạo thư mục riêng, gán quyền truy xuất, … là các
biện pháp kỹ thuật. Biện pháp yêu cầu sinh viên thóat khỏi hệ thống (logout) khi rời khỏi máy là
một biện pháp thủ tục. Nếu sinh viên ra về mà không thóat ra khỏi hệ thống, một sinh viên khác
có thể sử dụng phiên làm việc đang mở của sinh viên này để sao chép bài tập. Khi đó, rõ ràng
chính sách bảo mật đã bị vi phạm.
Cho trước một chính sách bảo mật, cơ chế bảo mật phải đảm bảo thực hiện được 3 yêu cầu
sau đây:
-Ngăn chặn các nguy cơ gây ra vi phạm chính sách
-Phát hiện các hành vi vi phạm chính sách
-Khắc phục hậu quả của rủi ro khi có vi phạm xảy ra.
Thông thường, việc xây dựng một hệ thống bảo mật phải dựa trên 2 giả thiết sau đây:
1-Chính sách bảo mật phân chia một cách rõ ràng các trạng thái của hệ thống thành 2
nhóm: an toàn và không an toàn.
2-Cơ chế bảo mật có khả năng ngăn chặn hệ thống tiến vào các trạng thái không an toàn.
Chỉ cần một trong hai giả thiết này không đảm bảo thì hệ thống sẽ không an toàn. Từng cơ
chế riêng lẻ được thiết kế để bảo vệ một hoặc một số các quy định trong chính sách. Tập hợp tất
cả các cơ chế triển khai trên hệ thống phải đảm bảo thực thi tất cả các quy định trong chính sách.
Hai nguy cơ có thể xảy ra khi thiết kế hệ thống bảo mật do không đảm bảo 2 giả thiết ở
trên:
1-Chính sách không liệt kê được tất cả các trạng thái không an toàn của hệ thống, hay nói
cách khác, chính sách không mô tả được một hệ thống bảo mật thật sự.
10
2-Cơ chế không thực hiện được tất cả các quy định trong chính sách, có thể do giới hạn
về kỹ thuật, ràng buộc về chi phí, …
Dựa trên những nhận thức này, có thể đánh giá mức độ an toàn của một cơ chế như sau:
Gọi P là tập hợp tất cả các trạng thái của hệ thống, Q là tập hợp các trạng thái an toàn theo
định nghĩa của chính sách bảo mật, giả sử cơ chế đang áp dụng có khả năng giới hạn các trạng
thái của hệ thống trong tập R. Ta có các định nghĩa như sau:
-Nếu R Q: cơ chế được đánh giá là an toàn (secure mechanism).
-Nếu R = Q: cơ chế được đánh giá là chính xác (precise mechanism).
-Nếu tồn tại trạng thái r R sao cho r Q: cơ chế được đánh giá là lỏng lẻo (broad
mechanism).
I.4.2
Các mục tiêu của bảo mật hệ thống:
Một hệ thống bảo mật, như trình bày ở phần 2 của chương này, là hệ thống thoả mãn 3
yêu cầu cơ bản là tính bí mật, tính toàn vẹn và tính khả dụng, gọi tắt là CIA.
Để thực hiện mô hình CIA, người quản trị hệ thống cần định nghĩa các trạng thái an toàn
của hệ thống thông qua chính sách bảo mật, sau đó thiết lập các cơ chế bảo mật để bảo vệ chính
sách đó.
Một hệ thống lý tưởng là hệ thống:
-Có chính sách xác định một cách chính xác và đầy đủ các trạng thái an toàn của hệ thống;
-Có cơ chế thực thi đầy đủ và hiệu quả các quy định trong chính sách.
Tuy nhiên trong thực tế, rất khó xây dựng những hệ thống như vậy do có những hạn chế
về kỹ thuật, về con người hoặc do chi phí thiết lập cơ chế cao hơn lợi ích mà hệ thống an toàn
đem lại. Do vậy, khi xây dựng một hệ thống bảo mật, thì mục tiêu đặt ra cho cơ chế được áp dụng
phải bao gồm 3 phần như sau:
Ngăn chặn (prevention): mục tiêu thiết kế là ngăn chặn các vi phạm đối với chính sách.
Có nhiều sự kiện, hành vi dẫn đến vi phạm chính sách. Có những sự kiện đã được nhận diện là
nguy cơ của hệ thống nhưng có những sự kiện chưa được ghi nhận là nguy cơ. Hành vi vi phạm
có thể đơn giản như việc để lộ mật khẩu, quên thóat khỏi hệ thống khi rời khỏi máy tính, … hoặc
có những hành vi phức tạp và có chủ đích như cố gắng tấn công vào hệ thống từ bên ngoài.
Các cơ chế an toàn (secure mechanism) hoặc cơ chế chính xác (precise mechanism) theo
định nghĩa ở trên là các cơ chế được thiết kế với mục tiêu ngăn chặn.
Tuy nhiên, khi việc xây dựng các cơ chế an toàn hoặc chính xác là không khả thi thì cần
phải quan tâm đến 2 mục tiêu sau đây khi thiết lập các cơ chế bảo mật:
Phát hiện (detection): mục tiêu thiết kế tập trung vào các sự kiện vi phạm chính sách đã
và đang xảy ra trên hệ thống.
Thực hiện các cơ chế phát hiện nói chung rất phức tạp, phải dựa trên nhiều kỹ thuật và
nhiều nguồn thông tin khác nhau. Về cơ bản, các cơ chế phát hiện xâm nhập chủ yếu dựa vào việc
theo dõi và phân tích các thông tin trong nhật ký hệ thống (system log) và dữ liệu đang lưu thông
trên mạng (network traffic) để tìm ra các dấu hiệu của vi phạm. Các dấu hiệu vi phạm này (gọi là
signature) thường phải được nhận diện trước và mô tả trong một cơ sở dữ liệu của hệ thống (gọi
là signature database).
Ví dụ: khi máy tính bị nhiễm virus. Đa số các trường hợp người sử dụng phát hiện ra virus
khi nó đã thực hiện phá hoại trên máy tính. Tuy nhiên có nhiều virus vẫn đang ở dạng tiềm ẩn chứ
11
chưa thi hành, khi đó dùng chương trình quét virus sẽ có thể phát hiện ra. Để chương trình quét
virus làm việc có hiệu quả thì cần thiết phải cập nhật thường xuyên danh sách virus. Quá trình
cập nhật là quá trình đưa thêm các mô tả về dấu hiệu nhận biết các loại virus mới vào cơ sở dữ
liệu (virus database hoặc virus list).
Phục hồi (recovery): mục tiêu thiết kế bao gồm các cơ chế nhằm chặn đứng các vi phạm
đang diễn ra (response) hoặc khắc phục hậu quả của vi phạm một cách nhanh chóng nhất với mức
độ thiệt hại thấp nhất (recovery).
Tùy theo mức độ nghiêm trọng của sự cố mà có các cơ chế phục hồi khác nhau. Có những
sự cố đơn giản và việc phục hồi có thể hoàn toàn được thực hiện tự động mà không cần sự can
thiệp của con người, ngược lại có những sự cố phức tạp và nghiêm trọng yêu cầu phải áp dụng
những biện pháp bổ sung để phục hồi.
Một phần quan trọng trong các cơ chế phục hồi là việc nhận diện sơ hở của hệ thống và
điều chỉnh những sơ hở đó. Nguồn gốc của sơ hở có thể do chính sách an toàn chưa chặt chẽ hoặc
do lỗi kỹ thuật của cơ chế.
I.5 CHIẾN LƯỢC BẢO MẬT HỆ THỐNG AAA
AAA (Access control, Authentication, Auditing) được xem là bước tiếp cận cơ bản nhất
và là chiến lược nền tảng nhất để thực thi các chính sách bảo mật trên một hệ thống được mô tả
theo mô hình CIA.
Cơ sở của chiến lược này như sau:
1-Quyền truy xuất đến tất cả các tài nguyên trong hệ thống được xác định một cách tường
minh và gán cho các đối tượng xác định trong hệ thống.
2-Mỗi khi một đối tượng muốn vào hệ thống để truy xuất các tài nguyên, nó phải được xác
thực bởi hệ thống để chắc chắn rằng đây là một đối tượng có quyền truy xuất.
3-Sau khi đã được xác thực, tất cả các thao tác của đối đượng đều phải được theo dõi để
đảm bảo đối tượng không thực hiện quán quyền hạn của mình.
Cần phân biệt với AAA trong ngữ cảnh quản lý mạng truy nhập với ý nghĩa
Authentication, Authorization, Accounting – là dịch vụ trên các máy chủ truy nhập từ xa (remote
access server) để thực hiện quản lý truy nhập mạng của người sử dụng, theo dõi lưu lượng sử
dụng và tính cước truy nhập. AAA trong trường hợp này thường triển khai cùng với các dịch vụ
như RADIUS, TACACS+, …
AAA gồm 3 lĩnh vực tách rời nhưng hoạt động song song với nhau nhằm tạo ra các cơ chế
bảo vệ sự an toàn của hệ thống. Phần sau đây trình bày chi tiết về 3 lĩnh vực của AAA.
I.5.1
Điều khiển truy xuất:
Điều khiển truy xuất (Access control) được định nghĩa là một quy trình được thực hiện
bởi một thiết bị phần cứng hay một module phần mềm, có tác dụng chấp thuận hay từ chối một sự
truy xuất cụ thể đến một tài nguyên cụ thể.
Điều khiển truy xuất được thực hiện tại nhiều vị trí khác nhau của hệ thống, chẳng hạn
như tại thiết bị truy nhập mạng (như remote access server-RAS hoặc wireless access point WAP), tại hệ thống quản lý tập tin của một hệ điều hành ví dụ NTFS trên Windows hoặc trên các
hệ thống Active Directory Service trong Netware 4.x hay Windows 2000 server,…
Trong thực tế, điều khiển truy xuất được thực hiện theo 3 mô hình sau đây:
12
-Mô hình điều khiển truy xuất bắt buộc (Mandatory Access Control_MAC): là mô hình
điều khiển truy xuất được áp dụng bắt buộc đối với toàn hệ thống. Trong môi trường máy tính, cơ
chế điều khiển truy xuất bắt buộc được tích hợp sẵn trong hệ điều hành, và có tác dụng đối với tất
cả các tài nguyên và đối tượng trong hệ thống, người sử dụng không thể thay đổi được.
Ví dụ: trong hệ thống an toàn nhiều cấp (multilevel security), mỗi đối tượng (subject) hoặc
tài nguyên (object) được gán một mức bảo mật xác định. Trong hệ thống này, các đối tượng có
mức bảo mật thấp không được đọc thông tin từ các tài nguyên có mức bảo mật cao, ngược lại các
đối tượng ở mức bảo mật cao thì không được ghi thông tin vào các tài nguyên có mức bảo mật
thấp. Mô hình này đặc biệt hữu dụng trong các hệ thống bảo vệ bí mật quân sự (mô hình BellLaPadula, 1973).
Những đặc điểm phân biệt của mô hình điều khiển truy xuất bắt buộc:
-Được thiết lập cố định ở mức hệ thống, người sử dụng (bao gồm cả người tạo ra tài
nguyên) không thay đổi được.
-Người dùng và tài nguyên trong hệ thống được chia thành nhiều mức bảo mật khác nhau,
phản ánh mức độ quan trọng của tài nguyên và người dùng.
-Khi mô hình điều khiển bắt buộc đã được thiết lập, nó có tác dụng đối với tất cả người
dùng và tài nguyên trên hệ thống.
-Mô hình điều khiển truy xuất tự do (Discretionary Access Control_DAC): là mô hình
điều khiển truy xuất trong đó việc xác lập quyền truy xuất đối với từng tài nguyên cụ thể do người
chủ sở hữu của tài nguyên đó quyết định. Đây là mô hình được sử dụng phổ biến nhất, xuất hiện
trong hầu hết các hệ điều hành máy tính.
Ví dụ: trong hệ thống quản lý tập tin NTFS trên Windows XP, chủ sở hữu của một thư
mục có toàn quyền truy xuất đối với thư mục, có quyền cho phép hoặc không cho phép người
dùng khác truy xuất đến thư mục, có thể cho phép người dùng khác thay đổi các xác lập về quyền
truy xuất đối với thư mục.
Xem và thay đổi quyền truy xuất DAC trên một thư
mục trong Windows XP:
-Khởi động Windows Explorer bằng cách click phải
vào biểu tượng My Computer và chọn Explorer.
-Mặc định, Windows XP không thể hiện các thông tin
chi tiết về quyền truy xuất đối với thư mục. Muốn thể hiện các
thông tin này, vào menu Tools, chọn Folder Options, click vào
tab View, trong cửa sổ Advanced settings, tìm dòng Use
simple file sharing (Recommended) ở cuối danh sách và bỏ
tuỳ chọn này (uncheck), chọn OK.
-Click phải vào một thư mục tuỳ ý trong cửa sổ
Windows Explorer, chọn Properties, click vào tab Security
(Hình 1.2).
-Cửa sổ Group or User names liệt kê các người dùng
và nhóm người dùng hiện có trong hệ thống. Cửa sổ
Permissions for … liệt kê các quyền đã được gán cho nhóm
hoặc người dùng tương ứng.
Hình 1.2: Điều khiển truy xuất tự do
trong Windows XP
-Thử cho phép hoặc xoá bỏ các quyền mặc định của
một người dùng bất kỳ.
Đặc điểm phân biệt của mô hình điều khiển truy xuất tự do:
13
-Không được áp dụng mặc định trên hệ thống
-Người chủ sở hữu của tài nguyên (owner), thường là người tạo ra tài nguyên đó hoặc
người được gán quyền sở hữu, có toàn quyền điều khiển việc truy xuất đến tài nguyên.
-Quyền điều khiển truy xuất trên một tài nguyên có thể được chuyển từ đối tượng (user)
này sang đối tượng (user) khác.
-Mô hình điều khiển truy xuất theo chức năng (Role Based Access Control_RBAC):
đây là mô hình điều khiển truy xuất dựa trên vai trò của từng người dùng trong hệ thống (user’
roles).
Ví dụ: một người quản lý tài chính cho công ty (financial manager) thì có quyền truy xuất
đến tất cả các dữ liệu liên quan đến tài chính của công ty, được thực hiện các thao tác sửa, xóa,
cập nhật trên cơ sở sữ liệu. Trong khi đó, một nhân viên kế toán bình thường thì chỉ được truy
xuất đến một bộ phận nào đó của cơ sở dữ liệu tài chính và chỉ được thực hiện các thao tác có giới
hạn đối với cơ sở dữ liệu.
Vấn đề quan trọng trong mô hình điều khiển truy xuất theo chức năng là định nghĩa các
quyền truy xuất cho từng nhóm đối tượng tùy theo chức năng của các đối tượng đó. Việc này
được định nghĩa ở mức hệ thống và áp dụng chung cho tất cả các đối tượng.
Cơ chế quản lý theo nhóm (account group) của Windows NT chính là sự mô phỏng của
mô hình RBAC. Trong cơ chế này, người sử dụng được gán làm thành viên của một hoặc nhiều
nhóm trong hệ thống, việc phân quyền truy xuất đến các tài nguyên được thực hiện đối với các
nhóm chứ không phải đối với từng người dùng, khi đó các người dùng thành viên trong nhóm sẽ
nhận được quyền truy xuất tương đương một cách mặc định. Việc thay đổi quyền truy xuất đối
với từng người dùng riêng biệt được thực hiện bằng cách chuyển người dùng đó sang nhóm khác
có quyền truy xuất thích hợp.
Đặc điểm phân biệt của mô hình điều khiển truy xuất theo chức năng:
-Quyền truy xuất được cấp dựa trên công việc của người dùng trong hệ thống (user’s role)
-Linh động hơn mô hình điều khiển truy xuất bắt buộc, người quản trị hệ thống có thể cấu
hình lại quyền truy xuất cho từng nhóm chức năng hoặc thay đổi thành viên trong các nhóm.
-Thực hiện đơn giản hơn mô hình điều khiển truy xuất tự do, không cần phải gán quyền
truy xuất trực tiếp cho từng người dùng.
Ứng dụng các mô hình điều khiển truy xuất trong thực tế:
Trong thực tế, mô hình điều khiển truy xuất tự do (DAC) được ứng dụng rộng rãi nhất do
tính đơn giản của nó đối với người dùng. Tuy nhiên, DAC không đảm bảo được các yêu cầu đặc
biệt về an toàn hệ thống. Do vậy, một mô hình thích hợp nhất là phối hợp cả 3 mô hình: mô hình
điều khiển truy xuất bắt buộc, mô hình điều khiển truy xuất tự do và mô hình điều khiển truy xuất
theo chức năng.
Ngoài mô hình DAC đã được tích hợp trong hấu hết các hệ điều hành; mô hình RBAC đã
được ứng dụng trong dịch vụ Active Directory của Netware 4.11 và Windows 2000 trở về sau; mô
hình MAC được đưa vào trong các hệ điều hành như Windows Vista (dưới dạng cơ chế
Mandatory Integrity Control), SELinux (kể cả Red Hat Enterprise Linux version 4), Trusted
Solaris và Apple Computer (MAC OS X version 10.5 Leopard).
I.5.2
Xác thực:
14
Xác thực (Authentication) là một thủ tục có chức năng xác minh nhận dạng (identity) của
một đối tượng trước khi trao quyền truy xuất cho đối tượng này đến một tài nguyên nào đó. Xác
thực được thực hiện dựa trên 3 cơ sở:
-What you know (điều mà đối tượng biết), ví dụ mật khẩu.
-What you have (cái mà đối tượng có), ví dụ thẻ thông minh Smartcard.
-What you are (đặc trưng của đối tượng): các đặc điểm nhận dạng sinh trắc học như dấu
vân tay, võng mạc, …
Trong môi trường máy tính, xác thực được dùng ở nhiều ngữ cảnh khác nhau, ví dụ: xác
thực tên đăng nhập và mật khẩu của người sử dụng (hình 1.3) trước khi cho phép người sử dụng
thao tác trên hệ thống máy tính (xác thực của hệ điều hành), xác thực tên đăng nhập và mật khẩu
trước khi cho phép người dùng kiểm tra hộp thư điện tử (xác thực của Mail server); trong giao
dịch ngân hàng, thủ tục xác thực dùng để xác định người đang ra lệnh thanh toán có phải là chủ tài
khoản hay không; trong trao đổi thông tin, thủ tục xác thực dùng để xác định chính xác nguồn gốc
của thông tin.
Trạm làm việc
(workstation)
Máy chủ
(server)
Hình 1.3: Xác thực bằng tên đăng nhập và mật khẩu
Nhiều kỹ thuật khác nhau được áp dụng để thực thi cơ chế xác thực. Cơ chế xác thực dùng
tên đăng nhập và mật khẩu là cơ chế truyền thống và vẫn còn được sử dụng rộng rãi hiện nay. Khi
việc xác thực được thực hiện thông qua mạng, một số hệ thống thực hiện việc mật mã hoá tên
đăng nhập và mật khẩu trước khi truyền đi để tránh bị tiết lộ, nhưng cũng có nhiều hệ thống gởi
trực tiếp những thông tin nhạy cảm này trên mạng (ví dụ như các dịch vụ FTP, Telnet, …) gọi là
cleartext authentication.
Một số kỹ thuật tiên tiến hơn được dùng trong xác thực như thẻ thông minh (Smartcard),
chứng thực số (digital certificate), các thiết bị nhận dạng sinh trắc học (biometric devices),…
Để tăng độ tin cậy của cơ chế xác thực, nhiều kỹ thuật được sử dụng phối hợp nhau gọi là
multi-factor authentication. Ví dụ: xác thực dùng thẻ thông minh kèm với mật khẩu, nghĩa là
người sử dụng vừa có thẻ vừa phải biết mật khẩu thì mới đăng nhập được, tránh trường hợp lấy
cắp thẻ của người khác để đăng nhập.
15
Trong thực tế tồn tại hai phương thức xác thực: xác thực một chiều (one way
authentication) và xác thực hai chiều (mutual authentication).
Phương thức xác thực một chiều chỉ cung cấp cơ chế để một đối tượng (thường là máy
chủ) kiểm tra nhận dạng của đối tượng kia (người dùng) mà không cung cấp cơ chế kiểm tra
ngược lại (tức không cho phép người dùng kiểm tra nhận dạng của máy chủ). Xét trường hợp một
người sử dụng đăng nhập vào một hộp thư điện tử ở xa thông qua dịch vụ web (web mail). Người
sử dụng dĩ nhiên phải cung cấp tên đăng nhập và mật khẩu đúng thì mới được phép truy xuất hộp
thư. Để đánh cắp mật khẩu của người dùng, kẻ tấn công có thể xây dựng một trang web hòan tòan
giống với giao diện của máy chủ cung cấp dịch vụ thư điện tử (mail server) và đánh lừa người sử
dụng kết nối đến trang web này. Do không có cơ chế xác thực máy chủ, người sử dụng không thể
nhận biết đây là một máy chủ giả mạo nên yên tâm cung cấp tên đăng nhập và mật khẩu.
Phương thức kiểm tra hai chiều cho phép hai đối tượng tham gia giao tác xác thực lẫn
nhau, do đó tính chính xác của quá trình xác thực được đảm bảo. Giao thức bảo mật SSL (Secure
Sockets Layer) dùng trong dịch vụ web (được trình bày ở chương III) cung cấp cơ chế xác thực
hai chiều dùng chứng thực số.
Có nhiều giải thuật xác thực khác nhau. Giải thuật đơn giản nhất chỉ cần so sánh tên đăng
nhập và mật khẩu mà người sử dụng cung cấp với tên đăng nhập và mật khẩu đã được lưu trong
hệ thống, nếu giống nhau nghĩa là thủ tục xác thực thành công (PAP). Giải thuật phức tạp hơn như
CHAP thì thực hiện việc mật mã hóa thông tin trên một giá trị ngẫu nhiên nào đó do máy chủ đưa
ra (gọi là challenge) để tránh trường hợp mật khẩu bị đọc lén trên mạng và các hình thức tấn công
phát lại (replay attack). Một giải thuật phức tạp khác là Kerberos thực hiện thủ tục xác thực theo
một quá trình phức tạp gồm nhiều bước nhằm đảm bảo hạn chế tất cả các nguy cơ gây nên xác
thực sai. Các giải thuật xác thực được trình bày cho tiết ở phần I của chương III.
I.5.3
Kiểm tra:
Kiểm tra (Auditing) là cơ chế theo dõi hoạt động của hệ thống, ghi nhận các hành vi diễn
ra trên hệ thống và liên kết các hành vi này với các tác nhân gây ra hành vi.
Ví dụ: cài đặt cơ chế kiểm tra cho một thư mục trong hệ thống tập tin NTFS sẽ cho phép
người quản trị theo dõi các hoạt động diễn ra trên thư mục như: thao tác nào đã được thực hiện,
ngày giờ thực hiện, người sử dụng nào thực hiện, …
Các mục tiêu của kiểm tra:
-Cung cấp các thông tin cần thiết cho việc phục hồi hệ thống khi có sự cố
-Đánh giá mức độ an toàn của hệ thống để có kế hoạch nâng cấp kịp thời
-Cung cấp các thông tin làm chứng cứ cho việc phát hiện các hành vi truy xuất trái phép
trên hệ thống.
Trong một hệ thống tin cậy (reliable system) thì việc kiểm tra cũng là một yêu cầu quan
trọng bởi vì nó đảm bảo rằng các hành vi của bất kỳ người dùng nào trong hệ thống (kể cả những
người dùng hợp hệ đã được xác thực – authenticated user) cũng đều được theo dõi để chắc chắn
rằng những hành vi đó diễn ra đúng theo các chính sách an toàn đã được định nghĩa trên hệ thống.
Nguyên tắc chung khi xây dựng các hệ thống an tòan là chia nhỏ các thủ tục thành nhiều
công đoạn được thực hiện bởi nhiều tác nhân khác nhau, và do đó việc thực hiện hoàn chỉnh một
thủ tục yêu cầu phải có sự tham gia của nhiều tác nhân. Đây là cơ sở để thực thi các cơ chế kiểm
tra.
16
Ví dụ: công việc giữ kho hàng và công việc quản lý sổ sách phải được thực hiện bởi hai
nhân viên khác nhau để tránh trường hợp một nhân viên vừa có thể lấy hàng ra ngoài vừa có thể
thay đổi thông tin trong sổ quản lý. Nguyên tắc này được áp dụng triệt để trong cơ chế kiểm tra
trên hệ thống nhằm phân biệt rõ ràng giữa chức năng kiểm tra với các hoạt động được kiểm tra.
Thông thường, một đối tượng được kiểm tra sẽ không có quyền thay đổi các thông tin mà cơ chế
kiểm tra ghi lại.
Các thành phần của hệ thống kiểm tra:
-Logger: Ghi lại thông tin giám sát trên hệ thống
-Analyzer: Phân tích kết quả kiểm tra
-Notifier: Cảnh báo về tính an toàn của hệ thống dựa trên kết quả phân tích.
Song song với cơ chế kiểm tra thường trực trên hệ thống (auditing), việc kiểm tra hệ
thống định kỳ (system scanning) có chức năng kiểm tra và phát hiện các sơ hở kỹ thuật ảnh hưởng
đến sự an toàn của hệ thống. Các chức năng có thể thực hiện bởi các chương trình kiểm tra hệ
thống trên máy tính thường gặp:
-Kiểm tra việc tuân thủ chính sách an toàn về mật khẩu (password policy), ví dụ: người
dùng có đổi mật khẩu thường xuyên không, độ dài mật khẩu, độ phức tạp của mật khẩu, …
-Đánh giá khả năng xâm nhập hệ thống từ bên ngoài.
-Kiểm tra phản ứng của hệ thống đối với các dấu hiệu có thể dẫn đến tấn công từ chối dịch
vụ hoặc sự cố hệ thống (system crash).
Lưu ý rằng, các công cụ kiểm tra hệ thống cũng đồng thời là các công cụ mà những kẻ tấn
công (attacker) sử dụng để phát hiện các lổ hổng bảo mật trên hệ thống, từ đó thực hiện các thao
tác tấn công khác. Có nhiều phần mềm quét hệ thống, điển hình như SATAN (System
Administrator Tool for Analyzing Network), Nessus, Nmap, …
Cài đặt chức năng Audit của hệ điều hành Windows XP lên một thư mục trên một phân
vùng NTFS:
-Mặc định, Windows XP không áp dụng cơ chế kiểm tra, do đó cần phải kích hoạt cơ chế
kiểm tra của Windows XP dùng Local Security Policy như sau: Vào Control Panel, chọn
Administrative Tools, chọn Local Security Policy, trong khung Security Settings ở bên trái cửa
sổ, double-click vào mục Local Policy, sau đó click vào mục Audit Policy. Khi đó, khung bên
phải cửa sổ liệt kê các chức năng kiểm tra của Windows XP. Để kích hoạt cơ chế kiểm tra trên thư
mục, tìm dòng Audit object access, double-click vào dòng này và chọn cả hai mục Success và
Failure trong cửa sổ mới mở. Click OK và đóng tất cả các cửa sổ lại.
-Để áp dụng cơ chế kiểm tra trên một thư mục nào đó: khởi động Windows explorer, tìm
một thư mục muốn kiểm tra và click phải vào thư mục này, chọn Properties, click vào tab
Security, click vào nút Advanced, sau đó click vào tab Auditing. Trong cửa sổ Auditing entries
liệt kê các mục kiểm tra đã cài đặt. Để tạo một mục mới, click vào nút Add, chọn tên người dùng
hoặc nhóm cần kiểm tra trong cửa sổ Select User or Group vừa xuất hiện, click OK. Cửa sổ
Aditing Entry for … xuất hiện, chọn các thao tác muốn kiểm tra, ví dụ Delete Subfolders and
Files để theo dõi các hành vi xoá tập tin và thư mục con trong mục này. Cần chọn cả hai loại sự
kiện là Successful và Failed. Click OK và đóng tất cả các cửa sổ lại.
-Bắt đầu từ đây, tất cả các thao tác xoá các tập tin và thư mục con trong thư mục đã chọn
được thực hiện bởi người dùng hoặc nhóm đã chỉ định ở trên đều được theo dõi và ghi lại trong
nhật ký hệ thống. Muốn xem các thông tin này thì vào Control Panel, chọn Administrative Tools,
chọn Event Viewer và chọn mục Security.
17
Hình 1.4: Cài đặt Auditing trên thư mục NTFS
Tóm lại, AAA là phương pháp tiếp cận cơ bản nhất để thực hiện một hệ thống bảo mật
theo mô hình CIA. Phương pháp này gồm 3 phần tách rời:
-Thiết lập các cơ chế điều khiển truy xuất cho từng đối tượng (Access control)
-Xác thực các đối tượng trước khi cho phép thao tác trên hệ thống (Authentication)
-Theo dõi các thao tác của đối tượng trên hệ thống (Auditing)
I.6 CÁC HÌNH THỨC XÂM NHẬP HỆ THỐNG
Thuật ngữ xâm nhập (intrusion) và tấn công (attack) được sử dụng với ý nghĩa gần
giống nhau trong ngữ cảnh bảo mật hệ thống. Xâm nhập mang ý nghĩa phổ quát hơn, chỉ bất kỳ
một sự kiện nào có xâm hại đến sự an toàn của hệ thống, một cách chủ động hoặc thụ động. Tấn
công thường được dùng để chỉ các hành vi xâm nhập chủ động, được thực hiện bởi con người
nhằm vào một hệ thống với mục đích khai thác hoặc phá hoại.
Mục tiêu của xâm nhập là tác động vào 3 thuộc tính CIA của hệ thống.
Một cách tổng quát, sự an toàn của một hệ thống thông tin có thể bị xâm phạm bằng
những cách sau đây:
-Interruption: làm gián đoạn hoạt động của hệ thống thông tin, ví dụ như phá hoại phần
cứng, ngắt kết nối, phá hoại phần mềm, …Hình thức xâm nhập này tác động vào đặc tính Khả
dụng của thông tin.
-Interception: truy xuất trái phép vào hệ thống thông tin. Tác nhân của các hành vi xâm
nhập kiểu Interception có thể là một người, một phần mềm hay một máy tính làm việc bằng cách
quan sát dòng thông tin (monitor) nhưng không làm thay đổi thông tin gốc. Hình thức xâm nhâp
này tác động vào đặc tính Bí mật của thông tin.
18
-Modification: truy xuất trái phép vào hệ thống thông tin, đồng thời làm thay đổi nội dung
thông tin, ví dụ xâm nhập vào máy tính và làm thay đổi nội dung một tập tin, thay đổi một chương
trình làm cho chương trình làm việc sai, thay đổi nội dung một thông báo đang gởi đi trên mạng,
v.v… Hình thức xâm nhập này tác động vào tính Toàn vẹn của thông tin.
-Ngoài ra, một hình thức xâm nhập thứ tư là hình thức xâm nhập bằng thông tin giả danh
(Farbrication), ví dụ, giả danh một người nào đó để gởi mail đến một người khác, giả mạo địa chỉ
IP của một máy nào đó để kết nối với một máy khác, …Hình thức xâm nhập này làm thay đổi
nguồn gốc thông tin, tức cũng là tác động vào đặc tính Toàn vẹn của thông tin.
Đối tượng
xâm nhập
Mạng
Người dùng
Máy chủ
Hình 1.5: Xâm nhập kiểu Interruption
Đối tượng
xâm nhập
Mạng
Người dùng
Người dùng
Hình 1.6: Xâm nhập kiểu Interception
Trong thực tế, việc xâm nhập hệ thống được thực hiện bởi rất nhiều phương thức, công cụ
và kỹ thuật khác nhau, thêm vào đó, việc phát hiện ra các phương thức xâm nhập mới là việc xảy
ra rất thường xuyên, nên vấn đề nhận dạng và phân loại các xâm nhập một cách có hệ thống là
khó khăn và không chính xác. Có thể phân loại xâm nhập theo các tiêu chí sau đây:
19
-Phân loại theo mục tiêu xâm nhập (xâm nhập mạng, xâm nhập ứng dụng, xâm nhập hỗn
hợp)
-Phân loại theo tính chất xâm nhập (xâm nhập chủ động, xâm nhập thụ động)
-Phân loại theo kỹ thuật xâm nhập (dò mật khẩu, phần mềm khai thác, …)
Trong tài liệu này, với mục tiêu là giúp người đọc nhận diện được những phương thức
xâm nhập hệ thống cơ bản và phổ biến đã được ghi nhận và phân tích, nên các hình thức xâm
nhập được trình bày theo hai nhóm như sau:
1-Các phương thức tấn công (attacks)
2-Các phương thức xâm nhập hệ thống bằng phần mềm phá hoại (malicious codes)
Đối tượng
xâm nhập
Mạng
Người dùng
Người dùng
Hình 1.7: Xâm nhập kiểu Modification
Đối tượng
xâm nhập
Mạng
Người dùng
Người dùng
Hình 1.8: Xâm nhập kiểu Farbrication
I.6.1
Các phương thức tấn công:
-Tấn công từ chối dịch vụ DoS (Denial of Service):
Dạng tấn công này không xâm nhập vào hệ thống để lấy cắp hay thay đổi thông tin mà chỉ
nhằm vào mục đích ngăn chặn hoạt động bình thường của hệ thống, đặc biệt đối với các hệ thống
phục vụ trên mạng công cộng như Web server, Mail server, …
20
Ví dụ: kẻ tấn công dùng phần mềm tự động liên tục gởi dữ liệu đến một máy chủ trên
mạng, gây quá tải cho máy chủ, làm cho máy chủ không còn khả năng cung cấp dịch vụ một cách
bình thường.
Các tấn công từ chối dịch vụ thường rất dễ nhận ra do tác động cụ thể của nó đối với hệ
thống. Mục tiêu tấn công của từ chối dịch vụ có thể là một máy chủ hoặc một mạng con (bao gồm
cả thiết bị mạng như router và kết nối mạng).
Cơ sở của tấn công từ chối dịch vụ là các sơ hở về bảo mật trong cấu hình hệ thống (cấu
hình firewall), sơ hở trong giao thức kết nối mạng (TCP/IP) và các lỗ hổng bảo mật của phần
mềm, hoặc đơn giản là sự hạn chế của tài nguyên như băng thông kết nối (connection bandwidth),
năng lực của máy chủ (CPU, RAM, đĩa cứng, …). Tấn công từ chối dịch vụ thường được thực
hiện thông qua mạng Intrenet, nhưng cũng có thể xuất phát từ trong nội bộ hệ thống dưới dạng tác
động của các phần mềm độc như worm hoặc trojan.
Hai kỹ thuật thường dùng để gây ra các tấn công từ chối dịch vụ truyền thống tương ứng
với hai mục tiêu tấn công là Ping of Death và buffer-overflow.
Ping of Death tấn công vào kết nối mạng (bao gồm cả router) bằng cách gởi liên
tục và với số lượng lớn các gói dữ liệu ICMP (Internet Control Message Protocol)
đến một mạng con nào đó, chiếm toàn bộ băng thông kết nối và do đó gây ra tắc
nghẽn mạng.
Buffer-overflow (được mô tả ở phần software exploitation attacks) tấn công vào
các máy chủ bằng cách nạp dữ liệu vượt quá giới hạn của bộ đệm (buffer) trên
máy chủ, gây ra lỗi hệ thống. Các tấn công từ chối dịch vụ nổi tiếng trong lịch sử
bảo mật máy tính như Code Red, Slapper, Slammer,… là các tấn công sử dụng kỹ
thuật buffer-overflow.
Tấn công từ chối dịch vụ thường không gây tiết lộ thông tin hay mất mát dữ liệu mà chỉ
nhắm vào tính khả dụng của hệ thống. Tuy nhiên, do tính phổ biến của từ chối dịch vụ và đặc biệt
là hiện nay chưa có một giải pháp hữu hiệu cho việc ngăn chặn các tấn công loại này nên từ chối
dịch vụ được xem là một nguy cơ rất lớn đối với sự an toàn của các hệ thống thông tin.
-Tấn công từ chối dịch vụ phân tán (Distributed DoS hay DDoS):
Là phương thức tấn công dựa trên nguyên tắc của từ chối dịch vụ nhưng có mức độ nguy
hiểm cao hơn do huy động cùng lúc nhiều máy tính cùng tấn công vào một hệ thống duy nhất.
Tấn công từ chối dịch vụ phân tán được thực hiện qua 2 giai đoạn:
1-Kẻ tấn công huy động nhiều máy tính trên mạng tham gia từ chối dịch vụ phân tán bằng
cách cài đặt các phần mềm điều khiển từ xa trên các máy tính này.
Các máy tính đã được cài đặt phần mềm điều khiển này được gọi là các zoombie. Để thực
hiện bước này, kẻ tấn công dò tìm trên mạng những máy có nhiều sơ hở để tấn công và cài đặt các
phần mềm điều khiển từ xa lên đó mà người quản lý không hay biết. Những phần mềm này được
gọi chung là backdoor.
2-Kẻ tấn công điều khiển các zoombie đồng loạt thực hiện tấn công vào mục tiêu.
Mô hình một chuỗi tấn công chối dịch vụ phân tán điển hình được mô tả ở hình 1.9.
Các thành phần tham gia trong chối dịch vụ phân tán bao gồm:
-Client: phần mềm điều khiển từ xa được kẻ tấn công sử dụng để điều khiển các máy khác
tham gia tấn công. Máy tính chạy phần mềm này được gọi là master.
21
-Deamon: phần mềm chạy trên các zoombie, thực hiện yêu cầu của master và là nơi trực
tiếp thực hiện tấn công chối dịch vụ (DoS) đến máy nạn nhân.
Master
(client)
Zoombie
(Deamon)
Mục tiêu
Hình 1.9: Tấn công từ chối dịch vụ phân tán (DDoS)
-Tấn công giả danh (Spoofing attack):
Đây là dạng tấn công bằng cách giả danh một đối tượng khác (một người sử dụng, một
máy tính với một địa chỉ IP xác định hoặc một phần mềm nào đó) để thực hiện một hành vi.
Ví dụ 1: một người có thể giả danh địa chỉ e-mail của một người khác để gởi thư đến một
người thứ ba, đây là trường hợp đối tượng bị giả danh là một người sử dụng.
Ví dụ 2: một máy tính trên mạng có thể tạo ra các gói dữ liệu mang địa chỉ IP nguồn
(source IP address) không phải là địa chỉ của mình để gởi cho máy khác (gọi là IP spoofing), đây
là trường hợp đối tượng bị giả danh là một máy tính.
Ví dụ 3: trường hợp thứ ba là trường hợp mà đối tượng bị giả danh là một phần mềm, ví
dụ chương trình xác thực người sử dụng (user logon) trên hệ điều hành Windows. Bằng cách tạo
ra một chương trình có giao diện giống như cửa sổ logon của Windows và cho thực hiện khi
Windows khởi động. Người sử dụng không phân biệt được đây là cửa sổ giả nên nhập tên đăng
nhập và mật khẩu cho chương trình này và hậu quả là những thông tin này bị tiết lộ.
Tấn công giả danh như đề cập ở trên là hình thức điển hình nhất của spoofing attack, tồn
tại song song với những khiếm khuyết về kỹ thuật của bộ giao thức TCP/IP. Ngày nay, Tấn công
giả danh đã phát triển thêm một hướng mới dựa trên sự phổ biến của mạng Internet, đó là
Phishing. Phishing hoạt động bằng cách giả danh các địa chỉ e-mail hoặc địa chỉ trang web để
đánh lừa người sử dụng.
-Tấn công xen giữa (Man-in-the-middle attack):
Đây là phương thức tấn công bằng cách xen vào giữa một thủ tục đang diễn ra, thường
xảy ra trên mạng IP, nhưng cũng có thể xảy ra trong nội bộ một máy tính.
Trên mạng, kẻ tấn công bằng một cách nào đó xen vào một kết nối, đặc biệt ở giai đoạn
thiết lập kết nối giữa người dùng với máy chủ, và thông qua đó nhận được những thông tin quan
22
trọng của người dùng. Tấn công xen giữa đặc biệt phổ biến trên mạng không dây (wireless
network) do đặc tính dễ xâm nhập của môi trường không dây. Do vậy, việc áp dụng các kỹ thuật
mã hoá (như WEP, WPA, …) là điều rất quan trọng để đảm bảo an toàn cho mạng không dây.
Còn trên một máy tính, tấn công dạng này có thể được thực hiện dưới dạng một chương
trình thu thập thông tin ẩn (key-logger), chương trình này sẽ âm thầm chặn bắt tất cả những thông
tin mà người dùng nhập vào từ bàn phím, trong đó có thể sẽ có nhiều thông tin quan trọng.
I.1.1
Cli
Kẻ tấn công xen vào giữa một
thủ tục bắt tay để lấy thông tin.
I.1.2
Se
Hình 1.10: Tấn công xen giữa (Man-in-the-middle)
-Tấn công phát lại (Replay attack):
Trong phương thức tấn công này, các gói dữ liệu lưu thông trên mạng được chặn bắt và
sau đó phát lại (replay). Trong môi trường mạng, thông tin xác thực giữa người dùng và máy chủ
được truyền đi trên mạng. Đây là nguồn thông tin thường bị tấn công nhất. Nếu khi phát lại, máy
chủ chấp nhận thông tin này thì máy tấn công có khả năng truy xuất vào máy chủ với quyền của
người dùng trước đó.
Thông tin xác thực gởi cho server
Client
Server
Thông tin xác thực
bị chặn bắt
Thông tin xác thực
được phát lại
Kẻ tấn công
Hình 1.11: Tấn công phát lại (Replay)
-Nghe lén (Sniffing attack):
Đây là hình thức lấy cắp dữ liệu bằng cách đọc lén trên mạng. Hầu hết các card mạng điều
có khả năng chặn bắt (capture) tất cả các gói dữ liệu lưu thông trên mạng, mặc dù gói dữ liệu đó
không được gởi đến cho mình. Những card mạng có khả năng như thế được gọi là đang ở chế độ
promiscuous.
Có rất nhiều phần mềm cho phép thực hiện chặn bắt dữ liệu từ một máy đang kết nối vào
mạng, ví dụ Ethereal, Common view hoặc Network monitor có sẵn trên Windows server (2000
23
hoặc 2003 server). Bằng việc đọc và phân tích các gói dữ liệu bắt được, kẻ tấn công có thể tìm
thấy nhiều thông tin quan trọng để tiến hành các hình thức tấn công khác.
-Tấn công mật khẩu (Password attack):
Là hình thức truy xuất trái phép vào hệ thống bằng cách dò mật khẩu. Có hai kỹ thuật dò
mật khẩu phổ biến:
-Dò tuần tự (Brute force attack): Dò mật khẩu bằng cách thử lần lượt các tổ hợp ký tự,
thông thường việc này được thực hiện tự động bằng phần mềm. Mật khẩu càng dài thì số lần thử
càng lớn và do đó khó bị phát hiện hơn. Một số hệ thống quy định chiều dài tối thiểu của mật
khẩu. Ngoài ra để ngăn chặn việc thử mật khẩu nhiều lần, một số hệ thống ngắt kết nối nếu liên
tiếp nhận được mật khẩu sai sau một số lần nào đó.
-Dò theo tự điển (Dictionary attack): thử lần lượt các mật khẩu mà người sử dụng thường
dùng. Để cho dơn giản, người sử dụng thường có thói quen nguy hiểm là dùng những thông tin dễ
nhớ để làm mật khẩu, ví dụ như tên mình, ngày sinh, số điện thoại, …Một số hệ thống hạn chế
nguy cơ này bằng cách định ra các chính sách về mật khẩu (password policy), quy định độ khó tối
thiểu của mật khẩu, ví dụ mật khẩu phải khác với những thông tin liên quan đến cá nhân người sử
dụng, phải bao gồm cả chữ hoa và chữ thường, chữ cái và các mẫu tự khác chữ cái,…
Một số kỹ thuật tấn công dựa trên giao thức TCP/IP:
Giao thức TCP/IP là giao thức chuẩn được sử dụng trong hầu hết các mạng máy tính, và là
giao thức bắt buộc trên mạng Internet. Nhưng không may, TCP/IP chứa trong nó nhiều sơ hở về
bảo mật dẫn đến những tấn công dựa trên nguyên lý của TCP/IP như sau:
-Làm tràn kết nối TCP (TCP SYN/ACK flooding attack):
Đây là tấn công khai thác thủ tục bắt tay ba chiều (three-way handshake) của TCP. Mục
đích của tấn công là gây ra quá tải kết nối trên máy chủ và dẫn tới từ chối dịch vụ (DoS).
Hình 1.12 mô tả thủ tục bắt tay ba chiều trong tình huống bình thường. Khi một máy
(client) muốn kết nối một máy khác (server) qua một dịch vụ nào đó, nó bắt đầu bằng cách gởi
bản tin SYN tới server trên cổng (port) tương ứng của dịch vụ đó. Ngay sau đó, server dành riêng
một kết nối cho client này và trả lời bằng một bản tin SYN/ACK cho client. Để hoàn thành kết nối,
client phải một lần nữa trả lời bằng một bản tin ACK gởi đến server. Trong trường hợp không
SYN message
SYN/ACK message
ACK message
Hình 1.12: Thủ tục bắt tay ba chiều của TCP/IP
nhận được bản tin ACK trả lời từ phía client thì server phải chờ cho đến khi hết thời hiệu
(timeout) rồi mới giải toả kết nối này. Với sơ hở này, nếu một kẻ tấn công cố tình tạo ra các bản
ACK liên tiếp gởi đến server nhưng không hồi đáp (tức không gởi lại bản tin ACK cho server), thì
đến một thời điểm nào đó, tất cả các kết nối có thể có của server đều dành hết cho việc chờ đợi
này và do không có khả năng phục vụ cho các kết nối khác. Hình 1.13 trình bày phương thức tấn
công dùng SYN/ACK flooding.
24
ACK message
ACK message
ACK message
ACK message
Kẻ tấn công
Máy chủ
ACK message
ACK message
Hình 1.13: Tấn công TCP SYN/ACK flooding
-Tấn công dựa vào số thứ tự của TCP (TCP sequence number attack):
Trong quá trình truyền dữ liệu giữa các máy sử dụng giao thức TCP, số thứ tự (sequence
number) là một thông tin quan trọng giúp xác định thứ tự các gói dữ liệu và xác nhận các gói đã
được nhận thành công. Số thứ tự được đánh theo từng byte dữ liệu và được duy trì một cách đồng
bộ giữa bên gởi và bên nhận. Nếu một máy thứ ba, bằng cách nào đó, chặn bắt được các gói dữ
liệu đang được trao đổi và đoán được số thứ tự của quá trình truyền nhận dữ liệu, nó sẽ có khả
năng xen vào kết nối, làm ngắt kết nối của một đầu và nhảy vào thay thế (hijacking). Hình 1.14
mô tả phương thức hoạt động của tấn công này.
Server
Kẻ tấn công
Số thứ tự
Máy bị tấn công
Hình 1.14: Tấn công dựa vào số thứ tự TCP (TCP sequence number attack)
-Chiếm kết nối TCP (TCP Hijacking):
Giống như phương thức tấn công ở trên (sequence number attack), nhưng sau khi đoán
được số thứ tự, máy tấn công sẽ cố gắng chiếm lấy một đầu của kết nối hiện hữu mà đầu kia
không hay biết để tiếp tục truyền nhận dữ liệu, khi đó thông tin trao đổi giữa hai máy ban đầu bị
chuyển sang một máy thứ ba. Hình 1.15 trình bày hoạt động của phương thức tấn công này.
-Tấn công dùng giao thức ICMP (ICMP attack):
ICMP (Internet Control Message Protocol) là một giao thức điều khiển dùng trong mạng
IP. Giao thức này thường được sử dụng để thực hiện các thủ tục điều khiển trên mạng IP như
25
kiểm tra các kết nối (ví dụ khi thực hiện các lệnh Ping, Tracert, …). Hai phương thức tấn công
phổ biến dựa trên ICMP bao gồm:
Chiếm kết nối hiện
tại của client
Ngắt kết nối của client đến server
Server
Máy tấn công
Client
Hình 1.15: Chiếm kết nối TCP (TCP connection hijacking)
-Smurf attack: (còn được gọi la Ping of Death). Nguyên lý hoạt động của ICMP là hồi đáp
lại (reply) khi nhận được các yêu cầu (echo request) từ các máy khác, do chức năng của ICMP là
để kiểm tra các kết nối IP. Dựa vào nguyên lý này, một kẻ tấn công có thể giả danh một địa chỉ IP
nào đó (IP spoofing) và gởi một yên cầu (echo request) đến tất cả các máy trong mạng nội bộ
(bằng cách sử dụng địa chỉ quảng bá broadcast). Ngay lập tức, tất cả các máy này đều đồng loạt
trả lời cho máy có địa chỉ IP bị giả danh, dẫn đến máy này bị tắc nghẽn không còn khả năng hoạt
động bình thường. Mục tiêu của tấn công smurf là làm tê liệt một máy nào đó bằng các gói ICMP.
Hình 1.16 mô tả hoạt động của phương thức tấn công smurf.
Các máy trong nhóm quảng bá
Máy tấn công
Thực hiện lệnh Ping đến địa
chỉ quảng bá của mạng từ địa
chỉ giả danh
Tất cả các máy trong nhóm
quảng bá đồng loạt gởi trả lời
về máy có địa chỉ IP bị giả
danh, gây tắc nghẽn
Máy bị tấn công
Hình 1.16: Tấn công Ping of Death
26
-ICMP tunneling: Do gói dữ liệu ICMP thường được chấp nhận bởi nhiều máy trên mạng,
nên kẻ tấn công có thể lợi dụng điều này để chuyển các thông tin không hợp lệ thông qua các gói
dữ liệu ICMP. Để ngăn chặn các tấn công này, cách tốt nhất là từ chối tất cả các gói dữ liệu
ICMP.
-Tấn công khai thác phần mềm (Software exploitation):
Đây là tên gọi chung của tất cả các hình thức tấn công nhắm vào một chương trình ứng
dụng hoặc một dịch vụ nào đó ở lớp ứng dụng. Bằng cách khai thác các sơ hở và các lỗi kỹ thuật
trên các phần mềm và dịch vụ này, kẻ tấn công có thể xâm nhập hệ thống hoặc làm gián đoạn hoạt
động bình thường của hệ thống.
Tấn công tràn bộ đệm (buffer overflow attack): là phương thức tấn công vào các lỗi lập
trình của số phần mềm. Lỗi này có thể do lập trình viên, do bản chất của ngôn ngữ hoặc do trình
biên dịch. Ngôn ngữ C là ngôn ngữ có nhiều khả năng gây ra các lỗi tràn bộ đệm nhất, và không
may, đây là ngôn ngữ vốn được dùng rộng rãi nhất trong các hệ điều hành, các chương trình hệ
thống, đặc biệt trong môi trường Unix và Linux.
Đa số các trình biên dịch C không kiểm tra giới hạn vùng nhớ đã cấp phát cho các biến,
do đó, khi dữ liệu lưu vào vùng nhớ vượt qua giới hạn đã cấp phát, nó sẽ ghi chồng qua những
vùng nhớ kế cận và gây ra lỗi. Ví dụ: khi lập trình, mật khẩu mà người dùng nhập vào thường được
xử lý dưới dạng một chuỗi (string), và được khai báo với chiều dài xác định, ví dụ 32 ký tự. Tuy
nhiên, nếu trong chương trình không thực hiện việc kiểm tra chiều dài mật khẩu trước khi xử lý và
trình biên dịch cũng thông tự động thực hiện việc này thì khi người sử dụng nhập mật khẩu có
chiều dài lớn hơn 32 ký tự, toàn bộ chuỗi ký tự này sẽ tràn vùng nhớ đã cấp phát và có thể gây ra
lỗi tràn bộ đệm.
Ngoài tấn công tràn bộ đệm, các phương thức tấn công khác nhắm vào việc khai thác các
sơ hở của phần mềm và dịch vụ bao gồm: khai thác cơ sở dữ liệu (database exploitation), khai
thác ứng dụng (application exploitation) ví dụ như các loại macro virus, khai thác các phần mềm
gởi thư điện tử (e-mail exploitation), …
-Các kỹ thuật đánh lừa (Social enginerring):
Đây là phương thức tấn công không sử dụng kỹ thuật hay máy tính để xâm nhập hệ thống
mà bằng các kỹ xảo gian lận để tìm kiếm các thông tin quan trọng, rồi thông qua đó mà xâm nhập
hệ thống.
Ví dụ, một kẻ tấn công giả danh là một nhân viên hỗ trợ kỹ thuật gọi điện thoại đến một
người trong hệ thống để trao đổi công việc, thông qua cuộc trao đổi này để khai thác các thông tin
cần thiết để thực hiện hành vi xâm nhập hệ thống. Rõ ràng, phương thức này không sử dụng các
kỹ thuật để tấn công, nên được gọi là “social engineering”. Đây cũng là một trong những loại tấn
công phổ biến, và đối tượng mà nó nhắm đến là vấn đề con người trong hệ thống.
I.6.2
Các phương thức xâm nhập hệ thống bằng phần mềm phá hoại
Kỹ thuật và hình thức tấn công mới thường xuyên được phát hiện và nâng cấp. Ở trên chỉ
giới thiệu các hình thức tấn công phổ biến đã được phát hiện và phân tích. Ngoài các hình thức tấn
công như trên, các hệ thống thông tin còn phải đối mặt với một nguy cơ xâm nhập rất lớn đó là
các phần mềm virus, worm, spyware, … gọi chung là các phần mềm phá hoại hay phần mềm độc
(malicious code). Sau đây sẽ tập trung trình bày các hình thức xâm nhập này.
Các phần mềm độc được chia thành các nhóm sau đây: Virus, worm, Trojan horse và
logic bomb.
27
-Virus:
Là phần mềm ẩn, kích thước nhỏ và được gắn vào một tập tin chủ nào đó, thông thường là
các tập tin thực thi được, nhờ đó virus mới có khả năng phá hoại và lan truyền sang các máy khác.
Một số loại virus lại gắn với các tập tin tài liệu (ví dụ như word, excel, …) và được gọi là các
virus macro.
Virus lan truyền giữa các máy tính thông qua việc sao chép các tập tin có nhiễm virus từ
đĩa mềm, đĩa CD, đĩa flash, hoặc thông qua các tập tin gởi kèm theo e-mail. Phạm vi phá hoại của
virus là rất lớn. Thông thường nhất, các virus thường gây ra mất mát dữ liệu, hư hỏng phần mềm
và hư hỏng cả hệ điều hành.
Nếu trên máy chưa cài đặt sẵn các chương trình quét virus thì dấu hiệu thông thường nhất
để nhận biết có virus trên máy tính là:
-Xuất hiện các thông báo lạ trên màn hình
-Máy tính làm việc chậm đi đáng kể, đặc biệt khi khởi động chương trình.
-Mất đột ngột một hoặc nhiều tập tin trên đĩa.
-Lỗi phần mềm không rõ lý do.
-Kích thước một số tập tin, đặc biệt là các tập tin thực thi, tăng lên bất thường.
-Máy tính tự khởi động lại khi đang làm việc
-…
Hình 1.17 mô tả việc lây lan của virus thông qua đường sao chép tập tin (bằng đĩa hoặc
qua các tập tin dùng chung trên mạng). Hình 1.18 mô tả quá trình phát tán virus thông qua email.
Có thể thấy mức độ phát tán của virus thông qua e-mail nghiêm trọng hơn nhiều, bởi vì
đối với hình thức lây lan qua đường sao chép tập tin thì chỉ có các máy tính chủ động sao chép tập
tin mới bị nhiễm virus; ngược lại trong phương thức phát tán bằng e-mail, những máy không chủ
động sao chép tập tin cũng có khả năng bị lây nhiễm nếu vô ý mở những tập tin nhiễm virus được
gởi kèm theo e-mail.
Máy bị nhiễm virus
Máy chưa bị nhiễm virus
Hình 1.17: Virus lây lan từ máy này sang máy khác qua phương tiện lưu trữ (đĩa) hoặc qua thư
mục dùng chung trên mạng
28
Hình 1.18: Virus phát tán qua e-mail
-Worm:
Là loại phần mềm độc có cơ chế hoạt động và tầm phá hoại gần giống như virus. Điểm
khác nhau cơ bản giữa worm và virus là worm có khả năng tự sao chép thông qua mạng (trong
khi virus phải nhờ vào thao tác sao chép của người sử dụng) và tự tồn tại như một chương trình
độc lập (trong khi virus phải gắn vào một tập tin khác).
Đặc trưng cơ bản nhất của worm là tính phát tán nhanh trên phạm vi rộng bằng nhiều
phương tiện khác nhau, như sử dụng trực tiếp giao thức TCP/IP, sử dụng các dịch vụ mạng ở lớp
ứng dụng, phát tán qua e-mail và nhiều phương tiện khác. Worm Nimda xuất hiện năm 2001 là
một worm điển hình với tốc độ phát tán cực nhanh và mức độ nguy hiểm lớn, có thể gây tê liệt các
hệ thống mạng lớn sử dụng hệ điều hành Windows trong nhiều giờ.
-Trojan horse:
Một dạng phần mềm độc hoạt động núp dưới danh nghĩa một phần mềm hữu ích khác, và
sẽ thực hiện các hành vi phá hoại hệ thống khi chương trình giả danh được kích hoạt bởi người sử
dụng.
Trojan không có khả năng tự sao chép như worm (mà phải giả dạng thành một phần mềm
có ích hoặc được gắn vào một phần mềm thực thi khác để được cài đặt vào máy), không có khả
năng tự thực thi như virus (mà chỉ thực hiện khi người sử dụng khởi động chương trình).
Mức độ phá hoại của Trojan cũng rất đa dạng, trong đó quan trong nhất là thực thi như
một phần mềm gián điệp (back-door) giúp cho những kẻ tấn công từ xa có thể dễ dàng xâm nhập
hệ thống. Spyware là một ví dụ của Trojan, đây là các phần mềm được tự động cài vào máy khi
người sử dụng tải các phần mềm trên Internet về cài trên máy của mình. Spyware có thể tự động
gởi e-mail, tự động mở các trang web hoặc thực hiện các hành vi khác gây ảnh hưởng đến hoạt
động bình thường của máy tính bị nhiễm.
29
-Logic bomb:
Là các phần mềm nằm ẩn trên máy tính và chỉ thực hiện khi có một sự kiện nào đó xảy ra,
ví dụ khi người quản trị mạng đăng nhập vào hệ thống, khi một ứng dụng nào đó được chạy hoặc
đến một ngày giờ định trước nào đó.
Thông thường, khi được thực hiện, logic bomb gởi một thông báo về một máy trung tâm
định trước nào đó để thông báo sự kiện xảy ra. Nhận được thông báo này, kẻ tấn công từ máy tính
trung tâm đó sẽ thực hiện tiếp các thủ thuật tấn công vào hệ thống, ví dụ khởi động một cuộc tấn
công từ chối dịch vụ (DoS hoặc DDoS).
Trên đây là các phương thức xâm nhập vào hệ thống sử dụng các phần mềm phá hoại.
Mặc dù sự xâm nhập vào một hệ thống cụ thể nào đó của các phần mềm này có thể không do chủ
đích của một cá nhân nào, nhưng thiệt hại do các hình thức xâm nhập này gây ra là rất lớn, do tính
phổ biến của nó. Bất kỳ máy nào cũng có thể bị nhiễm phần mềm độc, đặc biệt khi kết nối đến
mạng Internet. Các nguyên tắc chung để tránh sự xâm nhập của các phần mềm độc vào máy tính
nói riêng và vào một hệ thống thông tin nói chung bao gồm:
-Không sao chép dữ liệu từ các nguồn không tin cậy (từ đĩa hay qua mạng).
-Không cài đặt các phần mềm không rõ nguồn gốc, đặc biệt là các phần mềm download từ
Internet.
-Thường xuyên cập nhật các bản sửa lỗi (Hotfixes hoặc service pack) cho hệ thống (cả hệ
điều hành và chương trình ứng dụng).
-Cài đặt các chương trình Antivirus, Antispyware và cập nhật thường xuyên cho các
chương trình này.
-Theo dõi các thông tin về các loại virus mới, phương thức hoạt động và cách thức ngăn
chặn trên các trang web chuyên về bảo mật (ví dụ trang CERT tại địa chỉ http://www.cert.org).
I.7 KỸ THUẬT NGĂN CHẶN VÀ PHÁT HIỆN XÂM NHẬP
Sau khi nhận diện các nguy cơ và rủi ro đối với hệ thống, phân tích các phương thức và kỹ
thuật tấn công có khả năng ảnh hưởng đến sự an toàn của hệ thống, các hệ thống thông tin thường
triển khai các biện pháp kỹ thuật cần thiết để ngăn chặn và phát hiện xâm nhập. Phần này giới
thiệu về tường lửa (Firewall) và hệ thống phát hiện xâm nhập (IDS), là hai ứng dụng bảo mật điển
hình nhất hiện nay.
I.7.1
Tường lửa:
Tường lửa hay firewall là kỹ thuật ngăn chặn các tấn công xâm nhập từ bên ngoài (mạng
Internet) vào hệ thống bên trong (mạng LAN và server). Hình 1.19 mô tả một cấu trúc mạng điển
hình trong đó firewall được lắp đặt trước router, với vai trò bảo vệ cho toàn bộ hệ thống mạng bên
trong.
Nguyên tắc chung của các bức tường lửa là điều khiển truy xuất mạng bằng cách giám sát
tất cả các gói dữ liệu được gởi thông qua tường lửa, và tuỳ vào các cài đặt trong chính sách bảo
mật mà cho phép hoặc không cho phép chuyển tiếp các gói này đến đích. Hình 1.20 mô tả hoạt
động điển hình của một bứac tường lửa, trong đó, lưu lượng HTTP (TCP port 80) được phép đi
qua tường lửa, còn lưu lượng NetBIOS (TCP port 445) thì bị chặn lại.
30
Internet
Firewall
Router
Web server
Mail server
Các máy tính khác trong mạng nội bộ
Hình 1.19: Bức tường lửa đặt trước Router để bảo vệ toàn bộ mạng bên trong
Chức năng của tường lửa trên mạng là quản lý lưu lượng vào/ra trên kết nối Internet và
ghi lại các sự kiện diễn ra trên kết nối này phục vụ cho các mục đích an toàn mạng. Tuy nhiên, do
bản chất của tường lửa là giám sát lưu lượng luân chuyển thông qua một kết nối giữa mạng nội bộ
và mạng công cộng bên ngoài, cho nên tường lửa không có khả năng giám sát và ngăn chặn các
tấn công xuất phát từ bên trong mạng nội bộ. Có thể tóm tắt chức năng chủ yếu của tường lửa như
sau:
-Separator: Tách rời giữa mạng nội bộ và mạng công cộng, ràng buộc tất cả các kết nối từ
trong ra ngoài hoặc từ ngoài vào trong phải đi qua tường lửa như một đường đi duy nhất.
-Restricter: Chỉ cho phép một số lượng giới hạn các loại lưu lượng được phép xuyên qua
tường lửa, nhờ đó người quản trị có thể thực thi chính sách bảo mật bằng cách thiết lập các quy
tắc lọc gói tương ứng gọi là các access rules.
-Analyzer: Theo dõi (tracking) lưu lượng luân chuyển qua tường lửa, ghi lại các thông tin
này lại (logging) theo yêu cầu của người quản trị để phục vụ cho các phân tích để đánh giá mức
độ an toàn của hệ thống.
Ngoài các chức năng cơ bản trên, một số bức tường lửa còn có chức năng xác thực
(authentication) đối với người sử dụng trước khi chấp nhận kết nối.
HTTP (port 80)
Mạng nội bộ
Internet
NetBios (port 445)
Firewall
Hình 1.20: Hoạt động cơ bản của bức tường lửa
*-Phân loại tường lửa theo đặc tính kỹ thuật:
Tường lửa có thể là một phần mềm chạy trên một máy tính nào đó với ít nhất là hai giao
tiếp mạng (dual-home host), khi đó nó được gọi là firewall mềm. Các firewall mềm thông dụng
hiện nay gồm: SunScreen, ISA server, Check point, Gauntlet, IPTables,…
31
Ngược lại, chức năng tường lửa cũng có thể được thực hiện trong một khối phần cứng
riêng biệt và được gọi là firewall cứng. Các sản phầm firewall cứng điển hình hiện nay bao gồm:
Cisco PIX, NetScreen firewalls, SonicWall appliances, WatchGuard Fireboxes, Nokia firewalls,
…
*-Phân loại firewall theo phạm vi bảo vệ:
Căn cứ vào phạm vi mà tường lửa bảo vệ, có thể chia tường lửa thành 2 nhóm riêng biệt:
tường lửa dành cho máy tính cá nhân (personal firewalls) và tường lửa dành cho mạng (network
firewalls).
-Personal firewall thông thường là các firewall mềm, được cài đặt trên máy cá nhân để
bảo vệ cho máy cá nhân. Hệ điều hành Windows (2000 và XP) đã có tích hợp sẵn personal
firewall. Ngoài ra, các phần mềm antivirus chuyên nghiệp cũng có chức năng của personal
firewall như Norton Antivirus, McAfee, …
-Network firewall có thể là firewall mềm hoặc firewall cứng, thường được lắp đặt trước
hoặc sau bộ định tuyến (router) nhằm mục đích bảo vệ cho toàn hệ thống mạng.
*-Phân loại firewall theo cơ chế làm việc:
Dựa trên cơ chế làm việc, firewall được chia thành 3 loại như sau:
-Tường lửa lọc gói (packet filtering firewall hay stateless firewall)
Nguyên lý của các bức tường lửa lọc gói là đọc tất cả các thông tin trong tiêu đề của các
gói dữ liệu IP luân chuyển qua bức tường lửa, và dựa trên các thông tin này để quyết định chấp
nhận (accept) hay loại bỏ gói dữ liệu (drop). Như vậy, khi thiết lập các quy tắc lọc gói của tường
lửa, người quản trị mạng phải căn cứ trên các thông tin sau đây:
-Địa chỉ IP, bao gồm địa chỉ IP của máy gởi và địa chỉ IP của máy nhận (source IP address
và destination IP address).
-Số cổng kết nối (port number), bao gồm cả cổng của máy gởi và cổng của máy nhận
(source port và destination port)
-Giao thức kết nối (protocol), ví dụ TCP, UDP hay ICMP.
Packet filtering firewall chỉ phân tích tiêu đề của gói IP, không phân tích nội dung gói và
do đó không có khả năng ngăn chặn truy xuất theo nội dung dữ liệu.
Packet filtering firewall hữu ích trong các trường hợp muốn ngăn chặn một hoặc một số
cổng xác định nào đó, từ chối một hoặc một số địa chỉ IP xác định hoặc một giao thức xác định
nào đó (ví dụ ICMP). Trong thực tế, các tấn công xâm nhập thường được thực hiện thông qua các
cổng khác với các cổng dịch vụ phổ biến. Bảng 1.1 liệt kê danh sách một số dịch vụ thông dụng
trên Internet và số cổng tương ứng.
-Tường lửa lớp ứng dụng (Application Layer gateway):
Hoạt động của tường lửa lớp ứng dụng tương tự như tường lửa lọc gói, tức là cũng dựa
trên việc phân tích các gói dữ liệu IP để quyết định có cho phép đi xuyên qua bức tường lửa hay
không. Điểm khác của tường lửa lớp ứng dụng là nó có khả năng phân tích cả nội dung của gói
dữ liệu IP (phần data payload), và do đó cho phép thiết lập các quy tắc lọc gói phức tạp hơn. Ví
dụ, có thể chấp nhận lưu lượng HTTP đi qua bức tường lửa, tuy nhiên với những gói nào có chứa
nội dung trùng với mẫu định trước thì chặn lại.
Do đặc tính của tường lửa lớp ứng dụng can thiệp trực tiếp vào tất cả các gói dữ liệu đi
qua nó, nên nhìn dưới góc độ truy xuất mạng, bức tường lửa lớp ứng dụng trực tiếp thực hiện các
32
giao dịch với mạng bên ngòai thay cho các máy tính bên trong. Do vậy, tường lửa lớp ứng dụng
cũng còn được gọi là các phần mềm Proxy.
Kỹ thuật này có ích trong các trường hợp cần quản lý nội dung truy cập của người sử dụng
hoặc để nhận dạng dấu hiệu của một số loại phần mềm độc (virus, worm, trojan, …), ví dụ ngăn
chặn người sử dụng tải các tập tin hình ảnh hoặc phim với kích thước lớn.
Do phải phân tích toàn bộ cấu trúc gói dữ liệu để lấy thông tin nên nhược điểm của tường
lửa lớp ứng dụng là yêu cầu năng lực xử lý mạnh, và là nơi có thể xảy ra tắc nghẽn tiềm năng của
mạng.
-Tường lửa kiểm soát trạng thái (stateful inspection firewall):
Là loại tường lửa kết hợp cả hai nguyên lý làm việc của tường lửa lọc gói và tường lửa lớp
ứng dụng.
Tường lửa kiểm sóat trạng thái cho phép thiết lập các quy tắc lọc gói phức tạp hơn so với
tường lửa lọc gói, tuy nhiên không mất quá nhiều thời gian cho việc phân tích nội dung của tất cả
các gói dữ liệu như trường hợp tường lửa lớp ứng dụng. Tường lửa kiểm sóat trạng thái theo dõi
trạng thái của tất cả các kết nối đi qua nó và các gói dữ liệu liên quan đến từng kết nối. Theo đó,
chỉ các các gói dữ liệu thuộc về các kết nối hợp lệ mới được chấp nhận chuyển tiếp qua tường lửa,
các gói khác đều bị loại bỏ tại đây.
Tường lửa kiểm sóat trạng thái phức tạp hơn do phải tích hợp chức năng của cả 2 loại
tường lửa ở trên. Tuy nhiên, cơ chế thực hiện của tường lửa này đã chứng tỏ được tính hiệu quả
của nó và trong thực tế, các sản phẩm tường lửa mới đều hỗ trợ kỹ thuật này.
Bảng 1.1: Một số dịch vụ phổ biến trên TCP
Dịch vụ
Cổng
I.7.2
20
FTP, kênh điều khiển (Control port)
21
FTP, kênh dữ liệu (Data port)
22
Secure Shell (SSH)
23
Telnet
25
Simple Mail Transfer Protocol (SMTP)
80
HyperText Transfer Protocol (HTTP)
110
Post Office Protocol, version 3 (POP3)
143
Internet Message Access Protocol
443
Secure Sockets Layer (SSL)
Hệ thống phát hiện xâm nhập:
Hệ thống phát hiện xâm nhập IDS (Intrusion Detection System) là hệ thống phát hiện các
dấu hiệu của tấn công xâm nhập. Khác với bức tường lửa, IDS không thực hiện các thao tác ngăn
chặn truy xuất mà chỉ theo dõi các hoạt động trên mạng để tìm ra các dấu hiệu của tấn công và
cảnh báo cho người quản trị mạng.
IDS không thực hiện chức năng phân tách giữa mạng nội bộ và mạng công cộng như bức
tường lửa nên không gánh toàn bộ lưu lượng qua nó và do đó không có nguy cơ làm tắc nghẽn
mạng.
33
Intrusion (xâm nhập) được định nghĩa là bất kỳ một sự kiện hay hành vi nào tác động vào
3 thành phần cơ bản của một hệ thống an tòan là tính Bảo mật, tính Tòan vẹn và tính Khả dụng.
IDS phát hiện dấu vết của tấn công bằng cách phân tích hai nguồn thông tin chủ yếu sau
đây:
1-Thông tin về các thao tác thực hiện trên máy chủ được lưu trong nhật ký hệ thống
(system log)
2-Lưu lượng đang lưu thông trên mạng.
Chức năng ban đầu của IDS chỉ là phát hiện các dấu hiện xâm nhập, do đó IDS chỉ có thể
tạo ra các cảnh báo tấn công khi tấn công đang diễn ra hoặc thậm chí sau khi tấn công đã hoàn tất.
Càng về sau, nhiều kỹ thuật mới được tích hợp vào IDS, giúp nó có khả năng dự đóan được tấn
công (prediction) và thậm chí phản ứng lại các tấn công đang diễn ra (Active response).
Hai thành phần quan trọng nhất cấu tạo nên hệ thống IDS là sensor (bộ cảm nhận) có chức
năng chặn bắt và phân tích lưu lượng trên mạng và các nguồn thông tin khác để phát hiện dấu hiệu
xâm nhập; signature database là cơ sở dữ liệu chứa dấu hiệu (signature) của các tấn công đã được
phát hiện và phân tích. Cơ chế làm việc của signature database giống như virus database trong các
chuơng trình antivirus, do vậy, việc duy trì một hệ thống IDS hiệu quả phải bao gồm việc cập
nhận thường xuyên cơ sở dữ liệu này.
*-Phân loại IDS theo phạm vi giám sát:
Dựa trên phạm vi giám sát, IDS được chia thành 2 lọai:
-Networ- based IDS (NIDS):
Là những IDS giám sát trên tòan bộ mạng. Nguồn thông tin chủ yếu của NIDS là các gói
dữ liệu đang lưu thông trên mạng. NIDS thường được lắp đặt tại ngõ vào của mạng, có thể đứng
trước hoặc sau bức tường lửa. Hình 1.21 mô tả một NIDS điển hình.
-Host-based IDS (HIDS):
Là những IDS giám sát họat động của từng máy tính riệng biệt. Do vậy, nguồn thông tin
chủ yếu của HIDS ngòai lưu lượng dữ liệu đến và đi từ máy chủ còn có hệ thống dữ liệu nhật ký
hệ thống (system log) và kiểm tra hệ thống (system audit).
Hình 1.22 trình bày cấu trúc của HIDS. IDS được thiết kế để phối hợp với hệ điều hành để
xử lý các thông tin giám sát hệ thống. Dịch vụ nhật ký hệ thống (logging) ghi lại các sự kiện và
trạng thái của hệ thống vào một cơ sở dữ liệu (Event database). Ngoài ra, kết quả giám sát trên
mạng của IDS cũng được ghi vào Event Database. Để phát hiện xâm nhập, IDS duy trì một cơ sở
dữ liệu (IDS database) chứa các mô tả về từng loại tấn công.
*-Phân loại IDS theo kỹ thuật thực hiện:
Dựa trên kỹ thuật thực hiện, IDS cũng được chia thành 2 loại:
-Signature-based IDS:
Signature-based IDS phát hiện xâm nhập dựa trên dấu hiệu của hành vi xâm nhập, thông
qua phân tích lưu lượng mạng và nhật ký hệ thống. Kỹ thuật này đòi hỏi phải duy trì một cơ sở dữ
liệu về các dấu hiệu xâm nhập (signature database), và cơ sở dữ liệu này phải được cập nhật
thường xuyên mỗi khi có một hình thức hoặc kỹ thuật xâm nhập mới.
-Anomaly-based IDS: phát hiện xâm nhập bằng cách so sánh (mang tính thống kê) các
hành vi hiện tại với họat động bình thường của hệ thống để phát hiện các bất thường (anomaly) có
thể là dấu hiệu của xâm nhập. Ví dụ, trong điều kiện bình thường, lưu lượng trên một giao tiếp
34
mạng của server là vào khỏang 25% băng thông cực đại của giao tiếp. Nếu tại một thời điểm nào
đó, lưu lượng này đột ngột tăng lên đến 50% hoặc hơn nữa, thì có thể giả định rằng server đang bị
tấn công DoS.
Router
Firewall
IDS
Quản trị
hệ thống
Signature
database
Hình 1.21: Network-based IDS (NIDS)
Network
Host
Hệ điều hành
Logging
Hình 1.22: Host-based IDS (HIDS)
Để họat động chính xác, các IDS lọai này phải thực hiện một quá trình “học”, tức là giám
sát họat động của hệ thống trong điều kiện bình thường để ghi nhận các thông số họat động, đây là
cơ sở để phát hiện các bất thường về sau.
Trong thực tế, IDS là một kỹ thuật mới so với firewall, tuy nhiên, cho đến thời điểm này,
với sự phát triển khá mạnh mẽ của kỹ thuật tấn công thì IDS vẫn chưa thật sự chứng tỏ được tính
hiệu quả của nó trong việc đảm bảo an tòan cho các hệ thống mạng. Một trong những phần mềm
IDS phổ biến hiện nay là Snort. Đây là một sản phẩm NIDS mã nguồn mở với hệ thống signature
database (được gọi là rule database) được cập nhật thường xuyên bởi nhiều thành viên trong cộng
đồng Internet.
35
Tóm tắt chương:
-Một hệ thống thông tin an tòan là hệ thống đảm bảo được 3 đặc trưng cơ bản:
-Tính Bảo mật (Confidentiality)
-Tính Tòan vẹn (Integrity)
-Tính Khả dụng (Availability)
Ba đặc trưng này được gọi tắt là CIA.
-Chiến lược cơ bản nhất để đảm bảo tính bảo mật của một hệ thống thông tin:
-Access Control
-Authentication
-Auditing
Kỹ thuật này gọi tắt là AAA.
-Nguy cơ (threat) của một hệ thống thông tin là các sự kiện, hành vi có khả năng ảnh
hưởng đến 3 đặc trưng CIA của hệ thống. Rủi ro đối với hệ thống thông tin là xác suất xảy ra các
thiệt hại đối với hệ thống.
-Chính sách bảo mật (security policy) định nghĩa các trạng thái an tòan của hệ thống, các
hành vi mà người sử dụng được phép hoặc không được phép thực thi. Cơ chế bảo mật (security
mechianism) là các biện pháp kỹ thuật (technical) hoặc thủ tục (procedure) nhằm đảm bảo chính
sách. Nguyên tắc xây dựng một hệ thống thông tin an toàn bao gồm xây dựng chính sách bảo mật
để định nghĩa một cách chính xác và đầy đủ các trạng thái an toàn của hệ thống, sau đó thiết lập
các cơ chế để đảm bảo thực thi chính sách.
-Có nhiều hình thức xâm nhập / tấn công khác nhau trên hệ thống. Các tấn công này dựa
trên các sơ hở về an tòan của giao thức (TCP/IP), của hệ điều hành (Windows, Linux, …) hoặc
của các chương trình ứng dụng chạy trên các hệ điều hành đó. Kỹ thuật tất công luôn luôn được
phát triển và hòan thiện, do đó công nghệ an toàn mạng cũng phải được phát triển tương xứng.
-Hai giải pháp kỹ thuật giúp phát hiện và ngăn chặn các tấn công trên một hệ thống thông
tin là IDS và Firewall. IDS giám sát hệ thống để phát hiện các dấu hiệu tấn công và tạo ra cảnh
báo. Firewall ngăn chặn hoặc cho phép các truy xuất thông qua Firewall theo các quy luật định
trước (access rules).
CÂU HỎI VÀ BÀI TẬP.
A- Câu hỏi trắc nghiệm
Câu 1. Thế nào là tính bảo mật của hệ thống thông tin?
a- Là đặc tính của hệ thống trong đó thông tin được giữ bí mật không cho ai truy
xuất.
b- Là đặc tính của hệ thống trong đó tất cả thông tin được lưu trữ dưới dạng mật mã.
c- Là đặc tính của hệ thống trong đó chỉ có những người dùng được cho phép mới
có thể truy xuất được thông tin
d- Tất cả đều đúng
Câu 2. Chọn câu đúng khi nói về tính bảo mật của hệ thống thông tin:
a- Một hệ thống đảm bảo tính bí mật (confidential) là một hệ thống an toàn (secure).
b- Tính bí mật của thông tin bao gồm tính bí mật về sự tồn tại của thông tin và tính
36
bí mật nội dung thông tin.
c- Tính bí mật của thông tin bao gồm tính bí mật về nội dung thông tin và tính bí
mật về nguồn gốc thông tin.
d- Tất cả đều sai.
Câu 3. Thế nào là tính toàn vẹn của hệ thống thông tin?
a- Là đặc tính của hệ thống trong đó thông tin không bị sửa đổi hoặc xoá bỏ bởi
người sử dụng.
b- Là đặc tính của hệ thống trong đó thông tin không bị thay đổi theo thời gian
c- Là đặc tính của hệ thống trong đó thông tin không bị truy xuất bởi những người
không được phép.
d- Là đặc tính của hệ thống trong đó thông tin không bị thay đổi, hư hỏng hay mất
mát.
Câu 4. Chọn câu đúng khi nói về tính toàn vẹn của thông tin:
a- Một hệ thống an toàn là một hệ thống đảm bảo tính toàn vẹn của thông tin.
b- Tính toàn vẹn của thông tin bao gồm toàn vẹn về nội dung và toàn vẹn về nguồn
gốc thông tin.
c- Tính toàn vẹn của thông tin bao gồm toàn vẹn về nội dung và sự tồn tại của thông
tin.
d- Câu a và b.
Câu 5. Các cơ chế đảm bảo tính toàn vẹn của thông tin:
a- Gồm các cơ chế ngăn chặn và cơ chế phát hiện các vi phạm về toàn vẹn thông tin.
b- Mật mã hoá toàn bộ thông tin trong hệ thống.
c- Lưu toàn bộ thông tin trong hệ thống dưới dạng nén.
d- Tất cả các cơ chế trên.
Câu 6. Hành vi nào sau đây ảnh hưởng đến tính toàn vẹn của hệ thống thông tin:
a- Một sinh viên sao chép bài tập của một sinh viên khác.
b- Virus xóa mất các tập tin trên đĩa cứng.
c- Mất điện thường xuyên làm hệ thống máy tính làm việc gián đọan.
d- Tất cả các hành vi trên.
Câu 7. Hành vi nào sau đây ảnh hưởng đến tính khả dụng của hệ thống thông tin:
a- Một sinh viên sao chép bài tập của một sinh viên khác.
b- Virus xóa mất các tập tin trên đĩa cứng.
c- Mất điện thường xuyên làm hệ thống máy tính làm việc gián đọan.
d- Tất cả các hành vi trên.
Câu 8. Hành vi nào sau đây ảnh hưởng đến tính bí mật của hệ thống thông tin:
a- Một sinh viên sao chép bài tập của một sinh viên khác.
b- Virus xóa mất các tập tin trên đĩa cứng.
c- Mất điện thường xuyên làm hệ thống máy tính làm việc gián đọan.
d- Tất cả các hành vi trên.
Câu 9. Các cơ chế bảo vệ tính bí mật của thông tin:
37
a- Mật mã hoá toàn bộ thông tin trong hệ thống.
b- Xây dựng các cơ chế điều khiển truy xuất (access control) phù hợp.
c- Lắp đặt các phương tiện bảo vệ hệ thống thông tin ở mức vật lý.
d- Tất cả các cơ chế trên.
Câu 10. Thế nào là tính khả dụng của hệ thống thông tin?
a- Là tính sẵn sàng của thông tin trong hệ thống cho mọi nhu cầu truy xuất.
b- Là tính sẵn sàng của thông tin trong hệ thống cho các nhu cầu truy xuất hợp lệ.
c- Là tính dễ sử dụng của thông tin trong hệ thống.
d- Tất cả đều sai.
Câu 11. Thế nào là nguy cơ đối với hệ thống thông tin?
a- Là các sự kiện, hành vi ảnh hưởng đến sự an toàn của hệ thống thông tin.
b- Là các thiệt hại xảy ra đối với hệ thống thông tin
c- Là các hành vi vô ý của người sử dụng làm ảnh hưởng đến tính khả dụng của hệ
thống thông tin.
d- Tất cả đều đúng.
Câu 12. Các nguy cơ nào sau đây có thể ảnh hưởng đến tính khả dụng của hệ thống thông tin:
a- Thiết bị không an toàn.
b- Các tấn công từ chối dịch vụ (DoS và DDoS).
c- Virus và các loại phần mềm phá hoại khác trên máy tính.
d- Tất cả các nguy cơ trên.
Câu 13. Chọn câu sai khi nói về các nguy cơ đối với sự an toàn của hệ thống thông tin:
a- Những kẻ tấn công hệ thống (attacker) có thể là con người bên trong hệ thống.
b- Người sử dụng không được huấn luyện về an toàn hệ thống cũng là một nguy cơ
đối với hệ thống.
c- Một hệ thống không kết nối vào mạng Internet thì không có các nguy cơ tấn
công.
d- Xâm nhập hệ thống (intrusion) có thể là hành vi xuất phát từ bên ngoài hoặc từ
bên trong hệ thống.
Câu 14. Chọn câu đúng khi nói về các nguy cơ và rủi ro đối với hệ thống thông tin:
a- Tất cả các rủi ro đều có ít nhất một nguy cơ đi kèm với nó.
b- Có thể ngăn chặn rủi ro bằng cách ngăn chặn các nguy cơ tương ứng.
c- Mục tiêu của an toàn hệ thống là ngăn chặn tất cả các rủi ro xảy ra trên hệ thống.
d- Tất cả các câu trên.
Câu 15. Nguyên tắc xây dựng một hệ thống bảo mật:
a- Áp dụng các cơ chế an toàn phù hợp với hệ thống.
b- Xây dựng các chính sách an toàn chặt chẽ.
c- Xây dựng chính sách bảo mật và triển khai các cơ chế để đảm bảo chính sách đó.
d- Tất cả đều đúng.
Câu 16. Mục tiêu của chính sách bảo mật hệ thống:
38
a- Xác định các trạng thái an toàn mà hệ thống cần đảm bảo.
b- Ngăn chặn các nguy cơ đối với hệ thống.
c- Hạn chế các rủi ro đối với hệ thống.
d- Tất cả các câu trên.
Câu 17. Mục tiêu của an tòan hệ thống theo thứ tự ưu tiên giảm dần:
a- Ngăn chặn, phát hiện, phục hồi.
b- Phát hiện, ngăn chặn, phục hồi.
c- Phát hiện và ngăn chặn.
d- Phát hiện và phục hồi.
Câu 18. Chọn câu đúng khi nói về các mô hình điều khiển truy xuất (access control):
a- MAC là cơ chế điều khiển bắt buộc được áp dụng cho toàn hệ thống
b- Cơ chế quản lý theo nhóm trên Windows 2000 là một dạng thực thi tương đương
với cơ chế RBAC.
c- Đa số các hệ điều hành đều có thực hiện mô hình DAC.
d- Tất cả đều đúng.
Câu 19. Các cơ chế xác thực thông dụng trong hệ thống thông tin:
a- Dùng các cơ chế quản lý truy xuất tập tin trên đĩa cứng.
b- Dùng cơ chế phân quyền cho người sử dụng.
c- Dùng user-name/password.
d- Tất cả đều sai.
Câu 20. Các giao thức xác thực thông dụng trong hệ thống thông tin:
a- Kerberos
b- CHAP
c- Cả hai đều sai
d- Cả hai đều đúng..
Câu 21. Chức năng của cơ chế kiểm tra (auditing) trên hệ thống:
a- Ghi lại (Logger), phân tích (Analyzer) và thông báo (Notifier).
b- Theo dõi và ghi nhận các sự kiện và hành vi diễn ra trên hệ thống.
c- Cung cấp thông tin để phục hồi hệ thống khi có sự cố.
d- Cung cấp thông tin làm chứng cứ cho các hành vi vi phạm chính sách an toàn hệ
thống.
Câu 22. Chọn câu đúng:
a- Tấn công kiểu Interception tác động vào đặc tính toàn vẹn của hệ thống thông tin.
b- Modification là kiểu tấn công vào đặc tính bí mật của hệ thống thông tin.
c- Tấn công bằng hình thức giả danh (farbrication) tác động đến đặc tính toàn vẹn
của thông tin.
d- Vấn đề phủ nhận hành vi (repudiation) là một hình thức tấn công hệ thống kiểu
Interruption.
Câu 23. Phương thức tấn công nào ngăn chặn các user hợp lệ truy xuất các tài nguyên hệ thống?
39
a- Sniffing
b- Spoofing
c- DoS
d- Man-In-The-Middle.
Câu 24. Chọn câu đúng:
a- Có thể ngăn chặn các tấn công tràn bộ đệm (buffer overflow) bằng các phần mềm
antivirus.
b- Có thể ngăn chặn các tấn công tràn bộ đệm bằng cách cài đặt firewall.
c- Tất cả các phần mềm viết bằng ngôn ngữ C đều có chứa lỗi tràn bộ đệm.
d- Lỗi tràn bộ đệm chỉ xảy ra trên các phần mềm có nhập liệu từ người dùng.
Câu 25. Một máy tính nghe lén thông tin trên mạng và dùng các thông tin này để xâm nhập trái
phép vào một hệ thống thông tin, đây là phương thức tấn công nào?
a- Spoofing
b- Replay
c- Man-In-The-Middle
d- Sniffing
Câu 26. Phương thức tấn công nào sau đây không dựa trên bản chất của giao thức TCP/IP:
a- SYN/ACK flooding
b- TCP sequence number attack
c- ICMP attack
d- Software exploitation
Câu 27. Chọn câu đúng khi nói về các phương thức tấn công bằng phần mềm độc (malicious
code):
a- Virus có thể tự sao chép và lan truyền thông qua mạng máy tính.
b- Worm là loại phần mềm độc hoạt động dựa vào một phần mềm khác.
c- Trojan horse là một loại phần mềm độc nhưng có tên giống như các tập tin bình
thường.
d- Logic bomb không thể phá hoại hệ thống nếu đồng hồ hệ thống luôn chậm hơn
thời gian hiện hành.
Câu 28. Chọn câu đúng khi nói về firewall:
a- Firewall chỉ có thể ngăn chặn các tấn công từ bên ngoài hệ thống.
b- Tất cả các gói dữ liệu đi qua firewall đều bị đọc toàn bộ nội dung, nhờ đó firewall
mới có cơ sở để phân biệt các tấn công với các loại lưu lượng khác.
c- Nếu mở tất cả các cổng (port) trên firewall thì firewall sẽ hoàn toàn bị vô hiệu
hoá.
d- Tất cả đều đúng.
Câu 29. Ứng dụng nào sau đây có chức năng thay đổi địa chỉ IP của tất cả các gói dữ liệu đi qua
nó:
a- IDS
b- Proxy
40
c- NAT
d- Không có ứng dụng nào như vậy
Câu 30. Nguyên lý hoạt động của IDS:
a- Phân tích các gói dữ liệu lưu thông trên mạng để tìm dấu hiện của tấn công.
b- Phân tích các dữ liệu trong nhật ký hệ thống (system log) để phát hiện dấu hiệu
của tấn công.
c- Duy trì một cơ sở dữ liệu về các dấu hiệu tấn công (signature database).
d- Tất cả các điều trên.
Câu 31. Chọn câu đúng khi nói về IDS:
a- IDS là một ứng dụng có chức năng phát hiện và ngăn chặn các tấn công vào hệ
thống thông tin.
b- IDS chỉ có thể phát hiện được các tấn công từ bên ngoài vào hệ thống.
c- Network-based IDS không có khả năng phát hiện tấn công vào một máy chủ cụ
thể.
d- Signature-based IDS không có khả năng phát hiện các tấn công hoàn toàn mới,
chưa từng được mô tả trong cơ sở dữ liệu.
B- Bài tập
Câu 32. Liệt kê và sắp xếp các phương thức tấn công theo hai loại: tấn công chủ động (active
attacks) và tấn công thụ động (passive attacks).
Câu 33. Liệt kê và sắp xếp các phương thức tấn công theo hai loại: tấn công vào giao thức TCP/IP
và tấn công vào phần mềm (chương trình ứng dụng và hệ điều hành).
Câu 34. Cài đặt và cấu hình phần mềm IDS Snort trên Hệ điều hành Linux.
Câu 35. Cài đặt và cấu hình ISA server 2004 trên Windows.
----------
41
CHƯƠNG II
MẬT MÃ VÀ XÁC THỰC THÔNG TIN
Giới thiệu:
Chương này trình bày cơ chế mật mã và các vấn đề liên quan như hàm băm, chữ ký số,
chứng thực và cơ sở hạ tầng khoá công khai PKI. Mật mã là cơ chế cơ bản nhất nhằm đảm bảo
tính Bí mật của thông tin. Các cơ chế xác thực như hàm băm và chữ ký số có chức năng bảo vệ
tính Toàn vẹn của thông tin. Các nội dung đề cập trong chương này bao gồm:
-Tổng quan về kỹ thuật mật mã.
-Kỹ thuật mật mã đối xứng
-Kỹ thuật mật mã bất đối xứng
-Các hàm băm bảo mật
-Chữ ký số
-Vấn đề quản lý khoá và cơ sở hạ tầng khoá công khai
II.1 TỔNG QUAN VỀ MẬT MÃ:
II.1.1 Giới thiệu:
Mật mã (Encryption) là một kỹ thuật cơ sở quan trọng trong bảo mật thông tin. Nguyên
tắc của mật mã là biến đổi thông tin gốc thành dạng thông tin bí mật mà chỉ có những thực thể
tham gia xử lý thông tin một cách hợp lệ mới hiểu được.
Một thực thể hợp lệ có thể là một người, một máy tính hay một phần mềm nào đó được
phép nhận thông tin. Để có thể giải mã được thông tin mật, thực thể đó cần phải biết cách giải mã
(tức là biết được thuật tóan giải mã) và các thông tin cộng thêm (khóa bí mật).
Quá trình chuyển thông tin gốc thành thông tin mật theo một thuật toán nào đó được gọi là
quá trình mã hoá (encryption). Quá trình biến đổi thông tin mật về dạng thông tin gốc ban đầu gọi
là quá trình giải mã (decryption). Đây là hai quá trình không thể tách rời của một kỹ thuật mật mã
bởi vì mật mã (giấu thông tin) chỉ có ý nghĩa khi ta có thể giải mã (phục hồi lại) được thông tin
đó. Do vậy, khi chỉ dùng thuật ngữ mật mã thì nó có nghĩa bao hàm cả mã hóa và giải mã.
Kỹ thuật mã hoá được chia thành hai loại: mã hoá dùng khoá đối xứng (symmetric key
encryption) và mã hoá dùng khoá bất đối xứng (asymmetric key encryption) như sẽ trình bày
trong các phần tiếp theo.
II.1.2 Các thành phần của một hệ thống mã hoá:
Hình 2.1 mô tả nguyên tắc chung của một hệ thống mật mã quy ước. Các thành phần trong
một hệ thống mật mã điển hình bao gồm:
-Plaintext: là thông tin gốc cần truyền đi giữa các hệ thống thông tin
-Encryption algorithm: thuật tóan mã hóa, đây là cách thức tạo ra thông tin mật từ thông
tin gốc.
-Key: khóa mật mã, gọi tắt là khóa. Đây là thông tin cộng thêm mà thuật tóan mã hóa sử
dụng để trộn với thông tin gốc tạo thành thông tin mật.
-Ciphertext: thông tin đã mã hóa (thông tin mật). Đây là kết quả của thuật toán mã hóa.
42
-Decryption algorithm: Thuật tóan giải mã. Đầu vào của thuật tóan này là thông tin đã mã
hóa (ciphertext) cùng với khóa mật mã. Đầu ra của thuật tóan là thông tin gốc (plaintext) ban đầu.
Khoá mật mã
(Key)
Khoá mật mã
(Key)
Thông tin đã được mã
hoá (ciphertext)
Thông tin gốc
(Plaintext)
Thuật toán mã hoá
(Encryption
algorithm)
Thuật toán giải mã
(Decryption
algorithm)
Thông tin gốc
(Plaintext)
Hình 2.1: Cấu trúc một hệ thống mật mã quy ước
II.1.3 Các tiêu chí đặc trưng của một hệ thống mã hoá:
Một hệ thống mã hóa bất kỳ được đặc trưng bởi 3 tiêu chí sau đây:
-Phương pháp mã (operation): có hai phương pháp mật mã bao gồm thay thế
(substitution) và chuyển vị (transposition). Trong phương pháp mã thay thế, các đơn vị thông tin
(bit, ký tự, byte hoặc khối) trong thông tin gốc được thay thế bằng các đơn vị thông tin khác theo
một quan hệ nào đó. Trong phương pháp mã chuyển vị, các đơn vị thông tin trong thông gốc được
đổi chỗ cho nhau để tạo thành thông tin mã hóa. Các hệ thống mã hoá hiện đại thường kết hợp cả
hai phương pháp thay thế và chuyển vị.
-Số khóa sử dụng (number of keys): nếu phía mã hóa (phía gởi) và phía giải mã (phía
nhận) sử dụng chung một khóa, ta có hệ thống mã dùng khoá đối xứng (symmetric key) - gọi tắt là
mã đối xứng hay còn có các tên gọi khác như mã một khóa (single-key), mã khóa bí mật (secret
key) hoặc mã quy ước (conventional cryptosystem). Nếu phía mã hóa và phía giải mã dùng 2 khóa
khác nhau, hệ thống này được gọi là mã bất đối xứng (asymmetric key), mã hai khóa (two key)
họăc mã khóa công khai (public key).
-Cách xử lý thông tin gốc (mode of cipher): thông tin gốc có thể được xử lý liên tục theo
từng phần tử , khi đó ta có hệ thống mã dòng (stream cipher). Ngược lại, nếu thông tin gốc được
xử lý theo từng khối, ta có hệ thống mã khối (block cipher). Các hệ thống mã dòng thường phức
tạp và không được phổ biến công khai, do đó chỉ được dùng trong một số ứng dụng nhất định (ví
dụ trong thông tin di động GSM). Các thuật tóan mật mã được giới thiệu trong tài liệu này chỉ tập
trung vào cơ chế mã khối.
II.1.4 Tấn công một hệ thống mật mã:
Tấn công (attack) hay bẻ khoá (crack) một hệ thống mật mã là quá trình thực hiện việc
giải mã thông tin mật một cách trái phép. Thuật ngữ cryptanalysis được dùng để chỉ hành vi bẻ
khoá và người thực hiện bẻ khoá được gọi là cryptanalyst.
Thông thường, đây là hành vi của một kẻ tấn công khi muốn xâm nhập vào một hệ thống
đã được bảo vệ bằng mật mã. Theo nguyên tắc mật mã, để lấy được thông tin gốc, thì tác nhân
43
giải mã phải có được 3 thành phần: thông tin mật (ciphertext), khóa (secret key) và thuật tóan giải
mã (decryption algorithm). Kẻ tấn công thường không có đầy đủ 3 thông tin này, do đó, thường
cố gắng để giải mã thông tin bằng hai phương pháp sau:
-Phương pháp phân tích mã (cryptanalysis): dựa vào bản chất của thuật tóan mã hóa,
cùng với một đọan thông tin gốc hoặc thông tin mật có được, kẻ tấn công tìm cách phân tích để
tìm ra tòan bộ thông tin gốc hoặc tìm ra khóa, rồi sau đó thực hiện việc giải mã toàn bộ thông tin
mật.
-Phương pháp thử tuần tự (brute-force): bằng cách thử tất cả các khóa có thể, kẻ tấn
công có khả năng tìm được khóa đúng và do đó giải mã được thông tin mật.
Thông thường, để tìm được khóa đúng thì cần phải thử một số lượng khóa bằng khỏang
một nửa số khóa có thể có của hệ thống mã. Ví dụ, nếu khoá có chiều dài là 8 bit thì sẽ có tất cả 28
= 256 khoá khác nhau. Để chọn được khoá đúng thì kẻ tấn công phải thử trung bình khoảng 256 /
2 = 128 lần. Việc thử này thường được trợ giúp bởi các máy tính và phần mềm chuyên nghiệp.
Hai thành phần đảm bảo sự an toàn của một hệ thống mật mã là thuật toán mã (bao gồm
thuật toán mã hoá và thuật toán giải mã) và khoá.
Trong thực tế, thuật tóan mã không được xem như một thông tin bí mật, bởi vì mục đích
xây dựng một thuật tóan mã là để phổ biến cho nhiều người dùng và cho nhiều ứng dụng khác
nhau, hơn nữa việc che giấu chi tiết của một thuật tóan chỉ có thể tồn tại trong một thời gian ngắn,
sẽ có một lúc nào đó, thuật tóan này sẽ được tiết lộ ra, khi đó tòan bộ hệ thống mã hóa trở nên vô
dụng. Do vậy, tất cả các tình huống đều giả thiết rằng kẻ tấn công đã biết trước thuật tóan mã.
Như vậy, thành phần quan trọng cuối cùng của một hệ thống mã là khóa của hệ thống,
khóa này phải được giữ bí mật giữa các thực thể tham gia nên được gọi là khóa bí mật.
Một cách tổng quát, chiều dài khóa càng lớn thì thời gian cần thiết để dò ra khóa bằng
cách thử càng lớn, do vậy khả năng phát hiện khóa càng thấp. Bảng sau đây liệt kê một số khóa
với độ dài khác nhau và thời gian cần thiết để dò ra khóa.
Bảng 2.1: Quan hệ giữa độ dài khoá và thời gian dò khoá.
Chiều dài
khoá (bit)
Số khoá tối đa
Thời gian dò khoá với tốc độ
thử 1 khoá /ms
Thời gian dò khoá với tốc
độ thử 106 khoá /ms
32
232 = 4,3 * 109
231 ms = 35,8 phút
2,15 milli giây
56
256 = 7,2 * 1016
255 ms = 1.142 năm
10,01 giờ
128
2128 = 3,4 * 1038
2127 ms = 5,4 * 1024 năm
5,4 * 1018 năm
168
2168 = 3,7 * 1050
2167 ms = 5,9 * 1036 năm
5,9 * 1030 năm
26! = 4 * 1026
2 * 1026 ms = 6,4 x 1012 năm
6.4 * 106 năm
26 ký tự
(hoán vị)
II.2 KỸ THUẬT MẬT MÃ ĐỐI XỨNG:
Kỹ thuật mật mã đối xứng được đặc trưng bởi việc sử dụng một khóa duy nhất cho cả quá
trình mã hóa và giải mã thông tin. Bằng một cách an tòan nào đó, khóa chung này phải được trao
44
đổi thống nhất giữa bên gởi và bên nhận (tức bên mã hóa và bên giải mã), đồng thời được giữ bí
mật trong suốt thời gian sử dụng.
Kỹ thuật mật mã đối xứng còn được gọi là mật mã quy ước (conventional encryption)
hoặc mật mã dùng khóa bí mật (secret key encryption).
Cấu trúc chung của một hệ thống mật mã hóa quy ước như trình bày ở hình 2.2, trong đó,
kênh thông tin dùng để trao đổi khóa bí mật phải là một kênh an tòan. Có thể thực hiện việc trao
đổi khóa bí mật giữa hai thực thể A và B theo những cách sau đây:
1-A chọn ra một khóa bí mật và chuyển trực tiếp cho B (chuyển bằng phương tiện vật lý
như ghi lên đĩa, nói trực tiếp, ghi ra giấy, …)
2-Một thực thể thứ 3 chọn ra khóa bí mật và thông báo khóa này cho cả A và B (bằng
phương tiện vật lý như trên)
3-Nếu A và B trước đó đã dùng một khóa nào đó để thông tin với nhau, thì một trong hai
thực thể sẽ tiếp tục dùng khóa cũ để gởi thông báo về khóa mới cho thực thể kia.
4-Nếu A và B có các kết nối an tòan đến một thực thể thứ 3 là C, thì C có thể gởi thông
báo về khóa cho cả hai thực thể A và B thông qua kết nối an tòan này.
Khoá bí mật
(dùng chung)
Thông tin gốc
Thuật toán
mã hóa
Thông tin mật
Thuật toán
giải mã
Thông tin gốc
Hình 2.2: Trao đổi khoá trong mật mã đối xứng
Mã hóa đối xứng dựa chủ yếu trên hai thao tác: thay thế và chuyển vị.
Thao tác thay thế sẽ thay từng từ mã bởi một từ mã khác theo một quy ước nào đó, và quy
ước này chính là khóa của hệ thống mã. Ví dụ: thay thế từng ký tự trong một thông điệp bằng một
ký tự đứng cách nó 3 vị trí trong bảng chữ cái la tinh, thông điệp “HELLO WORLD” sẽ được mã
hóa thành “KHOOR ZRUOG”.
Thao tác chuyển vị thực hiện việc thay thế vị trí của các từ mã trong thông tin gốc theo
một quy ước nào đó và quy ước này cũng trở thành khóa của hệ thống. Ví dụ: dịch từng ký tự
trong một thống điệp qua phải một ví trí có xoay vòng, thông điệp “HELLO WORLD” sẽ được
mã hóa thành “DHELLO WORL”.
II.2.1 Cấu trúc mã khối cơ bản Feistel:
Cấu trúc mã khối cơ bản Feistel (Feistel Cipher Structure) được IBM đưa ra vào năm
1973, được xem như là cấu trúc mật mã cơ bản nhất và được áp dụng trong nhiều thuật toán mật
mã phổ biến hiện nay như DES, Blowfish, IDEA, … Cần chú ý rằng Feistel chưa phải là một
thuật toán mật mã, mà chỉ là một mô hình được xây dựng phù hợp cho việc thiết kế các thiết bị
mật mã bằng phần cứng. Các thuật toán mật mã phải thực hiện hoàn chỉnh mô hình Feistel theo
yêu cầu của mình, bao gồm việc định nghĩa các hàm F, S-Box và thuật toán tạo khoá phụ (subkey
generation algorithm). Cấu trúc Feistel được trình bày ở hình 2.3.
Nguyên lý hoạt động của Feistel dựa trên việc hoán vị và thay thế nhiều lần trên khối dữ
liệu gốc, cụ thể như sau:
45
-Thông tin gốc được cắt thành từng khối có kích thước 2w bit (tức là một số bit chẵn).
Mỗi khối bit được xử lý thành 2 phần bằng nhau: w bit bên trái (L) và w bit bên phải (R).
-Cả hai phần bên trái và bên phải được đưa lần lượt vào khối mã hoá gồm n vòng liên tiếp
và giống nhau. Các thao tác thực hiện tại mỗi vòng bao gồm: hoán vị phần bên trái và phần bên
phải, đưa phần bên phải vào một hàm xử lý F cùng với khoá con Ki, ngõ ra sẽ được XOR với phần
bên trái. Kết quả cuối cùng được hoán vị một lần nữa trước khi xuất ra.
Thông tin gốc
2w bit
L0
w bit
w bit
R0
K1
F
L1
R1
Ki
F
Li
Ri
Kn
F
Ln
Rn
Ln+1
Rn+1
Thông tin mật
2w bit
Hình 2.3: Cấu trúc mã khối Feistel
46
Quá trình giải mã của Feistel tương tự như quá trình mã hoá, chỉ khác ở chỗ thứ tự các
khoá phụ đưa vào tại mỗi vòng bị đảo ngược so với quá trình mã hoá, nghĩa là khoá Kn sẽ đưa vào
vòng thứ nhất, khoá K1 đưa vào vòng cuối cùng. Cũng vì lý do này, tất các các thao tác trong cấu
trúc Feistel, kể cả hàm F, đều không cần phải có thao tác ngược.
Quá trình giải mã được minh hoạ ở hình 2.4, cụ thể cho trường hợp Feistel sử dụng 16
vòng. Ta sẽ chứng minh được rằng ngõ ra của thuật toán giải mã chính là thông tin gốc ban đầu.
Từ kết quả chứng minh này, ta có thể áp dụng tương tự cho thuật toán Feistel bất kỳ với n vòng.
Thông tin gốc
2w bit
K1
LE0
Thông tin mật
2w bit
RE0
LD0=RE16
F
RE1
LD1=RE15
F
LE15
RD0=LE16
F
K2
LE1
K16
K15
RD1=LE15
F
K16
RE15
LD15=RE1
F
K1
RD15=LE1
F
LE16
RE16
LEout
REout
Thông tin mật
2w bit
a-Quá trình mã hoá
LD16=RE0
LDout=LE0
RD16=LE0
RDout=RE0
Thông tin gốc
2w bit
b-Quá trình giải mã
Hình 2.4: Mã hoá và giải mã dùng cấu trúc Feistel
Để phân biệt giữa quá trình mã hoá và quá trình giải mã, ta ký hiệu các khối thông tin tại
từng vòng như sau:
- LEi và REi: ngõ vào bên trái và bên phải của thuật tóan mã hóa ở vòng thứ i.
47
- LDi và RDi: ngõ vào bên trái và bên phải của thuật tóan giải mã ở vòng thứ i.
- F(REi, Ki): áp dụng hàm F lên khối thông tin REi và khoá Ki.
Xét vòng cuối cùng (vòng 16) của quá trình mã hoá:
LE16 = RE15
RE16 = LE15 F(RE15, K16)
(1)
Khi đưa ngõ ra của quá trình mã hoá vào ngõ vào của quá trình giải mã, chú ý lần hoán vị
sau cùng của quá trình mã hoá, ta có:
LD0 = LEout = RE16
RD0 = REout = LE16
(2)
Xét vòng thứ nhất của quá trình giải mã, ta có:
LD1 = RD0
RD1 = LD0 F(RD0, K16)
(3)
Kết hợp (1), (2) và (3) ta có:
LD1 = RE15
RD1 = RE16 F(LE16, K16) = [LE15 F(RE15, K16)] F(RE15, K16) = LE15
Do với phép XOR, ta luôn có:
AA=0
(A B) C = A (B C).
Một cách tổng quát, tại vòng thứ i của quá trình mã hoá:
LEi = REi-1
REi = LEi-1 F(REi-1, Ki)
Hay có thể viết:
REi-1 = LEi
LEi-1 = REi F(REi-1, Ki) = REi F(LEi, Ki)
(4)
Với (4), ta hoàn toàn có thể kiểm chứng được kết quả của từng vòng giải mã như ở hình
2.4b. Ví dụ ở vòng thứ 2:
LD2 = RD1= LE15 = RE14
RD2 = LD1 F(RD1, K15) = RE15 F(LE15, K15) = LE14
Ở vòng thứ 16, ta có:
LD16 = RD15 = LE1 = RE0
RD16 = LD15 F(RD15, K1) = RE1 F(LE1, K1) = LE0
Lần hoán vị sau cùng cho ra:
LDout = LE0 và RDout = RD0, đây chính là thông tin gốc ban đầu.
Các thuật toán mật mã dựa trên cấu trúc Feistel phân biệt với nhau bởi các thông số sau
đây:
1-Kích thước khối dữ liệu đầu vào (block size)
2-Chiều dài khoá (key size)
3-Số vòng lặp (number of rounds)
48
4-Thuật toán sinh khoá phụ (subkey generation algorithm)
5-Hàm F thực hiện tại mỗi vòng (round function)
Đây là những thông số chưa được xác định trong cấu trúc Feistel.
Ngoài ra, hai tiêu chí khác cần quan tâm khi thiết kế thuật toán mã dựa trên Feistel:
Đạt tốc độ tối đa khi cài đặt bằng phần mềm.
Dễ phân tích và thực hiện.
II.2.2 Thuật toán mật mã DES:
DES (Data Encryption Standard) là một thuật tóan mã dựa trên cấu trúc Feistel được
chuẩn hóa năm 1977 bởi cơ quan chuẩn hóa Hoa kỳ (NIST – National Institute of Standards and
Technology).
Cơ chế thực hiện mã hóa DES được mô tả ở hình 2.5.
Thông tin gốc
64 bit
Khoá bí mật
64 bit
IP
PC-1
64 bit
56 bit
56 bit
K1 48 bit
Vòng 1
Dịch trái
PC-2
64 bit
56 bit
56 bit
K2 48 bit
Vòng 2
Dịch trái
PC-2
56 bit
K16 48 bit
Vòng 16
PC-2
Dịch trái
64 bit
32 bit swap
64 bit
IP-1
Chú thích:
IP (Initial Permutation): phép hoán vị khởi đầu
IP-1 (Inverse Initial Permutation): phép hoán vị ngược của hoán vị khởi đầu.
PC-1 (Permuted Choice 1): phép hoán vị 1
PC-2 (Permuted Choice 2): phép hoán vị 2
Thông tin mật
64 bit
Hình 2.5: Thuật toán mật mã DES
49
DES xác định các thông số của cấu trúc Feistel như sau:
-Kích thước khối: 64 bit
-Chiều dài khoá: 64 bit, thực ra là 56 bit như sẽ trình bày sau đây
-Số vòng lặp: 16 vòng
-Thuật toán sinh khoá phụ: kết hợp phép dịch trái và hoán vị
-Hàm F: kết hợp các phép XOR, hoán vị và thay thế (S-box).
Chi tiết thực hiện các thông số của DES được trình bày sau đây:
-Phép hoán vị khởi đầu (IP): có chức năng làm thay đổi vị trí các bit trong khối thông tin
gốc. Đây là phần thực hiện không có trong cấu trúc Feistel. Ở phần cuối của quá trình mã hoá,
phép hoán vị ngược sẽ trả lại các bit về vị trí ban đầu của nó. Phép hoán vị IP và IP-1 thực hiện
dựa trên hai ma trận như sau, với các giá trị trong ma trận cho biết số thứ tự của bit trong khối
thông tin (từ 1 đến 64):
Hình 2.6: Ma trận hoán vị khởi đầu (IP)
Hình 2.7: Ma trận ngược của ma trận hoán vị khởi đầu ( IP-1)
64 bit trong khối thông tin (M1, M2, …, M64) được ánh xạ vào các vị trí tương ứng trong
ma trận IP và IP-1, sau đó được đọc ra tuần tự theo từng dòng từ trên xuống.
50
Ví dụ: đối với phép hoán vị IP, bit M1 được ghi vào vị trí cột 8 dòng 5, bit M2 được ghi
vào cột 8 dòng 1 và tiếp tục như thế đến bit M64 được ghi vào cột 1 dòng 4. Sau đó, khối thông tin
này được đọc ra lần lượt từng dòng, khi đó 8 bit đầu tiên tương ứng với dòng đầu tiên sẽ là các bit
có thứ tự là: 58, 50, 42, 34, 26, 18, 10, 2. Hay nói cách khác, chuỗi bit:
M1
M2
M3
M4
M5
M6
M7
M8
được hoán vị thành chuỗi bit:
M58 M50 M42 M34 M26 M18 M10 M2
-Hàm F: có chức năng trộn giữa khoá phụ Ki với khối thông tin tại từng vòng. Hàm F
trong DES gồm có thao tác: hoán vị mở rộng (E table) chuyển từ 32 bit thành 48 bit, hàm XOR
cộng 48 bit vừa tạo ra với 48 bit của khoá phụ Ki, khối thay thế S-Box chuyển 48 bit thành 32 bit,
cuối cùng là khối hoán vị P.
Hoạt động của hàm F tại từng vòng được mô tả ở hình 2.8.
32 bit
32 bit
Li-1
Ri-1
E table
48 bit
48 bit
Ki
Hàm F
48 bit
S-Box
32 bit
Permutation (P)
32 bit
Li
32 bit
Ri
32 bit
Hình 2.8: Cấu trúc từng vòng của DES
51
E table (Expansion/Permutation) thực hiện chức năng hoán vị các bit trong khối thông tin,
đồng thời chuyển từ 32 bit thành 48 bit bằng cách sử dụng ma trận E table (hình 2.9). 32 bit thông
tin theo thứ tự được đọc vào 48 vị trí (tương ứng với 6 cột và 8 dòng) của E table. Như vậy, sẽ có
một số bit được lặp lại trong ma trận.
S-Box (Substitution Box) thực hiện thao tác thay thế chuỗi bit thành một chuỗi bit khác,
đồng thời thực hiện thao tác ngược lại với E table là chuyển khối thông tin từ 48 bit thành 32 bit.
S-Box cũng được thực hiện thông qua các ma trận S-Box (hình 2.10).
Nguyên tắc hoạt động của S-box như sau:
48 bit ngõ ra của phép XOR được chia thành 8 phần, mỗi phần 6 bit.
Từng phần 6 bit được xử lý riêng biệt bằng một ma trận S-Box khác nhau (có 8 SBox khác nhau).
Tại mỗi S-Box, bit đầu và bit cuối của phần 6 bit thông tin được dùng để chọn 1
trong 4 hàng của ma trận, 4 bit còn lại được dùng để chọn 1 trong 16 giá trị của
hàng tương ứng, giá trị được chọn sẽ chuyển thành 4 bit nhị phân.
Ví dụ, xét ma trận S1, với chuỗi bit là 101100:
- bit đầu và bit cuối là 10, có giá trị thập phân là 2, do đó hàng được chọn là hàng số 2.
- 4 bit còn lại là 0110 nhị phân, giá trị thập phân tương ứng là 6, do đó giá trị tại cột 6
được chọn.
- Giá trị tại hàng 2 cột 6 trong ma trận S1 là 2, giá trị xuất ra là 0010.
Hình 2.9: Ma trận E table
Phép hoán vị P (Permuatation) có chức năng chuyển đổi vị trí các bit trong khối thông tin
32 bit xuất ra từ S-Box. Thao tác hoán vị P cũng được thực hiện dựa trên ma trận P gồm 8 cột và 4
dòng (hình 2.11).
52
S1
S2
S3
S4
S5
S6
S7
S8
Hình 2.10: Ma trận S-Box
53
Hình 2.11: Ma trận hoán vị P
Ci-1
Di-1
Dịch trái
Dịch trái
PC-2
Ki
Ci
Di
Hình 2.12: Thuật toán sinh khoá phụ của DES
Hình 2.13: Ma trận hoán vị PC-1
-Thuật toán sinh khoá phụ: Khoá đưa vào cho thuật toán DES là 64 bit, tuy nhiên trong
quá trình thực hiện, chỉ có 56 bit được sử dụng. Tất cả các bit cuối cùng của byte (tứ bit 8, 16, 24,
32, 40, 48, 56 và 64) bị loại bỏ ngay từ vòng xử lý đầu tiên.
Hình 1.12 mô tả thuật toán sinh khoá phụ của DES. 64 bit khoá ban đầu được chọn lấy 56
bit theo quy tắc đã nói ở trên, sau đó được đưa vào khối hoán vị PC-1. Mục đích của khối hoán vị
54
PC-1 là thay đổi vị trí các bit của 56 bit khoá vùa tạo ra. Chú ý rằng PC-1 chỉ được thực hiện 1 lần
duy nhất trước khi bắt đầu vòng đầu tiên. Trong tất cả các vòng mã hoá, phép hoán vị thực hiện
trên các khoá phụ là phép hoán vị PC-2. PC-1 và PC-2 được thực hiện thông qua các ma trận
PC-1 và PC-2 ở hình 2.13 và 2.14. Ngõ ra của khối hoán vị PC-1 được chia thành 2 phần, mỗi
phần 28 bit (C và D). Tại mỗi vòng mã hoá, hai phần này được dịch trái 1 hoặc 2 bit trước khi đi
qua khối hoán vị PC-2 để thành 48 bit khoá phụ đưa vào hàm XOR cùng với khối thông tin của
vòng tương ứng. Số bit dịch trái tương ứng với mỗi vòng như sau:
Vòng
1
2
3
4
5
6
7
8
9
0
11 12 13 14 15 16
Số bit dịch
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
Hình 2.14: Ma trận hoán vị PC-2
Nhận xét:
-Thuật tóan mật mã DES là một thuật tóan dựa trên cấu trúc Feistel nhưng có cách thực
hiện phức tạp, được thiết kế dựa trên các thao tác xử lý bit (bitwise operartions) như phép XOR,
phép dịch, hoán vị, … do đó thích hợp với các thiết bị mã hoá bằng phần cứng. Thuật toán DES
không dễ phân tích, và trong một thời gian dài đã được giữ bí mật.
-Hai thông tin liên quan đến mức độ an tòan của thuật toán mã DES là tính phức tạp của
giải thuật và chiều dài khóa. Đến thời điểm hiện nay, tức 30 năm kể từ khi DES được chấp nhận
như một thuật toán mật mã tiêu chuẩn, chưa có một phát hiện nào về điểm yếu trong bản thân
thuật toán. Tuy nhiên, với chiều dài khoá là 56 bit, việc dò khoá bằng phương pháp thử lần lượt là
có thể thực hiện được với các máy tính đa dụng hiện nay với thời gian tìm kiếm khoảng 10 giờ.
Do vậy, nguy cơ tấn công mật mã đối với các hệ thống sử dụng DES là khá cao trong thời
điểm hiện nay. Điều đó yêu cầu phải xây dựng một tiêu chuẩn mật mã khác hoặc cải tiến DES để
tăng mức độ an toàn. Phần tiếp theo sẽ trình bày cả hai giải pháp này.
II.2.3 Thuật tóan mật mã Triple DES:
Tripple DES hay DES bội ba (viết tắt là 3DES hoặc TDES) là một phiên bản cải tiến của
DES. Nguyên tắc của Triple DES là tăng chiều dài khoá của DES để tăng độ an toàn, nhưng vẫn
giữ tính tương thích với thuật toán DES cũ.
Gọi P là thông tin gốc, K là khóa và C là thông tin đã mật mã hóa; E là thuật tóan mã hóa
và D là thuật tóan giải mã, quá trình mã hóa và giải mã dùng thuật tóan DES đơn giản được biểu
diễn như sau:
55
C = E(P, K)
P = D(C, K)
K1
P
K2
X
E
C
E
a- Mã hoá
K2
C
K1
X
D
P
D
b- Giải mã
Hình 2.15: DES bội hai (double DES)
Để tăng độ an tòan của giải thuật mật mã DES, ý tưởng cơ bản là thực hiện DES nhiều lần
đối với cùng một khối thông tin gốc. Nếu thực hiện DES hai lần, ta có DES bội hai (double DES)
(hình 2.15) với công thức biểu diễn như sau:
C = E (E(P, K1), K2)
P = D (D (C, K2), K1)
Tuy nhiên, với 112 bit khoá, DES bội hai vẫn chưa chứng tỏ được tính an tòan cao của nó,
các hệ thống dùng DES bội hai vẫn có thể bị tấn công bằng phương thức xen giữa (Man-In-TheMiddle). Bằng cách thực hiện DES ba lần trên cùng một khối thông tin, trong đó có hai lần mã
hoá và một lần giải mã (hình 2.16), ta được Triple DES hay DES bội ba:
C = E (D (E (P, K1), K2), K1)
P = D (E ( D (C, K1), K2, K1)
K1
P
K2
A
E
D
K1
B
E
C
a- Mã hoá
K1
C
E
K2
B
D
K1
A
E
P
b- Giải mã
Hình 2.16: DES bội ba (triple DES) dùng 2 khoá
56
Khi đó, chiều dài khóa của thuật tóan này vẫn là là K1 + K2 = 112 bit.
Việc xen vào một lần giải mã ở giữa trong thuật toán Triple DES không nhằm mục đích
tăng thêm độ an toàn cho thuật toán mà chỉ giúp tạo ra sự tương thích giữa Triple DES và thuật
toán DES cũ. Khi đó, thiết bị giải mã Triple DES có thể giải mã được thông tin mật được mã hoá
bằng DES:
C = E (D (E (P, K1), K2), K1) = E (P, K1).
Triple DES với hai khoá là một thuật toán mật mã an toàn, tránh được các tấn công xen
giữa và đã được sử dụng thay thế DES trong nhiều ứng dụng (ANS X9.17, ISO 8732, …).
Một phiên bản khác của Triple DES là sử dụng cả 3 khoá khác nhau K1, K2, K3 với cùng
cấu trúc như trên. Khi đó chiều dài khoá của thuật toán là K1 + K2 + K3 = 168 bit. Khi cần thiết
phải đảm bảo tính tương thích với các ứng dụng DES cũ thì đặt K1 = K2 hoặc K3 = K2. Triple DES
3 khoá cũng đã được ứng dụng trong nhiều dịch vụ, đặc biệt là PGP, S/MIME .
II.2.4 Thuật tóan mật mã AES:
Triple DES đã khắc phục được các điểm yếu của DES và hoạt động ổn định trong nhiều
ứng dụng trên mạng Internet. Tuy nhiên, Triple DES vẫn còn chứa những nhược điểm của DES
như tính khó phân tích, chỉ thích hợp với thực thi bằng phần cứng chứ không thích hợp cho thực
thi bằng phần mềm, kích thước khối cố định 64 bit, … Do đó, cần thiết phải xây dựng một chuẩn
mật mã mới, dựa trên một cơ sở toán học vững chắc, có tính linh động để có thể điều chỉnh cho
phù hợp với ứng dụng và đặc biệt là phải thích hợp với việc thực thi cả bằng phần mềm và phần
cứng. Đó là những yêu cầu cơ bản đối với chuẩn mật mã cao cấp AES (Advanced Encryption
Standard).
Thuật toán mật mã Rijndael được chọn để chuẩn hoá thành AES năm 2002. Hiện nay,
AES vẫn còn trong giai đoạn thử nghiệm, các ứng dụng dựa trên AES chưa nhiều, nhưng trong
thời gian ngắn sắp tới, các ứng dụng mật mã dùng khoá đối xứng sẽ chuyển dần sang AES.
Các thông số chính của AES được tóm tắt như sau:
Chiều dài khoá (bit)
128
192
256
Kích thước khối (bit)
128
128
128
Số vòng mã (vòng)
10
12
14
Chiều dài khoá phụ (bit)
128
128
128
Chiều dài khoá mở rộng (byte)
176
208
240
Chiều dài khoá của AES có thể là 128, 192 hoặc 256 bit. Ứng với mỗi trường hợp, các
thông số còn lại được cho tương ứng ở bảng trên, trong đó, kích thước khối thông tin luôn cố định
là 128 bit.
Một lưu ý quan trọng là AES không dựa trên cấu trúc Feistel. Tất cả các thao tác trong
thuật toán đều có thể được mô tả bằng công cụ toán học, do đó AES có thể thực hiện bằng phần
cứng hoặc phần mềm với tốc độ tối đa. AES sử dụng hai thuật toán khác nhau cho mã hoá và giải
mã, do vậy tất cả các thao tác trong thuật toán bắt buộc phải có thao tác ngược (ngoại trừ phép
XOR).
Hình 2.17 mô tả thuật toán AES trong trường hợp đơn giản nhất (128 bit khoá).
57
Khoá
Thông tin gốc
Add round key
W[0,3]
Add round key
Substitute bytes
Expand key
Inverse sub bytes
Inverse shift rows
Mix column
Inverse mix column
Vòng 1
Shift rows
Vòng 10
Thông tin gốc
W[4,7]
Add round key
Vòng 9
Add round key
Inverse sub bytes
Substitute bytes
Inverse shift rows
Vòng 9
Shift rows
Mix column
W[36,39]
Add round key
Vòng 10
Vòng 1
Add round key
Inverse mix column
Substitute bytes
Inverse sub bytes
Shift rows
Inverse shift rows
Add round key
W[40,43]
Add round key
Thông tin mật
Thông tin mật
a- Mã hoá
b- Giải mã
Hình 2.17: Thuật toán mã AES
58
Khối thông tin gốc (128 bit) được xử lý như một mảng 2 chiều kích thước 4 x 4 gọi là
mảng trạng thái (State array), mỗi phần tử của mảng tương đương với 8 bit của khối thông tin.
Mỗi vòng mã hoá sẽ làm thay đổi giá trị của mảng trạng thái, và ngõ ra của thuật toán mật mã
chính là giá trị cuối cùng của mảng trạng thái (hình 2.18).
VI.1.1 Thông
VI.1.2 Các trạng thái
VI.1.3 Thông
Hình 2.18: Quá trình biến đổi mảng trạng thái trong thuật toán AES
Thuật tóan mã AES thực hiện dựa trên 4 thao tác sau đây:
-Thay thế byte (Byte Substitution)
-Dịch dòng (ShiftRows)
-Trộn cột (MixColumns)
-Cộng khóa (AddRoundKey)
Thuật toán mật mã AES dùng khoá 128 bit (cả mã hoá và giải mã) bắt đầu bằng một thao
tác cộng khoá, sau đó là 9 vòng liên tiếp, mỗi vòng gồm đủ 4 bước như trên, và một vòng cuối
cùng gồm 3 bước (không có thao tác trộn cột).
-Thao tác thay thế byte: thao tác này có chức năng thay thế từng byte trong mảng trạng
thái thành một byte khác sử dụng một ma trận kích thước 16 x 16 (được gọi là S-Box). Nguyên
tắc thay thế dùng ma trận S-Box như sau: ứng với mỗi byte trong mảng trạng thái hiện hành, 4 bit
bên trái được dùng để chọn một trong 16 dòng, 4 bit bên phải được dùng để chọn một trong 16
cột. Giá trị của ô tương ứng với dòng và cột được chọn sẽ là giá trị thay thế cho byte hiện hành. Ở
quá trình giải mã, thao tác này cũng được thực hiện tương tự nhưng sử dụng một ma trận khác,
gọi là ma trận S-Box ngược (hình 2.19).
Ví dụ: mảng trạng thái hiện hành có giá trị (Hex) như sau:
EA
04
65
85
83
45
5D
96
5C
33
98
B0
F0
2D
AD
C5
Sau khi qua thao tác thay thế byte sử dụng ma trận S-Box ở hình 2.19 sẽ trở thành:
87
F2
4D
97
EC
6E
4C
90
4A
C3
46
E7
8C
D8
95
A6
59
a- Ma trận S-Box
b-Ma trận S-Box ngược
Hình 2.19: Ma trận thay thế byte (S-Box)
-Thao tác dịch dòng: Thao tác này có mục đích hoán vị các byte trong mảng trạng thái.
Nguyên tắc dịch như sau: dòng đầu tiên của mảng được giữ nguyên, dòng thứ hai được dịch trái 1
byte, dòng thứ ba được dịch trái 2 byte và dòng thứ tư được dịch trái 3 byte (hình 2.20).
60
Thao tác ngược được thực tương tự nhưng với phép dịch phải được dùng thay cho phép
dịch trái, nghĩa là dòng đầu tiên cũng được giữ nguyên, dòng thứ hai được dịch phải 1 byte, dòng
thứ ba được dịch phải 2 byte và dòngthứ tư được dịch phải 3 byte.
-Thao tác trộn cột: Thao tác này được thực hiện trên từng cột, có tác dụng thay thế từng
Hình 2.20: Thao tác dịch dòng
byte trong cột bằng một giá trị được tạo ra từ giá trị của tất cả các byte trong cùng cột đó. Thao tác
này được biểu diễn bằng phép nhân ma trận như sau:
Với phép nhân này, ta có:
s’0,j = 2s0,j 3s1,j s2,j s3,j
s’1,j = s0,j 2s1,j 3s2,j s3,j
s’2,j = s0,j s1,j 2s2,j 3s3,j
s’3,j = 3s0,j s1,j s2,j 2s3,j
Phép nhân ma trận được thực hiện trong trường GF(28) (*).
Thao tác ngược của thao tác trộn cột được thực hiện tương tự nhưng với phép nhân ma
trận sau:
Khi đó, giá trị của mạng trạng thái được xác định như sau:
s’0,j = 14s0,j 11s1,j 13 s2,j 9 s3,j
s’1,j = 9s0,j 14s1,j 11s2,j 13s3,j
s’2,j = 13s0,j 9s1,j 14s2,j 11s3,j
s’3,j = 11s0,j 13s1,j 9s2,j 14s3,j
Ví dụ: mảng trạng thái hiện hành có giá trị (Hex) như sau:
(*)
Xem thêm tài liệu về các phép toán trong trường Galois, đặc biệt là dạng GF(2n)
61
87
F2
4D
97
6E
4C
90
EC
46
E7
4A
C3
A6
8C
D8
95
Sau khi qua thao tác trộn cột bằng phép nhân ma trận ở trên sẽ trở thành:
47
40
A3
4C
37
D4
70
9F
94
E4
3A
42
ED
A5
A6
BC
-Thao tác cộng khoá: là thao tác đơn giản nhất của thuật toán, có tác dụng trộn giá trị của
mảng trạng thái hiện hành với khoá phụ của vòng tương ứng. Thao tác trộn được thực hiện bằng
phép XOR giữa 128 bit của mảng trạng thái hiện hành với 128 bit của khoá phụ. Thao tác cộng
khoá không có thao tác ngược, hay nói đúng hơn là thao tác ngược cũng chính là phép XOR.
-Thuật toán sinh khoá phụ: 128 bit khoá ban đầu được mở rộng (expand key) thành 176
byte, được tổ chức thành 44 từ (word), mỗi từ 4 byte, vừa đủ để tạo thành 10 khoá phụ cho 10
vòng mã hoá của thuật toán (mỗi khoá phụ gồm 4 từ) cộng với 1 khoá phụ cho thao tác cộng khoá
ban đầu. Như vậy, thuật toán sinh khoá phụ của AES thực chất là thuật toán mở rộng bốn từ khoá
(128 bit) ban đầu thành 44 từ khoá. Thao tác mở rộng khoá được thực hiện như sau:
-Bốn từ khoá gốc được đưa trực tiếp vào phép cộng khoá ban đầu, tức w[0,3] = key.
-Các từ khoá mở rộng tiếp theo (có thứ tự không là bội số của 4) được tạo ra bằng cách
XOR giữa từ khoá liền trước nó với từ khoá cách nó 4 vị trí, tức w[i] = w[i-1] w[i-4].
-Đối với các từ khoá mở rộng có thứ tự là bội số của 4 thì cách tạo ra gồm các bước:
Thực hiện dịch từ khoá liền trước nó sang trái 1 byte, temp = leftshift(w[i1], 8 bit)
Thay thế các byte trong từ khoá vừa tạo ra bằng các giá trị khác sử dụng
ma trận S-Box ở hình 2.19, temp = S-Box(temp)
Giá trị tạo ra được XOR với một hằng số xác định cho từng vòng mã hoá
gọi là Round Constant hay RC[j]. Giá trị RC[j] được định nghĩa riêng biệt
cho từng vòng như sau:
Vòng
1
2
3
4
5
6
7
8
9
10
RC[j]
01
02
04
08
10
20
40
80
1B
36
Giá trị sau khi XOR với RC[j] được XOR một lần nữa với từ khoá cách từ
khoá hiện hành 4 vị trí để tạo thành từ khoá mới.
Hình 2.21 trình bày thuật toán mở rộng khoá của AES, trong đó hàm g biểu diễn một phép
toán phức tạp gồm 4 thao tác vừa trình bày, áp dụng cho các từ khoá có vị trí là bội số của 4.
62
Hình 2.21: Thuật toán mở rộng khoá của AES
II.2.5 Các thuật toán mật mã đối xứng khác:
Ngòai 2 thuật toán mật mã hóa tiêu chuẩn ở trên (Triple DES được xem như là một phiên
bản nâng cấp của DES chứ không phải một thuật toán độc lập), có nhiều thuật toán khác cũng đã
chứng minh được tính hiệu quả của nó và được sử dụng trong một số ứng dụng khác nhau:
-IDEA (International Data Encryption Algorithm) là một thuật toán mật mã đối xứng
được phát triển ở Thụy điển năm 1991. IDEA dựa trên cấu trúc Feistel, sử dụng khóa 128 bit và
có nhiều điểm khác biệt so với DES. IDEA không sử dụng S-box mà dựa vào 3 phép tóan là
XOR, phép cộng nhị phân và phép nhân nhị phân trên các thanh ghi 16 bit. IDEA sử dụng thuật
toán mã hóa gồm 8 vòng, khóa phụ tại mỗi vòng được sinh ra từ các phép dịch phức tạp. IDEA
được sử dụng trong các ứng dụng bảo mật thư điện tử (PGP).
-Blowfish được phát triển năm 1993, bởi một người nghiên cứu mật mã hóa độc lập
(Bruce Schneier) và cũng đã nhanh chóng được sử dụng song song với giải thuật mã hóa DES.
Blowfish được thiết kế đơn giản và tốc độ thực thi nhanh. Giải thuật này sử dụng khóa có chiều
dài thay đổi (có thể lên đến 448 bit) nhưng thường sử dụng nhất là khóa 128 bit. Blowfish cũng
dùng cấu trúc mã khối Feistel, thực hiện 16 vòng mã, sử dụng các phép tóan S-box, XOR và phép
cộng nhị phân.
-RC4 và RC5 là giải thuật mã hóa đối xứng được thiết kế bởi Ron Rivest (một trong
những người phát minh ra giải thuật mã hóa bất đối xứng RSA) vào năm 1988 và 1994. RC4 là
một thuật toán mã dòng (Stream cipher), có cấu trúc đơn giản, được ứng dụng trong bảo mật Web
(SSL/TSL) và trong mạng không dây (WEP). RC5 là thuật toán mã khối, được thiết kế với các
đặc tính như: phù hợp với việc thực thi bằng cả phần cứng và phần mềm, tốc độ cao, đơn giản,
dùng khóa có chiều dài thay đổi và số vòng mã hóa cũng có thể thay đổi.
63
-CAST-128 là một thuật toán khác được thiết kế năm 1997 bởi Carlisle Adams và Stafford
Tavares. CAST-128 dùng khóa có độ dài thay đổi, cũng sử dụng S-box nhưng với kích thước lớn
hơn so với DES, và điều đặc biệt là các vòng mã hóa không hòan tòan giống nhau.
Bảng 2.1 tóm tắt các thuật toán mật mã khối dùng khoá đối xứng hiện có trong thực tế và
các ứng dụng của chúng.
Bảng 2.1: Các thuật toán mật mã đối xứng
Thuật toán
Chiều dài khóa
Số vòng mã hóa
Phép tóan sử dụng
Ứng dụng
DES
56 bit
16
XOR, S-box
SET,
Kerberos
3DES
112 hoặc 168 bit
48
XOR, S-box
PGP,
S/MIME, các
ứng
dụng
quản lý khóa
AES
128, 192 hoặc
256 bit
10, 12 hoặc 14
XOR, dịch, S-box
SSL
IDEA
128 bit
8
XOR, cộng nhị phân, PGP
nhân nhị phân
Blowfish
Thay đổi, tối đa
448 bit
16
XOR, S-box, cộng nhị Các công cụ
phân
mật mã.
RC5
Thay đổi, tối đa
2048 bit
Thay đổi, tối đa
255 vòng
Cộng nhị phân, trừ nhị Các công cụ
phân, XOR, phép quay mật mã.
CAST-128
40 đến 128 bit
16
Cộng, trừ nhị phân, PGP
XOR, quay, S-box
II.3 KỸ THUẬT MẬT MÃ BẤT ĐỐI XỨNG
II.3.1 Cấu trúc hệ thống mật mã bất đối xứng:
Đặc trưng của kỹ thuật mật mã bất đối xứng là dùng 2 khóa riêng biệt cho hai quá trình
mã hóa và giải mã, trong đó có một khóa được phổ biến công khai (public key hay PU) và khóa
còn lại được giữ bí mật (private key hay PR). Cả hai khoá đều có thể được dùng để mã hoá hoặc
giải mã. Việc chọn khoá công khai hay khoá bí mật cho quá trình mã hoá sẽ tạo ra hai ứng dụng
khác nhau của kỹ thuật mật mã bất đối xứng:
Nếu dùng khoá công khai để mã hoá và khoá bí mật để giải mã, ta có ứng dụng
bảo mật trên thông tin (confidentiality).
Nếu dùng khoá bí mật để mã hoá và khoá công khai để giải mã, ta có ứng dụng
xác thực nội dung và nguồn gốc thông tin (authentication).
Thuật toán mật mã bất đối xứng dựa chủ yếu trên các hàm toán học hơn là dựa vào các
thao tác trên chuỗi bit. Mật mã hóa bất đối xứng còn được gọi bằng một tên thông dụng hơn là
mật mã hóa dùng khóa công khai (public key encryption).
Nói chung, mật mã hóa bất đối xứng không phải là một kỹ thuật mật mã an tòan hơn so
với mật mã đối xứng, mà độ an tòan của một thuật toán mã nói chung phụ thuộc vào 2 yếu tố: Độ
dài của khóa và mức độ phức tạp khi thực hiện thuật tóan (trên máy tính). Hơn nữa, mặc dù được
64
ra đời sau nhưng không có nghĩa rằng mật mã bất đối xứng hòan tòan ưu điểm hơn và sẽ được sử
dụng thay thế cho mật mã đối xứng. Mỗi kỹ thuật mã có một thế mạnh riêng và mật mã đối xứng
vẫn rất thích hợp cho các hệ thống nhỏ và đơn giản. Ngoài ra, vấn đề phân phối khóa trong mật
mã bất đối xứng cũng được đánh giá là một trong những vấn đề phức tạp khi triển khai kỹ thuật
mật mã này trong thực tế.
Tập khoá
công khai
User E
User D
User C
User B
Khoá bí mật của
user B
Khoá công khai
của user B
Thông tin mật
Thông
tin gốc
Thuật toán mã hoá
(thực hiện bởi user A)
Thuật toán giải mã
(thực hiện bởi user B)
Thông
tin gốc
a- Ứng dụng bảo mật thông tin
Tập khoá
công khai
User E
User D
User C
Khoá bí mật
của user A
User A
Khoá công khai
của user A
Thông tin mật
Thông
tin gốc
Thuật toán mã hoá
(thực hiện bởi user A)
Thuật toán giải mã
(thực hiện bởi user B)
Thông
tin gốc
b- Ứng dụng xác thực thông tin
Hình 2.22: Cấu trúc hệ thống mật mã bất đối xứng
Cấu trúc một hệ thống mật mã bất đối xứng được trình bày trong hình 2.22.
Các bước cơ bản của một hệ thống mật mã dùng khóa công khai bao gồm:
65
Mỗi thực thể thông tin (user) tạo ra một cặp khóa (public/private) để dùng cho
việc mã hóa và giải mã.
Mỗi user thông báo một trong hai khoá của mình cho các user khác biết, khóa này
được gọi là khóa công khai (public key). Khóa còn lại được giữ bí mật, và gọi là
khóa riêng (private key).
Nếu một user A muốn gởi thông tin cho user B, user A sẽ thực hiện mã hóa thông
tin cần gởi bằng khóa công khai của user B.
Khi nhận được thông tin đã mã hóa từ user A, user B thực hiện giải mã thông tin
đó bằng khóa riêng của mình. Do khóa riêng không phổ biến công khai nên chỉ có
một mình user B có khả năng giải mã được.
Mật mã hóa bất đối xứng được sử dụng trong các ứng dụng: che giấu thông tin, tạo chữ ký
số (digital signature) và trao đổi khóa trong các thuật tóan mật mã đối xứng (key exchange).
II.3.2 Thuật toán mật mã RSA:
RSA là thuật toán mật mã bất đối xứng được xây dựng bởi Ron Rivest, Adi Shamir và
Len Adleman tại viện công nghệ Massachusetts (MIT), do đó được đặt tên là Rivest – Shamir –
Adleman hay RSA. Thuật toán này ra đời năm 1977 và cho đến nay đã được ứng dụng trong
nhiều lĩnh vực. Cũng như các thuật toán mật mã bất đối xứng khác, nguyên lý của RSA dựa chủ
yếu trên lý thuyết số chứ không dựa trên các thao tác xử lý bit.
Trong phạm vi tài liệu này, thuật tóan mã RSA được mô tả khái quát giúp người đọc nắm
được nguyên lý của thuật tóan mã chứ không chú trọng đến vấn đề phân tích và chứng minh các
cơ sở lý thuyết của thuật tóan.
RSA là một thuật toán mật mã khối, kích thước khối thông thường là 1024 hoặc 2048 bit.
Thông tin gốc của RSA được xử lý như các số nguyên. Ví dụ, khi chọn kích thước khối của thuật
toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 21024 – 1, tương đương với số thập phân có
309 chữ số. Chú ý rằng đây là những số nguyên cực lớn, không thể xử lý được bằng cách sử dụng
các cấu trúc dữ liệu có sẵn của các ngôn ngữ lập trình phổ biến.
Thuật toán RSA được mô tả như sau:
1-Để tạo ra một cặp khóa RSA, trước hết, chọn hai số nguyên tố đủ lớn p và q. Gọi N là
tích của p và q (N = pq).
2-Tiếp theo, chọn một số e sao cho e và (p-1)(q-1) là hai số nguyên tố cùng nhau. Sau đó
tìm số d sao cho ed = 1 mod (p-1)(q-1). Ký hiệu mod m biểu diễn phép modulo trên cơ số m.
3-Bây giờ, bỏ qua vai trò của p và q. Với 3 thành phần còn lại là N, e và d, ta đó:
-Khóa công khai (public key) là tổ hợp (N, e)
-Khóa bí mật (private) là tổ hợp (N, d).
4-Việc mã hóa một khối thông tin gốc M được thực hiện theo công thức:
C = Me mod N
(với M là số nguyên nhỏ hơn N)
5-Và quá trình giải mã C được thực hiện theo công thức:
M = Cd mod N
Cơ sở lý thuyết của thuật toán RSA dựa trên lý thuyết về số nguyên tố, phép toán modulo và
định lý Euler như sau:
66
Hàm Euler: Cho một số nguyên dương n, định nghĩa (n) là số các số nguyên dương nhỏ
hơn n và là số nguyên tố cùng nhau với n. Ví dụ: cho n = 8, các số nguyên dương nhỏ hơn 8 và là số
nguyên tố cùng nhau với 8 là các số 1, 3, 5, 7, do đó (8) = 4. (n) được gọi là hàm Euler của n.
-Quy ước (1) = 1.
-Nếu n là số nguyên tố thì tất cả các số nguyên dương nhỏ hơn n đều là số nguyên tố cùng
nhau với n, khi đó (n) = n -1.
-Nếu p và q là hai số nguyên tố và N = pq. Khi đó (N) = (p) . (q). Thật vậy, trong N-1
hay (pq-1) số nguyên dương nhỏ hơn N: các số p, 2p, …, (q-1)p và các số q, 2q, …, (p-1)q là các số
không phải nguyên tố cùng nhau với N. Như vậy:
(N)
= (pq – 1) – [(p – 1 ) + (q – 1)]
= pq – (p + q) + 1
= (p – 1) (q – 1)
= (p) . (q)
Định lý Euler: cho a và n là hai số nguyên tố cùng nhau, ta có a(n) = 1 mod n
Ta chấp nhận định lý này mà không phải chứng minh.
Với những cơ sở này, ta có thể kiểm chứng thuật toán RSA như sau:
Cho trước khối thông tin mật C = Me mod N, cần kiểm chứng rằng M = Cd mod N.
Ta có:
Cd mod N = (Me)d mod N = Med mod N
Xét quá trình tạo cặp khoá của RSA, ta có:
ed = 1 mod (p – 1) (q – 1)
Hơn nữa, N = pq nên (N) = (p – 1) (q – 1) với p, q là các số nguyên tố.
Như vậy:
ed – 1 = k (N) với một số nguyên k nào đó.
Và:
Cd mod N
= Med mod N
= M(ed – 1) + 1 mod N
= M . Med – 1 mod N
= M . M k(N) mod N
= M . 1k mod N
= M.
Ví dụ: Cặp số nguyên tố p = 11 và q = 3 được chọn để tạo ra cặp khoá RSA cho user A.
Khi đó, N = pq = 3*11 = 33
(p-1) (q-1) = (11 – 1) (3 – 1) = 20
Tiếp theo, chọn e = 3 thoả điều kiện 3 và 20 là cặp số nguyên tố cùng nhau.
Với e = 3, ta xác định được d = 7 vì ed = 3*7 = 1 mod 20. Thật ra, có nhiều giá trị d thỏa
mãn yêu cầu này, nhưng để cho đơn giản, ta chọn giá trị nhỏ nhất.
Khi đó, ta xác định được cặp khóa như sau:
Khóa công khai: (N, e) = (33, 3)
Khóa bí mật: (N, d) = (33, 7)
Giả sử, user B muốn gởi đọan thông tin M = 15 cho user A, dựa trên khóa công khai của
A, B thực hiện như sau:
C = Me mod N = 153 mod 33 = 3375 mod 33 = 9 mod 33.
67
Khi đó, thông tin mật gởi cho A là C = 9.
Khi nhận được thông tin này, A giải mã bằng khóa riêng của mình (d = 7) như sau:
M = Cd mob N = 97 mod 33 = 4.782.969 mod 33 = 15 mod 33.
Như vậy, thông tin giải mã được là M = 15, đúng với thông tin gốc ban đầu.
Tóm lại, thuật toán mật mã RSA được thực hiện gồm 3 quá trình tách rời: tạo khoá, mã
hoá và giải mã được tóm tắt như sau:
1-Tạo khoá:
Chọn p, q
(p và q là số nguyên tố, p q)
Tính N = p.q
Tính (N) = (p – 1) (q – 1)
Chọn e sao ước số chung lớn nhất của e và (N) là 1
Chọn d sao cho e.d mod (N) = 1
Cặp khoá RSA được tạo ra là PU = (N, e), PR = (N, d)
2- Mã hoá:
C = Me mod N
(M là số nguyên nhỏ hơn N)
3- Giải mã:
M = Cd mod N
Trong thực tế, để đạt được độ an tòan cao, cặp khóa phải được chọn trên các số p và q đủ
lớn (N nhỏ nhất phải là 1024 bit), do vậy, vấn đề thực thi RSA bao gồm các phép tóan lũy thừa
trên các số rất lớn. Vấn đề giảm chi phí tính tóan và tăng tốc độ thực hiện thuật tóan RSA là một
trong những vấn đề quan trọng cần phải giải quyết. Trên các hệ thống máy tính hiện nay, hiệu suất
thực hiện giải thuật RSA là chấp nhận được.
-Độ an toàn của RSA:
Theo lý thuyết, hệ thống RSA có thể bị tấn công bằng những phương thức sau đây:
Brute-force attack: tìm lần lượt khoá riêng PR
Mathematical attack: xác định p và q bằng cách phân tích N thành tích của các
thừa số nguyên tố rồi từ đó xác định e và d.
Timing attack: dựa trên thời gian thực thi của thuật toán giải mã.
Chosen ciphertext attack: sử dụng các đọan thông tin mật (ciphertext) đặc biệt để
khôi phục thông tin gốc.
Tuy nhiên trong thực tế, nguy cơ tấn công các hệ thống mật mã RSA là rất thấp, do RSA
là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài khoá dễ dàng được thay đổi
mà không ảnh hưởng đến thuật toán mã.
II.3.3 Thuật toán trao đổi khoá Diffie-Hellman:
Diffie-Hellman là một thuật toán dùng để trao đổi khóa (key exchange) chứ không dùng
để mật mã hóa (che giấu) dữ liệu. Tuy nhiên, Deffie-Hellman lại có ích trong giai đọan trao đổi
khóa bí mật của các thuật toán mật mã đối xứng. Như trong phần đầu của chương này đã trình
68
bày, một trong những vấn đề quan trọng liên quan trực tiếp đến tính an toàn của các thuật toán
mật mã đối xứng là vấn đề thống nhất khoá bí mật giữa các thực thể thông tin.
Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (discrete log). Cho
trước một số g và x = gk , để tìm k, ta đơn giản thực hiện phép logarit: k = logg(x). Tuy nhiên, nếu
cho trước g, p và (gk mod p), thì quá trình xác định k được thực hiện theo cách khác với cách ở
trên và được gọi là logarit rời rạc. Việc tính logarit rời rạc nói chung rất phức tạp nhưng vẫn có
thể thực hiện được.
Thuật tóan Diffie-Hellman khá đơn giản như sau:
User A
User B
Chọn số bí mật Xa < p
Chọn số bí mật Xb < p
Tính Ya = (gXa mod p)
và gởi cho B
Tính Yb = (gXb mod p)
và gởi cho A
Tính K = (Yb)Xa mod p
Tính K = (Ya)Xb mod p
Hình 2.23: Thuật toán trao đổi khoá Diffie-Hellman
-Gọi p là một số nguyên tố và g là một cơ số sinh (generator) thoả điều kiện với mọi x
{1, 2, …, p-1}, ta luôn tìm được số n sao cho x = gn mod p.
-Giá trị p và g được phổ biến công khai giữa các thực thể trao đổi khoá. Sau đó user A tạo
ra một số bí mật Xa < p, tính giá trị Ya = (gXa mod p) và gởi cho B. Tương tự, user B cũng tạo ra
một số bí mật Xb < p, tính giá trị Yb = (gb mod p) và gởi lại cho A.
-Dựa trên thông tin nhận được từ A, user B xác định được khoá bí mật dùng cho phiên
làm việc bằng cách tính giá trị (gXa mod p)Xb = (gXaXb mod p). Bằng cách tương tự, user A cũng
xác định được khoá bí mật này bằng cách tính giá trị (gXb mod p)Xa = (gXaXb mod p).
-Giả sử trong quá trình trao đổi các giá trị (gXa mod p) và (gXb mod p), một người thứ 3
nào nó bắt được thông tin này thì cũng rất khó xác định được a và b vì độ phức tạp của phép tóan
logarit rời rạc là rất cao.
Ví dụ:
Cho p = 353 và g = 3. Có thể kiểm chứng được rằng với một số nguyên n bất kỳ sao cho 0
< n < 353, ta luôn xác định được một số nguyên i thoả 3i = n.
Giả sử, user A chọn giá trị bí mật Xa = 97 và user B chọn giá trị bí mật Xb = 233.
User A tính được Ya = (397 mod 353) = 40 và gởi cho B.
User B tính được Yb = (3233 mod 353) = 248 và gởi cho A.
User A tính được khoá bí mật K = (Yb)Xa mod 353 = 24897 mod 353 = 160
User B tính được khoá bí mật K = (Ya)Xb mod 353 = 4097 mod 353 = 160
-Mức độ an toàn của thuật toán trao đổi khoá Diffie-Hellman:
Tính an toàn của Diffie-Hellman dựa trên độ phức tạp của phép toán logarit rời rạc. Nói
chung, việc xác định các giá trị Xa, Xb từ các giá trị p, g, Ya và Yb là không thể thực hiện được
69
trên các số nguyên đủ lớn. Tuy nhiên, thuật toán này không ngăn chặn được các tấn công theo
phương thức xen giữa Man-In-The-Middle (MITM) như sau:
Để thực hiện tấn công MITM trên kết nối giữa user A và user B, user C cũng chọn
cho mình hai số nguyên XC1 và XC2 thoả điều kiện XC1 < p và XC2 < p, sau đó
cũng tính hai giá trị tương ứng YC1 = (gXc1 mod p) và YC2 = (gXc2 mod p).
Khi user A gởi Ya cho user B, user C sẽ chặn lấy thông tin này, đồng thời mạo
danh A để gởi cho B giá trị YC1. User B xác định khoá K1 dựa trên YC1, và gởi lại
cho A giá trị Yb. User C lại chặn lấy giá trị này và mạo danh B để gởi cho A giá trị
YC2.
User A xác định khoá K2 dựa trên YC2. Bắt đầu từ đây, các thông tin trao đổi giữa
A và B đều được C chặn bắt và thay đổi bằng cách sử dụng cặp khoá K1 và K2.
Thuật toán Diffie-Hellman không giải quyết được vấn đề này do không có cơ chế xác thực
giữa các thực thể trao đổi khoá. Điểm yếu này được khắc phục bằng cách sử dụng kết hợp với các
thuật toán xác thực như sẽ trình bày ở phần kế tiếp.
Ngoài hai thuật toán RSA và Diffie-Hellman, một số thuật toán khác cũng được phát triển
dựa trên nguyên lý sử dụng một cặp khoá công khai và bí mật. Elliptic-Curve Cryptography
(ECC) là một giải thuật mới đang được thử nghiệm và hứa hẹn nhiều ưu điểm so với RSA như độ
phức tạp tính toán giảm trong khi tính an tòan vẫn được đảm bảo. ECC thích hợp với các ứng
dụng chạy trên các thiết bị có năng lực xử lý hạn chế chẳn hạn như các thiết bị nhúng (embded
devices).
II.3.4 Đánh giá kỹ thuật mật mã bất đối xứng:
Kỹ thuật mật mã bất đối xứng hòan tòan có thể đáp ứng được những yêu cầu về bảo mật
hệ thống như trong kỹ thuật mật mã đối xứng, mặc dù tốc độ thực thi của mã bất đối xứng thường
thấp hơn do bản chất thuật toán dựa trên các thao tác số học chứ không dựa trên các thao tác xử lý
bit. Hơn nữa, mã bất đối xứng chỉ phù hợp với việc thực thi bằng phần mềm. Mật mã bất đối xứng
đảm bảo được 2 yêu cầu cơ bản của thông tin là tính bí mật và tính toàn vẹn.
Kỹ thuật mật mã bất đối xứng có 2 ưu điểm so với mã đối xứng:
1-Hai thực thể thông tin không cần thực hiện thủ tục trao đổi khóa trước khi bắt đầu làm
việc.
2-Bên cạnh công dụng đảm bảo tính tòan vẹn của dữ liệu, mật mã bất đối xứng (khi được
sử dụng cho mục đích xác thực) còn đảm bảo được tính không thể phủ nhận (non-repudiation) của
thông tin.
II.4 CÁC HÀM BĂM
II.4.1 Xác thực thông tin:
Xác thực thông tin (message authentication) là một cơ chế được ứng dụng trong xử lý
thông tin với mục đích:
Đảm bảo nội dung thông tin trao đổi giữa các thực thể là chính xác, không bị
thêm, sửa, xóa hay phát lại (đảm bảo tính tòan vẹn về nội dung).
Đảm bảo đối tượng tạo ra thông tin (nguồn gốc thông tin) đúng là đối tượng hợp lệ
đã được khai báo (đảm bảo tính tòan vẹn về nguồn gốc thông tin).
Để thực hiện xác thực thông tin, về nguyên tắc có 3 phương pháp sau đây:
70
1-Dùng các thuật tóan mật mã (đối xứng và bất đối xứng) để xác thực thông tin. Nguyên
tắc của mật mã là chỉ có những đối tượng hợp lệ mới khôi phục được thông tin gốc từ thông tin
mật. Ta có thể sử dụng nguyên tắc này để xác thực thông tin như sau (hình 2.24):
Nơi gởi thông tin
Nơi nhận thông tin
C
a- Dùng mật mã đối xứng
C
b- Dùng mật mã bất đối xứng
M: thông tin gốc
C: Thông tin mật
PRa: Khóa bí mật của bên gởi.
E: thuật tóan mật mã
D: Thuật tóan giải mã
K: Khóa bí mật dùng chung giữa bên gởi và bên nhận
PUa: Khóa công khai của bên gởi
Hình 2.24: Xác thực thông tin dùng mật mã
Trường hợp thứ nhất: dùng mật mã đối xứng. Theo quy ước, chỉ có nơi gởi thông tin và
nơi nhận thông tin hợp lệ mới có khóa bí mật K, do đó chỉ có thực thể gởi thông tin hợp lệ mới có
khả năng tạo ra khối thông tin mật hợp lệ từ khối thông tin gốc M. Tương tự, chỉ có thực thể nhận
thông tin hợp lệ mới có khả năng giải mã được thông tin mật để khôi phục đúng thông tin gốc M.
Tất cả các cố gắng khác đều cho ra kết quả sai.
Trường hợp thứ hai: dùng mật mã bất đối xứng. Thực thể gởi thông tin thực hiện mã hóa
dùng khóa bí mật (PR) thay vì dùng khóa công khai. Khối thông tin mật tạo ra có thể được giải
mã bởi bất kỳ đối tượng nào biết khóa công khai của thực thể gởi. Tuy nhiên, nếu quá trình giải
mã thành công, đối tượng nhận thông tin có thể chắc chắn rằng thông tin nhận được là đúng và
chính đối tượng gởi hợp lệ đã gởi thông tin này, bởi vì chỉ có đối tượng đó mới có khóa riêng PR.
Phương pháp xác thực dùng mật mã dựa hòan tòan vào độ tin cậy của khóa bí mật.
2-Dùng mã xác thực MAC (Message Authentication Code). Mã xác thực MAC được sinh
ra từ tổ hợp gồm một khối thông tin gốc có độ dài bất kỳ và một khóa bí mật. Kích thước của
MAC là cố định, không phụ thuộc vào kích thước của khối dữ liệu gốc và thường nhỏ hơn dữ liệu
gốc. Đối tượng gởi sẽ gởi kèm giá trị MAC đi cùng với thông tin gốc. Phía nhận sau khi nhận
71
được thông tin gốc cùng với giá trị MAC gởi kèm sẽ thực hiện thao tác tạo ra giá trị MAC mới từ
thông tin gốc cùng với khóa bí mật đã thống nhất giữa hai bên. Nếu giá trị MAC vừa tạo ra giống
với giá trị MAC nhận được từ phía gởi, phía nhận có thể chắc chắn rằng thông tin gốc không bị
thay đổi trong quá trình truyền (hình 2.25).
Nơi gởi thông tin
Nơi nhận thông tin
So sánh
Mã xác thực (MAC)
M: thông tin gốc
C: Hàm tạo mã xác thực
K: Khóa bí mật dùng chung giữa bên gởi và bên nhận
| |: Nối mã xác thực vào thông tin gốc
Hình 2.25: Xác thực thông tin dùng MAC
Việc dùng MAC để xác thực thông tin dựa vào hai cơ sở:
Ứng với một khối thông tin gốc M và một khóa bí mật K, hàm C chỉ tạo ra duy
nhất một mã xác thực MAC.
Chỉ có phía gởi và phía nhận hợp lệ mới được biết khóa K.
Có hai kỹ thuật tạo ra mã xác thực MAC: kỹ thuật thứ nhất dùng cơ chế mật mã khối
(Cipher Block Chaining) và được gọi là CMAC hay CBC-MAC. Kỹ thuật thứ hai dựa trên các
hàm băm bảo mật và được gọi là HMAC.
Mã xác thực MAC được ứng dụng trong các trường hợp thông tin chỉ yêu cầu đảm bảo
tính xác thực mà không cần đảm bảo tính bí mật.
3-Dùng các hàm băm bảo mật (secure hash function). Giống như mã xác thực MAC, hàm
băm cũng tạo ra một khối thông tin ngắn có độ dài xác định gọi là mã băm (hash code) từ một
khối thông tin gốc có độ dài bất kỳ. Tuy nhiên, khác với MAC, hàm băm chỉ dựa vào thông tin
gốc để tạo ra mã băm mà không dùng thêm bất kỳ khóa bí mật nào. Do vậy, để có thể sử dụng như
một cơ chế xác thực thông tin, hàm băm phải được dùng kèm với một thuật tóan mật mã nào đó
(đối xứng hoặc bất đối xứng).
Hình 2.26 trình bày một ứng dụng điển hình của hàm băm trong xác thực thông tin. Theo
cơ chế này, mã băm sau khi được tạo ra sẽ được mã hóa bằng một thuật tóan mật mã đối xứng với
khóa bí mật K chỉ có bên gởi và bên nhận biết. Đọan mã băm đã được mật mã hóa được gởi đi
kèm với thông tin gốc và quá trình kiểm tra ở phía nhận cũng được tiến hành theo trình tự ngược
lại, tức là giải mã đọan mã băm bằng khóa bí mật, sau đó tạo ra mã băm mới từ thông tin gốc và
so sánh hai đọan mã băm.
72
Có nhiều cách áp dụng các thuậ tóan mật mã vào hàm băm để xác thực thông tin: dùng mã
đối xứng hoặc bất đối xứng, chỉ mã hóa mã băm hoặc mã hóa cả thông tin gốc và mã băm, thậm
chí có thể tổ hợp nhiều cách trên lại với nhau.
Nơi gởi thông tin
Nơi nhận thông tin
So sánh
Mã băm đã được mã hóa
M: thông tin gốc
H: hàm băm
E: thuật tóan mã hóa
D: thuật tóan giải mã
K: khóa bí mật dùng chung giữa phía gởi và phía nhận.
| |: nối mã băm đã được mã hóa vào thông tin gốc
Hình 2.26: Xác thực thông tin dùng hàm băm
Ngòai ứng dụng xác thực thông tin, hàm băm còn được dùng trong nhiều ứng dụng khác.
Phần tiếp theo trình bày chi tiết hơn về các hàm băm bảo mật.
II.4.2 Các hàm băm bảo mật:
Các hàm băm bảo mật (secure hash functions) hay gọi tắt là hàm băm là một trong những
kỹ thuật cơ bản để thực hiện các cơ chế xác thực thông tin (message authentication). Ngoài ra,
hàm băm cũng còn được sử dụng trong nhiều thuật toán mật mã, trong chữ ký số (digital
signature) và nhiều ứng dụng khác.
Nguyên tắc của hàm băm là biến đổi khối thông tin gốc có độ dài bất kỳ thành một đoạn
thông tin ngắn hơn có độ dài cố định gọi là mã băm (hash code hay message digest). Mã băm
được dùng để kiểm tra tính chính xác của thông tin nhận được. Thông thường, mã băm được gởi
kèm với thông tin gốc. Ở phía nhận, hàm băm lại được áp dụng đối với thông tin gốc để tìm ra mã
băm mới, giá trị này được so sánh với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống
nhau, nghĩa là thông tin gởi đi không bị thay đổi.
Chỉ có thể dùng hàm băm để tính mã băm từ thông tin gốc chứ không thể tính được thông
tin gốc từ mã băm. Do đặc tính này, các hàm băm bảo mật cũng còn được gọi là hàm băm một
chiều (one way hash fntion).
Hình 2.27 mô tả nguyên lý hoạt động của một giải thuật xác thực thông tin sử dụng hàm
băm đơn giản.
Các yêu cầu của một hàm băm bảo mật H:
H có thể được áp dụng cho khối thông tin với chiều dài bất kỳ.
Kết quả của hàm H luôn có chiều dài cố định.
Việc tính giá trị của H(x) với một giá trị x cho trước phải đơn giản, có thể thực
hiện được bằng cả phần cứng hoặc phần mềm.
73
Cho trước khối thông tin x, không thể tìm được một khối thông tin y khác x sao
cho H(y) = H(x). Thuộc tính này được gọi là weak collision resistance.
Không thể tìm được hai khối thông tin x và y khác nhau sao cho H(x) = H(y).
Thuộc tính này được gọi là strong collision resistance.
Thông tin gốc
Thông tin gốc
Cho trước một giá trị h, không thể tìm được một giá trị x sao cho H(x) = h, đây
được gọi là thuộc tính một chiều của hàm băm (one-way property).
Thông tin gốc
H
So sánh
H
: Mã băm
H
: Hàm băm
Hình 2.27: Một ứng dụng điển hình của hàm băm
-Tấn công trên các hàm băm: Nguyên lý làm việc của hàm băm là biểu diễn một khối
thông tin có kích thước lớn bởi một đoạn thông tin có kích thước nhỏ hơn nhiều gọi là mã băm, và
trong trường hợp lý tưởng nhất thì các biểu diễn này là các ánh xạ 1:1, tức sẽ không xảy ra tình
huống 2 khối thông tin khác nhau cùng cho ra một mã băm. Trường hợp có 2 khối thông tin khác
nhau cùng cho ra một mã băm, ta nói thuật tóan băm bị đụng độ (collision). Mục tiêu tấn công vào
một hàm băm bảo mật là tạo ra các tình huống đụng độ này.
Xác suất để hai khối thông tin có cùng mã băm phụ thuộc vào kích thước của mã băm, tức
phụ thuộc vào số lượng mã băm có thể có. Kích thước này càng nhỏ thì khả năng xảy ra càng lớn,
và do đó xác suất tấn công thành công càng lớn. Bài toán ngày sinh (Birthday problem)(*) chỉ ra
rằng: với kích thước mã băm là n bit, để xác suất xảy ra đụng độ là 50% thì cần có khoảng 2n/2
khối thông tin được xử lý. Người ta thường dùng nguyên lý này để tấn công vào các ứng dụng có
sử dụng hàm băm, các tấn công này được gọi là Birthday attack.
Nói chung, độ an toàn của một hàm băm phụ thuộc vào kích thước ngõ ra của nó.
Phần sau đây sẽ giới thiệu một số thuật toán băm thông dụng thường được sử dụng trong
xác thực thông tin.
II.4.3 Thuật toán băm SHA:
Bài toán ngày sinh: trong một căn phòng có n người, n tối thiểu phải bằng bao nhiêu để có ít nhất 2 người có
cùng ngày sinh (trong năm). Lý thuyết xác suất xác định n = 23. Bài toán này được mở rộng cho hàm băm.
(*)
74
SHA (Secure Hash Function) được chuẩn hoá năm 1993, sau đó được chỉnh sửa năm 1995
và đặt tên là SHA-1, từ đó phiên bản cũ được gọi là SHA-0.
SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit. Về sau, có nhiều nâng cấp đối với
SHA, chủ yếu là tăng chiều dài mã băm, từ đó xuất hiện các phiên bản khác nhau của SHA, bao
gồm: SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 385 bit) và SHA-512 (mã băm dài
512 bit).
Bảng 2.2 tóm tắt các thông số của các phiên bản SHA.
Bảng 2.2: Các phiên bản SHA
Thông số
Kích thước mã băm (bit)
SHA-1
SHA-256
SHA-384
SHA-512
160
256
384
512
Kích thước thông tin gốc (bit)
<2
Kích thước khối (bit)
512
512
1024
1024
Độ dài từ (bit)
32
32
64
64
Số bước thực hiện (bước)
80
64
80
80
64
64
<2
<2
128
<2128
Phần này chỉ mô tả thuật toán băm SHA-1, các phiên bản khác của SHA cũng được thiết
kế theo nguyên lý tương tự.
SHA-1 chấp nhận các khối thông tin có kích thước tối đa là 264 bit để tạo ra mã băm với
độ dài cố định 160 bit. Tòan bộ khối thông tin được xử lý theo từng khối 512 bit, qua 5 công
đoạn như sau:
1- Gắn bit đệm – Append padding bit: thông tin gốc được gắn thêm các bit thừa để có
chiều dài (448 modulo 512) bit, tức là tất cả các khối trước có chiều dài bằng nhau là 512 bit,
riêng khối cuối cùng là 448 bit. Chú ý rằng việc chèn thêm bit vào khối thông tin được thực hiện
đối với tất cả các khối thông tin gốc, kể cả khi khối thông tin gốc có số bit chính xác bằng 448
mod 512 (khi đó chuỗi bit chèn vào sẽ có chiều dài là 512 bit).
2- Gắn chiều dài – Append length: một chuỗi 64 bit được gắn thêm vào khối thông tin.
64 bit này được xử lý như một số nguyên không dấu, cho biết chiều dài của khối thông tin gốc
(tức chiều dài thật sự khi chưa thực hiện công đoạn 1).
Sau công đoạn này, khối thông tin nhận được có chiều dài là bội số của 512 bit, được chia
thành các nhóm, mỗi nhóm tương đương với 16 thanh ghi 32 bit (16*32 = 512 bit).
3- Khởi tạo bộ đệm MD – Initialize MD buffer: bộ đệm MD (message digest) là bộ nhớ
có dung lượng 160 bit dùng để chứa các kết quả trung gian và kết quả cuối cùng của mã băm. Bộ
nhớ này được tổ chức thành 5 thanh ghi 32 bit và được khởi tạo các giá trị ban đầu như sau (Hex):
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
75
4- Xử lý thông tin theo từng khối 512 bit – Process message: đây là công đọan trung tâm
quả hàm băm, còn được gọi là hàm nén (compress function), bao gồm 4 vòng, mỗi vòng 20 bước.
Hình 2.28 trình trình bày sơ đồ khối của bước 4.
Cả 4 vòng có cấu trúc tương tự nhau, nhưng mỗi vòng sử dụng một hàm luận lý khác nhau
là f1, f2, f3 và f4.
Ngõ vào của mỗi vòng là khối bit Y (512 bit) đang xử lý cùng với giá trị của bộ đệm MD.
Mỗi vòng sử dụng một biến cộng Kt khác nhau, với 0 t 79 biểu diễn cho 80 bước của 4 vòng.
Tuy nhiên, thực tế chỉ có 4 giá trị K khác nhau như sau:
Yq
CVq
160
512
32
A
B
C
D
E
f1, K, W[0…19]
20 vòng
A
B
C
D
E
f2, K, W[20…39]
20 vòng
A
B
C
D
E
f3, K, W[40…59]
20 vòng
A
B
C
D
E
f4, K, W[60…79]
20 vòng
160
CVq+1
Hình 2.28: Xử lý thông tin trong SHA-1
Bước
Giá trị K (Hexa)
20 t 39
Kt = 5A827999
0 t 19
Kt = 6ED9EBA11
76
40 t 59
60 t 79
Kt = 8F1BBCDC
Kt = CA62C1D6
Ngõ ra của vòng thứ tư (tức bước 80) được cộng với ngõ vào của vòng đầu tiên để tạo ra
CVq+1. Thao tác cộng được thực hiện một cách độc lập, ứng với từng thanh ghi trong bộ đệm MD
với một từ tương ứng trong CVq, sử dụng phép cộng modulo 232.
5- Xuất kết quả - Output: Sau khi tất cả các khối 512 bit đã được xử lý, ngõ ra của bước
cuối cùng chính là giá trị của mã băm.
Một thuộc tính quan trọng của giải thuật băm SHA-1 là mỗi bit trong mã băm đều có quan
hệ với tất cả các bit trong thông tin gốc. Việc lặp lại các hàm f một cách phức tạp như vậy nhằm
mục đích đảm bảo rằng dữ liệu đã được trộn một cách kỹ lưỡng và do đó rất khó tìm được 2 khối
thông tin gốc khác nhau có thể tạo ra cùng một mã băm.
II.4.4 Thuật toán băm MD5:
MD5 là một giải thuật xác thực thông tin được sử dụng phổ biến trong thời gian qua trong
cộng đồng Internet, đặc biệt dùng để kiểm tra tính chính xác của các phần mềm mã nguồn mở
phát hành trên mạng. Giải thuật này được xây dựng bởi Ron Rivest, và được chuẩn hóa bằng RFC
1321. MD5 có thể xử lý các khối thông tin có độ dài không giới hạn để tạo ra mã băm dài 128 bit.
Thông tin gốc cũng được xử lý theo từng đọan 512 bit. Bảng 2.3 so sánh các thông số giữa SHA-1
và MD5.
Bảng 2.3: So sánh MD5 và SHA-1
Thông số so sánh
MD5
SHA-1
Kích thước mã băm (bit)
128
160
Kích thước khối (bit)
512
512
Số bước
64
80
Không giới hạn
< 264
4
4
Kích thước thông tin gốc (bit)
Số lượng hàm luận lý
Với 128 bit mã băm, việc tìm ra hai khối thông tin để có cùng một giá mã băm không còn
là điều bất khả thi đối với năng lực của các bộ xử lý hiện nay. Do đó, độ an tòan của MD5 đang bị
đe dọa nghiêm trọng, và trong thời gian ngắn sắp tới, mức độ phổ biến của MD5 có thể sẽ giảm
đi và được thay thế bằng một giải thuật xác thực khác.
II.5 CHỮ KÝ SỐ
II.5.1 Nguyên lý hoạt động của chữ ký số:
Chữ ký số là một cơ chế xác thực cho phép người tạo ra thông tin (message creator) gắn
thêm một đọan mã đặc biệt vào thông tin có tác dụng như một chữ ký. Chữ ký được tạo ra bằng
cách áp dụng một hàm băm lên thông gốc, sau đó mã hóa thông tin gốc dùng khóa riêng của
người gởi. Chữ ký số có mục đích đảm bảo tính tòan vẹn về nguồn gốc và nội dung của thông tin.
Tại sao phải dùng chữ ký số trong khi các cơ chế xác thực thông tin (message
authentication) đã thực hiện chức năng xác thực nguồn gốc thông tin? Các cơ chế xác thực thông
tin sử dụng các hàm băm một chiều có tác dụng bảo vệ thông tin trao đổi giữa hai thực thể thông
77
tin khỏi sự xâm phạm của một thực thể thứ 3, tuy nhiên nó không có tác dụng ngăn chặn được sự
xâm phạm của chính hai thực thể. Ví dụ:
Thực thể A gởi một bản tin X cho thực thể B sử dụng một cơ chế xác thực nào đó, cơ chế
này đảm bảo chỉ có A và B dùng chung một khoá bí mật K để tạo ra các mã xác thực từ thông tin
gốc. Tuy nhiên, thực thể B có thể đổi bản tin X thành một bản tin Y, và với khóa bí mật K, thực
thể B hòan tòan có thể tạo ra thông tin xác thực mới để gắn vào Y, làm cho nó trở thành một bản
tin hợp lệ mặc dù thực chất đây không phải là bản tin do thực thể A tạo ra.
Một ví dụ khác, thực thể A có thể từ chối xác nhận việc mình đã gởi bản tin X cho thực
thể B, vì với các cơ chế xác thực như trên, thực thể B hoàn toàn có khả năng giả mạo thông tin
đưa ra từ thực thể A.
Giống như một chữ ký thông thường (chữ ký bằng tay), một chữ ký số phải có đầy đủ các
thuộc tính sau đây:
Phải xác nhận chính xác người ký và ngày giờ phát sinh chữ ký.
Phải xác thực nội dung thông tin ngay tại thời điểm phát sinh chữ ký.
Phải có khả năng cho phép kiểm chứng bởi một người thứ 3 để giải quyết các
tranh chấp nếu có.
Như vậy, chức năng của chữ ký số bao gồm chức năng của xác thực thông tin.
Các yêu cầu đối với chữ ký số:
Là một chuỗi bit phát sinh từ khối thông tin cần được xác nhận (thông tin gốc).
Chữ ký phải chứa thông tin nhận dạng riêng của người ký để tránh giả mạo và
tránh phủ nhận.
Quy trình tạo ra chữ ký cũng như xác minh chữ ký phải đơn giản, nhanh chóng
Chữ ký thông thể bị giả mạo bằng bất cứ cách nào.
Có thể sao chép một bản sao của chữ ký dành cho mục đích lưu trữ.
-Phân loại chữ ký số: Có nhiều thuật toán phát sinh chữ ký số khác nhau. Có thể phân
loại các thuật toán này theo các cách như sau:
Chữ ký cố định và chữ ký ngẫu nhiên: thuật toán tạo chữ ký cố định
(deterministic) tạo ra một chữ ký duy nhất ứng với một khối thông tin gốc xác
định, nghĩa là nếu thực hiện nhiều lần thuật toán tạo chữ ký trên một bản tin thì
vẫn cho ra một kết quả duy nhất. Ngược lại, chữ ký ngẫu nhiên (probabilistic) tạo
ra những chữ ký khác nhau đối với cùng một bản tin.
Chữ ký phục hồi được và chữ ký không phục hồi được: cơ chế tạo chữ ký phục hồi
được (reversible signature) cho phép người nhận phục hồi lại thông tin gốc từ chữ
ký, điều này cũng có nghĩa là chữ ký phải có chứa thông tin gốc trong nó dưới một
dạng mã hoá nào đó, và kết quả là chữ ký số sẽ có kích thước lớn hơn thông tin
gốc. Khi đó, người gởi chỉ cần gởi đi chữ ký là đủ. Do vậy, cơ chế tạo chữ ký này
cũng còn được gọi là chữ ký khôi phục bản tin (signature with message recovery).
Ngược lại, cơ chế tạo chữ ký không phục hồi được (non-reversible signature)
không cho phép phục hồi thông tin gốc từ chữ ký, do vậy, chữ ký chỉ là một khối
thông tin cộng thêm có kích thước nhỏ hơn thông tin gốc. Người gởi cần phải gởi
chữ ký đi kèm với thông tin gốc như một dạng phụ lục, do đó cơ chế tạo chữ ký
này cũng còn được gọi là chữ ký với phụ lục (signature with appendix).
78
-Các phương pháp thực hiện chữ ký số: Có hai phương pháp thực hiện chữ ký số là ký
trực tiếp (direct signature) và ký thông qua trọng tài (arbitrated signature).
Ký trực tiếp (direct signature): Ở phương pháp này, giả thiết rằng phía nhận biết
được khóa công khai của phía gởi. Do đó, chữ ký có thể được tạo ra bằng cách mã
hóa tòan bộ bản tin bằng khóa riêng của người tạo ra thông tin, hoặc là chỉ mã hóa
phần mã băm (kết quả tạo ta từ hàm băm đối với thông tin gốc) dùng khóa riêng
của người tạo thông tin.
Phía tạo ra thông tin
Phía nhận thông tin
E(M, PRa)
a- Tạo chữ ký trực tiếp bằng cách mã hóa tòan bộ thông tin gốc
Phía tạo ra thông tin
Phía nhận thông tin
So sánh
E(H(M), PRa)
b- Tạo chữ ký trực tiếp bằng cách mã hóa phần mã băm của thông tin gốc
M: thông tin gốc
H: Hàm băm
PRa: Khóa bí mật của người ký
E: Thuật tóan mã hóa
D: Thuật tóan giải mã
| |: Nối mã băm vào thông tin gốc
PUa: Khóa công khai của người ký
Hình 2.29: Chữ ký trực tiếp
Để đạt được tính bảo mật của thông tin thì thông tin gốc cùng với chữ ký vừa được tạo ra
sẽ được mã hóa sử dụng khóa công khai của thực thể nhận chữ ký (trong trường hợp dùng mật mã
bất đối xứng) hoặc dùng khóa bí mật (trong trường hợp dùng mật mã đối xứng).
Một nhược điểm rất dễ thấy của phương thức ký trực tiếp đó là độ an tòan của chữ ký phụ
thuộc cao độ vào khóa riêng của người tạo ra chữ ký. Do vậy, nếu khóa riêng này bị mất hoặc bị
tiết lộ thì ý nghĩa của chữ ký số sẽ không còn.
79
Ký thông qua trọng tài (arbitrated signature): đây là một giải pháp được xây dựng
để khắc phục nhược điểm của chữ ký trực tiếp. Khi thực thể A muốn gởi một bản
tin cho thực thể B, quá trình tạo ra một chữ ký được thực hiện bình thường như
đối với chữ ký trực tiếp. Tuy nhiên, trước khi bản tin này được gởi đến B, nó phải
được gởi đến một thực thể thứ 3 gọi là trọng tài (arbiter). Trọng tài thực hiện việc
kiểm tra, xác nhận tính chính xác của thông tin và chữ ký, sau đó ghi lại ngày giờ
rồi mới gởi cho thực thể B, kèm theo thông tin xác nhận của trọng tài. Sự xuất
hiện của trọng tài trong quy trình đảm bảo được thực thể A sẽ không phủ nhận
được thông tin mình đã gởi.
Nếu gọi X là thực thể tạo ra thông tin, Y là thực thể nhận thông tin, A là trọng tài, H là
hàm băm bảo mật và E là thuật toán mật mã, quá trình tạo chữ ký thông qua trọng tài được thực
hiện như sau:
-Trường hợp thứ nhất: sử dụng kỹ thuật mật mã đối xứng và trọng tài có thể đọc nội dung
thông tin mà X gởi cho Y:
Bước 1:
Bước 2:
X A: M + E([IDX + H(M)], Kxa)
A Y: E([IDX + M + E([IDX + H(M)], Kxa) + T], Kay)
Với M là thông tin gốc mà X gởi cho Y, Kxa là khoá bí mật dùng chung giữa X và A, Kay là
khoá bí mật dùng chung giữa Y và A, IDX là thông tin nhận dạng của thực thể X và T là thời điểm
chữ ký được tạo ra.
-Trường hợp thứ 2: sử dụng kỹ thuật mật mã đối xứng và trọng tài không đọc được nội
dung thông tin X gởi cho Y:
Bước 1:
Bước 2:
X A: IDX + E(M, Kxy) + E([IDX + H(E(M, Kxy))], Kxa)
A Y: E([IDX + E(M, Kxy)], Kay) + E([IDX + H(E(M, Kxy)) + T], Kxa)
Với Kxy là khoá bí mật dùng chung giữa X và Y.
-Trường hợp thứ 3: sử dụng kỹ thuật mật mã bất đối xứng, trọng tài không đọc được nội
dung thông tin X gởi cho Y:
Bước 1:
Bước 2:
X A: IDX + E([IDX + E(E(M, PRx), PUy)], PRx)
A Y: E([IDX + E(E(M, PRx), PUy) + T], PRa)
Với PRx là khoá riêng của X, PUy là khoá công khai của Y, PRa là khoá riêng của A
II.5.2 Chuẩn chữ ký DSS:
DSS (Digital Signature Standard) là một chuẩn về chữ ký số, được chuẩn hóa năm 1991,
sửa đổi năm 1993 và 1996, sau đó mở rộng vào năm 2000. DSS sử dụng hàm băm SHA và thuật
toán tạo chữ ký DSA (Digital Signature Algorithm). DSS thuộc loại chữ ký ngẫu nhiên và không
phục hồi được.
Hình 2.30 so sánh cấu trúc DSS so với phương thức xác thực thông tin sử dụng mật mã
bất đối xứng RSA.
Trong thuật toán xác thực thông tin dùng mật mã RSA, thông tin gốc được đưa vào hàm
băm SHA để tạo ra mã băm (tức message digest) có kích thước cố định. Mã băm này sau đó được
mã hóa (bằng thuật toán RSA) dùng khóa riêng của thực thể tạo thông tin (phía gởi). Kết quả của
phép mã hóa được gắn vào thông tin gốc và gởi đi. Phía thu nhận được thông tin, tách phần mã
băm ra khỏi thông tin gốc và giải mã nó bằng khóa công khai của phía gởi. Chú ý rằng khóa công
80
khai là thông tin được công bố rộng rãi cho bất kỳ thực thể nào có quan tâm. Đồng thời, thông tin
gốc cũng được đưa vào hàm băm để tính mã băm, sau đó đem so sánh với mã băm vừa nhận được.
Nếu hai mã này giống nhau thì thông tin vừa nhận được chấp nhận như là thông tin hợp lệ.
Họat động của DSS cũng bao gồm việc đưa thông tin gốc vào hàm băm để tạo ra mã băm
có kích thước cố định. Tuy nhiên, mã băm này sẽ không được mã hóa trực tiếp bằng một giải
thuật mã hóa mà được sử dụng làm ngõ vào của một hàm tạo chữ ký S (Signature function). Các
thông tin đưa vào hàm tạo chữ ký bao gồm:
Mã băm của thông tin gốc
Một số ngẫu nhiên k
Khóa riêng của người ký (PRa)
Khóa công khai của nhóm các thực thể liên quan đến giao dịch chữ ký (PUG)
H
M
M
H
M
PRa
PUa
E
D
So sánh
a- Xác thực thông tin dùng mật mã RSA
H
M
M
M
s
s
r
r
PRa PUG
H
S
PUa
PUG
V
So sánh
k
a- Dùng chữ ký số DSS
Hình 2.30: Xác thực thông tin dùng mật mã RSA và dùng chữ ký số DSS
Kết quả của hàm sinh chữ ký gồm hai thành phần, đặt tên là r và s. Cả hai được gởi kèm
với thông tin gốc.
Ở phía nhận thu, thông tin gốc được tách riêng để đưa vào hàm băm. Sau đó, mã băm
được đưa vào hàm kiểm chứng V (Verification function) cùng với khóa công khai của nhóm
(PUG) và khóa công khai của phía gởi (PRA). Nếu kết quả của hàm kiểm chứng bằng với thành
phần r của chữ ký thì thông tin được xem là xác thực.
Hình 2.31 mô tả quá trình tạo chữ ký và kiểm chứng chữ ký dùng DSS.
Chú ý rằng thành phần r của chữ ký không phụ thuộc vào thông tin gốc mà chỉ phụ thuộc
vào số ngẫu nhiên k và 3 thành phần của khóa công khai của nhóm (PUG) là p, q và g. Do vậy, để
81
giảm chi phí tính tóan mỗi khi tạo ra chữ ký, người sử dụng có thể tạo ra giá trị r một lần, và dùng
giá trị đó cho nhiều chữ ký ứng với nhiều khối thông tin gốc khác nhau.
p
q
g
f2
y
r
M
x
k
q
q
g
H
q
f4
s’
v
r’
M
f1
f3
s
H
So sánh
a- Tạo chữ ký
b- Kiểm chứng chữ ký
Hình 2.31: Tạo và kiểm chứng chữ ký với DSS
-Thuật toán tạo chữ ký DSA (Digital Signature Algorithm):
DSA là thành phần trọng tâm của chữ ký số DSS, có chức năng tạo ra chữ ký từ các thông
tin như mã băm của thông tin gốc, khoá riêng của người ký, khoá công khai của nhóm và một số
ngẫu nhiên k. DSA được xây dựng dựa trên phép toán logarit rời rạc, được tóm tắt như sau:
-Tạo các thành phần khoá công khai (public key components):
p: một số nguyên tố thoả 2L-1 < p < 2L với 512 < L < 1024 và L là bội số của 64.
q: một số nguyên tố chia hết (p – 1) thỏa điều kiện 2159 < q < 2160 (q dài 160 bit)
g: một số nguyên có giá trị = (h(p -1)/q mod p), trong đó h là một số nguyên thoả
điều kiện 1 < h < p – 1 và (h(p-1)/q mod p) > 1
-Tạo khoá riêng của người dùng:
x: một số nguyên ngẫu nhiên lớn hơn 0 và nhỏ hơn q
-Tạo khoá công khai của người dùng:
y: là một số nguyên có giá trị = (gx mod p)
-Tạo số bí mật cho từng bản tin:
k: một số nguyên được chọn ngẫu nhiên lớn với 0 < k < q
-Tạo chữ ký:
r = (gk mod p) mod q
s = [k-1 (H(M) + xr)] mod q
-Kiểm chứng chữ ký:
82
w = (s’)-1 mod q
u1 = [H(M')w] mod q
u2 = (r')w mod q
v = [(gu1 yu2) mod p] mod q
Lưu ý: s’, r’, M’ tương ứng với các phần s, r và M tại phía thu.
Với độ phức tạp của phép tóan logarit rời rạc, rất khó có thể xác định được k khi biết r
hoặc xác định được x khi biết s.
II.6 QUẢN LÝ KHOÁ
II.6.1 Quản lý khoá công khai trong mật mã bất đối xứng:
Trong kỹ thuật mật mã bất đối xứng, khoá riêng của mỗi thực thể được chính thực thể đó
quản lý mà không cần phải chia sẻ cho ai, tuy nhiên cơ chế nào được dùng để phổ biến khóa công
khai một cách an toàn và hiệu quả?
Các cơ chế khác nhau có thể dùng để phổ biến khóa công khai bao gồm:
-Phổ biến công khai trên các diễn đàn công cộng: người sử dụng thực hiện việc này bằng
cách gởi các thông báo kèm theo khóa công khai của mình đến các website hoặc diễn đàn công
cộng trên mạng Internet. Phương pháp này đơn giản nhưng có nhược điểm là khóa dễ bị giả mạo.
Một người A có thể đưa khóa công khai của mình lên mạng nhưng thông báo rằng đó là khóa của
người B, bằng cách đó, A có thể đọc được những thông tin bí mật mà người khác gởi cho B.
-Sử dụng danh bạ khóa công khai (public key directory): với danh bạ này, những người
dùng nào muốn phổ biến khóa của mình thì phải đăng ký với nhà xuất bản, và để tránh việc giả
mạo, nhà xuất bản phải áp dụng một cơ chế kiểm duyệt an tòan nào đó đối với người đăng ký.
Phương pháp này an tòan hơn cách mà mỗi cá nhân tự phổ biết khóa của mình. Tuy nhiên,
nó cũng có khả năng bị giả mạo khi khóa bí mật của nhà xuất bản bị lộ, kẻ tấn công có thể thay
đổi các thông tin mà người sử dụng đã đăng ký lên đó.
-Chứng thực khóa công khai (public-key certificate): Phương pháp sử dụng danh bạ công
cộng có một điểm yếu khác đó là mọi người dùng muốn liên lạc với một người khác cần đến khoá
công khai thì phải liên lạc với nhà xuất bản để được cung cấp, điều này đặt nhà xuất bản vào trạng
thái có nguy cơ quá tải bất cứ lúc nào, hơn nữa đây chính là điểm thắt cổ chai của các giao dịch
trên mạng.
Khái niệm chứng thực khóa công khai (public key certificate hay gọi tắt là certificate hay
chứng thực khóa) là một cơ chế phổ biến khóa công khai trong đó mỗi thực thể tự phổ biến khóa
của mình bằng bất cứ phương tiện gì những vẫn đảm bảo được tính xác thực của khóa.
Chứng thực khóa công khai là một tổ hợp gồm có khóa công khai của một thực thể, nhận
dạng của thực thể đó và chữ ký số (digital signature) xác nhận của một thực thể thứ 3, thực thể
thứ 3 này là một tổ chức được tin tưởng trong cộng đồng (ví dụ như cơ quan nhà nước hoặc các
tổ chức tài chính). Các đặc trưng của cơ chế này bao gồm:
Mỗi thực thể đều có thể đọc các chứng thực khóa để biết được khóa công khai
cũng như nhận diện chủ sở hữu của khóa đó.
Mỗi thực thể đều có thể xác thực thông tin trong chứng thực khóa là chính xác nhờ
vào chữ ký của một thực thể được tin cậy thứ 3.
83
Chỉ có người chứng thực (Certificate Authority hay CA) mới có quyền tạo ra và
cập nhật các chứng thực khóa.
Quá trình tạo ra và phân phối chứng thực khóa diễn ra như sau (hình 2.32):
-Để tạo chứng thực khóa cho mình, thực thể A gởi yêu cầu đến cơ quan chứng thực CA
(Certificate Authority), trong yêu cầu có chứa khoá công khai của A (PUA). Để tránh các tình
huống giả mạo CA, yêu cầu cung cấp chứng thực gởi từ các thực thể đầu cuối phải được gởi đến
CA bằng một kênh bảo mật, trên đó có áp dụng các cơ chế xác thực chặt chẽ.
-CA tạo ra chứng thực khóa cho A bằng cách mã hoá khối thông tin bao gồm: nhận dạng
của thực thể A (IDA), khoá công khai của A (PUA) và thời điểm thực hiện việc cấp chứng thực,
bằng khoá riêng của CA (PRCA).
PUA
Kênh thông tin
bảo mật
PUB
CA = E([Time + IDA + PUA],PRCA)
CB = E([Time + IDB + PUB],PRCA)
Kênh thông tin
bảo mật
(1)CA
(2)CB
CA: Chứng thực khóa của thực thể A
CB: Chứng thực khóa của thực thể B
PUA: Khoá công khai của thực thể A
PUB: Khoá công khai của thực thể B
IDA: Thông tin nhận dạng của thực thể A
IDB: Thông tin nhận dạng của thực thể B
PRCA: Khoá riêng của CA
Time: Thời điểm tạo ra chứng thực khóa
Hình 2.32: Quản lý khoá công khai dùng chứng thực khóa (Certificate)
Như vậy, thực thể A đã tạo được chứng thực khóa cho mình (CA).
Tương tự như vậy, thực thể B cũng yêu cầu CA cung cấp chứng thực khóa cho nó (CB).
Để bắt đầu trao đổi thông tin với nhau sử dụng mật mã bất đối xứng, hai thực thể A và B
trao đổi chứng thực khóa cho nhau để thực thể này nhận được khoá công khai của thực thể kia.
Với việc nhờ một thực thể tin cậy thứ 3 làm trung gian để tạo ra chứng thực khóa, khoá
công khai có thể được phân phối một cách an toàn mà không bị giả mạo.
Một trong những cơ chế được sử dụng rộng rãi để tạo ra các chứng thực khóa công khai là
chuẩn X.509. Chuẩn này được dùng trong nhiều dịch vụ và giao thức bảo mật như IPSec, SSL,
S/MIME, SET, …
II.6.2 Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật:
84
Trong kỹ thuật mật mã đối xứng, cả hai thực thể thông tin phải dùng chung một khóa bí
mật. Vấn đề là làm thế nào để trao đổi khóa bí mật giữa hai thực thể này?
Thuật toán trao đổi khóa Diffie-Hellman được trình bày trong phần mã hóa bất đối xứng
là một thuật toán an tòan, cho phép hai thực thể trao đổi khóa bí mật mà một thực thể thứ 3 không
lấy cắp được. Tuy nhiên, hạn chế của Diffie-Hellman là không có tính xác thực, nghĩa là một thực
thể sẽ không thể biết chắc chắn rằng khóa mình nhận được đúng là khóa của thực thể mà mình
đang muốn trao đổi thông tin hay không. Do vậy, trong thực tế, Diffie-Hellman thường được dùng
phối hợp với một cơ chế xác thực đầu cuối (peer authentication).
(1) E([N1 + IDA], PUB)
(2) E([N1 + N2], PUA)
(3) E(N2, PUB)
(4) E(E(K, PRA), PUB)
Hình 2.33: Dùng mật mã bất đối xứng để trao đổi khoá
Dùng khóa công khai để trao đổi khóa bí mật của mã hóa đối xứng là một cách hiệu quả
có thể giải quyết được vấn đề trên đây. Một thực thể A (thực thể khởi tạo – Initiator) muốn trao
đổi khóa bí mật với một thể B (thực thể đáp ứng - responder) có thể thực hiện thủ tục trao đổi
khoá như sau:
(1)-A dùng khoá công khai của B (PUB) để mã hoá một bản tin, bản tin này chứa nhận
dạng của A (IDA) và một giá trị ngẫu nhiên N1 (nonce) để nhận diện giao tác đang thực
hiện.
A B: E([N1 + IDA], PUB)
(2)-B gởi lại cho A một bản tin chứa giá trị ngẫu nhiên N2 do B tạo ra, cùng với số N1
nhận được từ A. Toàn bộ bản tin được mã hoá sử dụng khoá công khai của A (PUA).
B A: E([N1 + N2], PUA)
(3)-Một lần nữa, A gởi lại cho B một bản tin chứa giá trị N2 được mã hoá bằng khoá công
khai của A (PUA).
A B: E(N2, PUB)
(4)-A chọn khoá bí mật K cho thuật toán mã hoá đối xứng sắp diễn ra, sau đó mã hoá nó
bằng chính khoá riêng của A (PRA), rồi mã hoá một lần nữa bằng khoá công khai của B
(PUB) rổi gởi cho B. Đến bước này, B đã nhận được khoá bí mật mà A tạo ra một cách an
toàn.
A B: E(E(K, PRA), PUB)
II.6.3 Cơ sở hạ tầng khóa công khai:
85
Cơ sở hạ tầng khóa công khai PKI (Public Key Infrastructure) là một hệ thống hạ tầng bao
gồm các thiết bị phần cứng, chương trình phần mềm, các chính sách, thủ tục và con người cần
thiết để tạo ra, quản lý, lưu trữ và phân phối các chứng thực khóa phục vụ cho mục đích phổ biến
khóa công khai của các thực thể thông tin.
Vai trò của PKI trong hệ thống là quản lý các chứng thực khóa một cách an tòan và cung
PKI users
Truy xuất Certificate/CRL
Kho lưu trữ Certificate/CRL
End Entity
Phân phối
Certificate
RA
Phân phối
Certificate/CRL
-Đăng ký
-Khởi tạo
-Chứng thực
-Phục hồi khoá
-Cập nhật khoá
-Yêu cầu thu hồi
CA-2
Phân phối CRL
CRL Issuer
Chứng thực
chéo
Phân
phối
khoá
ra
ngoài
hệ
thống
CA-1
PKI management
Hình 2.34: Cấu trúc PKI
cấp nó cho user một cách hiệu quả nhất.
Mục tiêu của PKI là cung cấp một môi trường làm việc phối hợp, trong đó, thiết bị, phần
mềm của nhiều nhà sản xuất khác nhau có thể cùng sử dụng chung một cấu trúc chứng thực khóa.
-Các thành phần của PKI:
End Entity (thực thể đầu cuối): là người sử dụng, một phần mềm hoặc một thiết bị
tham gia vào quá trình trao đổi thông tin sử dụng mã hóa khóa công khai. Các
thực thể có một cặp khóa của mình, trong đó khóa công khai được phổ biến bởi
PKI dưới dạng các chứng thực khóa, còn khóa bí mật do chính thực thể quản lý.
Certificate Authority (CA): là thực thể tạo ra các chứng thực khóa. CA tạo ra
chứng thực khóa từ các khóa công khai mà các thực thể đầu cuối ủy quyền cho nó
phổ biến cộng với chữ ký số của chính CA đó. Do vậy, CA phải là một thực thể
được tin cậy, nếu không, chữ ký của CA sẽ không có ý nghĩa gì.
Registration Authority (RA): là một thành phần tùy chọn của PKI, có chức năng
xử lý một số công việc quản lý nhằm giảm tải cho CA, chẳng hạn như đăng ký
thực thể đầu cuối, kiểm chứng các thực thể đầu cuối, tạo ra các cặp khóa publicprivate, …
Repository: Kho lưu trữ chứng thực khóa và cung cấp chứng thực khóa cho các
thực thể đầu cuối khi có yêu cầu. Có nhiều cách để thực thể đầu cuối truy xuất các
86
chứng thực khóa tại PKI: thông qua dịch vụ thư mục LDAP (X.500), thông qua
FTP hoặc HTTP, …
Certificate revocation list (CRL) Issuer: Một chứng thực khóa khi đã được tạo ra
và phổ biến thì không có nghĩa là nó sẽ được tồn tại vĩnh viễn. Sau một khỏang
thời gian nhất định hoặc theo yêu cầu của thực thể đầu cuối, chứng thực khóa có
thể bị thu hồi. CRL là danh sách các chứng thực khóa bị thu hồi, được tạo ra bởi
CA hoặc ủy quyền cho CRL issuer. Như vậy, CRL issuer cũng là một thành phần
tùy chọn của PKI.
-Các chức năng quản lý của PKI:
Đăng ký (Registration): là thủ tục mà thực thể đầu cuối phải thực hiện để tham gia
vào PKI lần đầu tiên.
Khởi tạo (Initialization): Khởi tạo các thông tin của thực thể đầu cuối tại CA, tạo
ra cặp khóa public-private cho thực thể đầu cuối.
Chứng thực (Certification): CA tạo ra chứng thực khóa cho thực thể đầu cuối, ứng
với khóa công khai vừa được tạo ra ở giai đọan khởi tạo hoặc do thực thể đầu cuối
cung cấp.
Phục hồi khóa (Key-pair recovery): cho phép phục hồi một khóa cũ trước đó. Thủ
tục này thường được dùng trong trường hợp khóa mật mã vì một lý do nào đó
không truy xuất được. Để khôi phục dữ liệu đã bị mật mã hoá, cần phải có thủ tục
này để lấy lại khoá.
Cập nhật khóa (Key-pair update): Mỗi chứng thực khóa được tạo ra với một
khỏang thời gian tồn tại nhất định, sau khoảng thời gian này, chứng thực khóa sẽ
bị thu hồi (revoke). Thủ tục key-pair update có tác dụng gia hạn tồn tại của chứng
thực khóa, cho phép một chứng thực khóa tiếp tục tồn tại sau khi đã hết thời gian
hiệu lực.
Yêu cầu thu hồi chứng thực khóa (Revocation request): Yêu cầu thu hồi một
chứng thực khóa vì một lý do nào đó, như khóa riêng bị lộ chẳng hạn. Thủ tục này
cho phép một thực thể đầu cuối yêu cầu thu hồi một chứng thực khóa chưa hết
hiệu lực.
Có thể tóm tắt các bước điển hình của một quy trình khi một thực thể A muốn gởi một bản
tin đến một thực thể B trong môi trường PKI như sau:
-Thực thể A thực hiện hàm băm trên bản tin để tạo ra mã băm. Sau đó mã băm được mã
hóa bằng khóa riêng PRA của thực thể A để tạo ra một chữ ký của thực thể A.
-Sử dụng khóa công khai của CA, thực thể A yêu cầu CA cung cấp khóa công khai của
thực thể B (PUB).
-Thực thể A mã hóa bản tin bằng khóa công khai PUB của thực thể B vừa nhận được từ
CA, sau đó gắn chữ ký của mình vào bản tin đã mã hóa và gởi cho B.
-Thực thể B giải mã thông tin nhận được bằng khóa riêng của chính nó (PRB), sau đó áp
dụng hàm băm lên bản tin này để tạo ra mã băm.
-Thực thể B giải mã chữ ký của thực thể A bằng khóa công khai của thực thể A (PUA),
sau đó so sánh với mã băm vừa tạo ra ở bước trên. Nếu hai thông tin này giống nhau, thì bản tin
nhận được xem như hợp lệ.
87
Tóm tắt chương:
-Mật mã là một cơ chế cơ bản nhất được dùng để bảo đảm an tòan cho thông tin khi trao
đổi giữa các hệ thống thông tin (thường thông qua mạng máy tính). Kỹ thuật mật mã bảo vệ được
2 đặc trưng của mô hình CIA là tính Bí mật và tính Toàn vẹn của thông tin.
-Kỹ thuật mật mã hiện đại được chia thành 2 lọai: Mật mã đối xứng (symmetric key
encryption) và mật mã bất đối xứng (asymmetric key encryption).
-Mật mã đối xứng (hay còn gọi là mật mã quy ước) sử dụng 1 khóa duy nhất cho việc mã
hóa và giải mã, khóa này được giữ bí mật, chỉ có các thực thể tham gia việc truyền nhận thông tin
mới biết được. Kỹ thuật mật mã quy ước dựa chủ yếu trên các thao tác xử lý bit (như dịch, xoay
vòng, XOR, …) do đó thích hợp với phần việc thực thi bằng phần cứng, tốc độ mã hoá cao. Các
thuật toán mật mã đối xứng thông dụng bao gồm DES, Blowfish, IDEA, AES,…
-Mật mã bất đối xứng (hay còn gọi mật mã dùng khóa công khai) sử dụng 2 khóa khác
nhau cho quá trình mã hóa và giải mã. Một trong hai khóa là khóa công cộng (public key), được
phổ biến công khai cho bất kỳ một thực thể nào cũng có thể truy xuất được; và khóa còn lại là
khóa riêng (private key) được giữ bí mật, chỉ có chủ thể của khóa đó biết. Mã hóa khóa công khai
dựa chủ yếu trên các hàm toán học, do đó thích hợp với thực thi bằng phần mềm và tốc độ mã
hoá thấp. RSA là thuật toán mật mã bất đối xứng phổ biến nhất hiện nay.
-Mật mã dùng khóa công khai có nhiều ứng dụng khác nhau như: mật mã dữ liệu, tạo chữ
ký số, trao đổi khóa bí mật của mật mã đối xứng, …
-Hàm băm bảo mật (secure hash function) là cơ chế dùng trong xác thực thông tin
(message authentication). Nguyên lý của hàm băm là biến đổi khối thông tin gốc thành một giá trị
kiểm tra có kích thước cố định gọi là mã băm, giá trị này được gởi đi kèm với thông tin gốc. Ở
đầu thu, thông tin nhận được cũng được đưa vào hàm băm để tạo ra giá trị kiểm tra. Nếu giá trị
kiểm tra vừa được tạo ra bằng với giá trị gởi kèm của phía gởi thì thông tin được xem là xác thực.
Hàm băm được dùng trong các thuật toán xác thực thông tin (message authentication), tạo chữ ký
số và là thành phần của một số thuật toán mật mã.
-Chữ ký số (digital signature) là kỹ thuật dùng để nhận dạng một thực thể thông tin cùng
với thông tin do thực thể này tạo ra. Ứng dụng cơ bản nhất của chữ ký số là để chứng thực và
đảm bảo thính không thể phủ nhận (non-repudiation) của thông tin. Có nhiều cách phân loại các
thuật toán tạo chữ ký: chữ ký phục hồi được và không phục hồi được, chữ ký cố định và chữ ký
ngẫu nhiên. Hai phương pháp thực hiện chữ ký số là ký trực tiếp và ký thông qua trọng tài. Chuẩn
chữ ký số DSS sử dụng thuật toán DSA, tạo ra chữ ký số dựa trên các hàm băm bảo mật (SHA) và
kỹ thuật mật mã khóa công khai (RSA).
-Mật mã hóa dùng khóa công khai chỉ có ưu điểm khi nó có một cơ chế phân phối khóa
công khai một cách an tòan và hiệu quả cho các thực thể trong hệ thống. Chứng thực khóa công
khai (Certificate) mà một cơ chế hiệu quả để thực hiện vấn đề này. Mỗi chứng thực khóa bao gồm
nhận dạng thực thể đầu cuối, khóa công khai của thực thể đầu cuối và xác nhận (bằng chữ ký số)
của một thực thể thứ 3. Một hệ thống cung cấp cơ chế tạo ra và quản lý chứng thực khóa được
gọi là cơ sở hạ tầng khóa công khai PKI.
88
CÂU HỎI VÀ BÀI TẬP.
A- Câu hỏi trắc nghiệm.
Câu 1. Chức năng của mật mã thông tin:
a- Bảo vệ tính toàn vẹn của thông tin.
b- Bảo vệ tính bí mật của thông tin.
c- Bảo vệ tính khả dụng của thông tin .
d- Bảo vệ tính không thể phủ nhận của thông tin.
Câu 2. Các nguy cơ của một hệ thống mật mã:
a- Tấn công bằng cách dò khoá bí mật (brute force attack).
b- Tấn công bằng phương pháp phân tích mã (crypanalysis).
c- Tấn công từ chối dịch vụ
d- Câu a và b.
Câu 3. Một hệ thống mã hoá quy ước dùng khoá dài 128 bit. Nếu dùng phương pháp tấn công
brute force thì phải thử trung bình bao nhiêu lần và thời gian cần thiết để thực hiện nếu
tốc độ xử lý là một tỉ lần trong một giây?
a- Phải thử 2128 lần, thời gian thử là 5,4 * 1018 năm.
b- Phải thử 264 lần, thời gian thử là 5,4 * 1018 năm.
c- Phải thử 2127 lần, thời gian thử là 5,4 * 1018 năm.
d- Phải thử 2128 lần, thời gian thử là 18 năm.
Câu 4. Cơ chế trao đổi khoá bí mật trong mã hoá đối xứng?
a- A và B trao đổi khoá với nhau bằng e-mail.
b- A và B trao đổi khoá với nhau bằng một phương tiện vật lý.
c- A gởi khoá bí mật cho một thực thể thứ 3 bằng e-mail, thự cthể thứ 3 này sẽ gởi
lại khoá này cho B cũng bằng e-mail.
d- Một trong 3 cách trên đều được.
Câu 5. Chọn câu đúng khi nói về cấu trúc mật mã Feistel:
a- Tất cả các thao tác trong cấu trúc đều có thao tác ngược tương ứng.
b- Cấu trúc Feistel dựa trên các thao tác xử lý bit với các phép hoán vị và thay thế
lặp lại nhiều lần.
c- Kích thước khối dữ liệu (block size) là bất kỳ.
d- Mạch mã hoá và mạch giải mã có cấu trúc khác nhau.
Câu 6. Chọn câu đúng khi nói về thuật toán mật mã DES:
a- Mạch mã hoá và mạch giải mã là giống nhau.
b- S-box là một hàm hoán vị, cho kết quả ngược lại với phép hoán vị IP.
c- Thứ tự sinh khoá phụ ở quá trình mã hoá và giải mã là giống nhau.
d- Thao tác hoán vị PC-1 được thực hiện 16 lần trong quá trình mã hoá và giải mã.
Câu 7. Chọn câu đúng về độ an toàn của DES:
a- Chỉ có thể tấn công hệ thống mật mã DES bằng phương pháp brute force.
b- Khoá đưa vào thuật toán là 64 bit, nhưng thực chất chỉ sử dụng 56 bit.
89
c- Mạch giải mã TDES không thể giải mã được thông tin mã hoá bởi DES.
d- Tất cả đều đúng.
Câu 8. Chọn câu đúng khi nói về chuẩn mật mã AES:
a- Là chuẩn mật mã được thiết kế để làm việc song song với DES.
b- Kích thước khối và chiều dài khoá có thể thay đổi được.
c- Mạch mã hoá và mạch giải mã hoàn toàn giống nhau.
d- Tất cả đều đúng.
Câu 9. Chọn phát biểu sai khi nói về chuẩn mật mã AES:
a- Thứ tự sinh khoá phụ trong quá trình mã hoá và giải mã hoàn toàn giống nhau.
b- Tất cả các thao tác trong thuật toán đều có thao tác ngược.
c- AES không dựa trên cấu trúc mã khối Feistel.
d- Thuật toán mã Rijndael chính là AES.
Câu 10. Một hệ thống gồm 10 thiết bị đầu cuối liên lạc với nhau sử dụng mật mã đối xứng. Mỗi
đầu cuối sử dụng các khoá bí mật khác nhau khi kết nối với mỗi đầu cuối khác. Có bao
nhiêu khoá bí mật trong toàn bộ hệ thống?
a- 10 khoá
b- 20 khoá
c- 45 khoá
d- 90 khoá
Câu 11. Thuật toán mật mã nào được dùng trong giao thức xác thực Kerberos 4?
a- Blowfish
b- CAST-128
c- TDES
d- DES
Câu 12. Ứng dụng của mật mã bất đối xứng:
a- Bảo mật thông tin
b- Xác thực thông tin
c- Bảo vệ tính khả dụng của hệ thống
d- Câu a và b
Câu 13. Chọn câu đúng về thuật toán mã RSA:
a- Thuật toán RSA thích hợp cho thực thi bằng phần cứng.
b- RSA dùng khoá và khối dữ liệu có kích thước cố định.
c- Mỗi khối thông tin n bit đưa vào thuật toán RSA được xử lý như một số nguyên
có giá trị từ 0 đến 2n – 1.
d- Chỉ có thể dùng khoá công khai để mã hoá thông tin, không thể mã hoá thông tin
bằng khoá bí mật.
Câu 14. So sánh RSA và DES:
a- RSA có tốc độ thực thi bằng phần mềm cao hơn DES.
b- RSA an toàn hơn DES.
90
c- RSA dựa trên các hàm toán học, còn DES dựa trên các thao tác xử lý bit.
d- Bằng cách phân tích khoá công khai thì có thể tìm ra khoá bí mật của RSA, trong
khi đối với DES, cách duy nhất để tìm khoá là thử lần lượt.
Câu 15. Thuật toán trao đổi khoá Diffie-Hellman:
a- Là một dạng của mật mã hoá bất đối xứng.
b- Diffie-Hellman không có chức năng bảo mật dữ liệu mà chỉ dùng để trao đổi
khoá bí mật.
c- Diffie-Hellman có thể bị tấn công Man-In-The-Middle.
d- Tất cả đều đúng.
Câu 16. Chức năng của các hàm băm (hash function)?
a- Tạo ra một khối thông tin ngắn cố định từ một khối thông tin gốc lớn hơn.
b- Mật mã hoá thông tin.
c- Xác thực nguồn gốc thông tin
d- Ngăn chặn việc phủ nhận hành vi của chủ thể thông tin
Câu 17. Các thuộc tính của một giải thuật chữ ký số:
a- Phải xác nhận chính xác người ký và ngày giờ phát sinh chữ ký.
b- Phải xác thực nội dung thông tin ngay tại thời điểm phát sinh chữ ký
c- Phải có khả năng cho phép kiểm chứng bởi một người thứ 3 để giải quyết các
tranh chấp nếu có.
d- Tất cả các câu trên.
Câu 18. Các thông tin cần thiết để tạo ra chữ lý số:
a- Mã băm của thông tin cần chứng thực.
b- Khoá bí mật của người ký.
c- Khoá công khai của nhóm
d- Tất cả các thông tin trên
Câu 19. Chứng thực khóa (certificate) là gì?
a- Là một sự chứng thực của một thực thể được tin cậy về sự ràng buộc giữa một
thực thể thông tin và khoá công khai của thực thể đó.
b- Chứng thực khóa là một dạng của chữ ký số.
c- Chứng thực khóa là một ứng dụng để phân phối khoá bí mật trong mật mã đối
xứng.
d- Tất cả đều đúng.
Câu 20. Chọn câu đúng khi nói về PKI:
a- PKI tạo ra và quản lý các chứng thực khóa.
b- Chứng thực khóa sau khi đã tạo ra có thể bị huỷ bỏ theo yêu cầu của chủ sở hữu.
c- CA là thành phần của PKI có chức năng tạo ra chứng thực khóa theo yêu cầu của
người sử dụng.
d- Tất cả đều đúng.
B- Bài tập.
91
Câu 21. Xác định các bit 1, 16, 33 và 48 tại ngõ ra vòng thứ nhất của thuật toán giải mã DES, biết
rằng ciphertext chứa toàn bit 1 và khoá ban đầu cũng là chuỗi bit 1.
Câu 22. Chứng minh rằng mạch mã hoá của DES cũng đồng thời là mạch giải mã của DES.
Câu 23. So sánh ma trận IP và ma trận PC-1 của DES. Rút ra kết luận gì từ sự so sánh này?
Câu 24. Tính 8 word đầu tiên của khoá mở rộng trong thuật toán mã AES nếu biết khoá ban đầu
là chuỗi 128 bit 0.
Câu 25. Thực hiện mã hoá và giải mã dùng thuật toán RSA với các dữ liệu sau đây:
a- p = 3; q = 11, e = 7; M = 5
b- p = 5; q = 11, e = 3; M = 9
c- p = 7; q = 11, e = 17; M = 8
d- p = 11; q = 13, e = 11; M = 7
e- p = 17; q = 31, e = 7; M = 2
Câu 26. User A và B trao đổi khoá dùng Diffie-Hellman với p = 71 và g = 7.
a- Nếu A chọn Xa = 5, tính Ya?
b- Nếu B chọn Xb = 12, tính Yb?
c- Khoá bí mật dùng chung giữa A và B?
Câu 27. Cài đặt thuật toán mật mã DES bằng C.
Câu 28. Cài đặt thuật toán mật mã RSA bằng C.
----------
92
CHƯƠNG III
CÁC ỨNG DỤNG BẢO MẬT TRONG HỆ THỐNG THÔNG TIN
Giới thiệu:
Các cơ chế mật mã và xác thực thông tin là cơ sở cho việc xây dựng các ứng dụng bảo
mật trong hệ thống, đặc biệt trong môi trường mạng. Chương này sẽ trình bày một số ứng dụng
của kỹ thuật mật mã và xác thực thông tin trong việc xây dựng các giao thức (protocol) và dịch vụ
(service) trên mạng nhằm đảm bảo an tòan hệ thống. Các ứng dụng được trình bày trong chương
này bao gồm:
-Giao thức xác thực (Authentication protocol)
-IPSec (Internet Protocol Security)
-SSL (Secure Sockets Layer)
-SET (Secure Electronic Transaction)
III.1 GIAO THỨC XÁC THỰC
III.1.1 Mật khẩu:
Trong số các cơ chế xác thực, cơ chế xác thực dựa trên thông tin mà thực thể truy xuất
biết (what you know) là cơ chế đơn giản nhất và được sử dụng nhiều nhất. Thông tin này thường
là mật khẩu (password), được liên kết với một thực thể dùng để xác thực thực thể đó.
Mật khẩu thường là một chuỗi ký tự. Không gian mật khẩu (password space) là tập hợp tất
cả các chuỗi ký tự có thể xuất hiện trong mật khẩu. Mỗi hệ thống xác thực có một không gian mật
khẩu khác nhau. Không gian mật khẩu càng lớn thì khả năng bị tấn công mật khẩu theo phương
thức brute force càng thấp.
Mật khẩu được gọi là phức tạp nếu nó khó bị phát hiện bằng phương pháp dò mật khẩu
theo tự điển (dictionary attack).
Theo khảo sát, những lọai mật khẩu được dùng phổ biến nhất hiện nay bao gồm:
-Dùng tên của người sử dụng (user-name hoặc account-name) làm mật khẩu hoặc thêm
một vài chữ số (ví dụ ngày sinh, số điện thọai, …) để làm mật khẩu.
-Dùng tên đăng nhập (logon-name) làm mật khẩu.
-Dùng tên máy tính (computer name) làm mật khẩu.
-Mật khẩu chỉ bao gồm các ký tự số (lấy từ số điện thọai, ngày sinh, …).
-Mật khẩu là những từ khóa đặc biệt như computer, hacker, …
-Lấy một từ có nghĩa trong tự điển làm mật khẩu.
-Lấy tên một người khác làm mật khẩu (thường là người có quan hệ mật thiết)
Những mật khẩu như trên đều có độ phức tạp rất thấp và do đó dễ dàng bị tiết lộ. Các hệ
thống xác thực thường đưa ra các chính sách về mật khẩu (password policy) đối với người sử
dụng. Các chính sách này thường quy định những ràng buộc sau đây:
-Chiều dài tối thiểu và độ khó của mật khẩu, mật khẩu không được chứa user-name hoặc
logon-name (password complexity).
-Thời gian sử dụng tối đa của mật khẩu (password age).
93
-Không được phép dùng lại mật khẩu cũ (password history).
Về phía người sử dụng, những nguyên tắc chung để tăng độ an tòan cho việc xác thực
dùng mật khẩu bao gồm:
-Sử dụng nhiều lọai ký tự khác nhau để làm mật khẩu, mục đích là mở rộng không gian
mật khẩu (dùng chữ cái, chữ số, các ký hiệu đặc biệt, dùng phối hợp giữa chữ hoa và chữ thường,
…)
-Không sử dụng các mật khẩu quá ngắn.
-Không sử dụng những từ khóa hoặc từ có nghĩa trong mật khẩu.
-Thường xuyên thay đổi mật khẩu.
-Không ghi chép mật khẩu lên bất kỳ vị trí nào.
-Không tiết lộ mật khẩu cho người khác, ngay cả những tình huống an tòan nhất.
Trên các máy chủ xác thực, mật khẩu của người sử dụng thường không được lưu trữ một
cách trực tiếp dưới dạng ký tự gốc (cleartext) mà phải được mã hoá dưới một dạng nào đó để đảm
bảo an toàn. Ngoài ra, để mật khẩu không bị đánh cắp khi truyền đi trên mạng, nhiều thủ tục xác
thực phức tạp được xây dựng để đảm bảo rằng mật khẩu không được truyền đi trực tiếp (cleartext)
trên mạng.
III.1.2 Xác thực trong mô hình điểm-điểm:
Một thực thể bên ngòai hệ thống thông tin muốn truy xuất hệ thống như một chủ thể của
thệ thống thì phải cung cấp các thông tin để hệ thống xác thực nhận dạng của chủ thể. Các thông
tin này thường là mật khẩu, thẻ xác thực, dấu vân tay, … Quá trình xác thực một thực thể bao
gồm việc lấy thông tin mà thực thể cung cấp, phân tích và xác định xem thông tin có liên kết với
thực thể đó hay không.
Hai mô hình thực tế của một hệ thống xác thực là xác thực tại chỗ (local authentication)
hoặc xác thực từ xa (remote authentication) thông qua môi trường mạng. Mô hình thứ nhất được
sử dụng khi người sử dụng đăng nhập trực tiếp vào một thống nội bộ (local logon), thông tin xác
thực (tên người dùng và mật khẩu) được cung cấp trực tiếp cho hệ thống xác thực (server). Trong
mô hình thứ hai, người sử dụng đăng nhập vào một hệ thống ở xa. Tình huống này bắt buộc các
thông tin xác thực phải được gởi đi trên mạng và do đó, nguy cơ bị nghe lén thông tin là rất cao.
Các giao thức xác thực được thiết kế để giảm thiểu các nguy cơ này.
Trong các hệ thống cổ điển, kết nối từ xa thường được thực hiện thông qua các giao thức
điểm – điểm như SLIP (Serial Line Internet Protocol) hoặc PPP (Point to Point Protocol). Các thủ
tục xác thực đều là một chiều, tức là chỉ có máy chủ xác thực người sử dụng chứ không có thủ tục
ngược lại. Hai giao thức xác thực thường được dùng trong các hệ thống này là PAP (Password
Authentication Protocol) và CHAP (Challenge-Handshake Authentication Protocol).
-PAP là giao thức xác thực đơn giản nhất và do đó kém an tòan nhất. Để xác thực với một
hệ thống server ở xa, người sử dụng chỉ cần gởi tên đăng nhập và mật khẩu của mình một cách
trực tiếp (clear text) cho server dưới dạng một gói yêu cầu xác thực (authenticate request packet).
Server sẽ kiểm tra thông tin xác thực chứa trong gói dữ liệu này, nếu trùng với thông tin đã lưu trữ
trước đó thì sẽ trả lời bằng một gói xác nhận (authenticate ack packet) và quá trình xác thực xem
như thành công. Ngược lại, nếu thông tin xác thực không đúng, server sẽ trả lời bằng gói từ chối
(Authenticate nak packet).
94
Authenticate request
(User-name + Password)
Người
sử
dụng
Server
Authenticate ack
hoặc Authenticate nak
Hình 3.1: Giao thức xác thực PAP
-CHAP là giao thức xác thực phức tạp hơn, được dùng trong giao thức kết nối PPP và một
số hệ thống khác. CHAP có ưu điểm hơn PAP về phương diện bảo mật là có dùng các hàm băm
một chiều và thông tin xác thực không được gởi đi trực tiếp trên mạng. Quá trình xác thực bằng
giao thức CHAP gồm các bước sau đây (gọi là quá trình challenge-response):
Sau khi thiết lập xong kết nối PPP, để xác định xem người sử dụng có quyền truy
xuất hay không, server sẽ gởi cho người sử dụng một khối dữ liệu thách thức
(challenge), trong đó có chứa một giá trị ngẫu nhiên do server tạo ra.
Người sử dụng sau khi nhận được khối challenge sẽ gắn thêm tên đăng nhập và
mật khẩu của mình vào đó, sau đó thực hiện một hàm băm một chiều (ví dụ MD5)
lên khối thông tin đó và gởi mã băm lại cho server.
Phía server cũng thực hiện một quá trình tương tự và so sánh với kết quả nhận
được từ người sử dụng để xác định quá trình xác thực có thành công hay không.
Một đặc điểm nữa của giao thức này làm tăng tính an tòan của kết nối là quá trình
challenge-response được lặp lại nhiều lần trong suốt thời gian duy trì kết nối. Nếu gói tin trả lời
của người dùng không hợp lệ, kết nối sẽ bị giải tỏa tức thời.
Challenge
Người
sử dụng
User-name + H(user-name +
password + challenge)
Server
Success / Failure
Hình 3.2: Giao thức xác thực CHAP
III.1.3 Xác thực trong các hệ thống phân tán:
95
Trong các hệ thống phân tán, nhiều máy chủ cung cấp dịch vụ được quản lý bởi một trung
tâm xác thực duy nhất. Giao thức xác thực trong các hệ thống này phải đảm bảo được 2 yêu cầu
cơ bản:
Đảm bảo an tòan đối với thông tin xác thực (tên đăng nhập và mật khẩu không
được truyền đi trực tiếp trên mạng).
Người dùng chỉ cần đăng nhập một lần cho phiên làm việc nhưng có khả năng sử
dụng tất cả các dịch vụ có trong hệ thống.
Ví dụ: Một hệ thống mạng Windows được cấu hình theo mô hình Domain. Trong Domain
này có nhiều máy chủ cung cấp dịch vụ khác nhau, gồm dịch vụ in ấn (print server), dịch vụ lưu
trữ dữ liệu (file server), dùng chung kết nối Internet (qua proxy server), … Khi người sử dụng
đăng nhập vào hệ thống từ một máy thành viên của Domain, người sử dụng này phải có khả năng
truy xuất đến tất cả các dịch vụ trong Domain (tùy theo quyền được cấp) mà không phải nhập lại
tên đăng nhập và mật khẩu cho từng dịch vụ. Cơ chế quản lý tập trung này cung cấp sự tiện lợi
cho cả người sử dụng lẫn hệ thống.
Một thủ tục xác thực điển hình trong các hệ thống này bao gồm các bước như sau:
Một người dùng đăng nhập từ một máy con (C ) trong hệ thống và yêu cầu truy
xuất đến máy chủ V.
Máy con C yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu rồi sau đó
chuyển thông tin này cho trung tâm xác thực AS (Authentication Server).
Máy chủ AS kiểm tra xem tên đăng nhập và mật khẩu có hợp lệ hay không, đồng
thời kiểm tra xem người dùng này có được phép truy xuất các dịch vụ trên máy
chủ V hay không.
Nếu cả hai việc kiểm tra trên đều thành công thì người dùng được phép truy xuất
dịch vụ trên máy chủ V. Để làm được việc đó, AS tạo ra một thẻ truy xuất (ticket)
chứa các thông tin bao gồm nhận dạng của người dùng, địa chỉ mạng của máy con
và nhận dạng của máy chủ V. Thẻ truy xuất này được mã hóa bằng khóa bí mật
dùng chung giữa AS và V. Thẻ truy xuất cũng được gởi cho C.
Bắt đầu từ đó, C có thể yêu cầu các dịch vụ của V bằng cách gởi các bản tin có
gắn kèm thẻ truy xuất vừa tạo ra cho V. Máy chủ V sẽ giải mã thẻ truy xuất và
chấp nhận cho C truy xuất các dịch vụ của mình.
Quá trình được biểu diễn như sau:
C AS:
AS C:
C V:
IDC + PC + IDV
Ticket
IDC + Ticket
Ticket = E([IDC + ADC + IDV], KV)
Trong đó:
C: Máy con
AS: máy chủ xác thực (Authentication server).
V: máy chủ cung cấp dịch vụ.
IDC: Nhận dạng (tên đăng nhập) của người dùng.
IDV: Nhận dạng của máy chủ V.
96
PC: Mật khẩu của người dùng.
ADC: Địa chỉ mạng của máy con.
KV: Khóa bí mật của máy chủ cung cấp dịch vụ V.
Thủ tục xác thực như trên giải quyết được vấn đề bảo mật bằng cách đưa ra khái niệm thẻ
truy xuất (ticket), trong đó các thông tin bí mật được mã hóa trong một bản tin đặc biệt trước khi
luân chuyển trên mạng. Tuy nhiên, vẫn còn hai vấn đề chưa được giải quyết:
1-Nếu người dùng có nhu cầu sử dụng dịch vụ nhiều lần, hoặc sử dụng nhiều dịch
vụ khác nhau trên các máy chủ khác nhau, vậy người dùng phải thực hiện thủ tục xác thực
nhiều lần, tức là phải nhập mật khẩu nhiều lần?
2-Thủ tục xác thực vẫn còn một bước (bước đầu tiên) trong đó thông tin xác thực
(mật khẩu) được gởi đi trực tiếp trên mạng mà không mã hóa.
Thủ tục sau đây sẽ giải quyết hai vấn đề trên:
Khi người dùng đăng nhập hệ thống:
(1) C AS: IDC + IDtgs
(2) AS C: E(Tickettgs, Kc)
Khi người dùng truy xuất một loại dịch vụ (per service type):
(3) C TGS: IDC + IDV + Tickettgs
(4) TGS C: Ticketv
Khi người dùng truy xuất một phiên giao dịch cụ thể (per service session):
(5) C V: IDC + Ticketv
Trong đó:
Tickettgs = E([IDC + ADC + IDtgs + TS1 + Lifetime1], Ktgs)
Ticketv = E([IDC + ADC + IDv + TS2 + Lifetime2], Kv)
Trong thủ tục trên, một thành phần mới được thêm vào hệ thống xác thực là máy chủ cấp
thẻ TGS (Ticket-Granting server).
Khi người dùng xác thực thành công với AS, thay vì cấp thẻ sử dụng dịch vụ trực tiếp cho
người dùng, AS chỉ cấp cho người dùng thẻ truy xuất của TGS, có tác dụng như một xác nhận đây
là một người dùng hợp hệ. Kể từ đó về sau, mỗi khi người dùng cần truy xuất dịch vụ nào thì chỉ
cần gởi thẻ truy xuất và yêu cầu của mình đến TGS để được cấp thẻ truy xuất dịch vụ.
Như vậy, AS chỉ cần cấp thẻ cho người dùng một lần, hay nói cách khác, thẻ có thể dùng
lại, cả trong trường hợp người dùng sử dụng dịch vụ nhiều lần hoặc sử dụng nhiều dịch vụ khác
nhau mà không cần phải nhập lại mật khẩu.
Thủ tục này được mô tả chi tiết như sau:
Máy con C yêu cầu một thẻ xác nhận người dùng hợp lệ (Ticket Granting Ticket)
bằng cách gởi nhận dạng của người dùng cho AS, trong đó có nhận dạng của TGS.
AS gởi lại thẻ xác nhận người dùng hợp lệ cho máy con nhưng được mã hóa với
khóa là mật khẩu của người dùng (KC). Do đó, nếu người dùng cung cấp đúng mật
khẩu thì thẻ này được giải mã thành công, ngược lại, việc xác thực xem như kết
thúc không thành công.
97
Như vậy, mật khẩu của người dùng đã không được gởi đi trực tiếp trên mạng.
Do thẻ này có khả năng dùng lại, nên để quản lý việc tồn tại của nó, trong thẻ được gắn
thêm một nhãn thời gian quy định thời gian tồn tại hợp lệ của thẻ.
Để tránh trường hợp thay đổi và giả mạo thẻ, thẻ được mã hóa một lần nữa bằng khóa bí
mật của AS và TGS.
Sau khi đã có thẻ xác nhận người dùng hợp lệ, máy con có thể yêu cầu dịch vụ
trên máy chủ V bằng cách yêu cầu thẻ sử dụng dịch vụ (Service-granting Ticket)
từ TGS. Thông tin gởi đến cho TGS bao gồm nhận dạng của máy chủ V, thẻ xác
nhận người dùng hợp lệ và tên đăng nhập của người dùng.
TGS giải mã thẻ xác nhận người dùng hợp lệ để kiểm tra, nếu hợp lệ thì cấp thẻ
truy xuất dịch vụ cho người dùng. Thẻ này được mã hóa bằng khóa bí mật của V
và TGS.
Sau khi có thẻ truy xuất dịch vụ, người dùng có thể sử dụng dịch vụ trên máy chủ
V.
Như vậy, thủ tục trên giải quyết được 2 vấn đề: dùng lại thẻ và không gởi mật khẩu trực
tiếp trên mạng.
Tuy nhiên, lại thêm 2 vấn đề khác nảy sinh:
-Thứ nhất, nếu thời gian tồn tại của các ticket quá ngắn, người dùng có thể phải nhập lại
mật khẩu để tạo thẻ mới. Nếu thời gian này quá dài, nguy cơ bị lấy cắp thẻ tăng lên. Do đó, khi
xác nhận một thẻ, máy chủ (TGS hoặc V) phải biết chắc rằng mình đang làm việc với đúng người
dùng có tên đăng nhập chứa trong thẻ.
-Thứ hai, song song với việc người dùng xác thực với máy chủ, thì cũng cần phải có thao
tác xác thực ngược lại từ máy chủ đến người dùng để lọai trừ trường hợp chính máy chủ bị giả
mạo.
Đây chính là tồn tại được giải quyết bởi giao thức xác thực Kerberos.
III.1.4 Giao thức xác thực Kerberos:
Kerberos là một thủ tục được xây dựng để nâng cao độ an tòan khi xác thực trong môi
trường mạng phân tán. Kerberos dựa trên kỹ thuật mật mã đối xứng (DES).
Có thể tóm lược thủ tục xác thực của Kerberos version 4 như sau (hình 3.3):
1- Máy con yêu cầu AS cung cấp thẻ xác nhận người dùng:
C AS: IDc + IDtgs + TS1
2- AS cung cấp thẻ xác nhận người dùng cho máy con:
AS C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc)
Với Tickettgs = E([Kc,tgs + IDc + ADc + IDtgs + TS2 + Lifetime2], Ktgs)
3- Máy con yêu cầu TS cung cấp thẻ truy xuất dịch vụ:
C TGS: IDv + Tickettgs + Authenticatorc
4- TGS cung cấp thẻ truy xuất dịch vụ cho máy con:
TGS C: E([Kc,v + IDv + TS4 + Ticketv], Kc,tgs)
Với
Tickettgs = E([Kc,tgs + IDC +ADC + IDtgs + TS2 + Lifetime2], Ktgs)
Ticketv = E([Kc,v + IDC + ADC + IDv + TS4 + Lifetime4], Kv)
98
Authenticatorc = E([IDC + ADC + TS3], Kc,tgs)
5- Máy con yêu cầu dịch vụ:
C V: Ticketv + Authenticatorc
Với
Authenticatorc = E([IDc + ADC + TS5], Kc,v)
6- Server xác thực với máy con (không bắt buộc):
V C: E([TS5 + 1], Kc,v)
Với:
Ticketv = E([Kc,v + IDc + ADc + IDv + TS4 + Lifetime4], Kv)
Kerberos
Máy con (C)
Ticket granting Ticket Request
Ticket + session key
Service granting Ticket Request
Ticket + session key
Máy chủ xác
thực (AS)
Máy chủ cấp thẻ
(TGS)
Máy chủ (V)
Yêu cầu dịch vụ
Cung cấp dịch vụ
Hình 3.3: Thủ tục xác thực Kerberos 4
Các thành phần trong các bản tin của Kerberos:
-Bản tin (1): Máy con yêu cầu cấp thẻ xác nhận người dùng (Ticket-granting-Ticket):
IDC: Nhận diện của người dùng (do máy con gởi đến cho AS, dựa trên thông tin
đăng nhập của người dùng).
IDtgs: Nhận diện của TGS, mục đích cho AS biết rằng máy con đang muốn truy
xuất đến TGS.
TS1: Nhãn thời gian, mục đích để đồng bộ thời gian giữa AS và máy con.
-Bản tin (2): AS cung cấp thẻ xác nhận người dùng cho máy con:
Kc: Dùng chính mật khẩu của người dùng làm khoá mật mã, vừa có mục đích bảo
vệ thông tin vừa cho phép AS xác thực mật khẩu của người dùng. Nếu máy con
không có mật khẩu đúng thì sẽ không giải mã được bản tin này.
99
Kc, tgs: khoá bí mật được dùng giữa máy con và TGS do AS tạo ra. Khóa này chỉ có
tác dụng trong một phiên làm việc (session key).
IDtgs: Nhận diện của TGS, dùng để xác nhận rằng thẻ này có tác dụng cho phép
máy con truy xuất đến TGS.
TS2: Nhãn thời gian, cho biết thời điểm thẻ được tạo ra.
Lifetime2: Cho máy con biết thời gian tồn tại của thẻ.
Tickettgs: Máy con dùng thẻ này để truy xuất TGS.
-Bản tin (3): Máy con yêu cầu thẻ truy xuất dịch vụ (Service Granting Ticket):
IDV: Nhận dạng của máy chủ V, dùng để thông báo cho TGS là máy con muốn
truy xuất đến dịch vụ của máy chủ V.
Tickettgs: Thẻ được cấp cho máy con bởi AS
Authenticatorc: một giá trị được tạo ra bởi máy con để xác minh thẻ.
-Bản in (4): TGS cung cấp thẻ truy xuất dịch vụ cho máy con::
Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS để bảo vệ nội dung của bản
tin (4)
Kc, v: Khoá bí mật được dùng giữa máy con và máy chủ V do TGS tạo ra. Khoá
này chỉ có giá trị trong từng phiên làm việc (session key).
IDv: nhận diện của máy chủ V, có chức năng xác nhận thẻ của máy chủ V
TS4: nhãn thời gian cho biết thời điểm thẻ được tạo ra.
Ticketv: Thẻ được máy con dùng để truy xuất máy chủ V.
Tickettgs: Thẻ này được dùng lại để người dùng không phải nhập lại mật khẩu khi
muốn truy xuất dịch vụ khác.
Ktgs: Khóa bí mật dùng chung giữa AS và TGS.
Kc, tgs: Session key được TGS dùng để giải mã authenticator. Khoá này được dùng
chung giữa máy con và TGS.
IDC: Nhận diện máy con, cho biết đây là chủ sở hữu của thẻ.
ADC: Địa chỉ mạng của máy con, dùng để ngăn chặn trường hợp một máy khác
lấy cắp thẻ để yêu cầu dịch vụ.
IDtgs: nhận diện của TGS, để xác nhận thẻ đã được giải mã thành công.
TS2: nhãn thời gian cho biết thời điểm tạo ra thẻ.
Lifetime2: Thời gian tồn tại của thẻ, nhằm ngăn chặn việc sử dụng lại thẻ (replay).
Authenticatorc: Thông tin xác thực của máy con.
Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS, dùng để mã hoá thông tin
xác thực của máy con.
IDc: nhận dạng máy con, phải trùng với ID trong thẻ.
ADc: địa chỉ mạng của máy con, phải trùng với địa chỉ trong thẻ.
TS3: Nhãn thời gian, cho biết thời điểm mà authenticator được tạo ra.
-Bản tin (5): Máy con yêu cầu truy xuất dịch vụ:
Ticketv: Thẻ cho biết máycon đã được xác thực bởi AS.
100
Authenticatorc: Thông tin xác thực thẻ của máy con.
-Bản tin (6): Máy chủ V xác thực với máy con:
Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V.
TS5 + 1: Nhãn thời gian, dùng để tránh trường hợp thông tin xác thực cũ được
dùng lại.
Ticketv: Thẻ truy xuất máy chủ V. Thẻ này có thể dùng lại khi máy con truy xuất
dịch vụ đến chính máy chủ V mà không cần yêu cầu cấp thẻ mới.
Kv: Khoá bí mật dùng chung giữa TGS và máy chủ V.
Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V, dùng để giải mã thông
tin xác thực.
IDc: Nhận dạng của máy con.
ADc: Địa chỉ mạng của máy con.
IDv: Nhận dạng của máy chủ V.
TS4: Nhãn thời gian cho biết thời điểm thẻ được tạo.
Lifetime4: Thời gian tồn tại của thẻ.
Authenticatorc: Thông tin xác thực của máy con.
Kc, v: Khoá bí mật, dùng chung giữa máy con và máy chủ V để mã hoá thông tin
xác thực.
IDc: Nhận diện máy con, phải giống với IDc trong thẻ
ADc: Địa chỉ mạng của máy con, phải giống với địa chỉ trong thẻ.
TS5: Thời điểm thông tin xác thực được tạo ra.
-Kết hợp giữa nhiều hệ thống Kerberos:
Một môi trường sử dụng hệ thống xác thực Kerberos đầy đủ bao gồm máy chủ Kerberos
(Kerberos server), các máy chủ dịch vụ (application server) và các máy con sử dụng dịch vụ
(client), trong đó:
-Máy chủ Kerberos phải có danh sách tất cả các tên đăng nhập và mật khẩu đã được mã
hóa của các người dùng này. Tất cả các máy con đều phải đăng ký với máy chủ Kerberos.
-Máy chủ Kerberos sử dụng một khóa bí mật chung với các máy chủ còn lại. Tất cả các
máy chủ đều phải đăng ký với máy chủ Kerberos.
Một môi trường thỏa mãn các điều kiện như vậy được gọi là một lãnh địa Kerberos
(Kerberos realm).
Như vậy, các máy chủ và máy con thuộc các đơn vị quản lý khác nhau sẽ thuộc về các
lãnh địa Kerberos khác nhau. Giao thức xác thực Kerberos cũng bao gồm các thủ tục cho phép kết
hợp các lãnh địa Kerberos lại để cung cấp dịch vụ một cách đồng nhất. Hình 3.4 mô tả họat động
của thủ tục này.
Trình tự của thủ tục kết hợp lãnh địa Kerberos được tóm tắt như sau:
(1) C AS: IDc + IDtgs + TS1
(2) AS C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc)
101
(3) C TGS: IDtgsrem + Tickettgs + Authenticatorc
(4) TGS C: E([Kc,tgsrem + IDtgsrem + TS4 + Tickettgsrem], Kc,tgs)
(5) C TGSrem: IDvrem + Tickettgsrem + Authenticatorc
(6) TGSrem C: E([Kc,vrem + IDvrem + TS6 + Ticketvrem], Kc,tgsrem)
(7) C Vrem: Ticketvrem + Authenticatorc
Lãnh địa A
Kerberos
Máy con
Ticket-granting-Ticket Request
AS
Ticket-granting-Ticket
Service-granting-Ticket Request
for realm B
TGS
Yêu cầu dịch vụ
Cung cấp dịch vụ
Service-granting-Ticket
Lãnh địa B
Kerberos
Service Granting Ticket Request
Service Granting Ticket
TGS
AS
Máy chủ
Hình 3.4: Xác thực giữa hai lãnh địa Kerberos
-Kerberos 5: là một phiên bản nâng cấp của Kerberos 4 với những điểm khác biệt như
sau:
Kerberos 4 phụ thuộc chặt chẽ vào giải thuật mã hóa đối xứng DES, trong khi
Kerberos 5 thì tương thích với bất kỳ một giải thuật mã hóa nào.
102
Kerberos 4 phụ thuộc vào địa chỉ IP để xác thực người dùng, Kerberos 5 có thể sử
dụng bất kỳ địa chỉ nào (ví dụ MAC address).
Kerberos 4 sử dụng thêm 1 byte trong các bản tin để cho biết thứ tự byte trong bản
tin. Kerberos 5 dùng cú pháp ANS.1 (Abstract Syntax Notation One) và luật mã
hóa cơ bản BER (Basic Coding Rules) để tạo ra cơ chế xếp thứ tự byte trong bản
tin một cách rõ ràng.
Thời gian tồn tại của thẻ trong Kerberos 4 được chứa trong một trường dài 8 bit,
tính theo đơn vị 5 phút, như vậy, thời gian sống tối đa của thẻ là 5 * 28 = 1280
phút (khỏang 21 giờ). Trong Kerberos 5, thời gian tồn tại được biểu thị bằng thời
điểm bắt đầu và thời điểm kết thúc, cho phép thời gian này được biến thiên không
giới hạn.
Kerberos 4 không cho phép cơ chế chuyển tiếp xác thực, tức là cơ chế một máy
con truy xuất đến một máy chủ, và yêu cầu máy chủ này truy xuất đến dịch vụ của
một máy chủ khác thông qua nhận dạng của máy con. Kerberos 5 cung cấp khả
năng này.
Kerberos 4 yêu cầu N2 quan hệ giữa các lãnh địa Kerberos trong trường hợp liên
kết họat động giữa N lãnh địa. Kerberos 5 yêu cầu số quan hệ ít hơn nhiều.
Thủ tục xác thực dùng Kerberos 5 được tóm tắt như sau:
(1) C AS: Options + IDc + Realmc + IDtgs + Times + Nonce1
(2) AS C:Realmc +IDC +Tickettgs +E([Kc,tgs +Times +Nonce1 +Realmtgs +IDtgs], Kc)
Với Tickettgs = E([Flags + Kc,tgs + Realmc + IDc + ADc + Times], Ktgs)
(3) C TGS: Options + IDv + Times + Nonce2 + Tickettgs + Authenticatorc
(4) TGS C: Realmc +IDc +Ticketv +E([Kc,v +Times +Nonce2 +Realmv +IDv], Kc,tgs)
Với
Tickettgs = E([Flags + KC,tgs + Realmc + IDC + ADC + Times], Ktgs)
Ticketv = E([Flags + Kc,v + Realmc + IDC + ADc + Times], Kv)
Authenticatorc = E([IDC + Realmc + TS1], Kc,tgs)
(5) C V: Options + Ticketv + Authenticatorc
(6) V C: E([TS2 + Subkey + Seq#], Kc,v)
Với
Ticketv = E([Flags + Kc,v + Realmc + IDC + ADC + Times], Kv)
Authenticatorc = E([IDC + Realmc + TS2 + Subkey + Seq#], Kc,v)
Trong thủ tục trên, ngoài những thành phần đã xuất hiện trong Kerberos 4 còn có thêm các
thành phần mới sau đây:
-Realm: Biểu thị lãnh địa của người dùng.
-Options: Các tuỳ chọn, dùng để yêu cầu các thông tin cộng thêm xuất hiện trong thẻ.
-Times: Dùng để máy con yêu cầu các thông số thời gian trong thẻ như from, till, rtime.
-Nonce: Giá trị ngẫu nhiên được tạo ra trong bản tin để đảm bảo rằng bản tin trả lời là bản
tin hợp lệ chứ không phải bản tin cũ dùng lại.
103
III.2 IP SECURITY
III.2.1 Các ứng dụng và đặc điểm của IPSec:
IP security (IPSec) cung cấp một phương tiện truyền thông an tòan trên mạng LAN, giữa
các mạng LAN nối với nhau thông qua mạng WAN và giữa các mạng khác nhau trên mạng
Internet. IPSec là phần mở rộng của giao thức IP, được thực hiện thống nhất trong cả hai phiên
bản của IP và IPv4 và IPv6.
-Các ứng dụng điển hình của IPSec bao gồm:
Kết nối giữa các chi nhánh của một tổ chức thông qua mạng Internet: bằng cách
xây dựng các mạng riêng ảo VPN (Virtual Private Network) trên nền của mạng
WAN công cộng hoặc mạng Internet. Các tổ chức có thể kết nối các mạng con ở
các chi nhánh của mình lại thành một mạng riêng với chi phí thấp nhưng vẫn đảm
bảo được độ an tòan.
Truy xuất từ xa thông qua mạng Internet: Để truy xuất từ xa đến một dịch vụ nào
đó, thông thường người dùng phải thực hiện kết nối bằng đường dây điện thọai
(dial-up) đến máy chủ cung cấp dịch vụ. Với IPSec, người dùng chỉ cần kết nối
đến một nhà cung cấp dịch vụ Internet gần nhất (ISP) và sau đó thực hiện kết nối
đến máy chủ ở xa thông qua IPSec một cách an tòan mà không phải tốn chi phí
điện thọai đường dài.
Nâng cao tính an tòan của các giao dịch thương mại trên mạng Internet, áp dụng
cho các website bán hàng qua mạng hoặc các dịch vụ thanh tóan qua Internet.
Thiết bị đầu cuối
có hỗ trợ IPSec
Mạng WAN /
Internet
Thiết bị mạng
có hỗ trợ IPSec
Thiết bị mạng
có hỗ trợ IPSec
Mạng LAN / intranet
Mạng LAN / intranet
Các thành phần của gói dữ liệu:
Tiêu đề IP
(IP header)
Tiêu đề IPSec
(IPSec header)
Hình 3.5: Ứng dụng của IPSec
Dữ liệu của gói IP
(IP Payload)
104
-Các ưu điểm của IPSec:
-Khi IPSec được triển khai trên bức tường lửa hoặc bộ định tuyến của một mạng riêng, thì
tính năng an tòan của IPSec có thể áp dụng cho tòan bộ lưu lượng vào ra mạng riêng đó mà các
thành phần khác không cần phải xử lý thêm các công việc liên quan đến bảo mật.
-IPSec được thực hiện bên dưới của lớp TCP và UDP, đồng thời nó họat động một cách
trong suốt với các lớp này. Do vậy, không cần phải thay đổi phần mềm hay cấu hình lại các dịch
vụ khi IPSec được triển khai.
-IPSec có thể được cấu hình để họat động một cách trong suốt đối với các ứng dụng đầu
cuối, điều này giúp che giấu những chi tiết cấu hình phức tạp mà người dùng phải thực hiện khi
kết nối đến mạng nội bộ từ xa thông qua mạng Internet.
III.2.2 Cấu trúc IPSec:
IPSec được xây dựng dựa trên các thành phần bảo mật cơ bản sau đây, mỗi thành phần
Cấu trúc IPSec
Giao thức ESP
Giao thức AH
Thuật tóan mật mã
Thuật tóan xác thực
Miền thực thi
Quản lý khóa
Hình 3.6: Cấu trúc IPSec
được định nghĩa trong một tài liệu riêng tương ứng (hình 3.6):
-Cấu trúc (Architecture): Quy định cấu trúc, các khái niệm và yêu cầu của IPSec.
-Giao thức ESP: Mô tả giao thức ESP, là một giao thức mật mã và xác thực thông tin
trong IPSec.
-Giao thức AH: Định nghĩa một giao thức khác với chức năng gần giống ESP. Nhưng vậy,
khi triển khai IPSec, người sử dụng có thể chọn dùng ESP hoặc AH. Mỗi giao thức có ưu và
nhược điểm riêng, sẽ được trình bày trong phần này.
105
-Thuật tóan mật mã: Định nghĩa các thuật tóan mã hóa và giải mã sử dụng trong IPSec.
IPSec dựa chủ yếu vào các giải thuật mã hóa đối xứng.
-Thuật tóan xác thực: Định nghĩa các thuật tóan xác thực thông tin sử dụng trong AH và
ESP.
-Quản lý khóa: Mô tả các cơ chế quản lý và phân phối khóa trong IPSec.
-Miền thực thi (Domain of Interpretation_DOI): Định nghĩa môi trường thực thi IPSec.
Như đã trình bày, IPSec không phải là một công nghệ riêng biệt mà sự tổ hợp của nhiều cơ chế,
giao thức và kỹ thuật khác nhau, trong đó mỗi cơ chế, giao thức đều có nhiều chế độ họat động
khác nhau. Việc xác định một tập các chế độ cần thiết để triển khai IPSec trong một tình huống cụ
thể là chức năng của miền thực thi.
III.2.3 Quan hệ bảo mật:
Mục tiêu của IPSec là cung cấp một cơ chế truyền an tòan đảm bảo tính tòan vẹn và xác
thực của dữ liệu. Trong môi trường IPSec, một khái niệm quan trọng được dùng để diễn tả một
quan hệ truyền thông bảo mật giữa một đầu gởi và một đầu nhận đó là quan hệ bảo mật
(SA_Security Association). Mỗi SA được xem như một liên kết một chiều giữa hai thực thể, do
đó, một kết nối hai chiều thường thấy sẽ bao gồm 2 SA. Mỗi SA sử dụng một giao thức xác thực
nhất định (AH hoặc ESP) chứ không thể sử dụng đồng thời cả hai.
Mỗi SA được nhận dạng bởi 3 thông số sau đây:
-Security Parameters Index (SPI): là một chuỗi bit được gán cho SA, chỉ có giá trị nội bộ.
SPI được đặt trong tiêu đề của AH và ESP, cho phép phía nhận (receiving system) chọn một SA
cụ thể để xử lý các gói dữ liệu nhận được.
-IP Destination Address: Đây là địa chỉ đầu cuối của SA, địa chỉ này là địa chỉ của thiết bị
mà SA kết thúc tại đó, có thể là địa chỉ của một hệ thống đầu cuối hoặc của một thiết bị mạng
(router, firewall)
-Security Protocol Identifier: Cho biết SA sử dụng giao thức xác thực nào (AH hay ESP).
Như vậy, trong mỗi gói IP của IPSec, SA được nhận dạng bằng tổ hợp gồm địa chỉ đích
(destination address) và SPI trong tiêu đề mở rộng (AH hoặc ESP).
III.2.4 Chế độ vận chuyển và chế độ đường hầm:
IPSec (cả AH và ESP) cung cấp hai chế độ làm việc khác nhau:
-Chế độ vận chuyển (transport mode): cung cấp cơ chế bảo vệ cho dữ liệu của các lớp cao
hơn (TCP, UDP hoặc ICMP). Ở cơ chế này, phần dữ liệu (payload) của gói IP được áp dụng các
cơ chế bảo vệ (mật mã hoặc xác thực). Chế độ này thường dùng cho các kết nối từ đầu cuối đến
đầu cuối, ví dụ từ trạm làm việc đến máy chủ hoặc giữa hai trạm làm việc với nhau.
-Chế độ đường hầm (tunnel mode): cung cấp cơ chế bảo vệ ở lớp IP, nghĩa là gói IP cùng
với các tiêu đề của AH hoặc ESP được gói thêm một lần nữa bằng các tiêu đề mới. Khi đó, các
gói IP gốc được xem như di chuyển trong một đường hầm (tunnel) từ đầu này đến đầu kia của
mạng mà các nút trung gian không xen vào được. Chế độ này thường được dùng trong các SA nối
giữa hai gateway của hai mạng.
Chế độ vận chuyển và chế độ đường hầm sẽ được trình bày riêng trong từng giao thức AH
và ESP.
106
Các thuật toán mã hóa / giải mã và các thuật toán xác thực thông tin đã được trình bày ở
chương 2, nên trong phần này chỉ tập trung mô tả họat động của hai giao thức AH và ESP, sau đó
giới thiệu các cơ chế quản lý khóa của IPSec.
III.2.5 AH:
AH (Authentication Header) là một giao thức xác thực dùng trong IPSec, có chức năng
đảm bảo tính tòan vẹn của dữ liệu chuyển đi trên mạng IP. AH cho phép xác thực người dùng, xác
thực ứng dụng và thực hiện các cơ chế lọc gói tương ứng. Ngòai ra, AH còn có khả năng hạn chế
các tấn công giả danh (spoofing) và tấn công phát lại (replay).
Cơ chế họat động của AH dựa trên mã xác thực MAC (Message Authetication Code), do
đó, để thực thi AH thì hai đầu cuối của SA phải dùng chung một khóa bí mật.
Cấu trúc tiêu đề của gói AH (hình 3.7) bao gồm các phần sau:
Bit 0
8
Tiêu đề kế tiếp
16
Kích thước dữ liệu
31
Dành riêng
Security Parameters Index (SPI)
Số thứ tự gói
Mã xác thực
(Kích thước thay đổi)
Hình 3.7: Cấu trúc gói AH
-Tiêu đề kế tiếp (Next Header - 8 bits): Nhận dạng kiểu tiêu đề đi liền sau tiêu đề của AH.
-Kích thước dữ liệu (Payload Length -8 bits): Chiều dài của gói AH, tính bằng đơn vị 32
bit trừ đi 2. Ví dụ, chiều dài phần dữ liệu xác thực là 96 bit (= 3 * 32 bit), cộng với chiều dài phần
tiêu đề AH (cố định) là 3 * 32 bit nữa thành 6 * 32 bit, khi đó giá trị của trường kích thước dữ liệu
là 4.
-Dành riêng (Reserved -16 bits): Phần dành riêng, chưa dùng.
-Security Parameters Index (SPI - 32 bits): Nhận dạng SA như đã trình bày ở trên.
-Số thứ tự gói (Sequence Number - 32 bits): Số thứ tự.
-Mã xác thực (Authentication Data): dữ liệu xác thực, có chiều dài thay đổi nhưng phải là
bội số của 32 bit. Trường này chứa giá trị kiểm tra ICV (Integrity Check Value) hoặc MAC
(Message Authentication Code) cho tòan bộ gói
*-Anti-replay service: dịch vụ cho phép ngăn chặn các hành vi tấn công phát lại (replay)
như đã trình bày ở chương 1. Trường số thứ tự (Sequence number) trong tiêu đề AH được dùng để
đánh dấu thứ tự các gói được gởi đi trên một SA. Ban đầu, giá trị này được khởi tạo bằng 0 và
tăng dần sau mỗi gói được gởi. Để đảm bảo không có gói lặp lại, khi số thứ tự đạt giá trị cực đại
107
(232-1), nó sẽ không được quay lại giá trị 0 mà thay vào đó, một SA mới được thiết lập để tiếp tục
việc truyền dữ liệu.
Ở phía nhận, quá trình xử lý các gói nhận được thực hiện theo cơ chế dịch cửa sổ như mô
tả ở hình 3.8. Kích thước mặc định của cửa sổ là 64. Cơ chế thực hiện như sau:
Nếu gói nhận được nằm trong vùng hợp lệ của cửa sổ và là một gói mới chứ
không phải gói truyền lại thì giá trị MAC của gói đó sẽ được kiểm tra. Nếu chính
Dịch cửa sổ qua bên
phải nếu nhận được
một gói hợp lệ.
Cửa sổ với kích thước
cố định W
N-W
N+1
Ô được đánh dấu
biểu thị một gói hợp
lệ vừa được nhận
Ô không đánh dấu cho biết
gói dữ liệu ở vị trí đó chưa
được nhận
Hình 3.8: Cơ chế dịch cửa sổ trong AH
xác (tức gói đã được xác thực) thì khe tương ứng trong cửa sổ được đánh dấu.
Nếu gói nhận được nằm bên phải của cửa sổ và là gói mới, giá trị MAC của gói
được kiểm tra. Nếu đúng thì cửa sổ được dịch một khe sang bên phải, đồng thời
khe tương ứng trong cửa sổ được đánh dấu.
Nếu gói nhận được nằm bên trái cửa sổ hoặc giá trị MAC không hợp hệ thì bị hủy
bỏ.
-Xác thực thông tin:
Mã xác thực (trường Authentication Data) được tạo ra dùng một trong 2 cách:
-HMAC-MD5-96: dùng phương pháp HMAC, thuật toán MD5, cắt lấy 96 bit đầu tiên.
-HMAC-SHA-1-96: dùng phương pháp HMAC, thuật toán SHA-1, cắt lấy 96 bit đầu tiên.
Thuật toán MAC được áp dụng trên các phần thông tin sau đây:
Các trường không bị thay đổi trong tiêu đề gói IP khi được chuyển tiếp trên mạng
hoặc có thể dự đóan được tại đầu cuối của SA. Những trường còn lại trong tiêu đề
gói IP được thay bằng các bit 0 khi tính tóan.
Các trường trong tiêu đề AH ngọai trừ trường Authentication Data. Trường này
được thay bằng các bit 0 khi tính.
Tòan bộ gói dữ liệu của lớp trên (tức phần payload của gói IP).
-Chế độ vận chuyển và chế độ đường hầm:
Hình 3.9 mô tả hai trường hợp xác thực khác nhau:
108
-Xác thực từ đầu cuối đến đầu cuối (End-to-End Authentication): là trường hợp xác thực
trực tiếp giữa hai hệ thống đầu cuối (giữa máy chủ với trạm làm việc hoặc giữa hai trạm làm
việc), việc xác thực này có thể diễn ra trên cùng mạng nội bộ hoặc giữa hai mạng khác nhau, chỉ
cần 2 đầu cuối biết được khóa bí mật của nhau. Trường hợp này sử dụng chế độ transport của AH.
-Xác thực từ đầu cuối đến trung gian (End-to-Intermediate Authentication): là trường hợp
xác thực giữa một hệ thống đầu cuối với một thiết bị trung gian (router hoặc firewall). Trường
Server
Xác thực đầu cuối
đến đầu cuối
Mạng nội bộ
Xác thực đầu
cuối đến đầu cuối
Mạng công
cộng
Router/Firewall
Xác thực đầu cuối đến
trung gian
Hình 3.9: Hai chế độ xác thực của AH
hợp này sử dụng chế độ tunnel của AH.
Hình 3.10 mô tả phạm vi áp dụng cơ chế bảo vệ của AH lên gói dữ liệu trong hai chế độ
khác nhau.
a- Gói IP gốc
IP
TCP
Data
Phạm vi thông tin được xác thực
b- Gói IP ở chế độ transport
IP
AH
TCP
Data
Phạm vi thông tin được xác thực
b- Gói IP ở chế độ tunnel
IP
(mới)
AH
IP
(cũ)
TCP
Data
Hình 3.10: Phạm vi áp dụng của AH lên gói dữ liệu ở hai chế độ transport và tunnel
109
III.2.6 ESP:
ESP (Encapsulating Security Payload) là một lựa chọn khác để thực thi IPsec bên cạnh
giao thức xác thực thông tin AH. Chức năng chính của ESP là cung cấp tính bảo mật cho dữ liệu
truyền trên mạng IP bằng các kỹ thuật mật mã. Tuy nhiên, ESP cũng còn có một tùy chọn khác là
cung cấp cả dịch vụ bảo đảm tính tòan vẹn của dữ liệu thông qua cơ chế xác thực. Như vậy, khi
Bit 0
8
16
24
31
Security Parameters Index (SPI)
Số thứ tự gói
Dữ liệu
(kích thước thay đổi)
Dữ liệu chèn (0 – 255 byte)
Kích thước chèn
Tiêu đề kế tiếp
Mã xác thực
(kích thước thay đổi)
Hình 3. 11: Cấu trúc gói ESP
dùng ESP, người dùng có thể chọn hoặc không chọn chức năng xác thực, còn chức năng mã hóa
là chức năng mặc định của ESP.
Gói dữ liệu ESP gồm các thành phần sau (hình 3.11):
-Security Parameters Index (SPI - 32 bits): Nhận dạng SA như trong giao thức AH.
-Số thứ tự gói (Sequence Number - 32 bits): Số thứ tự, có chức năng như số thứ tự trong
AH.
-Dữ liệu (Payload Data): Đây là phần dữ liệu được bảo vệ bằng mật mã. Trường này có
độ dài thay đổi. Trong chế độ vận chuyển, đây là tòan bộ gói dữ liệu của lớp 4 (TCP hoặc UDP).
Còn trong chế độ đường hầm, đây là tòan bộ gói IP. ESP chuẩn sử dụng thuật toán mật mã đối
xứng DES, tuy nhiên, có thể dùng các thuật toán mật mã khác như 3DES (3 khóa), RC5, IDEA,
triple IDEA (3 khóa), CAST, Blowfish.
-Dữ liệu chèn (Padding 0-255 bytes): Một số thuật toán mật mã yêu cầu kích thước dữ
liệu gốc phải cố định. Các byte dữ liệu giả được thêm vào để đảm bảo độ dài vùng dữ liệu. Tuy
nhiên, theo quy định của ESP, chiều dài trường pad-length và trường next-header phải cố định là
32 bit tính từ bên phải, do vậy, phần padding phải có kích thước sao cho tòan bộ phần thông tin
cần mã hóa là bội số của 32 bit.
- Kích thước chèn (Pad Length - 8 bits): Cho biết số byte của vùng dữ liệu chèn (padding).
110
- Tiêu đề kế tiếp (Next Header - 8 bits): Nhận dạng kiểu dữ liệu chứa trong phần payload
data.
- Mã xác thực (Authentication Data): Chứa thông tin xác thực, có chiều dài thay đổi
nhưng phải là bội số của 32 bit. Thông tin xác thực được tính trên tòan gói ESP ngọai trừ phần
Authentication Data.
-Chế độ vận chuyển và chế độ đường hầm:
Chế độ vận chuyển: chức năng mã hóa và xác thực thông tin được thực hiện trên phần dữ
liệu (payload data) của gói IP (tức tòan bộ đơn vị dữ liệu của lớp trên IP).
Chế độ đường hầm: tòan bộ gói IP được mã hóa và xác thực.
Sự khác nhau giữa hai chế độ hoạt động được mô tả ở hình 3.12.
a- Gói IP gốc
IP
TCP
Data
Phạm vi thông tin được xác thực
Phạm vi thông tin được mã hoá
b- Gói IP ở chế độ transport
IP
ESP
header
TCP
Data
ESP
trailer
ESP
auth
Phạm vi thông tin được xác thực
Phạm vi thông tin được mã hoá
b- Gói IP ở chế độ tunnel
IP
(mới)
ESP
header
IP
(cũ)
TCP
Data
ESP
trailer
ESP
auth
Hình 3.12: Tác dụng của ESP lên gói IP ở hai chế độ transport và tunnel
III.2.7 Quản lý khóa trong IPSec:
IPSec dựa trên kỹ thuật xác thực HMAC (hashed based MAC) và các phương pháp mật
mã đối xứng mà cơ bản là DES. Do vậy, vấn đề quản lý và phân phối các khóa bí mật giữa các
đầu cuối SA là vấn đề quan trọng trong triển khai IPSec. Có hai cơ chế để quản lý khóa:
-Quản lý khóa bằng tay (manual): người quản trị mạng tạo ra khóa và cài đặt cho các hệ
thống đầu cuối. Cơ chế này chỉ phù hợp với các hệ thống có quy mô nhỏ.
-Quản lý khóa tự động (automated): một hệ thống tự động tạo ra và phân phối khóa cho
các hệ thống đầu cuối.
IPSec sử dụng hai hệ thống quản lý khóa tự động là Oakley và ISAKMP.
-Oakley Key Determination Protocol: Đây là giao thức trao đổi khóa dựa trên giải thuật
Diffie-Hellman, có bổ sung thêm các chức năng bảo mật.
-Internet Security Association and Key Management Protocol (ISAKMP): cung cấp một
mô hình chung cho việc quản lý khóa trên Internet, định nghĩa các thủ tục và khuôn dạng riêng.
111
III.3 SECURE SOCKETS LAYER
Secure Sockets layer hay SSL là một giao thức bảo mật được Netscape thiết kế nhằm
cung cấp các kết nối bảo mật cho các ứng dụng trên nền giao thức TCP/IP. SSL đã được chuẩn
hóa và sử dụng rộng rãi trong nhiều ứng dụng trên mạng Internet như web, mail, … Phiên bản
hiện tại của SSL là 3.0. Phiên bản SSL được IEEE chuẩn hóa là được gọi là TLS (Transport Layer
Security), và được xem như là SSL phiên bản 3.1.
III.3.1 Cấu trúc SSL:
SSL thực ra bao gồm hai lớp giao thức nằm phía trên TCP. Lớp thứ nhất là giao thức
truyền dữ liệu SSL (SSL record protocol) và lớp thứ hai gồm một tập các giao thức phụ trợ (hình
3.13). Phần này giới thiệu khái quát các thành phần của SSL.
Giao thức
bắt tay
SSL
Giao thức
thay đổi
thông số mã
Giao thức
cảnh bảo
HTTP
Giao thức truyền dữ liệu
TCP
IP
Hình 3.13: Cấu trúc SSL
Hai khái niệm cơ bản thường được dùng trong SSL là kết nối (connection) và phiên giao
dịch (session).
-Kết nối là một kết nối (tạm thời) giữa một đầu cuối này với một đầu cuối kia để cung cấp
một lọai dịch vụ thích hợp. Mỗi kết nối liên kết với một phiên giao dịch (session).
-Phiên giao dịch là một liên kết giữa một máy con và một máy chủ, được tạo ra bởi giao
thức SSL Handshake protocol. Phiên giao dịch định nghĩa các tham số bảo mật dùng chung cho
nhiều kết nối.
Trạng thái của phiên giao dịch được định nghĩa bởi các thông số sau đây:
Nhận dạng phiên (Session identifier): Một chuỗi byte ngẫu nhiên được server
chọn để nhận dạng một trạng thái của phiên giao dịch.
Chứng thực khóa đối phương (Peer certificate): Chứng thực khóa công khai
(X509.v3) của thực thể đối phương. Thành phần này có thể có hoặc không.
Phương pháp nén (Compression method): Giải thuật nén dữ liệu trước khi mã hóa.
Thuật tóan mã (Cipher spec): Xác định thuật toán mã hóa và hàm băm được sử
dụng cho phiên giao dịch.
Khóa (Master secret): Khóa bí mật (48-byte) dùng chung giữa máy con và server.
112
Khả năng phục hồi (Is resumable): Cho biết phiên giao dịch này có thể khởi tạo
một kết nối mới hay không.
Tương tự, các thông số định nghĩa trạng thái của một kết nối bao gồm:
Số nhận dạng ngẫu nhiên (Server and client random): Chuỗi byte chọn ngẫu
nhiên bởi server và client, có chức năng phân biệt các kết nối với nhau.
Khóa xác thực của máy chủ (Server write MAC secret): Khóa bí mật dùng để tính
giá trị xác thực MAC trên dữ liệu gởi đi từ server.
Khóa xác thực của máy con (Client write MAC secret): Khóa bí mật dùng để tính
giá trị xác thực MAC trên dữ liệu gởi đi từ máy con.
Khóa mật mã của máy chủ (Server write key): Khóa bí mật dùng để mật mã hóa
dữ liệu gởi đi từ server.
Khóa mật mã của máy con (Client write key): Khóa bí mật dùng để mật mã hóa
dữ liệu gởi đi từ client.
Véc – tơ khởi tạo (Initialization vectors): vec-tơ khởi tạo (IV) dùng trong chế độ
mã hóa CBC (Chaining Bock Cipher). Giá trị này được khởi tạo bởi giao thức SSL
record.
Số thứ tự gói (Sequence numbers): Số thứ tự của các bản tin được gởi đi và nhận
về trên kết nối.
III.3.2 Giao thức truyền dữ liệu SSL:
Dữ liệu gốc
Phân đoạn
Nén
Gắn thông tin
xác thực (MAC)
Mật mã hoá
Gắn tiêu đề giao
thức SSL record
Hình 3.14: Hoạt động của giao thức truyền dữ liệu SSL
Giao thức truyền dữ liệu SSL (SSL record protocol) cung cấp 2 dịch vụ cơ bản cho các kết
nối SSL là dịch vụ bảo mật và dịch vụ tòan vẹn dữ liệu.
Hình 3.14 mô tả họat động của giao thức truyền dữ liệu SSL. Theo đó, các thao tác mà
SSL thực hiện trên dữ liệu bao gồm: phân đọan dữ liệu (fragmentation), nén dữ liệu
113
(compression), xác thực dữ liệu (MAC), mã hóa, thêm các tiêu đề cần thiết và cuối cùng gởi tòan
bộ đọan thông tin trên trong một segment TCP. Ở phía nhận, quá trình được thực hiện ngược lại.
Kiểu dữ
liệu
Phiên bản
chính
Phiên bản
phụ
Kích thước
dữ liệu
Dữ liệu
Thông tin
được mã
hoá
(có thể nén hoặc không nén)
Mã xác thực (0, 16 hoặc 20 byte)
Hình 3.15: Cấu trúc gói SSL record
Cấu trúc gói dữ liệu SSL record gồm các thành phần sau (hình 3.15):
-Kiểu dữ liệu (Content Type - 8 bits): Giao thức lớp trên. Giao thức này sẽ xử lý thông tin
trong gói dữ liệu SSL.
- Phiên bản chính (Major Version - 8 bits): Phiên bản chính của SSL. Đối với SSL v3, giá
trị này là 3.
- Phiên bản phụ (Minor Version - 8 bits): Phiên bản phụ của SSL. Ví dụ: đối với SSLv3
thì giá trị trường này là 0.
- Kích thước dữ liệu (Compressed Length -16 bits): Chiều dài của phần dữ liệu (plaintext),
tính theo byte.
-Dữ liệu (Plaintext): Dữ liệu của lớp trên được chuyển đi trong gói SSL record. Dữ liệu
này có thể được nén hoặc không.
-Mã xác thực (MAC): Mã xác thực, có kích thước = 0 byte nếu không dùng chức năng xác
thực.
III.3.3 Giao thức thay đổi thông số mã:
Giao thức thay đổi thông số mã (Change cipher spec protocol) là giao thức đơn giản nhất
trong cấu trúc SSL, dùng để thay đổi các thông số mã hóa trên kết nối SSL. Giao thức này chỉ
gồm có một bản tin có kích thước 1 byte, mang giá trị 1. Chức năng của bản tin này là yêu cầu cập
nhật các thông số mã hoá cho kết nối hiện hành.
III.3.4 Giao thức cảnh báo:
Giao thức cảnh báo (Alert protocol) dùng để trao đổi các bản tin cảnh báo giữa hai đầu
của kết nối SSL. Có hai mức độ cảnh báo: warning (1) và fatal (2). Mức warning chỉ đơn giản
dùng để thông báo cho đầu kia các sự kiện bất thường đang diễn ra. Mức fatal yêu cầu kết thúc kết
nối SSL hiện hành, các kết nối khác trong cùng phiên giao dịch có thể vẫn được duy trì nhưng
phiên giao dịch không được thiết lập thêm kết nối mới.
114
Các bản tin cảnh báo của SSL bao gồm:
-unexpected_message: Nhận được một bản tin không phù hợp.
-bad_record_mac: Bản tin vừa nhận có giá trị MAC không hợp lệ.
-decompression_failure: Thao tác giải nén thực hiện không thành công..
-handshake_failure: Phía gởi không thương lượng các thông số bảo mật.
-illegal_parameter: Một trường nào đó trong bản tin bắt tay (handshake message) không
hợp lệ.
-close_notify: Thông báo kết thúc kết nối.
-no_certificate: Khi nhận được yêu cầu cung cấp chứng thực khóa (certificate), nhưng nếu
không có chứng thực khóa nào thích hợp thì gởi cảnh báo này.
-bad_certificate: Chứng thực khóa không hợp lệ (chữ ký sai)
-unsupported_certificate: Kiểu chứng thực không được hỗ trợ.
-certificate_revoked: Chứng thực khóa đã bị thu hồi.
-certificate_expired: Chứng thực khóa đã hết hạn sử dụng.
-certificate_unknown: Không xử lý được chứng thực khóa vì các lý do khác với các lý do
trên.
III.3.5 Giao thức bắt tay:
Giao thức bắt tay (handshake protocol) à giao thức phức tạp nhất của SSL, được hai phía
sử dụng để xác thực lẫn nhau và thương lượng để thống nhất các thuật toán xác thực MAC và mã
hóa. Thủ tục này cũng được để trao đổi các khóa bí mật dùng cho mã hóa và MAC. Thủ tục phải
được thực hiện trước khi dữ liệu được truyền.
Thủ tục bắt tay gồm 4 giai đọan được mô tả ở hình 3.16.
III.3.6 So sánh SSL và IPSec:
SSL và IPSec là hai giao thức tương đồng với nhau về chức năng. Cả hai đều được thiết
kế để bảo vệ dữ liệu truyền trên các kết nối bằng các cơ chế xác thực và mã hóa. Tuy nhiên, hai
kỹ thuật này có những điểm khác biệt nhau như sau:
SSL họat động ở lớp socket (hình 3.13), do đó nó được gắn kết ở phần người sử
dụng (user space) trong các hệ thống đầu cuối. IPSec họat động ở lớp mạng
(network layer), nên được tích hợp vào trong chức năng của hệ điều hành. Đây
chính là sự khác nhau cơ bản nhất giửa SSL và IPSec.
Cả SSL và IPSec đều cung cấp chức năng mã hóa (Encryption), bảo vệ dữ liệu
(Integrity) và xác thực thông tin (Authentication), tuy nhiên SSL đơn giản hóa các
kỹ thuật này để áp dụng trong mô hình của nó, trong khi IPSec bao gồm một cách
đầy đủ các chi tiết thiết kế của tất cả các kỹ thuật tạo thành, và do đó, khi tổ hợp
lại sẽ xuất hiện nhiều lỗi tương thích trong nội bộ IPSec.
IPSec là thành phần của hệ điều hành, do đó, để triển khai IPSec thì phải thay đổi
cấu hình hệ điều hành mà không cần thay đổi cấu hình chương trình ứng dụng.
Ngược lại, SSL nằm ở mức người dùng nên phải cài đặt với từng ứng dụng cụ thể
(ví dụ mail, web, …) mà không cần khai báo với hệ điều hành,
115
Vì những khác biệt trên đây, SSL thường được sử dụng để bảo vệ kết nối cho từng ứng
dụng cụ thể, đặc biệt là Web, E-mail. Trong khi đó, IPSec thường được dùng để xây dựng các
mạng riêng ảo (VPN) rồi trên cơ sở đó mới triển khai các dịch vụ ứng dụng.
116
Client
Server
client_hello
server_hello
Giai đoạn 1:
Thiết lập các thông số bảo mật như phiên
bản của giao thức, nhận dạng phiên giao
dịch, thuật toán mật mã, phương pháp nén
và số ngẫu nhiên ban đầu.
Chứng thực khóa server
Khóa bí mật của server
Yêu cầu cung cấp chứng thực
Giai đoạn 2:
Server có thể gởi chứng thực khóa công khai,
trao đổi khoá và yêu cầu client cung cấp
chứng thực khóa.
Thời gian
Kết thúc server_hello
Chứng thực khóa client
Khóa bí mật của client
Giai đoạn 3:
Client gởi chứng thực khóa khi được yêu cầu
từ phía server, trao đổi khóa với server. Client
cũng có thể gởi xác minh chứng thực khóa
công khai cho server (certificate_verify)
Xác minh chứng thực khóa
Thay đổi thông số mã
Kết thúc
Giai đoạn 4:
Thay đổi các thông số của thuật toán mật mã
và kết thúc giao thức bắt tay.
Thay đổi thông số mã
Chú ý: những giao tác biểu diễn bằng nét rời
là những giao tác tuỳ chọn, có thể có hoặc
không, tuỳ thuộc vào từng tình huống ứng
dụng của SSL.
Kết thúc
Hình 3.16: Thủ tục bắt tay SSL
117
III.4 SECURE ELECTRONIC TRANSACTION
III.4.1 Tổng quan về SET:
Secure Electronic Transaction hay SET là một kỹ thuật được thiết kể để bảo vệ các thông
tin quan trọng trao đổi trên mạng (ví dụ số thẻ tín dụng) dùng trong các giao dịch thanh tóan qua
mạng Internet.
SET phiên bản 1 được đề xuất năm 1996 (MasterCard và Visa chủ trì), sau đó được nhiều
nhà sản xuất khác tham gia phát triển (như Microsoft, IBM, Netscape, RSA, Terisa và Verisign).
SET không phải là một hệ thống thanh tóan, mà chỉ là một giao thức an tòan cho phép các
đầu cuối trao đổi các thông tin bí mật, đặc biệt là các thông tin về tài khỏan ngân hàng, thông qua
các môi trường công cộng ví dụ như Internet.
-Các tính năng của SET:
Bảo mật thông tin: đặc biệt là thông tin về tài khỏan ngân hàng khi những thông
tin này được trao đổi qua mạng. SET còn có chức năng ngăn chặn người bán hàng
biết số thẻ tín dụng (credit card) của người mua hàng. Kỹ thuật mã hóa quy ước
với thuật tóan DES được dùng để cung cấp chức năng này.
Bảo tòan dữ liệu: các thông tin về việc đặt hàng, thanh tóan, thông tin cá nhân khi
gởi từ một người mua hàng đến người bán hàng được đảm bảo tòan vẹn, không bị
thay đổi. Kỹ thuật chữ ký số DSA với hàm băm SHA-1 được dùng để bảo đảm
tính năng này (trong một số bản tin của SET, HMAC được dùng thay cho DSA).
Xác thực tài khỏan của người sử dụng thẻ: cho phép người bán hàng xác minh
người dùng thẻ là chủ nhân hợp lệ của tài khoản đang đề cập. Để thực hiện chức
năng này, SET dùng chuẩn xác thực X.509 version 3.
Xác thực người bán hàng: SET cho phép người sử dụng thẻ xác thực rằng người
bán hàng có quan hệ với một tổ chức tài chính có chấp nhận thanh toán qua thẻ.
Chức năng này cũng được thực hiện dùng X.509 version 3.
Một điều cần chú ý là SET họat động bằng cách truy xuất trực tiếp đến lớp TCP/IP mà
không dùng các giao thức ở lớp ứng dụng khác. Tuy vậy họat động của SET cũng không ảnh
hưởng đến các cơ chế bảo mật khác như IPSec hoặc SSL.
-Các thành phần của SET:
-Người dùng thẻ (Cardholder): Người dùng thẻ tín dụng để thực hiện các giao dịch thanh
tóan trên Internet (người mua hàng).
-Người bán hàng (Merchant): Một cá nhân hay tổ chức bán hàng hoặc dịch vụ trên mạng
(thông qua web hoặc email). Người bán hàng phải có khả năng chấp nhận thanh tóan bằng thẻ, và
phải có quan hệ với một tổ chức tài chính nào đó (Accquirer).
-Tổ chức phát hành thẻ (Issuer): Đây là tổ chức tài chính (thường là ngân hàng) phát hành
thẻ tín dụng. Tổ chức này có trách nhiệm thanh tóan theo yêu cầu của người sử dụng thẻ.
-Trọng tài (Acquirer): Một tổ chức tài chính khác có quan hệ với người bán hàng, thực
hiện việc xác thực tài khỏan của người mua hàng và thanh tóan. Trọng tài sẽ kiểm tra tài khỏan
của người mua hàng để thông báo cho người bán hàng biết số dư trong tài khỏan của người mua
có đủ để thực hiện giao dịch hay không. Sau khi giao dịch mua hàng được thực hiện, trọng tài
thực hiện việc chuyển tiền từ tài khỏan của người mua hàng sang tài tòan khỏan của người bán
hàng, đồng thời ra yêu cầu thanh tóan đối với ngân hàng phát hành thẻ (Issuer).
118
-Cửa thanh tóan (Payment gateway): Đây là thành phần chịu trách nhiệm xử lý các bản
tin thanh tóan (payment message) được điều hành bởi trọng tài hoặc một tổ chức thứ 3 được chỉ
định. Payment gateway giao tiếp giữa SET và hệ thống thanh tóan của ngân hàng để thực hiện các
thao tác xác thực và thanh tóan. Như vậy, người bán hàng thật ra trao đổi các thông báo với cửa
ngõ thanh tóan thông qua mạng Internet, sau đó, Payment gateway mới liên kết đến hệ thống xử
lý tài chính của Acquirer.
-Tổ chức chứng thực (Certification authority _ CA): Là thành phần có chức năng tạo ra
các chứng thực (certificate) theo chuẩn X.509v3 và phân phối cho Cardholder, Merchant và
Payment Gateway. Sự thành công của SET phụ thuộc vào sự tồn tại của CA. Thông thường, CA
được tổ chức theo một mô hình phân cấp với nhiều CA liên hệ với nhau.
Người bán hàng
(Merchant)
Người dùng thẻ
(Cardholder)
Intenet
Tổ chức
chứng thực
(CA)
Tổ chức phát
hành thẻ
(Issuer)
Mạng thanh
tóan
Trọng tài
(Acquirer)
Cửa thanh tóan
(Payment gateway)
Hình 3.17: Các thành phần của SET
-Thực hiện giao dịch với SET:
Một giao dịch SET điển hình gồm các bước sau đây:
1. Khách hàng mở tài khỏan tại một ngân hàng có dịch vụ thanh tóan qua mạng
(ví dụ MasterCard, Visa card, …) và trở thành Cardholder.
2. Khách hàng nhận được một chứng thực X.509v3, được ký bởi ngân hàng bằng
chữ ký số (digital signature), trong đó chứa khóa công khai RSA của khách
hàng và ngày hết hạn.
3. Người bán hàng nhận chứng thực: Người bán hàng phải có 2 chứng thực khác
nhau chứa khóa công khai cho hai mục đích: ký nhận các thông báo (message
signing) và trao đổi khóa (key exchange). Ngòai ra, người bán hàng cũng có
một bản sao chứng thực của Payment gateway.
119
4. Khách hàng đặt hàng: thao tác này được thực hiện thông qua website của
người bán hàng hoặc qua email.
5. Xác nhận người bán hàng: người bán hàng gởi chứng thực của mình cho người
mua hàng để chứng minh tính sở hữu của mình đối với một kho hàng nào đó.
6. Lệnh đặt hàng và thanh toán được thực hiện: người mua hàng gởi lệnh đặt
hàng và lệnh thanh tóan cho người bán hàng cùng với chứng thực của mình.
Thông tin thanh toán (số thẻ tín dụng) được mã hoá sao cho người bán hàng
không thể thấy được nhưng có thể kiểm tra tính hợp lệ của nó.
7. Người bán hàng yêu cầu xác thực việc thanh tóan thông qua Payment gateway.
8. Người bán hàng xác nhận đơn đặt hàng bằng cách gởi thông báo cho người
mua hàng.
9. Người bán hàng giao hàng (hoặc bắt đầu cung cấp dịch vụ) cho người mua
hàng.
10. Người bán hàng yêu cầu thanh tóan thông qua Payment gateway.
III.4.2 Chữ ký song song:
Chữ ký song song (dual signature) là một thuật ngữ được dùng trong SET để diễn đạt một
liên kết giữa hai bản tin được gởi đi bởi cùng một người gởi nhưng cho hai người nhận khác
nhau.
Khi mua hàng qua mạng, khách hàng gởi thông tin đặt hàng OI (Order information) với
chữ ký của mình cho người bán hàng, đồng thời gởi thông tin thanh tóan PI (Payment
information) cho ngân hàng cũng với chữ ký của mình. Về nguyên tắc, ngân hàng không cần biết
các chi tiết về đặt hàng, và người bán hàng cũng không cần biết các chi tiết về thanh tóan. Chữ ký
song song được sử dụng trong trường hợp này để tránh các tranh chấp xảy ra khi thông tin đặt
hàng và thông tin thanh tóan không khớp nhau. Hình 3.18 mô tả họat động của chữ ký song song.
-Người mua hàng áp dụng hàm băm lên PI và OI (dùng SHA-1), sau đó hai giá trị băm
được nối với nhau và áp dụng hàm băm một lần nữa với khóa riêng của chính người mua hàng để
tạo thành chữ ký song song:
DS = E([H(H(PI) + H(OI)], PRc)
Trong đó PRc là khóa riêng của người mua hàng.
-Người bán hàng xác nhận chữ ký của người mua hàng bằng cách tính hai giá trị:
H(PIMS + H[OI]) và D(DS, PUc)
Trong đó PIMD là mã băm của PI, PUc là khóa công khai của khách hàng, DS là
chữ ký song song nhận được trên đơn đặt hàng.
Nếu hai giá trị trên bằng nhau, thì chữ ký xem như chính xác và đơn đặt hàng được chấp
nhận.
-Song song đó, ngân hàng cũng xác thực chữ ký song song bằng cách so sánh hai giá trị
sau đây:
H(H[OI] + OIMD) và D(DS, PUc)
Trong đó OIDM là message digest của OI.
Nếu hai giá trị vừa tính được là bằng nhau thì xem như chữ ký là chính xác và lệnh thanh
tóan được chấp nhận.
120
PI
PIMD
PRc
H
Chữ ký
song song
POMD
H
E
OI
OIMD
H
PI: Payment Information
OI: Order Information
H: Hash function (SHA-1)
| | : Nối hai khối thông tin
PIMD: PI message digest
OIMD: OI message digest
POMD: Payment Order message digest
E: Thuật tóan mật mã (RSA)
PRc: Khoá riêng của người mua hàng
Hình 3.18: Chữ ký song song (dual signature)
III.4.3 Thực hiện thanh toán trong SET:
Xử lý thanh toán (Payment processing) là công đoạn quan trọng nhất trong giao dịch SET.
Quá trình xử lý thanh toán gồm 3 công việc như sau:
Yêu cầu mua hàng (Purchase Request).
Xác thực thanh toán (Payment Authorization).
Thực hiện thanh toán (Payment Capture).
Bảng 3.1: Các giao tác của SET
Tên giao tác
Ý nghĩa
Cardholder
registration
Người mua hàng đăng ký với CA trước khi thực hiện các giao dịch SET
khác với người bán hàng.
Merchant
registration
Người bán hàng đăng ký với CA trước khi gởi các thông báo SET với
khác hàng và với Payment gateway.
Purchase request
Thông báo được người mua hàng gởi đi, trong đó chứa lệnh đặt hàng (OI)
cho người bán hàng và lệnh thanh tóan (PI) cho ngân hàng.
Payment
authorization
Trao đổi giữa người bán hàng và Payment gateway để kiểm tra số dư trong
tài khỏan của người mua hàng.
Payment capture
Người bán hàng gởi yêu cầu thanh tóan đến Payment gateway.
Certificate
and status
inquiry Trong trường hợp CA không xử lý được yêu cầu cung cấp chứng thực tức
thời, nó sẽ trả lời cho người mua hàng và người bán hàng về việc trì hõan
này. Sau đó, người mua hàng hoặc người bán hàng có thể dùng giao dịch
này để kiểm tra trạng thái của chứng thực. Nếu chứng thực đã được xử lý
121
xong thì khách hàng hoặc người bán hàng sẽ được nhận.
Purchase inquiry
Người mua hàng kiểm tra trạng thái của đơn đặt hàng sau khi đã xác nhận
đơn đặt hàng với người bán hàng.
Authorization
reversal
Người bán hàng hiệu chỉnh yêu cầu xác thực trước đó. Nếu đơn đặt hàng
không thực hiện được thì tòan bộ việc xác thực trước đó được hồi lại
(reverse). Nếu đơn đặt hàng chỉ được thực hiện một phần (người mua
hàng hồi lại một phần) thì người bán hàng chỉ hồi lại phần đã xác thực
tương ứng.
Capture reversal
Người bán hàng hiệu chỉnh các thông tin yêu cầu thanh tóan đã gởi cho
Payment gateway.
Credit
Người bán hàng trả lại tiền vào tài khỏan của người mua hàng khi hàng
được trả lại vì lý do nào đó (hư hỏng, sai quy cách, …).
Credit reversal
Người bán hàng hiệu chỉnh lại yêu cầu trả lại tiền vào tài khỏan của người
mua hàng (giao tác Credit) vừa rồi.
Payment
gateway Người bán hàng yêu cầu bản sao chứng thực của Payment gateway.
certificate request
Batch administration
Người bán hàng thông báo cho Payment gateway về các đợt giao hàng.
Error message
Thông báo lỗi xảy ra trong giao dịch.
-Yêu cầu mua hàng:
Sau khi người mua hàng hoàn tất các công việc chọn hàng và đặt mua trên mạng, thủ tục
yêu cầu mua hàng mới được bắt đầu. Chú ý rằng thao tác chọn hàng và đặt mua được thực hiện
trên các kết nối bình thường (như e-mail hay web) mà không cần có sự tham gia của SET.
Quá trình yêu cầu mua hàng bao gồm 4 giao tác: Initiate Request, Initiate Response,
Purchase Request, và Purchase Response.
Để gởi được các bản tin SET đến người bán hàng, người mua hàng cần có một bản sao các
chứng thực của Merchant và Payment gateway. Bản tin Initiate Request được sử dụng để yêu cầu
người bán hàng cung cấp các chứng thực cần thiết cho người mua hàng.
Người bán hàng sẽ trả lời bản tin Initiate Request bằng một bản tin hồi đáp Initiate
Response trong đó có chứa giá trị ngẫu nhiên (nonce) đã được tạo ra trước đó bởi người mua
hàng, một giá trị ngẫu nhiên khác do người bán hàng tạo ra, nhận diện của giao tác hiện hành,
cùng với các chứng thực của chính người bán hàng và Payment gateway. Tất cả các thông tin này
được xác thực bởi chữ ký của người bán hàng.
Người mua hàng xác minh các chứng thực nhận được, sau đó tạo ra thông tin đặt hàng
(OI) và thông tin thanh tóan (PI), trong đó có chứa nhận diện giao tác mà người bán hàng vừa tạo
ra trước đó. Người mua hàng chuẩn bị bản tin Purchase Request. Bản tin này chứa các thông tin
sau đây:
Các thông tin liên quan đến việc thanh toán bao gồm: PI, chữ ký song song,
OIMD và một phong bì số (digital envelope). Các thông tin này được mã hoá bằng
khoá bí mật Ks do người mua hàng tạo ra cho từng phiên giao dịch.
Các thông tin liên quan đến đơn đặt hàng bao gồm OI, chữ ký song song, PIMD.
Chú ý rằng OI được gởi đi trực tiếp mà không cần mã hoá.
122
Chứng thực của người mua hàng.
Khi người bán hàng nhận được Purchase Request, họ sẽ thực hiện các thao tác sau đây:
Xác minh chứng thực của người mua hàng.
Kiểm chứng chữ ký song song của người mua hàng.
Xử lý đơn đặt hàng và chuyển thông tin thanh toán cho Payment Gateway để kiểm
tra.
Gởi bản tin Purchase Response cho người mua hàng.
Bản tin Purchase Response chứa các thông tin để chấp nhận đơn đặt hàng và các tham
chiếu đến số nhận diện giao tác tương ứng. Thông tin này được ký bởi người bán hàng và gởi cho
người mua hàng cùng với chứng thực của người bán.
Người mua hàng khi nhận được bản tin Purchase Response sẽ tiến hành kiểm tra chữ ký
và chứng thực của người bán hàng.
Bản tin Purchase Request
PI
Dual Signature
Phần thông tin
được người bán
hàng chuyển cho
Payment
Gateway
Ks
Digital envelope
OIMD
PIMD
OI
Phần thông tin
nhận được bởi
người bán hàng
PUb
Dual Signature
Cardholder
cerificate
Hình 3.19: Quá trình tạo bản tin Purchase request của người mua hàng
-Xác thực thanh toán:
Đây là thủ tục mà người bán hàng xác thực tính hợp lệ của người mua hàng thông qua
Payment Gateway. Quá trình xác thực nhằm bảo đảm rằng giao dịch này được chấp thuận bởi
ngân hàng phát hành thẻ (Issuer), và do đó người bán hàng sẽ được đảm bảo thanh toán. Quá trình
này được thực hiện thông qua hai bản tin: Authorization Request và Authorization response.
123
Bản tin Purchase Request
Thông tin được
Merchant chuyển
cho Payment
Gateway
Digital envelope
POMD
PIMD
H
OI
H
So sánh
OIMD
Dual signature
D
POMD
Cardholder
certificate
PUc
Hình 3.18: Quá trình xác minh yêu cầu mua hàng (Purchase Request) tại Merchant
Bản tin Authorization Request được người bán hàng gởi đến Payment Gateway bao gồm
các thông tin sau:
Thông tin liên quan đến việc mua hàng, bao gồm: PI, chữ ký song song, OIMD và
phong bì số (digital envelope).
Thông tin liên quan đến xác thực bao gồm: nhận diện giao tác, được mã hoá bằng
khoá bí mật do người bán hàng tạo ra và phong bì số, được mã hoá bằng khoá
công khai của Payment gateway.
Các chứng thực của người mua hàng và người bán hàng.
Khi nhận được Authorization Request, Payment Gateway thực hiện các thao tác sau:
Xác minh tất cả các chứng thực.
Giải mã phong bì số của khối thông tin mua hàng.
124
Xác minh chữ ký của người bán hàng.
Giải mã phong bì số của khối thông tin xác thực.
Xác minh chữ ký song song.
Xác minh nhận diện giao tác (transaction ID).
Yêu cầu xác thực từ ngân hàng phát hành thẻ.
Nếu nhận được thông tin xác thực thành công từ ngân hàng phát hành thẻ, Payment
Gateway sẽ hồi đáp bẳng bản tin Authorization Response trong đó chứa các thông tin sau:
Thông tin liên quan đến xác thực bao gồm: khối thông tin xác thực được ký bởi
Payment Gateway và mã hoá bằng khoá bí mật do Payment Gateway tạo ra, ngoài
ra còn có phong bì số.
Thông tin liên quan đến thực hiện thanh toán.
Chứng thực của Payment gateway.
Với thông tin xác thực này, người bán hàng đã có thể bắt đầu giao hàng hoặc cung cấp
dịch vụ cho người mua hàng.
-Thực hiện thanh toán:
Để thực hiện thanh toán, người bán hàng thực hiện một giao tác với Payment Gateway gọi
là Capture transaction, giao tác này được thực hiện qua hai bản tin: Capture Request và Capture
Response.
Trong bản tin Capture Request, người bán hàng tạo ra thông tin yêu cầu thanh toán, trong
đó có khối lượng thanh toán và nhận diện giao tác (transaction ID), cùng với thông tin xác thực
nhận được trước đó từ Payment Gateway, chữ ký và chứng thực của người bán hàng.
Payment Gateway nhận được bản tin này, giải mã và thực hiện các bước kiểm tra cần thiết
trước khi yêu cầu ngân hàng phát hành thẻ chuyển tiền cho người bán hàng. Cuối cùng, Payment
Gateway sẽ thông báo cho người bán hàng bằng bản tin Capture Response.
Tóm tắt chương:
-Các ứng dụng bảo mật (security application) được xây dựng dựa trên các kỹ thuật cơ sở
trình bày ở chương 2 bao gồm: mật mã đối xứng, mật mã bất đối xứng, hàm băm, chữ ký số,
chứng thực khóa công khai, …
-Kỹ thuật xác thực được xem là kỹ thuật cơ bản nhất để quản lý truy xuất. Mật khẩu là
phương tiện xác thực đơn giản nhất và hiệu quả nhất từ trước đến nay. Tuy nhiên, mật khẩu được
quản lý và sử dụng bởi con người, nên cần phải có các chính sách hợp lý để đảm bảo mật khẩu
không bị tiết lộ.
-Trong mô hình thông tin điểm – điểm, hai giao thức xác thực thường được dùng là PAP
(Password Authentication Protocol) và CHAP (Challenge Handshake Authentication Protocol)
trong đó, giao thức CHAP có nhiều ưu điểm hơn và an tòan hơn do không gởi mật khẩu đi trực
tiếp trên mạng.
-Trong mô hình phân tán, giao thức xác thực cần phải đáp ứng được hai yêu: đảm bảo
thông tin xác thực không bị đánh cắp và người sử dụng chỉ cần xác thực một lần cho tất cả các
dịch vụ trong hệ thống phân tán. Kerberos là một giao thức xác thực đáp ứng được 2 yêu cầu này.
125
-Giao thức bảo mật IP Security (IPSec) là một sự mở rộng của giao thức IP, cho phép lớp
mạng thực hiện các chức năng bảo mật và tòan vẹn cho dữ liệu truyền đi trên mạng. IPSec là một
chuẩn phức tạp, bao gồm đặc tả của nhiều chuẩn khác, được triển hai dựa trên hai giao thức
đóng gói cơ bản là ESP và AH. IPSec họat động ở hai chế độ là chế độ vận chuyển (transport) và
chế độ đường hầm (tunnel). Họat động của IPSec là trong suốt đối với các giao thức ở lớp ứng
dụng.
-Giao thức bảo mật SSL (Secure Sockets Layer) là một giao thức cộng thêm họat động bên
trên giao thức TCP. SSL cung cấp hai dịch vụ cơ bản là mật mã hóa và xác thực dữ liệu / xác thực
đầu cuối cho các ứng dụng Internet như web, e-mail, …. SSL được sử dụng rất phổ biến hiện nay
trên mạng Internet, đặt biệgt trong các thủ tục trao đổi thông tin bí mật giữa client và server như
đăng nhập vào hộp thư điện tử, nhập số thẻ tín dụng khi mua hàng, …
-SET (Secure Electronic Transaction) là một ứng dụng bảo mật trong các hệ thống thanh
tóan qua mạng. SET là một ứng dụng truy xuất trực tiếp đến lớp TCP (tức không thông qua các
giao thức ứng dụng như mail hay web, …). SET định nghĩa một mô hình phức tạp bao gồm nhiều
thực thể như người mua hàng, người bán hàng, ngân hàng phát hành thẻ, trọng tài, cửa thanh
tóan, … SET được phát triển bởi các tổ chức tài chính có uy tín như MasterCard, VISA, các tổ
chức công nghệ như Microsoft, IBM, RSA, Verisign, …
CÂU HỎI VÀ BÀI TẬP.
A- Câu hỏi trắc nghiệm.
Câu 1. Nguyên tắc đảm bảo an toàn cho mật khẩu đối với người sử dụng:
a- Quy định thời gian sử dụng tối đa của mật khẩu.
b- Không dùng mật khẩu quá ngắn, mật khẩu có chứa tên người dùng, mật khẩu là
những từ có nghĩa trong tự điển.
c- Mã hoá mật khẩu khi lưu trữ.
d- Tất cả đều đúng.
Câu 2. Trong thủ tục xác thực mạng đơn giản, cơ chế nào đảm bảo mỗi thẻ (ticket) chỉ được sử
dụng bởi một máy duy nhất?
a- Máy con phải được xác thực bởi Authentication Server (AS).
b- Trong thẻ cấp cho máy con có chứa địa chỉ mạng của máy máy con (ADC).
c- Trong thẻ có chứa nhận dạng của máy chủ cung cấp dịch vụ (IDV).
d- Tất cả đều đúng.
Câu 3. Mục đích của TGS (Ticket Granting Server) trong thủ thục xác thực qua mạng?
a- Cho phép người dùng chỉ đăng nhập một lần nhưng sử dụng được nhiều dịch vụ.
b- Giảm tải xử lý cho AS
c- Để hạn chế việc gởi mật khẩu trực tiếp trên mạng.
d- Tất cả đều sai.
Câu 4. Chọn câu đúng về giao thức xác thực Kerberos 4:
a- Sử dụng thuật toán mã hoá DES
b- Để sử dụng một dịch vụ nào đó, client phải thực hiện 2 thao tác: xác thực với AS
để được cấp thẻ Ticket-granting-Ticket, sau đó xác thực với TGS để nhận được
126
thẻ Service-granting-Ticket trước khi có thể yêu cầu máy chủ cung cấp dịch vụ.
c- Người dùng chỉ cần nhập mật khẩu một lần trong suốt phiên làm việc.
d- Tất cả đều đúng.
Câu 5. Trong Kerberos 4, bản tin yêu cầu xác thực gởi từ máy con đến AS chứa các thông tin
nào?
a- Nhận diện của người dùng (IDC), nhận diện của TGS (IDtgs) và nhãn thời gian
đồng bộ TS1.
b- Tên đăng nhập và mật khẩu.
c- Tên đăng nhập và địa chỉ mạng của máy con.
d- Mật khẩu đã mã hoá và địa chỉ mạng của máy con.
Câu 6. Trong Kerberos 4, bản tin yêu cầu dịch vụ gởi từ máy con đến máy chủ dịch vụ chứa các
thông tin nào?
a- Chứa thẻ truy xuất dịch vụ được cấp bởi TGS.
b- Chứa thẻ truy xuất dịch vụ được cấp bởi TGS và tên đăng nhập.
c- Chứa thẻ truy xuất dịch vụ cùng với Authenticator gồm (IDc + ADC + TS5) gởi
trực tiếp.
d- Chứa thẻ truy xuất dịch vụ cùng với Authenticator gồm (IDc + ADC + TS5) được
mã hoá bằng khoá bí mật dùng chung giữa máy con và máy chủ cung cấp dịch
vụ.
Câu 7. Thế nào là một lãnh địa Kerberos (Kerberos Realm)?
a- Là hệ thống bao gồm Kerberos server, các máy chủ cung cấp dịch vụ và nhiều
máy con.
b- Là phạm vi mạng được quản lý bởi một AS.
c- Là phạm vi mạng được quản lý bởi một TGS.
d- Tất cả đều sai.
Câu 8. Điểm khác nhau giữa Krberos 4 và Kerberos 5:
a- Kerberos 5 không giới hạn thời gian tồn tại của thẻ, Kerberos 4 giới hạn thời gian
tồn tại của thẻ là khoảng 21 giờ.
b- Kerberos 5 sử dụng mật mã bất đối xứng, Kerberos 4 sử dụng mật mã đối xứng.
c- Kerberos 5 dùng tên đăng nhập và mật khẩu để xác thực người dùng, Kerberos 4
dùng địa chỉ IP để xác thực.
d- Tất cả đều đúng.
Câu 9. Ứng dụng của IPSec:
a- Xây dựng các website an toàn cho các ứng dụng thương mại điện tử.
b- Xây dựng các mạng riêng ảo VPN trên nền mạng Internet công cộng.
c- Cho phép truy xuất từ xa một cách an toàn.
d- Tất cả các ứng dụng trên.
Câu 10. Chọn câu đúng về IPSec:
a- Khi sử dụng IPSec, kích thước gói dữ liệu IP tăng lên, do đó hiệu suất truyền
giảm xuống.
b- Khi cài đặt IPSec trên một hệ thống thì IPSec sẽ có tác dụng bảo vệ cho tất cả các
127
dịch vụ ứng dụng chạy trên hệ thống đó.
c- IPSec có thể được thực hiện như một phần mềm ứng dụng.
d- Câu a và b.
Câu 11. SA là gì?
a- Là một kết nối dùng IPSec giữa hai máy tính bất kỳ.
b- Là một quan hệ truyền thông một chiều giữa hai thực thể IPSec.
c- Là một ứng dụng có chức năng phân tích và đánh giá mức độ an toàn của hệ
thống.
d- Tất cả đều sai.
Câu 12. Đặc điểm của AH:
a- Có khả năng mật mã toàn bộ dữ liệu trao đổi giữa các thực thể IPSec.
b- Dùng chữ ký số để xác thực thông tin.
c- Chế độ vận chuyển chỉ cho phép xác thực dữ liệu giữa hai thiết bị mạng (router)
có hỗ trợ IPSec.
d- Tất cả đều sai.
Câu 13. Giao thức ESP:
a- Cung cấp cơ chế mật mã và xác thực dữ liệu.
b- Tiêu đề của ESP gồm hai phần, nằm trước và năm sau gói IP gốc.
c- Sử dụng kỹ thuật mật mã đối xứng để bảo vệ dữ liệu.
d- Tất cả đều đúng.
Câu 14. Quản lý khoá trong IPSec:
a- Có chức năng tạo ra và phân phối khoá công khai của các đầu cuối IPSec.
b- Có thể sử dụng PKI cho mục đính quản lý khoá trong IPSec.
c- Dùng giao thức ISAKMP để tạo và phân phối khoá bí mật giữa các đầu cuối
IPSec.
d- Tất cả đều sai.
Câu 15. Đặc điểm của SSL:
a- Là thành phần của Hệ điều hành.
b- Cung cấp kết nối an toàn cho tất cả các dịch vụ ứng dụng trên cùng một hệ thống.
c- Sử dụng mật mã đối xứng để mã hoá dữ liệu.
d- Tất cả các đặc điểm trên.
Câu 16. Chức năng của giao thức SSL record:
a- Phân đoạn dữ liệu, nén, tạo mã xác thực, mật mã hoá dữ liệu.
b- Cung cấp cơ chế đảm bảo tính toàn vẹn và tính bảo mật cho dữ liệu.
c- Nén dữ liệu để tăng hiệu suất truyền
d- Tất cả đều sai.
Câu 17. Thủ tục bắt tay (handshake protocol) trong SSL thực hiện các chức năng nào sau đây:
a- Thiết lập các thông số kết nối giữa client và server.
b- Trao đổi chứng thực để client nhận được khoá công khai của server và ngược lại,
128
các khoá này dùng để mật mã dữ liệu trao đổi giữa client và server.
c- Thay đổi các thông số về thuật toán mật mã.
d- Câu a và c.
Câu 18. Secure Electronic Transaction (SET):
a- Là một ứng dụng thương mại điện tử trên nền của IPSec.
b- Là một giao thức an toàn cho các ứng dụng toán qua mạng.
c- Dùng mật mã bất đối xứng (RSA) để mật mã hóa thông tin.
d- Tất cả đều đúng.
Câu 19. Trong một giao dịch trên SET:
a- Người mua hàng (cardholder) phải có thẻ tín dụng do một ngân hàng có hỗ trợ
dịch vụ thanh toán qua mạng phát hành.
b- Người bán hàng (merchant) phải có quan hệ với ngân hàng phát hành thẻ.
c- Việc chuyển tiền từ tài khoản của người mua hàng sang tài khoản của người bán
hàng được thực hiện theo yêu cầu của người bán hàng mà không cần một thành
phần thứ 3 nào.
d- Việc chọn lựa hàng và quyết định mua hàng phải được thực hiện thông qua giao
dịch SET thì mới có ý nghĩa.
Câu 20. Thế nào là chữ ký song song (dual signature)?
a- Là một chữ ký duy nhất nhưng gồm hai bản sao gởi cho hai đối tác cùng lúc.
b- Là một chữ ký nhưng gồm hai thành phần, có chức năng chứng thực hai nội dung
khác nhau với hai đối tác khác nhau.
c- Gồm hai chữ ký khác nhau nhưng được ghép chung trong một bản tin để tiết
kiệm chi phí truyền trên mạng.
d- Là một chữ ký nhưng được tạo ra bằng việc áp dụng hàm tạo chữ ký hai lần lên
cùng một khối thông tin gốc nhằm đảm bảo tính an toàn của chữ ký.
Câu 21. Thứ tự thực hiện các giao tác trong SET:
a- Xác thực thanh toán, yêu cầu mua hàng, thực hiện thanh toán.
b- Yêu cầu mua hàng, xác thực thanh toán, thực hiện thanh toán.
c- Yêu cầu mua hàng, thực hiện thanh toán, xác thực thanh toán.
d- Tuỳ từng trường hợp mà thứ tự thực thi có thể khác nhau.
B- Bài tập
Câu 22. Trong giao thức AH của IPSec, thao tác tạo ra mã xác thực (MAC) không được thực hiện
trên toàn bộ gói dữ liệu IP mà chỉ thực hiện trên các phần không thay đổi trong quá trình
truyền (imutable) hoặc những phần có thay đổi nhưng có thể đoán được. Hãy chỉ ra trong
gói IP (version 4), những phần nào có thay đổi, không thay đổi hoặc thay đổi nhưng đoán
trước được trong qúa trình truyền?
Câu 23. Ở chế độ vận chuyển của IPSec, một lớp tiêu đề (header) khác của gói IP được tạo ra
song song với tiêu đề cũ. Những thành phần nào của tiêu đề mới giống với tiêu đề cũ?
Câu 24. Thực hiện cấu hình IPSec trên Windows 2003 server.
Câu 25. Cài đặt và cấu SSL cho Website trên Windows 2003 server.
---------129
HƯỚNG DẪN TRẢ LỜI CÂU HỎI VÀ BÀI TẬP.
Chương I:
Câu 1.
c
Câu 9.
d
Câu 17.
a
Câu 25.
d
Câu 2.
b
Câu 10.
b
Câu 18.
d
Câu 26.
d
Câu 3.
d
Câu 11.
a
Câu 19.
c
Câu 27.
c
Câu 4.
d
Câu 12.
d
Câu 20.
d
Câu 28.
a
Câu 5.
a
Câu 13.
c
Câu 21.
b
Câu 29.
c
Câu 6.
b
Câu 14.
d
Câu 22.
c
Câu 30.
d
Câu 7.
c
Câu 15.
c
Câu 23.
c
Câu 31.
d
Câu 8.
a
Câu 16.
a
Câu 24.
d
Chương II:
Câu 1.
b
Câu 6.
a
Câu 11.
d
Câu 16.
a
Câu 2.
d
Câu 7.
b
Câu 12.
d
Câu 17.
d
Câu 3.
c
Câu 8.
b
Câu 13.
c
Câu 18.
d
Câu 4.
b
Câu 9.
a
Câu 14.
c
Câu 19.
a
Câu 5.
b
Câu 10.
c
Câu 15.
d
Câu 20.
D
Câu 21.
Thực hiện thuật toán DES bằng tay. Chú ý khoá phụ là K16.
Câu 22.
Chứng minh tương tự đối với cấu trúc Feistel.
Câu 23.
Câu 24.
Thực hiện bằng tay thao tác mở rộng khoá (expand key) của AES.
Câu 25.
Thực hiện thuật toán RSA với các thông số tương ứng.
Câu 26.
Thực hiện thuật toán Diffie-Hellman.
Chương III:
Câu 1.
b
Câu 7.
a
Câu 13.
d
Câu 19.
a
Câu 2.
b
Câu 8.
a
Câu 14.
c
Câu 20.
b
Câu 3.
a
Câu 9.
d
Câu 15.
c
Câu 21.
b
Câu 4.
d
Câu 10.
b
Câu 16.
b
Câu 5.
a
Câu 11.
d
Câu 17.
d
Câu 6.
d
Câu 12.
d
Câu 18.
b
130
THUẬT NGỮ VIẾT TẮT.
3DES
Triple Data Encryption Standard
AAA
Access Control, Authentication, Auditing
AES
Advanced Encryption Standard
AH
Authentication Header
ANSI
American National Standards Institute
AS
Authentication Server
CBC
Cipher Block Chaining
CC
Common Criteria
CESG
Communications-Electronics Security Group
CFB
Cipher Feedback
CHAP
Challenge Handshake Authentication Protocol
CIA
Confidentiality, Integrity, Availability
CMAC
Cipher-Based Message Authentication Code
CRT
Chinese Remainder Theorem
DAC
Discretionary Access Control
DDoS
Distributed Denial of Service
DES
Data Encryption Standard
DoS
Denial of Service
DSA
Digital Signature Algorithm
DSS
Digital Signature Standard
ECB
Electronic Codebook
ESP
Encapsulating Security Payload
FIPS
Federal Information Processing Standard
HMAC
Hash-based Message Authentication Code
IAB
Internet Architecture Board
ICMP
Internet Control Message Protocol
IDS
Intrusion Detection System
IDEA
International Data Encryption Algorithm
IETF
Internet Engineering Task Force
IP
Internet Protocol
IPSec
IP Security
ISAKMP
Internet Security Association and Key Management Protocol
ISO
International Organization for Standardization
ITU
International Telecommunication Union
ITU-T
ITU Telecommunication Standardization Sector
IV
Initialization Vector
131
KDC
Key Distribution Center
LAN
Local Area Network
MAC
Message Authentication Code
MAC
Mandatory Access Control
MD5
Message Digest, Version 5
MIC
Message Integrity Code
MIME
Multipurpose Internet Mail Extension
MITM
Man-in-the-middle attack
MTU
Maximum Transmission Unit
NAT
Network Address Translation
NIST
National Institute of Standards and Technology
NSA
National Security Agency
NTFS
NT File System
OFB
Output Feedback
PAP
Password Authentication Protocol
PCBC
Propagating Cipher Block Chaining
PGP
Pretty Good Privacy
PKI
Public Key Infrastructure
PRNG
Pseudorandom Number Generator
RBAC
Role-based Access Control
RFC
Request for Comments
RNG
Random Number Generator
SATAN
System Administrator Tool for Analyzing Network
RSA
Rivest-Shamir-Adelman
SET
Secure Electronic Transaction
SHA
Secure Hash Algorithm
SHS
Secure Hash Standard
S/MIME
Secure MIME
SNMP
Simple Network Management Protocol
SNMPv3
Simple Network Management Protocol Version 3
SSL
Secure Sockets Layer
TCP
Transmission Control Protocol
TGS
Ticket-Granting Server
TLS
Transport Layer Security
UDP
User Datagram Protocol
WAN
Wide Area Network.
132
TÀI LIỆU THAM KHẢO:
[1]
William Stallings, Cryptography and Network Security: Principles and Practices, 4th
edition, Prentice Hall, 2005.
[2]
Matt Bishop, Introduction to Computer Security, Prentice Hall PTR, 2004.
[3]
Mark Stamp, Information Security: Principles and Practices, John Wiley & Sons, 2006
[4]
Wenbo Mao, Modern Cryptography: Theory and Practice, Prentice Hall PTR, 2003
[5]
Vesna Hasler, Security Fundamentals for E-Commerce, Artech House, 2001
[6]
Will Schmied, Security + Study guide, Syngress, 2003.
133
MỤC LỤC
CHƯƠNG I
TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG THÔNG TIN ............................... 2
I.1
TỔNG QUAN.................................................................................................................. 2
I.2
CÁC ĐẶC TRƯNG CỦA MỘT HỆ THỐNG THÔNG TIN BẢO MẬT ...................... 3
I.2.1
Tính bí mật: ................................................................................................................. 4
I.2.2
Tính toàn vẹn:.............................................................................................................. 4
I.2.3
Tính khả dụng:............................................................................................................. 5
I.3
CÁC NGUY CƠ VÀ RỦI RO ĐỐI VỚI HỆ THỐNG THÔNG TIN............................. 6
I.3.1
Nguy cơ: ...................................................................................................................... 6
I.3.2
Rủi ro và quản lý rủi ro:............................................................................................... 7
I.3.3
Vấn đề con người trong bảo mật hệ thống: ................................................................. 8
I.4
NGUYÊN TẮC XÂY DỰNG MỘT HỆ THỐNG BẢO MẬT....................................... 9
I.4.1
Chính sách và cơ chế: .................................................................................................. 9
I.4.2
Các mục tiêu của bảo mật hệ thống:.......................................................................... 11
I.5
CHIẾN LƯỢC BẢO MẬT HỆ THỐNG AAA............................................................. 12
I.5.1
Điều khiển truy xuất: ................................................................................................. 12
I.5.2
Xác thực:.................................................................................................................... 14
I.5.3
Kiểm tra:.................................................................................................................... 16
I.6
CÁC HÌNH THỨC XÂM NHẬP HỆ THỐNG............................................................. 18
I.6.1
Các phương thức tấn công:........................................................................................ 20
I.6.2
Các phương thức xâm nhập hệ thống bằng phần mềm phá hoại ............................... 27
I.7
KỸ THUẬT NGĂN CHẶN VÀ PHÁT HIỆN XÂM NHẬP ....................................... 30
I.7.1
Tường lửa: ................................................................................................................. 30
I.7.2
Hệ thống phát hiện xâm nhập:................................................................................... 33
CHƯƠNG II MẬT MÃ VÀ XÁC THỰC THÔNG TIN......................................................... 42
II.1
TỔNG QUAN VỀ MẬT MÃ:....................................................................................... 42
II.1.1
Giới thiệu:.............................................................................................................. 42
II.1.2
Các thành phần của một hệ thống mã hoá:............................................................ 42
II.1.3
Các tiêu chí đặc trưng của một hệ thống mã hoá: ................................................. 43
II.1.4
Tấn công một hệ thống mật mã: ............................................................................ 43
II.2
KỸ THUẬT MẬT MÃ ĐỐI XỨNG:............................................................................ 44
II.2.1
Cấu trúc mã khối cơ bản Feistel: ........................................................................... 45
II.2.2
Thuật toán mật mã DES: ....................................................................................... 49
II.2.3
Thuật tóan mật mã Triple DES:............................................................................. 55
II.2.4
Thuật tóan mật mã AES: ....................................................................................... 57
II.2.5
Các thuật toán mật mã đối xứng khác: .................................................................. 63
134
II.3
KỸ THUẬT MẬT MÃ BẤT ĐỐI XỨNG.................................................................... 64
II.3.1
Cấu trúc hệ thống mật mã bất đối xứng: ............................................................... 64
II.3.2
Thuật toán mật mã RSA: ....................................................................................... 66
II.3.3
Thuật toán trao đổi khoá Diffie-Hellman: ............................................................. 68
II.3.4
Đánh giá kỹ thuật mật mã bất đối xứng: ............................................................... 70
II.4
CÁC HÀM BĂM........................................................................................................... 70
II.4.1
Xác thực thông tin: ................................................................................................ 70
II.4.2
Các hàm băm bảo mật: .......................................................................................... 73
II.4.3
Thuật toán băm SHA:............................................................................................ 74
II.4.4
Thuật toán băm MD5: ........................................................................................... 77
II.5
CHỮ KÝ SỐ.................................................................................................................. 77
II.5.1
Nguyên lý hoạt động của chữ ký số: ..................................................................... 77
II.5.2
Chuẩn chữ ký DSS: ............................................................................................... 80
II.6
QUẢN LÝ KHOÁ......................................................................................................... 83
II.6.1
Quản lý khoá công khai trong mật mã bất đối xứng: ............................................ 83
II.6.2
Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật:......................................... 84
II.6.3
Cơ sở hạ tầng khóa công khai: .............................................................................. 85
CHƯƠNG III CÁC ỨNG DỤNG BẢO MẬT TRONG HỆ THỐNG THÔNG TIN ............. 93
III.1
GIAO THỨC XÁC THỰC............................................................................................ 93
III.1.1
Mật khẩu:............................................................................................................... 93
III.1.2
Xác thực trong mô hình điểm-điểm: ..................................................................... 94
III.1.3
Xác thực trong các hệ thống phân tán: .................................................................. 95
III.1.4
Giao thức xác thực Kerberos:................................................................................ 98
III.2
IP SECURITY ............................................................................................................. 104
III.2.1
Các ứng dụng và đặc điểm của IPSec: ................................................................ 104
III.2.2
Cấu trúc IPSec: .................................................................................................... 105
III.2.3
Quan hệ bảo mật:................................................................................................. 106
III.2.4
Chế độ vận chuyển và chế độ đường hầm:.......................................................... 106
III.2.5
AH: ...................................................................................................................... 107
III.2.6
ESP: ..................................................................................................................... 110
III.2.7
Quản lý khóa trong IPSec:................................................................................... 111
III.3
SECURE SOCKETS LAYER..................................................................................... 112
III.3.1
Cấu trúc SSL: ...................................................................................................... 112
III.3.2
Giao thức truyền dữ liệu SSL:............................................................................. 113
III.3.3
Giao thức thay đổi thông số mã:.......................................................................... 114
III.3.4
Giao thức cảnh báo:............................................................................................. 114
III.3.5
Giao thức bắt tay: ................................................................................................ 115
III.3.6
So sánh SSL và IPSec: ........................................................................................ 115
135
III.4
SECURE ELECTRONIC TRANSACTION ............................................................... 118
III.4.1
Tổng quan về SET:.............................................................................................. 118
III.4.2
Chữ ký song song: ............................................................................................... 120
III.4.3
Thực hiện thanh toán trong SET: ........................................................................ 121
HƯỚNG DẪN TRẢ LỜI CÁC CÂU HỎI VÀ BÀI TẬP ....................................................... 130
THUẬT NGỮ VIẾT TẮT........................................................................................................ 131
TÀI LIỆU THAM KHẢO........................................................................................................ 133
----------
136