Tải bản đầy đủ (.pdf) (52 trang)

Nghiên cứu mật khẩu sử dụng một lần và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.92 MB, 52 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Khoa Công nghệ thông tin 1
----------

ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài:
“Nghiên cứu mật khẩu sử dụng một lần và
ứng dụng”
Giáo viên hướng dẫn: TS. Hoàng Xuân Dậu
Sinh viên thực hiện: Nguyễn Việt Huy
Lớp: D09CNPM2

Hà Nội, 12/2013


ĐỒ ÁN TỐT NGHIỆP

MỤC LỤC
LỜI MỞ ĐẦU ............................................................................................................................................... 3
DANH MỤC BẢNG BIỂU, HÌNH VẼ, SƠ ĐỒ .......................................................................................... 5
CHƯƠNG 1 – TỔNG QUAN VỀ OTP VÀ ỨNG DỤNG ...................................................................................... 6
1.1.

Khái quát về mật khẩu và xác thực sử dụng mật khẩu .................................................................. 6

1.1.1.

Mật khẩu là gì?...................................................................................................................... 6

1.1.2.



Phương pháp xác thực sử dụng mật khẩu ............................................................................. 7

1.1.3.

Độ an toàn của mật khẩu ....................................................................................................... 8

1.2.

Giới thiệu về OTP ......................................................................................................................... 9

1.2.1.

OTP là gì? ............................................................................................................................. 9

1.2.2.

Ưu điểm của OTP ................................................................................................................. 9

1.2.3.

Nhược điểm của OTP.......................................................................................................... 10

1.3.

Ứng dụng của OTP ..................................................................................................................... 11

1.3.1.

Ứng dụng trong xác thực giao dịch ..................................................................................... 11


1.3.2.

Ứng dụng trong đăng nhập một lần .................................................................................... 11

1.3.3.

S/KEY ................................................................................................................................. 13

1.3.4.

HOTP .................................................................................................................................. 15

1.3.5.

Security token ..................................................................................................................... 16

1.4.

Kết chương .................................................................................................................................. 20

CHƯƠNG 2. CÁC PHƯƠNG PHÁP SINH VÀ CHUYỂN GIAO OTP .................................................................. 21
2.1.

Các phương pháp sinh OTP ........................................................................................................ 21

2.1.1.

Phương pháp sinh OTP theo thời gian ................................................................................ 21


2.1.2.

Phương pháp sinh OTP bằng thuật toán dựa trên mật khẩu cũ ........................................... 22

2.1.3.

Phương pháp sinh OTP bằng thuật toán dựa trên giao thức thách thức – trả lời: ............... 23

2.2.

Các phương pháp chuyển giao OTP ........................................................................................... 27

2.2.1.

Chuyển giao OTP bằng giấy ............................................................................................... 27

2.2.2.

Chuyển giao OTP bằng tin nhắn SMS ................................................................................ 28

2.2.3.

Tạo OTP sử dụng token ...................................................................................................... 29

2.2.4.

Tạo OTP sử dụng điện thoại di động .................................................................................. 33

2.3.


Kết chương .................................................................................................................................. 36

NGUYỄN VIỆT HUY D09CNPM2

Page | 1


ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG 3. ỨNG DỤNG OTP TRONG XÁC THỰC GIAO DỊCH NGÂN HÀNG TRỰC TUYẾN ......................... 37
3.1.

Xác thực giao dịch ngân hàng trực tuyến sử dụng OTP chuyển giao qua SMS ......................... 37

3.1.1.

Mô tả kịch bản thử nghiệm ................................................................................................. 37

3.1.2.

Cài đặt ................................................................................................................................. 39

3.1.3.

Kết quả ................................................................................................................................ 40

3.2. Xác thực giao dịch ngân hàng trực tuyến sử dụng OTP sinh trên điện thoại di động dựa trên
giao thức Thách thức – Trả lời ................................................................................................................ 44
3.2.1.

Mô tả kịch bản thử nghiệm ................................................................................................. 44


3.2.2.
lời

Cài đặt phần mềm sinh OTP trên điện thoại di động dựa trên giao thức Thách thức – Trả
............................................................................................................................................. 45

3.2.3.

Kết quả ................................................................................................................................ 46

3.3.

Kết chương .................................................................................................................................. 48

KẾT LUẬN................................................................................................................................................. 49
TÀI LIỆU THAM KHẢO .......................................................................................................................... 50

NGUYỄN VIỆT HUY D09CNPM2

Page | 2


ĐỒ ÁN TỐT NGHIỆP

