Phương pháp phân tích cấu trúc mật khẩu

Một phần của tài liệu Thám mật khẩu các file word (Trang 39)

3.2.1. Đặt vấn đề

Các kết quả nghiêu cứu về tâm lý học và khả năng duy trì sự nhớ của người dùng cho thấy, người dùng có một thói quen sử dụng các mật khẩu để đặt cho các tệp tin chứa một phần hoặc toàn bộ thông tin nào đó liên quan trực tiếp hay gián tiếp quan trọng hoặc dễ nhớ đối với người dùng. Điều này dẫn đến các mật khẩu có tần suất sử dụng là khác nhau, chẳng hạn như mật khẩu “password12” có khả năng cao sẽ là mật khẩu đúng của một tệp tin nào đó thay vì mật khẩu “P@$$W0rd!12”. Do vậy một không gian mật khẩu được sinh theo thứ tự giảm dần khả năng sử dụng mật khẩu được xem là tốt (chất lượng) hơn các chương trình sinh không theo một quy luật nào cả, hoặc xem xác suất là bằng nhau như trong phương pháp sinh không gian mật khẩu vét cạn.

Thứ tự sinh mật khẩu trong không gian mật khẩu có liên quan trực tiếp đến thứ tự duyệt mật khẩu – sinh trước sẽ được kiểm tra trước. Khi kiểm tra một mật khẩu thử, nếu phát hiện nó là mật khẩu đúng, thì ngay lập tức kết thúc chương trình mà không cần sinh các mật khẩu kế tiếp, nhờ vậy giúp rút ngắn thời gian ở mức có thể.

Có nhiều biện pháp áp dụng để giảm không gian mật khẩu hoặc thay đổi thứ tự sinh, rất có ý nghĩa đối với lĩnh vực an toàn thông tin, như thu thập một vài thông

40

tin nào đó về mật khẩu. Chẳng hạn như độ dài mật khẩu không vượt quá 8, mật khẩu chứa không quá 10% kí tự chữ hoa, 20% kí tự chữ số và đặc biệt trong tổng số các kí tự của mật khẩu… Ta gọi đó tất cả các tiêu chuẩn này là luật. Với phương pháp này, không gian mật khẩu được sinh cho đến khi tìm ra được mật khẩu đúng nhỏ hơn nhiều so với phương pháp sinh mật khẩu vét cạn, vì thế khả năng tìm ra được một mật khẩu đúng trong thời gian cho phép là rất cao.

3.2.2. Tìm hiểu và nghiên cứu thói quen của người dùng

Việc lựa chọn mật khẩu có ảnh huởng lớn đến tính bảo mật của tài khoản nguời dùng. Chuỗi mật khẩu dễ đoán, hoặc dễ được sinh ra bằng cách sử dụng các tập luật đơn giản có thể làm cho tài khoản bị đe dọa trước các phương pháp tấn công bằng cách thử mật khẩu. Một ví dụ điển hình là hững tấn công gần đây vào các hệ thống xác thực của Sony cho thấy những điểm yếu trong thói quen lựa chọn mật khẩu của người dùng: (1) quá ngắn, chỉ từ 6-10 ký tự, (2) quá đơn giản (99% chỉ gồm chữ cái alphabet và số) và (3) quá dễ đoán (sử dụng những chuỗi có trong từ điển). Qua ví dụ trên, chúng ta có thể nhận thấy người dùng đa phần đặt mật khẩu theo một số thói quen nhất định chứ không hoàn toàn là một chuỗi ngẫu nhiên.

Vấn đề đặt ra trong bài toán đang xét là tìm hiểu thói quen đặt mật khẩu của người dùng thông qua việc khảo sát những mẫu mật khẩu hay gặp nhất trong một tập những mật khẩu có sẵn. Qua đó, ta có thể sử dụng những mẫu này để sinh ra mật khẩu với xác suất trùng khớp cao.

3.2.3. Nguồn dữ liệu và phương pháp phân tích

