Đang chăm 3 F0 ở nhà thì thấy cuộc gọi nhỡ từ sếp, tôi gọi lại tưởng sếp chúc mừng 8/3, hoá ra sếp hỏi có bài nào không, đăng đi chạy KPI phòng. Tôi bảo bài thì nhiều, nhưng chỉ để đi cà khịa kiếm tương tác chứ đăng blog thì ai đọc, mà blog chuyên môn thì thân làm showbiz biết viết cái gì, nhưng thôi sếp giao chả lẽ không nhận, đánh kiếm cái gì mà ai cũng biết viết cho nó khó, chọn đại mấy cái ngày xưa hay đi đào tạo nhận thức an toàn thông tin, thế là thành bài.

Ngày xưa xem phim, thích mấy anh hacker lắm. Cứ hiện lên cái màn hình đăng nhập, gõ tạch tạch mấy cái xong hét lên “I’m in”, thế là xong, đã vô được hệ thống, lấy gì thì lấy. Mấy ông đạo diễn phim thì hay phóng đại, nhưng đúng là đằng sau màn hình với form đăng nhập mà bình thường chúng ta hay nhìn thấy là rất nhiều dữ liệu: thông tin cá nhân, họ tên, điện thoại, email, địa chỉ, đôi khi là tài khoản thẻ thanh toán… Tôi vẫn hay thường nói với anh em, mất gmail là mất tất. Từ tài khoản google có thể truy cập được lịch sử duyệt web, lịch sử tìm kiếm, địa điểm đã đi qua… Nếu có một ngày tôi bị lộ tài khoản voz, chắc tôi tự tử mất.

Internet là cả thế giới, có internet là có cả thế giới trong nhà bạn, để sống trên thế giới ấy, chúng ta cần tài khoản, rất rất nhiều tài khoản mới đúng. Và đi liền với tài khoản là mật khẩu, các netizen chúng ta dùng mật khẩu gần như mỗi giờ. Từ mật khẩu để unlock điện thoại, mật khẩu wifi cho đến mật khẩu login máy tính, mật khẩu cho các loại tài khoản làm việc, giải trí… Vậy có khi nào bạn tự hỏi, thế nào là mật khẩu an toàn?

Mật khẩu là gì

Trước hết, thử đi tìm hiểu xem mật khẩu là gì? Mật khẩu là một thứ bí mật chỉ mình bạn hoặc rất ít người biết, dùng để xác nhận danh tính của bạn, thường là một chuỗi ký tự gồm số, chữ cái và các ký tự đặc biệt. Ví dụ mật khẩu tài khoản facebook, google, hình vẽ mở khoá điện thoại. 

Chúng ta thường thấy mật khẩu là 1 trong 3 yếu tố được sử dụng để xác thực trong mô hình cổ điển: 

  • Something You Know (SYK): Thứ bạn biết (ví dụ như mật khẩu)
  • Something You Have (SYH): Thứ bạn có, bạn sở hữu như 1 cái USB FIDO, OTP…
  • Something You Are (SYA): Thứ bạn là, thứ mà chỉ bạn mới có như vân tay, mống mắt, khuôn mặt

Multi-Factor Authentication (MFA) xác thực đa yếu tố chính là sử dụng kết hợp 2 trong 3 yếu tố kể trên, thường là kết hợp thứ bạn biết (mật khẩu) với 1 trong 2 yếu tố còn lại.

Ví dụ để truy cập tài khoản facebook của tôi, sau khi sử dụng email/mật khẩu (thứ tôi biết) còn cần dùng thêm một chiếc USB FIDO (thứ tôi có) cắm vào máy tính dùng làm yếu tố thứ 2 trong quá trình xác thực tài khoản facebook.

Kim tự tháp xác thực với phần móng là password

Ảnh: https://www.intercede.com/why-all-it-leaders-need-to-know-the-authentication-pyramid/

Hình thức xác thực nào an toàn nhất

Ở trên đang nói về xác thực đa yếu tố, vậy thì cùng bàn xem hình thức xác thực nào là an toàn. Theo các chuyên gia của NIST có đề cập trong tài liệu về Digital Identity Guidelines, việc sử dụng kết hợp 2 trong 3 yếu tố xác thực cơ bản đã đảm bảo an toàn ở mức cao nhất. Đôi khi, chúng ta thường gặp một số dịch vụ còn sử dụng thêm yếu tố như vị trí địa lý, hay thiết bị đã từng sử dụng. Những yếu tố này thường chỉ để đánh giá rủi ro hoặc quá trình lấy lại mật khẩu, ít sử dụng trong quá trình xác thực. Ví dụ nếu bạn nào thường làm dịch vụ hay hỗ trợ người thân lấy lại tài khoản fb, việc sử dụng thiết bị đã từng đăng nhập tài khoản fb đang gặp vấn đề sẽ giúp quá trình này nhanh hơn rất nhiều.

