(NB) Giáo trình An toàn và bảo mật thông tin gồm 6 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 về chứng thực, chương 4 giới thiệu về mã khối và chuẩn mã dữ liệu, chương 5 nêu các vấn đề về xâm nhập và phát hiện xâm nhập và cuối cùng, chương 6 giới thiệu ứng dụng về an toàn Web và IP.
TỔNG QUAN VỀ AN TOÀN VÀ BẢO MẬT THÔNG TIN
Nội dung của an toàn và bảo mật thông tin
Khi nhu cầu trao đổi thông tin ngày càng tăng, các tiến bộ trong điện tử, viễn thông và công nghệ thông tin đã thúc đẩy sự phát triển của các ứng dụng nhằm nâng cao chất lượng và lưu lượng truyền tin Điều này dẫn đến việc đổi mới các quan niệm và biện pháp bảo vệ thông tin dữ liệu Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, liên quan đến nhiều lĩnh vực khác nhau, với nhiều phương pháp thực hiện để đảm bảo an toàn Các phương pháp này có thể được chia thành ba nhóm chính.
- Bảo vệ an toàn thông tin bằng các biện pháp hành chính
- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng)
- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm)
Ba nhóm biện pháp bảo vệ an ninh thông tin có thể được áp dụng độc lập hoặc kết hợp với nhau Môi trường mạng và truyền tin là nơi khó bảo vệ nhất và cũng dễ bị xâm nhập nhất Hiện nay, giải pháp hiệu quả và tiết kiệm nhất cho an ninh mạng và mạng máy tính là sử dụng các thuật toán.
An toàn thông tin bao gồm các nội dung sau:
- Tính bí mật: tính kín đáo riêng tư của thông tin
- Tính xác thực của thông tin, bao gồm xác thực đối tác( bài toán nhận danh), xác thực thông tin trao đổi
Tính trách nhiệm trong việc gửi thông tin là rất quan trọng, đảm bảo rằng người gửi không thể thoái thác trách nhiệm về dữ liệu của mình Để bảo vệ an toàn thông tin trên đường truyền và mạng máy tính, cần phải dự đoán các nguy cơ không an toàn và rủi ro có thể xảy ra Việc xác định chính xác những nguy cơ này sẽ giúp đưa ra các giải pháp hiệu quả nhằm giảm thiểu thiệt hại cho thông tin dữ liệu được lưu trữ và trao đổi.
Có hai loại hành vi xâm phạm thông tin dữ liệu: vi phạm chủ động và vi phạm thụ động Vi phạm thụ động nhằm mục đích đánh cắp thông tin mà không làm sai lệch nội dung dữ liệu, thường khó phát hiện nhưng có thể ngăn chặn hiệu quả Kẻ xâm nhập có thể dò ra thông tin về người gửi và nhận thông qua các thông tin điều khiển trong gói tin Ngược lại, vi phạm chủ động có thể thay đổi, xóa bỏ, làm trễ hoặc sắp xếp lại nội dung thông tin, thậm chí thêm thông tin ngoại lai để làm sai lệch dữ liệu Mặc dù vi phạm chủ động dễ phát hiện hơn, việc ngăn chặn chúng lại gặp nhiều khó khăn.
Không có biện pháp bảo vệ an toàn thông tin nào là hoàn hảo Dù hệ thống được bảo vệ tốt đến đâu, vẫn không thể đảm bảo an toàn tuyệt đối cho dữ liệu.
Các chiến lượt an toàn hệ thống
Mục tiêu: Trình bày được các chiến lược bảo vệ an toàn cho mạng
2.1 Giới hạn quyền hạn tối thiểu (Last Privilege) Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cùng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định
2.2 Bảo vệ theo chiều sâu (Defence In Depth)
Nguyên tắc này nhấn mạnh rằng chúng ta không nên chỉ dựa vào một chế độ an toàn duy nhất, dù nó có mạnh mẽ đến đâu Thay vào đó, việc xây dựng nhiều cơ chế an toàn hỗ trợ lẫn nhau là cần thiết để đảm bảo sự bảo vệ tối ưu.
Để đảm bảo an toàn thông tin, cần thiết lập một "cửa khẩu" hẹp, cho phép thông tin chỉ đi vào hệ thống qua con đường này Việc này đòi hỏi phải tổ chức một cơ cấu kiểm soát và điều khiển chặt chẽ để quản lý thông tin đi qua "cửa khẩu".
2.4 Điểm nối yếu nhất (Weakest Link)
Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất”
Kẻ phá hoại thường tấn công vào những điểm yếu nhất của hệ thống, vì vậy việc gia cố các yếu điểm này là rất cần thiết Chúng ta thường chú trọng đến các mối đe dọa từ mạng mà bỏ qua kẻ tiếp cận hệ thống, dẫn đến an toàn vật lý trở thành một trong những yếu điểm lớn nhất trong hệ thống của chúng ta.
Các hệ thống an toàn cần phải đảm bảo tính toàn diện của các hệ thống cục bộ Nếu một kẻ xấu có khả năng phá vỡ cơ chế an toàn, họ có thể thực hiện điều này bằng cách tấn công vào hệ thống tự do của một cá nhân và sau đó xâm nhập vào hệ thống từ bên trong.
2.6 Tính đa dạng bảo vệ
Để bảo vệ hiệu quả cho các hệ thống, cần áp dụng nhiều biện pháp bảo vệ khác nhau Nếu một hệ thống không được bảo vệ tốt, kẻ tấn công có thể dễ dàng xâm nhập vào các hệ thống khác.
3 Các mức bảo vệ trên mạng
Mục tiêu: Hiểu rõ và xác định được các mức bảo vệ hệ thống mạng
Vì không có giải pháp an toàn tuyệt đối, việc bảo vệ thông tin trên mạng cần sử dụng nhiều mức bảo vệ khác nhau để tạo thành hàng rào chống lại các hoạt động xâm phạm Đặc biệt, việc bảo vệ thông tin trong máy tính, nhất là các server, là ưu tiên hàng đầu Các biện pháp không chỉ tập trung vào việc ngăn chặn thất thoát thông tin trên đường truyền mà còn xây dựng các rào chắn từ ngoài vào trong cho các hệ thống kết nối mạng Thông thường, các mức bảo vệ này bao gồm nhiều lớp bảo vệ khác nhau.
Lớp bảo vệ trong cùng đóng vai trò quan trọng trong việc kiểm soát quyền truy cập và quản lý tài nguyên mạng Việc kiểm soát này cần được thực hiện một cách chi tiết, đặc biệt là đối với các cấu trúc dữ liệu Hiện nay, việc quản lý quyền truy cập chủ yếu được thực hiện ở mức tệp.
3.2 Đăng ký tên và mật khẩu
Kiểm soát quyền truy nhập ở mức hệ thống là một phương pháp bảo vệ phổ biến, đơn giản và hiệu quả Để tham gia vào mạng và sử dụng tài nguyên, người dùng cần đăng ký tên và mật khẩu Người quản trị mạng có trách nhiệm quản lý và kiểm soát mọi hoạt động, xác định quyền truy nhập của người dùng theo thời gian và không gian, nghĩa là họ chỉ được phép truy cập trong một khoảng thời gian và tại một vị trí nhất định.
Mặc dù lý thuyết cho rằng việc giữ kín mật khẩu và tên đăng ký sẽ ngăn chặn truy cập trái phép, nhưng thực tế cho thấy điều này khó thực hiện do nhiều nguyên nhân Để cải thiện bảo mật, người quản lý mạng nên chịu trách nhiệm đặt và thường xuyên thay đổi mật khẩu.
3.3 Mã hoá dữ liệu Để bảo mật thông tin trên đường truyền người ta sử dụng các phương pháp mã hoá Dữ liệu bị biến đổi từ dạng nhận thức được sang dạng không nhận thức được theo một thuật toán nào đó và sẽ được biến đổi ngược lại ở trạm nhận (giải mã) Đây là lớp bảo vệ thông tin rất quan trọng
Để ngăn chặn truy cập vật lý vào hệ thống, cần áp dụng các biện pháp bảo mật truyền thống như cấm tuyệt đối những người không có quyền hạn vào phòng máy chủ, sử dụng ổ khóa cho máy tính và đảm bảo rằng các máy trạm không được trang bị ổ mềm.
Ngăn chặn thâm nhập trái phép và lọc bỏ các gói tin không mong muốn là biện pháp quan trọng để bảo vệ máy tính và mạng nội bộ (intranet) Việc này giúp đảm bảo an toàn thông tin và ngăn chặn các mối đe dọa từ bên ngoài, đồng thời cải thiện hiệu suất hoạt động của hệ thống.
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, mạng máy tính đóng vai trò quyết định trong hoạt động của các cơ quan và doanh nghiệp Do đó, việc đảm bảo an toàn cho hệ thống mạng máy tính, tránh sự cố là nhiệm vụ hàng đầu Quản trị mạng cần được thực hiện một cách khoa học để đáp ứng các yêu cầu cần thiết.
- Toàn bộ hệ thống hoạt động bình thường trong giờ làm việc
- Có hệ thống dự phòng khi có sự cố về phần cứng hoặc phần mềm xảy ra
- Backup dữ liệu quan trọng theo định kỳ
- Bảo dưỡng mạng theo định kỳ
- Bảo mật dữ liệu, phân quyền truy cập, tổ chức nhóm làm việc trên mạng.
An toàn thông tin bằng mật mã
Mật mã là ngành khoa học nghiên cứu các phương pháp truyền tin bí mật, bao gồm lập mã và phá mã Quá trình lập mã gồm mã hóa và giải mã, trong đó mã hóa chuyển đổi thông tin từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi, còn giải mã chuyển đổi ngược lại tại trạm nhận Quy trình mã hóa thông tin (encryption) đóng vai trò bảo vệ thông tin quan trọng trong môi trường mạng Để bảo vệ thông tin bằng mật mã, người ta thường áp dụng hai hướng tiếp cận khác nhau.
- Theo đường truyền (Link_Oriented_Security)
- Từ nút đến nút (End_to_End)
Thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút mà không quan tâm đến nguồn và đích của nó Cần lưu ý rằng thông tin chỉ được bảo vệ trong quá trình truyền tải, với mỗi nút thực hiện giải mã và mã hoá để tiếp tục truyền đi Do đó, việc bảo vệ các nút là rất quan trọng.
Thông tin trên mạng được bảo vệ bằng cách mã hóa từ nguồn đến đích, với dữ liệu được mã hóa ngay khi tạo ra và chỉ được giải mã khi đến nơi Tuy nhiên, phương pháp này có nhược điểm là chỉ dữ liệu của người dùng mới có thể được mã hóa, trong khi dữ liệu điều khiển vẫn giữ nguyên để có thể xử lý tại các nút.
Vai trò của hệ mật mã
Các hệ mật mã phải thực hiện được các vai trò sau:
Hệ mật mã cần phải bảo vệ nội dung văn bản rõ (PlainText) để chỉ người sở hữu hợp pháp mới có quyền truy cập thông tin, từ đó ngăn chặn việc truy cập trái phép.
- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity)
Tổ chức các sơ đồ chữ ký điện tử giúp ngăn chặn tình trạng giả mạo và mạo danh khi gửi thông tin trên mạng Một trong những ưu điểm lớn nhất của hệ mật mã là khả năng đánh giá độ phức tạp tính toán mà kẻ xâm nhập phải đối mặt để giải mã thông tin Mỗi hệ mật mã đều có những ưu và nhược điểm riêng, nhưng việc đánh giá độ phức tạp tính toán cho phép chúng ta áp dụng các thuật toán mã hóa khác nhau cho từng ứng dụng cụ thể, tùy thuộc vào yêu cầu về độ an toàn.
Các thành phần của một hệ mật mã : Định nghĩa: một hệ mật là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
- P là một tập hợp hữu hạn các bản rõ (PlainText), nó được gọi là không gian bản rõ
C là tập hợp hữu hạn các bản mã (Crypto), thường được gọi là không gian các bản mã Mỗi phần tử trong C được tạo ra bằng cách áp dụng phép mã hóa Ek lên một phần tử của P, với k thuộc tập K.
K là một tập hợp hữu hạn các khóa, được gọi là không gian khóa Mỗi phần tử k trong K được xem là một khóa (Key) Để đảm bảo an toàn, số lượng khóa trong không gian này cần đủ lớn, nhằm ngăn chặn kẻ địch có thời gian để thử tất cả các khóa có thể thông qua phương pháp vét cạn.
Mỗi phần tử k thuộc tập K đều có một quy tắc mã hóa eK: P → C và một quy tắc giải mã dk thuộc tập D tương ứng Cả eK: P → C và dk: C → P đều là những hàm với tính chất rằng dK(ek(x)) = x cho mọi bản rõ x thuộc P.
Phân loại hệ mật mã
Mục tiêu: Biết phân loại các hệ mật mã khác nhau, so sánh được điểm ưu, nhược của từng hệ mật mã
Có nhiều cách để phân loại hệ mật mã Dựa vào cách truyền khóa có thể phân các hệ mật mã thành hai loại:
Hệ mật đối xứng, hay còn gọi là mật mã khóa bí mật, là phương pháp mã hóa sử dụng chung một khóa cho cả quá trình mã hóa và giải mã dữ liệu.
Do đó khoá phải được giữ bí mật tuyệt đối
Hệ mật mã bất đối xứng, hay còn gọi là mật mã khóa công khai, sử dụng hai khoá khác nhau để thực hiện quá trình mã hóa và giải mã Khoá mã hóa có thể được công khai, trong khi khoá giải mã cần được giữ bí mật Mỗi cặp khoá này tạo ra mối quan hệ chuyển đổi ngược nhau, đảm bảo rằng không thể suy ra khoá này từ khoá kia.
Hệ mật mã được phân loại dựa trên thời gian ra đời thành hai loại: mật mã cổ điển, xuất hiện trước năm 1970, và mật mã hiện đại, ra đời sau năm 1970 Bên cạnh đó, dựa vào cách thức mã hóa, hệ mật mã còn được chia thành mã dòng, trong đó mỗi khối dữ liệu được mã hóa bằng các khóa khác nhau sinh ra từ hàm sinh khóa, và mã khối, nơi từng khối dữ liệu được mã hóa bằng cùng một khóa.
Tiêu chuẩn đánh giá hệ mật mã
Mục tiêu của việc đánh giá hệ mật mã là dựa vào các yếu tố quan trọng như độ an toàn, tốc độ giải mã và phương thức phân phối khóa.
Một hệ mật an toàn phải đảm bảo độ an toàn cao và có thể đánh giá được thông qua độ an toàn tính toán mà không cần cài đặt Để một hệ mật được coi là an toàn, việc phá vỡ nó phải yêu cầu thực hiện n phép toán, và thời gian cần thiết để giải quyết n phép toán này phải rất lớn, không thể chấp nhận được.
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
- Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công khai thuật toán
Khi có khóa công khai ek và bản rõ P, chúng ta có thể dễ dàng tính toán giá trị ek(P) Ngược lại, khi biết khóa riêng dk và bản mã C, việc tính toán dk(M) để thu được bản rõ P cũng trở nên đơn giản.
Khi không biết dK, việc tìm giá trị M từ C trở nên khó khăn Đối với hàm f: X → Y, việc tính y = f(x) với mọi x thuộc X là đơn giản, nhưng ngược lại, việc xác định x khi đã biết y lại là một thách thức Điều này thể hiện tính chất của hàm một chiều.
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ
7.2 Tốc độ mã và giải mã
Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ mã và giải mã Hệ mật tốt thì thời gian mã và giải mã nhanh
Hệ mật mã phụ thuộc vào khóa có thể được chia thành hai loại: khóa công khai và khóa bí mật Việc phân phối khóa bí mật thường tốn kém hơn so với hệ mật mã sử dụng khóa công khai Do đó, chi phí phân phối khóa là một yếu tố quan trọng cần xem xét khi lựa chọn hệ mật mã.
CÁC PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN
Các hệ mật mã cổ điển
Mục tiêu: Trình bày được các hệ mật mã cổ điển
1.1 Mã dịch vòng ( shift cipher)
Phần này sẽ mô tả mã dịch (MD) dựa trên số học theo modulo Trước tiên sẽ điểm qua một số định nghĩa cơ bản của số học này
Giả sử a và b là các số nguyên, và m là một số nguyên dương Chúng ta nói rằng a ≡ b (mod m) nếu m chia hết cho b - a Mệnh đề a ≡ b (mod m) được gọi là "a đồng dư với b theo modulo m", trong đó số nguyên m được gọi là modulus.
Khi chia hai số a và b cho một số m, ta thu được phần thương nguyên và phần dư, với các phần dư r1 và r2 nằm trong khoảng từ 0 đến m-1 Cụ thể, a có thể được biểu diễn dưới dạng a = q1m + r1 và b = q2m + r2, trong đó 0 ≤ r1 ≤ m-1 và 0 ≤ r2 ≤ m-1 Do đó, a và b đồng dư modulo m (a ≡ b (mod m)) khi và chỉ khi phần dư của chúng bằng nhau, tức là r1 = r2.
Ký hiệu a mod m được sử dụng để xác định phần dư của a khi chia cho m Ta có a ≡ b (mod m) khi và chỉ khi a mod m = b mod m Khi thay a bằng a mod m, ta nói rằng a đã được rút gọn theo modulo m.
Nhiều ngôn ngữ lập trình xác định a mod m là phần dư trong khoảng -m+1 đến m-1 có cùng dấu với a Ví dụ, -18 mod 7 cho kết quả là -4, khác với giá trị 3 theo công thức truyền thống Tuy nhiên, để thuận tiện, a mod m thường được xác định là một số không âm.
Số học modulo m, ký hiệu là Zm, được định nghĩa là tập hợp {0, 1, , m-1} với hai phép toán cơ bản là cộng và nhân Trong Zm, phép cộng và nhân được thực hiện tương tự như trên các số thực, nhưng với một điểm khác biệt là tất cả các kết quả đều được rút gọn theo modulo m.
Ví dụ tính 11× 13 trong Z16 Tương tự như với các số nguyên ta có 11 ×13 143 Để rút gọn 143 theo modulo 16, ta thực hiện phép chia bình thường:
Giả sử P = C = K = Z26 với 0 ≤ k ≤ 25 , định nghĩa:
Nhận xét: Trong trường hợp K = 3, hệ mật thường được gọi là mã Caesar đã từng được Julius Caesar sử dụng
Chúng ta sẽ sử dụng phương pháp MDV (modulo 26) để mã hóa một văn bản tiếng Anh thông thường Cách mã hóa này thiết lập sự tương ứng giữa các ký tự và các thặng dư theo modulo 26, với A tương ứng với 0, B với 1, và tiếp tục đến Z với 25 Sự tương ứng này sẽ được ghi lại để tiện sử dụng cho các ví dụ sau này.
JBCRCLQRWCRVNBJENBWRWN ta sẽ thử liên tiếp các khoá giải mã d0 ,d1 và y thu được: j b c r c l q r w c r v n b j e n b w r w n i a b q b k p q v b q u m a i d m a v q v m h z a p a j o p u a p t l z h c l z u p u l g y z o z i n o t z o s k y g b k y t o t k j x y n y h m n s y n r j e x f a j x s n s j e w x m x g l m r x m q i w e z i w r m r i d v w l w f k l q w l p h v o d y h v q l q h c u v k v e j k p v k o g u c x g u p k p g b t u j u d i j o u j n f t b w f o j o f a s t i t c h i n t i m e s a v e s n i n e
Chúng ta đã xác định được bản rõ và dừng lại với khoá tương ứng K = 9 Trung bình, bản rõ có thể được tính sau khi thử 13 quy tắc giải mã Điều kiện để một hệ mật an toàn là phép tìm khoá vét cạn không thể thực hiện được, do đó không gian khoá cần phải rất lớn.
Tuy nhiên, một không gian khoá lớn vẫn chưa đủ đảm bảo độ mật
Hệ mật thay thế, một trong những hệ mật nổi tiếng, đã được sử dụng trong hàng trăm năm Một ví dụ điển hình cho hệ mật này là trò chơi đố chữ "cryptogram" thường xuất hiện trong các bài báo.
Trong MTT, cả P và C đều sử dụng bộ chữ cái tiếng Anh gồm 26 chữ cái Chúng ta áp dụng phương pháp Z26 trong mã hóa và giải mã vì các phép toán này thuộc về đại số Tuy nhiên, trong MTT, việc xem mã hóa và giải mã như các hoán vị của các ký tự là cách tiếp cận phù hợp hơn.
Cho P =C = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, ,25
Với mỗi phép hoán vị π K , ta định nghĩa: eπ(x) = π(x) và dπ(y) = π -1(y) trong đó π -1 là hoán vị ngược của π
Ví dụ sau đây minh họa phép hoán vị ngẫu nhiên π, tạo ra một hàm mã hóa Trong đó, các ký hiệu của bản rõ được viết bằng chữ thường, trong khi các ký hiệu của bản mã được thể hiện bằng chữ in hoa.
Hàm giải mã eπ (a) = X, eπ (b) = N được thực hiện thông qua phép hoán vị ngược Để thực hiện điều này, ta viết hàng thứ hai lên trước và sau đó sắp xếp chúng theo thứ tự chữ cái.
Ví dụ: Hãy giải mã bản mã:
Mỗi khoá của MTT là một phép hoán vị của 26 kí tự, với tổng số hoán vị lên tới 26!, lớn hơn 4 × 10^26, tạo ra một con số khổng lồ Do đó, việc tìm khoá theo phương pháp vét cạn là không khả thi, ngay cả với sự hỗ trợ của máy tính Tuy nhiên, sẽ được chứng minh rằng MTT có thể bị thám thính dễ dàng bằng các phương pháp khác.
MDV là một dạng đặc biệt của MTT, bao gồm 26 hoán vị của 26 phần tử Một dạng đặc biệt khác là mã Affine, được định nghĩa bằng hàm mã có dạng e(x) = ax + b mod 26, với a, b thuộc Z26 Các hàm này được gọi là hàm Affine, trong đó trường hợp a = 1 sẽ tạo ra MDV Để giải mã thành công, hàm Affine cần phải là đơn ánh, nghĩa là với mỗi y thuộc Z26, phương trình ax + b ≡ y (mod 26) phải có nghiệm x duy nhất Điều này tương đương với đồng dư ax ≡ y - b (mod 26).
Vì y thay đổi trên Z26 nên y-b cũng thay đổi trên Z26 Bởi vậy, ta chỉ cần nghiên cứu phương trình đồng dư: ax ≡ y (mod 26) (y Z26)
Phương trình này có một nghiệm duy nhất cho mỗi y khi và chỉ khi UCLN(a, 26) = 1 Nếu giả sử UCLN(a, 26) = d > 1, thì đồng dư thức ax ≡ 0 (mod).
26) sẽ có ít nhất hai nghiệm phân biệt trong Z26 là x = 0 và x = 26/d Trong trường hợp này, e(x) = ax + b mod 26 không phải là một hàm đơn ánh và bởi vậy nó không thể là hàm mã hoá hợp lệ
Ví dụ, do UCLN(4,26) = 2 nên 4x +7 không là hàm mã hoá hợp lệ: x và x+13 sẽ mã hoá thành cùng một giá trị đối với bất kì x Z26
Ta giả thiết UCLN(a,26) = 1 Giả sử với x1 và x2 nào đó thảo mãn: ax1≡ ax2 (mod 26)
Khi đó a(x1- x2) ≡ 0(mod 26) bởi vậy
Bây giờ ta sẽ sử dụng một tính chất của phép chia sau: Nếu UCLN(a,b)=1 và a bc thì a c Vì 26 a(x1- x2) và UCLN(a,26) = 1 nên ta có:
Mã thám các hệ mã cổ điển
Trong phần này, chúng ta sẽ thảo luận về một số kỹ thuật mã thám, với giả thiết rằng đối phương Oscar đã biết hệ mật đang được sử dụng, được gọi là nguyên lý Kerekhoff Nếu Oscar không biết hệ mật, nhiệm vụ của anh ta sẽ trở nên khó khăn hơn Tuy nhiên, không nên dựa vào giả thiết không chắc chắn rằng Oscar không biết hệ mật, vì vậy mục tiêu trong thiết kế hệ mật là đạt được độ mật vững chắc dưới giả thiết Kerekhoff.
Trước tiên ta phân biệt các mức độ tấn công khác nhau vào các hệ mật Sau đây là một số loại thông dụng nhất
Thám mã chỉ có xâu bản mã y
Thám mã có xâu bản rõ x và xâu bản mã tương ứng y
Bản rõ được lựa chọn:
Thám mã đã có quyền truy cập tạm thời vào cơ chế mã hóa, cho phép họ lựa chọn một xâu bản rõ x và tạo ra xâu bản mã y tương ứng.
Bản mã được lựa chọn:
Thám mã có quyền truy cập tạm thời vào cơ chế giải mã, cho phép họ chọn một bản mã y và tạo ra xâu bản rõ x tương ứng.
Trong mỗi trường hợp, việc xác định loại khóa đã sử dụng là rất quan trọng Bốn mức tấn công đã được phân loại theo thứ tự tăng dần của sức mạnh tấn công Đặc biệt, tấn công theo bản mã là phương pháp phù hợp cho các hệ mật khóa công khai, điều này sẽ được thảo luận chi tiết trong chương sau.
Trước tiên, chúng ta sẽ phân tích phương pháp tấn công yếu nhất, đó là tấn công chỉ dựa vào bản mã Giả sử rằng xâu bản rõ là một văn bản tiếng Anh thông thường không có dấu chấm câu hoặc khoảng trống, việc mã hóa sẽ trở nên khó khăn hơn nếu bao gồm cả dấu chấm câu và khoảng trống.
Nhiều kỹ thuật thám mã dựa vào các đặc điểm thống kê của ngôn ngữ tiếng Anh, trong đó nhiều tác giả đã tiến hành ước lượng tần suất tương đối của 26 chữ cái thông qua các phân tích từ tiểu thuyết, tạp chí và báo chí Dữ liệu trong bảng dưới đây được trích dẫn từ nghiên cứu của Beker và Piper.
Xác suất xuất hiện của 26 chữ cái:
Ký tự Xác suất Ký tự Xác suất Ký tự Xác suất
Từ bảng trên, Beker và Piper phân 26 chữ cái thành 5 nhóm như sau:
2 T, A, O, I, N, S, H, R : mỗi ký tự có xac suất khoảng 0,06 đến 0,09
3 D, L : mỗi ký tự có xác suất chừng 0,04
4 C, U, M, W, F, G, Y, P, B: mỗi ký tự có xác suất khoảng 0,015 đến 0,023
5 V, K, J, X, Q, Z mỗi ký tự có xác suất nhỏ hơn 0,01
Việc phân tích các bộ đôi và bộ ba ký tự liên tiếp, hay còn gọi là bộ đôi (diagrams) và bộ ba (trigrams), rất quan trọng trong việc hiểu cấu trúc ngôn ngữ Trong số các bộ đôi, 30 bộ đôi phổ biến nhất theo thứ tự giảm dần bao gồm: TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA.
The most common three-letter combinations in the English language, ranked in descending order, include ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, and OF The top twelve trigrams are: THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FOR, and DTH.
Mật mã Affine là một minh chứng rõ ràng cho việc sử dụng số liệu thống kê trong việc giải mã Ví dụ, Oscar đã thu thập được một bản mã bí mật.
Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất
Bản mã nhận được từ mã Affine:
Bảng dưới đây phân tích tần suất của bản mã gồm 57 ký tự, cho thấy độ dài này đủ để thực hiện phân tích thám mã với hệ Affine Các ký tự có tần suất xuất hiện cao nhất là R (8 lần), D (6 lần), và E, H, K (mỗi ký tự 5 lần), cùng với F, S, V (mỗi ký tự 4 lần).
Trong phỏng đoán ban đầu, chúng ta giả định rằng R đại diện cho ký tự mã của chữ e và D cho ký tự mã của chữ t, vì e và t là hai chữ cái phổ biến nhất Khi biểu diễn bằng số, ta có eK(4) = 17 và eK(19) = 3 Nhớ rằng eK(x) = ax + b, trong đó a và b là các số chưa biết Do đó, chúng ta có hai phương trình tuyến tính với hai ẩn số.
Hệ phương trình cho ra nghiệm duy nhất a = 6 và b = 19 trong Z26, nhưng đây là một khóa không hợp lệ vì UCLN(a,26) = 2 Do đó, giả thuyết ban đầu không đúng Tiếp theo, nếu R là ký tự mã của e và E là mã của t, ta nhận được a nhưng khóa này cũng không hợp lệ Thử nghiệm tiếp theo với R là mã hóa của e và H là mã hóa của t dẫn đến a = 8, cũng là khóa không hợp lệ Cuối cùng, khi giả định R là mã hóa của e và K là mã hóa của t, ta thu được a = 3 và b = 5, đây là khóa hợp lệ.
Chúng ta sẽ tiến hành tính toán hàm giải mã cho khóa K = (3,5) và giải mã bản mã để kiểm tra xem có nhận được xâu tiếng Anh có nghĩa hay không, nhằm xác nhận tính hợp lệ của khóa này Sau khi thực hiện các phép toán, ta có dK (y) = 9y – 19 và kết quả giải mã bản mã đã cho sẽ được trình bày.
Như vậy khoá xác định trên là khoá đúng
2.2 Thám hệ mã thay thế
Sau đây ta phân tích một tình huống phức tạp hơn, đó là thay thế bản mã sau:
Bản mã nhận được từ MTT là:
Phân tích tần suất của bản mã này được cho ở bảng dưới đây:
Tần suất xuất hiện của 26 chữ cái trong bản mã
Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất
Ký tự Z xuất hiện nhiều hơn so với bất kỳ ký tự nào khác trong bản mã, dẫn đến khả năng phỏng đoán rằng dZ(Z) = e Các ký tự còn lại, gồm C, D, F, J, R, M, và Y, đều xuất hiện ít nhất 10 lần Chúng ta hy vọng những ký tự này có thể là mã khóa cho một tập con trong các ký tự t, a, c, o, i, n, s, h, r, nhưng sự khác biệt về tần suất không đủ để đưa ra phỏng đoán chính xác.
Đến thời điểm này, chúng ta cần xem xét các bộ đôi, đặc biệt là những bộ đôi có dạng -Z hoặc Z-, vì chúng ta đã giả định rằng Z sẽ được giải mã thành e Các bộ đôi phổ biến nhất trong dạng này bao gồm DZ và ZW (xuất hiện 4 lần mỗi bộ), NZ và ZU (xuất hiện 3 lần mỗi bộ), cùng với RZ và HZ.
CHỨNG THỰC
Sơ đồ chữ kí ELGAMAL
Mục tiêu : Mô tả được sơ đồ chữ ký Elgamal
Sau đây ta sẽ mô tả sơ đồ chữ kí Elgamal đã từng giới thiệu trong bài báo năm
1985 Bản cả tiến của sơ đồ này đã được Viện Tiêu chuẩn và Công Nghệ Quốc Gia
Mỹ (NIST) đã chấp nhận sử dụng chữ ký số, trong đó sơ đồ Elgamal (E.) được phát triển đặc biệt cho mục đích chữ ký số, khác với sơ đồ RSA, vốn được áp dụng cho cả hệ thống mã khóa công khai và chữ ký số.
Sơ đồ E là một hệ thống không xác định tương tự như mã khoá công khai Elgamal, cho phép tồn tại nhiều chữ ký hợp lệ cho một bức điện nhất định Thuật toán xác minh cần phải có khả năng chấp nhận bất kỳ chữ ký hợp lệ nào trong quá trình xác thực.
Nếu chữ kí được thiết lập đúng khi xác minh sẽ thành công vì : β γ γ δ ≡ α aγ α kγ (mod p) ≡ α x (mod p) là ở đây ta dùng hệ thức : a γ+ k δ ≡ x (mod p-1)
Sơ đồ chữ kí số Elgamal
Cho p là số nguyên tố sao cho bài toán logarit rời rạc trên Zp là khó và giả sử α
Znlà phần tử nguyên thuỷ p = Zp* , a = Zp*× Zp-1 và định nghĩa:
Giá trị p,α ,β là công khai, còn a là mật
Với K = (p, α , a, β ) và một số ngẫu nhiên (mật) k Zp-1 định nghĩa :
Sigk(x,y) =(γ ,δ), trong đó γ = α k mod p và δ =(x-a) k -1 mod (p-1)
Với x,γ Zp và δ Zp-1 , ta định nghĩa :
Chuẩn chữ kí số
Mục tiêu : Trình bày được chuẩn chữ ký số
Chuẩn chữ ký số (DSS) là phiên bản cải tiến của sơ đồ chữ ký Elgamal, được công bố trong Hồ Sơ Liên Bang vào ngày 19/5/1994 và chính thức trở thành tiêu chuẩn vào ngày 1/12/1994, mặc dù đã được đề xuất từ tháng 8/1991 Bài viết sẽ nêu rõ những điểm khác biệt giữa DSS và sơ đồ Elgamal, đồng thời mô tả cách thức thực hiện DSS Trong nhiều trường hợp, thông báo chỉ cần mã hóa và giải mã một lần, điều này khiến DSS trở thành lựa chọn phù hợp cho các hệ thống mật mã an toàn tại thời điểm mã hóa.
Trong thực tế, một bức điện có thể được sử dụng như tài liệu đối chứng, ví dụ như hợp đồng hoặc chúc thư, do đó việc xác minh chữ ký sau nhiều năm là cần thiết Do đó, việc có phương án dự phòng cho sự an toàn của sơ đồ chữ ký là rất quan trọng, đặc biệt khi đối mặt với các hệ thống mã hóa Sơ đồ Elgamal không an toàn hơn bài toán logarithm rời rạc, vì vậy cần sử dụng modulo p lớn Để đảm bảo an toàn, p cần có độ dài tối thiểu 512 bít, và nhiều chuyên gia đồng ý rằng p nên đạt 2048 bít để đảm bảo mức độ an toàn tốt hơn.
Mục tiêu: Củng cố lại kiến thức lý thuyết, hình thành kỹ năng từ việc áp dụng các kiến thức để giải bài tập
1 Chữ ký điện tử DSA:
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
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:
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
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.
MÃ KHỐI VÀ CHUẨN MÃ DỮ LIỆU DES
Giới thiệu chung về DES
Mục tiêu: Trình bày về các chuẩn mã hóa dữ liệu
Chuẩn mã hoá dữ liệu DES, được công bố bởi Văn phòng tiêu chuẩn của Mỹ vào năm 1971, được thiết kế cho các cơ quan chính phủ liên bang Thuật toán này được phát triển bởi Công ty IBM, dựa trên hệ mã hoá LUCIFER của Feistel DES là một thuật toán mã hoá khối, với kích thước khối là 64 bít Dữ liệu đầu vào là một khối 64 bít bản rõ, và sau khi mã hoá, kết quả là một khối bản mã 64 bít Cả quá trình mã hoá và giải mã đều sử dụng cùng một thuật toán và khoá.
Khóa mã có độ dài 64 bít, bao gồm 8 bít chẵn lẻ dùng để kiểm soát lỗi Các bít chẵn lẻ được đặt tại các vị trí 8, 16, 24, , 64, tức là trong mỗi khối 8 bít có 1 bít kiểm soát lỗi Bít này quy định số bít có giá trị “1” trong khối 8 bít theo tính bù chẵn.
Nền tảng của thuật toán DES dựa trên sự kết hợp giữa các kỹ thuật thay thế và hoán vị, thực hiện qua 16 vòng lặp trên khối dữ liệu 64 bit Mỗi vòng lặp áp dụng cùng một kiểu kết hợp, giúp tăng cường tính bảo mật DES sử dụng các phép toán số học và lôgíc đơn giản, điều này giúp thuật toán dễ dàng triển khai vào những năm 1970, khi công nghệ phần cứng còn hạn chế Mặc dù ban đầu phần mềm thực hiện khá thô sơ, nhưng công nghệ đã phát triển, dẫn đến việc sử dụng các chip chuyên dụng để cải thiện hiệu suất của thuật toán.
Tóm lại DES có một số đặc điểm sau:
♦ Xử lý khối vào 64 bít, biến đổi khối vào thành khối ra 64 bít
♦ Mã hoá và giải mã được sử dụng cùng một khoá
♦ DES được thiết kế để chạy trên phần cứng
DES thường được sử dụng để mã hoá các dòng dữ liệu mạng và mã hoá dữ liệu được lưu trữ trên đĩa.
Mô tả thuật toán
Mục tiêu: Mô tả được thuật toán DES
Thuật toán DES thực hiện trên từng khối dữ liệu 64 bít, bắt đầu bằng việc hoán vị khởi đầu Khối dữ liệu được chia thành hai nửa 32 bít, trái và phải Sau đó, 16 vòng lặp giống nhau, gọi là các hàm ƒ, được thực hiện, trong đó dữ liệu kết hợp với khoá Cuối cùng, hai nửa trái và phải được kết hợp lại và thực hiện hoán vị cuối cùng (hoán vị ngược) để hoàn tất thuật toán.
Trong mỗi vòng lặp, các bít của khoá được dịch đi và có 48 bít được chọn ra từ
Khóa 56 bít được mở rộng thành 48 bít thông qua phép hoán vị mở rộng Khối 48 bít này sau đó được kết hợp với khối 48 bít đã thay đổi và hoán vị của khóa bằng toán tử XOR Kết quả của phép XOR được chọn ra 32 bít thông qua thuật toán thay thế và hoán vị Bốn thao tác này tạo nên hàm ƒ, sau đó đầu ra của hàm ƒ được kết hợp với nửa trái bằng toán tử XOR Kết quả của quá trình này trở thành nửa phải mới, trong khi nửa phải cũ trở thành nửa trái mới Quá trình này được lặp lại 16 lần, tạo thành 16 vòng của DES.
Nếu Bi là kết quả của vòng thứ i, thì Li và Ri là hai nửa trái và phải của Bi Ki là khóa 48 bít của vòng thứ i, và hàm ƒ thực hiện các phép thay thế, hoán vị và XOR với khóa.
Hoán vị khởi đầu
Mục tiêu: Trình bày được hoán vị khởi đầu
Hoán vị khởi đầu là quá trình thay đổi vị trí của các bít trong khối dữ liệu vào, như mô tả trong Bảng 1 Các bảng được đọc từ trái qua phải và từ trên xuống dưới Chẳng hạn, hoán vị khởi đầu chuyển bít 1 thành bít 58, bít 2 thành bít 50, và bít 3 thành bít 42.
Khoá chuyển đổi
Mục tiêu: Trình bày được khóa chuyển đổi Đầu tiên, khoá 64 bít được giảm xuống thành một khoá 56 bít bằng cách bỏ qua
8 bít chẵn lẻ Sự loại bỏ được thực hiện theo Bảng sau:
Các bít chẵn lẻ đảm bảo không có lỗi khi nhập khoá Sau khi khoá 56 bít được trích xuất, một khoá 48 bít mới được sinh ra cho mỗi vòng của DES Những khoá này, được gọi là ki, được xác định thông qua quy trình cụ thể.
+ Đầu tiên, khoá 56 bít được chia làm hai phần mỗi phần 28 bít Sau đó, các phần này được dịch trái một hoặc hai bít, phụ thuộc vào vòng đó
Sau khi dịch, 48 bít được chọn từ 56 bít thông qua quá trình hoán vị nén (compression permutation) hay hoán vị lựa chọn (permuted choice), trong đó thứ tự các bít được thay đổi để tạo ra một tập con Quá trình này đảm bảo rằng đầu ra có kích thước tương đương với hoán vị mở rộng Bảng 4 cung cấp định nghĩa chi tiết về hoán vị nén Ví dụ, bít ở vị trí 33 trong khoá dịch được chuyển đến vị trí 35 của đầu ra, trong khi bít ở vị trí 18 bị bỏ qua.
Hoán vị mở rộng
Mục tiêu của bài viết là trình bày về hoán vị mở rộng, trong đó nửa phải của dữ liệu, Ri, được mở rộng từ 32 bít thành 48 bít Quá trình này thay đổi thứ tự các bít bằng cách lặp lại một số bít, do đó được gọi là hoán vị mở rộng Mục đích của việc thực hiện này là tạo ra dữ liệu có kích thước tương đương với khóa để thực hiện thao tác XOR Hoán vị mở rộng, hay còn gọi là hộp E, định nghĩa rằng với mỗi bộ 4 bít của khối dữ liệu vào, bít đầu tiên và bít thứ tư tương ứng với 2 bít của khối dữ liệu ra, trong khi bít thứ hai và bít thứ ba tương ứng với một bít của khối dữ liệu ra Bảng mô tả vị trí các bít trong khối dữ liệu ra dựa trên khối dữ liệu vào cho thấy ví dụ, bít ở vị trí thứ 3 của khối dữ liệu vào được chuyển đến vị trí thứ 4 trong khối dữ liệu ra, trong khi bít ở vị trí 21 được chuyển đến vị trí 30 và 32 trong khối dữ liệu ra.
Hộp thay thế S
Mục tiêu: Giải thích được thế nào là thay thế S
Sau khi nén, khóa sẽ được XOR với khối mở rộng, và kết quả 48 bít sẽ được chuyển sang giai đoạn thay thế Giai đoạn thay thế này sử dụng 8 hộp thay thế (S-boxes), trong đó khối 48 bít được chia thành 8 khối 6 bít Mỗi khối 6 bít sẽ được xử lý trên một hộp S riêng biệt, cụ thể là khối 1 trên hộp S1, khối 2 trên hộp S2, và tiếp tục như vậy cho đến khối 8 trên hộp S8.
Mỗi hộp S bao gồm 4 hàng và 16 cột, với mỗi phần tử là một số 4 bit Để tìm kết quả, sáu bít được đưa vào hộp S sẽ xác định vị trí hàng và cột tương ứng Bảng 6 sẽ được sử dụng để biểu diễn kết quả này.
Những bít vào xác định một phần tử trong hộp S một cách riêng biệt
Hộp có sáu bít được đánh dấu từ b1 đến b6, trong đó bít b1 và b6 kết hợp để tạo thành một số 2 bít, có giá trị từ 0 đến 3, tương ứng với hàng trong bảng Bốn bít còn lại, từ b2 đến b5, kết hợp thành một số 4 bít, nhận giá trị từ 0 đến 15, tương ứng với cột trong bảng.
Ví dụ, giả sử ta đưa dữ liệu vào hộp S thứ 6 (bít 31 tới bít 36 của hàm XOR) là
Bít đầu tiên và bít cuối cùng tạo thành 10, liên quan đến hàng thứ 3 của hộp S thứ 6 Trong khi đó, bốn bít ở giữa kết hợp thành 1001, tương ứng với cột thứ 10 của hộp S thứ.
6 Phần tử hàng 3 cột 9 của hộp S thứ 6 là 0 Giá trị 0000 được thay thế cho 110010
Kết quả của quá trình thay thế là 8 khối 4 bít, được kết hợp thành một khối 32 bít Khối 32 bít này sau đó được chuyển sang bước tiếp theo, đó là hộp hoán vị P (P-box permutation).
Hộp hoán vị P
Mục tiêu: Giải thích được thế nào là hoán vị S
Khối dữ liệu 32 bít từ hộp thay thế S được hoán vị trong hộp P, trong đó mỗi bít dữ liệu được ánh xạ đến một vị trí cụ thể mà không bị sử dụng lại hoặc bỏ qua Quá trình này được gọi là hoán vị trực tiếp (straight permutation), và bảng hoán vị cung cấp thông tin về vị trí của từng bít cần chuyển.
4 chuyển tới bít 21, trong khi bít 32 chuyển tới bít 4
Kết quả từ hộp hoá vị P được thực hiện phép XOR với nửa trái của khối 64 bít khởi đầu Tiếp theo, nửa trái và nửa phải được hoán đổi cho nhau, sau đó quy trình sẽ tiếp tục với một vòng mới.
Hoán vị cuối cùng
Mục tiêu: Thực hiện được hoán vị cuối cùng
Hoán vị cuối cùng là nghịch đảo của hoán vị khởi đầu, được thể hiện trong bảng dưới đây Cần lưu ý rằng nửa trái và nửa phải không được tráo đổi sau vòng cuối cùng của DES; thay vào đó, khối nối R16L16 được sử dụng như khối dữ liệu đầu ra của hoán vị cuối cùng Việc tráo đổi các nửa và dịch vòng hoán vị sẽ cho kết quả tương tự như trước, cho thấy thuật toán có thể được áp dụng cho cả mã hóa và giải mã.
Bảng hoán vị cuối cùng:
Giải mã DES
Mục tiêu: Giải mã được DES
Sau khi thực hiện các thao tác như thay đổi, hoán vị, XOR và dịch vòng, nhiều người có thể nghĩ rằng thuật toán giải mã là phức tạp và khác biệt hoàn toàn so với thuật toán mã hóa Tuy nhiên, thực tế cho thấy rằng cả hai quá trình này đều sử dụng cùng một thuật toán, mang lại tính nhất quán và hiệu quả trong việc mã hóa và giải mã thông tin.
Trong thuật toán DES, chức năng mã hóa và giải mã sử dụng cùng một khối, nhưng thứ tự các khóa khác nhau Cụ thể, nếu các khóa mã hóa là k1, k2, k3, , k16, thì các khóa giải mã sẽ là k16, k15, , k1 Quy trình tổng hợp khóa cho mỗi vòng cũng tương tự, chỉ khác ở chỗ các khóa được dịch sang phải và số vị trí bit dịch được lấy theo chiều ngược lại.
PHÁT HIỆN XÂM NHẬP
Khái niệm
Một trong những vấn đề quan trọng nhất đối với hệ thống mạng là ngăn chặn truy cập trái phép vào mạng máy tính lớn hoặc cục bộ Để thực hiện điều này, chúng ta có thể phân loại các kẻ xâm nhập thành nhiều loại khác nhau.
- 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
- Từ Wily Hacker” trong năm 1986/1987
- Đế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
Đội ứng cứu mang lại cảm giác an toàn, nhưng cần nguồn lực bổ sung để phát triển và duy trì hoạt động hiệu quả Đồng thời, kẻ xâm nhập có thể lợi dụng các hệ thống yếu kém để thực hiện các cuộc tấn công.
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
- Tìm mục tiêu và thu thập thông tin
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.
Đoán mật khẩu
Đoán mật khẩu là một trong những phương thức tấn công phổ biến nhất, trong đó kẻ tấn công đã biết tên người dùng từ các trang web hoặc email và cố gắng đoán mật khẩu của họ.
- Mặc định, mật khẩu ngắn, tìm kiếm các từ chung
- 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)
- Tìm kiếm tổng thể mọi khả năng của mật khẩu
Kẻ xâm nhập thường kiểm tra đăng nhập bằng cách sử dụng tệp mật khẩu bị đánh cắp Thành công của việc đoán mật khẩu phụ thuộc vào sự lựa chọn của người dùng, và nghiên cứu cho thấy nhiều người thường chọn mật khẩu một cách thiếu cẩn thận.
Tấn công khác bao gồm nắm bắt mật khẩu
- Theo dõi qua vai khi nhập password
- Sử dụng chương trình ngựa thành Toroa để thu thập
- Theo dõi login mạng không an toàn, chẳng hạn Telnet, FTP, Web, email
- 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,…)
- 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.
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
- Chia khối để phát hiện nhanh
- 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
- Nhưng sẽ có sự khác biệt nhỏ giữa họ a 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
- Vượt qua ngưỡng thống kê nào đó
- Định danh thâm nhập b 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
- Một phần của hệ điều hành đa người sử dụng
- Sẵn sàng để sử dụng
- 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
- Được tạo chuyên dùng để thu thập một số thông tin mong muốn
- Trả giá chi phí bổ sung trong hệ thống c Phát hiện thống kê bất thường
- Đếm sự xuất hiện của sự kiện đặc biệt theo thời gian
- Nếu vượt quá giá trị nào đó thì cho là đã có xâm nhập
- Nếu chỉ dùng nó thì đây là phát hiện thô không hiệu quả
- Đặc trưng hành vi quá khứ của người sử dụng
- Phát hiện hệ quả quan trọng từ đó
Phân tích bản ghi là phương pháp thống kê quan trọng, giúp thu thập và mô tả nhiều tham số khác nhau Qua việc kiểm tra các bản ghi, chúng ta có thể nhận được các số liệu đo lường theo thời gian, từ đó hỗ trợ trong việc đưa ra các quyết định chính xác.
- 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
Kỳ vọng, phương sai và biến nhiều chiều là những khái niệm quan trọng trong thống kê, trong khi quá trình Markov và chuỗi thời gian giúp phân tích các biến động theo thời gian Một trong những ưu điểm nổi bật của các phương pháp này là không yêu cầu kiến thức trước đó, cho phép phát hiện xâm nhập dựa trên các quy tắc một cách hiệu quả.
Quan sát các sự kiện trong hệ thống và áp dụng các quy tắc để xác định tính khả nghi của hoạt động Việc phát hiện những bất thường dựa trên các quy tắc đã được thiết lập là rất quan trọng.
- 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
- 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
- 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
- Sử dụng công nghệ hệ chuyên gia
- 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ờ
- So sánh các bản ghi kiểm tra hoặc các trạng thái theo qui tắc
- 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
- 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ệ
- 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
- Điều đó rất khó thực hiện
- 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
- Truyền thống thường tập trung hệ thống đơn lẻ
- Nhưng thông thường có các hệ thống máy tính
- Bảo vệ hiệu quả cần làm việc cùng nhau để phát hiện xâm nhập
+ 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
- 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
- Được cấp đầy đủ các thông tin bịa đặt
- Được trang bị để thu thập chi tiết thông tin về hoạt động của kẻ tấn công
- Hệ thống mạng đơn và lặp
Quản trị mật khẩu
- Là bảo vệ tuyến đầu chống kẻ xâm nhập
- 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ọ
- 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
- Cần phải bảo vệ file passwords trong hệ thống
Tìm hiểu về mật khẩu
- Purdue 1992 – có nhiều mật khẩu ngắn
- Klein 1990 – có nhiều mật khẩu đoán được
- Kết luận là người sử dụng thường chọn các mật khẩu không tốt
- 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
- Cần có chính sách và giáo dục người sử dụng
- Giáo dục tầm quan trọng của mật khẩu tốt
- Cho định hướng mật khẩu tốt
+ Đò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
- Nhưng nên chọn sao cho nhiều người không để ý
Tạo mật khẩu – máy tính tự sinh
- Cho máy tính tự tạo mật khẩu
- 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)
- Ngay cả phát âm được cũng không nhớ
- Có câu chuyện về việc chấp nhận của người sử dụng tồi
- 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
- Cách tiếp cận hưá hẹn nhất để có thể cải thiện an toàn mật khẩu
- Cho phép người sử dụng chọn trước mật khẩu của mình
- 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
Mục tiêu: Trình bày được phần mềm có hại, nguy hiểm từ phần mềm có hại và cách phòng, chống phần mềm có hại
Các kiểu phần mềm có hại khác ngoài Virus
Virus máy tính là một loại phần mềm độc hại đã được công bố rộng rãi, gây ra những tác động tiêu cực mà mọi người đều nhận thức được Những ảnh hưởng của virus này đã được nêu rõ trong các báo cáo, tác phẩm viễn tưởng và phim ảnh, thu hút sự chú ý của công chúng hơn là sự tán thưởng Do đó, việc phòng chống virus máy tính trở thành một mối quan tâm lớn.
Cửa sau hoặc cửa sập
Điểm vào chương trình bí mật cho phép người dùng truy cập mà không cần tuân thủ các thủ tục an toàn thông thường, tạo ra mối đe dọa lớn cho sản phẩm Kỹ thuật này có thể được sử dụng bởi cả nhà phát triển và kẻ tấn công, khiến việc ngăn chặn trở nên khó khăn trong hệ điều hành Để bảo vệ, cần phải phát triển và cập nhật phần mềm thường xuyên.
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
- Có mặt hoặc vắng mặt một số file
- Ngày tháng/thời gian cụ thể
- 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
- Biến đổi/xoá file/đĩa, làm dừng máy,…
Ngựa thành Tơ roa
Chương trình có tác động phụ ẩn giấu thường thu hút người dùng, như trò chơi hoặc phần mềm nâng cấp Khi thực hiện các nhiệm vụ bổ sung, chúng cho phép kẻ tấn công gián tiếp truy cập vào hệ thống mà không cần quyền trực tiếp Thường thì, chúng sử dụng virus, sâu (worm), cài đặt cửa sau hoặc đơn giản là phá hoại dữ liệu.
Zombie
Chương trình bí mật này cho phép điều khiển máy tính của mạng khác để thực hiện các cuộc tấn công gián tiếp, thường được sử dụng để khởi động các cuộc tấn công từ chối dịch vụ phân tán (DDoS) Nó khai thác các lỗ hổng trong hệ thống để đạt được mục tiêu tấn công.
Virus
Mục tiêu: Nhận biết và phân biệt các kiểu virus máy tính với các loại phần mềm có hại khác, cách phòng và diệt vi rút
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
- Mang theo code để tạo các bản sao của chính nó
- Và cũng như mọi code nó cũng thực hiện nhiệm vụ ngầm nào đó
Các giai đoạn của virus
- Nằm im - chờ sự kiện kích hoạt
- Lan truyền – lặp sinh ra chương trình/đĩa
- Kích hoạt - bởi sự kiện để thực hiện bộ tải
- 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;
The program begins by executing a subroutine called "infect-executable," which continuously selects a random executable file and checks if its first line matches the code "1234567." If it does, the process repeats; otherwise, it prepends a "V" to the file Following this, the "do-damage" subroutine is invoked to carry out a specified damage action if a certain condition is met, verified by the "trigger-pulled" subroutine The main program orchestrates these actions, first executing the infection routine, and then, if the trigger condition is satisfied, it proceeds to execute the damage routine before moving on to the next step.
Có thể phân loại dựa trên kiểu tấn công
- Virus cư trú ở bộ nhớ
Mã macro có thể đính kèm file dữ liệu và được sử dụng bởi các chương trình như Word và Excel thông qua lệnh tự động Đây là nguồn gốc chính của sự lây lan virus, vì 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 giữa tính “dễ dàng sử dụng” và “an toàn” Mặc dù đã có sự cải thiện về an toàn trong Word, nhưng vẫn không đủ để vượt qua những mối đe dọa từ virus.
3.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.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
- Dẫn đến việc tạo ra các đội ứng cứu khẩn cấp máy tính CERT
- Dùng đặc quyền phân tán hoặc khai thác các điểm yếu hệ thống
- Đượ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:
+ 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
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ư
- Phá mật khẩu đơn giản trong file mật khẩu cục bộ
- 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ó b 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:
+ Thử IP ngẫu nhiên cho hệ thống chạy IIS
+ Có kích hoạt thời gian cho tấn công từ chối dịch vụ
+ 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 c Công nghệ sâu
Công nghệ sâu sở hữu nhiều đặc tính nổi bật như khả năng tấn công đa nền tảng, khai thác nhiều chiều, và lan truyền nhanh chóng Nó có thể tạo ra nhiều kiểu tác động khác nhau, đồng thời biến hóa và cơ động linh hoạt, đặc biệt là trong việc khai thác các lỗ hổng zero day.
3.4 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:
- Phát hiện virus nhiễm trong hệ thống
- Định danh loại virus nhiễm
- Loại bỏ khôi phục hệ thống về trạng thái sạch
Phần mềm thuộc thế hệ đầu tiên
- Quét sử dụng chữ ký của virus để định danh
- 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
- Sử dụng các qui tắc trực quan để phát hiện nhiễm virus
- 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
- Chương trình thường trú trong bộ nhớ định danh virus theo hành động
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
3.6 Kỹ thuật chống Virus nâng cao
- 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)
- Hành động đa muc tiêu và chống Virus
- 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ỏ
3.7 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
Truy cập vào file, định dạng đĩa, các chế độ thực hiện, thay đổi tham số hệ thống và truy cập mạng có thể dẫn đến những hành động có khả năng gây hại.
- 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) gây ra mối đe dọa nghiêm trọng, khiến hệ thống trở nên không khả dụng và bị ngập bởi lượng dữ liệu không cần thiết.
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
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 để phát hiện lỗ hổng hệ thống bao gồm việc sử dụng các yếu tố ngẫu nhiên, lập danh sách va chạm, và nghiên cứu cấu trúc topo của 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
Tràn bộ đệm là một trong những phương thức tấn công mạng phổ biến, bắt đầu từ năm 1988 với sự xuất hiện của các mã độc như Morris, Code Red, Slammer, và Sasser Mặc dù đã có nhiều kỹ thuật phòng chống được biết đến, nhưng vấn đề này vẫn cần được chú ý do sự lan rộng của các lỗ hổng bảo mật, đặc biệt là từ các mã độc di truyền Thêm vào đó, việc lập trình không cẩn thận vẫn tiếp tục là nguyên nhân chính dẫn đến những rủi ro bảo mật này.
Tràn bộ nhớ xảy ra khi lập trình viên cho phép lưu trữ quá nhiều dữ liệu trong bộ đệm có kích thước cố định, dẫn đến việc ghi đè lên các vị trí nhớ lân cận Hiện tượng này có thể xảy ra trên ngăn xếp, đống hoặc dữ liệu tổng thể, gây hỏng dữ liệu của chương trình, truyền điều khiển không mong muốn, và vi phạm truy cập bộ nhớ Điều này có thể tạo cơ hội cho kẻ tấn công thực hiện mã độc hại.
Chương trình C trên có ba biến lưu trữ trong vùng nhớ liền kề Hàm con copy dữ liệu vào biến str1 từ Start và sau đó đọc dữ liệu đầu vào vào str2 bằng hàm gets Việc so sánh dữ liệu đầu vào với xâu Start cho kết quả valid true nếu thành công Tuy nhiên, hàm gets không kiểm tra kích thước dữ liệu, dẫn đến việc nếu đầu vào vượt quá 7 ký tự, bộ nhớ sẽ bị ghi đè lên biến kế cận, cụ thể là str1 Ví dụ, nếu đầu vào là "EVILINPUTVALUE", str1 sẽ bị ghi đè với các ký tự "TVALUE", khiến str2 không chỉ sử dụng 8 ký tự của nó mà còn thêm 7 ký tự từ str1 Từ cấu trúc này, kẻ tấn công có khả năng điều chỉnh để giá trị của str1 bằng với str2.
“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
3.9 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
Lịch sử ngôn ngữ lập trình cho thấy rằng ở cấp độ ngôn ngữ máy, dữ liệu được biểu diễn dưới dạng mảng các bytes và phụ thuộc vào các chỉ lệnh Ngôn ngữ lập trình bậc cao hiện đại có định nghĩa kiểu dữ liệu rõ ràng và các phép toán chính xác, giúp loại bỏ các lỗ hổng như tràn bộ đệm và giới hạn sử dụng.
Ngôn ngữ C và các 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 vào bộ nhớ, dẫn đến lỗ hổng tràn bộ đệm Việc sử dụng rộng rãi các đoạn mã không an toàn đã tạo ra những lỗ hổng này Để hiểu rõ hơn về nguyên nhân tràn bộ nhớ mà không thể khắc phục, ta cần xem xét cơ chế quản lý trạng thái cục bộ khi gọi hàm Khi một hàm gọi hàm khác, địa chỉ trả về cần được lưu trữ để có thể quay lại sau khi hàm được gọi kết thúc Ngoài ra, cần có không gian để lưu các tham số truyền vào và giá trị thanh ghi của hàm gọi, tất cả dữ liệu này thường được lưu trữ trong khung ngăn xếp (stack frame) Mỗi lần gọi hàm sẽ tạo ra một khung ngăn xếp mới.
Tràn bộ đệm ngăn xếp xảy ra khi bộ đệm trên ngăn xếp bị tràn, được khai thác bởi sâu Morris trong bài báo “Smashing the Stack” Hiện tượng này liên quan đến việc biến cục bộ nằm dưới con trỏ khung lưu trữ và địa chỉ trả về, dẫn đến khả năng cao viết đè các mục điều khiển chính Kẻ tấn công có thể viết đè địa chỉ trả về bằng địa chỉ của đoạn code độc hại, có thể là địa chỉ của chương trình, thư viện hệ thống hoặc bộ đệm tải vào.
Cấu tạo vùng nhớ bao gồm không gian cho chương trình đang chạy, dữ liệu tổng thể, đống và ngăn xếp Khi một chương trình được thực thi, hệ điều hành tạo ra một tiến trình với không gian ảo riêng, chứa nội dung chương trình, bảng cấp bộ nhớ và mã nguồn ở đáy không gian nhớ Không gian cho đống tăng dần lên, trong khi không gian cho ngăn xếp giảm dần xuống Để minh họa hiện tượng tràn bộ đệm ngăn xếp, ta xem xét chương trình C với biến cục bộ duy nhất là bộ đệm inp Hàm Hello yêu cầu người dùng nhập tên thông qua hàm không an toàn gets(), và kết quả được hiển thị bằng hàm printf() Nếu dữ liệu nhập vào nhỏ, chương trình sẽ hoạt động bình thường Tuy nhiên, nếu dữ liệu lớn, nó có thể vượt quá bộ đệm, ghi đè lên con trỏ khung lưu trữ và dẫn đến địa chỉ sai, gây ra lỗi khi hàm trả về.
Bài tập
Mục tiêu: Củng cố kiến thức, áp dụng kiến thức để hình thành kỹ năng
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 Hãy thiết lập tường lửa cho máy tính cá nhân bằng phần mềm
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.