Độ mạnh của mật khẩu

**Độ mạnh của mật khẩu** là một thuật ngữ để chỉ mức độ khó khăn trong việc khám phá ra một mật khẩu nào đó.

Chất lượng cần thiết của mật khẩu phụ thuộc vào hệ thống mật khẩu tốt đến mức độ nào để hạn chế được số lần đoán mật khẩu của thành viên, dù từ một người biết rõ thành viên đó, hay từ một máy tính đang dò thử hàng triệu khả năng.

Trong ngữ cảnh mật mã hóa, các thuật ngữ có thể có độ chính xác đáng kể. Ví dụ như, mật khẩu nói chung không phù hợp khi dùng làm khóa mã hóa. Tuy nhiên, chú ý rằng thậm chí một mật khẩu 'mạnh' vẫn có thể bị đánh cắp, lừa gạt hoặc ép buộc để người dùng phải lộ ra, hoặc bị thu thập từ một chương trình theo dõi bàn phím, bị chắn khi đang truyền đi, hoặc bị một người khác vô tình tìm ra.

## Mật khẩu yếu
Một mật khẩu yếu là một mật khẩu ngắn, phổ biến, một mặc định của hệ thống cung cấp, hoặc một thứ gì đó có thể bị đoán ra nhanh chóng bằng cách thực thi tấn công vét cạn sử dụng một tập con của tất cả các mật khẩu khả dĩ, như các từ trong từ điển, tên riêng, những từ dựa trên tên người dùng hoặc những biến thể thông thường của các từ đó. Mật khẩu có thể bị dễ dàng đoán được dựa trên những hiểu biết về người dùng đó, như ngày tháng năm sinh và tên thú nuôi, cũng bị xem là yếu.

Các ví dụ về mật khẩu yếu:
**admin*—quá dễ đoán
**1234*—quá dễ đoán
**abc123*—quá dễ đoán
**minh*—tên riêng thông thường
**password*—đoán ra dễ dàng, rất thường dùng
**p@$$\/\/0rd* -- leet và mật mã bằng ký tự đơn giản đều đã được lập trình trước trong các công cụ bẻ khóa
**rover*—tên thú nuôi thông thường, cũng là một từ trong từ điển
**12/3/75*—ngày tháng, có thể quan trọng đối với cá nhân đó
**December12*—Sử dụng ngày bắt buộc phải đổi mật khẩu là rất phổ biến
**nbusr123*—có thể là một tên người dùng, và nếu vậy, cực kỳ dễ đoán
**[[asdf]]*—chuỗi ký tự kế nhau trong nhiều loại bàn phím
**[[qwerty]]*—một chuỗi ký tự kế nhau trong nhiều loại bàn phím
**aaaa*—ký tự lặp đi lặp lại, dễ đoán ra

Danh sách ngắn ngủi này chỉ là những ví dụ đơn giản nhất; còn có nhiều ví dụ khác được xem là yếu vì những lý do y hệt hoặc tương tự như trên. Ngoài ra, bất kỳ mật khẩu nào đã được đưa ra làm ví dụ đều bị xem là yếu, đơn giản là vì ai cũng đã biết.

3,8 % số lượng mật khẩu là những từ đơn tìm thấy trong từ điển, và 12 % khác là một từ cộng thêm một con số ở cuối; hai phần ba trong số đó là số 1.

Nhiều người dùng không đổi mật khẩu mặc định đi kèm với nhiều hệ thống bảo mật máy tính. Danh sách các mật khẩu mặc định đầy rẫy trên Internet.

Một mật khẩu có thể trở nên dễ đoán nếu người dùng chọn một mẩu thông tin cá nhân dễ khám phá (như mã số sinh viên, tên một người bạn, sinh nhật, số điện thoại, hoặc biển số xe). Dữ liệu cá nhân về một người nào đó hiện phổ biến ở nhiều nguồn, nhiều khi còn đưa lên mạng, và thường có thể lấy được bởi người khác khi sử dụng các kỹ thuật lừa bịp, như đưa ra một bản lấy ý kiến hoặc một bản kiểm tra việc quản lý an ninh.