Trong trường hợp chỉ sử dụng một trong các hình thức xác thực để đăng nhập, như khi sử dụng điện thoại di động, máy tính bảng thì lời khuyên là ưu tiên theo các thứ tự sau: 

  • SYA – Something You Are: như khuôn mặt 3D, mống mắt, khuôn mặt 2D, vân tay
  • SYH: Something You Have: các loại mật khẩu theo thứ tự: mật khẩu gồm số + chữ, mật khẩu 6 chữ số, mật khẩu 4 chữ số. 

Lưu ý 1: không nên dùng mật khẩu dạng hình vẽ (parten), vì mật khẩu dạng này rất dễ bị đá hình, mà chúng ta đều đã biết rồi, người hack ta thường ở quanh ta chứ chẳng phải ông hacker nào tận Nga hay Trung Quốc đâu. Tôi không hiểu sao rất nhiều người sử dụng mật khẩu hình vẽ trên các máy điện thoại chạy hệ điều hành android như chữ L (why L?), chữ O, chữ U hay chữ cái đầu tiên của tên. Thú vui của tôi khi đi máy bay là đá hình vẽ mật khẩu của mấy người ngồi trước. Có lẽ apple đã nhận ra điểm yếu từ loại mật khẩu kiểu này nên họ không đưa vào thiết bị của họ luôn =))

bubble chart

Ảnh: https://www.cyberark.com/resources/blog/comparison-of-user-authentication-methods-on-three-parameters

Trên hình là bảng đánh giá các hình thức xác thực trên trang cyberrank đưa ra, với 2 yếu tố cơ bản: độ an toàn và tính dễ sử dụng, một giải pháp về an toàn thông tin luôn phải cân đối giữa 2 yếu tố này.

Lưu ý 2: Sử dụng xác thực đa yếu tố không phải lúc nào cũng an toàn tuyệt đối, việc sử dụng yếu tố xác thực thứ 2 bằng SMS OTP hiện nay được coi là kém an toàn hơn so với các hình thức SYH khác như OATH OTP (Google Authenticator, LastPass Authenticator…). Bởi các lỗ hổng trong các giao thức truyền thông đang được hacker khai thác trong thời gian gần đây (như vụ tài khoản quản trị của diễn đàn Reddit bị hack năm 2018)

Tạo mật khẩu an toàn

Sử dụng xác thực đa yếu tố sẽ giúp đảm bảo an toàn cho tài khoản hơn và được khuyến cáo sử dụng nếu dịch vụ có hỗ trợ option này. Nhưng trước đó, người dùng cần học cách đặt mật khẩu an toàn để thiết lập lớp phòng vệ đầu tiên. Vậy tạo mật khẩu sao cho an toàn, cùng xem thử một yêu cầu khi đăng ký tài khoản trên Netflix:

 

https://help.netflix.com/vi/node/13243

Không dùng chung mật khẩu

Không dùng chung mật khẩu giữa các loại tài khoản, đặt mật khẩu gồm tối thiếu 3 trong 4 thành phần: số – chữ hoa – chữ thường – ký tự đặc biệt, nguyên tắc đặt mật khẩu an toàn mà chuyên gia nào cũng khuyến cáo bạn (nhưng không biết chuyên gia có làm vậy không =)) ). Thử liệt kê xem bạn có đang sử dụng các loại tài khoản sau đây không nhé: google, facebook, twitter, reddit, quora, icloud/apple id, amazon, tiki, shoppe, lazada, discord, edx, adobe, ebanking, dichvucong, fshare, gametv, zalo, kplus, live.com, nhaccuatui, paypal, playstation, riotgames, sans, shodan, slack, spotify, steam, tiktok, tinhte, topcv, trello, virustotal, vozforums, wargame.whitehat.vn, webex, xmind, coursera, udemy, yahoo, netflix, dropbox, evernote, github… cũng tương đối nhiều đúng không, chưa kể acc ở công ty, trường học… Vậy liệu bạn có thể nhớ được mấy chục loại mật khẩu cho các tài khoản khác nhau như vậy không? Tôi thì không, vậy giải quyết vấn đề trên bằng cách nào? Tôi đã hỏi một số anh em và có vài lựa chọn sau:

  • Option1: Chia làm 2 nhóm tài khoản, nhóm tài khoản dạng không quan trọng chuyên đi comment dạo thì dùng chung mật khẩu, đơn giản, dễ nhớ. Một số tài khoản quan trọng thì dùng mật khẩu mạnh hơn và không đụng hàng.
  • Option2: Đặt ra một quy luật tạo mật khẩu, như dùng 1 cụm từ cố định + định danh của dịch vụ đó. Ví dụ khi đăng ký tài khoản mới trên diễn đàn voz  tôi sẽ chọn acc là sunny, mật khẩu là vnpt@123 (cố định) + v0z ⇒ sunny/vnpt@123v0z, tương tự tài khoản tinhte sẽ là sunny/vnpt@123tinht3e
  • Option3: Mỗi một tài khoản sẽ sử dụng một mật khẩu duy nhất. Sử dụng công cụ quản lý mật khẩu để lưu các mật khẩu đó.