LỜI MỞ ĐẦU
Từ lâu, mật khẩu (password) được sử dụng rộng rãi trong khâu đăng nhập (log-on) để
xác thực người dùng truy nhập vào các hệ thống máy tính và mạng. Từ đăng nhập vào
các phần mềm ứng dụng trên máy tính cá nhân đến đăng nhập vào máy chủ công ty và
cả website của các tổ chức tài chính, ngân hàng, phương tiện chính để xác thực người

dùng chỉ là mật khẩu (tên đăng nhập hay username - cũng là một dạng password không có ý nghĩa bảo mật vì thường không được giữ bí mật). Tuy nhiên, hầu hết các
chuyên gia bảo mật đều nhận định password không còn an toàn trước các thủ đoạn tấn
công tinh vi hiện nay. Mật khẩu có thể bị nghe lén, bị đánh cắp, hoặc bị phá mã (với
các mật được mã hóa hoặc băm) và sau đó có thể bị lạm dụng tương đối dễ dàng. Mật
khẩu sử dụng một lần - OTP (One Time Password) đượ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ịch thanh toán trực tuyến trong các hệ thống ngân hàng.
Đồ án "Nghiên cứu về mật khẩu sử dụng một lần và ứng dụng" được lựa chọn với
mục đích nghiên cứu sâ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. Từ việc phân tích về ưu, nhược điểm của các
phương pháp này, đồ án tập trung nghiên cứu và cài đặt thử nghiệm ứng dụng mật
khẩu sử dụng một lần để nâng cao an toàn cho xác thực các giao dịch ngân hàng trực
tuyến.
Đồ án gồm 3 chương với nội dung như sau:
Chương 1 – Tổng quan về OTP và ứng dụng
Giới thiệu tổng quan về mật khẩu sử dụng một lần (OTP): khái quát về mật khẩu
sử dụng một lần và ưu, nhược điểm của mật khẩu sử dụng một lần. Giới thiệu tổng
quan về các ứng dụng của mật khẩu sử dụng một lần.

NGUYỄN VIỆT HUY D09CNPM2

Page | 3


ĐỒ ÁN TỐT NGHIỆP

Chương 2 – Các phương pháp sinh và chuyển giao OTP
Chương 2 trình bày về các phương pháp sinh và chuyển giao mật khẩu sử dụng một
lần.
Chương 3 – Ứng dụng OTP trong xác thực giao dịch ngân hàng trực tuyến

Chương 3 trình bày việc cài đặt và thử nghiệm ứng dụng xác thực giao dịch ngân hàng
trực tuyến sử dụng mật khẩu sử dụng một lần chuyển giao qua SMS và sinh OTP rên
điện thoại di động dựa trên giao thức Thách thức – Trả lời
Nhìn chung, đồ án đã trình bày khái quát về mật khẩu sử dụng một lầ và ứng dụng.
Tuy nhiên, do thời gian thực hiện còn có hạn và kiến thức còn hạn chế nên đồ án
không tránh khỏi thiếu sót. Rất mong nhận được các ý kiến đóng góp của các thầy cô
và các bạn quan tâm đến vấn đề này để em có thể hoàn thiện hơn kiến thức của mình.

NGUYỄN VIỆT HUY D09CNPM2

Page | 4


ĐỒ ÁN TỐT NGHIỆP

DANH MỤC BẢNG BIỂU, HÌNH VẼ, SƠ ĐỒ
Hình 1.1: Minh họa xác thực mật khẩu. .......................................................................................... 7
Hình 1.2: Minh họa đăng nhập một lần ........................................................................................ 12
Hình 1.3: Thiết bị sinh OTP – OTP Token ................................................................................... 17
Hình 1.4: Ứng dụng Mobile OTP – IOS ....................................................................................... 18
Hình 1.5: Ứng dụng Mobile OTP – Window Phone 8 ................................................................. 19
Hình 2.1: Mô hình sinh mã OTP theo thời gian........................................................................... 22
Hình 2.2: Mô hình xác thực người dùng dựa trên giao thức Thách thức – Trả lời. ...................... 24
Hình 2.3: Thẻ mật khẩu OTP với mật khẩu in sẵn của VinaGame............................................... 27
Hình 2.4: Chuyển giao OTP bằng tin nhắn SMS .......................................................................... 28
Hình 2.5: Minh họa thẻ EMV ....................................................................................................... 31
Hình 2.6: Minh họa thiết bị E-Token ............................................................................................ 32
Hình 2.7: Mô hình kết nối SSL VPN đến Vigor2950 có điện thoại hỗ trợ xác thực .................... 33
Hình 2.8: Cài đặt phần mềm sinh OTP trên iPhone để xác thực với bộ định tuyến Vigor2950. .. 35
Hình 3.1: Mô hình nhận OTP qua SMS........................................................................................ 37

