Bộ sinh OTP:

Một phần của tài liệu Xác thực hai nhân tố ứng dụng trên điện toán đám mây (Trang 61 - 63)

Trong hàm sinh OTP chúng ta sử dụng thuật toán SHA-1 để tạo ra các OTP. Trong các hệ thống giao dịch người dùng gửi OTP tới SP mỗi lần. Để tạo ra OTP chúng ta

sử dụng bộ đếm và chia sẻ khóa bí mật.

Hình 3-3 Giải thuật sinh mã OTP

3.4.2.1HMAC-based One Time Password (HOTP)

HOTP được công bố như một bản RFC IETF 4226 vào tháng 12 năm 2005, tài liệu về các thuật toán cùng với việc thực hiện Java. Kể từ đó, các thuật toán đã được áp dụng bởi nhiều công ty trên toàn thế giới (xem bên dưới). Các thuật toán HOTP là một tiêu chuẩn mở có sẵn miễn phí.

HOTP có thể được sử dụng để xác thực người dùng trong một hệ thống thông qua máy chủ xác thực. Ngoài ra, nếu một số bước nữa được thực hiện (các máy chủ tính toán giá trị OTP tiếp theo và gửi / hiển thị với người dùng kiểm tra nó với giá trị OTP tiếp theo tính bằng thẻ của mình), người sử dụng cũng có thể xác thực máy chủ xác nhận.

Giải thuật:

Thuật toán HOTP dựa trên việc tăng giá trị bộ đếm và một khóa đối xứng tĩnh chỉ được biết đến với token và dịch vụ xác nhận. Để tạo ra các giá trị HOTP, thuật toán HMAC-SHA-1 được sử dụng.

Đầu ra của các HMAC-SHA-1 là 160 bit, chúng ta phải cắt ngắn để có thể dễ dàng nhập vào bởi một người sử dụng.

 K là một khóa bí mật

 C là một bộ đếm

 HMAC(K,C) = SHA1(K ⊕ 0x5c5c… ∥ SHA1(K ⊕ 0x3636… ∥ C)) là một

giá trị HMAC được tính toán sử dụng giải thuật hash SHA-1

Mặt nạ 0x7FFFFFFF thiết lập most signification bit về 0. Điều này tránh vấn đề kết quả được hiểu là một số có dấu như một số bộ vi xử lý.

HOTP-Value = HOTP(K,C) mod 10d trong đó d là số lượng số cần lấy

3.4.2.2Time-based One-time Password (TOTP)

Time-based One-time Password Algorithm (TOTP) là một giải thuật tính toán giá trị OTP từ một khóa bí mật chung và thời gian hiện tại. TOTP được công bố là một chuẩn RFC 6238 và được sử dụng trong một số hệ thống xác thực hai nhân tố. TOTP là một ví dụ sử dụng HMAC. Nó kết hợp một khóa bí mật với thời gian hiện tại sử dụng một hàm băm tạo ra OTP. Các dấu thời gian sẽ tăng lên trong khoảng thời gian 30 giây, do đó mật khẩu được tạo ra gần nhau trong thời gian từ khóa bí mật tương tự sẽ được bình đẳng.

TOTP dựa trên HOTP với thời gian thay thế cho bộ đếm tự tăng

Thời gian hiện tại được chuyển thành một bộ đếm thời gian (TC) được bắt đầu bởi một T0 và đếm theo đơn vị là bước thời gian (TS). Ví dụ:

 TC = (unixtime(now) - unixtime(T0)) / TS

 TOTP = HOTP(SecretKey, TC)

 TOTP-Value = TOTP mod 10d, trong đó d là số lượng số của OTP.

Một phần của tài liệu Xác thực hai nhân tố ứng dụng trên điện toán đám mây (Trang 61 - 63)