Chuyển tới nội dung chính
Android · Zero-knowledge

Trình quản lý mật khẩu không thể đọc mật khẩu của bạn

Không phải một lời hứa — mà là hệ quả của cách khoá được tạo ra. Một mảnh của khoá được sinh ra bên trong phần cứng bảo mật của điện thoại và không bao giờ rời khỏi đó, nên DEK không thể ghép lại ở bất kỳ đâu ngoài thiết bị của bạn, đúng vào lúc bạn mở khoá.

Không có khôi phục tài khoản — do thiết kếMã mở khoá của bạn không bao giờ được truyền điBản sao lưu đi vào Google Drive của chính bạn

Thiết kế này trong bốn con số

Ba con số đầu khiến kho mật khẩu trở nên đắt đỏ để tấn công. Con số thứ tư là cái giá bạn phải trả cho chúng.

0
Mảnh khoá
Nằm ở bốn nơi tách biệt. Không ai nắm đủ để dựng lại chiếc khoá.
0 bits
Entropy tối thiểu của mã mở khoá
Đo bằng bit chứ không phải số ký tự — nên bộ ký tự càng rộng thì mã càng được phép ngắn.
0 MiB
Bộ nhớ Argon2id cho mỗi lần đoán
Cái giá mà kẻ đã cầm được điện thoại của bạn phải trả cho từng lần thử.
0
Số cách chúng tôi khôi phục được kho của bạn
Không liên kết đặt lại, không quyền can thiệp, và không có gì để người khác đòi ở chúng tôi.
Minh bạch

Ai thấy được gì

Đáng chú ý là những hàng có câu trả lời “không bao giờ” — và những hàng không phải vậy.

Dữ liệuThiết bị của bạnMáy chủ của chúng tôi
Mật khẩu của bạnChỉ được giải mã trong lúc bạn đang xemKhông bao giờ — các mục đã mã hoá không được tải lên
Mã mở khoá của bạnChỉ giữ đủ lâu để dẫn xuất ra khoáKhông bao giờ — nó không được truyền đi
Mảnh khoá 1Sinh ra bên trong StrongBox/TEE, không thể xuất raKhông bao giờ — đây là thứ khiến mọi điều còn lại đứng vững
Mảnh khoá 2Lưu ở dạng đã mã hoáĐược xử lý trong chốc lát khi dẫn xuất khoá, và lưu ở dạng đã mã hoá. Tự nó thì vô dụng nếu thiếu mảnh 1
Mảnh khoá 3 — “hạt tiêu” (pepper)Không bao giờ — nó không bao giờ tới được điện thoại của bạnNiêm trong một mô-đun bảo mật phần cứng. Nó dùng được, nhưng không đọc ra được — với bất kỳ ai, kể cả chúng tôi
ShardVaultTới nơi cho đúng một lần mở khoá, rồi biến mấtĐược tính riêng cho bạn ở mỗi lần mở khoá, từ mảnh 2 và hạt tiêu
Email, mẫu thiết bị, sự kiện bảo mật—Có — để vận hành tài khoản của bạn và chặn lạm dụng

Chúng tôi liệt kê thẳng những hàng đó thay vì làm tròn chúng đi. Máy chủ của chúng tôi giữ mảnh 2 ở dạng mã hoá và tính ra ShardVault khi được yêu cầu — hai trong ba mảnh dựng nên khoá của bạn. Và vẫn không mở được kho của bạn, bởi mảnh thứ ba, mảnh 1, chưa từng tồn tại ở đâu khác ngoài điện thoại của bạn.

Lưu khoá bằng phần cứng và ShardVault có từ gói Gold trở lên. Silver thay vào đó giữ mảnh của mình trong bộ nhớ ứng dụng đã mã hoá, và dẫn xuất khoá ngay trên máy.

Cơ chế

Chuyện gì xảy ra khi bạn mở khoá

Chiếc khoá giải mã kho mật khẩu của bạn không được lưu ở đâu cả. Nó được dựng lại từ những mảnh riêng biệt mỗi lần, rồi bị huỷ ngay sau đó.

Bạn gõ mã mở khoá

