Một giải pháp được đưa ra để giúp người dùng trong việc tạo và quản lý các mật khẩu là cung cấp cho người dùng một thiết bị phần cứng để tạo ra OTP One-Time-Password – mật khẩu được sử d
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS PHẠM HOÀNG DUY
HÀ NỘI - 2011
Trang 2MỞ ĐẦU
Hiện nay cùng với sự phát triển nhanh chóng của các dịch vụ online (trực tuyến) đã đưa đến việc tăng nhanh số lượng các chứng thực số khác nhau mà mỗi người dùng cần quản lý Kết quả là người dùng cảm thấy quá tải với những chứng thực này, việc này làm cho người dùng khó khăn trong việc quản lý chúng được an toàn Hiện nay mật khẩu chính là kiểu chứng thực được sử dụng phổ biến Tuy nhiên những mật khẩu yếu và những thói quen xấu lại chính là những mối đe dọa an ninh trong giao dịch trực tuyến Một giải pháp được đưa ra để giúp người dùng trong việc tạo và quản lý các mật khẩu là cung cấp cho người dùng một thiết bị phần cứng để tạo ra OTP (One-Time-Password) – mật khẩu được sử dụng một lần cho một phiên giao dịch Tuy nhiên hầu hết những giải pháp này không đủ khả năng
mở rộng hoặc không tiện dụng cho người dùng hoặc không đủ an toàn Giải pháp đưa ra là có thể sử dụng các thuật toán đáng tin cậy trên điện thoại di động để tạo OTP Do vậy tôi đã chọn đề tài nghiên
cứu là “Nghiên cứu ứng dụng OTP trên thiết bị di động”
Nội dung nghiên cứu bao gồm:
Nghiên cứu lý thuyết về OTP: khái niệm, mô hình sinh, hàm băm (tập trung vào SHA), các khuyến nghị
Nghiên cứu ứng dụng OTP trong các giao dịch trực tuyến trên môi trường di động
Xây dựng chương trình mô phỏng
Cấu trúc nội dung của luận văn bao gồm các phần sau:
Trang 3Chương 1: Cơ sở lý thuyết
Chương này trình bày những khái niệm cơ bản về OTP, các
mô hình sinh mã OTP, hàm băm và khuyến nghị tiêu chuẩn cho việc tạo và xác thực mã OTP
Chương 2: Ứng dụng OTP cho các giao dịch trực tuyến trong môi trường di động
Chương này nghiên cứu về mô hình ứng dụng OTP trên môi trường di động cũng như việc ứng dụng OTP trong các giao dịch trực tuyến
Chương 3: Xây dựng phần mềm ứng dụng OTP trong môi trường di động
Chương này trình bày ngắn gọn về chương trình thử nghiệm
đã xây dựng trong luận văn, trong đó tập trung xây dựng quá trình sinh và xác thực sử dụng mã OTP
Chương 4: Nhận xét, đánh giá và đề xuất
Chương này khái quát lại hệ thống đã xây dựng và đưa ra một số nhận xét
Kết luận: Phần này tóm tắt những kết quả mà luận văn đã đạt được
và đề xuất hướng nghiên cứu trong thời gian tới
Trang 4CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
1.1 Khái niệm OTP
OTP là một mật khẩu chỉ có giá trị trong một phiên đăng nhập làm việc OTP có thể được sử dụng một lần cho việc xác thực người dùng hoặc cho người dùng xác thực một giao dịch OTP thường được sử dụng trong các giao dịch điện tử hoặc các hệ thống xác thực chặt chẽ
1.2 Khái niệm hàm băm
1.2.1 Khái niệm hàm băm
Chức năng chính của hàm băm là thực hiện ánh xạ các bản tin có chiều dài khác nhau thành một đoạn băm có kích thước cố định Đoạn băm mới tạo ra thường có kích thước nhỏ hơn rất nhiều so với bản tin ban đầu
Một giá trị đoạn băm h được sinh ra bởi hàm băm H có dạng:
h = H (M) trong đó: M là bản tin có chiều dài tùy ý
h là giá trị băm chiều dài cố định
1.2.2 Thuật toán băm bảo mật SHA
1.3 Khái niệm tính toán tin cậy (TC - Trusted computing)
1.4 Các mô hình sinh OTP
Có hai mô hình thường được sử dụng để sinh mã OTP là:
sinh mã OTP theo thời gian và sinh mã OTP theo sự kiện
Trang 51.4.1 Mô hình sinh mã OTP theo thời gian
Theo cơ chế này, người dùng sẽ được cấp một thiết bị sinh
mã được gọi là token Bên trong token gồm có ba thành phần là: một
mã seedcode, một đồng hồ đếm thời gian, 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ại trong hệ thống của nhà cung cấp dịch vụ tương ứng với tên truy nhập của người dùng
Đồng hồ đếm thời gian: là đồng hồ của token, nó được đồng
bộ với đồng hồ của hệ thống trước khi giao cho 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: sử dụng thuật toán băm SHA
Hình 1.3 Mô hình của cơ chế sinh mã ngẫu nhiên dựa theo thời gian
Trang 61.4.2 Mô hình sinh mã OTP theo sự kiện
Trong cơ chế này người dùng cũng được cấp một token như
ở trên, nhưng bên trong token sẽ có một bộ đếm sự kiện thay vì đồng
hồ đếm thời gian Sự kiện được nhắc đến ở đây là sự kiện mà người dùng bấm nút sinh mã trên Token Mỗi token sẽ chứa một số mã hữu hạn, có thứ tự và không thay đổi Số lượng các mã hữu hạn đó được gọi là cửa sổ Kích thước của cửa sổ này càng lớn thì độ bảo mật của giải pháp càng cao Để hiểu rõ hơn cơ chế ta sẽ xét một ví dụ Trong
ví dụ này, token lấy kích thước cửa sổ là 10, tức là token chứa 10 mã
cố định có thứ tự, như hình 1.4
Hình 1.4 Mô hình của cơ chế sinh mã ngẫu nhiên dựa theo sự kiện
Trang 71.5 Các khuyến nghị tiêu chuẩn cho OTP
Thuật toán băm: Độ an toàn của mã OTP phụ thuộc tính bảo mật của
hàm băm Tất cả các hệ thống sử dụng OTP phải hỗ trợ MD5, nên hỗ trợ SHA và có thể hỗ trợ MD4 Các thuật toán băm chấp nhận đầu vào tùy ý nhưng đầu ra cố định
Khuôn dạng đầu vào:
Cấu trúc của từ đố:
otp-<tên thuật toán> <chuỗi số nguyên> <seed>
Khuôn dạng đầu ra: OTP tạo bởi thủ tục trên có 64 bit chiều dài
Việc nhập vào 64 bit khó khăn và dễ gây lỗi cho người sử dụng khi nhập bằng tay Do vậy OTP có thể chuyển đổi thành một chuỗi 6 từ ngắn (mỗi từ bao gồm 4 ký tự) theo chuẩn ISO-646 IVCS Mỗi từ được chọn từ một từ điển gồm 2048 từ, 11 bit cho mỗi từ, tất cả OTP
có thể được mã hóa
Trang 8CHƯƠNG 2 – ỨNG DỤNG OTP CHO CÁC
GIAO DỊCH TRỰC TUYẾN TRONG MÔI
TRƯỜNG DI ĐỘNG
2.1 Mô hình triển khai OTP trên môi trường di động
2.2 Ứng dụng OTP cho việc xác thực tài khoản trong giao dịch trực tuyến
Trong phạm vi của luận văn, tôi đã xây dựng hệ thống sử dụng OTP để xác thực tài khoản trong các giao dịch trực tuyến
Hệ thống bao gồm: khách hàng, web server và thiết bị di động của người sử dụng được dùng để tạo mã OTP
Để thực hiện việc xác thực hai yếu tố khách hàng phải đăng
kí tài khoản với nhà cung cấp dịch vụ (server) Server cung cấp cho người sử dụng thông tin tài khoản để xác thực trên hệ thống Những thông tin này sẽ được lưu vào cơ sở dữ liệu trên server Tiến hành cài đặt phần mềm và đồng bộ thời gian với server cho thiết bị di động
Trang 9Quá trình đăng kí:
Hình 2.1 Quá trình đăng kí
Người sử dụng khi cần xác thực trên trang web sẽ chạy chương trình ứng dụng trên điện thoại của họ Sau đó nhập những thông tin mà chương trình yêu cầu để lấy mã OTP
Người sử dụng khi cần xác thực trên trang web sẽ chạy chương trình ứng dụng trên điện thoại của họ Sau đó nhập những thông tin mà chương trình yêu cầu để lấy mã OTP
Đăng kí thông tin (usename, password, pin, seedcode…)
Account(usename, password, pin,
Trang 10Quá trình tạo mã OTP:
Hình 2.2 Quá trình tạo mã OTP
Sau khi lấy được mã OTP sẽ nhập vào trang web cùng với usename và password mà họ đã đăng kí với nhà cung cấp dịch vụ Server sau khi nhận được thông tin xác thực của khách hàng sẽ tiến hành kiểm tra sự hợp lệ của thông tin và trả lại kết quả xác thực cho khách hàng
Nhập (PIN, seedcode)
Mã OTP
Sinh mã OTP
Trang 11Xác thực tài khoản
Trang 12CHƯƠNG 3 – XÂY DỰNG PHẦN MỀM ỨNG DỤNG OTP TRONG MÔI TRƯỜNG DI ĐỘNG
3.1 Mô tả hệ thống sử dụng OTP trên điện thoại di động
Hệ thống xác thực phi kết nối
Quá trình tạo mã OTP phi kết nối
Hình 3.1 Quá trình tạo mã OTP phi kết nối
Mã OTP được tạo ra có hiệu lực trong một khoảng thời gian xác định tương ứng với người dùng nhập vào
Người sử dụng lấy mã OTP vừa được tạo ra để xác thực trên website
nhập Ví dụ vào trang web
yêu cầu bảo mật
Trang 13Thứ hai là quá trình tạo mã OTP dựa trên tin nhắn SMS
Hình 3.2 Quá trình tạo mã OTP dựa trên tin nhắn SMS
3.2 Xây dựng ứng dụng
Để mô phỏng ứng dụng OTP cho việc xác thực tài khoản trong giao dịch trực tuyến, luận văn tập trung xây dựng chương trình ứng dụng theo phương pháp phi kết nối Ứng dụng gồm hai phần: phần thứ nhất là chương trình xác thực bên server và thứ hai là
Người sử dụng cần đăng
nhập Ví dụ vào trang web
yêu cầu bảo mật
Người sử dụng gửi tin nhắn
SMS đã được mã hóa tới
KT người
sử dụng
Sai Server bỏ qua tin nhắn SMS này
Server tạo ra một mật khẩu được cập nhật
Mật khẩu được mã hóa sử dụng khóa đối xứng duy nhất được chia sẻ giữa server và người sử dụng
Server gửi mã OTP đến người sử dụng thông qua tin nhắn SMS
Đúng
Trang 14chương trình chạy trên thiết bị di động để tạo mã OTP Hình 3.3 dưới
đây mô tả về quy trình sử dụng OTP trong luận văn
Hình 3.3 Mô hình sử dụng OTP trong xác thực tài khoản
- Điều kiện tiên quyết:
o Khách hàng phải đăng kí thông tin tài khoản với
server và cài phần mềm sinh mã OTP trên thiết bị di động của mình
- Chú thích:
o Kiểm tra OK khi khách hàng nhập đúng các thông
tin xác thực: username, mật khẩu, mã OTP
Yêu cầu thanh toán Gửi thông tin đến Server
Xác thực thông tin tài khoản (tên, mật khẩu, mã otp)
Gửi thông tin tài khoản đến server
Nhận thông tin
Yêu cầu xác thực tài khoản
Kiểm tra
Thực hiện giao dịch
Sinh mã OTP
Bắt đầu
Kết thúc
Mobile Phone
Trang 15Phần mềm bên server được xây dựng dưới dạng web server Phía server dựa vào thông tin tài khoản và mã OTP mà người dùng cung cấp sẽ đưa ra quyết định cho phép người dùng thanh toán hay
từ chối yêu cầu này Phần mềm này tương tác với cơ sở dữ liệu lưu thông tin của khách hàng cũng như tài khoản của họ Cơ sở dữ liệu
sử dụng trong ứng dụng này là mysql
Phía client chạy một chương trình ứng dụng tạo mã OTP cho khách hàng Chương trình ứng dụng này được xây dựng trên nền tảng ngôn ngữ java chạy trên nền hệ điều hành android Android là
hệ điều hành trên điện thoại di động được phát triển bởi Google dựa trên nền tảng Linux sử dụng các thư viện Java (một số trong các thư viện đó được Google phát triển cho Android) Môi trường xây dựng ứng dụng là eclipse (Eclipse IDE for Java Developer) được tích hợp plugin của android gọi là ADT (Android Development Tools – Các công cụ phát triển Android) và cài đặt android SDK (Software Development Kit) Google android SDK là công cụ được chính Google xây dựng và phát hành để phát triển ứng dụng cho hệ điều hành android Android SDK cung cấp một tập hợp các công cụ phong phú, bao gồm trình gỡ rối, các thư viện, trình mô phỏng thiết
bị cầm tay, tài liệu, mã mẫu và các hướng dẫn
Trang 163.2.1 Giao diện bên server
Hinh 3.5 Giao diện trang chủ
Hình 3.6 Giao diện xác thực tài khoản
Trang 173.2.2 Giao diện bên client
Hình 3.7 Giao diện tạo mã otp trên giả lập Android
Trang 18CHƯƠNG 4 – NHẬN XÉT ĐÁNH GIÁ VÀ ĐỀ XUẤT
Luận văn đã xây dựng chương trình mô phỏng sử dụng xác thực OTP cho một thanh toán trực tuyến dựa trên mô hình sinh mã dựa trên thời gian Hệ thống bao gồm hai phần: phần mềm cho server xác thực và phần mềm sinh mã OTP trên thiết bị di động
Thiết bị di động và server cùng sử dụng hàm băm an toàn SHA1 cho việc sinh và xác thực mã OTP
Bên thiết bị di động mã OTP được tạo ra với các tham số: thời gian thực, seed và mã PIN của từng người sử dụng Mã PIN không lưu trữ trên thiết bị di động được dùng để đảm bảo người sử dụng là hợp pháp Mã PIN có chiều dài 8 ký tự
Bên phía server cũng thực hiện băm với đầu vào là thời gian thực, seed và mã PIN của từng người dùng Kết quả này được đem so sánh với mã OTP mà người dùng nhập vào để đưa ra quyết định Các tham số đầu vào để tạo mã OTP của hệ thống:
Trang 19tự (160 bit) Đầu ra sẽ được chuyển về dạng dễ đọc cho người sử dụng gồm 3 từ với 12 ký tự
Mật khẩu OTP hợp lệ trong mười phút sẽ giảm nguy cơ bị tấn công đồng thời tạo thuận tiện cho người sử dụng, vì người sử dụng cần một khoảng thời gian để đọc và nhập mã OTP
Mã PIN có độ dài 8 ký tự bao gồm các chữ số không chứa dấu cách đảm bảo khó đoán hoặc bị tấn công brute-forced bởi các hacker Mã PIN không được lưu trữ trên điện thoại di động của người dùng để đảm bảo trong trường hợp khách hàng mất điện thoại
Độ an toàn của hệ thống phụ thuộc vào độ an toàn của hàm băm Đối với tấn công brute-force độ khó khăn để tính toán ra một bản tin nào đó có kích cỡ đoạn băm 160 bit tạo bởi thuật toán băm SHA1 cần 280 phép tính
So sánh hệ thống với những yêu cầu đưa ra trong khuyến nghị:
Thuật toán: luận văn sử dụng chung thuật toán băm SHA1 cho cả client và server, SHA1 là thuật toán băm đưa ra trong khuyến nghị
Khuôn dạng đầu vào:
Seed: đáp ứng được chiều dài theo khuyến nghị (từ
16 ký tự trở lên) tuy nhiên chưa đáp ứng được yêu cầu loại bỏ dấu cách và chuyển sang dạng chữ thường trước khi xử lý
Từ đố: cấu trúc từ đố tuân thủ cú pháp trong khuyến nghị tuy nhiên để tăng độ an toàn của mã OTP luận văn thêm mã PIN vào trong từ đố
Trang 20Khuôn dạng đầu ra: đầu ra được đưa ra dưới dạng hexa tuân thủ theo khuyến nghị tuy nhiên luận văn chưa đưa được đầu ra về dạng chuẩn 6 từ Trong khuyến nghị sử dụng đầu ra là 64 bit còn đầu
ra sử dụng thuật toán SHA1 là 160 bit
Thay đổi cụm mật khẩu: hệ thống được xây dựng không hỗ
trợ người dùng thay đổi cụm mật khẩu từ xa
Trang 21KẾT LUẬN
Ngày nay cùng với sự phát triển nhanh chóng của internet thì những yêu cầu giao dịch trực tuyến cũng ngày càng tăng nhanh, do vậy yêu cầu đặt ra là phải xây dựng được hệ thống đảm bảo an toàn Hiện nay hệ thống xác thực hai yếu tố dùng OTP đang được sử dụng
để tăng thêm độ an toàn cho hệ thống và đồng thời phải tiện dụng cho người sử dụng Xuất phát từ yêu cầu đó luận văn đã nghiên cứu
và trình bày một số vấn đề sau:
Nghiên cứu tầm quan trọng và lý thuyết cơ bản của việc tạo
mã OTP
Nghiên cứu các mô hình sinh mã OTP
Nghiên cứu việc ứng dụng OTP vào thanh toán trực tuyến
Xây dựng chương trình thử nghiệm sử dụng điện thoại di động cho việc xác thực mã OTP cho các thanh toán trực tuyến
Đánh giá về hệ thống đã xây dựng
Một số vấn đề tiếp tục nghiên cứu và đề xuất
Mở rộng chức năng chứng thực, ngoài xác định tài khoản còn xác định các quyền cho chủ sở hữu chứng thực như quyền truy nhập tới một tài nguyên nào đó…
Xây dựng mô hình sử dụng OTP theo cơ chế tự động kích hoạt và trong suốt với người sử dụng
Trang 22TÀI LIỆU THAM KHẢO
TÀI LIỆU TIẾNG VIỆT
TÀI LIỆU TIẾNG ANH
[1]: F Aloul, S Zahidi, W El-Hajj (2009), “Multi Factor
Authentication Using Mobile Phones”
[2]: Alzomai, Mohammed, Audun and Josang (2010 September 31),
“The Mobile Phone as a Multi OTP Device Using Trusted Computing”
[3]: Chao-Wen Chan and Chih-Hao Lin (2008), “A New Credit Card Payment Scheme Using Mobile Phones Based on Visual
Cryptography”
[4]: Josh Benaloh, Trevor William Freeman, K John Biccum, Ttul Kumar Shal (2010 October 14), “One time password key ring for mobile computing device”
[5]: Jan-Erik Ekberg, Markku Kylanpaa (2007 November 14),
“Mobile Trusted Module (MTM) - an introduction”
[6]: Kjell Jorgen Hole, Lars Hopland Nestas, and Havard Raddum (2010 January), “Security Analysis of Mobile Phones Used as OTP Generators”
[7]: Junrusu, Xiaomin Zhu, Xiaopu Shang, Chuanchen Wang (2010 November), “Study on an OTP Identity Authentication Scheme in Mobile Commerce”