Bảo mật 2 lớp (2FA) là gì, nó hoạt động như thế nào? Và tại sao bạn cần quan tâm đến nó
(Được lược dịch từ bài viết Two Factor Authentication (2FA): What is it? How does it work? Why you should care!)
Cùng tìm hiểu lý do tại sao 2FA lại quan trọng, thực chất thì nó bảo vệ tài khoản của bạn như thế nào, và cách để đánh giá các phương thức 2FA có sẵn trên các dịch vụ mà bạn đang sử dụng.
Chào mừng bạn đến với bài viết đầu tiên trong series về Bảo mật 2 lớp (2FA).
Trước hết, series này không phải nói về những dịch vụ nào thì hỗ trợ 2FA. Bạn có thể tìm hiểu nó qua trang web cực kì hữu dụng twofactorauth.org. Series này cũng không nhằm trình bày cách để cài đặt 2FA lên website, nếu bạn cần cài đặt hãy tham khảo TurnOn2FA.com.
Thay vào đó, series này sẽ tập trung vào việc cách mà 2FA hoạt động từ đó mà bạn có thể đưa ra những quyết định đúng đắn để bảo vệ an toàn khoản online của mình.
Rất nhiều dịch vụ khuyến khích người dùng sử dụng 2FA với thông điệp đại loại là “2FA sẽ tăng cường thêm một lớp bảo mật cho tài khoản của bạn bên cạnh mật khẩu”. Điều đó thực sự có nghĩa là gì? Thông điệp trên không giải thích tại sao 2FA lại tăng cường bảo mật cho tài khoản cũng như không đề cập đến những rủi ro của nó. Một vài dịch vụ thì đưa ra thông điệp rõ ràng hơn: “Điều đó nghĩa là nếu có ai đó đánh cắp được mật khẩu của bạn thì họ cũng không thể nào mà truy cập được tài khoản nếu không có điện thoại của bạn.” Thông điệp trên hẳn là sẽ tạo thêm động lực để một số người dùng sử dụng 2FA nhưng buồn thay phần lớn người dùng lại không làm thế. Thực tế là, hầu hết mọi người đều không biết 2FA là cái gì. Giáo dục là phần cốt yếu để phổ biến 2FA và tôi hy vọng series này có thế giúp ích được phần nào.
Có khá nhiều tài liệu hay để ta có thể tìm hiểu về 2FA. Hai trang web mà tôi nhắc đến ở trên giúp cho người dùng, khi họ hiểu tầm quan trọng của 2FA, có thể bật 2FA lên. Tuy nhiên, nếu bạn giống tôi, bạn sẽ luôn đặt câu hỏi tại sao khi mà ai đó bảo bạn làm gì đó. Để giải quyết vấn đề đó, Electronic Frontier Foundation (EFF) đã có một tài liệu hướng dẫn xuất sắc thảo luận về những phương thức 2FA phổ biến trên web (Common Types of Two-Factor Authentication on the Web). Series này sẽ trình bày dựa trên tài liệu trên, chia nhỏ và phân tích một cách cụ thể rõ ràng hơn.
Bạn có thể tự hỏi rằng: Thế 2FA bảo vệ mình khỏi cái gì nhỉ? Và nó không thể bảo vệ được mình khỏi cái gì? Đâu là phương thức 2FA phổ biến và chúng hoạt động như thế nào? Cái nào tốt hơn, cái nào không tốt bằng? Để bảo mật hơn thì ta phải đánh đổi cái gì?
Nếu bạn là người dùng cuối, thì series này sẽ giúp bạn hiểu được một cách chính xác cách 2FA bảo vệ tài khoản của bạn và cách để đánh giá các phương thức 2FA có sẵn trên các dịch vụ mà bạn đang sử dụng. Nếu dịch vụ bạn đang dùng không hỗ trợ 2FA, thì với kiến thức trong tay, bạn sẽ có đủ tự tin để yêu cầu nhà cung cấp hỗ trợ 2FA để bạn có thể bảo vệ tài khoản của mình khỏi bị tấn công.
Nếu bạn là nhà cung cấp dịch vụ, thì series chắc chắn là dành cho bạn! Hiểu rõ kỹ thuật nằm sau 2FA và trải nghiệm của người dùng (UX) khi sử dụng 2FA sẽ giúp cho phương thức 2FA mà bạn cung cấp đáp ứng được nhu cầu của bạn (nhà cung cấp) và người dùng.
Thế 2FA là gì?
Có 3 yếu tố bảo mật thường được sử dụng để xác thực nhân dạng của bạn khi đăng nhập vào 1 hệ thống, đó là:
- Knowledge: Một thứ gì đó mà bạn biết, như là mật khẩu, PIN code…
- Possession: Một thứ gì đó mà bạn sở hữu, như là smartphone, security key, hoặc một thiết bị tin cậy nào đó.
- Inherence: Một thứ gì đó mà thuộc về con người bạn, như là gương mặt, vân tay, hoặc màu mắt.
Mặc dù bất kỳ bộ 2 nào của các yếu tố (factor) trên đều có thể xem là bảo mật 2 lớp (two factor authentication), thông thường thì 2FA sẽ là Knowledge + Possession. Sinh trắc học đã dần trở nên phổ biến trong thời đại phát triển như vũ bão của smartphone các năm gần đây, nhưng mà nó hiếm khi được sử dụng khi đăng nhập vào website. Định nghĩa trên có thể thay đổi trong tương lai, nhưng hiện tại hãy cứ định nghĩa 2FA trong series này bao gồm thứ gì đó mà bạn biết và thứ gì đó mà bạn có.
Lý do mà 2 factor hợp lại sẽ tăng bảo mật một cách đáng kể là vì mỗi factor có mô hình mối đe dọa (threat model) khác nhau. Một mô hình mối đe dọa đơn giản là một danh sách có ưu tiên bao gồm tất cả các phương pháp mà tin tặc có thể tấn công. Tin tặc sẽ thử những phương thức đơn giản, xác suất thành công lớn trước khi thực hiện các phương thức tấn công phức tạp để tấn công người dùng cá nhân. Hầu hết các giải pháp bảo mật đều không thể loại bỏ được hoàn toàn rủi ro, mà chỉ có thể giảm thiểu rủi ro tối đa dựa vào mô hình mối đe dọa.
Nếu tin tặc có thể ăn cắp knowledge factor (ví dụ như mật khẩu) từ xa thì hắn vẫn không thể truy cập được vào tài khoản vì hắn thường không thể truy cập vật lý vào possession factor (ví dụ như trusted device).
Một số người đọc tinh ý có thể thấy rằng tôi dùng cụm từ thiếu chắc chắn là “thường không thể”. Những cụm từ kiểu này sẽ xuất hiện nhiều trong bài viết bởi vì mỗi phương thức 2FA có điểm mạnh yếu khác nhau cho phép chúng chống lại được những cuộc tấn công nhất định nhưng mà lại yếu trước loại tấn công khác.
Phần còn lại của bài viết này sẽ liệt kê một vài cách trong vô số cách mà tin tặc có thể trộm được mật khẩu của bạn. Hiểu được việc bạn có thể mất yếu tố xác thực Knowledge dễ dàng sẽ giúp bạn hiểu được tại sao cần phải kích hoạt 2FA cho tất cả tài khoản của mình.
“Tôi sử dụng 1 mật khẩu cho nhiều website.” 2FA có thể giúp bạn
Nếu bạn đã từng sử dụng 1 mật khẩu cho nhiều hơn 1 website, bạn không chỉ có một mình đâu. Pew Research chỉ ra rằng 39% người tham gia nghiên cứu thừa nhận rằng họ sử dụng mật khẩu giống nhau hoặc tương tự nhau cho nhiều tài khoản online. Và LastPass chỉ ra rằng con số đó có thể lên tới 61%! Việc mọi người sử dụng lại mật khẩu là dễ hiểu, vì khó có thể nhớ được nếu đặt mật khẩu khác nhau cho tất cả các tài khoản online. LastPass cũng chỉ ra rằng một người dùng trung bình có 191 mật khẩu cần phải nhớ. Tuy nhiên việc bạn thuộc đa số trong trường hợp này lại không phải là điều tốt cho lắm. Việc sử dụng lại mật khẩu là cực kỳ nguy hiểm, khiến cho các tài khoản dùng chung có nguy cơ bị hack cao hơn. Vậy cùng tìm hiểu xem tại sao 2FA lại có thể bảo vệ tài khoản của bạn trong trường hợp này nhé.
Giả sử có hai dịch vụ online giả tưởng. Chúng ta gọi dịch vụ hoàn toàn giả tưởng đầu tiên là “Google”. Giả sử “Google” có 1 team kĩ sư cực kỳ giỏi, cực kỳ coi trọng việc bảo mật, và thực hiện tất cả những best practice để lưu mật khẩu một cách bảo mật vào database (DB). Còn dịch vụ giả tưởng thứ hai tên là “Một trang web về mèo”. Bởi vì dịch vụ này có team kỹ sư lởm, nên họ không tuân theo best practice nào về cách lưu mật khẩu.
Giả sử rằng bạn có tài khoản ở cả hai dịch vụ trên và chúng dùng chung mật khẩu. Không may “Một trang web về mèo” bị hack và tin tặc download được tất cả dữ liệu trong DB. Vì “Một trang web về mèo” không tuân theo best practice nào về cách lưu mật khẩu nên ta có thể kết luận rằng tin tặc đã có cả username và mật khẩu tài khoản của bạn. Bạn yêu mèo, nhưng mất tài khoản “Một trang web về mèo” vào tay tin tặc không phải là tận thế.
Tuy nhiên, vì hầu hết các trang web sử dụng email làm username, tin tặc có thể thử dùng username, mật khẩu vừa hack được để thử truy cập vào tài khoản “Google” của bạn. Vì bạn dùng chung mật khẩu cho cả hai tài khoản nên account “Google” của bạn cũng coi như đi tong luôn. Việc một trang web vớ vẩn với bảo mật không tốt đã khiến cho những tài khoản khác dùng chung mật khẩu đối mặt với nhiều rủi ro. Giả sử nếu ai đó nắm được quyền kiểm soát tài khoản mạng xã hội, tài khoản ngân hàng hoặc lịch sử khám bệnh của bạn xem, đó không phải là viễn cảnh hay ho lắm đâu.
Thế nên tip ở đây là: mỗi tài khoản nên có mật khẩu duy nhất.
Tuy nhiên, nếu chúng ta không đặt mật khẩu khác nhau thì sao?
Nếu tài khoản “Google” có kích hoạt bảo mật 2 lớp, thì tài khoản của bạn vẫn an toàn! Nhớ rằng yếu tố bảo mật đầu tiên là Knowledge (ví dụ như mật khẩu) và tin tặc có thể lấy được nó từ xa. Yếu tố bảo mật thứ hai là Possession (ví dụ như điện thoại) và tin tặc thường không thể lấy nó từ xa. Nếu không tận tay lấy thiết bị tin cậy của bạn, tin tặc sẽ không thể cung cấp bằng chứng cần thiết về yếu tố Possession trong quá trình đăng nhập và tài khoản của bạn sẽ không bị đánh cắp.
Người đọc tinh ý sẽ chú ý rằng tôi dùng từ “thường không thể lấy nó từ xa”. Một điểm đáng tiếc là một vài cài đặt 2FA phổ biến không thực sự tuân theo định nghĩa “cái gì đó mà bạn sở hữu” và do đó có nguy cơ bị tấn công từ xa. Hãy tiếp tục theo dõi series này nhé, chúng tôi sẽ phân tích điều đó với những bài viết cụ thể về các phương thức 2FA.
“Okay, tôi sẽ không sử dụng lại mật khẩu nữa.” Tuy nhiên bạn vẫn cần 2FA đấy.
Sau khi nhận ra việc tài khoản dùng chung mật khẩu dễ bị hack như thế nào, bạn bắt đầu sử dụng mật khẩu riêng cho mỗi tài khoản. Với ví dụ trên, giờ đây lỗ hổng ở “Một trang web về mèo” sẽ không còn đe dọa đến tài khoản “Google” nữa dù bạn không kích hoạt 2FA.
Giả sử bạn không bận 2FA và “Google” bị hack. Nhớ rằng “Google” có một đội kỹ sư khủng và họ lưu mật khẩu vào DB một cách bảo mật. Không may là điều đó không có nghĩa rằng mật khẩu của bạn sẽ an toàn khi mà tin tặc download được DB. Cần hẳn một bài riêng để trình bày chi tiết về cách để lưu mật khẩu một cách an toàn vào DB, tuy nhiên có một vài nội dung quan trọng mà chúng tôi sẽ trình bày ở mức độ tổng quan để bạn có thể hiểu được bằng cách nào tin tặc có thể lấy được mật khẩu của bạn thông qua việc hack DB.
Đơn giản thì, mật khẩu mà bạn chọn khi mà tạo tài khoản không được lưu trực tiếp vào DB vì nếu thế tin tặc sau khi hack được DB thì có ngay mật khẩu của người dùng. Thay vào đó, mật khẩu mà bạn điền khi đăng ký tài khoản sẽ đi qua một hàm băm mật mã và kết quả của hàm băm đó sẽ được lưu vào DB. Tôi sẽ không trình bày tràng giang đại hải về hàm băm mật mã đâu, nhưng có một vài thuộc tính quan trọng của nó liên quan đến bài viết này. Đầu tiên thì một input sẽ cho ra 1 output duy nhất. Thứ hai, với một output cho trước thì việc tìm ra input là không thể về mặt tính toán, hàm băm mật mã là hàm một chiều. Mỗi lần bạn đăng nhập vào tài khoản, hệ thống sẽ băm mật mã mà bạn gõ và so sánh kết quả với chuỗi được lưu trong DB, nếu giống nhau thì hệ thống sẽ biết được bạn đã nhập đúng mật khẩu và cho phép bạn truy cập!
Thậm chí là khi DB bị hack thành công thì tin tặc chỉ có kết quả của hàm băm chứ không phải là mật khẩu. Bởi vì việc tính toán ngược từ output ra input là không thể nên tin tặc sẽ phải dành nhiều thời gian và công sức để xác định được mật khẩu của người dùng. Và nó trở thành một trò đoán mò. Tin tặc sẽ chạy 1 phần mềm tạo ra tất cả những tổ hợp có thể của chữ cái, chữ số, ký hiệu rồi băm nó ra và so sánh với giá trị trong DB. Nếu mà khớp nhau thì họ sẽ có được mật khẩu của bạn! Vì việc đoán mò trên rất lằng nhằng về mặt kỹ thuật nên sẽ tốn khá nhiều thời gian, đặc biệt là với những mật khẩu dài.
Tin tặc là một nhóm người thông minh, họ biết điều đó nên sẽ không ngồi đoán mò tất cả những tổ hợp có thể như là “a”, rồi “aa”, rồi “aaa”. Thay vào đó họ sẽ sử dụng nhiều chiến lược để xem những đáp số nào có khả năng hơn. Một trong những chiến lược đó là sử dụng từ điển mật khẩu, tức là một danh sách dài những mật khẩu được thu thập từ các lần hack trước trên mạng. Nếu mà ai đó dùng một mật khẩu phổ biến có trong danh sách thì bùm, quá là dễ đoán rồi. Tin tặc cũng sử dụng tâm lý học để phân tích cách mà người dùng thường đặt mật khẩu. Ví dụ như ngày sinh, tên của người thân quen, số điện thoại, một tổ hợp thường thấy trên bàn phím như qwerty… Những điều trên tạo ra những mật khẩu cực kỳ yếu vì tin tặc sẽ thử chúng đầu tiên.
Thế nên tip ở đây là: mật khẩu không chỉ cần duy nhất, mà còn phải mạnh nữa. Một mật khẩu mạnh thường dài và không theo một khuôn mẫu nào cả.
Quay trở lại trường hợp khi mà “Google” bị hack và tin tặc có được chuỗi băm mật khẩu của người dùng. Mặc dù bạn sử dụng mật khẩu riêng cho “Google” và “Một trang web về mèo”, tin tặc vẫn có khả năng đoán được mật khẩu của bạn vì bình thường người ta cũng ít khi đặt được mật khẩu mạnh. Một khi mà tin tặc đoán được mật khẩu, tài khoản của bạn sẽ bị chiếm dụng và gần như là mất mãi mãi. Trừ khi bạn kích hoạt 2FA!
Không có yếu tố bảo mật thứ hai (ví dụ như là Possession), tin tặc không thể nào đăng nhập vào tài khoản của bạn. Tài khoản của bạn khả năng cao vẫn an toàn vì chỉ có bạn có quyền truy cập vật lý vào thiết bị tin cậy của mình.
Người đọc tinh ý sẽ để ý thấy tôi dùng từ “khả năng cao vẫn an toàn”. Một vài cách thức cài đặt 2FA dễ bị bẻ khoá hơn những cách khác khi mà tin tặc đã truy cập được vào toàn bộ DB. Tiếp tục tìm hiểu về các phương thức đó qua các bài tiếp theo của series này nhé.
Một chút lạc đề nhé: Phần mềm quản lý mật khẩu
Bạn có thể thấy rằng chúng ta đã dành khá nhiều thời gian phân tích về các mật khẩu yếu như là lý do để sử dụng 2FA. Vậy tại sao chúng ta không dạy mọi người cách đặt mật khẩu mạnh, duy nhất mà tin tặc không thể phá được và cho 2FA vào dĩ vãng?
Đó thực sự là một câu hỏi hay đó!
Sẽ là lý tưởng nếu tất cả mọi người đều sử dụng mật khẩu mạnh và duy nhất cho mỗi tài khoản online của họ. Nhưng như chúng tôi đã đề cập, thường thì mọi người khá tệ trong việc nghĩ ra mật khẩu tốt và không thể nhớ hết chúng. May mắn thay đã có giải pháp cho vấn đề này!
Một phần mềm quản lý mật khẩu có thể tạo ra những mật khẩu mạnh và duy nhất cho mỗi tài khoản online của bạn và lưu lại chúng, nhờ đó mà bạn không cần phải nhớ nữa. Thứ duy nhất cần phải nhớ đấy là một mật khẩu mạnh và duy nhất để mở khóa phần mềm quản lý mật khẩu.
Sử dụng phần mềm quản lý mật khẩu là một cách đơn giản mà hiệu quả để quản lý mật khẩu. Dù vậy thì vẫn chưa nhiều người sử dụng dù chúng đã xuất hiện nhiều năm trở lại đây. Trong một khảo sát năm 2017, Pew Research ghi chú rằng:
Chỉ 12% người sử dụng Internet từng sử dụng phần mềm quản lý mật khẩu và chỉ có 3% nói rằng họ phụ thuộc vào nó.
Cộng đồng công nghệ nên tiếp tục phổ cập cho người dùng về những thói quen tốt liên quan đến mật khẩu và lợi ích khi sử dụng phần mềm quản lý mật khẩu, dù sẽ mất thời gian dài để có thể đạt được hiệu quả.
Trong thời gian đó thì điều mà các nhà cung cấp dịch vụ có thể làm đấy là đảm bảo rằng người dùng tuân theo các quy tắc tốt về mật khẩu. Ví dụ nhà cung cấp có thể dùng một bộ đo nào đó để khuyến khích người dùng chọn những mật khẩu mạnh, nhưng lại không thể làm gì được việc người dùng dùng một mật khẩu cho nhiều tài khoản.
Tuy nhiên, nhà cung cấp dịch vụ biết rằng người dùng của họ có đang kích hoạt 2FA hay không và cũng biết rằng 2FA là hoàn toàn duy nhất đối với dịch vụ của họ do đó nó không bị ảnh hưởng bởi lỗ hổng của dịch vụ khác. Vì nhà cung cấp dịch vụ không thể nào bắt người dùng thay đổi thói quen của mình với mật khẩu, đặc biệt là việc sử dụng lại mật khẩu, thế nên 2FA là một công cụ hữu dụng để nhà cung cấp khuyến khích (hoặc buộc) người dùng sử dụng để bảo vệ tài khoản của mình tốt hơn.
Cùng xem xét một vài trường hợp khác khi mà cả người dùng và nhà cung cấp dịch vụ đều thực hiện tốt các vấn đề liên quan đến bảo mật và 2FA sẽ tăng cường bảo mật như thế nào!
“Okay! Tôi sẽ sử dụng mật khẩu mạnh và duy nhất cho mỗi tài khoản từ bây giờ!” Tuyệt vời! Nhưng bạn vẫn nên sử dụng 2FA đó, không đùa đâu.
Giờ đây bạn đã hiểu rõ mức độ nguy hiểm của việc sử dụng chung mật khẩu cho nhiều tài khoản và mật khẩu yếu, bạn tận dụng phần mềm quản lý mật khẩu để tạo ra mật khẩu mạnh và duy nhất cho mỗi tài khoản. Tuyệt vời! Giờ bạn đã an toàn hơn rất nhiều trên internet, nhưng chỉ ở những nơi cho phép bạn an toàn thôi. Rất nhiều nhà cung cấp dịch vụ buộc mật khẩu phải tuân theo những quy tắc chặt chẽ, ví dụ như là giới hạn độ dài 10 ký tự. Những trường hợp như thế buộc bạn phải đặt một mật khẩu yếu hơn, gây ra rủi ro cho tài khoản của bạn, và bạn chẳng thể làm gì để thay đổi điều đó cả. Trong hoàn cảnh đó, nếu nhà cung cấp hỗ trợ 2FA, thì rõ ràng là tài khoản của bạn đã được bổ sung thêm một lớp bảo mật. Bạn có sẽ thắc mắc là “nếu nhà cung cấp đã không hỗ trợ mật khẩu mạnh thì sao lại hỗ trợ 2FA?”. Đó là một câu hỏi hay mà không có nhiều lời giải đáp thỏa đáng. Không có lí do hợp lý nào để giới hạn mật khẩu theo cách như vậy trong một hệ thống hiện đại.
Thế nên hãy xem xét một trường hợp khác với dịch vụ giả tưởng “Google” nhé. Trong ví dụ này thì bạn đang sử dụng một mật khẩu mạnh và duy nhất cho tài khoản “Google” và “Google” vẫn tuân theo những best practice để lưu mật khẩu. Đây chính là viễn cảnh lý tưởng! Đáng tiếc là, yếu tố bảo mật Knowledge (ví dụ như mật khẩu) vẫn dễ bị đánh cắp với nhiều loại tấn công khác. Hãy xem xét ba hình thức tấn công phổ biến nhất: Man in the middle attack, phishing và malware/keyloggers.
“Hacker đánh cắp mật khẩu của tôi khi mà tôi đang uống cafe!” 2FA vs Man in the Middle attack
Giả sử bạn đang ngồi thưởng thức cafe và kết nối với Wifi miễn phí. Đây chính là cơ hội tuyệt vời để tin tặc thực hiện Man in The Middle (MITM) attack, kiểu tấn công mà cho phép họ xen vào và đọc toàn bộ lưu lượng truy cập web của bạn. (Một chút ngoài lề, HTTPS giúp ngăn chặn MITM attack, bạn nên cài đặt HTTPS Everywhere để tận dụng điều đó).
Ngay khi mà bạn nhập username/mật khẩu và click “login”, tin tặc sẽ có được mật khẩu của bạn. Lúc này mật khẩu mạnh yếu duy nhất hay không không quan trọng nữa. Giờ đây họ có thể đăng nhập vào tài khoản “Google” của bạn sử dụng username/mật khẩu của chính bạn.
“Ê đợi đã”, bạn nói, “Khi mà 2FA được kích hoạt thì tôi vẫn cần chứng minh với website là tôi đang có quyền truy cập vào điện thoại mà tôi sở hữu mà. Thường thì website sẽ yêu cầu tôi nhập thêm một số thông tin lúc đăng nhập mà, đúng không? Ví dụ, dịch vụ có thể sẽ gửi một mã bảo mật đến điện thoại của tôi, hoặc là tôi sẽ tìm mã bảo mật trong ứng dụng mà tôi đã cài đặt. Nếu tin tặc có thể đọc toàn bộ lưu lượng web của tôi, thì họ cũng có thể lấy được mã 2FA trong quá trình đăng nhập mà?”
Những điều bạn vừa nói hầu như là đúng!
Trong khi hầu hết các cài đặt 2FA đều thể bảo vệ người dùng trước MITM attack, thì có một phương thức 2FA gọi là U2F có khả năng chống lại được MITM attack tốt hơn nhiều. Chúng tôi sẽ trình bày về U2F ở một trong các bài viết sau nhé.
Tin tặc sẽ chỉ có thể đăng nhập vào tài khoản của bạn 1 lần dựa vào username/mật khẩu và mã 2FA vừa lấy được. Tại sao lại chỉ 1 lần? Một trong những thuộc tính quan trọng của 2FA là một mã 2FA chỉ hợp lệ trong một khoảng thời gian ngắn, cho là một vài phút đi, và chỉ có thể được sử dụng một lần. Việc tin tặc đăng nhập được vào tài khoản của bạn chẳng phải là điều tốt lành gì, nhưng dù sao vẫn chưa phải là mất tất cả!
Một vài nhà cung cấp dịch vụ đã tỉnh táo yêu cầu người dùng xác nhận bảo mật lại trước khi thực hiện một số hành động nhạy cảm, ví dụ như thay đổi địa chỉ email, mật khẩu, thiết lập 2FA, thực hiện một giao dịch tài chính… Những biện pháp đó ngăn tin tặc không thể đăng xuất các phiên đăng nhập trước đó của bạn vì tin tặc không có mã 2FA để xác thực khi hệ thống yêu cầu lần 2. Lý tưởng thì nhà cung cấp sẽ gửi cho bạn một email để báo cho bạn biết rằng có ai đó đã cố thực hiện những hành động nhạy cảm đó với tài khoản của bạn, điều đó giúp bạn có thể đổi mật khẩu và kết thúc phiên đăng nhập của tin tặc.
Dù không phải tất cả phương thức 2FA đều có thể chặn được MITM attack khi nó xảy ra lần đầu tiên, rõ ràng là bạn nên sử dụng 2FA, đặc biệt là khi nhà cung cấp dịch vụ có những cơ chế để giảm thiểu rủi ro và ngăn chặn việc mất tài khoản vĩnh viễn.
“Tôi vô tình ĐƯA mật khẩu cho hacker!” 2FA vs phishing
Như Jimmy Kimmel đã thể hiện một cách thú vị, cách tốt nhất để lấy mật khẩu của ai đó là chỉ cần hỏi họ thôi!
Đây chính là cách tiếp cận mà tin tặc thực hiện khi chúng tiến hành các cuộc tấn công lừa đảo (phishing). Thông thường, nó bắt đầu bằng việc người dùng nhận được email có chứa liên kết lừa đảo. Khi người dùng nhấp vào liên kết, một trang web trông giống như trang web họ dự định truy cập hiện lên, nhưng thực sự là một trang web giả mạo do tin tặc kiểm soát.
Tấn công lừa đảo là một vấn đề lớn trong hầu hết các ngành công nghiệp. Anti Phishing Working Group (APWG) đã nêu trong báo cáo Q4 năm 2016 của họ rằng các chiến dịch tấn công lừa đảo trong năm 2016 đã phá vỡ mọi kỷ lục của những năm trước với hơn 1,2 triệu cuộc tấn công lừa đảo, tăng 65% so với năm 2015. Để đưa ra một ví dụ gần gũi hơn cho tất cả những người dùng Gmail, Google gần đây đã phát hiện ra rằng
Nạn nhân của lừa đảo có khả năng bị tấn công thành công gấp 400 lần so với một người dùng Google ngẫu nhiên.
Sau khi nhập thông tin đăng nhập trên trang lừa đảo giả, bạn đã đưa tận tay yếu tố xác thực đầu tiên của bạn (một thứ gì đó mà bạn biết) cho các tin tặc có thể sử dụng ngay để đăng nhập vào tài khoản của bạn trên trang web thật. Sau đó, tin tặc có thể yêu cầu yếu tố xác thực thứ hai của bạn (một thứ gì đó mà bạn có) giống như trang web thật. Khả năng cao bạn sẽ điền mã 2FA để đăng nhập, điều này vô tình cấp cho tin tặc quyền truy cập ngay vào tài khoản của bạn. Hãy nhớ rằng tất cả điều này được tự động hóa bằng phần mềm và có thể xảy ra trong thời gian thực. Rất khó phát hiện nếu không để ý URL của trang web.
Độc giả tinh ý sẽ lại để ý cách dùng từ của tôi. Trong khi hầu hết các phương thức 2FA không bảo vệ bạn khỏi các cuộc tấn công lừa đảo, U2F lại làm được điều đó! Hãy theo dõi về tấn công lừa đảo trong các bài tiếp theo của series này nhé.
“Hackers đánh cắp mật khẩu của tôi ngay trên thiết bị của tôi!” 2FA vs malware và keyloggers
Trong cùng một nghiên cứu gần đây, Google cũng kết luận rằng “hiện tại thì mối đe dọa gây ra bởi rò rỉ thông tin xác thực và tấn công lừa đảo lớn hơn keylogger”. Mặc dù nguy cơ của phần mềm độc hại và keylogger ít hơn so với tấn công lừa đảo, nạn nhân của keylogger vẫn có khả năng bị tấn công thành công cao hơn khoảng 40 lần so với người dùng Google ngẫu nhiên. Rõ ràng, đó vẫn là một vấn đề rất lớn!
Phần mềm độc hại, bao gồm keylogger, có thể xâm nhập vào thiết bị của bạn theo bất kỳ cách nào. Bạn có thể trở thành nạn nhân của một email lừa đảo và tải xuống tệp đính kèm email độc hại. Hoặc có thể do bạn click vào đâu đó trên một trang web vớ vẩn. Nó thậm chí có thể đến từ một browser extension mà bạn đã cài đặt; nếu tài khoản tạo extension bị hack, thì mã độc có thể được chèn vào download xuống trong lần cập nhật tự động tiếp theo. Bất kể nó xâm nhập vào thiết bị của bạn như thế nào, phần mềm độc hại có thể là một vấn đề lớn khi được cài đặt.
Như tên của nó, keylogger có thể ghi lại từng ký tự mà bạn nhập trên thiết bị của mình. Ngay cả khi bạn được kết nối an toàn với trang web “Google” xịn, phần mềm độc hại trên máy tính của bạn có thể đánh cắp username/mật khẩu của bạn ngay khi bạn nhập chúng và gửi chúng cho tin tặc. Bạn biết sẽ nguy hiểm thế nào nếu điều đó xảy ra.
Các loại phần mềm độc hại khác có thể được thiết kế để đánh cắp thông tin cụ thể từ thiết bị của bạn, chẳng hạn như authentication secret hoặc token.
Cách chính để chống phần mềm độc hại là không truy cập phần mềm ngay từ đầu bằng cách thận trọng trên internet và cảnh giác về trang web mình chuẩn bị truy cập, liên kết mà mình chuẩn bị click . Rõ ràng, lời khuyên đó là vô ích nếu máy tính của bạn đã bị nhiễm. Nếu đã bị nhiễm phần mềm độc hại rồi thì giải pháp tốt nhất là cập nhật phần mềm chống virus và phần mềm độc hại.
May mắn thay, một số phương thức 2FA có thể giúp bảo vệ tài khoản của bạn ngay cả khi máy tính của bạn bị nhiễm phần mềm độc hại!
Hãy tưởng tượng rằng bạn đang đăng nhập vào tài khoản “Google” trên một thiết bị có chứa keylogger. Username/mật khẩu của bạn sẽ bị lộ vì chúng được nhập trên máy tính của bạn. Tài khoản của bạn có thể vẫn an toàn nếu bạn sử dụng phương pháp 2FA tên là “Out of band” (OOB). Trong trường hợp đó, bạn không phải gõ bất cứ thứ gì vào máy tính bị nhiễm phần mềm độc hại của bạn, vì vậy nó không thể bị đánh cắp. Khi sử dụng OOB, yếu tố xác thực Knowledge (ví dụ như mật khẩu) được gửi qua kênh chính (ví dụ như kết nối web trong trình duyệt của bạn), trong khi yếu tố xác thực Possession của bạn (ví dụ như điện thoại), được xác minh qua kênh phụ (ví dụ như kết nối độc lập với điện thoại của bạn).
Hãy theo dõi phần còn lại của loạt bài nhé, chúng ta sẽ thảo luận về phương pháp 2FA nào sẽ không có tác dụng trước phần mềm độc hại và phương pháp nào khả năng chống lại cao hơn!
Tổng kết
Chúng tôi đề cập đến rất nhiều thứ trong bài viết này. Cùng tóm tắt lại một chút nhé.
Thuật ngữ 2FA thường đề cập đến sự kết hợp của hai yếu tố xác thực Possession và Knowledge. Về lý thuyết, tin tặc sẽ phải sử dụng các loại tấn công khác nhau để đánh cắp thành công cả thứ bạn biết và thứ bạn có.
Yếu tố Knowledge (ví dụ như mật khẩu) dễ bị đánh cắp trước nhiều loại tấn công từ xa khác nhau. Vấn đề đầu tiên là chúng ta quản lý mật khẩu. Chúng ta đã thảo luận về việc 2FA hữu ích nhất khi bạn sử dụng lại mật khẩu giữa các tài khoản và/hoặc sử dụng mật khẩu yếu có thể dễ dàng bị tin tặc bẻ khóa trong trường hợp DB bị hack. Tốt nhất, bạn nên sử dụng trình quản lý mật khẩu để tạo mật khẩu mạnh, duy nhất cho mỗi tài khoản của mình.
Ngay cả đối với người dùng quản lý mật khẩu tốt, có nhiều cách khác mà mật khẩu của bạn có thể bị đánh cắp từ xa. 2FA nhằm mục đích cung cấp bảo mật tốt hơn bằng cách buộc tin tặc đánh cắp thứ gì đó trong quyền sở hữu vật lý của bạn (Possession). Thật không may, nhiều phương pháp 2FA cũng dễ bị tấn công trước các loại tấn công từ xa khác nhau. Tùy thuộc vào phương pháp 2FA được sử dụng, yếu tố Possession của bạn có thể chống lại man in the middle attack, phishing và thậm chí là malware/keyloggers.
Trong các bài viết sau, chúng tôi sẽ đi sâu vào chi tiết về các loại 2FA phổ biến nhất. Chúng tôi sẽ giải thích cách chúng hoạt động và thảo luận về việc liệu nó có thể chống lại các cuộc tấn công từ xa này hay không. Thêm vào đó, chúng tôi sẽ làm nổi bật một số đánh đổi khả năng sử dụng có thể biết được phương pháp nào phù hợp nhất với bạn (hoặc người dùng của bạn)!