Nguy cơ cao nhất của việc sử dụng mật khẩu ngắn hoặc dễ đoán đó là tiếp cận hoặc tấn công từ những bạn bè của người dùng. Trong khi tên không phổ biến lắm của một con vật nuôi hoặc một nhân vật ưa thích trong trò chơi điện tử rất khó đoán đối với một người hoàn toàn xa lạ và khó tìm thấy trong từ điển, thì một người bạn khi có điều gì bất bình rõ ràng sẽ có ít lựa chọn để đoán hơn hẳn và cũng chẳng cần đến sự trợ giúp của máy tính để đoán được.

Một ví dụ của một mật khẩu nghèo nàn chống lại những kẻ tấn công "biết mặt" này có thể là "19YaleLaw78", lấy từ thông tin người này tốt nghiệp trường Luật Yale vào năm 1978. Trong khi với độ dài đến mười một ký tự và khả năng chống lại tấn công vét cạn rất tốt, năm tốt nghiệp từ một trường danh giá là một điều mà kẻ tấn công chắc chắn sẽ biết nếu biết rõ nạn nhân. Do đó, trong khi có thể khiến cho một máy tính mạnh chạy mất vài tháng để đoán được ra mật khẩu này, một đồng nghiệp đang ghen tị có thể đoán ra điều này chỉ cần vài phút với một cây viết và tờ giấy để dò các biến thể.

Một mật khẩu thường dễ bị tổn thương nếu nó bị tìm thấy trong danh sách. Từ điển ở dạng máy đọc được có rất nhiều ở nhiều ngôn ngữ khác nhau, và tồn tại những danh sách các mật khẩu thường được chọn. Trong các thử nghiệm đối với hệ thống đang hoạt động, tấn công từ điển dễ thành công tới mức phần mềm hiện thực kiểu tấn công này hiện nay phổ biến với nhiều hệ thống.

Một mật khẩu quá ngắn, có lẽ được chọn để dễ gõ, dễ bị tổn thương nếu kẻ tấn công có thể lấy được bảng mật mã của mật khẩu. Các máy tính hiện nay đủ nhanh để thử tất cả các mật khẩu toàn chữ cái ngắn hơn 7 ký tự.

Những nhân viên, lập trình viên và người quản trị hệ thống khi nghỉ việc thường biết khá rõ những mật khẩu mở hiếm khi bị đổi. Các mật khẩu dễ đoán như vậy có thể dẫn đến tổn hại nặng nề nếu bị nghịch, gian lận hoặc trả thù.

## Mật khẩu mạnh
Một mật khẩu mạnh là một mật khẩu đủ dài, mang tính ngẫu nhiên, hoặc nếu không chỉ có người chọn nó mới nghĩ ra được, sao cho việc đoán được ra nó sẽ phải cần nhiều thời gian hơn là thời gian mà một kẻ bẻ khóa mật khẩu sẵn sàng bỏ ra để đoán nó. Thời gian để được cho là quá dài sẽ thay đổi tùy thuộc vào kẻ tấn công, tài nguyên của kẻ tấn công, sự dễ dàng tiếp cận với những mật khẩu có thể thử, và giá trị của mật khẩu đó đối với kẻ tấn công. Một mật khẩu của sinh viên chẳng đáng để máy tính bỏ ra vài giây để đoán, trong khi mật khẩu quản lý việc truy xuất đến hệ thống chuyển tiền điện tử của một ngân hàng lớn có thể đáng để bỏ ra nhiều tuần hoặc thậm chí nhiều tháng để đoán.

Sẽ là một điều sai lầm khi dùng những mật khẩu liệt kê ở dưới đây: chúng đã được ghi ra công khai, do đó chúng yếu. Tất cả những bình luận về sức mạnh mật khẩu đều giả thiết rằng chúng chưa được biết đến và chưa được ghi ra. Trong khi các mật khẩu tương tự như thế, hoặc dựa trên cùng nguyên lý như thế, sẽ đủ mạnh, với giả sử là bạn không đọc chúng.

