Trình quản lý mật khẩu (Password managers) hiện đóng vai trò rất quan trọng trong việc bảo vệ an ninh thông tin không chỉ cho cá nhân mà còn cho doanh nghiệp. Những công cụ này giúp người dùng tạo ra và lưu trữ những mật khẩu mạnh mẽ, ngẫu nhiên cho mỗi tài khoản trực tuyến. Điều này giúp giảm thiểu đáng kể rủi ro liên quan đến việc lộ mật khẩu do các vụ rò rỉ từ những trang web không đảm bảo các tiêu chuẩn mã hóa chặt chẽ. Hơn nữa, một số trình quản lý mật khẩu tiên tiến ngày nay còn tích hợp thêm tính năng tự động đăng nhập, lưu trữ mã xác thực 2FA (TOTP), và đặc biệt là khả năng đồng bộ hóa mật khẩu giữa các thiết bị khác nhau, giúp người dùng dễ dàng truy cập tài khoản của mình mọi lúc mọi nơi.
Nếu bạn nghĩ việc lưu trữ mật khẩu trong một kho lưu trữ đã là điều gì đó quen thuộc, thì bạn không sai. Các phần mềm nổi tiếng như KeePass đã hiện diện trên thị trường từ nhiều năm trước. Tuy nhiên, việc đồng bộ hóa mật khẩu giữa các thiết bị chỉ thực sự trở nên phổ biến trong thời gian gần đây. Đây chính là yếu tố quyết định giúp các trình quản lý mật khẩu dựa trên đám mây trở thành những lựa chọn hấp dẫn cho người dùng. Liệu bạn có muốn áp dụng một trình quản lý mật khẩu mà yêu cầu bạn phải sao chép thủ công từng mật khẩu vào các thiết bị khác mỗi khi có thay đổi hay không?
Tuy nhiên, vấn đề đặt ra là nếu mật khẩu của bạn được đồng bộ hóa thông qua một nhà cung cấp đám mây, liệu rằng mật khẩu của bạn có thể bị lộ cho nhà cung cấp đó hay không?
Nhà cung cấp không thể đọc mật khẩu của bạn
Không ai muốn gánh nặng bảo mật mật khẩu của mọi người
Câu trả lời chính xác là không, nhà cung cấp dịch vụ đám mây không thể xem được mật khẩu đã được đồng bộ hóa của bạn. Điều này nghe có vẻ hiển nhiên, nhưng thực tế lại chứng minh rằng việc cung cấp mật khẩu dưới dạng văn bản rõ ràng cho một dịch vụ đám mây là một hành động rất không an toàn. Hệ thống hoạt động bằng cách mã hóa mật khẩu trên thiết bị của bạn trước khi gửi chúng đến nhà cung cấp, nhờ vậy mà chỉ có những mật khẩu đã được mã hóa được gửi đi. Những mật khẩu này sử dụng một khóa mã hóa được tạo ra từ mật khẩu chính của bạn, có nghĩa rằng nếu không có quyền truy cập vào mật khẩu chính, ngay cả nhà cung cấp cũng không thể giải mã dữ liệu của bạn.
Yếu tố cốt lõi ở đây là các ứng dụng và chương trình mà bạn sử dụng trên thiết bị của mình cần phải được bảo mật kỹ lưỡng. Điều này thường được thực hiện bởi các nhà cung cấp hàng đầu, khi họ đưa sản phẩm của mình để kiểm tra định kỳ bởi các công ty an ninh uy tín, hay thậm chí là công khai mã nguồn của sản phẩm thông qua hình thức mã nguồn mở. Khi bạn đăng nhập trên một thiết bị mới, bản sao mật khẩu đã được mã hóa của bạn sẽ được tải về thiết bị địa phương và sau đó được giải mã bằng khóa được tạo ra từ mật khẩu chính của bạn.
Đặc điểm hấp dẫn là điều này thể hiện kiến trúc zero knowledge, trong đó nhà cung cấp hoàn toàn không có bất kỳ thông tin nào về dữ liệu được lưu trữ trong hệ thống của họ. Họ chỉ chịu trách nhiệm về việc lưu trữ và truyền tải thông tin, nhưng không thể tiếp cận thông tin đó.
Trình quản lý mật khẩu sử dụng thủ thuật thông minh khi bạn đăng ký
Nếu bạn theo dõi, có thể bạn đã nhận ra một vấn đề cần lưu ý. Khi bạn đăng nhập vào một thiết bị mới, người dùng cần phải xác thực với nhà cung cấp để có quyền tải về kho mật khẩu. Một khi đã xác thực thành công, ứng dụng sẽ tải về kho mật khẩu và giải mã nó bằng các khóa được tạo ra từ mật khẩu chính của bạn. Tuy nhiên, nếu người dùng xác thực bằng cách cung cấp mật khẩu cho nhà cung cấp, có lẽ nhà cung cấp cũng cần thấy một phần nào đó của mật khẩu để có thể thực hiện việc xác thực người dùng? Liệu có cách nào mà nhà cung cấp không thấy mật khẩu thì họ vẫn có thể giải mã kho mật khẩu hay không?
Thủ thuật ở đây diễn ra tại bước người dùng đăng ký. Thay vì gửi một mật khẩu dưới dạng văn bản rõ ràng đến máy chủ (một mật khẩu rõ ràng sẽ chỉ được bảo mật qua HTTPS/SSL), khách hàng sẽ tự mã hóa mật khẩu và sau đó gửi đến nhà cung cấp. Khác với thông lệ của một số nhà cung cấp thực hiện ở phía máy chủ, việc mã hóa này sẽ tăng độ phức tạp cho nhiều tình huống, đặc biệt là khi bạn thay đổi mật khẩu. Lúc này nhà cung cấp chỉ thấy một phiên bản “băm” của mật khẩu chứ không nhìn thấy mật khẩu thực tế.
Khách hàng chỉ truyền tải mật khẩu đã được mã hoá
Mã băm là một hàm một chiều, tức là nó nhận đầu vào là mật khẩu gốc và tạo ra một giá trị băm tương ứng. Giá trị băm này có thể tái tạo bằng mật khẩu gốc, nhưng không thể phục hồi nguyên văn mật khẩu từ giá trị băm đã được tạo ra, chính vì lý do đó mà nó được gọi là hàm một chiều. Điều này là cần thiết với hầu hết các dịch vụ trực tuyến vì nó cho phép các nhà cung cấp lưu trữ mật khẩu theo cách mà mật khẩu chỉ có thể được xác thực mà không bị lộ.
Đối với các trình quản lý mật khẩu, hàm mã băm này diễn ra ngay trên thiết bị cục bộ khi bạn thực hiện quá trình đăng ký. Điều này có nghĩa là ứng dụng không bao giờ truyền tải mật khẩu chính của bạn trực tiếp đến nhà cung cấp, cho phép họ chỉ lưu trữ giá trị băm. Khi bạn đăng nhập từ một thiết bị mới, mỗi thiết bị sẽ tiến hành băm mật khẩu chính và gửi nó đến máy chủ của nhà cung cấp mà không bao giờ làm lộ mật khẩu gốc.
Các phương thức triển khai giữa các nhà cung cấp có thể có sự khác biệt, nhưng đây chính là một cái nhìn tổng quan về cách hoạt động của những trình quản lý mật khẩu “không tin cậy”.
Thay đổi mật khẩu của bạn thì sao?
Khi bạn thay đổi mật khẩu, toàn bộ quy trình lại diễn ra tương tự trên thiết bị cục bộ. Trình quản lý mật khẩu của bạn sẽ xác thực với nhà cung cấp, tải về và giải mã kho mật khẩu, sau đó mã hóa lại kho mật khẩu bằng mật khẩu mới mà bạn đã đặt. Cuối cùng, ứng dụng sẽ gửi giá trị băm của mật khẩu về nhà cung cấp cùng với kho mật khẩu đã mã hóa để lưu trữ.
Quên việc thiết lập lại mật khẩu của bạn
Khó khăn với kiến trúc này là bạn dễ dàng quên khả năng thiết lập lại mật khẩu. Bởi vì kho mật khẩu được bảo vệ bằng mật khẩu chính của bạn, mà nhà cung cấp dịch vụ không có khả năng truy cập vào mật khẩu chính gốc của bạn, do đó họ không thể giải mã kho mật khẩu của bạn cho bạn được. Điều này có thể gây ra nguy hiểm nghiêm trọng nếu bạn quên mật khẩu của trình quản lý mật khẩu.
Tuy nhiên, vẫn có một giải pháp giúp giải quyết vấn đề này. Khi bạn thực hiện quá trình thiết lập ban đầu, bạn sẽ được cấp một mã phục hồi. Những mã này thường hoạt động khác nhau tùy thuộc vào dịch vụ nhưng thường là những mã sử dụng một lần giúp bạn khôi phục tài khoản nếu bạn đã mất mật khẩu của mình. Quá trình mã hóa trở nên phức tạp hơn ở đây. Thông thường, điều này hoạt động bằng cách a) mã hóa kho mật khẩu gốc của bạn bằng một thuật toán sử dụng nhiều khóa, giúp bạn có thể sử dụng nhiều khóa mới cùng với các khóa được tạo ra từ mật khẩu chính của mình, hoặc b) mã hóa một bản sao thứ hai của khóa dùng để giải mã kho mật khẩu cùng với các mã phục hồi của bạn, giúp các khóa gốc có thể được khôi phục với sự giúp đỡ của mã phục hồi. Mặc dù khá phức tạp, một số trình quản lý mật khẩu lớn đã gần đây thêm tính năng này (chẳng hạn như 1Password chỉ mới thêm hỗ trợ vào tháng 6 năm nay).