Một bí mật duy nhất, và là bí mật duy nhất bạn từng gõ. Nó không rời khỏi điện thoại và không bao giờ được gửi tới máy chủ.

Không bao giờ truyền đi
Argon2id kéo dãn nó ra

128 MiB bộ nhớ và 10 lượt biến mã mở khoá thành một vault secret. Kẻ tấn công cũng phải trả đúng cái giá đó cho mỗi lần đoán.

128 MiB · 10 lượt
Vault secret mở Shard 2

Shard 2 được lưu ở dạng mã hoá trên thiết bị, kèm một bản sao ciphertext được đồng bộ để phòng mất dữ liệu. Tự nó thì không mở được gì.

Shard 1 ra khỏi phần cứng bảo mật

Được sinh bên trong StrongBox hoặc TEE và không thể xuất ra, do thiết kế của phần cứng. Đây là mảnh khiến mọi thứ còn lại đứng vững.

Không thể rời khỏi máy
Máy chủ tính ShardVault

Một phép HMAC chạy bên trong mô-đun phần cứng Cloud KMS, dùng một pepper không bao giờ rời khỏi đó — và gắn với tài khoản của bạn, nên không thể yêu cầu nó cho người khác.

Ba mảnh ghép lại trên thiết bị của bạn

Chiếc khoá chỉ tồn tại trong bộ nhớ native, chỉ trên điện thoại của bạn, và chỉ trong đúng khoảng thời gian của thao tác bạn vừa yêu cầu.

Rồi nó bị xoá sạch

Khoá được xoá ngay sau khi dùng và dựng lại từ đầu ở lần sau. Không bao giờ ghi ra đĩa, không ghi log, không lưu đệm.

Dựng lại mỗi lần
DEK = Shard 1 ⊕ Shard 2 ⊕ ShardVault

Thiếu bất kỳ mảnh nào trong ba là không có khoá. Chúng tôi nắm hai trong số đó và vẫn không mở được kho của bạn, bởi Shard 1 chưa từng tồn tại ở đâu khác ngoài điện thoại của bạn.

Phòng thủ nhiều lớp

Bạn thật sự đang sợ điều gì?

Mã hoá là phần dễ — trình quản lý mật khẩu nào cũng có. Thứ tạo ra khác biệt là mọi lớp bao quanh khoảnh khắc bạn gõ mã mở khoá. Dưới đây là từng nỗi lo, và đúng thứ trả lời cho nó.

Ai đó đang cầm điện thoại của bạn

“Họ cứ thế đoán mã mở khoá của tôi thôi.”

Mỗi lần đoán đều tốn của họ 128 MiB bộ nhớ và một khoảng thời gian thật, bởi đó đúng là cái giá bạn trả khi mở khoá. Đoán mã không còn là việc làm được hàng triệu lần mỗi giờ.

Argon2id, 128 MiB mỗi lần thử

“Họ sẽ root máy rồi moi chiếc khoá ra khỏi bộ nhớ.”

Một mảnh của khoá được sinh ra bên trong một con chip bảo mật riêng, và con chip đó không có lệnh nào trả mảnh khoá ấy ra — cho bất kỳ ai. Root giúp họ có được chiếc điện thoại. Nó không giúp họ có được mảnh khoá đó.

Kho khoá phần cứng (StrongBox / TEE)Từ Gold trở lên

Mối nguy chính là chúng tôi

“Các anh bị tấn công và mật khẩu của tôi nằm trong đống dữ liệu rò rỉ.”

Mật khẩu bạn lưu không bao giờ được tải lên chỗ chúng tôi. Cơ sở dữ liệu của chúng tôi chứa thông tin tài khoản và một mảnh khoá đã mã hoá. Ai lấy trọn cả cơ sở dữ liệu cũng không lấy được thứ gì mở được một kho mật khẩu.

Nội dung kho không bao giờ rời khỏi máy

“Người bên trong công ty các anh xem trộm — hoặc toà buộc các anh phải giao ra.”

Không có công cụ nội bộ, không có quyền can thiệp của bộ phận hỗ trợ, không có chế độ quản trị. Không phải vì một chính sách mà chúng tôi có thể đổi khi bị gây sức ép — mà vì mảnh khoá hoàn thiện chiếc khoá của bạn chưa từng tồn tại ở phía chúng tôi.

