Xem mẫu

  1. 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
  2. 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
  3. 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