
















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