Với khả năng mã hóa mạnh mẽ, AES không chỉ giúp bảo vệ dữ liệukhỏi các cuộc tấn công mà còn đảm bảo tính toàn vẹn và tính khả dụng của thông tin.Tập trung vào việc phân tích và đánh giá
QUẢN TRỊ NGUY CƠ MẤT AN TOÀN THÔNG TIN
GIỚI THIỆU VỀ AN TOÀN BẢO MẬT THÔNG TIN
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, hầu hết thông tin của tổ chức và cá nhân đều được lưu trữ trên máy tính, dẫn đến nhu cầu chia sẻ thông tin qua mạng ngày càng cao Tuy nhiên, việc mất mát hay rò rỉ thông tin có thể gây ảnh hưởng nghiêm trọng đến tài nguyên, tài chính và danh tiếng của tổ chức Các phương thức tấn công mạng ngày càng tinh vi có thể dẫn đến mất mát thông tin hoặc thậm chí làm sụp đổ hệ thống thông tin Do đó, đảm bảo an toàn thông tin trở thành nhiệm vụ quan trọng và đầy thách thức cho các hệ thống thông tin hiện nay.
NỘI DUNG
1.1: Tổng quan về an toàn thông tin a Khái niệm an toàn thông tin
An toàn thông tin là một lĩnh vực quan trọng, bao gồm các hoạt động bảo vệ tài sản thông tin khỏi truy cập trái phép Nó bao gồm cả sản phẩm và quy trình nhằm ngăn chặn việc hiệu chỉnh hoặc xóa thông tin.
An toàn thông tin liên quan đến hai khía cạnh đó là an toàn về mặt vật lý và an toàn về mặt kỹ thuật.
- Mục tiêu cơ bản của an toàn thông tin
+ Đảm bảo tính bảo mật
+ Đảm bảo tính toàn vẹn
+ Đảm bảo tính xác thực
+ Đảm bảo tính sẵn sàng b Sự cần thiết của an toàn thông tin
Hệ thống thông tin đóng vai trò quan trọng trong các tổ chức, cung cấp khả năng xử lý dữ liệu và là tài sản quý giá Tuy nhiên, chúng cũng tiềm ẩn nhiều điểm yếu và rủi ro Sự phát triển nhanh chóng của công nghệ máy tính dẫn đến việc phát hành các phiên bản phần mềm liên tục với nhiều tính năng mới, nhưng thường không được kiểm tra kỹ lưỡng, tạo ra nhiều lỗ hổng bảo mật dễ bị khai thác Hơn nữa, sự phát triển của mạng lưới và tính phân tán của hệ thống thông tin đã tạo điều kiện thuận lợi cho người dùng truy cập dữ liệu, đồng thời cũng mở rộng mục tiêu tấn công cho tin tặc Do đó, việc đảm bảo an toàn thông tin trở nên cực kỳ cần thiết.
* Bảo vệ tài nguyên của hệ thống
Các hệ thống máy tính chứa đựng nhiều thông tin và tài nguyên quan trọng cần được bảo vệ, bao gồm dữ liệu kế toán, thông tin nguồn nhân lực, quản lý, bán hàng, nghiên cứu và sáng chế Đối với nhiều tổ chức, dữ liệu này thường được lưu trữ trong cơ sở dữ liệu và quản lý bởi các phần mềm Các cuộc tấn công vào hệ thống có thể đến từ đối thủ cạnh tranh hoặc cá nhân, do đó, việc bảo đảm an toàn cho thông tin là rất phức tạp và nhạy cảm Các mối đe dọa có thể xuất phát từ cả bên trong lẫn bên ngoài tổ chức, và hậu quả của những cuộc tấn công thành công có thể rất nghiêm trọng.
* Bảo đảm tính riêng tư
Các hệ thống máy tính lưu trữ nhiều thông tin cá nhân quan trọng cần được bảo mật, bao gồm số thẻ bảo hiểm xã hội, số thẻ ngân hàng, số thẻ tín dụng và thông tin về gia đình.
Tính riêng tư là yếu tố quan trọng mà ngân hàng, công ty tín dụng, và các công ty đầu tư cần đảm bảo khi gửi tài liệu về cách sử dụng và chia sẻ thông tin khách hàng Những tổ chức này phải tuân thủ các quy định bảo mật để bảo vệ thông tin cá nhân, và việc không tuân thủ có thể dẫn đến hậu quả nghiêm trọng nếu kẻ giả mạo truy cập được dữ liệu cá nhân.
1.2: Các nguy cơ mất an toàn thông tin
* Nguy cơ mất an toàn thông tin về khía cạnh vật lý :
Nguy cơ mất an toàn thông tin về khía cạnh vật lý bao gồm các yếu tố như mất điện, nhiệt độ và độ ẩm không ổn định, hỏa hoạn, thiên tai, hư hỏng thiết bị phần cứng, cùng với sự đe dọa từ nhân viên xấu bên trong và kẻ trộm bên ngoài.
* Nguy cơ bị mất, hỏng, sửa đổi nội dung thông tin:
Người dùng có thể vô tình tiết lộ mật khẩu hoặc không tuân thủ quy trình bảo mật, tạo điều kiện cho kẻ xấu lợi dụng để đánh cắp hoặc làm hỏng thông tin Những kẻ xấu này có thể sử dụng các công cụ và kỹ thuật để thay đổi nội dung thông tin, dẫn đến việc sai lệch thông tin của chủ sở hữu hợp pháp.
* Nguy cơ bị tấn công bởi các phần mềm độc hại :
Các phần mềm độc hại sử dụng nhiều phương pháp tấn công để xâm nhập vào hệ thống với các mục đích khác nhau, bao gồm virus, sâu máy tính (Worm) và phần mềm gián điệp (Spyware).
Virus máy tính là chương trình có khả năng tự sao chép và lây lan mà người dùng không hay biết, thường gây ra sự cố thực thi, sai lệch hoặc hủy hoại dữ liệu Chúng có kích thước nhỏ, lây lan từ chương trình này sang chương trình khác và từ đĩa này sang đĩa khác, dẫn đến việc lây lan từ máy tính này sang máy tính khác Mặc dù đa số virus mang tính chất phá hoại, tiêu diệt và phá hủy chương trình cùng dữ liệu, nhưng cũng tồn tại một số virus vô hại được tạo ra chỉ với mục đích giải trí.
Virus máy tính hiện nay có khả năng lây lan qua mạng, khác với virus truyền thống chỉ lây nhiễm trong một máy tính và cần phải được chuyển giao qua thiết bị lưu trữ.
Phần mềm gián điệp, khác với virus, không tự lây lan mà thường được cài đặt thông qua các phương thức lừa đảo, như trang web giả mạo hoặc do người khác gửi Sau khi xâm nhập vào máy tính của nạn nhân, chúng sẽ thu thập thông tin và gửi ra bên ngoài, đồng thời có thể hiển thị quảng cáo không mong muốn.
* Nguy cơ xâm nhập từ lỗ hổng bảo mật :
Lỗ hổng bảo mật thường xuất phát từ lỗi lập trình hoặc sự cố phần mềm, có thể nằm trong các thành phần của hệ điều hành hoặc trong các chương trình được cài đặt trên máy tính.
Hiện nay, số lượng lỗ hổng bảo mật trong hệ điều hành, web server và phần mềm ngày càng gia tăng Các nhà sản xuất thường xuyên cập nhật và phát hành phiên bản mới nhằm khắc phục các lỗ hổng của những phiên bản trước đó.
* Nguy cơ xâm nhập do bị tấn công bằng cách phá mật khẩu
Quá trình truy cập vào hệ điều hành được bảo vệ bằng tài khoản người dùng và mật khẩu Tuy nhiên, người dùng có thể làm giảm hiệu quả bảo mật bằng cách chia sẻ mật khẩu, ghi lại và để công khai, hoặc để mật khẩu ở nơi dễ tìm trong khu vực làm việc.
Các kẻ tấn công sử dụng nhiều phương pháp phức tạp để truy cập vào mật khẩu, và họ hiểu rằng luôn tồn tại những tài khoản người dùng có quyền quản trị cao.
MÃ HÓA AES
GIỚI THIỆU VỀ MÃ HÓA AES
Tiêu chuẩn mã hóa nâng cao (AES) là phương pháp mã hóa khối được chính phủ Hoa Kỳ áp dụng để bảo vệ dữ liệu và thông tin cho các tổ chức, doanh nghiệp Với khả năng bảo mật vượt trội, AES trở thành lựa chọn hàng đầu cho việc bảo vệ thông tin nhạy cảm của người dùng.
AES thực hiện các tác vụ mã hóa dữ liệu nhạy cảm trên cả phần cứng và phần mềm, được áp dụng trên nhiều thiết bị Sự hiện diện của AES không chỉ bảo vệ máy tính của chính phủ mà còn tăng cường an ninh mạng, tạo ra một rào chắn vững chắc để bảo vệ thông tin quan trọng.
Năm 1997, Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) lần đầu tiên công bố AES, một giải pháp thay thế cho Tiêu chuẩn mã hóa dữ liệu DES đã xuất hiện những lỗ hổng nghiêm trọng vào thời điểm đó.
NIST khẳng định AES là giải pháp tối ưu để bảo vệ thông tin nhạy cảm của chính phủ trong thế kỷ XXI Đặc biệt, AES vượt trội so với các tiêu chuẩn khác nhờ khả năng hoạt động hiệu quả trong môi trường hạn chế, như thẻ thông minh.
1.1 AES hoạt động như thế nào?
AES là một tiêu chuẩn mã hóa gồm ba phiên bản: AES-128, AES-192 và AES-256, tương ứng với độ dài khóa 128 bit, 192 bit và 256 bit Mỗi phiên bản có số vòng lặp khác nhau, với AES-128 sử dụng 10 vòng, đảm bảo tính bảo mật và hiệu quả trong việc mã hóa dữ liệu.
Thuật toán mã hóa sử dụng 128 bit với 10 vòng, 192 bit với 12 vòng và 256 bit với 14 vòng Mỗi vòng thực hiện ba bước: thay thế, biến đổi và hòa trộn khối văn bản thuần túy đầu vào, nhằm chuyển đổi nó thành văn bản đã mã hóa.
Thông tin được phân loại bởi chính phủ thành ba cấp độ: bảo mật, bí mật và tối mật Các độ dài của key 128, 192 và 256 bit được áp dụng cho cấp độ bảo mật và bí mật Đối với thông tin tối mật, cần sử dụng key 192 hoặc 256 bit để đảm bảo an toàn tuyệt đối Mật mã sử dụng một key riêng tư để mã hóa và giải mã dữ liệu, và cả người gửi lẫn người nhận đều phải biết và sử dụng key này.
1.2 Các tiêu chí cần có ở AES
NIST yêu cầu AES sử dụng phương pháp mã hóa khối với độ dài key 128, 192 và 256 bit để mã hóa và giải mã dữ liệu Bên cạnh đó, AES cần đáp ứng các tiêu chí nghiêm ngặt khác.
Bảo vệ là tính năng quan trọng hàng đầu mà AES cần sở hữu để vượt trội hơn các đối thủ khác, với khả năng chống lại các cuộc tấn công mạnh mẽ và quy mô lớn.
- Chi phí: AES mở ra nhiều cơ hội cho người dùng bằng cách phát hành trên toàn cầu và miễn phí bản quyền.
Khả năng thực hiện của AES được đánh giá cao nhờ vào ba yếu tố quan trọng: linh hoạt, phù hợp và đơn giản, giúp đáp ứng đầy đủ nhu cầu của người dùng.
Vào tháng 8 năm 1999, NIST đã chọn năm thuật toán để phân tích và tìm ra thuật toán AES hoàn hảo, bao gồm MARS, RC6, Rijndael, Serpent và Twofish Tất cả các thuật toán này đã được thử nghiệm trong ANSI và các ngôn ngữ lập trình như Java và C Chúng được so sánh dựa trên các yếu tố như tốc độ mã hóa, độ tin cậy, thời gian thiết lập khóa và khả năng chống lại các cuộc tấn công.
Vào tháng 10 năm 2000, sau quá trình làm việc nghiêm túc, cộng đồng mật mã toàn cầu đã chọn thuật toán Rijndael làm đề xuất cho AES Đến tháng 12 năm 2001, thuật toán này được Bộ trưởng Thương mại Hoa Kỳ chấp nhận và chính thức có hiệu lực như một tiêu chuẩn của chính phủ liên bang vào năm 2002.
Tháng 6 năm 2004, AES được chính phủ Mỹ thông báo với công chúng và được ứng dụng để bảo vệ thông tin đã phân loại Kể từ đó AES phủ sóng ở nhiều lĩnh vực và nó được NSA (cơ quan an ninh Quốc gia Hoa Kỳ) chọn để bảo vệ hệ thống an ninh cho chính phủ và đất nước Có thể khẳng định khi AES được chính phủ Hoa Kỳ sử dụng thành công đã tạo được tiếng vang rất lớn Nó nhanh chóng được các tổ chức tư nhân săn đón để tạo “bức tường lửa” bảo vệ những dữ liệu mật.
1.3 Sự khác biệt giữa AES-128 và AES-256 là gì?
Các chuyên gia nhất trí rằng việc sử dụng mã hóa AES giúp bảo vệ thông tin an toàn trước các cuộc tấn công mạnh mẽ Để đảm bảo tính bảo mật tối ưu, kích thước khóa sử dụng trong mã hóa AES cần phải đủ lớn.
Mã hóa 256 bit mạnh mẽ hơn nhiều so với mã hóa 128 bit, giúp bảo vệ dữ liệu hiệu quả trước các cuộc tấn công brute-force Hiện tại, việc phá vỡ thuật toán AES-256 gần như là điều không tưởng, khiến nó trở thành giải pháp lý tưởng cho các tổ chức trong việc bảo mật thông tin.
NGUYÊN LÝ HOẠT ĐỘNG CỦA MÃ HÓA AES
2.1: Cấu trúc khối và chiều dài khóa
AES hoạt động trên các khối dữ liệu có kích thước 128 bit (16 byte).
AES hỗ trợ ba chiều dài khóa khác nhau: 128 bit, 192 bit và 256 bit Chiều dài khóa quyết định số vòng mã hóa (rounds) mà thuật toán sẽ thực hiện:
AES là một phương pháp mã hóa sử dụng khóa bí mật để mã hóa và giải mã dữ liệu, từ đó tạo ra các khóa vòng cho từng giai đoạn mã hóa.
Các vòng mã hóa bao gồm nhiều bước, bao gồm:
AddRoundKey: Kết hợp dữ liệu với khóa vòng hiện tại bằng phép XOR.
SubBytes: Thay thế từng byte của khối dữ liệu bằng một byte khác từ một bảng tra cứu gọi là S-Box, giúp tạo ra tính phi tuyến tính.
ShiftRows: Dịch các hàng của khối dữ liệu, làm cho cấu trúc dữ liệu trở nên phức tạp hơn.
MixColumns: Kết hợp các byte trong mỗi cột của khối dữ liệu, giúp tăng cường tính bảo mật.
Thuật toán giải mã khá giống với thuật toán mã hóa về mặt cấu trúc nhưng 4 hàm sử dụng là 4 hàm ngược của quá trình mã hóa.
Trong quá trình mã hóa, dữ liệu đầu vào (ciphertext) được chia thành các khối 128 bit (16 byte) Nếu dữ liệu không đạt đủ kích thước 128 bit, nó sẽ được bổ sung (padding) để đảm bảo kích thước phù hợp.
Khóa bí mật được sử dụng để tạo ra các khóa vòng cho quá trình giải mã, và các khóa vòng này được hình thành từ khóa gốc thông qua quá trình mở rộng khóa.
Bước đầu tiên trong giải mã là thực hiện phép XOR giữa khối ciphertext và khóa vòng cuối cùng, tương ứng với bước AddRoundKey trong mã hóa, nhằm khôi phục một phần dữ liệu ban đầu.
Giải mã AES thực hiện số vòng giống như mã hóa, nhưng các bước diễn ra theo thứ tự ngược lại Mỗi vòng giải mã bao gồm các bước cụ thể để khôi phục dữ liệu ban đầu.
Trong giai đoạn này, các hàng của khối dữ liệu được dịch chuyển ngược lại so với quá trình mã hóa, nhằm khôi phục cấu trúc ban đầu của dữ liệu.
Trong quá trình mã hóa, bước SubBytes được thay thế bằng việc sử dụng bảng tra cứu ngược, gọi là Inverse S-Box Bảng này chứa các giá trị ngược lại, giúp khôi phục các byte ban đầu một cách hiệu quả.
Bước InvMixColumns trong quá trình giải mã là rất quan trọng, vì nó phục hồi các byte đã bị trộn lẫn trong mã hóa Trong khi bước MixColumns kết hợp các byte trong mỗi cột của khối dữ liệu, InvMixColumns thực hiện phép toán ngược lại, giúp tách rời các byte để khôi phục lại dữ liệu gốc.
Các bước InvShiftRows, InvSubBytes và InvMixColumns sẽ được lặp lại cho số vòng tương ứng với chiều dài khóa, cụ thể là 10, 12 hoặc 14 vòng, cho đến khi hoàn tất tất cả các vòng.
Sau khi hoàn tất tất cả các vòng mã hóa, bước cuối cùng là thực hiện phép XOR giữa khối dữ liệu và khóa vòng đầu tiên Quy trình này giúp khôi phục dữ liệu gốc từ khối đã được mã hóa.
THỰC HÀNH
Mã hóa và giải mã dữ liệu bằng AES với mã khóa đối xứng
Sử dụng AES với khóa đối xứng là phương pháp hiệu quả để mã hóa thông tin Đoạn mã dưới đây minh họa cách sử dụng AES để mã hóa dữ liệu đã nhập, đồng thời xuất ra kết quả bao gồm cả phần mã hóa và giải mã.
1 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
2 from cryptography.hazmat.backends import default_backend
3 from cryptography.hazmat.primitives import padding
9 def encrypt(plain_text, key):
11 cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backendault_backend())
14 padder = padding.PKCS7(algorithms.AES.block_size).padder()
15 padded_data = padder.update(plain_text.encode()) + padder.finalize()
16 encrypted = encryptor.update(padded_data) + encryptor.finalize()
17 return base64.b64encode(iv + encrypted).decode('utf-8')
19 def decrypt(encrypted_text, key):
20 encrypted_data = base64.b64decode(encrypted_text.encode('utf-8'))
23 cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backendault_backend())
25 decrypted_padded = decryptor.update(encrypted_data) + decryptor.finalize()
26 unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
27 decrypted = unpadder.update(decrypted_padded) + unpadder.finalize()
31 plain_text = "LÊ danh mạnh - lò văn bảo"
32 encrypted_text = encrypt(plain_text, key)
33 print(f"Mã Hóa: {encrypted_text}")
34 decrypted_text = decrypt(encrypted_text, key)
35 print(f"Giải Mã: {decrypted_text}")
Tạo hệ thống cảnh báo rủi ro khi phát hiện thông tin nhạy cảm trong hệ thống
Hệ thống cảnh báo rủi ro giúp phát hiện thông tin nhạy cảm như số điện thoại, email và địa chỉ, từ đó nhanh chóng mã hóa những thông tin này để giảm thiểu nguy cơ mất mát hoặc lộ lọt ra bên ngoài.
4 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
5 from cryptography.hazmat.backends import default_backend
6 from cryptography.hazmat.primitives import padding
11 return os.urandom(32) # 256-bit key
13 # Hàm mã hóa dữ liệu
14 def encrypt(plain_text, key):
16 cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backendault_backend())
19 padder = padding.PKCS7(algorithms.AES.block_size).padder()
20 padded_data = padder.update(plain_text.encode()) + padder.finalize()
22 encrypted = encryptor.update(padded_data) + encryptor.finalize()
23 return base64.b64encode(iv + encrypted).decode('utf-8')
25 # Hàm phát hiện thông tin nhạy cảm
26 def detect_sensitive_info(text):
29 # Biểu thức chính quy để phát hiện số điện thoại
31 phones = phone_pattern.findall(text)
33 sensitive_info['phone_numbers'] = phones
35 # Biểu thức chính quy để phát hiện địa chỉ email
36 email_pattern = re.compile(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z] {2,}')
37 emails = email_pattern.findall(text)
41 # Biểu thức chính quy để phát hiện số thẻ tín dụng (mẫu đơn giản)
43 ccs = cc_pattern.findall(text)
45 sensitive_info['credit_cards'] = ccs
50 def send_alert(sensitive_info):
52 print(f"[{timestamp}] Cảnh báo: Phát hiện thông tin nhạy cảm!")
53 for info_type, values in sensitive_info.items():
54 print(f"{info_type}: {', '.join(values)}")
57 text = input("Nhập văn bản để quét thông tin nhạy cảm: ")
58 sensitive_info = detect_sensitive_info(text)
61 for info_type, values in sensitive_info.items():
63 encrypted_value = encrypt(value, key)
64 print(f"Thông tin nhạy cảm đã mã hóa ({info_type}):
66 print("Không phát hiện thông tin nhạy cảm nào.")
Chạy 2 trường hợp 1 trường hợp có thông tin nhạy cảm và không có thông tin nhạy cảm nhằm mục đích kiểm tra tính an toàn bảo mật của code
TH1: Không có thông tin nhạy cảm
TH2: Có thông tin nhạy cảm như là số điện thoại, email,
Khi có 1 trong các thông tin nhạy cảm code sẽ tự động mã hóa để tránh lộ thông tin nhạy cảm đó ra bên ngoài làm mất thông tin.