Tháng 9 vừa qua, Cục điều tra liên bang Mỹ công bố một ghi chú cảnh báo các công ty của nước này về việc tội phạm mạng đang sử dụng nhiều biện pháp để qua mặt các kỹ thuật xác thực đa yếu tố phổ biến trên thị trường.
Cảnh báo của FBI
Cách đơn giản nhất và cũng phổ biến nhất là gian lận trao đổi SIM, trong đó, kẻ tấn công thuyết phục một mạng di động (hoặc mua chuộc nhân viên) để chuyển số điện thoại di động mục tiêu, cho phép chúng nhận mã bảo mật 2FA được gửi qua tin nhắn SMS. Tội phạm đã sử dụng phương pháp này để trộm tiền trong tài khoản ngân hàng, trộm tiền mã hóa từ các ví điện tử hay sàn giao dịch, tấn công các dịch vụ kiểu PayPal. Ngay tại Việt Nam, chúng ta cũng đã từng thấy một số trường hợp khách hàng bị “cướp SIM” để trộm tiền từ tài khoản ngân hàng. Từ góc độ của người dùng thì đây là kiểu tấn công rất khó chống đỡ.
Kiểu tấn công thứ hai là sử dụng kỹ thuật phishing để lừa người dùng nhập tên đăng nhập/mật khẩu và mã xác thực dùng một lần (OTP) vào một trang web giả. Tháng 9 vừa qua, một loạt các tài khoản YouTube được nhiều người theo dõi đã bị hack theo cách này.
Kiểu tấn công tinh vi hơn là cướp phiên làm việc (session hijack) khi người dùng đăng nhập vào trang web chính thức nhưng thông tin đăng nhập và mã xác thực dùng một lần bị đánh cắp trong quá trình truyền từ người dùng tới website. Theo FBI, một số trường hợp trong năm 2019, lỗ hổng bảo mật trên trang web của ngân hàng đã cho phép tin tặc bỏ qua mã PIN và câu hỏi bảo mật sau khi lừa lấy được các thông tin cơ bản của chủ tài khoản.
Những thông tin trên đây không phải là mới và đã được nhiều người đã biết tới. Vậy cảnh báo của FBI có thực sự cần thiết với các công ty? Vì dù sao thì các kỹ thuật xác thực đa yếu tố như OTP gửi qua SMS vẫn hoạt động tốt và đáp ứng yêu cầu của phần lớn người dùng (cả người dùng nội bộ lẫn khách hàng). Hơn nữa, dù có thể bị qua mặt nhưng các kỹ thuật xác thực đa yếu tố phổ biến vẫn tốt hơn là chỉ xác thực người dùng bằng mật khẩu. Vấn đề là một số người dùng quan trọng (cán bộ quản trị các hệ thống trọng yếu, khách hàng có số dư và hạn mức giao dịch cao...) - những mục tiêu “giá trị” của tin tặc cần được bảo vệ bằng những biện pháp kỹ thuật cao cấp, an toàn hơn. Họ có thể sử dụng các kỹ thuật xác thực đa yếu tố an toàn hơn như token FIDO2 để tránh bị tấn công phishing. Về lâu dài, giải pháp có thể là một tiêu chuẩn như WebAuthn. Sau đây chúng ta sẽ tìm hiểu về những công nghệ xác thực tiên tiến đó và khả năng ứng dụng của chúng.
U2F giúp bảo vệ người dùng khỏi các hình thức phishing
Dù sử dụng OTP gửi qua SMS hay OTP do ứng dụng di động sinh ra, giao dịch ngân hàng trực tuyến đều có thể bị tấn công phishing do người sử dụng không biết trang web mà họ đang truy cập có đúng là trang web của ngân hàng hay không. Các hướng dẫn phòng chống phishing thường yêu cầu người sử dụng kiểm tra địa chỉ trang web nhưng trong thực tế, đa số người sử dụng không biết hay không nhớ được cách kiểm tra (và tin tặc thì liên tục sáng tạo ra những cách lừa đảo mới). Theo một chuyên gia bảo mật, yêu cầu khách hàng tự kiểm tra địa chỉ trang web là một đòi hỏi duy ý chí.
Việc kiểm tra địa chỉ trang web cũng không có tác dụng là mấy vì có rất nhiều mẹo mà kẻ tấn công có thể sử dụng để đánh lừa cả những người chuyên nghiệp. Ngoài việc hướng dẫn khách hàng kiểm tra địa chỉ trang web, các ngân hàng có thể sử dụng chứng chỉ EV, với loại chứng chỉ này, tên ngân hàng sẽ hiển thị trên thanh địa chỉ. Tuy nhiên, các nhà nghiên cứu ở Đại học Stanford chỉ ra rằng kẻ tấn công dễ dàng lừa người dùng bằng cách tạo một thanh địa chỉ giả mạo (tấn công “hình trong hình”). Liên minh Xác thực FIDO đã đưa ra chuẩn U2F và các token tuân theo chuẩn này giúp người dùng khỏi phải kiểm tra địa chỉ trang web mà vẫn có thể giao dịch an toàn. Trình duyệt web của người dùng sẽ trực tiếp gửi địa chỉ trang web đến cho thiết bị U2F và thiết bị U2F sẽ thay người dùng kiểm tra địa chỉ có đúng hay không. Nói một cách đơn giản, với mỗi địa chỉ khác nhau thiết bị U2F sẽ trả về một mã xác thực khác nhau, do đó, nếu người dùng bị lừa truy cập địa chỉ http://phishing.com, trang web này không thể lấy cấp mã xác thực của https://banking.com vì địa chỉ https://banking.com khác với http://phishing.com. Đây là một ưu điểm nổi bật của U2F so với các kiểu xác thực bằng OTP truyền thống. Hơn thế, U2F có thể được cắm vào một máy tính nhiễm mã độc mà mã đăng nhập vẫn được đảm bảo an toàn (tuy nhiên, mã độc có thể gây ra nhiều vấn đề khác ngoài quá trình xác thực). Do U2F sử dụng kết nối qua cổng USB, sóng NFC hoặc Bluetooth nên nhà cung cấp dịch vụ trực tuyến có thể tin tưởng rằng người dùng thực đang ở ngay gần địa điểm đăng nhập chứ không như trường hợp tin tặc lừa người dùng để lấy OTP và đăng nhập ở một địa điểm khác.
Khả năng chống phishing của U2F đã được chứng minh tại Google. Sau khi triển khai thiết bị token bảo mật theo tiêu chuẩn U2F cho hơn 85 nghìn nhân viên, Google không ghi nhận bất kỳ trường hợp nào bị chiếm tài khoản trong gần 2 năm. Kết quả nghiên cứu cho thấy thời gian đăng nhập giảm được 2/3 vì người dùng chỉ cần nhấn vào nút bấm trên token thay cho việc nhập một đoạn mã, số lỗi đăng nhập giảm xuống là 0, thời gian hỗ trợ các vướng mắc của người dùng trong quá trình đăng nhập giảm hàng ngàn giờ, giúp Google tiết kiệm đáng kể chi phí.
Tuy giá của token U2F không rẻ nhưng một token có thể dùng chung cho nhiều dịch vụ khác nhau và các nhà cung cấp dịch vụ trên mạng sẽ không phải tốn tiền cho những khách hàng đã có token U2F. Dù có thể dùng một token U2F để xác thực cho nhiều dịch vụ khác nhau nhưng việc đánh mất token U2F không làm lộ bất kỳ tài khoản nào. Chủ tài khoản chỉ cần xóa nó khỏi danh sách thiết bị xác thực đăng ký với dịch vụ trực tuyến. Người nhặt được token U2F không thể biết nó được liên kết với các tài khoản nào và thậm chí có thể dùng ngay token đó để bảo vệ các tài khoản của mình. Hơn thế, vì U2F là chuẩn mở nên khi các công ty sản xuất token U2F ngày càng nhiều thêm thì giá cả sẽ giảm thêm. Ngay tại Việt Nam, cũng đã có đơn vị sản xuất token U2F. Tháng 8/2018, Liên minh Xác thực FIDO (FIDO Alliance) có trụ sở tại bang California, Hoa Kỳ, đã cấp chứng nhận cho sản phẩm KeyPass U2F Token của Công ty Cổ phần Tập đoàn MK (MK Group) đạt tiêu chuẩn U2F.
WebAuthn và xác thực không dùng mật khẩu
Ngày 20/11/2018, Microsoft thông báo rằng 800 triệu chủ tài khoản Microsoft có thể đăng nhập vào các dịch vụ như Outlook, Office, Skype và Xbox Live mà không cần mật khẩu. Thông báo này là một phần của quá trình tăng tốc để tiến tới một thế giới mạng không dùng mật khẩu, trong một năm mà Mozilla Firefox, Google Chrome và Microsoft Edge đều triển khai hỗ trợ công nghệ xác thực chủ chốt WebAuthn.
Một trong những lý do khiến mật khẩu tồn tại trong một thời gian rất dài là nó cực kỳ dễ hiểu. Trong khi đó, xác thực không mật khẩu hoạt động theo một cách khác, không dễ để hình dung và đi kèm với một loạt các thuật ngữ và tiêu chuẩn mới như FIDO2, WebAuthn và CTAP. Hơn thế, nó rất dễ bị hiểu nhầm, nhất là với những người đã quen với việc sử dụng mật khẩu. Họ nghĩ rằng nếu sử dụng vân tay để đăng nhập vào một trang web nghĩa là chia sẻ dữ liệu vân tay với trang web đó (trong khi điều này hoàn toàn không xảy ra). Vì thế, họ nghĩ rằng, tuy mật khẩu dễ bị lộ, nhưng ít nhất vẫn có thể thay đổi được (trong khi không thể thay đổi vân tay).
Để giải mã câu chuyện hoang đường này, hãy cùng xem xét vấn đề một cách cụ thể. Khi bạn đăng ký với một website, bạn phải báo cho nó biết bạn dùng tên đăng nhập nào và chọn mật khẩu là gì. Và một khi bạn đã chia sẻ mật khẩu với website, bạn buộc phải tin rằng nó sẽ lưu trữ mật khẩu của mình theo cách an toàn. Người dùng không có cách nào kiểm soát được cách quản lý mật khẩu của nhà cung cấp dịch vụ. Và thực tế họ thực hiện điều đó thế nào thì những ai chịu khó theo dõi tin tức đều đã biết rằng, các vụ để lộ mật khẩu của người dùng liên tiếp xảy ra, kể cả với những công ty lớn và có danh tiếng. Trong khi đó, với xác thực không dùng mật khẩu, người dùng không phải chia sẻ mật khẩu hay bất kỳ thông tin bí mật nào với các website. Vì kỹ thuật này sử dụng mã hóa khóa công khai với một cặp khóa thì khóa bí mật do người dùng giữ và các website cung cấp dịch vụ chỉ nhận được khóa công khai. Vì khóa công khai không cần giữ bí mật nên người dùng sẽ không phải lo ngại việc website có giữ nó an toàn không, không lo bị lộ do các sự cố an toàn thông tin và thậm chí có thể thoải mái mang theo nó đi bất cứ đâu. Người dùng xác thực bản thân bằng cách dùng khóa bí mật để mã hóa một số ngẫu nhiên có giá trị rất lớn do website gửi tới. Website giải mã kết quả nhận được bằng khóa công khai và nếu kết quả của quá trình giải mã trùng với giá trị nó gửi tới người dùng thì nhà cung cấp dịch vụ có thể tin rằng người dùng đăng nhập chính là chủ sở hữu của khóa bí mật.
Tất nhiên, đó mới là lý thuyết. Còn trên thực tế, chúng ta sẽ cần tới một Authenticator để tạo và lưu trữ các khóa, cùng với một tập các quy tắc cho phép máy tính, trình duyệt và các website trao đổi thông tin và thực hiện quá trình xác thực. WebAuthn chính là tập các quy tắc đó, là giao diện lập trình ứng dụng mà các website và các trình duyệt sử dụng để xác thực với mã hóa khóa công khai thay cho mật khẩu. Tất cả các trình duyệt chính trên thị trường đã biết cách làm việc với WebAuthn, việc còn lại là những người chủ các website thay đổi mã lệnh của họ. Thay vì đưa ra biểu mẫu đăng nhập với tên người dùng và mật khẩu, các website có thể xác thực người dùng bằng mã lệnh JavaScript nhúng trong các trang web. Đoạn mã đó dùng WebAuthn API để yêu cầu trình duyệt tạo thông tin đăng nhập khi người dùng muốn đăng ký dịch vụ hay nhận thông tin đăng nhập khi người dùng cần truy cập dịch vụ. Tuy mã lệnh JavaScript được tải xuống cùng với trang web và chạy trên trình duyệt của người dùng nhưng nó vẫn được coi là một phần của website nên nó không được tin cậy (cho phép truy xuất khóa bí mật hay bất kỳ thông tin bí mật nào khác của người dùng). Thay vào đó, mã lệnh JavaScript sẽ đóng vai trò đứng giữa, yêu cầu trình duyệt thực hiện các thao tác bí mật và sau đó, chuyển thông tin qua lại giữa trình duyệt và máy chủ web. Bản thân trình duyệt cũng chỉ nhận các yêu cầu chứ không thực sự xử lý các thao tác đó. Authenticator mới chính là nơi thực hiện các thao tác bí mật.
Theo thiết kế, website mà bạn đăng nhập/đăng ký sử dụng dịch vụ không cần biết và không quan tâm việc người dùng lưu giữ khóa bí mật của họ như thế nào. Người dùng có thể sử dụng bất cứ thứ gì phù hợp với mình, đó có thể là công cụ được dựng sẵn trong hệ điều hành, chẳng hạn như tính năng nhận diện khuôn mặt Microsoft Windows Hello, hay một authenticator từ xa như điện thoại di động hay một thiết bị bảo mật.
Để hỗ trợ nhiều loại hình authenticator từ xa khác nhau, những nhà cung cấp chính cần thống nhất về một tập luật cách các trình duyệt và các authenticator nói chuyện với nhau. Tập luật đó sẽ giúp các trình duyệt không phải biết hay quan tâm đến các kiểu authenticator khác nhau, các nhà sản xuất hay các phiên bản khác nhau, do đó, cho phép các công ty cung cấp các giải pháp xác thực mới tham gia vào thị trường. Tập luật đó có tên là CTAP (Client to Authenticator Protocol), định nghĩa cách một clien như trình duyệt nói chuyện với một authenticator từ xa qua cổng USB, Bluetooth hay NFC (Near-field Communication).
Authenticator cung cấp dịch vụ mật mã học cho toàn bộ giao dịch, sinh và lưu trữ khóa của người sử dụng, mã hóa dữ liệu kiểm tra mà website gửi tới cho trình duyệt. Và điều tối quan trọng là authenticator phải xin phép người dùng trước khi thực hiện các thao tác đó. Chẳng hạn như khi người dùng đăng nhập vào một website bằng dấu vân tay. Khi bạn truy cập website, trình duyệt sẽ yêu cầu trang đăng nhập. Mã lệnh của trang đăng nhập sử dụng API của WebAuthn API để yêu cầu trình duyệt ký một thông tin kiểm tra bằng khóa bí mật của người dùng. Trình duyệt chuyển thông tin đó tới authenticator và nó sẽ đề nghị người dùng cấp quyền ký, người dùng chấp thuận bằng việc đặt ngón tay vào thiết bị đọc vân tay. Authenticator kiểm tra thấy vân tay đúng là của bạn và ký thông tin kiểm tra rồi gửi lại dữ liệu mã hóa cho trình duyệt để chuyển tiếp cho mã lệnh JavaScript, từ đó, dữ liệu mã hóa lại được gửi đến máy chủ của website. Máy chủ giải mã bằng khóa công khai mà người dùng đã cung cấp khi đăng ký dịch vụ và xác nhận người dùng là hợp lệ.
Tuy các công việc hậu trường của quá trình này phức tạp hơn rất nhiều so với việc gửi mật khẩu tới cho website nhưng người dùng không cần làm gì. Họ không phải gõ hay nhớ một thứ gì. Họ chứng minh tư cách sử dụng dịch vụ của mình mà không phải lộ bất cứ thông tin bí mật nào và có thể thoải mái chuyển sang sử dụng một loại authenticator mới, an toàn hơn và thậm chí không dùng đến vân tay nữa.
Xác thực người dùng dịch vụ ngân hàng điện tử tại Việt Nam
Ngay từ ngày 31/3/2017, Ngân hàng Nhà nước đã ban hành quyết định số 630/QĐ-NHNN về kế hoạch áp dụng giải pháp về an toàn bảo mật trong thanh toán trực tuyến và thanh toán thẻ ngân hàng. Theo đó, các giao dịch được phân loại và phải áp dụng giải pháp xác thực tối thiểu căn cứ theo phân loại; OTP gửi qua SMS chỉ có thể dùng cho các giao dịch loại B còn các giao dịch cao cấp hơn (loại C và loại D) sẽ phải xác thực bằng Soft OTP/Token OTP hoặc thiết bị U2F/UAF,...
Để tuân thủ các quy định của Ngân hàng Nhà nước, ngày 01/7 vừa qua, nhiều ngân hàng như BIDV, Vietcombank, VPBank đã chuyển đổi bắt buộc phương thức xác thực chuyển khoản trực tuyến đối với khách hàng cá nhân có hạn mức lớn và với khách hàng doanh nghiệp. Soft OTP (hay Smart OTP - theo cách đặt tên của một số ngân hàng) giúp ngân hàng đảm bảo an toàn giao dịch mà không phải phụ thuộc vào khả năng kiểm soát SIM của các nhà mạng nhưng mức độ an toàn của nó có lẽ vẫn còn là một dấu hỏi. Thuật toán sinh số ngẫu nhiên của họ có tốt không, ứng dụng di động của họ đã được chống dịch ngược chưa, đã kiểm tra tính toàn vẹn của hệ điều hành di động chưa (chống root/jail break), họ lưu các thông tin quan trọng phục vụ việc sinh OTP ở đâu,... Nếu không làm tốt các khâu đó và để mã xác thực bị tin tặc đọc được một cách tự động/tìm ra cách sinh OTP, Soft OTP hoàn toàn có thể bị biến thành “No OTP” và khiến cho độ an toàn của các giao dịch ngân hàng trực tuyến giảm đi.
Để tránh việc phải tự đảm bảo/kiểm tra mức độ an toàn của Soft OTP, các ngân hàng có thể tìm hiểu và áp dụng các kỹ thuật xác thực mới như U2F hay WebAuthn từ các nhà cung cấp tin cậy. Trước đây, chủ các website còn phải đắn đo về chi phí mua token U2F cho khách hàng và lo ngại việc các nhà cung ứng dịch vụ khác có thể sử dụng token đó miễn phí. Nhưng đến nay, với việc những chiếc điện thoại Android chạy phiên bản 7.0 trở lên có thể được dùng như một token U2F độc lập thì khả năng ứng dụng U2F đã tăng lên rất nhiều, với chi phí gần như bằng không (vì hầu hết khách hàng sử dụng dịch vụ internet banking đều đã sử dụng điện thoại thông minh đời mới). Khách hàng sử dụng Windows 10 có thể dùng Windows Hello để xác thực bằng tính năng nhận diện khuôn mặt, mống mắt hoặc vân tay một cách an toàn, tiện lợi và việc cung cấp tính năng xác thực cao cấp cho khách hàng VIP sẽ giúp họ giao dịch một cách tự tin hơn đồng thời nâng cao hình ảnh của ngân hàng trong mắt những khách hàng “giá trị cao” này.
Tài liệu tham khảo:
- https://www.yubico.com
- https://krebsonsecurity.com
- https://fidoalliance.org
- https://vnhacker.blogspot.com
- https://vnexpress.net
- https://medium.com.
(Theo TCNH chuyên đề Tin học Ngân hàng số 8/2019)