a. Tập các đối tượng thử nghiệm: bao gồm một số lượng lớn các mật khẩu thu được qua quá trình công tác. Các mật khẩu này thuộc nhiều người khác nhau và được thu kèm với thông tin của họ.

b. Tập dữ liệu người dùng: quá trình phân tích sử dụng những bộ dữ liệu sau về người dùng để tiến hành phân tích sự liên quan giữa thông tin cá nhân của người dùng và thói quen đặt mật khẩu:

- Tên người dùng

- Ngày tháng năm sinh

- Số điện thoại

41

3.2.4. Phân tích

Hình 3.1. Phân bố xác suất thói quen đặt mật khẩu của người dùng

a. Họ tên người dùng

Họ tên là một trong những thông tin cá nhân về người dùng được sử dụng nhiều nhất. Ta tiến hành khảo sát việc chuỗi họ tên người dùng xuất hiện trong mật khẩu.

Theo phân tích từ dữ liệu trên, ta thấy rằng trên 14% người dùng đặt mật khẩu trong đó có xuất hiện họ hoặc tên hoặc cả họ và tên đầy đủ của mình. Phân tích cũng cho thâý rằng người dùng thường đặt thêm một số ký tự khác bên cạnh họ và tên để tạo thành chuỗi mật khẩu, những điều chỉnh đó theo thứ tự tần suất xuất hiện là: (1) một chuỗi số theo sau, vd: huy123; (2) một chuỗi kí tự đặc biệt, vd: duong_ ;

b. Ngày tháng năm sinh

Ngày tháng năm sinh là một thuộc tính cá nhân thường xuyên được yêu cầu bởi các hệ thống quản lý tài khoản, cũng là một trong những thông tin cá nhân được sử dụng nhiều nhất. Theo phân tích thì có 8% số mật khẩu có chứa chuỗi ngày tháng năm sinh.

c. Số điện thoại

Số điện thoại là một thuộc tính cá nhân xuất hiện nhiều trong những hệ thống quản lý tài khoản. Chúng ta khảo sát sự xuất hiện của chuỗi số điện thoại trong chuỗi mật khẩu của người dùng. Tần suất xuất hiện là 13%.

Họ tên 14% Ngày tháng năm sinh 8% Số điện thoại 13% Chuỗi dễ nhớ 14% Ký tự thay thế 3% Khác 48%

42

d. Trường hợp đặc biệt: Mật khẩu là chuỗi dễ nhớ

Đây là trường hợp đặc biệt khi mật khẩu có dạng một chuỗi số liên tiếp, vd: 123456 hoặc 123456789. Dạng mật khẩu này không chứa thông tin của người dùng, nhưng do có tần suất xuất hiện đặc biệt cao (14%), nên ta tiến hành kiểm tra thử cả với dạng mật khẩu này.

e. Trường hợp đặc biệt: Mật khẩu chứa các ký tự thay thế

Trường hợp mật khẩu đặc biệt có mật khẩu chứa các ký tự thay thế, vd: p@ssw0rd (@ thay cho a, 0 thay cho o) … Dạng mật khẩu này có tần suất xuất hiện không lớn (3%), tuy nhiên do việc kiểm tra là không tốn chi phí lớn nên ta kiểm tra cả dạng này.

f. Các trường hợp khác:

Đây là các trường hợp mà ta không xác định được là mật khẩu có phải được tạo từ thông tin người dùng hay không hoặc mật khẩu có được đặt theo một quy luật nào hay không, vd: d2p4a70 hoặc 10c190hm. Những trường hợp này tạm thời bỏ qua.

 Từ những phân tích trên, ta dễ thấy: do người dùng rất khó có thể nhớ được những chuỗi kí tự thực sự ngẫu nhiên, nên họ thường có xu hướng đặt mật khẩu theo những dạng mẫu nhất định và chứa thông tin cá nhân. Do đó, ta có thể dựa trên thói quen này của người dùng để sinh ra các mật khẩu thử trong đó có thông tin cá nhân của người dùng theo những mẫu nhất định để tăng khả năng tìm ra mật khẩu đúng.