Các ví dụ về mật khẩu mạnh là:
**t3wahSetyeT4* -- phân biệt chữ thường chữ hoa và chữ số xen kẽ
**4pRte!ai@3*—phân biệt chữ thường chữ hoa, chữ số xen kẽ, dấu câu và một ký tự "đặc biệt"
**MoOoOfIn245679*—phân biệt chữ thường chữ hoa, chữ số xen kẽ
**Convert_100£ to Euros!*—cụm từ có thể dài, dễ nhớ và có chứa ký hiệu mở rộng để tăng sức mạnh, nhưng một số phương pháp băm mật khẩu yếu hơn có thể phụ thuộc vào phân tích tần số
**1382465304H*—một chuỗi số kết thúc bằng một ký tự
**Tp4tci2s4U2g!*—Sự pha trộn của các ký tự có kiểu chữ khác nhau, số, và dấu câu. Nó dễ nhớ vì là các chữ bắt đầu của từ "The password for this computer is too strong for you to guess!"
* *5:*35pm&8/30*—Thời gian và ngày tháng điện thoại với hai ký tự "đặc biệt" ngẫu nhiên
* *EPOcsoRYG5%4pp@.djr*—sử dụng nhiều yếu tố bao gồm viết hoa và ký tự đặc biệt
* *BBslwys90!*—gồm chữ hoa, số, và dấu câu. Cũng dễ nhớ, vì nó đại diện cho "Big Brother is always right (90°)!"

Một cách kỹ thuật thì những ví dụ trên đều có tính hỗn loạn thông tin (về bit) là lớn hơn 3 trong khi các ví dụ yếu có độ hỗn loạn thông tin dưới 3 http://www.certainkey.com/demos/password/ . Nhưng là một vấn đề kỹ thuật, độ mạnh mật khẩu có thể thỏa mãn một mục đích sức mạnh của nó nếu thời gian cần thiết để phá vỡ mật khẩu vượt quá thời gian có thể bỏ ra để phá vỡ nó và/hoặc nếu thông tin được bảo vệ sẽ cũ trước khi những nỗ lực bẻ khóa hoàn thành.

Mật khẩu càng dài và lựa chọn ký hiệu càng rộng, thì nỗ lực để bẻ một mật khẩu (hoặc so trùng với bảng cầu vồng) càng phải mạnh mẽ mới có thể đánh bại mật khẩu, giả thiết rằng bảng băm mật khẩu và các phương pháp bảo vệ phù hợp nằm đúng chỗ của nó. Hơn nữa, không sử dụng từ đơn sẽ khiến cho tấn công vét cạn vô cùng kém hiệu quả.

Chú ý rằng một số hệ thống không cho phép ký hiệu hoặc những ký tự gọi là "ký tự đặc biệt" như *#*, *@* và *}* trong mật khẩu, và hơn nữa chúng có thể khó tìm trong những kiểu bàn phím khác nhau. Trong trường hợp đó, chỉ cần thêm một số chữ hoặc số cũng có thể đạt được độ bảo mật tương đương: vừa chữ vừa số với chỉ một kiểu viết in hoặc viết thường cho ra 36 chữ khả dĩ, nhưng viết cả hoa cả thường cùng với số có thể cho ra 62 chữ khả dĩ.

Ngoài ra, những ví dụ ở trên, đã được in ra trong bài viết này như những ví dụ về mật khẩu, thì *không còn là lựa chọn tốt*; những ví dụ từ những cuộc bàn luận công cộng về mật khẩu cũng là những ứng viên rõ ràng để bị đưa vào tự điển dùng cho tấn công từ điển. Tuy nhiên, nhận thức được rằng thậm chí mật khẩu "mạnh" (theo những tiêu chuẩn hạn chế trên), và mật khẩu cá biệt của người dùng, là *không* tương đương với khóa mã hóa mạnh, và không nên dùng để làm việc đó, nếu không vì mục đích nào khác hơn là chúng không chứa các ký tự in được. Phương pháp cụm từ thông qua và thỏa thuận khóa xác nhận mật khẩu đã được dùng để nói lên hạn chế này.