Hình 3.2: Màn hình đăng nhập vào trang chủ Banking ................................................................ 40
Hình 3.3: Trang Chuyển Khoản .................................................................................................... 41
Hình 3.4: Trang Xác Nhận ............................................................................................................ 42
Hình 3.5: Thông báo hoàn tất giao dịch .........................................Error! Bookmark not defined.
Hình 3.6: Mô hình tạo OTP qua Challenge – Response trên điện thoại di động .......................... 44
Hình 3.7: Trang Chuyển Khoản khi xác thực bằng Challenge - Response .................................. 46
Hình 3.8: Ứng dụng sinh OTP trên điện thoại di động ................................................................. 47

NGUYỄN VIỆT HUY D09CNPM2

Page | 5


ĐỒ ÁN TỐT NGHIỆP

CHƯƠNG 1 – TỔNG QUAN VỀ OTP VÀ ỨNG DỤNG
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. Mật khẩu là gì?
Hiện nay, đăng nhập (log-on) là một khâu quan trọng trong đảm bảo an toàn cho hệ
thống máy tính và mạng. Thông thường, người dùng phải cung cấp một tên truy nhập
(username) và mật khẩu (password) kèm theo để đăng nhập vào hệ thống.
Tên truy nhập là một tên do người dùng lựa chọn theo quy ước hệ thống đặt ra và phải
duy nhất trong một hệ thống. Trong khi tên truy nhập thường không cần giữ bí mật thì
mật khẩu luôn cần giữ bí mật – chỉ người dùng biết mật khẩu của mình.

Vậy mật khẩu là gì ?
Mật khẩu là một hay nhiều từ mà người dùng phải biết để được cấp quyền truy cập, là
một dạng thông tin đặc biệt như chuỗi các ký tự, hình ảnh, dấu vân tay… dùng để xác
thực, chứng minh tính chính xác một người khi đăng nhập vào một hệ thống, một dịch
vụ hay một ứng dụng nào đó [8].


NGUYỄN VIỆT HUY D09CNPM2

Page | 6


ĐỒ ÁN TỐT NGHIỆP

1.1.2. Phương pháp xác thực sử dụng mật khẩu
Để đảm bảo an toàn, mật khẩu cần được giữ bí mật và chỉ bản thân người dùng mới
biết. Mật khẩu thường được sử dụng trong một thời gian dài và trao đổi thường xuyên
giữa máy khách (client) của người sử dụng với máy chủ (server).
Sau khi người dùng gõ mật khẩu của mình, bên phía client sẽ xác thực mật khẩu với
server. Nếu mật khẩu đúng server sẽ xác nhận và cấp quyền truy nhập tương ứng cho
client và qua đó tới người dùng. Hình 1.1 minh họa việc xác thực người dụng dựa trên
mật khẩu.

Hình 1.1: Minh họa xác thực mật khẩu.

NGUYỄN VIỆT HUY D09CNPM2

Page | 7


ĐỒ ÁN TỐT NGHIỆP

1.1.3. Độ an toàn của mật khẩu
Do mật khẩu thường được gửi từ client đến server dưới dạng rõ (plaintext) nên nó dễ
dàng bị đánh cắp, lạm dụng và có thể gây thiệt hại cho người dùng và đe dọa đến an
toàn của hệ thống. Các chương trình mã độc như "Trojan horse" và "key logger"

thường được tin tặc dùng cho mục đích này.Thông thường, để dò tìm mật khẩu, các tin
tặc thường sử dụng cá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.
Do vậy, nếu sử dụng các mật khẩu quá đơn giản hay quá ngắn, việc sử dụng phương
pháp tấn công dựa trên từ điển hoặc vét cạn có thể giúp tin tặc 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.
Trên thực tế, một mật khẩu an toàn cần thỏa mãn các yêu cầu sau:
 Độ 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ông vé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ày thá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, in thườ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ệc thực hiện tấn công vét cạn không khả thi.

NGUYỄN VIỆT HUY D09CNPM2

Page | 8


ĐỒ ÁN TỐT NGHIỆP

1.2. Giới thiệu về OTP
1.2.1. OTP là gì?
Mật khẩu sử dụng một lần hay còn gọi là OTP (One time password), 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ột lần trong xác thực người dùng cho một phiên làm việc hoặc xác thực một giao
dịch của người dùng. 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 có độ bảo mật cao.
Xuất hiện từ đầu thế kỉ 20 và còn có tên gọi khác là Vernam Cipher, OTP được mệnh
danh là cái chén thánh của ngành mã hóa dữ liệu. OTP là thuật toán duy nhất chứng
minh được về lý thuyết là không thể phá được ngay cả với tài nguyên vô tận (tức là có
thể chống lại kiểu tấn công brute-force) [16] . Để có thể đạt được mức độ bảo mật của
OTP, tất cảnhững điều kiện sau phải được thỏa mãn:
-

