chương 1, đồ án đưa ra kiển thức tổng quan Web và các ứng dụng chạy trên nền tảng Web, những nguy cơ, tấn công thường thấy lên các ứng dụng Web liên quan đến các khía cạnh của an toàn thông tin, từ đó đưa ra được những giải pháp để khắc phục. 11 CHƯƠNG 2: GIẢI PHÁP BẢO MẬT TRONG ỨNG DỤNG CHAT TRÊN NỀN TẢNG WEB 2.1 Các nguy cơ gây mất an toàn thông tin trong ứng dụng Chat Ứng dụng Chat là một trong những ứng dụng Web phổ biến hiện nay. Do đó chúng tồn tại những nguy cơ, tấn công mà ứng dụng Web gặp phải, bao gồm: tấn công nghe lén,thu thập dữ liệu, tấn công thông qua cấu hình lỗi, SQL Injection;… Tuy nhiên đối với ứng dụng Chat, với mục đích là trao đổi dữ liệu giữa những người dùng, vì vậy việc tấn công chủ yếu để nghe lén, thu thập, sửa đổi những dữ liệu, thông tin giữa những người dùng trao đổi với nhau. Bên cạnh đó ứng dụng Chat còn gặp phải những vấn đề về xác thực, bao gồm: xác thực phía máy chủ cung cấp ứng dụng.
Với những vấn đề đưa ra ở trên, cần sử dụng giải pháp giúp đảm bảo tính bí mật, toàn vẹn, xác thực của dữ liệu được trao đổi kèm theo đó là xác thực máy chủ. Giải pháp mà đồ án lựa chọn để đảm bảo là mã hóa dữ liệu tại tầng ứng dụng để đảm bảo tính bí mật và sử dụng bộ giao thức SSL/TLS nhằm tăng tính bí mật, đảm bảo tính toàn vẹn, xác thực của dữ liệu, kèm theo đó là xác thực phía máy chủ. Về chi tiết cụ thể, hai giải pháp sẽ được trình bày rõ hơn ở dưới.2 Giải pháp mã hóa dữ liệu tại tầng ứng dụng Dữ liệu sẽ được mã hóa ở máy người gửi và được giải mã khi đến máy của người nhận. Mô hình của giải pháp này được khái quát như sau: Kênh công cộng Máy của người Máy của người Dữ liệu Máy chủ Dữ liệu gửi đã qua đã qua nhận mã hóa mã hóa Hình 2.1 Mô tả giải pháp tích hợp chức năng mã hóa trong ứng dụng Dữ liệu trao đổi giữa hai bên được mã hóa bằng một thuật toán xác định từ trước, độ an toàn của giải pháp này phụ thuộc vào hệ mật được sử dụng và khóa dùng cho quá trình mã hóa và giải mã.
Các hệ mật có thể chia ra làm hai loại: hệ mật khóa bí mật và hệ mật khóa công khai. Do đặc thù của ứng dụng Chat cần nhanh chóng truyền và nhận dữ liệu, vì vậy hệ mã nên là mật mã khóa bí mật với độ dài khóa đủ đảm bảo an toàn. 12 Ngoài ra, hệ mật phải là một thuật toán đã được kiểm chứng bởi các các chuyên gia thông qua các cuộc thi về mật mã. Vào năm 1997, NIST đã tổ chức một cuộc thi nhằm tìm kiếm hệ mật kế nhiệm cho DES gọi là AES.
Trong cuộc thi này rất nhiều hệ mật đã được các nhà mật mã gửi đến để tham dự. Các ứng cử viên rất nhiều bao gồm: MARS, RC6, Rijndael, Twofish,… Trải qua nhiều vòng kiểm nghiệm và đánh giá, cuối cùng thì hệ mật Rijndael thắng cuộc và được chọn là thuật toán AES vào năm 2000. Về vấn đề khóa sử dụng để mã hóa và giải mã, có thể dùng các thuật toán trao đổi khóa như: Diffle-Hellman, SIGMA hoặc người dùng tự trao đổi khóa một cách bí mật với nhau từ trước. Qua quá trình tìm hiểu và nghiên cứu, đồ án đã lựa chọn AES và khóa mã hóa, giải mã do người dùng thỏa thuận bí mật với nhau từ trước.
Sau đây đồ án sẽ đi sâu tìm hiểu về AES và các chế độ làm việc của AES.1 Hệ mật AES Theo tài liệu [2], AES là một hệ mã khối. Đầu vào và đầu ra của hệ mật là các dãy nhị phân 128 bits. Khóa mã dùng cho hệ mật là một dãy nhị phân 128, 192 hoặc 256 bits. Các giá trị đầu vào và ra của thuật toán được biểu diễn ở các khối byte một chiều với độ dài tương ứng.
Trạng thái và khối khóa được ghi vào từ các khối đó, đầu tiên theo cột, còn sau đó theo các dòng. Số lượng các vòng phụ thuộc vào kích cỡ khóa được chọn, ví dụ kích cỡ khóa 128 bits - 10 vòng, 192 bits - 12 vòng, và 256 bits - 14 vòng. Kí hiệu: Nb là thương khi chia độ dài khối cho 32, Nk là thương khi chia độ dài khóa cho 32. Trạng thái: là bản rõ hay bản mã trung gian được biểu diễn bởi các mảng byte 2 chiều với 4 dòng và Nb cột.
Lược đồ mã hóa và giải mã trong hệ mật AES sử dụng một hàm vòng gồm bốn phép biến đổi byte: - Phép thay thế byte sử dụng một bảng thay thế (S-Hộp). - Phép dịch chuyển hàng của mảng trạng thái theo các offset khác nhau. - Phép trộn dữ liệu trong mỗi cột của mảng trạng thái. - Phép cộng khóa vòng vào trạng thái.2 Lựa chọn chế độ làm việc cho AES Theo tài liệu [2], sau khi AES ra đời, NIST định nghĩa 5 chế độ hoạt động.
Ngoài 4 chế độ trước đó là ECB, CBC, CFB và OFB còn thêm chế độ bộ đếm CTR. Phần này trình bày những chế độ hoạt động của AES. Chế độ ECB Các tính chất: - Các khối rõ giống nhau (cùng một khóa) mang lại cùng một bản mã. - Các phụ thuộc móc xích: các khối được mã một cách độc lập với các khối khác.
- Lan sai: một hay nhiều lỗi bit trong duy nhất một khối mã chỉ ảnh hưởng đến kết quả giải mã của chỉ một khối. xj n Khóa K Hàm mã hóa Hàm giải mã Khóa K EK E −1K n cj x'j = xj a) Mã hóa b) Giải mã Hình 2.2 Chế độ ECB Chế độ CBC Các tính chất: - Với các bản rõ giống nhau: các khối bản mã giống nhau thu được khi cùng một bản rõ được mã dưới cùng một khóa và vectơ khởi tạo IV. - Các phụ thuộc móc xích: cơ chế móc xích gây cho bản mã c j phụ thuộc vào x j và tất cả các khối rõ đứng trước. - Lan sai: lỗi một bit duy nhất trong khối mã c j ảnh hưởng tới việc giải mã của các khối c j và c j +1 (vì x j phụ thuộc vào c j và c j −1 ).
14 c0 = IV cj c j −1 Hàm giải mã Khóa K E −1K n xj Khóa K Hàm mã hóa EK c j −1 n cj x'j = xj a) Mã hóa b) Giải mã Hình 2.3 Chế độ CBC Chế độ CFB dịch r-bit dịch r-bit c j −1 Ij Ij n c j −1 Khóa K Hàm mã hóa Hàm mã hóa Khóa K EK EK n r r bit trái tj Oj tj Oj nhất r x'j = xj xj r a) Mã hóa b) Giải mã Hình 2.4 Chế độ CFB Các tính chất: - Các bản rõ giống nhau: cũng giống như chế độ hoạt động CBC, việc thay đổi IV làm cho cùng một bản rõ đầu vào sẽ được mã thành đầu ra khác nhau. IV không cần phải bí mật. - Các phụ thuộc móc xích: tương tự như chế độ hoạt động CBC, kỹ thuật móc xích làm cho khối mã c j phụ thuộc cả vào x j và các khối rõ phía trước. Do đó việc thay đổi thứ tự của các khối mã ảnh hưởng đến việc giải mã.
Việc giải mã đúng của khối bản mã đúng đòi hỏi n / r khối bản mã phía trước là đúng (kết quả là thanh ghi chứa giá trị đúng). 15 - Lan sai: các lỗi 1 hay nhiều bit trong một khối bản mã duy nhất r-bit c j ảnh hưởng tới việc giải mã của khối đó và n / r khối bản mã sau đó (tức là, cho đến khi n bit của bản mã được xử lý, sau đó khối bị lỗi c j ' được dịch hoàn toàn ra khỏi thanh ghi). Bản rõ được khôi phục x j sẽ khác với x j một cách chính xác tại các vị trí bit mà c j đã bị lỗi. Chế độ OFB Các tính chất: - Các bản rõ giống nhau: cũng như các chế độ CBC và CFB, việc thay đổi IV làm cho cùng một bản rõ được mã thành đầu ra khác nhau.
- Các phụ thuộc móc xích: dòng khóa là không phụ thuộc vào bản rõ. - Lan sai: Một hay nhiều lỗi bit trong ký tự bản mã bất kỳ c j sẽ chỉ ảnh hưởng tới việc giải mã chỉ của ký tự đó, tại chính xác (những) vị trí bit mà c j có lỗi, làm cho (các) bit bản rõ được khôi phục tương ứng bị đảo ngược. - Khôi phục sau lỗi: chế độ OFB khôi phục lại được từ các lỗi bit bản mã, nhưng không thể tự đồng bộ sau khi mất các bit bản mã, nó tiêu huỷ sự sắp đúng hàng của dòng khóa và dòng mã khi giải mã O j −1 O j −1 I1 = IV Ij Ij n n Khóa K Hàm mã hóa Hàm mã hóa Khóa K EK EK r bit trái tj tj Oj Oj nhất r x'j = xj xj r a) Mã hóa b) Giải mã Hình 2.5 Chế độ OFB Chế độ CTR 16 Chế độ bộ đếm CTR có đặc điểm là gắn thuật toán mã khối cơ sở với giá trị đếm và giá trị đếm này bắt đầu từ giá trị khởi tạo. Với việc bộ đếm tăng lên, thuật toán mã khối cơ sở cho ra các khối liên tiếp để lập nên một dòng bít.Nghĩa là, dòng khóa được cộng môđun 2 (XOR) theo từng bít với các khối rõ.
Mã hóa: Đầu vào: Khóa K, Ctr1 và các khối bản rõ x1, ., xm , mỗi khối có n bit Đầu ra: Ctr1 và các khối mã c1, ., cm ci = xi EK (Ctri ), 1 i m Giải mã: Đầu vào: Khóa K, Ctr1 và các khối bản mã c1, ., cm , mỗi khối có n bit Đầu ra: Ctr1 và các khối rõ x1, ., xm xi = ci EK (Ctri ), 1 i m Các tính chất: - Do không có phản hồi nên phép mã hóa và giải mã có thể được thực hiện song song, do đó nhanh. Đây là ưu thế của chế độ CTR so với các chế độ CFB, OFB. - Các tính chất của chế độ CTR có thể được phát biểu tương tự như tính chất của các chế độ CFB, OFB. - Đối với chế độ CTR, việc thực thi là đơn giản.
Theo tài liệu [2] Trong các chế độ hoạt động của mã khối đã giới thiệu, thì chế độ hoạt động ECB là đơn giản nhất và nhanh nhất.