Xem mẫu
- Tuyển tập Hội nghị Khoa học thường niên năm 2019. ISBN: 978-604-82-2981-8
ĐẢM BẢO AN TOÀN CHO MẬT KHẨU ĐĂNG NHẬP
Phạm Thanh Bình
Trường Đại học Thuỷ lợi, email: binhpt@tlu.edu.vn
1. GIỚI THIỆU CHUNG liệu, vấn đề chính là quy trình sử dụng các kỹ
thuật mã hoá đó như thế nào. Việc kết hợp
Xác thực bằng mật khẩu là một phương
thức hay được sử dụng khi đăng nhập hệ nhiều kỹ thuật mã hoá với nhau sẽ giúp tạo ra
thống. Người dùng sẽ nhập một cặp dữ liệu những giải pháp bảo mật khác nhau, phù hợp
gồm tên và mật khẩu tại cửa sổ đăng nhập, với những điều kiện khác nhau.
cặp dữ liệu đó sẽ được dùng để so sánh với
3. KẾT QUẢ NGHIÊN CỨU
cặp dữ liệu tương ứng đã lưu trong file dữ
liệu người dùng. Nếu hai cặp dữ liệu giống 3.1. Mã hoá mật khẩu
nhau thì quá trình đăng nhập được chấp nhận.
Một số hệ thống cũ thường cất file chứa
Việc bảo mật cho file dữ liệu chứa mật
mật khẩu trên đĩa mà không mã hoá. Điều
khẩu rất quan trọng, vì nếu thông tin trong
này rất nguy hiểm vì nếu ai đó lấy được file
file bị lộ ra ngoài thì bất cứ ai cũng có thể giả
này (do lợi dụng lỗ hổng bảo mật, hoặc do
dạng người dùng để đăng nhập vào hệ thống.
tình cờ dùng nhờ máy đồng nghiệp…), anh ta
Giải pháp thường được sử dụng là mã hoá dữ
sẽ nắm trong tay số phận của hệ thống đó. Vì
liệu trong file này. Vấn đề là chọn kỹ thuật
thế, một nguyên tắc bắt buộc đối với các hệ
mã hoá nào để đảm bảo an toàn. Sự kiện 500
thống máy tính hiện nay là phải mã hoá file
triệu tài khoản Yahoo bị lộ thông tin, rồi tới
chứa mật khẩu. Thông thường mật khẩu sẽ
160 triệu tài khoản Zing bị lộ cả mật khẩu…
được mã hoá bằng một thuật toán nào đó rồi
cho thấy trên thực tế vấn đề này vẫn chưa
cất vào file. Khi người dùng đăng nhập, mật
được quan tâm đúng mức.
khẩu họ nhập vào sẽ được mã hoá bằng thuật
Trong khuôn khổ bài viết này chúng tôi sẽ
toán nói trên, rồi đem so sánh với mật khẩu
đề cập tới các giải pháp đảm bảo an toàn cho
đã mã hoá cất trong file. Nếu hai mật khẩu
mật khẩu và các kỹ thuật thực hiện cụ thể.
giống nhau thì đăng nhập thành công.
2. PHƯƠNG PHÁP NGHIÊN CỨU 3.2. Lựa chọn giải pháp mã hoá
Để lựa chọn giải pháp phù hợp cho bảo Có nhiều kỹ thuật mã hoá khác nhau, hai
mật mật khẩu, trước tiên chúng tôi tiến hành kỹ thuật phổ biến nhất là mật mã đối xứng
nghiên cứu và phân tích nhiều thuật toán mã dùng khoá bí mật và mật mã khoá công khai.
hoá khác nhau, từ đó đánh giá ưu nhược điểm Chúng được dùng để biến đổi dữ liệu ban đầu
của từng thuật toán. sang một dạng mới không thể đọc được nếu
Sau khi lựa chọn được loại thuật toán mã không có khoá. Trước đây có một số hệ
hoá phù hợp với mục đích, bước tiếp theo là thống sử dụng các kỹ thuật mật mã này để
đánh giá độ an toàn của chúng, các khả năng mã hoá file chứa mật khẩu. Tuy nhiên vấn đề
chúng có thể bị tấn công, từ đó đưa ra đặt ra là ai sẽ quản lý khoá? Người quản lí
phương án sửa đổi, cải tiến để hạn chế các khoá (thường là quản trị hệ thống) sẽ có toàn
nguy cơ tấn công đó. quyền giải mã file, và biết được mật khẩu của
Bảo mật mật khẩu không chỉ đơn giản là tất cả người dùng. Nếu anh ta lợi dụng điều
dùng kỹ thuật mã hoá phù hợp để mã hoá dữ đó cho ý đồ xấu thì sao?
183
- Tuyển tập Hội nghị Khoa học thường niên năm 2019. ISBN: 978-604-82-2981-8
Để tránh hiện tượng trên, có một kỹ thuật khẩu có trong danh sách, số lượng mật khẩu có
đã từng được áp dụng trên UNIX: Người ta trong file, và độ phức tạp của thuật toán hash.
không mã hoá mật khẩu mà dùng mật khẩu b) Giải pháp sử dụng Salt
đó làm khoá để mã hoá một khối dữ liệu cố Để chống lại kỹ thuật tấn công nói trên cần
định. Dữ liệu sau khi mã hoá được lưu vào phải có một giải pháp khiến cho quá trình đó
file, đây là cơ sở để so sánh trong quá trình tiêu tốn một lượng thời gian khổng lồ, vượt
đăng nhập của người dùng. Không ai có thể quá khả năng xử lí của kẻ tấn công và máy
giải mã dữ liệu đó, ngoài người sở hữu khoá tính của anh ta. Giải pháp đó như sau:
(mật khẩu). Tất nhiên thuật toán mã hoá phải Trước khi cất mật khẩu vào file, người ta
đủ phức tạp để không thể tính được khoá khi sẽ ghép vào mỗi mật khẩu đó một số ngẫu
biết bản mã và bản rõ. nhiên dài n bít, gọi là salt. Số ngẫu nhiên này
Trên thực tế, người ta thường sử dụng kỹ sẽ thay đổi mỗi khi người dùng thay đổi mật
thuật hash để mã hoá mật khẩu. Hash là một kỹ khẩu. Salt được cất trong file chứa mật khẩu
thuật mã hoá một chiều, nó biến mỗi mật khẩu mà không cần mã hoá nên bất cứ ai cũng có
thành một dãy bít duy nhất có chiều dài cố định thể đọc được. Mật khẩu ghép với salt sẽ được
(gọi là mã hash) và không thể biến ngược lại. mã hoá bằng hàm hash, rồi mới cất vào file.
Nhờ vậy quản trị hệ thống cũng không thể biết Khi đó định dạng file sẽ như sau:
được mật khẩu của những người dùng khác. Tên đăng nhập Salt Mã hash
Khi người dùng đăng nhập, mã hash mật khẩu
Binhpt 9753 H(pass||9753)
họ nhập vào sẽ được so sánh với mã hash mật
khẩu đã lưu trong file. Mã hash mật khẩu Thaont 1328 H(pass||1328)
thường được kí hiệu là H(pass), trong đó pass Phuongnh 3097 H(pass||3097)
là mật khẩu, còn H là hàm hash. Trangtt 4129 H(pass||4129)
… … …
3.3. Các nguy cơ và giải pháp
Mỗi bản ghi của file sẽ ứng với một người
a) Nguy cơ
dùng. Trường đầu tiên là tên đăng nhập,
Mặc dù không dịch ngược được mã hash,
nhưng nếu kẻ tấn công lấy được file chứa mật trường thứ hai chứa số ngẫu nhiên salt, còn
khẩu (đã mã hoá), anh ta vẫn có thể dò được trường thứ ba là mã hash của mật khẩu + salt.
mật khẩu ban đầu bằng cách sau đây: Lúc này, để dò mật khẩu, kẻ tấn công sẽ
phải ghép thêm vào mỗi mật khẩu trong danh
- Đầu tiên anh ta sẽ chuẩn bị một danh
sách đã chuẩn bị những con số có chiều dài n
sách chứa các mật khẩu có thể gặp phải. Đó
bít, sau đó mới mã hoá chuỗi vừa ghép. Có
là những cụm từ thường gặp trong cuộc sống
tới 2n số như vậy, tức là một mật khẩu ban
hàng ngày như tên người, năm sinh, địa danh, đầu sẽ lần lượt được ghép với 2n số khác
các từ có trong từ điển, các dãy số, dãy kí tự nhau. Ví dụ mật khẩu ban đầu là “pass” thì
đơn giản… Đa số người dùng có thói quen sẽ sinh thêm 2n mật khẩu khác có dạng
lựa chọn mật khẩu bằng những cụm từ như “pass0000”, “pass0001”, “pass0002”…
vậy. (Một số nghiên cứu cho thấy có tới 86% Nói cách khác, kích thước danh sách mà kẻ
mật khẩu thường dùng xuất hiện trong các tấn công chuẩn bị sẽ tăng lên 2n lần. Điều đó
danh sách loại này [1]). sẽ làm tăng chi phí thời gian chuẩn bị, thời
- Tiếp theo anh ta sẽ mã hoá các mật khẩu gian tính toán mã hash và so sánh.
trong danh sách bằng thuật toán hash, rồi lần c) Sử dụng thuật toán hash chậm
lượt so sánh chúng với các mật khẩu đã mã Trong các lĩnh vực chứng thực, chữ kí số…
hoá trong file chứa mật khẩu của hệ thống. Khi người ta thường sử dụng các thuật toán hash
tìm được một cặp giống nhau, anh ta sẽ biết SHA, Whirlpool, MD5… Chúng được sử dụng
mật khẩu ban đầu là gì, và tất nhiên sẽ biết cả rộng rãi vì có tốc độ thực hiện khá nhanh. Tuy
tên đăng nhập cùng các thông tin khác của nhiên trong lĩnh vực bảo mật mật khẩu thì
người dùng đó. Quá trình nói trên có thể tốn “nhanh” lại là một nhược điểm, vì nó giúp kẻ
nhiều thời gian, tuỳ thuộc vào số lượng mật tấn công tiết kiệm được thời gian, trong khi ta
184
- Tuyển tập Hội nghị Khoa học thường niên năm 2019. ISBN: 978-604-82-2981-8
đang muốn họ phải tốn càng nhiều thời gian b) Kết hợp hash với mật mã đối xứng.
càng tốt. Trường hợp 160 triệu tài khoản Zing Việc sử dụng HMAC với khoá pepper giúp
bị lộ do dùng hash MD5 là một ví dụ điển nâng cao độ an toàn trong bảo mật mật khẩu.
hình. Trên thực tế, người ta thường sử dụng Tuy nhiên giải pháp này không cho phép thay
một số thuật toán hash chậm để mã hoá mật đổi pepper, nên nếu vì một lý do nào đó mà
khẩu như Bcrypt, PBKDF2, Scrypt… pepper bị lộ thì sẽ không có biện pháp khắc
d) Sử dụng thêm Pepper phục (Một khi đã áp dụng HMAC để mã hoá
Kẻ tấn công có thể dò tìm mật khẩu vì anh mật khẩu và salt thì không thể khôi phục dữ
ta biết thuật toán hash, rồi dùng nó để mã hoá liệu về trạng thái ban đầu, do đó không thể
các mật khẩu trong danh sách mà anh ta đã đổi được pepper).
chuẩn bị. Có một kỹ thuật tương tự như hash, Một giải pháp cho vấn đề này là thực hiện
nhưng đòi hỏi phải sử dụng một mật khoá K mã hoá mật khẩu và salt bằng hash chậm
thì mới triển khai được thuật toán - đó là trước, sau đó đem kết quả thu được mã hoá
HMAC [2]. Có thể dùng HMAC để mã hoá bằng mật mã đối xứng (ví dụ AES) với khoá
mật khẩu và salt: HMAC(pass||satl, K). Lúc là pepper: AES(H(pass||satl), pepper). Hiệu
này kẻ tấn công không thể mã hoá được danh quả thu được tương tự như dùng HMAC,
sách đã chuẩn bị sẵn vì không biết khoá K, nhưng quản trị hệ thống có thể thay thế
tức là không có cách nào dò ra mật khẩu của pepper bất cứ khi nào.
người dùng. Khoá K đó được gọi là pepper,
nó cần được bảo vệ cẩn thận và phải được 4. KẾT LUẬN
lưu trữ ở một nơi an toàn. Có thể dùng chung Có rất nhiều giải pháp kỹ thuật khác nhau
một pepper cho tất cả các mật khẩu. để bảo mật mật khẩu, nhưng nhìn chung đều
Một giải pháp khác để sử dụng pepper là dựa trên các nguyên tắc cơ bản sau:
ghép mật khẩu với salt và pepper, rồi mã hoá - Mã hoá mật khẩu bằng hàm một chiều
bằng hàm hash: H(pass||satl||pepper). Khi đó (để không thể dịch ngược lại). Nên dùng hàm
kẻ tấn công không thể chuẩn bị được danh hash chậm để chống tấn công dò mật khẩu.
sách dữ liệu vì không biết pepper. - Sử dụng salt để tăng khối lượng tính toán
3.4. Một số giải pháp kết hợp và tiêu tốn thời gian của kẻ tấn công.
a) Kết hợp hash chậm với hash nhanh - Dùng thêm pepper để tăng khả năng bảo mật.
Việc sử dụng thuật toán hash chậm có thể Ngoài ra còn có thể kết hợp nhiều giải
dẫn tới một nguy cơ khác: Kẻ tấn công có thể pháp khác nhau, tuỳ thuộc vào nhu cầu thực
đăng nhập vào hệ thống với một mật khẩu tế và nền tảng từng hệ thống.
Người dùng cũng có thể tham gia vào quá
cực dài, và do thuật toán hash thi hành rất
trình bảo mật mật khẩu bằng cách đặt mật
chậm nên hệ thống phải tốn rất nhiều thời
khẩu đủ dài, có chứa nhiều loại kí tự khác
gian để kiểm tra đăng nhập. Kết quả là hệ nhau (như chữ hoa, chữ thường, số, kí tự đặc
thống có thể bị quá tải và không còn thời gian biệt), sử dụng các mật khẩu khó đoán, không
để thực hiện các công việc khác. Đây là một dùng những cụm từ có trong từ điển, tên
hình thức tấn công DoS (Denial of Service), người, địa danh, ngày sinh… Nếu tuân thủ
mục đích là làm quá tải server chứ không đầy đủ những nguyên tắc trên thì danh sách
phải là đột nhập hệ thống . dữ liệu mà kẻ tấn công sử dụng sẽ trở nên vô
Để ngăn chặn hình thức tấn công này ta có dụng (vì danh sách đó thường chứa những dữ
thể sử dụng một phương pháp hash nhanh (ví liệu quen thuộc có sẵn).
dụ SHA) tác động lên mật khẩu nhằm thu
ngắn độ dài mật khẩu, sau đó mới áp dụng 5. TÀI LIỆU THAM KHẢO
hash chậm: H(SHA(pass)||salt). Do tốc độ
của SHA nhanh nên server sẽ không bị ảnh [1] Andrew S. Tanenbaum, 2001, Modern
hưởng nhiều, đầu ra của nó là một chuỗi Operating Systems, Prentice Hall.
không quá 512 bít nên cũng không tốn quá [2] William Stallings, 2006, Cryptography and
nhiều thời gian khi tiến hành hash lần hai. Network Security, Prentice Hall.
185
nguon tai.lieu . vn