3.2.5. Không gian mật khẩu

Không gian mật khẩu được hiểu là một danh sách mật khẩu có thứ tự phù hợp với thói quen đặt mật khẩu của đối tượng quan tâm. Một cách thức đơn giản để xây dựng không gian mật khẩu là liệt kê các mật khẩu thường sử dụng. Tuy nhiên cách này bị hạn chế ở một số điểm: (1) số lượng mật khẩu hạn chế trong tập các mật khẩu thu thập được; (2) mật khẩu trong không gian thiếu đi sự cá nhân hóa cho các đối tượng cụ thể; (3) thứ tự các mật khẩu trong không gian đôi khi không phản ánh chính xác các thói quen của đối tượng.

Cách tiếp cận phù hợp hơn trong việc xây dựng không gian mật khẩu là đặt ra một cấu trúc tổng quát cho các mật khẩu nằm trong không giam mật khẩu, sau đó việc sinh mật khẩu sẽ là việc kết hợp giữa cấu trúc này với các thông tin cá nhân của đối tượng.

Các nội dung tiếp theo sẽ trình bày một phương pháp đề xuất để biểu diễn thông tin cá nhân của đối tượng, cấu trúc mật khẩu, và giải thuật để sinh mật khẩu trong không gian.

43

3.2.6. Từ điển

Đa số mật khẩu có cấu trúc thường chứa trong đó những xâu ký tự đại diện cho những thông tin cá nhân đặc trưng cho đối tượng quan tâm như: tên, ngày sinh, số điện thoại,… Các thông tin này có thể được thu thập qua những kênh thông tin đặc thù. Trong trường hợp không thể thu thập được chính xác các thông tin này, có thể giả định chúng nằm trong một tập hợp các xâu ký tự được xác định trước, được gọi là từ điển.

Danh sách mật khẩu có thể được sinh từ một cấu trúc mật khẩu có chứa thông tin quan tâm, kèm theo từ điển về thông tin đó.

Ví dụ: cho một từ điển về tên đối tượng NAME = {tung, minh, trung},

Các mật khẩu có chứa tên dưới dạng “u$NAMEv” sẽ bao gồm {utungv,

uminhv, utrungv}.

Thứ tự các xâu ký tự trong từ điển có thể đại diện cho thứ tự ưu tiên của các mật khẩu được sinh ra tương ứng.

Khi xây dựng một công cụ sinh mật khẩu, chúng ta có thể định nghĩa trước một số từ điển có sẵn, áp dụng cho mọi đối tượng như:

- Các mật khẩu thường gặp

- Các tên riêng

- Danh bạ điện thoại

- Ngày tháng năm sinh

- …

Các từ điển này có thể được rút gọn bằng cách định nghĩa đè lên bằng một từ điển khác nhỏ hơn, đại diên cho các thông tin gắn liền với đối tượng đang xem xét. Ví dụ: từ điển tên riêng cho một đối tượng có thể là danh sách tên của những người liên quan tới đối tượng (vợ, chồng, bố, mẹ, con cái), thay vì một danh sách tất cả các tên riêng.

3.2.7. Cấu trúc mật khẩu

Cấu trúc mật khẩu được định nghĩa bằng một danh sách có thứ tự các mẫu mật khẩu: {P1, P2,… ,Pn}, trong đó mỗi mẫu Pi là một xâu ký tự, trong đó mỗi ký tự có thể thuộc các nhóm sau:

- Ký tự cuối: là ký tự thuộc bảng ký tự của mật khẩu (ví dụ ký tự ASCII)

- Từ điển: siêu ký tự đại diện cho một từ điển sẵn có

- Mẫu mật khẩu: siêu ký tự đại diện cho một mẫu mật khẩu khác được định nghĩa trước

Ví dụ với một mẫu: P = “abc$NAME%DATE” trong đó:

44

- $NAME: đại diện cho một từ điển tên, ví dụ NAME = {tung, minh, trung}