Độ dài của chìa khóa phải đúng bằng độ dài văn bản cần mã hóa.

-

Chìa khóa chỉ được dùng một lần.

-

Chìa khóa phải là một số thực sự ngẫu nhiên.

1.2.2. Ưu điểm của OTP
OTP có nhiều ưu điểm so với mật khẩu truyền thống. Cụ thể:
-

An toàn: Giải quyết tốt các vấn đề giả mạo, đánh cắp, Key logger. Đối với phương

pháp xác thực hai yếu tố, OTP có thể được kết hợp sử dụng với một mã PIN hoặc mật
khẩ thông thường.
-

Dễ dàng sử dụng: Việc nhận dạng và xác thực được thực hiện trong vài giây, tránh


được nguy cơ bị lỗi khi gõ các mã OTP dài qua các mã từ một thiết bị chứng thực vào
một máy tính (Ví dụ OTP Token sử dụng màn hình hiển thị). Nó hoạt động với tài
nguyên và đăng nhập được trên hầu hết các nền tảng máy tính, và trình duyệt không
cần cài đặt phần mềm Client chuyên dụng.
-

Linh hoạt: Người dùng dễ dàng sử dụng cho các máy tính khác nhau và dễ mang

theo thiết bị sinh OTP bên mình.
NGUYỄN VIỆT HUY D09CNPM2

Page | 9


ĐỒ ÁN TỐT NGHIỆP

-

Mã nguồn mở: Sẵn sàng tích hợp với nhiều ứng dụng mã nguồn mở.

Các giải pháp có thể ứng dụng OTP gồm: Web mail server, CRM (Hệ quản lý khách
hàng), ERP (Hoạch định nguồn lực doanh nghiệp), Hệ thống quản lý tài liệu, Thương
mại điện tử...
1.2.3. Nhược điểm của OTP
OTP sẽ mất an toàn khi chủ tài khoản bị mất thiết bị sinh OTP (OTP Token) hay kẻ
cắp có thể xâm nhập vào hệ thống gửi/nhận tin nhắn SMS để biết được OTP mỗi khi
khách hàng thực hiện giao dịch. Ngoài ra, nếu như hệ thống mạng viễn thông bị chậm,
quá tải... hay vì lý do gì đó mà tin nhắn SMS gửi OTP đến chậm thì giao dịch dựa vào
OTP chuyển giao qua SMS sẽ không thực hiện được.
Hiện nay, do tiết kiệm chi phí đầu tư một số doanh nghiệp chỉ sử dụng hình thức xác

thực qua tên định danh người dùng (username) và mật khẩu dùng một lần (OTP)
chuyển giao đến người dùng qua tin nhắn SMS đến điện thoại di động. Tên định danh
người dùng dễ dàng bị lộ khi người dùng đăng nhập trên Internet, tham gia các hoạt
động trên mạng xã hội hoặc diễn đàn… Còn OTP sẽ mất an toàn khi người dùng bị
đánh cắp thẻ SIM điện thoại.

NGUYỄN VIỆT HUY D09CNPM2

Page | 10


ĐỒ ÁN TỐT NGHIỆP

1.3. Ứng dụng của OTP
1.3.1. Ứng dụng trong xác thực giao dịch
Hiện nay, mật khẩu sử dụng một lần thường được sử dụng khá phổ biến trong lĩnh vực
ngân hàng nhằm tăng tính bảo mật cho các giao dịch thanh toán như chuyển khoản,
chuyển tiền, …
Thông thường có hai hình thức xác thực giao dịch mà ngân hàng thường sử dụng, đó
là:
- Hệ thống sử dụng Token sinh OTP đồng bộ theo thời gian thực:
Hệ thống này sử dụng thời gian để đồng bộ việc sinh OTP giữa máy chủ và một
thiết bị phần cứng được gọi là OTP Token (mỗi cá nhân sử dụng hệ thống sẽ được cấp
một token cá nhân để sinh OTP theo thời gian thực).
- Hệ thống không sử dụng Token:
Trong hệ thống này OTP được máy chủ sinh ra tự động cho mỗi phiên giao dịch và
được tồn tại trong một khoảng thời gian xác định và được chuyển tới người sử dụng
thông qua tin nhắn SMS, hay gửi qua Email, …

1.3.2. Ứng dụng trong đăng nhập một lần

