đề cương môn bảo mật máy tính vfa mạng
Trang 1MỤC LỤC
MỤC LỤC 1
BÀI 1: GIỚI THIỆU CHUNG 4
1.1 Giới thiệu mục tiêu, nội dung, phương pháp học 4
1.2 Một số khái niệm về an toàn và bảo mật thông tin 5
1.2.1 Khái niệm an toàn và an toàn đữ liệu 5
1.2.2 Một số nguy cơ tiềm ẩn về khả năng mất an toàn thông tin 6
1.2.3 Mục tiêu của an toàn dữ liệu 6
1.2.4 Các yêu cầu của An toàn dữ liệu 7
1.2.5 Quy trình đảm bảo an toàn dữ liệu 8
1.2.6 Các loại tấn công phá hoại an toàn: 10
1.2.6.1 Nghe trộm đường truyền 11
1.2.6.2 Giả mạo người gửi 12
1.2.6.3 Thay đổi thông điệp 13
1.2.6.4 Tấn công lặp lại 14
1.2.6.5 Tấn công từ chối dịch vụ 15
1.3 Các chủ đề làm tiểu luận 16
BÀI 2: CƠ SỞ LÝ THUYẾT SỐ 19
2.1 Định nghĩa Modulo 19
2.2 Các phép toán số học trên Modulo 20
2.3 Ước số chung lớn nhất (Greatest Common Divisor) 21
2.4 Tìm số nghịch đảo a-1 23
2.5 Số học đa thức 25
2.6 Phép toán đa thức với Modulo đa thức 26
2.7 Các số nguyên tố 29
2.8 Phân tích ra thừa số nguyên tố 29
2.9 Các số nguyên tố cùng nhau và GCD 29
2.10 Định lý Ferma (Định lý Ferma nhỏ) 30
2.11 Hàm Ole 30
2.12 Định lý Ole 31
2.13 Kiểm tra tính nguyên tố 31
BÀI 3: CÁC HỆ MẬT MÃ CỔ ĐIỂN 33
3.1 Khái niệm Hệ mật mã 33
3.2 Mã dịch chuyển (shift cipher - Caesar) 34
3.3 Mã thay thế (substitution cipher) 35
3.4 Hệ mật mã Affine 36
3.5 Hệ mật mã Vigenere 37
3.6 Hệ mật mã Hill 38
Trang 23.7 Mã hoán vị (permutation cipher) 39
3.8 Mã dòng (stream cipher) 39
3.9 Một số phương pháp thám mã 41
3.9.1 Khái niệm 41
3.9.2 Thám mã tích cực 42
3.9.3 Thám mã thụ động 42
3.9.4 Phương pháp thống kê 42
3.9.5 Thám mã Affine 42
3.9.6 Thám mã Vigenere 44
BÀI 4 – THẢO LUẬN VỀ CÁC HỆ MẬT MÃ CỔ ĐIỂN 45
BÀI 5 - MÃ NÉN DỮ LIỆU 46
5.1 Khái niệm cơ bản 46
5.2 Các phương pháp nén dữ liệu 46
5.2.1 Nén bảo toàn 46
5.2.2 Nén không bảo toàn 46
5.3 Mô hình thống kê 47
5.3.1 Mô hình thống kê tĩnh 47
5.3.2 Mô hình thống kê động 47
5.4 Một số mã nén cơ bản 48
5.4.1 Mã nén Huffman 48
a) Thuật toán tạo mã Huffman 48
5.4.2 Mã RLE (Run- Length- Encoding) 54
5.5 Mô hình từ điển 55
5.5.1 Tổng quát 55
5.5.2 Từ điển tĩnh 56
5.5.3 Từ điển động 56
5.5.4 LZ77 <Sliding Window> 56
5.5.5 LZ78 59
BÀI 6: HỆ MÃ HÓA ĐỐI XỨNG 62
6.1 Các khái niệm 62
6.2 Mã Fiestel 64
6.3 Chuẩn mã dữ liệu (DES) 66
6.3.1 Lịch sử DES 67
6.3.2 Sơ đồ mã DES 67
6.3.3 Cấu tạo một vòng của DES 68
6.3.4 Sinh khoá con của DES 69
6.3.5 Tính chất của DES 70
6.3.6 Thám mã tuyến tính 72
6.5 Chuẩn mã hóa AES (Xem TLTK) 73
BÀI 7: THẢO LUẬN VỀ HỆ MÃ HÓA KHÓA ĐỐI XỨNG 73
BÀI 8: HỆ MẬT MÃ HÓA KHÓA CÔNG KHAI RSA 73
8.1 Mã khoá riêng 74
8.2 Mã khoá công khai RSA 74
8.3 Thuật toán RSA 76
Trang 38.4 Áp dụng RSA mã hóa 77
8.5 Lũy thừa 78
BÀI 9: PHÂN PHỐI KHÓA VÀ TRAO ĐỔI KHÓA 80
9.1 Phân phối khoá 80
9.2 Phân phối khoá công khai 80
9.3 Trao đổi khoá Diffie Hellman 83
9.3.1 Yêu cầu 83
9.3.2 Khởi tạo Diffie Hellman 83
9.3.3 Trao đổi khoá Diffie Hellman 83
BÀI 10: HÀM BĂM VÀ THUẬT TOÁN BĂM 84
10.1 Hàm băm 84
10.1.1 Các yêu cầu 84
10.1.2 Các tính chất của hàm băm 85
10.2 Hàm băm SHA (Secure Hash Algorithm) 85
10.3 Thuật toán Hash an toàn SHA (Secure Hash Algorithm) 86
10.4 Hàm băm MD5 90
BÀI 11: THẢO LUẬN VỀ HỆ MÃ HÓA KHÓA CÔNG KHAI 93
BÀI 12: XÁC THỰC VÀ CHỮ KÝ SỐ 93
12.1 Mã xác thực mẩu tin (MAC – Message Authentication Code) 94
12.1.1 Các tính chất của MAC 94
12.1.2 Yêu cầu đối với MAC 94
12.1.3 Sử dụng MAC 94
12.2 Chữ ký số 95
12.2.1 Khái niệm 95
12.2.2 Đặc điểm của chữ ký điện tử 96
12.2.3 Chức năng 96
12.3 Hệ mật mã và sơ đồ chữ ký El Gamal 96
12.4 Những yêu cầu đối với chữ ký điện tử 96
BÀI 13 AN NINH ĐƯỜNG TRUYỀN 97
13.1 Giới thiệu 97
13.2 IP/IPSec 98
13.2.1 Phần đầu xác thực (Authentication Header - AH) 99
13.2.2 Tải trọng an toàn đóng gói (ESP) 99
13.2.3 Chế độ vận chuyển và chế độ ống ESP 99
13.3 SSL/TSL (Secure Socket Layer) 100
13.3.1 Kiến trúc SSL 100
13.3.2 Hoạt động của SSL 102
13.4 Các dịch vụ bảo mật tầng ứng dụng (Xem TLTK) 103
BÀI 14: VIRUS MÁY TÍNH (Computer Virus) 103
14.1 Giới thiệu 104
14.2 Một số tính chất của virus máy tính 105
Trang 414.2.1 Tính lây lan 105
14.2.2 Tính tương thích 105
14.2.3 Tính nhỏ gọn 105
14.2.4 Tính phá hoại 106
14.3 Phân loại virus máy tính 106
14.3.1 Phân loại theo đối tượng lây nhiễm 106
14.3.2 Phân loại theo phương thức hoạt động 106
14.4 Một số loại Virus cơ bản và cách phòng chống 107
14.4.1 Virus lây vào file COM, EXE 107
14.4.2 Virus Macro 108
14.4.3 Virus lây nhiễm qua mạng 115
14.4.4 Mã ngoại lai 117
BÀI 15: FIREWALL 119
15.1 Khái niệm Firewall 119
15.2 Nguyên lý hoạt động và bảo mật trên Firewall 120
15.2.1 Chức năng chính 120
15.2.2 Nguyên lý 120
15.3 Các luật lọc packet trên Firewall 121
15.4 Cấu hình tường lửa 123
BÀI 16: THẢO LUẬN VỀ VIRUS VÀ FIREWALL 133
TÀI LIỆU THAM KHẢO 134
BÀI 1: GIỚI THIỆU CHUNG 1.1 Giới thiệu mục tiêu, nội dung, phương pháp học
+ Mục tiêu
Học xong module này, người học có khả năng:
- Giải thích được các thuật toán mã hóa đảm bảo an ninh mạng
- Mô tả được các nguyên lý bảo mật và các kỹ thuật bảo mật mạng doanh nghiệp
- Phân tích rủi ro cho một hệ thống thông tin;
- Triển khai các kỹ thuật bảo mật bảo vệ hệ thống thông tin;
- Tư vấn về các vấn đề bảo mật cho mạng doanh nghiệp
Module này sẽ giúp người học phát triển các năng lực: Phân tích (4); Tư vấn (4); Thực hiện (3) và Bảo trì (3)
+ Nội dung
Module giới thiệu các vấn đề bảo mật máy tính và mạng máy tính Các chủ đề (không hạn chế) bao gồm:
Trang 5Các kỹ thuật đảm bảo an toàn cho các hệ thống máy tính đa người dùng và các hệ thống máy tính phân tán;
Hệ mật mã: khóa bí mật, khóa công khai, chữ ký điện tử;
Bảo mật thư điện tử và WWW;
Thương mại điện tử: giao thức thanh toán, tiền điện tử;
Thời lượng của module tương đương 3 tín chỉ, có kết cấu dạng lý thuyết kết hợp làm tiểu luận do vậy người học phải đăng ký chủ đề nghiên cứu theo nhóm (từ 2 đến 3 người) ngay từ buổi học đầu tiên Trong quá trình học tập, sinh viên tham gia học tập trên lớp và làm việc nhóm theo các chủ đề đã đăng ký Sau khi kết thúc 11 buổi học lý thuyết, các nhóm sinh viên báo cáo kết quả nghiên cứu trước lớp trong 4 buổi còn lại
1.2 Một số khái niệm về an toàn và bảo mật thông tin
1.2.1 Khái niệm an toàn và an toàn đữ liệu
Theo từ điển tiếng Việt, an toàn có nghĩa là được bảo vệ, không bị xâm hại.
An toàn thông tin có thể hiểu là quá trình đảm bảo cho hệ thống tránh khỏi
những nguy cơ hỏng hóc hoặc mất mát dữ liệu Các nguy cơ này có thể là ngẫu nhiên (do tai nạn) hoặc có chủ định (bị phá hoại từ bên ngoài) Việc bảo vệ dữ liệu có thể được thực hiện bằng các thiết bị phần cứng (các hệ thống backup dữ liệu, ) hay các chương trình phần mềm (trình diệt virus, các chương trình mã hóa, )
Trong môi trường mạng toàn cầu như hiện nay, việc đảm bảo an toàn thông tin gặp khó khăn hơn rất nhiều Trước đây, dữ liệu chỉ được lưu trữ trong một máy tính cá nhân độc lập, việc bảo mật dữ liệu được thực hiện dễ dàng bằng cách sử dụng các biện pháp phần cứng (niêm phong các ổ mềm, ổ CD) hay các trình bảo vệ dữ liệu cục bộ đơn giản Hiện nay, dữ liệu không đơn thuần nằm trong một máy tính riêng biệt nữa
mà được chia sẻ trên mạng cho nhiều người sử dụng Điều này giúp việc trao đổi thông tin thuận lợi hơn bao nhiêu thì cũng giúp cho việc tấn công dữ liệu dễ dàng hơn bấy nhiêu Hacker không cần phải động vào máy tính của nạn nhân, thậm chí cũng
Trang 6không cần biết chiếc máy tính đó như thế nào mà vẫn có thể xâm nhập vào nó Dữ liệu
có nguy cơ bị tấn công bất cứ lúc nào cho dù có áp dụng các biện pháp bảo mật tiên tiến nhất Vì vậy, người đảm bảo an toàn thông tin phải luôn luôn cập nhật các kiến thức bảo mật mới có thể thích nghi được với tình trạng tấn công dữ liệu ngày càng gia tăng như hiện nay
1.2.2 Một số nguy cơ tiềm ẩn về khả năng mất an toàn thông tin
Một số nguy cơ về khả năng mất an toàn thông tin mà hệ thống Công nghệ thông tin (CNTT) cần cảnh báo là:
(1) Nguy cơ bị lộ thông tin của cá nhân, tổ chức và các giao dịch liên quan cho
bên thứ ba (không phải là bên mà thông tin cần được gửi đến)
(2) Nguy cơ bị kẻ xấu làm sai lệch thông tin bằng một trong ba cách:
- “Bắt” thông tin ở giữa đường di chuyển từ “nguồn” đến “đích”, sửa đổi hay chèn, xoá thông tin và gửi đi tiếp
- Tạo một nguồn thông tin giả mạo để đưa các thông tin đánh lừa “đích”
- Tạo “đích” giả để lừa thông tin đến từ các nguồn “thật” Chẳng hạn như kỹ thuật đánh lừa “Phishing” hay được nhắc tới gần đây Tin tặc có thể tạo ra một “đích” giả giống hệt trang Web giao dịch của ngân hàng để lừa khách hàng vào giao dịch, từ
đó bắt được các mật khẩu của khách hàng Kỹ thuật này tuy khá mới nhưng phát triển rất nhanh, đồng thời ngày càng được cải tiến tinh vi hơn về kỹ thuật Ngoài ra còn có
kỹ thuật “Pharming” Khác với Phishing lừa người giao dịch vào một trang Web có địa chỉ khác, nhưng được ngụy trang bằng dòng chữ giống hệt địa chỉ của ngân hàng (mặc
dù vậy, nếu tinh ý sẽ thấy dòng địa chỉ “lạ” hiện lên khi bấm vào đó) thì Pharming lừa đưa người giao dịch đến một trang Web giả, mặc dù địa chỉ vẫn y như thật Kẻ xấu thực hiện điều này sử dụng các kỹ thuật Hack tinh vi như “DNS Cache Poisoning”
(3) Nguy cơ bị tắc nghẽn, ngừng trệ thông tin
1.2.3 Mục tiêu của an toàn dữ liệu
Đảm bảo an toàn thông tin cho một hệ thống thông tin là một công việc phức tạp, nhằm đạt được những mục tiêu cụ thể sau:
(1) Phát hiện các lỗ hổng của hệ thống cũng như dự đoán trước những nguy cơ tấn công vào hệ thống,
(2) Ngăn chặn những hành động gây mất an toàn thông tin từ bên trong cũng như bên ngoài,
(3) Phục hồi tổn thất trong trường hợp hệ thống bị tấn công nhằm đưa hệ thống vào hoạt động trong thời gian sớm nhất
Trang 71.2.4 Các yêu cầu của An toàn dữ liệu
Hình 1.1 Minh hoạ về an toàn thông tin
An toàn thông tin là một vấn đề phức tạp, liên quan đến nhiều yếu tố khác nhau
Các yếu tố cơ bản cần phải giải quyết, bao gồm: tính bảo mật, tính toàn vẹn, tính sẵn sàng và tính tin cậy.
Tính bảo mật (Confidentiality)
Đây là yêu cầu đảm bảo cho dữ liệu của người sử dụng phải được bảo vệ, không bị mất mát vào những người không được phép Nói khác đi là phải đảm bảo được ai là người được phép sử dụng (và sử dụng được) các thông tin (theo sự phân loại mật của thông tin)
Thông tin đạt được tính bảo mật khi nó không bị truy nhập, sao chép hay sử dụng trái phép bởi một người không sở hữu Trên thực tế, mọi rất nhiều thông tin cá nhân của người sử dụng đều cần phải đạt được độ bảo mật cao chẳng hạn như mã số thẻ tín dụng, số thẻ bảo hiểm xã hội, Vì vậy đây có thể nói là yêu cầu quan trọng nhất đối với tính an toàn của một hệ thống thông tin
Tính toàn vẹn (Integrity)
Trong an toàn thông tin, tính toàn vẹn có nghĩa là dữ liệu không bị tạo ra, sửa
đổi hay xóa bởi những người không sở hữu Tính toàn vẹn đề cập đến khả năng đảm bảo cho các thông tin không bị thay đổi nội dung bằng bất cứ cách nào bởi người không được phép trong quá trình truyền thông
Chính sách toàn vẹn dữ liệu phải đảm bảo cho ai là người được phép thay đổi
dữ liệu và ai là người không được phép thay đổi dữ liệu Dữ liệu trên thực tế có thể vi phạm tính toàn vẹn khi một hệ thống không đạt được độ an toàn cần thiết Chẳng hạn một hệ quản trị CSDL xây dựng kém có thể gây mất mát dữ liệu trong trường hợp mất điện đột ngột Các hành động phá hoại cũng có thể gây ra mất tính toàn vẹn của dữ liệu
Việc đảm bảo tính toàn vẹn của dữ liệu bao gồm:
- Đảm bảo sự toàn vẹn dữ liệu đổi với dữ liệu gốc
Trang 8- Bảo vệ dữ liệu khỏi sự sửa chữa và phá hoại của những người dùng không có thẩm quyền
- Bảo vệ dữ liệu tránh khỏi những thay đổi không đúng về mặt ngữ nghĩa hay logic
Tính sẵn sàng (Availability)
Tuy dữ liệu phải được đảm bảo bí mật và toàn vẹn nhưng đối với người sử dụng, dữ liệu phải luôn trong trạng thái sẵn sàng Các biện pháp bảo mật làm cho người sử dụng gặp khó khăn hay không thể thao tác được với dữ liệu đều không thể được chấp nhận Nói khác đi, các biện pháp đảm bảo an toàn thông tin phải đảm bảo được sự bảo mật và toàn vẹn của dữ liệu đồng thời cũng phải hạn chế tối đa những khó khăn gây ra cho người sử dụng thực sự
Tính tin cậy (Confidentiality)
Yêu cầu này liên quan đến khả năng đảm bảo rằng, ngoài những người có quyền, không ai có thể xem các thông điệp và truy cập những dữ liệu có giá trị Mặt khác, nó phải đảm bảo rằng thông tin mà người dùng nhận được là đúng với sự mong muốn của họ
Hình 1.2 Các yêu cầu trong đảm bảo an toàn thông tin
Việc đánh giá độ an toàn của một hệ thống thông tin phải xem xét đến tất cả những yếu tố trên Nếu thiếu một trong số đó thì độ bảo mật của hệ thống là không hoàn thiện
1.2.5 Quy trình đảm bảo an toàn dữ liệu
Quy trình đảm bảo an toàn thông tin cho một hệ thống bao gồm bốn bước như
hình sau:
Trang 9Hình 1.3 Quy trình bảo đảm an toàn hệ thống
Xác định
Bước này phân tích trực tiếp toàn bộ hệ thống, tìm ra những kẽ hở mà các tin tặc có thể lợi dụng để tấn công Ngoài ra khi hệ thống bị tấn công thì cần nhanh chóng xác định rõ là bị tấn công từ đâu và tấn công băng cách nào để có thể đưa ra các biện pháp khắc phục trong thời gian nhanh nhất
Để thực hiện tốt giai đoạn này, phải trả lời được 3 câu hỏi:
(1) bảo vệ cái gì (2) bảo vệ khỏi ai (3) bảo vệ bằng cách nào
Để tìm ra những lỗ hổng trong hệ thống, người quản trị phải xem mình như một hacker, tự tấn công vào chính hệ thống của mình Một hệ thống dù hoàn thiện đến đâu nhưng cũng không tránh khỏi những kẽ hở, dù là rất nhỏ Trong khi hacker ngày càng nghĩ ra nhiều cách thức tấn công mà chúng ta không ngờ tới
Đánh giá
Sau khi đã xác định được những kẽ hở và phân tích các nguy cơ bị tấn công của
hệ thống, người quản trị phải đề ra những biện pháp đề phòng đống thời đánh giá các chi phí bỏ ra để tiến hành khắc phục các lỗ hổng trên cũng như chi phí cho thiệt hại khi xảy ra tấn công
Lựa chọn giải pháp
Trên cơ sở đánh giá tất cả các yếu tố: độ an toàn, tính khả thi, chi phí, người quản trị lựa chọn ra giải pháp thích hợp nhất trong số những phương pháp bảo mật dữ liệu trong cả 2 trường hợp là khắc phục lỗ hổng của hệ thống hoặc khi hệ thống bị tấn công Trong trường hợp hệ thống đang bị tẫn công thì cần lựa chọn một cách nhanh nhất một giải pháp để có thể ngăn chặn cuộc tấn công này hay ít nhất cũng là hạn chể được những thiệt hại về sau
Xác định
Đánh giá
Giám sát rủi ro Lựa chọn
giải pháp
Trang 10đảm bảo cho hệ thống hoạt động một cách bình thường Giám sát hệ thống đồng thời
đưa ra các giải pháp khắc phục khi bị tấn công sẽ giúp cho việc bảo mật dữ liệu trở nên hiệu quả hơn
1.2.6 Các loại tấn công phá hoại an toàn:
Hình 1.4 - Mô hình truyền thông qua 3 thực thể
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 để:
Trang 11o 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ụ
1.2.6.1 Nghe trộm đường truyền
Hình 1.5 - Nghe trộm thông tin trên đường truyền
Kẻ nghe trộm Thông tin
Thông tin
Trang 12Nghe trộm Password: tin tặc có thể lấy được mật khẩu của người sử dụng, sau
đó chúng truy nhập một cách chính quy vào hệ thống, nó cũng giống như là lấy được chìa khoá, sau đó đàng hoàng mở cửa và khuân đồ ra
Tấn công theo kiểu này cũng có thể được thực hiện bởi các loại Virus gián điệp (Spyware) hoặc các Virus loại Malicious Các Virus loại này nếu bị lây nhiễm vào máy tính của chúng ta sẽ hoạt động như một tiến trình ngầm và sẽ lấy cắp các thông tin của chúng ta bằng cách “lắng nghe” các thông tin của chúng ta sau đó sẽ gửi về một địa chỉ nào đó ở trên mạng (được các tin tặc đặt sẵn)
Xem lén thư tín điện tử là một dạng mới của hành vi trộm cắp trên mạng Kỹ thuật xem
lén thư điện tử sử dụng một đoạn mã ẩn bí mật gắn vào một thông điệp thư điện tử, cho phép người nào đó có thể giám sát toàn bộ các thông điệp chuyển tiếp được gửi đi cùng với thông điệp ban đầu Chẳng hạn, một nhân viên phát hiện thấy lỗi kỹ thuật trong khâu sản xuất, anh ta lập tức gửi một báo cáo cho cấp trên thông báo phát hiện của mình Người này, sau đó, sẽ tiếp tục gửi thông báo tới tất cả các bộ phận có liên quan trong doanh nghiệp Một kẻ nào đó, sử dụng kỹ thuật xem lén thư điện tử, có thể theo dõi và biết được toàn bộ thông tin trong các bức thư điện tử gửi tiếp sau đó bàn về vấn đề này Và sẽ rất nguy hiểm nếu như các thông tin bí mật trong nội bộ doanh nghiệp bị kẻ xấu biết được và sử dụng vào những mục đích bất chính,
1.2.6.2 Giả mạo người gửi
Hình 1.6 Giả mạo người gửi tin
Giả mạo người gửi: Trong những mạng lưới truyền dữ liệu cổ điển, dữ liệu
được gửi rất thô sơ, không hề có một sự mã hóa hay xác thực nào từ cả hai phía người gửi và người nhận, vì vậy hacker có thể dễ dàng tạo ra những thông báo, giả mạo nó như một thông báo thực sự từ người gửi để gửi nó cho người nhận Các thông báo này
có thể là những tin tức giả, nhưng yêu cầu để lấy user cũng như Password để xâm nhập
Trang 13vào máy chủ Phương pháp tấn công này chỉ áp dụng được với những mạng có độ bảo mật rất kém, còn nói chung hiện nay thì hầu như không thể sử dụng được.
Giả mạo địa chỉ: Thường thì các mạng máy tính nối với Internet đều được bảo
vệ bởi bức tường lửa (Firewall) Bức tường lửa có thể coi như cái cửa duy nhất mà người đi vào nhà hay đi ra khỏi cũng đều bắt buộc phải qua đó (như cửa khẩu ở sân bay) Như vậy những người trong nhà (trong mạng) sẽ có sự tin tưởng lẫn nhau, tức là được phép dùng tất cả mọi thứ trong nhà (dùng mọi dịch vụ trong mạng) Còn những người bên ngoài sẽ bị hạn chế tối đa việc sử dụng đồ đạc trong nhà đó Việc này làm được nhờ bức tường lửa
Giả mạo địa chỉ là kiểu tấn công mà người bên ngoài (máy tính của tin tặc) sẽ giả mạo mình là một người ở trong nhà (tự đặt địa chỉ IP của mình trùng với một địa chỉ nào đó ở mạng bên trong) Nếu làm được điều đó thì nó sẽ được đối xử như một người (máy) bên trong, tức là được làm mọi thứ, để từ đó tấn cống, lấy trộm, phá huỷ thông tin
1.2.6.3 Thay đổi thông điệp
Hình 1.7 Tấn công bằng thay đổi thông điệp
Trong trường hợp không thể giả mạo hoàn toàn thông điệp bên phía người gửi,
kẻ tấn công có khả năng chặn và sửa đổi một thông điệp nào đó rồi tiếp tục gửi cho phía nhận Dữ liệu bị sửa đổi có thể gây ra một số hậu quả nghiêm trọng, chẳng hạn như các báo cáo tài chính hay các giao dịch trong ngân hàng Tuy nhiên, phương pháp này hiện nay cũng ít phổ biến do các giao dịch hiện thời đã trở nên an toàn hơn nhiều, mọi dữ liệu trước khi gửi đều được mã hóa và xác thực cẩn thận Vì vậy, việc sửa đổi một thông báo trở nên phức tạp Hacker cần phải tìm ra những phương pháp tấn công
dữ liệu khác
Trang 141.2.6.4 Tấn công lặp lại
Hình 1.8 - Tấn công lặp lại
Nếu không thể thực hiện được cả 2 hình thức tấn công trên, tức là không thể tạo
ra cũng như sửa đổi thông điệp bên phía người gửi Kẻ tấn công có thể sử dụng một phương pháp tấn công khác, đó là tấn công lặp lại Trong cách này, hacker chỉ cần lưu lại một thông điệp mà hắn bắt được trước đó, đợi 1 thời điểm thích hợp rồi gửi lại cho bên nhận Bên nhận không thể phát hiện được đây là thông báo giả mạo do thông báo
đó đúng là do bên gửi tạo ra, chỉ có điều đây là thông điệp cũ Bằng cách tìm cách đón bắt nhiều loại thông báo, Hacker có thể gây ra những hậu quả nghiêm trọng Phương pháp tấn công này có thể phòng tránh bằng cách thêm trường thời gian vào bên trong thông điệp Kẻ tấn công không thể sửa đổi được thông báo nên trường này không bị ảnh hưởng nếu bị gửi lại Qua việc so sánh trường thời gian trong thông điệp cũ và mới, người nhận có thể phân biệt được thông báo mình nhận được có phải là thông báo
cũ bị gửi lại hay không
Trang 151.2.6.5 Tấn công từ chối dịch vụ
Tấn công từ chối dịch vụ (DoS - Denial of Service) là tên gọi chung của kiểu tấn công làm cho một hệ thống nào đó bị quá tải dẫn tới không thể cung cấp dịch vụ, hoặc phải ngưng hoạt động Đối với các hệ thống được bảo mật tốt, khó thâm nhập, tấn công từ chối dịch vụ được hacker sử dụng như một cú dứt điểm để triệt hạ hệ thống
đó Tùy phương thức thực hiện mà DoS được biết dưới nhiều tên gọi khác nhau: cổ điển nhất là kiểu DoS (Denial of Service) tấn công bằng cách lợi dụng sự yếu kém của giao thức TCP (Transmision Control Protocol); sau đó là DDoS (Distributed Denial of Service) - tấn công từ chối dịch vụ phân tán; mới nhất là tấn công từ chối dịch vụ theo phương pháp phản xạ DRDoS (DistributedReflection Denial of Service)
Mặc dù kẻ tấn công theo hình thức DoS không thể chiếm quyền truy cập hệ thống hay
có thể thay đổi thông tin, nhưng nếu một hệ thống không thể cung cấp thông tin, dịch
vụ cho người sử dụng thì sự tồn tại đó cũng là vô nghĩa! Những cuộc tấn công DoS có thể là nguyên nhân khiến cho mạng máy tính ngừng hoạt động và trong thời gian đó, người sử dụng sẽ không thể truy cập vào các website Đối với những Website TMĐT náo nhiệt như eBay.com hay Buy.com, những tấn công này cũng đồng nghĩa với những khoản chi phí vô cùng lớn, vì trong thời gian Website ngừng hoạt động, khách hàng không thể thực hiện các giao dịch mua bán Và sự gián đoạn hoạt động này sẽ ảnh hưởng tới uy tín và tiếng tăm của doanh nghiệp, những điều không dễ dàng gì lấy lại được Mặc dù những cuộc tấn công này không phá huỷ thông tin hay truy cập vào những vùng cấm của máy chủ nhưng tạo ra nhiều phiền toái, ngây trở ngại cho hoạt động của nhiều doanh nghiệp Thí dụ, tháng 2 - 2000, các vụ tấn công DoS từ bọn tin tặc là nguyên nhân dẫn tới ngừng hoạt động của hàng loạt website trên thế giới trong nhiều giờ: eBay ngừng hoạt động trong 5 giờ, Amazon gần 4 giờ, CNN gần 3,5 giờ, E-Trade gần 3 giờ, Yahoo, Buy.com và ZDNet cũng ngừng hoạt động từ 3 - 4 giờ 2 ; ngay cả người khổng lồ Microsoft cũng đã từng phải khắc phục những hậu quả nghiêm trọng do DOS gây ra
Trang 16Hình 1.9 - Tấn công từ chối dịch vụ
Tấn công từ chối dịch vụ thường rất khó phòng chống do tính bất ngờ của nó và
hệ thống thường phải phòng chống nó trong thế bị động, khi "trận đánh" đã diễn ra Để phòng chống, các quản trị hệ thống nên thường xuyên cập nhật các bản vá lỗi phần mềm, các chương trình chống Virus, Trojan, Worm mới nhất cho hệ thống Tắt tất cả các dịch vụ không cần thiết trên hệ thống và đóng tất cả các cổng (Port) dịch vụ không
có nhu cầu sử dụng Thiết lập thêm máy chủ dự phòng ở địa chỉ khác để luân chuyển ngay khi xảy ra sự cố, hệ thống sẽ không bị gián đoạn hoạt động
Dùng Router/Firewall để hạn chế, loại bỏ các gói tin không hợp lệ, giảm lượng lưu thông trên mạng và tải của hệ thống Đối với các Website có sử dụng form nhập liệu nên cài thêm tính năng "mã xác nhận" (Security Code); giới hạn IP đăng ký ở cùng thời điểm, để hạn chế bị Flood dữ liệu Ngoài ra, cần thông tin cho các nhà cung cấp dịch vụ Internet (ISP) để chặn ngay các gói dữ liệu không hợp lệ từ xa Đặc biệt, đóng vai trò quan trọng hơn cả vẫn là các quản trị viên với việc phải theo dõi, giám sát chặt chẽ hệ thống để kịp thời phân tích, tìm nguyên nhân để đối phó khi có sự
cố xảy ra và đừng quên thường xuyên cập nhật kiến thức mới liên quan ,
1.3 Các chủ đề làm tiểu luận
Sinh viên có thể chọn các chủ đề theo gợi ý (trong danh mục) hoặc chủ động lựa chọn các chủ đề nghiên cứu khác nhưng phải được sự đồng ý của giáo viên hướng dẫn Danh mục các chủ đề bao gồm:
Mạng riêng ảo (Virtual Private Network)
Tường lửa (Hard and Soft-Firewall)
Tìm hiểu kỹ thuật làm giả Email (Forged Email)
Nghiên cứu phương pháp chống thư rác (Spam Email)
Tìm hiểu IPSec trong bộ giao thức Ipv6
Trang 17Tìm hiểu một số công cụ (phần mềm) dùng để tấn công hệ thống từ xa
Tìm hiểu một số công cụ (phần mềm) bảo vệ hệ thống
Tìm hiểu một số kỹ thuật tấn công trên mạng (Vụ tấn công doanh nghiệp TMĐT Viet
Co Ltd, vụ tấn công diễn đàn Hacker Việt Nam - HVA)
Tìm hiểu kỹ thuật bảo mật trong Windows
Tìm hiểu kỹ thuật bảo mật trong Linux
Tìm hiểu kỹ thuật kiểm soát truy xuất trong bảo vệ mạng nội bộ
Tìm hiểu vấn đề bảo mật trong mạng không dây và điện thoại di động
Tìm hiểu hệ mật mã IDEA
Tìm hiểu hệ mật mã RC5
Xây dựng chương trình DEMO một số hệ mật mã cổ điển
Xây dựng chương trình DEMO một số hệ mật mã sử dụng khóa công khai
Bảo mật các chương trình CHAT
Ứng dụng chữ ký điện tử cho các chương trình Email
Truy tìm dấu vết trên mạng
Tìm hiểu Malware(Keyloger, Spyware, Trojan horse, Internet worm )
Tìm hiểu Internet worm…
Tìm hiểu virus Macro
Tìm hiểu Mobile code
Tìm hiểu một số kỹ thuật sử dụng trong các chương trình diệt virus
Xây dựng ngân hàng câu hỏi về Virus
Phân tích virus
Bảo vệ an toàn mạng LAN
Nghiên cứu giải pháp phòng, chống tấn công DDOS
Tính toán tin cậy
Thủy vân số và dấu vân tay
Bảo mật vật lý
SEC: SSH like client
A Secure Media Distribution Framework
How to Make the User Authentication Process in MS Passport More Secure
Blinded Distributed Computing
Security of Wireless Networks and Mobile Devices
Trang 18Cracking Digital Satellite TV
User Authentication in Cryptographic File Systems
Steganography in Spam
Proactive Cryptography Applications in Smart Cards
Execution-Based Software Protection
Analyzing the Security of 802.11 Wireless Networks
Threshold Signatures and Open Source
Honeypots
Security and Privacy Issues of Microsoft Passport
Security Aspects of Unicode
Digital Signatures for Physical Mail
Differential Fault Analysis of RC5
Secure Instant Messengers
A Review of AES Candidates
A Payword Implementation
An Analysis of TIMEBOMB
Purple: Japanese Ciphers in WWII
Approaches to MIXNets
SmartCards: Back from the Dead
Payment via GSM Mobile phones
Digital Multimedia Copyright Protection
Security Analysis of Electronic Postage Systems
Security of Network Attached Storage
Software Bugging
Design of a Secure Pilot-based Authentication System
Intrusion Detection Systems
Cellular Telephone Security
A Computer Testing System
Copyright Protection Mechanisms in DVD + DIVx
CGI Security Issues
Network Access Controls
Digital Money—Fault Tolerant Multibank System
Security Policy Models
Trang 19An Overview of Biometric Technologies and their Real World Applications
Netbook
Secure Sockets Layer 3.0: Overiew and Analysis
Secure Perfectly Forward Secure Email Wizard
Cryp: An All-or-Nothing Encryption Scheme for Secure Multi-user Information Distribution
Frosty the Random Number Generator
Impact of Quantum Theory on Cryptography
Cartemis: Secure Electronic Wallet Technology
Preventing Media Piracy
Tìm hiểu so sánh PGP và S/MIME
Tìm hiểu SSH
ATM: Một máy tin cậy?
Khung chính sách bảo mật cho Mobile Code
Pseudonyms and Credential Transfer
Sơ đồ thanh toán điện tử
eCheck: A Safety-Oriented Electronic Check Scheme
Tính toán trên dữ liệu mã hóa Computing with Encrypted Data
BÀI 2: CƠ SỞ LÝ THUYẾT SỐ 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
Trang 20Cá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:
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 (**)
Trang 21Như 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:
(11*19 + 1017) mod 7 = ((11*19) mod 7 + 1017 mod 7) mod 7 = ((11 mod 7* 19 mod 7) mod 7 + (10 mod 7)17 mod 7) mod 7=
((4.(-2)) mod 7 + (((32)2)2)2 * 3 mod 7)mod 7=
((-1) mod 7 + ((22)2)2 * 3 mod 7)mod 7 = (-1 + 5) mod 7 = 4
Ví dụ: Bảng Modulo 8 với phép cộng
2.3 Ước số chung lớn nhất (Greatest Common Divisor)
• 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.
Trang 22• 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=bwhile B>0
R = A mod B
A = B, B = Rreturn A
Trang 23Bây giờ ta xét bài toán: nếu GCD(m, a) = 1, thì tìm nghịch đảo của a 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à a, vừa tính nghịch đảo trong trường hợp GCD(m, a) = 1
Ví dụ:
11-1 mod 7 = 4-1 mod 7 =2, (vì: 2.4 mod 7 = 1) suy ra ngịch đảo của 11-1 mod 7 =2
7-1 mod 11 =8 (vì: 7.8=56 mod 11 = 1)
Giải thuật sau chỉ thực hiện với các số nguyên m>a>0, biểu diễn bằng giã mã:
Procedure Euclid_Extended (a:integer, m:integer)
int, y0=0,y1:=1; r=0;q=0; y=0;
While (a>=1) do { r:= m mod a ; if r=0 then Break q:= m div a
y:= y0-y1*q m:=a
a:=r
y0:=y1 y1:=y }
If a>1 Then Return "A không khả nghịch theo mođun m"
else Return " Nghịch dảo mođun m của a là y"
Ví dụ: Ví dụ tìm số nghịch đảo nếu có của 30 theo mdulo 101 dựa vào thuật toán
Trang 245 2 1 0 2 27 -37 64
Kết quả tính toán trong bảng cho ta 64 Vậy
Ví dụ 2: Tìm nghịch đảo của 550 trong GL(1759)
có thể tìm được 2 hệ số đó? Thuật toán sau đây giúp chúng ta trả lời câu hỏi trên
Chúng ta sẽ bắt đầu từ thuật toán Euclide để tìm ước chung lớn nhất của 38 và 22.(1) 38 = 22 · 1 + 16
Trang 252 = (22 · 3 – 16 · 3) – 16 · 1
(5′) 2 = 22 · 3 -16 · 4
Chúng ta cứ tiếp tục quá trình ngược trên cho đến biểu thức ban đầu …
Từ biểu thức (1) 38 = 22 · 1 + 16, ta giải tìm số dư 16:
Bằng cách trên, ta luôn tìm được các số nguyên x và y sao cho UCLN(a,b) = ax + by
Và bằng cách này, bạn có thể đố mọi người biểu diễn một số thông qua 2 số cho trước
2.5 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
Trang 26o 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 đó
2.6 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)
• 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ó:
Trang 27• 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(2 3 )
• 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
Trang 28o 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à
= 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
Trang 292.7 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
2.8 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ố
2.9 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
Trang 30Cô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)
(-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
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:
Trang 312.13 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
Trang 32khô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");
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
Trang 33bì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
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 3: CÁC HỆ MẬT MÃ CỔ ĐIỂN3.1 Khái niệm Hệ mật mã
Một hệ mật mã là một bộ 5 (P, C, K,ε , D), thỏa mãn các điều kiện sau đây:
P: là tập hữu hạn các bản tin rõ (Pain Text)
C: là một tập hữu hạn các bản tin đã mã hóa (Cipher Text: bản mã )
K: là không gian khóa, là tập hữu hạn các khóa (Key)
E: Gọi là giải thuật mã hóa (Encryption algorithm)
D: Gọi là giải thuật giải mã hóa (Decryption algorithm)
Với mỗi khóa K∈ K, tồn tại một giải thuật mã hóa e K ∈ε và một giải thuật giải mã
∈
K
d D Trong đó: e K : P→C và d K :C→P là các hàm sao cho d K(e K(x))=x với mọi
x∈P.
Trang 34Định nghĩa: Cho a, b là các số nguyên, m là số nguyên dương
Ta viết a ≡ b mod m nếu (b-a) chia hết cho m Cụm từ a≡b (mod m) được đọc là “a, b
đồng dư modulo m”
3.2 Mã dịch chuyển (shift cipher - Caesar)
Hệ mã hoá nổi tiếng CAESAR là một hệ mã hoá thay thế đơn làm việc trên bảng chữ cái tiếng Anh 26 ký tự (A, B, , Z)
Trong hệ CAESAR và các hệ tương tự còn lại ta sử dụng các số tự nhiên thay cho các
ký tự - đánh số các ký tự trong bảng chữ cái theo thứ tự: A là 0, B là 1, và Z là 25
A B C D E F G H I J L M N W X Y Z
0 1 2 3 4 5 6 7 8 9 11 12 13 22 23 23 25Các phép toán số học thực hiện theo modul 26 Có nghĩa là 26 đồng nhất với 0, 27 đồng nhất với 1, 28 đồng nhất với 2, Ví dụ: 2×17 + 5×9 = 79 = 1 + 3×26 = 1
Hệ CAESAR sử dụng thuật toán mã hoá trong đó mỗi ký tự được thay thế bởi một ký
tự khác được xác định bằng cách dịch ký tự cần mã hoá sang phải k bước theo modul 26:
Đặt P=C=K=Z26 Với 0≤K ≤25, định nghĩa:
Ek(x) = (x + k) MOD 26
với x là một ký tự, 0 k 26, MOD là phép chia lấy phần dư.
Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo modul 26:
Dk(y) = (x - k) MOD 26 (x, y ∈ Z26)
Không gian khoá của hệ CAESAR bao gồm 26 số 0, 1, 2, 25
Ví dụ 1: với k=3, A được thay bằng D, B được thay bằng E, , W được thay bằng Z,
, X được thay bằng A, Y được thay bằng B, và Z được thay bằng C Ta có:
Bảng chữ cái gốc
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
Trang 35Bảng chữ cái dùng để mã hoá
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 CTrong trường hợp này bản rõ “TRY AGIAN” được mã hoá thành “WUBDJDLQ”, bản
rõ “HELP ME” được mã hoá thành “KHOSPH” (Chú ý, các ký tự trống trong bản mã được bỏ đi để đảm bảo tính an toàn)
Thêm một vài ví dụ minh hoạ:
E25(IBM) = HAL, E6(MUPID) = SAVOJ,
E3(HELP) = KHOS, E1(HOME) = IPNF,
E6(SAVOJ) = E20(SAVOJ) = MUPID
Plain: meet me after the toga party
Cipher: PHHW PH DIWHU WKH WRJD SDUWB
3.3 Mã thay thế (substitution cipher)
Đặt P=C=Z26 Với K gồm tất cả các hoán vị có thể của 26 ký hiệu 0, 1, …, 25 Với mỗi K∈ K định nghĩa:
)
(y K 1 y
d K = − mod 26 Trong đó K− 1 là hoán vị ngược của K
Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ được thay thế bằng ký tự khác trong bản mã (có thể là một chữ cái, một số hoặc một ký hiệu) Sự thay thế này làm cho bản rõ trở lên khó hiểu đối với mọi người nhưng người nhận sẽ đảo sự thay thế trong bản mã để được bản rõ
Có 4 kỹ thuật thay thế sau đây:
Thay thế đơn (A simple substitution cipher): là hệ trong đó một ký tự của bản rõ được thay bằng một ký tự tương ứng trong bản mã Một ánh xạ 1-1 từ bản rõ tới bản
mã được sử dụng để mã hoá toàn bộ thông điệp
Thay thế đồng âm (A homophonic substitution cipher): giống như hệ thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể được ánh xạ tới một trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1-n (one-to-many) Ví dụ, “A” có thể tương ứng với 5, 13, 25, hoặc 56, “B” có thể tương ứng với 7, 19, 31, hoặc 42, v.v
Thay thế đa mẫu tự (A polyalphbetic substitution cipher): được tạo nên từ nhiều thuật toán mã hoá thay thế đơn Ánh xạ 1-1 như trong trường hợp thay thế đơn, nhưng
có thể thay đổi trong phạm vi một thông điệp Ví dụ, có thể có năm thuật toán mã hoá
Trang 36đơn khác nhau được sử dụng; đặc biệt thuật toán mã hoá đơn được sử dụng thay đổi theo vị trí của mỗi ký tự trong bản rõ.
Thay thế đa sơ đồ (A polygram substitution cipher): là thuật toán trong đó các khối ký tự được mã hoá theo nhóm Đây là thuật toán tổng quát nhất, cho phép thay thế các nhóm ký tự của văn bản gốc Ví dụ, “ABA” có thể tương ứng với “RTQ”,
“ABB” có thể tương ứng với “SLL”, v.v
Ví dụ: Khóa K:
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
X N Y A H P O G Z Q W B T S F L R C V M U E K J D IKhóa K−1
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 l r y v o h e z x w p t b g f j q n m u s k a c iCipher: MGZVYZLGHCMHJMXSSFMNHAHYCDLMHA
3.4 Hệ mật mã Affine
Hệ mã hoá AFFINE được xác định bởi hai số nguyên a và b, với điều kiện 0 <= a,b <= 25 (tức a, b thuộc bảng chữ cái tiếng Anh 26 ký tự) Ở đây chúng ta xét hệ làm việc trên các số tự nhiên thay cho các ký tự như đã nói ở phần trên, các phép toán số học được thực hiện theo modul 26
Đặt P=C=Z26 và đặt K={(a, b)∈ Z26 x Z26: gcd(a, 26)=1}.
Với K=(a, b)∈K, định nghĩa:
Ek(x) = (ax + b) MOD 26
và Dk(y) = a-1(y - b) MOD 26Trong đó (x, y ∈ Z26), a-1 ∈ Z26 là số nghịch đảo của a (muốn tìm a-1 ta sử dụng thuật toán Euclid mở rộng), sao cho aa−1 ≡a−1a≡1(mod26)hay a-1 mod 26 =a
Lưu ý: khi a = 1 thì ta có hệ mã hoá CAESAR.
Ví dụ: nếu a = 3 và b = 5 thì ta có, bảng số tự nhiên tương ứng với bảng chữ cái gốc:
13 14 15 16 17 18 19 20 21 22 23 24 25Bảng số tự nhiên sau khi mã hoá:
18 21 24 1 4 7 10 13 16 19 22 25 2Tương ứng ta có bảng chữ cái gốc:
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
và bảng chữ cái dùng để mã hoá:
Trang 37F I L O R U X A D G J M P S V Y B E H K N Q T W Z CKhi đó bản rõ “NOTEVERYSTEAMBATHISSAUNA” được mã hoá thành
Trong đó các phép +, - được thực hiện trên trường Z26
VIGENERE cũng giống như CAESAR, nhưng ở đây khoá được thay đổi theo từng bước Hình vuông VIGENERE được sử dụng để mã hoá và giải mã
,(
), ,
,(
), ,
,
( 1 2 m 1 1 2 2 m m
Trang 38Mỗi cột của hình vuông VIGENERE có thể xem như là một hệ CAESAR, với các khoá 0, 1, 2, , 25 Để mã hoá thì bản rõ được đọc từ các hàng và khoá được đọc từ các cột
Ví dụ để mã hóa bản rõ PURPLE với từ khoá CRYPTO, đầu tiên ta tìm điểm giao nhau của hàng P và cột C, ta được R Cứ như vậy ta được bản mã RLPEES Ta sẽ thu được bản mã tương tự nếu ta thay đổi vai trò của hàng và cột trong khi mã hoá Để giải
mã bản mã RLPEES vừa mã hoá, ta nhìn vào hàng nào có chứa R trong cột C, theo cách này ta sẽ tìm được P Và như vậy ta tìm được bản rõ là PURPLE
Khoá được áp dụng một cách tuần hoàn, tức là nếu bản rõ dài hơn khoá thì khoá lại được bắt đầu lại từ đầu Ví dụ khoá CRYPTO được áp dụng với bản rõ có độ dài 15 ký
tự là CRYPTOCRYPTOCRY
Ta thấy rằng trong hệ mã hoá VIGENERE, với khoá có độ dài d thì sẽ có 26d khoá hợp lệ Vì vậy, chỉ cần với giá trị d nhỏ thì phương pháp thám mã vét cạn cũng đòi hỏi khá nhiều thời gian
Ví dụ: với m=2;các phần tử của K là các số nguyên từ 0 đến 25 Hơn nữa K phải là ma trận khả nghịch, tức là tồn tại K-1 Ví dụ:
K = 2 5
3 3
và K-1= 20 9
17 15
Trang 39Trong đó P và C được viết thành các vector cột d chiều Mỗi bộ d chữ cái của bản rõ được viết thành vector P với các thành phần là các số biểu diễn các ký tự Và C cũng thể hiện khối d ký tự của bản mã.
Còn khi giải mã ta phải dùng ma trận nghịch đảo K-1:
P = D(K, P) = K 1 C mod 26 = K 1 KP = P
Ví dụ: bản rõ “HELP” được viết thành hai vector
P1 = E
H = 4
7
và P2 = P
L = 15
11.Theo công thức mã hoá ta có
KP1 = 2 5
3 3
33 = 8
7 = I
H = C1 vàKP2 = 2 5
3 3
78 = 19
0 = T
A = C2Chúng ta thu được bản mã “HIAT”
3.7 Mã hoán vị (permutation cipher)
Đặt m là một số nguyên dương Đặt P=C=(Z26)m và đặt K là tập tất cả các hoán
vị của tập {1, …, m} Với K∈K, định nghĩa:
), ,(
()
K là hoán vị ngược của K
3.8 Mã dòng (stream cipher)
Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõ đều được
mã hoá bằng cùng một khoá K Tức xâu bản mã y nhận được có dạng:
y = y1y2 = Ek(x1) Ek(x2 )
Các hệ mật thuộc dạng này thường được gọi là các mã khối Một quan điểm sử dụng khác là mật mã dòng Ý tưởng cơ bản ở đây là tạo ra một dòng khoá z = z1z2
và dùng nó để mã hoá một xâu bản rõ x = x1x2 theo quy tắc: y = y1y2 =
) (x
zi = fi (k, x1 , , xi -1 )
Trang 40Phần tử zi của dòng khoá được dùng để mã xi tạo ra yi = eiz(xi) Bởi vậy, để
mã hoá xâu bản rõ x1x2 ta phải tính liên tiếp: z1, y1, z2, y2 Việc giải mã xâu bản mã y1y2 có thể được thực hiện bằng cách tính liên tiếp: z1, x1, z2, x2 .Sau đây là định nghĩa hệ mã dòng dưới dạng toán học
Một hệ mã dòng là một bộ (P, C, K, L, F, E, D) thoả mãn các điều kiện sau đây
6 Với mỗi z ∈ L có quy tắc mã ez ∈ E và một quy tắc giải mã tương ứng: dz ∈
D ez : P→ C và dz : C→ P là các hàm thoả mãn dz ez(x)=x với mọi bản rõ x ∈ P
Mã dòng được gọi là đồng bộ nếu dòng khoá không phụ thuộc vào xâu bản rõ, tức là nếu dòng khoá đựoc tạo ra chỉ là hàm của khoá k Khi đó ta coi k là một "mần"
để mở rộng thành dòng khoá z1z2 Một hệ mã dòng được gọi là tuần hoàn với chu kỳ d nếu zi+d= zi với số nguyên i≥ 1 Mã Vigenère với độ dài từ khoá m có thể coi là mã dòng tuần hoàn với chu kỳ m Trong trường hợp này, khoá là k = (k1, km) Bản thân k sẽ tạo m phần tử đầu tiên của dòng khoá: zi = ki Sau đó dòng khoá
sẽ tự lặp lại Nhận thấy rằng, trong mã dòng tương ứng với mật mã Vigenère, các hàm
mã và giải mã được dùng giống như các hàm mã và giải mã được dùng trong MDV:ez(x) = x+z và dz(y) = y-z
Các mã dòng thường được mô tả trong các bộ chữ nhi phân tức là P=C=L=Z2 Trong trường hợp này, các phép toán mã và giải mã là phép cộng theo modulo 2
ez(x) = x +z mod 2 và dz(x) = y +z mod 2
Nếu ta coi "0" biểu thị giá trị "sai" và "1" biểu thị giá trị "đúng" trong đại số Boolean thì phép cộng theo moulo 2 sẽ ứng với phép hoặc có loại trừ Bởi vậy phép mã (và giải
mã ) dễ dàng thực hiện bằng mạch cứng
Ta xem xét một phương pháp tạo một dòng khoá (đồng bộ) khác Giả sử bắt đầu với (k1, , km ) và zi = ki (cũng giống như trước đây), tuy nhiên bây giờ ta tạo dòng khoá theo một quan hệ đệ quy tuyến tính cấp m
Zi+m =
2mod
1 0
∑−
n
j j i j z c
Trong đó c0,…, cm-1 ∈ Z2 là các hằng số cho trước: