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.
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ệu | Thiết bị của bạn | Máy chủ của chúng tôi |
|---|---|---|
| Mật khẩu của bạn | Chỉ được giải mã trong lúc bạn đang xem | Không bao giờ — các mục đã mã hoá không được tải lên |
| Mã mở khoá của bạn | Chỉ giữ đủ lâu để dẫn xuất ra khoá | Không bao giờ — nó không được truyền đi |
| Mảnh khoá 1 | Sinh ra bên trong StrongBox/TEE, không thể xuất ra | Không bao giờ — đây là thứ khiến mọi điều còn lại đứng vững |
| Mảnh khoá 2 | Lư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ạn | Niê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 |
| ShardVault | Tớ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.
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 đó.
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 đi128 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ượtShard 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ì.
Đượ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áyMộ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.
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.
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ầnThiế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.
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ờ.
“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á đó.
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.
“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.
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.
“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.
“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.
“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.
Đâ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ó.
“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.
“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.
“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.
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ờ.
“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.
🎁 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ũ
Đ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.
Trong bất kỳ ứng dụng hay trang web nào dùng ô mật khẩu thông thường.
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 ô đó.
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ầnChỉ 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 sau khi được giải mã, cùng với chiếc khoá, được giải phóng ngay khi ô đã được điền.
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á.
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ớ
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
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
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 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.
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.