Một dạng mật khẩu mạnh khác là một từ được ngẫu nhiên hoàn toàn hoặc một phần với chữ in thường khá nhau và một hoặc nhiều số hoặc ký hiệu được dùng thêm vào. Mật khẩu kiểu đóm trong khi hầu như toàn chữ và người dùng dễ nhớ, rất dài và cần phải có bộ sinh mật khẩu vét cạnh để kiểm thử tất cả các ký tự ở tất cả các kiểu chữ cũng như tất cả các số và ký hiệu bàn phiếu ở mỗi ký số, vì ký hiệu và con số có thể nằm ở bất cứ đâu trong một chữ. Như đã nói ở đoạn dưới, điều này sẽ đánh bại tấn công vét cạn với tài nguyên thực tế.

Mật khẩu có thể tìm thấy bằng các sử dụng một bộ máy sinh mật khẩu vét cạn như thế. Trong trường hợp đơn giản nhất, chúng là những chương trình nhỏ chỉ đơn giản là thử tất cả các tổ hợp có thể. Một bộ xử lý 3&nbsp;GHz có thể tạo ra xấp xỉ 3 triệu mật khẩu một giây. Một mật khẩu mười chữ cái như '4pRte!ai@3', vì có khoảng 95 khóa tồn tại, là một trong 95^{10} khả năng, và sẽ phải tốn khoảng 632.860 năm để tìm ra với giả sử mật khẩu đó được tạo ra ngẫu nhiên. Một mật khẩu chứa mười lăm chữ cái viết hoa ngẫy nhiên sẽ chỉ an toàn tương đương (với điều kiện hệ thống đang bàn tới là có phân biệt hoa thường và cho phép dùng ký hiệu) và có thể dễ hơn đối với vài người để nhớ và gõ vào.

Tuy nhiên, phương pháp băm mật khẩu yếu nào đó có thể phản bội một mật khẩu còn nhanh hơn bằng cách giảm số tổ hợp cần thiết hoặc tăng tốc độ mà tại đó sự tiên đoán có thể bị từ chối bẻ một mật khẩu "mạnh" khác. Hơn nữa, những bảng được tính trước nào đó như bảng cầu vồng có thể tăng tốc độ bẻ khóa đáng kể.

Một hàm tính toán số mật khẩu khả dĩ là: maximumCombinations=nrAvailableChars^{PasswordLength}. Chỉ sử dụng 26 ký tự chữ thường và mật khẩu dài 7 ký tự thì số tổ hợp khá nhỏ: 26^{7}=8.03 tỷ tổ hợp. Điều đó có vẻ lớn đối với vài người, nhưng trong một thời gian khi những máy tính thông thường có thể sinh ra 3 triệu mật khẩu một giây, nó sẽ chỉ mất có 45 phút để tìm ra mật khẩu.

Mật khẩu dài hơn 7 ký tự sử dụng từ không có trong từ điển do đó thường được xem là mật khẩu 'mạnh'. Tuy nhiên, đa số người dùng máy tính không để ý đến điều này, một phần vì chúng khó nhớ.

Một ví dụ đơn giản có thể dùng để điều tra sức kháng cự của mật khẩu đối với tìm kiếm vét cạn. Thí nghiệm với chương trình này sẽ làm rõ hơn một mật khẩu như *apple* dễ khám phá đến mức nào, vì nó có thể được tìm ra với chỉ chưa đến 30 giây bằng cách tiếp cận cực kỳ đơn giản.

## Xem thêm

*Mật khẩu truy cập

## Tham khảo

## Liên kết ngoài
* Choosing Good Passwords -- A User Guide.
* Password Policy Guidelines .
* Examples of common (and hence weak) passwords 
* The Memorability and Security of Passwords -- Some Empirical Results (Study done by Cambridge University Computer Laboratory)
* Bruce Schneier (ngày 14 tháng 12 năm 2006). MySpace Passwords Aren't So Dumb.
* Rainbow tables 
* Simple rules for choosing a good password 
* How to Write Better Passwords 
* SecurityStats's password strength meter 
* Microsoft's Javascript password strength meter
* [CertainKey's password strength meter, which includes [information entropy] (in bits) as a criterion of sufficient randomness] 
* Choose A Password password generator