Không có đường khôi phục nào để mà đòi

Có thứ gì đó trên máy đang rình

“Một màn hình giả hiện đè lên ứng dụng và tôi gõ mã vào đó.”

Ứng dụng theo dõi mọi thứ được vẽ đè lên bàn phím nhập mã và từ chối đi tiếp. Một lớp vô hình chuyên thu lại thao tác chạm cũng bị chặn y như vậy. Cả hai kiểu tấn công đều bỏ qua hoàn toàn phần mã hoá bằng cách tiếp cận bí mật ngay lúc bạn gõ — nên chúng bị chặn trước khi bạn gõ xong.

Chống lớp phủ và cướp thao tác chạmPlatinum · Titanium

“Một ứng dụng tôi cài có thể đọc màn hình của tôi.”

Quyền trợ năng của Android cho phép một ứng dụng đọc mọi ô trên màn hình, kể cả ô mật khẩu. Rất nhiều ứng dụng bình thường cũng xin quyền này. Khi có một dịch vụ như vậy đang chạy, các thao tác khoá sẽ dừng.

Chống dịch vụ trợ năngPlatinum · Titanium

“Có thứ gì đó đang quay màn hình lúc tôi mở khoá.”

Ảnh chụp màn hình bị từ chối thẳng, và quay màn hình trong ứng dụng thì ra toàn màu đen — cả ứng dụng lẫn bàn phím phủ lên trên, không có gì để đọc. Khoảng hở là hộp thoại tự động điền, vì nó nằm trên một ứng dụng khác đang bị quay bình thường; nên từ Android 15, ứng dụng phát hiện bản ghi và từ chối không cho bạn gõ. Dưới đó thì nó không phát hiện được, và chúng tôi thà nói thẳng còn hơn để bạn tưởng ngược lại.

Chặn chụp ảnh · bản ghi ra màu đen · từ chối nhập, Android 15+

“Bàn phím của tôi ghi lại mọi thứ tôi gõ.”

Cái này chúng tôi không sửa được, và giả vờ ngược lại mới là chỗ không trung thực. Bàn phím nào cũng nhìn thấy những phím bạn gõ cho nó, trong mọi ứng dụng trên máy. Thứ chúng tôi làm được là báo cho bạn khi bàn phím đang dùng không đi kèm máy — một cảnh báo, không bao giờ là rào chặn, vì khoá bạn ra khỏi kho chỉ vì bạn thích một bàn phím khác thì chẳng giúp được ai.

Cảnh báo bàn phím — một lỗ hổng thật, được nói ra

Đây có đúng là ứng dụng thật không?

“Tôi cài nhầm một bản ứng dụng đã bị sửa mà không hay biết.”

Trước các thao tác khoá, máy chủ của chúng tôi hỏi Google xem đây có phải ứng dụng thật, chạy trên một thiết bị thật và chưa bị xâm phạm không. Phép kiểm tra diễn ra ở máy chủ chứ không phải trên điện thoại — nên một ứng dụng đã bị sửa không thể chỉ việc vá bỏ kết luận về chính nó.

Google Play Integrity, xác minh phía máy chủPlatinum · Titanium

“Có thứ gì đó cắm được vào ứng dụng và đọc nó từ bên trong.”

Root, đóng gói lại, trình gỡ lỗi đang gắn vào và các bộ công cụ hook phổ biến đều bị phát hiện, và các thao tác khoá từ chối chạy. Phần mã hoá chỉ có giá trị khi ứng dụng bao quanh nó còn nguyên vẹn — nên ứng dụng đi kiểm tra điều đó thay vì mặc định là đúng.

Phát hiện root, can thiệp, gỡ lỗi và hookPlatinum · Titanium

“Ai đó trong cùng mạng Wi-Fi — hoặc công ty tôi — chặn bắt kết nối.”

Lời gọi trả về một phần khoá của bạn chỉ chấp nhận một tập cố định các chứng chỉ gốc của chính Google. Một chứng chỉ mà điện thoại bạn đã được bảo là phải tin — hồ sơ công ty, hay một chứng chỉ gốc cài thêm — vẫn bị từ chối.

