Tính an toàn của mật khẩu
Bảo đảm tính an toàn của mật khẩu bằng chương trình bẻ mật khẩu
Nhiều người cho rằng các chương trình bẻ mật khẩu chỉ có thể được sử dụng
bởi hacker hay vào các mục đích phạm pháp. Không phải như vậy. Chúng có
thể được dùng để bảo đảm rằng người dùng đã đặt các mật khẩu tốt
Mật khẩu - nền móng của bảo mật máy tính
Mật khẩu an toàn, chắc chắn là nền tảng của một chiến lược bảo mật hiệu
quả. Mật khẩu đảm bảo tính truy cập hợp lệ của người dùng vào một hệ thống
hay mạng làm việc. Đáng tiếc điều này không phải bao giờ cũng đúng. Mật
khẩu thường do người sử dụng máy tính tự đặt.
Các từ, ký hiệu hay ngày tháng để đặt mật khẩu thường có liên hệ đến thông
tin cá nhân của người đặt để dễ nhớ. Vấn đề là ở đây. Nhiều người dùng đặt
sự tiện lợi lên trên tính an toàn, kết quả là họ chọn các mật khẩu khá đơn
giản. Điều này có thể giúp họ dễ nhớ khi đăng nhập nhưng cũng vì thế các
hacker cũng dễ bẻ mật khẩu của họ hơn. Hacker luôn dò tìm các mắt xích yếu
của hệ thống mạng để thâm nhập và rõ ràng cách đơn giản và dễ nhất là tìm
một mật khẩu dễ đoán. Tuyến phòng thủ bảo mật đầu tiên vì thế trở thành
một trong những mắt xích yếu nhất.
Người quản trị hệ thống có trách nhiệm phải đảm bảo mọi người dùng lưu
tâm đến sự cần thiết và duy trì các mật khẩu an toàn. Có hai yêu cầu được đặt
ra ở đây: Thứ nhất, hướng dẫn người dùng về tầm quan trọng của mật khẩu
và cách để đặt mật khẩu an toàn; thứ hai, có cách đánh giá để bảo đảm mật
khẩu người dùng đặt là hiệu quả. Để đáp ứng yêu cầu thứ hai, bắt buộc người
quản trị hệ thống phải “nhanh chân” phát hiện các mật khẩu lỏng lẻo trước
khi hacker phát hiện ra. Để làm được điều này, người quản trị có thể dùng
cùng các công cụ mà hacker thường sử dụng: chương trình bẻ mật khẩu
(password-cracker).
Các kiểu bẻ mật khẩu
Dùng từ điển (word-lists): Như tên gọi, một chương trình bẻ mật khẩu là một
công cụ dùng để “bẻ” (crack) hay tìm ra một mật khẩu. Các chương trình bẻ
mật khẩu dùng nhiều cách khác nhau để thực hiện điều này. Một số các trình
bẻ mật khẩu sử dụng “từ điển”, là một danh sách các từ, đoạn văn hay kết
hợp các mẫu tự, chữ số và ký hiệu mà người dùng thường sử dụng để đặt mật
khẩu. Chương trình sẽ thử lần lượt từng từ với tốc độ cao cho đến khi tìm
thấy từ hay tập ký hiệu trùng với mật khẩu. Trên lý thuyết, nếu thử đủ một số
tổ hợp và hoán vị, đến cuối cùng sẽ tìm ra đúng chuỗi các ký tự đã tạo nên
mật khẩu. Nếu mật khẩu trùng với một mục trong “từ điển”, xem như nó đã
bị bẻ.
Một khi mật khẩu đã bị bẻ, hacker có thể giả mạo tư cách người dùng hợp
pháp và có thể truy cập vào bất kỳ dữ liệu nào người dùng đó được phép.
Nguy hiểm hơn, hacker có thể “leo thang tấn công” theo cách này để chiếm
quyền điều khiển toàn bộ hệ thống mạng. Mật khẩu được lưu ở dạng mã hóa
để không thể “thấy được” một cách dễ dàng. Đối phó với rào cản này,
chương trình bẻ mật khẩu sử dụng cùng một giải thuật mã hóa dùng để mã
hóa mật khẩu, sau đó duyệt qua “từ điển” để so sánh và tìm ra sự trùng khớp.
Thử hàng loạt (Brute-Forcing): Trong khi phương pháp “từ điển” dựa trên tốc
độ và mẹo sắp xếp các từ một cách khôn ngoan, phương pháp bẻ mật khẩu
thứ hai lại dựa hoàn toàn trên năng lực tính toán và sự lặp lại được gọi là “thử
hàng loạt” (brute forcing). Thử hàng loạt là dạng bẻ mật khẩu chỉ đơn giản
dựa trên so sánh mọi khả năng tổ hợp và hoán vị có thể có của các ký tự sẵn
có cho đến khi tìm thấy trùng khớp với mật khẩu. Phương pháp này rất mạnh
và chắc chắn cuối cùng sẽ bẻ được mọi mật khẩu, tuy nhiên tốc độ thực hiện
cực kỳ chậm do phải thử tất cả mọi tổ hợp ký tự có thể có. Ví dụ, chỉ với một
mật khẩu 3 ký tự, quá trình thử sẽ phải trải qua các tổ hợp: aaa, aab, aac...
aaA, aaB, aaC... aa0, aa1, aa2, aa3... aba, aca, ada... Mỗi tổ hợp được qua một
giải thuật mã hóa thích hợp và so sánh với mật khẩu đã lưu cho đến khi tìm ra
sự trùng khớp.
Có thể thấy, phương pháp “thử hàng loạt” khá chậm và kém hơn so với sử
dụng “từ điển”. Tuy nhiên, sự triệt để phương pháp này có thể bù đắp cho sự
hạn chế về tốc độ. “Thử hàng loạt” vẫn mang lại hiệu quả do tìm hết mọi tổ
hợp và hóa vị của ký tự, kể cả những tổ hợp vô nghĩa nằm ngoài khả năng
đoán nhận của phương pháp “từ điển”. Nói cách khác, các chương trình bẻ
mật khẩu loại này chỉ so sánh mật khẩu với tổ hợp của các ký tự và ký hiệu
đã biết.
Kết hợp giữa “thử hàng loạt” và “từ điển” (Brute-Force and Wordlist
Hybrids): Một số chương trình bẻ mật khẩu, như l0pht password crack, sử
dụng phương pháp kết hợp giữa hai kỹ thuật trên. Các chương trình này kết
hợp các điểm tốt nhất của cả hai phương pháp và cho hiệu quả khá cao.
Cách đặt mật khẩu có độ an toàn cao
Người quản trị hệ thống và việc bảo vệ mật khẩu. Đến lúc này, những gì đã
trình bày có thể khiến người đọc cho rằng các chương trình bẻ mật khẩu chỉ
có thể được sử dụng bởi hacker hay vào các mục đích phạm pháp.
Thật ra không phải như vậy: Các phần chúng có thể được dùng để bảo đảm
rằng người dùng đã đặt các mật khẩu tốt. Người quản trị hệ thống có thể sử
dụng các chương trình bẻ mật khẩu để kiểm tra độ an toàn của mật khẩu
người dùng, sau đó có thể thông báo cho những người dùng đã đặt mật khẩu
không an toàn. Một số chương trình bẻ mật khẩu còn có thể gửi e-mail
khuyên người dùng thay đổi mật khẩu ngay lập tức nếu nó bị bẻ quá dễ hay
quá nhanh. Nên lưu ý rằng không chỉ có người dùng mới mắc lỗi trong việc
phá vỡ tính bảo mật của mật khẩu. Người quản trị hệ thống có thể có những
tiêu chuẩn khác về mật khẩu cho chính họ so với các người dùng khác. Do
phải nhớ nhiều mật khẩu, người quản trị thường chọn mật khẩu dễ nhớ, đơn
giản cho nhiều ứng dụng. Điều này rõ ràng tạo nên một chuỗi các điểm yếu
nghiêm trọng về bảo mật. Hơn nữa, người quản trị có khả năng bỏ qua các
công cụ nâng cao tính an toàn của mật khẩu, nếu họ chọn vì mục đích tiện
lợi. Sau hết, người quản trị có thể thường chọn cách nhanh nhất khi cài đặt
các phần mềm hay thiết bị và để ngỏ các ứng dụng này với các mật khẩu mặc
định. Đây là một lỗi thường xảy ra đến nỗi trên Internet có các “kho” lưu trữ
tất cả mật khẩu mặc định, với mục đích ban đầu là để giúp đỡ các nhà quản
trị, nhưng có vẻ để giúp các hacker nhiều hơn.
Nâng cao tính an toàn của mật khẩu
Thế nào là các mật khẩu không an toàn? Một cách cụ thể, chúng là những gì
có thể tìm thấy trong từ điển: là các từ đơn giản, theo quy tắc và chỉ gồm các
mẫu tự. Ví dụ, dùng tên để đặt mật khẩu là không nên.
Một chỗ yếu khác là sử dụng các thông tin liên quan đến cá nhân để đặt mật
khẩu như ngày sinh, ngày kỷ niệm, tên người thân... để mật khẩu dễ nhớ hơn.
Hacker thường có thể lần ra được các thông tin cá nhân bằng cách sử dụng
“mánh khóe” (social engineering) và dùng thông tin đó để bẻ mật khẩu. Đặt
mật khẩu bằng các từ tối nghĩa có thể ngăn chặn được nguy cơ này.
Việc đặt mật khẩu không có các từ vẫn dùng hàng ngày và bằng các ký tự
khác nhau là rất quan trọng, nhưng vẫn phải đảm bảo tính dễ nhớ. Người
dùng nên kết hợp các mẫu tự (cả thường và hoa) với chữ số và ký hiệu khi
đặt mật khẩu. Có thể làm được điều này bằng cách trộn lẫn nhiều nhóm ký tự
vào nhau gồm: mẫu tự hoa như (như A, B, C,... Z); mẫu tự thường (như a, b,
c,... z); chữ số (như 0, 1, 2, 3,... 9); ký tự đặc biệt (như $, #,? , &); các ký tự
điều khiển (như µ, £...).
Mật khẩu an toàn có thể tạo bằng cách thay thế các mẫu tự đơn giản bằng các
ký tự khác để chúng vẫn có thể dễ nhớ nhưng không có trong từ điển. Ví dụ,
“Password” có thể thay thành “Pa55w0rd”. Tuy nhiên, cách này đã lỗi thời,
các từ điển đã được tạo để đối phó với kỹ thuật này. Do đó, nếu muốn an toàn
người dùng buộc phải sử dụng các tổ hợp của hai hoặc hơn các từ không liên
quan tạo thành bởi các ký tự từ một trong năm nhóm kể trên.
Tạo mật khẩu ngẫu nhiên
Tin cậy hơn có thể dùng chương trình tạo mật khẩu ngẫu nhiên để tạo cho
người dùng một mật khẩu làm sẵn. Tuy nhiên, do tính ngẫu nhiên các mật
khẩu này rất khó nhớ. Và trong nhiều trường hợp, việc đầu tiên mà người
dùng làm là ghi mật khẩu vào một mẩu ghi chú và dán trước màn hình. Đó
chính là vấn đề vì những người không được phép có thể nhìn thấy mật khẩu.
Một lần nữa, giải pháp là cần phải tạo một mật khẩu dễ nhớ nhưng không quá
đơn giản để bị bẻ bằng “từ điển”. Điều này hơi khó, đòi hỏi cả óc tưởng
tượng lẫn trí nhớ, nhưng đây là bước quan trọng sống còn đối với bảo mật
máy tính.
Thường xuyên thay đổi mật khẩu
Bên cạnh việc tạo các mật khẩu khó bẻ, việc thường xuyên thay đổi mật khẩu
cũng có tầm quan trọng không kém. Điều này rất cần thiết trong trường hợp
ai đó đã hoặc đang tìm cách bẻ mật khẩu của bạn. Trách nhiệm thuộc về
người quản trị phải nhắc nhở người dùng thực hiện một cách thường xuyên.
Một lựa chọn khác là sử dụng các tính năng hết hạn mật khẩu của hệ điều
hành để yêu cầu người dùng phải đổi mật khẩu mới sau một thời gian sử
dụng (thường là 30 ngày). Tuy nhiên, người dùng thường phàn nàn các mật
khẩu phức tạp khó nhớ và không tuân theo các hướng dẫn. Trong trường hợp
đó, người quản trị có thể cho phép mật khẩu phức tạp được sử dụng thời gian
lâu hơn trước khi phải thay đổi.
Mật khẩu và chính sách an ninh
Mật khẩu kém không được phát hiện có thể dẫn đến dữ liệu của mọi người bị
xâm phạm. Chính sách an ninh của tổ chức bắt buộc phải đề cập đến mọi khía
cạnh để đảm bảo an toàn mật khẩu. Trong đó, không chỉ nhấn mạnh đến tầm
quan trọng tuyệt đối của các mật khẩu chắc chắn, an toàn và trách nhiệm của
từng người dùng trong việc bảo vệ mật khẩu của mình, mà còn phải vạch ra
các bước người quản trị hệ thống cần tuân thủ để bảo đảm tính bảo mật của
hệ thống khi sử dụng cách bảo vệ bằng mật khẩu.