Một số giải pháp đã được 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 và quản lý mật khẩu, một giải pháp điển hình dựa trênviệc tạo mật khẩu một lần, tức là mật
Trang 1
Sinh viên thực hiện:
Lê Tiến Dũng- AT150311
Lê Văn Sớm- AT150245
Nhóm 18
Giảng viên: Nguyễn Mạnh Thắng
Trang 3MỤC LỤC
MỤC LỤC i
DANH MỤC HÌNH VẼ iii
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ OTP 2
1.1 Khái quát về mật khẩu và xác thực sử dụng mật khẩu 2
1.1.1 Khái niệm mật khẩu 2
1.1.2 Phương pháp xác thực sử dụng mật khẩu 2
1.1.3 Độ an toàn mật khẩu 2
1.2 Giới thiệu về OTP 3
1.2.1 Định nghĩa OTP 3
1.2.2 Nguyên lý hoạt động 3
1.2.3 Ưu điểm và nhược điểm OTP 4
CHƯƠNG 2: CÁCH THỨC SINH VÀ CHUYỂN GIAO MÃ OTP 6
2.1 Một số phương pháp sinh mã OTP 6
2.1.1 Phương pháp sinh theo thời gian 6
2.1.2 Phương pháp sinh theo thuật toán 7
2.1.3 Phương pháp sinh bằng 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 bằng giấy 12
2.2.2 Chuyển giao bằng tin nhắn SMS và cuộc 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 của OTP trong thực tế hiện nay 16
3.1.1 Ứng dụng trong 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 và bot tương tự như capcha 16
3.1.4 Xác thực hai lớp 16
3.2 Vấn đề an toàn của 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 tấn công khi sử dụng Secret tạo OTP 18
3.2.3 Giải pháp bảo mật chung 20
Trang 4CHƯƠNG 4: XÂY DỰNG MÔ HÌNH CHƯƠNG TRÌNH SỬ DỤNG OTP XÁC THỰC 2 YẾU TỐ 21
4.1 Ngôn ngữ và 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 và khóa bí mật tạm thời 21
4.2.2 Xác minh khóa đó để bật xác thực 2 yếu tố đối với 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
Trang 5DANH MỤC HÌNH VẼ
Hình 1 Time-based One-Time Password (TOTP) 7
Hình 2 HMAC-based one-time password (HOTP) 8
Hình 3 Thẻ EMV 12
Hình 4 E Token 13
Hình 5 Đánh cắp secret chung từ service provider 16
Hình 6 Đánh cắp secret chung từ trusted device 17
Hình 7 Tấn công phishing và MITM attacks 17
Trang 6Một số giải pháp đã được 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 và quản lý mật khẩu, một giải pháp điển hình dựa trênviệc tạo mật khẩu một lần, tức là mật khẩu chỉ sử dụng một phiên hoặc một giaodịch Đây là phương pháp được giới thiệu để tăng cường độ an toàn trong quátrình xác thực người dùng, xác thực các giao dịch, đặc biệt là các giao dịchthanh toán trực tuyến trong các hệ thống ngân hàng đang được sử dụng phổ biếnhiện nay.
Đề tài "Tìm hiểu về OTP và ứng dụng" được lựa chọn với mục đích
nghiên cứu về mật khẩu sử dụng một lần, các phương pháp sinh và tạo mật khẩu
sử dụng một lần và ứng dụng trong thực tiễn
Trang 7CHƯƠNG 1: TỔNG QUAN VỀ OTP
1.1 Khái quát về mật khẩu và xác thực sử dụng mật
khẩu
1.1.1 Khái niệm mật khẩu
Mật khẩu hay đôi khi được gọi là mật mã, là một lượngthông tin mật nào đó, mà chỉ có người dùng và hệ mật đượcbiết, người dùng cần phải nhớ, thường là một chuỗi ký tự, được
sử dụng để xác nhận, chứng minh tính chính xác một người nào
đó khi đăng nhập vào một hệ thống, một dịch vụ hay một ứngdụng
1.1.2 Phương pháp xác thực sử dụng mật khẩu
Nhằm kiểm soát quyền truy cập ở mức hệ thống Mỗi người sử dụngmuốn vào được mạng để sử dụng tài nguyên đều phải đăng ký tên và mật khẩu
Sự kết hợp giữa username và password có thể nói là cách xác thực cơ bản nhất
và cũng là phổ biến nhất Với phương thức xác thực này, thông tin cặpusername và password nhập vào được đối chiếu với dữ liệu trên hệ thống, nếutrùng khớp username và password, thì người dùng được xác thực còn nếu khôngngười dùng sẽ bị từ chối hoặc cấm quyền truy cập
1.1.3 Độ an toàn mật khẩu
Thông thường, để dò tìm mật khẩu, các người tấn công thường sử dụngcách thức tấn công vét cạn (Brute-force), là cách thức sử dụng các công cụ để tựđộng thử nghiệm lần lượt các chuỗi ký tự cho đến khi tìm ra mật khẩu đúng Dovậy, nếu sử dụng các mật khẩu quá đơn giản hay quá ngắn, việc sử dụngphương pháp tấn công dựa trên từ điển hoặc vét cạn có thể giúp người tấn công
dễ dàng dò ra mật khẩu của người dùng mà không mất quá nhiều thời gian
Độ an toàn của mật khẩu phụ thuộc vào độ dài mật khẩu
và kích thước tập ký tự:
Trang 8 Độ dài của mật khẩu phải từ 8 ký tự trở lên Khi độdài mật khẩu đủ lớn, khả năng bị đoán hoặc tấn côngvét cạn giảm đi
Mật khẩu không nên chứa các từ đơn giản, dễ đoán,như tên người thân, tên con vật yêu thích, hoặc ngàytháng năm sinh Các mật khẩu như vậy thường dễdàng bị dò tìm thông qua tấn công dựa trên từ điển
Mật khẩu phải là tổ hợp của các chữ cái in hoa, inthường, chữ số và ký tự đặc biệt (như các ký tự $
#, ) Khi số loại ký tự được sử dụng tăng lên, số tổhợp mật khẩu có thể có trở lên rất lớn làm cho việcthực hiện tấn công vét cạn không khả thi
1.2 Giới thiệu về OTP
1.2.1 Định nghĩa OTP
Mật khẩu sử dụng một lần hay còn gọi là OTP (One TimePassword), là mật khẩu chỉ được sử dụng một lần hoặc chỉ cógiá trị trong một phiên làm việc OTP có thể được sử dụng mộtlần trong xác thực người dùng cho một phiên làm việc hoặc xácthực một giao dịch của người dùng OTP thường được sử dụngtrong các giao dịch điện tử hoặc các hệ thống xác thực có độbảo mật cao
OTP thường có độ dài từ 6 đến 8 ký tự chữ và số OTPthường được dùng để làm bảo mật 2 lớp trong các giao dịch xác minh đăngnhập, đặc biệt là giao dịch với tài khoản ngân hàng OTP giúp ngăn chặn, giảmthiểu những rủi ro bị tấn công khi mật khẩu bị lộ hoặc các kẻ tấn công xâmnhập
Trang 91.2.2 Nguyên lý hoạt động
Nguyên lý hoạt động của OTP như sau: sau khi đã đăng ký dịch vụ, mỗilần muốn đăng nhập hay xác thực, người dùng sẽ được cấp một mã OTP đượctạo ra bởi đầu đọc và thẻ thông minh hay thiết bị tạo mật khẩu cầm tay (Token)nhờ vào kết nối internet với máy chủ của dịch vụ cung cấp OTP hoặc cũng cóthể thông qua thẻ OTP in sẵn hay điện thoại di động mà không cần đến kết nốiinternet Mã OTP này được dùng để xác nhận giao dịch một lần duy nhất Thậmchí khi chưa sử dụng thì sau khoảng 30 giây đến 2 phút, mã xác nhận này cũngkhông còn hiệu lực, và cũng không thể sử dụng nó cho bất kì giao dịch nàokhác
Quá trình tạo mã OTP mới sẽ được lặp lại mỗi khi người dùng yêu cầuxác thực đối với hệ thống được bảo mật bằng OTP
1.2.3 Ưu điểm và nhược điểm OTP
OTP có nhiều ưu điểm so với mật khẩu truyền thống Cụthể:
Khả năng chống lại các cuộc tấn công: Xác thực OTPcung cấp những lợi thế khác biệt so với việc chỉ sửdụng mật khẩu tĩnh Không giống như mật khẩutruyền thống, OTP không dễ bị tấn công — trong đótin tặc chặn việc truyền dữ liệu (như người dùng gửimật khẩu của họ), ghi lại và sử dụng nó để truy cậpvào hệ thống hoặc tài khoản của chính họ Khi ngườidùng có quyền truy cập vào tài khoản của họ bằngOTP, mã sẽ trở nên không hợp lệ và do đó kẻ tấncông không thể sử dụng lại
Khó đoán: OTP thường được tạo bằng các thuật toán
sử dụng sự ngẫu nhiên Điều này khiến những kẻ tấncông khó đoán và sử dụng chúng thành công OTP có
Trang 10thể chỉ có hiệu lực trong thời gian ngắn, yêu cầungười dùng có kiến thức về OTP trước đó hoặc cungcấp cho người dùng một thử thách (ví dụ: “vui lòngnhập số thứ hai và thứ năm”) Tất cả các biện phápnày làm giảm thêm bề mặt tấn công của môi trườngkhi so sánh với xác thực chỉ bằng mật khẩu.
Giảm rủi ro khi mật khẩu bị xâm phạm: Người dùngkhông áp dụng các biện pháp bảo mật mạnh mẽ có
xu hướng tái chế các thông tin đăng nhập giống nhautrên các tài khoản khác nhau Nếu những thông tinđăng nhập này bị rò rỉ hoặc rơi vào tay kẻ xấu, dữliệu bị đánh cắp và gian lận là những mối đe dọađáng kể đối với người dùng trên mọi phươngdiện Bảo mật OTP giúp ngăn chặn vi phạm truy cập,ngay cả khi kẻ tấn công đã có được bộ thông tin đăngnhập hợp lệ
Dễ dàng áp dụng: Mật mã dùng một lần cũng dễdàng cho các tổ chức tích hợp vào chiến lược xácthực của họ Mặc dù bản chất khó hiểu của những mãnày khiến mọi người khó ghi nhớ, nhưng điện thoại,
mã thông báo và các công nghệ khác có thể truy cậprộng rãi để các nhóm bảo mật sử dụng và phân phốicho nhân viên của họ
Trang 11 Với hình thức OTP Token, bảo mật hơn nhưng phải trảthêm chi phí làm máy Token.
Trang 12CHƯƠ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 sẽđược cấp một thiết bị sinh mã được gọi là token Token gồm có
ba thành phần chính: một mã seedcode, một đồng hồ đếm thờigian, và một thuật toán mã hóa một chiều Mã seedcode là mãđược nhà sản xuất cài đặt sẵn trong token Mỗi token có một
mã seedcode khác nhau Và mã seedcode này cũng được lưu lạitrong hệ thống của nhà cung cấp dịch vụ tương ứng với tên truynhập của người dùng Đồng hồ đếm thời gian là đồng hồ củatoken, nó được đồng bộ với đồng hồ của hệ thống trước khi giaocho người dùng Mỗi khi người dùng bấm nút sinh mã, token sẽlấy biến thời gian của đồng hồ Biến thời gian được lấy chi tiếtđến từng phút, hoặc 30 giây
Thuật toán mã hóa được sử dụng là thuật toán băm SHA-1.Thuật toán Time-based One-Time Password (TOTP) là một ví dụ
cụ thể của những giải thuật sinh mật khẩu một lần dựa trênthời gian như vậy Với thuật toán TOTP sinh mật khẩu OTP dựa theo thờigian thì giá trị T về thời gian được tính như sau:
T0: Là giá trị thời gian ban đầu (thường chọn T0 = 0)
Trang 13 X: Là bước thời gian, đây là tham số quyết định thờigian hợp lệ của mật khẩu OTP.
T: Chính là kết quả tính (đã lấy phần nguyên) từ côngthức tính toán trên
Với thuật toán TOTP thì thời gian chuẩn hợp lệ của mật khẩu OTP là 30giây (X=30), thời gian có hiệu lực của mỗi lần sử dụng mật khẩu OTP là 30giây được chọn phù hợp với yêu cầu về bảo mật và khả năng sử dụng
Thuật toán TOTP dựa trên thuật toán HOTP thay giá trị đếm (C) bằng giátrị thời gian (T):
TOTP=HOTP (K ,T )
Đối với thuật toán TOTP độ dài của mật khẩu OTP được tính như sau:
TOTPvalue=TOTP ( K ,T ) mod 10 d
Trong đó: d là số chữ số của mật khẩu OTP.
Hình 1 Time-based One-Time Password (TOTP)
2.1.2 Phương pháp sinh theo thuật toán
OTP sinh ra bằng thuật toán dựa trên mật khẩu cũ không
có giá trị thay đổi theo thời gian, mà chúng được sinh ra theothuật toán mỗi khi có yêu cầu sử dụng Thuật toán của bên xácthực và người dùng phải đồng bộ với nhau Mỗi lần một người
Trang 14dùng được xác thực thành công, bên xác thực sẽ chỉ chấp nhậnmột OTP kế tiếp được sinh ra bởi thuật toán Không giống OTPdựa trên thời gian, OTP dựa trên toán học chỉ có giá trị cho mộtlần sử dụng.
Một vấn đề khi cài đặt các giải thuật này là việc giữ chothuật toán của bên xác thực và người dùng đồng bộ với nhau
Đa số các cài đặt cho phép bên xác thực chấp nhận một cửa sổ các mật khẩu vàđiều chỉnh cửa sổ này dựa trên mật khẩu hợp lệ cuối cùng được nhập vào.S/Key và Hash-based OTP (HOTP) là hai dạng phổ biến của bộ sinh mật khẩudựa trên các thuật toán
Phương pháp này sinh OTP trên cơ sở các OTP đã sử dụngtrước đó của người dùng Một ví dụ cho thuật toán này là thuậttoán của Leslie Lamport - thuật toán sử dụng các hàm mộtchiều (gọi là f)
Hệ thống hoạt động động như sau:
1 Khởi tạo giá trị ban đầu s để sinh mật khẩu lần đầutiên
2 Một hàm băm f(s) được áp dụng nhiều lần Giá trị nàygọi là f n(s ) được lưu trữ trên hệ thống đích
3 Lần đăng nhập đầu tiên của người sử dụng mật khẩu
p áp dụng f n−1(s) Hệ thống đích có thể xác thực rằngđây là mật khẩu chính xác vì f ( p) là f n(s ), là giá trị đượclưu trữ
4 Lần đăng nhập tiếp theo kèm theo f n−2(s) Một lần nữađiều này được xác thực bởi việc băm f n−1(s) là p, giá trịđược lưu trữ sau lần đăng nhập trước đó Giá trị mớithay thế p và người dùng được xác thực
5 Điều này có thể lặp đi lặp lại n lần
Trang 152.1.2.1 Phương pháp sinh theo thuật toán HOTP
HOTP được sử dụng dựa trên các mã xác thực thông điệp
bằng hàm băm (Hashbased Message Authentication Code HMAC) và hàm băm SHA-1 (Secure Hash Algorithm 1) Về cách
-sinh mật khẩu OTP sử dụng thuật toán:
HOTP: HOTP(K,C) = Truncate(HMAC_SHA-1(K,C)) Trong đó:
K: Là giá trị chia sẻ bí mật giữa Client và Server.
C: Là bộ đếm đã được đồng bộ giữa Client và Server, C có độ dài 8
bytes
Truncate(): Là hàm tách chuỗi, thực hiện việc trích xuất kết quả từ
hàm Hash để có được mật khẩu OTP
Phương pháp tách chuỗi như sau:
HMAC_SHA-1(K,C)=SHA-1(K⊕C1… ∥ SHA-1(K⊕ C2… ∥ C))
Trong đó:
C1 = 0x36 (36 trong hệ thập lục phân).
C2 = 0x5c (5C trong hệ thập lục phân).
HMAC_SHA-1(K,C) là một hàm tính toán dựa trên thuật toán
HMAC kết hợp với hàm băm SHA-1 của giá trị K và bộ đếm C
Kết quả đầu ra của hàm HMAC_SHA-1(K,C) cho ta một giá trị có độ dài là 160
bits = 20 bytes, ta lấy 4 bit thấp của byte cuối cùng chuyển sang cơ số 10 để tìm
vị trí offset, sau đó ta được chuỗi 4 bytes = 32 bit tính từ vị trí offset Giá trị mậtkhẩu được tính theo công thức sau:
HOTPvalue = HOTP(K,C) mod 10 d (d là số chữ số của
OTP) Trong đó: d là số chữ số của OTP
Giá trị bí mật K được chia sẻ giữa máy chủ xác thực và máy trạm phíangười dùng qua một kênh liên lạc nào đó Sau đó máy chủ xác thực sử dụng giátrị bí mật K, bộ đếm C để sinh mật khẩu OTP theo công thức (2), máy trạm phía
Trang 16người dùng cũng sử dụng thiết bị sinh mật khẩu OTP như Token để sinh mậtkhẩu OTP (Token lưu giá trị bí mật K được chia sẻ và bộ đếm C) Để xác thực,máy chủ sẽ so sánh mật khẩu OTP sinh ra trên máy chủ với mật khẩu OTP sinh
ra từ máy trạm phía người dùng, nếu giống nhau, người dùng trên máy trạm xácthực thành công
Hình 2 HMAC-based one-time password (HOTP)
2.1.2.2 Phương pháp sinh theo giải pháp S/KEY
S/Key còn được gọi là Lamport scheme, là một giải pháp phổ biến được phát triển để xác thực các ứng dụng đầu cuối trên các hệ điều hành thuộc họ Unix Việc sinh mật khẩu dựa trên hàm băm Mật khẩu thực sự của người dùng được kết hợp với một thiết bị offline chứa một tập ngắn các kí tự và một bộ đếm giảm dần để tạo ra một mật khẩu Vì mỗi mật khẩu chỉ được sử dụng một lần nên chúng vô dụng với những người tấn công mật khẩu.
Vì tập các kí tự không thay đổi cho đến khi bộ đếm giảm về 0, nên có thể chuẩn bị một danh sách mật khẩu dùng một lần mà người dùng có thể mang theo Nói một cách khác, người dùng có thể đưa ra mật khẩu, các kí tự, và giá trị bộ đếm mong muốn cho một máy tính cục bộ để tạo ra mật khẩu dùng một lần phù hợp, sau đó có thể truyền mật khẩu này trên mạng.
S/Key được hỗ trợ trong các hệ điều hành Linux, OpenBSD, NetBSD, và FreeBSD Một ứng dụng mã nguồn mở chung, như ứng dụng OPIE có thể được dùng
Trang 17để hỗ trợ việc sử dụng S/Key trên các hệ thống khác S/Key là thương hiệu của công
ty Telcordia Technologies
Mô tả cụ thể cho phương pháp này:
Bước 1: Sinh mật khẩu.
Bước này bắt đầu với một khóa bí mật W Khóa này có thể được đưa ra bởi người dùng hoặc máy tính của server sinh ra và không được gửi cho client Nếu khóa này bị lộ thì tính bảo mật của S/Key sẽ bị giảm.
Một hàm băm mã hóa H được áp dụng n lần cho khóa bí mật W, cách này tạo ra một chuỗi băm của n mật khẩu dùng một lần Mật khẩu là kết quả của việc áp dụng hàm băm mã hóa: H(W), H(H(W)),…, Hn(W).
Mật khẩu ban đầu W bị hủy đi.
Người dùng (client) được cung cấp n mật khẩu dùng một lần, được in ra theo thứ tự ngược lại: Hn(W), Hn-1(W) , , H(H(W)), H(W).
Những mật khẩu H(W), H(H(W)),…, Hn-1(W) không được lưu lại ở server mà server chỉ lưu mật khẩu Hn(W).
Bước 2: Xác thực
Sau quá trình sinh mật khẩu người dùng có một danh sách các mật khẩu Mật khẩu đầu tiên cũng là mật khẩu server đang lưu Mật khẩu này sẽ không được dùng để xác thực, và mật khẩu thứ hai sẽ được dùng:
Người dùng cung cấp cho server mật khẩu pwd thứ hai trong danh sách của mình và gạch bỏ nó đi.
Server tính H(pwd) trong đó pwd là mật khẩu được cung cấp Nếu H(pwd) là mật khẩu đầu tiên (server đang lưu) thì quá trình xác thực thành công Server sẽ tính H (mật khẩu i) và so sánh kết quả với mật khẩu i-1, được lưu trên server.
2.1.3 Phương pháp sinh bằng phản hồi thách thức
Giao thức thử thách và trả lời (Challenge - Response) chophép người truy nhập tự xác thực mình với hệ thống bằng cáchchứng minh hiểu biết của mình về giá trị mật mã bí mật màkhông yêu cầu người truy nhập lộ giá trị bí mật Hệ thống xác