Ứ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ưutrữ.. với ứng dụngblockchain, bằng
Trang 1ĐẠ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
Trang 2LỜI CẢM ƠN
Đồ án với đề tài “XÂY DỰNG ỨNG DỤNG CHAT TRÊN MOBILE ỨNGDỤNG CÔNG NGHỆ BLOCKCHAIN” là minh chứng cho quá trình cố gắng khôngngừ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ôngnghệ 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 chuyênmôn vào giải quyết bài toán thực tế
Trong quá trình thực hiện đồ án, em đã nhận được sự hướng dẫn tận tình từ quý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ô trongKhoa Công nghệ Phần mềm nói riêng đã tận tình truyền đạt kiến thức tới emtrong những năm học tập tại trường Đó là tài sản quý báu đã giúp em hoà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ếphướng dẫn, chỉ bảo, giúp đỡ em những lúc khó khăn, đưa ra những lời khuyên bổích để khoá luận được hoà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è đã luônbên cạnh để động viên và đóng góp ý kiến trong quá trình hoàn thành đồ án này
Thành phố Hồ Chí Minh, tháng 07 năm 2022Sinh viên 1 Sinh viên 2
Trần Quốc Thắng Nguyễn Hữu Phát
Trang 4Thiết kế xử lý 21
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 nhauthô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 đượcnhiề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, ứngdụ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ệtNam trong bảng xếp hạng đượcdata.aithố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 toàn thông tin của người dùng là một vấn đề quan trọng đối với
Trang 5mỗ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ưutrữ
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)
Trang 6Việ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ềumáy (Node) Các máy này có quyền ngang hàng với nhau, không quản lý lẫnnhau 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ácmá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êngmì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 toá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ôngtin không thể bị thay đổi và chỉ được bổ sung thêm block mới khi có sự đồng
Trang 7thuậ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 toà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 contem trên quả xoài Qua đó, có thể nhìn thấy được toàn bộ thông tin về quy trình sảnxuấ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ả xoà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âmhơ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 Khiquả xoà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 minhbạ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ệckiể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ụngblockchain, bằng cấp không thể làm giả vì mỗi bằng cấp được số hóa và ghi nhậnvớ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ấpkè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ồntạ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 theocông nghệ này được gắn một địa chỉ mạng (URL) duy nhất, truy cập tự do và đượcBCDiploma 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
Trang 8theo 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ựctuyế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 quantâ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 trongviệ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ụ chocá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ânhàng Thương mại cổ phần Công Thương Việt Nam (VietinBank), Ngân hàngThươ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áthà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ịchL/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ìnhcủ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ìnhchứ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 toàn vẹn, minh bạch thông tin giữa các bên liênquan, mà còn cải thiện rõ rệt thời gian xử lý và tiết kiệm chi phí cho toàn bộ chutrì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ọngbậ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 thamgia đều được làm chủ, giám sát giao dịch trong suốt quá trình thực hiện, do đó đảmbả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ấynhữ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ế saisót, cho phép các bên hoàn thành các luồng công việc trong thời gian thực
Trang 92.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ạicác khóa công khai của người dùng Người dùng có thể lấy từ blockchain khoácông khai của người mình muốn nhắn tin để tạo ra khoá chung để mã hoá tin nhắncủa cả hai
Chương 3 TỔNG QUAN ĐỀ TÀI
- Đề 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ụngchat bảo mật
3.4 Ý nghĩa thực tiễn
Trang 10- 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ảomật, tránh bị xâm nhập và đánh cắp dữ liệu
- Người dùng sử dụng đơn giản qua thiết bị di động
3.5 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
- 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
3.6 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ẫnAndroid
React native cho phép xây dựng các ứng dụng trên android và ios chỉ vớimột ngôn ngữ thống nhất là javascript nhưng mang lại trải nghiệm nativeapp thực sự Không như các framework hybrid khác(viết một lần triểnkhai nhiều nơi), React native tập trung vào việc một lập trình viên làm
Trang 11việc hiệu quả trên môi trường đa nền tảng như thế nào
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ượtyêu thích Nhờ sự phát triển của JavaScript như một ngôn ngữ lập trìnhphát triển web, rất nhiều Javascript/Nodejs framework đã ra đời Và Nestkhô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 RESTfulmộ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ếtbởi C++ nên nó có khả năng tính toán với tốc độ cao chứ không giốngnhư các hệ quản trị CSDL hiện nay Mỗi một table (bảng dữ liệu) trongSQL sử dụng thì trong MongoDB gọi là collection (tập hợp) Mỗi một
Trang 12record (bản ghi) trong MongoDB được gọi là document (tài liệu) Mộtbả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 tinnà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úckhi 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àocluster 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ôngcần đọc từ ổ cứng
- Trường dữ liệu “_id” (đại diện cho giá trị duy nhất trong mỗidocument) được tự động đánh chỉ mục nên hiệu suất luôn đạt mứccao nhất
3.6.4 Ethereum
Ethereum (ETH) là một nền tảng điện toá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
Trang 13cho 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ệnnhanh 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ạngkhô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ạinà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 trungPeer-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ậptrung vào các máy chủ chính (trung tâm) như HTTP Nói cách khác, mỗimá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ệcrú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
Trang 14- Ít phụ thuộc vào máy chủ
- Mô hình phi tập trung
- 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 ứngdụ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 Facebookgiới thiệu
- Do vậy Redux thường là bộ đôi kết hợp hoàn hảo với React Tuy nhiên hoàn toàn
Trang 15có 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ộtobject tree nằm trong một Store duy nhất (chỉ có duy nhất một store trong một ứng dụngweb)
• 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ởiAction 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 tinnà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)
- Ví dụ: trong React để chia sẻ State thông qua các component con, một state phảilive trong component cha Một method để update chính state này cũng phải được cungcấ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à
Trang 16lý 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ọngtrong hệ thống chat realtime giữa người dùng với nhau Phần lớn cácchứ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ảotrả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 nhanhchó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ốngcầ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
- Chức năng tải lên: Hỗ trợ lưu trữ tài liệu bảo mật
4.1.3 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ảngmobile
- Để thu hút được người dùng hứng thú sử dụng, các thao tác trên
Trang 17ứng dụng phải thật đơn giản Giao diện thân thiện, giúp người dùngnhậ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ànhphâ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ônngữ mô hình hoá (UML)
4.1.5 Mô hình use case toàn hệ thống
Hình 3.1: Lược đồ Use case người dùng tổng quan
Trang 18Hình 3.2: Lược đồ Use case người dùng chi tiết
● Danh sách các Actors
1 Người dùng 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
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ã hoá
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
Trang 194.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ý
Mô tả Người dùng tạo tài khoản mới và một cặp khoá riê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
Mô tả Người dùng có thể chat với người khác, và dùng khoá
của người dùng này kết hợp với khoá người dùng còn lại
Trang 20để tạo thành khoá chung, mã hoá tin nhắn giữa hai người
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
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
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