ĐẠI HỌC BÁCH KHOA HÀ NỘI
ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHAT CÓ BẢO MẬT TRÊN
NỀN TẢNG GIAO DIỆN WEB
Sinh viên thực hiện:
Phạm Văn Anh
HÀ NỘI – 2022
MỤC LỤC
MỤC LỤC .......................................................................................................... i
CÁC KÝ HIỆU, CHỮ VIẾT TẮT .................................................................... iv
DANH MỤC HÌNH VẼ ..................................................................................... v
LỜI NĨI ĐẦU ................................................................................................... 1
CHƯƠNG 1: ỨNG DỤNG WEB VÀ CÁC NGUY CƠ MẤT AN TỒN
THƠNG TIN ...................................................................................................... 3
1.1 Tổng quan cơng nghệ Web ............................................................. 3
1.1.1 Lịch sử phát triển ... Lỗi! Thẻ đánh dấu không được xác định.
1.1.2 Một số khái niệm ..................................................................... 3
1.1.3 Một số kĩ thuật sử dụng trong trao đổi dữ liệu của Web ........... 4
1.2 Khái niệm và phân loại ứng dụng Web ........................................... 6
1.2.1 Khái niệm ứng dụng Web ........................................................ 6
1.2.2 Phân loại ứng dụng Web .......................................................... 6
1.2.3 Ưu điểm và nhược điểm của ứng dụng WebLỗi! Thẻ đánh dấu
không được xác định.
1.3 Một số nền tảng Web (Web Framework) ........................................ 7
1.3.1 Khái niệm Web Framework ..................................................... 7
1.3.2 Ruby on Rails .......................................................................... 8
1.3.3 CakePHP ................................................................................. 9
1.3.4 ASP.NET ................................................................................. 9
1.4 Một số nguy cơ, tấn công lên ứng dụng WebLỗi! Thẻ đánh dấu
không được xác định.
1.4.1 Tấn công nghe lén.. Lỗi! Thẻ đánh dấu không được xác định.
1.4.2 Tấn cơng dựa trên lỗi cấu hìnhLỗi! Thẻ đánh dấu khơng được
xác định.
1.4.3 Tấn công SQL InjectionLỗi! Thẻ đánh dấu không được xác
định.
i
1.5 Giải pháp phịng chống tấn cơng lên ứng dụng Web ..................... 10
1.5.1 Giải pháp đảm bảo tính xác thực ............................................ 10
1.5.2 Giải pháp đảm bảo tính bí mật ............................................... 10
1.5.3 Giải pháp đảm bảo tính tồn vẹn ............................................ 11
1.5.4 Giải pháp đảm bảo tính chống chối bỏ ................................... 11
1.5.5 Giải phép đảm bảo tính sẵn sàng............................................ 11
CHƯƠNG 2: GIẢI PHÁP BẢO MẬT TRONG ỨNG DỤNG CHAT TRÊN NỀN
TẢNG WEB..................................................................................................... 12
2.1 Các nguy cơ gây mất an tồn thơng tin trong ứng dụng Chat ........ 12
2.2 Giải pháp mã hóa dữ liệu tại tầng ứng dụng .................................. 12
2.2.1 Hệ mật AES ........................................................................... 13
2.2.2 Lựa chọn chế độ làm việc cho AES ....................................... 14
2.3 Giải pháp sử dụng bộ giao thức SSL/TLS ..................................... 17
2.3.1 Lịch sử phát triển của SSL/TLS ............................................. 18
2.3.2 Cấu trúc, thành phần của bộ giao thức SSL/TLS .................... 18
CHƯƠNG 3: XÂY DỰNG, TRIỂN KHAI ỨNG DỤNG CHAT TRÊN NỀN
TẢNG GIAO DIỆN WEB CÓ BẢO MẬT ...................................................... 25
3.1 Công cụ phát triển ứng dụng Chat ................................................ 25
3.1.1 ASP.NET SignalR ................................................................. 25
3.1.2 C# .......................................................................................... 29
3.1.3 HTML ................................................................................... 29
3.1.4 CSS ....................................................................................... 30
3.1.5 JavaScript .............................................................................. 30
3.1.6 Microsoft Visual Studio ....................................................... 30
3.1.7 Microsoft SQL Server ............................................................ 30
3.2 Yêu cầu đối với ứng dụng Chat .................................................... 31
3.3 Mơ hình triển khai ứng dụng Chat ................................................ 32
3.4 Xây dựng ứng dụng Chat .............................................................. 33
ii
3.4.1 Xây dựng Module Chat.......................................................... 33
3.4.2 Xây dựng Module đăng nhập ................................................. 38
3.5 Triển khai giải pháp bảo mật cho ứng dụng Chat .......................... 44
3.5.1 Triển khai giải pháp tích hợp chức năng mã hóa dữ liệu ........ 44
3.5.2 Triển khai giải pháp sử dụng SSL/TLS .................................. 52
3.6 Thực nghiệm ứng dụng Chat ........................................................ 58
3.6.1 Thực nghiệm chương trình Chat chưa có bảo mật .................. 58
3.6.2 Thực nghiệm chương trình Chat có bảo mật .......................... 60
KẾT LUẬN ...................................................................................................... 64
TÀI LIỆU THAM KHẢO ................................................................................ 65
iii
CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Ký hiệu
Tiếng Anh
Tiếng Việt
AES
Advanced Encryption Standard
Tiêu chuẩn mã hóa tiên tiến
AJAX
Asynchronous JavaScript and
XML
JavaScript và XML khơng đồng
bộ
API
Application Programming
Interface
Giao diện lập trình ứng dụng
CBC
Cipher block chaining
Xích khối mã
CFB
Cipher feedback
Phản hồi mã
CSS
Cascading Style Sheets
Ngôn ngữ định kiểu theo tầng
CTR
Counter
Bộ đếm
DES
Data Encryption Standard
Tiêu chuẩn mã hóa dữ liệu
DLL
Dynamic Link Library
Thư viện liên kết động
ECB
Electronic codebook
Sách mã điện tử
HMAC
Hash message authentication
Mã xác thực thông báo sử dụng
code
hàm băm
HTML
Hypertext Markup Language
Ngôn ngữ đánh dấu siêu văn bản
HTTP
Hypertexr Transfer Protocol
Giao thức truyền tải siêu văn bản
IETF
Internet Engineering Task Force Lực lượng Chuyên trách về Kỹ
thuật Liên mạng
MAC
Message authentication code
NIST
National Institute of Standards Viện Tiêu chuẩn và Kĩ thuật
Mã xác thực thông báo
and Technology
Quốc gia
OFB
Output feedback
Phản hồi đầu ra
OWASP
Open Web Application Security Dự án mở về bảo mật ứng dụng
Project
Web
SQL
Structured Query Language
Ngôn ngữ truy vấn mang tính cấu
trúc
SSL/TLS Secure Sockets Layer/
Transport Layer Security
Bảo mật tầng Socket/ Bảo mật
tầng vận chuyển
URL
Uniform Resource Locator
Định vị tài nguyên thống nhất
XSS
Cross-Site Scripting
Kịch bản liên trang
iv
DANH MỤC HÌNH VẼ
Hình 1.1 Mơ hình cơ bản của dịch vụ Web......................................................... 4
Hình 1.2 Regular HTTP ..................................................................................... 4
Hình 1.3 AJAX Long-Polling. ............................................................................ 4
Hình 1.4 HTML5 Websockets ............................................................................ 5
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 .............. 12
Hình 2.2 S-hộp thuận ....................... Lỗi! Thẻ đánh dấu khơng được xác định.
Hình 2.3 S-hộp nghịch...................... Lỗi! Thẻ đánh dấu khơng được xác định.
Hình 2.4 Chế độ ECB ....................................................................................... 14
Hình 2.5 Chế độ CBC ...................................................................................... 15
Hình 2.6 Chế độ CFB ....................................................................................... 15
Hình 2.7 Chế độ OFB ....................................................................................... 16
Hình 2.8 Vị trí, thành phần của SSL/TLS ......................................................... 19
Hình 2.9 Quá trình tạo bản ghi SSL .................................................................. 20
Hình 2.10 Cấu trúc bản ghi SSL đã qua mã hóa ............................................... 21
Hình 2.11 Giao thức SSL HandShake .............................................................. 21
Hình 2.12 Giao thức SSL Change Cipher Spec ................................................ 23
Hình 3.1 Quá trình lựa chọn phương thức kết nối SignalR ............................... 27
Hình 3.2 Mơ hình triển khai ứng dụng Web dựa trên SignalR .......................... 28
Hình 3.3 Mơ hình ứng dụng Chat có bảo mật ................................................... 32
Hình 3.4 Tạo mới một Project ASP.NET Web Application .............................. 34
Hình 3.5 Một Project ASP.NET Web Application mới .................................... 34
Hình 3.6 Thêm bộ thư viện SignalR thơng qua Nuget ...................................... 35
Hình 3.7 Tạo ChatHub.cs ................................................................................. 35
Hình 3.8 Nội dung ChatHub.cs......................................................................... 35
Hình 3.9 Tạo Startup.cs .................................................................................... 36
Hình 3.10 Nội dung Startup.cs ......................................................................... 36
Hình 3.11 Tạo trang chủ chứa ứng dụng Web .................................................. 36
Hình 3.12 Chỉnh sửa nội dung trang chủ .......................................................... 37
Hình 3.13 Người dùng thứ nhất truy cập trang chủ ........................................... 37
Hình 3.14 Người dùng thứ hai truy cập trang chủ ............................................. 38
Hình 3.15 Hai bên Chat thành cơng .................................................................. 38
Hình 3.16 Q trình tạo tài khoản cho ứng dụng Chat ...................................... 39
v
Hình 3.17 Quá trình xác thực người dùng của ứng dụng Chat .......................... 40
Hình 3.18 Tạo CSDL chứa thơng tin về tài khoản người dùng ......................... 41
Hình 3.19 Tạo bảng chứa thơng tin chi tiết của người dùng.............................. 41
Hình 3.20 Dữ liệu về tài khoản người dùng ...................................................... 42
Hình 3.21 Thiết kế trang Web đăng nhập ......................................................... 42
Hình 3.22 Sử dụng hàm băm SHA-512 cho việc băm dữ liệu ........................... 43
Hình 3.23 Chương trình báo lỗi khi nhập sai mật khẩu ..................................... 43
Hình 3.24 Chương trình báo lỗi khi nhập sai định dạng .................................... 44
Hình 3.25 Đăng nhập ứng dụng thành cơng ...................................................... 44
Hình 3.26 Đăng xuất khỏi ứng dụng ................................................................. 44
Hình 3.27 Q trình mã hóa của AES-CTR ...................................................... 46
Hình 3.28 Quá trình giải mã của AES-CTR...................................................... 47
Hình 3.29 Tạo thư mục Crypto ......................................................................... 48
Hình 3.30 Tạo aes.js và aes-ctr.js ..................................................................... 48
Hình 3.31 Thêm đường dẫn của aes và aes-ctr vào trang chủ ........................... 49
Hình 3.32 Người dùng thứ nhất nhập mầm sinh khóa ....................................... 49
Hình 3.33 Người dùng thứ hai nhập mầm sinh khóa......................................... 49
Hình 3.34 Người thứ nhất nhập tin nhắn........................................................... 49
Hình 3.35 Bản mã của tin nhắn ........................................................................ 50
Hình 3.36 Người dùng thứ hai nhận được bản mã ............................................ 50
Hình 3.37 Giải mã và người dùng thứ hai nhận được bản mã ........................... 50
Hình 3.38 Người dùng thứ hai nhập đoạn tin nhắn giống so với người dùng thứ
nhất .................................................................................................................. 50
Hình 3.39 Bản mã của tin nhắn thứ hai............................................................. 51
Hình 3.40 Tiến hành xuất bản ứng dụng ........................................................... 51
Hình 3.41 Tạo đường dẫn lưu ứng dụng ........................................................... 51
Hình 3.42 Xuất bản ứng dụng thành cơng ........................................................ 52
Hình 3.43 Cấu hình các Role và Features thành cơng ....................................... 52
Hình 3.44 Cấu hình DNS thành cơng ............................................................... 53
Hình 3.45 Tạo trang Web chứa ứng dụng Chat thành công .............................. 53
Hình 3.46 Cấu hình CA thành cơng .................................................................. 54
Hình 3.47 Tạo yêu cầu cho chứng chỉ .............................................................. 54
Hình 3.48 Thơng số của chứng chỉ ................................................................... 55
Hình 3.49 Đưa u cầu lên trang chủ của RootCA ........................................... 55
vi
Hình 3.50 Cấp chứng thư số trong dịch vụ CA ................................................. 56
Hình 3.51 Chứng thư số của trang Web ............................................................ 56
Hình 3.52 Yêu cầu trang Web chạy SSL .......................................................... 57
Hình 3.53 Chứng thư số của trang Web ............................................................ 57
Hình 3.54 Mơ hình thực nghiệm ứng dụng Chat ............................................... 58
Hình 3.55 Các bên xác định phương thức truyền tải ......................................... 58
Hình 3.56 Người dùng tiến hành trao đổi tin nhắn ............................................ 59
Hình 3.57 Kẻ tấn cơng bắt và đọc trộm gói tin thành cơng ............................... 59
Hình 3.58 Ứng dụng tiến hành mã hóa đoạn hội thoại ...................................... 60
Hình 3.59 Tin nhắn máy trạm thứ hai nhận được.............................................. 60
Hình 3.60 Dữ liệu kẻ tấn cơng bắt được ........................................................... 61
Hình 3.61 Q trình bắt tay của máy trạm thứ nhất và máy chủ ....................... 62
Hình 3.62 Quá trình bắt tay của máy trạm thứ hai và máy chủ ......................... 62
Hình 3.63 Tin nhắn được mã hóa ở máy trạm thứ nhất ..................................... 62
Hình 3.64 Tin nhắn được mã hóa ở máy trạm thứ hai ....................................... 63
Hình 3.65 Gói tin TLSv1.2 được trao đổi giữa các bên .................................... 63
vii
LỜI NÓI ĐẦU
Web xuất hiện lần đầu tiên vào năm 1989 khi nhà vật lý học Tim BernersLee muốn tìm ra một cách thức giúp các nhà khoa học trao đổi tài liệu nghiên cứu
thơng qua Internet. Từ đó cho đến nay Web đã có những bước đột phá nhờ những
giải pháp, công nghệ được đưa ra. Ban đầu là những trang Web tĩnh, tương tác ít,
sau đó, Web động được xây dựng với tính tương tác ngày càng tăng cao và gần
đây nhất là sự ra đời của các trang Web thời gian thực như Facebook, Twitter,….
Cùng với sự phát triển của Web thì những ứng dụng Web cũng phát triển khơng ngừng.
Các ứng dụng Web có những ưu điểm vượt trội mang đến cho người dùng
nhiều tiện lợi vì hồn tồn khơng phải cài đặt, bên cạnh đó, người dùng có thể
truy cập và sử dụng bất kể lúc nào, chỉ cần kết nối Internet và kết nối tới Website
có ứng dụng Web cần thao tác. Một trong số những ứng dụng Web phổ biến hiện
nay chính là ứng dụng Chat. Chúng giúp người dùng liên lạc với đồng nghiệp,
bạn bè dễ dàng hơn, chỉ cần ngồi tại chỗ và liên lạc đến họ bất kể khoảng cách địa
lý, từ đó cắt giảm được nhiều chi phí khơng cần thiết. Hiện nay, các ứng dụng
Chat được cải tiến liên tục, ngồi việc nhắn tin cịn có thể chia sẻ file, nhạc, văn
bản,…. Hiện tại có rất nhiều ứng dụng Chat với số lượng người dùng đã lên đến
hàng trăm triệu như Google Chat, Viber, WhatsApp,....
Khi ứng dụng Chat phổ biến như vậy sẽ kéo theo khơng ít những lo ngại về
nguy cơ mất an tồn thơng tin cho người sử dụng. Việc nghe lén hay đánh cắp
thông tin đang là một trong những vấn đề nhức nhối và cấp bách hiện nay. Và đối
với ứng dụng Chat thì đây lại càng là những nguy cơ mà chúng phải đối mặt vì
đặc điểm chính là dùng để trao đổi thông tin giữa những người sử dụng ứng dụng.
Người dùng có thể vơ tình sử dụng những ứng dụng Chat khơng an tồn làm lộ
dữ liệu riêng tư.
Đứng trước thực tế như vậy, việc tìm hiểu và xây dựng ứng dụng Chat có
bảo mật là một nhu cầu tất yếu.
Nội dung của đồ án được chia làm 3 chương:
Chương 1: Ứng dụng web và các nguy cơ gây mất an tồn thơng tin
Chương 1 của đồ án trình bày tổng quan về cơng nghệ Web, q trình hình
thành và phát triển, đưa ra những kiến thức tổng quan về ứng dụng Web, bên cạnh
đó là nguy cơ gây mất an tồn thơng tin và đưa ra một số giải pháp để khắc phục.
1
Chương 2: Giải pháp bảo mật trong ứng dụng chat trên nền tảng giao
diện Web
Chương 2 của đồ án trình bày sâu hơn và đưa ra giải pháp để tăng cường
tính bảo mật cho ứng dụng Chat trên nền tảng giao diện Web.
Chương 3: Xây dựng, triển khai và thực nghiệm ứng dụng chat trên
nền tảng giao diện Web có bảo mật
Chương 3 của đồ án trình bày về cơng cụ phát triển ứng dụng Chat trên nền
tảng giao diện Web, đưa ra mơ hình triển khai, áp dụng các giải pháp bảo mật đã
nêu và thực nghiệm độ bảo mật của ứng dụng Chat.
2
CHƯƠNG 1: ỨNG DỤNG WEB VÀ CÁC NGUY CƠ MẤT AN TỒN
THƠNG TIN
1.1 Tổng quan cơng nghệ Web
World Wide Web, gọi tắt là Web hoặc WWW là một không gian thơng tin
tồn cầu mà người dùng có thể truy cập thông qua thiết bị kết nối mạng Internet.
Đến đầu năm 2019, có đến 1,94 tỉ trang Web đang tồn tại trên mạng Internet.
1.1.2 Một số khái niệm
a. Web Server
Thường được dùng với hai nghĩa. Nghĩa thứ nhất là chỉ máy tính hoặc cụm
máy tính vật lý mà trên đó Website hoạt động. Nghĩa thứ hai là để chỉ phần mềm
(ví dụ Apache, IIS) chạy trên máy chủ Web vật lý, tương tác trực tiếp với Client,
đóng vai trị trung gian giữa Web Client và Website.
b. Web Client
Có hai nghĩa chủ yếu. Nghĩa thứ nhất là chỉ máy tính vật lý mà từ đó người
dùng truy cập tới các Website. Nghĩa thứ hai là chỉ phần mềm chạy trên máy
khách vật lý, thay mặt người dùng gửi các truy vấn đến Web Server và hiển thị
kết quả được trả về. Thông thường các Web Client là các Web Browser (trình
duyệt Web) như Firefox, Chrome, …
c. Webpage
Là toàn bộ nội dung hiển thị trên trình duyệt Web theo một địa chỉ nhất
định. Nội dung thường được xác định bởi URL mà người dùng yêu cầu. Ngày
nay, phần lớn các Website được xây dựng bằng cơng nghệ Web động (Dynamic
Web). Khi đó, trong những điều kiện khác nhau, một URL sẽ ứng với những nội
dung khác nhau. Điều kiện ở đây có thể là: thời điểm duyệt Web, tài khoản được
sử dụng để duyệt Web, …
d. Webstie
Là tập hợp các Webpage có chung tên miền cơ sở. Ví dụ các Webpage sau
sẽ cùng thuộc 1 Website:
/> />Các Webpage này có chung tên miền cơ sở là pnv.com. Một Website có thể
chỉ có một Webpage nhưng cũng có thể có hàng chục, hàng trăm Webpage.
3
Hình 1.1 Mơ hình cơ bản của dịch vụ Web.
1.1.3 Một số kĩ thuật sử dụng trong trao đổi dữ liệu của Web
Ở phần trên, đồ án đã giới thiệu sơ lược về Web, mơ hình hoạt động cơ bản
của dịch vụ Web. Trong mục này, đồ án trình bày một số kĩ thuật được sử dụng
trong việc trao đổi dữ liệu của Web từ máy khách đến máy chủ và ngược lại
a. Regular HTTP:
Hình 1.2 Regular HTTP
1.
2.
Người dùng gửi u cầu đến máy chủ.
Máy chủ tính tốn dữ liệu trả về.
3. Máy chủ gửi dữ liệu trả về cho người dùng.
Máy trạm chủ động gửi yêu cầu đến máy chủ thì sẽ có hồi đáp trả về cho
máy trạm, cịn nếu khơng có u cầu từ máy trạm thì máy chủ sẽ khơng làm gì cả.
b. AJAX Long-Polling:
.
Hình 1.3 AJAX Long-Polling.
4
1. Máy trạm yêu cầu một trang Web từ máy chủ sử dụng “Regular HTTP”.
2. Trang Web mà máy trạm vừa yêu cầu sẽ dùng Javascript thực hiện yêu
cầu đến một file trên server.
3. Máy chủ sẽ không gửi hồi đáp ngay cho máy trạm (ứng với yêu cầu gửi)
mà sẽ đợi cho đến khi có dữ liệu mới.
4. Khi có dữ liệu mới, máy chủ sẽ gửi dữ liệu mới đó (Response) về cho
máy trạm.
5. Máy trạm sau khi nhận dữ liệu mới từ máy chủ, ngay lập tức sẽ tiếp tục
một yêu cầu khác đến máy chủ để bắt đầu lại tồn bộ tiến trình này
(bước 3 đến 5).
Máy trạm sẽ gửi yêu cầu đến máy chủ, máy chủ tiến hành kiểm tra dữ liệu
và đến khi nào có dữ liệu mới thì mới gửi hồi đáp về cho máy trạm. Sau đó máy
trạm lại tiếp tục tự động gửi một yêu cầu mới và đợi dữ liệu mới trả về.
c. HTML5 Websockets:
WebSockets là một công nghệ mới, xuất hiện lần đầu tiên ở trong HTML5.
WebSockets cho phép các kênh giao tiếp song công hai chiều (Full Duplex) và
hiện đã được hỗ trợ trong nhiều trình duyệt phổ biến (Firefox, Google Chrome,
Safari,…). Kết nối được mở thông qua một yêu cầu HTTP, được gọi là liên kết
WebSockets với những Header đặc biệt. Dữ liệu truyền tải thông qua giao thức
HTTP (thường dùng với kĩ thuật Ajax) chứa nhiều dữ liệu không cần thiết trong
phần header. Một header request/response của HTTP có kích thước khoảng 871
byte, trong khi với WebSocket, kích thước này chỉ là 2 byte (sau khi đã mở thành
cơng kết nối). Kết nối được duy trì để có thể viết và nhận dữ liệu bằng JavaScript.
Hình 1.4 HTML5 Websockets
1. Máy trạm yêu cầu một trang Web từ máy chủ sử dụng “Regular HTTP”.
2. Trang Web mà máy trạm vừa yêu cầu sẽ dùng Javascript mở một kết nối
đến máy chủ.
5
3. Bây giờ cả máy chủ và máy trạm có thể gửi nhận nhiều dữ liệu khác
nhau với nhau khi có dữ liệu mới (giống như hai bên đang trao đổi với
nhau chứ không phải tuân theo qui tắc nào).
Tức là máy trạm và máy chủ luôn nhận dữ liệu mới theo thời gian thực
(theo 2 chiều: máy chủ đến máy trạm hoặc máy trạm đến máy chủ). Lúc này trên
máy chủ sẽ thực hiện một vòng lặp sự kiện (bước 1 đến 3) để thực hiện lại nhiều
lần quy trình này.
1.2 Khái niệm và phân loại ứng dụng Web
1.2.1 Khái niệm ứng dụng Web
Ứng dụng là một loại chương trình có khả năng làm cho máy tính thực hiện
trực tiếp một cơng việc nào đó người dùng muốn thực hiện. Ban đầu, các Web chỉ
bao gồm văn bản, hình ảnh và video, liên kết với nhau thông qua các đường
dẫn.Về sau, với sự phát triển của công nghệ, các Web đã trở nên “động” hơn, có
thể tương tác với người dùng. Từ đây, người dùng có thể dùng Web để “thực hiện
một cơng việc nào đó bằng máy tính”, do đó ứng dụng Web ra đời.
Để dễ hiểu, ứng dụng Web là những ứng dụng chạy trên nền tảng giao diện
Web. Thơng qua ứng dụng Web, người dùng có thể thực hiện một số cơng việc:
tính tốn, chia sẻ dữ liệu, mua sắm… Ứng dụng Web không giới hạn chỉ ở điện
thoại thơng minh hay máy tính, mà là được thiết kế để chạy trên tất cả loại trình
duyệt Web ở máy tính để bàn, máy tính xách tay,máy tính bảng,…
1.2.2 Phân loại ứng dụng Web
1.2.2.1 Ứng dụng Web tĩnh (Static Web Application)
Đầu tiên là ứng dụng Web tĩnh, loại ứng dụng Web này sẽ hiển thị rất ít nội
dung và đặc biệt là sẽ khơng có tính linh hoạt. Thường thì người ta hay sử dụng
HTML và CSS để tạo ra. Tuy nhiên những đối tượng hoạt họa như banner, ảnh
động, video… có thể được bố trí thêm vào.
Bên cạnh đó, việc tùy chỉnh nội dung của kiểu ứng dụng Web này là không
hề dễ dàng. Đầu tiên phải tải mã HTML về, sau đó chỉnh sửa và đưa lại lên máy
chủ. Và những việc đó chỉ có thể làm bởi người quản trị trang Web hoặc công ty
thiết kế ra trang Web đó. Một ví dụ cho ứng dụng Web tĩnh là những trang CV cá
nhân hay những phần giới thiệu tổ chức ít có nhu cầu cập nhật thông tin.
1.2.2.2 Ứng dụng Web động
So với ứng dụng Web tĩnh thì ứng dụng Web động phức tạp hơn về mặt kỹ
thuật. Chúng sử dụng cơ sở dữ liệu để truy cập dữ liệu và nội dung được tải lại
6
mỗi khi người dùng truy cập, về cơ bản thì chúng đều có một thanh quản lý (hay
cịn gọi là CMS) là nơi mà các quản trị viên có thể điều khiển và chỉnh sửa nội
dung của trang Web. Ở dạng ứng dụng Web này, nâng cấp nội dung là rất đơn
giản và phía máy chủ khơng phải truy cập vào để chỉnh sửa chúng. Việc thiết kế,
bên cạnh nội dung, cũng có thể chỉnh sửa cho khớp với yêu cầu của người quản trị.
1.2.2.3 Ứng dụng Web thời gian thực
Hiện nay ứng với nhu cầu xã hội thì ứng dụng Web thời gian thực đang dần
trở nên phổ biến hơn. Ứng dụng Web thời gian thực là một dạng ứng dụng Web
trong đó thơng tin được truyền (gần như) ngay lập tức giữa người dùng và máy chủ.
Trong một ứng dụng Web cũ hơn, các máy trạm không biết khi nào trạng
thái của máy chủ có thể thay đổi, do đó, nó sẽ thăm dị các thay đổi thường xuyên
hoặc chỉ chờ người dùng thực hiện yêu cầu. Nhưng với một ứng dụng thời gian
thực, khách hàng sẽ mở một kết nối trực tiếp đến máy chủ để một trong hai bên
có thể gửi tin nhắn cho bên kia mà không cần chờ để được yêu cầu. Nếu sự kiện
gì đó trên máy chủ thay đổi, nó sẽ gửi dữ liệu qua kết nối đến máy khách. Nếu
một sự kiện gì đó trên máy khách thay đổi, nó sẽ gửi nó đến máy chủ và máy chủ có
thể quyết định xem các máy trạm khác có cần biết về sự thay đổi đó hay khơng.
1.3 Một số nền tảng Web (Web Framework)
1.3.1 Khái niệm Web Framework
Ngày nay khi các lập trình viên cần xây dựng các Website và các ứng dụng
Web phức tạp, sẽ mất nhiều thời gian nếu xây dựng ứng dụng từ đầu, do vậy cần
đến một cách xử lý nhanh hơn. Chính vì vậy các Web Framework ra đời.
a. Khái niệm về Framework
Nguyên gốc của từ “Framework” mang nghĩa là “bộ khung”. Framework
là một thư viện các mã lệnh được xây dựng sẵn để lập trình viên sử dụng, chúng
cung cấp các chức năng cơ bản cần thiết mà người lập trình thường xuyên phải sử
dụng khi tiến hành phát triển phần mềm, Web,… Có thể coi Framework như tập
các “vật liệu” ở từng lĩnh vực cho người lập trình, thay vì họ phải mất nhiều thời
gian để tự thiết kế trước khi dùng. Do vậy, người lập trình chỉ cần tìm hiểu và khai
thác các vật liệu này rồi thực hiện (tức lập trình) để gắn kết chúng lại với nhau,
tạo ra sản phẩm.
Trong thực tế: Để thiết kế một trò chơi đua xe, nếu khơng có bộ Framework
chun dụng cho Game, người lập trình Game phải tự tạo ra: khung xe, bánh xe,
người, đường đi… rồi mới lắp ghép chúng lại với nhau để tạo ra không gian cho
7
game. Nếu có sẵn bộ Framework thì lập trình viên chỉ cần viết lệnh lấy chúng ra
từ Framework và ghép chúng lại. Có thể hình dung Framework bao gồm các vật
liệu như gạch, cát, xi măng, sắt… nhưng tùy theo cách thiết kế của người kiến
trúc sư mà tạo ra những căn nhà với hình dạng khác nhau. Theo cách này, dù cho
người lập trình khơng có kỹ năng cao nhưng cũng có thể tạo ra sản phẩm đạt được
chất lượng tốt thông qua việc sử dụng Framework và tuân theo các quy tắc của nó.
b. Khái niệm về Libraly
Library là một tập hợp các chức năng (Functions), các lớp (Class) được viết
sẵn để có thể tái sử dụng. Mỗi Function hoặc Class phục vụ cho một công việc cụ
thể nào đó. Khác với Library, Framework là một khối kiến trúc được thiết kế đầy
đủ hợp nhất để thực thi. Lập trình viên phải tuân thủ theo nguyên tắc của Framework
và triển khai mã nguồn theo Logic của Framework.
c. Khái niệm về Web Framework
Web Framework là một khuôn khổ phần mềm được thiết kế để hỗ trợ phát
triển các ứng dụng Web bao gồm các dịch vụ Web, tài nguyên Web và các API
Web, cung cấp các chức năng cần thiết để tạo ra một ứng dụng Web.
Bằng cách sử dụng Web Framework lập trình viên có thể phát triển dựa
trên hàng ngàn, hàng chục ngàn dòng mã đã được viết bởi các kỹ sư chuyên
nghiệp. Khi phát triển ứng dụng theo các quy tắc của Web Framework, người lập
trình có thể dễ dàng thêm các chức năng khác nhau và tăng tính bảo mật mà khơng
cần viết một số lượng lớn mã code lập trình.
Thực tế hiện nay có rất nhiều Web Framework, dưới đây đồ án sẽ giới thiệu
một số Web Framework được sử dụng nhiều trong thời điểm hiện nay.
1.3.2 Ruby on Rails
Ruby on Rails là một Framework được phát triển trên ngơn ngữ lập trình
Ruby. Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào
năm 2015. Ruby on Rails là phần mềm mã nguồn mở miễn phí được phát triển
bởi David Heinemeier Hansson. Ruby là ngơn ngữ lập trình, sử dụng Ruby các
lập trình viên có thể phát triển nhiều loại ứng dụng khác nhau ngồi việc tạo
Website ví dụ như các phần mềm chạy trên máy tính cá nhân hay máy chủ. Ruby
on Rails là Web Framework được viết sử dụng ngôn ngữ Ruby.
Ưu điểm của Ruby on Rails:
- Ngôn ngữ Ruby dễ học, là một Framework hoàn chỉnh (full-stack).
8
- Rails dùng ít code hơn các Framework khác, tốc độ tạo ra những ứng dụng
mẫu nhanh chóng nhưng tại tốn ít chi phí bảo trì
- Thành thạo Rails, lập trình viên sẽ dễ dàng hiểu được các Framework hiện
đại khác của PHP, Python,..
1.3.3 CakePHP
CakePHP là một Web Framework được tạo ra với mục đích cung cấp một
Framework cho người sử dụng PHP ở cả phía back-end và front-end đều có thể
phát triển nhanh chóng, mạnh mẽ và linh hoạt.
Hiện nay, CakePHP được giới thiệu trên phạm vi toàn cầu, cung cấp các
chức năng có thể đáp ứng được những yêu cầu cao của người dùng. CakePHP
được tạo ra sao cho người mới bắt đầu sử dụng, hầu hết không cần phải chỉnh sửa
lại môi trường hoạt động và thay đổi cài đặt máy chủ mà vẫn có thể đưa vào sử
dụng một cách dễ dàng. CakePHP một công cụ tốt cho việc tạo ra các ứng dụng
Web cần cấp độ bảo mật cao, vì nó có nhiều tính năng bảo mật tích hợp như xác
nhận đầu vào, phịng chống SQL Injection, XSS (Cross-Site Scripting).
1.3.4 ASP.NET
ASP.NET là một Web Framework được phát triển và cung cấp bởi
Microsoft, cho phép những người lập trình tạo ra những trang Web động, những
ứng dụng Web. Lần đầu tiên được đưa ra thị trường vào tháng 1 năm 2002, là
công nghệ kế tiếp của Microsoft Active Server Pages (ASP), cho phép những
người lập trình viết ASP.NET với bất kỳ ngôn ngữ nào được hỗ trợ bởi .NET
Language như: Visual Basic.Net, F#, C#,…
Thay vì phải đọc và thông dịch mỗi khi trang Web được yêu cầu, ASP.NET
biên dịch những trang Web động thành những tập tin DLL mà qua đó máy chủ
thực thi nhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so
với kỹ thuật thông dịch của ASP. ASP.NET có một số thành phần như sau:
- ASP.NET Web Forms - tạo ra một khung để xây dựng các trang Web từ
các thành phần hỗ trợ, với các sự kiện UI (User Interface) được xử lý phía
máy chủ.
- ASP.NET MVC - cho phép xây dựng các trang Web bằng cách sử dụng
mẫu thiết kế Model – View – Controller .
- ASP.NET Web API - một khung để xây dựng API Web trên .NET
Framework.
9
- SignalR - một khung giao tiếp thời gian thực để liên lạc hai chiều giữa máy
khách và máy chủ.
1.5 Giải pháp phịng chống tấn cơng lên ứng dụng Web
Phần trên của đồ án đã nêu lên một số cách tấn công phổ biền lên ứng dụng
Web dựa theo cách chúng ảnh hưởng đến các tính chất về an tồn thơng tin, tiếp
theo đồ án sẽ trình bày về các giải pháp để đảm bảo các tính chất này.
1.5.1 Giải pháp đảm bảo tính xác thực
Đây là vấn đề ưu tiên hàng đầu, khi một đối tượng nào đó có nhu cầu truy
nhập và sử dụng một tài nguyên Web, đối tượng này cần xác định rõ tài nguyên
mà đối tượng khai thác có đúng là tài nguyên hợp pháp hay khơng, đồng thời đối
tượng cũng phải chứng minh mình là ai.
Ứng dụng Web có quyền yêu cầu đối tượng khai thác tài nguyên đưa ra
giấy ủy nhiệm (credential) có chứa thơng tin xác thực. Ví dụ, khi Client (có thể là
một ứng dụng phía Client, một dịch vụ hoặc người dùng,…) có yêu cầu truy cập
ứng dụng Web A/trang Web B, ứng dụng Web A/trang Web B có thể yêu cầu
Client đưa ra giấy ủy nhiệm chứa thông tin nhận dạng duy nhất Client (chẳng hạn,
tên người dùng/mật khẩu hoặc một chứng chỉ X.509).
Một vấn đề với xác thực người dùng là vấn đề trao quyển sử dụng, ứng
dụng Web cần xác định rõ đối tượng có nhu cầu truy nhập và khai thác tài nguyên
Web có quyền khai thác hay không và đối tượng được khai thác những gì. Thơng
thường mỗi tài ngun Web đều gắn với một cơ sở dữ liệu người dùng, việc phân
quyền trong CSDL cho biết người dùng có quyền khai thác tài nguyên nào và khai
thác những gì. Ứng dụng Web cần có các cơ chế cho phép kiểm soát truy nhập.
Với việc đảm bảo được về mặt xác thức, ứng dụng Web sẽ phịng tránh
được các tấn cơng về giả mạo người dùng hay giả mạo người cung cấp dịch vụ.
1.5.2 Giải pháp đảm bảo tính bí mật
Thơng tin trao đổi giữa Client và máy chủ Web, đúng hơn là giữa Client và
ứng dụng Web, giữa các nút của ứng dụng Web, giữa Client và Web Server cần
được giữ bí mật. Những thơng tin, dữ liệu này nên được mã hóa để bảo vệ kể cả
lúc lưu trữ và cả khi gửi đi.
Để giải quyết vấn đề này, các ứng dụng Web cần tích hợp chức năng mã
hóa dữ liệu, sử dụng các giao thức an toàn như SSL/TLS nhằm tránh các kiểu tấn
công nghe lén, thu thập dữ liệu.
10
1.5.3 Giải pháp đảm bảo tính tồn vẹn
Thơng tin trao đổi giữa Client và Web server cần được đảm bảo nguyên
ven, không bị sửa đổi khi đi trên đường truyền, tránh những tấn cơng về chèn,
thay đổi, xóa bỏ dữ liệu, thơng tin. Có thể giải quyết vấn đề này bằng cách sử
dụng mã xác thực thông báo – MAC hay HMAC để đảm bảo tính tồn vẹn cho
dữ liệu.
1.5.4 Giải pháp đảm bảo tính chống chối bỏ
Điều này hồn toàn cần thiết để chứng minh rằng, đối tượng yêu cầu tài
nguyên Web đã truy nhập và khai thác tài nguyên, đồng thời chứng minh rằng,
ứng dụng Web đã đáp ứng yêu cầu của đối tượng. Điều này có thể giải quyết bằng
cách sử dụng chữ ký số xác minh hành vi của hai bên.
1.5.5 Giải phép đảm bảo tính sẵn sàng
Để đảm bảo tính sẵn sàng, cần có các biện pháp sao lưu phục hồi dữ liệu
của ứng dụng Web, đồng thời hệ thống cần có nhiều server phục vụ, server phân
tải, cơ chế phát hiện tấn công DoS hiệu quả.
Kết luận chương
Trong 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 tồ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, tồ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 tồ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.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 qt như sau:
Kênh
cơng
cộng
Máy của người
gửi
Dữ liệu
đã qua
mã hóa
Máy chủ
Dữ liệu
đã qua
mã hóa
Máy của người
nhận
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 tố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 tồn.
12
Ngồi ra, hệ mật phải là một thuật tố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 tố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 q 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.
2.2.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.
13
2.2.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.
Ngồ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
EK
Hàm giải mã
E −1K
Khóa K
n
x'j = xj
cj
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
cj
c0 = IV
Hàm giải mã
E −1K
c j −1
n
xj
Khóa K
Khóa K
Hàm mã hóa
EK
c j −1
n
x'j = xj
cj
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
Khóa K
c j −1
Hàm mã hóa
EK
Hàm mã hóa Khóa K
EK
n
r
r bit trái
nhất
xj
r
tj
Oj
tj
Oj
r
a) Mã hóa
x'j = xj
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 hồn tồ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
r bit trái
nhất
xj
r
Hàm mã hóa
EK
tj
Hàm mã hóa Khóa K
EK
tj
Oj
Oj
r
a) Mã hóa
b) Giải mã
Hình 2.5 Chế độ OFB
Chế độ CTR
16
x'j = xj
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. Tuy nhiên, ECB cũng là
chế độ hoạt động yếu nhất và dễ bị tổn thương trước tấn công dùng lại. Việc chọn
chế độ hoạt động phù hợp sẽ tùy thuộc vào những yêu cầu cụ thể của ứng dụng.
Đối với những ứng dụng yêu cầu độ an tồn cao và những ứng dụng dựa trên phần
mềm thì chế độ OFB và CTR là lựa chọn tốt nhất.
Với những cơ sở được đưa ra ở trên, đồ án sẽ lựa chọn CTR để làm chế độ
làm việc cho AES cho ứng dụng Chat.
2.3 Giải pháp sử dụng bộ giao thức SSL/TLS
Phần trên của đồ án đã đề xuất giải pháp tích hợp chức năng mã hóa ở tầng
ứng dụng. Ngồi ra, để tăng tính bí mật, đảm bảo tính xác thực của máy chủ, tồn
vẹn của dữ liệu trong ứng dụng Chat, đồ án đề xuất sử dụng SSL/TLS.
17