Lời khuyên cùa tôi ở đây là nếu bạn to não thì dùng Option 2, còn tôi còn phải dành đầu óc để chạy KPI nên dùng Option 3 và cũng khuyên các bạn như vậy.

Mật khẩu có độ dài từ 8 ký tự trở lên, sử dụng kết hợp các loại ký tự

Vì sao mật khẩu phải có độ dài từ 8 ký tự trở lên, nếu bạn dùng trình quản lý mật khẩu sẽ thấy mặc định mật khẩu luôn là 12 ký tự trở lên, một số tool mặc định có thể là 16 ký tự

Ảnh chụp giao diện Lastpass Password Manager

Bởi vì trong thường hợp xấu nhất, khi mật khẩu của bạn bị bruteforce (một dạng tấn công dựa trên cơ chế đoán mật khẩu) thì thời gian để bẻ khoá các tài khoản sẽ khác nhau nếu độ dài và độ phức tạp tăng lên.

Ảnh: https://i.redd.it/ffuyhzi9r3l81.jpg

Mật khẩu mạnh thường được định nghĩa gồm tối thiếu 3 trong 4 thành phần: số – chữ hoa – chữ thường – ký tự đặc biệt, nhưng một mật khẩu “7^D$xyU3S&4f” sẽ khó nhớ hơn rất nhiều so với “iL0v3Bk@v”, nên lời khuyên ở đây là mật khẩu nên sử dụng cụm từ có nghĩa. Nếu bạn là một người thường xuyên thay đổi người yêu thì tôi khuyên nên lấy tên người yêu làm cơ sở tạo mật khẩu, vừa đảm bảo độ phức tạp lại vừa đảm bảo việc định kỳ đổi mật khẩu.

Nhưng đôi khi đời không như là mơ, một số dịch vụ như rút tiền tự động ở máy ATM của ngân hàng, chẳng phải mã PIN của chúng ta chỉ có 4 hoặc 6 ký tự. Có khi nào bạn thắc mắc như vậy không? Một dịch vụ đặc biệt quan trọng liên quan đến tiền lại vi phạm nghiêm trọng quy tắc mật khẩu an toàn với độ dài mật khẩu quá ngắn và chỉ sử dụng số. Tôi có ông anh khoá trên, tốt nghiệp xong lên Thái Nguyên làm. Trong một lần đi làm về thì rơi mất ví, và trong ví có CMND + thẻ ATM. Và khi về nhà thì phát hiện là tiền trong thẻ ATM đã bị rút sạch, vì đơn giản là ông anh tôi dùng ngày tháng năm sinh làm mã PIN thẻ ngân hàng, (nghe cũng hợp lý vì ddmmyy thì quá đẹp cho mã PIN 6 số rồi). Cũng có cái may là ngày ấy mới đi làm còn chưa có nhiều tiền trong tài khoản.

Thôi quay trở lại với câu hỏi nhỏ là vì sao thẻ ngân hàng chỉ dùng mã PIN có 4-6 ký tự. Liệu đâu có phải là một thiết kế kém an toàn tồn tại từ những ngày đầu, vì ATM đã có từ năm 1967 cơ mà. Hay do khách hàng đầu tiên của cha đẻ ATM là vợ ông ta nên để cho dễ nhớ thì mã PIN phải là 4 chữ số =)) Để rút tiền chúng ta cần 2 yếu tố xác thực: (1) là cầm thẻ ATM trong tay (thứ bạn có SYH), (2) mã PIN 6 chữ số (thứ bạn biết SYK). Như vậy việc rút tiền có thể coi là xác thực đa yếu tố. Ngoài ra, ngân hàng còn trang bị thêm 2 phương án để giảm thiểu rủi ro là cơ chế khoá thẻ sau khi nhập sai mã PIN 3 lần và camera trong cây ATM. Vì vậy xét yếu tố security + usability thì đây không phải là một giải pháp tồi.