Ghim chứng chỉ trên TLS 1.3Platinum · Titanium

“Bot dò tài khoản của tôi không ngừng nghỉ.”

Mỗi lần đăng nhập đều được chấm điểm ngầm về khả năng là hành vi tự động — bạn không thấy gì trừ khi có điều bất thường — và còn bị giới hạn tần suất bên trên nữa.

Chấm điểm bot ngầm và giới hạn tần suất

Dữ liệu là của bạn, kể cả lúc bạn muốn rời đi

“Ai đó lấy được tệp sao lưu của tôi trong Drive.”

Bản sao lưu đi vào Drive của bạn chứ không phải của chúng tôi, và chúng chỉ mở được trên chiếc điện thoại đã tạo ra chúng — ở mọi gói. Một tệp sao lưu bị đánh cắp là một cục gạch. Cũng chính đặc tính đó khiến bạn không chuyển được kho sang máy mới, và chúng tôi muốn bạn biết điều đó ngay từ bây giờ.

Hai lớp mã hoá, lớp trong gắn với thiết bị

“Tôi muốn rời đi. Các anh có xoá thật không?”

Cài đặt → Đặt lại tài khoản, và xong. Không hàng đợi, không thời gian lưu giữ ba mươi ngày, không phiếu hỗ trợ, không bảng khảo sát lý do rời đi.

Ngay lập tức, ngay trong ứng dụng

🎁 Một trong những lớp phòng thủ này có ích ngay cả khi bạn không bao giờ lưu mật khẩu với chúng tôi: ứng dụng cho bạn biết một chiếc điện thoại cũ đã bị root hay bị can thiệp chưa, trước khi bạn trả tiền. cách kiểm tra một chiếc máy cũ

Mỗi mục ở trên là một tầng trong một câu chuyện dài hơn: một kẻ tấn công đứng trước cửa, leo lên từng tầng, và mỗi bước tốn của anh ta bao nhiêu. đọc trọn cuộc chiến
Mọi thuật ngữ kỹ thuật ở trên đều được giải thích bằng lời thường tại đây: những từ này nghĩa là gì

Dùng hằng ngày

Điền một mật khẩu, từng bước một

Tự động điền cần Android 8.0 trở lên. Một số ứng dụng chủ động từ chối tính năng này — đó là lựa chọn của họ, không phải lỗi của PasswordEpic.

Bạn chạm vào ô đăng nhập

Trong bất kỳ ứng dụng hay trang web nào dùng ô mật khẩu thông thường.

Android hỏi PasswordEpic

Thông qua khung tự động điền của hệ thống — ứng dụng không hề theo dõi màn hình để tự tìm ô đó.

Bạn xác nhận đúng là bạn

Vân tay hoặc mã mở khoá, mọi lần, không ngoại lệ. Không có khoảng thời gian nào việc điền diễn ra mà không có bạn.

Mọi lần
Đúng một mục được giải mã

Chỉ mục đang được điền, và chỉ cho lần điền đó. Phần còn lại của kho vẫn nằm nguyên ở dạng mã hoá.

Mật khẩu vừa giải mã bị bỏ đi

Mật khẩu sau khi được giải mã, cùng với chiếc khoá, được giải phóng ngay khi ô đã được điền.

Chọn mức bảo vệ

Bốn gói, mỗi gói là gói dưới nó cộng thêm một phần

Chúng không phải bốn sản phẩm riêng biệt. Gold, Platinum và Titanium đều chạy cùng một bộ máy native, chỉ khác ở chỗ cái gì canh gác nó hoặc cái gì mở khoá.

Silver
Miễn phí

Gói miễn phí, và là gói duy nhất chạy được mà không cần mô-đun native của Android.

  • AES-256-CTR kèm HMAC-SHA256 riêng, chạy trong JavaScript
  • Khoá dựng lại từ hai mảnh, tính ngay trên thiết bị
  • Không giới hạn thiết bị
  • Không lưu khoá bằng phần cứng
  • Không đảm bảo khoá được xoá khỏi bộ nhớ
Gold
Trả phí

