Time Password) dựa trên hệ thống S/Key One Time Password System
1.Chi tiết về hệ thống S/Key One Time Password System
1.1 Tổng quan
Là hệ thống chứng thực nhằm bảo vệ mật khẩu người dùng khỏi bị tấn công bị động. Hệ thống này có thể dễ dàng tích hợp vào các hệ thống linux hay các thiết bị đầu cuối của người dùng mà không cần thêm các thiết bị khác, không lưu trữ mật khẩu dưới dạng clear text.
1.2 Mục tiêu của hệ thống
• Chống tấn công nghe lén trên đường truyền, không chống được tấn công man in the middle.
• Dễ dàng sử dụng.
• Thuật toán phổ biến.
• Không lưu password dạng clear text. 1.3 Mô tả hoạt động của hệ thống a.Sử dụng hàm băm một chiều
Hàm băm y=f(x) sao cho dễ dàng tính y từ x nhưng rất khó để tính x từ y. Các hàm băm được sử dụng là MD4 và MD5.
b.Quá trình sinh OTP
Khi người dùng muốn đăng nhập vào hệ thống, server sẽ gửi cho người dùng 2 giá trị là sequence và challenge. Khi người dùng nhập giá trị này vào chương trình và lựa chọn thuật toán băm phù hợp (MD4 hay MD5) chương trình sẽ trả về giá trị OTP duy nhất dưới dạng một chuỗi gồm 6 từ tiếng anh, người dùng sử dụng OTP này để đăng nhập vào hệ thống. Chi tiết quá trình tạo OTP như sau:
• Chương trình nối giá trị mật khẩu của người dùng và giá trị challenge do người dùng nhận từ server vào thành một chuỗi
• Chuỗi này sẽ được băm theo số sequence lần, ví dụ sequence =123 thì hằm băm sẽ băm chuỗi tạo ra ở trên 123 lần tạo ra một chuỗi 128bit,chuỗi 128 bit này qua phép XOR tạo thành chuỗi 64bit, từ chuỗi 64 bit sẽ được convert thành một dãy 6 từ tiếng anh để thuận tiện cho việc nhập liệu của người dùng.
• Mật khẩu OTP này được dùng một lần, chống được tấn công bị động vì lần sau truy cập vào hệ thống server sẽ giảm sequence đi 1 còn 122, giảm đến khi nào còn >0 sau đó sẽ thay bằng một giá trị challenger và giá trị sequence mới. Hacker dù có biết OTP thứ 123 thì ko thể tính ngược OTP thứ 122 được vì hàm băm có tính một chiều nên mật khẩu là an toàn.
c.Kiểm tra OTP
• Phía server cũng thực hiện quá trình tương tự như phía client để tính ra OTP và so sánh giá trị này với giá trị mà người dùng phía client nhập vào, nếu trùng khớp vì quá trình xác thực là hợp lệ, nếu không trùng khớp vì phải thực hiện lại quá trình xác thực.
2.Chương trình sinh mật OTP dựa trên hệ thống S/Key OTP System
2.1.Mô tả chương trình
• Ngôn ngữ sử dụng : JAVA
• Input: người dùng nhập vào mật khẩu bí mật của mình và nhập vào yêu cầu từ server( số thứ tự sequence và challenge ).
• Output: One Time Password dưới dạng một câu tiếng anh 64 bit gồm 6 từ.
• Hàm băm: Sử dụng hàm băm với 2 tùy chọn là MD4 và MD5
• Hoạt động theo nguyên tắc của hệ thống S/Key OTP System tham khảo chi tiết tại các RFC 2289, 1938, 1320.
2.2.Code
Các thuật toán chính của chương trình (md4,md5…) sử dụng mã nguồn mở từ địa chỉ http://otp-java.sourceforge.net/ , sinh viên chỉ viết class thực thi main.java và xây dựng class giao diện GUI.java của chương trình trên Netbeans IDE. Chương trình gồm các class sau:
• MD.java; MD4.java; MD5.java thực hiện việc tính toán hàm băm.
• Otp.java chứa các hàm thực hiện việc tính toán ra mật khẩu OTP.
• Main.java là class chứa hàm chính của chương trình.
• GUI.java là class chứa giao diện của chương trình. 2.3.Hình ảnh hoạt động
Hình 36: Hình ảnh mô tả hoạt động của chương trình OTP