- %DATE: đại diện cho một mẫu ngày tháng năm được định nghĩa trước có dạng DATE = “$DAY$MONTH$YEAR” trong đó:

o $DAY: đại diện cho một từ điển ngày DAY = {21,25}

o $MONTH: đại diện cho một từ điển tháng MONTH = {03,08} o $YEAR: đại diện cho một từ điển năm YEAR = {13,14}

Với những thông tin như vậy, ta có thể hình dung mẫu P sẽ đại diện cho các chuỗi mật khẩu có thứ tự như sau:

{abctung210313, abctung210314, abctung210813, abctung210814, abctung250313, abctung250314, abctung250813, abctung250814, abcminh210313, abcminh210314, abcminh210813, abcminh210814, abcminh250313, abcminh250314, abcminh250813, abcminh250814, abctrung210313, abctrung210314, abctrung210813, abctrung210814, abctrung250313, abctrung250314, abctrung250813, abctrung250814}.

Trong thực tế để biểu diễn cấu trúc mật khẩu cô đọng và biểu đạt hơn, có thể xem xét các cấu trúc loại trừ dạng P = S1 | S2 hoặc cấu trúc lặp P = S* giống như trong các biểu thức chính quy (regular expression). Tuy nhiên trong khuôn khổ của luận văn và xem xét tính chất của bài toán biểu diễn mật khẩu chúng ta tạm thời chỉ quan tâm tới dạng cấu trúc mật khẩu nêu trên. Hơn nữa chúng ta cũng đặt một ràng buộc cho cấu trúc mật khẩu này là nó không chứa các cấu trúc đệ quy dạng P = S1PS2 (hoặc P1 = S1P2S2; P2 = S3P1S4).

Chuẩn hóa mẫu:

Việc cho phép các mẫu mập khẩu chứa những mẫu khác được định nghĩa trước giúp người sử dụng dễ dàng biểu diễn cấu trúc mật khẩu hơn với một tập mẫu định nghĩa trước. Tuy nhiên việc sử dụng cấu trúc lồng như vậy cũng khiến cho giải thuật sinh mật khẩu trở nên phức tạp. Chính vì vậy chúng ta xem xét một dạng chuẩn của mẫu mật khẩu là dạng chỉ chứa các siêu ký tự đại diện cho từ điển. Các nhóm ký tự khác sẽ được chuyển về dạng chuẩn (ký tự từ điển) này như sau:

- Chuỗi liên tục tối đa các ký tự cuối w sẽ chuyển về thành một siêu ký tự từ điển mới D, với từ điển D = {w} được bổ sung them vào danh sách từ điển.

- Siêu ký tự đại diện mẫu P = S, sẽ được chuyển về thành xâu S’ là dạng chuẩn của S.

3.2.8. Sinh không gian mật khẩu từ cấu trúc mật khẩu và từ điển

Trong phần này chúng tôi đề xuất giải thuật sinh không gian mật khẩu từ cấu trúc mật khẩu và tập từ điển đã được định nghĩa trước genpws(D,PP,P)

45 Đầu vào cho giải thuật bao gồm:

- Tập từ điển D = {D1,…,Dn}, với Di là một từ điển có dạng DNi = {wi

1,…,wi

ni) trong đó DNi là siêu ký hiệu đại diện cho từ điển Di và ni là số lượng từ trong từ điển Di.

- Tập mẫu định nghĩa trước PP = {PP1,…,PPm} với mẫu PPi có dạng PPNi = Si, trong đó PPNi là siêu ký tự đại diện của mẫu, Si là xâu ký tự biểu diễn mẫu. Để đơn giản cho việc nhập dữ liệu và chuyển đổi cấu trúc, chúng tôi đề xuất biển diễn một xâu mẫu theo định dạng như sau:

