ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GỊN
BÁO CÁO ĐỀ TÀI
NHẮN TIN BẢO MẬT (CĨ MÃ HÓA) TRÊN PHONE
HỌC PHẦN: SEMINAR
Sinh viên thực hiện:
LÊ NGUYỄN QUỲNH THƠ
BÙI THANH THÚY VY
TRẦN CHIỀU XUÂN
Lớp:
DTU 1182
Nhóm thực hiện:
1
TP HỒ CHÍ MINH, THÁNG 5 NĂM 2022
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GỊN
BÁO CÁO ĐỀ TÀI
NHẮN TIN BẢO MẬT (CĨ MÃ HÓA) TRÊN PHONE
HỌC PHẦN: SEMINAR
Sinh viên thực hiện:
LÊ NGUYỄN QUỲNH THƠ
BÙI THANH THÚY VY
TRẦN CHIỀU XUÂN
Lớp:
DTU 1182
Nhóm thực hiện:
1
TP HỒ CHÍ MINH, THÁNG 5 NĂM 2022
MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................................................ 1
PHẦN 1: TỔNG QUAN VỀ E2EE – HỆ THỐNG NHẮN TIN BẢO MẬT CÓ MÃ HĨA ... 2
1.1.
Tổng quan về phương thức mã hóa đầu cuối E2EE .................................................... 2
1.2.
Ứng dụng nhắn tin sử dụng phương thức mã hóa đầu cuối ....................................... 4
PHẦN 2: CƠ SỞ LÍ LUẬN........................................................................................................... 6
2.1.
Tổng quan về ứng dụng thời gian thực (Realtime) ...................................................... 6
2.2.
JavaSript .......................................................................................................................... 6
2.3.
NodeJs .............................................................................................................................. 7
2.4.
Hệ quản trị cơ sở dữ liệu NoSQL MongoDB................................................................ 9
PHẦN 3: PHÂN TÍCH, THIẾT KẾ ỨNG DỤNG NHẮN TIN BẢO MẬT (CÓ MÃ HÓA) 11
3.1.
Giới thiệu ....................................................................................................................... 11
3.2.
Sơ đồ mô tả use case ..................................................................................................... 11
3.3.
Sơ đồ phân rã chức năng .............................................................................................. 14
3.4.
Thiết kế cơ sở dữ liệu .................................................................................................... 14
3.5.
Sơ đồ thuật tốn chương trình ..................................................................................... 17
LỜI MỞ ĐẦU
Nhắn tin là hình thức mà con người trao đổi thơng tin với nhau qua mạng máy tính. Nếu
trong đời sống thường ngày chúng ta giao tiếp với nhau thơng qua lời nói, hành động, cử
chỉ thì trên mạng chúng ta thường trao đổi thông tin qua chat, email, ... Hiện nay với sự
phát triển không ngừng của Internet đã giúp cho việc trao đổi thông tin của chúng ta trở nên
dễ dàng hơn thông qua các ứng dụng nhắn tin, đang dần thay thế cho hình thức nhắn tin
truyền thống và trở thành xu hướng của mọi người. Và khi truyền thông kỹ thuật số ngày
càng phát triển, nhu cầu bảo mật thông tin trên nền tảng internet cũng như trong giao tiếp
trực tuyến ngày càng cao do tin nhắn của người dùng có thể trở nên khơng an tồn vì nó
được gửi thơng qua mạng cơng cộng, tại đó các hacker có thể xâm nhập và đánh cắp thơng
tin. Vì vậy, có khơng ít những phương thức lưu trữ và mã hóa ra đời, trong đó có phương
thức mã hóa đầu cuối End-to-End Encryption (E2EE) – một phương thức nhắn tin bảo mật
có mã hóa đang được triển khai sử dụng trên các nền tảng nhắn tin nổi tiếng ngày nay.
Đề tài “Nhắn tin bảo mật (có mã hóa) trên phone bao gồm 3 phần:
Phần 1: Tổng quan về E2EE – Hệ thống nhắn tin bảo mật có mã hóa.
Phần 2: Cơ sở lí luận.
Phần 3: Phân tích, thiết kế ứng dụng nhắn tin bảo mật (có mã hóa).
1
PHẦN 1: TỔNG QUAN VỀ E2EE – HỆ THỐNG NHẮN TIN BẢO
MẬT CÓ MÃ HÓA
1.1.
Tổng quan về phương thức mã hóa đầu cuối E2EE
1.1.1. Định nghĩa
Mã hóa đầu cuối là một phương thức để mã hóa thơng tin liên lạc giữa người nhận và người
gửi sao cho họ là bên duy nhất có thể giải mã dữ liệu. Nguồn gốc của nó có thể được bắt
đầu từ những năm 1990, khi Phil Zimmerman phát hành Pretty Good Privacy (được biết
đến với tên PGP).
Trong quá trình tin nhắn đi, nội dung thông tin được chuyển đổi sang những ký tự đặc biệt
một cách ngẫu nhiên và không mang ý nghĩa. Việc mã hoá đầu cuối giúp ngăn được sự can
thiệp của tội phạm mạng, gián điệp, các công ty viễn thông, cơ quan chính phủ hay thậm
chí là cả cơng ty cung cấp dịch vụ vào quá trình chuyển tin nhắn.
1.1.2. Cơ chế hoạt động
Dữ liệu được mã hoá đầu cuối đảm bảo rằng khơng có ai khác ngồi người gửi và người
nhận đang trao đổi thơng tin có thể đọc được nội dung tin nhắn hoặc các dữ liệu mà hai bên
chia sẻ. Các công cụ phổ biến hiện nay đang có cơng nghệ End-to-End-Encrypted như
Whatsapp, Viber, Telegram, Signal, Google Duo, … mỗi khi bắt đầu các cuộc trò chuyện
với người nhận hoặc một nhóm trao đổi thơng tin đều thiết lập phương thức mã hoá ban
đầu trước khi các q trình trao đổi thơng tin bắt đầu. Kể từ thời điểm đó trở đi, tồn bộ các
dữ liệu được trao đổi giữa bạn và người nhận hay giữa bạn và các thành viên trong nhóm
chat sẽ được mã hố đi qua máy chủ mà máy chủ hồn tồn khơng biết bạn đang trao đổi
thơng tin gì, máy chủ chỉ có vai trị truyền nhận và đồng bộ thơng tin đã được mã hố.
Mã hóa E2EE sử dụng mã khóa giữa người nhận và người gửi đang trực tiếp tham gia vào
q trình truyền tải. Trong E2EE có 2 loại khóa là khóa cơng khai và khóa bí mật, đều được
tạo nên từ những dãy số ngẫu nhiên, gọi là giao thức trao đổi khóa Diffie-Hellman. 2 mã
khóa này có nhiệm vụ hồn tồn khác nhau. Khóa cơng khai sẽ mã hóa dữ liệu, thay đổi
nội dung tài liệu. Cịn khóa bí mật sẽ tiến hành giải mã nội dung.
2
– Người gửi tập tin mã hóa dữ liệu bằng khóa cơng khai. Khóa cơng khai sẽ được chia
sẻ với mọi người.
– Người nhận sẽ tiến hành giải mã bằng khóa bí mật. Khóa bí mật phải được bảo vệ, nó
sẽ nằm hồn tồn ở người có quyền giải mã (người nhận).
Hình 1.1.
Cơ chế hoạt động của phương thức mã hóa đầu cuối
1.1.3. Ưu điểm của mã hóa đầu cuối
Cho phép bảo mật và quyền riêng tư cho dữ liệu của người dùng, đảm bảo rằng chỉ người
gửi và người nhận có thể đọc những gì đã được gửi.
Ngăn chặn bất kỳ bên thứ ba nào chặn tin nhắn và đọc chúng nếu tin nhắn bị chặn. Điều
này có nghĩa là ngay cả khi ai đó xâm nhập vào hệ thống và đánh cắp tất cả dữ liệu, họ sẽ
không thể đọc được vì có một lớp mã hóa bổ sung trên đầu dữ liệu.
Giữ thông tin nhạy cảm ở chế độ riêng tư. Nếu mã hóa một tin nhắn bằng mã hóa end-toend, bất kỳ ai ngoại trừ người nhận dự định sẽ không thể giải mã được tin nhắn, khiến người
khác khơng thể giải mã những gì đã nói hoặc cách giải mã nó.
Bảo vệ khỏi một số loại tấn công mạng như tấn công man-in-the-middle hoặc lừa đảo bằng
cách mã hóa kết nối giữa hai bên để khơng ai có thể chặn giao tiếp hoặc giả mạo tin nhắn.
1.1.4. Nhược điểm của mã hóa đầu cuối
Nếu mất khóa mã hóa, có thể sẽ mất quyền truy cập vào dữ liệu được nhận.
3
Các mã khóa đơn giản khơng thể tránh khỏi việc bị tấn cơng và thử các khóa ngẫu nhiên
cho đến khi khóa đúng được tìm thấy.
1.2.
Ứng dụng nhắn tin sử dụng phương thức mã hóa đầu cuối
Hiện nay, các nền tảng nhắn tin phổ biến như Viber, WhatApp, … đang áp dụng mã hóa
đầu cuối (E2EE) để bảo mật và tránh rị rỉ thơng tin người dùng. Ở Việt Nam, nền tảng nhắn
tin được sử dụng nhiều nhất – Zalo – cũng đã triển khai phương thức mã hóa đầu cuối nhằm
nâng cao về bảo mật, giúp bảo vệ tối ưu các nội dung trao đổi của người dùng qua nền tảng
này.
1.2.1. Giới thiệu
Zalo là ứng dụng nhắn tin, gọi điện miễn phí hướng tới thị trường Việt Nam, phát triển,
hoạt động trên nền tảng di động, Web tương tự như Viber, Whatapp, Line, Wechat, …
Zalo được phát triển và phát hành bởi công ty cổ phần VNG. Phiên bản đầu tiên được ra
mắt vào ngày 08/08/2012 không nhận được sự quan tâm nhiều từ người dùng.
Tháng 12/2012, Zalo chính thức đi theo mơ hình mobile-first và nhanh chóng thu hút được
một lượng lớn người dùng Việt Nam nhờ việc sản phẩm hoạt động tốt, ổn định trên hạ tầng
mạng Việt Nam.
Năm 2021, Zalo trở thành ứng dụng nhắn tin được yêu thích nhất ở Việt Nam với hơn 64
triệu người sử dụng với mục đích liên lạc, làm việc và học tập.
1.2.2. Tính năng nổi bật
Nhắn tin, gọi điện miễn phí.
Kiểm sốt nguồn kết bạn.
Cài đặt người xem nhật ký.
Thu hồi xin nhắn.
Tin nhắn tự xóa.
Chặn tin nhắn và cuộc gọi từ người lạ.
Thanh tốn bằng thẻ tín dụng qua ZaloPay.
Mã hóa đầu cuối.
4
1.2.3. Tính năng mã hóa đầu cuối của Zalo
Tính năng mã hóa đầu cuối được Zalo xây dựng và phát triển dựa trên giao thức mã nguồn
mở Signal Protocol. Đây là giao thức quốc tế được hầu hết ứng dụng nhắn tin hàng đầu thế
giới sử dụng cho E2EE. Rất nhiều chun gia cơng nghệ uy tín tồn cầu cũng đã kiểm định
và bảo chứng về chất lượng, độ bảo mật của Signal Protocol trong nhiều năm qua.
E2EE hiện áp dụng cho các cuộc trò chuyện cá nhân và sắp có cho nhóm dưới 10 thành
viên. Người dùng có thể kích hoạt tính năng này trên ứng dụng di động, Zalo PC hay phiên
bản web. Điểm nổi bật của phương thức này là thông tin của người dùng bao gồm tin nhắn
văn bản, thoại, hình ảnh, tập tin… được mã hóa và giải mã trực tiếp trên thiết bị của người
dùng với sự hỗ trợ của các cặp mã khóa bảo vệ.
Cơ chế hoạt động của E2EE trên Zalo:
Trước khi gửi đi, nội dung gốc của tin nhắn được mã hóa trên máy của người gửi.
Tin nhắn đã mã hóa được gửi đến máy chủ Zalo.
Máy chủ Zalo gửi tin nhắn mã hóa đến máy của người nhận.
Tin nhắn mã hóa được giải mã trên máy của người nhận để trở về nội dung gốc.
Hình 1.2.
Cơ chế hoạt động của phương thức mã hóa đầu cuối trên Zalo
Với mã hóa đầu cuối, nội dung trao đổi của người dùng qua Zalo sẽ được bảo vệ tối ưu hơn.
Kể cả khi hệ thống trung gian gặp sự cố thì nội dung tin nhắn gốc của người dùng vẫn
không bị lộ. Điều này giúp người dùng yên tâm hơn khi giao tiếp trên Zalo trong bối cảnh
ứng dụng này ngày càng trở nên không thể thiếu trong cuộc sống.
5
PHẦN 2: CƠ SỞ LÍ LUẬN
2.1.
Tổng quan về ứng dụng thời gian thực (Realtime)
2.1.1. Hệ thống thời gian thực
Thời đại hiện nay hệ thống thông tin thời gian thực được sử dụng rất nhiều lĩnh vực như:
trong ngành công nghiệp sản xuất, kiểm sốt tiến trình (trong nhà máy, trong y tế, trong hệ
thống giao thông vận tải, …). Sự phát triển của hệ thống thông tin thời gian thực yêu cầu
mỗi phần tử của hệ thống phải ở thời gian thực, tức thời, và một hệ thống được thiết kế theo
cách như vậy được gọi là hệ điều hành thời gian thực hay hệ thống thời gian thực.
Ứng dụng thời gian thực (Realtime). Realtime ở đây chính là xử lí giao tiếp từ người dùng
tới máy chủ theo thời gian thực, các ví dụ về Realtime gần gũi mà chúng ta có thể thấy đó
là facebook, gmail, …. Khi bạn nhận được một tin nhắn, một email hay một thông báo, gần
như ngay lập tưc giao diện sẽ hiển thị thông tin mà chúng ta không cần phải tương tác trước.
Tức là không chỉ khi chúng ta gửi yêu cầu lên cho server thì server mới trả về, mà server
sẽ tự biết khi nào gửi thông tin về cho chúng ta. Có thể coi đó như là một mối quan hệ hai
chiều.
2.1.2. Đặc điểm hệ thống thời gian thực
Một hệ thống thời gian thực phải được thiết kế làm sao cho các dịch vụ của nó có thể truy
cập vào phần cứng, phần mềm với khoảng thời gian tối thiểu. Có những kết hợp thích hợp
để đảm bảo cho những xử lý của mọi thành phần không vượt quá thời gian cho phép.
Như vậy, một hệ thống đáp ứng được yêu cầu thời gian thực, trong khoảng thời gian ngắn
nhất sẽ đem lại những lợi ích thiết thực cho khách hàng, cho chính doanh nghiệp. Đáp ứng
được các yêu cầu về tốc độ truy cập, kết quả mong đợi nhanh nhất, mang lại hiệu quả thiết
thực
2.2.
JavaSript
2.2.1. Giới thiệu
Javascript là một ngơn ngữ lập trình kịch bản dựa trên các đổi tượng được phát triển sẵn có
hoặc tự định nghĩa từ các ý niệm nguyên mẫu, Javascript được dùng rộng rãi để tạo ra các
6
trang web có tính tương tác, đồng thời cũng được sử dụng để viết các script trong các ứng
dụng.
Giống như các ngơn ngữ lập trình khác như Java, C/C++, C# thì Javascript cũng có các cú
pháp tương tự các hàm tốn học, câu lệnh if-else, vịng lặp. Nhưng điểm đặc biệt ở
Javascript đó là chỉ sử dụng cho các ứng dụng chạy trên nền tảng web. Hiện nay Javascript
được hỗ trợ hầu như trên tất cả các trình duyệt (Chrome, CocCoc, Firefox…). Javascript
chứa các thư viện tiêu chuẩn cho các Object, nó có thể mở rộng cho nhiều mục đích bằng
việc bổ sung thêm các Object, ví dụ:
Javascript phía máy khách, JavaScript được mở rộng bằng cách cung cấp các Object
để quản lí trình duyệt và DOM (Document Object Model) của nó. Ví dụ, ở phía máy
khách cho phép tác động tới các yếu tố lên một trang HTML và phản hồi hành động
cảu người dùng như nhập, click chuột, …
Javsscript phía Server, Javascript được mở rơng bằng cách cung cấp thêm các đối
tượng cần thiết để chạy Javascript trên máy chủ. Ví du, ở phía Server cho phép ứng
dụng kết nối cơ sở dữ liệu (database), cung cấp thông tin một cách liên tục, hoặc
thực hiện thao tác với các tập tin trên máy chủ.
2.2.2. Tính ứng dụng
Lập trình web front-end với các framework hàng đầu: JQuery, React, Angular,
VueJS.
Back-end với các framework của NodeJS.
Lập trình ứng dụng di động với React Native, Ionic, NativeScript, …
Lập trình game với Unity.
Lập trình Robot, IoT.
2.3.
NodeJs
2.3.1. Định nghĩa
Nodejs là một mã nguồn chạy trên môi trường Javascript V8 Engine. NodeJS có thể chạy
trên đa nền tảng hệ điều hành khác nhau từ Windows, Linux, cho đến MacOs. Mặc dù
7
NodeJS không phải là một JavaScript framework nhưng hầu hết các module của nó được
viết bằng JavaScript.
2.3.2. Các tính năng vượt trội
Bất đồng bộ: Tất cả các API của Nodejs đều bất đồng bộ, nó chủ yếu dựa trên nền
của Nodejs Server và chờ đợi Server trả dữ liệu về.
Tốc độ cao: Vì được xây dựng trên dựa vào nền tảng V8 Javascript nên khả năng
thực thi chương trình nhanh.
Khả năng mở rộng cao: Một trong những bí mật để Node.js có thể mở rộng đó là
Event Loop. Kiến trúc này giúp nó đáp ứng các yêu cầu cho từng client khác hoàn
toàn khác so với các cơng nghệ khác, nó có thể đáp ứng được số lượng lớn client
nhiều hơn hàng trăm lần so với các ngôn ngữ khác.
2.3.3. Module trong NodeJs
Module cũng giống như các thư viện ở PHP, C, C#, … Sử dụng Module giúp đơn giản hóa
việc tạo ra các ứng dụng, giúp quản lí mã lệnh một cách dễ dàng hơn. Module có thể đơn
giản là một hàm hay một đối tượng. Mỗi Module thường được khai báo ở một tập tin riêng
lẽ.
Một số Module chính trong việc xây dựng ứng dụng Chat:
Express:
o Express là một framework, nó cung cấp rất nhiều tính năng mạnh mẽ trên đa nền
tảng, Express dễ dàng để phát triển các ứng dụng nhanh dựa trên Node.js cho các
ứng dụng web.
o Express hỗ trợ các phương thức HTTP và middleware tạo ra một API mạnh mẽ,
sử dụng dễ dàng.
Socket.io:
o Được xây dựng nhằm tạo ra ứng dụng real time trên nền tảng NodeJs.
Socket.io cung cấp cho lâp trình viên các đặc trưng như event, room và tự
động phục hồi lại kết nối.
o Khi sử dụng Module Socket.io nó sẽ cung cấp cho chúng ta các Object: socket
server quản lí phía server và socket client điều khiển phía người dùng.
8
o Socket là cách tổ chức mơ hình client-server để trong cả hai bên ln trong
tình trạng sẵn sàng trả lời bên kia và ngược lại, để quá trình này diễn ra Client
và Server ln ở trong tình trạng “keep alive”.
o Khi Client kết nối tới Socket.io server, nó sẽ gửi đến server một “handshake
HTTP request”. Server sẽ phân tích request đó trong suốt q trình kết nối.
Nó sẽ tìm cấu hình của middleware đã được đăng ký với server và thực thi
chúng trước khi đưa ra sự kiên kết nối. Khi kết nối thành cơng thì “connect
event listener” được thực thi, tạo ra một dịnh danh của Client mà mỗi một
Client kết nối tới Server sẽ có một định danh.
2.4.
Hệ quản trị cơ sở dữ liệu NoSQL MongoDB
NoSQL là một dạng cơ sở dữ liệu mã nguồn mở. NoSQL là viết tắt bởi NoneRelational
SQL, hay còn được gọi là Not-Only SQL.
NoSQL database là một database có kiểu lưu trữ, truy vấn dữ liệu hoàn toàn khác so với
SQL. NoSQL bỏ qua tính tồn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và
khả năng mở rộng (scalability). Vì vậy NoSQL phù hợp trong nhiều dự án Big Data, các
dự án Real-time, số lượng dữ liệu nhiều. NoSQL Database ra đời, giải quyết được những
khuyết điểm của RDBMS:
Dữ liệu trong NoSQL Database được lưu dưới dạng document, object. Dễ dàng trong
việc truy vấn và nhanh hơn RDBMS.
NoSQL có thể làm việc hồn tồn với dữ liệu dạng khơng có cấu trúc
Việc thay đổi cấu trúc dữ liệu (Thêm, xóa trường hoặc bảng) rất dễ dàng và nhanh
gọn trong NoSQL.
Vì khơng đặt nặng tính ACID (Atomicity, Consistency, Isolation, Durability) của
transactions và tính nhất quán của dữ liệu, NoSQL DB có thể mở rộng, chạy trên
nhiều máy một cách dễ dàng.
Hiện nay, trên thị trường có khá nhiều NoSQL Database Management System: MongoDB,
Redis, RavenDB, Neo4j, … Ta có thể chia NoSQL thành 4 loại:
Key-Value Database.
9
Document Database.
Graph Database.
Column-Family Database.
MongoDB là một trong những cơ sở dữ liệu mã nguồn mở NoSQL, là cơ sở dữ liệu hướng
tài liệu, các dữ liệu được lưu trong document kiểu JSON nên việc truy vấn rất nhanh và khả
năng mở rộng tốt, nó hoạt động trên khái niêm collection và document.
Collection trong MongoDB là nhóm các tài liệu (document), nó tương đương với bảng
(table) trong các cơ sở dư liệu khác. Tuy vậy sự khác biệt đó là nó khơng có rang buộc mối
quan hệ các hệ cơ sở dữ liệu, vì vậy mỗi collection có thể chứa nhiều thể loại dữ liệu khác
nhau không giống như bảng trong hệ quản trị mySQL là các trường cố định.
Document trong MongoDB có cấu trúc kiểu JSON, được thể hiện dưới dạng các cặp keyvalue nên có tính năng động lớn. Document cũng giống như các record dữ liệu trong
MySQL, tuy nhiên sự khác biệt ở đây đó là các cặp key-value có thể khơng giống nhau ở
mỗi document.
10
PHẦN 3: PHÂN TÍCH, THIẾT KẾ ỨNG DỤNG NHẮN TIN BẢO
MẬT (CĨ MÃ HĨA)
3.1.
Giới thiệu
Trao đổi thơng tin với nhau hàng ngày là một nhu cầu tất yếu của mọi người. Cuộc cách
mạng công nghiệp 4.0 ngày càng thu hẹp khoảng cách giữa mọi người với nhau bằng các
ứng dụng mạng xã hội, nhắn tin trực tuyến. Mỗi ngày, người dùng trao đổi rất nhiều thơng
tin trên Internet, trong đó có những nội dung quan trọng như hồ sơ sức khỏe, tài chính, mật
khẩu, ảnh cá nhân và gia đình, những cuộc giao tiếp thân mật... Vì thế, việc bảo vệ an tồn
thơng tin trên mạng là vấn đề được người dùng toàn cầu quan tâm. Ứng dụng nhắn tin bảo
mật (có mã hóa) giúp người dùng chắc chắn rằng khơng ai có thể giải mã và đọc được dữ
liệu của mình ngoại trừ bên gửi và nhận tin nhắn. Để truy cập vào ứng dụng, yêu cầu người
dùng phải đăng nhập hoặc đăng kí tài khoản để có thể đăng nhập vào sử dụng các chức
năng của ứng dụng. Sau khi đăng nhập, người dùng có thể sử dụng các chức năng như nhắn
tin, tìm kiếm, quản lý tài khoản, …
3.2.
Sơ đồ mơ tả use case
3.2.1. Tổng qt
Hình 3.1.
Sơ đồ mô tả use case của ứng dụng
3.2.1. Chức năng đăng nhập
11
Tên use case
Đăng nhập
Mô tả
Use-case cho phép người dùng đăng nhập thực hiện chức năng của
mình
Actor
User
Điều kiện kích hoạt Khi người dùng truy cập vào hệ thống
Điều kiện trước
Người dùng phải có tài khoản trong hệ thống
Điều kiện sau
Người dùng đăng nhập thành cơng
1. Hệ thống hiển thị màn hình đăng nhập
Luồng
sự
kiện
chính
2. Người dùng nhập Email và mật khẩu
3. Nếu thành công hệ thống sẽ tự động chuyển sang thao tác trang
chủ
4. Use-case kết thúc
Khi người dùng nhập sai Email và mật khẩu
1. Thông báo lỗi
Luồng sự kiện phụ
2. Quay lại bước 2 trong luồng sự kiện chính
Khi người dùng chọn chức năng tạo tài khoản, hệ thống sẽ chuyển
sang trang đăng kí tài khoản
3.2.3. Chức năng đăng kí
Tên use case
Đăng kí
Mơ tả
Use-case cho phép người dùng đăng kí trước khi sử dụng hệ thống
Actor
User
Điều kiện kích hoạt Khi người dùng chọn tạo tài khoản trên trang đăng nhập
Điều kiện trước
Người dùng phải chưa tài khoản trong hệ thống
Điều kiện sau
Người dùng đăng kí thành cơng
1. Hệ thống hiển thị màn hình đăng kí
Luồng
chính
sự
kiện 2. Người dùng nhập Email, tên đăng nhập và mật khẩu
3. Nếu thành công hệ thống sẽ tự động chuyển sang thao tác trang
chủ
12
4. Use-case kết thúc
Khi Email đã tồn tại trong hệ thống
1. Thông báo lỗi
2. Quay lại bước 2 trong luồng sự kiện chính
Khi tên đăng nhập đã tồn tại hoặc dưới 5 kí tự
Luồng sự kiện phụ
1. Thơng báo lỗi
2. Quay lại bước 2 trong luồng sự kiện chính
Khi mật khẩu dưới 5 kí tự
1. Thơng báo lỗi
2. Quay lại bước 2 trong luồng sự kiện chính
3.2.3. Các chức năng khác
Use-case cho phép người dùng sử dụng các chức năng chính của
Mơ tả
ứng dụng nhắn tin
Actor
User
Điều kiện kích hoạt Khi người dùng đăng nhập, đăng kí thành cơng
Điều kiện trước
Khơng
Điều kiện sau
Không
1. Hệ thống hiển thị các chức năng khác
2. Người dùng chọn nhắn tin
- Người dùng có thể xem tin nhắn
- Người dùng có thể nhắn tin
Luồng
chính
sự
kiện
+ Nhắn tin có mã hóa
+ Nhắn tin khơng có mã hóa
- Người dùng có thể xóa tin nhắn
3. Người dùng chọn tìm kiếm
- Người dùng có thể thêm bạn hoặc xóa bạn
4. Người dùng chọn quản lý hồ sơ
- Người dùng có thể chỉnh sửa thông tin
13
- Người dùng có thể đổi mật khẩu
5. Người dùng chọn tạo nhóm
- Người dùng có thể xem thành viên hoặc mời thành viên hoặc xóa
thành viên
6. Use-case kết thúc khi người dùng chọn đăng xuất
Luồng sự kiện phụ
3.3.
Không
Sơ đồ phân rã chức năng
Hình 3.2.
3.4.
Sơ đồ phân rã chức năng của ứng dụng
Thiết kế cơ sở dữ liệu
3.4.1. Biểu đồ lớp
14
Hình 3.3.
Biểu đồ lớp của ứng dụng
3.4.2. Cơ sở dữ liệu
Thơng tin người dùng:
Tên key
Giải thích
Kiểu dữ liệu
userid
Mã người dùng
String
username
Tên người dùng
String
email
Email người dùng
String
password
Mật khẩu
String
private_key
Khóa riêng tư
String
public_key
Khóa cơng khai
String
created_on
Ngày tạo
String
login()
Đăng nhập
void
register()
Đăng kí
void
findUserName()
Tìm kiếm
void
changeProfile()
Chỉnh sửa thơng tin
void
logout()
Đăng xuất
void
15
Thơng tin các Room:
Tên key
Giải thích
Kiểu dữ liệu
userid
Mã người dùng
String
users
Danh sách người dùng
Array
created_on
Ngày tạo
String
lastMsg
Tin nhắn gần nhất
String
deleted
Xóa (1: Có; 0: Khơng)
Boolean
admin
Quản lí room
String
createRoom()
Tạo room
void
getRoom()
Truy cập vào room
void
deleteGroupChat()
Xóa nhóm chat
void
Tên key
Giải thích
Kiểu dữ liệu
userid
Mã người dùng
String
room
Phịng (User, Group)
String
msgFrom
Tin nhắn được gửi từ
String
msgTo
Tin nhắn được gửi tới
String
msg
Nội dung tin nhắn
String
created_on
Ngày tạo
String
read_status
Trạng thái đọc tin nhắn
String
redelete
Xóa
Boolean
sendMsg()
Gửi tin nhắn
void
deleteMsg()
Xóa tin nhắn
void
msgList()
Danh sách tin nhắn
void
Thơng tin tin nhắn:
notifyDataSetChange() Thơng báo
void
3.4.3. Mơ hình quan hệ thực thể (ERD)
16
Hình 3.4.
3.5.
Mơ hình quan hệ thực thể ERD của ứng dụng
Sơ đồ thuật tốn chương trình
17
Hình 3.5.
Sơ đồ thuật tốn của chương trình
18