Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
1,13 MB
Nội dung
HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN Cơ sở an tồn thơng tin Đề tài Tìm hiểu OTP (One- Time Password) ứng dụng Giảng viên: Nguyễn Mạnh Thắng MỤC LỤC MỤC LỤC i DANH MỤC HÌNH VẼ iii LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ OTP 1.1 Khái quát mật xác thực sử dụng mật 1.1.1 Khái niệm mật 1.1.2 Phương pháp xác thực sử dụng mật 1.1.3 Độ an toàn mật 1.2 Giới thiệu OTP 1.2.1 Định nghĩa OTP 1.2.2 Nguyên lý hoạt động 1.2.3 Ưu điểm nhược điểm OTP CHƯƠNG 2: CÁCH THỨC SINH VÀ CHUYỂN GIAO MÃ OTP 2.1 Một số phương pháp sinh mã OTP 2.1.1 Phương pháp sinh theo thời gian 2.1.2 Phương pháp sinh theo thuật toán 2.1.3 Phương pháp sinh phản hồi thách thức 11 2.2 Các phương pháp chuyển giao OTP 12 2.2.1 Chuyển giao giấy 12 2.2.2 Chuyển giao tin nhắn SMS gọi 12 2.2.3 Sử dụng token 13 2.2.4 Sử dụng điện thoại di động 15 2.2.5 Chuyển giao sử dụng gmail 15 CHƯƠNG 3: ỨNG DỤNG VÀ VẤN ĐỀ AN TOÀN CỦA OTP 16 3.1 Một số ứng dụng OTP thực tế 16 3.1.1 Ứng dụng giao dịch ngân hàng 16 3.1.2 Ứng dụng đăng nhập 16 3.1.3 Chặn thư rác bot tương tự capcha 16 3.1.4 Xác thực hai lớp 16 3.2 Vấn đề an toàn OTP 17 3.2.1 Chiếm đoạt mã OTP qua hình thức SMS OTP 17 3.2.2 Một số cách công sử dụng Secret tạo OTP 18 3.2.3 Giải pháp bảo mật chung 20 CHƯƠNG 4: XÂY DỰNG MƠ HÌNH CHƯƠNG TRÌNH SỬ DỤNG OTP XÁC THỰC YẾU TỐ 21 i 4.1 Ngôn ngữ thư viện sử dụng 21 4.2 Mô hình chương trình xác thực hai yếu tố 21 4.2.1 Tạo ID người dùng khóa bí mật tạm thời 21 4.2.2 Xác minh khóa để bật xác thực yếu tố tài khoản 22 4.2.3 Sử dụng mã otp để xác thực nhiều lần 25 CHƯƠNG 5: TÀI LIỆU THAM KHẢO 28 ii DANH MỤC HÌNH VẼ Hình Time-based One-Time Password (TOTP) Hình HMAC-based one-time password (HOTP) 10 Hình Thẻ EMV 14 Hình E Token 15 Hình Đánh cắp secret chung từ service provider 18 Hình Đánh cắp secret chung từ trusted device 19 Hình Tấn công phishing MITM attacks 19 iii LỜI MỞ ĐẦU Ngày với phát triển nhanh chóng số lượng dịch vụ trực tuyến dẫn đến số lượng ngày tăng nhu cầu xác thực nhận dạng kỹ thuật số khác mà người dùng cần quản lý Kết nhiều người cảm thấy tải với thông tin đăng nhập, điều tác động tiêu cực đến khả quản lý chúng cách an toàn Phương thức xác thực phổ biến sử dụng ký tự làm mật Để tránh việc nhớ mật khó, người dùng có xu hướng đặt mật theo tên mình, tên nhân vật tiếng ưu thích, hay ngày sinh nhật, điều làm cho tính bảo mật thấp đi, làm cho kẻ cơng dự đốn Hầu hết chuyên gia bảo mật đánh giá việc sử dụng mật khơng cịn an tồn trước thủ đoạn cơng tinh vi Mật bị nghe lén, bị đánh cắp, bị phá mã Một số giải pháp phát triển để tăng cường tính bảo mật, loại bỏ nhu cầu người dùng tạo quản lý mật khẩu, giải pháp điển hình dựa việc tạo mật lần, tức mật sử dụng phiên giao dịch Đây phương pháp giới thiệu để tăng cường độ an tồn q trình xác thực người dùng, xác thực giao dịch, đặc biệt giao dịch toán trực tuyến hệ thống ngân hàng sử dụng phổ biến Đề tài "Tìm hiểu OTP ứng dụng" lựa chọn với mục đích nghiên cứu mật sử dụng lần, phương pháp sinh tạo mật sử dụng lần ứng dụng thực tiễn CHƯƠNG 1: TỔNG QUAN VỀ OTP 1.1 Khái quát mật xác thực sử dụng mật 1.1.1 Khái niệm mật Mật hay gọi mật mã, lượng thơng tin mật đó, mà có người dùng hệ mật biết, người dùng cần phải nhớ, thường chuỗi ký tự, sử dụng để xác nhận, chứng minh tính xác người đăng nhập vào hệ thống, dịch vụ hay ứng dụng 1.1.2 Phương pháp xác thực sử dụng mật Nhằm kiểm soát quyền truy cập mức hệ thống Mỗi người sử dụng muốn vào mạng để sử dụng tài nguyên phải đăng ký tên mật Sự kết hợp username password nói cách xác thực phổ biến Với phương thức xác thực này, thông tin cặp username password nhập vào đối chiếu với liệu hệ thống, trùng khớp username password, thì người dùng xác thực cịn khơng người dùng bị từ chối cấm quyền truy cập 1.1.3 Độ an tồn mật Thơng thường, để dị tìm mật khẩu, người công thường sử dụng cách thức công vét cạn (Brute-force), cách thức sử dụng công cụ để tự động thử nghiệm chuỗi ký tự tìm mật Do vậy, sử dụng mật đơn giản hay ngắn, việc sử dụng phương pháp công dựa từ điển vét cạn giúp người cơng dễ dàng dị mật người dùng mà không nhiều thời gian Độ an toàn mật phụ thuộc vào độ dài mật kích thước tập ký tự: Độ dài mật phải từ ký tự trở lên Khi độ dài mật đủ lớn, khả bị đốn cơng vét cạn giảm Mật không nên chứa từ đơn giản, dễ đoán, tên người thân, tên vật yêu thích, ngày tháng năm sinh Các mật thường dễ dàng bị dò tìm thơng qua cơng dựa từ điển Mật phải tổ hợp chữ in hoa, in thường, chữ số ký tự đặc biệt (như ký tự $ #, ) Khi số loại ký tự sử dụng tăng lên, số tổ hợp mật có trở lên lớn làm cho việc thực công vét cạn không khả thi 1.2 Giới thiệu OTP 1.2.1 Định nghĩa OTP Mật sử dụng lần hay gọi OTP (One Time Password), mật sử dụng lần có giá trị phiên làm việc OTP sử dụng lần xác thực người dùng cho phiên làm việc xác thực giao dịch người dùng OTP thường sử dụng giao dịch điện tử hệ thống xác thực có độ bảo mật cao OTP thường có độ dài từ đến ký tự chữ số OTP thường dùng để làm bảo mật lớp giao dịch xác minh đăng nhập, đặc biệt giao dịch với tài khoản ngân hàng OTP giúp ngăn chặn, giảm thiểu rủi ro bị công mật bị lộ kẻ công xâm nhập 1.2.2 Nguyên lý hoạt động Nguyên lý hoạt động OTP sau: sau đăng ký dịch vụ, lần muốn đăng nhập hay xác thực, người dùng cấp mã OTP tạo đầu đọc thẻ thông minh hay thiết bị tạo mật cầm tay (Token) nhờ vào kết nối internet với máy chủ dịch vụ cung cấp OTP thơng qua thẻ OTP in sẵn hay điện thoại di động mà không cần đến kết nối internet Mã OTP dùng để xác nhận giao dịch lần Thậm chí chưa sử dụng sau khoảng 30 giây đến phút, mã xác nhận khơng cịn hiệu lực, khơng thể sử dụng cho giao dịch khác Quá trình tạo mã OTP lặp lại người dùng yêu cầu xác thực hệ thống bảo mật OTP 1.2.3 Ưu điểm nhược điểm OTP OTP có nhiều ưu điểm so với mật truyền thống Cụ thể: Khả chống lại công: Xác thực OTP cung cấp lợi khác biệt so với việc sử dụng mật tĩnh Không giống mật truyền thống, OTP không dễ bị công — tin tặc chặn việc truyền liệu (như người dùng gửi mật họ), ghi lại sử dụng để truy cập vào hệ thống tài khoản họ Khi người dùng có quyền truy cập vào tài khoản họ OTP, mã trở nên khơng hợp lệ kẻ cơng khơng thể sử dụng lại Khó đoán: OTP thường tạo thuật toán sử dụng ngẫu nhiên Điều khiến kẻ cơng khó đốn sử dụng chúng thành cơng OTP có hiệu lực thời gian ngắn, yêu cầu người dùng có kiến thức OTP trước cung cấp cho người dùng thử thách (ví dụ: “vui lịng nhập số thứ hai thứ năm”) Tất biện pháp làm giảm thêm bề mặt công môi trường so sánh với xác thực mật Giảm rủi ro mật bị xâm phạm: Người dùng không áp dụng biện pháp bảo mật mạnh mẽ có xu hướng tái chế thông tin đăng nhập giống tài khoản khác Nếu thông tin đăng nhập bị rò rỉ rơi vào tay kẻ xấu, liệu bị đánh cắp gian lận mối đe dọa đáng kể người dùng phương diện Bảo mật OTP giúp ngăn chặn vi phạm truy cập, kẻ cơng có thơng tin đăng nhập hợp lệ Dễ dàng áp dụng: Mật mã dùng lần dễ dàng cho tổ chức tích hợp vào chiến lược xác thực họ Mặc dù chất khó hiểu mã khiến người khó ghi nhớ, điện thoại, mã thơng báo cơng nghệ khác truy cập rộng rãi để nhóm bảo mật sử dụng phân phối cho nhân viên họ Nhược điểm: Mã OTP bị lộ chủ tài khoản không giữ thông tin cẩn thận Giao dịch thông qua hệ thống internet bị hacker cơng Với hình thức OTP Token, bảo mật phải trả thêm chi phí làm máy Token CHƯƠNG 2: CÁCH THỨC SINH VÀ CHUYỂN GIAO MÃ OTP 2.1 Một số phương pháp sinh mã OTP 2.1.1 Phương pháp sinh theo thời gian Theo phương pháp sinh OTP theo thời gian, người dùng cấp thiết bị sinh mã gọi token Token gồm có ba thành phần chính: mã seedcode, đồng hồ đếm thời gian, thuật tốn mã hóa chiều Mã seedcode mã nhà sản xuất cài đặt sẵn token Mỗi token có mã seedcode khác Và mã seedcode lưu lại hệ thống nhà cung cấp dịch vụ tương ứng với tên truy nhập người dùng Đồng hồ đếm thời gian đồng hồ token, đồng với đồng hồ hệ thống trước giao cho người dùng Mỗi người dùng bấm nút sinh mã, token lấy biến thời gian đồng hồ Biến thời gian lấy chi tiết đến phút, 30 giây Thuật tốn mã hóa sử dụng thuật toán băm SHA-1 Thuật toán Time-based One-Time Password (TOTP) ví dụ cụ thể giải thuật sinh mật lần dựa thời gian Với thuật toán TOTP sinh mật OTP dựa theo thời gian giá trị T thời gian tính sau: 𝑻= 𝑻𝒄𝒖𝒓𝒓𝒏𝒆𝒕_𝒖𝒏𝒊𝒙_𝒕𝒊𝒎 − 𝑻𝟎 𝑿 Trong đó: 𝑻𝒄𝒖𝒓𝒓𝒏𝒆𝒕_𝒖𝒏𝒊𝒙_𝒕𝒊𝒎: giá trị thời gian tính theo thời gian Unix (được tính từ thời điểm Unix Epoch ngày 01/01/1970 theo UTC (giờ chuẩn quốc tế) 𝑻𝟎 : Là giá trị thời gian ban đầu (thường chọn T0 = 0) 𝑿: Là bước thời gian, tham số định thời gian hợp lệ mật OTP 𝑻: Chính kết tính (đã lấy phần nguyên) từ cơng thức tính tốn Card Visa International đưa Quá trình chuyển đổi sang chuẩn EMV toàn giới diễn từ vài năm Việt Nam nằm khu vực có hạn áp dụng từ 1/1/2006, tới thời điểm này, có VPBank thực phát hành thẻ EMV Các ngân hàng khác chưa công bố kế hoạch chuyển đổi thức Hình Thẻ EMV E-Token thiết bị có cơng dụng tạo OTP dựa kết nối thiết bị với máy tính mà khách hàng thực giao dịch E-Token thiết bị nhận dạng số, tích hợp giải pháp phần mềm bảo mật chuyên dụng, theo chuẩn quốc tế kết nối với máy tính thơng qua cổng giao tiếp USB.E-Token cho phép người dùng lẫn người quản trị bảo mật quản lý hiệu trình chứng thực người dùng hệ thống cách lưu trữ sinh mật khẩu, chứng số mã hóa tất thơng tin đăng nhập (cả khóa chung khóa riêng) E-Token cung cấp tảng bảo mật an toàn, hiệu quả, dễ sử dụng triển khai diện rộng 14 Hình E Token 2.2.4 Sử dụng điện thoại di động Người dùng cịn dùng điện thoại di động mình, phần mềm miễn phí “mật dùng lần di động” (Mobile One Time Password - MOTP) để tạo OTP Mỗi muốn truy cập vào hệ thống mạng nội qua SSL VPN, người dùng phải nhập mã PIN (đã biết trước) vào điện thoại di động để tạo mật đăng nhập Sau thực kết nối SSL VPN, trình đăng nhập xuất yêu cầu nhập username password Lúc người dùng nhập username (đã biết trước) mật vừa tạo điện thoại di động để đăng nhập vào mạng nội 2.2.5 Chuyển giao sử dụng gmail Từ hệ thống xác thực tin nhắn gmail, mật OTP sinh gửi thông qua tin nhắn văn đến gmail người dùng Tương tự với thẻ bảo mật, người dùng phải nhập OTP nhận nhập vào giao diện đăng nhập nhằm xác minh tính xác khẳng định đủ an tồn để truy nhập hệ thống dịch vụ ứng dụng Đầu tiên, khách hàng đăng ký dịch vụ với gmail cho ngân hàng Khi thực giao dịch, khách hàng nhập thơng tin tốn, máy chủ ngân hàng tạo OTP gửi cho khách hàng thông qua tổng đài tin nhắn gmail Sau khách hàng nhận tin nhắn chứa OTP, khách hàng phải nhập OTP vào để máy chủ xác thực Máy chủ kiểm tra OTP, thì thực giao dịch, khơng có báo lỗi 15 CHƯƠNG 3: ỨNG DỤNG VÀ VẤN ĐỀ AN TOÀN CỦA OTP 3.1 Một số ứng dụng OTP thực tế 3.1.1 Ứng dụng giao dịch ngân hàng OTP dùng xác nhận giao dịch, đặc biệt giao dịch ngân hàng Sử dụng OTP để xác nhận giao dịch giúp nâng cao tính bảo mật dịch vụ toán online dịch vụ ngân hàng điện tử Bên cạnh đó, OTP cịn giúp giảm thiểu, ngăn chặn rủi ro hacker hay lộ thông tin tài khoản, nhờ mà người dùng cảm thấy an tâm nhiều 3.1.2 Ứng dụng đăng nhập Ứng dụng đăng nhập lần dựa mật sử dụng lần xây dựng nhằm xác thực người sử dụng người sử dụng truy cập vào chuỗi ứng dụng có liên kết mơi trường phân tán Người dùng cần cung cấp thông tin đăng nhập lần truy nhập vào nhiều ứng dụng khác hệ thống phân tán Như ứng dụng tài nguyên khác hỗ trợ chế xác thực khác nhau, SSO phải chuyển đổi nội lưu trữ thông tin ủy quyền khác để so sánh với gì sử dụng để xác thực lần đầu 3.1.3 Chặn thư rác bot tương tự capcha CAPTCHA loại kiểm tra phản ứng thử thách sử dụng máy tính để xác định xem người dùng có phải người hay khơng OTP phục vụ mục đích trình kiểm tra mà bạn sử dụng để xác nhận xem người dùng cố gắng truy cập tài khoản người hay máy tính 3.1.4 Xác thực hai lớp Xác thực hai yếu tố với SMS OTP Voice OTP cần tương tác trực tiếp với điện thoại người dùng Đối với SMS OTP, sau bước nhập Username Password, website gửi cho người dùng mã OTP (One Time Password) qua tin nhắn văn SMS Người dùng sau phải nhập lại mã OTP thời gian hiệu lực quy định để có quyền truy cập Voice OTP tương tự SMS OTP, 16 thay vì nhận mã OTP qua SMS, người dùng nhận gọi thông báo mã từ tổng đài 3.2 Vấn đề an toàn OTP Khi triển khai cách, OTP khơng cịn hữu ích kẻ công thời gian ngắn kể từ lần sử dụng Điều khác với mật khẩu, mật hữu ích cho kẻ công nhiều năm sau thực tế Cũng mật khẩu, OTP bị công, kẻ cơng lấy cắp OTP cách lừa khách hàng cung cấp OTP cho họ Cũng giống mật khẩu, OTP dễ bị công kẻ trung gian Hiện nay, phổ biến xác thực giao dịch trực tuyến tin nhắn SMS Tuy nhiên, theo Viện Tiêu chuẩn Kỹ thuật Quốc gia Mỹ (NIST), xác thực tin nhắn SMS khơng đủ an tồn Tin tặc hack để chuyển tin nhắn SMS đến số điện thoại khơng thuộc chủ Các thủ thuật tinh vi đến mức người dùng tin nhắn mình bị đánh cắp 3.2.1 Chiếm đoạt mã OTP qua hình thức SMS OTP Tội phạm mạng thao túng liệu người dùng việc sử dụng kỹ nghệ xã hội (Social Engineering) để thu thập thông tin cá nhân, mã OTP Dữ liệu thu thập thông thường qua email lừa đảo, phần mềm độc hại, web đen nghiên cứu mạng xã hội Khi có quyền truy cập vào hệ thống SS7, hacker có quyền truy cập vào thơng tin nhạy cảm người dùng Chúng chuyển tiếp gọi để ghi âm nghe Chúng đọc SMS gửi nhận điện thoại Các thiết bị đồng hóa tạo hội cho kẻ cơng truy cập từ nhiều điện thoại thơng minh, máy tính xách tay, máy tính bảng Nhiều nhà cung cấp dịch vụ không dây cho phép người dùng xem tin nhắn văn qua tài khoản trực tuyến cổng web họ Nếu tài khoản không bảo mật yếu tố thứ hai đáng tin cậy, kẻ xấu 17 có quyền truy cập cố gắng theo dõi chúng để tìm mã xác thực SMS Những kẻ cơng đóng giả tổ chức đáng tin cậy nỗ lực thuyết phục mục tiêu giao thông tin cá nhân mật họ bao gồm mã SMS sau họ sử dụng để truy cập trái phép 3.2.2 Một số cách công sử dụng Secret tạo OTP Đánh cắp secret chung từ service provider: Nếu kẻ cơng chép secret chung, tạo OTP hợp lệ vượt qua lớp bảo mật TOTP 2FA Hình Đánh cắp secret chung từ service provider Đánh cắp secret chung từ trusted device: Trusted device Alice bị đánh cắp Nếu thiết bị khơng mã hố ổ cứng, hacker lấy secret chung cách dễ dàng Tình tồi tệ Alice không đặt mật cho trusted device hacker dễ dàng sử dụng ứng dụng xác thực để xem dịch vụ đăng ký với username OTP cho dịch vụ 18 Hình Đánh cắp secret chung từ trusted device Tấn công phishing MITM attacks: Hình Tấn công phishing MITM attacks Alice nghĩ trang web thật, cô đăng nhập bình thường với username password Và hacker điều hành trang web lừa đảo sử dụng username password Alice vừa nhập để đăng nhập vào trang web thật Sau đó, trang web lừa đảo nhắc Alice nhập OTP tạo ứng 19 dụng xác thực thiết bị đáng tin cậy cô Một lần nữa, Alice nghĩ cô trang web thật biết cô bật TOTP 2FA tài khoản mình, nhập OTP vào trang web lừa đảo Ngay sau làm vậy, hacker sử dụng OTP hợp lệ để đăng nhập thành công vào tài khoản Alice trang web thực TOTP 2FA dễ bị công Man in the Middle (MITM) attack Alice sử dụng kết nối HTTP khơng an tồn để đăng nhập vào trang web thật Điều cho phép hacker đọc tất lưu lượng truy cập web, bao gồm OTP mà Alice nhập thủ cơng vào trình duyệt 3.2.3 Giải pháp bảo mật chung Cảnh giác trước truy cập mở tin nhắn văn email, nghiên cứu kỹ nguồn tin Luôn cập nhật hệ thống, chương trình phòng chống virus ứng dụng Khơng sử dụng phần mềm thương mại bất hợp pháp thiết bị Luôn cập nhật hệ thống, chương trình phòng chống virus ứng dụng Khơng sử dụng phần mềm thương mại bất hợp pháp thiết bị Luôn lưu liệu quan trọng lên dịch vụ đám mây ổ cứng di động, đề phòng điện thoại máy tính xách tay Khơng sử dụng thiết bị cũ vì phần cứng lỗi thời, tồn lỗ hổng để tin tặc khai thác Không sử dụng mật nhiều tài khoản khơng lưu mật trình duyệt Cân nhắc việc sử dụng Face ID vân tay để thay mật Đặt mã khóa mã PIN riêng cho thẻ SIM mình Điều cung cấp thêm lớp bảo mật quan trọng Khơng sử dụng Wi-fi cơng cộng khơng an tồn Trong trường hợp bắt buộc, đảm bảo bạn sử dụng VPN Không chia sẻ secret với người khác, nên ghi secret giấy thay thiết bị điện tử 20 CHƯƠNG 4: XÂY DỰNG MƠ HÌNH CHƯƠNG TRÌNH SỬ DỤNG OTP XÁC THỰC YẾU TỐ 4.1 Ngôn ngữ thư viện sử dụng Trong chương trình mô sử dụng Node.js FrameWork Express làm máy chủ đơn giản Với việc tạo khóa bí mật sử dụng hàm generateSecret() Speakeasy Các bước thực hiện: Tạo id người dùng khóa bí mật tạm thời Xác minh khóa bí mật để bật xác thực hai yếu tố với tài khoản Xác thực hai yếu tố (giả sử trình đăng nhập tài khoản mật thơng qua) 4.2 Mơ hình chương trình xác thực hai yếu tố 4.2.1 Tạo ID người dùng khóa bí mật tạm thời (Giả sử người dùng nhập thông tin tài khoản để đăng ký.) //tạo id người dùng khóa bí mật tạm thời app.post("/api/register", (req, res) => { const id = uuid.v4(); try { const path = `/user/${id}`; //tạo khóa bí mật tạm thời (các dạng ascii, hex, base32, otpauth_url) const temp_secret = speakeasy.generateSecret(); //thêm người dùng vào sở liệu db.push(path, { id, temp_secret }); // gửi id người dùng khóa bí mật tạm thời res.json({ id, secret: temp_secret }) } catch(e) { console.log(e); res.status(500).json({ message: 'Lỗi tạo người dùng'}) } }) Tạo id khóa bí mật tạm thời với dạng mã hóa ascii, hex, base32, otpauth_url (Thông tin gửi lại cho người dùng) 21 (Ở sử dụng dạng base32 làm khóa bí mật) 4.2.2 Xác minh khóa để bật xác thực yếu tố tài khoản //xác khóa bí mật tạm thời, chuyển đổi khóa bí mật tạm thời sang vĩnh viễn //để bật xác thực yếu tố tài khoản app.post("/api/verify", (req,res) => { const { userId, token } = req.body; try { // lấy liệu người dùng const path = `/user/${userId}`; const user = db.getData(path); console.log({ user }) const { base32: secret } = user.temp_secret; const verified = speakeasy.totp.verify({ secret, encoding: 'base32', token }); if (verified) { // cập nhật thành khóa bí mật vĩnh viễn xác minh thành công db.push(path, { id: userId, secret: user.temp_secret }); res.json({ verified: true }) } else { res.json({ verified: false}) } } catch(error) { console.error(error); res.status(500).json({ message: 'Lỗi truy xuất người dùng'}) }; 22 Sử dụng Authenticator web app điện thoại để nhập khóa bí mật tạm thời Sau xác nhận nhận mã OTP Sử dụng mã OTP để xác minh Nhập id người dùng mã otp vừa nhận 23 Kết trả true mã otp đúng, false mã otp sai Nếu xác minh thành cơng khóa bí mật từ dạng tạm thời chuyển sang vĩnh viễn sở liệu 24 4.2.3 Sử dụng mã otp để xác thực nhiều lần // sử dụng otp để xác thực nhiều lần app.post("/api/validate", (req,res) => { const { userId, token } = req.body; try { //lấy liệu người dùng từ sở liệu const path = `/user/${userId}`; const user = db.getData(path); console.log({ user }) const { base32: secret } = user.secret; // trả true mã otp khớp const tokenValidates = speakeasy.totp.verify({ secret, encoding: 'base32', token, window: }); if (tokenValidates) { res.json({ validated: true }) } else { res.json({ validated: false}) } } catch(error) { console.error(error); res.status(500).json({ message: 'Lỗi truy xuất người dùng'}) }; }) Khi xác minh khóa bí mật thành cơng (bật xác thực yếu tố tài khoản) người dùng sử dụng khóa vĩnh viễn để lấy mã otp sử dụng cho nhiều lần xác thực đăng nhập sau (Giả sử bước đăng nhập tài khoản mật người dùng thơng qua trước đó) 25 Lấy mã OTP qua Authenticator Nếu mã OTP trùng khớp trả true (đăng nhập thành công), sai trả false (đăng nhập thất bại) 26 Cùng mã otp sau khoảng thời gian không nhập (thường 30s) sử dụng mã otp cho lần đăng nhập kết trả false 27 CHƯƠNG 5: TÀI LIỆU THAM KHẢO https://en.wikipedia.org/wiki/One-time_password https://en.wikipedia.org/wiki/Time-based_One-Time_Password https://en.wikipedia.org/wiki/HMAC-based_one-time_password https://en.wikipedia.org/wiki/Challenge%E2%80%93response_authentic ation http://tailieudientu.lrc.tnu.edu.vn/Chi-tiet/nghien-cuu-van-de-xac-thucgiao-dich-ngan-hang-truc-tuyen-su-dung-mat-khau-dang-otp-55926 https://tamhoang1412.wordpress.com/2020/08/19/totp-an-toan-hon-ratnhieu-so-voi-sms-nhung-so-voi-push-lai-khong-tien-bang http://m.antoanthongtin.gov.vn/giai-phap-khac/xac-thuc-da-nhan-to-lieuco-an-toan-tuyet-doi-phan-hai-106712 https://blog.logrocket.com/implementing-two-factor-authenticationusing-speakeasy 28 ... Chuyển giao sử dụng gmail 15 CHƯƠNG 3: ỨNG DỤNG VÀ VẤN ĐỀ AN TOÀN CỦA OTP 16 3.1 Một số ứng dụng OTP thực tế 16 3.1.1 Ứng dụng giao dịch ngân hàng 16 3.1.2 Ứng dụng đăng... tài "Tìm hiểu OTP ứng dụng" lựa chọn với mục đích nghiên cứu mật sử dụng lần, phương pháp sinh tạo mật sử dụng lần ứng dụng thực tiễn CHƯƠNG 1: TỔNG QUAN VỀ OTP 1.1 Khái quát mật xác thực sử dụng. .. 15 CHƯƠNG 3: ỨNG DỤNG VÀ VẤN ĐỀ AN TOÀN CỦA OTP 3.1 Một số ứng dụng OTP thực tế 3.1.1 Ứng dụng giao dịch ngân hàng OTP dùng xác nhận giao dịch, đặc biệt giao dịch ngân hàng Sử dụng OTP để xác nhận