Xây dựng cơ chế chống thay đổi nội dung

Một phần của tài liệu Về độ nhập nhằng của ngôn ngữ và ứng dụng (Trang 68 - 74)

3.3.2.1. Các phương pháp bảo vệ website

Như đã trình bày ở trên, một trong những mối nguy cơ bản và nguy hiểm nhất là khi kẻ xấu có thể thay đổi nội dung của website. Từ đó dẫn đến

Như vậy, ta cần phải xây dựng một phương pháp để bảo vệ nội dung của

website, qua quá trình tìm hiểu, chúng tôi thấy rằng có 2 cách có thể thực thi để bảo vệ nội dung.

Cách thứ nhất, đó là cố gắng không cho kẻ xấu lợi dụng sơ hở để thay

đổi nội dung. Phương án này phụ thuộc rất nhiều vào khả năng của người

quản trị Server, đội ngũ quản trị Server sẽ luôn phải cập nhật những bản vá

mới của hệ thống, đồi thời cập nhật nhưng phương pháp tấn công mới để có

thể hoàn thành công việc tốt hơn. Với giả thiết đưa ra rằng kẻ xấu sẽ tấn công

theo một cách mà ta không biết trước, cách làm này đã thể hiện hạn chế về mặt

tốc độ : luôn đi sau kẻ xấu.

Cách thứ hai, một cách tư duy khác đi của vấn đề. Ta giả sử rằng kẻ xấu đã thay đổi được nội dung của website, và ta tìm cách để phát hiện ra sự thay đổi đó, đồng thời khôi phục lại nội dung như ban đầu.

Cả 2 phương pháp ở trên đều tỏ ra hữu dụng trong bài toán thực tế hiện

này, nghiên cứu này xin đi sâu phân tích và trình bày về phương pháp thứ 2, phương pháp phát hiện thay đổi và khôi phục nội dung.

Việc thay đổi nội dung của website có thể có nhiều cách, tuy nhiên mục đích cuối cùng của các phương pháp này đều nhắm vào việc thay đổi 2 thành phần chính tạo ra nội dung của website:

1. Thay đổi nội dung các file tĩnh trên Server 2. Thay đổi nội dung của CSDL trên Server

Trong phạm vi nghiên cứu này, về mặt lý thuyết thì sẽ đưa ra những mô

hình để bảo vệ việc thay đổi nội dung cho cả file tĩnh và CSDL. Tuy nhiên về

3.3.2.2. Giải pháp bảo vệ mã nguồn chống thay đổi bất hợp pháp

Quá trình nghiên cứu tiếp cận vấn đề dựa trên nguyên tắc : với mỗi đối tượng được bảo vệ, luôn lưu lại một phiên bản gốc của đối tượng đó; mỗi khi

phát hiện sự thay đổi nội dung trên đối tượng cần bảo vệ thì sẽ khôi phục nội dung trên đối tượng đó bằng phiên bản gốc đã lưu lại.

Để có thể mô tả về giải pháp một cách rõ ràng hơn, chúng tôi xin trình bày về quy trình truy cập 1 đối tượng trên Server :

Hình 3: Giải pháp bảo vệ mã nguồn chống thay đổi bất hợp pháp

Qua quá trình tìm hiểu, nhóm nghiên cứu đã tìm ra giải pháp để bảo vệ

việc thay đổi nội dung của website như sau :

Hình 4: Bảo vệ sự thay đổi nội dung

Theo như hình vẽ, giải pháp là đặt thêm một module bảo vệ vào giữa quá

trình yêu cầu truy cập và quá trình tiến hành truy cập đối tượng trên Server. Module này có nhiệm vụ kiểm tra xem đối tượng truy cập có bị thay đổi nội

dung hay không? Nếu có thì tiến hành khôi phục nội dung cho đối tượng đó.

Cụ thể được nêu rõ trong sơ đồ

Hình 5: Kiểm tra sự thay đổi và khôi phục nội dung

Trong quá trình xử lý yêu cầu,

- module bảo vệ sẽ kiểm tra so sánh với dữ liệu gốc, sử dụng cơ chế hàm

