Giáo trình An toàn và bảo mật thông tin | Đại học Gia Định

Giáo trình An toàn và bảo mật thông tin | Đại học Gia Định. Tài liệu được biên soạn dưới dạng file PDF gồm 136 trang, giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kì thi sắp tới. Mời bạn đọc đón xem!

Giáo Trình An Toàn Và Bảo Mật Thông Tin
TRƯỜNG ĐẠI HỌC GIAO THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH
GIÁO TRÌNH
AN TOÀN VÀ BẢO MẬT THÔNG TIN
- 1 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Mở đầu
Gần đây, môn học “An toàn bảo mật thông tin” đã được đưa vào giảng dạy tại
hầu hết các Khoa Công nghệ Thông tin của các trường đại học cao đẳng. Do các ứng
dụng trên mạng Internet ngày các phát triển mở rộng, nên an toàn thông tin trên mạng
đã trở thành nhu cầu bắt buộc cho mọi hệ thống ứng dụng. Để đáp ứng yêu cầu học tập
tự tìm hiểu của sinh viên các chuyên ngành Công nghệ Thông tin, B môn Khoa học máy
tính, Khoa Công nghệ Thông tin, trường đại học Giao thông đã tổ chức biên soạn giáo trình
này. Nội dung của được dựa trên một số tài liệu, nhưng chủ yếu cuốn sách của Giáo
William Stallings “Cryptography and Network Security: Principles and Practice”.
Cuốn sách trên đã được dùng làm tài liệu giảng dạy tại nhiều trường đại học. Đồng thời
giáo trình này cũng được hoàn thiện từng bước dựa trên i giảng của tác giả cho 4 khóa
sinh viên Khoa Công nghệ Thông tin vừa qua. Với mục đích trang bị các kiến thức sở
vừa đủ giúp cho sinh viên hiểu được bản chất của các khía cạnh an ninh trên mạng,
trong giáo trình tác giả đã cố gắng trình bày tóm tắt các phần lý thuyết cơ bản và đưa ra các
ứng dụng thực tế.
Giáo trình gồm 8 chương. Chương đầu nêu tổng quan về bảo mật, chương 2 tóm tắt
lược về c điển, chương 3 trình bày những khái niệm bản về trường số học,
chương 4 giới thiệu về khối chuẩn dữ liệu, chương 5 nêu về công khai
RSA, chương 6 đưa ra khái niệm xác thực hàm băm, chương 7 giới thiệu ứng dụng về
an toàn Web IP cuối cùng chương 8 tóm tắt về kẻ m nhập biện pháp phòng
chống bức tường lửa.
Do lần đầu biên soạn chưa nhiều kinh nghiệm thực tế, nên không tránh khỏi những
sai sót và lỗi in ấn nhất định. Tác giả xin vui lòng tiếp nhận mọi sự đóng góp giúp cho giáo
trình “An toàn bảo mật thông tin” ngày càng tốt hơn. Mọi ý kiến xây dựng xin gửi về
theo địa chỉ sau: Trần Văn Dũng, Khoa Công nghệ Thông tin, Đại học Giao thông Vận tải,
Láng Thượng, Đống đa, Hà nội.
- 2 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
MỤC LỤC
Mở đầu 2
2
4
CHƯƠNG I.................................................................................................................................................5
TỔNG QUAN VỀ BẢO MẬT....................................................................................................................5
I.1 Giới thiệu chung về bảo mật thông tin...................................................................................................5
I.2 Dịch vụ, cơ chế, tấn công.......................................................................................................................7
I.3 Mô hình an toàn mạng............................................................................................................................8
I.4 Bảo mật thông tin trong hệ cơ sở dữ liệu.............................................................................................10
CHƯƠNG II...............................................................................................................................................13
MÃ CỔ ĐIỂN............................................................................................................................................13
II.1 Mã đối xứng........................................................................................................................................13
II.2 Các mã thế cổ điển thay thế................................................................................................................15
II.3 Các mã thế cổ điển hoán vị.................................................................................................................21
II.4 Một số vấn đề khác..............................................................................................................................22
CHƯƠNG III.............................................................................................................................................25
TRƯỜNG HỮU HẠN...............................................................................................................................25
III.1 Các cấu trúc đại số.............................................................................................................................25
III.2 Số học trên Modulo............................................................................................................................26
III.3 Trường Galoa.....................................................................................................................................29
III.4 Giới thiệu lý thuyết số........................................................................................................................34
CHƯƠNG IV:............................................................................................................................................40
CHUẨN MÃ DỮ LIỆU (DES) VÀ CHUẨN MÃ NÂNG CAO (AES)...................................................40
IV.1 Mã khối hiện đại................................................................................................................................40
IV.2 Chuẩn mã dữ liệu (DES)....................................................................................................................42
IV.3 Chuẩn mã nâng cao (AES)................................................................................................................50
IV.4 Các mã đối xứng đương thời.............................................................................................................57
IV.5 Bảo mật dùng khoá đối xứng.............................................................................................................62
CHƯƠNG V..............................................................................................................................................66
MÃ CÔNG KHAI VÀ QUẢN LÝ KHOÁ................................................................................................66
V.1 Mã khoá công khai..............................................................................................................................66
- 3 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.2 RSA 68
V.3 Quản lý khoá.......................................................................................................................................71
V.4 Trao đổi khoá Diffie Hellman.............................................................................................................74
V.5 Mã đường cong Elip............................................................................................................................75
CHƯƠNG VI.............................................................................................................................................80
XÁC THỰC MẪU TIN VÀ CÁC HÀM HASH.......................................................................................80
VI.1 Xác thực mẩu tin................................................................................................................................80
VI.2 Các hàm Hash (hay còn gọi là hàm băm)..........................................................................................82
VI.3 Các thuật toán Hash và MAC............................................................................................................84
VI.4 Các ứng dụng xác thực......................................................................................................................93
CHƯƠNG VII...........................................................................................................................................98
AN TOÀN IP VÀ WEB............................................................................................................................98
VII.1 An toàn IP.........................................................................................................................................98
VII.2 An toàn Web.....................................................................................................................................99
VII.3 Thanh toán điện tử an toàn.............................................................................................................103
VII.4 An toàn thư điện tử.........................................................................................................................105
CHƯƠNG VIII........................................................................................................................................111
KẺ XÂM NHẬP, PHẦN MỀM CÓ HẠI VÀ BỨC TƯỜNG LỬA.......................................................111
VIII.1 Kẻ xâm nhập.................................................................................................................................111
VIII.2 Phần mềm có hại...........................................................................................................................114
VIII.3 Tràn bộ đệm..................................................................................................................................118
VIII.4 Bức tường lửa................................................................................................................................125
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT...........................................................................131
TÀI LIỆU THAM KHẢO.......................................................................................................................132
PHỤ LỤC 134
- 4 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG I
TỔNG QUAN VỀ BẢO MẬT
I.1 Giới thiệu chung về bảo mật thông tin
I.1.1 Mở đầu về bảo mật thông tin
Ngày nay với sự phát triển bùng nổ của công nghệ thông tin, hầu hết các thông tin của doanh nghiệp như
chiến lược kinh doanh, các thông tin về khách hàng, nhà cung cấp, tài chính, mức lương nhân viên,…đều
được lưu trữ trên hệ thống máy tính. Cùng với sự phát triển của doanh nghiệpnhững đòi hỏi ngày càng
cao của môi trường kinh doanh yêu cầu doanh nghiệp cần phải chia sẻ thông tin của mình cho nhiều đối
tượng khác nhau qua Internet hay Intranet. Việc mất t, rỉ thông tin thể ảnh hưởng nghiêm trọng
đến tài chính, danh tiếng của công ty và quan hệ với khách hàng.
Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp thể dẫn đến mất t thông
tin, thậm chí thể làm sụp đổ hoàn toàn hệ thống thông tin của doanh nghiệp. Vì vậy an toàn và bảo mật
thông tin là nhiệm vụ rất nặng nề và khó đoán trước được, nhưng tựu trung lại gồm ba hướng chính sau:
- Bảo đảm an toàn thông tin tại máy chủ
- Bảo đảm an toàn cho phía máy trạm
- Bảo mật thông tin trên đường truyền
Đứng trước yêu cầu bảo mật thông tin, ngoài việc xây dựng các phương thức bảo mật thông tin thì người
ta đã đưa ra các nguyên tắc về bảo vệ dữ liệu như sau:
- Nguyên tắc hợp pháp trong lúc thu thập và xử lý dữ liệu.
- Nguyên tắc đúng đắn.
- Nguyên tắc phù hợp với mục đích.
- Nguyên tắc cân xứng.
- Nguyên tắc minh bạch.
- Nguyên tắc được cùng quyết định cho từng nhân bảo đảm quyền truy cập cho người liên
quan.
- Nguyên tắc không phân biệt đối xử.
- Nguyên tắc an toàn.
- Nguyên tắc có trách niệm trước pháp luật.
- Nguyên tắc giám sát độc lập và hình phạt theo pháp luật.
- Nguyên tắc mức bảo vệ tương ứng trong vận chuyển dữ liệu xuyên biên giới.
đây chúng ta sẽ tập trung xem xét các nhu cầu an ninh đề ra các biện pháp an toàn cũng như vận
hành các cơ chế để đạt được các mục tiêu đó.
Nhu cầu an toàn thông tin:
An toàn thông tin đã thay đổi rất nhiều trong thời gian gần đây. Trước kia hầu nchỉ nhu cầu
bảo mật thông tin, nay đòi hỏi thêm nhiều yêu cầu mới như an ninh máy chủ và trên mạng.
Các phương pháp truyền thống được cung cấp bởi các cơ chế hành chính và phương tiện vật lý như
nơi lưu trữ bảo vệ các tài liệu quan trọng cung cấp giấy phép được quyền sử dụng các tài liệu
mật đó.
Máy tính đòi hỏi các phương pháp tự động để bảo vệ các tệp và các thông tin lưu trữ. Nhu cầu bảo
mật rất lớn rất đa dạng, mặt khắp mọi nơi, mọi lúc. Do đó không thể không đề ra các qui
trình tự động hỗ trợ bảo đảm an toàn thông tin.
Việc sử dụng mạng truyền thông đòi hỏi phải các phương tiện bảo vệ dữ liệu khi truyền.
Trong đó cả các phương tiện phần mềm phần cứng, đòi hỏi những nghiên cứu mới đáp
ứng các bài toán thực tiễn đặt ra.
Các khái niệm:
- 5 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
An toàn máy tính: tập hợp các công cụ được thiết kế để bảo vệ dữ liệu và chống hacker.
An toàn mạng: các phương tiện bảo vệ dữ liệu khi truyền chúng.
An toàn Internet: các phương tiện bảo vệ dữ liệu khi truyền chúng trên tập các mạng liên kết với
nhau.
Mục đích của môn học tập trung vào an toàn Internet gồm các phương tiện để bảo vệ, chống, phát hiện,
và hiệu chỉnh các phá hoại an toàn khi truyền và lưu trữ thông tin.
I.1.2 Nguy cơ và hiểm họa đối với hệ thống thông tin
Các hiểm họa đối với hệ thống thể được phân loại thành hiểm họa tình hay cố ý, chủ động hay thụ
động.
- Hiểm họa tình: khi người dùng khởi động lại hệ thống chế độ đặc quyền, họ thể tùy ý
chỉnh sửa hệ thống. Nhưng sau khi hoàn thành công việc họ không chuyển hệ thống sang chế độ
thông thường, vô tình để kẻ xấu lợi dụng.
- Hiểm họa cố ý: như cố tình truy nhập hệ thống trái phép.
- Hiểm họa thụ động: là hiểm họa nhưng chưa hoặc không tác động trực tiếp lên hệ thống, như nghe
trộm các gói tin trên đường truyền.
- Hiểm họa chủ động: là việc sửa đổi thông tin, thay đổi tình trạng hoặc hoạt động của hệ thống.
Đối với mỗi hệ thống thông tin mối đe dọa hậu quả tiềm ẩn rất lớn, thể xuất phát từ những
nguyên nhân như sau:
- Từ phía người sử dụng: xâm nhập bất hợp pháp, ăn cắp tài sản có giá trị
- Trong kiến trúc hệ thống thông tin: tổ chức hệ thống kỹ thuật không cấu trúc hoặc không đủ
mạnh để bảo vệ thông tin.
- Ngay trong chính sách bảo mật an toàn thông tin: không chấp hành các chuẩn an toàn, không xác
định rõ các quyền trong vận hành hệ thống.
- Thông tin trong hệ thống máy tính cũng sẽ dễ bị xâm nhập nếu khôngcông cụ quản lý, kiểm tra
và điều khiển hệ thống.
- Nguy nằm ngay trong cấu trúc phần cứng của các thiết bị tin học trong phần mềm hệ thống
ứng dụng do hãng sản xuất cài sẵn các loại 'rệp' điện tử theo ý đồ định trước, gọi 'bom điện
tử'.
- Nguy hiểm nhất đối với mạng máy tính mở là tin tặc, từ phía bọn tội phạm.
I.1.3 Phân loại tấn công phá hoại an toàn:
- 6 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Các hệ thống trên mạng có thể là đối tượng của nhiều kiểu tấn công:
- Tấn công giả mạo một thực thể tấn công giả danh một thực thể khác. Tấn công giả mạo thường
được kết hợp với các dạng tấn công khác như tấn công chuyển tiếp và tấn công sửa đổi thông báo.
- Tấn công chuyển tiếp xảy ra khi một thông báo, hoặc một phần thông báo được gửi nhiều lần, gây
ra các tác động tiêu cực.
- Tấn công sửa đổi thông báo xảy ra khi nội dung của một thông báo bị sửa đổi nhưng không bị phát
hiện.
- Tấn công từ chối dịch vụ xảy ra khi một thực thể không thực hiện chức năng của mình, gây cản trở
cho các thực thể khác thực hiện chức năng của chúng.
- Tấn công từ bên trong hệ thống xảy ra khi người dùng hợp pháp cố tình hoặc ý can thiệp hệ
thống trái phép. Còn tấn công từ bên ngoài nghe trộm, thu chặn, giả mạo người dùng hợp pháp
và vượt quyền hoặc lách qua các cơ chế kiểm soát truy nhập.
Tấn công bị động. Do thám, theo dõi đường truyền để:
o nhận được nội dung bản tin hoặc
o theo dõi luồng truyền tin
Tấn công chủ động. Thay đổi luồng dữ liệu để:
o giả mạo một người nào đó.
o lặp lại bản tin trước
o thay đổi ban tin khi truyền
o từ chối dịch vụ.
I.2 Dịch vụ, cơ chế, tấn công.
Nhu cầu thực tiến dẫn đến sự cần thiết một phương pháp hệ thống xác định các yêu cầu an ninh của tổ
chức. Trong đó cần tiếp cận tổng thể xét cả ba khía cạnh của an toàn thông tin: bảo vệ tấn công, chế
an toàn và dịch vụ an toàn.
Sau đây chúng ta xét chúng theo trình tự ngược lại:
I.2.1 Các dịch vụ an toàn.
Đây công cụ đảm bảo an toàn của hệ thống xử thông tin truyền thông tin trong tổ chức. Chúng
được thiết lập để chống lại các tấn công phá hoại. thể dùng một hay nhiều chế an toàn để cung cấp
dịch vụ.
- 7 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Thông thường người ta cần phải tạo ra các liên kết với các tài liệu vật lý: như chữ ký, ngày tháng, bảo
vệ cần thiết chống khám phá, sửa bậy, phá hoại, được công chứng, chứng kiến, được ghi nhận hoặc có bản
quyền.
I.2.2 Các cơ chế an toàn:
Từ các công việc thực tế để chống lại các phá hoại an ninh, người ta đã hệ thống sắp xếp lại tạo thành
các chế an ninh khác nhau. Đây chế được thiết kế để phát hiện, bảo vệ hoặc khôi phục do tấn
công phá hoại.
Không có cơ chế đơn lẻ nào đáp ứng được mọi chức năng yêu cầu của công tác an ninh. Tuy nhiên có một
thành phần đặc biệt nằm trong mọi cơ chế an toàn đó là: kỹ thuật mã hoá. Do đó chúng ta sẽ dành một thời
lượng nhất định tập trung vào lý thuyết mã.
I.2.3 Tấn công phá hoại an ninh:
Ta xác định thế nào các hành động tấn công phá họai an ninh. Đó mọi hành động chống lại sự an
toàn thông tin của các tổ chức.
An toàn thông tin bàn về bằng cách nào chống lại tấn công o hệ thống thông tin hoặc phát hiện ra
chúng. Trên thực tế rất nhiều cách nhiều kiểu tấn công khác nhau. Thường thuật ngữ đe doạ tấn
công được dùng như nhau. Cần tập trung chống một số kiểu tấn công chính: thụ động và chủ động.
I.3 Mô hình an toàn mạng
I.3.1 Kiến trúc an toàn của hệ thống truyền thông mở OSI.
Để giúp cho việc hoạch định chính sách xây dựng hệ thống an ninh tốt. Bộ phận chuẩn hóa tiêu chuẩn
của tổ chức truyền thông quốc tế (International Telecommunication Union) đã nghiên cứu đề ra Kiến
trúc an ninh X800 dành cho hệ thống trao đổi thông tin mở OSI. Trong đó định nghĩa một cách hệ thống
phương pháp xác định cung cấp các yêu cầu an toàn.Nó cung cấp cho chúng ta một cách nhìn tổng
quát, hữu ích về các khái niệm mà chúng ta nghiên cứu.
- 8 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Trước hết nói về dich vụ an toàn, X800 định nghĩa đây là dịch vụ cung cấp cho tầng giao thức của các
hệ thống mở trao đổi thông tin, đảm bảo an toàn thông tin cần thiết cho hệ thống cho việc
truyền dữ liệu.
Trong tài liệu các thuật ngữ chuẩn trên Internet RFC 2828 đã nêu định nghĩa cụ thể hơn dich vụ an
toàn dịch vụ trao đổi xử cung cấp cho hệ thống việc bảo vệ đặc biệt cho các thông tin
nguồn.Tài liệu X800 đưa ra định nghĩa dịch vụ theo 5 loại chính:
- Xác thực: tin tưởng là thực thể trao đổi đúng là cái đã tuyên bố. Người đang trao đổi xưng tên với
mình đúng là anh ta, không cho phép người khác mạo danh.
- Quyền truy cập: ngăn cấm việc sử dụng nguồn thông tin không đúng vai trò. Mỗi đối tượng trong
hệ thống được cung cấp các quyền hạn nhất định chỉ được hành động trong khuôn khổ các
quyền hạn đó.
- Bảo mật dữ liệu: bảo vệ dữ liệu không bị khám phá bởi người không quyền. Chẳng hạn n
dùng các ký hiệu khác để thay thế các ký hiệu trong bản tin, mà chỉ người có bản quyền mới có thể
khôi phục nguyên bản của nó.
- Toàn vẹn dữ liệu: tin tưởng dữ liệu được gửi từ người quyền. Nếu thay đổi như làm trì
hoãn về mặt thời gian hay sửa đổi thông tin, thì xác thực sẽ cho cách kiểm tra nhận biết các
hiện tượng đó đã xảy ra.
- Không từ chối: chống lại việc chối bỏ của một trong các bên tham gia trao đổi. Người gửi cũng
không trối bỏ là mình đã gửi thông tin với nội dung như vậy và người nhận không thể nói dối là tôi
chưa nhận được thông tin đó. Điều này rất cần thiết trong việc trao đổi, thỏa thuận thông tin
hàng ngày.
Cơ chế an toàn được định nghĩa trong X800 như sau:
- chế an toàn chuyên dụng được cài đặt trong một giao thức của một tầng vận chuyển nào đó:
hoá, chữ điện tử, quyền truy cập, toàn vẹn dữ liệu, trao đổi phép, đệm truyền, kiểm soát
định hướng, công chứng.
- chế an toàn phổ dụng không chỉ được dùng cho giao thức trên tầng nào hoặc dịch vụ an
ninh cụ thể nào: chức năng tin cậy cho một tiêu chuẩn nào đó, nhãn an toàn chứng tỏ đối tượng
tính chất nhất định, phát hiện sự kiện, vết theo dõi an toàn, khôi phục an toàn.
I.3.2 Mô hình an toàn mạng tổng quát
Sử dụng mô hình trên đòi hỏi chúng ta phải thiết kế:
o thuật toán phù hợp cho việc truyền an toàn.
o Phát sinh các thông tin mật (khoá) được sử dụng bởi các thuật toán.
o Phát triển các phương pháp phân phối và chia sẻ các thông tin mật.
o đặc tả giao thức cho các bên để sử dụng việc truyền và thông tin mật cho các dịch vụ an
tn.
Mô hình truy cp mạng an toàn:
- 9 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Sử dụng mô hình trên đòi hỏi chúng ta phải:
o Lựa chọn hàm canh cổng phù hợp cho người sử dụng có danh tính.
o Cài đặt kiểm soát quyền truy cập để tin tưởng rằng chỉ có người có quyền mới truy cập
được thông tin đích hoặc nguồn.
o Các hệ thống máy tính tin cậy có thể dùng mô hình này.
I.4 Bảo mật thông tin trong hệ cơ sở dữ liệu
I.4.1 Giới thiệu chung
Các hệ sở dữ liệu (CSDL) ngày nay n Oracle, SQL/Server, DB2/Informix đều sẵn các
công cụ bảo vệ tiêu chuẩn như hệ thống định danh và kiểm soát truy xuất. Tuy nhiên, các biện pháp bảo vệ
này hầu như không có tác dụng trước các tấn công từ bên trong. Để bảo vệ thông tin khỏi mối đe dọa này,
người ta đưa ra hai giải pháp.
Giải pháp đơn giản nhất bảo vệ dữ liệu trong CSDL mức độ tập tin, chống lại sự truy cập trái phép vào
các tập tin CSDL bằng hình thức hóa. Tuy nhiên, giải pháp này không cung cấp mức độ bảo mật truy
cập đến CSDL mức độ bảng, cột dòng. Một điểm yếu nữa của giải pháp này bất cứ ai với quyền
truy xuất CSDL đều thể truy cập vào tất cả dữ liệu trong CSDL cũng nghĩa cho phép các đối
tượng với quyền quản trị truy cập tất cả các dữ liệu nhạy cảm.
Giải pháp thứ hai, giải quyết vấn đề hóa mức ứng dụng. Giải pháp này xử hóa dữ liệu trước
khi truyền dữ liệu vào CSDL. Những vấn đề về quản lý khóa và quyền truy cập được hỗ trợ bởi ứng dụng.
Truy vấn dữ liệu đến CSDL sẽ trả kết quả dữ liệu dạng mã hóa dữ liệu y sẽ được giải bởi ứng
dụng. Giải pháp này giải quyết được vấn đề phân tách quyền an toàn hỗ trợ các chính sách an toàn dựa
trên vai trò.
I.4.2 Một số mô hình bảo mật cơ sở dữ liệu
Để đáp ứng những yêu cầu về bảo mật cho các hệ thống CSDL hiện tại sau này người ta đưa ra 2
hình bảo mật CSDL thông thường sau đây
Xây dựng tầng CSDL trung gian:
Một CSDL trung gian được y dựng giữa ứng dụng CSDL gốc. CSDL trung gian này vai trò
hóa dữ liệu trước khi cập nhật vào CSDL gốc, đồng thời giải mã dữ liệu trước khi cung cấp cho ứng dụng.
- 10 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CSDL trung gian đồng thời cung cấp thêm các chức năng quản lý khóa, xác thực người dùng cấp phép
truy cập.
Giải pháp này cho phép tạo thêm nhiều chức năng về bảo mật cho CSDL. Tuy nhiên, mô hình CSDL trung
gian đòi hỏi xây dựng một ứng dụng CSDL tái tạo tất cả các chức năng của CSDL gốc.
Mô hình trung gian
Sử dụng cơ chế sẵn có trong CSDL
Mô hình này giải quyết các vấn đề mã hóa cột dựa trên các cơ chế sau:
a. Các hàm Stored Procedure trong CSDL cho chức năng mã hóa và giải mã
b. Sử dụng cơ chế View trong CSDL tạo các bảng ảo, thay thế các bảng thật đã được mã hóa.
c. Cơ chế “instead of” trigger được sử dụng nhằm tự động hóa quá trình mã hóa từ View đến bảng gốc.
Trong mô hình này, dữ liệu trong các bảng gốc sẽ được mã hóa, tên của bảng gốc được thay đổi. Một bảng
ảo được tạo ra mang tên của bảng gốc, ứng dụng sẽ truy cập đến bảng ảo này.
Truy xuất dữ liệu trong mô hình này có thể được tóm tắt như sau:
- 11 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Mô hình bảng ảo
Các truy xuất dữ liệu đến bảng gốc sẽ được thay thế bằng truy xuất đến bảng ảo.
Bảng ảo được tạo ra để mô phỏng dữ liệu trong bảng gốc. Khi thực thi lệnh “select”, dữ liệu sẽ được giải
mã cho bảng ảo từ bảng gốc (đã được mã hóa). Khi thực thi lệnh “Insert, Update”, “instead of” trigger sẽ
được thi hành và mã hóa dữ liệu xuống bảng gốc.
Quản phân quyền truy cập đến các cột sẽ được quản các bảng ảo. Ngoài các quyền bản do
CSDL cung cấp, hai quyền truy cập mới được định nghĩa:
1. Người sử dụng chỉ được quyền đọc dữ liệu dạng hóa. Quyền này phù hợp với những đối tượng
cần quản lý CSDL mà không cần đọc nội dung dữ liệu.
2. Người sử dụng được quyền đọc dữ liệu ở dạng giải mã.
I.4.3 Sơ lược kiến trúc của 1 hệ bảo mật CSDL
Triggers: các trigger được sử dụng để lấy dữ liệu đến từ các câu lệnh INSERT, UPDATE (để mã hóa).
Views: các view được sử dụng để lấy dữ liệu đến từ các câu lệnh SELECT (để giải mã).
Extended Stored Procedures: được gọi từ các Trigger hoặc View dùng để kích hoạt các dịch vụ được cung
cấp bởi Modulo DBPEM từ trong môi trường của hệ quản tri CSDL.
DBPEM (Database Policy Enforcing Modulo): cung cấp các dịch vụ hóa/giải dữ liệu gửi đến từ
các Extended Stored Procedures thực hiện việc kiểm tra quyền truy xuất của người dùng (dựa trên các
chính sách bảo mật được lưu trữ trong CSDL về quyền bảo mật).
Kiến trúc một hệ bảo mật CSDL
Security Database: lưu trữ các chính sách bảo mật và các khóa giải mã. Xu hướng ngày nay thường lưu
trữ CSDL về bảo mật này trong Active Directory (một CSDL dạng thư mục để lưu trữ tất cả thông tin về
hệ thống mạng).
Security Services: chủ yếu thực hiện việc bảo vệ các khóa giải mã được lưu trong CSDL bảo mật.
Management Console: dùng để cập nhật thông tin lưu trong CSDL bảo mật (chủ yếu soạn thảo các
chính sách bảo mật) thực hiện thao tác bảo vệ một trường o đó trong CSDL để đảm bảo tối đa tính
bảo mật, thông tin được trao đổi.
- 12 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG II
MÃ CỔ ĐIỂN
hoá cổ điển phương pháp hoá đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành hoá.
Thuật toán đơn giản dễ hiểu. Những phương pháp hoá này cở sở cho việc nghiên cứu phát
triển thuật toán mã hoá đối xứng được sử dụng ngày nay. Trong hoá cổ điển hai phương pháp nổi
bật đó là:
- Mã hoá thay thế
- Mã hoá hoán vị
Mọi mã cổ điển đều là mã đối xứng mà chúng ta sẽ xét trong phần sau.
II.1 Mã đối xứng.
II.1.1 Các khái niệm cơ bản
Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa giải mã. thể nóiđối xứng là mã một
khoá hay mã khóa riêng hay mã khoá thỏa thuận.
đây người gửi người nhận chia skhoá chung K, họ thể trao đổi mật với nhau. Ta xét hai
hàm ngược nhau: E hàm biến đổi bản thành bản D hàm biến đổi bản trở về bản rõ. Giả
sử X là văn bản cần mã hóa và Y là dạng văn bản đã được thay đổi qua việc mã hóa. Khi đó ta ký hiệu:
Y = E
K
(X)
X = D
K
(Y)
Mọi thuật toán cổ điển đều mã khoá đối xứng, đó thông tin về khóa được chia sẻ giữa người
gửi và người nhận. Mã đối xứng là kiểu duy nhất trước khi phát minh ra khoá mã công khai (còn được gọi
là mã không đối xứng) vào những năm 1970. Hiện nay các mã đối xứng và công khai tiếp tục phát triển và
hoàn thiện. công khai ra đời hỗ trợ đối xứng chứ không thay thế nó, do đó đối xứng đến nay
vẫn được sử dụng rộng rãi.
Sau đây ta đưa ra định nghĩa một số khái niệm cơ bản về mã hóa.
1. Bản rõ X được gọi là là bản tin gốc. Bản rõ có thể được chia nhỏ có kích thước phù hợp.
2. Bản mã Y là bản tin gốc đã được mã hoá. Ở đây ta thường xét phương pháp mã hóa mà không làm
thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài.
3. là thuật toán E chuyển bản thành bản mã. Thông thường chúng ta cần thuật toán hóa
mạnh, cho kẻ thù biết được thuật toán, nhưng không biết thông tin về khóa cũng không tìm
được bản rõ.
4. Khoá K là thông tin tham số dùng để mã hoá, chỉ có người gửi và nguời nhận biết. Khóa là độc lập
với bản rõ và có độ dài phù hợp với yêu cầu bảo mật.
5. hoá quá trình chuyển bản thành bản mã, thông thường bao gồm việc áp dụng thuật toán
mã hóa và một số quá trình xử lý thông tin kèm theo.
6. Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã hóa.
7. Mật chuyên ngành khoa học của Khoa học máy tính nghiên cứu về các nguyên
phương pháp hoá. Hiện nay người ta đưa ra nhiều chuẩn an toàn cho các lĩnh vực khác nhau
của công nghệ thông tin.
8. Thám nghiên cứu c nguyên phương pháp giải không biết khoá. Thông thường
khi đưa c mạnh ra làm chuẩn dùng chung giữa các người sử dụng, các đó được các kẻ
thám mã cũng như những người phát triển mã tìm hiểu nghiên cứu các phương pháp giải một phần
bản mã với các thông tin không đầy đủ.
9. thuyết bao gồm cả mật thám mã. một thể thống nhất, để đánh giá một
mạnh hay không, đều phải xét từ cả hai khía cạnh đó. Các nhà khoa học mong muốn tìm ra các mô
hình mã hóa khái quát cao đáp ứng nhiều chính sách an toàn khác nhau.
- 13 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Mô hình mã đối xứng
II.1.2 Các yêu cầu.
Một đối xứng các đặc trưng cách xử thông tin của thuật toán mã, giải mã, tác động của khóa
vào bản mã, độ dài của khóa. Mối liên hệ giữa bản rõ, khóa bảncàng phức tạp càng tốt, nếu tốc độ
tính toán là chấp nhận được. Cụ thể hai yêu cầu để sử dụng an toàn mã khoá đối xứng là
1. Thuật toán mã hoá mạnh. Có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán,
mọi người đều biết, nhưng việc thám mã là rất khó khăn và phức tạp nếu không biết khóa.
2. Khoá mật chỉ người gửi và người nhận biết. Có kênh an toàn để phân phối khoá giữa các người
sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không nhận biết được.
II.1.3 Mật mã
Hệ mật mã được đặc trưng bởi các yếu tố sau
- Kiểu của thao tác mã hoá được sử dụng trên bản rõ:
1. Phép thế - thay thế các ký tự trên bản rõ bằng các ký tự khác
2. Hoán vị - thay đổi vị trí các ký tự trong bản rõ, tức thực hiện hoán vị các tự của bản
rõ.
3. Tích của chúng, tức là kết hợp cả hai kiểu thay thế và hoán vị các ký tự của bản rõ.
- Số khoá được sử dụng khi hóa: một khoá duy nhất - khoá riêng hoặc hai khoá - khoá công khai.
Ngoài ra còn xem xét số khóa được dùng có nhiều không.
- Một đặc trưng của mã nữa là cách mà bản rõ được xử lý, theo:
1. Khối - dữ liệu được chia thành từng khối kích thướcc định áp dụng thuật toán
hóa với tham số khóa cho từng khối.
2. Dòng - từng phần tử đầu vào được xử lý liên tục tạo phần tử đầu ra tương ứng.
II.1.4 Thám mã.
Có hai cách tiếp cận tấn công mã đối xứng.
1. Tấn công thám mã dựa trên thuật toán và một số thông tin về các đặc trưng chung về bản rõ
hoặc một số mẫu bản rõ/bản mã. Kiểu tấn công này nhằm khai phá các đặc trưng của thuật
toán để tìm bản rõ cụ thể hoặc tìm khóa. Nếu tìm được khóa thì là tai họa lớn.
2. Tấn công duyệt toàn bộ: kẻ tấn công tìm cách thử mọi khóa có thể trên bản mã cho đến khi
nhận được bản rõ. Trung bình cần phải thử một nửa số khóa mới tìm được.
Các kiểu tấn công thám mã.
- Chỉ dùng bản mã: biết thuật toán và bản mã, dùng phương pháp thống kê, xác định bản rõ.
- Biết bản rõ: biết thuật toán, biết được bản mã/bản rõ tấn công tìm khóa.
- 14 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- Chọn bản rõ: chọn bản rõ và nhận được bản mã, biết thuật toán tấn công tìm khóa.
- Chọn bản mã: chọn bản mã và có được bản rõ tương ứng, biết thuật toán tấn công tìm khóa.
- Chọn bản tin: chọn được bản rõ hoặc mã và mã hoặc giải mã tuơng ứng, tấn công tìm khóa.
II.1.5 Tìm duyệt tổng thể (Brute-Force)
Về mặt thuyết phương pháp duyệt tổng thể luôn thực hiện được, do thể tiến hành thử từng khoá,
số khoá hữu hạn. Phần lớn công sức của c tấn công đều tỷ lệ thuận với kích thước khoá. Khóa
càng dài thời gian tìm kiếm càng lâu và thường tăng theo hàm mũ. Ta có thể giả thiết là kẻ thám mã có thể
dựa vào bối cảnh để biết hoặc nhận biết được bản rõ.
Sau đây là một số thống kê về mối liên hệ giữa độ dài khóa, kích thước không gian khóa, tốc độ xử lý và
thời gian tìm duyệt tổng thể. Chúng ta nhận thấy với độ dài khóa từ 128 bit trở lên, thời gian yêu cầu là rất
lớn, lên đến hàng tỷ năm, như vậy có thể coi phương pháp duyệt tổng thể là không hiện thực.
II.1.6 Độ an toàn.
Có thể phân lọai an toàn thành hai kiểu như sau:
- An toàn không điều kiện: ở đây không quan trọng máy tính mạnh như thế nào, có thể thực hiện được
bao nhiêu phép toán trong một giây, hoá không thể bị bẻ, bản mã không cung cấp đủ thông tin
để xác định duy nhất bản rõ. Việc dùng bộ đệm ngẫu nhiên một lần để dòng cho dữ liệu ta sẽ
xét cuối bài này được coi là an toàn không điều kiện. Ngoài ra chưa có thuật toán mã hóa nào được coi
là an toàn không điều kiện.
- An toàn tính toán: với nguồn lực máy tính giới hạn và thời gian có hạn (chẳng hạn thời gian tính toán
không quá tuổi của trụ) hoá coi như không thể bị bẻ. Trong trường hợp này coi như hóa an
toàn về mặt tính toán. Nói chung từ nay về sau, một thuật toán mã hóa an toàn tính toán được coi là an
toàn.
II.2 Các mã thế cổ điển thay thế
Có hai loại mã cổ điển là mã thay thế và mã hoán vị (hay còn gọi là dịch chuyển).
thay thế phương pháp từng tự (nhóm tự) trong bản được thay thế bằng một tự (một
nhóm kí tự) khác để tạo ra bản mã. Bên nhận chỉ cần thay thế ngược lại trên bản mã để có được bản rõ ban
đầu.
- 15 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Trong phương pháp hoán vị, các tự trong bản vẫn được giữ nguyên, chúng chỉ được sắp xếp lại
vị trí để tạo ra bản . Tức c tự trong bản hoàn toàn không bị thay đổi bằng tự khác chỉ
đảo chỗ của chúng để tạo thành bản mã.
Trước hết ta xét các mã cổ điển sử dụng phép thay thế các chữ của bản rõ bằng các chữ khác của bảng chữ
để tạo thành bản mã.
- Ở đây các chữ của bản rõ được thay bằng các chữ hoặc các số hoặc các ký tự khác.
- Hoặc nếu xem bản rõ như môt dãy bít, thì phép thế thay các mẫu bít bản rõ bằng các mẫu bít bản mã.
II.2.1 Mã Ceasar
Đây là mã thế được biết sớm nhất, được sáng tạo bởi Julius Ceasar. Lần đầu tiên được sử dụng trong quân
sự. Việc hoá được thực hiện đơn giản thay mỗi chữ trong bản bằng chữ thứ ba tiếp theo trong
bảng chữ cái.
Ví dụ:
o Meet me after the toga party
o PHHW PH DIWHU WKH WRJD SDUWB
đây thay chữ m bằng chữ đứng thứ 3 sau m p (m, n, o, p); thay chữ e bằng chữ đứng thứ 3 sau e h
(e, f, g, h).
thể định nghĩa việc hoá trên qua ánh xạ trên bảng chữ cái sau: các chữ dòng dưới
của các chữ tương ứng ở dòng trên:
a b c d e f g h i j k l m n o p q r s t u v w x y z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Về toán học, nếu ta gán số thứ tự cho mỗi chữ trong bảng chữ cái. Các chữ dòng trên số thứ
tự tương ứng là số ở dòng dưới:
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 10 11 12
n o p q r s t u v w x y z
13 14 15 16 17 18 19 20 21 22 23 24 25
thì mã Ceasar được định nghĩa qua phép tịnh tiến các chữ như sau:
c = E(p) = (p + k) mod (26)
p = D(c) = (c – k) mod (26)
đây, p số thứ tự của chữ trong bản c số thứ tự của chữ tương ứng của bản mã; k
khoá của mã Ceasar. Có 26 giá trị khác nhau của k, nên có 26 khoá khác nhau. Thực tế độ dài khoá
ở đây chỉ là 1, vì mọi chữ đều tịnh tiến đi một khoảng như nhau.
Thám mã Ceasar
là việc làm đơn giản, do số khoá có thể có là rất ít.
Chỉ 26 khoá thể, A chỉ thể ánh xạ vào một trong số 26 chữ cái của bảng chữ cái tiếng
Anh: A, B, C, …Các chữ khác sẽ được xác định bằng số bước tịnh tiến tương ứng của A. Kẻ thám
thể thử lần lượt từng khoá một, tức sử dụng phương pháp tìm duyệt tổng thể. số khoá
ít nên việc tìm duyệt khả thi. Cho trước bản mã, thử 26 cách dịch chuyển khác nhau, ta sẽ đoán
nhận thông qua nội dung các bản rõ nhận được.
dụ. Bẻ bản "GCUA VQ DTGCM" bằng cách thử các phép tịnh tiến khác nhau của bảng chữ, ta
chọn được bước tịnh tiến thích hợp là 24 và cho bản rõ là "easy to break".
- 16 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
II.2.2 Các mã bảng chữ đơn
Bây giờ ta khắc phục nhược điểm của Ceasar bằng cách hoá các chữ không chỉ dịch chuyển
bảng chữ, mà có thể tạo ra các bước nhảy khác nhau cho các chữ. Trong một mã mỗi chữ của bản rõ được
ánh xạ đến một chữ khác nhau của bản mã. Do đó mỗi cách mã như vậy sẽ tương ứng với một hoán vị của
bảng chữ hoán vị đó chính khoá của đã cho. Như vậy đội khoá đây 26 số khoá thể
có là 26!. Số khoá như vậy là rất lớn.
Ví dụ. Ta có bản mã tương ứng với bản rõ trong mã bảng chữ đơn như sau:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: DKVQFIBJWPESCXHTMYAUOLRGZN
Plaintext: ifwewishtoreplaceletters
Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA
- Tính an toàn của trên bảng chữ đơn. Tổng cộng 26! xấp xỉ khoảng 4 x 10
26
khoá. Với khá
nhiều khoá như vậy nhiều người nghĩ là mã trên bảng chữ đơn sẽ an toàn. Nhưng không phải như vậy.
Vấn đề đây doc đặc trưng về ngôn ngữ. Tuy số lượng khoá lớn, nhưng do các đặc trưng về
tần suất xuất hiện của các chữ trong bản các chữ tương ứng trong bản như nhau, nên kẻ
thám thể đoán được ánh xạ của một số chữ từ đó tìm ra chữ cho các chữ khác. Ta sẽ
xét khía cạnh này cụ thể trong mục sau.
- Tính dư thừa của ngôn ngữ và thám mã. Ngôn ngữ của loài người là dư thừa. Có một số chữ hoặc các
cặp chữ hoặc bộ ba chữ được dùng thường xuyên hơn các bộ chữ cùng độ dài khác. Chẳng hạn như
các bộ chữ sau đây trong tiếng Anh "th lrd s m shphrd shll nt wnt". Tóm lại trong nhiều ngôn ngữ các
chữ không được sử dụng thường xuyên như nhau. Trong tiếng Anh chữ E được sử dụng nhiều nhất;
sau đó đến c chữ T, R, N, I, O, A, S. Một số chữ rất ít dùng như: Z, J, K, Q, X. Bằng phương pháp
thống kê, ta c
ó thể xây dựng các bảng các tần suất các chữ đơn, cặp chữ, bộ ba chữ.
o
Bảng tần suất chữ cái tiếng Anh:
Sử dụng bảng tần suất vào việc thám mã
Điều quan trọng thế trên bảng chữ đơn không làm thay đổi tần suất tương đối của các chữ,
nghĩa ta vẫn bảng tần suất trên nhưng đối với bảng chữ tương ứng. Điều đó được phát
hiện bởi các nhà khoa học Ai cập từ thế kỷ thứ 9. Do đó cách thám trên bảng chữ đơn như
sau:
- Tính toán tần suất của các chữ trong bản mã
- So sánh với các giá trị đã biết
- 17 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- Tìm kiếm các chữ đơn hay dùng A-I-E, bộ đôi NO và bộ ba RST; và các bộ ít dùng JK, X-Z..
- Trên bảng chữ đơn cần xác định các chữ dùng các bảng bộ đôi và bộ ba trợ giúp.
Ví dụ. Thám mã bản mã trên bảng chữ đơn, cho bản mã:
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ
VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEP
OPDZSZUFPOUDTMOHMQ
- Tính tần suất các chữ
- Đoán P và Z là e và t.
- Khi đó ZW là th và ZWP là the.
- Suy luận tiếp tục ta có bản rõ:
it was disclosed yesterday that several informal but
direct contacts have been made with political
representatives in moscow
II.2.3 Mã Playfair
Như chúng ta đã thấy không phải số khoá lớn trong bảng chữ đơn đảm bảo an toàn mã. Một trong các
hướng khắc phục bộ các chữ, tức mỗi chữ sẽ được bằng một số chữ khác nhau tùy thuộc vào
các chữ đứng cạnh. Playfair một trong các n vậy, được sáng tạo bởi Charles Wheastone
vào năm 1854 và mang tên người bạn Baron Playfair. Ở đây mỗi chữ thể được bằng một trong 7
chữ khác nhau tùy vào chữ cặp đôi cùng nó trong bản rõ.
Ma trận khoá Playfair. Cho trước một từ làm khoá, với điều kiện trong từ khoá đó không có chữ cái nào bị
lặp. Ta lập ma trận Playfair là ma trận cỡ 5 x 5 dựa trên từ khoá đã cho và gồm các chữ trên bảng chữ cái,
được sắp xếp theo thứ tự như sau:
- Trước hết viết các chữ của từ khoá vào các hàng của ma trận bắt từ hàng thứ nhất.
- Nếu ma trận còn trống, viết các chữ khác trên bảng chữ cái chưa được sử dụng vào các ô còn lại.
Có thể viết theo một trình tự qui ước trước, chẳng hạn từ đầu bảng chữ cái cho đến cuối.
- 26 chữ cái tiếng Anh, nên thiếu một ô. Thông thuờng ta dồn hai chữ nào đó vào một ô
chung, chẳng hạn I và J.
- Giả sử sử dụng từ khoá MORNACHY. Lập ma trận khoá Playfair tương ứng như sau:
MONAR
CHYBD
EFGIK
LPQST
UVWXZ
Mã hoá và giải mã: bản rõ được mã hoá 2 chữ cùng một lúc theo qui tắc như sau:
- Chia bản thành từng cặp chữ. Nếu một cặp nào đó hai chữ như nhau, thì ta chèn thêm một
chữ lọc chẳng hạn X. Ví dụ, trước khi mã “balloon” biến đổi thành “ba lx lo on”.
- Nếu cả hai chữ trong cặp đều rơi vào cùng một hàng, thì mã mỗi chữ bằng chữ ở phía bên phải nó
trong cùng hàng của ma trận khóa (cuộn vòng quanh từ cuối về đầu), chẳng hạn ar biến đổi
thành “RM”
- Nếu cả hai chữ trong cặp đều rơi vào cùng một cột, thì mã mỗi chữ bằng chữ ở phía bên dưới nó
trong cùng cột của ma trận khóa (cuộn vòng quanh từ cuối về đầu), chẳng hạn mu” biến đổi
thành “CM”
- Trong các trường hợp khác, mỗi chữ trong cặp được bởi chữ cùng hàng với cùng cột
với chữ cùng cặp với nó trong ma trận khóa. Chẳng hạn, “hs” thành “BP”, “ea” thành
“IM” hoặc “JM” (tuỳ theo sở thích)
An toàn của mã Playfair:
- 18 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- An toàn được nâng cao so hơn với bảng đơn, ta tổng cộng 26 x 26 = 676 cặp. Mỗi chữ
thể được mã bằng 7 chữ khác nhau, nên tần suất các chữ trên bản mã khác tần suất của các chữ cái
trên văn bản tiếng Anh nói chung.
- Muốn sử dụng thống tần suất, cần phải bảng tần suất của 676 cặp để thám (so với 26
của bảng đơn). Như vậy phải xem xét nhiều trường hợp hơn tương ứng sẽ thể nhiều
bản mã hơn cần lựa chọn. Do đó khó thám mã hơn mã trên bảng chữ đơn.
- Playfair được sử dụng rộng i nhiều năm trong giới quân sự Mỹ Anh trong chiến tranh
thế giới thứ 1.thể bị bẻ khoá nếu cho trước vài trăm chữ, vì bản mã vẫn còn chứa nhiều cấu
trúc của bản rõ.
II.2.4 Các mã đa bảng
Một hướng khác làm tăng độ an toàn cho trên bảng chữ sử dụng nhiều bảng chữ để mã. Ta sẽ gọi
chúng các thế đa bảng. đây mỗi chữ thể được mã bằng bất kỳ chữ nào trong bản tùy thuộc
vào ngữ cảnh khi hoá. Làm như vậy để trải bằng tần suất các chữ xuất hiện trong bản mã. Do đó làm
mất bớt cấu trúc của bản được thể hiện trên bản làm cho thám đa bảng khó hơn. Ta sử dụng
từ khoá để chỉ rõ chọn bảng nào được dùng cho từng chữ trong bản tin. Sử dụng lần lượt các bảng theo từ
khóa đó lặp lại từ đầu sau khi kết thúc từ khoá. Độ dài khoá chu kỳ lặp của các bảng chữ. Độ dài
càng lớn và nhiều chữ khác nhau được sử dụng trong từ khoá thì càng khó thám mã.
II.2.5 Mã Vigenere
thế đa bảng đơn giản nhất Vigenere. Thực chất quá trình hoá Vigenere việc tiếh hành
đồng thời dùng nhiều Ceasar cùng một lúc trên bản với nhiều khoá khác nhau. Khoá cho mỗi chữ
dùng để mã phụ thuộc vào vị trí của chữ đó trong bản rõ và được lấy trong từ khoá theo thứ tự tương ứng.
Giả sử khoá một chữ độ dài d được viết dạng K = K
1
K
2
…K
d
, trong đó K
i
nhận giá trị nguyên từ 0
đến 25. Khi đó ta chia bảnthành các khối gồm d chữ. Mỗi chữ thứ i trong khối chỉ định dùng bảng chữ
thứ i với tịnh tiến là K
i
giống như trong mã Ceasar. Trên thực tế khi mã ta có thể sử dụng lần lượt các bảng
chữ và lặp lại từ đầu sau d chữ của bản rõ. Vì có nhiều bảng chữ khac nhau, nên cùng một chữ các vị trí
khác nhau sẽ có các bước nhảy khác nhau, làm cho tần suất các chữ trong bản mã dãn tương đối đều.
Giải đơn giản quá trình làm ngược lại. Nghĩa dùng bản từ khoá với các bảng chữ tương
ứng, nhưng với mỗi chữ sử dụng bước nhảy lui lại về đầu.
Ví dụ: Để sử dụng mã Vigenere với từ khóa và bản rõ cho trước ta có thể làm như sau:
- Viết bản rõ ra
- Viết từ khoá lặp nhiều lần phía trên tương ứng của nó
- Sử dụng mỗi chữ của từ khoá như khoá của mã Ceasar
- Mã chữ tương ứng của bản rõ với bước nhảy tương ứng.
- Chẳng hạn sử dụng từ khoá deceptive
key: deceptivedeceptivedeceptive
plaintext: wearediscoveredsaveyourself
ciphertext:ZICVTWQNGRZGVTWAVZHCQYGL
Để mã chữ w đầu tiên ta tìm chữ đầu của khóa là d, như vậy w sẽ được mã trên bảng chữ tịnh tiến 3 (tức là
a tịnh tiến vào d). Do đó chữ đầu w được bởi chữ Z. Chữ thứ hai trong từ khóa e, nghĩa chữ
thứ hai trong bản sẽ được tịnh tiến 4 (từ a tịnh tiến đến e). Như vậy thứ hai trong bản e sẽ được mã
bởi chữ I. Tương tự như vậy cho đến hết bản rõ.
Trên thực tế để hỗ trợ Vigenere, người ta đã tạo ra trang Saint Cyr để trợ giúp cho việc giải
thủ công. Đó một bảng cỡ 26 x 26 tên tương ứng các chữ cái trong bảng chữ tiếng Anh. Hàng
thứ i tịnh tiến i chữ của bảng chứ cái. Khi đó chữ cột đầu tiên chính khoá của bảng chữ cùng
- 19 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
hàng. Do đó chữ của một chữ trong bản nằm trên cùng cột với chữ đó nằm trên hàng tương ứng
với chữ khoá.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
A ABCDEFGHIJKLMNOPQRSTUVWXYZ
B BCDEFGHIJKLMNOPQRSTUVWXYZA
C CDEFGHIJKLMNOPQRSTUVWXYZAB
D DEFGHIJKLMNOPQRSTUVWXYZABC
E EFGHIJKLMNOPQRSTUVWXYZABCD
F FGHIJKLMNOPQRSTUVWXYZABCDE
G GHIJKLMNOPQRSTUVWXYZABCDEF
H HIJKLMNOPQRSTUVWXYZABCDEFG
I IJKLMNOPQRSTUVWXYZABCDEFGH
J JKLMNOPQRSTUVWXYZABCDEFGHI
K KLMNOPQRSTUVWXYZABCDEFGHIJ
L LMNOPQRSTUVWXYZABCDEFGHIJK
M MNOPQRSTUVWXYZABCDEFGHIJKL
N NOPQRSTUVWXYZABCDEFGHIJKLM
O OPQRSTUVWXYZABCDEFGHIJKLMN
P PQRSTUVWXYZABCDEFGHIJKLMNO
Q QRSTUVWXYZABCDEFGHIJKLMNOP
R RSTUVWXYZABCDEFGHIJKLMNOPQ
S STUVWXYZABCDEFGHIJKLMNOPQR
T TUVWXYZABCDEFGHIJKLMNOPQRS
U UVWXYZABCDEFGHIJKLMNOPQRST
V VWXYZABCDEFGHIJKLMNOPQRSTU
W WXYZABCDEFGHIJKLMNOPQRSTUV
X XYZABCDEFGHIJKLMNOPQRSTUVW
Y YZABCDEFGHIJKLMNOPQRSTUVWX
Z ZABCDEFGHIJKLMNOPQRSTUVWXY
Bảng Saint Cyr
An toàn của Vigenere. Như vậy chữ khác nhau cho cùng một chữ của bản rõ. Suy ra tần suất
của các chữ bị phẳng, nghĩa tần suất xuất hiện các chữ trên bản tương đối đều nhau. Tuy nhiên
chưa mất hoàn toàn, do độ dài của khoá hạn, nên thể tạo nên chu kỳ vòng lặp. Kẻ thám bắt đầu
từ tần suất của chữ để xem có phải đây là mã đơn bảng chữ hay không. Giả sử đây là mã đa bảng chữ, sau
đó xác định số bảng chữ trong từ khoá lần tìm từng chữ. Như vậy cần tăng độ i từ khoá để tăng số
bảng chữ dùng khi mã để “là” tần suất của các chữ.
II.2.6 Phương pháp thám mã Kasiski
Phương pháp phát triển bởi Babbage Kasiski. Ta thấy các chữ như nhau trên bản cách nhau một
khoảng đúng bằng độ dài từ khoá (chu kỳ), thì sẽ được mã bằng cùng một chữ. Như vậy từ độ lặp của các
chữ trong bảnthể cho phép xác định chu kỳ. Tất nhiên không phải khi nào cũng tìm được độ dài từ
khoá. Sau đó tìm các chữ trong từ khoá bằng cách tấn công từng bảng chữ đơn với cùng kỹ thuật dựa trên
các bảng tần suất của các bộ chữ như trước.
II.2.7 Mã khoá tự động
tưởng nhất ta khoá dài như bản tin. Do đó Vigenere đề xuất khoá tự động sinh cho bằng độ dài
bản tin như sau: từ khoá được nối tiếp bằng chính bản để tạo thành khoá. Sau đó dùng Vigenere để
- 20 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
bản đã cho. Khi đó biết từ khoá thể khôi phục được một số chữ ban đầu của bản rõ. Sau đó tiếp
tục sử dụng chúng để giải cho văn bản còn lại. Sự cải tiến y làm mất khái niệm chu kỳ, gây khó
khăn cho việc thám mã, nhưng vẫn còn đặc trưng tần suất để tấn công.
dụ. Cho từ khoá deceptive. Ta viết bản nối tiếp o từ khoá tạo thành từ khoá mới độ dài bằng
độ dài bản rõ.
key: deceptivewearediscoveredsav
plaintext: wearediscoveredsaveyourself
ciphertext:ZICVTWQNGKZEIIGASXSTSLVVWLA
II.2.8 Bộ đệm một lần
Nếu khoá thực sự ngẫu nhiên được dùng độ dài bằng bản thì ta nói đó bộ đệm một lần.
chỉ được dùng một lần ngẫu nhiên, nên hoá sẽ an toàn. sẽ không bẻ được bản mã không
liên quan thống với bản rõ, do bộ đệm được sinh ngẫu nhiên. thể nói bộ đệm một lần an
toàn tuyệt đối, với bản bất kỳ bản bất kỳ, luôn tồn tại một khoá để ánh xạ bản đó sang bản
đã cho. Về mặt thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã
của một bản rõ cho trước là như nhau. Khoá chỉ sử dụng một lần, nên các lần mã là độc lập với nhau.
Vấn đề khó khăn của bộ đệm một lần việc sinh ngẫu nhiên khóa phân phối khoá an toàn. Do đó
bộ đệm một lần ít được sử dụng và chỉ dùng trong trường hợp đòi hỏi bảo mật rất cao.
II.3 Các mã thế cổ điển hoán vị
Trong các mục trước chúng ta đã xét một số thay thế, đó các chữ của bản được thay thế bằng các
chữ khác của bản mã. Bây giờ chúng ta xét đến loại khác, mã hoán vị, các chữ trong bản không
được thay thế bằng các chữ khác mà chỉ thay đổi vị trí, tức là việc mã hoá chỉ dịch chuyển vị trí tương đối
giữa các chữ trong bản rõ. Như vậy, dấu bản bằng cách thay đổi thứ tự các chữ, không thay đổi
các chữ thực tế được dùng. Do đó bản cùng phân bố tần suất xuất hiện các chữ như bản gốc. Như
vậy có thể thám mã để phát hiện được.
II.3.1 Mã Rail Fence
Đây hoán vị đơn giản. Viết các chữ của bản theo đường chéo trên một số dòng. Sau đó đọc các
chữ theo theo từng dòng sẽ nhận được bản mã. Số dòng chính khoá của mã. khi biết s dòng ta sẽ
tính được số chữ trên mỗi dònglại viết bản theo các dòng sau đó lấy bản bằng cách viết lại theo
các cột.
Ví dụ. Viết bản tin “meet me after the toga party” lần lượt trên hai dòng như sau
m e m a t r h t g p r y
e t e f e t e o a a t
Sau đó ghép các chữ ở dòng thứ nhất với các chữ ở dòng thứ hai cho bản mã:
MEMATRHTGPRYETEFETEOAAT
II.3.2 Mã dịch chuyển dòng
Mã có sơ đồ phức tạp hơn. Viết các chữ của bản tin theo các dòng với số cột xác định. Sau đó thay đổi thứ
tự các cột theo một dãy số khoá cho truớc, rồi đọc lại chúng theo các cột để nhận được bản mã. Quá trình
giải mã được thực hiện ngược lại.
Ví dụ:
Key: 4 3 1 2 5 6 7
Plaintext: a t t a c k p
o s t p o n e
- 21 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
d u n t i l t
w o a m x y z
Ta đọc theo thứ tự các cột từ 1 đến 7 để nhận được bản mã:
Ciphertext: TTNAAPTMTSUOAODWCOIXKNLYPETZ
II.3.3 Mã tích
dùng hoán vị hoặc dịch chuyển không an toàn các đặc trưng tần xuất của ngôn ngữ không thay đổi.
thể sử dụng một số liên tiếp nhau sẽ làm cho khó hơn. cổ điển chỉ sử dụng một trong hai
phương pháp thay thế hoặc hoán vị. Người ta nghĩ đến việc kết hợp cả hai phương pháp này trong cùng
một thể sử dụng đan xen hoặc lặp nhiều vòng. Đôi khi ta tưởng lặp nhiều lần cùng một loại
sẽ tạo nên phức tạp hơn, nhưng trên thực tế trong một số trường hợp về bản chất chúng cũng tương
đương với một lần cùng loại nào đó như: tích của hai phép thế sẽ một phép thế; tích của hai phép
hoán vị sẽ một phép hoán vị. Nhưng nếu hai loại đó khác nhau thì sẽ tạo nên mới phức tạp hơn,
chính vậy phép thế được nối tiếp bằng phép dịch chuyển sẽ tạo nên mới khó hơn rất nhiều. Đây
chính là chiếc cầu nối từ mã cổ điển sang mã hiện đại.
Điểm yếu của mã cổ điển:
- Phương pháp hoá cổ điển thể dễ dàng bị giải bằng ch đoán chữ dựa trên phương pháp
thống kê tần xuất xuất hiện các chữ cái trên mã và so sánh với bảng thống kê quan sát của bản rõ.
- Để dùng đượchoá cổ điển thì bênhoá và bên giải mã phải thống nhất với nhau về cơ chế mã
hoá cũng như giải mã. Nếu không thì hai bên sẽ không thể làm việc được với nhau.
II.4 Một số vấn đề khác.
II.4.1 Máy quay
Trước khi có mã hiện đại, máy quay là mã tích thông dụng nhất. Chúng được sử dụng rộng rãi trong chiến
tranh thế giới thứ hai: Đức, đồng minh Nhật. Máy quay tạo nên thay thế rất đa dạng phức tạp.
Trong máy sử dụng một số lõi hình trụ, mỗi lõi ứng với một phép thế, khi quay sẽ thay thế mỗi chữ
bằng một chữ khác tương ứng. Với 3 hình trụ khác nhau, ta có 26 x 26 x 26 = 17576 bảng chữ.
II.4.2 Dấu tin
Một trong những kỹ thuật khác để đảm bảo tính bảo mật của thông tin được gửi dấu tin. Đây một sự
lựa chọn dùng kết hợp hoặc đồng thời với mã. Dấu tin là dấu sự tồn tại của bản tin cần bảo mật trong một
thông tin khác như: trong bản tin dài chỉ dùng một tập con các chữ/từ được đánh dấu bằng cách nào đó; sử
dụng mực không nhìn thấy; dấu tin trong các file âm thanh hoặc hình ảnh. Các kỹ thuật này gần đây cũng
được quan tâm nghiên cứu. Tuy nhiên nó có nhược điểm là chỉ dấu được lượng thông tin nhỏ các bít.
- 22 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- 23 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Bài tập
1. Cho biến đọan mã sau dùng mã Cesar
"GCUA VQ DTGCM"
Suy luận tìm bản rõ.
2. Sử dụng kỹ thuật thám mã bảng chữ đơn, lập bảng tần suất các chữ, bộ chữ đôi, bộ chữ ba của đọan
mã sau:
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIVUEPHZHMDZSHZOWSF
PAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOUDTMOHMQ
Lập luận và cho biết ánh xạ của bảng chữ đơn và đưa ra bản rõ phù hợp
3. Nêu thuật toán dùng bảng Saint Cyr để hóa giải Vigenere khi biết từ khóa. Áp dụng thuật
toán đó mã hóa bản sau: “Network Security is very important for software development” với từ
khóa là “COMPUTER SCIENCE”
4. Tại sao thể nói “thể nói mã bộ đệm một lần là an toàn tuyệt đối, với bản bất kỳ bản
bất kỳ, luôn tồn tại một khoá để ánh xạ bản đó sang bản đã cho”. Giải thích nhận định sau “Về
mặt lý thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã là mã của một bản
rõ cho trước là như nhau”.
5. Tìm bản của bản “We are studying cryptography this year” sử dụng Playfair với từ khóa
“information technology”.
6. Chứng tỏ rằng, phép dịch chuyển không khắc phục được tính dư thừa của ngôn ngữ tự nhiên.
7. Chứng minh rằng tích của hai phép thế đơn một phép thế đơn tích của hai phép dịch chuyển
một phép dịch chuyển. Có thể nói gì về tích của một phép thế đơn và một phép dịch chuyển.
8. Có bao nhiêu khóa Playfair khác nhau.
9. Mã hóa bản rõ “Chung toi se la nhung ky su cong nghe thong tin gioi trong mot vai nam nua” sử dụng
từ khóa 631425.
10. Giả sử dùng mã dịch chuyển dòng với 8 cột. Hỏi có bao nhiêu khóa khác nhau. Nêu thuật toán giải
với từ khóa cho trước.
11. Chứng minh rằng: tích của hai phép thế sẽ một phép thế; tích của hai phép hoán vị sẽ một phép
hoán vị.
- 24 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG III
TRƯỜNG HỮU HẠN
Mở đầu
Giới thiệu về cấu trúc đại số - trường hữu hạn. Đây hình toán học đóng vai trò quan trọng
trong thuyết n đối với chuẩn nâng cao AES, đường cong Elip, IDEA khoá công
khai. liên quan đến các phép toán trên “số”: đây sẽ xét “số” khái niệm khái quát hơn các số
nguyên, số thực, số phức thường gặp trong số học, nói chung “số” có thể là các phần tử trong một tập hợp
nào đó. Đồng thời trên tập hợp đó trang bị c phép toán tương ứng thoả mãn một số tính chất nhất
định như các số với các phép toán cộng, trừ hoặc nhân, chia. Ta bắt đầu từ các khái niệm về nhóm, vành,
trường của đại số trừu tượng.
III.1 Các cấu trúc đại số
III.1.1 Nhóm
Cho một tập các phần tử hoặc “số” và một phép toán hai ngôi, mà kết quả cũng là một phần tử của tập
hợp đó. Tức ng với mỗi cặp phần tử trên tập đó, kết quả của phép toán cũng một phần tử xác
định của tập đã cho. Tính chất này ta gọi là tính đóng của phép toán trên tập đang xét.
Định nghĩa nhóm. Tập hợp G đó với phép toán . đã cho được gọi nhóm, nếu thỏa mãn các tính
chất sau với mọi phần tử a, b, c thuộc G:
o Tính kết hợp (a.b).c = a.(b.c)
o Có đơn vị e: e.a = a.e = a
o Có nghịch đảo a
-1
: a.a
-1
= e
o
Nếu có thêm tính giao hoán a.b = b.a, thì gọi là nhóm Aben hay nhóm giao hoán.
Định nghĩa nhóm xiclic.
o Định nghĩa lũy thừa như là việc áp dụng lặp phép toán:
Ví dụ: a
3
= a.a.a
o Và đơn vị e=a
0
o Một nhóm được gọi xiclic nếu mọi phần tử đều lũy thừa của một phần tử cố định nào đó.
Chẳng hạn b = a
k
đối với a cố định và mỗi b trong nhóm.
o Khi đó a được gọi là phần tử sinh của nhóm.
III.1.2 Vành
Cho một tập R các “số” với hai phép toán được gọi cộng nhân. đây “số” được hiểu phần tử
của tập hợp hai phép toán trên xác định trên tập hợp đó. Tập với hai phép toán trên được gọi
vành, nếu hai phép toán thoả mãn các tính chất sau
o Với phép cộng, R là nhóm Aben
o Với phép nhân, có
tính đóng và
tính kết hợp
tính phân phối đối với phép cộng a(b+c) = ab + ac
Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán.
- 25 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nếu phép nhân nghịch đảo không thương 0 (tức không hai phần khác 0 tích của
chúng lại bằng 0), thì nó tạo thành miền nguyên
III.1.3 Trường
Là một tập hợp F với hai phép toán cộng và nhân, thoả mãn tính chất sau:
o Với phép cộng F là nhóm Aben
o Với phép nhân F trừ phần tử 0 là nhóm Aben.
o F là một vành
thể nói các phép toán cộng, trừ, nhân, chia số khác 0. Phép trừ được coi như cộng với
số đối của phép cộng và phép chia là nhân với số đối của phép nhân:
a – b = a + (-b)
a / b = a.b
-1
Ví dụ: Dễ dàng thấy, với phép cộng và nhân thông thường:
o Tập số nguyên Z là nhóm Aben với phép cộng
o Tập số nguyên Z là vành giao hoán.
o Tập số hữu tỉ Q là trường.
o Tập số thực R là trường.
o Tập số phức C là trường với phép cộng và nhân hai số phức.
III.2 Số học trên Modulo
IV.2.1 Định nghĩa Modulo.
Cho số tự nhiên n và số nguyên a. Ta định nghĩa: a mod n là phần dư dương khi chia a cho n.
Định nghĩa quan hệ tương đương trên tập số nguyên
a ≡ b mod n
khi và chỉ khi a và b có phần dư như nhau khi chia cho n.
o Ví dụ: 100 mod 11 = 1; 34 mod 11 = 1, nên 100 ≡ 34 mod 11
o Số b được gọi là đại diện của a, nếu
o
o a ≡ b mod n
(a = qn + b)
0 <= b < n.
o dụ: -12 mod 7 -5 mod 7 2 mod 79 mod 7. đây 2 đại diện
của –12, -5, 2 và 9.
o Trong Modulo 7 ta có các lớp tuơng đương viết trên các hàng như sau:
...
-21 -20 -19 -18 -17 -16 -15
-14 -13 -12 -11 -10 -9 -8
-7 -6 -5 -4 -3 -2 -1
0 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 32 33 34
- 26 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
...
Các phần tử cùng cột là có quan hệ đồng dư vói nhau. Tập các đại diện của các số nguyên theo
Modulo n gồm n phần tử ký hiệu như sau:
Z
n
= { 0, 1, 2, 3, …, n-1 }.
Ước số
o Số b không âm được gọi ước số của a, nếu số m sao cho: a = mb trong đó a, b, m
đều nguyên.
o Tức là a chia hết cho b, ký hiệu là b|a
o Ví dụ: 1, 2, 3, 4, 6, 8, 12, 24 là các ước số của 24
III.2.2 Các phép toán số học trên Modulo
Cho trước một số n. Ta muốn thực hiện các phép toán theo Modulo của n. Ta có thể thực hiện các
phép toán trên các số nguyên như các phép cộng, nhân các số nguyên thông thường sau đó rút gọn
lại bằng phép lấy Modulo hoặc cũng có thể vừa tính toán, kết hợp với rút gọn tại bất cứ thời điểm
nào:
(a+b) mod n = [a mod n + b mod n] mod n (*)
(a.b) mod n = [a mod n . b mod n] mod n (**)
Như vậy khi thực hiện các phép toán ta có thể thay các số bằng các số tương đương theo Modulo n
đó hoặc đơn giản hơnthể thực hiện các phép toán trên các đại diện của nó: Z
n
= { 0, 1, 2, 3, …,
n-1 }.
o Z
n
với các phép toán theo Modulo tạo thành vành giao hoán có đơn vị. Thực vậy tính đóng của
các phép cộng nhân dựa trên hai công thức (*) (**). Các tính chất kết hợp, giao hoán
nghịch đảo được suy ra từ các tính chất tương ứng của các số nguyên.
o Các chú ý về tính chất rút gọn:
nếu (a+b)≡(a+c) mod n, thì b≡c mod n
Nhưng (ab)≡(ac) mod n, thì b≡c mod n chỉ khi nếu a là nguyên tố cùng nhau với n
Ví dụ. Áp dụng các tính chất của modulo:
(11*19 + 10
17
) mod 7 = ((11*19) mod 7 + 10
17
mod 7) mod 7 =
((11 mod 7* 19 mod 7) mod 7 + (10 mod 7)
17
mod 7) mod 7=
((4.(-2)) mod 7 + (((3
2
)
2
)
2
)
2
* 3 mod 7)mod 7=
((-1) mod 7 + ((2
2
)
2
)
2
* 3 mod 7)mod 7 = (-1 + 5) mod 7 = 4
Ví d: Bng Modulo 8 với pp cộng
- 27 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.2.3 Ước số chung lớn nhất.
Bài toán. Cho hai số nguyên dương a b. Bài toán tìm ước chung lớn nhất của hai số nguyên
dương bài toán chung của thuyết số. Ta hiệu GCD(a,b) ước số chung dương lớn nhất
của a b, tức số nguyên dương vừa ước của a vừa ước của b số nguyên dương lớn
nhất có tính chất đó.
Ví dụ: GCD(60,24) = 12 ; GCD (6, 15) = 3; GCD(8, 21) = 1.
Nguyên tố cùng nhau. Ta thấy 1 bao giờ cũng ước số chung của hai số nguyên dương bất kỳ.
Nếu GCD(a, b) = 1, thì a, b đựơc gọi là hai số nguyên tố cùng nhau:
Ví dụ: GCD(8,15) = 1, tức là 8 v à 15 là hai số nguyên tố cùng nhau
Tìm ước chung lớn nhất. y giờ chúng ta xét bài toán tìm ước số chung lớn nhất của hai s
nguyên dương cho trước. Dễ dàng chứng minh được tính chất sau:
GCD(a,b) = GCD(b, a mod b)
Như vậy để tìm ước số chung của một cặp số cho trước, ta đưa về bài toán tìm ước chung của cặp số
gồm số nhỏ hơn trong hai số đó phần của số lớn khi chia cho số nhỏ hơn. Thuật toán Ơcơlít tạo
nên vòng lặp, ở mỗi bước ta áp dụng tính chất trên cho đến khi phần dư đó còn khác 0.
Thuật toán Ơcơlit tìm GCD(a, b)
A=a, B=b
while B>0
•R = A mod B
A = B, B = R
return A
1970 = 1 x 1066 + 904 gcd(1066, 904)
1066 = 1 x 904 + 162 gcd(904, 162)
904 = 5 x 162 + 94 gcd(162, 94)
162 = 1 x 94 + 68 gcd(94, 68)
94 = 1 x 68 + 26 gcd(68, 26)
68 = 2 x 26 + 16 gcd(26, 16)
26 = 1 x 16 + 10 gcd(16, 10)
16 = 1 x 10 + 6 gcd(10, 6)
10 = 1 x 6 + 4 gcd(6, 4)
6 = 1 x 4 + 2 gcd(4, 2)
4 = 2 x 2 + 0
gcd(1970, 1066) = 2
- 28 -
Ví dụ: GCD(1970,1066)
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.3 Trường Galoa
Ta muốn đi tìm một trường số có hữu hạn các phần tử, tức là một tập hữu hạn các phần tử mà ở đó
có thể cộng trừ, nhân, chia mà không vượt ra ngoài phạm vi tập hữu hạn các phần tử đó. Trường Galoa
thuộc lọai đó và đóng vai trò quan trọng trong lý thuyết mã
.
thể chứng minh được rằng số các phần tử của trường hữu hạn bất kỳ bằng lũy thừa của p
m
của
nguyên tố p nào đó, ta ký hiệu
trường Galoa đó là GL(p
m
). Thông t
hường ta sử dụng các trường: GL(p) và GL(2
m
).
Sau đây chúng ta sẽ xây dựng các trường Galoa đó.
III.3.1 Trường Galoa
GL(p), với p là số nguyên tố.
o GL(p) gồm tập {0,1, … , p-1}
o Với các phép toán cộng nhân Modulo, n ta đã biết GL(p) tạo thành một vành giao
hoán. Vì p là số nguyên tố nên mọi số khác 0 nhỏ hơn p đều nguyên tố cùng nhau với p.
GL(p) tạo thành trường mọi a thuộc {1, , p-1} đều phần tử nghịch đảo a
-1
: a . a
-1
= 1.
Thực vậy a p nguyên tố cùng nhau nên theo thuật toán tìm nghịch đảo dưới đây ta sẽ tìm
được nghịch đảo của a.
Như vậy trên GL(p) ta có thể thực hiện các phép toán cộng, trừ, nhân, chia.
Ví dụ phép nhân trên GL(7)
III.3.2 Tìm số nghịch đảo
Bây giờ ta xét bài toán: nếu GCD(m, b) = 1, thì tìm nghịch đảo của b theo Modulo m. Ta mở rộng
thuật toán Ơcơlit vừa tìm ước chung lớn nhất của m b, vừa tính nghịch đảo trong trường hợp
GCD(m, b) = 1.
Thuật toán Euclid mở rộng:
- 29 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
EXTENDED EUCLID(m, b)
1.(A1, A2, A3)=(1, 0, m);
(B1, B2, B3)=(0, 1, b)
2. if B3 = 0
return A3 = gcd(m, b); no inverse
3. if B3 = 1
return B3 = gcd(m, b); B2 = b
–1
mod m
4. Q = A3 div B3
5. (T1,T2,T3)=(A1 – Q*B1,A2 – Q*B2, A3 – Q*B3)
6. (A1, A2, A3)=(B1, B2, B3)
7. (B1, B2, B3)=(T1, T2, T3)
8. goto 2
Thực vậy, các quan hệ sau là bất biến:
mA
1
+ bA
2
= A
3
; (1)
mB
1
+ bB
2
= B
3 (2)
mT
1
+ bT
2
= T
3
; (3)
Vì ban đầu: m.1 + b.0 = m; m.0 +b.1 = b, nên ta có (1) và (2) đúng. Và ta chứng minh trong một bước
lặp từ (1) và (2) suy ra (3). Từ thuật toán ta có :
T
1
= A
1
– Q.B
1
T
2
= A
2
– Q.B
2
T
3
= A
3
– Q.B
3
Nên ta sẽ chứng minh đẳng thức (3) còn lại
mT
1
+ bT
2
= m(A
1
– Q.B
1
) + b (A
2
– Q.B
2
)
= (mA
1
+ bA
2
) - Q(mB
1
+ bB
2
)
= A
3
– Q.B
3
= T
3
Khi sang bước lặp tiếp theo đổi vai trò B sang A T sang B, thì các công thức đối (1) (2) đối với
A, B sẽ đúng, do đó theo chứng minh trên (3) sđúng trong bước lặp tiếp theo. Vậy (1), (2), (3)
các bất biến của vòng lặp.
Cuối cùng khi B
3
= 1, thì từ các bất biến ta có:
mB
1
+ bB
2
= 1
bB
2
= 1- mB
1
bB
2
= 1 mod m
Do đó: B
2
= b
-1
mod m
Ví dụ. Tìm nghịch đảo của 550 trong GL(1759).
Mỗi bước thực hiện thuật toán Ơcơlit mở rộng sẽ được mô tả bởi một hàng trong bảng sau.
- 30 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Sau 4 bước. ta có B
3
= 1, khi đó thuật toán dừng, GCD(1759, 550) = 1 và 550
-1
mod 1759 = 355.
III.3.3 Số học đa thức
Ta xét tập các đa thức P
n
có bậc nhỏ hơn hoặc bằng n:
Trên tập các đa thức đó ta thể một số cách khác nhau thực hiện các phép toán cộng nhân đa
thức:
o Có thể thực hiện các phép toán thông thường trên đa thức
o Các phép toán trên đa thức với các hệ số trên Modulo p
o Các phép toán trên đa thức với các hệ số trên Modulo p sau đó lầy Modulo theo đa thức
m(x)
Phép toán đa thức thông thường
o Cộng trừ các hệ số tương ứng
o Nhân mọi hệ số với cùng một số.
Ví dụ. f(x) = x
3
+ x
2
+ 2 và g(x) = x
2
x + 1
f(x) + g(x) = x
3
+ 2x
2
x + 3
f(x) – g(x) = x
3
+ x + 1
f(x) . g(x) = x
5
+ 3x
2
– 2x + 2
Phép toán đa thức với Modulo hệ số
o Cho số nguyên tố p tùy ý
o Tính các hệ số theo Modulo p. Khi đó tập các hệ số được lấy từ trường GL(p). Còn phép
nhân đa thức có thể nhận được kết quả là đa thức bậc lớn hơn n.
o Ta thường quan tâm đến Mod 2, tức là mọi hệ số là 0 hoặc 1
Giả sử f(x) = x
3
+ x
2
and g(x) = x
2
+ x + 1
f(x) + g(x) = x
3
+ x + 1
f(x) . g(x) = x
5
+ x
2
Sau đây ta xét riêng trường hợp khi các phép tóan cộng, nhân đa thức được thực hiện với phép lấy
Modulo theo một đa thức nào đó.
III.3.4 Phép toán đa thức với Modulo đa thức
Cho đa thức g(x) bậc n các hệ số của các đa thức xét trong mục này lầy trong trường Galoa
GF(p) với p là số nguyên tố. Viết đa thức f(x) dưới dạng:
f(x) = q(x) g(x) + r(x)
trong đó r(x) là phần dư khi chia f(x) cho g(x). Rõ ràng bậc của r(x) sẽ nhỏ hơn bậc của g(x).
Ta viết r(x) = f(x) mod g(x)
- 31 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nếu không phần dư, tức r(x) = 0, ta nói g(x) ước của f(x) hay g(x) chia hết f(x) hay f(x)
chia hết cho g(x).
Trong trường hợp g(x) không có ước ngoài 1 và chính nó, thì ta nói g(x) đa thức nguyên tố hoặc
không rút gọn được. Ví dụ g(x) = x
3
+ x + 1 là đa thức nguyên tố.
Việc tìm ước chung lớn nhất của hai đa thức được trình bày trong thuật toán tương tự như Ơcolit
như sau:
Tìm đa thức ước chung lớn nhất GCD(a(x), b(x))
o c(x) = GCD(a(x), b(x)) nếu c(x) là đa thức bậc lớn nhất mà chia hết cả a(x), b(x)
o Có thể điều chỉnh thuật toán Euclid’s Algorithm để tìm nó:
EUCLID[a(x), b(x)]
1. A(x) = a(x); B(x) = b(x)
2. if B(x) = 0 return A(x) = gcd[a(x), b(x)]
3. R(x) = A(x) mod B(x)
4. A(x) ¨ B(x)
5. B(x) ¨ R(x)
6. goto 2
Thuật toán tìm nghịch đảo của một đa thức theo một đa thức nguyên tố cùng nhau với nó, được trình
bày tương tự như Ơcolit mở rộng.
Phép toán đa thức với Modulo đa thức.
Cho g(x) đa thức nguyên tố bậc n. Khi đó tập các đa thức bậc nhỏ hơn bằng n với các phép toán
cộng nhân đa thức theo Modulo của đa thức nguyên tố g(x) tạo thành trường hữu hạn, gọi
trường Galoa và ký hiệu là GL(p
n
).
Sau đây ta xét trường GF(2
n
), tức là xét tập các đa thức với các hệ số Modulo 2 và bậc nhỏ hơn bằng n
phép toán nhân thể rút gọn theo Modulo của đa thức g(x) nguyên tố bậc n. thể tìm được
nghịch đảo nhờ thuật toán Euclide mở rộng.
Tuy nhiên để thuận tiện trong việc biểu diễn đa thức, ta sẽ xây dựng song ánh từ tập các đa thức bậc
nhỏ hơn n vào các dãy n bit dãy các hệ số thể hiện sự mặt của các lũy thừa tương ng, xây
dựng các phép toán cộng nhân các dãy bit sao cho nhận được kết quả tương tự như cộng nhân
các đa thức tương ứng cùng với việc rút gọn theo đa thức nguyên tố. Để đơn giản ta minh họa qua
dụ cụ thể trên GL(2
3
).
Ví dụ GF(2
3
)
- 32 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Bảng trên có thể xây dựng bằng cách tính trực tiếp trên các phép toán cộng và nhân đa thức sau đó
lấy Modulo theo đa thức nguyên tố x
3
+ x + 1.
Tuy nhiên có thể thực hiện các phép toán trên dãy 3 bit như sau;
o Vì các hệ số là 0, 1 nên các đa thức có thể biểu diễn như các xâu bit
o Phép cộng hai đa thức trở thành XOR (cộng cơ số 2) trên các xâu bit tương ứng với hai đa thức
đó.
o Nhân một đa thức với x trở thành Shift
sang trái 1 đơn vị của dãy . bit tương ứng với đa thức đó.
o Phép tính Modulo theo đa thức nguyên tố của một đa thức cùng bậc n được thực hiện bằng
cách tính hiệu hay cũng là tổng của hai đa thức đó, mà đó cũng chính là lấy dãy bit của đa thức
đó XOR với dãy bit của đa thức nguyên tố
o .
o
o
o Phép nhân và tính Modulo được kết hợp bằng phép lặp giữa Shìt và XOR.
Ví dụ. Trong GF(2
3
) ta có (x
2
+1) tương ứng dãy bít 101
2
(x
2
+x+1) tương ứng với dãy 111
2
Tổng hai đa thức trên là
(x
2
+1) + (x
2
+x+1) = x
101 XOR 111 = 010
2
Tích của hai đa thức là
(x+1).(x
2
+1) = x.(x
2
+1) + 1.(x
2
+1)
= x
3
+x+x
2
+1 = x
3
+x
2
+x+1
011.101 = (101)<<1 XOR (101)<<0
= 1010 XOR 101 = 1111
2
Phép rút gọn theo Modulo là
(x
3
+x
2
+x+1 ) mod (x
3
+x+1) = (x
3
+x
2
+x+1 ) - (x
3
+x+1 )
= x
2
1111 mod 1011 = 1111 XOR 1011 = 0100
2
Như vậy trường Galoa GL(2
n
) bao gồm 2
n
phần tử. Muốn trường Galoa số phần tử lớn tuỳ ý, ta chỉ
việc tăng lấy n thích hợp. Đặc biệt việc tính toán các phép toán cộng trừ, nhân, chia trên đó rất
nhanh và hiệu quả trên các thao tác của các thiết bị phần cứng. Chính vì vậy trường Galoa đóng vai trò
quan trọng trong lý thuyết mã mà chúng ta sẽ thấy rõ qua các chương tiếp theo.
- 33 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4 Giới thiệu lý thuyết số
III.4.1 Các số nguyên tố
Như chúng ta đã biết s nguyên tố các số nguyên dương chỉ ước số 1 chính nó. Chúng không
thể được viết dưới dạng tích của các số khác. 1 là số nguyên tố, nhưng không quan tâm đến nó. Xét các s
nhỏ hơn 10 ta có: 2, 3, 5, 7 số nguyên tố, chúng không ước số khác 1 chính nó; 4, 6, 8, 9, 10
không phải số nguyên tố. thể nói 2 số chẵn duy nhất số nguyên tố. Các số nguyên tố trung
tâm của lý thuyết số. Số các số nguyên tố là vô hạn.
Ví dụ. Sau đây là danh sách các số nguyên tố nhỏ hơn 200:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191
193 197 199
III.4.2 Phân tích ra thừa số nguyên tố
Một trong những bài toán bản của số học phân tích ra thừa số nguyên tố số a, tức viết dưới
dạng tích của các số nguyên tố. Lưu ý rằng phân tích bài toán khó hơn rất nhiều so với bài toán nhân
các số để nhận được tích.
Ta có kết luận, mọi số nguyên dương đềuphân tích duy nhất thành tích các lũy thừa của các số nguyên
tố:
Ví dụ: 91=7×13; 3600=2
4
×3
2
×5
2
Thông thường để tìm phân tích trên, ta phải kiểm tra tính chia hết cho các số nguyên tố từ nhỏ đến lớn
thực hiện phép chia liên tiếp cho các số nguyên tố, rồi gộp thành lũy thừa của các số nguyên tố.
III.4.3 Các số nguyên tố cùng nhau và GCD
Hai số nguyên dương a và b không có ước chung nào ngoài 1, được gọi là nguyên tố cùng nhau.
Ví dụ: 8 và 15 là nguyên tố cùng nhau, vì ước của 8 là 1, 2, 4, 8, còn ước của 15 là 1, 3, 5, 15. Chỉ có 1
ước chung của 8 và 15.
Ngược lại có thể xác định ước chung lớn nhất bằng cách trong các phân tích ra thừa số của chúng, tìm các
thừa số nguyên tố chung và lấy bậc lũy thừa nhỏ nhất trong hai phân tích của hai số đó.
Ví dụ. Ta có phân tích: 300=2
1
×3
1
×5
2
và 18=2
1
×3
2
. Vậy
GCD(18,300)=2
1
×3
1
×5
0
=6
III.4.4 Định lý Ferma (Định lý Ferma nhỏ)
a
p-1
mod p = 1
trong đó p là số nguyên tố và a là số nguyên bất kỳ khác bội của p: GCD(a, p) = 1.
Hay với mọi số nguyên tố p và số nguyên a không là bội của p, ta luôn có
a
p
= a mod p
Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên dương nhỏ hơn p.
Ví dụ. 5 và 7 là các số nguyên tố. 2 và 3 không là bội tương ứng của 7 và 5, nên theo định lý Ferma ta
2
7-1
mod 7 = 1 (= 2
6
mod 7 = 64 mod 7= 1)
3
5-1
mod 5 = 1 (= 3
4
mod 5 = 81 mod 5= 1)
- 34 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
(-2)
11-1
mod 11 = 1 (= 2
10
mod 11 = 1024 mod11 = 1)
Kết quả trên được dùng trong khoá công khai. cùng được sử dụng để kiểm tra tính nguyên tố của một
số nguyên p nào đó, bằng cách lấy ngẫu nhiên các số a kiểm tra xem tính chất nêu trên không, kết
luận là p nguyên tố càng thuyết phục nếu phép thử trên đúng với nhiều lần chọn ngẫu nhiên các số a.
III.4.5 Hàm Ole
Cho n một số nguyên dương. Khi thực hiện phép tính đồng n của mọi số nguyên khác ta nhận được
tập đầy đủ các phần dư có thể có là:
0, 1, 2,…, n-1
Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với n quan tâm đến số lượng c
phần tử như vậy đối với số nguyên dương n cho trước.
Ví dụ. Với n = 10:
o Tập đầy đủ các phần dư là {0,1,2,3,4,5,6,7,8,9}
o Tập rút gọn các phần dư nguyên tố với 10 là {1,3,7,9}
o Số các phần tử của tập rút gọn trên là giá trị của hàm Ole Ф(n). Như vậy, Ф(10) = 4.
Muốn tính Ф(n) việc đếm số các số ngưyên tố cùng nhau với n nhỏ hơn n được loại bỏ đây
bài toán tốn nhiều công sức.
Nói chung có thể tính hàm Ơle của một số dựa trên biểu thức phân tích ra thừa số của số đó.
o Dễ dàng thấy, nếu p là số nguyên tố Ф(p) = p-1
o Nếu p và q là hai số nguyên tố khác nhau, thì
o thể chứng minh được rằng:
o Ф(p.q) = (p-1)(q-1)
o Nếu p là số nguyên tố, thì Ф(p
n
) = p
n
-p
n-1
o Nếu s và t là hai số nguyên tố cùng nhau, thì Ф(s.t) = Ф(s).Ф(t)
Vi dụ.
Ф(37) = 37 – 1 = 36
Ф(21) = (3–1)×(7–1) = 2×6 = 12
Ф(72) = Ф(8.9) = Ф(8). Ф(9) = Ф(2
3
).Ф(3
2
) =
= (2
3
-2
2
)(3
2
-3
1
) = 4.6 = 24
III.4.6 Định lý Ole
Định lý Ole là tổng quát hoá của Định lý Ferma
a
Ф
(n)
mod n = 1
với mọi cặp số nguyên dương nguyên tố cùng nhau a và n: gcd(a,n)=1.
Ví dụ. a = 3; n = 10; Ф(10)=4;
Vì vậy 3
4
= 81 = 1 mod 10
a = 2; n =11; Ф(11)=10;
Do đó 2
10
= 1024 = 1 mod 11
- 35 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4.7 Kiểm tra tính nguyên tố
Giả sử cần phải tìm một số nguyên tố rất lớn. Lấy ngẫu nhiên một số đủ lớn, ta cần phải kiểm tra xem số
đó có phải là số nguyên tố không. Phương pháp truyền thống là thử bằng phép chia như sau:
o Chia cho tất cả các số (chỉ cần nguyên tố) nhỏ hơn hoặc bằng căn bậc hai của số đó. Nếu
không chia hết cho số nào, thì đó là số nguyên tố.
o Chỉ hiệu quả khi xét các số nhỏ.
Có phương pháp khác, mà ta sẽ xét ở đây, sử dụng các phép kiểm tra tính nguyên tố thống kê dựa trên các
tính chất
o Mà mọi số nguyên tố phải thỏa mãn
o Nhưng có một số số không nguyên tố, gọi là giả nguyên tố cũng thoả mãn tính chất đó.
Cụ thể là phép kiểm tra dựa trên Định lý Ferma như sau: nếu số n cần kiểm tra tính nguyên tố là số nguyên
tố, thì nó sẽ thoã mãn định lý Ferma đối với mọi số a nhỏ hơn a
n-1
mod n = 1. Như vậy, lấy ngẫu nhiên
số a kiểm tra xem tính chất trên không. Nếu thì n thể số nguyên tố, nếu cần độ tin cậy
lớn hơn, thì ta kiểm tra liên tiếp nhiều lần n vậy với các số ngẫu nhiên a được chọn. Sau mỗi lần qua
được phép thử, xác suất để n là số nguyên tố lại tăng lên. Chú ý rằng
- nếu b
i
mod n = 1,
thì b
2i
mod n = (1)
2
mod n = 1 và
- nếu b
i
mod n = n – 1,
thì b
2i
mod n = (n - 1)
2
mod n = (n
2
– 2n +1) mod n = 1
Kiểm tra số n số nguyên tố không, ta chỉ cần xét n lẻ, khi đó n-1 chẵn biểu diễn dạng
(n–1)= 2
k
.q
Khi đó để tính a
n-1
, ta tính a
q
, sau đó bình phương liên tiếp k lần.
Thuật toán Miller - Rabin
Thuật toán như sau:
TEST (n) is:
1. Find integers k, q, k > 0, q odd, so that (n–1)= 2
k
.q
2. Select a random integer a, 1<a<n–1
3. if a
q
mod n = 1 then return (“maybe prime");
4. for j = 0 to k – 1 do
5. if (a
2
j
q
mod n = n-1) then return(" maybe prime ")
6. else return ("composite")
Các xem xét về mặt xác suất
Nếu thuật toán Miller Rabin trả về số “composite” thì số đó chắc chắn không là số nguyên tố, vì khi đó số
n và số a < n không thoả mãn định lý Fecma, tức là a
n-1
mod n ≠ 1.
Ngược lại số đó thể số nguyên tố hoặc giả nguyên tố theo nghĩa thoả mãn địnhFecma với số a
< n. Người ta chứng minh được rằng xác suất để sgiả nguyên tố đó không số nguyên tố ¼. Suy
ra nếu lặp t phép thử với các lựa chọn ngẫu nhiên khác nhau của số a, thì khi đó xác suất để số n sau t
phép thử là số nguyên tố là: 1-(1/4)
t
dụ. Sau 10 bước, t = 10, mà số đã cho n đều có thể là nguyên tố, thì xác suất để n là số nguyên tố là 1
– (1/4)
10
> 0.99999.
Phân bố nguyên tố.
Định về số nguyên tố khẳng định số nguyên tố xuất hiện trung bình sau mỗi khoảng ln n số nguyên
(nếu xét các số trong kích thước n). Như vậy bỏ qua số chẵn các bội số của 5, ta cần kiểm tra 0.4ln n
số trong kích thước n để tìm được 1 số nguyên tố. Chẳng hạn n=1024, thì 0.4*ln 1024 = 0.4*10 = 4,
nghĩa trong 1024 số đầu, thì trung bình cứ 4 số lại một số nguyên tố. Lưu ý đây chỉ trung bình,
có lúc các số nguyên rất gần nhau và có lúc lại rất xa nhau.
- 36 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4.8 Định lý phần dư Trung Hoa
Trong nhiều trường hợp ta muốn tìm ch để tăng tốc độ tính toán Modulo. Các phép toán trên modulo
các số nhỏ tính nhanh nhiều so với các số lớn. Chính vậy nếu số lớn phân tích được thành tích của các
số nhỏ, từng cặp nguyên tố cùng nhau, thì ta sẽ có cách tính hiệu quả nhờ vào định lý Phần dư Trung hoa.
Tính toán trên modulo của một tích các số mod M với M= m
1
m
2
..m
k
, trong đó GCD(m
i
, m
j
) = 1, với mọi i khác j. Định phần Trung Hoa cho phép làm việc trên từng
modulo m
i
riêng biệt. thời gian tính toán các phép toán trên modulo tỷ lệ với kích thước của số lấy
modulo nên điều đó sẽ nhanh hơn tính toán trên toàn bộ M.
Có thể triển khai Định lý Trung Hoa theo một số cách như sau:
Tính toán theo modulo số lớn. Để tính A mod M, với M khá lớn A biểu thức số học nào đó.
Trước hết ta cần tính tất cả a
i
= A mod m
i
. Sau đó sử dụng công thức
trong đó M
i
= M/m
i
dụ. Tính 17
8
mod 77. Áp dụng định phần Trung hoa, ta coi A = 17
18
, m
1
= 7, m
2
= 11. Khi đó
M
1
= 11, M
2
= 7 và
11
-1
mod 7 = 4
-1
mod 7 = 2, suy ra c
1
= 11*2 = 22
7
-1
mod 11 = 8, suy ra c
2
= 7*8 = 56
a
1
= 17
8
mod 7 = (17 mod 7)
8
mod 7 = 3
8
mod 7 = (3
2
)
4
mod 7 = 2
a
2
= 17
8
mod 11 = (17 mod 11)
8
mod 11 = 6
8
mod 11 =
= (6
2
)
4
mod 11 = 3
4
mod 11 = 4
Vậy A = 17
8
mod 77 = (2*22 + 4*56) mod 77 = 268 mod 77 = 37 mod 37
Giải hệ phương trình modulo. Cho a
i
= x mod m
i,
với GCD(m
i
, m
j
) = 1, với mọi i khác j. Khi đó ta
cũng áp dụng Định lý phần dư Trung Hoa để tìm x.
Ví dụ. Cho x 5 mod 7 và x 6 mod 11. Tìm x.
Áp dụng định lý phần dư Trung hoa, ta tính:
7
-1
mod 11 = 8 và 11
-1
mod 7 = 2. Như vậy
x = (5*2*11 + 6*8*7) mod (7*11) = 61 mod 77.
III.4.9 Căn nguyên tố
Từ Định Ole ta a
Ф
(n)
mod n=1, với a nnguyên tố cùng nhau. Nếu không số dương
nào nhỏ hơn Ф(n), tính chất như vậy đối với a, thì khi đó ta gọi a căn nguyên tố của n. Cụ thể
như sau:
Xét m để a
m
mod n = 1, GCD(a,n)=1
Theo Định Ơle ta m = Ф(n) thỏa mãn hệ thức trên, nhưng thể cũng giá trị nhỏ hơn của m <
Ф(n) cũng thoả mãn.
Khi đạt được m như vậy, thì nó cũng thoả mãn với bội của m, tức là sẽ có vòng lặp.
- 37 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nếu giá trị m = Ф(n) số dương nhỏ nhất thoả mãn công thức trên thì a được gọi căn nguyên tố
của n.
Nếu p số nguyên tố a căn nguyên tố của p, thì các luỹ thừa của a: a
0
, a
1
, …, a
p-2
sẽ
sinh ra nhóm modulo p.
Việc tìm các căn nguyên tố a của n sẽ có ích trong việc xét mã công khai.
Ví dụ. Xét số nguyên tố p = 5 và xét xem a = 2 có phải là căn nguyên tố của 5 không?
Ta có:
2 mod 5 = 2; 2
2
mod 5 = 4; 2
3
mod 5 = 3; 2
4
mod 5 = 1
Rõ ràng m= 4= Ф(5) là số mũ dương nhỏ nhất có tính chất 2
m
mod 5 = 1, nên 2 là căn nguyên tố của 5.
Xét số n = 6 và xét xem a = 3 có phải là căn nguyên tố của 3 không?
Ta có
3 mod 8 = 3; 3
2
mod 8 = 1; 3
3
mod 8 = 3; 3
4
mod 8 = 1
ràng m= 2 < 4 = Ф(8) số dương nhỏ nhất tính chất 3
m
mod 8 = 1, nên 3 không căn
nguyên tố của 8.
III.4.10 Logarit rời rạc
Bài toán ngược của bài toán lũy thừa tìm logarit rời rạc của một modulo p, tức tìm số nguyên x
sao cho
a
x
= b mod p
Hay còn được viết là x=log
a
b mod p hoặc x=ind
a,p
(b)
Nếu a là căn nguyên tố của p p số nguyên tố, thì luôn luôn tồn tại logarit rời rạc, ngược lại thì thể
không
Ví dụ. Tìm x = log
2
3 mod 13. Bằng cách thử lần lượt:
2
0
mod 13 = 1; 2
1
mod 13 = 2, 2
2
mod 13 = 4, 2
3
mod 13 = 8, 2
4
mod 13 = 3.
Vậy log
2
3 mod 13 = 4.
Tìm x = log
3
4 mod 13 (tìm x: 3
x
= 4 mod 13). Trong trường hợp này không có lời giải, vì
3
0
mod 13 = 1; 3
1
mod 13 = 3; 3
2
mod 13 = 9; 3
3
mod 13 = 1= 3
0
mod 13
Ta nhận thấy, trong khi i toán lũy thừa dễ dàng, thì bài toán logarit rời rạc rất khó. Đây cũng
một cơ sở của mã công khai.
Bài tập.
1. Chứng tỏ rằng tập các số nguyên với phép cộng hai số nguyên tạo thành nhóm giao hoán.Chứng tỏ
rằng tập các số nguyên với phép cộng hai số nguyên phép nhân hai số nguyên tạo thành vành
giao hoán. nhóm giao hoán. Hỏi vành đó có tạo thành miền nguyên hay trường không.
2. Chứng tỏ rằng tập các phần khi chia cho n, Z
n
với hai phép toán nhân theo modulo n tạo
thành vành giao hoán. Với n thỏa mãn điều kiện gì, thì vành đó là trường.
3. Tính giá trị các biểu thức theo modulo sau:
8 mod 9 + 7 mod 9
8 mod 9 * 7 mod 9
5 mod 11 – 9 mod 11
5
3
mod 7
5
20
mod 7
5/6 mod 7
4. Tính giá trị các biểu thức theo modulo sau
(-546) mod 13 - 347 mod 11
- 38 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
(1234 + 2345) mod 17
(213 * 345) mod 19
15
-1
mod 101
41
-1
mod 100
14
35
mod 11
(235*126/13) mod 19
31
130
mod 23
(235
25
/17 + 126
19
. 39
7
/13) mod 29
5. Cài đặt thuật toán Ocolit mở rộng
6. Biểu diễn phép nhân đa thức với hệ số theo mod 2 và theo module đa thức sau (x
3
+ x + 1) (gọi là
GL(2
3
):
(x + 1) * (x
2
+ x + 1) mod (x
3
+ x + 1)
x
2
* (x
2
+ x + 1) mod (x
3
+ x + 1)
(x
2
+ 1) * (x
2
+ x + 1) mod (x
3
+ x + 1)
(x
2
+ x + 1) * (x
2
+ x + 1) mod (x
3
+ x + 1)
dưới dạng các phép toán shift và XOR của bit
7. Chứng tỏ GL(2
3
) là một trường, nêu thuật toán tìm các phần tử nghịch đảo theo phép nhân của các
phần tử khác 0.
8. Tính hàm Ơle của các số nguyên sau:
12, 17, 21, 32, 36, 40, 72, 256.
8 Dùng Định lý Ferma và Định lý Ole tính các biểu thức sau
6
16
mod 17; 15
16
mod 17; 95
100
mod 101
7
4
mod 10; 9
5
mod 10; 10
12
mod 21; 91
90
mod 100;
9 Cài đặt chương trình kiểm tra số giả nguyên tố
10 Giải các phương trình modulo sau
x mod 11 = 3; x mod 13 = 6
y mod 51 = 11; y mod 100 = 15
z mod 12 = 5; z mod 17 = 8; z mod 23 = 11.
11 Sử dụng định lý phần dư Trung Hoa tính giá trị các biểu thức sau
25
30
mod (7*8)
70
254
mod (11*13)
60
-1
mod (11*13)
((21
100
+ 33
-1
). 45
51
) mod (7.9.11)
((19
125
+ 25
51
)47
21
/37 mod (9.11.13)
12 Tìm các căn nguyên tố của 9, 11
13 Tìm các căn nguyên tố của 13 và 17.
14 Tính logarit rời rạc sau, nếu có:
Log
3
7 mod 11, Log
2
9 mod 11
Log
5
6 mod 13, Log
3
7 mod 13
Log
2
15 mod 17, Log
3
11 mod 17
- 39 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG IV:
CHUẨN MÃ DỮ LIỆU (DES) VÀ CHUẨN MÃ NÂNG CAO (AES)
IV.1 Mã khối hiện đại
Bây giờ chúng ta xét các khối hiện đại. Đây kiểu được sdụng rộng rãi nhất của các thuật toán
mã hoá. Đồng thời nó cũng được sử dụng kết hợp với các thủ tục khác nhằm cung cấp các dịch vụ an toàn
và xác thực.
Trước hết chúng ta tập trung vào chuẩn mã dữ liệu DES (Data Encryption Standards) để minh hoạ cho các
nguyên khối. Trước hết chúng ta xét hai kiểu xử thông tin khác nhau trên bản rõ. Một kiểu chia
dữ liệu thành từng khối để xử lý, kiểu kia xử lý trực tiếp từng đơn vị thông tin.
IV.1.1 Phân biệt mã khối với mã dòng.
o Mã khối (block) xử lý bản tin theo từng khối, lần lượt mỗi khối được mã hoặc giải mã. Có thể xem
giống như phép thế với các ký tự lớn – mỗi khối gồm 64 bít hoặc nhiều hơn.
o dòng xử bản tin theo từng bít hoặc bite, lần lượt mỗi bít hoặc bite được mã hoá hoặc giải
mã. Chẳng hạn như mã khoá tự động Vigenere.
o Rất nhiều mã hiện nay là khối. Chúng khả năng ứng dụng rộng rãi hơn. Rất nhiều ứng dụng
mã đối xứng trên mạng sử dụng mã khối.
Các nguyên lý mã khối
o Hầu hết các khối đối xứng dựa trên cấu trúc Fiestel, do nhà bac học Fiestel đề xuất năm
1973. Đây là điều cần thiết, vì cần phải có khả năng giải mã các bản mã một cách có hiệu quả.
o khối được coi giống nphép thế cực lớn. Cần bảng 2
64
đầu vào cho khối 64 bít, bảng
như vậy là rất lớn. Do đó có thể thay thế bằng cách tạo các khối nhỏ hơn.
o Sử dụng ý tưởng dùng tích. đây sẽ kết hợp giữa mã thay thế hoán vị, đồng thời sử
dụng nhiều vòng lặp như vậy.
IV.1.2 Claude Shannon và mã phép thế hoán vị
Năm 1949, Shannon đưa ra ý tưởng mạng phép thế hoán vị (S-P networks) tích phép thế
hoán vị hiện đại với mục đíchcản trở việc thámdựa vào các phân tích thống kê. Giả sử kẻ thám mã
biết một số tính chất thống của bản như bảng phân bố tần suất của các chữ cái, bộ các chữ cái. Nếu
các đặc trưng thống này được phản ánh trong bản mã, thì kẻ thám sẽ tìm cách tìm được khoá hoặc
một phần khoá hoặc tìm ra bản rõ. Shannon muốn một bản tưởng, đó mọi đặc trưng thống
kế đều độc lập với khoá riêng được dùng, như vậy kẻ thám mã sẽ không có cơ sở để tìm khoá.
Mạng S-P đã tạo nên cơ sở cho mã khối hiện đại. Mạng S-P dựa trên hai thao tác mã cơ bản mà ta đã biết:
phép thế (S-box) và hoán vị (P-box). Chúng sẽ tạo nên độ rối loạn và khuếch tán của bản tin.
Rối loạn và khuếch tán
o Một tính chất quan trọng của tốt cần phải che dấu hoàn toàn các tính chất thống của
bản tin gốc. Như ta đã thấy bộ đệm một lần thể làm được điều đó, do tính ngẫu nhiên của
khoá đệm và độ dài bằng bản tin của nó.
o Shannon nghiên cứu đề xuất phương pháp thực tế hơn kết hợp các thành phần khác nhau của
bản rõ để xử lý qua nhiều lần và nhận được bản mã.
o Khuếch tán m tan biến cấu trúc thống của bản trên bản mã. Điều đó đạt được nếu mỗi
bit của bản tác động đến giá trị của rất nhiều bit trên bản hay mỗi bit của bản chịu tác
động của nhiều bit bản rõ.
o Rối loạn làm cho quan hệ giữa bản khoá càng phức tạp càng tốt. Bản tính rối loạn
cao sẽ làm cho việc tìm khoá trở nên rất khó khăn, ngay cả khi kẻ tấn công các đặc trưng
thống kê của bản mã và biết cách khoá tác động đến bản mã.
IV.1.3 Cấu trúc mã Fiestel
Horst Fiestel sáng tạo nên mã Fiestel dựa trên tích nghịch đảo được, tức kết hợp thế với
mã hoán vị qui trình giải mã giống với mã hoá, chỉ cần thay đổi vai trò khối bản mã với khối
bản rõ và thứ tự các khoá con được dùng. Từ khoá chính sinh ra cho mỗi vòng lặp một khoá con.
- 40 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Chia khối đầu vào thành 2 nửa bằng nhau:
o Thực hiện phép thế trên nửa trái. Sử dụng hàm vòng trên nửa phải khoá con, rồi tác
động đến nửa trái.
o Sau đó hoán vị các nửa, nửa phải chưa được xử lý.
o Xử lý vòng tiếp theo.
Đây một thể hiện của mã thế kết hợp với hoán vị của Shannon. Ta xem xét cụ thể cấu trúc
Fiestel gồm n vòng:
Nguyên tắc thiết kế mã khối Fiestel
Tăng kích thước khối sẽ làm tăng độ an toàn nhưng làm giảm tốc độ mã
Tăng kích thước khoá sẽ làm tăng độ an toàn – tìm khoá khó hơn, nhưng làm chậm mã.
Tăng số vòng làm tăng độ an toàn nhưng làm chậm mã
Phát sinh khoá con càng phức tạp làm cho việc thám mã khó hơn nhưng làm chậm mã
Hàm vòng càng phức tạp làm cho việc thám mã khó hơn nhưng làm chm mã
Phần mm mã hoá/gii mã nhanh và khó tm mã là tiêu c hay đưc đ cp đến đối với ng
dụng kim nghim thực tế.
- 41 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Giải mã khối Fiestel
IV.2 Chuẩn mã dữ liệu (DES)
DES (Data Encryption Standards) khối sử dụng rộng rãi nhất trên thế giới trong thời gian vừa qua.
Nó được đưa ra năm 1977 bởi NBS – văn phòng chuẩn Quốc gia Hoa kỳ (bây giờ là NIST - Viện chuẩn và
công nghệ Quốc gia). DES khối với mỗi khối dữ liệu 64 bít dùng khoá dài 56 bít. được sử
dụng rộng rãi và đã được tranh luận kỹ về mặt an toàn.
IV.2.1 Lịch sử DES:
Cuối những năm 1960, IBM phát triển Lucifer, được lãnh đạo bởi Fiestel. Ban đầu Lucifer sử dụng
khối dữ liệu 64 bít và khoá 128 bít. Sau đó tiếp tục phát triển như mã thương mại. Năm 1973 NBS yêu cầu
đề xuất chuẩn mã Quốc gia. IBM đề nghị bản sửa đổi Lucifer, sau này gọi là DES. Đã có các tranh luận về
thiết kế của DES. Vì chuẩn của DES được công khai, mọi người đóng góp ý kiến về tốc độ, độ dài khoá và
mức độ an toàn, khả năng thám mã. Người ta đề xuất chọn khoá 56 bít thay vì 128 để tăng tốc đọ xử lý
đưa ra các tiêu chuẩn thiết kế một chuẩn dữ liệu. Các suy luận và phân tích chứng tỏ rằng thiết kế như
vậy là phù hợp. Do đó DES được sử dụng rộng rãi, đặc biệt trong lĩnh vực tài chính.
IV.2.2 Sơ đồ mã DES
Hoán vị ban đầu IP: đây bước đầu tiên của tính toán dữ liệu, hoán vị IP đảo thứ tự các bít đầu
vào: các bít chẵn sang nửa trái các bít lẻ sang nửa phải. Hoán vị trên dễ dàng thực hiện trên
phần cứng.
Mỗi số trong hệ 16 biểu diễn bởi 4 bit, 16 số được thể hiện bởi 64 bit. Mỗi bit một vị trí xác
định qua hoán vị ban đầu (xem bảng phụ lục cuối tài liệu).
Ví dụ
- 42 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
IP(675a6967 5e5a6b5a) = (ffb2194d 004df6fb)
Cấu tạo một vòng của DES
Sử dụng hai nửa 32 bít trái 32 bít phải. Như đối với mọi Fiestel, nửa phải của vòng trước được
chuyển qua nửa trái của bước sau lấy đầu ra của hàm vòng trên nửa phải khoá con cộng số 2
với nửa trái. Có thể biểu diễn bằng công thức như sau:
L
i
= R
i–1
R
i
= L
i–1
xor F(R
i–1
, K
i
)
đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán vị E, rồi cộng vào với khoá con 48 bít.
Sau đó chia thành 8 cụm 6 bít cho qua 8 S-box để nhận được kết quả 32 bít. Đảo lần cuối sdụng
hoán vị 32 bít P nhận được 32 bít đầu ra, rồi cộng với nửa trái để chuyển thành nửa phải của bước sau.
Các hộp thế S (xem phụ lục cuối tài liệu)
8 hộp S khác nhau ánh xạ 6 bít vào 4 bít. Các hộp S box thực hiện các phép thế, chúng được
cấu tạo không có qui luật và cố định. Mỗi S box là hộp 4 x 16 bít, mỗi hàng là một hoán vị của 16
phần tử. Giả sử ta 6 bít đầu vào. Ta lấy hai bít ngoài 1-6 ghép lại được số nhị phân xác định
chọn hàng từ 0 đến 3 trong S box. Bốn bít từ 2 đến 5 một số nhị phân xác định cột từ 0 đến 15
trong S box. Lấy phần tử tương ứng trên hàng và cột mới được xác định, đây là một số từ 0 đến 15,
chuyển sang số nhị phân ta được 4 bít đầu ra. Như vậy 48 bít chia thành 8 cụm 6 bít, qua 8 S
box được chuyển thành 8 cụm 4 bít, tổng cộng là 32 bít Việc chọn hàng trong các S box phụ thuộc
cả dữ liệu và khoá - đặc trưng này được gọi là khoá tự xác định
Ví dụ:
S(18 09 12 3d 11 17 38 39) = 5fd25e03
Sinh khoá con của DES
o Tạo 16 khoá con sử dụng cho 16 vòng của DES. 56 bit khoá đầu vào được sử dụng n
bảng 8 x 8, trong đó cột thứ 8 không sử dụng.
o Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít.
o 16 giai đoạn bao gồm
mỗi vòng nửa trái nửa phải được dịch trái vòng quanh tương ứng 1 2 bit.
Hai nửa này được dùng tiếp cho vòng sau.
Đồng thời hai nửa cũng cho qua hoán vị PC2 chọn mỗi nửa 24 bít gộp lại thành
48 bít để sinh khoá con..
o Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả
- 43 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Các thông số cụ thể về hoán vị ban đầu, các hộp Box thuật toán sinh khoá của DES được cho cuối tài
liệu trong phần phụ lục.
Giải mã DES
Giải làm ngược lại quá trình hoá. Với thiết kế Fiestel thực hiện mã hoá tiếp với các khoá
con từ SK16 ngược lại về SK1. Nhận thấy rằng hoán vị ban đầu IP strả lại tác dụng của hoán vị
cuối FP. Vòng đầu với SK16 sẽ trả lại tác dụng của vòng thứ 16. Vòng thứ 16 với SK1 sẽ trả
lại tác dụng của vòng mã đầu tiên. Hoán vị cuối FP trả lại tác dụng hoán vị ban đầu IP. Như vậy đã
khôi phục lại được dữ liệu ban đầu.
IV.2.3 Tính chất của DES
Tác dụng đồng loạt. Khi ta thay đổi 1 bit trong khoá sẽ gây ra tác động đồng loạt làm thay đổi
nhiều bit trên bản mã. Đây là tính chất mong muốn của khoá trong thuật toán mã hoá. Nếu thay đổi
1 bít đầu vào hoặc khoá sẽ kéo theo thay đổi một nửa số bít đầu ra. Do đó không thể đoán khoá
được. Co thể nói rằng DES thể hiện tác động đồng loạt mạnh.
Sức mạnh của DES – kích thước khoá.
Độ dài của khoá trong DES là 56 bít có 2
56
= 7.2 x 10
16
giá trị khác nhau. Đây là con số rất lớn nên
tìm kiếm duyệt rất khó khăn. Các thành tựu gần đây chỉ ra rằng thời gian cần thiết để giải một
trang DES không biết khoá là: sau một vài tháng trên Internet trong năm 1997; một vài
ngày trên thiết bị phần cứng tăng cường trong năm 1998; sau 22 giờ nếu kết hợp các biện pháp
trong năm 1999. Như vậy vẫn thể đoán được bản sau một khoảng thời nhất định, nếu
nguồn lực máy tính mạnh. Chính vậy bây giờ người ta đã xét một vài biến thể của DES nhằm
nâng cao sức mạnh cho DES.
Sức mạnh của DES – tấn công thời gian.
Đây là dạng tấn công vào cài đặt thực tế của mã. Ở đây sử dụng hiểu biết về quá trình cài đặt thuật
toán suy ra thông tin về một khoá con hoặc mọi khoá con. Đặc biệt sử dụng kết luận các
tính toán chiếm khoảng thời gian khác nhau phụ thuộc vào giá trị đầu vào của nó. Do đó kẻ thám
mã theo dõi thời gian thực hiện mà phán đoán về khoá. Có thể kẻ thám mã sáng tạo ra các loại card
thông minh phán đoán khoá, mà còn phải bàn bạc thêm về chúng.
Sức mạnh của DES – tấn công thám mã.
một số phân tích thám trên DES, từ đó đề xuất xây dựng một số cấu trúc sâu về DES.
Rồi bằng cách thu thập thông tin về mã, thể đoán biết được tất cả hoặc một số khoá con đang
dùng. Nếu cần thiết sẽ tìm duyệt những khoá còn lại. Nói chung, đó những tấn công dựa trên
phương pháp thống kê bao gồm: thám mã sai phân, thám mã tuyến tính và tấn công khoá liên kết.
- 44 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Thám mã sai phân
Một trong những thành tựu công khai gần đây trong thám mã phương pháp thám sai phân.
được biết đến bởi NSA trong những năm 70, chẳng hạn trong thiết kế DES. Murphy, Birham
Shamir công bố phương pháp sai phân năm 1990. Đây phương pháp mạnh để phân tích
khối. Nó sử dụng phân tích hầu hết các mã khối hiện tại với mức độ thành công khác nhau. Nhưng
DES có thể kháng cự lại các tấn công đó. Thám mã sai phân là tấn công thống kê chống lại các mã
Fiestel. Fiestel dùng các cấu trúc mã chưa được sử dụng trước kia như thiết kế S-P mạng
đầu ra từ hàm f chịu tác động bởi cả đầu vào khoá. Do đó không thể tìm lại được giá trị bản
mà không biết khoá.
Thám mã sai phân so sánh hai cặp mã có liên quan với nhau
o Với sự khác biệt đã biết ở đầu vào
o Khảo sát sự khác biệt ở đầu ra
o Khi với cùng khoá con được dùng
o Trong công thức sau với hai đầu vào khác nhau, vế trái sự khác biệt mãcùng vòng thứ
i được biểu diễn qua sự khác biệt vòng trước đó i-1 sự khác biệt của hàm f trong
ngoặc vuông.
Sự khác biệt ở đầu vào cho sự khác biệt ở đầu ra với một xác suất cho trước.
o Nếu tìm được một thể hiện đầu o - đầu ra với xác suất cao. Thì thể luận ra khoá con
được sử dụng trong vòng đó
o Sau đó có thể lặp lại cho nhiều vòng (với xác suất giảm dần)
Cặp đúng cho bít khoá như nhau
Cặp sai cho giá trị ngẫu nhiên
o Đối với số vòng lớn, xác suất để có nhiều cặp đầu vào 64 bít thoả mãn yêu cầu là rất nhỏ.
o Birham Shamir chỉ ra rằng làm như thế nào để các đặc trưng lặp của 13 vòng thể bẻ
được DES 16 vòng đầy đủ.
- 45 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Qui trình thám n sau: thực hiện hoá lặp lại với cặp bản XOR đầu vào biết
trước cho đến khi nhận được XOR đầu ra mong muốn
o Khi đó có thể tìm được
nếu vòng trung gian thỏa mãn XOR yêu cầu thì có cặp đúng
nếu không thì có cặp sai, tỷ lệ sai tương đối cho tấn công đã biết trước dựa vào thống kê.
o Sau đó có thể tạo ra các khoá cho các vòng theo suy luận sau
Thám mã tuyến tính
Đây một phát hiện mới khác. cũng dùng phương pháp thống kê. đây cần lặp qua các
vòng với c suất giảm, nó được phát triển bởi Matsui một số người khác vào đầu những
năm 90. sở của phương pháp dựa trên tìm xấp xỉ tuyến tính. nhận định rằng thể
tấn công DES với 2
47
bản rõ đã biết. Như vậy thám mã tuyến tính vẫn không khả thi trong thực
tế.
o Tìm xấp xỉ tuyến tính với xác suất p != ½
P[i
1
,i
2
,...,i
a
] (+) C[j
1
,j
2
,...,j
b
] = K[k
1
,k
2
,...,k
c
]
trong đó i
a
, j
b
, k
c
là các vị trí bit trong bản rõ, mã, khoá.
o Điều kiện trên cho phương trình tuyến tính của các bít khoá.
Để nhận được 1 bít khoá sử dụng thuật toán lân cận tuyến tính
o Sử dụng một số lớn các phương trình thử nghiệm. Hiệu quả cho bởi |p – 1/2|
Trong quá trình tìm hiểu DES người ta đã hệ thống lại các tiêu chuẩn thiết kế DES. N báo
cáo bởi Copperscmith trong [COPP94]:
o Có 7 tiêu chuẩn đối với S box được cung cấp để đảm bảo
tính phi tuyến tính
chống tham mã sai phân
Rối loạn tốt
o Có 3 tiêu chuẩn cho hoán vị P để tăng độ khuếch tán
Các nguyên lý mã khối
Các nguyên lý cơ bản của mã khối giống như Fiestel đề xuất trong những năm 70:
o Có một số vòng: càng nhiều càng tốt; tấn công tốt nhất phải tìm tổng thể
o Trong mỗi vòng có hàm cung cấp độ rối loạn là phi tuyến, tác động đồng loạt
o Qui trình sinh khoá con phức tạp, khoá tác động đồng loạt đến bản mã.
IV.2.4 Các kiểu thao tác của DES
khối các block kích thước cố định. Chẳng hạn DES các block 64 bít với khoá 56 bít Cần
phải cách áp dụng vào thực tế các thông tin cần kích thước tùy ý. Trwosc kia 4 kiểu thao
tác được định nghĩa cho DES theo chuẩn ANSI: ANSI X3.106-1983 Modes of Use. Bây giờ mở rộng
them 5 cách cho DES chuẩn mã nâng cao (AES Advanced Encryption Standards). Trong đó
kiểu áp dụng cho khối và có kiểu áp dụng cho mã dòng.
1. Sách mật mã điện tử (Electronic Codebook Book - ECB)
o Mẫu tin được chia thành các khối độc lập, sau đó mã từng khối
o Mỗi khối là giá trị cần thay thế như dùng sách mã, do đó có tên như vậy
o Mỗi khối được mã độc lập với các mã khác
o
o
o
- 46 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o
C
i
= DES
K1
(P
i
)
o Khi dùng: truyền an toàn từng giá trị riêng lẻ
o
o Ưu và nhược của ECB
Lặp trên bản mã được chỉ rõ lặp trên bản tin
- Nếu dóng đúng khối
- Đặc biệt với hình ảnh
- Hoặc với bản tin mà thay đổi rất ít
sẽ trở thành đối tượng để thám mã
Nhược điểm là các khối được mã độc lập
Được sử dụng chủ yếu khi gửi một ít dữ liệu
2. Dây chuyền mã khối (Cipher Block Chaining - CBC)
o Các mẫu tin được chia thành các khối
o Nhưng chúng được liên kết với nhau trong quá trình mã hoá
o Các block được sắp thành dãy, vì vậy có tên như vậy
o Sử dụng véctơ ban đầu IV để bắt đầu quá trình
C
i
= DES
K1
(P
i
XOR C
i-1
)
C
-1
= IV
o Dùng khi: mã dữ liu ln, xác thc
- 47 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Ưu và nhược của CBC
Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ
Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối mã
Cần giá trị véc tơ ban đầu IV được biết trước bởi người gửi và người nhận
- Tuy nhiên nếu IV được gửi công khai, kẻ tấn công thể thay đổi bít đầu tiên
thay đổi cả IV để bù trừ
- Vậy IV cần phải giá trị cố định trước hoặc hoá trong chế độ ECB gửi
trước phần còn lại của mẩu tin
Ở cuối bản tin, để kiểm soát các block ngắn còn lại
- Có thể bổ sung các giá trị không phải dữ liệu như NULL
- Hoặc dùng bộ đệm cuối với số byte đếm kích thước của nó.
Ví dụ
[ b1 b2 b3 0 0 0 0 5] <- 3 data bytes,
vậy có 5 bytes dành cho đệm và đếm.
3. Mã phản hồi ngược (Cipher FeedBack - CFB)
o Bản tin coi như dòng các bít
o Bổ sung vào đầu ra của mã khối
o Kết quả phản hồi trở lại cho giai đoạn tiếp theo, vì vậy có tên như vậy.
o Nói chung cho phép số bít phản hồi 1, 8, 64, hoặc tuỳ ý: hiệu tương ng CFB1,
CFB8, CFB64,…
o Thường hiệu quả sử dụng cả 64 bít
C
i
= P
i
XOR DES
K1
(C
i-1
)
C
-1
= IV
o Được dùng cho mã dữ liệu dòng, xác thực
- 48 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Ưu và nhược điểm của mã phản hồi ngược
o Được dùng khi dữ liệu đến theo byte/bit
o Chế độ dòng thường gặp nhất
o Hạn chế là cần ngăn chuồng khi mã khối sau mỗi n bit
o Nhận xét là mã khối được dùng ở chế độ mã ở cả hai đầu
o Lỗi sẽ lan ra một vài block sau lỗi
4. Phản hồi ngược đầu ra (Output FeedBack - OFB)
o Mẩu tin xem như dòng bit
o Đầu ra của mã được bổ sung cho mẩu tin
o Đầu ra do đó là phản hồi, do đó có tên như vậy
o Phản hồi ngược là độc lập đối với bản tin
o Có thể được tính trước
C
i
= P
i
XOR O
i
O
i
= DES
K1
(O
i-1
)
O
-1
= IV
o Được dùng cho mã dòng trên các kênh âm thanh
Ưu điểm và nhược điểm của OFB
o Được dùng khi lỗi phản hồi ngược lại hoặc ở nơi cần mã trước khi mẩu tin sẵn sàng
o Rất giống CFB
- 49 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Nhưng phản hồi là từ đầu ra của mã và độc lập với mẩu tin
o Là biến thể của mã Vernam, suy ra không sử dụng lại với cùng một dãy (Key + IV)
o Người gửi người nhận phải đồng bộ, phương pháp khôi phục nào đó cần thiết để
đảm bảo việc đó.
o Nguyên bản chỉ rõ m bit phản hồi ngược theo các chuẩn
o Các nghiên cứu tiếp theo chỉ ra rằng chỉ có OFB64 là dùng được
5. Bộ đếm CTR (Counter)
o Là chế độ mới, tuy đã được đề xuất từ lâu
o Giống như OFB, nhưng mã giá trị đếm thay vì giá trị phản hồi tuỳ ý.
o Cần phải có khoá khác và giá trị đếm cho mỗi khối bản rõ (không bao giờ dùng lại)
C
i
= P
i
XOR O
i
O
i
= DES
K1
(i)
o Được dùng mã trên mạng với tốc độ cao
o Ưu và nhược điểm của CTR
Hiệu quả
- Do có thể mã song song
- Chuẩn bị trước nếu cần
- Tốt cho các kết nối với tốc độ rất cao
Truy cập ngẫu nhiên đến các khối dữ liệu mã
Tính an toàn có thể chứng minh được
Nhưng phải tin tưởng không bao giờ dùng lại khoá/đếm, nếu không có thể bẻ.
IV.3 Chuẩn mã nâng cao (AES)
IV.3.1 Nguồn gốc
Rõ ràng cần phải thay thế DES, vì có những tấn công về mặt lý thuyết có thể bẻ được nó. Một số tấn công
nghiên cứu thấu đáo khoá đã được trình diễn. Người ta thấy rằng, cần sử dụng Triple DES (sử dụng DES
ba lần liên tiếp) cho các ứng dụng đòi hỏi tăng cường bảo mật, nhưng quá trình mã và giải mã chậm, đồng
thời với khối dữ liệu nhỏ. Do đó Viện chuẩn quốc gia Hoa kỳ US NIST ra lời kêu gọi tìm kiếm chuẩn
- 50 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
mới vào m 1997. Sau đó 15 đề cử được chấp nhận vào tháng 6 năm 1998. được rút gọn còn 5
ứng cử viên vào tháng 6 năm 1999. Đến tháng 10 năm 2000, Rijndael được chọn làm chuẩn nâng
cao và được xuất bản là chuẩn FIPS PUB 197 vào 11/2001.
Yêu cầu của AES
Là mã khối đối xứng khoá riêng.
Kích thước khối dữ liệu 128 bit và độ dài khoá là tùy biến: 128, 192 hoặc 256 bit.
Chuẩn mã mới phải mạnh và nhanh hơn Triple DES. mới sở ls thuyết mạnh để thời gian
sống của chuẩn khoảng 20-30 năm (cộng thêm thời gian lưu trữ).
Khi đưa ra thành chuẩn yêu cầu cung cấp chi tiết thiết kế đặc tả đầy đủ. Đảm bảo rằng chuẩn
mã mới cài đặt hiệu quả trên cả C và Java.
NIST in rút gọn mọi đề xuất, phân tích và không phân loại.
IV.3.2 Tiêu chuẩn triển khai của AES
Tiêu chuẩn ban đầu:
o An toàn - chống đỡ mọi tấn công thám mã về thực tế
o Giá trị về mặt tính toán
o Các đặc trưng cài đặt và thuật toán.
Tiêu chuẩn cuối cùng:
o An toàn tổng thể
o Dễ cài đặt phần mềm và phần cứng
o Chống được tấn công về mặt cài đặt
o Mềm dẻo trong mã / giải mã, khoá và các yếu tố khác
Danh sách các ứng cử viên Chuẩn mã nâng cao được rút gọn:
o MARS (IBM): phức tạp, nhanh, biên độ tin cậy cao
o RC6 (USA): đơn giản, rất nhanh, biên độ tin cậy thấp
o Rijndael (Bỉ): rõ ràng, nhanh, biên độ tin cậy tốt
o Serpent (Châu Âu): chậm, rõ ràng, biên độ tin cậy rất cao
o Twofish (USA): phức tạp, rất nhanh, biên độ tin cậy cao
Sau đó tục phân tích và đánh giá. Tập trung vào việc so sánh các thuật toán khác nhau:
o Ít vòng nhưng phức tạp với nhiều vòng đơn giản hơn.
o Nêu rõ cải tiến các mã đã có với các đề xuất mới.
IV.3.3 Chuẩn mã nâng cao AES – Rijndael
Cuối cùng Rijndael được chọn là chuẩn mã nâng cao. Nó được thiết kế bởi Rijmen – Daemen ở Bỉ, có các
đặc trưng sau:
Có 128/192/256 bit khoá và 128 bit khối dữ liệu.
Lặp hơi khác với Fiestel
o Chia dữ liệu thành 4 nhóm – 4 byte
o Thao tác trên cả khối mỗi vòng
o Thiết kế để:
chống lại các tấn công đã biết
tốc độ nhanh và nén mã trên nhiều CPU
Đơn giản trong thiết kế
Xử lý khối dữ liệu 128 bit như 4 nhóm của 4 byte: 128 = 4*4*8 bit. Mỗi nhóm nằm trên một hàng.
Ma trận 4 hàng, 4 cột với mỗi phần tử là 1 byte coi như trạng thái được xử lý qua các vòng mã hoá
và giải mã.
Khoá mở rộng thành mảng gồm 44 từ 32 bit w[i].
Có tùy chọn 9/11/13 vòng, trong đó mỗi vòng bao gồm
o Phép thế byte (dùng một S box cho 1 byte)
- 51 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Dịch hàng (hoán vị byte giữa nhóm/cột)
o Trộn cột (sử dụng nhân ma trận của các cột)
o Cộng khoá vòng (XOR trạng thái dữ liệu với khoá vòng).
o Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả.
Sơ đồ Rijndael
Phép thế Byte
o Phép thê byte đơn giản
o Sử dụng một bảng 16 x 16 byte chứa hoán vị của tất cả 256 giá trị 8 bit
o Mỗi byte trạng thái được thay bởi byte trên hàng xác định bởi 4 bit trái cột xác định bởi 4
bit phải.
Chẳng hạn {95} được thay bởi hàng 9, cột 5, mà giá trị sẽ là {2A}.
o S box đượcy dựng sử dụng hoán vị các giá trị trong GF(2
8
) đã được xác định trong chương
trước.
o Thiết kế để chống mọi tấn công đã biết
Dịch hàng
o Dịch hàng vòng quanh trên mỗi hàng
Hàng 1 không đổi
Hàng 2 dịch vòng quanh 1 byte sang trái
Hàng 3 dịch vòng quanh 2 byte sang trái
Hàng 4 dịch vòng quanh 3 byte sang trái
o Giải mã thực hiện dịch ngược lại sang phải
o Vì trạng thái được xử lý bởi cột, bước này thực chất là hoán vị byte giữa các cột.
Trộn các cột
- 52 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Mỗi cột được xử lý riêng biệt.
o Mỗi byte được thay bởi 1 giá trị phụ thuộc vào tất cả 4 byte trong cột
o Nhân ma trận hiệu quả trong GF(2
8
), sử dụng đa thức nguyên tố
m(x) =x
8
+x
4
+x
3
+x+1
Trộn cột
o Có thể biểu diễn mỗi cột mới là nghiệm của 4 phương trình
để tìm ra byte mới trong mỗi cột
o Mã yêu cầu sử dụng ma trận nghịch đảo
Với hệ số lớn thì tính toán khó khăn hơn
o Có các đặc trưng khác của cột như sau:
Mỗi cột là một đa thức bậc 3 gồm 4 số hạng
Với mỗi phần tử là một byte tương ứng với phần tử trong GF(2
8
).
Các đa thức nhân tính theo Modulo (x
4
+1).
Cộng khoá quay vòng
o XOR trạng thái với 128 bit khoá quay vòng
o Xử lý lại bằng cột (hiệu quả qua một loạt các thao tác bit)
o Nghịch đảo cho giải hoàn toàn xác định, khi XOR với nghịch đảo của bản thân nó,
XOR trùng với đảo bit của khoá quay vòng.
o Thiết kế đ đơn gin nht có thể
Dng mã Vernam với khoá m rộng
Đòi hỏi tm một sc tăng đ phức tp/tính an toàn.
Mt ng AES
M rng kh AES
o Dùng khoá 128 bit (16 byte) và m rộng thành mng gồm 44/52/60 t 32 bit.
o Bt đu bằng vic copy khoá vào 4 t đu
o Sau đó to quay vòng các t mà phụ thuộc o giá trị các vị t trưc và 4 vị t sau
3 trong 4 trưng hợp chỉ là XOR chúng cùng nhau
Mỗi cái thứ 4 có S box kết hợp quay và XOR vi hng s trưc đó, trưc khi XOR
cùng nhau
Thiết kế chống các tn công đã biết
- 53 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Giải mã AES
o Giải mã ngược lại không duy nhất vì các bước thực hiện theo thứ tự ngược lại.
o Nhưng có thể xác định mã ngược tương đương với các bước đã làm đối với mã
Nhưng sử dụng ngược lại với từng bước
Với khoá con khác nhau
o Thực hiện được vì kết quả không thay đổi khi
Đổi lại phép thế byte và dịch các hàng
Đổi lại việc trộn các cột và bổ sung khoá vòng
o Lý do mở rộng khoá: các tiêu chuẩn thiết kế bao gồm
Giả sử biết một phần khoá, khi đó không đủ để biết nhiều hơn, tức là các khoá con khác
hoặc khoá nói chung.
Phép biến đổi nghịch đảo được.
Nhanh đối với nhiều kiểu CPU.
Sử dụng hằng số vòng để làm mất tính đối xứng
Khuếch tán bit khoá thành khoá con cho các vòng
Có đủ tính phi đối xứng để chống thám mã
Đơn giản trong việc giải mã
o Các khía cạnh cài đặt:
có thể cài đặt hiệu quả trên CPU 8 bit
- Phép thế byte làm việc trên các byte sử dụng bảng với 256 đầu vào.
- Dịch hàng là phép dịch byte đơn giản
- Cộng khoá vòng làm việc trên byte XOR
- Các cột hỗn hợp yêu cầu nhân ma trận trong GF(2
8
) làm việc trên giá trị
các byte, có thể đơn giản bằng cách tra bảng
có thể cài đặt hiệu quả trên CPU 32 bit
- Xác định lại các bước để sử dụng từ 32 bit
- Có thể tính trước 4 bảng với 256 đầu vào
- Sau đó mỗi cột trong mỗi vòng có thể tính bằng cách tra 4 bảng và 4 XOR
- Cần 16 Kb để lưu các bảng
Những n thiết kế tin tưởng rằng việc cài đặt rất hiệu quả này yếu tố bản trong
việc chọn nó là mã AES
Sau đây ta xét chi tiết hơn các quá trình mã hoá, sinh khoá và giải mã AES.
- 54 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Xét cụ thể quá trình mã hóa bao gồm 4 bước:
1. AddRoundKey - mỗi byte của khối được kết hợp với khóa con, c khóa con này được tạo ra từ
quá trình tạo khóa con Rijndael.
Hình 2.5: Mô tả hoạt động bước AddRoundKey
2. SubBytes - đây quá trình thay thế (phi tuyến) trong đó mỗi byte sẽ được thay thế bằng một byte
khác theo bảng tra (Tìm trong tài liệu tương ứng).
Hình 2.6: Mô tả hoạt động bước SubBytes
3. ShiftRows - đổi chỗ, các hàng trong khối được dịch vòng.
Hình 2.7: Mô tả hoạt động bước ShiftRows
4. MixColumns - quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi tuyến tính.
- 55 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Hình 2.8: Mô tả hoạt động bước MixColumns
Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey.
Thuật toán mã hoá
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là khối dữ liệu
OUTPUT: Y 128 bit -- Khối dữ liệu đã được mã hoá
TIẾN TRÌNH XỬ LÝ:
State:=in;
AddRoundKey(State,w[0,Nb-1]);
for i in 1..Nr-1 loop
SubByte(state);
ShiftRows(state);
MixColums(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
end loop;
SubByte(state);
ShiftRows(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
Y:=state;
Thuật toán sinh khoá con sử dụng ba hàm:
SubWord(): Là một hàm đưa 4 từ đầu vào qua S-box để được 4 từ đầu ra
RotWord(): Biến đổi một từ [a
0
a
1
a
2
a
3
] thành một từ [a
1
a
2
a
3
a
0
]
Rcon(i): Chứa các giá trị [x
i-1
,{00},{00},{00}] với x={02} và i>=1.
Trường hợp Nk=8 (độ dài khoá =256) và i-4 là bội số của Nk thì SubWord() được tính toán với w[i-1]
trứơc khi XOR
Thuật toán:
INPUT: Khoá đầu vào K, Nk
OUTPUT: Mảng khoá con
TIẾN TRÌNH XỬ LÝ:
Tách khoá K thành Nk khối 4 byte w[i] i=0..Nk-1
i:=Nk;
while (i<Nb*(Nr+1)) loop
temp:=w[i-1];
if (i mod Nk = 0);
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk];
else if (Nk > 6 and i mod Nk = 4);
temp = SubWord(temp);
end if;
w[i] = w[i-Nk] xor temp;
i = i + 1;
end loop;
Thuật toán giải mã sử dụng 4 biến đổi trong đó có 1 biến đổi AddRoundKey và 3 biến đổi đảo ngược.
- 56 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Biến đổi InvShiftRows(): tương tự biến đổi ShiftRows thay vì dịch trái thì trong biến đổi này là dịch phải.
Bứơc InvSubBytes(): Phép biến đổi này tương tự như SubBytes() thay dùng S-box thì sử dụng InvS-
box .
Bứơc InvMixColums(): Tương tự như phép MixColums thay vì a XOR với c(x) thì là a
-1
XOR c(x).
Thuật toán giải mã
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là bản mã
OUTPUT: Y 128 bit -- Khối dữ liệu đã được giải mã
TIẾN TRÌNH XỬ LÝ:
state = M
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
Y = state.
IV.4 Các mã đối xứng đương thời
IV.4.1 Triple DES
Mã DES nhiều lần
Rõ ràng DES cần được thay thế, vì
o Các tấn công về mặt lý thuyết có thể bẻ gãy nó
o Tấn công khoá toàn diện đã được trình diễn
AES là mã mới thay thế
Trước nó người ta đã sử dụng lặp DES, tức là sử dụng nhiều lần cùng một thuật toán, nhưng có thể với
khóa khác nhau.
Triple DES là dạng đã được chọn, ở đây lặp DES 3 lần.
Tại sao lại là Triple DES
o không phải lặp hai lần Double DES: khi lặp hai lần không hoàn toàn trùng với 1 lần
DES nào đó nhưng cũng có thể.
o Có thể dùng 2 lần DES trên một block với hai khoá K1 và K2 :
C = EK2(EK1(P))
o Vấn đề là có thể rút gọn về một bước không.
o Double DES gặp tấn công ở mức trung gian
Gặp nói chung khi sử dụng một mã nào đó 2 lần như trên
Vì X = E
K1
[P] = D
K2
[C]
Tấn công bằng cách mã P với mọi khoá và lưu lại.
Và giải mã C với các khoá và sánh trùng nhau để tìm X.
Có thể chỉ ra rằng cần O(2
56
) bước dò tìm.
- 57 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Triple DES với 2 khoá
o Để tránh tấn công ở mức trung gian, cần sử dụng 3 mã, vậy nói chung có thể dùng 3 khoá khác
nhau.
o Nhưng để đơn giản hơn thể sử dụng 2 khoá theo trình tự:E–D-E, tức mã, giải mã, rồi lại
mã.
C = E
K1
[D
K2
[E
K1
[P]]]
Về mặt an toàn mã và giải mã tương đương nhau
Nếu K1 = K2 thì tương đương làm việc với một lần DES
Chuẩn hoá trong ANSI X9.17 & ISO8732
Chưa thấy tấn công thực tế.
Triple DES với 3 khoá
o Mặc dù chưa có tấn công thực tế, nhưng Triple DES với 2 khoá có một số chỉ định để tránh rơi
vào một số trường hợp đặc biệt.
o Cần phải sử dụng 3 lần DES với 3 khoá để tránh điều đó
C = E
K3
[D
K2
[E
K1
[P]]]
o Được chấp nhận bởi một số ứng dụng trên Internet: PGP, S/MIME
IV.4.2 Blowfish
Mã đối xứng được thiết kế bởi Shneier khoảng 1993-1994.
Mã có các đặc trưng sau:
o Cài đặt nhanh trên CPU 32 bit
o Dùng ít bộ nhớ.
o Cấu trúc đơn giản, dễ cài đặt và phân tích.
o Độ an toàn thay đổi theo độ dài của khoá
Được cài đặt trên nhiều sản phẩm khác nhau
Lược đồ khoá con của Blowfish
o Dùng khoá có độ dài bit linh hoạt từ 32 đến 448.
o Sử dụng khoá để sinh
18 khoá con 32 bit lưu trữ trong mảng K: K
J
Bốn S box cỡ 8 x 32 lưu trong S
i, j
o Lược đồ khoá gồm
Khởi tạo P mảng và sau đó là 4 hộp S box
XOR P mảng với bit khoá (sử dụng lại nếu cần)
Lặp lại việc mã dữ liệu sử dụng P & S hiện thời và thay cặp thành công P sau đó S.
Đòi hỏi 512 khoá, nên chậm khi lấy khoá con mới
o Mã Blowfish
Sử dụng 2 phép cơ bản cộng và XOR
Dữ liệu được chia thành 2 nửa mỗi nửa 32 bit L
0
& R
0
for i = 1 to 16 do
R
i
= L
i-1
XOR P
i
;
L
i
= F[R
i
] XOR R
i-1
;
L
17
= R
16
XOR P
18
;
R
17
= L
16
XOR i
17
;
- 58 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
trong đó
F[a,b,c,d] = ((S
1,a
+ S
2,b
) XOR S
3,c
) + S
4,a
o Bàn luận:
Khoá con S box phụ thuộc vào khoá sinh ra, sử dụng vào chính nên việc phân
tích rất khó
Thay đổi hai nửa sau mỗi vòng làm tăng độ an toàn
Khoá được cấp đủ lớn để việc tìm duyệt khoá không thực tế, đặc biệt khi tập trung
vào lược đồ tạo khoá con.
IV.4.3 RC4
RC4 đăng bản quyền của RSADSI, được thiết kế bởi Ronald Rivest. RC4 đơn giản, nhưng hiệu
quả, có nhiều cỡ khoá và là mã bit dòng.
được sử dụng rộng rãi (Web SSL/TLS, không dây WEP). Khoá thực hiện hoán vị ngẫu nhiên cả 8 giá
trị bit. Sử dụng hoán vị đó để khuấy thông tin đầu vào được xử lý từng byte.
Sinh khoá RC4
o Bắt đầu từ mảng S với biên độ: 0..255
o Sử dụng khoá để xáo trộn đều thực sự.
o S tạo trạng thái trong của mã.
Mã RC4
o Mã tiếp tục trộn các giá trị của mảng.
o Tổng của các cặp trộn chọn giá trị khoá dòng từ hoán vị
o XOR S[t] với byte tiếp theo của bản tin để mã/giải mã
i = j = 0
for each message byte Mi
i = (i + 1) (mod 256)
j = (j + S[i]) (mod 256)
swap(S[i], S[j])
t = (S[i] + S[j]) (mod 256)
Ci = Mi XOR S[t]
Tổng quan RC4
- 59 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
An toàn RC4
o Đảm bảo an toàn chống các tấn công
o Có một số thám mã, nhưng không thực tế
o Kết quả rất phi tuyến
o Vì RC4 là mã dòng nên không được sử dụng lại khoá.
o Có liên quan đến WEP, nhưng tùy thuộc quản lý khoá hơn là bản thân RC4.
IV.4.4 RC5
RC5 cũng đăng bản quyền của RSADSI, được thiết kế bởi Ronald Rivest và được sử dụng trong
nhiều sản phẩm của RSADSI. RC5 có nhiều cỡ khoá và dữ liệu khác nhau và đặc biệt không có vòng lặp.
Thiết kế rất đơn giản ràng. RC5 được cài đặt dễ dàng trên nhiều CPU còn được đánh giá an
toàn.
Các mã RC5
o RC5 là một họ các mã với bat ham số RC5-w/r/b
w là kích thước của từ (16/32/64), sô bit data = 2w
r là số vòng (0..255)
b là số byte của khoá (0..255)
o Phiên bản chuẩn là RC5-32/12/16
Tức là 32 bit word, mã khối 64 bit dữ liệu
Sử dụng 12 vòng
Với 16 byte (128 bit) khoá
o Mở rộng khoá RC5
RC5 sử dụng 2r + 2 từ khoá con (w-bit)
Các khoá con lưu trong mảng R[i], i = 0,1,.., t-1
Sau đó lược đồ sinh khoá gồm
- 60 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- Khởi tạo S là giá trị giả ngẫu nhiên cố định, dựa trên hằng sô e và phi.
- Khoá byte được sao vào mảng c-word L
- Phép trộn sẽ kết hợp L và S thành mảng S cuối cùng
Mã RC5
o Tách đầu vào thành 2 nửa A và B
L
0
= A + S[0];
R
0
= B + S[1];
for i = 1 to r do
L
i
= ((L
i-1
XOR R
i-1
) <<< R
i-1
) + S[2 x i];
R
i
= ((R
i-1
XOR L
i
) <<< L
i
) + S[2 x i + 1];
o Mỗi vòng giống như 1 vòng 2 DES
o Quay là nguồn phi tuyến chính
o Cần số vòng chấp nhận được (12-16)
Các chế độ mã RC5
o RFC2040 xác định 4 chế độ của RC5
Mã khối RC5, tức là chế độ ECB
RC5-CBC
RC5-CBC-PAD là chế độ với bộ đệm bằng các byte có giá trị bằng số byte đệm.
RC5-CTS, một kiểu của CBC, cùng kích thước với bản tin gốc.
IV.4.5 Các đặc trưng của mã khối và mã dòng.
1. Các đặc trưng mã khối. Các đặc trưng trong mã khối hiện đại là
o Độ dài khoá / kích thước khối / số vòng có thể thay đổi
o Các phép toán trộn, quay phụ thuộc khoá hoặc dữ liệu.
o S box phụ thuộc khoá
o Tạo khoá con phức tạp hơn
o Phép toán với đầy đủ dữ liệu ở mỗi vòng.
o Biến thiên hàm phi tuyến.
2. Các đặc trưng mã dòng.
o Xử lý mẩu tin lần lượt theo từng bit.
o Thông thường có khoá dòng (giả) ngẫu nhiên.
o Kết hợp XOR với bản rõ theo từng bit
o Ngẫu nhiên với khoá dòng sẽ xoá bỏ hoàn toàn các phân tích thống kê của mẩu tin
C
i
= M
i
XOR StreamKey
i
o Rất đơn giản
o Nhưng khoá không được sử dụng lại
3. Các tính chất của mã dòng trong khi thiết kế
a. Sử dụng lâu không bị lặp
b. Ngẫu nhiên thống kê
c. Phụ thuộc khoá đủ lớn
d. Độ phức tạp tuyến tính lớn
e. Rối loạn
f. Khuếch tán
g. Sử dụng hàm Boole phi tuyến bậc cao
- 61 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
IV.5 Bảo mật dùng khoá đối xứng
IV.5.1 Yêu cầu
Mã đối xứng truyền thống được dùng để giữ bí mật bản tin
Xét kịch bản tiêu biểu
o Các máy trạm ở một mạng LAN truy cập vào các máy trạm và máy chủ ở một mạng LAN khác
o Các mạng được kết nối sử dụng chuyển mạch và đường truyền (switches/routers)
o Với các đường truyền vật lý hoặc liên kết vô tuyến/vệ tinh
Xét việc tấn công và cách đặt mã trong kịch bản trên
o Điều tra từ một máy trạm khác
o Sử dụng kết nối đến mạng hoặc máy chủ đề tìm kiếm
o Sử dụng kết nối ngoài để xâm nhập và điều tra
o Theo dõi và/hoặc làm thay đổi việc truyền kết nối ngoài.
Có hai phương pháp chính xác định chỗ đặt mã
Mã kết nối (Link Encription)
o Mã xảy ra độc lập trên mỗi kết nối.
o Suy ra cần phải giải mã truyền tin giữa các kết nối
o Đòi hỏi nhiều thiết bị và các cặp khoá
Mã đầu cuối (End to end Encription) AES là mã mới thay thế
o Mã xảy ra giữa điểm gốc và điểm đích
o Cần thiết bị tại mỗi đầu cuối và khoá chia sẻ
IV.5.2 Thám mã thông tin truyền
Khi dùng đầu cuối cần phải để thông tin đầu của ràng, n vậy mạng mới định hướng đúng
đắn thông tin. vậy tuy nội dung tin được bảo vệ, nhưng khuôn dòng tin truyền thì không. Tốt nhất
muốn mật cả hai. đầu cuối bảo vệ thông tin nội dung trên cả đường truyền cung cấp danh tính.
Còn mã kết nối bảo vệ luồng truyền khỏi việc theo dõi.
Vị trí mã
Có thể đặt mã ở nhiều tầng khác nhau trong mô hình Hệ thống truyền thông mở OSI
o Mã kết nối thực hiện ở tầng 1 hoặc 2.
o Mã đầu cuối có thể thực hiện ở tầng 3, 4, 6, 7
o Dịch chuyển đến tầng càng cao, càng ít thông tin được hoá, nhưng càng an toàn hơn do
người sử dụng giữ bí mật đuợc khoá, tuy nhiên phức tạp hơn với nhiều đối tượng và khoá hơn.
Thám mã thông tin truyền
Thám mã là theo dõi dòng thông tin truyền giữa hai đối tác:
o Được dùng cả trong quân sự và thương mại
o Có thể được dùng để tạo kênh giám sát
o kết nối che lấp chi tiết đầu tin, nhưng xét trên toàn mạng c đầu cuối nó vẫn nhìn
thấy được
Bộ đệm truyền có thể che được dòng tin, nhưng với phải truyền liên tục với tần suất truyền hầu như không
đổi theo thời gian.
IV.5.3 Phân phối khoá
đồ đối xứng đòi hỏi cả hai đối tác chia skhoá mật chung. Vấn đề đặt ram sao phân phối khoá
mật này như thế nào. Thông thường các hệ mật thường bị sập vì bị bẻ khoá trong sơ đồ phân phối khoá.
Đối với hai đối tác A và B cho trước có một số cách phân phối khoá khác nhau:
2. A lựa chọn khoá và truyền tay cho B
3. Đối tác thứ ba có thể chọn khoá và phân phối cho A và B
4. A và B trao đổi trước có thể dùng khoá trước để mã khoá mới
5. A và B trao đổi mật với đối tác thứ 3 là C, C chuyển tiếp giữa A và B
- 62 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Kịch bản phân phối khoá
Phân loại khoá
Thông thường khoá phân loại như sau:
Khoá phiên (section key):
o Khoá tạm thời.
o Dùng để mã hoá dữ liệu giữa nhóm người sử dụng.
o Cho một phiên logic và sau đó bỏ đi.
Khoá chính (master key):
o Dùng để mã các khoá phiên.
o Chia sẻ giữa người sử dụng và trung tâm phân phối khoá.
Vấn đề phân phối khoá
Đối với mạng lớn đòi hỏi phân cấp Trung tâm phân phối khoá KDC, nhưng cần phải tạo tin cậy cho nhau,
giữa người sử dụng với Trung tâm và các Trung tâm với nhau. Thời gian sống của khoá bộ phận cần được
hạn chế để cho an toàn hơn. Sử dụng phân phối khoá tự động thay mặt người dùng, nhưng phải hệ
thống tin cậy, c khoá cấp phát được sinh ra càng ngẫu nhiên càng tốt. Cần phải hệ thống phân phối
khoá phân tán và phân cấp. Đồng thời cần hỗ trợ kiểm soát mục đích sử dụng khoá.
IV.5.4. Các số ngẫu nhiên
nhiều ứng dụng của số ngẫu nhiên trong thuyết mã. Chẳng hạn, khoá xác thực dùng trong các thủ
tục xác thực chống trì hoãn hoặc khoá phiên, khoá dòng cho bộ đệm một lần. Do đó cần chế sinh
khoá công khai
Trong nhiều trường hợp đặc biệt các giá trị này cần phải
o Ngẫu nhiên về mặt thống kê, có phân phối đều, độc lập.
o Không đoán trước được các giá trị tiếp theo nếu dựa vào các giá trị trước đó.
Sinh số ngẫu nhiên tự nhiên:
Nguồn cung cấp tốt nhất ngẫu nhiên tự nhiên trong thế giới thực. Thường người ta tìm một sự kiện
đó thường gặp nhưng ngẫu nhiên. Nói chung cần phải bằng cách nào đó thực hiện được, chẳng hạn: sóng
radio, âm radio, nhiệt trong diot,…Bắt đầu quan sát cái gì xảy ra trong CPU mới. Ta gặp vấn đề thiên lệch
và phân bố không đều của các tín hiệu, do đó phải điều chỉnh:
o Cần phải bù đắp lại khi tạo mẫu và sử dụng.
o Tốt nhất chỉ sử dụng một số bit ồn nhất trong mỗi mẫu.
- 63 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nguồn số ngẫu nhiên đã đăng
một số ít sưu tầm về số ngẫu nhiên đã đăng. Rand Co trong năm 1955 đã in hơn 1 triệu sngẫu nhiên.
Được sinh bằng cách s dụng bánh quay s điện tử. Đã được sử dụng trong thiết kế một số mã như
Khafre. Trước đó 1927, Tippet đã in một bộ sưu tập các số ngẫu nhiên. Vấn đề là ở chỗ:
o Số lượng hạn chế các số ngẫu nhiên
o Đã được biết và sử dụng trong nhiều ứng dụng
Bộ sinh số giả ngẫu nhiên (PRNG)
Dùng kỹ thuật thuật toán xác định để tạo số ngẫu nhiên. Mặc không ngẫu nhiên thật, nhưng phải nhiều
phép thử để kiểm tra đảm bảo “tính ngẫu nhiên”. Các số như vật được biết đến như những số giả ngẫu
nhiên. Có các bộ sinh số giả ngẫu nhiên PRNG.
Bộ sinh đồng dạng tuyến tính
Mong muốn sinh một dãy số ngẫu nhiên. Lấy ba số a, c, m và một số đầu tiên của dãy. Kỹ thuật lặp chung
được sử dụng là tạo số tiếp theo dựa vào số trước đó:
X
n+1
= (aX
n
+ c) mod m
Cho trước các số và tham số phù hợp có thể sinh ra dãy số tựa ngẫu nhiên khá dài.
Tiêu chuẩn phù hợp cần có là
o Hàm sinh ra giá trị lấp đầy chu kỳ
o Dãy sinh ra phải ngẫu nhiên
o Cài đặt hiệu quả với số học 32 bit
o Lưu ý rằng kẻ thám mã phải khôi phục lại dãy nếu cho trước một số ít các giá trị
Sử dụng mã khối như bộ sinh số giả ngẫu nhiên
Có thể sử dụng mã khối để sinh số giả ngẫu nhiên. Sử dụng chế độ đếm
X
i
= E
Km
[i]
Sử dụng chế độ đầu ra phản hồi
X
i
= E
Km
[X
i-1
]
Trong ANSI X9.17 PRNG: sử dụng thời gian, ngày tháng một số thông tin mồi 3 DES để sinh
mồi mới và số ngẫu nhiên.
Bộ sinh Blum Blum Shub
Dựa vào thuật toán mã khoá công khai. Sử dụng bit ít quan trọng nhất t đẳng thức sau:
x
i+1
= x
i
2
mod n
trong đó n=p.q, và các số nguyên tố p, q=3 mod 4. Ở đây đảm bảo tính chất:
không đoán trước được bit tiếp theo. Tính an toàn dựa trên độ khó của bài toán phân tích N ra thừa số.
Không đoán trước được nếu cho chạy truớc một số lần các bít. Tuy nhiên chậm, phải dùng các số rất
lớn. Đặc biệt rất chậm cho việc mã hoá, nên chỉ dùng cho việc sinh khoá.
Bài tập
1. Viết hai dãy số sinh bởi các phương trình sau:
X
n+1
= (6X
n
) mod 13
X
n+1
= (7X
n
) mod 13
Chứng tỏ cả hai dãy trên đều có chu kỳ đầy đủ. Dãy nào tỏ ra có vẻ ngẫu nhiên hơn.
- 64 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Hãy viết các dãy số theo phương trình sau :
x
i+1
= x
i
2
mod 21
x
i+1
= x
i
2
mod 33
Có nhận xét gì về tính ngẫu nhiên của chúng.
3. Lập sơ đồ khối mã hoá DES. Nêu các đặc trưng của DES.
4. Lập sơ đồ khối mã hoá AES. Nêu các đặc trưng của AES.
5. tả sơ đồ dùng bên thứ ba phân phối khoá mật giữa hai người sử dụng. Nêu các ưu nhược điểm của
sơ đồ đó.
6. Có thể dùng khoá mật để tạo nên chữ ký điện tử được không, nghĩa là có một dấu hiệu gì đó mà chỉ có
người gửi thực hiện được gắn với nội dung của bản tin. Người nhận đọc được bản tin thể kiểm
tra để tin tưởng rằng người gửi đã viết nội dung bản tin đó.
7. Mô tả các đặc trưng mã khối, chuẩn mã DES, chuẩn mã nâng cao AES.
- 65 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG V
MÃ CÔNG KHAI VÀ QUẢN LÝ KHOÁ
V.1 Mã khoá công khai
Mã khoá riêng
khoá riêng còn được gọi khoá đơn hay mật. đây chỉ dùng một khoá, dùng chung cả người
nhận và người gửi. Khi khoá này được dùng, việc trao đổi thông tin về khoá sẽ được thỏa thuận trước.
Người ta còn gọi đây mã đối xứng, hai đối tác vai trò như nhau. Do đó không bảo vệ người gửi
khỏi việc người nhận giả mạo mẩu tin tuyên bố được gửi bằng người gửi. Nghĩa khi hai người
dùng đối xứng, thì họ giữ được mật nội dung trao đổi, nhưng bản thân mẩu tin không mang thông
tin xác thực được người gửi.
V.1.1 Mã khoá công khai
Khoá công khai ra đời vào đầu những năm 1970. Có thể nói đây là bước tiến quan trọng nhất trong lịch sử
3000 năm hoá. đây người ta sử dụng 2 khoá: một khoá riêng một khoá công khai. Hai khoá này
khác nhau, không đối xứng với nhau, do đó khoá công khai, còn được gọi không đối xứng.
Người ta đã ứng dụng một cách thông minh các kết quả của lý thuyết số về hàm số.
Khoá công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứ không phải thay thế khoá
riêng. Cả hai khoá cùng tồn tại, phát triển và bổ sung cho nhau.
Khoá công khai/hai khoá/không đối xừng bao gồm việc sử dụng 2 khoá:
o Khoá công khai, mà mọi người đều biết, được dùng để mã hoá mẩu tin và kiểm chứng chữ ký.
o Khoá riêng, chỉ người nhận biết, đề giải mã bản tin hoặc để tạo chữ ký.
o không đối xứng những người hoá kiểm chứng chữ không thể giải hoặc tạo
chữ ký.
- 66 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Sơ đồ mã khoá công khai
V.1.2 Tại sao lại phải dùng mã khoá công khai
Người ta muốn giải quyết hai vấn đề sau về khoá nảy sinh trong thực tế:
o Phân phối khoá - làm sao thể phân phối khóa an toàn không cần trung tâm phân phi
khoá tin cậy
o Chữ điện tử - làm sao thể kiểm chứng được rằng mẩu tin gửi đến nguyên vẹn từ đúng
người đứng tên gửi.
Nếu chỉ dùng khoá đối xứng, thì không giải pháp cho hai bài toán trên. khoá công khai được phát
minh trước công chúng bởi hai nhà bác học Whitfield Diffie & Martin Hellman ở trường Đại học Stanford
vào năm 1976.
Tuy nhiên khái niệm ban đầu về nó đã được biết đến sớm hơn bởi cộng đồng các nhà khoa học.
V.1.3 Các đặc trưng của khoá công khai
Các thuật toán khoá công khai dùng 2 khoá với các đặc trưng sau:
o Không khả năng tính toán để tìm khoá giải nếu chỉ biết thuật toán khoá dùng để
mã.
o Có thể dễ dàng mã hoá hoặc giải mã mẩu tin nếu biết khoá tương ứng
o Trong một số đồ: một khoá bất kỳ trong hai khoá thể dùng để mã, còn khoá kia dùng để
giải mã. Chúng có vai trò đối ngược nhau.
V.1.4 Ứng dụng khoá công khai
Có thể phân loại các ứng dụng của khoá công khai thành 3 loại khác nhau:
o Mã/giải cung cấp bảo mật. Đây ứng dụng bảo mật truyền thống giống như ta vẫn
thường dùng với khoá đối xứng.
o Chữ điện tử - cung cấp xác thực. Một trong các ứng dụng mới của khoá công khai khoá
đối xứng không thể thực hiện được, đó là khoá công khai có đủ cơ sở để xác nhận người gửi và
có thể là một lựa chọn để tạo chữ ký điện tử của người gửi.
Một số thuật toán công khai phù hợp với mọi ứng dụng, còn một số khác chuyên dùng cho ứng dụng
cụ thể.
V.1.5 Tính an toàn của các sơ đồ khoá công khai
Cũng giống như khoá riêng việc tìm kiếm vét cạn luôn luôn thể, tức khi biết một trong hai khoá
thuật toán hoá về nguyên tắc ta thể tìm khoá thứ hai bằng cách tính toán các giá trị liên quan.
Nói chung khối lượng cần tính toán rất lớn do độ phức tạp của bài toán xác định khoá. Nếu khoá sử
- 67 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
dụng là rất lớn cỡ hơn 512 bit, thì hầu như bài toán tìm khoá thứ hai là không khả thi, không thể thực hiện
được trong thời gian có nghĩa, cho dù nguồn lực có thể rất lớn.
Tính an toàn dựa trên sự khác biệt đủ lớn giữa các bài toán dễ là mã/giải mã khi biết khoá và bài toán khó
là thám mã khi không biết khoá tương ứng. Vì bài toán thám mã nằm trong lớp các bài toán khó tổng quát
hơn đã được biết đến về mặt thuyết đã được chứng minh rất khó thể thực hiện trên thực tế.
Bởi vìđòi hỏi sử dụng số rất lớn, nên số phép toán cần thực hiện rất nhiều. Đây là ý tưởng chính để
tạo nên một mã công khai. Ta tìm kiếm các bài toán mà nếu biết thông tin mật nào đó được che dấu thì nó
rất dễ thực hiện, còn nếu không thì nó thuộc lớp bài toán rất khó giải, hầu như không thể giải trên thực tế.
Mã công khai thường chậm hơn khá nhiều so với mã đối xứng, nên nó thường được dùng mã những thông
tin nhỏ quan trọng.
V.2 RSA
RSA công khai được sáng tạo bởi Rivest, Shamir & Adleman MIT (Trường Đại học Công nghệ
Massachusetts) vào năm 1977. RSA
là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay. Nó dựa trên các phép toán lũy
thừa trong trường hữu hạn các số nguyên theo modulo nguyên tố. Cụ thể, mã hoá hay giải các phép
toán luỹ thừa theo modulo số rất lớn. Việc thám mã, tức tìm khoá riêng khi biết khoá công khai, dựa
trên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên tố. Nếu không có thông tin gì, thì ta phải
lần lượt kiểm tra tính chia hết của số đó cho tất cả các số nguyên tố nhỏ hơn căn của nó. Đây việc làm
không khả thi.
Người ta chứng minh được rằng, phép lũy thừa cần O((log n)
3
) phép toán, nên có thể coi lũy thừa bài
toán dễ.
Cần chú ý rằng ở đây ta sử dụng
các số rất lớn khoảng 1024 bit, tức là cỡ 10
350
. Tính an toàn dựa vào độ khó của bài toán phân tích ra thừa
số các số lớn. Bài toán phân tích ra thừa số yêu cầu O(e
log n log log n
) phép toán, đây là bài toán khó.
V.2.1 Khởi tạo khoá RSA
Mỗi người sử dụng tạo một cặp khoá công khai – riêng như sau:
Chọn ngẫu nhiên 2 số nguyên tố lớn p và q
Tính số làm modulo của hệ thống: N = p.q
o Ta đã biết ФN)=(p-1)(q-1)
o Và có thể dùng Định lý Trung Hoa để giảm bớt tính toán
Chọn ngẫu nhiên khoá mã e
o Trong đó 1<e< ФN), gcd(e,Ф(N))=1
Giải phương trình sau để tìm khoá giải mã d sao cho
o e.d=1 mod Ф(N) với 0≤d≤ Ф(N)
In khoá mã công khai KU={e,N}
Giữ khoá riêng bí mật KR={d,p,q}
V.2.2 Sử dụng RSA
Để mã hoá mẩu tin, người gủi:
o lấy khoá công khai của người nhận KU={e,N}
- 68 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Tính C=M
e
mod N, trong đó 0≤M<N
Để giải mã hoá bản mã, người sở hữu nhận:
o Sử dụng khóa riêng KR={d,p,q}
o Tính M=C
d
mod N
Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ.
Cơ sở của RSA
Theo Định lý Ole
o a
Ф
(n)
mod N = 1 trong đó gcd(a,N)=1
o Ta có N=p.q
o Ф(N)=(p-1)(q-1)
o e.d=1 mod Ф(N)
o e.d=1+k.Ф(N) đối với một giá trị k nào đó.
Suy ra
o C
d
= (M
e
)
d
= M
1+k.
Ф
(N)
= M
1
.(M
Ф
(N)
)
k
suy ra
o C
d
modN = M
1
.(1)
k
modN = M
1
modN = M modN
Ví dụ
1. Chọn các số nguyên tố: p=17 & q=11.
2. Tính n = pq, n = 17×11=187
3. Tính Ф(n)=(p–1)(q-1)=16×10=160
4. Chọn e : gcd(e,160)=1; Lấy e=7
5. Xác định d: de=1 mod 160 và d < 160
Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
6. In khoá công khai KU={7,187}
7. Giữ khoá riêng bí mật KR={23,17,11}
Ví dụ áp dụng mã RSA trên như sau:
Cho mẩu tin M = 88 (vậy 88<187)
Mã C = 88
7
mod 187 = 11
Giải mã M = 11
23
mod 187 = 88
Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
a. Tính 11
23
mod 11 = 0
b. Tính 11
23
mod 17 = (-6)
23
mod 17 = (-6)
16
(-6)
4
(-6)
2
(-6)
mod 17 = 3
Vì (-6)
2
mod 17 = 2, nên (-6)
4
mod 17 = 4, (-6)
8
mod 17 = -1
(-6)
16
mod 17 = 1
c. 11
-1
mod 17 = (-6)
-1
mod 17 = 14 nên c
2
= 11(11
-1
mod 17) = 11 (14 mod 17) = 154
d. Vậy M = (3.154) mod 187 = 462 mod 187 = 88
- 69 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.2.3 Lũy thừa
Trong các bài toán hoá công khai, chúng ta sdụng nhiều phép toán lũy thừa với số lớn. Nvậy
cần thuật toán nhanh hiệu quả đối với phép toán này. Trước hết ta phân tích số theo số 2, xét
biểu diễn nhị phân của số mũ, sau đó sử dụng thuật toán bình phương nhân. Khái niệm được dựa trên
phép lặp sở bình phương nhân để nhận đựơc kết quả mong muốn. Độ phức tạp của thuật toán
O(log
2
n) phép nhân đối với số mũ n.
Ví dụ:
7
5
= 7
4
.7
1
= 3.7 = 10 mod 11
vì 7
2
= 7.7 = 49 = 5 mod 11
7
4
= 7
2
.7
2
= 5.5 = 3 mod 11
3
129
= 3
128
.3
1
= 5.3 = 4 mod 11
Phân tích số mũ theo cơ số 2
Trước hết ta chuyển số mũ từ cơ số 10 sang cơ số 2: (11)
10
= (1011)
2
. Sau đó tính toán như sau:
M
11
= M
1.2^3 + 0.2^2+ 1.2^1 + 1.2^0
=
(M
1.2^2 + 0.2^1+ 1.2^0
)
2
M
=
(M
1.2^1 + 0.2^0
)
2
M)
2
M
= ((M
2
)
2
M)
2
M
Thuật toán lũy thừa
Giả sử b
1
b
2
…b
k
là biểu diễn cơ số 2 của c.
Tính a
c
mod n
Trong thuật toán trên giá trị của c chỉ dùng để kiểm tra số mũ của lũy thừa. Còn d chính là giá trị lũy thừa
cần tính và a là cơ số của luỹ thừa.
V.2.4 Mã hiệu quả:
sử dụng y thừa của khoá công khai e, nếu giá trị của e nhỏ thì tính toán sẽ nhanh, nhưng dễ bị tấn
công. Thường chọn e nhỏ hơn hoặc bằng 65537 (2
16
-1), tức độ dài khoá công khai 16 bit. Chẳng
hạn trong ví dụ trên ta có thể lựa chọn e = 23 hoặc e = 7. Ta có thể tính mã hoá nhanh, nếu biết n=pq và sử
dụng Định phần Trung Hoa với mẩu tin M theo các Modulo p q khác nhau. Nếu khoá công khai
e cố định thì cần tin tưởng rằng khi chọn n ta luôn có gcd(e,Ф(n)) = 1. Loại bỏ mọi p, q mà làm cho Ф(n)
không nguyên tố cùng nhau với e.
- 70 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.2.5 Giải mã hiệu quả:
thể sử dụng Định phần Trung Hoa để tính theo mod p q, sau đó kết hợp lại để tìm ra bản rõ.
Vì ở đây người sử dụng khoá riêng biết được p và q, do đó có thể sử dụng kỹ thuật này. Nếu sử dụng định
lý phần dư Trung Hoa để giải mã thì hiệu quả là nhanh gấp 4 lần so với giải mã tính trực tiếp.
V.2.6 Sinh khoá RSA
Người sử dụng RSA cần phải xác định ngẫu nhiên 2 số nguyên tố rất lớn, thông thường khoảng 512 bit.
Do đó việc sinh ra ngẫu nhiên p, q kiểm tra xác suất tính nguyên tố của chúng nhiều giải pháp khác
nhau với độ tin cậy cao. Sau khi chọn được một khoá e hoặc d nguyên tố cùng nhau với Ф(n), dễ dàng
tính được khoá kia chính là số nghịch đảo của nó qua thuật toán Euclide mở rộng.
V.2.7 An toàn của RSA
Trên thực té có nhiều cách tấn công khác nhau đối với mã công khai RSA như sau:
Tìm kiếm khoá bằng phương pháp vét cạn, phương pháp này không khả thi với kích thước đủ lớn của các
số hoặc tấn công bằng toán học dựa vào độ khó việc tính Ф(n) bằng cách phân tích n thành hai số nguyên
tố p và q hoặc tìm cách tính trực tiếp Ф(n). Trong quá trình nghiên cứu việc thám mã người ta đề xuất kiểu
tấn
công thời gian trong khi giải mã, tức căn cứ vào tốc độ hoá giải các mẩu tin cho trước
phán đoán các thông tin về khoá. Cuối cùng những nghiên cứu tấn công RSA với điều kiện biết trước
bản mã cho trước. Cu thể như sau:
Bài toán phân tích
Tấn công toán học có 3 dạng
o Phân tích N = p.q, sau đó tính Ф(N) và d
o Tìm n trực tiếp Ф(N) và tính d
o Tìm d trực tiếp
Hiện tại tin rằng tất cả đều tương đương với bài toán phân tích
o Có các bước tiến chậm theo thời gian
o Hiện tại cho rằng RSA 1024 hoặc 2048 là an toàn
Tấn công thời gian
o Phát triển vào giữa năm 1990
o Paul Kocher chỉ ra rằng kẻ thám thể xác định được khoá riêng nếu theo dõi thời gian
máy tính cần để giải mã các bản tin.
o Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã công khai khác.
o Tấn công thời gian giống như kẻ cướp đoán số điện thọai bằng cách quan sát một người nào đó
trong bao lâu chuyển quay điện thoại từ số này sang số khác.
Tấn công bản mã chọn trước
o RSA có điểm yếu với tấn công bản mã chọn trước
o Kẻ tấn công chọn bản mã và đoán bản rõ được giải mã
o Chọn bản mã để khám phá RSA cung cấp thông tin để thám mã
o Có thể tính với bộ đệm ngãu nhiên của bản rõ
o Hoặc sử dụng bộ đệm mã hoá phản xứng.
V.3 Quản lý khoá
V.3.1 Phân phối khoá
khoá công khai giúp giải bài toán phân phối khoá, đây là nhu cầu cấp bách cần phải tạo ra một cơ chế
chia sẻ khoá trong môi trường thường xuyên trao đổi thông tin thường xuyên thay đổi khoá. bao
gồm hai khía cạnh sau:
o Phân phối khoá một cách công khai nhưng đảm bảo được bí mật.
- 71 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Sử dụng mã khoá công khai để phân phối khoá mật (còn khoá mật dùng để mã hoá thông tin).
V.3.2 Phân phối khoá công khai
Có thể xem xét để được sử dụng vào một trong những việc sau:
o Thông báo công khai khoá của người sử dụng.
o Thư mục truy cập công cộng cho mọi người.
o Chủ quyền khoá công khai, người nắm giữ khoá công khai.
o Chứng nhận khoá công khai, khoá công khai của người sử dụng được nơi có thẩm quyền chứng
nhận.
Thông báo công khai
Người dùng phân phối khoá công khai cho người nhận hoặc thông báo rộng rãi cho cộng đồng. Chẳng
hạn như người sử dụng thể tự bổ sung khoá PGP vào thư điện tử hoặc gửi cho nhóm chia sẻ tin
hoặc một danh sách thư điện tử.
Điểm yếu chính của thông báo công khai mạo danh: một người nào đó thể tạo khoá tuyên bố
mình là một người khác và gửi thông báo cho mọi người khác. Cho đến khi giả mạo bị phát hiện thì kẻ
mạo danh đã có thể lừa trong vai trò người khác
Thư mục truy cập công cộng
Dùng thư mục truy cập công cộng có thể đạt được tính an toàn cao hơn bằng cách đăng ký khoá với
thư mục công cộng để đăng tải và chia sẻ cho mọi người.
Thư mục cần được đảm bảo tin cậy với các tính chất sau:
o Chứa việc nhập tên và khoá công khai
o Người dùng đăng ký mật với Thư mục
o Người dùng có thể thay khoá bất cứ lúc nào
o Thư mục được in định kỳ
o Thư mục có thể truy cập qua mạng
Mô hình trên vẫn còn có các lỗ hổng để kẻ xâm nhập sửa hoặc giả mạo khi vào hệ thống.
Chủ quyền khoá công khai
Đây là bước cải thiện tính an toàn bằng kiểm soát chặt chẽ tập trung việc phân phối khoá từ Thư mục. Nó
bao gồm các tính chất của một Thư mục như đã nêu phần trước đòi hỏi người dùng biết khoá công
khai của Thư mục đó. Sau đó người dùng nhận được bất kỳ khoá công khai mong muốn nào một cách an
toàn, bằng cách truy cập thời gian thực đến Thư mục khi cần đến khoá. Tuy nhiên yêu cầu truy cập thời
gian thực một nhược điểm của ch phân phối khoá này. Cụ thể trong kịch bản sau hai người sử dụng
chia sẻ khoá công khai của mình cho nhau thông qua việc sử dụng khoá công khai của Chủ quyền để nhận
được khoá công khai ca đối tác trao đổi qua li đ khẳng đnh ngưi y đã biết thông tin của người
kia.
- 72 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Chứng nhận khoá công khai
Chứng nhận cho phép trao đổi khoá không cần truy cập thời gian thực đến Chủ quyền thư mục khoá công
khai. Để làm việc đó chứng nhận trói danh tính của người sử dụng với khoá công khai của anh ta và “đóng
dấu giấy chứng nhận” đó để tránh giả mạo. Các thông tin đi kèm thông thường chu kỳ kiểm định,
quyền sử dụng, thời hạn,…
Nội dung trên được bởi khoá riêng tin cậy của Chủ quyền chứng nhận (CA, Certificate Authority). Do
khoá công khai của CA được thông báo rộng rãi, nên chứng nhận đó có thể được kiểm chứng bới một
người nào đó biết khoá công khai của Chủ quyền chứng nhận.
V.3.3 Phân phối công khai các khoá mật
Nói chung thể sử dụng các phương pháp trên để nhận được khoá công khai của người định trao đổi
thông tin. Khoá công khai đó dùng cho mục đích hoá, giải hoặc xác nhận thông tin của đối tác.
Nhưng các thuật toán khoá công khai chậm, nên giá để bảo mật thông tin là đắt. Do đó thông thường dùng
khoá đối xứng để mã hoá và giải mã nội dung bản tin, mà còn được gọi là khoá phiên hay khóa kỳ (section
key). Có một số cách thỏa thuận khoá phiên phù hợp giữa hai người sư dụng.
Phân phối khoá mật đơn giản
Được đề xuất bởi Merkle vào năm 1979
o A tạo ra một cặp khoá công khai mới tạm thời
o A gửi B một khoá công khai và danh tính của họ
o B to ra khoá phiên gửi cho A s dụng khoá công khai đưc cung cp
o A gii mã khoá phiên c hai cùng dùng nó.
Vn đề nằm chỗ, kẻ t có thể ngăn hoc đóng gi c hai n của th tc
Nếu có kh công khai thì khoá phiên được trao đi an toàn
- 73 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.3.4 Trao đổi khoá hỗn hợp:
Ta thể kết hợp sử dụng Trung tâm phân phối khoá để phân phối khoá phiên như trên hình máy chủ
của IBM. Trung tâm chia sẻ khoá chính (master key) với mỗi người sử dụng. Và phân phối khoá phiên sử
dụng khoá chính với Trung tâm. đồ khoá công khai được dùng để phân phối khoá chính. đồ ba lớp
này đặc biệt hữu ích khi người sử dụng phân tán rộng. c yêu cầu căn bản của hệ thống chất lượng
thực hiện và sự tương thích nền tảng.
V.4 Trao đổi khoá Diffie Hellman
V.4.1 Yêu cầu
Trao đổi khoá Diffie Hellman là sơ đồ khoá công khai đầu tiên được đề xuất
bởi Diffie Hellman năm 1976 cùng với khái niệm khoá công khai. Sau này được biết đến bởi James
Ellis (Anh), người đã đề xuất mật năm 1970 hình tương tự. Đây phương pháp thực tế trao đổi
công khai các khoá mật. Nó thúc đẩy việc nghiên cứu đề xuất các mã khoá công khai. Sơ đồ được sử dụng
trong nhiều sản phẩm thương mại.
Là sơ đồ trao đổi khoá mật dùng khoá công khai:
o Không thể dùng để trao đổi mẩu tin bất kỳ.
o Tuy nhiên nó có thể thiết lập khoá chung.
o Chỉ có hai đối tác biết đến.
o Giá trị khoá phụ thuộc vào các đối tác (và các thông tin về khoá công khai và khoá riêng của
họ).
o Dựa trên phép toán lũy thừa trong trường hữu hạn (modulo theo số nguyên tố hoặc đa thức) là
bài toán dễ.
o Độ an toàn dựa trên độ khó của bài toán tính logarit rời rạc (giống bài toán phân tích ra thừa
số) là bài toán khó.
V.4.2 Khởi tạo Diffie Hellman
Mọi người dùng thỏa thuận dùng tham số chung:
o Số nguyên tố rất lớn q hoặc đa thức.
o α
o là căn nguyên tố của mod q.
Mỗi người dùng (A chẳng hạn) tạo khoá của mình:
o Chọn một khoá mật (số) của A: x
A
< q
o Tính khoá công khai của A: y
A
= α
x
A
mod q.
o Mỗi người dùng thông báo công khai khoá của mình y
A.
- 74 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.4.3 Trao đổi khoá Diffie Hellman
Khoá phiên dùng chung cho hai người sử dụng A, B là K
AB
K
AB
= α
x
A.
x
B
mod q
= y
A
x
B
mod q (mà B có thể tính)
= y
B
x
A
mod q (mà A có thể tính)
K
AB
được sử dụng như khoá phiên trong sơ đồ khoá riêng giữa A và B
A và B lần lượt trao đổi với nhau, họ có khoá chung K
AB
cho đến khi họ chọn khoá mới.
Kẻ thám mã cần x, do đó phải giải tính logarit rời rạc
Ví dụ:
Hai người sử dụng Alice & Bob muốn trao đổi khoá phiên:
• Đồng ý chọn số nguyên tố q=353 và α=3
• Chọn các khoá mật ngẫu nhiên:
A chọn x
A
=97, B chọn x
B
=233
• Tính các khoá công khai:
y
A
=3
97
mod 353 = 40 (Alice)
y
B
=3
233
mod 353 = 248 (Bob)
• Tính khoá phiên chung:
K
AB
= y
B
x
A
mod 353 = 248
97
= 160 (Alice)
K
AB
= y
A
x
B
mod 353 = 40
233
= 160 (Bob)
V.5 Mã đường cong Elip
Để đảm bảo tính an toàn đa số mã công khai sử dụng số học số nguyên lớn hoặc đa thức với các số nguyên
rất lớn hoặc đa thức bậc cao. Do đó buộc phải tải phần quan trọng vào kho nhớ để xử khoá mẩu tin.
Làm như vậy vừa tốn bộ nhớ vừa dễ mất an toàn. Để khắc phục điều đó vẫn đảm bảo độ an toàn của
công khai, người ta đã đề xuất cách khác dùng đường cong Elip. đây các phép toán được thực
hiện trên các xâu bit có kích thước nhỏ hơn.
V.5.1 Mã đường cong Elip thực
Đường cong Elip được định nghĩa bởi phương trình với 2 biến x, y và hệ số thực
Xét đường cong Elip bậc 3 dạng:
y
2
= x
3
+ ax + b
trong đó x, y, a, b là các số thực và định nghĩa thêm điểm O.
Có phép cộng đối với đường cong Elip
o Về hình học tổng của P và Q là điểm đối xứng của giao điểm R
o Điểm O đóng vai trò là đơn vị đối với phép cộng và nó là điểm vô cực.
- 75 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.5.2 Đường cong Elip hữu hạn
Mã đường cong Elip sử dụng đường cong Elip mà các biến và hệ số là hữu hạn.
Có hai họ được sử dụng nói chung:
o Đường cong nguyên tố E
p
(a,b) được xác định trên Z
p
o
Sử dụng các số nguyên modulo số nguyên tố
Tốt nhất trong phần mềm
o Đường cong nhị phân E
2
n
(a,b)xác định trên GF(2
n
)
Sử dụng đa thức với hệ số nhị phân
Tốt nhất trong phần cứng
V.5.3 Đường cong Elip (ECC – Elliptic Curve Cryptography)
Trong ECC phép cộng giống phép nhân của modulo phép cộng lặp trong ECC (tức phép nhân một
điểm với một hệ số) giống như phép lũy thừa của modulo.
Bài toán sau đây trong ECC là bài toán khó tương đương với bài toán logarit rời rạc:
o Giả sử cho Q = k.P, trong đó P, Q là 2 điểm của đường cong Elip
o Dễ dàng tính Q, nếu cho trước P, k
o Rất khó tìm k, nếu cho trước P, Q. Bài toán tìm hệ số k chính bài toán khó bài toán logarit
đường cong Elip. Mã đường cong Elip dựa trên bài toán khó một chiều này để dấu khoá riêng.
Ví dụ: Xét E
11
(1,6).
Các phép cộng sau đây thực hiện trong Modulo 11.
- 76 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.5.4 ECC Diffie Hellman
Chẳng hạn dựa trên cơ sở độ khó của bài toán tìm hệ số liên hệ giữa hai điểm như trên, người ta đưa ra
đồ trao đổi khoá ECC Diffie Hellman giồng như trao đổi khoá Diffie Helman thông thường. đây phép
lũy thừa trong Modulo thông thường được thay bằng phép nhân một điểm với hệ số trong ECC phép
logarit rời rạc được thay bằng phép toán cho 2 điểm tìm hệ số liên hệ giữa chúng. Bài toán sau là bài toán
khó xác định độ an toàn của sơ đồ trao đổi công khai khoá chung.
Nhóm người dùng chọn chung một đường cong Elip phù hợp E
p
(a,b)
Chọn điểm cơ sở G=(x
1
,y
1
) với bậc lớn, tức là n lớn sao cho nG = O
Hai người sử dụng A và B chọn khoá riêng của mình: n
A
< n, n
B
< n
Sau đó họ tính các khoá công khai của A và B: P
A
=n
A
×G,P
B
=n
B
×G. Và cho công bố công khai P
A
và P
B
.
Hai người sử dụng dùng chung khoá mật: K=n
A
×n
B
×G.
Mỗi người đều có cách tính khoá chung đó bằng cách lấy khoá riêng của mình nhân với khoá công
khai của đối tác: K=n
A
×P
B
,
K=n
B
×P
A
V.5.5 ECC mã và giải mã
Có một số cách dùng đường cong Elip để tạo mã công khai, ta xét cách đơn giản nhất sau:
Trước hết nhóm người sử dụng cần phải thống nhất chọn một đường cong Elip phù hợp và một điểm G
giống như trong trao đổi khoá ECC Diffie – Hellman. Mỗi bản tin M được coi như một điểm P
M
trên
đường cong Elip đó.
Mỗi người sử dụng chọn một khoá riêng cho mình n
A
< n
Và tính khoá công khai để công bố P
A
=n
A
×G
ECC mã bản tin M tương ứng với điểm P
M
trên đường cong Elip bằng cách tạo bản mã C
M
là cặp điểm
trên đường cong Elip đó như sau:
- 77 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
C
M
={kG, P
M
+k P
b
}, k là số ngẫu nhiên
Ta thực hiện phép toán trên hai điểm của C
M
để giải mã tìm P
M
P
M
+kP
b
–n
B
(kG) = P
M
+k(n
B
G)–n
B
(kG) = P
M
An toàn ECC
Dựa trên bài toán tìm hệ số liên hệ giữa hai điểm trên đường cong Elip gọi bài toán logarit trên đường
cong Elip. Phương pháp nhanh nhất giải bài toán trên đã biết “Pollard rho method”. Bài toán này
tương đương với bài toán
phân tích ra thừa số, nhưng có thể sử dụng kích thước khoá nhỏ hơn nhiều, chảng hạn so với RSA. Người
ta chứng minh được rằng với độ dài khoá bằng nhau các tính toán nói chung tuơng đương. Vậy với độ
an toàn như nhau ECC có nhiều ưu điểm về không gian lưu trữ và tính an toàn đi kèm.
Bài tập
1. Tính mã hoá RSA của bản ghi sau:
p=7, q=11, e = 3, NSD A chọn khoá riêng x
A
= 7, tính khoá công khai của A
NSD B gửi bản tin M = 5 và mã bằng khoá công khai của A
NSD A giải mã sử dụng định lý phần dư Trung Hoa
2. Tính mã hoá RSA của bản ghi sau:
p=11, q=13, e = 7, NSD A chọn khoá riêng x
A
= 9, tính khoá công khai của A
NSD B gửi bản tin M = 7 và mã bằng khoá công khai của A
NSD A giải mã sử dụng định lý phần dư Trung Hoa
3. Tính mã hoá RSA của bản ghi sau:
p=23, q=31, NSD A chọn khoá riêng x
A
= 13, tính khoá công khai của A
NSD B gửi bản tin M = 20 và mã bằng khoá công khai của A
NSD A giải mã sử dụng định lý phần dư Trung Hoa
4. Trao đổi khoá Difie Hellman:
Chọn số nguyên tố dung chung q = 131 và α = 7,
NSD A chọn khoá riêng x
A
= 11
NSD B chọn khoá riêng x
B
= 19
Tính khoá công khai của A và B
Nêu cách A va B tính khoá mật dùng chung giữa A và B
5. Trao đổi khoá Difie Hellman:
Chọn số nguyên tố dung chung q = 131 và α = 7,
NSD A chọn khoá riêng x
A
= 11
NSD B chọn khoá riêng x
B
= 19
Tính khoá công khai của A và B
Nêu cách A va B tính khoá mật dùng chung giữa A và B
6. Mã đường cong Elip
Cho hệ đường cong Elip
y
2
= (x
3
+ x + 1) mod 13
Vẽ đồ thị đường cong trên.
Cho G = (4, 2)
NSD A chọn khoá riêng x
A
= 2
NSD B chọn khoá riêng x
B
= 3
Tính khoá công khai của A và B
Nêu cách A va B tính khoá mật dùng chung giữa A và B
7. Mã đường cong Elip
Cho hệ đường cong Elip
- 78 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
y
2
= (x
3
+ x + 1) mod 23
Cho G = (3, 10)
NSD A chọn khoá riêng x
A
= 2
NSD B chọn khoá riêng x
B
= 3
Tính khoá công khai của A và B
Nêu cách A va B tính khoá mật dùng chung giữa A và B
8. Mã Elgamal:
Cho hệ (G, α, β) trong đó G là một nhóm với phép nhân và α, β là hai phần tử của G.
Công khai G, α, β
Giữ bí mật luỹ thừa nguyên a thoả mãn: α
a
= β (để tìm được a phải giải bài toán logarit rời
rạc là bài toán khó)
Mã hoá mẫu tin M bằng cách chọn ngẫu nhiên số k và tính:
C=E(M) = (y
1
, y
2
) = (α
k
, M.β
k
)
Giải mã: C = y
2
. (y
1
a
)
-1
a) Áp dụng ví dụ trên cho p = 79, α = 5, a = 3, M = 19 và k = 4. Ở đây nhóm với phép nhân là
Z
p
, tính β. Tìm bản mã C của bản rõ M và giải mã
b) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là
Z
p
, tính β. Tìm bản mã C của bản rõ M và giải mã.
c) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là
Z
p
, tính β. Tìm bản mã C của bản rõ M và giải mã.
9. Nêu thuật toán tính lũy thừa của một cơ số cho trước. Đánh giá độ phức tạp của thuật toán đó.
10. Tại sao có thể nói nếu dùng Định lý Trung Hoa để giải mã thì tốc đ giải mã nhanh gấp 4 lần
không dùng nó.
- 79 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG VI
XÁC THỰC MẪU TIN VÀ CÁC HÀM HASH
VI.1 Xác thực mẩu tin
VI.1.1 Các khái niệm
Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng
o Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát
hiện nếu mẩu tin bị thay đổi trên đường truyền.
o Kiểm chứng danh tính nguồn gốc: xem xét mẩu tin đúng do người xưng tên gửi không
hay một kẻ mạo danh nào khác gửi.
o Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa các thông tin chứng
tỏ chỉ người xưng danh gửi, không một ai khác thể làm điều đó. Như vậy người gửi
không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin.
Ngoài ra có thể xem xét bổ sung thêm các yêu cầu bảo mật như mã hoá. Với mong muốn đáp ứng các yêu
cầu trên, có 3 hàm lựa chọn sau đây được sử dụng:
o Mã mẩu tin bằng mã đối xứng hoặc mã công khai.
o xác thực mẩu tin (MAC): dùng khoá một hàm nén mẩu tin cần gửi để nhận được một
đặc trưng đính kèm với mẩu tin và người gửi đó.
o Hàm hash (hàm băm) là hàm nén mẩu tin tạo thành “dấu vân tay” cho mẩu tin.
Các yêu cầu bảo mật khi truyền mẩu tin trên mạng.
Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:
o Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết.
o Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin.
o Giả mạo: lấy danh nghĩa người khác để gửi tin.
o Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin.
o Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền.
o Sửa đổi thời gian: làm trì hoãn mẩu tin.
o Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu tin.
o Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của mẩu tin đã gửi.
VI.1.2 Mã mẩu tin
mẩu tin bản thân đã cung cấp một phần tính c thực, khoá được chia sẻ giữa người gửi
người nhận cũng như việc thay đổi nội dung cũng không dễ dàng thực hiện nếu không có khoá.
Cụ thể nếu đối xứng được sử dụng thì người nhận biết người gửi phải tạo ra mẩu tin, chỉ
người gửi và người nhận biết được khoá sử dụng.
Người nhận thể biết nội dung không bị sửa đổi, nếu mẩu tin cấu trúc phù hợp, tính thừa
tổng kiểm tra để phát hiện bất cứ thay đổi nào.
Nếu khoá công khai được sử dụng thì cung cấp không đủ độ tin cậy về người gửi, mọi người
đều thể biết khoá công khai của người nhận. Tuy nhiên nếu người gửi mẩu tin sử dụng khoá
riêng của họ sau đó với khoá công khai của người nhận, thì khi đó đảm bảo cả tính bảo mật
xác thực của mẩu tin. Cần phải bổ sung các biện pháp để phát hiện các mẩu tin đã bị làm hỏng. Việc
sử dụng khoá riêng của người gửi kết hợp với khoá công khai của người nhận có nhiều ưu việt, nhưng
với giá phải trả là chậm do dùng 2 mã khoá công khai trên mẩu tin.
VI.1.3 Mã xác thực mẩu tin (MAC – Message Authentication Code)
Sinh ra bởi một thuật toán mà tạo ra một khối thông tin nhỏ có kích thước cố định
o Phụ thuộc vào cả mẩu tin và khoá nào đó.
o Giống như mã nhưng không cần phải giải mã.
Bổ sung vào mẩu tin như chữ ký để gửi kèm theo làm bằng chứng xác thực.
- 80 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Người nhận thực hiện tính toán nào đó trên mẩu tin và kiểm tra xem nó có phù hợp với MAC đính
kèm không.
Tạo niềm tin rằng mẩu tin không bị thay đổi và đến từ người gửi.
Các mã xác thực mẩu tin MAC cung cấp sự tin cậy cho người nhận là mẩu tin không bị thay đổi và
từ đích danh người gửi. Cũng có thể sử dụng mã xác thực MAC kèm theo với việc mã hoá để bảo mật.
Nói chung người ta sử dụng các khoá riêng biệt cho mỗi MAC và có thể tính MAC trước hoặc sau mã
hoá, tốt hơn là thực hiện MAC trước và mã hoá sau.
Sử dụng MAC có nhược điểm là MAC phụ thuộc vào cả mẩu tin và cả người gửi, nhưng đôi khi chỉ cần
xác thực mẩu tin và thông tin xác thực đó chỉ phụ thuộc mẩu tin để lưu trữ làm bằng chứng cho tính toàn
vẹn của nó. Khi đó người ta sử dụng hàm Hash thay vì MAC. Cần lưu ý rằng MAC không phải là chữ ký
điện tử, vì cả người gửi và người nhận đều biết thông tin về khoá.
Các tính chất của MAC
MAC là thông tin nén của mẩu tin kết hợp với khoá MAC = C
K
(M)
o Nén bản tin M có độ dài tùy ý
o Sử dụng khoá mật K
o Tạo nên dấu xác thực có độ dài cố định
o hàm nhiều - một, nghĩa nhiều bản tin khác nhau nhưng cùng MAC. Tuy nhiên ta
phải lựa chọn hàm MAC sao cho xác suất để các mẩu tin ý nghĩa MAC trùng nhau là rất
nhỏ. Việc tìm được các mẩu tin như vậy là rất khó khăn
Yêu cầu đối với MAC
Tuỳ thuộc vào kiểu tấn công mà MAC phải có các tính chất khác nhau để chống đối lại. Nhưng nói chung
MAC phải thỏa mãn các điều sau
o Biết mẫu tin và MAC, không thể tìm được mẩu tin khác có cùng MAC.
o Các MAC cần phải phân bố đều
o MAC phải phụ thuộc như nhau vào tất cả các bit trong mẩu tin. Tức là khi thay đổi một bit
thông tin nào đó, MAC sẽ có những thay đổi kéo theo.
VI.1.4 Sử dụng mã đối xứng cho MAC
Có thể dùng mã khối với chế độ chuỗi móc nối bất kỳ và sử dụng khối cuối cùng của mã khối làm
MAC của mẩu tin.
Thuật toán xác thực dữ liệu (DAA – Data Authentication Algorithm) là MAC được sử dụng rộng
rãi dựa trên chế độ DES-CBC, trong đó
o Sử dụng véc tơ ban đầu IV = 0 và bộ đệm 0 của block cuối cùng
o Và mã mẩu tin sử dụng chuẩn mã dữ liệu DES trong chế độ CBC
o Gửi lấy block cuối cùng như là MAC của cả mẩu tin
hoặc M bit trái nhất (16 M 64) của khối cuối cùng
- 81 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nhưng bây giờ MAC cuối cùng với kích thước 64 bit cũng quá nhỏ để đảm bảo an toàn. Do đó
người ta tìm cách tạo nên các MAC có kích thước lớn hơn.
VI.2 Các hàm Hash (hay còn gọi là hàm băm).
VI.2.1 Các yêu cầu
Nén mẩu tin bất kỳ về kích thước cố định. giả thiết hàm hash công khai không dùng khoá.
Hash chỉ phụ thuộc mẩu tin, còn MAC phụ thuộc thêm cả vào khoá.
Hash được sử dụng để phát hiện thay đổi của mẩu tin. Hash thể sử dụng nhiều cách khác nhau với
mẩu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẩu tin.
Các tính chất của hàm Hash
Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp, mẩu tin hay dữ liệu
h = H(M)
Nén mẩu tin kích thước tùy ý về dấu vân tay kích thước cố định. Hàm Hash được giả thiết
công khai, mọi người đều biết cách sử dụng
Các yêu cầu của hàm Hash
Có thể áp dụng cho mọi mẩu tin có kích thước tuỳ ý. Tuy nhiên phải tạo đầu ra h có kích thước cố
định, thường là 128 bit đến 1024 bit.
Dễ tính h = H(M)cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả phụ thuộc chặt vào mẩu tin
M và không tính toán ngược lại.
Cho trước h không thể tìm được (rất khó) x sao cho H(x) = h. Tính chất này gọi tính chất một
chiều, chiều tìm nghịch ảnh rất khó khăn, tuy chiều tìm ảnh lại dễ dàng.
Cho x không thể tìm được y sao cho H(y) = H(x). Đây tính chất chống đỡ va chạm yếu, không
tìm được mẩu tin có cùng Hash với mẩu tin đã cho.
không thể tìm được x, y sao cho H(y) = H(x). Đây gọi tính chất chống đỡ va chạm mạnh, đây
là yêu cầu cao hơn tính chống đỡ va chạm yếu.
VI.2.2 Các hàm hash đơn giản
một số đề xuất cho một số hàm hash đơn giản. Chẳng hạn biểu diễn mẩu tin dưới dạng bit sau đó chia
chúng thành các khối bit kích thước bằng kích thước mong muốn của Hash. Rồi dựa trên phép toán
XOR các bit thông tin cùng vị trí tương ứng của các khối, kết quả nhận được Hash của cả mẩu tin.
Hàm hash trên không an toàn đối với mẩu tin bất kỳ thể tìm được mẩu tin cùng hàm
hash.Cần phải có hàm mạnh hơn, mà sẽ xét trong chương sau.
Tấn công ngày sinh nhật
thể nghĩ hash 64 bit an toàn, nghĩa khó tìm được bản tin cùng hash. Nhưng không phải vậy
vì nghịchngày sinh nhật như sau: trong lớp có ít nhất bao nhiêu sinh viên, để xác suất có ít nhất 2 sinh
viên trùng ngày sinh nhật lớn hớn 0.5. Theo thuyết xác suất thống gọi số sinh viên ít nhất trong
- 82 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
lớp k, khi đó xác suất q để không 2 người nào trùng ngày sinh tỷ số giữa cách chọn k ngày khác
nhau trong 365 ngày trên số cách chọn k ngày bất kỳ trong 365 ngày. Vậy
q = C
k
365
/ 365
k
Do đó, xác suất p để có ít nhất 2 người trùng ngày sinh là
p = 1 – q = 1 - C
k
365
/ 365
k
Để p > 0.5 thì k > 22 hay k =23, cụ thể khi đó p = 0.5073.
Khi chưa tính toán chi tiết chúng ta nghĩ trong lớp phải ít nhất khoảng 365/2 tức 184 sinh viên.
Nhưng trên thực tế con số đó ít hơn rất nhiều chỉ cần 23 sinh viên, chính vậy ta gọi đây nghịch
ngày sinh nhật.
Điều đó muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẩu tin cùng bản Hash không
nhỏ như chúng ta tưởng.
Tấn công ngày sinh nhật hoạt động như sau
o Kẻ thám mã tạo ra 2
m/2
biến thể của mẩu tin đúng mà tất cả đều có bản chất ngữ nghĩa như
nhau, với m ở đây là độ dài của bản mã hash.
o Kẻ thám mã cũng có thể tạo ra 2
m/2
biến thể khác nhau của mẩu tin lừa dối, tức là có ngữ nghĩa
ngược lại
o Hai tập tin được so sánh với nhau để tìm cặp có cùng bản hash (xác suất >= 0.5 dựa vào nghịch
lý ngày sinh nhật)
o Người dùng ký vào mẩu tin đúng, sau đó bị thay thế bằng mẩu tin giả mà cũng có chữ ký đúng.
Kết luận là cần phải dùng MAC có kích thước lớn hơn nữa.
VI.2.3 Mã khối như hàm Hash
Có thể sử dụng mã khối như hàm Hash
o Sử dụng H
0
= 0 và bộ đệm không cho khối cuối cùng
o Tính H
i
= E
M
i
[H
i-1
]
o Và sử dụng khối cuối cùng như giá trị hàm hash
o Giống chế độ CBC nhưng không có khoá
Hash kết quả quá nhỏ (64 bit)
o Cả vì tấn công sinh nhật trực tiếp
o Cả tấn công ở giữa chừng
Các phương án khác cũng dễ bị tấn công
Kẻ thám mã cũng có thể tạo ra 2
m/2
biến thể khác nhau của mẩu tin
VI.2.4 Tính an toàn của hàm Hash và MAC.
Giống như đối với khối, hàm hash cũng tấn công vét cạn, cụ thể: Hash chống va chạm mạnh giá
2
m/2
, có nghĩa là với m là độ dài mã hash thì 2
m/2
xác định sức mạnh của nó chống đối lại tấn công vét cạn.
Ta cần lựa chọn m đủ lớn để việc duỵêt tìm 2
m/2
phương án là không khả thi. Có đề xuất Hash 128 bit cho
MD5 phần cứng. Nhưng thể tìm được va chạm sau 24 ngày. Do đó thể coi hash 128 bit thể
lỗ hổng, không an toàn, tốt hơn dùng hash 160 bit.
Tấn công vét cạn trên MAC khó hơn, vì chúng đòi hỏi một cặp MAC của mẩu tin đã biết, do nó phụ thuộc
thêm vào khoá. Có thể tấn công vào không gian khoá (như là tìm khoá) hoặc MAC. Độ dài ít nhất 128 bit
MAC là cần thiết để đảm bảo an toàn
Thám mã tấn công có cấu trúc
- 83 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Giống như mã khối muốn dùng tấn công vét cạn, có một số các tấn công thám mã là la chọn tốt nhất
hiện có. Chẳng hạn
Nếu CV
i
= f[CV
i-1
, M
i
]; H(M)=CV
N
Thì ở đây thông thường khai thác sự va chạm của hàm f
Giống mã khối thường gồm một số vòng lặp
Khi đó tân công sử dụng các tính chất của các hàm vòng.
VI.3 Các thuật toán Hash và MAC
VI.3.1 Các thuật toán Hash và MAC
Hàm Hash: thực hiện việc nén mẩu tin kích thước cố định bằng cách xử mẩu tin theo từng
khối kết hợp dùng một hàm nén nào đó và có thể sử dụng mã khối.
c thực mẩu tin (MAC): thực hiện tạo phần c thực cho mẩu tin kích thước cố định, để
cung cấp tính toàn vẹn của mẩu tin và tính xác thực thông qua việc sử dụng khoá. Có thể tiíen hành
bằng cách sử dụng mã khối với chế độ móc nối hoặc hàm Hash.
Cấu trúc thuật toán Hash
VI.3.2 Thuật toán Hash an toàn SHA (Secure Hash Algorithm)
SHA nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa kỳ - NIST & NSA vào năm 1993, sau đó
được nâng cấp vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet RFC3174, được nhắc
đến như SHA-1. Nó được sử dụng với sơ đồ chữ ký điện tử DSA (Digital Signature Algorithm).
Thuật toán SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị Hash 160 bit. Các kết
quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất sử dụng nó trong tương lai.
Sau đây ta mô tả chi tiết thuật toán SHA-1 và MD5:
Thuật toán SHA-1
Mô tả thụât toán
Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 2
64
bit, SHA-1 cho ra kết quả là một
thông điệp rút gọn có độ dài là 160 bit
Mở rộng thông điệp:
f(t;B,C,D) được định nghĩa như sau.
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19)
- 84 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
f(t;B,C,D) = B XOR C XOR D (20≤t≤39)
f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40≤t≤59)
f(t;B,C,D) = B XOR C XOR D (60≤t≤79).
Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích của việc mở rộng này là để đảm bảo cho
thông điệp mở rộng có độ dài là bội số của 512.
Giả sử độ dài của thông điệp l bit. Thêm bit 1 vào cuối thông điệp, theo sau k bit 0 (k số dương
không âm nhỏ nhất sao cho l+1+k=448 (mod512)) . Sau đó thêm khối 64 bit là biểu diễn nhị phân của l.
Phân tích thông điệp mở rộng:
Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích thành N khối 512 bit M(1),M(2),
…,M(N). Trong đó 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit,
Khởi tạo giá trị băm:
Giá trị băm là một chuỗi bit có kích thước bằng kích thước của thông điệp băm (trừ SHA-384) gồm các từ
ghép lại. Trong đó H
j
(i)
từ j trong giá trị băm lần lặp i với 0≤i≤N (s block được sau khi chia văn
bản được đệm) và 0≤j≤(số từ trong giá trị băm -1).Trước khi thực hiện giá trị băm, với mỗi thuật toán băm
an toàn, giá trị băm ban đầu H(0) phải được thiết lập. Kích thước số lượng từ trong H(0) tuỳ thuộc vào
kích thước thông điệp rút gọn.
SHA-1 sử dụng dãy các hằng số K(0),…K(79) có giá trị như sau:
K(t) = 5A827999 ( 0 <= t <= 19)
K(t) = 6ED9EBA1 (20 <= t <= 39)
K(t) = 8F1BBCDC (40 <= t <= 59)
K(t) = CA62C1D6 (60 <= t <= 79).
Thuật toán của bứơc tính giá trị băm SHA-1
SHA-1 được sử dụng để băm thông điệp M độ dài l bit thoả mãn điều kiện 0≤l≤2
64
. Thuật toán sử
dụng:
- Một bảng phân bố thông điệp gồm 80 từ 32 bit
- 5 biến 32 bit
- Một giá trị băm gồm 5 từ 32 bit
Kết quả của SHA-1 là một thông điệp rút gọnđộ dài 160 bit. Các từ của bảng phân bố thông điệp được
hiệu W(0),W(1),…,W(79). 5 biến được hiệu a,b,c,d,e. Các từ của giá trị băm hiệu H
0
(i)
,H
1
(i)
,
H
2
(i)
, H
3
(i)
,H
4
(i)
. H(0) giữ giá trị băm ban đầu và được thay thế bằng các giá trị băm thành công.H(i) sau mỗi
khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N).
Tính toán thông điệp băm
Định nghĩa: S^n(X)=(X<<n) or (X>>32-n).
X<<n nghĩa loại bỏ từ trái sang phải n bit thêm vào kết quả n số 0 vào bên phải. X>> nghĩa
là loại bỏ từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái.
Khởi tạo H
H0 = 67452301 ; H1 = EFCDAB89
H2 = 98BADCFE ; H3 = 10325476
H4 = C3D2E1F0.
Chia M(i) thành 16 từ W(0), W(1),…,W(15)
For t = 16 to 79
- W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)).
- Đặt a=H0 , b=H1,c=H2,d=H3,e=H4
For t = 0 to 79 do
- TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
- e = d; d = c; c = S^30(b); b = a; a = TEMP;
- Đặt H0 = H0 + a,H1 = H1 + b,H2 = H2 + c,H3 = H3 + d,H4 = H4+ e.
Sau khi tính toán được hết M(n), thông điệp rút gọn là một chuỗi 160 bit biểu diễn của 5 từ: H0
H1 H2 H3 H4
Đánh giá thuật toán
- 85 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- SHA-1 được xem an toàn đối với hiện tượng đụng độ rất khó tìm được hai thông điệp khác
nhau có giá trị băm giống nhau
- SHA-1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trực tuyến tồn tại trong 9 năm qua.
- SHA-1 được thiết kế cho bộ xử 32 bit, thế hệ sắp tới của máy tính dùng các bộ xử 64 bit
SHA-1 không hiệu quả trên bộ xử lý này.
- Tháng 2 năm 2005 SHA-1 bị tấn công bời 3 chuyên gia người Trung Quốc. Thuật toán này đã bị giải
mã thông qua phương pháp tính phân bổ.
Thuật toán MD5
Mô tả thuật toán
Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ dài cố định là 128
bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit.
Thuật toán:
Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0] m[1] m[2] ... m[b-1]
Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của (bit)
đồng với 448 theo môđun 512. Nghĩa thông điệp được mở rộng sao cho còn thiếu 64 bit nữa thì
sẽ một độ dài chia hết cho 512. Việc thêm bit này được thực hiện như sau: một bit ‘1’ được thêm vào
sau thông điệp, sau đó các bit ‘0’ được thêm vào để có một độ dài đồng dư với 448 môđun 512.
Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết
quả của bước 1.
Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số thông điệp. đây
mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau :
A=0x01234567
B=0x89abcdef
C=0xfedcba98
D=0x76543210
Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này nhận giá trị đầu vào
là 3 từ 32 bit và tạo tạo ra một word 32 bit.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z)= XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Bước y sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T phần tử thứ i của bảng,
thì T là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian.
Thuật toán
/* Xử lý với mỗi khối 16 bit từ */
For i = 0 to N/16-1 do
/* Sao khối i vào X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end
AA = A
BB = B
CC = C
DD = D
/* Vòng 1: Ký hiệu [abcd k s i] là thao tác sau
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
- 86 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* Vòng 2: Ký hiệu [abcd k s i] là thao tác sau đây
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* Vòng 3: Ký hiệu [abcd k s t] là thao tác sau đây
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* Vòng 4: Ký hiệu [abcd k s t] là thao tác sau đây
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
/* Tính */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* Kêt thúc vòng lặp trên i*/
Bước 5: Thông điệp rút gọn = A||B||C||D.
Đánh giá thuật toán MD5
Về tốc độ sinh ra chuỗi cốt yếu thì MD5 chậm hơn so với MD4 nhưng lại an toàn hơn rất nhiều so với
MD4. Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một giá trị băm của thông
điệp với độ dài tuỳ ý. Người ta cho rằng độ khó để tìm được 2 thông điệp cùng giá trị băm khoảng
2
64
bước tính, và độ khó để tìm được một thông điệp với giá trị băm cho trước là 2
128
bước tính. Tuy nhiên
lỗ hổng mới phát hiện trong thuật toán MD5 sẽ cho phép kẻ tấn công có thể tạo ra file giả mạo trong vòng
vài giờ với loại máy tính đạt chuẩn.
Chuẩn Hash an toàn nâng cao
Viện chuẩn công nghệ quốc gia NIST xuất bản bản sửa FIPS 180-2 vào năm 2002, đề nghị bổ sung 3
phiên bản mới của SHA: SHA-256, SHA-384, SHA-512. Các phiên bản trên được thiết kế tương thích
với việc tăng độ an toàn được cung cấp bởi chuẩn nâng cao AES. Về cấu trúc chi tiết giống
SHA-1, suy ra việc phân tích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so với SHA-1.
Tổng quan SHA 512
- 87 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- 88 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Hàm nén SHA-512
SHA-512 là trọng
tâm của thuật toán.
đây xử lý mẩu tin
với các khối 1024
bit và
bao gồm 80 vòng
o cập
nhật
bộ
đệm 512 bit
o Sử dụng giá trị Wt 64 bit được lấy ra từ block hiện tại của mẩu tin
o Và hằng số quay vòng dựa trên căn bậc ba của 80 số nguyên tố đầu tiên
Hàm quay vòng của SHA-512
- 89 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VI.3.3 Hàm Hash Whirlpool
Bây giờ xem xét hàm Hash Whirlpool, được tán thành bởi dự án NESSIE của châu Âu. Ở đây sử dụng
biến đổi bên trong của chuẩn mã nâng cao AES làm hàm nén và hướng tới sử dụng mã khối như trước.
Chất lượng thực hiện của Whirrlpool sánh được với các thuật toán nổi tiếng như SHA.
Tổng quan Whirlpool được trình bày trên hình vẽ sau
Mã khối Whirlpool
Whirlpool được thiết kế riêng cho việc sử dụng hàm Hash với độ an toàn hiệu quả như chuẩn
nâng cao AES, nhưng với kích thước khối 512 bit hash. Hàm và cấu trúc tương tự như AES nhưng đầu
vào được ánh xạ khéo léo vào 10 hàng các đa thức nguyên tố khác trên GF(2
8
). đây sử dụng giá
trị và thiết kế S-box khác.
An toàn và chất lượng thực hiện của Whirlpool
Whirlpool mới được đề xuất, nên có ít kinh nghiệm sử dụng. Tuy nhiên nó được xây dựng dựa trên kỹ
thuật của AES đã được dùng nhiều. thể Whirlpool cần nhiều thiết bị phần cứng hơn SHA, nhưng
chất lượng thực hiện sẽ tốt hơn.
- 90 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VI.3.4 Hàm Hash có khoá giống như MAC
Khi đãcác hàm Hash tốt, chúng ta muốn có các mã xác thực mẩu tin MAC dựa trên các hàm Hash
đó. hàm Hash thông thường nhanh hơn nguồn của hàm Hash được phổ biến rộng rãi hơn,
nên việc sử dụng chúng tạo nên MAC sẽ hiệu quả hơn. Ta thể coi MAC Hash bao gồm cả khoá
với mẩu tin, cụ thể được đề xuất như sau
KeyedHash = Hash (Key | Message)
Trong trường hợp này một số điểm yếu đã được tìm thấy. Chính muốn khắc phục các điểm yếu
đó, một phương án kết hợp Hash để tạo nên MAC được phát triển là HMAC.
VI.3.5 HMAC
HMAC được thiết kế theo chuẩn Internet RFC2104, sử dụng hàm Hash trên mẩu tin:
HMAC
K
= Hash [(K
+
XOR opad) || Hash [(K
+
XOR ipad) || M)]]
trong đó K
+
khoá đệm mở rộng của K và opad, ipad là các hằng bộ đệm đặc biệt, M là mẩu tin. Như
vậy cần tính nhiều hơn 3 hàm Hash so với nếu bản tin đứng một mình. Bất cứ hàm Hash nào cũng
thể được sử dụng trong sơ đồ trên: MD5, SHA-1, RIPEMD-160 hay Whirlpool.
Tổng quan HMAC
- 91 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
An toàn HMAC
Sự an toàn được chứng minh liên quan đến thuật toán Hash nền trong sơ đồ trên. Tấn công HMAC yêu
cầu phải hoặc:
o Tấn công vét cạn khoá đã sử dụng hoặc
o Tấn công ngày sinh nhật (tuy cần quan sát số lượng rất lớn mẩu tin)
Có thể lựa chọn phán đoán hàm Hash được sử dụng dựa trên tốc độ và các ràng buộc an toàn.
VI.3.6 CMAC
Trước kia đã xét Thuật toán xác thực dữ liệu DAA (CBC-MAC), được sử dụng rộng rãi trong các
chính phủ công nghiệp. Nhưng kích thước bản MAC giới hạn nhỏ hơn hoặc bằng 64 bit. thể
khắc phục nhược điểm trên bằng cách sử dụng 2 khoá bộ đệm nsau: phương pháp được viết tắt
từ Mã xác thực mẩu tin dựa trên mã (Cipher-based Message Authentication Code (CMAC) và được đề
xuất bởi NIST SP800-38B:
- 92 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Tổng quan CMAC
VI.4 Các ứng dụng xác thực
Chúng ta sẽ xem xét các hàm xác thực được phát triển để hỗ trợ xác thực mức ứng dụng và chữ ký điện tử.
Đồng thời cũng xem xét dịch vụ xác thực dùng khoá riêng Kerrberros. sau đó xét dịch vụ xác thực
dùng khoá công khai X.509.
VI.4.1 Kerberos
Đây hình Hệ thống khoá máy chủ tin cậy của MIT (Trường Đại học Kỹ thuật Massachusetts) để
cung cấp xác thực bên thứ ba dùng khoá riêng tập trung. Cho phép người sử dụng truy cậpo các
dịch vụ phân tán trong mạng. Tuy nhiên không cần thiết phải tin cậy mọi máy trạm, thay vì đó chỉ cần tin
cậy máy chủ xác thực trung tâm. Đã có hai phiên bản đang sử dụng là: Kerberos 4 và Kerberos 5.
1. Các yêu cầu của Kerrberos
Báo cáo đầu tiên của: Kerberos nêu các yêu cầu sau
o An toàn
o Tin cậy
o Trong suốt
o Có thể mở rộng
Ở đây cài đặt sử dụng thủ tục xác thực Needham-Schroeder.
2. Tổng quan Kerberos 4
đồ xác thực dùng bên thứ ba bản máy chủ xác thực (AS Authentication Server). Người
dùng thỏa thuận với AS về danh tính của mình, AS cung cấp sự tin cậy xác thực thông qua thẻ cấp thẻ
TGT (Ticket Granting Ticket) máy chủ cung cấp thẻ (TGS Ticket Granting Server). Người sử dụng
thường xuyên yêu cầu TGS cho truy cập đến các dịch vụ khác dựa trên thẻ cấp thẻ TGT của người sử
dụng.
3. Trao đổi Kerberos 4
- 93 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Người sử dụng nhận thẻ được cấp từ máy chủ xác thực AS, mỗi thẻ cho một phiên làm việc và cũng nhận
thẻ cấp dùng dịch vụ (service granting ticket) từ TGT. Mỗi thẻ dùng cho một dịch vụ khác nhau được yêu
cầu, thông qua việc trao đổi giữa máy chủ/trạm để nhận được dịch vụ.
4. Các lãnh địa Kerberos
Môi trường Kerberos bao gồm: máy chủ Kerberos, một s máy trạm đã được đăng với máy chủ, các
máy chủ ứng dụng chia sẻ khoá với máy chủ. Một hệ thống như vậy được gọi một lãnh địa Kerberos.
Thông thường là một miền hành chính duy nhất. Nếu có nhiều lãnh địa, thì các máy chủ Kerberos cần phải
chia sẻ khoá và tin cậy nhau.
5. Kerberos phiên bản 5
Kerberos 5 được phát triển vào giữa những năm 1990, được thiết kế theo chuẩn RFC 1510. cung cấp
những cải tiến so với phiên bản 4, cụ thể hướng tới các thiếu xót về môi trường, thuật toán mã, thủ tục
mạng thứ tự byte, thời gian sử dụng thẻ, truyền tiếp xác thực, xác thực lãnh địa con. c sự khác biệt
về kỹ thuật như: mã kép, các dạng sử dụng không chuẩn, khoá phiên, chống tấn công mật khẩu.
Sau đây ta xem xét chi tiết mô hình Kerberos
Kerberos một giao thức xác thực mạng, cho phép các nhân giao tiếp với nhau trên một mạng
không an toàn bằng cách c thực người dùng này với người dùng khác theo một chế bảo mật an
toàn. Kerberos ngăn chặn việc nghe trộm thông tin cũng như tấn công thay thế đảm bảo tính toàn vẹn
của dữ liệu. Kerberos hoạt động theo hình máy trạm/máy chủ thực hiện quá trình xác thực 2
chiều - cả người dùng dịch vụ xác thực lẫn nhau. Kerberos được xây dựng dựa trên hình hóa
khóa đối xứng và đòi hỏi một thành phần thứ ba tin cậy tham gia vào quá trình xác thực.
Mô tả giao thức
Kerberos sử dụng một đối tác tin cậy thứ ba để thực hiện quá trình chứng thực được gọi là Trung tâm phân
phối khóa bao gồm 2 phần riêng biệt: một máy chủ chứng thực (AS) một máy chủ cấp thẻ (TGS).
Kerberos làm việc dựa trên các thẻ để thực hiện quá trình chứng thực người dùng.
Kerberos duy trì một sở dữ liệu chứa các khoá mật. Mỗi thực thể trên mạng (máy trạm hoặc máy
chủ) đều chia sẽ một khoá bí mật chỉ giữa bản thânvới Kerberos. Để thực hiện quá trình giao tiếp giữa
2 thực thể, Kerberos tạo ra một khoá phiên. Khóa này dùng để bảo mật quá trình tương tác giữa các thực
thể với nhau.
Hoạt động của Kerberos:
Quá trình hoạt động của giao thức (AS = Máy chủ xác thực, TGS = Máy chủ cấp thẻ, C = Máy
trạm, S = Dịch vụ):
1. Người dùng nhập vào tên truy cập và mật khẩu ở phía máy trạm.
2. Máy trạm thực hiện thuật toán băm một chiều trên mật khẩu được nhập vào và nó trở thành khoá bí
mật của máy trạm.
3. Máy trạm gởi một thông điệp dưới dạng bản đến AS để yêu cầu dịch vụ. Không khoá mật
cũng như mật khẩu nào được gởi đến AS.
4. AS kiểm tra xem tồn tại người dùng C trong cở s dữ liệu của hay không. Nếu có, gởi
ngược lại cho máy trạm 2 thông điệp:
o Thông điệp A: chứa khoá phiên Máy trạm/TGS được mã hóa bởi khoá bí mật của người dùng.
o Thông điệp B: chứa Thẻ (bao gồm ID của máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ
giá trị và một khoá phiên máy trạm/TGS) được mã hóa sử dụng khoá bí mật của TGS.
5. Khi máy trạm nhận được thông điệp A B, giải thông điệp A để lấy khoá phiên máy
trạm/TGS. Khoá phiên này được sử dụng cho quá trình giao đổi tiếp theo với TGS. đây máy
trạm không thể giải mã thông điệp B bởi vì nó được mã hóa bởi khoá bí mật của TGS.
6. Khi yêu cầu dịch vụ (S), máy trạm gởi 2 thông điệp sau đến TGS:
o Thông điệp C: Gồm thông điệp B và ID của dịch vụ được yêu cầu
o Thông điệp D: chứa Authenticator (gồm ID máy trạm nhãn thời gian -timestamp) được
hóa bởi khoá phiên Máy trạm/TGS.
- 94 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Khi nhận được thông điệp C D, TGS giải thông điệp D sử dụng khoá phiên máy trạm/TGS
và gởi 2 thông điệp ngược lại cho máy trạm:
o Thông điệp E: chứa thẻ (máy trạm đến máy chủ) (bao gồm ID máy trạm, địa chỉ mạng của máy
trạm, kỳ hạn thẻ giá trị một khoá phiên máy trạm/dịch vụ) được hóa bởi khoá mật
của dịch vụ.
o Thông điệp F: chứa khoá phiên của máy trạm/máy ch được hóa bởi khoá phiên máy
trạm/TGS.
3. Khi nhận được thông điệp E F, máy trạm sau đó gởi một Authenticator mới một thẻ (máy
trạm đến máy chủ) đến máy chủ chứa dịch vụ được yêu cầu.
o Thông điệp G: chứa thẻ (máy trạm đến máy chủ) được hóa sử dụng khoá mật của máy
chủ.
o Thông điệp H: một Authenticator mới chứa ID máy trạm, Timestamp và được mã hóa sử dụng
khoá phiên máy trạm/máy chủ.
4. Sau đó, máy chủ giải mã thẻ sử dụng khoá mật của chính nó, gởi một thông điệp cho máy
trạm để xác nhận tính hợp lệ thực sự của máy trạm và sự sẵn sàng cung cấp dịch vụ cho máy trạm.
o Thông điệp I: chứa giá trị Timestamp trong Authenticator được gởi bởi máy trạm sẽ được cộng
thêm 1, được mã hóa bởi khoá phiên máy trạm/máy chủ.
5. Máy trạm sẽ giải mã sự xác nhận này sử dụng khóa chia sẽ giữa nó với máy chủ, và kiểm tra xem
giá trị timestamp có được cập nhật đúng hay không. Nếu đúng, máy trạm có thể tin tưởng máy chủ
và bắt đầu đưa ra các yêu cầu dịch vụ gởi đến máy chủ.
6. Máy chủ cung cấp dịch vụ được yêu cầu đến máy trạm.
Hạn chế của Kerberos
Kerberos thích hợp cho việc cung cấp các dịch vụ xác thực, phân quyền bảo đảm tính mật của thông
tin trao đổi trong phạm vi một mạng hay một tập hợp nhỏ các mạng. Tuy nhiên, nó không thật thích hợp
cho một số chức năng khác, chẳng hạn như điện tử (yêu cầu đáp ứng cả hai nhu cầu xác thực bảo
đảm không chối cãi được). Một trong những giả thiết quan trọng của giao thức Kerberos các máy chủ
trên mạng cần phải tin cậy được. Ngoài ra, nếu người dùng chọn những mật khẩu dễ đoán thì hệ thống dễ
bị mất an toàn trước kiểu tấn công từ điển, tức kẻ tấn công sẽ sử dụng phương thức đơn giản thử
nhiều mật khẩu khác nhau cho đến khi tìm được giá trị đúng.
Do hệ thống hoàn toàn dựa trên mật khẩu để xác thực người dùng, nếu bản thân các mật khẩu bị đánh cắp
thì khả năng tấn công hệ thống không giới hạn. Điều này dẫn đến một yêu cầu rất căn bản Trung
tâm phân phối khóa cần được bảo vệ nghiêm ngặt. Nếu không thì toàn bộ hệ thống sẽ trở nên mất an toàn.
Toàn vẹn dữ liệu
Đối với mỗi hệ bảo mật toàn vẹn dữ liệu là một yêu cầu không thể thiếu, để đảm bảo tính toàn vẹn dữ liệu
thực sự, các thuật mã hoá như mã hoá băm, mã xác nhận thông điệp (MAC) và chữ ký điện tử có thể cùng
được triển khai đồng loạt. Về bản, những biện pháp này sử dụng các hàm một chiều, nghĩa dữ liệu
không thể bị giải mã ngay cả khi đã biết khoá để mã hoá nó.
VI.4.2 Dịch vụ xác thực X.509
Dịch vụ c thực X.509 một phần của chuẩn dịch vụ thư mục CCITT X.500. đây các máy chủ phân
tán bảo trì sở dữ liệu thông tin của người sử dụng xác định khung cho các dịch vụ xác thực. Thư
mục chứa các chứng nhận khoá công khai, khoá công khai của người sử dụng được bởi chủ quyền
chứng nhận. Để thống nhất dịch vụ cũng xác định các thủ tục xác thực, sử dụng mã khoá công khai và chữ
điện tử. Tuy thuật toán không chuẩn nhưng được RSA đề xuất. Các chứng nhận X.509 được sử dụng
rộng rãi.
1. Các chứng nhận X.509
Được phát hành bởi Chủ quyền chứng nhận (Certification Authority – CA) bao gồm:
o Các phiên bản 1,2 hoặc 3
o Số sổ (duy nhất với CA) xác định chứng nhận
o Thuật toán xác định chữ ký
- 95 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Xuất bản tên X.500 (CA)
o Chu kỳ hiệu lực (từ-đến ngày)
o Đối tượng của tên X.500 (tên của người sở hữu)
o Đối tượng thông tin khoá công khai (thuật toán, các tham số,khoá)
o Định danh duy nhất xuất bản (phiên bản 2+)
o Định danh duy nhất đối tượng (phiên bản 2+)
o Các trường mở rộng (phiên bản 3)
o Chữ ký (hoặc hash của các trường trong chứng nhận)
Ký hiệu CA<<A>> là chứng nhận cho A được ký bởi CA
2. Nhận chứng nhận
Người sử dụng bất kỳ có thể trao đổi với CA để nhận được chứng nhận. Chỉ CA có thể sửa chứng nhận.
Vì không thể bị giả mạo nên chứng nhận có thể được đặt trong thư mục công cộng.
3. Sơ đồ phân cấp CA
Nếu cả hai người sử dụng chia sẻ chung CA thì họ được giả thiết biết khoá công khai của CA đó.
Ngược lại các CA cần tạo nên đồ phân cấp để trao đổi chứng nhận với nhau. Sử dụng chứng nhận liên
kết các thành viên của đồ để được chứng nhận của các CA khác. Mỗi CA thể gửi tiếp (forward)
các chứng nhận của mình cho clients thể gửi lại (backward) chứng nhận của mình cho cha của nó.
Mỗi client tin tưởng các chứng nhận của cha. thể kiểm chứng chứng nhận bất kỳ của một CA cho
người sử dụng bằng các CA khác trong sơ đồ phân cấp.
4. Sự thu hồi chứng nhận
Giấy chứng nhận chu kỳ sử dụng, thể thu hồi trước thời hạn trong những trường hợp cần thiết như:
khoá riêng của người sử dụng bị lộ, người dùng không tiếp tục được chứng nhận bởi CA đó, Giấy chứng
nhận của CA bị làm hại. Nói chung CA bảo trì danh sách các chứng nhận bị thu hôì (CRL Certificate
Revocation List). Người sử dụng có thể kiểm tra lại các chứng nhận đã bị thu hồi.
5. Các thủ tục xác thực
X.509 bao gồm ba thủ tục xác thực tùy chọn: xác thực một chiều, xác thực hai chiều và xác thực ba chiều.
Mọi thủ tục trên đều sử dụng các chữ ký khoá công khai.
Xác thực một chiều
Một chiều A->B được sử dụng để thiết lập
o Danh tính của A và rằng mẩu tin là từ A
o Mẩu tin được gửi cho B
o Tính toàn vẹn và gốc gác của mẩu tin
Mẩu tin thể bao gồm cả nhãn thời gian, hiệu đặc trưng của mẩu tin (nonce), danh tính của B nó
được ký bởi A. Có thể bao gồm một số thông tin bổ sung cho B như khoá phiên.
Xác thực hai chiều
Hai mẩu tin A->B và B->A được thiết lập, ngoài mẩu tin từ A đến B như trên còn có:
o Danh tính của B và trả lời từ B
o Trả lời này dành cho A
o Tính toàn vẹn và gốc gác của trả lời
Trả lời bao gồm cả hiệu đặc trưng của mẩu tin (nonce) từ A, cả nhãn thời gianhiệu đặc trưng trả
lời từ B. Có thể bao gồm một số thông tin bổ sung cho A.
Xác thực ba chiều
Ba mẩu tin A->B, B->A A->B được thiết lập như trên không đồng hồ đồng bộ. Ngoài 2 chiều
như trên còn trả lời lại từ A đến B chứa bản sao nonce của trả lời từ B, nghĩa các nhãn thời gian
không cần kiểm tra.
X.509 phiên bản 3
Trong phiên bản 3 được bổ sung một số thông tin cần thiết trong giấy chứng nhận như: Email/URL, chi
tiết về đợt phát hành,c ràng buộc sử dụng. Tốt hơn hết đặt tên tường minh cho các cột mới xác định
trong phương pháp mở rộng tổng quát. Các mở rộng bao gồm:
o Danh tính mở rộng
- 96 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Chỉ dẫn tính quan trọng
o Giá trị mở rộng
Các mở rộng xác thực
Khoá và các thông tin đợt phát hành
o Bao trùm thông tin về đối tượng, khoá người phát hành, chỉ thị kiểu phát hành, chứng nhận
Đối tượng chứng nhận và các thuộc tính người phát hành
o Hỗ trợ có tên phụ, định dạng phụ cho các đối tượng và người phát hành
Chứng nhận các ràng buộc phát hành
o Cho phép sử dụng các ràng buộc trong chứng nhận bởi các CA khác
Bài tập
1. Chữ ký điện tử DSA:
Cho p = 23, q = 11, h=3
Tính g
NSA A chọn khoá riêng x
A
= 7, tính khoá công khai của y
A
của A
Cho bản Hash của M là H(M) = 15
Chọn số ngẫu nhiên k = 6
Tính chữ ký điện tử của A: (r, s)
Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M.
2. Chữ ký điện tử DSA:
Cho p = 53, q = 13, h=5
Tính g
NSA A chọn khoá riêng x
A
= 11, tính khoá công khai của y
A
của A
Cho bản Hash của M là H(M) = 17
Chọn số ngẫu nhiên k = 9
Tính chữ ký điện tử của A: (r, s)
Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M.
3. Hãy cho biết các phương pháp phân phối khoá công khai. Và các cách trao đổi công khai khoá
mật giữa hai người sử dụng
4. Nêu sự khác biệt giữa MAC và Hash và nêu tác dụng của chúng. Cho một số ví dụ về các hàm
MAC và Hash.
5. Cho biết HMAC là gì, sử dụng chúng vào mục đích nào.
6. Nêu một số cách tạo và kiểm chứng chữ ký điện tử
7. Chứng minh “Nghịch lý Ngày sinh nhật”, tức là có ít nhất 23 người, thì xác suất để có hai người
trùng ngày sinh nhật sẽ lớn hơn hoặc bằng 0.5.
8. Các hàm số học và logic cơ bản nào dùng trong MD5?
9. Các hàm số học và logic cơ bản nào dùng trong SHA-1?
10. Các hàm số học và logic cơ bản nào dùng trong RIPEMD-160?
11. Trình bày hoạt động của các giao thức xác thực trên mô hình Kerberos.
12. Nêu nội dung dịch vụ xác thực X.509.
- 97 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG VII
AN TOÀN IP VÀ WEB
Trong chương này chúng ta sẽ xét đến cơ chế an toàn IPSec và một số giao thức bảo mật lớp vận
chuyển ứng dụng trên Web.
VII.1 An toàn IP
khá nhiều chế an toàn ứng dụng chuyên biệt như: S/MIME, PGP, Kerberos, SSL/HTTPS. Tuy
nhiên những chế an toàn xuyên suốt nhiều tầng ng dụng n chế an toàn IP được cài
đặt trên mạng cho mọi ứng dụng.
VII.1.1 IPSec
IPSec chế an toàn IP tổng quan. cung cấp: c thực, bảo mật quản trị khoá. IPSec được
dùng trên mạng LAN, mạng WAN riêng và chung và trên cả mạng Internet.
Lợi ích của IPSec
IPSec trên bức tường lửa/router cung cấp an toàn mạnh cho mọi việc truyền qua vành đai. chống
lại việc đi vòng qua bức tường lửa/router.
IPSec nằm tầng vận chuyển bên dưới nên trong suốt với mọi ứng dụng thể trong suốt với
người sử dụng đầu cuối. thể cung cấp an toàn cho người sử dụng riêng biệt bảo vệ kiến trúc
rẽ nhánh.
VII.1.2 Kiến trúc an toàn IP
Đặc tả an toàn IP rất phức tạp, được định nghĩa qua một số chuẩn (RFC): bao gồm RFC
2401/2402/2406/2408 nhiều chuẩn khác được nhóm theo loại. Điều này bắt buộc đối với IP6
và tuỳ chọn với IP4. Có hai mở rộng an toàn cho phần đầu:
Phần đầu xác thực (AH – Authentication Header)
Tải trọng an toàn đóng gói (ESP – Encapsulating Security Payload)
1. Dịch vụ IPSec
IPSec nhằm đạt các mục đích sau: kiểm soát truy cập, toàn vẹn không kết nối, xác thực nguồn gốc dữ
liệu, từ chối tải lại gói (đây một dạng của toàn vẹn liên kết từng phần), bảo mật (mã hoá), bảo mật
luồng vận chuyển có giới hạn.
2. Liên kết an toàn
Quan hệ một chiều giữa người gửi và người nhận mà cung cấp sự an toàn cho luồng vận chuyển và
được xác định bởi 3 tham số
o Chỉ số tham số an toàn
o Địa chỉ IP đích
o Tên của thủ tục an toàn
Ngoài ra có một số các tham số khác như: chỉ số dãy (sequence number), thông tin về phần đầu xác
thực và phần đầu mở rộng AH & EH, thời gian sống. Có lưu trữ cơ sở dữ liệu của các liên kết an toàn.
3. Phần đầu xác thực (Authentication Header - AH)
AH cung cấp sự hỗ trợ cho an toàn dữ liệu và xác thực của các gói IP:
o Hệ thống đầu cuối/chuyển mạch có thể xác thực người sử dụng/ứng dụng
o Ngăn tấn công theo dõi địa chỉ bằng việc theo dõi các chỉ số dãy.
AH dựa trên sử dụng MAC: HMAC–MD5–96 hoặc HMAC – SHA -1-96
Muốn vậy các bên cần chia sẻ khoá mật.
4. Tải trọng an toàn đóng gói (ESP)
ESP đảm bảo bảo mật nội dung mẩu tin luồng vận chuyển giới hạn, lựa chọn cung cấp dịch vụ
xác thực và hỗ trợ phạm vi rộng các mã, các chế độ mã, bộ đệm
o Bao gồm DES, Triple DES, RC5, IDEA, CAST,…
- 98 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o CBC và các chế độ khác
o Bộ đệm cần thiết để lấp đầy các kích thước khối, các trường cho luồng vận chuyển
5. Chế độ vận chuyển và chế độ ống ESP
ESP được sử dụng với 2 chế độ: vận chuyển ống. Trong chế độ ống không cần giữ tường minh địa
chỉ đích.
Chế độ vận tải được sử dụng để mã và tuỳ chọn xác thực dữ liệu IP:
o Dữ liệu được bảo vệ nhưng phần đầu vẫn để rõ để biết địa chỉ đích
o Có thể phân tích vận chuyển một cách hiệu quả
o Tốt đối với ESP máy chủ vận chuyển tới máy chủ
Chế độ ống mã toàn bộ gói IP
o Bổ sung phần đầu mới cho bước nhảy tiếp
o Tốt cho mạng riêng ảo VPN (Virtual Private Network), cổng đến cổng an toàn
6. Kết hợp các liên kết an toàn
Các liên kết an toàn có thể cài đặt qua AH hoặc ESP. Để cài đt cả hai cần kết hợp các liên kết an toàn
o Tạo nên bó các liên kết an toàn
o Có thể kết thúc tại các điểm cuối cùng nhau hoặc khác nhau
o Kết hợp bởi kề vận chuyển và ống lặp
Cần bàn luận về thứ tự xác thực và mã hoá
7. Quản trị khoá
Quản lý sinh khoá và phân phối khoá giữa các bên trao đổi thông tin, thông thường cần hai cặp khoá, 2
khoá trên một hướng cho AH và ESP.
Trong cơ chế Quản trị khoá thủ công, người quản trị hệ thống thiết lập cấu hình cho từng hệ thống.
Trong cơ chế Quản trị khoá tự động:
o Hệ thống tự động dựa vào yêu cầu về khoá cho các liên kết an toàn trong hệ thống lớn.
o Có các thành phần như thủ tục trao đổi khóa Oakley và liên kết an toàn trên mạng
ISAKMP
8. Oakley
Oakley là thủ tục trao đổi khoá, dựa trên trao đổi khoá Diffie-Hellman. Ở đây bổ sung các đặc trưng để
khắc phục các điểm yếu như Cookies, nhóm (tham số tổng thể), các chỉ số đặc trưng (nonces), trao đổi
khoá Diffie Hellman với việc xác thực. thể sử dụng số học trên trường số nguyên tố hoặc đường
cong elip.
9. ISAKMP
ISAKMP liên kết an toàn trên Internet thủ tục quản trị khoá. cung cấp khung để quản khoá,
xác định các thủ tục định dạng gói để thiết lập, thỏa thuận, điều chỉnh xoá các liên kết an toàn
(SA Secure Associations). ISAKMP độc lập với thủ tục trao đổi khoá, thuật toán hoá phương
pháp xác thực
Trao đổi và tải trọng ISAKMP
một số kiểu tải trọng ISAKMP: an toàn, đề xuất, dạng vận chuyển, khoá, định danh, chứng nhận,
hash, chữ ký, nonce và xoá.
ISAKMP có bộ khung cho 5 kiểu trao đổi mẩu tin:cơ sở, bảo vệ định danh, xác thực, tích cực và thông
tin.
VII.2 An toàn Web
VII.2.1 Khái niệm
Web ngày càng được sử dụng rộng rãi bởi các công ty, chính phủ nhân, nhưng Internet Web
có những lỗ hổng lớn và có nhiều mối đe doạ an toàn như:
o Tính toàn vẹn
o Bảo mật
o Từ chối dịch vụ
- 99 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Xác thực
Như vậy cần bổ sung cơ chế bảo mật cho Web.
VII.2.2 SSL (Secure Socket Layer)
SSL là dịch vụ an toàn tầng vận chuyển, ban đầu được phát triển bởi Netscape. Sau đó phiên bản 3 của
được thiết kế cho đầu o công cộng trở thành chuẩn Internet, được biết đến như an toàn tầng
vận chuyển TLS (Transport Layer Security).
SSL sử dụng giao thức TCP để cung cấp dịch vụ đầu cuối đến cuối tin cậy và có 2 tầng thủ tục
VII.2.3 Kiến trúc SSL
Ở đây kết nối SSL là:
o Tạm thời, đầu cuối đến đầu cuối, liên kết trao đổi
o Gắn chặt với 1 phiên SSL
Và phiên SSL:
o Liên kết giữa người sử dụng và máy chủ
o Được tạo bởi thủ tục HandShake Protocol
o Xác định một tập các tham số mã hoá
o Có thể chia sẻ bởi kết nối SSL lặp
1. Dịch vụ thủ tục bản ghi SSL
Dịch vụ thủ tục bản ghi SSL đảm bảo tính toàn vẹn của bản tin:
o Sử dụng MAC với khoá mật chia sẻ
o Giống như HMAC nhưng với bộ đệm khác
và cung cấp bảo mật:
o Sử dụng mã đối xứng với khoá chung xác định bởi thủ tục HandShake.
o IDEA, RC2-40, DES-40, DES, 3DES, Fortezza, RC4-40, RC4-128
o Bản tin được nén trước khi mã
2. Thủ tục thay đổi đặc tả mã SSL (SSL Change Cipher Spec Protocol):
Đây một trong 3 giao thức chuyên biệt của SSL sử dụng thủ tục bản ghi SSL. Đây mẩu tin đơn,
buộc trạng thái treo trở thành hiện thời và cập nhật bộ mã đang dùng
3. Thủ tục nhắc nhở SSL (SSL Alert Protocol)
Truyền đi lời nhắc của SSL liên quan cho thành viên. Nghiêm khắc: nhắc nhở hoặc cảnh báo
Nhắc nhở đặc biệt:
o cảnh báo: mẳu tin không chờ đợi, bản ghi MAC tồi, lỗi giải nén, lỗi Handshake, tham số
không hợp lệ
o Nhắc nhở: đóng ghi chú, không chứng nhận, chứng nhận tồi, chứng nhận không được hỗ
trợ, chứng nhận bị thu hồi, chứng nhận quá hạn, chứng nhận không được biết đến.
Nén và mã như mọi dữ liệu SSL
4. Thủ tục bắt tay SSL (SSL HandShake Protocol)
- 100 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
1.
Thủ tục này cho phép máy chủ và máy trạm:
o Xác thực nhau
o Thỏa thuận thuật toán mã hoá và MAC
o Thỏa thuận khoá mã sẽ dùng
Nó bao gồm một loạt các thông tin:
o Thiết lập các khả năng an toàn
o Xác thực máy chủ và trao đổi khoá
o Xác thực máy trạm và trao đổi khoá
o Kết thúc
5. An toàn tầng vận chuyn
IETF chun RFC 2246 giống như SSLv3.
Với khác biệt nhỏ:
o số ký hiệu kích thước bản ghi
o sử dụng HMAC thay cho MAC
- 101 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o hàm giả ngẫu nhiên tăng độ mật
o có mã ghi chú bổ sung
o có một số thay đổi hỗ trợ mã
o thay đổi kiểu chứng nhận và thỏa thuận
o thay đổi bộ đệm và tính toán mã
Sau đây ta xem xét chi tiết giao thức xác thực người dùng RADIUS và giao thức SSL:
Giao thức RADIUS
RADIUS một dịch vụ dành cho việc xác nhận cho phép người dùng truy cập từ xa qua các thiết bị
như môdem, DSL, cáp mạng hoặc các thiết bị không dây khác. Một site thông thường một máy chủ
truy cập được kết nối o một modem. Một máy chủ dịch vụ RADIUS được kết nối vào mạng như một
dịch vụ xác nhận. Những người dùng từ xa gọi vào máy chủ truy cập, máy chủ sẽ yêu cầu những dịch vụ
xác nhận từ máy chủ dịch vụ RADIUS. Máy chủ dịch vụ RADIUS sẽ xác nhận người dùng cho phép
họ truy cập tài nguyên.Những nhà quản trị mạng tạo ra những hồ sơ về người dùng máy chủ
RADIUS,xác định các quyền hạn cấp cho người dùng từ xa. Những giao thức hỏi đáp được sử dụng trong
suốt quá trình người dùng vào mạng.
Giao thức SSL
Được phát triển bởi Netscape, giao thức SSL đã được sử dụng rộng rãi trên mạng Internet trong việc xác
thực hoá thông tin giữa máy trạm máy chủ. Trong khi SSL thể sử dụng để hỗ trợ các giao
dịch an toàn cho rất nhiều ứng dụng khác nhau trên Internet. SSL không phải một giao thức đơn lẻ,
là một tập các thủ tục đã được chuẩn hoá để thực hiện các nhiệm vụ bảo mật sau:
Xác thực máy chủ: Cho phép người sử dụng xác thực được máy chủ muốn kết nối. Lúc này, phía
browser sử dụng các kỹ thuật hoá công khai để chắc chắn rằng chứng chỉ khoá công cộng
của máy chủ giá trị được cấp phát bởi một CA trong danh sách các CA đáng tin cậy của
máy trạm.
Xác thực máy trạm: Cho phép phía máy chủ xác thực được người sử dụng muốn kết nối. Phía máy
chủ cũng sử dụng các kỹ thuật hoá công khai để kiểm tra xem chứng chỉ khoá công cộng
của máy chủ giá trị hay không được cấp phát bởi một CA trong danh sách c CA đáng tin
cậy không.
hoá kết nối: Tất cả các thông tin trao đổi giữa máy trạm máy chủ được hoá trên đường
truyền nhằm nâng cao khả năng bảo mật.
Hoạt động của SSL
Giao thức SSL hoạt động dựa trên hai nhóm con giao thức giao thức “bắt tay” giao thức “bản ghi”.
Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng nhu cầu trao đổi thông tin hoặc dữ
liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoátruyền tin hai chiều giữa hai đối
tượng đó.Giao thức SSL “bắt tay” sẽ sử dụng SSL “bản ghi” để trao đổi một số thông tin giữa máy chủ
máy trạm vào lần đầu tiên thiết lập kết nối SSL.
Một giao dịch SSL thường bắt đầu bởi quá trình “bắt tay” giữa hai bên. Các bước trong quá trình “bắt tay”
có thể như sau:
1. Máy trạm sẽ gửi cho máy chủ số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ
liệu được tạo ra ngẫu nhiên (chữ số) một số thông tin khác máy chủ cần để thiết lập kết
nối với máy trạm
2. Máy chủ gửi cho máy trạm số phiên bản SSL đang dùng, các tham số của thuật toán hoá, dữ
liệu được tạo ra ngẫu nhiên và một số thông tin khác mà máy trạm cần để thiết lập kết nối với máy
- 102 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
chủ. Ngoài ra máy chủ cũng gửi chứng chỉ của nó đến máy trạm yêu cầu chứng chỉ của máy
trạm nếu cần.
3. Máy trạm sử dụng một số thông tin máy chủ gửi đến để c thực máy chủ. Nếu như máy chủ
không được xác thực thì người sử dụng sẽ được cảnh báo và kết nối không được thiết lập. Còn nếu
như xác thực được máy chủ thì phía máy trạm sẽ thực hiện tiếp bước 4.
4. Sử dụng tất cả các thông tin được tạo ra trong giai đoạn bắt tay ở trên, máy trạm (cùng với sự cộng
tác của máy chủ phụ thuộc vào thuật toán được sử dụng) sẽ tạo ra premaster secret cho phiên
làm việc, hoá bằng khoá công khai máy chủ gửi đến trong chứng chỉ bước 2, gửi đến
máy chủ.
5. Nếu máy chủ yêu cầu xác thực máy trạm, thì phía máy trạm sẽ đánh dấu o phần thông tin
riêng chỉ liên quan đến quá trình “bắt tay” này hai bên đều biết. Trong trường hợp này, máy
trạm sẽ gửi cả thông tin được đánh dấu chứng chỉ của mình cùng với premaster secret đã được
mã hoá tới máy chủ.
6. Máy chủ s xác thực máy trạm. Trường hợp máy trạm không được xác thực, phiên làm việc sẽ bị
ngắt. Còn nếu máy trạm được c thực thành công, máy chủ sẽ sử dụng khoá mật để giải
premaster secret, sau đó thực hiện một số bước để tạo ra master secret.
7. Máy trạm và máy chủ sẽ sử dụng master secret để tạo ra các khoá phiên , đó chính các khoá đối
xứng được sử dụng để hoá giải các thông tin trong phiên làm việc kiểm tra tính toàn
vẹn dữ liệu.
8. Máy trạm sẽ gửi một lời nhắn đến máy chủ thông báo rằng các thông điệp tiếp theo sẽ được
hoá bằng khoá phiên. Sau đó gửi một lời nhắn đã được hoá để thông báo rằng phía máy
trạm đã kết thúc giai đoạn “bắt tay”.
9. Máy chủ cũng gửi một lời nhắn đến máy trạm thông báo rằng các thông điệp tiếp theo sẽ được
hoá bằng khoá phiên. Sau đó gửi một lời nhắn đã được hoá để thông báo rằng máy chủ đã
kết thúc giai đoạn “bắt tay”.
10. Lúc này giai đoạn “bắt tay” đã hoàn thành, phiên làm việc SSL bắt đầu. Cả hai phía máy trạm
máy chủ sẽ sử dụng các khoá phiên để hoá giải thông tin trao đổi giữa hai bên,
kiểm tra tính toàn vẹn dữ liệu
VII.3 Thanh toán điện tử an toàn
VII.3.1 Yêu cầu
Đây mở và đặc tả an toàn nhằm bảo vệ thanh toán thẻ tín dụng trên Internet. được phát triển
năm 1996 bởi Master, Visa Card và không phải hệ thống trả tiền. Thanh toán điện tử an toàn là tập các
giao thức và định dạng an toàn dùng để
o Trao đổi an toàn giữa các đối tác
o Tin tưởng vì sử dụng X509v3
o Riêng biệt vì hạn chế thông tin cho người cần
Các thành phần Thanh toán điện tử
- 103 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VII.3.2 Thanh toán điện tử an toàn
1. Người mua mở tài khoản
2. Người mua nhận được chứng nhận
3. Người bán có chứng nhận của họ
4. Người mua đặt hàng
5. Người bán được kiểm chứng
6. Đơn đặt hàng và trả tiền được gửi
7. Người bán yêu cầu giấy phép trả tiền
8. Người bán duyệt đơn đặt hàng
9. Người bán cung cấp hàng và dịch vụ
10. Người bán yêu cầu trả tiền
VII.3.3 Chữ ký kép
Người mua tạo chữ ký kép
o Thông tin đơn đặt OI cho người bán
o Thông tin trả tiền PI cho ngân hàng
Không bên nào biết chi tiết của người khác. Nhưng cần phải biết là họ được kết nối với nhau. Sử dụng
chữ ký kép cho mục đích này
o Ký trên bản ghép của OI và PI
VII.3.3 Yêu cầu trả tiền
Trao đổi yêu cầu trả tiền gồm 4 mẩu tin sau
1. Khởi tạo yêu cầu - nhận chứng nhận
2. Khởi tạo trả lời – ký trả lời
3. Yêu cầu trả tiền - của OI và PI
4. Trả lời trả tiền – đơn phúc đáp
VII.3.4 Yêu cầu trả tiền – người mua
VII.3.5 Yêu cu tr tin ngưi bán
- 104 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
1. Kiểm tra chứng nhận người giữ thẻ bằng chữ ký của CA
2. Kiểm tra chữ ký kép bằng cách sử dụng khoá chữ ký công khai của người mua để tin tưởng
rằng đơn không bị giả mạo khi truyền và được ký sử dụng chữ ký khoá riêng của người giữ
thẻ.
3. Xử lý đơn đặt và gửi tiếp thông tin trả tiền cho cổng trả tiền để xác thực (mô tả sau)
4. Gửi phản hồi trả tiền cho người giữ thẻ
VII.3.6 Giấy phép cổng trả tiền
1. Kiểm chứng mọi chứng nhận
2. Giải mã phong bì điện tử của khối giấy phép và nhận được khoá đối xứng, sau đó giải mã khối
giấy phép
3. Kiểm tra chữ ký của người bán trên khối giấy phép
4. Giải mã phong bì điện tử khối trả tiền, nhận được khoá đối xứng, sau đó giải mã khối trả tiền
5. Kiểm tra chữ ký kép trên khối trả tiền
6. Kiểm tra rằng, thanh toán ID nhận được từ người bán phù hợp với danh tính trong PI nhận
được (không trực tiếp) từ người bán
7. Yêu cầu và nhận được giấy phép từ nơi phát hành
8. Gửi trả lời giấy phép cho người bán
VII.3.7 Nhận trả tiền
Người bán gửi cho cổng trả tiền yêu cầu nhận trả tiền. Cổng kiểm tra yêu cầu đó. Sau đó yêu cầu
chuyển tiền đến tài khoản người bán. Thông báo cho người bán và chờ trả lời việc nhận.
VII.4 An toàn thư điện tử
Thư điện tử một trong những dịch vụ mạng được coi trọng ứng dụng rộng rãi nhất. Đồng thời nội
dung của các mẩu tin không an toàn. thể bị quan sát trên đường truyền hoặc bởi những người thẩm
quyền thích hợp ở hệ thống đầu cuối.
Nâng cao an toàn thư điện tử mục đích quan trọng của mọi hệ thống trao đổi thư. đây phải đảm bảo
các yêu cầu sau: tính bảo mật nội dung tin gửi, xác thực người gửi mẩu tin, tính toàn vẹn của mẩu tin, hơn
nữa bảo vệ khỏi bị sửa, tính chống từ chối gốc, chống từ chối của người gửi.
- 105 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VII.4.1 Dịch vụ PGP.
PGP (Pretty Good Privacy) một dịch vụ về bảo mật xác thực được sử dụng rộng rãi cho chuẩn an
toàn thư điện tử. PGP được phát triển bởi Phil Zimmermann. đây lựa chọn các thuật toán hoá tốt
nhất để dùng, tích hợp thành một chương trình thống nhất, có thể chạy trên Unix, PC, Macintosh và các hệ
thống khác. Ban đầu miĩen phí, bây giờ các phiên bản thương mại. Sau đây chúng ta xem xét hoạt
động của PGP
Thao tác PGP – xác thực
Người gửi tạo mẩu tin, sử dụng SHA-1 để sinh Hash 160 bit của mẩu tin, ký hash với RSA sử dụng khoá
riêng của người gửi và đính kèm vào mẩu tin.
Người nhận sử dụng RSA với khoá công khai của người gửi để giải khôi phục bản hash. Người
nhận kiểm tra mẩu tin nhận sử dụng bản hash của nó và so sánh với bản hash đã được giải mã.
Thao tác PGP – bảo mật
Người gửi tạo mẩu tin số ngẫu nhiên 128 bit như khoá phiên cho nó, hoá mẩu tin sử dụng CAST-
128/IDEA /3DES trong chế độ CBC với khoá phiien đó. Khoá phiên được sử dụng RSA với khoá
công khai người nhận và đính kèm với mẩu tin.
Người nhận sdụng RSA với khoá riêng để giải khôi phục khoá phiên. Khoá phiên được sử dụng
để giải mã mẩu tin.
Thao tác PGP - Bảo mật và xác thực
thể sử dụng cả hai dịch vụ trên cùng một mẩu tin. Tạo chữ đính vào mẩu tin, sau đó cả mẩu
tin và chữ ký. Đính khoá phiên đã được mã hoá RSA/ElGamal.
Thao tác PGP – nén
Theo mặc định PGP nén mẩu tin sau khi ký nhưng trước khi mã. Như vậy cần lưu mẩu tin chưa nén và
chữ ký để kiểm chứng về sau. Vì rằng nén là không duy nhất. Ở đây sử dụng thuật toán nén ZIP.
Thao tác PGP – tương thích thư điện tử
Khi sử dụng PGP sẽ dữ liệu nhị phân để gửi (mẩu tin được mã). Tuy nhiên thư điện tử thể thiết kế
chỉ cho văn bản. vậy PGP cần dữ liệu nhị phân thô vào các tự ASCII in được. Sau đó sử dụng
thuật toán Radix 64, ánh xạ 3 byte vào 4 tự in được bổ sung kiểm tra thừa quay vòng CRC để phát
hiện lỗi khi truyền. PGP sẽ chia đoạn mẩu tin nếu nó quá lớn.
Tóm lại, cần khoá phiên cho mỗi mẩu tin, kích thước khác nhau: 56 bit DES, 128 bit CAST hoặc
IDEA, 168 bit Triple – DES, được sinh ra sử dụng dữ liệu đầu vào ngẫu nhiên lấy từ sử dụng trước và thời
gian gõ bàn phím của người sử dụng
- 106 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Khoá riêng và công khai của PGP
nhiều khoá riêng khoá công khai thể được sử dụng, nên cần phải xác định i o được
dùng để khoá phiên trong mẩu tin. thể gửi khoá công khai đầy đủ với từng mẩu tin. Nhưng đều đó
là không đủ, vì cần phải nêu rõ danh tính của người gửi. Do đó có thể sử dụng định danh khoá để xác định
người gửi. ít nhất 64 bit ý nghĩa của khoá duy nhất, thể sử dụng định danh của khoá trong
chữ ký.
- 107 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
PGP Message Format
Các chùm khoá PGP
Mỗi người sử dụng PGP một cặp chùm khoá. Chùm khoá công khai chứa mọi khoá công khai của các
người sử dụng PGP khác được người đó biết được đánh số bằng định danh khoá (ID key). Chùm khoá
riêng chứa các cặp khoá công khai/riêng của người đó được đánh số bởi định danh khoá của khoá
lấy từ giai đoạn duyệt hash. An toàn của khoá công khai như vậy phụ thuộc vào độ an toàn của giai đoạn
duyệt.
Sinh mẩu tin PGP
Sơ đồ sau mô tả qui trình sinh mẩu tin PGP để gửi cho người nhận.
Nhận mẩu tin PGP
Sơ đồ sau nêu cách người nhận giải mã, kiểm chứng thông tin để đọc mẩu tin.
- 108 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Quản lý khoá PGP
Tốt hơn hết dựa vào chủ quyền chứng nhận. Trong PGP mỗi người sử dụng một CA của mình. thể
khoá cho người sử dụng anh ta biết trực tiếp. Tạo thành “Web của niềm tin”. Cần tin cậy khóa đã
được ký, và tin cậy các khoá mà các người khác ký khi dùng một dây chuyền các chữ ký đến nó.
Chùm khoá chưá cả các chỉ dẫn tin cậy. Người sử dụng có thể thu hồi khoá của họ
VII.4.2 Mở rộng thư Internet đa mục đích/an toàn S/MIME
Tăng cường an toàn cho thư điện tử đa mục đích mở rộng MIME (Multipurpose Internet Mail Extension).
Thư điện tử Internet RFC822 gốc chỉ có văn bản, MIME cung cấp hỗ trợ cho nhiều kiểu nội dung mẩu
tin có nhiều phần với mã hoá dữ liệu nhị phân thành dạng văn bản.
S/MIME tăng cường tính an toàn, hỗ trợ của S/MIME trong nhiều tác nhân thư điện tử như MS
Outlook, Mozilla, Mac Mail, …
Các chức năng S/MIME
Dữ liệu đóng phong bì, nội dung được mã hoá và liên kết khoá, dữ liệu được ký, mẩu tin được mã và ký
sau nén, dữ liệu rõ ràng được ký, mẩu tin tường minh và mã hoá ch ữ ký trên bản nén, dữ liệu đóng phong
bì và ký, lồng nhau các th ực th ể ký và mã.
Các thuật toán mã hoá S/MIME
Các chữ điện tử DSS RSA, các hàm hash: SHA-1 MD5, khoá phiên: Elgamal & RSA, mã
mẩu tin: AES, Triple-DES, RC2/40, …;MAC: HMAC với SHA-1.
Có quá trình để đối thoại quyết định sử dụng thuật toán nào.
Các mẩu tin S/MIME
S/MIME bảo vệ các thực thể MIME với chữ ký, mã hoặc cả hai tạo thành các đối tượng đóng gói MIME.
Có phạm vi các kiểu nội dung khác nhau: dữ liệu đóng phong bì, dữ liệu được ký, dữ liệu rõ ràng được ký,
yêu cầu đăng ký, chứng nhận mẩu tin.
Quá trình chứng nhận S/MIME
S/MIME sử dụng chứng nhận X.509 phiên bản 3. Quản trị việc sử dụng kết hợp đồ phân cấp CA của
X.509 Web niềm tin của PGP. Mỗi client một danh sách các giấy chứng nhận cho CA tin cậy
các giấy chứng nhận và cặp khoá công khai/riêng của mình. Chứng nhận cần được ký bởi các CA tin cậy.
Chủ quyền chứng nhận CA (Certificate Authorities)
- 109 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
một số CA mọi người đều biết. Verisign một CA được sử dụng rộng rãi. Verisign xuất bản một số
kiểu định danh điện tử. Tăng mức kiểm tra và kéo theo độ tin cậy.
Bài tập
1. Nêu mục đích IPSec, các tham số, AH và ESP
2. Nêu mục đích SSL và TLS. Trình bày kiến trúc và nhiệm vụ của các thành phần của chúng.
3. Thế nào là thanh toán điện tử an toàn
4. Nêu yêu cầu của chữ ký kép và chứng tỏ chữ ký kép trong thanh toán điện tử an toàn đáp ứng
các yêu cầu đó.
5. Nêu qui trình thanh toán điện tử an toàn, chứng tỏ nó đáp ứng được các yêu cầu an toàn đề ra.
6. Nêu các yêu cầu bảo mật, xác thực, chữ ký điện tử của hệ thống thư địên tử.
7. Trình bày giải pháp đề xuất của PGP cho hệ thống thư điện tử.
8. Tìm hiểu xác thực cở bản HTTP trong Internet Explorer.
- 110 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CHƯƠNG VIII
KẺ XÂM NHẬP, PHẦN MỀM CÓ HẠI VÀ BỨC TƯỜNG LỬA
VIII.1 Kẻ xâm nhập
VIII.1.1 Khái niệm
Vấn đề quan trọng đối với hệ thống mạng là chống lại việc truy cập không mong muốn qua mạng máy
tính lớn hoặc cục bộ. Chúng ta có thể phân loại kẻ xâm nhập như sau:
o Kẻ giả danh
o Kẻ lạm quyền
o Người sử dụng giấu mặt
Có nhiều mức độ khả năng khác nhau xâm nhập khác nhau. Rõ ràng vấn đề trên được công khai và trở
nên bức xúc
o Từ Wily Hacker” trong năm 1986/1987
o đến việc tăng nhanh các đội ứng cứu tình trạng khẩn cấp của máy tính
Với độing cứu thể cảm thấy bình an nhưng đòi hỏi các nguồn chi bổ sung để phát triển duy trì
hoạt động. Kẻ xâm nhập có thể sử dụng các hệ thống làm hại để tấn công.
VIII.1.2 Các kỹ thuật xâm phạm
Mục tiêu của kẻ xâm nhập dành quyền truy cập hoặc tăng quyền trong hệ thống. Các phương pháp
tấn công cơ bản bao gồm
o Tìm mục tiêu và thu thập thông tin
o Truy cập ban đầu
o Leo thang quyền
o Lần vết khôi phục
Mục tiêu chính là giành được mật khẩu và sau đó dùng quyền truy cập của người sở hữu.
VIII.1.3 Đoán mật khẩu
Đoán mật khẩu một trong các hướng tấn công chung nhất. Kẻ tấn công đã biết tên người sử dụng
đăng nhập (từ trang email/web) và tìm cách đoán mật khẩu.
o Mặc định, mật khẩu ngắn, tìm kiếm các từ chung
o Thông tin của người dùng (thay đổi tên, ngày sinh, số điện thoại, các mối quan tâm và từ
chung)
o Tìm kiếm tổng thể mọi khả năng của mật khẩu
Kẻ xâm nhập kiểm tra đăng nhập với tệp mật khẩu đánh cắp được. Sự thành công của việc đoán mật
khẩu phụ thuộc vào mật khẩu được chọn bởi người dùng. Tổng quan chỉ ra rằng nhiều người sử dụng
chọn mật khẩu không cẩn thận.
Nắm bắt mật khẩu
Tấn công khác bao gồm nắm bắt mật khẩu
o Theo dõi qua vai khi nhập password
o Sử dụng chương trình ngựa thành Toroa để thu thập
o Theo dõi login mạng không an toàn, chẳng hạn Telnet, FTP, Web, email.
o Chắt lọc thông tin ghi lại được sau lần o mạng thành công (đệm/lịch sử web, số quay
cuối,…)
o Sử dụng login/password đúng để nhại lại người sử dụng
Người sử dụng cần được học để dùng các biện pháp đề phòng và ngăn ngừa thích hợp.
- 111 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.1.4 Phát hiện xâm nhập
Chắc chắn có lỗi an toàn ở đâu đó. Như vậy để phát hiện xâm nhập cần phải
o Chia khối để phát hiện nhanh
o Hành động ngăn chặn
o Thu thập thông tin để tăng cường an toàn
Giả thiết rằng kẻ xâm nhập sẽ hành động khác so với người dùng hợp pháp
o Nhưng sẽ có sự khác biệt nhỏ giữa họ
1. Các cách tiếp cận phát hiện xâm nhập
Phát hiện thống kê bất thường
o Vượt qua ngưỡng thống kê nào đó
o Dựa trên mô tả
Dựa trên qui tắc
o Hành động bất thường
o Định danh thâm nhập
2. Kiểm tra các bản ghi
Công cụ cơ bản để phát hiện xâm nhập là kiểm tra bản ghi đơn giản
o Một phần của hệ điều hành đa người sử dụng
o Sẵn sàng để sử dụng
o Có thể không có thông tin trong định dạng mong muốn
Tiến hành kiểm tra các bản ghi chuyên dùng để phát hiện
o Được tạo chuyên dùng để thu thập một số thông tin mong muốn
o Trả giá chi phí bổ sung trong hệ thống
3. Phát hiện thống kê bất thường
Phát hiện ngưỡng
o Đếm sự xuất hiện của sự kiện đặc biệt theo thời gian
o Nếu vượt quá giá trị nào đó thì cho là đã có xâm nhập
o Nếu chỉ dùng nó thì đây là phát hiện thô không hiệu quả
Dựa trên mô tả
o Đặc trưng hành vi quá khứ của người sử dụng
o Phát hiện hệ quả quan trọng từ đó
o Mô tả bằng nhiều tham số
4. Phân tích kiểm tra bản ghi
Đây là cơ sở của cách tiếp cận thống kê. Phân tích bản ghi để nhận được các số đo theo thời gian
o Số đếm, đo, thời gian khoảng, sử dụng nguồn
Sử dụng các kiểm tra khác nhau trên số liệu phân tích để xác định hành vi hiện tại chấp nhận được
không
o Tính kỳ vọng, phương sai, biến nhiều chiều, quá trình Markov, chuỗi thời gian, thao tác
Ưu điểm chính là không sử dụng kiến thức biết trước
5. Phát hiện xâm nhập dựa trên qui tắc
Quan sát các sự kiện trong hệ thống và áp dụng các qui tắc để quyết định hoạt động đó có đáng nghi
ngờ hay không. Phát hiện bất thường dựa trên qui tắc
o Phân tích các bản ghi kiểm tra cũ để xác định mẫu sử dụng và qui tắc tự sinh cho chúng
o Sau đó quan sát hành vi hiện tại và sánh với các qui tắc để nhận thấy nếu nó phù hợp
o Giống như phát hiện thống kê bất thường không đòi hỏi kiến thức biết trước về sai lầm an
toàn
Định danh sự thâm nhập dựa vào qui tắc
o Sử dụng công nghệ hệ chuyên gia
o Với qui tắc định danh sự xâm nhập đã biết, các mẫu điểm yếu, hoặc các hành vi nghi ngờ
o So sánh các bản ghi kiểm tra hoặc các trạng thái theo qui tắc
- 112 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Qui tắc được sinh bởi các chuyên gia nhũng người đã phỏng vấn và hệ thống kiến thức của
các quản trị an toàn
o Chất lượng phụ thuộc vào cách thức thực hiện các điều trên
Ảo tưởng dựa trên tỷ lệ
o Thực tế phát hiện xâm nhập hệ thống cần phát hiện tỷ lệ xâm nhập đúng với rất ít cảnh báo
sai
Nếu rất ít sự xâm nhập được phát hiện -> an toàn không tốt
Nếu rất nhiều cảnh báo sai -> bỏ qua/phí thời gian
o Điều đó rất khó thực hiện
o Các hệ thống tồn tại hình như không có các bản ghi tốt
Phát hiện xâm nhập phân tán
o Truyền thống thường tập trung hệ thống đơn lẻ
o Nhưng thông thường có các hệ thống máy tính
o Bảo vệ hiệu quả cần làm việc cùng nhau để phát hiện xâm nhập
o Các vấn đề
Làm việc với nhiều định dạng bản ghi kiểm tra khác nhau
Toàn vẹn và bảo mật dữ liệu trên mạng
Kiến trúc tập trung và phân tán
Sử dụng bình mật ong
o Chăng lưới thu hút các kẻ tấn công
Tách khỏi sự truy cập đến các hệ thống then chốt
Để thu thập các thông tin về hoạt động của chúng
Kích thích kẻ tấn công ở lại trong hệ thống để người quản trị có thể phán đoán
o Được cấp đầy đủ các thông tin bịa đặt
o Được trang bị để thu thập chi tiết thông tin về hoạt động của kẻ tấn công
o Hệ thống mạng đơn và lặp
VIII.1.5 Quản trị mật khẩu
o Là bảo vệ tuyến đầu chống kẻ xâm nhập
o Người sử dụng được cung cấp cả hai:
Login – xác định đặc quyền của người sử dụng
Password – xác định danh tính của họ
o Passwords thường được lưu trữ mã hoá
Unix sử dụng DES lặp
Các hệ thống gần đây sử dụng hàm hash
o Cần phải bảo vệ file passwords trong hệ thống
Tìm hiểu về mật khẩu
o Purdue 1992 – có nhiều mật khẩu ngắn
o Klein 1990 – có nhiều mật khẩu đoán được
o Kết luận là người sử dụng thường chọn các mật khẩu không tốt
o Cần một cách tiếp cận để chống lại điều đó
Tạo mật khẩu - cần giáo dục cách tạo mật khẩu
o Cần có chính sách và giáo dục người sử dụng
o Giáo dục tầm quan trọng của mật khẩu tốt
o Cho định hướng mật khẩu tốt
độ dài tối thiểu > 6
đòi hỏi trộn chữ hoa và chữ thường, số và dấu chấm
không chọn từ trong từ điển
o Nhưng nên chọn sao cho nhiều người không để ý
- 113 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Tạo mật khẩu – máy tính tự sinh
o Cho máy tính tự tạo mật khẩu
o Nếu ngẫu nhiên không dễ nhớ, thì sẽ viết xuống (hội chứng nhãn khó chịu)
o Ngay cả phát âm được cũng không nhớ
o Có câu chuyện về việc chấp nhận của người sử dụng tồi
o FIPS PUB 181 là một trong những bộ sinh tốt nhất
Có cả mô tả và code ví dụ
Sinh từ việc ghép ngẫu nhiên các âm tiết phát âm được
Tạo mật khẩu - kiểm tra trước
o Cách tiếp cận hưá hẹn nhất để có thể cải thiện an toàn mật khẩu
o Cho phép người sử dụng chọn trước mật khẩu của mình
o Nhưng để cho hệ thống kiểm chứng xem nó có chấp nhận được không
Bắt buộc theo qui tắc đơn giản
So sánh với từ điển các mật khẩu tồi
Sử dụng mô hình thuật toán Markov hoặc bộ lọc để chống các cách chọn tồi
VIII.2 Phần mềm có hại
VIII.2.1 Các kiểu phần mềm có hại khác ngoài Virus
Virus máy tính đã được công bố rất nhiều, là một trong những phần mềm có hại. Tác động của nó mọi
người đều biết, đã được nêu trong các báo cáo, viễn tưởng phim ảnh, gây nhiều chú ý hơn tán
thưởng và được quan tâm nhiều để phòng chống.
1. Cửa sau hoặc cửa sập
Điểm vào chương trình mật, cho phép những người biết truy cập bỏ qua các thủ tục an toàn
thông thường. Kỹ thuật này thể được sử dụng chung bởi những người phát triển mối đe doạ
khi để trong chương trình sản phẩm cho phép khai thác bởi các kẻ tấn công. Rất khó ngăn chặn trong
hệ điều hành, đòi hỏi sự phát triển và cập nhật phần mềm tốt.
2. Bom logic
Đây một trong những phần mềm hại kiểu cổ, code được nhúng trong chương trình hợp pháp. Nó
được kích hoạt khi gặp điều kiện xác định
o Có mặt hoặc vắng mặt một số file
o Ngày tháng/thời gian cụ thể
o Người sử dụng nào đó
Khi được kích hoạt thông thường nó làm hỏng hệ thống
o Biến đổi/xoá file/đĩa, làm dừng máy,…
3. Ngựa thành Tơ roa
Chương trình với các tác động phụ được dấu kín, mà thông thường rất hấp dẫn như trò chơi hoặc phần
mềm nâng cấp. Khi chạy thực hiện những nhiệm vụ bổ sung, cho phép kẻ tấn công gián tiếp dành
quyền truy cập họ không thể trực tiếp. Thông thường sử dụng lan truyền virrus/sâu (worm) hoặc
cài đặt cửa sau hoặc đơn giản phá hoại dữ liệu.
4. Zombie
Đây chương trình mật điều khiển máy tính của mạng khác sử dụng để gián tiếp tiến hành
các tấn công. Thông thường sử dụng để khởi động tấn công từ chối các dịch vụ phân tán (DdoS). Khai
thác các lỗ hổng trong các hệ thống.
VIII.2.2 Virus
Virus là đoạn code tự sinh lặp đính kèm với code khác như virus sinh học. Cả hai đều lan truyền tự nó
và mang đi bộ tải
o Mang theo code để tạo các bản sao của chính nó
o Và cũng như mọi code nó cũng thực hiện nhiệm vụ ngầm nào đó
Thao tác của virus
- 114 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Các giai đoạn của virus
o Nằm im - chờ sự kiện kích hoạt
o Lan truyền – lặp sinh ra chương trình/đĩa
o Kích hoạt - bởi sự kiện để thực hiện bộ tải
o Thực hiện bộ tải
o Cụ thể thông thường mang tính chất chuyên biệt của các máy và hệ điều hành. Nó khai thác
các tính chất và điểm yếu
Cấu trúc Virus
program V :=
{goto main;
1234567;
subroutine infect-executable := {loop:
file := get-random-executable-file;
if (first-line-of-file = 1234567) then goto loop
else prepend V to file; }
subroutine do-damage := {whatever damage is to be done}
subroutine trigger-pulled := {return true if condition holds}
main: main-program := {infect-executable;
if trigger-pulled then do-damage;
goto next;}
next:
}
Các kiểu Virus
Có thể phân loại dựa trên kiểu tấn công
o Virus ăn bám
o Virus cư trú ở bộ nhớ
o Virus ở sector khởi động
o Lén lút
o Virus nhiều hình thái
o Virus biến hoá
1. Marco Virus
Marco code đính kèm file dữ liệu, được dịch bởi chương trình sử dụng file
o Như marco của Word/Excel
o Sử dụng lệnh tự động và lệnh marco
Đây là đoạn code là độc lập với nền tảng, là đoạn nguồn chính của sự lan nhiễm virus. Có sự khác biệt
không ràng giữa dữ liệu file chương trình, thông thường sự thoả hiệp truyền thống: “dễ dàng
sử dụng” và “an toàn”. Đã có sự cải thiện an toàn trong Word, không trội hơn sự đe doạ của virus.
2. Virus email
Đây loại virus lan truyền sử dụng email được đính kèm chứa marco virus như Melissa. Thường
được kích hoạt khi người sử dụng mở file đính kèm hoặc ít khi hơn khi mail được xem sử dụng một
tính chất script của tác nhân mail. Do đó sẽ lan truyền rất nhanh, thông thường đích tác nhân mail
Microsoft Outlook hoặc tài liệu Word /Excel. Cần an toàn ứng dụng và hệ điều hành tốt hơn
3. Sâu
Đây là chương trình sinh lặp nhưng không có tác động, thường lan truyền trên mạng
o Như sâu Internet Morris 1988
o Dẫn đến việc tạo ra các đội ứng cứu khẩn cấp máy tính CERT
o Dùng đặc quyền phân tán hoặc khai thác các điểm yếu hệ thống
- 115 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Được sử dụng rộng rãi bởi Hackers để tạo zombie PC, kéo theo sử dụng các tấn công khác,
đặc biệt từ chối dich vụ DoS
Vấn đề chính là mất sự an toàn của hệ thống kết nối thường xuyên như PC.
Thao tác của sâu
Các giai đoạn của sâu giống như virus:
o Nằm im
o Lan truyền
Tìm hệ thống khác để tác động
Thiết lập kết nội với hệ thống đích từ xa
Tự sinh lặp mình cho hệ thống từ xa
o Kích hoạt
o Thực hiện
4. Sâu Morrris
Sâu Morris là loại sâu cổ điển, được tạo bởi Robert Morris vào 1988, nhằm tới các hệ thống Unix. Ở
đây sử dụng một số kỹ thuật lan truyền, như
o Phá mật khẩu đơn giản trong file mật khẩu cục bộ
o Khai thác lỗ hổng
o Tìm lỗi cửa sập trong hệ thống mail
Mọi tấn công thành công sẽ sinh lặp nó.
5. Tấn công của sâu đương thời
Làn sóng tấn công của sâu đương thời mới từ giữa 2001 như:
- Code Red - sử dụng lỗ hổng MS IIS:
o Thử IP ngẫu nhiên cho hệ thống chạy IIS
o Có kích hoạt thời gian cho tấn công từ chối dịch vụ
o Làn sóng thứ hai tác động đến 360000 máy chủ trong vòng 14 giờ
- Code Red 2 – cài đặt cửa sập
- Nimda – cơ chế tác động lặp
- SQL Slammer – đã tấn công máy chủ MS SQL
- Sobig – đã tấn công máy chủ proxy mở
- Mydoom – sâu email có số lượng lớn và có cửa sau
6. Công nghệ sâu
Các đặc tính của công nghệ sâu là tấn công đa nền tảng, khai thác nhiều chiều, lan truyền cực nhanh,
có nhiều kiểu tác động, biến hoá, cơ động và khai thác zero day.
7. Các biện pháp chống Virus
Biện pháp tốt nhất là ngăn ngừa, nhưng nói chung là không thể. Do đó
cần phải có một trong nhiều biện pháp sau:
o Phát hiện virus nhiễm trong hệ thống
o Định danh loại virus nhiễm
o Loại bỏ khôi phục hệ thống về trạng thái sạch
8. Phần mềm chống Virus
Phần mềm thuộc thế hệ đầu tiên
o Quét sử dụng chữ ký của virus để định danh
o Hoặc phát hiện sự thay đổi độ dài của chương trình
Phần mềm thuộc thế hệ thứ hai
o Sử dụng các qui tắc trực quan để phát hiện nhiễm virus
o Sử dụng mã hash của chương trình để phát hiện sự thay đổi
Phần mềm thuộc thế hệ thứ ba
o Chương trình thường trú trong bộ nhớ định danh virus theo hành động
- 116 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Phần mềm thuộc thế hệ thứ tư
Đóng gói với rất nhiều kiểu kỹ thuật chống virus
Quét và lần vết tích cực, kiểm soát truy cập
Phương pháp diệt bằng tay vẫn được dùng.
9. Kỹ thuật chống Virus nâng cao
Giải mã mẫu
o Sử dụng mô phỏng CPU kiểm tra chương trình, chữ ký và hành vi trước khi chạy chúng
Dùng Hệ thống miễn dịch số (IBM)
o Hành động đa muc tiêu và chống Virus
o Mọi virus nhập vào tổ chức được nắm bắt, phân tích, phát hiện/tấm chắn tạo ra chống nó và
loại bỏ
Sau đây là sơ đồ Hệ miễn dịch số (Digital Immune System)
VIII.2.3 Phần mềm ngăn chặn hành vi
Các phần mềm này được tích hợp với hệ điều hành của máy chủ.
Chương trình theo dõi các hành vi trong thời gian thực
o Chẳng hạn truy cập file, định dạng đĩa, các chế độ thực hiện, thay đổi tham số hệ thống,
truy cập mạng
Đối với các hành động có khả năng có hại
o Nếu phát hiện thì ngăn chặn, chấm dứt hoặc tìm kiếm
Có ưu điểm so với quét, nhưng code có hại chạy trước khi phát hiện.
1. Tấn công từ chối dịch vụ từ xa
Tấn công từ chối dịch vụ từ xa (DDoS) tạo thành đe dọa đáng kể, làm cho hệ thống trở nên không sẵn
sàng, làm tràn bởi sự vận chuyển vô ích.
Kẻ tấn công thường sử dụng một số lớn các “zombies”, tăng độ khó của các tấn công.
Công nghệ bảo vệ tìm các biện pháp đương đầu chống lại
- 117 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Tìm hiểu cách kẻ thù xây dựng mạng lưới tấn công từ chối dịch vụ từ xa
Từ chối dịch vụ có hiệu lực khi bị nhiễm rất nhiều “zombies”. Để thực hiện được điều đó cần có:
- Phần mềm cài đặt tấn công từ chối dịch vụ từ xa
- Các lỗ hổng không vá được trong nhiều hệ thống
- Chiến lược quét để tìm lỗ hổng hệ thống: sử dụng các yếu tố ngẫu nhiên, lập danh sách va chạm, tìm
hiểu cấu trúc topo, mạng con cục bộ.
3. Chống tấn công từ chối dịch vụ từ xa (DDoS)
Có ba cách bảo vệ sau đây được dùng rộng rãi
- Ngăn ngừa tấn công và chiếm lĩnh trước.
- Phát hiện tấn công và lọc trong quá trình sử dụng dịch vụ
- Lần vết nguồn tấn công và xác định sự tấn công sau khi sử dụng xong dịch vụ.
Nói chung phạm vi rộng các khả năng tấn công, vậy phải nhiều biện pháp chống sử dụng
kết hợp chúng.
VIII.3 Tràn bộ đệm
Tràn bộ đệm chế tấn công rất phổ biến bắt đầu từ 1988 xuất hiện sâu Morris đến Code Red,
Slammer, Sasser nhiều cái khác nữa. Các kỹ thuật phòng chống đều đã biết. Tuy nhiên vẫn còn vấn
đề phải quan tâm di truyền từ các con rệp đã lây lan rộng rãi. vẫn còn các kỹ thuật lập trình không
cẩn thận.
Cơ sở của việc tràn bộ nhớ: sinh bởi do lỗi lập trình, cho quá nhiều dữ liệu lưu trữ hơn khả năng cho phép
trong bộ đệm kích thước cố định. Bộ đệm thể trên ngăn xếp, đống, dữ liệu tổng thể. Viết đè các vị trí
- 118 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
nhớ cận kề, làm hỏng dữ liệu của chương trình, truyền điều khiển không mong muốn, vi phạm truy cập bộ
nhớ, thực hiện code của kẻ tấn công
VIII.3.1 Ví dụ tràn bộ nhớ
Xét chương trình C trên. đây ba biến, thông thường lưu trong vùng nhớ liền kề. Gọi chương trình
con copy vào str1 dữ liệu Start. Sau đó đọc đầu vào sử dụng hàm gets lưu vào str2. Sau đó so sánh đầu vào
với xâu Start. Nếu thành công valid = true. Vấn đề hàm thư viện gets của C không kiểm tra độ lớn dữ liệu
đọc vào. Nếu nhiều hơn 7 tự đòi hỏi bộ nhớ nhiều hơn. Khi đó dữ liệu thừa viết đè dữ liệu của biến
kề, trong trường hợp này là str1. Giả sử xâu đầu vào là “EVILINPUTVALUE”, kt qu xâu Str1 b vit è
v i các t “TVALUE”. Xâu str2 không chỉ sử dụng 8 tự của còn thêm 7 tự từ str1. Biết
cấu trúc trên, kẻ tấn công thể thu xếp sao cho giá trị xâu Str1 vẫn bằng Str2. Chẳng hạn nếu nhập xâu
đầu vào “BADINPUTBADINPUT” thì trong phép so sánh kết quả vẫn đúng như trong lần chạy thứ ba
trong ví dụ trên.
VIII.3.2 Tấn công tràn bộ nhớ.
Để làm tràn bộ đệm, kẻ tấn công cần phải phát hiện lỗ hổng tràn bộ đệm trong chương trình nào
đó. Theo dõi, lần theo vết thực hiện, sử dụng các công cụ ẩn. Hiểu bộ đệm lưu trong bộ nhớ như thế nào
và xác định khả năng phá hỏng.
- 119 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Một chút về lịch sử ngôn ngữ lập trình. mức ngôn ngữ máy mọi dữ liệu mảng các bytes, thông dịch
phụ thuộc vào các chỉ lệnh được dùng. Ngôn ngữ bậc cao hiện đại định nghĩa chặt về kiểu các phép
toán đúng. Không có lỗ hổng tràn bộ đệm, được lường trước, giới hạn khi dùng.
C và ngôn ngữ liên quan có cấu trúc điều khiển bậc cao, nhưng cho phép truy cập trực tiếp đến bộ nhớ. Vì
vậy có lỗ hổng tràn bộ đệm. Có kế thừa lớn các code không an toàn, đang được sử dụng rộng rãi, nên có lỗ
hổng.
Để hiểu hơn tạo sao lại tràn bộ nhớ,không khắc phục được, ta xem xét cơ chếlời gọi hàm quản lý
trạng thái cục bộ cho mỗi lời gọi. Khi một hàm gọi hàm khác, cần phải lưu đâu đó địa chỉ trả về để
hàm được gọi khi kết thúc trả điều khiển cho hàm gọi. Bên cạnh đó cũng cần có chỗ để cất một số tham số
cần truyền cho hàm được gọi cũng cần lưu các giá trị thanh ghi của hàm gọi cần được sử dụng
khi hàm được gọi kết thúc. Thông thường mọi dữ liệu này được cất ở khung ngăn xếp (stack frame). Mỗi
lần gọi hàm lại sinh ra một khung ngăn xếp liên kết.
Tràn bộ đệm ngăn xếp xảy ra khi bộ đệm đặt trên ngăn xếp. được khai thác bởi sâu Morris. Bài báo
“Smashing the Stack” tuyên truyền nó. biến cục bộ phía dưới con trỏ khung lưu trữ địa chỉ trả lại.
vậy tràn bộ đệm cục bộ nhiều khả năng viết đè các mục điều khiển chính. Kẻ tấn công viết đè địa
chỉ trả về với địa chỉ của đọan code cài vào. Đó có thể là địa chỉ của chương trình, thư viện hệ thống hoặc
tải vào bộ đệm.
Chúng ta xem cấu tạo vùng nhớ, nơi cất chương trình đang chạy, dữ liệu tổng thể, đống ngăn xếp. Khi
chương trình chạy, hệ điều hành tạo ra một tiến trình cho nó. Tiến trình được cho bởi không gian ảo của
riêng với cấu trúc như trên hình vẽ sau. bao gồm nội dung chương trình đang chạy, trong đó dữ
liệu tổng thể, bảng cấp bộ nhớ, code của chương trình gần đáy của không gian nhớ y. Trên đó không
gian cho đống tăng dần lên và trên nữa là không gian cho ngăn xếp giảm dần xuống.
- 120 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Để tả tràn bộ đệm ngăn xếp ta xét chương trình C sau. chứa biến cục bộ duy nhất, bộ đệm inp.
Hàm Hello nhắc nhập tên được đọc vào bộ đệm nhờ hàm thư viện không an toàn gets(). Sau đó hiện
kết quả đọc được nhờ hàm thư viện printf (). Nếu giá trị nhỏ được đọc thì đây không vấn đề gì.
Chương trình gọi hàm sẽ chạy thành công như trong lần chạy thứ nhất trên hình sau đó. Nếu dữ liệu lớn
như trong lần chạy thứ hai, dữ liệu sẽ vượt qua cuối bộ đệm ghi đè lên con trỏ khung lưu trữ trả về
địa chỉ sai tương ứng với biểu diễn nhị phân của các tự. khi hàm trả điều khiển cho địa chỉ trả về,
nhảy đến vị trí bộ nhớ không hợp lệ, báo lỗi “Segmentation Fault” dừng chương trình không bình
thường như thông báo trên hình sau đó. Kẻ tấn công tận dụng hội này để truyền điều khiển về chương
trình đã định trước.
- 121 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.3.3 Code che đậy (Shellcode)
Đây là code chương trình được chuẩn bị bởi kẻ tấn công. Nó được lưu trong bộ nhớ bị tràn và kẻ tấn công
tìm cách chuyển điều khiển sang cho shell.
- 122 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- 123 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Phát triển code che đậy
Trong ví dụ trên mô tả với Intel Linux shellcode cơ bản để chạy bản dịch Bourne shell. Shellcode cần phải
phù hợp với đối số cho execve(). Nó bao gồm mọi code để gọi hàm của hệ thống, phải độc lập với vị trí
không chứa NULLs – xâu kết thúc của C.
Thông thường chương trình che đậy dưới vỏ bọc tiện ích hệ thống đáng tin cậy, dịch vụ mạng đặc biệt,
code thư viện được sử dụng chung, như hình ảnh.
Các hàm của shellcode: giao diện tự sinh, tạo đối tượng nghe để khởi tạo giao diện kết nối, tạo kết nối
ngược lại tới kẻ tấn công, vượt qua các qui tắc tường lửa, thoát khỏi môi trường thực thi hạn chế.
VIII.3.4 Bảo vệ tràn bộ nhớ
Tràn bộ đệm được khai thác rộng rãi, nhiều code lỗ hổng đang dùng. Mặc nguyên nhân các
biện pháp chống đã biết. Có hai cách chống rộng rãi: chương trình mới được gia cố trong thời gian dịch và
kiểm soát tấn công chương trình đang có trong thời gian chạy.
Nếu sử dụng ngôn ngữ bậc cao với kiểu mạnh , thì sẽ không lỗ hổng tràn bộ đệm. Chương trình dịch
buộc kiểm tra cỡ và các thao tác cho phép trên các biến. Khi đó phải trả giá khi sử dụng nguồn và hạn chế
truy cập đến phần cứng. Tuy nhiên vẫn cần một số code của các ngôn ngữ giống C.
Bảo vệ trong thời gian dịch
Thiết lập các kỹ thuật lập trình an toàn. Nếu sử dụng ngôn ngữ tiềm ẩn không an toàn như C, lập trình
viên cần viết code an toàn một cách tường minh. Bằng thiết kế với code mới, sau khi xem xét code cũ.
Xem an toàn tràn bộ đệm như tập con các kỹ thuật lập trình an toàn nói chung. Chú ý đến các lỗi nhỏ,
kiểm tra đủ không gian trong bộ đệm bất kỳ.
đề nghị mở rộng an toàn cho C như tạo điểm phạt thực thi, cần dịch chương trình với chương trình
dịch đặc biệt. Có một số phương án thư viện chuẩn an toàn, các hàm mới, như strlcpy(). Cài đặt lại an toàn
hơn một số hàm chuẩn như thư viện động, chẳng hạn Libsafe.
Bổ sung code của chức năng nhập thoát để kiểm tra ngăn xếp ghi nhận việc ghi đè, sử dụng yếu tố
ngẫu nhiên như bảo vệ ngăn xếp, kiểm tra viết đè giữa biến cục bộ con trỏ khung lưu trữ địa chỉ trả
về. Chương trình dừng nếu phát hiện thay đổi. Phát hành: bản dịch lại, hỗ trợ phát hiện lỗi hoặc copy an
toàn lưu trữ/kiểm tra địa chỉ trả về.
Bảo vệ trong thời gian chạy
Sử dụng hỗ trợ bộ nhớ ảo để tạo một số vùng bộ nhớ không thực thi được như stack, heap, global data.
Cần hỗ trợ từ các phần cứng bộ nhớ như trong SPARC / Solaris systems, x86 Linux/Unix/Windows
systems. Phát hành hỗ trợ cho code ngăn xếp thực thi, cần một số dự phòng đặc biệt.
Thao tác trên vị trí của các cấu trúc dữ liệu chính, sử dụng tịnh tiến ngẫu nhiên cho mỗi tiến trình, có vùng
địa chỉ lớn trên các phương tiện của các hệ thống hiện đại chống các va chạm và đoán địa chỉ bộ đệm đích
không thể. Vị trí ngẫu nhiên cho bộ đệm heap vị trí các hàm thư viện chuẩn. Đặt các trang bảo vệ
giữa các vùng quan trọng của bộ nhớ, đặt cờ trong bộ nhớ n địa chỉ không hợp lệ. thể ngay cả đặt
giữa các khung ngăn xếp và các bộ đệm heap trong thời gian thực thi và phải trả giá về không gian.
Có nhiều các phương án tấn công khác: phương án tràn ngăn xếp, tràn heap, tràn dữ liệu tổng thể, tràn xâu
định dạng, tràn số nguyên. thể nhiều hơn nữa được phát hiện trong tương lai. Một số không thể
ngăn chặn trừ khi code an toàn lúc ban đầu.
Phương án tràn ngăn xếp chỉ viết đè bộ đệm con trỏ khung lưu trữ trả về xảy ra nhưng đến khung giả
trả về lời gọi hàm điều khiển bởi kẻ tấn công được dùng khi tràn bộ đệm giới hạn. dụ tách ra bởi
một khung. Tuy các hạn chế: cần biết địa chỉ chínhc của bộ đệm, hàm gọi thực hiện với khung giả,
phương án tràn ngăn xếp thay địa chỉ trả về bằng hàm thư viện chuẩn để đáp lại sự bảo vệ ngăn xếp không
- 124 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
thực thi. Kẻ tấn công xây dựng các tham số phù hợp trên ngăn xếp phía trên địa chi trả về. Kẻ tấn công có
thể cần địa chỉ chính xác của bộ đệm, có thể ngay cả kết nối hai lời gọi thư viện.
Cũng tấn công bộ đệm đặt trong heap. Thông thường đặt trên code của chương trình, bộ nhớ được yêu
cầu bởi chương trình để sử dụng cho các cấu trúc dữ liệu động, dụ như danh sách móc nối. Không
địa chỉ trả về, nên không chuyển giao quyền điều khiển dễ dàng. thể con trỏ hàm để khai thác
hoặc thao tác cấu trúc dữ liệu quản trị. Cách bảo vệ là dùng heap ngẫu nhiên và không thực thi.
Có thể tấn công bộ đệm đặt trong dữ liệu tổng thể. Có thể đặt phía trên code của chương trình. Nếu có con
trỏ hàm và bộ đệm có lỗ hổng hoặc bảng quản trị các quá trình liền kề. Nhắm tới viết đè con trỏ hàm được
gọi sau đó.ch bảo vệ dùng vùng dữ liệu tổng thể ngẫu nhiên không thực thi, dịch chuyển con trỏ
hàm, các trang bảo vệ.
VIII.4 Bức tường lửa
VIII.4.1 Mở đầu
Bức tường lửa phát triển mạnh mẽ, được ứng dụng trong các c hệ thống thông tin. Bây giờ mọi
người đều muốn lên Internet các mạng liên kết với nhau. vậy cần quan tâm thường xuyên về an
toàn. Không dễ dàng bảo vệ từng hệ thống trong tổ chức. Thông thường sử dụng bức tường lửa, cung
cấp vòng bảo vệ như một phần của chiến lược an toàn toàn diện.
Bức tường lửa là gì
Là điểm cổ chai để kiểm soát và theo dõi. Các mạng liên kết với độ tin cậy khác nhau, buộc có hạn chế
trên các dịch vụ của mạng. Chẳng hạn, vận chuyển phải có giấy phép. Kiểm tra kiểm soát truy cập,
có thể cài đặt cảnh báo các hành vi bất thường. Cung cấp bảng NAT và sử dụng theo dõi giám sát. Cài
đặt mạng riêng ảo (VPN) sử dụng cơ chế an toàn IPSec. Có thể miễn dịch trước.
Hạn chế của bức tường lửa
Không bảo vệ được c tấn công đi vòng qua nó, chẳng hạn mạng lén lút, thiết bị modems. ngăn
cản cả các tổ chức tin cậy và dịch vụ tin cậy (SSL/SSH).
Không bảo vệ chống các mối đe dọa từ bên trong, chẳng hạn như những nhân viên bực tức hoặc thông
đồng với kẻ xấu. Không thể bảo vệ chống việc truyền các chương trình hoặc file nhiễm virus,
phạm vi rất rộng các dạng file và các hệ điều hành
VIII.4.2 Bức tường lửa – các lọc gói
Là thành phần của bức tường lửa nhanh nhất và đơn giản nhất, là cơ sở của mọi hệ thống tường lửa.
Nó kiểm tra mỗi gói IP (không có ngữ cảnh) và cho phép hay từ chối tuỳ theo qui tắc xác định. Suy ra
có hạn chế truy cập đến các dịch vụ và các cổng.
Các đường lối mặc định có thể
o Rằng không cho phép tức là cấm
o Rằng không cấm tức là cho phép
- 125 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Tấn công các lọc gói
Địa chỉ IP lừa đảo: giả địa chỉ nguồn làm cho tin tưởng, bổ sung bộ lọc lên mạch chuyển để ngăn chặn.
Tấn công mạch truyền gốc: kẻ tấn công đặt được truyền khác với mặc định, ngăn chặn các gói truyền
gốc
Tấn công các đoạn tin (fragment) nhỏ. Chia thông tin phần đầu thành một số đoạn nhỏ. Hoặc bỏ qua
hoặc sắp xếp lại trước khi kiểm tra
Bức tường lửa – các lọc gói trạng thái
Lọc gói truyền thống không kiểm tra ngữ cảnh của tầng cao hơn, tức là sánh các gói về với dòng chảy
ra. Lọc gói trạng thái hướng đến yêu cầu đó. Chúng kiểm tra mỗi gói IP trong ngữ cảnh: giữ vết theo
dõi với các kỳ client-server, kiểm tra từng gói đúng thuộc vào một phiên. Suy ra có khả năng tốt hơn
phát hiện các gói giả tách khỏi ngữ cảnh.
VIII.4.3 Bức tường lửa – cổng giao tiếp ở tầng ứng dụng (hoặc proxy)
Có cổng giao tiếp chuyên dùng cho ứng dụng – proxy (người được uỷ quyền).
Có truy cập đầy đủ đến giao thức
o Người sử dụng yêu cầu dịch vụ từ proxy
o Proxy kiểm tra các yêu cầu có hợp lệ không
o Sau đó xử lý yêu cầu và trả lời cho người sử dụng
o Có thể vào/theo dõi vận chuyển ở tầng ứng dụng
Cần các proxies khác nhau cho mỗi dịch vụ
o Một số dịch vụ hỗ trợ một cách tự nhiên proxy
o Những loại khác thì cần giải quyết một số vấn đề
- 126 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.4 Bức tường lửa - cổng giao tiếp mức mạch vòng
Chuyển tiếp 2 kết nối TCP. Có sự an toàn bằng cách hạn chế mà các kết nối này cho phép. Mỗi lần tạo
ra chuyển tiếp thông thường không kiểm tra nội dung. Thông thường được sử dụng khi tin cậy người sử
dụng bên trong bằng cách cho phép các kết nối ra ngoài nói chung. Gói SOCKS được sử dụng rộng rãi
cho mục đích này.
VIII.4.5 Máy chủ Bastion
Hệ thống máy chủ an toàn cao. Chạy cổng giao tiếp mức ứng dụng mạch vòng. Hoặc cung cấp các
dịch vụ truy cập bên ngoài. tiềm năng thể hiện các yếu tố của máy chủ. an toàn bền vững, nên
hệ điều hành nặng nề hơn, các dịch vụ chính, bổ sung xác thực, proxies nhỏ, an toàn, độc lập, không
đặc quyền.
Có thể hỗ trợ 2 hay nhiều hơn kết nối mạng và có thể được tin cậy để ép buộc chính sách tách bạch tin
cậy giữa các kết nối mạng.
Cấu hình bức tường lửa (Firewall Configurations)
- 127 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.6 Kiểm soát truy cập
Hệ thống đã xác định được định danh như người sử dụng, xác định các nguồn gốc nào nó thể truy
cập. Mô hình tổng quát là ma trận truy cập với
o Chủ thể - thực thể chủ động (người sử dụng, quá trình)
o Đối tượng - thực thể bị động (file hoặc nguồn)
o Quyền truy cập – cách mà đối tượng được truy cập
Có thể được phân tách bởi
o Các cột như danh sách kiểm soát truy cập
o Các hàng như các thẻ về khả năng
Ma trận kiểm soát quyền truy cập
- 128 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.7 Các hệ thống máy tính tin cậy
An toàn thông tin ngày càng quan trọng. Có các mức độ khác nhau về sự nhạy cảm của thông tin
o Phân loại thông tin quân sự: bảo mật, bí mật
Chủ thể (người hoặc chương trình) có nhiều quyền khác nhau truy cập đến các đối tượng thông tin.
Được biết như an toàn nhiều tầng
o Chủ thể có mức độ an toàn tối đa và hiện tại
o Đối tượng có phân loại mức độ tin cậy cố định
Muốn xem xét các cách tăng độ tin tưởng trong hệ thống để củng cố các quyền đó.
VIII.4.8 Mô hình Bell LaPadula
Một trong những mô hình an toàn nổi tiếng nhất. Được cài đặt như các chính sách bắt buộc trong hệ
thống. Có hai chính sách chính
o Không đọc lên (tính chất an toàn đơn giản)
Chủ thể chỉ có thể đọc/viết các đối tượng nếu mức độ an toàn hiện tại của chủ thể
trội hơn (>=) phân loại của đối tượng
o Không viết xuống (tính chất *)
Chủ thể chỉ có thể bổ sung/viết lên đối tượng nếu mức độ an toàn hiện tại của chủ
thể được trội (<=) bởi phân loại của đối tượng
Reference Monitor
- 129 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
(Giao diện chỉ dẫn)
Các hệ thống máy tính triển khai
Chính phủ có thể phát triển các hệ thống IT. Đương đầu với phạm vi rộng các chuẩn
o TCSEC, IPSEC và bây giờ là Tiêu chuẩn Chung
Xác định một số mức độ triển khai với tăng cường kiểm tra qui tắc. Đã xuất bản danh sách các sản
phẩm triển khai
o Chỉ hướng tới sử dụng cho chính phủ/quốc phòng
o Cũng có thể hữu ích trong công nghiệp
VIII.4.9 Tiêu chuẩn chung
Đặc tả yêu cầu an toàn quốc tế khởi đầu xác định tiêu chuẩn triển khai. Tích hợp với các chuẩn
khác
o Chẳng hạn CSEC, ITSEC, CTCPEC (Canada), Federal (US)
Đặc tả các chuẩn cho
o Tiêu chuẩn triển khai
o Phương pháp luận cho ứng dụng của Tiêu chuẩn
o Các thủ tục hành chính triển khai, chứng nhận và các sơ đồ chỉ định
Xác định tập các yêu cầu an toàn, có đích triển khai (TOE). Yêu cầu rơi vào trong 2 loại sau
o Chức năng
o Sự tin cậy
Cả hai được tổ chức theo lớp classes của họ hoặc cấu thành
Các yêu cầu Tiêu chuẩn chung
Yêu cầu chức năng
o Kiểm soát an toàn, hỗ trợ , trao đổi thông tin, bảo vệ dữ liệu người sử dụng, định danh
và xác thực, quản lý an toàn, tính riêng tư, bảo vệ các hàm an toàn tin cậy, nguồn thiết thực,
truy cập TOE, đường dẫn tin cậy
Yêu cầu sự tin cậy
o Quản tham số hệ thống, phân phối thao tác, phát triển, tài liệu chỉ dẫn, hỗ trợ thời
gian sống, kiểm tra, đánh giá lỗ hổng, bảo trì sự tin cậy
Bài tập
1. Liệt kê và phân loại các phần mềm có hại và các biện pháp phòng chống.
2. Phân tích các kỹ thuật xâm nhập hệ thống và cách phòng ngừa.
3. Nêu các biện pháp tăng cường an ninh, bảo mật máy tính cá nhân dựa trên các phần mềm thông
dụng hiện có.
4. Mục đích yêu cầu của việc xây dựng bức tường lửa. Có những loại bức tường lửa nào.
5. Nêu cách thiết lập bức tường lửa sử dụng công cụ hỗ trợ trong hệ điều hành.
6. Phân tích các lỗi tràn bộ nhớ có thể xảy ra, nêu nguyên nhân.
7. Tìm hiểu các yêu cầu lập trình an toàn.
8. Trình bày một số mô hình hệ thống máy tính tin cậy.
- 130 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Stt Ký hiệu Diễn giải
1 ACL Access Control List – Danh sách kiểm soát truy cập
2 AES Advanced Encryption Standard - chuẩn mã quốc tế
3 AH Authentication Header - đầu mục xác thực
4 CA Certification authority - Chủ quyền chứng nhận
5 CERT Computer emergency response team - Đội cấp cứu sự cố máy tính
6 CRL Certificate revocation list – Danh sách thu hồi chứng nhận
7 CSDL Cơ sở dữ liệu
8 CNTT Công nghệ thông tin
9 CSHT Cơ sở hạ tầng
10 CBC Cipher Block Chaining – Dãy mã khối
11 CFB Cipher feedback - Phản hồi mã
12 DBA Database administrator - Quản trị hệ thống
13 DES Data Encription Standards - Chuẩn mã dữ liệu
14 DNA Domain Name System - Hệ thống tên miền
15 DSA Digital signature Algorithm - Thuật toán chữ ký điện tử
16 DSS Digital signature standard – Chuẩn chữ ký điện tử
17 ECB Electronic codebook – sách mã điện tử
18 ECC Encription curve code – mã đường cong Elip
19 ESP Encapsulating security payload – tải bảo mật đóng gói
20 FIPS Federal Information Processing Standard - chuẩn xử lý thông tin Liên bang
21 IDEA International data encryption algorithm - Thuật toán mã dữ liệu quốc tế
22 IPKI Internet X.509 public key Infrastructure - Hạ tầng khoá công khai Internet
X.509
23 KDC Key Distribution Center – Trung tâm phân phối khóa
24 LAN Local area network – mạng cục bộ
- 131 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
25 MD Message digest – digest bản tin
26 NAT Network address translation – dịch địa chỉ mạng
27 PKCS Public key cryptography standard – Chuẩn mã khoa công khai
28 PKI Public Key Infrastructure - Hạ tầng khoá chung
29 PGP Pretty Good Privacy – Phần mềm bảo mật thư điện tử
30 RSA Thuật toán mã công khai RSA mang tên Rivest, Shamir, Adleman
31 SET Secure Electronic transaction – Thanh toán điện tử an toàn
32 SHA1 Secure hash algorithm 1 – Thuật toán băm 1
33 SMTP Simple Mail Transfer Protocol – Giao thức chuyển thư đơn giản
34 SOAP Simple Object Access Protocol – Giao thức truy cập đối tượng đơn giản
35 SSL Secure Socket Layer – giao thức bảo mật lớp vận chuyển
36 TLS Transport Layer Security – Chuẩn giao thức bảo mật lớp vận chuyển
37 UID User Identification – Định danh người sử dụng
38 TTP Trusted Third Party – Bên thứ ba tin cậy
39 URL Uniform Resource Locator – Địa chỉ nguồn thống nhất
40 VPN Virtual private network - mạng riêng ảo
41 WAN Wide area network - mạng diện rộng
42 WTLS Wireless transport layer security – an toàn tầng vận chuyển không dây
TÀI LIỆU THAM KHẢO
[1] William Stallings. Cryptography and Network Security: Principles and Practice. Third Edition.
Pearson Education, 2003.
[2] A. Menezes, P. van Oorschot và S. Vanstone. - Handbook of Applied Cryptography, Fifth Edition,
CRC Press, 1996.
[3] Douglas Stinson - Cryptography: Theory and Practice. Boca Raton. FL. CRC Press, 2007.
[4] http://vn.wikipedia.org
[5] http://www.ietf.org/rfc
[6] http://www.rsasecurity.com
[7] http://people.csail.mit.edu/rivest/crypto-security.html
- 132 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
[8] Nguyễn Ngọc Tuấn, Hồng Phúc. Công nghệ bảo mật World Wide Web. Nhà xuất bản Thống kê, 2005.
- 133 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
PHỤ LỤC
1. Phụ lục thuật toán DES
1.1 Phụ lục 1.1
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
1.2 Phụ lục 1.2
IP
-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
1.3 Phụ lục 1.3
E
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
1.4 Phụ lục 1.4: S box
ột
Hàng
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11
]
[12] [13
]
[14] [15]
S
1
[0] 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
[1] 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
[2] 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
[3] 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
- 134 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
S
2
[0] 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
[1] 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
[2] 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
[3] 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S
3
[0] 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
[1] 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
[2] 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
[3] 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S
4
[0] 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
[1] 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
[2] 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
[3] 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S
5
[0] 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
[1] 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
[2] 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
[3] 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S
6
[0] 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
[1] 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
[2] 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
[3] 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S
7
[0] 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
[1] 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
[2] 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
[3] 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S
8
[0] 13 2 8 4 6 15 11 1 10. 9 3 14 5 0 12 7
[1] 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
[2] 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
[3] 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
1.5 Phụ lục 1.5
P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
1.6 Phụ lục 1.6
- 135 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
PC1
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
1.7 Phụ lục 1.7
PC2
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
- 136 -
| 1/136

Preview text:

Giáo Trình An Toàn Và Bảo Mật Thông Tin
TRƯỜNG ĐẠI HỌC GIAO THÔNG KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH GIÁO TRÌNH
AN TOÀN VÀ BẢO MẬT THÔNG TIN - 1 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Mở đầu
Gần đây, môn học “An toàn và bảo mật thông tin” đã được đưa vào giảng dạy tại
hầu hết các Khoa Công nghệ Thông tin của các trường đại học và cao đẳng. Do các ứng
dụng trên mạng Internet ngày các phát triển và mở rộng, nên an toàn thông tin trên mạng
đã trở thành nhu cầu bắt buộc cho mọi hệ thống ứng dụng. Để đáp ứng yêu cầu học tập và
tự tìm hiểu của sinh viên các chuyên ngành Công nghệ Thông tin, Bộ môn Khoa học máy
tính, Khoa Công nghệ Thông tin, trường đại học Giao thông đã tổ chức biên soạn giáo trình
này. Nội dung của nó được dựa trên một số tài liệu, nhưng chủ yếu là cuốn sách của Giáo
sư William Stallings “Cryptography and Network Security: Principles and Practice”.
Cuốn sách trên đã được dùng làm tài liệu giảng dạy tại nhiều trường đại học. Đồng thời
giáo trình này cũng được hoàn thiện từng bước dựa trên bài giảng của tác giả cho 4 khóa
sinh viên Khoa Công nghệ Thông tin vừa qua. Với mục đích trang bị các kiến thức cơ sở
vừa đủ và giúp cho sinh viên hiểu được bản chất của các khía cạnh an ninh trên mạng,
trong giáo trình tác giả đã cố gắng trình bày tóm tắt các phần lý thuyết cơ bản và đưa ra các ứng dụng thực tế.
Giáo trình gồm 8 chương. Chương đầu nêu tổng quan về bảo mật, chương 2 tóm tắt
sơ lược về mã cổ điển, chương 3 trình bày những khái niệm cơ bản về trường số học,
chương 4 giới thiệu về mã khối và chuẩn mã dữ liệu, chương 5 nêu về mã công khai và
RSA, chương 6 đưa ra khái niệm xác thực và hàm băm, chương 7 giới thiệu ứng dụng về
an toàn Web và IP và cuối cùng chương 8 tóm tắt về kẻ xâm nhập và biện pháp phòng chống bức tường lửa.
Do lần đầu biên soạn và chưa có nhiều kinh nghiệm thực tế, nên không tránh khỏi những
sai sót và lỗi in ấn nhất định. Tác giả xin vui lòng tiếp nhận mọi sự đóng góp giúp cho giáo
trình “An toàn và bảo mật thông tin” ngày càng tốt hơn. Mọi ý kiến xây dựng xin gửi về
theo địa chỉ sau: Trần Văn Dũng, Khoa Công nghệ Thông tin, Đại học Giao thông Vận tải,
Láng Thượng, Đống đa, Hà nội. - 2 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin MỤC LỤC Mở đầu 2 2 4
CHƯƠNG I.................................................................................................................................................5
TỔNG QUAN VỀ BẢO MẬT....................................................................................................................5
I.1 Giới thiệu chung về bảo mật thông tin...................................................................................................5
I.2 Dịch vụ, cơ chế, tấn công.......................................................................................................................7
I.3 Mô hình an toàn mạng............................................................................................................................8
I.4 Bảo mật thông tin trong hệ cơ sở dữ liệu.............................................................................................10
CHƯƠNG II...............................................................................................................................................13
MÃ CỔ ĐIỂN............................................................................................................................................13
II.1 Mã đối xứng........................................................................................................................................13
II.2 Các mã thế cổ điển thay thế................................................................................................................15
II.3 Các mã thế cổ điển hoán vị.................................................................................................................21
II.4 Một số vấn đề khác..............................................................................................................................22
CHƯƠNG III.............................................................................................................................................25
TRƯỜNG HỮU HẠN...............................................................................................................................25
III.1 Các cấu trúc đại số.............................................................................................................................25
III.2 Số học trên Modulo............................................................................................................................26
III.3 Trường Galoa.....................................................................................................................................29
III.4 Giới thiệu lý thuyết số........................................................................................................................34
CHƯƠNG IV:............................................................................................................................................40
CHUẨN MÃ DỮ LIỆU (DES) VÀ CHUẨN MÃ NÂNG CAO (AES)...................................................40
IV.1 Mã khối hiện đại................................................................................................................................40
IV.2 Chuẩn mã dữ liệu (DES)....................................................................................................................42
IV.3 Chuẩn mã nâng cao (AES)................................................................................................................50
IV.4 Các mã đối xứng đương thời.............................................................................................................57
IV.5 Bảo mật dùng khoá đối xứng.............................................................................................................62
CHƯƠNG V..............................................................................................................................................66
MÃ CÔNG KHAI VÀ QUẢN LÝ KHOÁ................................................................................................66
V.1 Mã khoá công khai..............................................................................................................................66 - 3 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin V.2 RSA 68
V.3 Quản lý khoá.......................................................................................................................................71
V.4 Trao đổi khoá Diffie Hellman.............................................................................................................74
V.5 Mã đường cong Elip............................................................................................................................75
CHƯƠNG VI.............................................................................................................................................80
XÁC THỰC MẪU TIN VÀ CÁC HÀM HASH.......................................................................................80
VI.1 Xác thực mẩu tin................................................................................................................................80
VI.2 Các hàm Hash (hay còn gọi là hàm băm)..........................................................................................82
VI.3 Các thuật toán Hash và MAC............................................................................................................84
VI.4 Các ứng dụng xác thực......................................................................................................................93
CHƯƠNG VII...........................................................................................................................................98
AN TOÀN IP VÀ WEB............................................................................................................................98
VII.1 An toàn IP.........................................................................................................................................98
VII.2 An toàn Web.....................................................................................................................................99
VII.3 Thanh toán điện tử an toàn.............................................................................................................103
VII.4 An toàn thư điện tử.........................................................................................................................105
CHƯƠNG VIII........................................................................................................................................111
KẺ XÂM NHẬP, PHẦN MỀM CÓ HẠI VÀ BỨC TƯỜNG LỬA.......................................................111
VIII.1 Kẻ xâm nhập.................................................................................................................................111
VIII.2 Phần mềm có hại...........................................................................................................................114
VIII.3 Tràn bộ đệm..................................................................................................................................118
VIII.4 Bức tường lửa................................................................................................................................125
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT...........................................................................131
TÀI LIỆU THAM KHẢO.......................................................................................................................132 PHỤ LỤC 134 - 4 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG I
TỔNG QUAN VỀ BẢO MẬT
I.1 Giới thiệu chung về bảo mật thông tin
I.1.1 Mở đầu về bảo mật thông tin
Ngày nay với sự phát triển bùng nổ của công nghệ thông tin, hầu hết các thông tin của doanh nghiệp như
chiến lược kinh doanh, các thông tin về khách hàng, nhà cung cấp, tài chính, mức lương nhân viên,…đều
được lưu trữ trên hệ thống máy tính. Cùng với sự phát triển của doanh nghiệp là những đòi hỏi ngày càng
cao của môi trường kinh doanh yêu cầu doanh nghiệp cần phải chia sẻ thông tin của mình cho nhiều đối
tượng khác nhau qua Internet hay Intranet. Việc mất mát, rò rỉ thông tin có thể ảnh hưởng nghiêm trọng
đến tài chính, danh tiếng của công ty và quan hệ với khách hàng.
Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp có thể dẫn đến mất mát thông
tin, thậm chí có thể làm sụp đổ hoàn toàn hệ thống thông tin của doanh nghiệp. Vì vậy an toàn và bảo mật
thông tin là nhiệm vụ rất nặng nề và khó đoán trước được, nhưng tựu trung lại gồm ba hướng chính sau:
- Bảo đảm an toàn thông tin tại máy chủ
- Bảo đảm an toàn cho phía máy trạm
- Bảo mật thông tin trên đường truyền
Đứng trước yêu cầu bảo mật thông tin, ngoài việc xây dựng các phương thức bảo mật thông tin thì người
ta đã đưa ra các nguyên tắc về bảo vệ dữ liệu như sau:
- Nguyên tắc hợp pháp trong lúc thu thập và xử lý dữ liệu. - Nguyên tắc đúng đắn.
- Nguyên tắc phù hợp với mục đích. - Nguyên tắc cân xứng. - Nguyên tắc minh bạch.
- Nguyên tắc được cùng quyết định cho từng cá nhân và bảo đảm quyền truy cập cho người có liên quan.
- Nguyên tắc không phân biệt đối xử. - Nguyên tắc an toàn.
- Nguyên tắc có trách niệm trước pháp luật.
- Nguyên tắc giám sát độc lập và hình phạt theo pháp luật.
- Nguyên tắc mức bảo vệ tương ứng trong vận chuyển dữ liệu xuyên biên giới.
Ở đây chúng ta sẽ tập trung xem xét các nhu cầu an ninh và đề ra các biện pháp an toàn cũng như vận
hành các cơ chế để đạt được các mục tiêu đó.
Nhu cầu an toàn thông tin:
An toàn thông tin đã thay đổi rất nhiều trong thời gian gần đây. Trước kia hầu như chỉ có nhu cầu
bảo mật thông tin, nay đòi hỏi thêm nhiều yêu cầu mới như an ninh máy chủ và trên mạng. •
Các phương pháp truyền thống được cung cấp bởi các cơ chế hành chính và phương tiện vật lý như
nơi lưu trữ bảo vệ các tài liệu quan trọng và cung cấp giấy phép được quyền sử dụng các tài liệu mật đó. •
Máy tính đòi hỏi các phương pháp tự động để bảo vệ các tệp và các thông tin lưu trữ. Nhu cầu bảo
mật rất lớn và rất đa dạng, có mặt khắp mọi nơi, mọi lúc. Do đó không thể không đề ra các qui
trình tự động hỗ trợ bảo đảm an toàn thông tin. •
Việc sử dụng mạng và truyền thông đòi hỏi phải có các phương tiện bảo vệ dữ liệu khi truyền.
Trong đó có cả các phương tiện phần mềm và phần cứng, đòi hỏi có những nghiên cứu mới đáp
ứng các bài toán thực tiễn đặt ra. Các khái niệm: - 5 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
An toàn máy tính: tập hợp các công cụ được thiết kế để bảo vệ dữ liệu và chống hacker. •
An toàn mạng: các phương tiện bảo vệ dữ liệu khi truyền chúng. •
An toàn Internet: các phương tiện bảo vệ dữ liệu khi truyền chúng trên tập các mạng liên kết với nhau.
Mục đích của môn học là tập trung vào an toàn Internet gồm các phương tiện để bảo vệ, chống, phát hiện,
và hiệu chỉnh các phá hoại an toàn khi truyền và lưu trữ thông tin.
I.1.2 Nguy cơ và hiểm họa đối với hệ thống thông tin
Các hiểm họa đối với hệ thống có thể được phân loại thành hiểm họa vô tình hay cố ý, chủ động hay thụ động.
- Hiểm họa vô tình: khi người dùng khởi động lại hệ thống ở chế độ đặc quyền, họ có thể tùy ý
chỉnh sửa hệ thống. Nhưng sau khi hoàn thành công việc họ không chuyển hệ thống sang chế độ
thông thường, vô tình để kẻ xấu lợi dụng.
- Hiểm họa cố ý: như cố tình truy nhập hệ thống trái phép.
- Hiểm họa thụ động: là hiểm họa nhưng chưa hoặc không tác động trực tiếp lên hệ thống, như nghe
trộm các gói tin trên đường truyền.
- Hiểm họa chủ động: là việc sửa đổi thông tin, thay đổi tình trạng hoặc hoạt động của hệ thống.
Đối với mỗi hệ thống thông tin mối đe dọa và hậu quả tiềm ẩn là rất lớn, nó có thể xuất phát từ những nguyên nhân như sau:
- Từ phía người sử dụng: xâm nhập bất hợp pháp, ăn cắp tài sản có giá trị
- Trong kiến trúc hệ thống thông tin: tổ chức hệ thống kỹ thuật không có cấu trúc hoặc không đủ
mạnh để bảo vệ thông tin.
- Ngay trong chính sách bảo mật an toàn thông tin: không chấp hành các chuẩn an toàn, không xác
định rõ các quyền trong vận hành hệ thống.
- Thông tin trong hệ thống máy tính cũng sẽ dễ bị xâm nhập nếu không có công cụ quản lý, kiểm tra
và điều khiển hệ thống.
- Nguy cơ nằm ngay trong cấu trúc phần cứng của các thiết bị tin học và trong phần mềm hệ thống
và ứng dụng do hãng sản xuất cài sẵn các loại 'rệp' điện tử theo ý đồ định trước, gọi là 'bom điện tử'.
- Nguy hiểm nhất đối với mạng máy tính mở là tin tặc, từ phía bọn tội phạm.
I.1.3 Phân loại tấn công phá hoại an toàn: - 6 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Các hệ thống trên mạng có thể là đối tượng của nhiều kiểu tấn công:
- Tấn công giả mạo là một thực thể tấn công giả danh một thực thể khác. Tấn công giả mạo thường
được kết hợp với các dạng tấn công khác như tấn công chuyển tiếp và tấn công sửa đổi thông báo.
- Tấn công chuyển tiếp xảy ra khi một thông báo, hoặc một phần thông báo được gửi nhiều lần, gây
ra các tác động tiêu cực.
- Tấn công sửa đổi thông báo xảy ra khi nội dung của một thông báo bị sửa đổi nhưng không bị phát hiện.
- Tấn công từ chối dịch vụ xảy ra khi một thực thể không thực hiện chức năng của mình, gây cản trở
cho các thực thể khác thực hiện chức năng của chúng.
- Tấn công từ bên trong hệ thống xảy ra khi người dùng hợp pháp cố tình hoặc vô ý can thiệp hệ
thống trái phép. Còn tấn công từ bên ngoài là nghe trộm, thu chặn, giả mạo người dùng hợp pháp
và vượt quyền hoặc lách qua các cơ chế kiểm soát truy nhập. •
Tấn công bị động. Do thám, theo dõi đường truyền để:
o nhận được nội dung bản tin hoặc
o theo dõi luồng truyền tin •
Tấn công chủ động. Thay đổi luồng dữ liệu để:
o giả mạo một người nào đó.
o lặp lại bản tin trước
o thay đổi ban tin khi truyền o từ chối dịch vụ.
I.2 Dịch vụ, cơ chế, tấn công.
Nhu cầu thực tiến dẫn đến sự cần thiết có một phương pháp hệ thống xác định các yêu cầu an ninh của tổ
chức. Trong đó cần có tiếp cận tổng thể xét cả ba khía cạnh của an toàn thông tin: bảo vệ tấn công, cơ chế
an toàn và dịch vụ an toàn.
Sau đây chúng ta xét chúng theo trình tự ngược lại:
I.2.1 Các dịch vụ an toàn.
Đây là công cụ đảm bảo an toàn của hệ thống xử lý thông tin và truyền thông tin trong tổ chức. Chúng
được thiết lập để chống lại các tấn công phá hoại. Có thể dùng một hay nhiều cơ chế an toàn để cung cấp dịch vụ. - 7 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Thông thường người ta cần phải tạo ra các liên kết với các tài liệu vật lý: như có chữ ký, ngày tháng, bảo
vệ cần thiết chống khám phá, sửa bậy, phá hoại, được công chứng, chứng kiến, được ghi nhận hoặc có bản quyền.
I.2.2 Các cơ chế an toàn:
Từ các công việc thực tế để chống lại các phá hoại an ninh, người ta đã hệ thống và sắp xếp lại tạo thành
các cơ chế an ninh khác nhau. Đây là cơ chế được thiết kế để phát hiện, bảo vệ hoặc khôi phục do tấn công phá hoại.
Không có cơ chế đơn lẻ nào đáp ứng được mọi chức năng yêu cầu của công tác an ninh. Tuy nhiên có một
thành phần đặc biệt nằm trong mọi cơ chế an toàn đó là: kỹ thuật mã hoá. Do đó chúng ta sẽ dành một thời
lượng nhất định tập trung vào lý thuyết mã.
I.2.3 Tấn công phá hoại an ninh:
Ta xác định rõ thế nào là các hành động tấn công phá họai an ninh. Đó là mọi hành động chống lại sự an
toàn thông tin của các tổ chức.
An toàn thông tin là bàn về bằng cách nào chống lại tấn công vào hệ thống thông tin hoặc phát hiện ra
chúng. Trên thực tế có rất nhiều cách và nhiều kiểu tấn công khác nhau. Thường thuật ngữ đe doạ và tấn
công được dùng như nhau. Cần tập trung chống một số kiểu tấn công chính: thụ động và chủ động.
I.3 Mô hình an toàn mạng
I.3.1 Kiến trúc an toàn của hệ thống truyền thông mở OSI.
Để giúp cho việc hoạch định chính sách và xây dựng hệ thống an ninh tốt. Bộ phận chuẩn hóa tiêu chuẩn
của tổ chức truyền thông quốc tế (International Telecommunication Union) đã nghiên cứu và đề ra Kiến
trúc an ninh X800 dành cho hệ thống trao đổi thông tin mở OSI. Trong đó định nghĩa một cách hệ thống
phương pháp xác định và cung cấp các yêu cầu an toàn.Nó cung cấp cho chúng ta một cách nhìn tổng
quát, hữu ích về các khái niệm mà chúng ta nghiên cứu. - 8 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Trước hết nói về dich vụ an toàn, X800 định nghĩa đây là dịch vụ cung cấp cho tầng giao thức của các
hệ thống mở trao đổi thông tin, mà đảm bảo an toàn thông tin cần thiết cho hệ thống và cho việc truyền dữ liệu.
Trong tài liệu các thuật ngữ chuẩn trên Internet RFC 2828 đã nêu định nghĩa cụ thể hơn dich vụ an
toàn là dịch vụ trao đổi và xử lý cung cấp cho hệ thống việc bảo vệ đặc biệt cho các thông tin
nguồn.Tài liệu X800 đưa ra định nghĩa dịch vụ theo 5 loại chính:
- Xác thực: tin tưởng là thực thể trao đổi đúng là cái đã tuyên bố. Người đang trao đổi xưng tên với
mình đúng là anh ta, không cho phép người khác mạo danh.
- Quyền truy cập: ngăn cấm việc sử dụng nguồn thông tin không đúng vai trò. Mỗi đối tượng trong
hệ thống được cung cấp các quyền hạn nhất định và chỉ được hành động trong khuôn khổ các quyền hạn đó.
- Bảo mật dữ liệu: bảo vệ dữ liệu không bị khám phá bởi người không có quyền. Chẳng hạn như
dùng các ký hiệu khác để thay thế các ký hiệu trong bản tin, mà chỉ người có bản quyền mới có thể
khôi phục nguyên bản của nó.
- Toàn vẹn dữ liệu: tin tưởng là dữ liệu được gửi từ người có quyền. Nếu có thay đổi như làm trì
hoãn về mặt thời gian hay sửa đổi thông tin, thì xác thực sẽ cho cách kiểm tra nhận biết là có các
hiện tượng đó đã xảy ra.
- Không từ chối: chống lại việc chối bỏ của một trong các bên tham gia trao đổi. Người gửi cũng
không trối bỏ là mình đã gửi thông tin với nội dung như vậy và người nhận không thể nói dối là tôi
chưa nhận được thông tin đó. Điều này là rất cần thiết trong việc trao đổi, thỏa thuận thông tin hàng ngày.
Cơ chế an toàn được định nghĩa trong X800 như sau:
- Cơ chế an toàn chuyên dụng được cài đặt trong một giao thức của một tầng vận chuyển nào đó:
mã hoá, chữ ký điện tử, quyền truy cập, toàn vẹn dữ liệu, trao đổi có phép, đệm truyền, kiểm soát
định hướng, công chứng.
- Cơ chế an toàn phổ dụng không chỉ rõ được dùng cho giao thức trên tầng nào hoặc dịch vụ an
ninh cụ thể nào: chức năng tin cậy cho một tiêu chuẩn nào đó, nhãn an toàn chứng tỏ đối tượng có
tính chất nhất định, phát hiện sự kiện, vết theo dõi an toàn, khôi phục an toàn.
I.3.2 Mô hình an toàn mạng tổng quát
Sử dụng mô hình trên đòi hỏi chúng ta phải thiết kế:
o thuật toán phù hợp cho việc truyền an toàn.
o Phát sinh các thông tin mật (khoá) được sử dụng bởi các thuật toán.
o Phát triển các phương pháp phân phối và chia sẻ các thông tin mật.
o đặc tả giao thức cho các bên để sử dụng việc truyền và thông tin mật cho các dịch vụ an toàn.
Mô hình truy cập mạng an toàn: - 9 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Sử dụng mô hình trên đòi hỏi chúng ta phải:
o Lựa chọn hàm canh cổng phù hợp cho người sử dụng có danh tính.
o Cài đặt kiểm soát quyền truy cập để tin tưởng rằng chỉ có người có quyền mới truy cập
được thông tin đích hoặc nguồn.
o Các hệ thống máy tính tin cậy có thể dùng mô hình này.
I.4 Bảo mật thông tin trong hệ cơ sở dữ liệu
I.4.1 Giới thiệu chung
Các hệ cơ sở dữ liệu (CSDL) ngày nay như Oracle, SQL/Server, DB2/Informix đều có sẵn các
công cụ bảo vệ tiêu chuẩn như hệ thống định danh và kiểm soát truy xuất. Tuy nhiên, các biện pháp bảo vệ
này hầu như không có tác dụng trước các tấn công từ bên trong. Để bảo vệ thông tin khỏi mối đe dọa này,
người ta đưa ra hai giải pháp.
Giải pháp đơn giản nhất bảo vệ dữ liệu trong CSDL ở mức độ tập tin, chống lại sự truy cập trái phép vào
các tập tin CSDL bằng hình thức mã hóa. Tuy nhiên, giải pháp này không cung cấp mức độ bảo mật truy
cập đến CSDL ở mức độ bảng, cột và dòng. Một điểm yếu nữa của giải pháp này là bất cứ ai với quyền
truy xuất CSDL đều có thể truy cập vào tất cả dữ liệu trong CSDL cũng có nghĩa là cho phép các đối
tượng với quyền quản trị truy cập tất cả các dữ liệu nhạy cảm.
Giải pháp thứ hai, giải quyết vấn đề mã hóa ở mức ứng dụng. Giải pháp này xử lý mã hóa dữ liệu trước
khi truyền dữ liệu vào CSDL. Những vấn đề về quản lý khóa và quyền truy cập được hỗ trợ bởi ứng dụng.
Truy vấn dữ liệu đến CSDL sẽ trả kết quả dữ liệu ở dạng mã hóa và dữ liệu này sẽ được giải mã bởi ứng
dụng. Giải pháp này giải quyết được vấn đề phân tách quyền an toàn và hỗ trợ các chính sách an toàn dựa trên vai trò.
I.4.2 Một số mô hình bảo mật cơ sở dữ liệu
Để đáp ứng những yêu cầu về bảo mật cho các hệ thống CSDL hiện tại và sau này người ta đưa ra 2 mô
hình bảo mật CSDL thông thường sau đây
Xây dựng tầng CSDL trung gian:
Một CSDL trung gian được xây dựng giữa ứng dụng và CSDL gốc. CSDL trung gian này có vai trò mã
hóa dữ liệu trước khi cập nhật vào CSDL gốc, đồng thời giải mã dữ liệu trước khi cung cấp cho ứng dụng. - 10 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CSDL trung gian đồng thời cung cấp thêm các chức năng quản lý khóa, xác thực người dùng và cấp phép truy cập.
Giải pháp này cho phép tạo thêm nhiều chức năng về bảo mật cho CSDL. Tuy nhiên, mô hình CSDL trung
gian đòi hỏi xây dựng một ứng dụng CSDL tái tạo tất cả các chức năng của CSDL gốc. Mô hình trung gian
Sử dụng cơ chế sẵn có trong CSDL
Mô hình này giải quyết các vấn đề mã hóa cột dựa trên các cơ chế sau:
a. Các hàm Stored Procedure trong CSDL cho chức năng mã hóa và giải mã
b. Sử dụng cơ chế View trong CSDL tạo các bảng ảo, thay thế các bảng thật đã được mã hóa.
c. Cơ chế “instead of” trigger được sử dụng nhằm tự động hóa quá trình mã hóa từ View đến bảng gốc.
Trong mô hình này, dữ liệu trong các bảng gốc sẽ được mã hóa, tên của bảng gốc được thay đổi. Một bảng
ảo được tạo ra mang tên của bảng gốc, ứng dụng sẽ truy cập đến bảng ảo này.
Truy xuất dữ liệu trong mô hình này có thể được tóm tắt như sau: - 11 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Mô hình bảng ảo
Các truy xuất dữ liệu đến bảng gốc sẽ được thay thế bằng truy xuất đến bảng ảo.
Bảng ảo được tạo ra để mô phỏng dữ liệu trong bảng gốc. Khi thực thi lệnh “select”, dữ liệu sẽ được giải
mã cho bảng ảo từ bảng gốc (đã được mã hóa). Khi thực thi lệnh “Insert, Update”, “instead of” trigger sẽ
được thi hành và mã hóa dữ liệu xuống bảng gốc.
Quản lý phân quyền truy cập đến các cột sẽ được quản lý ở các bảng ảo. Ngoài các quyền cơ bản do
CSDL cung cấp, hai quyền truy cập mới được định nghĩa:
1. Người sử dụng chỉ được quyền đọc dữ liệu ở dạng mã hóa. Quyền này phù hợp với những đối tượng
cần quản lý CSDL mà không cần đọc nội dung dữ liệu.
2. Người sử dụng được quyền đọc dữ liệu ở dạng giải mã.
I.4.3 Sơ lược kiến trúc của 1 hệ bảo mật CSDL
Triggers: các trigger được sử dụng để lấy dữ liệu đến từ các câu lệnh INSERT, UPDATE (để mã hóa).
Views: các view được sử dụng để lấy dữ liệu đến từ các câu lệnh SELECT (để giải mã).
Extended Stored Procedures: được gọi từ các Trigger hoặc View dùng để kích hoạt các dịch vụ được cung
cấp bởi Modulo DBPEM từ trong môi trường của hệ quản tri CSDL.
DBPEM (Database Policy Enforcing Modulo): cung cấp các dịch vụ mã hóa/giải mã dữ liệu gửi đến từ
các Extended Stored Procedures và thực hiện việc kiểm tra quyền truy xuất của người dùng (dựa trên các
chính sách bảo mật được lưu trữ trong CSDL về quyền bảo mật).
Kiến trúc một hệ bảo mật CSDL
Security Database: lưu trữ các chính sách bảo mật và các khóa giải mã. Xu hướng ngày nay thường là lưu
trữ CSDL về bảo mật này trong Active Directory (một CSDL dạng thư mục để lưu trữ tất cả thông tin về hệ thống mạng).
Security Services: chủ yếu thực hiện việc bảo vệ các khóa giải mã được lưu trong CSDL bảo mật.
Management Console: dùng để cập nhật thông tin lưu trong CSDL bảo mật (chủ yếu là soạn thảo các
chính sách bảo mật) và thực hiện thao tác bảo vệ một trường nào đó trong CSDL để đảm bảo tối đa tính
bảo mật, thông tin được trao đổi. - 12 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG II MÃ CỔ ĐIỂN
Mã hoá cổ điển là phương pháp mã hoá đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành mã hoá.
Thuật toán đơn giản và dễ hiểu. Những phương pháp mã hoá này là cở sở cho việc nghiên cứu và phát
triển thuật toán mã hoá đối xứng được sử dụng ngày nay. Trong mã hoá cổ điển có hai phương pháp nổi bật đó là: - Mã hoá thay thế - Mã hoá hoán vị
Mọi mã cổ điển đều là mã đối xứng mà chúng ta sẽ xét trong phần sau. II.1 Mã đối xứng.
II.1.1 Các khái niệm cơ bản
Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa và giải mã. Có thể nói mã đối xứng là mã một
khoá hay mã khóa riêng hay mã khoá thỏa thuận.
Ở đây người gửi và người nhận chia sẻ khoá chung K, mà họ có thể trao đổi bí mật với nhau. Ta xét hai
hàm ngược nhau: E là hàm biến đổi bản rõ thành bản mã và D là hàm biến đổi bản mã trở về bản rõ. Giả
sử X là văn bản cần mã hóa và Y là dạng văn bản đã được thay đổi qua việc mã hóa. Khi đó ta ký hiệu:
Y = EK(X)
X
= DK(Y)
Mọi thuật toán mã cổ điển đều là mã khoá đối xứng, vì ở đó thông tin về khóa được chia sẻ giữa người
gửi và người nhận. Mã đối xứng là kiểu duy nhất trước khi phát minh ra khoá mã công khai (còn được gọi
là mã không đối xứng) vào những năm 1970. Hiện nay các mã đối xứng và công khai tiếp tục phát triển và
hoàn thiện. Mã công khai ra đời hỗ trợ mã đối xứng chứ không thay thế nó, do đó mã đối xứng đến nay
vẫn được sử dụng rộng rãi.
Sau đây ta đưa ra định nghĩa một số khái niệm cơ bản về mã hóa.
1. Bản rõ X được gọi là là bản tin gốc. Bản rõ có thể được chia nhỏ có kích thước phù hợp.
2. Bản mã Y là bản tin gốc đã được mã hoá. Ở đây ta thường xét phương pháp mã hóa mà không làm
thay đổi kích thước của bản rõ, tức là chúng có cùng độ dài.
3. là thuật toán E chuyển bản rõ thành bản mã. Thông thường chúng ta cần thuật toán mã hóa
mạnh, cho dù kẻ thù biết được thuật toán, nhưng không biết thông tin về khóa cũng không tìm được bản rõ.
4. Khoá K là thông tin tham số dùng để mã hoá, chỉ có người gửi và nguời nhận biết. Khóa là độc lập
với bản rõ và có độ dài phù hợp với yêu cầu bảo mật.
5. Mã hoá là quá trình chuyển bản rõ thành bản mã, thông thường bao gồm việc áp dụng thuật toán
mã hóa và một số quá trình xử lý thông tin kèm theo.
6. Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngược lại của mã hóa.
7. Mật mã là chuyên ngành khoa học của Khoa học máy tính nghiên cứu về các nguyên lý và
phương pháp mã hoá. Hiện nay người ta đưa ra nhiều chuẩn an toàn cho các lĩnh vực khác nhau của công nghệ thông tin.
8. Thám mã nghiên cứu các nguyên lý và phương pháp giải mã mà không biết khoá. Thông thường
khi đưa các mã mạnh ra làm chuẩn dùng chung giữa các người sử dụng, các mã đó được các kẻ
thám mã cũng như những người phát triển mã tìm hiểu nghiên cứu các phương pháp giải một phần
bản mã với các thông tin không đầy đủ.
9. Lý thuyết mã bao gồm cả mật mã và thám mã. Nó là một thể thống nhất, để đánh giá một mã
mạnh hay không, đều phải xét từ cả hai khía cạnh đó. Các nhà khoa học mong muốn tìm ra các mô
hình mã hóa khái quát cao đáp ứng nhiều chính sách an toàn khác nhau. - 13 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Mô hình mã đối xứng II.1.2 Các yêu cầu.
Một mã đối xứng có các đặc trưng là cách xử lý thông tin của thuật toán mã, giải mã, tác động của khóa
vào bản mã, độ dài của khóa. Mối liên hệ giữa bản rõ, khóa và bản mã càng phức tạp càng tốt, nếu tốc độ
tính toán là chấp nhận được. Cụ thể hai yêu cầu để sử dụng an toàn mã khoá đối xứng là
1. Thuật toán mã hoá mạnh. Có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán,
mọi người đều biết, nhưng việc thám mã là rất khó khăn và phức tạp nếu không biết khóa.
2. Khoá mật chỉ có người gửi và người nhận biết. Có kênh an toàn để phân phối khoá giữa các người
sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không nhận biết được. II.1.3 Mật mã
Hệ mật mã được đặc trưng bởi các yếu tố sau
- Kiểu của thao tác mã hoá được sử dụng trên bản rõ:
1. Phép thế - thay thế các ký tự trên bản rõ bằng các ký tự khác
2. Hoán vị - thay đổi vị trí các ký tự trong bản rõ, tức là thực hiện hoán vị các ký tự của bản rõ.
3. Tích của chúng, tức là kết hợp cả hai kiểu thay thế và hoán vị các ký tự của bản rõ.
- Số khoá được sử dụng khi mã hóa: một khoá duy nhất - khoá riêng hoặc hai khoá - khoá công khai.
Ngoài ra còn xem xét số khóa được dùng có nhiều không.
- Một đặc trưng của mã nữa là cách mà bản rõ được xử lý, theo:
1. Khối - dữ liệu được chia thành từng khối có kích thước xác định và áp dụng thuật toán mã
hóa với tham số khóa cho từng khối.
2. Dòng - từng phần tử đầu vào được xử lý liên tục tạo phần tử đầu ra tương ứng. II.1.4 Thám mã.
Có hai cách tiếp cận tấn công mã đối xứng.
1. Tấn công thám mã dựa trên thuật toán và một số thông tin về các đặc trưng chung về bản rõ
hoặc một số mẫu bản rõ/bản mã. Kiểu tấn công này nhằm khai phá các đặc trưng của thuật
toán để tìm bản rõ cụ thể hoặc tìm khóa. Nếu tìm được khóa thì là tai họa lớn.
2. Tấn công duyệt toàn bộ: kẻ tấn công tìm cách thử mọi khóa có thể trên bản mã cho đến khi
nhận được bản rõ. Trung bình cần phải thử một nửa số khóa mới tìm được.
Các kiểu tấn công thám mã.
- Chỉ dùng bản mã: biết thuật toán và bản mã, dùng phương pháp thống kê, xác định bản rõ.
- Biết bản rõ: biết thuật toán, biết được bản mã/bản rõ tấn công tìm khóa. - 14 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- Chọn bản rõ: chọn bản rõ và nhận được bản mã, biết thuật toán tấn công tìm khóa.
- Chọn bản mã: chọn bản mã và có được bản rõ tương ứng, biết thuật toán tấn công tìm khóa.
- Chọn bản tin: chọn được bản rõ hoặc mã và mã hoặc giải mã tuơng ứng, tấn công tìm khóa.
II.1.5 Tìm duyệt tổng thể (Brute-Force)
Về mặt lý thuyết phương pháp duyệt tổng thể là luôn thực hiện được, do có thể tiến hành thử từng khoá,
mà số khoá là hữu hạn. Phần lớn công sức của các tấn công đều tỷ lệ thuận với kích thước khoá. Khóa
càng dài thời gian tìm kiếm càng lâu và thường tăng theo hàm mũ. Ta có thể giả thiết là kẻ thám mã có thể
dựa vào bối cảnh để biết hoặc nhận biết được bản rõ.
Sau đây là một số thống kê về mối liên hệ giữa độ dài khóa, kích thước không gian khóa, tốc độ xử lý và
thời gian tìm duyệt tổng thể. Chúng ta nhận thấy với độ dài khóa từ 128 bit trở lên, thời gian yêu cầu là rất
lớn, lên đến hàng tỷ năm, như vậy có thể coi phương pháp duyệt tổng thể là không hiện thực. II.1.6 Độ an toàn.
Có thể phân lọai an toàn thành hai kiểu như sau:
- An toàn không điều kiện: ở đây không quan trọng máy tính mạnh như thế nào, có thể thực hiện được
bao nhiêu phép toán trong một giây, mã hoá không thể bị bẻ, vì bản mã không cung cấp đủ thông tin
để xác định duy nhất bản rõ. Việc dùng bộ đệm ngẫu nhiên một lần để mã dòng cho dữ liệu mà ta sẽ
xét cuối bài này được coi là an toàn không điều kiện. Ngoài ra chưa có thuật toán mã hóa nào được coi
là an toàn không điều kiện.
- An toàn tính toán: với nguồn lực máy tính giới hạn và thời gian có hạn (chẳng hạn thời gian tính toán
không quá tuổi của vũ trụ) mã hoá coi như không thể bị bẻ. Trong trường hợp này coi như mã hóa an
toàn về mặt tính toán. Nói chung từ nay về sau, một thuật toán mã hóa an toàn tính toán được coi là an toàn.
II.2 Các mã thế cổ điển thay thế
Có hai loại mã cổ điển là mã thay thế và mã hoán vị (hay còn gọi là dịch chuyển).
Mã thay thế là phương pháp mà từng kí tự (nhóm kí tự) trong bản rõ được thay thế bằng một kí tự (một
nhóm kí tự) khác để tạo ra bản mã. Bên nhận chỉ cần thay thế ngược lại trên bản mã để có được bản rõ ban đầu. - 15 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Trong phương pháp mã hoán vị, các kí tự trong bản rõ vẫn được giữ nguyên, chúng chỉ được sắp xếp lại
vị trí để tạo ra bản mã. Tức là các kí tự trong bản rõ hoàn toàn không bị thay đổi bằng kí tự khác mà chỉ
đảo chỗ của chúng để tạo thành bản mã.
Trước hết ta xét các mã cổ điển sử dụng phép thay thế các chữ của bản rõ bằng các chữ khác của bảng chữ để tạo thành bản mã.
- Ở đây các chữ của bản rõ được thay bằng các chữ hoặc các số hoặc các ký tự khác.
- Hoặc nếu xem bản rõ như môt dãy bít, thì phép thế thay các mẫu bít bản rõ bằng các mẫu bít bản mã. II.2.1 Mã Ceasar
Đây là mã thế được biết sớm nhất, được sáng tạo bởi Julius Ceasar. Lần đầu tiên được sử dụng trong quân
sự. Việc mã hoá được thực hiện đơn giản là thay mỗi chữ trong bản rõ bằng chữ thứ ba tiếp theo trong bảng chữ cái. • Ví dụ: o Meet me after the toga party o PHHW PH DIWHU WKH WRJD SDUWB
Ở đây thay chữ m bằng chữ đứng thứ 3 sau m là p (m, n, o, p); thay chữ e bằng chữ đứng thứ 3 sau e là h (e, f, g, h). •
Có thể định nghĩa việc mã hoá trên qua ánh xạ trên bảng chữ cái sau: các chữ ở dòng dưới là mã
của các chữ tương ứng ở dòng trên:
a b c d e f g h i j k l m n o p q r s t u v w x y z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
• Về toán học, nếu ta gán số thứ tự cho mỗi chữ trong bảng chữ cái. Các chữ ở dòng trên có số thứ
tự tương ứng là số ở dòng dưới: a b c d e f g h i j k l m 0 1 2 3 4 5 6 7 8 9 10 11 12 n o p q r s t u v w x y z
13 14 15 16 17 18 19 20 21 22 23 24 25
thì mã Ceasar được định nghĩa qua phép tịnh tiến các chữ như sau:
c = E(p) = (p + k) mod (26)
p = D(c) = (c – k) mod (26)
Ở đây, p là số thứ tự của chữ trong bản rõ và c là số thứ tự của chữ tương ứng của bản mã; k là
khoá của mã Ceasar. Có 26 giá trị khác nhau của k, nên có 26 khoá khác nhau. Thực tế độ dài khoá
ở đây chỉ là 1, vì mọi chữ đều tịnh tiến đi một khoảng như nhau. • Thám mã Ceasar
là việc làm đơn giản, do số khoá có thể có là rất ít.
Chỉ có 26 khoá có thể, vì A chỉ có thể ánh xạ vào một trong số 26 chữ cái của bảng chữ cái tiếng
Anh: A, B, C, …Các chữ khác sẽ được xác định bằng số bước tịnh tiến tương ứng của A. Kẻ thám
mã có thể thử lần lượt từng khoá một, tức là sử dụng phương pháp tìm duyệt tổng thể. Vì số khoá
ít nên việc tìm duyệt là khả thi. Cho trước bản mã, thử 26 cách dịch chuyển khác nhau, ta sẽ đoán
nhận thông qua nội dung các bản rõ nhận được.
Ví dụ. Bẻ bản mã "GCUA VQ DTGCM" bằng cách thử các phép tịnh tiến khác nhau của bảng chữ, ta
chọn được bước tịnh tiến thích hợp là 24 và cho bản rõ là "easy to break". - 16 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
II.2.2 Các mã bảng chữ đơn
Bây giờ ta khắc phục nhược điểm của mã Ceasar bằng cách mã hoá các chữ không chỉ là dịch chuyển
bảng chữ, mà có thể tạo ra các bước nhảy khác nhau cho các chữ. Trong một mã mỗi chữ của bản rõ được
ánh xạ đến một chữ khác nhau của bản mã. Do đó mỗi cách mã như vậy sẽ tương ứng với một hoán vị của
bảng chữ và hoán vị đó chính là khoá của mã đã cho. Như vậy độ dài khoá ở đây là 26 và số khoá có thể
có là 26!. Số khoá như vậy là rất lớn.
Ví dụ. Ta có bản mã tương ứng với bản rõ trong mã bảng chữ đơn như sau:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: DKVQFIBJWPESCXHTMYAUOLRGZN
Plaintext: ifwewishtoreplaceletters
Ciphertext: WIRFRWAJUHYFTSDVFSFUUFYA
- Tính an toàn của mã trên bảng chữ đơn. Tổng cộng có 26! xấp xỉ khoảng 4 x 1026 khoá. Với khá
nhiều khoá như vậy nhiều người nghĩ là mã trên bảng chữ đơn sẽ an toàn. Nhưng không phải như vậy.
Vấn đề ở đây là do các đặc trưng về ngôn ngữ. Tuy có số lượng khoá lớn, nhưng do các đặc trưng về
tần suất xuất hiện của các chữ trong bản rõ và các chữ tương ứng trong bản mã là như nhau, nên kẻ
thám mã có thể đoán được ánh xạ của một số chữ và từ đó mò tìm ra chữ mã cho các chữ khác. Ta sẽ
xét khía cạnh này cụ thể trong mục sau.
- Tính dư thừa của ngôn ngữ và thám mã. Ngôn ngữ của loài người là dư thừa. Có một số chữ hoặc các
cặp chữ hoặc bộ ba chữ được dùng thường xuyên hơn các bộ chữ cùng độ dài khác. Chẳng hạn như
các bộ chữ sau đây trong tiếng Anh "th lrd s m shphrd shll nt wnt". Tóm lại trong nhiều ngôn ngữ các
chữ không được sử dụng thường xuyên như nhau. Trong tiếng Anh chữ E được sử dụng nhiều nhất;
sau đó đến các chữ T, R, N, I, O, A, S. Một số chữ rất ít dùng như: Z, J, K, Q, X. Bằng phương pháp thống kê, ta c
ó thể xây dựng các bảng các tần suất các chữ đơn, cặp chữ, bộ ba chữ. o
Bảng tần suất chữ cái tiếng Anh: •
Sử dụng bảng tần suất vào việc thám mã
Điều quan trọng là mã thế trên bảng chữ đơn không làm thay đổi tần suất tương đối của các chữ,
có nghĩa là ta vẫn có bảng tần suất trên nhưng đối với bảng chữ mã tương ứng. Điều đó được phát
hiện bởi các nhà khoa học Ai cập từ thế kỷ thứ 9. Do đó có cách thám mã trên bảng chữ đơn như sau:
- Tính toán tần suất của các chữ trong bản mã
- So sánh với các giá trị đã biết - 17 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- Tìm kiếm các chữ đơn hay dùng A-I-E, bộ đôi NO và bộ ba RST; và các bộ ít dùng JK, X-Z..
- Trên bảng chữ đơn cần xác định các chữ dùng các bảng bộ đôi và bộ ba trợ giúp.
Ví dụ. Thám mã bản mã trên bảng chữ đơn, cho bản mã:
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ
VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEP OPDZSZUFPOUDTMOHMQ
- Tính tần suất các chữ - Đoán P và Z là e và t.
- Khi đó ZW là th và ZWP là the.
- Suy luận tiếp tục ta có bản rõ:
it was disclosed yesterday that several informal but
direct contacts have been made with political representatives in moscow II.2.3 Mã Playfair
Như chúng ta đã thấy không phải số khoá lớn trong mã bảng chữ đơn đảm bảo an toàn mã. Một trong các
hướng khắc phục là mã bộ các chữ, tức là mỗi chữ sẽ được mã bằng một số chữ khác nhau tùy thuộc vào
các chữ mà nó đứng cạnh. Playfair là một trong các mã như vậy, được sáng tạo bởi Charles Wheastone
vào năm 1854 và mang tên người bạn là Baron Playfair. Ở đây mỗi chữ có thể được mã bằng một trong 7
chữ khác nhau tùy vào chữ cặp đôi cùng nó trong bản rõ.
Ma trận khoá Playfair. Cho trước một từ làm khoá, với điều kiện trong từ khoá đó không có chữ cái nào bị
lặp. Ta lập ma trận Playfair là ma trận cỡ 5 x 5 dựa trên từ khoá đã cho và gồm các chữ trên bảng chữ cái,
được sắp xếp theo thứ tự như sau:
- Trước hết viết các chữ của từ khoá vào các hàng của ma trận bắt từ hàng thứ nhất.
- Nếu ma trận còn trống, viết các chữ khác trên bảng chữ cái chưa được sử dụng vào các ô còn lại.
Có thể viết theo một trình tự qui ước trước, chẳng hạn từ đầu bảng chữ cái cho đến cuối.
- Vì có 26 chữ cái tiếng Anh, nên thiếu một ô. Thông thuờng ta dồn hai chữ nào đó vào một ô chung, chẳng hạn I và J.
- Giả sử sử dụng từ khoá MORNACHY. Lập ma trận khoá Playfair tương ứng như sau: MONAR CHYBD EFGIK LPQST UVWXZ
Mã hoá và giải mã: bản rõ được mã hoá 2 chữ cùng một lúc theo qui tắc như sau:
- Chia bản rõ thành từng cặp chữ. Nếu một cặp nào đó có hai chữ như nhau, thì ta chèn thêm một
chữ lọc chẳng hạn X. Ví dụ, trước khi mã “balloon” biến đổi thành “ba lx lo on”.
- Nếu cả hai chữ trong cặp đều rơi vào cùng một hàng, thì mã mỗi chữ bằng chữ ở phía bên phải nó
trong cùng hàng của ma trận khóa (cuộn vòng quanh từ cuối về đầu), chẳng hạn “ar” biến đổi thành “RM”
- Nếu cả hai chữ trong cặp đều rơi vào cùng một cột, thì mã mỗi chữ bằng chữ ở phía bên dưới nó
trong cùng cột của ma trận khóa (cuộn vòng quanh từ cuối về đầu), chẳng hạn “mu” biến đổi thành “CM”
- Trong các trường hợp khác, mỗi chữ trong cặp được mã bởi chữ cùng hàng với nó và cùng cột
với chữ cùng cặp với nó trong ma trận khóa. Chẳng hạn, “hs” mã thành “BP”, và “ea” mã thành
“IM” hoặc “JM” (tuỳ theo sở thích) An toàn của mã Playfair: - 18 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- An toàn được nâng cao so hơn với bảng đơn, vì ta có tổng cộng 26 x 26 = 676 cặp. Mỗi chữ có
thể được mã bằng 7 chữ khác nhau, nên tần suất các chữ trên bản mã khác tần suất của các chữ cái
trên văn bản tiếng Anh nói chung.
- Muốn sử dụng thống kê tần suất, cần phải có bảng tần suất của 676 cặp để thám mã (so với 26
của mã bảng đơn). Như vậy phải xem xét nhiều trường hợp hơn và tương ứng sẽ có thể có nhiều
bản mã hơn cần lựa chọn. Do đó khó thám mã hơn mã trên bảng chữ đơn.
- Mã Playfair được sử dụng rộng rãi nhiều năm trong giới quân sự Mỹ và Anh trong chiến tranh
thế giới thứ 1. Nó có thể bị bẻ khoá nếu cho trước vài trăm chữ, vì bản mã vẫn còn chứa nhiều cấu trúc của bản rõ. II.2.4 Các mã đa bảng
Một hướng khác làm tăng độ an toàn cho mã trên bảng chữ là sử dụng nhiều bảng chữ để mã. Ta sẽ gọi
chúng là các mã thế đa bảng. Ở đây mỗi chữ có thể được mã bằng bất kỳ chữ nào trong bản mã tùy thuộc
vào ngữ cảnh khi mã hoá. Làm như vậy để trải bằng tần suất các chữ xuất hiện trong bản mã. Do đó làm
mất bớt cấu trúc của bản rõ được thể hiện trên bản mã và làm cho thám mã đa bảng khó hơn. Ta sử dụng
từ khoá để chỉ rõ chọn bảng nào được dùng cho từng chữ trong bản tin. Sử dụng lần lượt các bảng theo từ
khóa đó và lặp lại từ đầu sau khi kết thúc từ khoá. Độ dài khoá là chu kỳ lặp của các bảng chữ. Độ dài
càng lớn và nhiều chữ khác nhau được sử dụng trong từ khoá thì càng khó thám mã. II.2.5 Mã Vigenere
Mã thế đa bảng đơn giản nhất là mã Vigenere. Thực chất quá trình mã hoá Vigenere là việc tiếh hành
đồng thời dùng nhiều mã Ceasar cùng một lúc trên bản rõ với nhiều khoá khác nhau. Khoá cho mỗi chữ
dùng để mã phụ thuộc vào vị trí của chữ đó trong bản rõ và được lấy trong từ khoá theo thứ tự tương ứng.
Giả sử khoá là một chữ có độ dài d được viết dạng K = K1K2…Kd, trong đó Ki nhận giá trị nguyên từ 0
đến 25. Khi đó ta chia bản rõ thành các khối gồm d chữ. Mỗi chữ thứ i trong khối chỉ định dùng bảng chữ
thứ i với tịnh tiến là Ki giống như trong mã Ceasar. Trên thực tế khi mã ta có thể sử dụng lần lượt các bảng
chữ và lặp lại từ đầu sau d chữ của bản rõ. Vì có nhiều bảng chữ khac nhau, nên cùng một chữ ở các vị trí
khác nhau sẽ có các bước nhảy khác nhau, làm cho tần suất các chữ trong bản mã dãn tương đối đều.
Giải mã đơn giản là quá trình làm ngược lại. Nghĩa là dùng bản mã và từ khoá với các bảng chữ tương
ứng, nhưng với mỗi chữ sử dụng bước nhảy lui lại về đầu.
Ví dụ: Để sử dụng mã Vigenere với từ khóa và bản rõ cho trước ta có thể làm như sau: - Viết bản rõ ra
- Viết từ khoá lặp nhiều lần phía trên tương ứng của nó
- Sử dụng mỗi chữ của từ khoá như khoá của mã Ceasar
- Mã chữ tương ứng của bản rõ với bước nhảy tương ứng.
- Chẳng hạn sử dụng từ khoá deceptive
key: deceptivedeceptivedeceptive
plaintext: wearediscoveredsaveyourself
ciphertext:ZICVTWQNGRZGVTWAVZHCQYGL
Để mã chữ w đầu tiên ta tìm chữ đầu của khóa là d, như vậy w sẽ được mã trên bảng chữ tịnh tiến 3 (tức là
a tịnh tiến vào d). Do đó chữ đầu w được mã bởi chữ Z. Chữ thứ hai trong từ khóa là e, có nghĩa là chữ
thứ hai trong bản rõ sẽ được tịnh tiến 4 (từ a tịnh tiến đến e). Như vậy thứ hai trong bản rõ e sẽ được mã
bởi chữ I. Tương tự như vậy cho đến hết bản rõ.
Trên thực tế để hỗ trợ mã Vigenere, người ta đã tạo ra trang Saint – Cyr để trợ giúp cho việc mã và giải
mã thủ công. Đó là một bảng cỡ 26 x 26 có tên tương ứng là các chữ cái trong bảng chữ tiếng Anh. Hàng
thứ i là tịnh tiến i chữ của bảng chứ cái. Khi đó chữ ở cột đầu tiên chính là khoá của bảng chữ ở cùng - 19 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
hàng. Do đó chữ mã của một chữ trong bản rõ nằm trên cùng cột với chữ đó và nằm trên hàng tương ứng với chữ khoá. ABCDEFGHIJKLMNOPQRSTUVWXYZ A ABCDEFGHIJKLMNOPQRSTUVWXYZ B BCDEFGHIJKLMNOPQRSTUVWXYZA C CDEFGHIJKLMNOPQRSTUVWXYZAB D DEFGHIJKLMNOPQRSTUVWXYZABC E EFGHIJKLMNOPQRSTUVWXYZABCD F FGHIJKLMNOPQRSTUVWXYZABCDE G GHIJKLMNOPQRSTUVWXYZABCDEF H HIJKLMNOPQRSTUVWXYZABCDEFG I IJKLMNOPQRSTUVWXYZABCDEFGH J JKLMNOPQRSTUVWXYZABCDEFGHI K KLMNOPQRSTUVWXYZABCDEFGHIJ L LMNOPQRSTUVWXYZABCDEFGHIJK M MNOPQRSTUVWXYZABCDEFGHIJKL N NOPQRSTUVWXYZABCDEFGHIJKLM O OPQRSTUVWXYZABCDEFGHIJKLMN P PQRSTUVWXYZABCDEFGHIJKLMNO Q QRSTUVWXYZABCDEFGHIJKLMNOP R RSTUVWXYZABCDEFGHIJKLMNOPQ S STUVWXYZABCDEFGHIJKLMNOPQR T TUVWXYZABCDEFGHIJKLMNOPQRS U UVWXYZABCDEFGHIJKLMNOPQRST V VWXYZABCDEFGHIJKLMNOPQRSTU W WXYZABCDEFGHIJKLMNOPQRSTUV X XYZABCDEFGHIJKLMNOPQRSTUVW Y YZABCDEFGHIJKLMNOPQRSTUVWX Z ZABCDEFGHIJKLMNOPQRSTUVWXY Bảng Saint Cyr
An toàn của mã Vigenere. Như vậy có chữ mã khác nhau cho cùng một chữ của bản rõ. Suy ra tần suất
của các chữ bị là phẳng, nghĩa là tần suất xuất hiện các chữ trên bản mã tương đối đều nhau. Tuy nhiên
chưa mất hoàn toàn, do độ dài của khoá có hạn, nên có thể tạo nên chu kỳ vòng lặp. Kẻ thám mã bắt đầu
từ tần suất của chữ để xem có phải đây là mã đơn bảng chữ hay không. Giả sử đây là mã đa bảng chữ, sau
đó xác định số bảng chữ trong từ khoá và lần tìm từng chữ. Như vậy cần tăng độ dài từ khoá để tăng số
bảng chữ dùng khi mã để “là” tần suất của các chữ.
II.2.6 Phương pháp thám mã Kasiski
Phương pháp phát triển bởi Babbage và Kasiski. Ta thấy các chữ như nhau trên bản rõ và cách nhau một
khoảng đúng bằng độ dài từ khoá (chu kỳ), thì sẽ được mã bằng cùng một chữ. Như vậy từ độ lặp của các
chữ trong bản mã có thể cho phép xác định chu kỳ. Tất nhiên không phải khi nào cũng tìm được độ dài từ
khoá. Sau đó tìm các chữ trong từ khoá bằng cách tấn công từng bảng chữ đơn với cùng kỹ thuật dựa trên
các bảng tần suất của các bộ chữ như trước.
II.2.7 Mã khoá tự động
Lý tưởng nhất là ta có khoá dài như bản tin. Do đó Vigenere đề xuất khoá tự động sinh cho bằng độ dài
bản tin như sau: từ khoá được nối tiếp bằng chính bản rõ để tạo thành khoá. Sau đó dùng mã Vigenere để - 20 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
mã bản rõ đã cho. Khi đó biết từ khoá có thể khôi phục được một số chữ ban đầu của bản rõ. Sau đó tiếp
tục sử dụng chúng để giải mã cho văn bản còn lại. Sự cải tiến này làm mất khái niệm chu kỳ, gây khó
khăn cho việc thám mã, nhưng vẫn còn đặc trưng tần suất để tấn công.
Ví dụ. Cho từ khoá deceptive. Ta viết bản rõ nối tiếp vào từ khoá tạo thành từ khoá mới có độ dài bằng độ dài bản rõ.
key: deceptivewearediscoveredsav
plaintext: wearediscoveredsaveyourself
ciphertext:ZICVTWQNGKZEIIGASXSTSLVVWLA
II.2.8 Bộ đệm một lần
Nếu khoá thực sự ngẫu nhiên được dùng và có độ dài bằng bản rõ thì ta nói đó là bộ đệm một lần. Vì nó
chỉ được dùng một lần và ngẫu nhiên, nên mã hoá sẽ an toàn. Mã sẽ không bẻ được vì bản mã không có
liên quan thống kê gì với bản rõ, do bộ đệm được sinh ngẫu nhiên. Có thể nói mã bộ đệm một lần là an
toàn tuyệt đối, vì với bản rõ bất kỳ và bản mã bất kỳ, luôn tồn tại một khoá để ánh xạ bản rõ đó sang bản
mã đã cho. Về mặt lý thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã là mã
của một bản rõ cho trước là như nhau. Khoá chỉ sử dụng một lần, nên các lần mã là độc lập với nhau.
Vấn đề khó khăn của mã bộ đệm một lần là việc sinh ngẫu nhiên khóa và phân phối khoá an toàn. Do đó
bộ đệm một lần ít được sử dụng và chỉ dùng trong trường hợp đòi hỏi bảo mật rất cao.
II.3 Các mã thế cổ điển hoán vị
Trong các mục trước chúng ta đã xét một số mã thay thế, ở đó các chữ của bản rõ được thay thế bằng các
chữ khác của bản mã. Bây giờ chúng ta xét đến loại mã khác, mã hoán vị, các chữ trong bản rõ không
được thay thế bằng các chữ khác mà chỉ thay đổi vị trí, tức là việc mã hoá chỉ dịch chuyển vị trí tương đối
giữa các chữ trong bản rõ. Như vậy, nó dấu bản rõ bằng cách thay đổi thứ tự các chữ, nó không thay đổi
các chữ thực tế được dùng. Do đó bản mã có cùng phân bố tần suất xuất hiện các chữ như bản gốc. Như
vậy có thể thám mã để phát hiện được. II.3.1 Mã Rail Fence
Đây là mã hoán vị đơn giản. Viết các chữ của bản rõ theo đường chéo trên một số dòng. Sau đó đọc các
chữ theo theo từng dòng sẽ nhận được bản mã. Số dòng chính là khoá của mã. Vì khi biết số dòng ta sẽ
tính được số chữ trên mỗi dòng và lại viết bản mã theo các dòng sau đó lấy bản rõ bằng cách viết lại theo các cột.
Ví dụ. Viết bản tin “meet me after the toga party” lần lượt trên hai dòng như sau m e m a t r h t g p r y e t e f e t e o a a t
Sau đó ghép các chữ ở dòng thứ nhất với các chữ ở dòng thứ hai cho bản mã: MEMATRHTGPRYETEFETEOAAT
II.3.2 Mã dịch chuyển dòng
Mã có sơ đồ phức tạp hơn. Viết các chữ của bản tin theo các dòng với số cột xác định. Sau đó thay đổi thứ
tự các cột theo một dãy số khoá cho truớc, rồi đọc lại chúng theo các cột để nhận được bản mã. Quá trình
giải mã được thực hiện ngược lại. Ví dụ: Key: 4 3 1 2 5 6 7 Plaintext: a t t a c k p o s t p o n e - 21 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin d u n t i l t w o a m x y z
Ta đọc theo thứ tự các cột từ 1 đến 7 để nhận được bản mã:
Ciphertext: TTNAAPTMTSUOAODWCOIXKNLYPETZ II.3.3 Mã tích
Mã dùng hoán vị hoặc dịch chuyển không an toàn vì các đặc trưng tần xuất của ngôn ngữ không thay đổi.
Có thể sử dụng một số mã liên tiếp nhau sẽ làm cho mã khó hơn. Mã cổ điển chỉ sử dụng một trong hai
phương pháp thay thế hoặc hoán vị. Người ta nghĩ đến việc kết hợp cả hai phương pháp này trong cùng
một mã và có thể sử dụng đan xen hoặc lặp nhiều vòng. Đôi khi ta tưởng lặp nhiều lần cùng một loại mã
sẽ tạo nên mã phức tạp hơn, nhưng trên thực tế trong một số trường hợp về bản chất chúng cũng tương
đương với một lần mã cùng loại nào đó như: tích của hai phép thế sẽ là một phép thế; tích của hai phép
hoán vị sẽ là một phép hoán vị. Nhưng nếu hai loại mã đó khác nhau thì sẽ tạo nên mã mới phức tạp hơn,
chính vì vậy phép thế được nối tiếp bằng phép dịch chuyển sẽ tạo nên mã mới khó hơn rất nhiều. Đây
chính là chiếc cầu nối từ mã cổ điển sang mã hiện đại.
Điểm yếu của mã cổ điển:
- Phương pháp mã hoá cổ điển có thể dễ dàng bị giải mã bằng cách đoán chữ dựa trên phương pháp
thống kê tần xuất xuất hiện các chữ cái trên mã và so sánh với bảng thống kê quan sát của bản rõ.
- Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải thống nhất với nhau về cơ chế mã
hoá cũng như giải mã. Nếu không thì hai bên sẽ không thể làm việc được với nhau.
II.4 Một số vấn đề khác. II.4.1 Máy quay
Trước khi có mã hiện đại, máy quay là mã tích thông dụng nhất. Chúng được sử dụng rộng rãi trong chiến
tranh thế giới thứ hai: Đức, đồng minh và Nhật. Máy quay tạo nên mã thay thế rất đa dạng và phức tạp.
Trong máy có sử dụng một số lõi hình trụ, mỗi lõi ứng với một phép thế, khi quay sẽ thay thế mỗi chữ
bằng một chữ khác tương ứng. Với 3 hình trụ khác nhau, ta có 26 x 26 x 26 = 17576 bảng chữ. II.4.2 Dấu tin
Một trong những kỹ thuật khác để đảm bảo tính bảo mật của thông tin được gửi là dấu tin. Đây là một sự
lựa chọn dùng kết hợp hoặc đồng thời với mã. Dấu tin là dấu sự tồn tại của bản tin cần bảo mật trong một
thông tin khác như: trong bản tin dài chỉ dùng một tập con các chữ/từ được đánh dấu bằng cách nào đó; sử
dụng mực không nhìn thấy; dấu tin trong các file âm thanh hoặc hình ảnh. Các kỹ thuật này gần đây cũng
được quan tâm nghiên cứu. Tuy nhiên nó có nhược điểm là chỉ dấu được lượng thông tin nhỏ các bít. - 22 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin - 23 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Bài tập
1. Cho biến đọan mã sau dùng mã Cesar "GCUA VQ DTGCM" Suy luận tìm bản rõ.
2. Sử dụng kỹ thuật thám mã bảng chữ đơn, lập bảng tần suất các chữ, bộ chữ đôi, bộ chữ ba của đọan mã sau:
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIVUEPHZHMDZSHZOWSF
PAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOUDTMOHMQ
Lập luận và cho biết ánh xạ của bảng chữ đơn và đưa ra bản rõ phù hợp
3. Nêu thuật toán dùng bảng Saint Cyr để mã hóa và giải mã Vigenere khi biết từ khóa. Áp dụng thuật
toán đó mã hóa bản rõ sau: “Network Security is very important for software development” với từ
khóa là “COMPUTER SCIENCE”
4. Tại sao có thể nói “Có thể nói mã bộ đệm một lần là an toàn tuyệt đối, vì với bản rõ bất kỳ và bản mã
bất kỳ, luôn tồn tại một khoá để ánh xạ bản rõ đó sang bản mã đã cho”. Giải thích nhận định sau “Về
mặt lý thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã là mã của một bản
rõ cho trước là như nhau”.
5. Tìm bản mã của bản rõ “We are studying cryptography this year” sử dụng mã Playfair với từ khóa “information technology”.
6. Chứng tỏ rằng, phép dịch chuyển không khắc phục được tính dư thừa của ngôn ngữ tự nhiên.
7. Chứng minh rằng tích của hai phép thế đơn là một phép thế đơn và tích của hai phép dịch chuyển là
một phép dịch chuyển. Có thể nói gì về tích của một phép thế đơn và một phép dịch chuyển.
8. Có bao nhiêu khóa Playfair khác nhau.
9. Mã hóa bản rõ “Chung toi se la nhung ky su cong nghe thong tin gioi trong mot vai nam nua” sử dụng từ khóa 631425.
10. Giả sử dùng mã dịch chuyển dòng với 8 cột. Hỏi có bao nhiêu khóa khác nhau. Nêu thuật toán giải mã
với từ khóa cho trước.
11. Chứng minh rằng: tích của hai phép thế sẽ là một phép thế; tích của hai phép hoán vị sẽ là một phép hoán vị. - 24 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG III TRƯỜNG HỮU HẠN Mở đầu
Giới thiệu về cấu trúc đại số - trường hữu hạn. Đây là mô hình toán học đóng vai trò quan trọng
trong lý thuyết mã như đối với chuẩn mã nâng cao AES, mã đường cong Elip, mã IDEA và khoá công
khai. Nó liên quan đến các phép toán trên “số”: ở đây sẽ xét “số” là khái niệm khái quát hơn các số
nguyên, số thực, số phức thường gặp trong số học, nói chung “số” có thể là các phần tử trong một tập hợp
nào đó. Đồng thời trên tập hợp đó có trang bị các phép toán tương ứng thoả mãn một số tính chất nhất
định như các số với các phép toán cộng, trừ hoặc nhân, chia. Ta bắt đầu từ các khái niệm về nhóm, vành,
trường của đại số trừu tượng.
III.1 Các cấu trúc đại số III.1.1 Nhóm
Cho một tập các phần tử hoặc “số” và một phép toán hai ngôi, mà kết quả cũng là một phần tử của tập
hợp đó. Tức là ứng với mỗi cặp phần tử trên tập đó, kết quả của phép toán cũng là một phần tử xác
định của tập đã cho. Tính chất này ta gọi là tính đóng của phép toán trên tập đang xét.
Định nghĩa nhóm. Tập hợp G đó với phép toán . đã cho được gọi là nhóm, nếu nó thỏa mãn các tính
chất sau với mọi phần tử a, b, c thuộc G:
o Tính kết hợp (a.b).c = a.(b.c) o Có đơn vị e: e.a = a.e = a o Có nghịch đảo a-1: a.a-1 = e o
Nếu có thêm tính giao hoán a.b = b.a, thì gọi là nhóm Aben hay nhóm giao hoán.
Định nghĩa nhóm xiclic.
o Định nghĩa lũy thừa như là việc áp dụng lặp phép toán: Ví dụ: a3 = a.a.a o Và đơn vị e=a0 •
o Một nhóm được gọi là xiclic nếu mọi phần tử đều là lũy thừa của một phần tử cố định nào đó.
Chẳng hạn b = ak đối với a cố định và mỗi b trong nhóm.
o Khi đó a được gọi là phần tử sinh của nhóm. III.1.2 Vành
Cho một tập R các “số” với hai phép toán được gọi là cộng và nhân. Ở đây “số” được hiểu là phần tử
của tập hợp và hai phép toán trên xác định trên tập hợp đó. Tập với hai phép toán trên được gọi là
vành, nếu hai phép toán thoả mãn các tính chất sau
o Với phép cộng, R là nhóm Aben o Với phép nhân, có  tính đóng và  tính kết hợp 
tính phân phối đối với phép cộng a(b+c) = ab + ac
Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán. - 25 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nếu phép nhân có nghịch đảo và không có thương 0 (tức là không có hai phần khác 0 mà tích của
chúng lại bằng 0), thì nó tạo thành miền nguyên III.1.3 Trường
Là một tập hợp F với hai phép toán cộng và nhân, thoả mãn tính chất sau:
o Với phép cộng F là nhóm Aben
o Với phép nhân F trừ phần tử 0 là nhóm Aben. o F là một vành
Có thể nói là có các phép toán cộng, trừ, nhân, chia số khác 0. Phép trừ được coi như là cộng với
số đối của phép cộng và phép chia là nhân với số đối của phép nhân: a – b = a + (-b) a / b = a.b-1
Ví dụ: Dễ dàng thấy, với phép cộng và nhân thông thường:
o Tập số nguyên Z là nhóm Aben với phép cộng
o Tập số nguyên Z là vành giao hoán.
o Tập số hữu tỉ Q là trường.
o Tập số thực R là trường.
o Tập số phức C là trường với phép cộng và nhân hai số phức.
III.2 Số học trên Modulo
IV.2.1 Định nghĩa Modulo.
Cho số tự nhiên n và số nguyên a. Ta định nghĩa: a mod n là phần dư dương khi chia a cho n.
Định nghĩa quan hệ tương đương trên tập số nguyên a ≡ b mod n
khi và chỉ khi a và b có phần dư như nhau khi chia cho n.
o Ví dụ: 100 mod 11 = 1; 34 mod 11 = 1, nên 100 ≡ 34 mod 11
o Số b được gọi là đại diện của a, nếu o o a ≡ b mod n (a = qn + b) và 0 <= b < n.
o Ví dụ: -12 mod 7 ≡ -5 mod 7 ≡ 2 mod 7 ≡ 9 mod 7. Ở đây 2 là đại diện của –12, -5, 2 và 9.
o Trong Modulo 7 ta có các lớp tuơng đương viết trên các hàng như sau: ... -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 - 26 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin ...
Các phần tử cùng cột là có quan hệ đồng dư vói nhau. Tập các đại diện của các số nguyên theo
Modulo n gồm n phần tử ký hiệu như sau:
Zn = { 0, 1, 2, 3, …, n-1 }. Ước số
o Số b không âm được gọi là ước số của a, nếu có số m sao cho: a = mb trong đó a, b, m đều nguyên.
o Tức là a chia hết cho b, ký hiệu là b|a
o Ví dụ: 1, 2, 3, 4, 6, 8, 12, 24 là các ước số của 24
III.2.2 Các phép toán số học trên Modulo
Cho trước một số n. Ta muốn thực hiện các phép toán theo Modulo của n. Ta có thể thực hiện các
phép toán trên các số nguyên như các phép cộng, nhân các số nguyên thông thường sau đó rút gọn
lại bằng phép lấy Modulo hoặc cũng có thể vừa tính toán, kết hợp với rút gọn tại bất cứ thời điểm nào:
(a+b) mod n = [a mod n + b mod n] mod n (*)
(a.b) mod n = [a mod n . b mod n] mod n (**)
Như vậy khi thực hiện các phép toán ta có thể thay các số bằng các số tương đương theo Modulo n
đó hoặc đơn giản hơn có thể thực hiện các phép toán trên các đại diện của nó: Zn = { 0, 1, 2, 3, …, n-1 }.
o Zn với các phép toán theo Modulo tạo thành vành giao hoán có đơn vị. Thực vậy tính đóng của
các phép cộng và nhân dựa trên hai công thức (*) và (**). Các tính chất kết hợp, giao hoán và
nghịch đảo được suy ra từ các tính chất tương ứng của các số nguyên.
o Các chú ý về tính chất rút gọn: 
nếu (a+b)≡(a+c) mod n, thì b≡c mod n 
Nhưng (ab)≡(ac) mod n, thì b≡c mod n chỉ khi nếu a là nguyên tố cùng nhau với n
Ví dụ. Áp dụng các tính chất của modulo: 17 17
(11*19 + 10 ) mod 7 = ((11*19) mod 7 + 10 mod 7) mod 7 = 17
((11 mod 7* 19 mod 7) mod 7 + (10 mod 7) mod 7) mod 7= 2 2 2 2
((4.(-2)) mod 7 + (((3 ) ) ) * 3 mod 7)mod 7= 2 2 2
((-1) mod 7 + ((2 ) ) * 3 mod 7)mod 7 = (-1 + 5) mod 7 = 4
Ví dụ: Bảng Modulo 8 với phép cộng - 27 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.2.3 Ước số chung lớn nhất.
Bài toán. Cho hai số nguyên dương a và b. Bài toán tìm ước chung lớn nhất của hai số nguyên
dương là bài toán chung của lý thuyết số. Ta ký hiệu GCD(a,b) là ước số chung dương lớn nhất
của a và b, tức là số nguyên dương vừa là ước của a vừa là ước của b và là số nguyên dương lớn nhất có tính chất đó.
Ví dụ: GCD(60,24) = 12 ; GCD (6, 15) = 3; GCD(8, 21) = 1.
Nguyên tố cùng nhau. Ta thấy 1 bao giờ cũng là ước số chung của hai số nguyên dương bất kỳ.
Nếu GCD(a, b) = 1, thì a, b đựơc gọi là hai số nguyên tố cùng nhau:
Ví dụ: GCD(8,15) = 1, tức là 8 v à 15 là hai số nguyên tố cùng nhau
Tìm ước chung lớn nhất. Bây giờ chúng ta xét bài toán tìm ước số chung lớn nhất của hai số
nguyên dương cho trước. Dễ dàng chứng minh được tính chất sau: GCD(a,b) = GCD(b, a mod b)
Như vậy để tìm ước số chung của một cặp số cho trước, ta đưa về bài toán tìm ước chung của cặp số
gồm số nhỏ hơn trong hai số đó và phần dư của số lớn khi chia cho số nhỏ hơn. Thuật toán Ơcơlít tạo
nên vòng lặp, ở mỗi bước ta áp dụng tính chất trên cho đến khi phần dư đó còn khác 0. • •
Thuật toán Ơcơlit tìm GCD(a, b) A=a, B=b while B>0 •R = A mod B A = B, B = R return A
Ví dụ: GCD(1970,1066) 1970 = 1 x 1066 + 904 gcd(1066, 904) 1066 = 1 x 904 + 162 gcd(904, 162) 904 = 5 x 162 + 94 gcd(162, 94) 162 = 1 x 94 + 68 gcd(94, 68) 94 = 1 x 68 + 26 gcd(68, 26) 68 = 2 x 26 + 16 gcd(26, 16) 26 = 1 x 16 + 10 gcd(16, 10) 16 = 1 x 10 + 6 gcd(10, 6) 10 = 1 x 6 + 4 gcd(6, 4) 6 = 1 x 4 + 2 gcd(4, 2) 4 = 2 x 2 + 0 gcd(1970, 1066) = 2 - 28 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin III.3 Trường Galoa
Ta muốn đi tìm một trường số có hữu hạn các phần tử, tức là một tập hữu hạn các phần tử mà ở đó
có thể cộng trừ, nhân, chia mà không vượt ra ngoài phạm vi tập hữu hạn các phần tử đó. Trường Galoa
thuộc lọai đó và đóng vai trò quan trọng trong lý thuyết mã .
Có thể chứng minh được rằng số các phần tử của trường hữu hạn bất kỳ bằng lũy thừa của p m của sô
nguyên tố p nào đó, ta ký hiệu
trường Galoa đó là GL(pm). Thông t
hường ta sử dụng các trường: GL(p) và GL(2m).
Sau đây chúng ta sẽ xây dựng các trường Galoa đó.
III.3.1 Trường Galoa
GL(p), với p là số nguyên tố.
o GL(p) gồm tập {0,1, … , p-1}
o Với các phép toán cộng và nhân Modulo, như ta đã biết GL(p) tạo thành một vành giao
hoán. Vì p là số nguyên tố nên mọi số khác 0 nhỏ hơn p đều nguyên tố cùng nhau với p.
• GL(p) tạo thành trường vì mọi a thuộc {1, … , p-1} đều có phần tử nghịch đảo a-1: a . a-1 = 1.
Thực vậy vì a và p nguyên tố cùng nhau nên theo thuật toán tìm nghịch đảo dưới đây ta sẽ tìm
được nghịch đảo của a.
Như vậy trên GL(p) ta có thể thực hiện các phép toán cộng, trừ, nhân, chia.
Ví dụ phép nhân trên GL(7)
III.3.2 Tìm số nghịch đảo
Bây giờ ta xét bài toán: nếu GCD(m, b) = 1, thì tìm nghịch đảo của b theo Modulo m. Ta mở rộng
thuật toán Ơcơlit vừa tìm ước chung lớn nhất của m và b, vừa tính nghịch đảo trong trường hợp GCD(m, b) = 1.
Thuật toán Euclid mở rộng: - 29 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
EXTENDED EUCLID(m, b)
1.(A1, A2, A3)=(1, 0, m); (B1, B2, B3)=(0, 1, b) 2. if B3 = 0
return A3 = gcd(m, b); no inverse 3. if B3 = 1
return B3 = gcd(m, b); B2 = b–1 mod m 4. Q = A3 div B3
5. (T1,T2,T3)=(A1 – Q*B1,A2 – Q*B2, A3 – Q*B3)
6. (A1, A2, A3)=(B1, B2, B3)
7. (B1, B2, B3)=(T1, T2, T3) 8. goto 2
Thực vậy, các quan hệ sau là bất biến: mA1 + bA2 = A3; (1) mB1+ bB2 = B3 (2) mT1 + bT2 = T3; (3)
Vì ban đầu: m.1 + b.0 = m; m.0 +b.1 = b, nên ta có (1) và (2) đúng. Và ta chứng minh trong một bước
lặp từ (1) và (2) suy ra (3). Từ thuật toán ta có : T1 = A1 – Q.B1 T2 = A2 – Q.B2 T3 = A3 – Q.B3
Nên ta sẽ chứng minh đẳng thức (3) còn lại
mT1 + bT2 = m(A1 – Q.B1) + b (A2 – Q.B2) = (mA1 + bA2) - Q(mB1+ bB2) = A3 – Q.B3 = T3
Khi sang bước lặp tiếp theo đổi vai trò B sang A và T sang B, thì các công thức đối (1) và (2) đối với
A, B sẽ đúng, và do đó theo chứng minh trên (3) sẽ đúng trong bước lặp tiếp theo. Vậy (1), (2), (3) là
các bất biến của vòng lặp.
Cuối cùng khi B3 = 1, thì từ các bất biến ta có: mB1+ bB2 = 1 bB2 = 1- mB1 bB2 = 1 mod m Do đó: B2 = b-1 mod m
Ví dụ. Tìm nghịch đảo của 550 trong GL(1759).
Mỗi bước thực hiện thuật toán Ơcơlit mở rộng sẽ được mô tả bởi một hàng trong bảng sau. - 30 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Sau 4 bước. ta có B3 = 1, khi đó thuật toán dừng, GCD(1759, 550) = 1 và 550-1 mod 1759 = 355.
III.3.3 Số học đa thức
Ta xét tập các đa thức Pn có bậc nhỏ hơn hoặc bằng n:
Trên tập các đa thức đó ta có thể có một số cách khác nhau thực hiện các phép toán cộng và nhân đa thức:
o Có thể thực hiện các phép toán thông thường trên đa thức
o Các phép toán trên đa thức với các hệ số trên Modulo p
o Các phép toán trên đa thức với các hệ số trên Modulo p và sau đó lầy Modulo theo đa thức m(x) •
Phép toán đa thức thông thường
o Cộng trừ các hệ số tương ứng
o Nhân mọi hệ số với cùng một số.
Ví dụ. f(x) = x3 + x2 + 2 và g(x) = x2 – x + 1
f(x) + g(x) = x3 + 2x2 – x + 3
f(x) – g(x) = x3 + x + 1
f(x) . g(x) = x5 + 3x2 – 2x + 2 •
Phép toán đa thức với Modulo hệ số
o Cho số nguyên tố p tùy ý
o Tính các hệ số theo Modulo p. Khi đó tập các hệ số được lấy từ trường GL(p). Còn phép
nhân đa thức có thể nhận được kết quả là đa thức bậc lớn hơn n.
o Ta thường quan tâm đến Mod 2, tức là mọi hệ số là 0 hoặc 1
Giả sử f(x) = x3 + x2 and g(x) = x2 + x + 1
f(x) + g(x) = x3 + x + 1
f(x) . g(x) = x5 + x2
Sau đây ta xét riêng trường hợp khi các phép tóan cộng, nhân đa thức được thực hiện với phép lấy
Modulo theo một đa thức nào đó.
III.3.4 Phép toán đa thức với Modulo đa thức
Cho đa thức g(x) bậc n và các hệ số của các đa thức xét trong mục này lầy trong trường Galoa
GF(p) với p là số nguyên tố. Viết đa thức f(x) dưới dạng:
f(x) = q(x) g(x) + r(x)
trong đó r(x) là phần dư khi chia f(x) cho g(x). Rõ ràng bậc của r(x) sẽ nhỏ hơn bậc của g(x).
Ta viết r(x) = f(x) mod g(x) - 31 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Nếu không có phần dư, tức là r(x) = 0, ta nói g(x) là ước của f(x) hay g(x) chia hết f(x) hay f(x) chia hết cho g(x). •
Trong trường hợp g(x) không có ước ngoài 1 và chính nó, thì ta nói g(x) là đa thức nguyên tố hoặc
không rút gọn được. Ví dụ g(x) = x3 + x + 1 là đa thức nguyên tố.
• Việc tìm ước chung lớn nhất của hai đa thức được trình bày trong thuật toán tương tự như Ơcolit như sau:
Tìm đa thức ước chung lớn nhất GCD(a(x), b(x))
o c(x) = GCD(a(x), b(x)) nếu c(x) là đa thức bậc lớn nhất mà chia hết cả a(x), b(x)
o Có thể điều chỉnh thuật toán Euclid’s Algorithm để tìm nó:
EUCLID[a(x), b(x)]
1. A(x) = a(x); B(x) = b(x)
2. if B(x) = 0 return A(x) = gcd[a(x), b(x)]
3. R(x) = A(x) mod B(x)
4. A(x) ¨ B(x)
5. B(x) ¨ R(x) 6. goto 2
Thuật toán tìm nghịch đảo của một đa thức theo một đa thức nguyên tố cùng nhau với nó, được trình
bày tương tự như Ơcolit mở rộng.
Phép toán đa thức với Modulo đa thức.
Cho g(x) là đa thức nguyên tố bậc n. Khi đó tập các đa thức bậc nhỏ hơn bằng n với các phép toán
cộng và nhân đa thức theo Modulo của đa thức nguyên tố g(x) tạo thành trường hữu hạn, gọi là
trường Galoa và ký hiệu là GL(pn).
Sau đây ta xét trường GF(2n), tức là xét tập các đa thức với các hệ số Modulo 2 và bậc nhỏ hơn bằng n
và phép toán nhân có thể rút gọn theo Modulo của đa thức g(x) nguyên tố bậc n. Có thể tìm được
nghịch đảo nhờ thuật toán Euclide mở rộng.
Tuy nhiên để thuận tiện trong việc biểu diễn đa thức, ta sẽ xây dựng song ánh từ tập các đa thức bậc
nhỏ hơn n vào các dãy n bit là dãy các hệ số thể hiện sự có mặt của các lũy thừa tương ứng, và xây
dựng các phép toán cộng và nhân các dãy bit sao cho nhận được kết quả tương tự như cộng và nhân
các đa thức tương ứng cùng với việc rút gọn theo đa thức nguyên tố. Để đơn giản ta minh họa qua ví dụ cụ thể trên GL(23). Ví dụ GF(23) - 32 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Bảng trên có thể xây dựng bằng cách tính trực tiếp trên các phép toán cộng và nhân đa thức sau đó
lấy Modulo theo đa thức nguyên tố x3 + x + 1. •
Tuy nhiên có thể thực hiện các phép toán trên dãy 3 bit như sau;
o Vì các hệ số là 0, 1 nên các đa thức có thể biểu diễn như các xâu bit
o Phép cộng hai đa thức trở thành XOR (cộng cơ số 2) trên các xâu bit tương ứng với hai đa thức đó.
o Nhân một đa thức với x trở thành Shift
sang trái 1 đơn vị của dãy . bit tương ứng với đa thức đó.
o Phép tính Modulo theo đa thức nguyên tố của một đa thức cùng bậc n được thực hiện bằng
cách tính hiệu hay cũng là tổng của hai đa thức đó, mà đó cũng chính là lấy dãy bit của đa thức
đó XOR với dãy bit của đa thức nguyên tố o . o o
o Phép nhân và tính Modulo được kết hợp bằng phép lặp giữa Shìt và XOR.
Ví dụ. Trong GF(23) ta có (x2+1) tương ứng dãy bít 1012 và
(x2+x+1) tương ứng với dãy 1112 •
Tổng hai đa thức trên là (x2+1) + (x2+x+1) = x 101 XOR 111 = 0102 •
Tích của hai đa thức là
(x+1).(x2+1) = x.(x2+1) + 1.(x2+1) = x3+x+x2+1 = x3+x2+x+1
011.101 = (101)<<1 XOR (101)<<0 = 1010 XOR 101 = 11112 •
Phép rút gọn theo Modulo là
(x3+x2+x+1 ) mod (x3+x+1) = (x3+x2+x+1 ) - (x3+x+1 ) = x2
1111 mod 1011 = 1111 XOR 1011 = 01002
Như vậy trường Galoa GL(2n) bao gồm 2n phần tử. Muốn trường Galoa có số phần tử lớn tuỳ ý, ta chỉ
việc tăng và lấy n thích hợp. Đặc biệt việc tính toán các phép toán cộng trừ, nhân, chia trên đó rất
nhanh và hiệu quả trên các thao tác của các thiết bị phần cứng. Chính vì vậy trường Galoa đóng vai trò
quan trọng trong lý thuyết mã mà chúng ta sẽ thấy rõ qua các chương tiếp theo. - 33 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4 Giới thiệu lý thuyết số
III.4.1 Các số nguyên tố
Như chúng ta đã biết số nguyên tố là các số nguyên dương chỉ có ước số là 1 và chính nó. Chúng không
thể được viết dưới dạng tích của các số khác. 1 là số nguyên tố, nhưng không quan tâm đến nó. Xét các số
nhỏ hơn 10 ta có: 2, 3, 5, 7 là số nguyên tố, vì chúng không có ước số khác 1 và chính nó; 4, 6, 8, 9, 10
không phải là số nguyên tố. Có thể nói 2 là số chẵn duy nhất là số nguyên tố. Các số nguyên tố là trung
tâm của lý thuyết số. Số các số nguyên tố là vô hạn.
Ví dụ. Sau đây là danh sách các số nguyên tố nhỏ hơn 200:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
III.4.2 Phân tích ra thừa số nguyên tố
Một trong những bài toán cơ bản của số học là phân tích ra thừa số nguyên tố số a, tức là viết nó dưới
dạng tích của các số nguyên tố. Lưu ý rằng phân tích là bài toán khó hơn rất nhiều so với bài toán nhân
các số để nhận được tích.
Ta có kết luận, mọi số nguyên dương đều có phân tích duy nhất thành tích các lũy thừa của các số nguyên tố:
Ví dụ: 91=7×13; 3600=24×32×52
Thông thường để tìm phân tích trên, ta phải kiểm tra tính chia hết cho các số nguyên tố từ nhỏ đến lớn và
thực hiện phép chia liên tiếp cho các số nguyên tố, rồi gộp thành lũy thừa của các số nguyên tố.
III.4.3 Các số nguyên tố cùng nhau và GCD
Hai số nguyên dương a và b không có ước chung nào ngoài 1, được gọi là nguyên tố cùng nhau.
Ví dụ: 8 và 15 là nguyên tố cùng nhau, vì ước của 8 là 1, 2, 4, 8, còn ước của 15 là 1, 3, 5, 15. Chỉ có 1 là ước chung của 8 và 15.
Ngược lại có thể xác định ước chung lớn nhất bằng cách trong các phân tích ra thừa số của chúng, tìm các
thừa số nguyên tố chung và lấy bậc lũy thừa nhỏ nhất trong hai phân tích của hai số đó.
Ví dụ. Ta có phân tích: 300=21×31×52 và 18=21×32. Vậy GCD(18,300)=21×31×50=6
III.4.4 Định lý Ferma (Định lý Ferma nhỏ) ap-1 mod p = 1
trong đó p là số nguyên tố và a là số nguyên bất kỳ khác bội của p: GCD(a, p) = 1.
Hay với mọi số nguyên tố p và số nguyên a không là bội của p, ta luôn có ap = a mod p
Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên dương nhỏ hơn p.
Ví dụ. Vì 5 và 7 là các số nguyên tố. 2 và 3 không là bội tương ứng của 7 và 5, nên theo định lý Ferma ta có
27-1 mod 7 = 1 (= 26 mod 7 = 64 mod 7= 1)
35-1 mod 5 = 1 (= 34 mod 5 = 81 mod 5= 1) - 34 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
(-2)11-1 mod 11 = 1 (= 210 mod 11 = 1024 mod11 = 1)
Kết quả trên được dùng trong khoá công khai. Nó cùng được sử dụng để kiểm tra tính nguyên tố của một
số nguyên p nào đó, bằng cách lấy ngẫu nhiên các số a và kiểm tra xem có tính chất nêu trên không, kết
luận là p nguyên tố càng thuyết phục nếu phép thử trên đúng với nhiều lần chọn ngẫu nhiên các số a. III.4.5 Hàm Ole
Cho n là một số nguyên dương. Khi thực hiện phép tính đồng dư n của mọi số nguyên khác ta nhận được
tập đầy đủ các phần dư có thể có là: 0, 1, 2,…, n-1
Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với n và quan tâm đến số lượng các
phần tử như vậy đối với số nguyên dương n cho trước.
Ví dụ. Với n = 10:
o Tập đầy đủ các phần dư là {0,1,2,3,4,5,6,7,8,9}
o Tập rút gọn các phần dư nguyên tố với 10 là {1,3,7,9}
o Số các phần tử của tập rút gọn trên là giá trị của hàm Ole Ф(n). Như vậy, Ф(10) = 4. •
Muốn tính Ф(n) việc đếm số các số ngưyên tố cùng nhau với n và nhỏ hơn n được loại bỏ vì đây là
bài toán tốn nhiều công sức. •
Nói chung có thể tính hàm Ơle của một số dựa trên biểu thức phân tích ra thừa số của số đó.
o Dễ dàng thấy, nếu p là số nguyên tố Ф(p) = p-1
o Nếu p và q là hai số nguyên tố khác nhau, thì
o có thể chứng minh được rằng: o Ф(p.q) = (p-1)(q-1)
o Nếu p là số nguyên tố, thì Ф(pn) = pn-pn-1
o Nếu s và t là hai số nguyên tố cùng nhau, thì Ф(s.t) = Ф(s).Ф(t) Vi dụ. Ф(37) = 37 – 1 = 36
Ф(21) = (3–1)×(7–1) = 2×6 = 12
Ф(72) = Ф(8.9) = Ф(8). Ф(9) = Ф(23).Ф(32) = = (23-22)(32-31) = 4.6 = 24 III.4.6 Định lý Ole
Định lý Ole là tổng quát hoá của Định lý Ferma aФ(n)mod n = 1
với mọi cặp số nguyên dương nguyên tố cùng nhau a và n: gcd(a,n)=1. Ví dụ.
a = 3; n = 10; Ф(10)=4; Vì vậy 34 = 81 = 1 mod 10
a = 2; n =11; Ф(11)=10; Do đó 210 = 1024 = 1 mod 11 - 35 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4.7 Kiểm tra tính nguyên tố
Giả sử cần phải tìm một số nguyên tố rất lớn. Lấy ngẫu nhiên một số đủ lớn, ta cần phải kiểm tra xem số
đó có phải là số nguyên tố không. Phương pháp truyền thống là thử bằng phép chia như sau:
o Chia cho tất cả các số (chỉ cần nguyên tố) nhỏ hơn hoặc bằng căn bậc hai của số đó. Nếu nó
không chia hết cho số nào, thì đó là số nguyên tố.
o Chỉ hiệu quả khi xét các số nhỏ.
Có phương pháp khác, mà ta sẽ xét ở đây, sử dụng các phép kiểm tra tính nguyên tố thống kê dựa trên các tính chất
o Mà mọi số nguyên tố phải thỏa mãn
o Nhưng có một số số không nguyên tố, gọi là giả nguyên tố cũng thoả mãn tính chất đó.
Cụ thể là phép kiểm tra dựa trên Định lý Ferma như sau: nếu số n cần kiểm tra tính nguyên tố là số nguyên
tố, thì nó sẽ thoã mãn định lý Ferma đối với mọi số a nhỏ hơn nó an-1 mod n = 1. Như vậy, lấy ngẫu nhiên
số a và kiểm tra xem nó có tính chất trên không. Nếu có thì n có thể là số nguyên tố, nếu cần độ tin cậy
lớn hơn, thì ta kiểm tra liên tiếp nhiều lần như vậy với các số ngẫu nhiên a được chọn. Sau mỗi lần qua
được phép thử, xác suất để n là số nguyên tố lại tăng lên. Chú ý rằng - nếu bi mod n = 1,
thì b2i mod n = (1)2 mod n = 1 và - nếu bi mod n = n – 1,
thì b2i mod n = (n - 1)2 mod n = (n2 – 2n +1) mod n = 1
Kiểm tra số n có là số nguyên tố không, ta chỉ cần xét n là lẻ, khi đó n-1 là chẵn và biểu diễn nó dạng (n–1)= 2k.q
Khi đó để tính an-1, ta tính aq, sau đó bình phương liên tiếp k lần.
Thuật toán Miller - Rabin • Thuật toán như sau: TEST (n) is:
1. Find integers k, q, k > 0, q odd, so that (n–1)= 2k.q
2. Select a random integer a, 1<a<n–1
3. if aq mod n = 1 then return (“maybe prime");
4. for j = 0 to k – 1 do
5. if (a2jq mod n = n-1) then return(" maybe prime ")
6. else return ("composite")
Các xem xét về mặt xác suất
Nếu thuật toán Miller Rabin trả về số “composite” thì số đó chắc chắn không là số nguyên tố, vì khi đó số
n và số a < n không thoả mãn định lý Fecma, tức là an-1 mod n ≠ 1.
Ngược lại số đó có thể là số nguyên tố hoặc giả nguyên tố theo nghĩa nó thoả mãn định lý Fecma với số a
< n. Người ta chứng minh được rằng xác suất để số giả nguyên tố đó không là số nguyên tố là là ¼. Suy
ra nếu lặp t phép thử với các lựa chọn ngẫu nhiên khác nhau của số a, thì khi đó xác suất để số n sau t
phép thử là số nguyên tố là: 1-(1/4)t
Ví dụ. Sau 10 bước, t = 10, mà số đã cho n đều có thể là nguyên tố, thì xác suất để n là số nguyên tố là 1 – (1/4)10 > 0.99999. Phân bố nguyên tố.
Định lý về số nguyên tố khẳng định số nguyên tố xuất hiện trung bình sau mỗi khoảng ln n số nguyên
(nếu xét các số trong kích thước n). Như vậy bỏ qua số chẵn và các bội số của 5, ta cần kiểm tra 0.4ln n
số trong kích thước n để tìm được 1 số nguyên tố. Chẳng hạn n=1024, thì 0.4*ln 1024 = 0.4*10 = 4,
nghĩa là trong 1024 số đầu, thì trung bình cứ 4 số lại có một số nguyên tố. Lưu ý đây chỉ là trung bình, vì
có lúc các số nguyên rất gần nhau và có lúc lại rất xa nhau. - 36 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
III.4.8 Định lý phần dư Trung Hoa
Trong nhiều trường hợp ta muốn tìm cách để tăng tốc độ tính toán Modulo. Các phép toán trên modulo
các số nhỏ tính nhanh nhiều so với các số lớn. Chính vì vậy nếu số lớn phân tích được thành tích của các
số nhỏ, từng cặp nguyên tố cùng nhau, thì ta sẽ có cách tính hiệu quả nhờ vào định lý Phần dư Trung hoa.
Tính toán trên modulo của một tích các số mod M với M= m1m2..mk
, trong đó GCD(mi, mj) = 1, với mọi i khác j. Định lý phần dư Trung Hoa cho phép làm việc trên từng
modulo mi riêng biệt. Vì thời gian tính toán các phép toán trên modulo tỷ lệ với kích thước của số lấy
modulo nên điều đó sẽ nhanh hơn tính toán trên toàn bộ M.
Có thể triển khai Định lý Trung Hoa theo một số cách như sau:
Tính toán theo modulo số lớn. Để tính A mod M, với M khá lớn và A là biểu thức số học nào đó.
Trước hết ta cần tính tất cả ai = A mod mi. Sau đó sử dụng công thức trong đó Mi = M/mi
Ví dụ. Tính 178 mod 77. Áp dụng định lý phần dư Trung hoa, ta coi A = 1718, m1 = 7, m2 = 11. Khi đó M1 = 11, M2 = 7 và
11-1 mod 7 = 4-1 mod 7 = 2, suy ra c1 = 11*2 = 22
7-1 mod 11 = 8, suy ra c2 = 7*8 = 56
a1 = 178 mod 7 = (17 mod 7)8 mod 7 = 38 mod 7 = (32)4 mod 7 = 2
a2 = 178 mod 11 = (17 mod 11)8 mod 11 = 68 mod 11 =
= (62)4 mod 11 = 34 mod 11 = 4
Vậy A = 178 mod 77 = (2*22 + 4*56) mod 77 = 268 mod 77 = 37 mod 37 •
Giải hệ phương trình modulo. Cho ai = x mod mi, với GCD(mi, mj) = 1, với mọi i khác j. Khi đó ta
cũng áp dụng Định lý phần dư Trung Hoa để tìm x.
Ví dụ. Cho x ≡ 5 mod 7 và x ≡ 6 mod 11. Tìm x.
Áp dụng định lý phần dư Trung hoa, ta tính:
7-1 mod 11 = 8 và 11-1 mod 7 = 2. Như vậy
x = (5*2*11 + 6*8*7) mod (7*11) = 61 mod 77.
III.4.9 Căn nguyên tố
Từ Định lý Ole ta có aФ(n)mod n=1, với a và n là nguyên tố cùng nhau. Nếu không có số mũ dương
nào nhỏ hơn Ф(n), mà có tính chất như vậy đối với a, thì khi đó ta gọi a là căn nguyên tố của n. Cụ thể như sau: •
Xét m để am mod n = 1, GCD(a,n)=1
Theo Định lý Ơle ta có m = Ф(n) thỏa mãn hệ thức trên, nhưng có thể cũng có giá trị nhỏ hơn của m <
Ф(n) cũng thoả mãn.
Khi đạt được m như vậy, thì nó cũng thoả mãn với bội của m, tức là sẽ có vòng lặp. - 37 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Nếu giá trị m = Ф(n) là số dương nhỏ nhất thoả mãn công thức trên thì a được gọi là căn nguyên tố của n. •
Nếu p là số nguyên tố và a là căn nguyên tố của p, thì các luỹ thừa của a: a 0, a1, …, ap-2 sẽ sinh ra nhóm modulo p.
Việc tìm các căn nguyên tố a của n sẽ có ích trong việc xét mã công khai.
Ví dụ. Xét số nguyên tố p = 5 và xét xem a = 2 có phải là căn nguyên tố của 5 không? Ta có:
2 mod 5 = 2; 22mod 5 = 4; 23mod 5 = 3; 24mod 5 = 1
Rõ ràng m= 4= Ф(5) là số mũ dương nhỏ nhất có tính chất 2m mod 5 = 1, nên 2 là căn nguyên tố của 5. •
Xét số n = 6 và xét xem a = 3 có phải là căn nguyên tố của 3 không? Ta có
3 mod 8 = 3; 32mod 8 = 1; 33mod 8 = 3; 34mod 8 = 1
Rõ ràng m= 2 < 4 = Ф(8) là số mũ dương nhỏ nhất có tính chất 3m mod 8 = 1, nên 3 không là căn nguyên tố của 8.
III.4.10 Logarit rời rạc
Bài toán ngược của bài toán lũy thừa là tìm logarit rời rạc của một sô modulo p, tức là tìm số nguyên x sao cho ax = b mod p
Hay còn được viết là x=logab mod p hoặc x=inda,p(b)
Nếu a là căn nguyên tố của p và p là số nguyên tố, thì luôn luôn tồn tại logarit rời rạc, ngược lại thì có thể không
Ví dụ. Tìm x = log2 3 mod 13. Bằng cách thử lần lượt:
20 mod 13 = 1; 21 mod 13 = 2, 22 mod 13 = 4, 23 mod 13 = 8, 24 mod 13 = 3. Vậy log2 3 mod 13 = 4.
Tìm x = log3 4 mod 13 (tìm x: 3x = 4 mod 13). Trong trường hợp này không có lời giải, vì
30 mod 13 = 1; 31 mod 13 = 3; 32 mod 13 = 9; 33 mod 13 = 1= 30 mod 13
Ta nhận thấy, trong khi bài toán lũy thừa là dễ dàng, thì bài toán logarit rời rạc là rất khó. Đây cũng là
một cơ sở của mã công khai. Bài tập.
1. Chứng tỏ rằng tập các số nguyên với phép cộng hai số nguyên tạo thành nhóm giao hoán.Chứng tỏ
rằng tập các số nguyên với phép cộng hai số nguyên và phép nhân hai số nguyên tạo thành vành
giao hoán. nhóm giao hoán. Hỏi vành đó có tạo thành miền nguyên hay trường không.
2. Chứng tỏ rằng tập các phần dư khi chia cho n, Zn với hai phép toán và nhân theo modulo n tạo
thành vành giao hoán. Với n thỏa mãn điều kiện gì, thì vành đó là trường.
3. Tính giá trị các biểu thức theo modulo sau: • 8 mod 9 + 7 mod 9 • 8 mod 9 * 7 mod 9 • 5 mod 11 – 9 mod 11 • 53 mod 7 • 520 mod 7 • 5/6 mod 7
4. Tính giá trị các biểu thức theo modulo sau • (-546) mod 13 - 347 mod 11 - 38 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin • (1234 + 2345) mod 17 • (213 * 345) mod 19 • 15-1 mod 101 • 41-1 mod 100 • 1435 mod 11 • (235*126/13) mod 19 • 31130 mod 23 •
(23525 /17 + 12619. 397 /13) mod 29
5. Cài đặt thuật toán Ocolit mở rộng
6. Biểu diễn phép nhân đa thức với hệ số theo mod 2 và theo module đa thức sau (x3 + x + 1) (gọi là GL(23): •
(x + 1) * (x2 + x + 1) mod (x3 + x + 1) •
x2 * (x2 + x + 1) mod (x3 + x + 1) •
(x2 + 1) * (x2 + x + 1) mod (x3 + x + 1) •
(x2 + x + 1) * (x2 + x + 1) mod (x3 + x + 1)
dưới dạng các phép toán shift và XOR của bit
7. Chứng tỏ GL(23) là một trường, nêu thuật toán tìm các phần tử nghịch đảo theo phép nhân của các phần tử khác 0.
8. Tính hàm Ơle của các số nguyên sau: •
12, 17, 21, 32, 36, 40, 72, 256.
8 Dùng Định lý Ferma và Định lý Ole tính các biểu thức sau •
616 mod 17; 1516 mod 17; 95100 mod 101 •
74 mod 10; 95 mod 10; 1012 mod 21; 9190 mod 100;
9 Cài đặt chương trình kiểm tra số giả nguyên tố
10 Giải các phương trình modulo sau • x mod 11 = 3; x mod 13 = 6 • y mod 51 = 11; y mod 100 = 15 •
z mod 12 = 5; z mod 17 = 8; z mod 23 = 11.
11 Sử dụng định lý phần dư Trung Hoa tính giá trị các biểu thức sau • 2530 mod (7*8) • 70254 mod (11*13) • 60-1 mod (11*13) •
((21100 + 33-1). 4551) mod (7.9.11) •
((19125 + 2551)4721 /37 mod (9.11.13)
12 Tìm các căn nguyên tố của 9, 11
13 Tìm các căn nguyên tố của 13 và 17.
14 Tính logarit rời rạc sau, nếu có: • Log3 7 mod 11, Log2 9 mod 11 • Log5 6 mod 13, Log3 7 mod 13 •
Log2 15 mod 17, Log3 11 mod 17 - 39 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG IV:
CHUẨN MÃ DỮ LIỆU (DES) VÀ CHUẨN MÃ NÂNG CAO (AES)
IV.1 Mã khối hiện đại
Bây giờ chúng ta xét các mã khối hiện đại. Đây là kiểu mã được sử dụng rộng rãi nhất của các thuật toán
mã hoá. Đồng thời nó cũng được sử dụng kết hợp với các thủ tục khác nhằm cung cấp các dịch vụ an toàn và xác thực.
Trước hết chúng ta tập trung vào chuẩn mã dữ liệu DES (Data Encryption Standards) để minh hoạ cho các
nguyên lý mã khối. Trước hết chúng ta xét hai kiểu xử lý thông tin khác nhau trên bản rõ. Một kiểu chia
dữ liệu thành từng khối để xử lý, kiểu kia xử lý trực tiếp từng đơn vị thông tin.
IV.1.1 Phân biệt mã khối với mã dòng.
o Mã khối (block) xử lý bản tin theo từng khối, lần lượt mỗi khối được mã hoặc giải mã. Có thể xem
giống như phép thế với các ký tự lớn – mỗi khối gồm 64 bít hoặc nhiều hơn.
o Mã dòng xử lý bản tin theo từng bít hoặc bite, lần lượt mỗi bít hoặc bite được mã hoá hoặc giải
mã. Chẳng hạn như mã khoá tự động Vigenere.
o Rất nhiều mã hiện nay là mã khối. Chúng có khả năng ứng dụng rộng rãi hơn. Rất nhiều ứng dụng
mã đối xứng trên mạng sử dụng mã khối.
Các nguyên lý mã khối
o Hầu hết các mã khối đối xứng dựa trên cấu trúc mã Fiestel, do nhà bac học Fiestel đề xuất năm
1973. Đây là điều cần thiết, vì cần phải có khả năng giải mã các bản mã một cách có hiệu quả.
o Mã khối được coi giống như phép thế cực lớn. Cần bảng có 264 đầu vào cho mã khối 64 bít, bảng
như vậy là rất lớn. Do đó có thể thay thế bằng cách tạo các khối nhỏ hơn.
o Sử dụng ý tưởng dùng mã tích. Ở đây sẽ kết hợp giữa mã thay thế và mã hoán vị, đồng thời sử
dụng nhiều vòng lặp như vậy.
IV.1.2 Claude Shannon và mã phép thế hoán vị
Năm 1949, Shannon đưa ra ý tưởng mạng phép thế và hoán vị (S-P networks) – là mã tích phép thế và
hoán vị hiện đại với mục đích là cản trở việc thám mã dựa vào các phân tích thống kê. Giả sử kẻ thám mã
biết một số tính chất thống kê của bản rõ như bảng phân bố tần suất của các chữ cái, bộ các chữ cái. Nếu
các đặc trưng thống kê này được phản ánh trong bản mã, thì kẻ thám mã sẽ tìm cách tìm được khoá hoặc
một phần khoá hoặc tìm mò ra bản rõ. Shannon muốn có một bản mã lý tưởng, ở đó mọi đặc trưng thống
kế đều độc lập với khoá riêng được dùng, như vậy kẻ thám mã sẽ không có cơ sở để tìm khoá.
Mạng S-P đã tạo nên cơ sở cho mã khối hiện đại. Mạng S-P dựa trên hai thao tác mã cơ bản mà ta đã biết:
phép thế (S-box) và hoán vị (P-box). Chúng sẽ tạo nên độ rối loạn và khuếch tán của bản tin.
Rối loạn và khuếch tán
o Một tính chất quan trọng của mã tốt là mã cần phải che dấu hoàn toàn các tính chất thống kê của
bản tin gốc. Như ta đã thấy mã bộ đệm một lần có thể làm được điều đó, do tính ngẫu nhiên của
khoá đệm và độ dài bằng bản tin của nó.
o Shannon nghiên cứu và đề xuất phương pháp thực tế hơn là kết hợp các thành phần khác nhau của
bản rõ để xử lý qua nhiều lần và nhận được bản mã.
o Khuếch tán là làm tan biến cấu trúc thống kê của bản rõ trên bản mã. Điều đó đạt được nếu mỗi
bit của bản rõ tác động đến giá trị của rất nhiều bit trên bản mã hay mỗi bit của bản mã chịu tác
động của nhiều bit bản rõ.
o Rối loạn là làm cho quan hệ giữa bản mã và khoá càng phức tạp càng tốt. Bản mã có tính rối loạn
cao sẽ làm cho việc tìm mò khoá trở nên rất khó khăn, ngay cả khi kẻ tấn công có các đặc trưng
thống kê của bản mã và biết cách khoá tác động đến bản mã.
IV.1.3 Cấu trúc mã Fiestel
Horst Fiestel sáng tạo nên mã Fiestel dựa trên mã tích nghịch đảo được, tức là kết hợp mã thế với
mã hoán vị và qui trình giải mã là giống với mã hoá, chỉ cần thay đổi vai trò khối bản mã với khối
bản rõ và thứ tự các khoá con được dùng. Từ khoá chính sinh ra cho mỗi vòng lặp một khoá con. - 40 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Chia khối đầu vào thành 2 nửa bằng nhau:
o Thực hiện phép thế trên nửa trái. Sử dụng hàm vòng trên nửa phải và khoá con, rồi tác động đến nửa trái.
o Sau đó hoán vị các nửa, nửa phải chưa được xử lý. o Xử lý vòng tiếp theo. •
Đây là một thể hiện của mã thế kết hợp với hoán vị của Shannon. Ta xem xét cụ thể cấu trúc mã Fiestel gồm n vòng:
Nguyên tắc thiết kế mã khối Fiestel •
Tăng kích thước khối sẽ làm tăng độ an toàn nhưng làm giảm tốc độ mã •
Tăng kích thước khoá sẽ làm tăng độ an toàn – tìm khoá khó hơn, nhưng làm chậm mã. •
Tăng số vòng làm tăng độ an toàn nhưng làm chậm mã •
Phát sinh khoá con càng phức tạp làm cho việc thám mã khó hơn nhưng làm chậm mã •
Hàm vòng càng phức tạp làm cho việc thám mã khó hơn nhưng làm chậm mã •
Phần mềm mã hoá/giải mã nhanh và khó thám mã là tiêu chí hay được đề cập đến đối với ứng
dụng và kiểm nghiệm thực tế. - 41 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Giải mã khối Fiestel
IV.2 Chuẩn mã dữ liệu (DES)
DES (Data Encryption Standards) là mã khối sử dụng rộng rãi nhất trên thế giới trong thời gian vừa qua.
Nó được đưa ra năm 1977 bởi NBS – văn phòng chuẩn Quốc gia Hoa kỳ (bây giờ là NIST - Viện chuẩn và
công nghệ Quốc gia). DES là mã khối với mỗi khối dữ liệu 64 bít và dùng khoá dài 56 bít. Nó được sử
dụng rộng rãi và đã được tranh luận kỹ về mặt an toàn. IV.2.1 Lịch sử DES:
Cuối những năm 1960, IBM phát triển mã Lucifer, được lãnh đạo bởi Fiestel. Ban đầu Lucifer sử dụng
khối dữ liệu 64 bít và khoá 128 bít. Sau đó tiếp tục phát triển như mã thương mại. Năm 1973 NBS yêu cầu
đề xuất chuẩn mã Quốc gia. IBM đề nghị bản sửa đổi Lucifer, sau này gọi là DES. Đã có các tranh luận về
thiết kế của DES. Vì chuẩn của DES được công khai, mọi người đóng góp ý kiến về tốc độ, độ dài khoá và
mức độ an toàn, khả năng thám mã. Người ta đề xuất chọn khoá 56 bít thay vì 128 để tăng tốc đọ xử lý và
đưa ra các tiêu chuẩn thiết kế một chuẩn mã dữ liệu. Các suy luận và phân tích chứng tỏ rằng thiết kế như
vậy là phù hợp. Do đó DES được sử dụng rộng rãi, đặc biệt trong lĩnh vực tài chính.
IV.2.2 Sơ đồ mã DES
Hoán vị ban đầu IP: đây là bước đầu tiên của tính toán dữ liệu, hoán vị IP đảo thứ tự các bít đầu
vào: các bít chẵn sang nửa trái và các bít lẻ sang nửa phải. Hoán vị trên dễ dàng thực hiện trên phần cứng.
Mỗi số trong hệ 16 biểu diễn bởi 4 bit, 16 số được thể hiện bởi 64 bit. Mỗi bit có một vị trí xác
định qua hoán vị ban đầu (xem bảng phụ lục cuối tài liệu). Ví dụ - 42 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
IP(675a6967 5e5a6b5a) = (ffb2194d 004df6fb) •
Cấu tạo một vòng của DES
Sử dụng hai nửa 32 bít trái và 32 bít phải. Như đối với mọi mã Fiestel, nửa phải của vòng trước được
chuyển qua nửa trái của bước sau và lấy đầu ra của hàm vòng trên nửa phải và khoá con cộng cơ số 2
với nửa trái. Có thể biểu diễn bằng công thức như sau: Li = Ri–1
Ri = Li–1 xor F(Ri–1, Ki)
Ở đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán vị E, rồi cộng vào với khoá con 48 bít.
Sau đó chia thành 8 cụm 6 bít và cho qua 8 S-box để nhận được kết quả 32 bít. Đảo lần cuối sử dụng
hoán vị 32 bít P nhận được 32 bít đầu ra, rồi cộng với nửa trái để chuyển thành nửa phải của bước sau. •
Các hộp thế S (xem phụ lục cuối tài liệu)
Có 8 hộp S khác nhau ánh xạ 6 bít vào 4 bít. Các hộp S box thực hiện các phép thế, chúng được
cấu tạo không có qui luật và cố định. Mỗi S box là hộp 4 x 16 bít, mỗi hàng là một hoán vị của 16
phần tử. Giả sử ta có 6 bít đầu vào. Ta lấy hai bít ngoài 1-6 ghép lại được số nhị phân xác định
chọn hàng từ 0 đến 3 trong S box. Bốn bít từ 2 đến 5 là một số nhị phân xác định cột từ 0 đến 15
trong S box. Lấy phần tử tương ứng trên hàng và cột mới được xác định, đây là một số từ 0 đến 15,
chuyển sang số nhị phân ta được 4 bít đầu ra. Như vậy 48 bít chia thành có 8 cụm 6 bít, qua 8 S
box được chuyển thành 8 cụm 4 bít, tổng cộng là 32 bít Việc chọn hàng trong các S box phụ thuộc
cả dữ liệu và khoá - đặc trưng này được gọi là khoá tự xác định Ví dụ:
S(18 09 12 3d 11 17 38 39) = 5fd25e03 •
Sinh khoá con của DES
o Tạo 16 khoá con sử dụng cho 16 vòng của DES. 56 bit khoá đầu vào được sử dụng như
bảng 8 x 8, trong đó cột thứ 8 không sử dụng.
o Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít. o 16 giai đoạn bao gồm 
Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tương ứng 1 và 2 bit.
Hai nửa này được dùng tiếp cho vòng sau. 
Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa 24 bít gộp lại thành
48 bít để sinh khoá con..
o Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả - 43 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Các thông số cụ thể về hoán vị ban đầu, các hộp Box và thuật toán sinh khoá của DES được cho cuối tài
liệu trong phần phụ lục. • Giải mã DES
Giải mã làm ngược lại quá trình mã hoá. Với thiết kế Fiestel thực hiện mã hoá tiếp với các khoá
con từ SK16 ngược lại về SK1. Nhận thấy rằng hoán vị ban đầu IP sẽ trả lại tác dụng của hoán vị
cuối FP. Vòng đầu với SK16 sẽ trả lại tác dụng của vòng mã thứ 16. Vòng thứ 16 với SK1 sẽ trả
lại tác dụng của vòng mã đầu tiên. Hoán vị cuối FP trả lại tác dụng hoán vị ban đầu IP. Như vậy đã
khôi phục lại được dữ liệu ban đầu.
IV.2.3 Tính chất của DES
Tác dụng đồng loạt. Khi ta thay đổi 1 bit trong khoá sẽ gây ra tác động đồng loạt làm thay đổi
nhiều bit trên bản mã. Đây là tính chất mong muốn của khoá trong thuật toán mã hoá. Nếu thay đổi
1 bít đầu vào hoặc khoá sẽ kéo theo thay đổi một nửa số bít đầu ra. Do đó không thể đoán khoá
được. Co thể nói rằng DES thể hiện tác động đồng loạt mạnh. •
Sức mạnh của DES – kích thước khoá.
Độ dài của khoá trong DES là 56 bít có 256 = 7.2 x 1016 giá trị khác nhau. Đây là con số rất lớn nên
tìm kiếm duyệt rất khó khăn. Các thành tựu gần đây chỉ ra rằng thời gian cần thiết để giải một
trang mã DES mà không biết khoá là: sau một vài tháng trên Internet trong năm 1997; một vài
ngày trên thiết bị phần cứng tăng cường trong năm 1998; sau 22 giờ nếu kết hợp các biện pháp
trong năm 1999. Như vậy vẫn có thể đoán được bản rõ sau một khoảng thời nhất định, nếu có
nguồn lực máy tính mạnh. Chính vì vậy bây giờ người ta đã xét một vài biến thể của DES nhằm
nâng cao sức mạnh cho DES. •
Sức mạnh của DES – tấn công thời gian.
Đây là dạng tấn công vào cài đặt thực tế của mã. Ở đây sử dụng hiểu biết về quá trình cài đặt thuật
toán mà suy ra thông tin về một sô khoá con hoặc mọi khoá con. Đặc biệt sử dụng kết luận là các
tính toán chiếm khoảng thời gian khác nhau phụ thuộc vào giá trị đầu vào của nó. Do đó kẻ thám
mã theo dõi thời gian thực hiện mà phán đoán về khoá. Có thể kẻ thám mã sáng tạo ra các loại card
thông minh phán đoán khoá, mà còn phải bàn bạc thêm về chúng. •
Sức mạnh của DES – tấn công thám mã.
Có một số phân tích thám mã trên DES, từ đó đề xuất xây dựng một số cấu trúc sâu về mã DES.
Rồi bằng cách thu thập thông tin về mã, có thể đoán biết được tất cả hoặc một số khoá con đang
dùng. Nếu cần thiết sẽ tìm duyệt những khoá còn lại. Nói chung, đó là những tấn công dựa trên
phương pháp thống kê bao gồm: thám mã sai phân, thám mã tuyến tính và tấn công khoá liên kết. - 44 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin • Thám mã sai phân
Một trong những thành tựu công khai gần đây trong thám mã là phương pháp thám mã sai phân.
Nó được biết đến bởi NSA trong những năm 70, chẳng hạn trong thiết kế DES. Murphy, Birham
và Shamir công bố phương pháp sai phân năm 1990. Đây là phương pháp mạnh để phân tích mã
khối. Nó sử dụng phân tích hầu hết các mã khối hiện tại với mức độ thành công khác nhau. Nhưng
DES có thể kháng cự lại các tấn công đó. Thám mã sai phân là tấn công thống kê chống lại các mã
Fiestel. Mã Fiestel dùng các cấu trúc mã chưa được sử dụng trước kia như thiết kế S-P mạng có
đầu ra từ hàm f chịu tác động bởi cả đầu vào và khoá. Do đó không thể tìm lại được giá trị bản rõ mà không biết khoá.
Thám mã sai phân so sánh hai cặp mã có liên quan với nhau
o Với sự khác biệt đã biết ở đầu vào
o Khảo sát sự khác biệt ở đầu ra
o Khi với cùng khoá con được dùng
o Trong công thức sau với hai đầu vào khác nhau, vế trái là sự khác biệt mã ở cùng vòng thứ
i được biểu diễn qua sự khác biệt mã ở vòng trước đó i-1 và sự khác biệt của hàm f trong ngoặc vuông.
Sự khác biệt ở đầu vào cho sự khác biệt ở đầu ra với một xác suất cho trước.
o Nếu tìm được một thể hiện đầu vào - đầu ra với xác suất cao. Thì có thể luận ra khoá con
được sử dụng trong vòng đó
o Sau đó có thể lặp lại cho nhiều vòng (với xác suất giảm dần) 
Cặp đúng cho bít khoá như nhau 
Cặp sai cho giá trị ngẫu nhiên
o Đối với số vòng lớn, xác suất để có nhiều cặp đầu vào 64 bít thoả mãn yêu cầu là rất nhỏ.
o Birham và Shamir chỉ ra rằng làm như thế nào để các đặc trưng lặp của 13 vòng có thể bẻ
được DES 16 vòng đầy đủ. - 45 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Qui trình thám mã như sau: thực hiện mã hoá lặp lại với cặp bản rõ có XOR đầu vào biết
trước cho đến khi nhận được XOR đầu ra mong muốn
o Khi đó có thể tìm được
 nếu vòng trung gian thỏa mãn XOR yêu cầu thì có cặp đúng
 nếu không thì có cặp sai, tỷ lệ sai tương đối cho tấn công đã biết trước dựa vào thống kê.
o Sau đó có thể tạo ra các khoá cho các vòng theo suy luận sau • Thám mã tuyến tính
Đây là một phát hiện mới khác. Nó cũng dùng phương pháp thống kê. Ở đây cần lặp qua các
vòng với xác suất giảm, nó được phát triển bởi Matsui và một số người khác vào đầu những
năm 90. Cơ sở của phương pháp dựa trên tìm xấp xỉ tuyến tính. Và có nhận định rằng có thể
tấn công DES với 247 bản rõ đã biết. Như vậy thám mã tuyến tính vẫn không khả thi trong thực tế.
o Tìm xấp xỉ tuyến tính với xác suất p != ½
P[i1,i2,...,ia] (+) C[j1,j2,...,jb] = K[k1,k2,...,kc]
trong đó ia, jb, kc là các vị trí bit trong bản rõ, mã, khoá.
o Điều kiện trên cho phương trình tuyến tính của các bít khoá.
Để nhận được 1 bít khoá sử dụng thuật toán lân cận tuyến tính
o Sử dụng một số lớn các phương trình thử nghiệm. Hiệu quả cho bởi |p – 1/2|
Trong quá trình tìm hiểu DES người ta đã hệ thống lại các tiêu chuẩn thiết kế DES. Như báo
cáo bởi Copperscmith trong [COPP94]:
o Có 7 tiêu chuẩn đối với S box được cung cấp để đảm bảo  tính phi tuyến tính  chống tham mã sai phân  Rối loạn tốt
o Có 3 tiêu chuẩn cho hoán vị P để tăng độ khuếch tán • Các nguyên lý mã khối
Các nguyên lý cơ bản của mã khối giống như Fiestel đề xuất trong những năm 70:
o Có một số vòng: càng nhiều càng tốt; tấn công tốt nhất phải tìm tổng thể
o Trong mỗi vòng có hàm cung cấp độ rối loạn là phi tuyến, tác động đồng loạt
o Qui trình sinh khoá con phức tạp, khoá tác động đồng loạt đến bản mã.
IV.2.4 Các kiểu thao tác của DES
Mã khối mã các block có kích thước cố định. Chẳng hạn DES mã các block 64 bít với khoá 56 bít Cần
phải có cách áp dụng vào thực tế vì các thông tin cần mã có kích thước tùy ý. Trwosc kia có 4 kiểu thao
tác được định nghĩa cho DES theo chuẩn ANSI: ANSI X3.106-1983 Modes of Use. Bây giờ mở rộng
them có 5 cách cho DES và chuẩn mã nâng cao (AES – Advanced Encryption Standards). Trong đó có
kiểu áp dụng cho khối và có kiểu áp dụng cho mã dòng.
1. Sách mật mã điện tử (Electronic Codebook Book - ECB)
o Mẫu tin được chia thành các khối độc lập, sau đó mã từng khối
o Mỗi khối là giá trị cần thay thế như dùng sách mã, do đó có tên như vậy
o Mỗi khối được mã độc lập với các mã khác o o o - 46 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin o Ci = DESK1 (Pi)
o Khi dùng: truyền an toàn từng giá trị riêng lẻ o o Ưu và nhược của ECB 
Lặp trên bản mã được chỉ rõ lặp trên bản tin - Nếu dóng đúng khối
- Đặc biệt với hình ảnh
- Hoặc với bản tin mà thay đổi rất ít
sẽ trở thành đối tượng để thám mã 
Nhược điểm là các khối được mã độc lập 
Được sử dụng chủ yếu khi gửi một ít dữ liệu
2. Dây chuyền mã khối (Cipher Block Chaining - CBC)
o Các mẫu tin được chia thành các khối
o Nhưng chúng được liên kết với nhau trong quá trình mã hoá
o Các block được sắp thành dãy, vì vậy có tên như vậy
o Sử dụng véctơ ban đầu IV để bắt đầu quá trình Ci = DESK1(Pi XOR Ci-1) C-1 = IV
o Dùng khi: mã dữ liệu lớn, xác thực - 47 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Ưu và nhược của CBC
Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ 
Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối mã 
Cần giá trị véc tơ ban đầu IV được biết trước bởi người gửi và người nhận -
Tuy nhiên nếu IV được gửi công khai, kẻ tấn công có thể thay đổi bít đầu tiên và
thay đổi cả IV để bù trừ -
Vậy IV cần phải có giá trị cố định trước hoặc mã hoá trong chế độ ECB và gửi
trước phần còn lại của mẩu tin 
Ở cuối bản tin, để kiểm soát các block ngắn còn lại -
Có thể bổ sung các giá trị không phải dữ liệu như NULL -
Hoặc dùng bộ đệm cuối với số byte đếm kích thước của nó. Ví dụ
[ b1 b2 b3 0 0 0 0 5] <- 3 data bytes,
vậy có 5 bytes dành cho đệm và đếm.
3. Mã phản hồi ngược (Cipher FeedBack - CFB)
o Bản tin coi như dòng các bít
o Bổ sung vào đầu ra của mã khối
o Kết quả phản hồi trở lại cho giai đoạn tiếp theo, vì vậy có tên như vậy.
o Nói chung cho phép số bít phản hồi là 1, 8, 64, hoặc tuỳ ý: ký hiệu tương ứng là CFB1, CFB8, CFB64,…
o Thường hiệu quả sử dụng cả 64 bít Ci = Pi XOR DESK1(Ci-1) C-1 = IV
o Được dùng cho mã dữ liệu dòng, xác thực - 48 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Ưu và nhược điểm của mã phản hồi ngược
o Được dùng khi dữ liệu đến theo byte/bit
o Chế độ dòng thường gặp nhất
o Hạn chế là cần ngăn chuồng khi mã khối sau mỗi n bit
o Nhận xét là mã khối được dùng ở chế độ mã ở cả hai đầu
o Lỗi sẽ lan ra một vài block sau lỗi
4. Phản hồi ngược đầu ra (Output FeedBack - OFB) o Mẩu tin xem như dòng bit
o Đầu ra của mã được bổ sung cho mẩu tin
o Đầu ra do đó là phản hồi, do đó có tên như vậy
o Phản hồi ngược là độc lập đối với bản tin
o Có thể được tính trước Ci = Pi XOR Oi Oi = DESK1(Oi-1) O-1 = IV
o Được dùng cho mã dòng trên các kênh âm thanh
Ưu điểm và nhược điểm của OFB
o Được dùng khi lỗi phản hồi ngược lại hoặc ở nơi cần mã trước khi mẩu tin sẵn sàng o Rất giống CFB - 49 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Nhưng phản hồi là từ đầu ra của mã và độc lập với mẩu tin
o Là biến thể của mã Vernam, suy ra không sử dụng lại với cùng một dãy (Key + IV)
o Người gửi và người nhận phải đồng bộ, có phương pháp khôi phục nào đó là cần thiết để đảm bảo việc đó.
o Nguyên bản chỉ rõ m bit phản hồi ngược theo các chuẩn
o Các nghiên cứu tiếp theo chỉ ra rằng chỉ có OFB64 là dùng được
5. Bộ đếm CTR (Counter)
o Là chế độ mới, tuy đã được đề xuất từ lâu
o Giống như OFB, nhưng mã giá trị đếm thay vì giá trị phản hồi tuỳ ý.
o Cần phải có khoá khác và giá trị đếm cho mỗi khối bản rõ (không bao giờ dùng lại) Ci = Pi XOR Oi Oi = DESK1(i)
o Được dùng mã trên mạng với tốc độ cao
o Ưu và nhược điểm của CTR  Hiệu quả - Do có thể mã song song -
Chuẩn bị trước nếu cần -
Tốt cho các kết nối với tốc độ rất cao 
Truy cập ngẫu nhiên đến các khối dữ liệu mã 
Tính an toàn có thể chứng minh được 
Nhưng phải tin tưởng không bao giờ dùng lại khoá/đếm, nếu không có thể bẻ.
IV.3 Chuẩn mã nâng cao (AES) IV.3.1 Nguồn gốc
Rõ ràng cần phải thay thế DES, vì có những tấn công về mặt lý thuyết có thể bẻ được nó. Một số tấn công
nghiên cứu thấu đáo khoá đã được trình diễn. Người ta thấy rằng, cần sử dụng Triple DES (sử dụng DES
ba lần liên tiếp) cho các ứng dụng đòi hỏi tăng cường bảo mật, nhưng quá trình mã và giải mã chậm, đồng
thời với khối dữ liệu nhỏ. Do đó Viện chuẩn quốc gia Hoa kỳ US NIST ra lời kêu gọi tìm kiếm chuẩn mã - 50 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
mới vào năm 1997. Sau đó có 15 đề cử được chấp nhận vào tháng 6 năm 1998. Và được rút gọn còn 5
ứng cử viên vào tháng 6 năm 1999. Đến tháng 10 năm 2000, mã Rijndael được chọn làm chuẩn mã nâng
cao và được xuất bản là chuẩn FIPS PUB 197 vào 11/2001. Yêu cầu của AES
Là mã khối đối xứng khoá riêng. •
Kích thước khối dữ liệu 128 bit và độ dài khoá là tùy biến: 128, 192 hoặc 256 bit. •
Chuẩn mã mới phải mạnh và nhanh hơn Triple DES. Mã mới có cơ sở ls thuyết mạnh để thời gian
sống của chuẩn khoảng 20-30 năm (cộng thêm thời gian lưu trữ). •
Khi đưa ra thành chuẩn yêu cầu cung cấp chi tiết thiết kế và đặc tả đầy đủ. Đảm bảo rằng chuẩn
mã mới cài đặt hiệu quả trên cả C và Java. •
NIST in rút gọn mọi đề xuất, phân tích và không phân loại.
IV.3.2 Tiêu chuẩn triển khai của AES • Tiêu chuẩn ban đầu:
o An toàn - chống đỡ mọi tấn công thám mã về thực tế
o Giá trị về mặt tính toán
o Các đặc trưng cài đặt và thuật toán. • Tiêu chuẩn cuối cùng: o An toàn tổng thể
o Dễ cài đặt phần mềm và phần cứng
o Chống được tấn công về mặt cài đặt
o Mềm dẻo trong mã / giải mã, khoá và các yếu tố khác •
Danh sách các ứng cử viên Chuẩn mã nâng cao được rút gọn:
o MARS (IBM): phức tạp, nhanh, biên độ tin cậy cao
o RC6 (USA): đơn giản, rất nhanh, biên độ tin cậy thấp
o Rijndael (Bỉ): rõ ràng, nhanh, biên độ tin cậy tốt
o Serpent (Châu Âu): chậm, rõ ràng, biên độ tin cậy rất cao
o Twofish (USA): phức tạp, rất nhanh, biên độ tin cậy cao •
Sau đó tục phân tích và đánh giá. Tập trung vào việc so sánh các thuật toán khác nhau:
o Ít vòng nhưng phức tạp với nhiều vòng đơn giản hơn.
o Nêu rõ cải tiến các mã đã có với các đề xuất mới.
IV.3.3 Chuẩn mã nâng cao AES – Rijndael
Cuối cùng Rijndael được chọn là chuẩn mã nâng cao. Nó được thiết kế bởi Rijmen – Daemen ở Bỉ, có các đặc trưng sau: •
Có 128/192/256 bit khoá và 128 bit khối dữ liệu. • Lặp hơi khác với Fiestel
o Chia dữ liệu thành 4 nhóm – 4 byte
o Thao tác trên cả khối mỗi vòng o Thiết kế để: 
chống lại các tấn công đã biết 
tốc độ nhanh và nén mã trên nhiều CPU 
Đơn giản trong thiết kế •
Xử lý khối dữ liệu 128 bit như 4 nhóm của 4 byte: 128 = 4*4*8 bit. Mỗi nhóm nằm trên một hàng.
Ma trận 4 hàng, 4 cột với mỗi phần tử là 1 byte coi như trạng thái được xử lý qua các vòng mã hoá và giải mã. •
Khoá mở rộng thành mảng gồm 44 từ 32 bit w[i]. •
Có tùy chọn 9/11/13 vòng, trong đó mỗi vòng bao gồm
o Phép thế byte (dùng một S box cho 1 byte) - 51 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Dịch hàng (hoán vị byte giữa nhóm/cột)
o Trộn cột (sử dụng nhân ma trận của các cột)
o Cộng khoá vòng (XOR trạng thái dữ liệu với khoá vòng).
o Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả. • Sơ đồ Rijndael • Phép thế Byte
o Phép thê byte đơn giản
o Sử dụng một bảng 16 x 16 byte chứa hoán vị của tất cả 256 giá trị 8 bit
o Mỗi byte trạng thái được thay bởi byte trên hàng xác định bởi 4 bit trái và cột xác định bởi 4 bit phải.
Chẳng hạn {95} được thay bởi hàng 9, cột 5, mà giá trị sẽ là {2A}.
o S box được xây dựng sử dụng hoán vị các giá trị trong GF(28) đã được xác định trong chương trước.
o Thiết kế để chống mọi tấn công đã biết • Dịch hàng
o Dịch hàng vòng quanh trên mỗi hàng  Hàng 1 không đổi 
Hàng 2 dịch vòng quanh 1 byte sang trái 
Hàng 3 dịch vòng quanh 2 byte sang trái 
Hàng 4 dịch vòng quanh 3 byte sang trái
o Giải mã thực hiện dịch ngược lại sang phải
o Vì trạng thái được xử lý bởi cột, bước này thực chất là hoán vị byte giữa các cột. • Trộn các cột - 52 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Mỗi cột được xử lý riêng biệt.
o Mỗi byte được thay bởi 1 giá trị phụ thuộc vào tất cả 4 byte trong cột
o Nhân ma trận hiệu quả trong GF(28), sử dụng đa thức nguyên tố m(x) =x8+x4+x3+x+1 Trộn cột
o Có thể biểu diễn mỗi cột mới là nghiệm của 4 phương trình 
để tìm ra byte mới trong mỗi cột
o Mã yêu cầu sử dụng ma trận nghịch đảo 
Với hệ số lớn thì tính toán khó khăn hơn
o Có các đặc trưng khác của cột như sau: 
Mỗi cột là một đa thức bậc 3 gồm 4 số hạng 
Với mỗi phần tử là một byte tương ứng với phần tử trong GF(28). 
Các đa thức nhân tính theo Modulo (x4+1). • Cộng khoá quay vòng
o XOR trạng thái với 128 bit khoá quay vòng
o Xử lý lại bằng cột (hiệu quả qua một loạt các thao tác bit)
o Nghịch đảo cho giải mã hoàn toàn xác định, vì khi XOR với nghịch đảo của bản thân nó,
XOR trùng với đảo bit của khoá quay vòng.
o Thiết kế để đơn giản nhất có thể 
Dạng mã Vernam với khoá mở rộng 
Đòi hỏi thêm một số bước tăng độ phức tạp/tính an toàn. • Một vòng AESMở rộng khoá AES
o Dùng khoá 128 bit (16 byte) và mở rộng thành mảng gồm 44/52/60 từ 32 bit.
o Bắt đầu bằng việc copy khoá vào 4 từ đầu
o Sau đó tạo quay vòng các từ mà phụ thuộc vào giá trị ở các vị trí trước và 4 vị trí sau 
3 trong 4 trường hợp chỉ là XOR chúng cùng nhau 
Mỗi cái thứ 4 có S box kết hợp quay và XOR với hằng số trước đó, trước khi XOR cùng nhau 
Thiết kế chống các tấn công đã biết - 53 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin • Giải mã AES
o Giải mã ngược lại không duy nhất vì các bước thực hiện theo thứ tự ngược lại.
o Nhưng có thể xác định mã ngược tương đương với các bước đã làm đối với mã 
Nhưng sử dụng ngược lại với từng bước  Với khoá con khác nhau
o Thực hiện được vì kết quả không thay đổi khi 
Đổi lại phép thế byte và dịch các hàng 
Đổi lại việc trộn các cột và bổ sung khoá vòng
o Lý do mở rộng khoá: các tiêu chuẩn thiết kế bao gồm 
Giả sử biết một phần khoá, khi đó không đủ để biết nhiều hơn, tức là các khoá con khác hoặc khoá nói chung. 
Phép biến đổi nghịch đảo được. 
Nhanh đối với nhiều kiểu CPU. 
Sử dụng hằng số vòng để làm mất tính đối xứng 
Khuếch tán bit khoá thành khoá con cho các vòng 
Có đủ tính phi đối xứng để chống thám mã 
Đơn giản trong việc giải mã
o Các khía cạnh cài đặt: 
có thể cài đặt hiệu quả trên CPU 8 bit -
Phép thế byte làm việc trên các byte sử dụng bảng với 256 đầu vào. -
Dịch hàng là phép dịch byte đơn giản -
Cộng khoá vòng làm việc trên byte XOR -
Các cột hỗn hợp yêu cầu nhân ma trận trong GF(28) mà làm việc trên giá trị
các byte, có thể đơn giản bằng cách tra bảng 
có thể cài đặt hiệu quả trên CPU 32 bit -
Xác định lại các bước để sử dụng từ 32 bit -
Có thể tính trước 4 bảng với 256 đầu vào -
Sau đó mỗi cột trong mỗi vòng có thể tính bằng cách tra 4 bảng và 4 XOR -
Cần 16 Kb để lưu các bảng 
Những nhà thiết kế tin tưởng rằng việc cài đặt rất hiệu quả này là yếu tố cơ bản trong việc chọn nó là mã AES
Sau đây ta xét chi tiết hơn các quá trình mã hoá, sinh khoá và giải mã AES. - 54 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Xét cụ thể quá trình mã hóa bao gồm 4 bước:
1. AddRoundKey - mỗi byte của khối được kết hợp với khóa con, các khóa con này được tạo ra từ
quá trình tạo khóa con Rijndael.
Hình 2.5: Mô tả hoạt động bước AddRoundKey
2. SubBytes - đây là quá trình thay thế (phi tuyến) trong đó mỗi byte sẽ được thay thế bằng một byte
khác theo bảng tra (Tìm trong tài liệu tương ứng).
Hình 2.6: Mô tả hoạt động bước SubBytes
3. ShiftRows - đổi chỗ, các hàng trong khối được dịch vòng.
Hình 2.7: Mô tả hoạt động bước ShiftRows
4. MixColumns - quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi tuyến tính. - 55 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Hình 2.8: Mô tả hoạt động bước MixColumns
Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey. Thuật toán mã hoá
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là khối dữ liệu rõ
OUTPUT: Y 128 bit -- Khối dữ liệu đã được mã hoá TIẾN TRÌNH XỬ LÝ: State:=in; AddRoundKey(State,w[0,Nb-1]); for i in 1..Nr-1 loop SubByte(state); ShiftRows(state); MixColums(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); end loop; SubByte(state); ShiftRows(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); Y:=state;
Thuật toán sinh khoá con sử dụng ba hàm:
SubWord(): Là một hàm đưa 4 từ đầu vào qua S-box để được 4 từ đầu ra
RotWord(): Biến đổi một từ [a0a1a2a3] thành một từ [a1a2a3a0]
Rcon(i): Chứa các giá trị [xi-1,{00},{00},{00}] với x={02} và i>=1.
Trường hợp Nk=8 (độ dài khoá =256) và i-4 là bội số của Nk thì SubWord() được tính toán với w[i-1] trứơc khi XOR Thuật toán:
INPUT: Khoá đầu vào K, Nk OUTPUT: Mảng khoá con TIẾN TRÌNH XỬ LÝ: •
Tách khoá K thành Nk khối 4 byte w[i] i=0..Nk-1 i:=Nk; while (itemp:=w[i-1]; if (i mod Nk = 0);
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk];
else if (Nk > 6 and i mod Nk = 4); temp = SubWord(temp); end if; w[i] = w[i-Nk] xor temp; i = i + 1; end loop;
Thuật toán giải mã sử dụng 4 biến đổi trong đó có 1 biến đổi AddRoundKey và 3 biến đổi đảo ngược. - 56 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Biến đổi InvShiftRows(): tương tự biến đổi ShiftRows thay vì dịch trái thì trong biến đổi này là dịch phải.
Bứơc InvSubBytes(): Phép biến đổi này tương tự như SubBytes() thay vì dùng S-box thì sử dụng InvS- box .
Bứơc InvMixColums(): Tương tự như phép MixColums thay vì a XOR với c(x) thì là a-1 XOR c(x). Thuật toán giải mã
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là bản mã
OUTPUT: Y 128 bit -- Khối dữ liệu đã được giải mã TIẾN TRÌNH XỬ LÝ: state = M
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) Y = state.
IV.4 Các mã đối xứng đương thời IV.4.1 Triple DES Mã DES nhiều lần
Rõ ràng DES cần được thay thế, vì
o Các tấn công về mặt lý thuyết có thể bẻ gãy nó
o Tấn công khoá toàn diện đã được trình diễn • AES là mã mới thay thế
• Trước nó người ta đã sử dụng lặp DES, tức là sử dụng nhiều lần cùng một thuật toán, nhưng có thể với khóa khác nhau. •
Triple DES là dạng đã được chọn, ở đây lặp DES 3 lần. • Tại sao lại là Triple DES
o Mà không phải là lặp hai lần Double DES: khi lặp hai lần không hoàn toàn là trùng với 1 lần
DES nào đó nhưng cũng có thể.
o Có thể dùng 2 lần DES trên một block với hai khoá K1 và K2 : C = EK2(EK1(P))
o Vấn đề là có thể rút gọn về một bước không.
o Double DES gặp tấn công ở mức trung gian 
Gặp nói chung khi sử dụng một mã nào đó 2 lần như trên  Vì X = EK1[P] = DK2[C] 
Tấn công bằng cách mã P với mọi khoá và lưu lại. 
Và giải mã C với các khoá và sánh trùng nhau để tìm X. 
Có thể chỉ ra rằng cần O(256) bước dò tìm.  - 57 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Triple DES với 2 khoá
o Để tránh tấn công ở mức trung gian, cần sử dụng 3 mã, vậy nói chung có thể dùng 3 khoá khác nhau.
o Nhưng để đơn giản hơn có thể sử dụng 2 khoá theo trình tự:E–D-E, tức là mã, giải mã, rồi lại mã.  C = EK1[DK2[EK1[P]]]  
Về mặt an toàn mã và giải mã tương đương nhau 
Nếu K1 = K2 thì tương đương làm việc với một lần DES 
Chuẩn hoá trong ANSI X9.17 & ISO8732
Chưa thấy tấn công thực tế. •
Triple DES với 3 khoá
o Mặc dù chưa có tấn công thực tế, nhưng Triple DES với 2 khoá có một số chỉ định để tránh rơi
vào một số trường hợp đặc biệt.
o Cần phải sử dụng 3 lần DES với 3 khoá để tránh điều đó C = EK3[DK2[EK1[P]]]
o Được chấp nhận bởi một số ứng dụng trên Internet: PGP, S/MIME IV.4.2 Blowfish
Mã đối xứng được thiết kế bởi Shneier khoảng 1993-1994. •
Mã có các đặc trưng sau:
o Cài đặt nhanh trên CPU 32 bit o Dùng ít bộ nhớ.
o Cấu trúc đơn giản, dễ cài đặt và phân tích.
o Độ an toàn thay đổi theo độ dài của khoá •
Được cài đặt trên nhiều sản phẩm khác nhau •
Lược đồ khoá con của Blowfish
o Dùng khoá có độ dài bit linh hoạt từ 32 đến 448.
o Sử dụng khoá để sinh 
18 khoá con 32 bit lưu trữ trong mảng K: KJ 
Bốn S box cỡ 8 x 32 lưu trong Si, j o Lược đồ khoá gồm 
Khởi tạo P mảng và sau đó là 4 hộp S box 
XOR P mảng với bit khoá (sử dụng lại nếu cần) 
Lặp lại việc mã dữ liệu sử dụng P & S hiện thời và thay cặp thành công P sau đó S. 
Đòi hỏi 512 khoá, nên chậm khi lấy khoá con mới o Mã Blowfish 
Sử dụng 2 phép cơ bản cộng và XOR 
Dữ liệu được chia thành 2 nửa mỗi nửa 32 bit L0 & R0 for i = 1 to 16 do
Ri = Li-1 XOR Pi;
Li = F[Ri] XOR Ri-1;
L17 = R16 XOR P18;
R17 = L16 XOR i17; - 58 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin trong đó
F[a,b,c,d] = ((S1,a + S2,b) XOR S3,c) + S4,a o Bàn luận: 
Khoá con và S box phụ thuộc vào khoá sinh ra, sử dụng vào chính mã nên việc phân tích rất khó 
Thay đổi hai nửa sau mỗi vòng làm tăng độ an toàn 
Khoá được cấp đủ lớn để việc tìm duyệt khoá là không thực tế, đặc biệt khi tập trung
vào lược đồ tạo khoá con. IV.4.3 RC4
RC4 là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest. RC4 đơn giản, nhưng h iệu
quả, có nhiều cỡ khoá và là mã bit dòng.
Mã được sử dụng rộng rãi (Web SSL/TLS, không dây WEP). Khoá thực hiện hoán vị ngẫu nhiên cả 8 giá
trị bit. Sử dụng hoán vị đó để khuấy thông tin đầu vào được xử lý từng byte. Sinh khoá RC4
o Bắt đầu từ mảng S với biên độ: 0..255
o Sử dụng khoá để xáo trộn đều thực sự.
o S tạo trạng thái trong của mã. Mã RC4
o Mã tiếp tục trộn các giá trị của mảng.
o Tổng của các cặp trộn chọn giá trị khoá dòng từ hoán vị
o XOR S[t] với byte tiếp theo của bản tin để mã/giải mã i = j = 0 for each message byte Mi i = (i + 1) (mod 256) j = (j + S[i]) (mod 256) swap(S[i], S[j]) t = (S[i] + S[j]) (mod 256) Ci = Mi XOR S[t] Tổng quan RC4 - 59 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin An toàn RC4
o Đảm bảo an toàn chống các tấn công
o Có một số thám mã, nhưng không thực tế
o Kết quả rất phi tuyến
o Vì RC4 là mã dòng nên không được sử dụng lại khoá.
o Có liên quan đến WEP, nhưng tùy thuộc quản lý khoá hơn là bản thân RC4. IV.4.4 RC5
RC5 cũng là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest và được sử dụng trong
nhiều sản phẩm của RSADSI. RC5 có nhiều cỡ khoá và dữ liệu khác nhau và đặc biệt không có vòng lặp.
Thiết kế rất đơn giản và rõ ràng. RC5 được cài đặt dễ dàng trên nhiều CPU và còn được đánh giá là an toàn. • Các mã RC5
o RC5 là một họ các mã với bat ham số RC5-w/r/b 
w là kích thước của từ (16/32/64), sô bit data = 2w  r là số vòng (0..255) 
b là số byte của khoá (0..255)
o Phiên bản chuẩn là RC5-32/12/16 
Tức là 32 bit word, mã khối 64 bit dữ liệu  Sử dụng 12 vòng  Với 16 byte (128 bit) khoá o Mở rộng khoá RC5 
RC5 sử dụng 2r + 2 từ khoá con (w-bit) 
Các khoá con lưu trong mảng R[i], i = 0,1,.., t-1 
Sau đó lược đồ sinh khoá gồm - 60 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin -
Khởi tạo S là giá trị giả ngẫu nhiên cố định, dựa trên hằng sô e và phi. -
Khoá byte được sao vào mảng c-word L -
Phép trộn sẽ kết hợp L và S thành mảng S cuối cùng • Mã RC5
o Tách đầu vào thành 2 nửa A và B L0 = A + S[0]; R0 = B + S[1];
for i = 1 to r do
Li = ((Li-1 XOR Ri-1) <<< Ri-1) + S[2 x i];
Ri = ((Ri-1 XOR Li) <<< Li) + S[2 x i + 1];
o Mỗi vòng giống như 1 vòng 2 DES
o Quay là nguồn phi tuyến chính
o Cần số vòng chấp nhận được (12-16) •
Các chế độ mã RC5
o RFC2040 xác định 4 chế độ của RC5 
Mã khối RC5, tức là chế độ ECB  RC5-CBC 
RC5-CBC-PAD là chế độ với bộ đệm bằng các byte có giá trị bằng số byte đệm. 
RC5-CTS, một kiểu của CBC, cùng kích thước với bản tin gốc.
IV.4.5 Các đặc trưng của mã khối và mã dòng.
1. Các đặc trưng mã khối. Các đặc trưng trong mã khối hiện đại là
o Độ dài khoá / kích thước khối / số vòng có thể thay đổi
o Các phép toán trộn, quay phụ thuộc khoá hoặc dữ liệu. o S box phụ thuộc khoá
o Tạo khoá con phức tạp hơn
o Phép toán với đầy đủ dữ liệu ở mỗi vòng.
o Biến thiên hàm phi tuyến.
2. Các đặc trưng mã dòng.
o Xử lý mẩu tin lần lượt theo từng bit.
o Thông thường có khoá dòng (giả) ngẫu nhiên.
o Kết hợp XOR với bản rõ theo từng bit
o Ngẫu nhiên với khoá dòng sẽ xoá bỏ hoàn toàn các phân tích thống kê của mẩu tin Ci = Mi XOR StreamKeyi o Rất đơn giản
o Nhưng khoá không được sử dụng lại
3. Các tính chất của mã dòng trong khi thiết kế
a. Sử dụng lâu không bị lặp b. Ngẫu nhiên thống kê
c. Phụ thuộc khoá đủ lớn
d. Độ phức tạp tuyến tính lớn e. Rối loạn f. Khuếch tán
g. Sử dụng hàm Boole phi tuyến bậc cao - 61 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
IV.5 Bảo mật dùng khoá đối xứng IV.5.1 Yêu cầu
Mã đối xứng truyền thống được dùng để giữ bí mật bản tin • Xét kịch bản tiêu biểu
o Các máy trạm ở một mạng LAN truy cập vào các máy trạm và máy chủ ở một mạng LAN khác
o Các mạng được kết nối sử dụng chuyển mạch và đường truyền (switches/routers)
o Với các đường truyền vật lý hoặc liên kết vô tuyến/vệ tinh •
Xét việc tấn công và cách đặt mã trong kịch bản trên
o Điều tra từ một máy trạm khác
o Sử dụng kết nối đến mạng hoặc máy chủ đề tìm kiếm
o Sử dụng kết nối ngoài để xâm nhập và điều tra
o Theo dõi và/hoặc làm thay đổi việc truyền kết nối ngoài.
Có hai phương pháp chính xác định chỗ đặt mã •
Mã kết nối (Link Encription)
o Mã xảy ra độc lập trên mỗi kết nối.
o Suy ra cần phải giải mã truyền tin giữa các kết nối
o Đòi hỏi nhiều thiết bị và các cặp khoá •
Mã đầu cuối (End to end Encription) AES là mã mới thay thế
o Mã xảy ra giữa điểm gốc và điểm đích
o Cần thiết bị tại mỗi đầu cuối và khoá chia sẻ
IV.5.2 Thám mã thông tin truyền
Khi dùng mã đầu cuối cần phải để thông tin đầu của nó rõ ràng, vì như vậy mạng mới định hướng đúng
đắn thông tin. Vì vậy tuy nội dung tin được bảo vệ, nhưng khuôn dòng tin truyền thì không. Tốt nhất là
muốn bí mật cả hai. Mã đầu cuối bảo vệ thông tin nội dung trên cả đường truyền và cung cấp danh tính.
Còn mã kết nối bảo vệ luồng truyền khỏi việc theo dõi. • Vị trí mã
Có thể đặt mã ở nhiều tầng khác nhau trong mô hình Hệ thống truyền thông mở OSI
o Mã kết nối thực hiện ở tầng 1 hoặc 2.
o Mã đầu cuối có thể thực hiện ở tầng 3, 4, 6, 7
o Dịch chuyển đến tầng càng cao, càng ít thông tin được mã hoá, nhưng càng an toàn hơn do
người sử dụng giữ bí mật đuợc khoá, tuy nhiên phức tạp hơn với nhiều đối tượng và khoá hơn. •
Thám mã thông tin truyền
Thám mã là theo dõi dòng thông tin truyền giữa hai đối tác:
o Được dùng cả trong quân sự và thương mại
o Có thể được dùng để tạo kênh giám sát
o Mã kết nối che lấp chi tiết đầu tin, nhưng xét trên toàn mạng và ở các đầu cuối nó vẫn nhìn thấy được
Bộ đệm truyền có thể che được dòng tin, nhưng với phải truyền liên tục với tần suất truyền hầu như không đổi theo thời gian. IV.5.3 Phân phối khoá
Sơ đồ đối xứng đòi hỏi cả hai đối tác chia sẻ khoá bí mật chung. Vấn đề đặt ra là làm sao phân phối khoá
mật này như thế nào. Thông thường các hệ mật thường bị sập vì bị bẻ khoá trong sơ đồ phân phối khoá.
Đối với hai đối tác A và B cho trước có một số cách phân phối khoá khác nhau:
2. A lựa chọn khoá và truyền tay cho B
3. Đối tác thứ ba có thể chọn khoá và phân phối cho A và B
4. A và B trao đổi trước có thể dùng khoá trước để mã khoá mới
5. A và B trao đổi mật với đối tác thứ 3 là C, C chuyển tiếp giữa A và B - 62 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Kịch bản phân phối khoá Phân loại khoá
Thông thường khoá phân loại như sau: • Khoá phiên (section key): o Khoá tạm thời.
o Dùng để mã hoá dữ liệu giữa nhóm người sử dụng.
o Cho một phiên logic và sau đó bỏ đi. • Khoá chính (master key):
o Dùng để mã các khoá phiên.
o Chia sẻ giữa người sử dụng và trung tâm phân phối khoá.
Vấn đề phân phối khoá
Đối với mạng lớn đòi hỏi phân cấp Trung tâm phân phối khoá KDC, nhưng cần phải tạo tin cậy cho nhau,
giữa người sử dụng với Trung tâm và các Trung tâm với nhau. Thời gian sống của khoá bộ phận cần được
hạn chế để cho an toàn hơn. Sử dụng phân phối khoá tự động thay mặt người dùng, nhưng phải có hệ
thống tin cậy, các khoá cấp phát được sinh ra càng ngẫu nhiên càng tốt. Cần phải có hệ thống phân phối
khoá phân tán và phân cấp. Đồng thời cần hỗ trợ kiểm soát mục đích sử dụng khoá.
IV.5.4. Các số ngẫu nhiên
Có nhiều ứng dụng của số ngẫu nhiên trong lý thuyết mã. Chẳng hạn, khoá xác thực dùng trong các thủ
tục xác thực chống trì hoãn hoặc khoá phiên, khoá dòng cho bộ đệm một lần. Do đó cần có cơ chế sinh khoá công khai
Trong nhiều trường hợp đặc biệt các giá trị này cần phải
o Ngẫu nhiên về mặt thống kê, có phân phối đều, độc lập.
o Không đoán trước được các giá trị tiếp theo nếu dựa vào các giá trị trước đó.
Sinh số ngẫu nhiên tự nhiên:
Nguồn cung cấp tốt nhất là ngẫu nhiên tự nhiên trong thế giới thực. Thường người ta tìm một sự kiện gì
đó thường gặp nhưng ngẫu nhiên. Nói chung cần phải bằng cách nào đó thực hiện được, chẳng hạn: sóng
radio, âm radio, nhiệt trong diot,…Bắt đầu quan sát cái gì xảy ra trong CPU mới. Ta gặp vấn đề thiên lệch
và phân bố không đều của các tín hiệu, do đó phải điều chỉnh:
o Cần phải bù đắp lại khi tạo mẫu và sử dụng.
o Tốt nhất chỉ sử dụng một số bit ồn nhất trong mỗi mẫu. - 63 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Nguồn số ngẫu nhiên đã đăng
Có một số ít sưu tầm về số ngẫu nhiên đã đăng. Rand Co trong năm 1955 đã in hơn 1 triệu số ngẫu nhiên.
Được sinh bằng cách sử dụng bánh quay số điện tử. Đã được sử dụng trong thiết kế một số mã như
Khafre. Trước đó 1927, Tippet đã in một bộ sưu tập các số ngẫu nhiên. Vấn đề là ở chỗ:
o Số lượng hạn chế các số ngẫu nhiên
o Đã được biết và sử dụng trong nhiều ứng dụng
Bộ sinh số giả ngẫu nhiên (PRNG)
Dùng kỹ thuật thuật toán xác định để tạo số ngẫu nhiên. Mặc dù không ngẫu nhiên thật, nhưng phải nhiều
phép thử để kiểm tra đảm bảo “tính ngẫu nhiên”. Các số như vật được biết đến như những số giả ngẫu
nhiên. Có các bộ sinh số giả ngẫu nhiên PRNG.
Bộ sinh đồng dạng tuyến tính
Mong muốn sinh một dãy số ngẫu nhiên. Lấy ba số a, c, m và một số đầu tiên của dãy. Kỹ thuật lặp chung
được sử dụng là tạo số tiếp theo dựa vào số trước đó:
Xn+1 = (aXn + c) mod m
Cho trước các số và tham số phù hợp có thể sinh ra dãy số tựa ngẫu nhiên khá dài.
Tiêu chuẩn phù hợp cần có là
o Hàm sinh ra giá trị lấp đầy chu kỳ
o Dãy sinh ra phải ngẫu nhiên
o Cài đặt hiệu quả với số học 32 bit
o Lưu ý rằng kẻ thám mã phải khôi phục lại dãy nếu cho trước một số ít các giá trị
Sử dụng mã khối như bộ sinh số giả ngẫu nhiên
Có thể sử dụng mã khối để sinh số giả ngẫu nhiên. Sử dụng chế độ đếm Xi = EKm[i]
Sử dụng chế độ đầu ra phản hồi
Xi = EKm[Xi-1]
Trong ANSI X9.17 PRNG: sử dụng thời gian, ngày tháng và một số thông tin mồi và mã 3 DES để sinh
mồi mới và số ngẫu nhiên. Bộ sinh Blum Blum Shub
Dựa vào thuật toán mã khoá công khai. Sử dụng bit ít quan trọng nhất từ đẳng thức sau:
xi+1 = xi2 mod n
trong đó n=p.q, và các số nguyên tố p, q=3 mod 4. Ở đây đảm bảo tính chất:
không đoán trước được bit tiếp theo. Tính an toàn dựa trên độ khó của bài toán phân tích N ra thừa số.
Không đoán trước được nếu cho chạy truớc một số lần các bít. Tuy nhiên chậm, vì phải dùng các số rất
lớn. Đặc biệt rất chậm cho việc mã hoá, nên chỉ dùng cho việc sinh khoá. Bài tập
1. Viết hai dãy số sinh bởi các phương trình sau:
Xn+1 = (6Xn ) mod 13
Xn
+1 = (7Xn ) mod 13
Chứng tỏ cả hai dãy trên đều có chu kỳ đầy đủ. Dãy nào tỏ ra có vẻ ngẫu nhiên hơn. - 64 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Hãy viết các dãy số theo phương trình sau :
xi+1 = xi2 mod 21 và
xi+1 = xi2 mod 33
Có nhận xét gì về tính ngẫu nhiên của chúng.
3. Lập sơ đồ khối mã hoá DES. Nêu các đặc trưng của DES.
4. Lập sơ đồ khối mã hoá AES. Nêu các đặc trưng của AES.
5. Mô tả sơ đồ dùng bên thứ ba phân phối khoá mật giữa hai người sử dụng. Nêu các ưu nhược điểm của sơ đồ đó.
6. Có thể dùng khoá mật để tạo nên chữ ký điện tử được không, nghĩa là có một dấu hiệu gì đó mà chỉ có
người gửi thực hiện được gắn với nội dung của bản tin. Người nhận đọc được bản tin và có thể kiểm
tra để tin tưởng rằng người gửi đã viết nội dung bản tin đó.
7. Mô tả các đặc trưng mã khối, chuẩn mã DES, chuẩn mã nâng cao AES. - 65 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG V
MÃ CÔNG KHAI VÀ QUẢN LÝ KHOÁ
V.1 Mã khoá công khai Mã khoá riêng
Mã khoá riêng còn được gọi là mã khoá đơn hay mật. Ở đây chỉ dùng một khoá, dùng chung cả người
nhận và người gửi. Khi khoá này được dùng, việc trao đổi thông tin về khoá sẽ được thỏa thuận trước.
Người ta còn gọi đây là mã đối xứng, vì hai đối tác có vai trò như nhau. Do đó không bảo vệ người gửi
khỏi việc người nhận giả mạo mẩu tin và tuyên bố là nó được gửi bằng người gửi. Nghĩa là khi hai người
dùng mã đối xứng, thì họ giữ được bí mật nội dung trao đổi, nhưng bản thân mẩu tin không mang thông
tin xác thực được người gửi. V.1.1 Mã khoá công khai
Khoá công khai ra đời vào đầu những năm 1970. Có thể nói đây là bước tiến quan trọng nhất trong lịch sử
3000 năm mã hoá. Ở đây người ta sử dụng 2 khoá: một khoá riêng và một khoá công khai. Hai khoá này
khác nhau, không đối xứng với nhau, do đó mã khoá công khai, còn được gọi là mã không đối xứng.
Người ta đã ứng dụng một cách thông minh các kết quả của lý thuyết số về hàm số.
Khoá công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứ không phải thay thế khoá
riêng. Cả hai khoá cùng tồn tại, phát triển và bổ sung cho nhau.
Khoá công khai/hai khoá/không đối xừng bao gồm việc sử dụng 2 khoá:
o Khoá công khai, mà mọi người đều biết, được dùng để mã hoá mẩu tin và kiểm chứng chữ ký.
o Khoá riêng, chỉ người nhận biết, đề giải mã bản tin hoặc để tạo chữ ký.
o Là không đối xứng vì những người mã hoá và kiểm chứng chữ ký không thể giải mã hoặc tạo chữ ký. - 66 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Sơ đồ mã khoá công khai
V.1.2 Tại sao lại phải dùng mã khoá công khai
Người ta muốn giải quyết hai vấn đề sau về khoá nảy sinh trong thực tế:
o Phân phối khoá - làm sao có thể phân phối khóa an toàn mà không cần trung tâm phân phối khoá tin cậy
o Chữ ký điện tử - làm sao có thể kiểm chứng được rằng mẩu tin gửi đến nguyên vẹn từ đúng người đứng tên gửi.
Nếu chỉ dùng khoá đối xứng, thì không có giải pháp cho hai bài toán trên. Mã khoá công khai được phát
minh trước công chúng bởi hai nhà bác học Whitfield Diffie & Martin Hellman ở trường Đại học Stanford vào năm 1976.
Tuy nhiên khái niệm ban đầu về nó đã được biết đến sớm hơn bởi cộng đồng các nhà khoa học.
V.1.3 Các đặc trưng của khoá công khai
Các thuật toán khoá công khai dùng 2 khoá với các đặc trưng sau:
o Không có khả năng tính toán để tìm khoá giải mã nếu chỉ biết thuật toán mã và khoá dùng để mã.
o Có thể dễ dàng mã hoá hoặc giải mã mẩu tin nếu biết khoá tương ứng
o Trong một số sơ đồ: một khoá bất kỳ trong hai khoá có thể dùng để mã, còn khoá kia dùng để
giải mã. Chúng có vai trò đối ngược nhau.
V.1.4 Ứng dụng khoá công khai
Có thể phân loại các ứng dụng của khoá công khai thành 3 loại khác nhau:
o Mã/giải mã – cung cấp bảo mật. Đây là ứng dụng bảo mật truyền thống giống như ta vẫn
thường dùng với khoá đối xứng.
o Chữ ký điện tử - cung cấp xác thực. Một trong các ứng dụng mới của khoá công khai mà khoá
đối xứng không thể thực hiện được, đó là khoá công khai có đủ cơ sở để xác nhận người gửi và
có thể là một lựa chọn để tạo chữ ký điện tử của người gửi.
Một số thuật toán mã công khai phù hợp với mọi ứng dụng, còn một số khác chuyên dùng cho ứng dụng cụ thể.
V.1.5 Tính an toàn của các sơ đồ khoá công khai
Cũng giống như khoá riêng việc tìm kiếm vét cạn luôn luôn có thể, tức là khi biết một trong hai khoá và
thuật toán mã hoá về nguyên tắc ta có thể dò tìm khoá thứ hai bằng cách tính toán các giá trị liên quan.
Nói chung khối lượng cần tính toán là rất lớn do độ phức tạp của bài toán xác định khoá. Nếu khoá sử - 67 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
dụng là rất lớn cỡ hơn 512 bit, thì hầu như bài toán tìm khoá thứ hai là không khả thi, không thể thực hiện
được trong thời gian có nghĩa, cho dù nguồn lực có thể rất lớn.
Tính an toàn dựa trên sự khác biệt đủ lớn giữa các bài toán dễ là mã/giải mã khi biết khoá và bài toán khó
là thám mã khi không biết khoá tương ứng. Vì bài toán thám mã nằm trong lớp các bài toán khó tổng quát
hơn đã được biết đến và về mặt lý thuyết đã được chứng minh là nó rất khó có thể thực hiện trên thực tế.
Bởi vì nó đòi hỏi sử dụng số rất lớn, nên số phép toán cần thực hiện là rất nhiều. Đây là ý tưởng chính để
tạo nên một mã công khai. Ta tìm kiếm các bài toán mà nếu biết thông tin mật nào đó được che dấu thì nó
rất dễ thực hiện, còn nếu không thì nó thuộc lớp bài toán rất khó giải, hầu như không thể giải trên thực tế.
Mã công khai thường chậm hơn khá nhiều so với mã đối xứng, nên nó thường được dùng mã những thông tin nhỏ quan trọng. V.2 RSA
RSA là mã công khai được sáng tạo bởi Rivest, Shamir & Adleman ở MIT (Trường Đại học Công nghệ
Massachusetts) vào năm 1977. RSA
là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay. Nó dựa trên các phép toán lũy
thừa trong trường hữu hạn các số nguyên theo modulo nguyên tố. Cụ thể, mã hoá hay giải mã là các phép
toán luỹ thừa theo modulo số rất lớn. Việc thám mã, tức là tìm khoá riêng khi biết khoá công khai, dựa
trên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên tố. Nếu không có thông tin gì, thì ta phải
lần lượt kiểm tra tính chia hết của số đó cho tất cả các số nguyên tố nhỏ hơn căn của nó. Đây là việc làm không khả thi.
Người ta chứng minh được rằng, phép lũy thừa cần O((log n)3) phép toán, nên có thể coi lũy thừa là bài toán dễ.
Cần chú ý rằng ở đây ta sử dụng
các số rất lớn khoảng 1024 bit, tức là cỡ 10350. Tính an toàn dựa vào độ khó của bài toán phân tích ra thừa
số các số lớn. Bài toán phân tích ra thừa số yêu cầu O(e log n log log n) phép toán, đây là bài toán khó.
V.2.1 Khởi tạo khoá RSA
Mỗi người sử dụng tạo một cặp khoá công khai – riêng như sau: •
Chọn ngẫu nhiên 2 số nguyên tố lớn p và q •
Tính số làm modulo của hệ thống: N = p.q
o Ta đã biết ФN)=(p-1)(q-1)
o Và có thể dùng Định lý Trung Hoa để giảm bớt tính toán •
Chọn ngẫu nhiên khoá mã e o Trong đó 1•
Giải phương trình sau để tìm khoá giải mã d sao cho
o e.d=1 mod Ф(N) với 0≤d≤ Ф(N) •
In khoá mã công khai KU={e,N} •
Giữ khoá riêng bí mật KR={d,p,q} V.2.2 Sử dụng RSA
Để mã hoá mẩu tin, người gủi:
o lấy khoá công khai của người nhận KU={e,N} - 68 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Tính C=Me mod N, trong đó 0≤M•
Để giải mã hoá bản mã, người sở hữu nhận:
o Sử dụng khóa riêng KR={d,p,q} o Tính M=Cd mod N •
Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ. Cơ sở của RSA • Theo Định lý Ole
o aФ(n)mod N = 1 trong đó gcd(a,N)=1 o Ta có N=p.q o Ф(N)=(p-1)(q-1) o e.d=1 mod Ф(N)
o e.d=1+k.Ф(N) đối với một giá trị k nào đó. Suy ra
o Cd = (Me)d = M1+k.Ф(N) = M1.(MФ(N))k suy ra o Cd
modN = M1.(1)k modN = M1 modN = M modN Ví dụ
1. Chọn các số nguyên tố: p=17 & q=11.
2. Tính n = pq, n = 17×11=187
3. Tính Ф(n)=(p–1)(q-1)=16×10=160
4. Chọn e : gcd(e,160)=1; Lấy e=7
5. Xác định d: de=1 mod 160 và d < 160
Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
6. In khoá công khai KU={7,187}
7. Giữ khoá riêng bí mật KR={23,17,11}
Ví dụ áp dụng mã RSA trên như sau: •
Cho mẩu tin M = 88 (vậy 88<187) • Mã C = 887 mod 187 = 11 •
Giải mã M = 1123 mod 187 = 88 •
Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau: a. Tính 1123 mod 11 = 0
b. Tính 1123mod 17 = (-6)23 mod 17 = (-6)16(-6)4 (-6)2 (-6) mod 17 = 3
Vì (-6)2 mod 17 = 2, nên (-6)4 mod 17 = 4, (-6)8 mod 17 = -1 (-6)16 mod 17 = 1
c. 11-1 mod 17 = (-6)-1 mod 17 = 14 nên c2 = 11(11-1 mod 17) = 11 (14 mod 17) = 154
d. Vậy M = (3.154) mod 187 = 462 mod 187 = 88 - 69 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin V.2.3 Lũy thừa
Trong các bài toán mã hoá công khai, chúng ta sử dụng nhiều phép toán lũy thừa với số mũ lớn. Như vậy
cần có thuật toán nhanh hiệu quả đối với phép toán này. Trước hết ta phân tích số mũ theo cơ số 2, xét
biểu diễn nhị phân của số mũ, sau đó sử dụng thuật toán bình phương và nhân. Khái niệm được dựa trên
phép lặp cơ sở bình phương và nhân để nhận đựơc kết quả mong muốn. Độ phức tạp của thuật toán là
O(log2 n) phép nhân đối với số mũ n. Ví dụ:
75 = 74.71 = 3.7 = 10 mod 11 vì 72 = 7.7 = 49 = 5 mod 11 74 = 72.72 = 5.5 = 3 mod 11
3129 = 3128.31 = 5.3 = 4 mod 11 •
Phân tích số mũ theo cơ số 2
Trước hết ta chuyển số mũ từ cơ số 10 sang cơ số 2: (11)10 = (1011)2. Sau đó tính toán như sau:
M11 = M1.2^3 + 0.2^2+ 1.2^1 + 1.2^0 = (M1.2^2 + 0.2^1+ 1.2^0 )2M = (M1.2^1 + 0.2^0)2M)2M = ((M2)2 M)2M Thuật toán lũy thừa
Giả sử b1b2…bk là biểu diễn cơ số 2 của c. Tính ac mod n
Trong thuật toán trên giá trị của c chỉ dùng để kiểm tra số mũ của lũy thừa. Còn d chính là giá trị lũy thừa
cần tính và a là cơ số của luỹ thừa. V.2.4 Mã hiệu quả:
Mã sử dụng lũy thừa của khoá công khai e, nếu giá trị của e nhỏ thì tính toán sẽ nhanh, nhưng dễ bị tấn
công. Thường chọn e nhỏ hơn hoặc bằng 65537 (216-1), tức là độ dài khoá công khai là 16 bit. Chẳng
hạn trong ví dụ trên ta có thể lựa chọn e = 23 hoặc e = 7. Ta có thể tính mã hoá nhanh, nếu biết n=pq và sử
dụng Định lý phần dư Trung Hoa với mẩu tin M theo các Modulo p và q khác nhau. Nếu khoá công khai
e cố định thì cần tin tưởng rằng khi chọn n ta luôn có gcd(e,Ф(n)) = 1. Loại bỏ mọi p, q mà làm cho Ф(n)
không nguyên tố cùng nhau với e. - 70 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.2.5 Giải mã hiệu quả:
Có thể sử dụng Định lý phần dư Trung Hoa để tính theo mod p và q, sau đó kết hợp lại để tìm ra bản rõ.
Vì ở đây người sử dụng khoá riêng biết được p và q, do đó có thể sử dụng kỹ thuật này. Nếu sử dụng định
lý phần dư Trung Hoa để giải mã thì hiệu quả là nhanh gấp 4 lần so với giải mã tính trực tiếp. V.2.6 Sinh khoá RSA
Người sử dụng RSA cần phải xác định ngẫu nhiên 2 số nguyên tố rất lớn, thông thường khoảng 512 bit.
Do đó việc sinh ra ngẫu nhiên p, q và kiểm tra xác suất tính nguyên tố của chúng có nhiều giải pháp khác
nhau với độ tin cậy cao. Sau khi chọn được một khoá e hoặc d nguyên tố cùng nhau với Ф(n), dễ dàng
tính được khoá kia chính là số nghịch đảo của nó qua thuật toán Euclide mở rộng. V.2.7 An toàn của RSA
Trên thực té có nhiều cách tấn công khác nhau đối với mã công khai RSA như sau:
Tìm kiếm khoá bằng phương pháp vét cạn, phương pháp này không khả thi với kích thước đủ lớn của các
số hoặc tấn công bằng toán học dựa vào độ khó việc tính Ф(n) bằng cách phân tích n thành hai số nguyên
tố p và q hoặc tìm cách tính trực tiếp Ф(n). Trong quá trình nghiên cứu việc thám mã người ta đề xuất kiểu tấn
công thời gian trong khi giải mã, tức là căn cứ vào tốc độ mã hoá và giải mã các mẩu tin cho trước mà
phán đoán các thông tin về khoá. Cuối cùng có những nghiên cứu tấn công RSA với điều kiện biết trước
bản mã cho trước. Cu thể như sau: Bài toán phân tích
Tấn công toán học có 3 dạng
o Phân tích N = p.q, sau đó tính Ф(N) và d
o Tìm n trực tiếp Ф(N) và tính d o Tìm d trực tiếp •
Hiện tại tin rằng tất cả đều tương đương với bài toán phân tích
o Có các bước tiến chậm theo thời gian
o Hiện tại cho rằng RSA 1024 hoặc 2048 là an toàn • Tấn công thời gian
o Phát triển vào giữa năm 1990
o Paul Kocher chỉ ra rằng kẻ thám mã có thể xác định được khoá riêng nếu theo dõi thời gian
máy tính cần để giải mã các bản tin.
o Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã công khai khác.
o Tấn công thời gian giống như kẻ cướp đoán số điện thọai bằng cách quan sát một người nào đó
trong bao lâu chuyển quay điện thoại từ số này sang số khác. •
Tấn công bản mã chọn trước
o RSA có điểm yếu với tấn công bản mã chọn trước
o Kẻ tấn công chọn bản mã và đoán bản rõ được giải mã
o Chọn bản mã để khám phá RSA cung cấp thông tin để thám mã
o Có thể tính với bộ đệm ngãu nhiên của bản rõ
o Hoặc sử dụng bộ đệm mã hoá phản xứng. V.3 Quản lý khoá V.3.1 Phân phối khoá
Mã khoá công khai giúp giải bài toán phân phối khoá, đây là nhu cầu cấp bách cần phải tạo ra một cơ chế
chia sẻ khoá trong môi trường thường xuyên trao đổi thông tin và thường xuyên thay đổi khoá. Nó bao gồm hai khía cạnh sau:
o Phân phối khoá một cách công khai nhưng đảm bảo được bí mật. - 71 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Sử dụng mã khoá công khai để phân phối khoá mật (còn khoá mật dùng để mã hoá thông tin).
V.3.2 Phân phối khoá công khai
Có thể xem xét để được sử dụng vào một trong những việc sau:
o Thông báo công khai khoá của người sử dụng.
o Thư mục truy cập công cộng cho mọi người.
o Chủ quyền khoá công khai, người nắm giữ khoá công khai.
o Chứng nhận khoá công khai, khoá công khai của người sử dụng được nơi có thẩm quyền chứng nhận. Thông báo công khai
Người dùng phân phối khoá công khai cho người nhận hoặc thông báo rộng rãi cho cộng đồng. Chẳng
hạn như người sử dụng có thể tự bổ sung khoá PGP vào thư điện tử hoặc gửi cho nhóm chia sẻ tin
hoặc một danh sách thư điện tử. •
Điểm yếu chính của thông báo công khai là mạo danh: một người nào đó có thể tạo khoá và tuyên bố
mình là một người khác và gửi thông báo cho mọi người khác. Cho đến khi giả mạo bị phát hiện thì kẻ
mạo danh đã có thể lừa trong vai trò người khác
Thư mục truy cập công cộng
Dùng thư mục truy cập công cộng có thể đạt được tính an toàn cao hơn bằng cách đăng ký khoá với
thư mục công cộng để đăng tải và chia sẻ cho mọi người. •
Thư mục cần được đảm bảo tin cậy với các tính chất sau:
o Chứa việc nhập tên và khoá công khai
o Người dùng đăng ký mật với Thư mục
o Người dùng có thể thay khoá bất cứ lúc nào
o Thư mục được in định kỳ
o Thư mục có thể truy cập qua mạng •
Mô hình trên vẫn còn có các lỗ hổng để kẻ xâm nhập sửa hoặc giả mạo khi vào hệ thống.
Chủ quyền khoá công khai
Đây là bước cải thiện tính an toàn bằng kiểm soát chặt chẽ tập trung việc phân phối khoá từ Thư mục. Nó
bao gồm các tính chất của một Thư mục như đã nêu ở phần trước và đòi hỏi người dùng biết khoá công
khai của Thư mục đó. Sau đó người dùng nhận được bất kỳ khoá công khai mong muốn nào một cách an
toàn, bằng cách truy cập thời gian thực đến Thư mục khi cần đến khoá. Tuy nhiên yêu cầu truy cập thời
gian thực là một nhược điểm của cách phân phối khoá này. Cụ thể trong kịch bản sau hai người sử dụng
chia sẻ khoá công khai của mình cho nhau thông qua việc sử dụng khoá công khai của Chủ quyền để nhận
được khoá công khai của đối tác và trao đổi qua lại để khẳng định người này đã biết thông tin của người kia. - 72 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Chứng nhận khoá công khai
Chứng nhận cho phép trao đổi khoá không cần truy cập thời gian thực đến Chủ quyền thư mục khoá công
khai. Để làm việc đó chứng nhận trói danh tính của người sử dụng với khoá công khai của anh ta và “đóng
dấu và giấy chứng nhận” đó để tránh giả mạo. Các thông tin đi kèm thông thường là chu kỳ kiểm định,
quyền sử dụng, thời hạn,…
Nội dung trên được ký bởi khoá riêng tin cậy của Chủ quyền chứng nhận (CA, Certificate Authority). Do
khoá công khai của CA được thông báo rộng rãi, nên chứng nhận đó có thể được kiểm chứng bới một
người nào đó biết khoá công khai của Chủ quyền chứng nhận.
V.3.3 Phân phối công khai các khoá mật
Nói chung có thể sử dụng các phương pháp trên để nhận được khoá công khai của người định trao đổi
thông tin. Khoá công khai đó dùng cho mục đích mã hoá, giải mã hoặc xác nhận thông tin là của đối tác.
Nhưng các thuật toán khoá công khai chậm, nên giá để bảo mật thông tin là đắt. Do đó thông thường dùng
khoá đối xứng để mã hoá và giải mã nội dung bản tin, mà còn được gọi là khoá phiên hay khóa kỳ (section
key). Có một số cách thỏa thuận khoá phiên phù hợp giữa hai người sư dụng.
Phân phối khoá mật đơn giản
Được đề xuất bởi Merkle vào năm 1979
o A tạo ra một cặp khoá công khai mới tạm thời
o A gửi B một khoá công khai và danh tính của họ
o B tạo ra khoá phiên và gửi nó cho A sử dụng khoá công khai được cung cấp
o A giải mã khoá phiên và cả hai cùng dùng nó. •
Vấn đề nằm ở chỗ, kẻ thù có thể ngăn hoặc đóng giả cả hai bên của thủ tục
Nếu có khoá công khai thì khoá phiên được trao đổi an toàn - 73 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.3.4 Trao đổi khoá hỗn hợp:
Ta có thể kết hợp sử dụng Trung tâm phân phối khoá để phân phối khoá phiên như trên mô hình máy chủ
của IBM. Trung tâm chia sẻ khoá chính (master key) với mỗi người sử dụng. Và phân phối khoá phiên sử
dụng khoá chính với Trung tâm. Sơ đồ khoá công khai được dùng để phân phối khoá chính. Sơ đồ ba lớp
này đặc biệt hữu ích khi người sử dụng phân tán rộng. Các yêu cầu căn bản của hệ thống là chất lượng
thực hiện và sự tương thích nền tảng.
V.4 Trao đổi khoá Diffie Hellman V.4.1 Yêu cầu
Trao đổi khoá Diffie Hellman là sơ đồ khoá công khai đầu tiên được đề xuất
bởi Diffie và Hellman năm 1976 cùng với khái niệm khoá công khai. Sau này được biết đến bởi James
Ellis (Anh), người đã đề xuất bí mật năm 1970 mô hình tương tự. Đây là phương pháp thực tế trao đổi
công khai các khoá mật. Nó thúc đẩy việc nghiên cứu đề xuất các mã khoá công khai. Sơ đồ được sử dụng
trong nhiều sản phẩm thương mại.
Là sơ đồ trao đổi khoá mật dùng khoá công khai:
o Không thể dùng để trao đổi mẩu tin bất kỳ.
o Tuy nhiên nó có thể thiết lập khoá chung.
o Chỉ có hai đối tác biết đến.
o Giá trị khoá phụ thuộc vào các đối tác (và các thông tin về khoá công khai và khoá riêng của họ).
o Dựa trên phép toán lũy thừa trong trường hữu hạn (modulo theo số nguyên tố hoặc đa thức) là bài toán dễ.
o Độ an toàn dựa trên độ khó của bài toán tính logarit rời rạc (giống bài toán phân tích ra thừa số) là bài toán khó.
V.4.2 Khởi tạo Diffie Hellman
Mọi người dùng thỏa thuận dùng tham số chung:
o Số nguyên tố rất lớn q hoặc đa thức. o α
o là căn nguyên tố của mod q. •
Mỗi người dùng (A chẳng hạn) tạo khoá của mình:
o Chọn một khoá mật (số) của A: xA < q
o Tính khoá công khai của A: yA = αxA mod q.
o Mỗi người dùng thông báo công khai khoá của mình yA. - 74 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.4.3 Trao đổi khoá Diffie Hellman
Khoá phiên dùng chung cho hai người sử dụng A, B là KAB KAB = αxA.xB mod q = y x
A B mod q (mà B có thể tính) = y x
B A mod q (mà A có thể tính) •
KAB được sử dụng như khoá phiên trong sơ đồ khoá riêng giữa A và B •
A và B lần lượt trao đổi với nhau, họ có khoá chung KAB cho đến khi họ chọn khoá mới. •
Kẻ thám mã cần x, do đó phải giải tính logarit rời rạc Ví dụ:
Hai người sử dụng Alice & Bob muốn trao đổi khoá phiên:
• Đồng ý chọn số nguyên tố q=353 và α=3
• Chọn các khoá mật ngẫu nhiên:
A chọn xA=97, B chọn xB=233
• Tính các khoá công khai: yA=397 mod 353 = 40 (Alice) yB=3233 mod 353 = 248 (Bob) • Tính khoá phiên chung: K x AB= yB A mod 353 = 24897 = 160 (Alice) K x AB= yA B mod 353 = 40233 = 160 (Bob)
V.5 Mã đường cong Elip
Để đảm bảo tính an toàn đa số mã công khai sử dụng số học số nguyên lớn hoặc đa thức với các số nguyên
rất lớn hoặc đa thức bậc cao. Do đó buộc phải tải phần quan trọng vào kho nhớ để xử lý khoá và mẩu tin.
Làm như vậy vừa tốn bộ nhớ vừa dễ mất an toàn. Để khắc phục điều đó mà vẫn đảm bảo độ an toàn của
mã công khai, người ta đã đề xuất cách khác là dùng đường cong Elip. Ở đây các phép toán được thực
hiện trên các xâu bit có kích thước nhỏ hơn.
V.5.1 Mã đường cong Elip thực
Đường cong Elip được định nghĩa bởi phương trình với 2 biến x, y và hệ số thực •
Xét đường cong Elip bậc 3 dạng:
y2 = x3 + ax + b
trong đó x, y, a, b là các số thực và định nghĩa thêm điểm O. •
Có phép cộng đối với đường cong Elip
o Về hình học tổng của P và Q là điểm đối xứng của giao điểm R
o Điểm O đóng vai trò là đơn vị đối với phép cộng và nó là điểm vô cực. - 75 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
V.5.2 Đường cong Elip hữu hạn
Mã đường cong Elip sử dụng đường cong Elip mà các biến và hệ số là hữu hạn. •
Có hai họ được sử dụng nói chung:
o Đường cong nguyên tố Ep(a,b) được xác định trên Zp o 
Sử dụng các số nguyên modulo số nguyên tố 
Tốt nhất trong phần mềm
o Đường cong nhị phân E2n(a,b)xác định trên GF(2n) 
Sử dụng đa thức với hệ số nhị phân 
Tốt nhất trong phần cứng
V.5.3 Đường cong Elip (ECC – Elliptic Curve Cryptography)
Trong ECC phép cộng giống phép nhân của modulo và phép cộng lặp trong ECC (tức là phép nhân một
điểm với một hệ số) giống như phép lũy thừa của modulo.
Bài toán sau đây trong ECC là bài toán khó tương đương với bài toán logarit rời rạc:
o Giả sử cho Q = k.P, trong đó P, Q là 2 điểm của đường cong Elip
o Dễ dàng tính Q, nếu cho trước P, k
o Rất khó tìm k, nếu cho trước P, Q. Bài toán tìm hệ số k chính là bài toán khó bài toán logarit
đường cong Elip. Mã đường cong Elip dựa trên bài toán khó một chiều này để dấu khoá riêng.
Ví dụ: Xét E11(1,6).
Các phép cộng sau đây thực hiện trong Modulo 11. - 76 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin V.5.4 ECC Diffie Hellman
Chẳng hạn dựa trên cơ sở độ khó của bài toán tìm hệ số liên hệ giữa hai điểm như trên, người ta đưa ra sơ
đồ trao đổi khoá ECC Diffie Hellman giồng như trao đổi khoá Diffie Helman thông thường. Ở đây phép
lũy thừa trong Modulo thông thường được thay bằng phép nhân một điểm với hệ số trong ECC và phép
logarit rời rạc được thay bằng phép toán cho 2 điểm tìm hệ số liên hệ giữa chúng. Bài toán sau là bài toán
khó xác định độ an toàn của sơ đồ trao đổi công khai khoá chung. •
Nhóm người dùng chọn chung một đường cong Elip phù hợp Ep(a,b) •
Chọn điểm cơ sở G=(x1,y1) với bậc lớn, tức là n lớn sao cho nG = O •
Hai người sử dụng A và B chọn khoá riêng của mình: nA< n, nB< n •
Sau đó họ tính các khoá công khai của A và B: PA=nA×G,PB=nB×G. Và cho công bố công khai PA và PB. •
Hai người sử dụng dùng chung khoá mật: K=nA×nB×G. •
Mỗi người đều có cách tính khoá chung đó bằng cách lấy khoá riêng của mình nhân với khoá công
khai của đối tác: K=nA×PB, K=nB×PA
V.5.5 ECC mã và giải mã
Có một số cách dùng đường cong Elip để tạo mã công khai, ta xét cách đơn giản nhất sau:
Trước hết nhóm người sử dụng cần phải thống nhất chọn một đường cong Elip phù hợp và một điểm G
giống như trong trao đổi khoá ECC Diffie – Hellman. Mỗi bản tin M được coi như một điểm PM trên đường cong Elip đó. •
Mỗi người sử dụng chọn một khoá riêng cho mình nA < n •
Và tính khoá công khai để công bố PA=nA×G •
ECC mã bản tin M tương ứng với điểm PM trên đường cong Elip bằng cách tạo bản mã CM là cặp điểm
trên đường cong Elip đó như sau: - 77 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
CM={kG, PM+k Pb}, k là số ngẫu nhiên •
Ta thực hiện phép toán trên hai điểm của CM để giải mã tìm PM
PM+kPb–nB(kG) = PM+k(nBG)–nB(kG) = PM An toàn ECC
Dựa trên bài toán tìm hệ số liên hệ giữa hai điểm trên đường cong Elip gọi là bài toán logarit trên đường
cong Elip. Phương pháp nhanh nhất giải bài toán trên đã biết là “Pollard rho method”. Bài toán này
tương đương với bài toán
phân tích ra thừa số, nhưng có thể sử dụng kích thước khoá nhỏ hơn nhiều, chảng hạn so với RSA. Người
ta chứng minh được rằng với độ dài khoá bằng nhau các tính toán nói chung là tuơng đương. Vậy với độ
an toàn như nhau ECC có nhiều ưu điểm về không gian lưu trữ và tính an toàn đi kèm. Bài tập
1. Tính mã hoá RSA của bản ghi sau: •
p=7, q=11, e = 3, NSD A chọn khoá riêng xA = 7, tính khoá công khai của A •
NSD B gửi bản tin M = 5 và mã bằng khoá công khai của A •
NSD A giải mã sử dụng định lý phần dư Trung Hoa
2. Tính mã hoá RSA của bản ghi sau: •
p=11, q=13, e = 7, NSD A chọn khoá riêng xA = 9, tính khoá công khai của A •
NSD B gửi bản tin M = 7 và mã bằng khoá công khai của A •
NSD A giải mã sử dụng định lý phần dư Trung Hoa
3. Tính mã hoá RSA của bản ghi sau: •
p=23, q=31, NSD A chọn khoá riêng xA = 13, tính khoá công khai của A •
NSD B gửi bản tin M = 20 và mã bằng khoá công khai của A •
NSD A giải mã sử dụng định lý phần dư Trung Hoa
4. Trao đổi khoá Difie Hellman: •
Chọn số nguyên tố dung chung q = 131 và α = 7, •
NSD A chọn khoá riêng xA = 11 •
NSD B chọn khoá riêng xB = 19 •
Tính khoá công khai của A và B •
Nêu cách A va B tính khoá mật dùng chung giữa A và B
5. Trao đổi khoá Difie Hellman: •
Chọn số nguyên tố dung chung q = 131 và α = 7, •
NSD A chọn khoá riêng xA = 11 •
NSD B chọn khoá riêng xB = 19 •
Tính khoá công khai của A và B •
Nêu cách A va B tính khoá mật dùng chung giữa A và B 6. Mã đường cong Elip • Cho hệ đường cong Elip y2 = (x3 + x + 1) mod 13
• Vẽ đồ thị đường cong trên. • Cho G = (4, 2) •
NSD A chọn khoá riêng xA = 2 •
NSD B chọn khoá riêng xB = 3 •
Tính khoá công khai của A và B •
Nêu cách A va B tính khoá mật dùng chung giữa A và B 7. Mã đường cong Elip • Cho hệ đường cong Elip - 78 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin y2 = (x3 + x + 1) mod 23 • Cho G = (3, 10) •
NSD A chọn khoá riêng xA = 2 •
NSD B chọn khoá riêng xB = 3 •
Tính khoá công khai của A và B •
Nêu cách A va B tính khoá mật dùng chung giữa A và B 8. Mã Elgamal: •
Cho hệ (G, α, β) trong đó G là một nhóm với phép nhân và α, β là hai phần tử của G. • Công khai G, α, β •
Giữ bí mật luỹ thừa nguyên a thoả mãn: αa = β (để tìm được a phải giải bài toán logarit rời rạc là bài toán khó) •
Mã hoá mẫu tin M bằng cách chọn ngẫu nhiên số k và tính:
C=E(M) = (y1, y2) = (αk , M.βk ) a • Giải mã: C = y2 . (y1 )-1
a) Áp dụng ví dụ trên cho p = 79, α = 5, a = 3, M = 19 và k = 4. Ở đây nhóm với phép nhân là
Zp, tính β. Tìm bản mã C của bản rõ M và giải mã
b) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là
Zp, tính β. Tìm bản mã C của bản rõ M và giải mã.
c) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là
Zp, tính β. Tìm bản mã C của bản rõ M và giải mã.
9. Nêu thuật toán tính lũy thừa của một cơ số cho trước. Đánh giá độ phức tạp của thuật toán đó.
10. Tại sao có thể nói nếu dùng Định lý Trung Hoa để giải mã thì tốc độ giải mã nhanh gấp 4 lần không dùng nó. - 79 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG VI
XÁC THỰC MẪU TIN VÀ CÁC HÀM HASH
VI.1 Xác thực mẩu tin VI.1.1 Các khái niệm
Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng
o Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát
hiện nếu mẩu tin bị thay đổi trên đường truyền.
o Kiểm chứng danh tính và nguồn gốc: xem xét mẩu tin có đúng do người xưng tên gửi không
hay một kẻ mạo danh nào khác gửi.
o Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa các thông tin chứng
tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó. Như vậy người gửi
không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin.
Ngoài ra có thể xem xét bổ sung thêm các yêu cầu bảo mật như mã hoá. Với mong muốn đáp ứng các yêu
cầu trên, có 3 hàm lựa chọn sau đây được sử dụng:
o Mã mẩu tin bằng mã đối xứng hoặc mã công khai.
o Mã xác thực mẩu tin (MAC): dùng khoá và một hàm nén mẩu tin cần gửi để nhận được một
đặc trưng đính kèm với mẩu tin và người gửi đó.
o Hàm hash (hàm băm) là hàm nén mẩu tin tạo thành “dấu vân tay” cho mẩu tin.
Các yêu cầu bảo mật khi truyền mẩu tin trên mạng.
Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:
o Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết.
o Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin.
o Giả mạo: lấy danh nghĩa người khác để gửi tin.
o Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin.
o Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền.
o Sửa đổi thời gian: làm trì hoãn mẩu tin.
o Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu tin.
o Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của mẩu tin đã gửi. VI.1.2 Mã mẩu tin
Mã mẩu tin bản thân đã cung cấp một phần tính xác thực, vì khoá được chia sẻ giữa người gửi và
người nhận cũng như việc thay đổi nội dung cũng không dễ dàng thực hiện nếu không có khoá. •
Cụ thể nếu mã đối xứng được sử dụng thì người nhận biết người gửi phải tạo ra mẩu tin, vì chỉ có
người gửi và người nhận biết được khoá sử dụng.
Người nhận có thể biết nội dung không bị sửa đổi, nếu mẩu tin có cấu trúc phù hợp, tính dư thừa và
tổng kiểm tra để phát hiện bất cứ thay đổi nào. •
Nếu khoá công khai được sử dụng thì mã cung cấp không đủ độ tin cậy về người gửi, vì mọi người
đều có thể biết khoá công khai của người nhận. Tuy nhiên nếu người gửi ký mẩu tin sử dụng khoá
riêng của họ và sau đó mã với khoá công khai của người nhận, thì khi đó đảm bảo cả tính bảo mật và
xác thực của mẩu tin. Cần phải bổ sung các biện pháp để phát hiện các mẩu tin đã bị làm hỏng. Việc
sử dụng khoá riêng của người gửi kết hợp với khoá công khai của người nhận có nhiều ưu việt, nhưng
với giá phải trả là chậm do dùng 2 mã khoá công khai trên mẩu tin.
VI.1.3 Mã xác thực mẩu tin (MAC – Message Authentication Code)
Sinh ra bởi một thuật toán mà tạo ra một khối thông tin nhỏ có kích thước cố định
o Phụ thuộc vào cả mẩu tin và khoá nào đó.
o Giống như mã nhưng không cần phải giải mã. •
Bổ sung vào mẩu tin như chữ ký để gửi kèm theo làm bằng chứng xác thực. - 80 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Người nhận thực hiện tính toán nào đó trên mẩu tin và kiểm tra xem nó có phù hợp với MAC đính kèm không. •
Tạo niềm tin rằng mẩu tin không bị thay đổi và đến từ người gửi.
Các mã xác thực mẩu tin MAC cung cấp sự tin cậy cho người nhận là mẩu tin không bị thay đổi và
từ đích danh người gửi. Cũng có thể sử dụng mã xác thực MAC kèm theo với việc mã hoá để bảo mật.
Nói chung người ta sử dụng các khoá riêng biệt cho mỗi MAC và có thể tính MAC trước hoặc sau mã
hoá, tốt hơn là thực hiện MAC trước và mã hoá sau.
Sử dụng MAC có nhược điểm là MAC phụ thuộc vào cả mẩu tin và cả người gửi, nhưng đôi khi chỉ cần
xác thực mẩu tin và thông tin xác thực đó chỉ phụ thuộc mẩu tin để lưu trữ làm bằng chứng cho tính toàn
vẹn của nó. Khi đó người ta sử dụng hàm Hash thay vì MAC. Cần lưu ý rằng MAC không phải là chữ ký
điện tử, vì cả người gửi và người nhận đều biết thông tin về khoá. Các tính chất của MAC
MAC là thông tin nén của mẩu tin kết hợp với khoá MAC = CK(M)
o Nén bản tin M có độ dài tùy ý o Sử dụng khoá mật K
o Tạo nên dấu xác thực có độ dài cố định
o Là hàm nhiều - một, nghĩa là có nhiều bản tin khác nhau nhưng có cùng MAC. Tuy nhiên ta
phải lựa chọn hàm MAC sao cho xác suất để các mẩu tin có ý nghĩa có MAC trùng nhau là rất
nhỏ. Việc tìm được các mẩu tin như vậy là rất khó khăn Yêu cầu đối với MAC
Tuỳ thuộc vào kiểu tấn công mà MAC phải có các tính chất khác nhau để chống đối lại. Nhưng nói chung
MAC phải thỏa mãn các điều sau
o Biết mẫu tin và MAC, không thể tìm được mẩu tin khác có cùng MAC.
o Các MAC cần phải phân bố đều
o MAC phải phụ thuộc như nhau vào tất cả các bit trong mẩu tin. Tức là khi thay đổi một bit
thông tin nào đó, MAC sẽ có những thay đổi kéo theo.
VI.1.4 Sử dụng mã đối xứng cho MAC
Có thể dùng mã khối với chế độ chuỗi móc nối bất kỳ và sử dụng khối cuối cùng của mã khối làm MAC của mẩu tin. •
Thuật toán xác thực dữ liệu (DAA – Data Authentication Algorithm) là MAC được sử dụng rộng
rãi dựa trên chế độ DES-CBC, trong đó
o Sử dụng véc tơ ban đầu IV = 0 và bộ đệm 0 của block cuối cùng
o Và mã mẩu tin sử dụng chuẩn mã dữ liệu DES trong chế độ CBC
o Gửi lấy block cuối cùng như là MAC của cả mẩu tin 
hoặc M bit trái nhất (16 ≤ M ≤ 64) của khối cuối cùng - 81 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin •
Nhưng bây giờ MAC cuối cùng với kích thước 64 bit cũng là quá nhỏ để đảm bảo an toàn. Do đó
người ta tìm cách tạo nên các MAC có kích thước lớn hơn.
VI.2 Các hàm Hash (hay còn gọi là hàm băm). VI.2.1 Các yêu cầu
• Nén mẩu tin bất kỳ về kích thước cố định. Và giả thiết là hàm hash là công khai và không dùng khoá.
Hash chỉ phụ thuộc mẩu tin, còn MAC phụ thuộc thêm cả vào khoá.
• Hash được sử dụng để phát hiện thay đổi của mẩu tin. Hash có thể sử dụng nhiều cách khác nhau với
mẩu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẩu tin.
Các tính chất của hàm Hash
Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp, mẩu tin hay dữ liệu h = H(M) •
Nén mẩu tin có kích thước tùy ý về dấu vân tay có kích thước cố định. Hàm Hash được giả thiết là
công khai, mọi người đều biết cách sử dụng
Các yêu cầu của hàm Hash
Có thể áp dụng cho mọi mẩu tin có kích thước tuỳ ý. Tuy nhiên phải tạo đầu ra h có kích thước cố
định, thường là 128 bit đến 1024 bit. •
Dễ tính h = H(M)cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả phụ thuộc chặt vào mẩu tin
M và không tính toán ngược lại. •
Cho trước h không thể tìm được (rất khó) x sao cho H(x) = h. Tính chất này gọi là tính chất một
chiều, chiều tìm nghịch ảnh rất khó khăn, tuy chiều tìm ảnh lại dễ dàng. •
Cho x không thể tìm được y sao cho H(y) = H(x). Đây là tính chất chống đỡ va chạm yếu, không
tìm được mẩu tin có cùng Hash với mẩu tin đã cho. •
Và không thể tìm được x, y sao cho H(y) = H(x). Đây gọi là tính chất chống đỡ va chạm mạnh, đây
là yêu cầu cao hơn tính chống đỡ va chạm yếu.
VI.2.2 Các hàm hash đơn giản
Có một số đề xuất cho một số hàm hash đơn giản. Chẳng hạn biểu diễn mẩu tin dưới dạng bit sau đó chia
chúng thành các khối bit có kích thước bằng kích thước mong muốn của Hash. Rồi dựa trên phép toán
XOR các bit thông tin ở cùng vị trí tương ứng của các khối, kết quả nhận được là Hash của cả mẩu tin.
Hàm hash trên là không an toàn vì đối với mẩu tin bất kỳ có thể tìm được mẩu tin mà có cùng hàm
hash.Cần phải có hàm mạnh hơn, mà sẽ xét trong chương sau.
Tấn công ngày sinh nhật
Có thể nghĩ hash 64 bit là an toàn, có nghĩa là khó tìm được bản tin có cùng hash. Nhưng không phải vậy
vì nghịch lý ngày sinh nhật như sau: trong lớp có ít nhất bao nhiêu sinh viên, để xác suất có ít nhất 2 sinh
viên trùng ngày sinh nhật là lớn hớn 0.5. Theo lý thuyết xác suất thống kê gọi số sinh viên ít nhất trong - 82 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
lớp là k, khi đó xác suất q để không có 2 người nào trùng ngày sinh là tỷ số giữa cách chọn k ngày khác
nhau trong 365 ngày trên số cách chọn k ngày bất kỳ trong 365 ngày. Vậy q = Ck365 / 365k
Do đó, xác suất p để có ít nhất 2 người trùng ngày sinh là
p = 1 – q = 1 - Ck365 / 365k
Để p > 0.5 thì k > 22 hay k =23, cụ thể khi đó p = 0.5073.
Khi chưa tính toán chi tiết chúng ta nghĩ là trong lớp phải có ít nhất khoảng 365/2 tức là 184 sinh viên.
Nhưng trên thực tế con số đó ít hơn rất nhiều chỉ cần 23 sinh viên, chính vì vậy ta gọi đây là nghịch lý ngày sinh nhật.
Điều đó muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẩu tin có cùng bản Hash là không
nhỏ như chúng ta tưởng.
Tấn công ngày sinh nhật hoạt động như sau
o Kẻ thám mã tạo ra 2m/2 biến thể của mẩu tin đúng mà tất cả đều có bản chất ngữ nghĩa như
nhau, với m ở đây là độ dài của bản mã hash.
o Kẻ thám mã cũng có thể tạo ra 2m/2 biến thể khác nhau của mẩu tin lừa dối, tức là có ngữ nghĩa ngược lại
o Hai tập tin được so sánh với nhau để tìm cặp có cùng bản hash (xác suất >= 0.5 dựa vào nghịch lý ngày sinh nhật)
o Người dùng ký vào mẩu tin đúng, sau đó bị thay thế bằng mẩu tin giả mà cũng có chữ ký đúng. •
Kết luận là cần phải dùng MAC có kích thước lớn hơn nữa.
VI.2.3 Mã khối như hàm Hash
Có thể sử dụng mã khối như hàm Hash
o Sử dụng H0 = 0 và bộ đệm không cho khối cuối cùng o Tính Hi = EMi [Hi-1]
o Và sử dụng khối cuối cùng như giá trị hàm hash
o Giống chế độ CBC nhưng không có khoá •
Hash kết quả quá nhỏ (64 bit)
o Cả vì tấn công sinh nhật trực tiếp
o Cả tấn công ở giữa chừng •
Các phương án khác cũng dễ bị tấn công
Kẻ thám mã cũng có thể tạo ra 2m/2 biến thể khác nhau của mẩu tin
VI.2.4 Tính an toàn của hàm Hash và MAC.
Giống như đối với mã khối, hàm hash cũng có tấn công vét cạn, cụ thể: Hash chống va chạm mạnh có giá
2m/2, có nghĩa là với m là độ dài mã hash thì 2m/2 xác định sức mạnh của nó chống đối lại tấn công vét cạn.
Ta cần lựa chọn m đủ lớn để việc duỵêt tìm 2m/2 phương án là không khả thi. Có đề xuất Hash 128 bit cho
MD5 phần cứng. Nhưng có thể tìm được va chạm sau 24 ngày. Do đó có thể coi là hash 128 bit có thể có
lỗ hổng, không an toàn, tốt hơn dùng hash 160 bit.
Tấn công vét cạn trên MAC khó hơn, vì chúng đòi hỏi một cặp MAC của mẩu tin đã biết, do nó phụ thuộc
thêm vào khoá. Có thể tấn công vào không gian khoá (như là tìm khoá) hoặc MAC. Độ dài ít nhất 128 bit
MAC là cần thiết để đảm bảo an toàn
Thám mã tấn công có cấu trúc - 83 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Giống như mã khối muốn dùng tấn công vét cạn, có một số các tấn công thám mã là lựa chọn tốt nhất hiện có. Chẳng hạn 
Nếu CVi = f[CVi-1, Mi]; H(M)=CVN 
Thì ở đây thông thường khai thác sự va chạm của hàm f 
Giống mã khối thường gồm một số vòng lặp 
Khi đó tân công sử dụng các tính chất của các hàm vòng.
VI.3 Các thuật toán Hash và MAC
VI.3.1 Các thuật toán Hash và MAC
Hàm Hash: thực hiện việc nén mẩu tin vê kích thước cố định bằng cách xử lý mẩu tin theo từng
khối kết hợp dùng một hàm nén nào đó và có thể sử dụng mã khối. •
Mã xác thực mẩu tin (MAC): thực hiện tạo phần xác thực cho mẩu tin có kích thước cố định, để
cung cấp tính toàn vẹn của mẩu tin và tính xác thực thông qua việc sử dụng khoá. Có thể tiíen hành
bằng cách sử dụng mã khối với chế độ móc nối hoặc hàm Hash.
Cấu trúc thuật toán Hash
VI.3.2 Thuật toán Hash an toàn SHA (Secure Hash Algorithm)
SHA có nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa kỳ - NIST & NSA vào năm 1993, sau đó
được nâng cấp vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet RFC3174, được nhắc
đến như SHA-1. Nó được sử dụng với sơ đồ chữ ký điện tử DSA (Digital Signature Algorithm).
Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị Hash 160 bit. Các kết
quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất sử dụng nó trong tương lai.
Sau đây ta mô tả chi tiết thuật toán SHA-1 và MD5: Thuật toán SHA-1 Mô tả thụât toán
Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 264 bit, SHA-1 cho ra kết quả là một
thông điệp rút gọn có độ dài là 160 bit Mở rộng thông điệp:
f(t;B,C,D) được định nghĩa như sau.
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19) - 84 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin f(t;B,C,D) = B XOR C XOR D (20≤t≤39)
f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40≤t≤59) f(t;B,C,D) = B XOR C XOR D (60≤t≤79).
Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích của việc mở rộng này là để đảm bảo cho
thông điệp mở rộng có độ dài là bội số của 512.
Giả sử độ dài của thông điệp là l bit. Thêm bit 1 vào cuối thông điệp, theo sau là k bit 0 (k là số dương
không âm nhỏ nhất sao cho l+1+k=448 (mod512)) . Sau đó thêm khối 64 bit là biểu diễn nhị phân của l.
Phân tích thông điệp mở rộng:
Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích thành N khối 512 bit M(1),M(2),
…,M(N). Trong đó 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit,
Khởi tạo giá trị băm:
Giá trị băm là một chuỗi bit có kích thước bằng kích thước của thông điệp băm (trừ SHA-384) gồm các từ ghép lại. Trong đó H (i)
j là từ j trong giá trị băm ở lần lặp i với 0≤i≤N (số block có được sau khi chia văn
bản được đệm) và 0≤j≤(số từ trong giá trị băm -1).Trước khi thực hiện giá trị băm, với mỗi thuật toán băm
an toàn, giá trị băm ban đầu H(0) phải được thiết lập. Kích thước và số lượng từ trong H(0) tuỳ thuộc vào
kích thước thông điệp rút gọn.
SHA-1 sử dụng dãy các hằng số K(0),…K(79) có giá trị như sau:
K(t) = 5A827999 ( 0 <= t <= 19)
K(t) = 6ED9EBA1 (20 <= t <= 39)
K(t) = 8F1BBCDC (40 <= t <= 59)
K(t) = CA62C1D6 (60 <= t <= 79).
Thuật toán của bứơc tính giá trị băm SHA-1
SHA-1 được sử dụng để băm thông điệp M có độ dài l bit thoả mãn điều kiện 0≤l≤264 . Thuật toán sử dụng: -
Một bảng phân bố thông điệp gồm 80 từ 32 bit - 5 biến 32 bit -
Một giá trị băm gồm 5 từ 32 bit
Kết quả của SHA-1 là một thông điệp rút gọn có độ dài 160 bit. Các từ của bảng phân bố thông điệp được
ký hiệu W(0),W(1),…,W(79). 5 biến được ký hiệu là a,b,c,d,e. Các từ của giá trị băm ký hiệu H (i) (i) 0 ,H1 , H (i) (i) (i)
2 , H3 ,H4 . H(0) giữ giá trị băm ban đầu và được thay thế bằng các giá trị băm thành công.H(i) sau mỗi
khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N).
Tính toán thông điệp băm
Định nghĩa: S^n(X)=(X<>32-n). X<> có nghĩa
là loại bỏ từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái. Khởi tạo H H0 = 67452301 ; H1 = EFCDAB89 H2 = 98BADCFE ; H3 = 10325476 H4 = C3D2E1F0.
Chia M(i) thành 16 từ W(0), W(1),…,W(15) For t = 16 to 79
- W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)).
- Đặt a=H0 , b=H1,c=H2,d=H3,e=H4 For t = 0 to 79 do
- TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
- e = d; d = c; c = S^30(b); b = a; a = TEMP;
- Đặt H0 = H0 + a,H1 = H1 + b,H2 = H2 + c,H3 = H3 + d,H4 = H4+ e.
Sau khi tính toán được hết M(n), thông điệp rút gọn là một chuỗi 160 bit là biểu diễn của 5 từ: H0 H1 H2 H3 H4
Đánh giá thuật toán - 85 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
- SHA-1 được xem là an toàn đối với hiện tượng đụng độ vì rất khó tìm được hai thông điệp khác
nhau có giá trị băm giống nhau
- SHA-1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trực tuyến tồn tại trong 9 năm qua.
- SHA-1 được thiết kế cho bộ xử lý 32 bit, thế hệ sắp tới của máy tính dùng các bộ xử lý 64 bit mà
SHA-1 không hiệu quả trên bộ xử lý này.
- Tháng 2 năm 2005 SHA-1 bị tấn công bời 3 chuyên gia người Trung Quốc. Thuật toán này đã bị giải
mã thông qua phương pháp tính phân bổ. Thuật toán MD5 Mô tả thuật toán
Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ dài cố định là 128
bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit. Thuật toán:
Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0] m[1] m[2] ... m[b-1]
Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của nó (bit)
đồng dư với 448 theo môđun 512. Nghĩa là thông điệp được mở rộng sao cho nó còn thiếu 64 bit nữa thì
sẽ có một độ dài chia hết cho 512. Việc thêm bit này được thực hiện như sau: một bit ‘1’ được thêm vào
sau thông điệp, sau đó các bit ‘0’ được thêm vào để có một độ dài đồng dư với 448 môđun 512.
Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1.
Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây
mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau : A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210
Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này nhận giá trị đầu vào
là 3 từ 32 bit và tạo tạo ra một word 32 bit. F(X,Y,Z) = XY v not(X) Z G(X,Y,Z)= XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z))
Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T là phần tử thứ i của bảng,
thì T là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian. Thuật toán
/* Xử lý với mỗi khối 16 bit từ */ For i = 0 to N/16-1 do /* Sao khối i vào X. */ For j = 0 to 15 do Set X[j] to M[i*16+j]. end AA = A BB = B CC = C DD = D
/* Vòng 1: Ký hiệu [abcd k s i] là thao tác sau
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] - 86 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* Vòng 2: Ký hiệu [abcd k s i] là thao tác sau đây
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* Vòng 3: Ký hiệu [abcd k s t] là thao tác sau đây
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* Vòng 4: Ký hiệu [abcd k s t] là thao tác sau đây
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* Làm 16 thao tác sau đây*/
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] /* Tính */ A = A + AA B = B + BB C = C + CC D = D + DD
end /* Kêt thúc vòng lặp trên i*/
Bước 5: Thông điệp rút gọn = A||B||C||D.
Đánh giá thuật toán MD5
Về tốc độ sinh ra chuỗi cốt yếu thì MD5 chậm hơn so với MD4 nhưng nó lại an toàn hơn rất nhiều so với
MD4. Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một giá trị băm của thông
điệp với độ dài tuỳ ý. Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng giá trị băm là khoảng
264 bước tính, và độ khó để tìm được một thông điệp với giá trị băm cho trước là 2128 bước tính. Tuy nhiên
lỗ hổng mới phát hiện trong thuật toán MD5 sẽ cho phép kẻ tấn công có thể tạo ra file giả mạo trong vòng
vài giờ với loại máy tính đạt chuẩn.
Chuẩn Hash an toàn nâng cao
Viện chuẩn công nghệ quốc gia NIST xuất bản bản sửa FIPS 180-2 vào năm 2002, đề nghị bổ sung 3
phiên bản mới của SHA: SHA-256, SHA-384, SHA-512. Các phiên bản trên được thiết kế tương thích
với việc tăng độ an toàn được cung cấp bởi chuẩn mã nâng cao AES. Về cấu trúc và chi tiết giống
SHA-1, suy ra việc phân tích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so với SHA-1. Tổng quan SHA 512 - 87 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin - 88 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Hàm nén SHA-512 SHA-512 là trọng tâm của thuật toán. Ở đây xử lý mẩu tin với các khối 1024 bit và bao gồm 80 vòng o cập nhật bộ đệm 512 bit
o Sử dụng giá trị Wt 64 bit được lấy ra từ block hiện tại của mẩu tin
o Và hằng số quay vòng dựa trên căn bậc ba của 80 số nguyên tố đầu tiên
Hàm quay vòng của SHA-512 - 89 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VI.3.3 Hàm Hash Whirlpool
Bây giờ xem xét hàm Hash Whirlpool, được tán thành bởi dự án NESSIE của châu Âu. Ở đây sử dụng
biến đổi bên trong của chuẩn mã nâng cao AES làm hàm nén và hướng tới sử dụng mã khối như trước.
Chất lượng thực hiện của Whirrlpool sánh được với các thuật toán nổi tiếng như SHA.
Tổng quan Whirlpool được trình bày trên hình vẽ sau Mã khối Whirlpool
Whirlpool được thiết kế riêng cho việc sử dụng hàm Hash với độ an toàn và hiệu quả như chuẩn mã
nâng cao AES, nhưng với kích thước khối 512 bit hash. Hàm và cấu trúc tương tự như AES nhưng đầu
vào được ánh xạ khéo léo vào 10 hàng và các đa thức nguyên tố khác trên GF(28). Ở đây sử dụng giá
trị và thiết kế S-box khác.
An toàn và chất lượng thực hiện của Whirlpool
Whirlpool mới được đề xuất, nên có ít kinh nghiệm sử dụng. Tuy nhiên nó được xây dựng dựa trên kỹ
thuật của AES đã được dùng nhiều. Có thể Whirlpool cần nhiều thiết bị phần cứng hơn SHA, nhưng
chất lượng thực hiện sẽ tốt hơn. - 90 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VI.3.4 Hàm Hash có khoá giống như MAC
Khi đã có các hàm Hash tốt, chúng ta muốn có các mã xác thực mẩu tin MAC dựa trên các hàm Hash
đó. Vì hàm Hash thông thường nhanh hơn và mã nguồn của hàm Hash được phổ biến rộng rãi hơn,
nên việc sử dụng chúng tạo nên MAC sẽ hiệu quả hơn. Ta có thể coi MAC là Hash bao gồm cả khoá
với mẩu tin, cụ thể được đề xuất như sau
KeyedHash = Hash (Key | Message)
Trong trường hợp này có một số điểm yếu đã được tìm thấy. Chính vì muốn khắc phục các điểm yếu
đó, một phương án kết hợp Hash để tạo nên MAC được phát triển là HMAC. VI.3.5 HMAC
HMAC được thiết kế theo chuẩn Internet RFC2104, sử dụng hàm Hash trên mẩu tin:
HMACK = Hash [(K+ XOR opad) || Hash [(K+ XOR ipad) || M)]]
trong đó K+ là khoá đệm mở rộng của K và opad, ipad là các hằng bộ đệm đặc biệt, M là mẩu tin. Như
vậy cần tính nhiều hơn 3 hàm Hash so với nếu bản tin đứng một mình. Bất cứ hàm Hash nào cũng có
thể được sử dụng trong sơ đồ trên: MD5, SHA-1, RIPEMD-160 hay Whirlpool. Tổng quan HMAC - 91 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin An toàn HMAC
Sự an toàn được chứng minh liên quan đến thuật toán Hash nền trong sơ đồ trên. Tấn công HMAC yêu cầu phải hoặc:
o Tấn công vét cạn khoá đã sử dụng hoặc
o Tấn công ngày sinh nhật (tuy cần quan sát số lượng rất lớn mẩu tin)
Có thể lựa chọn phán đoán hàm Hash được sử dụng dựa trên tốc độ và các ràng buộc an toàn. VI.3.6 CMAC
Trước kia đã xét Thuật toán xác thực dữ liệu DAA (CBC-MAC), được sử dụng rộng rãi trong các
chính phủ và công nghiệp. Nhưng kích thước bản MAC có giới hạn nhỏ hơn hoặc bằng 64 bit. Có thể
khắc phục nhược điểm trên bằng cách sử dụng 2 khoá và bộ đệm như sau: phương pháp được viết tắt
từ Mã xác thực mẩu tin dựa trên mã (Cipher-based Message Authentication Code (CMAC) và được đề xuất bởi NIST SP800-38B: - 92 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Tổng quan CMAC
VI.4 Các ứng dụng xác thực
Chúng ta sẽ xem xét các hàm xác thực được phát triển để hỗ trợ xác thực mức ứng dụng và chữ ký điện tử.
Đồng thời cũng xem xét dịch vụ xác thực dùng khoá riêng Kerrberros. Và sau đó xét dịch vụ xác thực dùng khoá công khai X.509. VI.4.1 Kerberos
Đây là mô hình Hệ thống khoá máy chủ tin cậy của MIT (Trường Đại học Kỹ thuật Massachusetts) để
cung cấp xác thực có bên thứ ba dùng khoá riêng và tập trung. Cho phép người sử dụng truy cập vào các
dịch vụ phân tán trong mạng. Tuy nhiên không cần thiết phải tin cậy mọi máy trạm, thay vì đó chỉ cần tin
cậy máy chủ xác thực trung tâm. Đã có hai phiên bản đang sử dụng là: Kerberos 4 và Kerberos 5.
1. Các yêu cầu của Kerrberos
Báo cáo đầu tiên của: Kerberos nêu các yêu cầu sau o An toàn o Tin cậy o Trong suốt o Có thể mở rộng
Ở đây cài đặt sử dụng thủ tục xác thực Needham-Schroeder. 2. Tổng quan Kerberos 4
Là sơ đồ xác thực dùng bên thứ ba cơ bản và có máy chủ xác thực (AS – Authentication Server). Người
dùng thỏa thuận với AS về danh tính của mình, AS cung cấp sự tin cậy xác thực thông qua thẻ cấp thẻ
TGT (Ticket Granting Ticket) và máy chủ cung cấp thẻ (TGS – Ticket Granting Server). Người sử dụng
thường xuyên yêu cầu TGS cho truy cập đến các dịch vụ khác dựa trên thẻ cấp thẻ TGT của người sử dụng.
3. Trao đổi Kerberos 4 - 93 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Người sử dụng nhận thẻ được cấp từ máy chủ xác thực AS, mỗi thẻ cho một phiên làm việc và cũng nhận
thẻ cấp dùng dịch vụ (service granting ticket) từ TGT. Mỗi thẻ dùng cho một dịch vụ khác nhau được yêu
cầu, thông qua việc trao đổi giữa máy chủ/trạm để nhận được dịch vụ.
4. Các lãnh địa Kerberos
Môi trường Kerberos bao gồm: máy chủ Kerberos, một số máy trạm đã được đăng ký với máy chủ, các
máy chủ ứng dụng chia sẻ khoá với máy chủ. Một hệ thống như vậy được gọi là một lãnh địa Kerberos.
Thông thường là một miền hành chính duy nhất. Nếu có nhiều lãnh địa, thì các máy chủ Kerberos cần phải
chia sẻ khoá và tin cậy nhau. 5. Kerberos phiên bản 5
Kerberos 5 được phát triển vào giữa những năm 1990, được thiết kế theo chuẩn RFC 1510. Nó cung cấp
những cải tiến so với phiên bản 4, cụ thể hướng tới các thiếu xót về môi trường, thuật toán mã, thủ tục
mạng thứ tự byte, thời gian sử dụng thẻ, truyền tiếp xác thực, xác thực lãnh địa con. Và các sự khác biệt
về kỹ thuật như: mã kép, các dạng sử dụng không chuẩn, khoá phiên, chống tấn công mật khẩu.
Sau đây ta xem xét chi tiết mô hình Kerberos
Kerberos là một giao thức xác thực mạng, nó cho phép các cá nhân giao tiếp với nhau trên một mạng
không an toàn bằng cách xác thực người dùng này với người dùng khác theo một cơ chế bảo mật và an
toàn. Kerberos ngăn chặn việc nghe trộm thông tin cũng như tấn công thay thế và đảm bảo tính toàn vẹn
của dữ liệu. Kerberos hoạt động theo mô hình máy trạm/máy chủ và nó thực hiện quá trình xác thực 2
chiều - cả người dùng và dịch vụ xác thực lẫn nhau. Kerberos được xây dựng dựa trên mô hình mã hóa
khóa đối xứng và đòi hỏi một thành phần thứ ba tin cậy tham gia vào quá trình xác thực. Mô tả giao thức
Kerberos sử dụng một đối tác tin cậy thứ ba để thực hiện quá trình chứng thực được gọi là Trung tâm phân
phối khóa bao gồm 2 phần riêng biệt: một máy chủ chứng thực (AS) và một máy chủ cấp thẻ (TGS).
Kerberos làm việc dựa trên các thẻ để thực hiện quá trình chứng thực người dùng.
Kerberos duy trì một cơ sở dữ liệu chứa các khoá bí mật. Mỗi thực thể trên mạng (máy trạm hoặc máy
chủ) đều chia sẽ một khoá bí mật chỉ giữa bản thân nó với Kerberos. Để thực hiện quá trình giao tiếp giữa
2 thực thể, Kerberos tạo ra một khoá phiên. Khóa này dùng để bảo mật quá trình tương tác giữa các thực thể với nhau.
Hoạt động của Kerberos:
Quá trình hoạt động của giao thức (AS = Máy chủ xác thực, TGS = Máy chủ cấp thẻ, C = Máy

trạm, S = Dịch vụ):
1. Người dùng nhập vào tên truy cập và mật khẩu ở phía máy trạm.
2. Máy trạm thực hiện thuật toán băm một chiều trên mật khẩu được nhập vào và nó trở thành khoá bí mật của máy trạm.
3. Máy trạm gởi một thông điệp dưới dạng bản rõ đến AS để yêu cầu dịch vụ. Không có khoá bí mật
cũng như mật khẩu nào được gởi đến AS.
4. AS kiểm tra xem có tồn tại người dùng C trong cở sở dữ liệu của nó hay không. Nếu có, nó gởi
ngược lại cho máy trạm 2 thông điệp:
o Thông điệp A: chứa khoá phiên Máy trạm/TGS được mã hóa bởi khoá bí mật của người dùng.
o Thông điệp B: chứa Thẻ (bao gồm ID của máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ có
giá trị và một khoá phiên máy trạm/TGS) được mã hóa sử dụng khoá bí mật của TGS.
5. Khi máy trạm nhận được thông điệp A và B, nó giải mã thông điệp A để lấy khoá phiên máy
trạm/TGS. Khoá phiên này được sử dụng cho quá trình giao đổi tiếp theo với TGS. Ở đây máy
trạm không thể giải mã thông điệp B bởi vì nó được mã hóa bởi khoá bí mật của TGS.
6. Khi yêu cầu dịch vụ (S), máy trạm gởi 2 thông điệp sau đến TGS:
o Thông điệp C: Gồm thông điệp B và ID của dịch vụ được yêu cầu
o Thông điệp D: chứa Authenticator (gồm ID máy trạm và nhãn thời gian -timestamp) được mã
hóa bởi khoá phiên Máy trạm/TGS. - 94 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Khi nhận được thông điệp C và D, TGS giải mã thông điệp D sử dụng khoá phiên máy trạm/TGS
và gởi 2 thông điệp ngược lại cho máy trạm:
o Thông điệp E: chứa thẻ (máy trạm đến máy chủ) (bao gồm ID máy trạm, địa chỉ mạng của máy
trạm, kỳ hạn thẻ có giá trị và một khoá phiên máy trạm/dịch vụ) được mã hóa bởi khoá bí mật của dịch vụ.
o Thông điệp F: chứa khoá phiên của máy trạm/máy chủ được mã hóa bởi khoá phiên máy trạm/TGS.
3. Khi nhận được thông điệp E và F, máy trạm sau đó gởi một Authenticator mới và một thẻ (máy
trạm đến máy chủ) đến máy chủ chứa dịch vụ được yêu cầu.
o Thông điệp G: chứa thẻ (máy trạm đến máy chủ) được mã hóa sử dụng khoá bí mật của máy chủ.
o Thông điệp H: một Authenticator mới chứa ID máy trạm, Timestamp và được mã hóa sử dụng
khoá phiên máy trạm/máy chủ.
4. Sau đó, máy chủ giải mã thẻ sử dụng khoá bí mật của chính nó, và gởi một thông điệp cho máy
trạm để xác nhận tính hợp lệ thực sự của máy trạm và sự sẵn sàng cung cấp dịch vụ cho máy trạm.
o Thông điệp I: chứa giá trị Timestamp trong Authenticator được gởi bởi máy trạm sẽ được cộng
thêm 1, được mã hóa bởi khoá phiên máy trạm/máy chủ.
5. Máy trạm sẽ giải mã sự xác nhận này sử dụng khóa chia sẽ giữa nó với máy chủ, và kiểm tra xem
giá trị timestamp có được cập nhật đúng hay không. Nếu đúng, máy trạm có thể tin tưởng máy chủ
và bắt đầu đưa ra các yêu cầu dịch vụ gởi đến máy chủ.
6. Máy chủ cung cấp dịch vụ được yêu cầu đến máy trạm. Hạn chế của Kerberos
Kerberos thích hợp cho việc cung cấp các dịch vụ xác thực, phân quyền và bảo đảm tính mật của thông
tin trao đổi trong phạm vi một mạng hay một tập hợp nhỏ các mạng. Tuy nhiên, nó không thật thích hợp
cho một số chức năng khác, chẳng hạn như ký điện tử (yêu cầu đáp ứng cả hai nhu cầu xác thực và bảo
đảm không chối cãi được). Một trong những giả thiết quan trọng của giao thức Kerberos là các máy chủ
trên mạng cần phải tin cậy được. Ngoài ra, nếu người dùng chọn những mật khẩu dễ đoán thì hệ thống dễ
bị mất an toàn trước kiểu tấn công từ điển, tức là kẻ tấn công sẽ sử dụng phương thức đơn giản là thử
nhiều mật khẩu khác nhau cho đến khi tìm được giá trị đúng.
Do hệ thống hoàn toàn dựa trên mật khẩu để xác thực người dùng, nếu bản thân các mật khẩu bị đánh cắp
thì khả năng tấn công hệ thống là không có giới hạn. Điều này dẫn đến một yêu cầu rất căn bản là Trung
tâm phân phối khóa cần được bảo vệ nghiêm ngặt. Nếu không thì toàn bộ hệ thống sẽ trở nên mất an toàn. Toàn vẹn dữ liệu
Đối với mỗi hệ bảo mật toàn vẹn dữ liệu là một yêu cầu không thể thiếu, để đảm bảo tính toàn vẹn dữ liệu
thực sự, các thuật mã hoá như mã hoá băm, mã xác nhận thông điệp (MAC) và chữ ký điện tử có thể cùng
được triển khai đồng loạt. Về cơ bản, những biện pháp này sử dụng các hàm một chiều, nghĩa là dữ liệu
không thể bị giải mã ngay cả khi đã biết khoá để mã hoá nó.
VI.4.2 Dịch vụ xác thực X.509
Dịch vụ xác thực X.509 là một phần của chuẩn dịch vụ thư mục CCITT X.500. Ở đây các máy chủ phân
tán bảo trì cơ sở dữ liệu thông tin của người sử dụng và xác định khung cho các dịch vụ xác thực. Thư
mục chứa các chứng nhận khoá công khai, khoá công khai của người sử dụng được ký bởi chủ quyền
chứng nhận. Để thống nhất dịch vụ cũng xác định các thủ tục xác thực, sử dụng mã khoá công khai và chữ
ký điện tử. Tuy thuật toán không chuẩn nhưng được RSA đề xuất. Các chứng nhận X.509 được sử dụng rộng rãi.
1. Các chứng nhận X.509
Được phát hành bởi Chủ quyền chứng nhận (Certification Authority – CA) bao gồm:
o Các phiên bản 1,2 hoặc 3
o Số sổ (duy nhất với CA) xác định chứng nhận
o Thuật toán xác định chữ ký - 95 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin o Xuất bản tên X.500 (CA)
o Chu kỳ hiệu lực (từ-đến ngày)
o Đối tượng của tên X.500 (tên của người sở hữu)
o Đối tượng thông tin khoá công khai (thuật toán, các tham số,khoá)
o Định danh duy nhất xuất bản (phiên bản 2+)
o Định danh duy nhất đối tượng (phiên bản 2+)
o Các trường mở rộng (phiên bản 3)
o Chữ ký (hoặc hash của các trường trong chứng nhận)
Ký hiệu CA<> là chứng nhận cho A được ký bởi CA 2. Nhận chứng nhận
Người sử dụng bất kỳ có thể trao đổi với CA để nhận được chứng nhận. Chỉ CA có thể sửa chứng nhận.
Vì không thể bị giả mạo nên chứng nhận có thể được đặt trong thư mục công cộng. 3. Sơ đồ phân cấp CA
Nếu cả hai người sử dụng chia sẻ chung CA thì họ được giả thiết là biết khoá công khai của CA đó.
Ngược lại các CA cần tạo nên sơ đồ phân cấp để trao đổi chứng nhận với nhau. Sử dụng chứng nhận liên
kết các thành viên của sơ đồ để có được chứng nhận của các CA khác. Mỗi CA có thể gửi tiếp (forward)
các chứng nhận của mình cho clients và có thể gửi lại (backward) chứng nhận của mình cho cha của nó.
Mỗi client tin tưởng các chứng nhận của cha. Có thể kiểm chứng chứng nhận bất kỳ của một CA cho
người sử dụng bằng các CA khác trong sơ đồ phân cấp.
4. Sự thu hồi chứng nhận
Giấy chứng nhận có chu kỳ sử dụng, có thể thu hồi trước thời hạn trong những trường hợp cần thiết như:
khoá riêng của người sử dụng bị lộ, người dùng không tiếp tục được chứng nhận bởi CA đó, Giấy chứng
nhận của CA bị làm hại. Nói chung CA bảo trì danh sách các chứng nhận bị thu hôì (CRL – Certificate
Revocation List). Người sử dụng có thể kiểm tra lại các chứng nhận đã bị thu hồi.
5. Các thủ tục xác thực
X.509 bao gồm ba thủ tục xác thực tùy chọn: xác thực một chiều, xác thực hai chiều và xác thực ba chiều.
Mọi thủ tục trên đều sử dụng các chữ ký khoá công khai. Xác thực một chiều
Một chiều A->B được sử dụng để thiết lập
o Danh tính của A và rằng mẩu tin là từ A
o Mẩu tin được gửi cho B
o Tính toàn vẹn và gốc gác của mẩu tin
Mẩu tin có thể bao gồm cả nhãn thời gian, ký hiệu đặc trưng của mẩu tin (nonce), danh tính của B và nó
được ký bởi A. Có thể bao gồm một số thông tin bổ sung cho B như khoá phiên. Xác thực hai chiều
Hai mẩu tin A->B và B->A được thiết lập, ngoài mẩu tin từ A đến B như trên còn có:
o Danh tính của B và trả lời từ B o Trả lời này dành cho A
o Tính toàn vẹn và gốc gác của trả lời
Trả lời bao gồm cả ký hiệu đặc trưng của mẩu tin (nonce) từ A, cả nhãn thời gian và ký hiệu đặc trưng trả
lời từ B. Có thể bao gồm một số thông tin bổ sung cho A. Xác thực ba chiều
Ba mẩu tin A->B, B->A và A->B được thiết lập như trên mà không có đồng hồ đồng bộ. Ngoài 2 chiều
như trên còn có trả lời lại từ A đến B chứa bản sao nonce của trả lời từ B, nghĩa là các nhãn thời gian mà không cần kiểm tra. X.509 phiên bản 3
Trong phiên bản 3 được bổ sung một số thông tin cần thiết trong giấy chứng nhận như: Email/URL, chi
tiết về đợt phát hành, các ràng buộc sử dụng. Tốt hơn hết là đặt tên tường minh cho các cột mới xác định
trong phương pháp mở rộng tổng quát. Các mở rộng bao gồm: o Danh tính mở rộng - 96 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Chỉ dẫn tính quan trọng o Giá trị mở rộng
Các mở rộng xác thực
Khoá và các thông tin đợt phát hành
o Bao trùm thông tin về đối tượng, khoá người phát hành, chỉ thị kiểu phát hành, chứng nhận
Đối tượng chứng nhận và các thuộc tính người phát hành
o Hỗ trợ có tên phụ, định dạng phụ cho các đối tượng và người phát hành
Chứng nhận các ràng buộc phát hành
o Cho phép sử dụng các ràng buộc trong chứng nhận bởi các CA khác Bài tập 1. Chữ ký điện tử DSA: • Cho p = 23, q = 11, h=3 • Tính g •
NSA A chọn khoá riêng xA = 7, tính khoá công khai của yA của A •
Cho bản Hash của M là H(M) = 15 •
Chọn số ngẫu nhiên k = 6 •
Tính chữ ký điện tử của A: (r, s) •
Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M. 2. Chữ ký điện tử DSA: • Cho p = 53, q = 13, h=5 • Tính g •
NSA A chọn khoá riêng xA = 11, tính khoá công khai của yA của A •
Cho bản Hash của M là H(M) = 17 •
Chọn số ngẫu nhiên k = 9 •
Tính chữ ký điện tử của A: (r, s) •
Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M.
3. Hãy cho biết các phương pháp phân phối khoá công khai. Và các cách trao đổi công khai khoá
mật giữa hai người sử dụng
4. Nêu sự khác biệt giữa MAC và Hash và nêu tác dụng của chúng. Cho một số ví dụ về các hàm MAC và Hash.
5. Cho biết HMAC là gì, sử dụng chúng vào mục đích nào.
6. Nêu một số cách tạo và kiểm chứng chữ ký điện tử
7. Chứng minh “Nghịch lý Ngày sinh nhật”, tức là có ít nhất 23 người, thì xác suất để có hai người
trùng ngày sinh nhật sẽ lớn hơn hoặc bằng 0.5.
8. Các hàm số học và logic cơ bản nào dùng trong MD5?
9. Các hàm số học và logic cơ bản nào dùng trong SHA-1?
10. Các hàm số học và logic cơ bản nào dùng trong RIPEMD-160?
11. Trình bày hoạt động của các giao thức xác thực trên mô hình Kerberos.
12. Nêu nội dung dịch vụ xác thực X.509. - 97 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG VII AN TOÀN IP VÀ WEB
Trong chương này chúng ta sẽ xét đến cơ chế an toàn IPSec và một số giao thức bảo mật lớp vận
chuyển ứng dụng trên Web. VII.1 An toàn IP
Có khá nhiều cơ chế an toàn ứng dụng chuyên biệt như: S/MIME, PGP, Kerberos, SSL/HTTPS. Tuy
nhiên có những cơ chế an toàn mà xuyên suốt nhiều tầng ứng dụng như là cơ chế an toàn IP được cài
đặt trên mạng cho mọi ứng dụng. VII.1.1 IPSec
IPSec là cơ chế an toàn IP tổng quan. Nó cung cấp: xác thực, bảo mật và quản trị khoá. IPSec được
dùng trên mạng LAN, mạng WAN riêng và chung và trên cả mạng Internet. Lợi ích của IPSec
IPSec trên bức tường lửa/router cung cấp an toàn mạnh cho mọi việc truyền qua vành đai. Nó chống
lại việc đi vòng qua bức tường lửa/router.
IPSec nằm ở tầng vận chuyển bên dưới nên trong suốt với mọi ứng dụng và có thể trong suốt với
người sử dụng đầu cuối. Nó có thể cung cấp an toàn cho người sử dụng riêng biệt và bảo vệ kiến trúc rẽ nhánh.
VII.1.2 Kiến trúc an toàn IP
Đặc tả an toàn IP rất phức tạp, được định nghĩa qua một số chuẩn (RFC): bao gồm RFC
2401/2402/2406/2408 và có nhiều chuẩn khác được nhóm theo loại. Điều này là bắt buộc đối với IP6
và tuỳ chọn với IP4. Có hai mở rộng an toàn cho phần đầu:
Phần đầu xác thực (AH – Authentication Header)
Tải trọng an toàn đóng gói (ESP – Encapsulating Security Payload) 1. Dịch vụ IPSec
IPSec nhằm đạt các mục đích sau: kiểm soát truy cập, toàn vẹn không kết nối, xác thực nguồn gốc dữ
liệu, từ chối tải lại gói (đây là một dạng của toàn vẹn liên kết từng phần), bảo mật (mã hoá), bảo mật
luồng vận chuyển có giới hạn. 2. Liên kết an toàn
Quan hệ một chiều giữa người gửi và người nhận mà cung cấp sự an toàn cho luồng vận chuyển và
được xác định bởi 3 tham số
o Chỉ số tham số an toàn o Địa chỉ IP đích
o Tên của thủ tục an toàn
Ngoài ra có một số các tham số khác như: chỉ số dãy (sequence number), thông tin về phần đầu xác
thực và phần đầu mở rộng AH & EH, thời gian sống. Có lưu trữ cơ sở dữ liệu của các liên kết an toàn.
3. Phần đầu xác thực (Authentication Header - AH)
AH cung cấp sự hỗ trợ cho an toàn dữ liệu và xác thực của các gói IP:
o Hệ thống đầu cuối/chuyển mạch có thể xác thực người sử dụng/ứng dụng
o Ngăn tấn công theo dõi địa chỉ bằng việc theo dõi các chỉ số dãy.
AH dựa trên sử dụng MAC: HMAC–MD5–96 hoặc HMAC – SHA -1-96
Muốn vậy các bên cần chia sẻ khoá mật.
4. Tải trọng an toàn đóng gói (ESP)
ESP đảm bảo bảo mật nội dung mẩu tin và luồng vận chuyển giới hạn, có lựa chọn cung cấp dịch vụ
xác thực và hỗ trợ phạm vi rộng các mã, các chế độ mã, bộ đệm
o Bao gồm DES, Triple DES, RC5, IDEA, CAST,… - 98 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o CBC và các chế độ khác
o Bộ đệm cần thiết để lấp đầy các kích thước khối, các trường cho luồng vận chuyển
5. Chế độ vận chuyển và chế độ ống ESP
ESP được sử dụng với 2 chế độ: vận chuyển và ống. Trong chế độ ống không cần giữ tường minh địa chỉ đích.
Chế độ vận tải được sử dụng để mã và tuỳ chọn xác thực dữ liệu IP:
o Dữ liệu được bảo vệ nhưng phần đầu vẫn để rõ để biết địa chỉ đích
o Có thể phân tích vận chuyển một cách hiệu quả
o Tốt đối với ESP máy chủ vận chuyển tới máy chủ
Chế độ ống mã toàn bộ gói IP
o Bổ sung phần đầu mới cho bước nhảy tiếp
o Tốt cho mạng riêng ảo VPN (Virtual Private Network), cổng đến cổng an toàn
6. Kết hợp các liên kết an toàn
Các liên kết an toàn có thể cài đặt qua AH hoặc ESP. Để cài đặt cả hai cần kết hợp các liên kết an toàn
o Tạo nên bó các liên kết an toàn
o Có thể kết thúc tại các điểm cuối cùng nhau hoặc khác nhau
o Kết hợp bởi kề vận chuyển và ống lặp
Cần bàn luận về thứ tự xác thực và mã hoá 7. Quản trị khoá
Quản lý sinh khoá và phân phối khoá giữa các bên trao đổi thông tin, thông thường cần hai cặp khoá, 2
khoá trên một hướng cho AH và ESP.
Trong cơ chế Quản trị khoá thủ công, người quản trị hệ thống thiết lập cấu hình cho từng hệ thống.
Trong cơ chế Quản trị khoá tự động:
o Hệ thống tự động dựa vào yêu cầu về khoá cho các liên kết an toàn trong hệ thống lớn.
o Có các thành phần như thủ tục trao đổi khóa Oakley và liên kết an toàn trên mạng ISAKMP 8. Oakley
Oakley là thủ tục trao đổi khoá, dựa trên trao đổi khoá Diffie-Hellman. Ở đây bổ sung các đặc trưng để
khắc phục các điểm yếu như Cookies, nhóm (tham số tổng thể), các chỉ số đặc trưng (nonces), trao đổi
khoá Diffie Hellman với việc xác thực. Có thể sử dụng số học trên trường số nguyên tố hoặc đường cong elip. 9. ISAKMP
ISAKMP liên kết an toàn trên Internet và thủ tục quản trị khoá. Nó cung cấp khung để quản lý khoá,
xác định các thủ tục và định dạng gói để thiết lập, thỏa thuận, điều chỉnh và xoá các liên kết an toàn
(SA – Secure Associations). ISAKMP độc lập với thủ tục trao đổi khoá, thuật toán mã hoá và phương pháp xác thực
Trao đổi và tải trọng ISAKMP
Có một số kiểu tải trọng ISAKMP: an toàn, đề xuất, dạng vận chuyển, khoá, định danh, chứng nhận,
hash, chữ ký, nonce và xoá.
ISAKMP có bộ khung cho 5 kiểu trao đổi mẩu tin:cơ sở, bảo vệ định danh, xác thực, tích cực và thông tin. VII.2 An toàn Web VII.2.1 Khái niệm
Web ngày càng được sử dụng rộng rãi bởi các công ty, chính phủ và cá nhân, nhưng Internet và Web
có những lỗ hổng lớn và có nhiều mối đe doạ an toàn như: o Tính toàn vẹn o Bảo mật o Từ chối dịch vụ - 99 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin o Xác thực
Như vậy cần bổ sung cơ chế bảo mật cho Web.
VII.2.2 SSL (Secure Socket Layer)
SSL là dịch vụ an toàn tầng vận chuyển, ban đầu được phát triển bởi Netscape. Sau đó phiên bản 3 của
nó được thiết kế cho đầu vào công cộng và trở thành chuẩn Internet, được biết đến như an toàn tầng
vận chuyển TLS (Transport Layer Security).
SSL sử dụng giao thức TCP để cung cấp dịch vụ đầu cuối đến cuối tin cậy và có 2 tầng thủ tục
VII.2.3 Kiến trúc SSL Ở đây kết nối SSL là:
o Tạm thời, đầu cuối đến đầu cuối, liên kết trao đổi
o Gắn chặt với 1 phiên SSL Và phiên SSL:
o Liên kết giữa người sử dụng và máy chủ
o Được tạo bởi thủ tục HandShake Protocol
o Xác định một tập các tham số mã hoá
o Có thể chia sẻ bởi kết nối SSL lặp
1. Dịch vụ thủ tục bản ghi SSL
Dịch vụ thủ tục bản ghi SSL đảm bảo tính toàn vẹn của bản tin:
o Sử dụng MAC với khoá mật chia sẻ
o Giống như HMAC nhưng với bộ đệm khác và cung cấp bảo mật:
o Sử dụng mã đối xứng với khoá chung xác định bởi thủ tục HandShake.
o IDEA, RC2-40, DES-40, DES, 3DES, Fortezza, RC4-40, RC4-128
o Bản tin được nén trước khi mã
2. Thủ tục thay đổi đặc tả mã SSL (SSL Change Cipher Spec Protocol):
Đây là một trong 3 giao thức chuyên biệt của SSL sử dụng thủ tục bản ghi SSL. Đây là mẩu tin đơn,
buộc trạng thái treo trở thành hiện thời và cập nhật bộ mã đang dùng
3. Thủ tục nhắc nhở SSL (SSL Alert Protocol)
Truyền đi lời nhắc của SSL liên quan cho thành viên. Nghiêm khắc: nhắc nhở hoặc cảnh báo Nhắc nhở đặc biệt:
o cảnh báo: mẳu tin không chờ đợi, bản ghi MAC tồi, lỗi giải nén, lỗi Handshake, tham số không hợp lệ
o Nhắc nhở: đóng ghi chú, không chứng nhận, chứng nhận tồi, chứng nhận không được hỗ
trợ, chứng nhận bị thu hồi, chứng nhận quá hạn, chứng nhận không được biết đến.
Nén và mã như mọi dữ liệu SSL
4. Thủ tục bắt tay SSL (SSL HandShake Protocol) - 100 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin 1.
Thủ tục này cho phép máy chủ và máy trạm: o Xác thực nhau
o Thỏa thuận thuật toán mã hoá và MAC
o Thỏa thuận khoá mã sẽ dùng
Nó bao gồm một loạt các thông tin:
o Thiết lập các khả năng an toàn
o Xác thực máy chủ và trao đổi khoá
o Xác thực máy trạm và trao đổi khoá o Kết thúc
5. An toàn tầng vận chuyển
IETF chuẩn RFC 2246 giống như SSLv3. Với khác biệt nhỏ:
o số ký hiệu kích thước bản ghi
o sử dụng HMAC thay cho MAC - 101 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o hàm giả ngẫu nhiên tăng độ mật o có mã ghi chú bổ sung
o có một số thay đổi hỗ trợ mã
o thay đổi kiểu chứng nhận và thỏa thuận
o thay đổi bộ đệm và tính toán mã
Sau đây ta xem xét chi tiết giao thức xác thực người dùng RADIUS và giao thức SSL: Giao thức RADIUS
RADIUS là một dịch vụ dành cho việc xác nhận và cho phép người dùng truy cập từ xa qua các thiết bị
như môdem, DSL, cáp mạng hoặc các thiết bị không dây khác. Một site thông thường có một máy chủ
truy cập được kết nối vào một modem. Một máy chủ dịch vụ RADIUS được kết nối vào mạng như một
dịch vụ xác nhận. Những người dùng từ xa gọi vào máy chủ truy cập, máy chủ sẽ yêu cầu những dịch vụ
xác nhận từ máy chủ dịch vụ RADIUS. Máy chủ dịch vụ RADIUS sẽ xác nhận người dùng và cho phép
họ truy cập tài nguyên.Những nhà quản trị mạng tạo ra những hồ sơ về người dùng ở máy chủ
RADIUS,xác định các quyền hạn cấp cho người dùng từ xa. Những giao thức hỏi đáp được sử dụng trong
suốt quá trình người dùng vào mạng. Giao thức SSL
Được phát triển bởi Netscape, giao thức SSL đã được sử dụng rộng rãi trên mạng Internet trong việc xác
thực và mã hoá thông tin giữa máy trạm và máy chủ. Trong khi SSL có thể sử dụng để hỗ trợ các giao
dịch an toàn cho rất nhiều ứng dụng khác nhau trên Internet. SSL không phải là một giao thức đơn lẻ, mà
là một tập các thủ tục đã được chuẩn hoá để thực hiện các nhiệm vụ bảo mật sau: •
Xác thực máy chủ: Cho phép người sử dụng xác thực được máy chủ muốn kết nối. Lúc này, phía
browser sử dụng các kỹ thuật mã hoá công khai để chắc chắn rằng chứng chỉ và khoá công cộng
của máy chủ là có giá trị và được cấp phát bởi một CA trong danh sách các CA đáng tin cậy của máy trạm. •
Xác thực máy trạm: Cho phép phía máy chủ xác thực được người sử dụng muốn kết nối. Phía máy
chủ cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem chứng chỉ và khoá công cộng
của máy chủ có giá trị hay không và được cấp phát bởi một CA trong danh sách các CA đáng tin cậy không. •
Mã hoá kết nối: Tất cả các thông tin trao đổi giữa máy trạm và máy chủ được mã hoá trên đường
truyền nhằm nâng cao khả năng bảo mật. Hoạt động của SSL
Giao thức SSL hoạt động dựa trên hai nhóm con giao thức là giao thức “bắt tay” và giao thức “bản ghi”.
Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ
liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối
tượng đó.Giao thức SSL “bắt tay” sẽ sử dụng SSL “bản ghi” để trao đổi một số thông tin giữa máy chủ và
máy trạm vào lần đầu tiên thiết lập kết nối SSL.
Một giao dịch SSL thường bắt đầu bởi quá trình “bắt tay” giữa hai bên. Các bước trong quá trình “bắt tay” có thể như sau:
1. Máy trạm sẽ gửi cho máy chủ số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ
liệu được tạo ra ngẫu nhiên (chữ ký số) và một số thông tin khác mà máy chủ cần để thiết lập kết nối với máy trạm
2. Máy chủ gửi cho máy trạm số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ
liệu được tạo ra ngẫu nhiên và một số thông tin khác mà máy trạm cần để thiết lập kết nối với máy - 102 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
chủ. Ngoài ra máy chủ cũng gửi chứng chỉ của nó đến máy trạm và yêu cầu chứng chỉ của máy trạm nếu cần.
3. Máy trạm sử dụng một số thông tin mà máy chủ gửi đến để xác thực máy chủ. Nếu như máy chủ
không được xác thực thì người sử dụng sẽ được cảnh báo và kết nối không được thiết lập. Còn nếu
như xác thực được máy chủ thì phía máy trạm sẽ thực hiện tiếp bước 4.
4. Sử dụng tất cả các thông tin được tạo ra trong giai đoạn bắt tay ở trên, máy trạm (cùng với sự cộng
tác của máy chủ và phụ thuộc vào thuật toán được sử dụng) sẽ tạo ra premaster secret cho phiên
làm việc, mã hoá bằng khoá công khai mà máy chủ gửi đến trong chứng chỉ ở bước 2, và gửi đến máy chủ.
5. Nếu máy chủ có yêu cầu xác thực máy trạm, thì phía máy trạm sẽ đánh dấu vào phần thông tin
riêng chỉ liên quan đến quá trình “bắt tay” này mà hai bên đều biết. Trong trường hợp này, máy
trạm sẽ gửi cả thông tin được đánh dấu và chứng chỉ của mình cùng với premaster secret đã được mã hoá tới máy chủ.
6. Máy chủ sẽ xác thực máy trạm. Trường hợp máy trạm không được xác thực, phiên làm việc sẽ bị
ngắt. Còn nếu máy trạm được xác thực thành công, máy chủ sẽ sử dụng khoá bí mật để giải mã
premaster secret, sau đó thực hiện một số bước để tạo ra master secret.
7. Máy trạm và máy chủ sẽ sử dụng master secret để tạo ra các khoá phiên , đó chính là các khoá đối
xứng được sử dụng để mã hoá và giải mã các thông tin trong phiên làm việc và kiểm tra tính toàn vẹn dữ liệu.
8. Máy trạm sẽ gửi một lời nhắn đến máy chủ thông báo rằng các thông điệp tiếp theo sẽ được mã
hoá bằng khoá phiên. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng phía máy
trạm đã kết thúc giai đoạn “bắt tay”.
9. Máy chủ cũng gửi một lời nhắn đến máy trạm thông báo rằng các thông điệp tiếp theo sẽ được mã
hoá bằng khoá phiên. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng máy chủ đã
kết thúc giai đoạn “bắt tay”.
10. Lúc này giai đoạn “bắt tay” đã hoàn thành, và phiên làm việc SSL bắt đầu. Cả hai phía máy trạm
và máy chủ sẽ sử dụng các khoá phiên để mã hoá và giải mã thông tin trao đổi giữa hai bên, và
kiểm tra tính toàn vẹn dữ liệu
VII.3 Thanh toán điện tử an toàn VII.3.1 Yêu cầu
Đây là mã mở và đặc tả an toàn nhằm bảo vệ thanh toán thẻ tín dụng trên Internet. Nó được phát triển
năm 1996 bởi Master, Visa Card và không phải hệ thống trả tiền. Thanh toán điện tử an toàn là tập các
giao thức và định dạng an toàn dùng để
o Trao đổi an toàn giữa các đối tác
o Tin tưởng vì sử dụng X509v3
o Riêng biệt vì hạn chế thông tin cho người cần
Các thành phần Thanh toán điện tử - 103 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VII.3.2 Thanh toán điện tử an toàn
1. Người mua mở tài khoản
2. Người mua nhận được chứng nhận
3. Người bán có chứng nhận của họ 4. Người mua đặt hàng
5. Người bán được kiểm chứng
6. Đơn đặt hàng và trả tiền được gửi
7. Người bán yêu cầu giấy phép trả tiền
8. Người bán duyệt đơn đặt hàng
9. Người bán cung cấp hàng và dịch vụ
10. Người bán yêu cầu trả tiền VII.3.3 Chữ ký kép
Người mua tạo chữ ký kép
o Thông tin đơn đặt OI cho người bán
o Thông tin trả tiền PI cho ngân hàng
Không bên nào biết chi tiết của người khác. Nhưng cần phải biết là họ được kết nối với nhau. Sử dụng
chữ ký kép cho mục đích này
o Ký trên bản ghép của OI và PI
VII.3.3 Yêu cầu trả tiền
Trao đổi yêu cầu trả tiền gồm 4 mẩu tin sau
1. Khởi tạo yêu cầu - nhận chứng nhận
2. Khởi tạo trả lời – ký trả lời
3. Yêu cầu trả tiền - của OI và PI
4. Trả lời trả tiền – đơn phúc đáp
VII.3.4 Yêu cầu trả tiền – người mua
VII.3.5 Yêu cầu trả tiền – người bán - 104 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
1. Kiểm tra chứng nhận người giữ thẻ bằng chữ ký của CA
2. Kiểm tra chữ ký kép bằng cách sử dụng khoá chữ ký công khai của người mua để tin tưởng
rằng đơn không bị giả mạo khi truyền và được ký sử dụng chữ ký khoá riêng của người giữ thẻ.
3. Xử lý đơn đặt và gửi tiếp thông tin trả tiền cho cổng trả tiền để xác thực (mô tả sau)
4. Gửi phản hồi trả tiền cho người giữ thẻ
VII.3.6 Giấy phép cổng trả tiền
1. Kiểm chứng mọi chứng nhận
2. Giải mã phong bì điện tử của khối giấy phép và nhận được khoá đối xứng, sau đó giải mã khối giấy phép
3. Kiểm tra chữ ký của người bán trên khối giấy phép
4. Giải mã phong bì điện tử khối trả tiền, nhận được khoá đối xứng, sau đó giải mã khối trả tiền
5. Kiểm tra chữ ký kép trên khối trả tiền
6. Kiểm tra rằng, thanh toán ID nhận được từ người bán phù hợp với danh tính trong PI nhận
được (không trực tiếp) từ người bán
7. Yêu cầu và nhận được giấy phép từ nơi phát hành
8. Gửi trả lời giấy phép cho người bán
VII.3.7 Nhận trả tiền
Người bán gửi cho cổng trả tiền yêu cầu nhận trả tiền. Cổng kiểm tra yêu cầu đó. Sau đó yêu cầu
chuyển tiền đến tài khoản người bán. Thông báo cho người bán và chờ trả lời việc nhận.
VII.4 An toàn thư điện tử
Thư điện tử là một trong những dịch vụ mạng được coi trọng và ứng dụng rộng rãi nhất. Đồng thời nội
dung của các mẩu tin không an toàn. Có thể bị quan sát trên đường truyền hoặc bởi những người có thẩm
quyền thích hợp ở hệ thống đầu cuối.
Nâng cao an toàn thư điện tử là mục đích quan trọng của mọi hệ thống trao đổi thư. Ở đây phải đảm bảo
các yêu cầu sau: tính bảo mật nội dung tin gửi, xác thực người gửi mẩu tin, tính toàn vẹn của mẩu tin, hơn
nữa bảo vệ khỏi bị sửa, tính chống từ chối gốc, chống từ chối của người gửi. - 105 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin VII.4.1 Dịch vụ PGP.
PGP (Pretty Good Privacy) là một dịch vụ về bảo mật và xác thực được sử dụng rộng rãi cho chuẩn an
toàn thư điện tử. PGP được phát triển bởi Phil Zimmermann. Ở đây lựa chọn các thuật toán mã hoá tốt
nhất để dùng, tích hợp thành một chương trình thống nhất, có thể chạy trên Unix, PC, Macintosh và các hệ
thống khác. Ban đầu là miĩen phí, bây giờ có các phiên bản thương mại. Sau đây chúng ta xem xét hoạt động của PGP
Thao tác PGP – xác thực
Người gửi tạo mẩu tin, sử dụng SHA-1 để sinh Hash 160 bit của mẩu tin, ký hash với RSA sử dụng khoá
riêng của người gửi và đính kèm vào mẩu tin.
Người nhận sử dụng RSA với khoá công khai của người gửi để giải mã và khôi phục bản hash. Người
nhận kiểm tra mẩu tin nhận sử dụng bản hash của nó và so sánh với bản hash đã được giải mã.
Thao tác PGP – bảo mật
Người gửi tạo mẩu tin và số ngẫu nhiên 128 bit như khoá phiên cho nó, mã hoá mẩu tin sử dụng CAST-
128/IDEA /3DES trong chế độ CBC với khoá phiien đó. Khoá phiên được mã sử dụng RSA với khoá
công khai người nhận và đính kèm với mẩu tin.
Người nhận sử dụng RSA với khoá riêng để giải mã và khôi phục khoá phiên. Khoá phiên được sử dụng để giải mã mẩu tin.
Thao tác PGP - Bảo mật và xác thực
Có thể sử dụng cả hai dịch vụ trên cùng một mẩu tin. Tạo chữ ký và đính vào mẩu tin, sau đó mã cả mẩu
tin và chữ ký. Đính khoá phiên đã được mã hoá RSA/ElGamal. Thao tác PGP – nén
Theo mặc định PGP nén mẩu tin sau khi ký nhưng trước khi mã. Như vậy cần lưu mẩu tin chưa nén và
chữ ký để kiểm chứng về sau. Vì rằng nén là không duy nhất. Ở đây sử dụng thuật toán nén ZIP.
Thao tác PGP – tương thích thư điện tử
Khi sử dụng PGP sẽ có dữ liệu nhị phân để gửi (mẩu tin được mã). Tuy nhiên thư điện tử có thể thiết kế
chỉ cho văn bản. Vì vậy PGP cần mã dữ liệu nhị phân thô vào các ký tự ASCII in được. Sau đó sử dụng
thuật toán Radix 64, ánh xạ 3 byte vào 4 ký tự in được và bổ sung kiểm tra thừa quay vòng CRC để phát
hiện lỗi khi truyền. PGP sẽ chia đoạn mẩu tin nếu nó quá lớn.
Tóm lại, cần có khoá phiên cho mỗi mẩu tin, có kích thước khác nhau: 56 bit – DES, 128 bit CAST hoặc
IDEA, 168 bit Triple – DES, được sinh ra sử dụng dữ liệu đầu vào ngẫu nhiên lấy từ sử dụng trước và thời
gian gõ bàn phím của người sử dụng - 106 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Khoá riêng và công khai của PGP
Vì có nhiều khoá riêng và khoá công khai có thể được sử dụng, nên cần phải xác định rõ cái nào được
dùng để mã khoá phiên trong mẩu tin. Có thể gửi khoá công khai đầy đủ với từng mẩu tin. Nhưng đều đó
là không đủ, vì cần phải nêu rõ danh tính của người gửi. Do đó có thể sử dụng định danh khoá để xác định
người gửi. Có ít nhất 64 bit có ý nghĩa của khoá và là duy nhất, có thể sử dụng định danh của khoá trong chữ ký. - 107 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin PGP Message Format Các chùm khoá PGP
Mỗi người sử dụng PGP có một cặp chùm khoá. Chùm khoá công khai chứa mọi khoá công khai của các
người sử dụng PGP khác được người đó biết và được đánh số bằng định danh khoá (ID key). Chùm khoá
riêng chứa các cặp khoá công khai/riêng của người đó được đánh số bởi định danh khoá và mã của khoá
lấy từ giai đoạn duyệt hash. An toàn của khoá công khai như vậy phụ thuộc vào độ an toàn của giai đoạn duyệt. Sinh mẩu tin PGP
Sơ đồ sau mô tả qui trình sinh mẩu tin PGP để gửi cho người nhận. Nhận mẩu tin PGP
Sơ đồ sau nêu cách người nhận giải mã, kiểm chứng thông tin để đọc mẩu tin. - 108 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Quản lý khoá PGP
Tốt hơn hết dựa vào chủ quyền chứng nhận. Trong PGP mỗi người sử dụng có một CA của mình. Có thể
ký khoá cho người sử dụng mà anh ta biết trực tiếp. Tạo thành “Web của niềm tin”. Cần tin cậy khóa đã
được ký, và tin cậy các khoá mà các người khác ký khi dùng một dây chuyền các chữ ký đến nó.
Chùm khoá chưá cả các chỉ dẫn tin cậy. Người sử dụng có thể thu hồi khoá của họ
VII.4.2 Mở rộng thư Internet đa mục đích/an toàn S/MIME
Tăng cường an toàn cho thư điện tử đa mục đích mở rộng MIME (Multipurpose Internet Mail Extension).
Thư điện tử Internet RFC822 gốc chỉ có văn bản, MIME cung cấp hỗ trợ cho nhiều kiểu nội dung và mẩu
tin có nhiều phần với mã hoá dữ liệu nhị phân thành dạng văn bản.
S/MIME tăng cường tính an toàn, có hỗ trợ của S/MIME trong nhiều tác nhân thư điện tử như MS
Outlook, Mozilla, Mac Mail, … Các chức năng S/MIME
Dữ liệu đóng phong bì, nội dung được mã hoá và liên kết khoá, dữ liệu được ký, mẩu tin được mã và ký
sau nén, dữ liệu rõ ràng được ký, mẩu tin tường minh và mã hoá ch ữ ký trên bản nén, dữ liệu đóng phong
bì và ký, lồng nhau các th ực th ể ký và mã.
Các thuật toán mã hoá S/MIME
Các chữ ký điện tử DSS và RSA, các hàm hash: SHA-1 và MD5, mã khoá phiên: Elgamal & RSA, mã
mẩu tin: AES, Triple-DES, RC2/40, …;MAC: HMAC với SHA-1.
Có quá trình để đối thoại quyết định sử dụng thuật toán nào. Các mẩu tin S/MIME
S/MIME bảo vệ các thực thể MIME với chữ ký, mã hoặc cả hai tạo thành các đối tượng đóng gói MIME.
Có phạm vi các kiểu nội dung khác nhau: dữ liệu đóng phong bì, dữ liệu được ký, dữ liệu rõ ràng được ký,
yêu cầu đăng ký, chứng nhận mẩu tin.
Quá trình chứng nhận S/MIME
S/MIME sử dụng chứng nhận X.509 phiên bản 3. Quản trị việc sử dụng kết hợp sơ đồ phân cấp CA của
X.509 và Web niềm tin của PGP. Mỗi client có một danh sách các giấy chứng nhận cho CA tin cậy và có
các giấy chứng nhận và cặp khoá công khai/riêng của mình. Chứng nhận cần được ký bởi các CA tin cậy.
Chủ quyền chứng nhận CA (Certificate Authorities) - 109 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Có một số CA mọi người đều biết. Verisign là một CA được sử dụng rộng rãi. Verisign xuất bản một số
kiểu định danh điện tử. Tăng mức kiểm tra và kéo theo độ tin cậy. Bài tập
1. Nêu mục đích IPSec, các tham số, AH và ESP
2. Nêu mục đích SSL và TLS. Trình bày kiến trúc và nhiệm vụ của các thành phần của chúng.
3. Thế nào là thanh toán điện tử an toàn
4. Nêu yêu cầu của chữ ký kép và chứng tỏ chữ ký kép trong thanh toán điện tử an toàn đáp ứng các yêu cầu đó.
5. Nêu qui trình thanh toán điện tử an toàn, chứng tỏ nó đáp ứng được các yêu cầu an toàn đề ra.
6. Nêu các yêu cầu bảo mật, xác thực, chữ ký điện tử của hệ thống thư địên tử.
7. Trình bày giải pháp đề xuất của PGP cho hệ thống thư điện tử.
8. Tìm hiểu xác thực cở bản HTTP trong Internet Explorer. - 110 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin CHƯƠNG VIII
KẺ XÂM NHẬP, PHẦN MỀM CÓ HẠI VÀ BỨC TƯỜNG LỬA VIII.1 Kẻ xâm nhập VIII.1.1 Khái niệm
Vấn đề quan trọng đối với hệ thống mạng là chống lại việc truy cập không mong muốn qua mạng máy
tính lớn hoặc cục bộ. Chúng ta có thể phân loại kẻ xâm nhập như sau: o Kẻ giả danh o Kẻ lạm quyền
o Người sử dụng giấu mặt
Có nhiều mức độ khả năng khác nhau xâm nhập khác nhau. Rõ ràng vấn đề trên được công khai và trở nên bức xúc
o Từ Wily Hacker” trong năm 1986/1987
o đến việc tăng nhanh các đội ứng cứu tình trạng khẩn cấp của máy tính
Với đội ứng cứu có thể cảm thấy bình an nhưng đòi hỏi các nguồn chi bổ sung để phát triển và duy trì
hoạt động. Kẻ xâm nhập có thể sử dụng các hệ thống làm hại để tấn công.
VIII.1.2 Các kỹ thuật xâm phạm
Mục tiêu của kẻ xâm nhập là dành quyền truy cập hoặc tăng quyền trong hệ thống. Các phương pháp
tấn công cơ bản bao gồm
o Tìm mục tiêu và thu thập thông tin o Truy cập ban đầu o Leo thang quyền o Lần vết khôi phục
Mục tiêu chính là giành được mật khẩu và sau đó dùng quyền truy cập của người sở hữu.
VIII.1.3 Đoán mật khẩu
Đoán mật khẩu là một trong các hướng tấn công chung nhất. Kẻ tấn công đã biết tên người sử dụng
đăng nhập (từ trang email/web) và tìm cách đoán mật khẩu.
o Mặc định, mật khẩu ngắn, tìm kiếm các từ chung
o Thông tin của người dùng (thay đổi tên, ngày sinh, số điện thoại, các mối quan tâm và từ chung)
o Tìm kiếm tổng thể mọi khả năng của mật khẩu
Kẻ xâm nhập kiểm tra đăng nhập với tệp mật khẩu đánh cắp được. Sự thành công của việc đoán mật
khẩu phụ thuộc vào mật khẩu được chọn bởi người dùng. Tổng quan chỉ ra rằng nhiều người sử dụng
chọn mật khẩu không cẩn thận. Nắm bắt mật khẩu
Tấn công khác bao gồm nắm bắt mật khẩu
o Theo dõi qua vai khi nhập password
o Sử dụng chương trình ngựa thành Toroa để thu thập
o Theo dõi login mạng không an toàn, chẳng hạn Telnet, FTP, Web, email.
o Chắt lọc thông tin ghi lại được sau lần vào mạng thành công (đệm/lịch sử web, số quay cuối,…)
o Sử dụng login/password đúng để nhại lại người sử dụng
Người sử dụng cần được học để dùng các biện pháp đề phòng và ngăn ngừa thích hợp. - 111 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.1.4 Phát hiện xâm nhập
Chắc chắn có lỗi an toàn ở đâu đó. Như vậy để phát hiện xâm nhập cần phải
o Chia khối để phát hiện nhanh o Hành động ngăn chặn
o Thu thập thông tin để tăng cường an toàn
Giả thiết rằng kẻ xâm nhập sẽ hành động khác so với người dùng hợp pháp
o Nhưng sẽ có sự khác biệt nhỏ giữa họ
1. Các cách tiếp cận phát hiện xâm nhập
Phát hiện thống kê bất thường
o Vượt qua ngưỡng thống kê nào đó o Dựa trên mô tả Dựa trên qui tắc
o Hành động bất thường o Định danh thâm nhập
2. Kiểm tra các bản ghi
Công cụ cơ bản để phát hiện xâm nhập là kiểm tra bản ghi đơn giản
o Một phần của hệ điều hành đa người sử dụng
o Sẵn sàng để sử dụng
o Có thể không có thông tin trong định dạng mong muốn
Tiến hành kiểm tra các bản ghi chuyên dùng để phát hiện
o Được tạo chuyên dùng để thu thập một số thông tin mong muốn
o Trả giá chi phí bổ sung trong hệ thống
3. Phát hiện thống kê bất thường Phát hiện ngưỡng
o Đếm sự xuất hiện của sự kiện đặc biệt theo thời gian
o Nếu vượt quá giá trị nào đó thì cho là đã có xâm nhập
o Nếu chỉ dùng nó thì đây là phát hiện thô không hiệu quả Dựa trên mô tả
o Đặc trưng hành vi quá khứ của người sử dụng
o Phát hiện hệ quả quan trọng từ đó
o Mô tả bằng nhiều tham số
4. Phân tích kiểm tra bản ghi
Đây là cơ sở của cách tiếp cận thống kê. Phân tích bản ghi để nhận được các số đo theo thời gian
o Số đếm, đo, thời gian khoảng, sử dụng nguồn
Sử dụng các kiểm tra khác nhau trên số liệu phân tích để xác định hành vi hiện tại có chấp nhận được không
o Tính kỳ vọng, phương sai, biến nhiều chiều, quá trình Markov, chuỗi thời gian, thao tác
Ưu điểm chính là không sử dụng kiến thức biết trước
5. Phát hiện xâm nhập dựa trên qui tắc
Quan sát các sự kiện trong hệ thống và áp dụng các qui tắc để quyết định hoạt động đó có đáng nghi
ngờ hay không. Phát hiện bất thường dựa trên qui tắc
o Phân tích các bản ghi kiểm tra cũ để xác định mẫu sử dụng và qui tắc tự sinh cho chúng
o Sau đó quan sát hành vi hiện tại và sánh với các qui tắc để nhận thấy nếu nó phù hợp
o Giống như phát hiện thống kê bất thường không đòi hỏi kiến thức biết trước về sai lầm an toàn
Định danh sự thâm nhập dựa vào qui tắc
o Sử dụng công nghệ hệ chuyên gia
o Với qui tắc định danh sự xâm nhập đã biết, các mẫu điểm yếu, hoặc các hành vi nghi ngờ
o So sánh các bản ghi kiểm tra hoặc các trạng thái theo qui tắc - 112 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Qui tắc được sinh bởi các chuyên gia nhũng người đã phỏng vấn và hệ thống kiến thức của các quản trị an toàn
o Chất lượng phụ thuộc vào cách thức thực hiện các điều trên
Ảo tưởng dựa trên tỷ lệ
o Thực tế phát hiện xâm nhập hệ thống cần phát hiện tỷ lệ xâm nhập đúng với rất ít cảnh báo sai 
Nếu rất ít sự xâm nhập được phát hiện -> an toàn không tốt 
Nếu rất nhiều cảnh báo sai -> bỏ qua/phí thời gian
o Điều đó rất khó thực hiện
o Các hệ thống tồn tại hình như không có các bản ghi tốt
Phát hiện xâm nhập phân tán
o Truyền thống thường tập trung hệ thống đơn lẻ
o Nhưng thông thường có các hệ thống máy tính
o Bảo vệ hiệu quả cần làm việc cùng nhau để phát hiện xâm nhập o Các vấn đề 
Làm việc với nhiều định dạng bản ghi kiểm tra khác nhau 
Toàn vẹn và bảo mật dữ liệu trên mạng 
Kiến trúc tập trung và phân tán Sử dụng bình mật ong
o Chăng lưới thu hút các kẻ tấn công 
Tách khỏi sự truy cập đến các hệ thống then chốt 
Để thu thập các thông tin về hoạt động của chúng 
Kích thích kẻ tấn công ở lại trong hệ thống để người quản trị có thể phán đoán
o Được cấp đầy đủ các thông tin bịa đặt
o Được trang bị để thu thập chi tiết thông tin về hoạt động của kẻ tấn công
o Hệ thống mạng đơn và lặp
VIII.1.5 Quản trị mật khẩu
o Là bảo vệ tuyến đầu chống kẻ xâm nhập
o Người sử dụng được cung cấp cả hai: 
Login – xác định đặc quyền của người sử dụng 
Password – xác định danh tính của họ
o Passwords thường được lưu trữ mã hoá  Unix sử dụng DES lặp 
Các hệ thống gần đây sử dụng hàm hash
o Cần phải bảo vệ file passwords trong hệ thống Tìm hiểu về mật khẩu
o Purdue 1992 – có nhiều mật khẩu ngắn
o Klein 1990 – có nhiều mật khẩu đoán được
o Kết luận là người sử dụng thường chọn các mật khẩu không tốt
o Cần một cách tiếp cận để chống lại điều đó
Tạo mật khẩu - cần giáo dục cách tạo mật khẩu
o Cần có chính sách và giáo dục người sử dụng
o Giáo dục tầm quan trọng của mật khẩu tốt
o Cho định hướng mật khẩu tốt 
độ dài tối thiểu > 6 
đòi hỏi trộn chữ hoa và chữ thường, số và dấu chấm 
không chọn từ trong từ điển
o Nhưng nên chọn sao cho nhiều người không để ý - 113 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Tạo mật khẩu – máy tính tự sinh
o Cho máy tính tự tạo mật khẩu
o Nếu ngẫu nhiên không dễ nhớ, thì sẽ viết xuống (hội chứng nhãn khó chịu)
o Ngay cả phát âm được cũng không nhớ
o Có câu chuyện về việc chấp nhận của người sử dụng tồi
o FIPS PUB 181 là một trong những bộ sinh tốt nhất 
Có cả mô tả và code ví dụ 
Sinh từ việc ghép ngẫu nhiên các âm tiết phát âm được
Tạo mật khẩu - kiểm tra trước
o Cách tiếp cận hưá hẹn nhất để có thể cải thiện an toàn mật khẩu
o Cho phép người sử dụng chọn trước mật khẩu của mình
o Nhưng để cho hệ thống kiểm chứng xem nó có chấp nhận được không 
Bắt buộc theo qui tắc đơn giản 
So sánh với từ điển các mật khẩu tồi 
Sử dụng mô hình thuật toán Markov hoặc bộ lọc để chống các cách chọn tồi
VIII.2 Phần mềm có hại
VIII.2.1 Các kiểu phần mềm có hại khác ngoài Virus
Virus máy tính đã được công bố rất nhiều, là một trong những phần mềm có hại. Tác động của nó mọi
người đều biết, đã được nêu trong các báo cáo, viễn tưởng và phim ảnh, gây nhiều chú ý hơn là tán
thưởng và được quan tâm nhiều để phòng chống.
1. Cửa sau hoặc cửa sập
Điểm vào chương trình bí mật, cho phép những người biết truy cập mà bỏ qua các thủ tục an toàn
thông thường. Kỹ thuật này có thể được sử dụng chung bởi những người phát triển và là mối đe doạ
khi để trong chương trình sản phẩm cho phép khai thác bởi các kẻ tấn công. Rất khó ngăn chặn trong
hệ điều hành, đòi hỏi sự phát triển và cập nhật phần mềm tốt. 2. Bom logic
Đây là một trong những phần mềm có hại kiểu cổ, code được nhúng trong chương trình hợp pháp. Nó
được kích hoạt khi gặp điều kiện xác định
o Có mặt hoặc vắng mặt một số file
o Ngày tháng/thời gian cụ thể
o Người sử dụng nào đó
Khi được kích hoạt thông thường nó làm hỏng hệ thống
o Biến đổi/xoá file/đĩa, làm dừng máy,… 3. Ngựa thành Tơ roa
Chương trình với các tác động phụ được dấu kín, mà thông thường rất hấp dẫn như trò chơi hoặc phần
mềm nâng cấp. Khi chạy thực hiện những nhiệm vụ bổ sung, cho phép kẻ tấn công gián tiếp dành
quyền truy cập mà họ không thể trực tiếp. Thông thường sử dụng lan truyền virrus/sâu (worm) hoặc
cài đặt cửa sau hoặc đơn giản phá hoại dữ liệu. 4. Zombie
Đây là chương trình bí mật điều khiển máy tính của mạng khác và sử dụng nó để gián tiếp tiến hành
các tấn công. Thông thường sử dụng để khởi động tấn công từ chối các dịch vụ phân tán (DdoS). Khai
thác các lỗ hổng trong các hệ thống. VIII.2.2 Virus
Virus là đoạn code tự sinh lặp đính kèm với code khác như virus sinh học. Cả hai đều lan truyền tự nó và mang đi bộ tải
o Mang theo code để tạo các bản sao của chính nó
o Và cũng như mọi code nó cũng thực hiện nhiệm vụ ngầm nào đó Thao tác của virus - 114 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Các giai đoạn của virus
o Nằm im - chờ sự kiện kích hoạt
o Lan truyền – lặp sinh ra chương trình/đĩa
o Kích hoạt - bởi sự kiện để thực hiện bộ tải o Thực hiện bộ tải
o Cụ thể thông thường mang tính chất chuyên biệt của các máy và hệ điều hành. Nó khai thác
các tính chất và điểm yếu Cấu trúc Virus program V := {goto main; 1234567;
subroutine infect-executable := {loop:
file := get-random-executable-file;
if (first-line-of-file = 1234567) then goto loop else prepend V to file; }
subroutine do-damage := {whatever damage is to be done}
subroutine trigger-pulled := {return true if condition holds} main: main-program := {infect-executable;
if trigger-pulled then do-damage; goto next;} next: } Các kiểu Virus
Có thể phân loại dựa trên kiểu tấn công o Virus ăn bám
o Virus cư trú ở bộ nhớ
o Virus ở sector khởi động o Lén lút o Virus nhiều hình thái o Virus biến hoá 1. Marco Virus
Marco code đính kèm file dữ liệu, được dịch bởi chương trình sử dụng file o Như marco của Word/Excel
o Sử dụng lệnh tự động và lệnh marco
Đây là đoạn code là độc lập với nền tảng, là đoạn nguồn chính của sự lan nhiễm virus. Có sự khác biệt
không rõ ràng giữa dữ liệu và file chương trình, thông thường có sự thoả hiệp truyền thống: “dễ dàng
sử dụng” và “an toàn”. Đã có sự cải thiện an toàn trong Word, không trội hơn sự đe doạ của virus. 2. Virus email
Đây là loại virus lan truyền sử dụng email được đính kèm chứa marco virus như Melissa. Thường
được kích hoạt khi người sử dụng mở file đính kèm hoặc ít khi hơn khi mail được xem sử dụng một
tính chất script của tác nhân mail. Do đó sẽ lan truyền rất nhanh, thông thường đích là tác nhân mail
Microsoft Outlook hoặc tài liệu Word /Excel. Cần an toàn ứng dụng và hệ điều hành tốt hơn 3. Sâu
Đây là chương trình sinh lặp nhưng không có tác động, thường lan truyền trên mạng
o Như sâu Internet Morris 1988
o Dẫn đến việc tạo ra các đội ứng cứu khẩn cấp máy tính CERT
o Dùng đặc quyền phân tán hoặc khai thác các điểm yếu hệ thống - 115 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
o Được sử dụng rộng rãi bởi Hackers để tạo zombie PC, kéo theo sử dụng các tấn công khác,
đặc biệt từ chối dich vụ DoS
Vấn đề chính là mất sự an toàn của hệ thống kết nối thường xuyên như PC. Thao tác của sâu
Các giai đoạn của sâu giống như virus: o Nằm im o Lan truyền 
Tìm hệ thống khác để tác động 
Thiết lập kết nội với hệ thống đích từ xa 
Tự sinh lặp mình cho hệ thống từ xa o Kích hoạt o Thực hiện 4. Sâu Morrris
Sâu Morris là loại sâu cổ điển, được tạo bởi Robert Morris vào 1988, nhằm tới các hệ thống Unix. Ở
đây sử dụng một số kỹ thuật lan truyền, như
o Phá mật khẩu đơn giản trong file mật khẩu cục bộ o Khai thác lỗ hổng
o Tìm lỗi cửa sập trong hệ thống mail
Mọi tấn công thành công sẽ sinh lặp nó.
5. Tấn công của sâu đương thời
Làn sóng tấn công của sâu đương thời mới từ giữa 2001 như:
- Code Red - sử dụng lỗ hổng MS IIS:
o Thử IP ngẫu nhiên cho hệ thống chạy IIS
o Có kích hoạt thời gian cho tấn công từ chối dịch vụ
o Làn sóng thứ hai tác động đến 360000 máy chủ trong vòng 14 giờ
- Code Red 2 – cài đặt cửa sập
- Nimda – cơ chế tác động lặp
- SQL Slammer – đã tấn công máy chủ MS SQL
- Sobig – đã tấn công máy chủ proxy mở
- Mydoom – sâu email có số lượng lớn và có cửa sau 6. Công nghệ sâu
Các đặc tính của công nghệ sâu là tấn công đa nền tảng, khai thác nhiều chiều, lan truyền cực nhanh,
có nhiều kiểu tác động, biến hoá, cơ động và khai thác zero day.
7. Các biện pháp chống Virus
Biện pháp tốt nhất là ngăn ngừa, nhưng nói chung là không thể. Do đó
cần phải có một trong nhiều biện pháp sau:
o Phát hiện virus nhiễm trong hệ thống
o Định danh loại virus nhiễm
o Loại bỏ khôi phục hệ thống về trạng thái sạch
8. Phần mềm chống Virus
Phần mềm thuộc thế hệ đầu tiên
o Quét sử dụng chữ ký của virus để định danh
o Hoặc phát hiện sự thay đổi độ dài của chương trình
Phần mềm thuộc thế hệ thứ hai
o Sử dụng các qui tắc trực quan để phát hiện nhiễm virus
o Sử dụng mã hash của chương trình để phát hiện sự thay đổi
Phần mềm thuộc thế hệ thứ ba
o Chương trình thường trú trong bộ nhớ định danh virus theo hành động - 116 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Phần mềm thuộc thế hệ thứ tư 
Đóng gói với rất nhiều kiểu kỹ thuật chống virus 
Quét và lần vết tích cực, kiểm soát truy cập
Phương pháp diệt bằng tay vẫn được dùng.
9. Kỹ thuật chống Virus nâng cao Giải mã mẫu
o Sử dụng mô phỏng CPU kiểm tra chương trình, chữ ký và hành vi trước khi chạy chúng
Dùng Hệ thống miễn dịch số (IBM)
o Hành động đa muc tiêu và chống Virus
o Mọi virus nhập vào tổ chức được nắm bắt, phân tích, phát hiện/tấm chắn tạo ra chống nó và loại bỏ
Sau đây là sơ đồ Hệ miễn dịch số (Digital Immune System)
VIII.2.3 Phần mềm ngăn chặn hành vi
Các phần mềm này được tích hợp với hệ điều hành của máy chủ.
Chương trình theo dõi các hành vi trong thời gian thực
o Chẳng hạn truy cập file, định dạng đĩa, các chế độ thực hiện, thay đổi tham số hệ thống, truy cập mạng
Đối với các hành động có khả năng có hại
o Nếu phát hiện thì ngăn chặn, chấm dứt hoặc tìm kiếm
Có ưu điểm so với quét, nhưng code có hại chạy trước khi phát hiện.
1. Tấn công từ chối dịch vụ từ xa
Tấn công từ chối dịch vụ từ xa (DDoS) tạo thành đe dọa đáng kể, làm cho hệ thống trở nên không sẵn
sàng, làm tràn bởi sự vận chuyển vô ích.
Kẻ tấn công thường sử dụng một số lớn các “zombies”, tăng độ khó của các tấn công.
Công nghệ bảo vệ tìm các biện pháp đương đầu chống lại - 117 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
2. Tìm hiểu cách kẻ thù xây dựng mạng lưới tấn công từ chối dịch vụ từ xa
Từ chối dịch vụ có hiệu lực khi bị nhiễm rất nhiều “zombies”. Để thực hiện được điều đó cần có:
- Phần mềm cài đặt tấn công từ chối dịch vụ từ xa
- Các lỗ hổng không vá được trong nhiều hệ thống
- Chiến lược quét để tìm lỗ hổng hệ thống: sử dụng các yếu tố ngẫu nhiên, lập danh sách va chạm, tìm
hiểu cấu trúc topo, mạng con cục bộ.
3. Chống tấn công từ chối dịch vụ từ xa (DDoS)
Có ba cách bảo vệ sau đây được dùng rộng rãi
- Ngăn ngừa tấn công và chiếm lĩnh trước.
- Phát hiện tấn công và lọc trong quá trình sử dụng dịch vụ
- Lần vết nguồn tấn công và xác định sự tấn công sau khi sử dụng xong dịch vụ.
Nói chung có phạm vi rộng các khả năng tấn công, vì vậy phải có nhiều biện pháp chống và sử dụng kết hợp chúng.
VIII.3 Tràn bộ đệm
Tràn bộ đệm là cơ chế tấn công rất phổ biến bắt đầu từ 1988 xuất hiện sâu Morris đến Code Red,
Slammer, Sasser và nhiều cái khác nữa. Các kỹ thuật phòng chống đều đã biết. Tuy nhiên vẫn còn là vấn
đề phải quan tâm vì di truyền từ các con rệp đã lây lan rộng rãi. Vì vẫn còn các kỹ thuật lập trình không cẩn thận.
Cơ sở của việc tràn bộ nhớ: sinh bởi do lỗi lập trình, cho quá nhiều dữ liệu lưu trữ hơn khả năng cho phép
trong bộ đệm kích thước cố định. Bộ đệm có thể trên ngăn xếp, đống, dữ liệu tổng thể. Viết đè các vị trí - 118 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
nhớ cận kề, làm hỏng dữ liệu của chương trình, truyền điều khiển không mong muốn, vi phạm truy cập bộ
nhớ, thực hiện code của kẻ tấn công
VIII.3.1 Ví dụ tràn bộ nhớ
Xét chương trình C trên. Ở đây có ba biến, thông thường lưu trong vùng nhớ liền kề. Gọi chương trình
con copy vào str1 dữ liệu Start. Sau đó đọc đầu vào sử dụng hàm gets lưu vào str2. Sau đó so sánh đầu vào
với xâu Start. Nếu thành công valid = true. Vấn đề hàm thư viện gets của C không kiểm tra độ lớn dữ liệu
đọc vào. Nếu nhiều hơn 7 ký tự nó đòi hỏi bộ nhớ nhiều hơn. Khi đó dữ liệu thừa viết đè dữ liệu của biến
kề, trong trường hợp này là str1. Giả sử xâu đầu vào là “EVILINPUTVALUE”, k t qu xâu Str1 b vi t è v i các ký t “TVALUE”.
Xâu str2 không chỉ sử dụng 8 ký tự của nó mà còn thêm 7 ký tự từ str1. Biết
cấu trúc trên, kẻ tấn công có thể thu xếp sao cho giá trị xâu Str1 vẫn bằng Str2. Chẳng hạn nếu nhập xâu
đầu vào là “BADINPUTBADINPUT” thì trong phép so sánh kết quả vẫn đúng như trong lần chạy thứ ba trong ví dụ trên.
VIII.3.2 Tấn công tràn bộ nhớ.
Để làm tràn bộ đệm, kẻ tấn công cần phải phát hiện lỗ hổng tràn bộ đệm trong chương trình nào
đó. Theo dõi, lần theo vết thực hiện, sử dụng các công cụ ẩn. Hiểu bộ đệm lưu trong bộ nhớ như thế nào
và xác định khả năng phá hỏng. - 119 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Một chút về lịch sử ngôn ngữ lập trình. Ở mức ngôn ngữ máy mọi dữ liệu là mảng các bytes, thông dịch
phụ thuộc vào các chỉ lệnh được dùng. Ngôn ngữ bậc cao hiện đại có định nghĩa chặt về kiểu và các phép
toán đúng. Không có lỗ hổng tràn bộ đệm, được lường trước, giới hạn khi dùng.
C và ngôn ngữ liên quan có cấu trúc điều khiển bậc cao, nhưng cho phép truy cập trực tiếp đến bộ nhớ. Vì
vậy có lỗ hổng tràn bộ đệm. Có kế thừa lớn các code không an toàn, đang được sử dụng rộng rãi, nên có lỗ hổng.
Để hiểu hơn tạo sao lại tràn bộ nhớ, mà không khắc phục được, ta xem xét cơ chế mà lời gọi hàm quản lý
trạng thái cục bộ cho mỗi lời gọi. Khi một hàm gọi hàm khác, nó cần phải lưu ở đâu đó địa chỉ trả về để
hàm được gọi khi kết thúc trả điều khiển cho hàm gọi. Bên cạnh đó cũng cần có chỗ để cất một số tham số
mà cần truyền cho hàm được gọi và cũng cần lưu các giá trị thanh ghi của hàm gọi mà cần được sử dụng
khi hàm được gọi kết thúc. Thông thường mọi dữ liệu này được cất ở khung ngăn xếp (stack frame). Mỗi
lần gọi hàm lại sinh ra một khung ngăn xếp liên kết.
Tràn bộ đệm ngăn xếp xảy ra khi bộ đệm đặt trên ngăn xếp. Nó được khai thác bởi sâu Morris. Bài báo
“Smashing the Stack” tuyên truyền nó. Có biến cục bộ phía dưới con trỏ khung lưu trữ và địa chỉ trả lại.
Vì vậy tràn bộ đệm cục bộ có nhiều khả năng viết đè các mục điều khiển chính. Kẻ tấn công viết đè địa
chỉ trả về với địa chỉ của đọan code cài vào. Đó có thể là địa chỉ của chương trình, thư viện hệ thống hoặc tải vào bộ đệm.
Chúng ta xem cấu tạo vùng nhớ, nơi cất chương trình đang chạy, dữ liệu tổng thể, đống và ngăn xếp. Khi
chương trình chạy, hệ điều hành tạo ra một tiến trình cho nó. Tiến trình được cho bởi không gian ảo của
riêng nó với cấu trúc như trên hình vẽ sau. Nó bao gồm nội dung chương trình đang chạy, trong đó có dữ
liệu tổng thể, bảng cấp bộ nhớ, code của chương trình ở gần đáy của không gian nhớ này. Trên đó không
gian cho đống tăng dần lên và trên nữa là không gian cho ngăn xếp giảm dần xuống. - 120 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Để mô tả tràn bộ đệm ngăn xếp ta xét chương trình C sau. Nó chứa biến cục bộ duy nhất, bộ đệm inp.
Hàm Hello nhắc nhập tên mà được đọc vào bộ đệm nhờ hàm thư viện không an toàn gets(). Sau đó hiện
kết quả đọc được nhờ hàm thư viện printf (). Nếu giá trị nhỏ được đọc thì ở đây không có vấn đề gì.
Chương trình gọi hàm sẽ chạy thành công như trong lần chạy thứ nhất trên hình sau đó. Nếu dữ liệu lớn
như trong lần chạy thứ hai, dữ liệu sẽ vượt qua cuối bộ đệm và ghi đè lên con trỏ khung lưu trữ và trả về
địa chỉ sai tương ứng với biểu diễn nhị phân của các ký tự. Và khi hàm trả điều khiển cho địa chỉ trả về,
nó nhảy đến vị trí bộ nhớ không hợp lệ, báo lỗi “Segmentation Fault” và dừng chương trình không bình
thường như thông báo trên hình sau đó. Kẻ tấn công tận dụng cơ hội này để truyền điều khiển về chương trình đã định trước. - 121 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.3.3 Code che đậy (Shellcode)
Đây là code chương trình được chuẩn bị bởi kẻ tấn công. Nó được lưu trong bộ nhớ bị tràn và kẻ tấn công
tìm cách chuyển điều khiển sang cho shell. - 122 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin - 123 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
Phát triển code che đậy
Trong ví dụ trên mô tả với Intel Linux shellcode cơ bản để chạy bản dịch Bourne shell. Shellcode cần phải
phù hợp với đối số cho execve(). Nó bao gồm mọi code để gọi hàm của hệ thống, phải độc lập với vị trí và
không chứa NULLs – xâu kết thúc của C.
Thông thường chương trình che đậy dưới vỏ bọc là tiện ích hệ thống đáng tin cậy, dịch vụ mạng đặc biệt,
code thư viện được sử dụng chung, như hình ảnh.
Các hàm của shellcode: giao diện tự sinh, tạo đối tượng nghe để khởi tạo giao diện kết nối, tạo kết nối
ngược lại tới kẻ tấn công, vượt qua các qui tắc tường lửa, thoát khỏi môi trường thực thi hạn chế.
VIII.3.4 Bảo vệ tràn bộ nhớ
Tràn bộ đệm được khai thác rộng rãi, có nhiều code có lỗ hổng đang dùng. Mặc dù nguyên nhân và các
biện pháp chống đã biết. Có hai cách chống rộng rãi: chương trình mới được gia cố trong thời gian dịch và
kiểm soát tấn công chương trình đang có trong thời gian chạy.
Nếu sử dụng ngôn ngữ bậc cao với kiểu mạnh , thì sẽ không có lỗ hổng tràn bộ đệm. Chương trình dịch
buộc kiểm tra cỡ và các thao tác cho phép trên các biến. Khi đó phải trả giá khi sử dụng nguồn và hạn chế
truy cập đến phần cứng. Tuy nhiên vẫn cần một số code của các ngôn ngữ giống C.
Bảo vệ trong thời gian dịch
Thiết lập các kỹ thuật lập trình an toàn. Nếu sử dụng ngôn ngữ tiềm ẩn không an toàn như C, lập trình
viên cần viết code an toàn một cách tường minh. Bằng thiết kế với code mới, sau khi xem xét code cũ.
Xem an toàn tràn bộ đệm như tập con các kỹ thuật lập trình an toàn nói chung. Chú ý đến các lỗi nhỏ,
kiểm tra đủ không gian trong bộ đệm bất kỳ.
Có đề nghị mở rộng an toàn cho C như tạo điểm phạt thực thi, cần dịch chương trình với chương trình
dịch đặc biệt. Có một số phương án thư viện chuẩn an toàn, các hàm mới, như strlcpy(). Cài đặt lại an toàn
hơn một số hàm chuẩn như thư viện động, chẳng hạn Libsafe.
Bổ sung code của chức năng nhập và thoát để kiểm tra ngăn xếp ghi nhận việc ghi đè, sử dụng yếu tố
ngẫu nhiên như bảo vệ ngăn xếp, kiểm tra viết đè giữa biến cục bộ và con trỏ khung lưu trữ và địa chỉ trả
về. Chương trình dừng nếu phát hiện thay đổi. Phát hành: bản dịch lại, hỗ trợ phát hiện lỗi hoặc copy an
toàn lưu trữ/kiểm tra địa chỉ trả về.
Bảo vệ trong thời gian chạy
Sử dụng hỗ trợ bộ nhớ ảo để tạo một số vùng bộ nhớ không thực thi được như stack, heap, global data.
Cần hỗ trợ từ các phần cứng bộ nhớ như trong SPARC / Solaris systems, x86 Linux/Unix/Windows
systems. Phát hành hỗ trợ cho code ngăn xếp thực thi, cần một số dự phòng đặc biệt.
Thao tác trên vị trí của các cấu trúc dữ liệu chính, sử dụng tịnh tiến ngẫu nhiên cho mỗi tiến trình, có vùng
địa chỉ lớn trên các phương tiện của các hệ thống hiện đại chống các va chạm và đoán địa chỉ bộ đệm đích
là không thể. Vị trí ngẫu nhiên cho bộ đệm heap và vị trí các hàm thư viện chuẩn. Đặt các trang bảo vệ
giữa các vùng quan trọng của bộ nhớ, đặt cờ trong bộ nhớ như địa chỉ không hợp lệ. Có thể ngay cả đặt
giữa các khung ngăn xếp và các bộ đệm heap trong thời gian thực thi và phải trả giá về không gian.
Có nhiều các phương án tấn công khác: phương án tràn ngăn xếp, tràn heap, tràn dữ liệu tổng thể, tràn xâu
định dạng, tràn số nguyên. Có thể có nhiều hơn nữa được phát hiện trong tương lai. Một số không thể
ngăn chặn trừ khi code an toàn lúc ban đầu.
Phương án tràn ngăn xếp chỉ viết đè bộ đệm và con trỏ khung lưu trữ trả về xảy ra nhưng đến khung giả
trả về lời gọi hàm điều khiển bởi kẻ tấn công được dùng khi có tràn bộ đệm giới hạn. Ví dụ tách ra bởi
một khung. Tuy có các hạn chế: cần biết địa chỉ chính xác của bộ đệm, hàm gọi thực hiện với khung giả,
phương án tràn ngăn xếp thay địa chỉ trả về bằng hàm thư viện chuẩn để đáp lại sự bảo vệ ngăn xếp không - 124 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
thực thi. Kẻ tấn công xây dựng các tham số phù hợp trên ngăn xếp phía trên địa chi trả về. Kẻ tấn công có
thể cần địa chỉ chính xác của bộ đệm, có thể ngay cả kết nối hai lời gọi thư viện.
Cũng có tấn công bộ đệm đặt trong heap. Thông thường đặt trên code của chương trình, bộ nhớ được yêu
cầu bởi chương trình để sử dụng cho các cấu trúc dữ liệu động, ví dụ như danh sách móc nối. Không có
địa chỉ trả về, nên không có chuyển giao quyền điều khiển dễ dàng. Có thể có con trỏ hàm để khai thác
hoặc thao tác cấu trúc dữ liệu quản trị. Cách bảo vệ là dùng heap ngẫu nhiên và không thực thi.
Có thể tấn công bộ đệm đặt trong dữ liệu tổng thể. Có thể đặt phía trên code của chương trình. Nếu có con
trỏ hàm và bộ đệm có lỗ hổng hoặc bảng quản trị các quá trình liền kề. Nhắm tới viết đè con trỏ hàm được
gọi sau đó. Cách bảo vệ là dùng vùng dữ liệu tổng thể ngẫu nhiên và không thực thi, dịch chuyển con trỏ hàm, các trang bảo vệ.
VIII.4 Bức tường lửa VIII.4.1 Mở đầu
Bức tường lửa phát triển mạnh mẽ, được ứng dụng trong các các hệ thống thông tin. Bây giờ mọi
người đều muốn lên Internet và các mạng liên kết với nhau. Vì vậy cần quan tâm thường xuyên về an
toàn. Không dễ dàng bảo vệ từng hệ thống trong tổ chức. Thông thường sử dụng bức tường lửa, cung
cấp vòng bảo vệ như một phần của chiến lược an toàn toàn diện.
Bức tường lửa là gì
Là điểm cổ chai để kiểm soát và theo dõi. Các mạng liên kết với độ tin cậy khác nhau, buộc có hạn chế
trên các dịch vụ của mạng. Chẳng hạn, vận chuyển phải có giấy phép. Kiểm tra và kiểm soát truy cập,
có thể cài đặt cảnh báo các hành vi bất thường. Cung cấp bảng NAT và sử dụng theo dõi giám sát. Cài
đặt mạng riêng ảo (VPN) sử dụng cơ chế an toàn IPSec. Có thể miễn dịch trước.
Hạn chế của bức tường lửa
Không bảo vệ được các tấn công đi vòng qua nó, chẳng hạn mạng lén lút, thiết bị modems. Nó ngăn
cản cả các tổ chức tin cậy và dịch vụ tin cậy (SSL/SSH).
Không bảo vệ chống các mối đe dọa từ bên trong, chẳng hạn như những nhân viên bực tức hoặc thông
đồng với kẻ xấu. Không thể bảo vệ chống việc truyền các chương trình hoặc file nhiễm virus, vì có
phạm vi rất rộng các dạng file và các hệ điều hành
VIII.4.2 Bức tường lửa – các lọc gói
Là thành phần của bức tường lửa nhanh nhất và đơn giản nhất, là cơ sở của mọi hệ thống tường lửa.
Nó kiểm tra mỗi gói IP (không có ngữ cảnh) và cho phép hay từ chối tuỳ theo qui tắc xác định. Suy ra
có hạn chế truy cập đến các dịch vụ và các cổng.
Các đường lối mặc định có thể
o Rằng không cho phép tức là cấm
o Rằng không cấm tức là cho phép - 125 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin Tấn công các lọc gói
Địa chỉ IP lừa đảo: giả địa chỉ nguồn làm cho tin tưởng, bổ sung bộ lọc lên mạch chuyển để ngăn chặn.
Tấn công mạch truyền gốc: kẻ tấn công đặt được truyền khác với mặc định, ngăn chặn các gói truyền gốc
Tấn công các đoạn tin (fragment) nhỏ. Chia thông tin phần đầu thành một số đoạn nhỏ. Hoặc bỏ qua
hoặc sắp xếp lại trước khi kiểm tra
Bức tường lửa – các lọc gói trạng thái
Lọc gói truyền thống không kiểm tra ngữ cảnh của tầng cao hơn, tức là sánh các gói về với dòng chảy
ra. Lọc gói trạng thái hướng đến yêu cầu đó. Chúng kiểm tra mỗi gói IP trong ngữ cảnh: giữ vết theo
dõi với các kỳ client-server, kiểm tra từng gói đúng thuộc vào một phiên. Suy ra có khả năng tốt hơn
phát hiện các gói giả tách khỏi ngữ cảnh.
VIII.4.3 Bức tường lửa – cổng giao tiếp ở tầng ứng dụng (hoặc proxy)
Có cổng giao tiếp chuyên dùng cho ứng dụng – proxy (người được uỷ quyền).
Có truy cập đầy đủ đến giao thức
o Người sử dụng yêu cầu dịch vụ từ proxy
o Proxy kiểm tra các yêu cầu có hợp lệ không
o Sau đó xử lý yêu cầu và trả lời cho người sử dụng
o Có thể vào/theo dõi vận chuyển ở tầng ứng dụng
Cần các proxies khác nhau cho mỗi dịch vụ
o Một số dịch vụ hỗ trợ một cách tự nhiên proxy
o Những loại khác thì cần giải quyết một số vấn đề - 126 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.4 Bức tường lửa - cổng giao tiếp mức mạch vòng
Chuyển tiếp 2 kết nối TCP. Có sự an toàn bằng cách hạn chế mà các kết nối này cho phép. Mỗi lần tạo
ra chuyển tiếp thông thường không kiểm tra nội dung. Thông thường được sử dụng khi tin cậy người sử
dụng bên trong bằng cách cho phép các kết nối ra ngoài nói chung. Gói SOCKS được sử dụng rộng rãi cho mục đích này.
VIII.4.5 Máy chủ Bastion
Hệ thống máy chủ an toàn cao. Chạy cổng giao tiếp mức ứng dụng và mạch vòng. Hoặc cung cấp các
dịch vụ truy cập bên ngoài. Có tiềm năng thể hiện các yếu tố của máy chủ. Vì an toàn bền vững, nên
hệ điều hành nặng nề hơn, các dịch vụ chính, bổ sung xác thực, proxies nhỏ, an toàn, độc lập, không đặc quyền.
Có thể hỗ trợ 2 hay nhiều hơn kết nối mạng và có thể được tin cậy để ép buộc chính sách tách bạch tin
cậy giữa các kết nối mạng.
Cấu hình bức tường lửa (Firewall Configurations) - 127 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.6 Kiểm soát truy cập
Hệ thống đã xác định được định danh như người sử dụng, xác định các nguồn gốc nào nó có thể truy
cập. Mô hình tổng quát là ma trận truy cập với
o Chủ thể - thực thể chủ động (người sử dụng, quá trình)
o Đối tượng - thực thể bị động (file hoặc nguồn)
o Quyền truy cập – cách mà đối tượng được truy cập
Có thể được phân tách bởi
o Các cột như danh sách kiểm soát truy cập
o Các hàng như các thẻ về khả năng
Ma trận kiểm soát quyền truy cập - 128 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
VIII.4.7 Các hệ thống máy tính tin cậy
An toàn thông tin ngày càng quan trọng. Có các mức độ khác nhau về sự nhạy cảm của thông tin
o Phân loại thông tin quân sự: bảo mật, bí mật
Chủ thể (người hoặc chương trình) có nhiều quyền khác nhau truy cập đến các đối tượng thông tin.
Được biết như an toàn nhiều tầng
o Chủ thể có mức độ an toàn tối đa và hiện tại
o Đối tượng có phân loại mức độ tin cậy cố định
Muốn xem xét các cách tăng độ tin tưởng trong hệ thống để củng cố các quyền đó.
VIII.4.8 Mô hình Bell LaPadula
Một trong những mô hình an toàn nổi tiếng nhất. Được cài đặt như các chính sách bắt buộc trong hệ
thống. Có hai chính sách chính
o Không đọc lên (tính chất an toàn đơn giản) 
Chủ thể chỉ có thể đọc/viết các đối tượng nếu mức độ an toàn hiện tại của chủ thể
trội hơn (>=) phân loại của đối tượng
o Không viết xuống (tính chất *) 
Chủ thể chỉ có thể bổ sung/viết lên đối tượng nếu mức độ an toàn hiện tại của chủ
thể được trội (<=) bởi phân loại của đối tượng Reference Monitor - 129 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin (Giao diện chỉ dẫn)
Các hệ thống máy tính triển khai
Chính phủ có thể phát triển các hệ thống IT. Đương đầu với phạm vi rộng các chuẩn
o TCSEC, IPSEC và bây giờ là Tiêu chuẩn Chung
Xác định một số mức độ triển khai với tăng cường kiểm tra qui tắc. Đã xuất bản danh sách các sản phẩm triển khai
o Chỉ hướng tới sử dụng cho chính phủ/quốc phòng
o Cũng có thể hữu ích trong công nghiệp
VIII.4.9 Tiêu chuẩn chung
Đặc tả yêu cầu an toàn quốc tế khởi đầu và xác định tiêu chuẩn triển khai. Tích hợp với các chuẩn khác
o Chẳng hạn CSEC, ITSEC, CTCPEC (Canada), Federal (US) Đặc tả các chuẩn cho o Tiêu chuẩn triển khai
o Phương pháp luận cho ứng dụng của Tiêu chuẩn
o Các thủ tục hành chính triển khai, chứng nhận và các sơ đồ chỉ định
Xác định tập các yêu cầu an toàn, có đích triển khai (TOE). Yêu cầu rơi vào trong 2 loại sau o Chức năng o Sự tin cậy
Cả hai được tổ chức theo lớp classes của họ hoặc cấu thành
Các yêu cầu Tiêu chuẩn chung Yêu cầu chức năng
o Kiểm soát an toàn, hỗ trợ mã, trao đổi thông tin, bảo vệ dữ liệu người sử dụng, định danh
và xác thực, quản lý an toàn, tính riêng tư, bảo vệ các hàm an toàn tin cậy, nguồn thiết thực,
truy cập TOE, đường dẫn tin cậy Yêu cầu sự tin cậy
o Quản lý tham số hệ thống, phân phối và thao tác, phát triển, tài liệu chỉ dẫn, hỗ trợ thời
gian sống, kiểm tra, đánh giá lỗ hổng, bảo trì sự tin cậy Bài tập
1. Liệt kê và phân loại các phần mềm có hại và các biện pháp phòng chống.
2. Phân tích các kỹ thuật xâm nhập hệ thống và cách phòng ngừa.
3. Nêu các biện pháp tăng cường an ninh, bảo mật máy tính cá nhân dựa trên các phần mềm thông dụng hiện có.
4. Mục đích yêu cầu của việc xây dựng bức tường lửa. Có những loại bức tường lửa nào.
5. Nêu cách thiết lập bức tường lửa sử dụng công cụ hỗ trợ trong hệ điều hành.
6. Phân tích các lỗi tràn bộ nhớ có thể xảy ra, nêu nguyên nhân.
7. Tìm hiểu các yêu cầu lập trình an toàn.
8. Trình bày một số mô hình hệ thống máy tính tin cậy. - 130 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Stt Ký hiệu Diễn giải 1 ACL
Access Control List – Danh sách kiểm soát truy cập 2 AES
Advanced Encryption Standard - chuẩn mã quốc tế 3 AH
Authentication Header - đầu mục xác thực 4 CA
Certification authority - Chủ quyền chứng nhận 5 CERT
Computer emergency response team - Đội cấp cứu sự cố máy tính 6 CRL
Certificate revocation list – Danh sách thu hồi chứng nhận 7 CSDL Cơ sở dữ liệu 8 CNTT Công nghệ thông tin 9 CSHT Cơ sở hạ tầng 10 CBC
Cipher Block Chaining – Dãy mã khối 11 CFB
Cipher feedback - Phản hồi mã 12 DBA
Database administrator - Quản trị hệ thống 13 DES
Data Encription Standards - Chuẩn mã dữ liệu 14 DNA
Domain Name System - Hệ thống tên miền 15 DSA
Digital signature Algorithm - Thuật toán chữ ký điện tử 16 DSS
Digital signature standard – Chuẩn chữ ký điện tử 17 ECB
Electronic codebook – sách mã điện tử 18 ECC
Encription curve code – mã đường cong Elip 19 ESP
Encapsulating security payload – tải bảo mật đóng gói 20 FIPS
Federal Information Processing Standard - chuẩn xử lý thông tin Liên bang 21 IDEA
International data encryption algorithm - Thuật toán mã dữ liệu quốc tế 22 IPKI
Internet X.509 public key Infrastructure - Hạ tầng khoá công khai Internet X.509 23 KDC
Key Distribution Center – Trung tâm phân phối khóa 24 LAN
Local area network – mạng cục bộ - 131 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin 25 MD
Message digest – digest bản tin 26 NAT
Network address translation – dịch địa chỉ mạng 27 PKCS
Public key cryptography standard – Chuẩn mã khoa công khai 28 PKI
Public Key Infrastructure - Hạ tầng khoá chung 29 PGP
Pretty Good Privacy – Phần mềm bảo mật thư điện tử 30 RSA
Thuật toán mã công khai RSA mang tên Rivest, Shamir, Adleman 31 SET
Secure Electronic transaction – Thanh toán điện tử an toàn 32 SHA1
Secure hash algorithm 1 – Thuật toán băm 1 33 SMTP
Simple Mail Transfer Protocol – Giao thức chuyển thư đơn giản 34 SOAP
Simple Object Access Protocol – Giao thức truy cập đối tượng đơn giản 35 SSL
Secure Socket Layer – giao thức bảo mật lớp vận chuyển 36 TLS
Transport Layer Security – Chuẩn giao thức bảo mật lớp vận chuyển 37 UID
User Identification – Định danh người sử dụng 38 TTP
Trusted Third Party – Bên thứ ba tin cậy 39 URL
Uniform Resource Locator – Địa chỉ nguồn thống nhất 40 VPN
Virtual private network - mạng riêng ảo 41 WAN
Wide area network - mạng diện rộng 42 WTLS
Wireless transport layer security – an toàn tầng vận chuyển không dây TÀI LIỆU THAM KHẢO
[1] William Stallings. Cryptography and Network Security: Principles and Practice. Third Edition. Pearson Education, 2003.
[2] A. Menezes, P. van Oorschot và S. Vanstone. - Handbook of Applied Cryptography, Fifth Edition, CRC Press, 1996.
[3] Douglas Stinson - Cryptography: Theory and Practice. Boca Raton. FL. CRC Press, 2007. [4] http://vn.wikipedia.org [5] http://www.ietf.org/rfc [6] http://www.rsasecurity.com
[7] http://people.csail.mit.edu/rivest/crypto-security.html - 132 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin
[8] Nguyễn Ngọc Tuấn, Hồng Phúc. Công nghệ bảo mật World Wide Web. Nhà xuất bản Thống kê, 2005. - 133 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin PHỤ LỤC
1. Phụ lục thuật toán DES 1.1 Phụ lục 1.1 IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 1.2 Phụ lục 1.2 IP-1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 1.3 Phụ lục 1.3 E 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 1.4 Phụ lục 1.4: S box Hàng ột
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11 [12] [13 [14] [15] ] ] S1 [0] 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 [1] 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 [2] 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 [3] 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 - 134 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin S2 [0] 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 [1] 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 [2] 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 [3] 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S3 [0] 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 [1] 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 [2] 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 [3] 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S4 [0] 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 [1] 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 [2] 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 [3] 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S5 [0] 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 [1] 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 [2] 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 [3] 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 S6 [0] 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 [1] 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 [2] 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 [3] 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S7 [0] 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 [1] 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 [2] 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 [3] 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8 [0] 13 2 8 4 6 15 11 1 10. 9 3 14 5 0 12 7 [1] 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 [2] 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 [3] 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 1.5 Phụ lục 1.5 P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 1.6 Phụ lục 1.6 - 135 -
Giáo Trình An Toàn Và Bảo Mật Thông Tin PC1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 1.7 Phụ lục 1.7 PC2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 - 136 - Document Outline