Tải bản đầy đủ (.pdf) (40 trang)

Xây dựng ứng dụng chat trên mobile ứng dụng công nghệ blockchain

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (10.94 MB, 40 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

TRẦN QUỐC THẮNG – 19522218
NGUYỄN HỮU PHÁT - 19521996

ĐỒ ÁN 1

XÂY DỰNG ỨNG DỤNG CHAT TRÊN MOBILE
ỨNG DỤNG CÔNG NGHỆ BLOCKCHAIN
Building chat application on mobile device applying
blockchain technology

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
ThS. Phan Trung Hiếu


LỜI CẢM ƠN
Đồ án với đề tài “XÂY DỰNG ỨNG DỤNG CHAT TRÊN MOBILE ỨNG
DỤNG CÔNG NGHỆ BLOCKCHAIN” là minh chứng cho q trình cố gắng khơng
ngừng trong việc tìm tòi, học hỏi trong suốt hơn 3 năm học tập tại trường Đại học Công
nghệ Thông tin. Thể hiện khả năng của bản thân trong việc áp dụng kiến thức chun
mơn vào giải quyết bài tốn thực tế.
Trong q trình thực hiện đồ án, em đã nhận được sự hướng dẫn tận tình từ q
thầy cơ, sự giúp đỡ và hỗ trợ từ gia đình cũng như bạn bè. Một cách đặc biệt, em xin
được gửi lời cảm ơn chân thành đến:
● Các thầy cô trường Đại học Công nghệ Thơng Tin nói chung và các thầy cơ trong


Khoa Cơng nghệ Phần mềm nói riêng đã tận tình truyền đạt kiến thức tới em
trong những năm học tập tại trường. Đó là tài sản q báu đã giúp em hồn thành
đồ án và cũng là hành trang cho con đường sự nghiệp của bản thân sau này.
● Em xin được gửi lời cảm ơn sâu sắc tới ThS.Huỳnh Tuấn Anh, người đã trực tiếp
hướng dẫn, chỉ bảo, giúp đỡ em những lúc khó khăn, đưa ra những lời khun bổ
ích để khố luận được hồn thành đúng tiến độ và đáp ứng các yêu cầu đề ra ban
đầu.
● Lời cuối cùng, em xin dành lời cảm ơn gửi tới gia đình, anh chị, bạn bè đã ln
bên cạnh để động viên và đóng góp ý kiến trong q trình hồn thành đồ án này.
Thành phố Hồ Chí Minh, tháng 07 năm 2022
Sinh viên 1

Trần Quốc Thắng

Sinh viên 2

Nguyễn Hữu Phát


DANH MỤC

LỜI CẢM ƠN

2

DANH MỤC

3

Chương 1. MỞ ĐẦU

Giới thiệu đề tài
Lý do chọn đề tài

4
4
5

Chương 2. TỔNG QUAN VỀ BLOCKCHAIN
Định nghĩa
Ứng dụng blockchain
Ứng dụng blockchain vào Chat app

5
5
7
9

Chương 3. TỔNG QUAN ĐỀ TÀI
Mục tiêu
Phạm vi
Phương pháp thực hiện
Ý nghĩa thực tiễn
Kết quả dự kiến
Công nghệ sử dụng
React Native
NestJS
MongoDB
Ethereum
IPFS
ReduxJs


9
9
9
9
9
10
10
10
11
11
12
13
14

Chương 4. XÂY DỰNG ỨNG DỤNG CHAT BẢO MẬT
Phân tích yêu cầu hệ thống
Phân tích yêu cầu chức năng
Yêu cầu về tính năng
Phân tích yêu cầu phi chức năng
Phân tích yêu cầu người dùng
Mơ hình use case tồn hệ thống
Một số use case của hệ thống
Use case Đăng ký
Use case Chat bảo mật
Use case Gửi files bảo mật
Thiết kế hệ thống
Thiết kế luồng sản phẩm

16

16
16
16
16
17
17
19
19
19
20
21
21


Thiết kế xử lý
Lược đồ tuần tự thao tác Đăng ký.
Lược đồ tuần tự thao tác Chat bảo mật
Lược đồ tuần tự thao tác Gửi files bảo mật
Thiết kế cơ sở dữ liệu
Lược đồ cơ sở dữ liệu
Mô tả các bảng dữ liệu
Thiết kế kiến trúc hệ thống
Thiết kế giao diện
Danh sách giao diện
Giao diện một số màn hình của ứng dụng

21
22
23
24

25
25
25
27
28
28
29

Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết quả đạt được
Thuận lợi và khó khăn
Thuận lợi
Khó khăn
Hướng phát triển

39
39
39
39
39
39

TÀI LIỆU THAM KHẢO

40

Chương 1. MỞ ĐẦU
1.1.

Giới thiệu đề tài

Ứng dụng nhắn tin là ứng dụng giúp người dùng có thể giao tiếp với nhau
thông qua ứng dụng. Người dùng hiện nay đều đang chuyển dần sang dùng các
ứng dụng nhắn tin đặc biệt là trên thiết bị di động nhiều hơn vì tiết kiệm được
nhiều cước phí hơn so với nhắn tin qua các nhà mạng truyền thống. Hiện nay, ứng
dụng nhắn tin là một trong những ứng dụng chiếm tỉ lệ download top đầu trên iOS
và Google Play: Zalo chiếm top 1 và Facebook Messenger top 5 ở thị trường Việt
Nam trong bảng xếp hạng được data.ai thống kê. Ta có thể thấy ứng dụng nhắn tin
là 1 trong những ứng dụng không thể thiếu đối với mỗi người dùng. Tuy nhiên,
việc đảm bảo an tồn thơng tin của người dùng là một vấn đề quan trọng đối với


mỗi ứng dụng đặc biệt là các vấn đề riêng tư như tin nhắn, tài liệu. Đa phần cơ sở
dữ liệu các ứng dụng nhắn tin hiện nay đều được lưu trữ tập trung dễ bị tấn công.
Ứng dụng chat bảo mật là một ứng dụng nhắn tin với tính năng mã hoá
đầu cuối tin nhắn của người dùng và các tập tin, tài liệu được mã hoá trước khi lưu
trữ.
1.2.

Lý do chọn đề tài
-

Trước vấn đề được nêu ở mục 1.1, nhóm em muốn nghiên cứu và thực hiện
một đề tài có thể giải quyết vấn đề trên.

-

Đề tài này cũng là một sự tâm huyết của giảng viên hướng dẫn ThS. Phan
Trung Hiếu. Thầy cũng mong muốn tạo ra một sản phẩm với công nghệ
mới để giải quyết các vấn đề hiện nay. Vì vậy, nhóm em là lứa sinh viên sẽ
thực hiện sứ mệnh này.


Chương 2. TỔNG QUAN VỀ BLOCKCHAIN
2.1.

Định nghĩa

Blockchain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối (block)
được liên kết với nhau bằng mã hóa và mở rộng theo thời gian, do đó được gọi là
chuỗi khối (blockchain).
Mỗi block chứa đựng các thông tin về thời gian khởi tạo, các thông tin giao dịch
và được liên kết với các khối trước đó thơng qua thơng tin hàm băm (hash).


Việc thay đổi dữ liệu khó khăn, nhưng vẫn có khả năng xảy ra. Để khắc phục
điều này, cơ sở dữ liệu của BlockChain được phân tán (Sổ cái) và lưu trữ tại nhiều
máy (Node). Các máy này có quyền ngang hàng với nhau, không quản lý lẫn
nhau. Truy cập dữ liệu của riêng mình.
Khi một Node muốn thêm dữ liệu vào, phải được sự xác thực/qua tay của các
máy này, chỉ khi đa số đồng ý thì dữ liệu hợp lệ và được thêm vào BlockChain
(tính đồng thuận). Sự liên kết giữa các máy này tạo thành mạng lưới (Network)
gọi là hệ thống BlockChain. Mỗi hệ thống BlockChain có cách đồng thuận riêng
mình.
Blockchain được thiết kế để chống lại việc thay đổi của dữ liệu: Một khi dữ
liệu đã được mạng lưới chấp nhận thì sẽ khơng có cách nào thay đổi được nó.
Như vậy, các yếu tố chủ yếu cấu thành blockchain bao gồm: Sổ cái phân tán
dạng móc xích, Mạng tính tốn ngang hàng, Mật mã học được sử dụng trong
blockchain. Do được thiết kế trên nền tảng dữ liệu phi tập trung, blockchain được
thiết kế để chống lại sự thay đổi dữ liệu. Thông tin các block trong blockchain
được mã hóa bằng hàm hash và lưu trữ trên tất cả các nút. Mỗi nút sẽ chứa thông
tin không thể bị thay đổi và chỉ được bổ sung thêm block mới khi có sự đồng



thuận của tất cả các nút trong hệ thống. Như vậy, các giao dịch trong blockchain sẽ
được đảm bảo an tồn nhờ hai tính chất: Cấu trúc block kết nối móc xích tạo cơ
chế khó phá vỡ và sử dụng các thuật toán mật mã để chống giả mạo.

2.2.

Ứng dụng blockchain

Blockchain hiện nay đang được đưa vào các ngành kinh tế và xã hội:
Ngành nông nghiệp: truy xuất nguồn gốc thực phẩm, lấy điện thoại rồi quét con
tem trên quả xồi. Qua đó, có thể nhìn thấy được tồn bộ thơng tin về quy trình sản
xuất, phân phối, cách sử dụng của sản phẩm, thời gian bảo quản, thậm chí quả xồi
đang chua ngọt thế nào, khi nào ăn thì vừa vị, giúp họ ăn quả xoài cảm thấy an tâm
hơn. Trong quá trình sản xuất, chỉ cần mạng internet và một chiếc smartphone là
người nơng dân và HTX có thể đăng nhập được vào hệ thống để ghi lại được. Khi
quả xồi xuất xưởng, hệ thống sẽ được kích hoạt thơng tin, sau đó khi ra đến đại
lý, đại lý nhận được thơng tin thì lại kích hoạt thơng tin. Tất cả những số liệu đó sẽ
lưu trữ vào hệ thống - không sửa đổi được. Những thông tin này đều được minh
bạch trên blockchain.
Giáo dục: Nhược điểm của bằng cấp truyền thống là bị làm giả khá nhiều, việc
kiểm tra và quy trình xác thực bằng giả hay thật rất phức tạp. với ứng dụng
blockchain, bằng cấp không thể làm giả vì mỗi bằng cấp được số hóa và ghi nhận
với 1 mã định danh duy nhất (thông qua thể hiện bằng mã QR), việc lưu trữ dữ
liệu minh bạch trên blockchain các thông tin về thời điểm được cấp, đơn vị đã cấp
kèm theo các mã hóa của hình ảnh hoặc tài liệu minh chứng đối tượng được cấp là
có thật. Nếu trên văn bằng giả chứa thông tin sai, hệ thống sẽ xác nhận không tồn
tại, hoặc hiển thị thơng tin của văn bằng có trùng mã trên hệ thống và do đó có thể
lập tức xác thực thông tin về văn bằng. Mỗi văn bằng, chứng chỉ cấp phát ra theo

công nghệ này được gắn một địa chỉ mạng (URL) duy nhất, truy cập tự do và được
BCDiploma cam kết duy trì vơ thời hạn. Mỗi tân cử nhân, ngoài bằng tốt nghiệp


theo quy định truyền thống hiện hành còn được nhận một phiên bản xác thực trực
tuyến, có địa chỉ mạng thường trực, vĩnh viễn kèm theo một mã QR để thuận tiện
sử dụng trong các hồ sơ giao tiếp trực tuyến của mình.
Ngành ngân hàng: blockchain tại Việt Nam cũng được rất nhiều ngân hàng quan
tâm và triển khai ứng dụng. Với mục tiêu cải tiến và nâng cao tính linh hoạt trong
việc phát hành thư tín dụng (L/C), hợp lý hóa quy trình và cung cấp dịch vụ cho
các doanh nghiệp hiệu quả nhất, vừa qua một số ngân hàng tại Việt Nam như Ngân
hàng Thương mại cổ phần Công Thương Việt Nam (VietinBank), Ngân hàng
Thương mại cổ phần Đầu tư và Phát triển Việt Nam
(BIDV), Ngân hàng Thương mại Cổ phần Quân đội (MB) đã gia nhập và đều phát
hành thành công L/C liên ngân hàng trên mạng lưới Contour. Khác với giao dịch
L/C truyền thống phải thực hiện trên nhiều hệ thống khác nhau, toàn bộ quá trình
của giao dịch này được thực hiện trên cùng một nền tảng với sự tham gia của nhà
xuất khẩu, nhà nhập khẩu, ngân hàng phát hành và ngân hàng thông báo/xuất trình
chứng từ đều tham gia xử lý trên cùng một mạng lưới.
Sự khác biệt lớn nhất so với cách xử lý truyền thống của thư tín dụng chứng từ
chính là việc các bên được phép tham gia cập nhật tức thời trạng thái giao dịch.
Điều này không chỉ đảm bảo tính tồn vẹn, minh bạch thơng tin giữa các bên liên
quan, mà còn cải thiện rõ rệt thời gian xử lý và tiết kiệm chi phí cho tồn bộ chu
trình. Đây có thể nói là bước ngoặt trong việc thực hiện một dịch vụ quan trọng
bậc nhất trong lĩnh vực tài chính thương mại. Hệ thống giúp tất cả các bên tham
gia đều được làm chủ, giám sát giao dịch trong suốt q trình thực hiện, do đó đảm
bảo tính nhất quán, minh bạch. Giao dịch phát hành L/C số hóa này cịn cho thấy
những ưu điểm nổi bật của công nghệ Blockchain như: bảo mật cao, tốc độ xử lý
giao dịch được cải thiện rõ rệt, giảm thiểu giấy tờ, tiết kiệm thời gian; hạn chế sai
sót, cho phép các bên hồn thành các luồng cơng việc trong thời gian thực.



2.3.

Ứng dụng blockchain vào Chat app
Đối với ứng dụng Chat bảo mật của chúng em thì blockchain được dùng để lưu lại
các khóa cơng khai của người dùng. Người dùng có thể lấy từ blockchain khố
cơng khai của người mình muốn nhắn tin để tạo ra khoá chung để mã hoá tin nhắn
của cả hai.

Chương 3. TỔNG QUAN ĐỀ TÀI
3.1.

Mục tiêu
-

Xây dựng một ứng dụng giúp người dùng có thể tự tin trao đổi thông tin
qua lại với nhau một cách bảo mật hồn tồn.

-

Các thơng tin và tài liệu trao đổi trên ứng dụng đều được lưu trữ trên nền
tảng bảo mật.

-

Ứng dụng phát triển trên nền tảng di động giúp cho người dùng tiện lợi sử
dụng.

-


Tìm hiểu và ứng dụng các công nghệ mới, nâng cao kỹ năng phát triển
phần mềm.

3.2.

Phạm vi
-

Đề tài tập trung xây dựng hệ thống trên nền tảng di động hướng tới
đối tượng sử dụng là tất cả người dùng sử dụng smartphone.

-

Áp dụng cao với người dùng yêu cầu tính bảo mật cao trong trao
đổi thơng tin.

3.3.

Phương pháp thực hiện
-

Tìm hiểu và phân tích quy trình hiện tại của ứng dụng chat trên thị trường.

-

Phân tích các giải pháp của các sản phẩm tương tự trên thị trường.

-


Thực hiện khảo sát nhu cầu, tình trạng thực tế của người dùng với ứng dụng
chat bảo mật.

3.4.

Ý nghĩa thực tiễn


-

Người dùng yêu cầu tính bảo mật cao trong trao đổi thơng tin.

-

Ứng dụng đảm bảo tính thời gian thực và bảo mật cao, lưu trữ bảo
mật, tránh bị xâm nhập và đánh cắp dữ liệu.

3.5.

Người dùng sử dụng đơn giản qua thiết bị di động.

Kết quả dự kiến
-

Hiểu rõ các công nghệ mới:
● Front – end: React native.
● Back – end: NestJs/MongoDB.
● Peer to Peer network: Ethereum blockchain, IPFS.

3.6.


-

Hoàn thành sản phẩm với các chức năng đã được trình bày.

-

Giao diện thân thiện và tạo ra được những giá trị của mục tiêu hướng tới.

Công nghệ sử dụng
3.6.1.

React Native

React Native là một framework được tạo bởi Facebook, cho phép các
lập trình viên sử dụng JavaScript để làm mobile apps trên cả Android và
iOS với có trải nghiệm và hiệu năng như native. React Native vượt trội ở
chỗ chỉ cần viết một lần là có thể build ứng dụng cho cả iOS lẫn
Android.
React native cho phép xây dựng các ứng dụng trên android và ios chỉ với
một ngôn ngữ thống nhất là javascript nhưng mang lại trải nghiệm native
app thực sự. Không như các framework hybrid khác(viết một lần triển
khai nhiều nơi), React native tập trung vào việc một lập trình viên làm


việc hiệu quả trên môi trường đa nền tảng như thế nào
3.6.2.

NestJS


Nest (NestJS) là một framework hỗ trợ người dùng xây dựng các ứng
dụng node server-side một cách hiệu quả và dễ dàng mở rộng. Nest được
hỗ trợ sử dụng với Typescript và cả Javascript thuần và có đầy đủ các
tính chất của: OOP (Lập trình hướng đối tượng), FP (Lập trình chức
năng), FRP (Lập trình phản ứng chức năng).
Tại sao chọn NestJS trong số nhiều framework NodeJS khác? Theo số
liệu trên GitHub, tính đến tháng 7 năm 2020, Nest được khá cao số lượt
yêu thích. Nhờ sự phát triển của JavaScript như một ngơn ngữ lập trình
phát triển web, rất nhiều Javascript/Nodejs framework đã ra đời. Và Nest
không phải là một ngoại lệ. Với rất nhiều tính năng tối ưu, NestJS có thể
giúp các nhà phát triển tạo ra các ứng dụng phía backend, API RESTful
một cách dễ dàng và hiệu quả.
3.6.3.

MongoDB

MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế
NoSQL để truy vấn, nó được viết bởi ngơn ngữ C++. Chính vì được viết
bởi C++ nên nó có khả năng tính tốn với tốc độ cao chứ không giống
như các hệ quản trị CSDL hiện nay. Mỗi một table (bảng dữ liệu) trong
SQL sử dụng thì trong MongoDB gọi là collection (tập hợp) Mỗi một


record (bản ghi) trong MongoDB được gọi là document (tài liệu). Một
bản ghi của MongoDB được lưu trữ dưới dạng document (tài liệu), nó
được ghi xuống với cấu trúc field (trường) và value (giá trị).
MongoDB mang đến cho người dùng khá nhiều lợi ích:
-

Linh hoạt trong lưu trữ các kích cỡ dữ liệu khác nhau. Nhờ chúng

được lưu dưới dạng JSON nên bạn thoải mái chèn bất kỳ thông tin
nào tùy theo nhu cầu sử dụng.

-

Tiết kiệm thời gian trong việc kiểm tra sự tương thích về cấu trúc
khi thêm, xóa hoặc cập nhật dữ liệu. Nhờ MongoDB khơng có sự
ràng buộc trong một khuôn khổ, quy tắc nhất định nào.

-

Bạn dễ dàng mở rộng hệ thống thông qua việc thêm node vào
cluster. Cụm các node này đóng vai trị như thư viện chứa các dữ
liệu giao tiếp với nhau.

-

Tốc độ truy vấn của MongoDB nhanh hơn so với RDBMS do toàn
bộ dữ liệu truy vấn đã được ghi đệm lên bộ nhớ RAM. Nhờ thế,
những lượt truy vấn sau sẽ được rút ngắn thời gian vì chúng khơng
cần đọc từ ổ cứng.

-

Trường dữ liệu “_id” (đại diện cho giá trị duy nhất trong mỗi
document) được tự động đánh chỉ mục nên hiệu suất luôn đạt mức
cao nhất.

3.6.4.


Ethereum

Ethereum (ETH) là một nền tảng điện tốn có tính chất phân tán, công
cộng, mã nguồn mở dựa trên công nghệ Blockchain. Đây là một nền tảng


cho phép người dùng sử dụng Hợp đồng thông minh (Smart Contract) và
Ứng dụng phi tập trung (dApp) để giúp các giao dịch được thực hiện
nhanh chóng hơn, ngăn ngừa những hành vi lừa đảo.
Lợi ích của Ethereum:
-

Các ứng dụng phi tập trung và DAO được triển khai trong mạng
không thể bị bất kỳ bên thứ ba nào kiểm soát.

-

Mọi thay đổi được thực hiện trong hệ thống cần phải được sự đồng
ý của các nút hệ thống để loại bỏ những hình thức gian lận.

-

Vì Ethereum là nền tảng phi tập trung nên khơng có điểm thất bại
nào.

-

Bản chất phi tập trung và bảo mật mật mã mạnh mẽ làm cho mạng
được bảo vệ khỏi các hoạt hack hay lừa đảo.


3.6.5.

IPFS

IPFS (Interplanetary File System) là hệ thống tập tin phi tập trung
Peer-to-Peer (mạng ngang hàng) kết nối các thiết bị máy tính với nhau.
IPFS hoạt động dựa trên tất cả các thiết bị tham gia chứ không chỉ tập
trung vào các máy chủ chính (trung tâm) như HTTP. Nói cách khác, mỗi
máy tính tham gia trong mạng lưới IPFS đều có nhiệm vụ download và
upload dữ liệu và khơng cần thông qua máy chủ.
Đặc điểm nổi bật của IPFS:
Nếu được áp dụng đúng, IPFS sẽ mang lại tiềm năng khá lớn nhờ việc
rút ngắn thời gian truyền tải dữ liệu, tránh sự phụ thuộc vào máy chủ,
bên cạnh đó cũng tiết kiệm được một khoản chi phí cho mạng lưới.


-

Ít phụ thuộc vào máy chủ

-

Mơ hình phi tập trung

-

Giảm bớt chi phí

Hình :3.6.5 - 1 Ưu điểm của IPFS là không phụ thuộc vào máy chủ


3.6.6.

ReduxJs

Giới thiệu:
- Khi mà các ứng dụng ngày càng trở nên phức tạp (SPA) thì chúng ta phải quản lý
nhiều state hơn với so trước đó. Những state này bao gồm dữ liệu trả về từ server và dữ
liệu được cache cũng như dữ liệu nội bộ cũng khơng đảm bảo được sự tồn vẹn so với
server. Để quản lý state mà luôn luôn có thể thay đổi là điều rất khó. Ví dụ một model có
thể được cập nhật được model khác, rồi một view có thể được update được model nói
trên, đồng nghĩa nó cũng update ln cái model cịn lại... Và cứ thể dẫn đến việc chúng ta
không biết state nào thay đổi bởi cái gì và ở đâu. Thế nên chúng ta phải sử dụng một thử
viện để giải quyết các việc đó là ReduxJs.
- ReduxJs là một thư viện Javascript giúp tạo ra một lớp quản lý trạng thái của ứng
dụng, được xây dựng trên nền tảng tư tưởng của ngôn ngữ và kiến trúc Flux do Facebook
giới thiệu.
- Do vậy Redux thường là bộ đơi kết hợp hồn hảo với React. Tuy nhiên hoàn toàn


có thể sử dụng với các framework khác như Angular, Angular2, Backbone, Falcor, Deku
- Nguyên lý hoạt động của Redux được xây dựng dựa trên 3 nguyên lý:
• Nguồn dữ liệu tin cậy nhất: State của toàn bộ ứng dụng được chứa trong một
object tree nằm trong một Store duy nhất (chỉ có duy nhất một store trong một ứng dụng
web)
• Trạng thái chỉ được phép đọc: cách duy nhất để thay đổi State của ứng dụng là
phát một Action (là một object mơ tả những gì xảy ra)
• Thay đổi chỉ bằng hàm thuần tuý: Để chỉ ra cách mà State được biến đổi bởi
Action chúng ta dùng các pure-function gọi là Reducer
- Về cơ bản Redux có 4 thành phần sau:
• Action: là nơi mang thơng tin dùng để gửi từ ứng dụng đến store. Các thông tin

này là key của nó và object mơ tả những gì đã xảy ra.
• Reducer: là nơi xác định State thay đổi như thế nào
• Store: là nơi quản lý State, cho phép truy cập qua getState(), cập nhật
State qua dispatch(action).
Lí do sử dụng trong đồ án:
- Do React được xây dựng theo hướng chi nhỏ thành component dẫn đến việc
quản lý nội bộ các state của chúng mà không cần bất kỳ một thư viện hoặc cơng cụ nào.
Nó sẽ hoạt động tốt với các ứng dụng có ít component nhưng khi ứng dụng phát triển và
ngày càng phức tạp thì việc quản lý state được chia sẻ giữa các component sẽ khá khó
khăn.
- Ví dụ: trong React để chia sẻ State thông qua các component con, một state phải
live trong component cha. Một method để update chính state này cũng phải được cung
cấp để component cha và truyền như Props đến các component con.
- Điều này cũng kiến cho việc quản lý các State trở nên phức tạp và bừa bộn. Đó là


lý do em sử dụng thư viện này.

Chương 4. XÂY DỰNG ỨNG DỤNG CHAT BẢO MẬT
4.1.

Phân tích yêu cầu hệ thống
4.1.1.

Phân tích yêu cầu chức năng

Server đảm bảo phục vụ thời gian thực (Real-time Server):
Việc làm sao để truyền dữ liệu một cách tức thời, là rất quan trọng
trong hệ thống chat realtime giữa người dùng với nhau. Phần lớn các
chức năng quan trọng đều cần sử dụng real-time server:

-

Chat: Có thể nhận và gửi tin nhắn bảo mật ngay lập tức, đảm bảo
trải nghiệm người dùng tốt.

-

Gửi tài liệu: trong quá trình chat, các tài liệu được trao đổi nhanh
chóng, bảo mật cao.

4.1.2.

Yêu cầu về tính năng
Hệ thống chạy trên nền tảng ứng dụng, có khả năng truy cập ở tất cả
mọi vị trí, thời điểm có kết nối internet. Một vài yêu cầu mà hệ thống
cần đáp ứng:

-

Chức năng truy vấn: Đáp ứng yêu cầu truy vấn của người dùng như
tìm kiếm, xem tài liệu,..

-

Chức năng cập nhật: Chức năng cập nhật luôn được thực hiện và
giảm thiểu tối đa sai sót của người dùng.

4.1.3.
-


Chức năng tải lên: Hỗ trợ lưu trữ tài liệu bảo mật.
Phân tích yêu cầu phi chức năng
Ứng dụng sử dụng tiếng Việt, hoạt động ổn định trên nền tảng
mobile.

-

Để thu hút được người dùng hứng thú sử dụng, các thao tác trên


ứng dụng phải thật đơn giản. Giao diện thân thiện, giúp người dùng
nhận thức được giá trị nhận lại khi sử dụng ứng dụng.
-

Các thông tin của người dùng được bảo mật và bảo đảm chỉ có
những người có thẩm quyền mới có thể truy cập vào các tài nguyên
cụ thể.

4.1.4.

Phân tích yêu cầu người dùng

Ứng dụng sử dụng kết quả khảo sát, nghiên cứu hiện trạng để tiến hành
phân tích yêu cầu và chức năng của ứng dụng, được biểu diễn bằng ngơn
ngữ mơ hình hố (UML).
4.1.5.

Mơ hình use case tồn hệ thống

Hình 3.1: Lược đồ Use case người dùng tổng quan



Hình 3.2: Lược đồ Use case người dùng chi tiết
● Danh sách các Actors
STT
1

Tên Actor
Người dùng

Ý nghĩa/Ghi chú
Tương tác với chức năng chat

Bảng 4.1.5 - 1: Danh sách các Actors

● Danh sách các Use case
STT

Tên Use-case

Ý nghĩa/Ghi chú

1

Đăng nhập

Cho phép người dùng đăng nhập vào ứng dụng.

2


Đăng ký

Tạo tài khoản mới cho người dùng

3

Chat bảo mật

Người dùng chat với nhau với nội dung đã được mã hoá

4

Gửi file bảo mật

Người dùng gửi files với nhau với nội dung đã được mã hố

5

Tạo nhóm chat

Tạo nhóm mới giữa nhiều người dùng khác
Bảng 4.1.5 - 2: Danh sách các Use case


4.1.6.

Một số use case của hệ thống

4.1.6.1.


Use case Đăng ký

Hình 4.1.6.1 - 1: Lược đồ Use case Đăng ký

Tên use case
Mô tả

Đăng ký
Người dùng tạo tài khoản mới và một cặp khố riêng.

Actor

Người dùng

Tiền điều kiện

Khơng

Hậu điều kiện

Người dùng tạo tài khoản thành cơng

Luồng sự kiện chính

1. Người dùng nhập tên, số điện thoại
2. Xác thực bằng OTP
3. Hệ thống thông báo thành công/thất bại
Bảng 4.1.6 - 1: Usecase Đăng ký

4.1.6.2.


Use case Chat bảo mật

Hình 4.1.6.2 - 1: Lược đồ Use case Chat bảo mật

Tên use case
Mô tả

Chat bảo mật
Người dùng có thể chat với người khác, và dùng khố
của người dùng này kết hợp với khố người dùng cịn lại


để tạo thành khoá chung, mã hoá tin nhắn giữa hai người
Actor

Người dùng

Tiền điều kiện

Người dùng đã đăng nhập và hệ thống

Hậu điều kiện

Người dùng gửi tin nhắn thành công

Luồng sự kiện chính

1. Người dùng chọn người muốn chat
2. Vào màn hình chat

3. Gửi tin nhắn

Bảng 4.1.6.2 - 2: Usecase Chat bảo mật

4.1.6.3.

Use case Gửi files bảo mật

Hình 4.1.6.3 - 1: Lược đồ Use case Gửi files bảo mật

Tên use case
Mơ tả

Gửi files bảo mật
Người dùng có thể gửi files với người khác, files này
được mã hoá và lưu trữ phân tán trên hệ thống IPFS.

Actor

Người dùng

Tiền điều kiện

Người dùng đã đăng nhập và hệ thống

Hậu điều kiện

Người dùng gửi files thành cơng

Luồng sự kiện chính


1. Người dùng chọn người muốn gửi files
2. Vào màn hình chat
3. Gửi files

Bảng 4.1.6.3 - 3: Usecase Gửi files bảo mật


4.2.

Thiết kế hệ thống
4.2.1.

Thiết kế luồng sản phẩm

Sử dụng lược đồ Product Workflow với BPMN (ngơn ngữ mơ hình hóa trực quan
cho các ứng dụng trong phân tích nghiệp vụ).

Hình 4.2.1 - 1: Lược đồ Product Workflow
4.2.2.

Thiết kế xử lý

Sử dụng lược đồ tuần tự (Sequence Diagram) để mô tả phương thức xử
lý vấn đề của hệ thống.


4.2.2.1.

Lược đồ tuần tự thao tác Đăng ký.


Hình 4.2.2.1 - 1: Lược đồ tuần tự thao tác Đăng ký


4.2.2.2.

Lược đồ tuần tự thao tác Chat bảo mật

Hình 4.2.2.2 - 1: Lược đồ tuần tự thao tác Chat bảo mật


4.2.2.3.

Lược đồ tuần tự thao tác Gửi files bảo mật

Hình 4.2.2.3 - 1: Lược đồ tuần tự thao tác Gửi files bảo mật


4.2.3.

Thiết kế cơ sở dữ liệu

4.2.3.1.

Lược đồ cơ sở dữ liệu

Hình 4.2.3.1 - 1: Lược đồ cơ sở dữ liệu
4.2.3.2.

Mơ tả các bảng dữ liệu


Bảng dữ liệu User: Lưu thông tin User
STT
1

Tên thuộc tính
Id

Kiểu dữ liệu Ràng buộc
UUID

Là duy nhất

Ý nghĩa
Khố chính


×