băm mật mã

- trong trường hợp không bị thay đổi, kết quả được trả lại cho trình duyệt

- nếu dữ liệu bị thay đổi, tác vụ khôi phục dữ liệu gốc được thực hiện. Theo đó, dữ liệu gốc (lưu trong vùng an toàn, có thể sử dụng cơ chế mã hóa bảo vệ)

Giải pháp trên đã gặp phải các bài toán với việc đảm bảo tốc độ thực thi

của hệ thống trong khi vẫn đảm bảo sự an toàn cho website. Dĩ nhiên đây là 2

để triển khai giải pháp với hiệu quả cao nhất : vẫn giữ được sự an toàn, ổn định cho website mà không làm giảm quá nhiều tốc độ. Có 2 bài toán đặt ra là :

1. Kiểm tra sự thay đổi nội dung với tốc độ cao.

2. Đảm bảo bản gốc là nguyên bản.

+ Kiểm tra thay đổi nội dung

Với một website, việc truy cập đến các đối tượng trên Server là rất nhiều,

với tốc độ rất nhanh. Việc liên tục kiểm tra sự thay đổi của một đối tượng sẽ

gây ra việc giảm tốc độ đáp ứng của website nếu việc triển khai không được

thực hiện một cách tối ưu.

Bước cuối cùng của việc kiểm tra sự thay đổi vẫn là ‘so sánh’, luôn cần

có 1 phiên bản chuẩn để so sánh với phiên bản hiện tại, kết quả của phép so

sánh sẽ quyết định câu trả lời cho câu hỏi : “có bị thay đổi hay không?”.

Việc so sánh 2 file sẽ rất tốn tài nguyên, vì nội dung file thường khá lớn.

Mục tiêu là cần tìm một phương pháp so sánh với thời gian tính toán, tài nguyên nhỏ hơn nhiều.

Nhóm nghiên cứu đã ứng dụng hàm băm mật mã để giải quyết bài toán này. Thay vì so sánh nội dung 2 file thì sẽ so sánh mã băm của 2 file đó. Việc

này tốn ít tài nguyên hơn việc so sánh nội dung vì mã băm có giá trị rất nhỏ, đồng thời ta không cần phải tính toán lại mã băm của bản gốc.

Trong sản phẩm thực nghiệm, nhóm nghiên cứu sử dụng hàm băm MD5 để tính toán. Tuy nhiên, việc kiểm tra sự thay đổi được thiết kế thành 1

module độc lập để có thể được thay thế bằng một hàm băm bất kỳ, thậm chí là một cơ chế kiểm tra khác không sử dụng hàm băm mật mã.

Trên thực tế, việc kiểm tra liên tục một file là không cần thiết mà lại tốn

nào đó sẽ có ý nghĩa hơn nhiều so với việc kiểm tra liên tục. Tùy vào mức độ

quan trọng của file mà khoảng thời gian này khác nhau. Có thể diễn đạt quá

trình này rõ ràng hơn qua hình vẽ.

Hình 6: Kiểm tra thay đổi nội dung

+ Đảm bảo bản gốc là nguyên bản

Phiên bản gốc, còn gọi là bản sạch của một đối tượng luôn cần được lưu

trữ để khôi phục khi cần thiết. Việc đảm bảo rằng phiên bản này không bị thay đổi cũng rất quan trọng, vì khi khôi phục mà khôi phục một phiên bản đã bị thay đổi (tấn công) thì việc khôi phục trở nên không có ý nghĩa.

Áp dụng thành tựu của mã hóa hiện đại, bài toán này được giải quyết

bằng cách sử dụng chữ ký số. Mỗi khi phiên bản gốc được lưu lại thì hệ thống

sẽ tiến hành ký trên phiên bản đó. Sau đó, khi khôi phục thì tiến hành kiểm tra

CHƯƠNG 4: MÃ HÓA KẾT HỢP ALT – RSA

Một phần của tài liệu Về độ nhập nhằng của ngôn ngữ và ứng dụng (Trang 68 - 74)

Tải bản đầy đủ (PDF)

(95 trang)