Định kỳ đổi mật khẩu

Ở trên tôi vừa đưa ra thêm một lời khuyên là định kỳ đổi mật khẩu, nhưng vấn đề đổi mật khẩu có đơn giản như đổi người yêu hay không. Quay trở lại với phần liệt kê các loại tài khoản chúng ta thường sử dụng, với mỗi người có nhiều chục loại tài khoản, và định kỳ 6 tháng đổi một lần, như vậy mỗi 6 tháng chúng ta cần nhớ vào đầu khoảng 4x mật khẩu mới, tôi không biết giáo sư Ngô Bảo Châu có dùng phương án này không nhưng nếu là tôi thì tôi sẽ không làm vậy. Phương án tôi thường thấy mọi người dùng để chống đối với quy định này là sau khi đổi mật khẩu mới ngay lập tức đổi thêm lần nữa về mật khẩu cũ cho dễ nhớ =)) Còn lời khuyên của tôi vẫn là dùng công cụ quản lý mật khẩu.

Lưu ý thứ 2 ở phần này, là với các loại tài khoản thẻ ngân hàng, mật khẩu đã được in cứng, chúng ta dùng phương án là định kỳ yêu cầu nhà cung cấp đổi thẻ mới là xong, nhớ dùng thêm miếng dán để dán số cvv cho chắc ăn.

Sử dụng công cụ quản lý mật khẩu (Password Manager)

Nếu bạn đọc đến đây chắc không ít lần thấy tôi nhắc đến phần mềm hay công cụ quản lý mật khẩu. Giải thích qua một chút, thì phần mềm quản lý mật khẩu sẽ đóng vai trò như một két an toàn mà bên trong là các loại mật khẩu tương ứng với các loại tài khoản của bạn. Mỗi lần cần dùng mật khẩu cho dịch vụ nào, bạn đơn giản là mở két ra lấy rồi sử dụng để login.

Ảnh: https://jumpgrowth.com/lastpass-password-manager/

Vì vậy nó giải quyết được kha khá vấn đề: 

  • Không phải ghi nhớ mấy chục mật khẩu mà chỉ cần 1 masterkey duy nhất để mở khoá
  • Không phải lo đặt mật khẩu ngắn, ít phức tạp vì mật khẩu do password manager tạo ra luôn là siêu mạnh và đảm bảo hết các yêu cầu. Bạn có thể quên những em người yêu cũ được rồi.
  • Định kỳ đổi mật khẩu nhanh chỉ cần change pass và replace pass cũ là xong

Ngoài ra, mỗi phần mềm quản lý mật khẩu đều có một số tính năng nổi bật khác, ví dụ lastpass hỗ trợ đa nền tảng windows, mac, ios, android; save password của các trình duyệt như Google Chrome, Firefox, Safary… tích hợp sẵn cả công cụ check mật khẩu đã từng bị leak hay chưa… Một số phần mềm còn có thêm cả anti-phishing…

Nhưng nó lại tồn tại một vấn đề mà gây ra không ít tranh cãi, đấy chính là “cho trứng vào một giỏ”. Nghĩa là nếu bị mất kiểm soát phần mềm quản lý mật khẩu, bạn sẽ mất hết các mật khẩu. Lời khuyên của tôi là nên dùng phần mềm quản lý mật khẩu của bên thứ 3 như lastpass, keepass, 1password… sẽ giúp đảm bảo an toàn hơn một chút so với việc lưu trực tiếp trên trình duyệt. Và dĩ nhiên, lúc này bạn cần tập trung vào bảo mật cho chiếc két bé nhỏ của mình bằng xác thực đa yếu tố (MFA), bổ sung phone/email recovery…

Ok, vẫn còn nhiều thứ muốn viết về vấn đề mật khẩu này nhưng quota cho bài viết chạy KPI đã đủ nên tôi dừng ở đây. Tổng kết lại cho việc xác thực an toàn đó chính là:

  • Sử dụng xác thực đa yêu tố (MFA) tối đa;
  • Hạn chế dùng chung mật khẩu;
  • Đặt mật khẩu dài, phức tạp, sử dụng luật riêng của bạn;
  • Định kỳ đổi mật khẩu;
  • Cuối cùng là nên dùng phần mềm quản lý mật khẩu.

P/S: Nếu bạn đã đọc đến đây, đố bạn vì sao Netflix lại không có MFA?

826 lượt xem