Vai trò của các thành phần: Nền tảng số: nhận yêu cau của người dùng, truy xuất đến cơ sở đữ liệu, truyền và đảm bảo tính an toàn và toàn vẹn của dữ liệu Người dùng: là đối tượng trực ti
Trang 1DAI HOC QUOC GIA TP HO CHi MINH
TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG
FACULTY OF COMPUTER NETWORK AND COMMUNICATIONS
&` %
MÔN HỌC: MẬT MÃ HỌC
BAO CAO DO AN
MA HOA DU LIEU AM THANH TREN NEN TANG
TRUYEN THONG DA PHUONG TIEN
Encrypt Audio on Multimedia Product Service Platform
Giảng viên hưỡng dẫn: Nguyễn Ngọc Tự
Thực hiện:
Nguyễn Tài Hiếu - 22520442
Trần Hữu Hiếu - 22520444
TP HÒ CHÍ MINH, 2024
Trang 2MỤC LỤC: ;
II TÀI SẢN, CÁC RỦI RO, CÁC YÊU CẦU BẢO MẬT -
II CHI TIẾT GIẢI PHÁP
a - Sử dụng thuật toán mã hóa AES-256 mode GCM
b Dữ liệu được phân mảnh trước khi truyền đến người dùng:
c Bảo vỆ khóa: ««<5.csS2 x11 HH11000111.001100.1.1 1x30,
IV Phân tích kiến trúc hệ thống:
a _ Phân tích chức năng của các bên liên quan: -.-. se
1 Phía nhà sáng tạo nội dung:
2 _ Phía máy chủ của nền tảng: 222i c22srrrrrrree
3 _ Phía người dùng nền tảng:
b Cấu trúc cœsở dữ liỆu: ©-c«ssccceeeerressrrrkeesrresee
c Ngôn ngữ lập trình và thư viện được sử dụng trong hệ thống:
11 .12
Trang 3L CÁC THÀNH PHẢN LIÊN QUAN VÀ VAI TRÒ:
1.1 Các thành phan:
Nền tảng truyền thông đa phương tiện (các trang web cung cấp dịch vụ xem phim, nghe nhạc trực tuyến như spotify, netflix, apple music )
Người dùng dịch vụ
Nhà sáng tạo nội dung
1.2 Vai trò của các thành phần:
Nền tảng số: nhận yêu cau của người dùng, truy xuất đến cơ sở đữ liệu, truyền và đảm bảo tính an toàn và toàn vẹn của dữ liệu
Người dùng: là đối tượng trực tiếp sử dụng, giao dịch trên các nên tảng số Nhà sáng tạo nội dung: tạo ra và có quyên sở hữu trí tuệ đối với các sản phẩm số của họ, hợp tác với các nền tảng số để đưa các sản phẩm của họ lên các nền tảng phục vụ người dùng
1.3 Tương tác giữa các thành phần:
Phía nền tảng truyền thông đa phương tiện:
© Tạo môi trường, xây dựng server và cơ sở dữ liệu lưu trữ các sản phẩm âm nhạc từ nhà sáng tạo nội dung
o_ Nhận resquest của người dùng với tên bài hát, tìm kiếm bên trong cơ
sở đữ liệu và trả về cho người sử dụng dịch vụ
©_ Xây dung giao diện để người sử dụng dịch vụ tương tác
o_ Đảm bảo an toàn dữ liệu trong lúc lưu trữ và lúc truyền tải đến người
sử dụng dịch vụ Sử dụng thuật toán mã hóa AES256 — GCM mã hóa
đữ liệu âm thanh
Phía người dùng dịch vụ: tương tác với giao diện của nền tảng, tìm kiếm bài hát bằng tên sau đó nhận respone từ server
Phía nhà sáng tạo nội dung: tải bài hát từ phía nhà sáng tạo nội dung lên nền tảng, cung cấp tên bài hát và đữ liệu âm thanh
Trang 4Il TÀI SẢN, CÁC RỦI RO, CÁC YÊU CAU BAO MAT
a
b
Cc
Tai san:
Dữ liệu âm thanh là những file nhạc được nhà sáng tạo nội dung tải lên nền tảng
Rủi ro
Dữ liệu có thé bị can thiệp, đánh cắp khi đang truyền
Dữ liệu có thê bị lay cap, can thiệp, rò rỉ trên cơ sở dữ liệu Các yêu cầu bảo mật
Yêu cầu đữ liệu phải được mã hóa bằng thuật toán có độ hiệu quả cao nhằm phòng ngừa bị chỉnh sửa hoặc đánh cắp
Sử dụng thuật toán mã hóa đường truyền để bảo vệ đữ liệu khỏi việc bị can
thiệp, đánh cắp khi truyền
a Sử dụng thuật toán mã hóa AES-256 mode GCM
Thuật toán mã hóa AES với khóa 256 bịt là một thuật toán mã hóa mạnh mẽ nhất hiện nay Nó được sử dụng rộng rãi và được khuyén khích bởi các chuyên gia và tô chức bảo mật thế giới
Mode GCM: cung cấp cả tính bảo mật và toàn vẹn đữ liệu Nó đảm bảo đữ liệu không bị thay đôi trong quá trình truyền
Mã hóa xác thực: GCM cung cấp mã hóa xác thực, nghĩa là nó không chỉ mã hóa dữ liệu mà còn tạo ra một thẻ xác thực Thẻ này có thể được sử dụng để xác minh tính toàn vẹn và xác thực của dữ liệu khi giải mã Nếu đữ liệu bị thay đổi theo bat ky cach nao, quá trình giải mã sẽ thất bại, cho thấy một nỗ lực g14 mao tiêm năng
Trang 5® - Mã hóa tệp âm thanh: Mã hóa tệp âm thanh có thé tao ra lượng dữ liệu lớn Tính hiệu quả và khả năng xử lý dữ liệu lớn một cách hiệu quả của AES- 256-GCM khiến nó trở nên lý tưởng
® Lưu trữ và truyền tải an toàn: Các tệp âm thanh được mã hóa cần được lưu trữ an toàn trong cơ sở dữ liệu và truyền tải an toàn đến khách hàng AES- 256-GCM dam bảo cả tính bảo mật và toan ven trong cac quá trình nảy
b Dữ liệu được phân mảnh trước khi truyền đến người dùng:
¢ Giảm tải bộ nhớ: Bằng cách truyền tải dữ liệu theo từng mảnh nhỏ
(chunks), hệ thông không cần phải tải toàn bộ tệp vào bộ nhớ một lúc Điều
này giúp tránh tình trạng thiếu bộ nhớ khi xử lý các tệp lớn
® Xac minh từng mảnh: Mỗi mảnh dữ liệu có thể được xác minh độc lập
giúp phát hiện lỗi hoặc giả mạo ở từng phần nhỏ thay vì phải kiểm tra toàn
bộ tệp Điều nảy giúp tăng cường độ tin cậy và toàn vẹn của đữ liệu truyền tải
e Phân tán dữ liệu: Dữ liệu được phân mảnh và truyền tải thành từng phần nhỏ làm tăng độ khó cho kẻ tấn công muốn chặn và tái tạo lại toàn bộ tệp Ngay cả khi một mảnh bị đánh cắp, kẻ tấn công cũng khó có thé tai tao lai dit liệu gốc mả không có tất cả các mảnh còn lại
e Phat trực tiếp: Khi phát âm thanh, người dùng có thê bắt đầu nghe ngay sau khi nhận được các mảnh đầu tiên, thay vì phải chờ đợi toàn bộ tệp được tải xuông
Trang 6IV
c Bảo vệ khóa:
® Việc mã hóa dữ liệu được thực hiện khi nhà sáng tạo nội dụng đăng tải lên nền tảng, lúc đây sẽ tạo ra khóa đề mã hóa dữ liệu
e©_ Giảm nguy cơ rò rỉ thông tin: Nếu khóa mã hóa không được mã hóa trước khi lưu, bất kỳ ai truy cập vào cơ sở đữ liệu đều có thể đễ dàng lấy được khóa này và sử dụng nó để giải mã đữ liệu Mã hóa khóa bảo vệ nó ngay cả khi cơ sở dữ liệu bị xâm nhập
©_ Bảo vệ khỏi nội tấn công: Ngay cả nhân viên hoặc người quản trị có quyền truy cập vào cơ sở đữ liệu cũng không thê đễ dàng lấy được khóa mã hóa nếu
nó đã được mã hóa
¢ An toàn khi sao lưu: Cơ sở dữ liệu thường được sao lưu để phòng ngừa mat mát dữ liệu Mã hóa khóa đảm bảo rằng ngay cả khi bản sao lưu bị rơi vào tay kẻ xấu, khóa mã hóa vẫn được bảo vệ
©_ Chống lại tấn công vật lý: Trong trường hợp cơ sở dữ liệu bị đánh cắp vật
lý (như ô cứng chứa cơ sở đữ liệu), mã hóa khóa giúp bảo vệ thông tin quan trọng
Phân tích kiến trúc hệ thống:
Decrypt
| Phan manh )
ý \ | ‘Audio ?
_ Audo
Pome | | ?
\ 4 Database
\ ae ?
Audio | conn | ÿ
? koy đã được mã hóa
li key chưa được mã hóa Audio| file audio da ma hoa FPT le audio chưa mã hỏa
Hình 1: Kiến trúc hệ thống
Trang 7a Phân tích chức năng của các bên liên quan:
1 Phía nhà sáng tạo nội dung:
> Nhà sáng tạo nội dung thực hiện đăng tải nội dung lên nền tảng bằng việc điền tên bài hát và tải bài nhạc từ thư mục lên bảng mẫu đã thiết kế trên nên tảng
> Sau dé 4n nut “Submit”, hé thống sẽ gửi file nhạc và tên bài hát đến phía máy chủ của nền tang đê thực hiện bước tiệp theo
) NỘI DUNG:
submit
nge={handleFilecha
Hình 3: Mã giao diện và gán sự kiện
Trang 82 Phía máy chủ của nền táng:
> Phía máy chủ cĩ 2 chức năng nhập và gửi ở các thời điểm khác nhau
> Khi nhận được tên bài hát và file đữ liệu từ phía nhà sáng tạo nội dung,
máy chủ thực hiện gọi đến hàm mã hĩa AES256-GCM để tạo ngẫu nhiêu
key, Iv, auth_tà và mã hĩa file dữ liệu
> Tiếp theo, gọi hàm mã hĩa key để mã hĩa key vừa tạo ở trên Key được mã hĩa bằng thuật tốn AES256-ECB với masterkey được cung cấp trong file mơi trường
> Cuối củng sẽ thực hiện truy van đến cơ sở đữ liệu đề lưu trữ các dữ liệu trên
cryptAES256GCM
= randomBytes (3
= randomBytes(12) ;
reateCipheriv
Hinh 5: Ham mé héa file Gm thanh
Trang 9
Hình 6: Hàm nhận dữ liệu từ nhà sáng tạo nội dung và truy vẫn đến database
- _ Khi nhận được yêu cầu từ người dùng muốn tìm kiếm và phát 1 bài nhạc
> Đầu tiên máy chủ nhận được tên bài hát mà người dùng muốn phát, sau
đó truy xuất xuống cơ sở dữ liệu đề lay những đữ liệu cần thiết
> Máy chủ thực hiện giải mã key bằng masterkey được lấy trong file môi trường , sau đó giải mã file âm thanh ứng với tên bài hát mà người dùng yêu cầu phát
> Sau khi đã giải mã thành công, máy chủ sẽ thực hiện phân mảnh file audio đã giải mã và gửi lần lượt đên người dùng nên tảng
Trang 10const { filename } = req.body;
db.query( » [filename], (error, results, fields
f (error) { console.e „ error);
Do A return;
Gee Cue)
res status (4¢
Ù const { encrypted_data, key: encryptedKey, iv, auth tag } = results[9];
aa const key = decryptke terkey(encryptedkey, masterkey);
const decryptedData ecryptAES25 M(encrypted data, key, iv, auth tag);
res setHeader( yr
const chunkSize = 5
(42) )00(06 109/0) () Cc (decryptedData length / chunkS1ze) ; D2 lt oe ; totalChunks);
let start = 0;
let end = chunksize;
for (let i = i < totalchunks; i++) { const chunk = decryptedData.stiee(start, end);
res.write(chunk);
start = end;
end = Math.min(start + chunkSize, decryptedData length);
i res end() ; tch (error) {
» error);
ie eee) a s );
Hình 7,8: Truy vấn cơ sở sữliệu, giải mã key,đữ liệu và truyền đến người dùng
3 Phía người dùng nền tang:
> Nhap tén bai nhac muốn phát và ấn “Search”
> Gửi yêu cầu đến server và chờ đợi phản hồi
> Nhận được phản hồi sau đó phat bai nhạc
Trang 11ax1os(
method:
url:
data: { filename: searchFilename },
responseType:
en(response =>
const audioContext = new AudioContext();
const source = audioContext.createBufferSource() ; audioContext decodeAudioData(response.data, function(buffer) { source.buffer = buffer;
source.connect(audioContext.destination) ; source.start(@);
De
ch(error =>
console.error(
Hình 9: Hàm gửi yêu cầu và nhận phản hồi, phát nhạc
div className=
h2›PHÍA NGƯỜI DÙNG: h2 div className=
table className=
tbody
tr
td 1nput
ID PC placeholder=
cÌassName=
value={ sear'chFï lename}
onChange={(e) => setSearchFilename(e target value)}
td
td button onClick={ fet ata}><i className= CC va,
td
tr tbody table div div className=
div
Hình 10: Mã giao diện phía người dùng
i
button
Trang 12
10
b Cấu trúc cơ sở dữ liệu:
- _ Kiến trúc sử dụng Mysql đề lưu trữ đữ liệu
Sử dụng dịch vụ của clevercloud để lưu trữ dữ liệu
TYPE PLN CLUSTER VERSION REGION STATUS CREAIONOATE ID
5 \ 202 4 8-46fe-alx49-Df8(98
BB ot Sener pazystiqantibysktoza mysql senaces Cever-Chud.com:3306 ÔN ẤT T1 TT 7 S1 0001077 EU KV 7
FT | phpMyAdmin
7 Rea Ve
: -v/ Showing (ows 0 - 0 (f total, Query took 0.0171 seconds.) | SELECT * FROM *suđie
Profiting [ Edit inline }f Eat) | Explain SQL } | Create PHP code )[ Refresh ]
" Show alt Number of rows * mer ro
KG
đouixet, V _ld filename encrypteđ data key + h £Edt © De Bex
Query results operations
BP Fe Copyto cipboard — LY Expert (uDisplaychaet % Create view
` 2 ~ aA ? a x
Hình 10: Cơ sở dữ liệu của hệ thông
a
——
8 tát Dita foe aun_ta9 WARBNARN - o
Hình 11: Minh họa dữ liệu được lưu dưới database
Trang 13
11
c Ngôn ngữ lập trình và thư viện được sử dụng trong hệ thống:
- _ Ngôn ngữ lập trình:
> Giao diện: HTML,CS8
>» May chu: Javascript
> Cơ sở dữ liệu: SQL
- - Thư viện:
® - Phía người dung va nha sang tạo nội dung:
> react: Xây dựng giao diện người dùng
> axios: Gui va nhan cac yéu cau HTTP tr frontend dén backend
¢ Phia may chu nén tang:
> express: Xây dựng server và định tuyén cac API endpoint
> mysql2: Kết nối và tương tác với cơ sở dữ liệu MySQL
> body-parser: Phân tích dữ liệu từ các yêu cầu HTTP (chủ yếu là JSON)
crypto: Ma hoa va giải mã dữ liệu để bảo mật
cors: Cho phép các yêu cầu từ các domain khác nhau
multer: Xử lý việc tải lên các file
doteny: Quan lý các biên môi trường
Trang 1412
V.DEMO HỆ THÓNG:
B1: Chay terminal vào thư mục my-app và chạy câu lệnh “npm start”
TERMINAL
D: \HK2_2024\Matmaho Sweb> my-app D: \HK2_2024\Matmahoc \AESweb \my -app> sta at |
TERMINAL
You can now view my-app in the browser
Rotor TẾ http: //1ocalhost: 3088
On Your Network: http://172.16.0.2:3000 Note that the development build is not optimized
To create a production build, use webpack compiled
Trang web khởi chạy thành công
PHIA NGUOI DUNG: PHIA NHA SANG TAO NOI DUNG:
<a
Giao diện của trang web
Trang 1513
B2: khởi chạy server bằng lénh ‘node server.js’
TERMINAL
: \HK2_2024\Matmahoc \AESweb\my-app> Server" JS server đang lắng nghe tại cống 3001
PHÍA NGƯỜI DỪNG:
B4: Phía nhà sáng tạo nội dung:
làn ˆ_ PHÍA NHÀ SÁNG TẠO NOI DUNG:
demc2
& Choose File |No file chosen
Bie
Trang 1614
Link code:
https:/ /drive.google.com/ drive/folders/1Xzvq4KGgj8yu60HjKy9bhkGxn 4R5cGnR?usp=sharing