Ứng dụng trong đăng nhập một lần (Single Sign On – SSO) dựa trên mật khẩu sử dụng
một lần được xây dựng nhằm xác thực người sử dụng khi người sử dụng truy cập vào
một chuỗi các ứng dụng có liên kết trong môi trường phân tán. Người dùng chỉ cần
cung cấp thông tin đăng nhập một lần và có thể truy nhập vào nhiều ứng dụng khác
nhau trong hệ thống phân tán.
Như các ứng dụng và các tài nguyên khác nhau hỗ trợ các cơ chế xác thực khác nhau,
SSO phải chuyển đổi nội bộvà lưu trữ các thông tin ủy quyền khác nhau để so sánh với
những gì đã được sử dụng để xác thực trong lần đầu. Hình 1.2 minh họa cơ chế đăng
nhập một lần.

NGUYỄN VIỆT HUY D09CNPM2

Page | 11


ĐỒ ÁN TỐT NGHIỆP

Hình 1.2: Minh họa đăng nhập một lần
Lợi ích của việc sử dụng SSO:
- Làm giảm sự mệt mỏi của người dùng khi phải đăng nhập nhiều lần vào các dịch vụ
khác nhau;
- Làm giảm thời gian nhập lại mật khẩu cho cùng 1 danh tính;
- Có thể hỗ trợ các chứng thực thông thường như Windows Credentials
(ID/password);
- Bảo mật trên tất cả các cấp trong việc truy cập, thoát khỏi hệ thống mà không gây
bất tiện cho người sử dụng;
- SSO sử dụng máy chủ xác thực tập trung tất cả các ứng dụng khác và các hệ thống
sử dụng cho mục đích xác thực, và kết hợp điều này với công nghệ để đảm bảo người
dùng không phải đăng nhập lại thông tin của họ thêm một lần nào nữa.


NGUYỄN VIỆT HUY D09CNPM2

Page | 12


ĐỒ ÁN TỐT NGHIỆP

Những nhược điểm của SSO:
- Làm tăng các tác động tiêu cực trong trường hợp thông tin có sẵn cho
người khác và được sử dụng sai. Vì vậy khi xây dựng SSO cần tập trung
tăng cường bảo vệ thông tin người dùng, do đó nên kết hợp các phương pháp
xác thực mạnh, như thẻ thông minh hoặc password dùng một lần.
- Yêu cầu về hệ thống xác thực rất quan trọng, chỉ cần hệ thống bị lỗi hoặc
ko tiếp cận được với hệ thống, người dùng sẽ không truy cập được vào tất cả
các dịch vụ trong hệ thống. Cần đảm bảo việc truy cập được thực hiện mọi lúc
và an toàn [19].

1.3.3. S/KEY
S/Key còn được gọi là Lamport scheme [7], 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 kẻ cắp 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 [17] có thể được dùng để 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 [17].

NGUYỄN VIỆT HUY D09CNPM2

Page | 13


ĐỒ ÁN TỐT NGHIỆP

Sau đây là phần mô tả cụ thể cho phương pháp này:
- Sinh mật khẩu.
1. 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.
2. 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).
3. Mật khẩu ban đầu W bị hủy đi.
4. 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).
5. 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).

