ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
………… o0o…………
Đề Tài:
Tìm Hiểu MOTP
(Mobile One Time Password)
Ngày 17 tháng 12 năm 2010
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
………… o0o…………
Đề Tài:
Tìm Hiểu MOTP
(Mobile One Time Password)
Group:
Trần Thạch Thảo 07520322
Hồ Thị Bé 07520024
Ngày 17 tháng 12 năm 2010
Giới thiệu:
Một phân tích về hành vi truy cập Internet cho thấy rất nhiều người vẫn sử dụng một tài khoản
để đăng nhập vào các trang web khác nhau. Theo Trusteer, nhà cung cấp bảo mật, 73% người
dùng dùng mật khẩu dịch vụ ngân hàng trực tuyến của mình để đăng nhập vào ít nhất một
trang web khác, 47% dùng cả tên (ID/Username) và mật khẩu (xem thêm tại
http://www.trusteer.com/sites/default/files/cross-logins-advisory.pdf). Điều này cho thấy,
nhiều người dùng vẫn chưa chú trọng đến vần đề an toàn thông tin.
Việc sử dụng mật khẩu tĩnh để xác thực cho các giao dịch từ xa rất phổ biến, nhưng có 1 số
hạn chế như mật khẩu có thể được đoán hoặc quên, viết lại, bị đánh cắp, nghe lén hoặc bị nói
cho người khác nghe
Một số công ty áp dụng chính sách thay đổi password thường xuyên và sử dụng password
phức tạp để tăng độ an toàn, nhưng đây không phải là giải pháp tốt và cũng không thật hiệu
quả.
Một phương pháp chứng thực tốt hơn, bảo mật hơn được gọi là “two-factor” hoặc “ strong
Tấn công chủ động
Là dạng tấn công tinh vi đánh cắp và sử dụng tài khoản trong thời gian thực. Tấn công chủ
động khá tốn kém và yêu cầu trình độ kỹ thuật cao. Kiểu tấn công "man-in-the middle" tạo
website giả mạo đứng giữa người dùng và website thực là một ví dụ của tấn công chủ
động. Kiểu tấn công chủ động không phải là vấn đề bảo mật hiện nay nhưng chúng sẽ là
vấn đề trong tương lai gần. Khi việc xác thực hai khóa trở nên phổ biến và kiểu tấn công
thụ động không còn tác dụng, bọn tội phạm sẽ phải dùng đến kiểu tấn công chủ động tinh
vi hơn. Các công ty, đặc biệt là các tổ chức tài chính, cần chuẩn bị cho người dùng đối phó
với làn sóng tấn công thứ hai này. Biện pháp phòng vệ tốt nhất chống lại kiểu tấn công chủ
động là bảo mật máy tính phía người dùng: đảm bảo hệ điều hành và tất cả ứng dụng được
cập nhật và vá đầy đủ, cập nhật cơ sở dữ liệu nhận dạng virus và malware, dùng firewall
cho các kết nối Internet, dùng công cụ chống spyware và malware nhằm đảm bảo máy tính
không cài đặt những chương trình không cần thiết Bộ lọc chống phishing cũng giúp giảm
khả năng người dùng "đi lạc" sang các website lừa đảo.
II. OTP và Mobile OTP
a. OTP (One –time password):
Mật khẩu dùng một lần hay còn được gọi là mật khẩu động với đặc điểm không lặp lại
(mật khẩu dùng lần này sẽ không giống lần sau) và chỉ có giá trị 1 lần. Phương pháp này an
toàn hơn để chứng thực dữ liệu, gọi là Two-factors. Mục đích làm cho mật khẩu lúc nào
cũng thay đổi, tránh việc Hacker hoặc ai đó đánh cắp tài khoản và mật khẩu nhằm đáp ứng
cho việc bảo mật thông tin. Mỗi người dùng sẽ mang theo thiết bị “Token” để sinh ra mật
khẩu có giá trị 1 lần.
Dựa trên thuật toán sinh password, thiết bị OTP cứng có 2 dạng: Đồng bộ thời gian và
Dùng bộ đếm
• Loại đồng bộ thời gian: Tạo ra mã số khó đoán (mật mã hay khóa) dựa vào đồng hồ
trong và mã số này được xác thực với điều kiện đồng hồ trong của thiết bị OTP
đồng bộ với máy chủ xác thực. Do sự xê dịch của đồng hồ, việc đồng bộ tuyệt đối
chính xác là không thể nên máy chủ xác thực phải chấp nhận các khóa có sự sai
lệch đôi chút. Điều quan trọng đó là thu hẹp hết mức “khung cửa” này để giảm
thiểu khả năng bị tấn công. Đa phần các nhà cung cấp thiết bị OTP áp dụng phương
Là một giải pháp chứng thực mạnh mẽ miễn phí. Nó có thể tạo ra mật khẩu dùng dùng 1
lần bằng cách dùng 1 thiết bị di động (ví dụ điện thoại, PDA …), Ổ USB, Thẻ hoặc Token
(phần cứng tạo mật khẩu chứng thực thay đổi liên tục theo thời gian) kết nối đến router,
firewall, máy chủ mạng hoặc tạo kênh VPN dựa trên việc đồng bộ thời gian để tạo mật
khẩu dùng một lần mà không cần dùng thiết bị Token.
Mobile-OTP là 1 giải pháp “strong authentication” miễn phí cho các thiết bị hỗ trợ java
như điện thoại hoặc PDA
Trong Mobile OTP bao gồm 1 thành phần khách(ứng dụng J2ME) và một thành phần máy
chủ(mã shell Unix)
III. Cách tạo ra OTP trên mobile-OTP
Mobile OTP được giới thiệu vào năm 2003. Năm 2010 có hơn 30 cách thực thi độc lập giải
thuật Mobile OTP khiến nó trở thành 1 nhân tố chuẩn cho việc “strong mobile
authentication.
Cách thực hiện:
Ứng dụng java tạo các OTP bằng cách băm các dữ liệu sau với MD5:
Chu kỳ hiện hành trong 10 giây
1. 4 số PIN mà người dùng nhập vào
2. 16 số Hex bí mật được tạo khi thiết bị được cài đặt.
Khi nhập mã PIN, ứng dụng sẽ hiển thị 6 số đầu tiên của MD5-hash. Đây là 1 OTP. Mật
khẩu có thể được xác minh bởi máy chủ, vì máy chủ cũng biết thời điểm hiện thời,Init-
Secret và Pin của người dùng. Để bù trừ cho khác biệt thời gian, máy chú sẽ chấp nhận các
mật khẩu từ trước 3 phút và sau đó 3 phút. Thêm vào đó các chỉ số thời gian khác nhau sẽ
được chỉ rõ cho mỗi người dùng trên token và/hoặc máy chủ. Mỗi mật khẩu sẽ được chấp
nhận 1 lần. Sau 8 lần chứng thực không thành công người dùng sẽ bị khóa. Việc chứng
thực dựa trên 2 yếu tố: mã Pin của người dùng và Init-Secret trên thiết bị.
IV. Cài đặt các thiết bị khách và chủ:
Cách đặt trên thiết bị khách (Client-Installation)
Tải MIDlet vào thiết bị sẽ sử dụng. Khi ứng dụng đã được cài đặt, chạy nó. Và bạn có thể
nhập mã PIN để tạo OTP, nhưng để dùng nó, bạn cần phải khởi tạo thiết bị trước tiên, và
viết Init-Secret vào trong bảng ghi người dùng tương ứng trên máy chủ thực hiện chứng
“radtest” được cung cấp bởi server RADIUS.
V. Thuật toán MD5 trong việc mã hóa:
a. Định nghĩa:
MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit. Là một
chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật, và cũng được
dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Một bảng băm MD5 thường được diễn tả
bằng một số hệ thập lục phân 32 ký tự.
MD5 chuyển một đoạn thông tin chiều dài tùy ý thành một kết quả chiều dài không đổi 128 bit.
b. Thuật toán:
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits.
Giả sử chúng ta có thông điệp b bit ở đầu vào, và ta muốn tìm mã số của thông điệp. Ở đây b là
số không âm bất kỳ; b có thể bằng 0 và không cần chia hết cho 8, độ lớn có thể bất kỳ. Tưởng
tượng rằng các bit của thông điệp được viết như sau :
m_0 m_1 m_2 … m_{b-1}
Mã số thông điệp được tính qua 5 bước sau:
Bước 1 : Các bit gắn thêm
Thông điệp đưa vào sẽ được cắt thành các khối 512 bits. Thông điệp được đưa vào bộ đệm để
chiều dài của nó sẽ chia hết cho 512. Bộ đệm hoạt động như sau:
- Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp.
- Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng
64 bit .
Trong tất cả các trường hợp, có ít nhất 1 và nhiều nhất 512 bit được thêm vào.
Bước 2 : Gắn thêm độ dài
Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1.
Trong trường hợp b lớn hơn 2^64 thì chỉ có 64 bit thấp của b được sử dụng. ( Các bit này được
thêm vào phía sau dưới dạng 2 word 32 bit, gắn word thấp trước theo quy ước ở trên ).
Vào lúc này độ dài của chuỗi kết quả sau bước 1 và bước 2 là 1 bội số của 512 bits. Như thế nó
có độ dài là bội số của 16 words (1 word có 32 bits). Ta đặt M[0 N-1] là mảng các word của
chuỗi kết quả ở trên, rõ ràng N là bội số của 16.
Bước 3 : Khởi tạo bộ đệm MD
trái s đơn vị; s thay đổi tùy theo từng tác vụ. chỉ cộng thêm với modulo 2
32
.
Đây là quá trình thực hiện xử lý của 4 hàm F, G, H, I ở trên:
/* Process each 16-word block. */
For i = 0 to N/16-1 do
/* Copy block i into X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /* of loop on j */
/* Save A as AA, B as BB, C as CC, and D as DD. */
AA = A
BB = B
CC = C
DD = D