
















Preview text:
lOMoAR cPSD| 58647650
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA AN TOÀN THÔNG TIN
--------------o0o--------------
An toàn ứng dụng Web và Cơ sở dữ liệu
BÁO CÁO BÀI TẬP LỚN NHÓM 2
Giảng viên : Ninh Thị Thu Trang
TRẦN VĂN TRỌNG_B20DCAT192 Sinh viên : HÀ NỘI, 10/2024 lOMoAR cPSD| 58647650 MỞ ĐẦU
Trong thời đại công nghệ số hiện nay, việc bảo mật thông tin và xác thực
người dùng là một vấn đề quan trọng đối với hầu hết các ứng dụng và dịch vụ trực
tuyến. Mỗi ngày, hàng triệu người dùng truy cập vào các hệ thống trực tuyến như
ngân hàng, mạng xã hội, email, và các ứng dụng thương mại điện tử, do đó yêu cầu
về bảo mật ngày càng cao.
Mật khẩu (Password) từ lâu đã trở thành phương thức chính để xác thực
người dùng. Tuy nhiên, mật khẩu truyền thống dễ bị lộ, bị tấn công bởi các kỹ
thuật như phishing, brute force, hay keylogging. Để khắc phục những hạn chế
của mật khẩu, các phương pháp bảo mật mạnh mẽ hơn đã được phát triển, trong đó
có OTP (One-Time Password - Mật khẩu sử dụng một lần). OTP giúp nâng cao độ
bảo mật của hệ thống bằng cách cung cấp một mật khẩu ngẫu nhiên, chỉ có giá trị
trong một thời gian rất ngắn hoặc một lần sử dụng duy nhất.
Mục tiêu của báo cáo này là nghiên cứu các thuật toán sinh OTP, các
phương thức truyền OTP phổ biến như gửi qua Email và SMS, đồng thời xây
dựng một hệ thống đơn giản sử dụng OTP để xác thực người dùng. Báo cáo cũng
sẽ trình bày các biện pháp bảo mật khi sử dụng OTP và đề xuất các hướng phát
triển ứng dụng trong tương lai. LỜI CẢM ƠN
Chúng tôi xin gửi lời cảm ơn chân thành đến các thầy cô giáo tại Học viện
Công nghệ Bưu chính Viễn thông (PTIT) đã tạo điều kiện thuận lợi cho nhóm
trong quá trình thực hiện bài tập lớn này. Đặc biệt, chúng tôi xin cảm ơn Thầy/Cô
[Tên giảng viên] đã hướng dẫn và hỗ trợ nhóm trong suốt quá trình tìm hiểu và thực hiện bài báo cáo.
Ngoài ra, chúng tôi cũng muốn cảm ơn các bạn trong nhóm vì sự hợp tác và tinh
thần làm việc nhóm tốt, cùng nhau giải quyết mọi khó khăn trong quá trình nghiên cứu và triển khai.
Cuối cùng, chúng tôi xin gửi lời cảm ơn đến tất cả những người đã giúp đỡ,
đóng góp ý tưởng trong suốt thời gian thực hiện bài tập này. lOMoAR cPSD| 58647650
BẢNG TIẾN TRÌNH THỰC HIỆN BÀI TẬP NHÓM Thành viên phụ Thời gian Công việc chính Buổi họp trách
Phân công công việc, nghiên cứu lý Họp nhóm lần 1: Phân Ngày Cả nhóm thuyết chia công việc
Viết chương 1-2 (Lý thuyết OTP, thuật Họp nhóm lần 2: Báo toán HOTP/TOTP) cáo tiến độ
Viết chương 3 (Gửi OTP qua email và Họp nhóm lần 3: Thử Trần Văn Trọng SMS) nghiệm gửi OTP Họp nhóm lần 4: Thảo
Viết chương 4 (Bảo mật OTP)
Trần Văn Trọng luận bảo mật Họp nhóm lần 5: Kiểm Ngày
Viết chương 5 (Thiết kế hệ thống demo) tra demo
Viết chương 6 (Tổng kết và hướng phát Họp nhóm lần 6: Kiểm Ngày Trần Văn Trọng triển) tra báo cáo
Ngày 27/7 Nộp báo cáo và demo Cả nhóm Nộp bài MỤC LỤC
MỞ ĐẦU ................................................................................................................... 2
LỜI CẢM ƠN ............................................................................................................ 2
BẢNG TIẾN TRÌNH THỰC HIỆN BÀI TẬP NHÓM............................................. 3
MỤC LỤC ................................................................................................................. 3
ĐỀ TÀI : Tìm hiểu về mật khẩu sử dụng một lần (OTP)..........................................1
Chương 1. Giới thiệu về OTP....................................................................................1
Chương 2. Các thuật toán sinh OTP (HOTP và TOTP)............................................2
Chương 3. Phương pháp truyền OTP........................................................................3 lOMoAR cPSD| 58647650
3.1 Các phương pháp truyền OTP..........................................................................3
3.1.1 Gửi OTP qua email (SMTP).........................................................................3
3.1.2 Gửi OTP qua SMS (Twilio, Nexmo)............................................................3
3.1.3 Gửi OTP qua ứng dụng xác thực (Google Authenticator)............................3
3.2 Ưu và nhược điểm của các phương pháp truyền OTP.....................................3
3.3 Các dịch vụ và API phổ biến hỗ trợ gửi OTP..................................................3
Chương 4. Bảo mật khi sử dụng OTP.......................................................................4
4.1 Các mối nguy hiểm trong truyền OTP.............................................................4
4.1.1 Tấn công Man-in-the-Middle (MITM)......................................................4
4.1.2 Rủi ro bị lộ OTP trong quá trình truyền tải................................................4
4.1.3 Tấn công Phishing......................................................................................4
4.2 Các biện pháp bảo mật khi sử dụng OTP.........................................................4
4.2.1 Mã hóa OTP khi truyền tải.........................................................................4
4.2.2 Giới hạn thời gian sống của OTP...............................................................4
4.2.3 Giới hạn số lần thử nhập OTP....................................................................4
4.3 Xác thực đa yếu tố (MFA) kết hợp với OTP....................................................4
Chương 5. Xây dựng hệ thống OTP demo................................................................5
Chương 6. Tổng kết và hướng phát
triển...................................................................6 MỤC LỤC BẢNG
MỤC LỤC HÌNH ẢNH
ĐỀ TÀI : Tìm hiểu về mật khẩu sử dụng một lần (OTP)
Chương 1. Giới thiệu về OTP
Chương 2. Các thuật toán sinh OTP (HOTP và TOTP)
Chương 3. Phương pháp truyền OTP
3.1 Các phương pháp truyền OTP lOMoAR cPSD| 58647650
Sau khi mã OTP được hệ thống sinh ra (thường từ thuật toán HOTP hoặc
TOTP), nó cần được truyền đến người dùng để thực hiện xác thực. Việc lựa chọn
phương pháp truyền OTP ảnh hưởng trực tiếp đến trải nghiệm người dùng, độ an
toàn và độ tin cậy của hệ thống.
Dưới đây là ba phương pháp truyền OTP phổ biến hiện nay:
3.1.1 Gửi OTP qua email
Gửi mã OTP qua Email là một trong những phương thức phổ biến để xác
thực người dùng trong các hệ thống bảo mật hiện nay. Khi người dùng thực hiện
hành động nhạy cảm như đăng nhập, thay đổi mật khẩu hoặc thực hiện giao dịch
tài chính, hệ thống sẽ tạo ra một chuỗi mã xác thực (OTP) và gửi mã đó đến địa chỉ
email đã đăng ký của người dùng.
Phương thức này không yêu cầu người dùng cài đặt phần mềm bổ sung và
có thể hoạt động trên hầu hết các thiết bị có kết nối Internet. Tuy nhiên, độ tin cậy
của phương pháp này phụ thuộc vào mức độ bảo mật của hệ thống email mà người dùng sử dụng.
1. Cơ chế hoạt động:
Quá trình gửi OTP qua email diễn ra như sau:
• Người dùng nhập địa chỉ email của mình vào giao diện ứng dụng/web.
• Hệ thống sẽ sinh ra một mã OTP (thường gồm 6 ký tự số), sau đó lưu mã
này tạm thời vào cơ sở dữ liệu kèm thời gian hết hạn .
• Hệ thống gửi mã OTP này đến địa chỉ email người dùng đã nhập, thông
qua máy chủ gửi mail sử dụng giao thức SMTP.
• Người dùng mở email, lấy mã OTP và nhập trở lại vào hệ thống để xác nhận.
• Hệ thống kiểm tra mã OTP được nhập có khớp và còn hiệu lực hay không để xác nhận.
Dưới đây là sơ đồ minh họa cơ chế gửi và xác thực OTP qua email: lOMoAR cPSD| 58647650
Hình 1 - Sơ đồ minh họa quá trình gửi và xác minh OTP qua email
2. Quy trình thực hiện :
Cơ chế gửi và xác thực mã OTP qua email thường được chia thành hai giai đoạn chính:
a. Giai đoạn 1 : Gửi mã OTP (Send email OTP flow)
• Người dùng nhập email vào biểu mẫu đăng ký/xác thực.
• Client (ứng dụng người dùng) gửi yêu cầu xác minh đến server.
• Server tạo mã OTP, lưu tạm thời (thường kèm theo thời gian hết hạn) và
gửi thông tin này đến dịch vụ email (SMTP hoặc API) thông qua
endpoint như /otp/email/send.
• Dịch vụ gửi email (Transmit Security) truyền email chứa mã OTP đến người dùng.
• Server và client nhận phản hồi thành công từ dịch vụ gửi email.
b. Giai đoạn 2: Xác minh mã OTP (Email OTP validation flow) Người
dùng nhập mã OTP nhận được vào hệ thống.
• Client gửi yêu cầu xác minh mã OTP đến server.
• Server gọi API /otp/email/validate để kiểm tra: Mã OTP có đúng không? Còn hiệu lực không? lOMoAR cPSD| 58647650
Đã được sử dụng chưa?
• Nếu mã hợp lệ, trả về trạng thái thành công, ngược lại báo lỗi.
• Hệ thống tiếp tục cho phép người dùng truy cập hoặc thực hiện hành động tiếp theo.
3. Ưu và nhược điểm : Ưu điểm Hạn chế
Dễ triển khai, chỉ cần thư viện hỗ trợ gửi
Email có thể vào mục spam hoặc đến chậm email
Không mất phí gửi như SMS
Cần kết nối Internet để nhận được email
Một số hệ thống email có thể chặn hoặc lọc
Không phụ thuộc vào nhà mạng nội dung
Có thể tùy chỉnh nội dung email đẹp và
Tốn thời gian hơn so với OTP qua ứng dụng chuyên nghiệp di động
3.1.2 Gửi OTP qua SMS
OTP (One-Time Password) qua SMS là một hình thức xác thực trong đó mã OTP
được hệ thống tạo ra và gửi đến số điện thoại của người dùng thông qua tin nhắn
SMS. Đây là phương pháp xác thực 2 bước (2FA) phổ biến, được sử dụng rộng rãi
trong các hệ thống như: đăng nhập tài khoản, xác nhận giao dịch ngân hàng, xác
minh tài khoản mới, v.v.Người dùng sau khi nhận OTP qua tin nhắn sẽ nhập mã đó
vào hệ thống để xác minh danh tính. Mã OTP này chỉ sử dụng được một lần và có
thời gian hiệu lực rất ngắn lOMoAR cPSD| 58647650
Hình 2 - Sơ đồ minh họa quá trình gửi và xác minh OTP qua SMS
1. Cơ chế hoạt động:
Quá trình gửi OTP qua SMS diễn ra như sau: •
Người dùng nhập số điện thoại tại giao diện xác thực hoặc đăng ký tài khoản. •
Hệ thống sẽ sinh mã OTP (thường gồm 6 ký tự số, tồn tại trong một
khoảng thời gian nhất định). •
Mã OTP sẽ được gửi từ server đến dịch vụ gửi SMS trung gian (SMS Gateway). •
Dịch vụ SMS Gateway sẽ chuyển tiếp mã OTP đến số điện thoại người
dùng thông qua mạng viễn thông. •
Người dùng nhập mã OTP vào giao diện ứng dụng/web để xác thực. •
Hệ thống kiểm tra mã OTP và xác minh tính hợp lệ, từ đó xác thực phiên
làm việc hoặc hành vi người dùng.
2. Quy trình thực hiện :
a. Giai đoạn 1: Gửi mã OTP qua SMS
• Người dùng nhập số điện thoại vào biểu mẫu xác thực.
• Client gửi yêu cầu xác thực đến hệ thống Server. lOMoAR cPSD| 58647650
• Server tạo mã OTP (dãy số ngẫu nhiên), lưu tạm mã đó cùng thời gian
hết hạn và số điện thoại trong hệ thống.
• Server gửi mã OTP đến dịch vụ SMS Gateway (như Twilio, Viettel
SMS, FPT SMS, Nexmo, v.v.) qua API.
• SMS Gateway gửi tin nhắn chứa mã OTP đến số điện thoại của người dùng.
• Người dùng nhận được mã OTP qua SMS.
b. Giai đoạn 2: Người dùng nhập mã OTP và xác thực Người
dùng nhập mã OTP vào hệ thống trên giao diện.
• Client gửi mã OTP kèm số điện thoại đến Server.
• Server kiểm tra mã OTP: đối chiếu với mã lưu tạm, thời gian hết hạn, số điện thoại.
• Nếu mã hợp lệ và chưa hết hạn → Xác thực thành công.
• Nếu sai hoặc hết hạn → Xác thực thất bại, yêu cầu gửi lại.
3. Ưu và nhược điểm : Ưu điểm Nhược điểm
Phổ biến, dễ triển khai vì hầu hết người
Có thể bị chậm hoặc không nhận được do lỗi
dùng đều có số điện thoại.
mạng hoặc chặn tin nhắn.
Không yêu cầu kết nối Internet để nhận
Dễ bị tấn công nếu SIM bị đánh cắp hoặc mã OTP.
điện thoại bị chiếm quyền.
Tính tiện lợi cao trong các dịch vụ ngân
Chi phí phát sinh cao khi gửi OTP hàng loạt hàng, ví điện tử. qua dịch vụ SMS.
3.1.3 Gửi OTP qua ứng dụng xác thực
1. Cơ chế hoạt động: lOMoAR cPSD| 58647650
Phương thức gửi OTP qua ứng dụng xác thực (như Google Authenticator,
Microsoft Authenticator, Authy...) sử dụng thuật toán TOTP – mã OTP được tạo
ra dựa trên thời gian thực và một khóa bí mật (Shared Secret) đã được chia sẻ
trước đó giữa máy chủ và thiết bị người dùng.
Khi người dùng cấu hình ứng dụng xác thực (qua việc quét mã QR), ứng dụng
sẽ lưu trữ khóa bí mật này. Sau đó, cả server và ứng dụng đều sử dụng khóa bí
mật cùng thời gian hiện tại để tạo ra mã OTP giống nhau. Mã này thường có hiệu lực trong 30 giây.
Hình 3 – Cơ chế sinh mã OTP bằng TOTP qua ứng dụng xác thực
2. Quy trình thực hiện :
a. Giai đoạn 1: Đăng ký / Thiết lập ban đầu
• Người dùng đăng nhập vào hệ thống và chọn phương thức xác thực
bằng ứng dụng (TOTP) lOMoAR cPSD| 58647650
→ Người dùng vào phần thiết lập bảo mật tài khoản và chọn phương
thức xác thực hai bước bằng ứng dụng.
• Server tạo một "khóa bí mật" (secret key)
→ Đây là một chuỗi ký tự mã hóa (dạng base32), dùng để đồng bộ giữa
thiết bị người dùng và máy chủ.
• Server mã hóa khóa bí mật thành mã QR và hiển thị cho người dùng
→ Mã QR chứa khóa bí mật này sẽ được quét bởi ứng dụng xác thực.
• Người dùng mở ứng dụng Authenticator (Google Authenticator,
Authy...) và quét mã QR
→ Ứng dụng lưu khóa bí mật và bắt đầu tạo mã OTP định kỳ mỗi 30 giây.
• Người dùng nhập mã OTP từ ứng dụng vào hệ thống để xác minh →
Đây là bước kiểm tra xem thiết bị đã đồng bộ chính xác với server hay chưa.
• Server kiểm tra mã OTP do ứng dụng tạo có khớp với mã tạo từ phía server không
→ Nếu khớp: Hoàn tất quá trình liên kết thiết bị xác thực.
→ Nếu không khớp: Yêu cầu người dùng thử lại.
b. Giai đoạn 2: Xác thực khi đăng nhập
• Người dùng đăng nhập bằng tên đăng nhập và mật khẩu như bình thường
• Hệ thống yêu cầu mã OTP từ ứng dụng xác thực
• Người dùng mở ứng dụng Authenticator để lấy mã OTP hiện tại
(thường 6 chữ số)
→ Mã này thay đổi mỗi 30 giây.
• Người dùng nhập mã OTP vào hệ thống
• Server sử dụng khóa bí mật đã lưu trước đó và thời gian hiện tại để tính mã OTP
• So sánh mã OTP do server tạo với mã người dùng nhập Nếu trùng
khớp → Xác thực thành công, cho phép truy cập.
Nếu sai → Hiển thị lỗi, yêu cầu người dùng nhập lại (hoặc sử dụng mã dự phòng).
3. Ưu và nhược điểm : Ưu điểm Nhược điểm lOMoAR cPSD| 58647650
Không cần kết nối Internet hay
Người dùng có thể mất quyền truy cập nếu mất
mạng di động để nhận OTP
điện thoại hoặc chưa sao lưu khóa bí mật
Hạn chế được nguy cơ đánh chặn
Cần bước thiết lập ban đầu (quét QR, đồng bộ
OTP qua mạng như khi gửi SMS hay thời gian...) phức tạp hơn đối với người không Email rành công nghệ
OTP thay đổi liên tục theo thời gian Nếu thời gian hệ thống và thiết bị người dùng
(mỗi 30s), nâng cao tính bảo mật
không đồng bộ, có thể xảy ra lỗi xác thực
Một số người dùng chưa quen hoặc không sử
Bảo mật cao, không phụ thuộc vào dụng ứng dụng xác thực nên khả năng tiếp cận
nhà mạng hay dịch vụ email thấp
BẢNG SO SÁNH CÁC PHƯƠNG PHÁP TRUYỀN OTP Phương pháp Bảo mật Chi phí
Tiện lợi người dùng Phù hợp với
Email (SMTP) Trung bình Thấp/miễn phí Dễ triển khai, quen thuộc
Hệ thống nội bộ, công giáo email Hệ thống phổ thông, SMS (Twilio) Thấp Trung cao
Tuyệt vời cho người không dùng app user base rộng Ứng dụng bảo mật TOTP
Cần cài app, mất thiết bị có thể cao, ngân hàng, quản (Authenticator) Cao Miễn phí (chỉ app lần đầu) có backup trị
3.2 Các dịch vụ và API phổ biến hỗ trợ gửi OTP ở Việt Nam
Trong thực tế tại Việt Nam, có nhiều nhà cung cấp dịch vụ và nền tảng hỗ
trợ gửi OTP (qua SMS, email, ứng dụng xác thực) giúp các hệ thống dễ dàng tích
hợp chức năng bảo mật này vào quy trình xác thực người dùng. Các API và dịch lOMoAR cPSD| 58647650
vụ phổ biến không chỉ hỗ trợ nhanh chóng mà còn đảm bảo hiệu quả, độ tin cậy và dễ tích hợp. 1. Viettel SMS Gateway •
Giới thiệu: Là dịch vụ gửi tin nhắn SMS đến khách hàng được
cung cấp bởi Tập đoàn Viettel – nhà mạng lớn nhất Việt Nam. •
Tính năng: o Gửi OTP SMS hàng loạt hoặc theo yêu cầu riêng.
o Hỗ trợ báo cáo trạng thái tin nhắn (delivered, failed…). •
Ưu điểm: o Tốc độ gửi nhanh, độ phủ mạng lớn.
o Hỗ trợ kỹ thuật chuyên nghiệp. •
Nhược điểm: o Phí dịch vụ cao hơn một số nền tảng nước ngoài.
o Quy trình đăng ký phức tạp với doanh nghiệp nhỏ. •
Ứng dụng: Thường dùng trong ngân hàng, tài chính (MB Bank, Viettel Money). 2. FPT SMS API •
Giới thiệu: Cung cấp bởi Tập đoàn FPT, cho phép gửi OTP
SMS từ hệ thống của doanh nghiệp đến người dùng. • Tính năng:
o Gửi tin nhắn OTP, chăm sóc khách hàng, tin nhắn thương hiệu (Brandname SMS).
o Có dashboard quản lý, theo dõi. •
Ưu điểm: o Giao diện API rõ ràng, tài liệu hỗ trợ đầy đủ.
o Dễ tích hợp với các hệ thống web/app. •
Nhược điểm: o Hạn chế nếu gửi ra ngoài Việt Nam. •
Ứng dụng: Sử dụng trong nhiều dịch vụ thương mại điện tử, startup công nghệ.
3. ZNS (Zalo Notification Service) – ZaloPay/Zalo OA lOMoAR cPSD| 58647650 •
Giới thiệu: Gửi OTP hoặc thông báo qua Zalo đến người dùng Zalo đã đăng ký. •
Tính năng: o Gửi OTP xác thực qua nền tảng Zalo thay vì SMS.
o Giao diện API dạng RESTful, dễ tích hợp.
Ưu điểm: o Tiết kiệm chi phí hơn SMS truyền thống.
o Tương tác 2 chiều (user có thể phản hồi). •
Nhược điểm: o Chỉ gửi được cho người dùng đã theo dõi Zalo OA. •
Ứng dụng: Gửi OTP khi thanh toán qua ZaloPay, đăng nhập tài khoản qua Zalo.
4. Message365 (CMC Telecom) •
Giới thiệu: Dịch vụ SMS OTP thuộc Tập đoàn CMC – một trong những
nhà cung cấp viễn thông lớn tại Việt Nam. • Tính năng:
o Gửi OTP SMS theo thời gian thực.
o Tích hợp với hệ thống qua API HTTP hoặc SMPP. •
Ưu điểm: o Độ ổn định cao, dịch vụ 24/7. o Có chứng
chỉ bảo mật phù hợp doanh nghiệp lớn. •
Nhược điểm: o Đối tượng khách hàng chủ yếu là tổ chức. •
Ứng dụng: Hệ thống ngân hàng, ví điện tử, bảo hiểm. lOMoAR cPSD| 58647650
Chương 4. Bảo mật khi sử dụng OTP
4.1 Các mối nguy hiểm trong truyền OTP
4.1.1 Tấn công Man-in-the-Middle (MITM) 4.1.2 Rủi ro bị lộ
OTP trong quá trình truyền tải 4.1.3 Tấn công Phishing
4.2 Các biện pháp bảo mật khi sử dụng OTP
4.2.1 Mã hóa OTP khi truyền tải 4.2.2 Giới hạn thời gian sống
của OTP 4.2.3 Giới hạn số lần thử nhập OTP lOMoAR cPSD| 58647650
4.3 Xác thực đa yếu tố (MFA) kết hợp với OTP Chương
5. Xây dựng hệ thống OTP demo lOMoAR cPSD| 58647650
Chương 6. Tổng kết và hướng phát triển