Mốc bảo mật thật sự. Toàn bộ phần mã hoá chuyển vào mã native.

  • AES-256-GCM trong mã native Kotlin
  • Shard 1 nằm trong StrongBox hoặc TEE, không thể xuất ra
  • Mảnh khoá thứ ba được tính bên trong Cloud KMS
  • Khoá bị xoá sạch ngay sau mỗi thao tác
Platinum
Trả phí

Giống hệt Gold về mật mã học. Cái nó thêm vào là bằng chứng rằng thiết bị xứng đáng với điều đó.

  • Mọi thứ của Gold, giữ nguyên
  • Play Integrity, xác minh trên máy chủ
  • Ghim chứng chỉ cho lời gọi dẫn xuất khoá
  • Phát hiện lớp phủ, trợ năng và can thiệp
Titanium
Trả phí

Chỉ đổi một thứ trong bộ máy của Gold — nhưng thứ nó đổi lại chính là thứ chạm vào mã mở khoá của bạn.

  • Mọi thứ của Platinum
  • Mã mở khoá mở kho thông qua OPAQUE
  • Không bao giờ lưu thứ gì mở được kho ở dạng chưa mã hoá
  • Lõi Rust có thể xoá bí mật khỏi bộ nhớ native

Bảng so sánh đầy đủ, từng dòng một

Đọc kỹ phần này

Bằng chứng nằm ở những gì chúng tôi không thể làm

Một dịch vụ có thể khôi phục kho của bạn là một dịch vụ có thể đọc nó. Những giới hạn này chính là điều đó, nói từ phía ngược lại.

Không có khôi phục tài khoản. Nếu bạn quên mã mở khoá hoặc mất thiết bị, kho mật khẩu mất theo — không liên kết đặt lại, không câu hỏi khôi phục, không quyền can thiệp của bộ phận hỗ trợ, và không có cách nào để chúng tôi bị ép tạo ra một quyền như vậy.

Bản sao lưu chỉ mở được trên chiếc máy đã tạo ra nó

Mọi bản sao lưu và bản xuất đều mang một lớp mã hoá gắn với phần cứng bảo mật của thiết bị đó. Chúng bảo vệ bạn khỏi việc mất dữ liệu trên chiếc điện thoại bạn vẫn còn — không phải khỏi việc mất chính chiếc điện thoại.

Không có đường chuyển sang điện thoại mới

Ở mọi gói. Bộ phận hỗ trợ có thể giải phóng tài khoản để bạn bắt đầu lại trên máy mới, nhưng điều đó không mang kho cũ đi theo.

Bàn phím của bạn đọc được những gì bạn gõ

Trong mọi ứng dụng, không riêng ứng dụng này, và không lớp bảo vệ màn hình nào chạm tới được — bàn phím được trao thẳng từng phím bạn gõ, trước cả khi có gì được vẽ ra. PasswordEpic sẽ cảnh báo khi bàn phím đang dùng không đi kèm máy, và đó là một lời nhắc chứ không phải một phán quyết.

Phát hiện bản ghi màn hình cần Android 15

Quay màn hình chính ứng dụng thì ra toàn màu đen, ở mọi phiên bản. Khoảng hở là hộp thoại tự động điền, vì nó nằm trên một ứng dụng khác đang bị quay bình thường — Android 15 cho phép ứng dụng nhận ra và từ chối cho nhập mã ở đó, còn dưới đó thì nó không nhận ra được, và nói thẳng điều đó thay vì ám chỉ ngược lại.

Gói miễn phí hoàn toàn bằng phần mềm

Silver mã hoá trong JavaScript bằng AES-256-CTR kèm một thẻ xác thực riêng, không lưu khoá bằng phần cứng, và sau đó không thể xoá khoá khỏi bộ nhớ một cách đáng tin cậy. Đó là những đánh đổi được chấp nhận, không phải khiếm khuyết — nhưng chúng là thật.

Chỉ có trên Android

Android 7.0 trở lên. Không có phiên bản iOS, và các gói dựa trên phần cứng không có thứ tương đương trên iOS để chuyển sang.

Hãy thẩm định, đừng chỉ tin

Tài liệu mô tả chiếc khoá, các mảnh khoá và nơi từng mảnh nằm — kể cả những phần chúng tôi có xử lý. Hãy đọc nó trước khi quyết định có tin trang chủ hay không.