S = C1C2…Cn Trong đó: 𝐶𝑖 = { #{𝑤}𝑣ớ𝑖 𝑤 𝑙à 𝑐ℎ𝑢ỗ𝑖 𝑘ý 𝑡ự 𝑐𝑢ố𝑖 ${𝑁}𝑣ớ𝑖 𝑁 𝑙à 𝑡ê𝑛 𝑡ừ đ𝑖ể𝑛 %{𝑁}𝑣ớ𝑖 𝑁 𝑙à 𝑡ê𝑛 𝑚ẫ𝑢

- Cấu trúc mật khẩu là một danh sách có thứ tự P = {P1,…,Pk} các xâu mẫu với định dạng như mô tả bên trên.

Đầu ra cho giải thuật: là một danh sách có thứ tự mật khẩu phù hợp với các cấu trúc được định nghĩa trên đầu vào.

Thông thường danh sách mật khẩu này rất lớn, đôi khi không thể lưu trữ trong bộ nhớ của một máy tính. Hơn nữa, quá trình kiểm tra mật khẩu thường được thực hiện trên các hệ thống tính toán hiệu năng cao, phân tán. Do vậy, để thuận tiện cho việc phân chia công việc kiểm tra mật khẩu này, chúng tôi đề xuất một hàm sinh mật khẩu khác có dạng genpws_partial(D,PP,P, from, count) trong đó D, PP, P là tập từ điển, tập mẫu định nghĩa trước và cấu trúc mật khẩu như giải thuật genpws. fromcount là thứ tự bắt đầu của mật khẩu cần sinh và số lượng mật khẩu cần sinh.

Giải thuật được chia làm các pha sau:

Pha 1: Đọc dữ liệu đầu vào và phân tích chuyển đổi thành cấu trúc bên trong (parsing)

Pha 2: Chuẩn hóa cấu trúc mật khẩu Pha 3: Sinh mật khẩu theo thứ tự

1. Đọc dữ liệu đầu vào và phân tích chuyển đổi thành cấu trúc bên trong. Nhiệm vụ chính của pha này là chuyển đổi các dữ liệu đầu vào, thường biểu diễn dưới dạng xâu ký tự và tệp dữ liệu thành các cấu trúc bên trong, trong đó bao gồm:

- Tập từ điển D: là danh sách các từ điển {D1,…, Dn} với n là số lượng từ điển. Mỗi từ điển Di chứa một danh sách từ {wi

1,wi

ni} với ni là số lượng từ trong từ điển Di.

46

- Tập mẫu định nghĩa trước PP: với PPN là danh sách tên mẫu {PPN1,PPNm}, m là số lượng mẫu được định nghĩa trước và S là danh sách mẫu {S1,…Sm}. Mỗi mẫu S là một danh sách ký hiệu có định dạng:

o type: nhận một trong các giá trị {final, dic, pat} tương ứng với xâu ký tự cuối, ký hiệu đại diện từ điển; ký hiệu đại diện mẫu định nghĩa trước. o value: xâu ký tự cuối trong trường hợp type = final; tên/thứ tự từ điển

trong trường hợp type = dic; tên/thứ tự mẫu định nghĩa trước trong trường hợp type = pat.

- Cấu trúc mật khẩu P: {P1,…,Pk} trong đó Pi là mẫu mật khẩu theo khuôn dạng mô tả trên.

2. Chuẩn hóa cấu trúc mật khẩu

Giải thuật chuẩn hóa cấu trúc mật khẩu stdpat(P) được định nghĩa một cách đệ quy như sau:

- stdpat() =  :

- stdpat(#{w}S) = ${DN}stdpat(S) với DN là ký hiệu đại diện cho một từ điển mới có môt từ DN = {w} được bổ sung vào tập từ điển D

- stdpat(${N}S) = ${N}stdpat(S)

- stdpat(%{N}S)=stdpat(PP)stdpat(S) với PP là chuỗi biểu diễn mẫu định nghĩa trước tương ứng với tên N.

Sau quá trình chuẩn hóa, cấu trúc mật khẩu sẽ có dạng một danh sách mẫu chuẩn hóa {P’1,P’k} trong đó P’i là mẫu chuẩn hóa có bao gồm một danh

Một phần của tài liệu Thám mật khẩu các file word (Trang 39)

Tải bản đầy đủ (PDF)

(70 trang)