- 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 (cái 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.

- Tính bảo mật
Tính bảo mật của S/Key phụ thuộc vào độ phức tạp của hàm băm mã hóa. Giả sử rằng
một kẻ tấn công giữ một mật khẩu đã được dùng cho một lần xác thực thành công.
Gọi mật khẩu này là i, mật khẩu này đã không còn giá trị trong quá trình xác thực nữa
NGUYỄN VIỆT HUY D09CNPM2

Page | 14


ĐỒ ÁN TỐT NGHIỆP

vì mỗi mật khẩu chỉ được dùng một lần. Nhưng kẻ tấn công sẽ quan tâm đến việc tìm
ra mật khẩu i-1, vì mật khẩu này sẽ được sử dụng cho lần xác thực kế tiếp. Điều này
cần phải chuyển ngược hàm băm để tạo ra mật khẩu i-1 từ mật khẩu i (H(mật khẩu i1)=mật khẩu i) – một việc rất khó khăn với các hàm băm mã hóa hiện thời. Tuy nhiên
S/Key có thể bị tấn công kiểu người đứng giữa (man-in- the middle) [18].
S/Key sử dụng các số 64 bit, và để cho người dùng sử dụng, mỗi số được ánh xạ thành
6 từ ngắn, mỗi từ có từ 1 đến 4 kí tự lấy từ từ điển 2048 từ. Ví dụ , một số 64 bit có thể
được biểu diễn thành Roy Hurt Ski Fail Grim.
1.3.4. 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 (Hash-based
Message Authentication Code - HMAC) và hàm băm SHA-1 (Secure Hash Algorithm
1) thường được sử dụng. HOTP được đưa ra bởi tổ chức Initiative for Open
Authentication (OATH). Về mặt khái niệm, HOTP tính giá trị băm SHA-1 dựa trên
HMAC được mã khóa bởi một khóa bí mật được chia sẻ trên một bộ đếm. Những bước
tính toán để sinh ra một mật khẩu HOTP như sau [5]:

- Hai bên người dùng đưa ra khóa bí mật dùng chung S.
- Khởi tạo bộ đếm c = 0.
- Định nghĩa H là HMAC được tính toán bằng SHA-1.
- Đặt Truncate là hàm lựa chọn 4 byte theo một cách nào đó.
- Người dùng cần xác thực gửi giá trị Truncate(H(S,c)) & 0x7FFFFFFF cho server.
- Bên server cũng tính toán giá trị hàm Truncate() theo cách tương tự. Nếu giá trịxác
thực do server tính toán khớp với giá trị người dùng cung cấp thì người dùng được
xác thực.
- Cả hai bên tăng giá trị của c.

NGUYỄN VIỆT HUY D09CNPM2

Page | 15


ĐỒ ÁN TỐT NGHIỆP

Với hệ thống S/Key, kết quả thường quá dài để người sử dụng nhập vào thiết bị. Thay
vì chuyển kết quả thành chuỗi kí tự như S/Key, HOTP đơn giản chỉ tính ra giá trị như
sau:
Value = HOTP(K,C) mod 10d
Trong đó:
K là một khóa bí mật;
C là bộ đếm;
d là số chữ số mong muốn của kết quả.
Có nhiều hệ thống ứng dụng phương pháp HOTP đã được phát triển và triển khai. Một
hệ thống có thể thay thế HMAC bằng giải thuật mã hóa Data Encryption Standard
(DES), Advanced Encryption Algorithm (AES), hoặc bất kì một giải thuật mã hóa
khác. Time-based One Time Password (TOTP) là phương pháp thay thế bộ đếm c bằng
thời gian hiện tại, do đó nó chuyển HOTP dựa trên toán học thành OTP dựa trên thời

gian.
1.3.5. Security token
Security token hay thường gọi là OTP Token, là loại khóa hai chiều được dùng phổ
biến nhất hiện nay vì giá thành rẻ và dễ dùng. Như tên gọi, OTP sinh ra chỉ có giá trị
sử dụng một lần nên tính bảo mật cao: sau khi người dùng gõ vào và đăng nhập thành
công thì mật khẩu này hết hiệu lực (lần đăng nhập sau sẽ dùng mật khẩu khác).Tin tặc
nếu có lấy trộm mật khẩu này cũng không thể đăng nhập vào hệ thống được.Hình 1.3
minh hoạt một thiết bị sinh OTP.

NGUYỄN VIỆT HUY D09CNPM2

Page | 16


ĐỒ ÁN TỐT NGHIỆP

Hình 1.3: Thiết bị sinh OTP – OTP Token

Dựa trên thuật toán sinh OTP, thiết bị OTP có 2 dạng: đồng bộ thời gian và dùng bộ
đếm.
Loại thiết bị OTP đồ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
thời gian giữa thiết bị OTP và máy chủ 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 “khung cửa” xác
thực đến nhỏ nhất để 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 thức cộng dồn thời gian xê dịch để điều chỉnh với mỗi xác
thực thành công. Thiết bị OTP đồng bộ thời gian có thể phải cân chỉnh lại nếu không
được sử dụng trong một thời gian dài.
Loại thiết bị OTP dùng bộ đếm tăng bộ đếm mỗi khi sinh ra một khóa mới và khóa này

được xác thực với điều kiện bộ đếm trong của thiết bị OTP đồng bộ với máy chủ xác
thực. Khác với bộ đếm trong của thiết bị OTP, bộ đếm của máy chủ được điều chỉnh
với mỗi xác thực thành công. Với loại này, thiết bị OTP và máy chủ xác thực dễ bị
“mất đồng bộ”.
So với thiết bị OTP đồng bộ thời gian, thiết bị OTP dùng bộ đếm kém an toàn hơn
trong việc chống lại kiểu tấn công thụ động online và offline. Tin tặc có thể thực hiện
tấn công kiểu giả mạo (phishing) và thu thập nhiều khóa để dùng sau đó, hay ai đó lấy
NGUYỄN VIỆT HUY D09CNPM2

Page | 17


ĐỒ ÁN TỐT NGHIỆP

được thiết bị này có thể tạo sẵn các khóa mà không hành động ngay. Một số thiết bị
OTP được bảo vệ bằng mã PIN (tương tự password), phương thức này chống được
kiểu tấn công offline nhưng không chống được kiểu tấn công online. Cũng có một số
thiết bị OTP có khả năng sinh chữ ký số và đây là công cụ hiệu quả để chống lại các
cuộc tấn công chủ động.Cả hai loại thiết bị OTP trên đều dùng pin làm nguồn nuôi và
phải thay pin sau một khoảng thời gian. Mỗi thiết bị được tạo duy nhất với mã số riêng
do vậy người dùng phải lập lại quy trình đăng ký mỗi khi thay thế thiết bị OTP.
Một biến thể của thiết bị OTP đó là dùng phần mềm giả lập thiết bị phần cứng, cài trên
các thiết bị di động như PDA hay điện thoại di động (ĐTDĐ). Hình 1.4 minh họa một
ứng dụng sinh OTP chạy trên điện thoại di động Iphone:

Hình 1.4: Ứng dụng Mobile OTP – IOS

NGUYỄN VIỆT HUY D09CNPM2

Page | 18



ĐỒ ÁN TỐT NGHIỆP

Đây là giải pháp hiệu quả và ít tốn kém, ít nhất cho đến khi các thiết bị di động trở nên
dễ bị can thiệp như máy tính và người ta cũng phải cài đặt firewall, trình chống virus,
công cụ lọc spam... trên các thiết bị này. Thiết bị OTP "mềm" thường là mục tiêu của
nhân bản và sao chép và người dùng có thể bị mất quyền kiểm soát khóa mềm của
mình mà không hay biết. Hình 1.5 minh họa một ứng dụng sinh OTP chạy trên nền
Windows Phone 8:

Hình 1.5: Ứng dụng Mobile OTP – Window Phone 8
Thiết bị OTP mềm trên thiết bị di động có thêm mã PIN bảo vệ gần đạt được độ an
toàn như thiết bị OTP phần cứng. Tuy giảm được chi phí phần cứng (thiết bị di động
có sẵn) và chi phí phân phối trực tiếp nhưng khi triển khai đại trà có thể phải đối mặt
với khó khăn về tính tương thích trong việc cài đặt và vận hành phần mềm do chủng
loại điện thoại di động rất đa dạng về phần cứng và nền tảng phần mềm cũng không
thống nhất.

NGUYỄN VIỆT HUY D09CNPM2

Page | 19


ĐỒ ÁN TỐT NGHIỆP

1.4. Kết chương
Chương 1 đã giới thiệu về các khái niệm cơ bản bao gồm định nghĩa mật khẩu, mật
khẩu sử dụng một lần (OTP) cũng như các phương pháp xác thực mật khẩu, mật khẩu
sử dụng một lần. OTP được ứng dụng cho nhiều lĩnh vực như: ứng dụng trong xác

thực giao dịch, đăng nhập một lần, S/Key, HOTP, Security Token ... Mật khẩu sử dụng
một lần tuy vẫn còn nhiều nhược điểm chưa thể khắc phục, nhưng hiện tại nó vẫn là
một phương pháp bảo mật khá an toàn trong thời điểm hiện nay so với mật khẩu truyền
thống.

NGUYỄN VIỆT HUY D09CNPM2

Page | 20


ĐỒ ÁN TỐT NGHIỆP

CHƯƠNG 2. CÁC PHƯƠNG PHÁP SINH VÀ CHUYỂN GIAO OTP
2.1. Các phương pháp sinh OTP
2.1.1. Phương pháp sinh OTP 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ờ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 đồnghồ. 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ên thời gian như vậy. Sau đây sẽ là phần mô tả thuật
toán này.

Thiết lập:

-

Đưa ra một số nguyên bí mật K được chia sẻ giữa bên xác thực và người sử dụng.

-

Thống nhất một giá trị bước nhảy thời gian X và thời gian ban đầu T0.

Xác thực:
𝐶𝑢𝑟𝑟𝑒𝑛𝑡 𝑇𝑖𝑚𝑒 − 𝑇𝑜

-

Người sử dụng tính giá trị 𝑇 = ⌊

-

Người sử dụng gửi cho bên xác thực HOTP(K,T) trong đó HOTP là thuật toán

𝑋

⌋.

sinh OTP dựa trên các hàm băm.

NGUYỄN VIỆT HUY D09CNPM2

Page | 21



ĐỒ ÁN TỐT NGHIỆP

Bên xác thực có thể xác nhận mật khẩu đó hợp lệ hay không, vì bất kỳ mật khẩu nào
được sinh ra bên ngoài khoảng thời gian từ T0 đến thời gian hiện tại đều khác nhau. Và
vì có một khóa được dùng chung nên nhà xác thực có thể chắc chắn rằng mật khẩu
được sinh ra bởi một người đang sở hữu khóa chia sẻ đó. Hình 2.1 minh họa mô hình
sinh mã OTP theo thời gian.

Hình 2.1: Mô hình sinh mã OTP theo thời gian.

2.1.2. Phương pháp sinh OTP bằng thuật toán dựa trên mật khẩu cũ

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 theo thuật toán mỗi khi có yêu cầu sử dụng. Thuật toán
của bên xác thực và người dùng phải đồng bộ với nhau. Mỗi lần một người dùng được
xác thực thành công, bên xác thực sẽ chỉ chấp nhận một OTP kếtiếp được sinh ra bởi
thuật toán. Không giống OTP dựa trên thời gian, OTP dựa trên toán học chỉ có giá trị
cho một lần sử dụng và không bị tấn công như đã mô tả ở trên khi mà mật khẩu được
sử dụng nhiều lần trong một khoảng thời gian. Và việc đồng bộ hóa đồng hồ và sai số
đồng hồ không phải là vấn đề. Một vấn đề cần quan tâm là nếu mật khẩu dựa trên toán
NGUYỄN VIỆT HUY D09CNPM2

Page | 22


ĐỒ ÁN TỐT NGHIỆP

học bị đánh cắp, nó có thể có giá trị nếu như người dùng thực sự chưa thực hiệnviệc
xác thực.
Một vấn đề khi cài đặt các giải thuật này là việc giữ cho thuật toán của bên xác thực và

người dùng đồng bộ với nhau. Ví dụ, giả sử một thiết bị phần cứng của người dùng
hiển thị một mật khẩu và người dùng của thiết bị này không thể nhập đúng dãy mật
khẩu đó cho bên xác thực. Nếu người dùng vội vã chỉ cho phần cứng đó biết rằng mật
khẩu đã được chấp nhận thì họ không có cách nào để lấy lại mật khẩu cũ mà bên xác
thực đang chờ nhận. Để khắc phục điều này, đ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ẩu dựa trên các thuật toán.

2.1.3. Phương pháp sinh OTP bằng thuật toán dựa trên giao thức Thách thức –
Trả lời:
Giao thức thử thách và trả lời (Challenge – Response) cho phép người truy nhập tự xác
thực mình với hệ thống bằng cách chứ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 tiết lộ giá trị bí mật. Hệ thống xác thực đưa ra
cho người truy nhập một số được tạo ra một cách ngẫu nhiên được gọi là thử thách
(challenge). Người truy nhập nhập số thử thách và giá trị bímật để hàm mật mã tính ra
câu trả lời. Hệ thốngxác thựcthông tinnhận dạng người truy nhập thành công nếu câu
trả lời là giá trị mong đợi. Do thử thách là một số ngẫu nhiên, nên giao thức thử thách
– trả lời cung cấp một lá chắn có hiệu quả chống lại dạng tấn công phát lại. Hình 2.2
minh họa quá trình xác thực người dùng dựa trên giao thức thách thức – trả lời.

NGUYỄN VIỆT HUY D09CNPM2

Page | 23


ĐỒ ÁN TỐT NGHIỆP

Hình 2.2: Mô hình xác thực người dùng dựa trên giao thức Thách thức – Trả lời.
Xác thực không mật mã nói chung thích hợp trong những ngày trước khi có Internet ,

khi người dùng có thể chắc chắn rằng hệ thống yêu cầu mật khẩu đã thực sự là hệ
thống mà họ đang cố gắng để truy cập, và không ai có khả năng nghe trộm trên
các đường truyền để lấy các mật khẩu được nhập vào. Để giải quyết vấn đề này chúng
ta cần phải có một cách tiếp cận khác phức tạp hơn. Nhiều giải pháp liên quan đến mật
mã xác thực hai chiều, trong đó cả người sử dụng và hệ thống phải dùng một phương
pháp thuyết phục khác mà họ biết có thể chia sẻ bí mật (mật khẩu), mà không bao giờ
bí mật này được truyền đi một cách rõ ràng trên các đường truyền, nơi những kẻ
trộm có thể là rình rập, đánh cắp.
Một trong những phương pháp được thực hiện liên quan đến việc sử dụng mật khẩu đó
là một bên mã hóa một số thông tin ngẫu nhiên nhằm tạo ra các thách thức (challenge),
sau đó, đầu kia phải hồi đáp lại một trả lời (response) một giá trị tương tự như mã hóa
là một số chức năng được xác định trước các thông tin ban đầu được cung cấp, do đó
chứng minh rằng nó đã có thể giải mã các thử thách.

NGUYỄN VIỆT HUY D09CNPM2

Page | 24


×