• Thứ Ba, 04/01/2011 09:03 (GMT+7)

    Mật khẩu mã hóa động

    Lã Mạnh Cường
    Mô hình có tính bảo mật cao với khả năng chống lại các kiểu tấn công đồng thời đảm bảo tính dễ sử dụng và tương thích với các hệ thống xác thực truyền thống.

    Mặc dù có nhiều điểm yếu, mô hình mật khẩu văn bản (cặp văn bản tên người dùng/mật khẩu – username/password) vẫn là cách thức xác thực phổ biến nhất trên máy tính hiện nay. Nhằm khắc phục các nhược điểm của mật khẩu văn bản, nhiều mô hình mật khẩu mới đã được đưa ra, tuy nhiên chưa mô hình nào được chấp nhận rộng rãi.

    Trong bài viết này, tôi đề nghị một mô hình mật khẩu mới được gọi là Dynamic Encoded Password (Mật khẩu mã hóa động), viết tắt là DEPAS. DEPAS cho phép người dùng nhập vào mật khẩu dưới dạng mã hóa tuân theo một lược đồ mã hóa động do hệ thống phát sinh ngẫu nhiên và truyền đạt một cách an toàn đến cho người dùng ở mỗi lần đăng nhập. Đây thực chất là phương pháp xác thực “thử thách/hồi đáp” [1], DEPAS có khả năng kháng cự hoàn hảo đối với các kiểu tấn công shoulder-surfing [2], chụp lén (hidden camera) và spyware [3]; DEPAS cũng miễn nhiễm với các kiểu tấn công brute force [4] và dictionary [5]. Do DEPAS dựa trên mật khẩu văn bản, các hệ thống và người dùng hiện tại (dựa trên mật khẩu văn bản) có thể chuyển đổi sang và thích ứng với DEPAS một cách dễ dàng.

    1. Giải pháp DEPAS

    Về cơ bản, DEPAS vẫn dựa trên cặp văn bản tên người dùng/mật khẩu truyền thống. Tuy nhiên trong quá trình nhập mật khẩu lúc đăng nhập, người dùng thay vì nhập mật khẩu thực (nguyên gốc), sẽ nhập một chuỗi ký tự bao gồm các ký tự giả và các ký tự được biến đổi. Ký tự giả người dùng có thể chọn từ bàn phím, còn ký tự biến đổi có được từ việc biến đổi một ký tự của mật khẩu thực qua một hàm ánh xạ. Người dùng sẽ không nhập các ký tự giả và ký tự biến đổi một cách tùy ý, thay vào đó một ký hiệu đồ họa (ký hiệu mã hóa) được hiển thị trước sẽ quy định người dùng phải nhập một ký tự giả hay là một ký tự biến đổi của mật khẩu thực. Mối tương quan giữa một ký hiệu mã hóa và một hàm mã hóa (tức là sử dụng một ký tự giả hay một ký tự biến đổi) là bí mật được chia sẻ giữa người dùng và hệ thống, và được thiết lập thông qua cấu hình người dùng trước đó. Bởi vì các ký hiệu mã hóa được sinh ra một cách ngẫu nhiên, chuỗi mật khẩu nhập vào sẽ khác xa so với mật khẩu thực, và sẽ rất khác nhau ở mỗi lần đăng nhập khác nhau, đây chính là đặc điểm tạo nên tính bảo mật cao của DEPAS.

    1.1. Phép biến đổi

    Cùng với ký tự giả, ký tự biến đổi được sử dụng để “làm rối” mật khẩu nhập vào (nhằm che dấu mật khẩu thực). Với mục đích cho đơn giản và dễ nhớ, tôi đề nghị các phép biến đổi ký tự dựa trên vị trí các phím trên bàn phím chuẩn QWERTY. Bảng 1 dưới đây trình bày một số phép biến đổi đề nghị (lưu ý phím Caps Lock được giả định là TẮT trong tất cả các phép biến đổi dưới đây). Xem bảng 1.

    Bảng 1. Một số phép biến đổi ký tự đề nghị
    TênDiễn giảiVí dụ
    Non-transformedKhông biến đổi, ký tự được giữ nguyênAb~\5
    “SHIFT” reversedKý tự biến đổi là nghịch đảo SHIFT của ký tự gốcab`|%
    Right-characterKý tự biến đổi là liền kề bên phải của ký tự gốcSn!q6
    Left-characterKý tự biến đổi là liền kề bên trái của ký tự gốc"v

    +

    ]4

    Một hệ thống DEPAS có thể định nghĩa nhiều hơn và khác đi các phép biến đổi ký tự so với các phép biến đổi trình bày ở trên. Lưu ý rằng nếu hệ thống càng cung cấp nhiều phép biến đổi ký tự, thì tính bảo mật của mô hình càng tăng, trong khi không làm tăng nhiều mức độ phức tạp trong việc sử dụng của người dùng, do người dùng được phép chọn chỉ sử dụng những phép biến đổi cụ thể và chỉ cần nhớ các phép biến đổi đó mà thôi.

    Có thể nêu một ví dụ minh họa tương đương trong mật khẩu văn bản hiện nay là giả sử ta có hai trường hợp: 1) mật khẩu chỉ bao gồm các ký tự số (từ 0 đến 9) và 2) mật khẩu bao gồm tất cả các ký tự thấy được (94 ký tự). Nếu mật khẩu người dùng có độ dài là n (tức là mật khẩu gồm n ký tự), thì số các khả năng có thể có của mật khẩu (không gian mật khẩu) trong trường hợp 1 là 10^n (10 lũy thừa n); trong khi ở trường hợp 2 là 94^n (94 lũy thừa n), lớn hơn rất nhiều so với trường hợp 1 (có nghĩa là mô hình mật khẩu ở trường hợp 2 có tính bảo mật mạnh hơn nhiều so với trường hợp 1), tuy nhiên xét về tính thuận tiện/dễ sử dụng, chúng ta thấy rằng việc sử dụng mật khẩu ở 1 và 2 cũng chẳng khác nhau nhiều lắm.

    1.2. Tương quan giữa ký hiệu mã hóa và hàm mã hóa

    Hệ thống sẽ bao gồm một số (ví dụ 9 biểu tượng) các biểu tượng đồ họa khác nhau, được gọi là các biểu tượng mã hóa. Người dùng sẽ liên kết mỗi biểu tượng mã hóa với một hàm mã hóa xác định của hệ thống. Lưu ý, DEPAS cho phép nhiều biểu tượng mã hóa liên kết với cùng một hàm mã hóa. Các biểu tượng mã hóa sẽ được dùng như là các ký hiệu để thông báo cho người dùng biết cách mã hóa ký tự của mật khẩu như thế nào (tức là nhập ký tự giả hay biến đổi ký tự của mật khẩu thực) trong quá trình nhập mật khẩu. Bảng 2 dưới đây sẽ trình bày 9 biểu tượng mã hóa mẫu, và ví dụ về tùy chọn liên kết giữa biểu tượng mã hóa và hàm mã hóa của người dùng. Xem bảng 1.

    Một người dùng khác có thể thiết lập một tùy chọn liên kết đơn giản hơn (do đó sẽ dễ nhớ hơn), ví dụ, liên kết tất cả các biểu tượng mã hóa với hai hàm mã hóa “Non-transformed” và “Ký tự giả”. Dễ thấy rằng nếu tất cả biểu tượng mã hóa đều được liên kết với hàm “Non-transformed”, thì quá trình đăng nhập của DEPAS sẽ không khác với quá trình đăng nhập của hệ thống mật khẩu văn bản hiện tại.

    Một vấn đề cần lưu ý, là bởi vì số lượng các biểu tượng mã hóa khá nhỏ (ví dụ 9 biểu tượng), nên nếu hệ thống truyền đạt hàm mã hóa cần thiết cho người dùng bằng cách hiển thị đơn giản biểu tượng mã hóa trên màn hình đăng nhập của người dùng, thì một kẻ tấn công (qua shoulder-surfing, hidden camera hoặc spyware) có thể sẽ nhanh chóng tìm ra hàm mã hóa thật sự liên kết với biểu tượng thông qua một số lần quan sát. Để tăng tính gây rối (do đó nâng cao tính bảo mật) của việc truyền đạt ký hiệu mã hóa, một bảng bao gồm 9 ô trong đó có chứa 9 biểu tượng mã hóa sẽ được sử dụng thay cho các biểu tượng mã hóa riêng rẽ. Người dùng sẽ chọn trước một ô xác định trong bảng gọi là ô cơ sở của mình. Biểu tượng nằm trong ô cơ sở sẽ là biểu tượng mã hóa thật sự (do đó sẽ quy định phép mã hóa ký tự mà người dùng phải sử dụng). Như vậy đối với một người quan sát, không phải một biểu tượng đồ họa riêng rẽ, mà là nguyên một bảng bao gồm cả 9 biểu tượng sắp xếp bên trong mới là một ký hiệu mã hóa. Phương pháp này giúp làm tăng số ký hiệu mã hóa khác nhau lên rất nhiều (từ 9 lên 9!), cũng có nghĩa là kẻ tấn công sẽ khó khăn hơn để tìm ra mối quan hệ giữa một ký hiệu mã hóa và một hàm mã hóa, do đó làm tăng tính bảo mật của hệ thống nhưng lại không tăng độ phức tạp cho việc sử dụng của người dùng. Xem hình 1.

    1.3. Màn hình đăng nhập và quá trình nhập mật khẩu của DEPAS

    Hình 1. Bảng 3x3 với 9 biểu tượng đồ họa được bố trí bên trong và ô giữa (2, 2) được chọn là ô cơ sở của người dùng

    Trên màn hình đăng nhập người dùng (trong chương trình client của DEPAS), bên cạnh cặp tên người dùng/mật khẩu truyền thống sẽ có thêm một bảng gồm 9 ô (3 x 3) trong đó chứa 9 biểu tượng mã hóa được bố trí một cách ngẫu nhiên (hình 2). Trước khi mỗi ký tự được nhập vào cho mật khẩu, chương trình client sẽ lại hoán chuyển ngẫu nhiên vị trí của 9 biểu tượng trong các ô của bảng. Căn cứ vào biểu tượng nằm trong ô cơ sở, người dùng biết hàm mã hóa yêu cầu cho ký tự sắp sửa nhập vào là gì để nhập vào một ký tự tương ứng. Nếu hàm mã hóa yêu cầu là “ký tự giả”, người dùng sẽ nhập vào một ký tự tùy ý. Nếu hàm mã hóa yêu cầu là một hàm biến đổi, người dùng sẽ nhập vào một ký tự biến đổi tương ứng với một ký tự của mật khẩu thực. Quá trình nhập mật khẩu hoàn tất khi tất cả các ký tự của mật khẩu thực đã được nhập (ở dạng biến đổi, dĩ nhiên). Chương trình client sẽ chuyển chuỗi mật khẩu được nhập và thông tin về các ký hiệu mã hóa đã được phát sinh trong suốt quá trình nhập mật khẩu đến server để dùng cho việc xác thực. Dựa trên thông tin người dùng (ô cơ sở và cách thức liên kết mã hóa của người dùng), hệ thống sẽ giải mã mật khẩu đăng nhập về lại mật khẩu thực (loại bỏ các ký tự giả, phục hồi ký tự mật khẩu bị biến đổi về ký tự gốc) trước khi thực hiện việc xác thực một cách thông thường.

    Phần kế tiếp sẽ trình bày một ví dụ minh họa quá trình nhập mật khẩu của DEPAS. Giả sử chuỗi mật khẩu thực của người dùng là ABC123 (một mật khẩu tương đối “yếu”), người dùng đã thiết lập liên kết mã hóa như Bảng 2 và chọn ô (2, 2) là ô cơ sở. Trong quá trình nhập mật khẩu, chương trình client của DEPAS hiển thị các ký hiệu mã hóa như hình 3 dưới đây. Chúng ta thấy rằng người dùng đã nhập chuỗi mật khẩu là T^azNbLV`q(2!$#, chuỗi này khác xa so với mật khẩu thực ABC123 và tỏ ra là một mật khẩu rất “mạnh”!

    2. Phân tích khả năng bảo mật của DEPAS


    Hình 2. Màn hình đăng nhập người dùng của DEPAS

    Chống kiểu tấn công shoulder-surfing: Rõ ràng cho dù kẻ tấn công có ghi nhận được cả chuỗi mật khẩu người dùng nhập vào và các ký hiệu mã hóa phát sinh trong quá trình đăng nhập của người dùng, hắn cũng không thể đoán ra được mật khẩu thực cũng như ý nghĩa mã hóa thật sự của các ký hiệu mã hóa, hai thành phần cần thiết để truy cập hệ thống. Do đó DEPAS có khả năng chống lại hoàn hảo các kiểu tấn công Shoulder-surfing, hidden camera và spyware.

    Chống tấn công tìm kiếm brute force: Theo cách thức hoạt động của DEPAS, kẻ tấn công chỉ có thể thực hiện brute-force đối với mật khẩu nhập vào (bởi vì nếu chỉ có mật khẩu thực không thôi thì không đăng nhập được). DEPAS cũng có không gian mật khẩu (password space) giống như mật khẩu văn bản là 94^n (với n là độ dài mật khẩu đăng nhập). Tuy nhiên mật khẩu đăng nhập hầu như luôn dài hơn nhiều so với mật khẩu thực (do có thêm các ký tự giả), thêm nữa mật khẩu đăng nhập luôn thay đổi và khác nhau ở mỗi lần đăng nhập, nên kiểu tấn công brute-force hầu như không khả thi đối với DEPAS.

    Chống tấn công dictionary: Mật khẩu nhập vào luôn thay đổi ngẫu nhiên nên kiểu tấn công dictionary là vô dụng đối với DEPAS Tính tương thích và tính dễ sử dụng: Do DEPAS vẫn xác thực người dùng dựa trên mật khẩu văn bản nên các hệ thống xác thực hiện tại có thể dễ dàng nâng cấp lên DEPAS. DEPAS cho phép người dùng điều khiển quá trình thích ứng của mình với DEPAS để có được một cân bằng tối ưu giữa tính bảo mật và tính dễ sử dụng thông qua cơ chế cấu hình người dùng (liên kết mã hóa) linh hoạt.

    Chú thích và tài liệu tham khảo

    [1] Challenge/response authentication: Một họ các giao thức dùng cho việc xác thực trong đó một bên sẽ đưa ra một câu hỏi (“thách thức”) và bên kia phải cung cấp một câu trả lời (“hồi đáp”) hợp lệ. Xem thêm tại http://en.wikipedia.org/wiki/Challenge/response
     

    [2] Shoulder-surfing: Một kỹ thuật quan sát trực tiếp, ví dụ như nhìn qua vai một người nào đó, để thu thập thông tin. Xem thêm tại http://en.wikipedia.org/wiki/Shoulder_surfing_(computer_security)
     

    [3] Spyware: Phần mềm gián điệp (một dạng của phần mềm ác ý) được cài đặt trên máy tính nhằm thu thập các thông tin của người dùng một cách bí mật, ví dụ các chương trình Keyloggers là những spyware điển hình. Xem thêm tại http://en.wikipedia.org/wiki/Spyware
     

    [4] Tấn công Brute force: Một cách thức được sử dụng để tấn công (phá) mã hóa (che dấu) của dữ liệu. Nó bao gồm việc duyệt qua “không gian tìm kiếm” với tất cả các khóa có thể cho đến khi khóa đúng được tìm ra. Xem thêm tại http://en.wikipedia.org/wiki/Brute_force_attack
     

    [5] Tấn công Dictionary: Một cách thức tấn công sử dụng kỹ thuật là thử với tất cả các từ trong một danh sách toàn diện được gọi là một từ điển (dictionary). Xem thêm tại http://en.wikipedia.org/wiki/Dictionary_attack
     

    [6] A. Adams and M. A. Sasse. Users are not the enemy: why users compromise computer security mechanisms and how to take remedial measures. Communications of the ACM, 42:41–46, 1999.
     

    [7] William Cheswick. Johnny Can Obfuscate; Beyond Mother’s Maiden Name. HotSec ’06: 1st USENIX Workshop on Hot Topics in Security
     

    [8] Tan, D. S., P. Keyani, and M. Czerwinski. Spy-Resistant Keyboard: Towards More Secure Password Entry on Publicly Observable Touch Screens. In Proceedings of OZCHI - Computer-Human Interaction Special Interest Group (CHISIG) of Australia. Canberra, Australia: ACM Press, 2005.
     

    [9] Huanyu Zhao and Xiaolin Li, 2007, ‘S3PAS: A Scalable Shoulder-Surfing Resistant Textual-Graphical Password Authentication Scheme’, 21st International Conference on Advanced Information Networking and Applications Workshops (AINAW)
     

    [10] S.Man, D. Hong, and M. Mathews. A shouldersurfing resistant graphical password scheme. In Proceedings of International conference on security and management, Las Vegas, NV, 2003.
     

    [11] Manu Kumar, Tal Garfinkel, Dan Boneh, Terry Winograd, 2007, ‘Reducing shoulder-surfing by using gaze-based password entry’,Proceedings of the 3rd symposium on Usable privacy and security, ACM.

    3. Kết luận

    DEPAS có tính bảo mật cao, có khả năng chống lại các kiểu tấn công phổ biến hiện nay, đồng thời cũng đảm bảo tính dễ sử dụng và tương thích với các hệ thống xác thực truyền thống. Các bất tiện nhỏ của DEPAS là người dùng có thể phải nhập nhiều ký tự hơn cho mật khẩu, và cần phải nhớ thêm một số biểu tượng đồ họa.

    Các đề nghị nghiên cứu tiếp theo bao gồm việc tìm hiểu/thu thập các kết quả của người dùng thực từ việc sử dụng thật sự hệ thống DEPAS; Nghiên cứu cách thức người dùng nên trộn các ký tự giả trong chuỗi mật khẩu đăng nhập như thế nào để có hiệu quả làm rối cao nhất; Nghiên cứu về các hàm biến đổi ký tự. Đây là những việc mà tôi chưa hoàn thành do giới hạn về nguồn lực và thời gian. Do đó tôi hoan nghênh sự hợp tác của các bạn quan tâm đến chủ đề này để phát triển DEPAS thành một ứng dụng/giải pháp khả thi thật sự.

    Hình 3. Các ký hiệu mã hóa và các ký tự mật khẩu được nhập
    ID: A1009_94