Kiến trúc bảo mật
Đừng tin chúng tôi. Hãy kiểm chứng.
Mọi tuyên bố trên trang này là một thuộc tính của thiết kế, không phải một chính sách mà chúng tôi hứa sẽ tuân thủ. Chính sách thay đổi theo ban lãnh đạo; toán học thì không. Đây chính xác là những gì xảy ra với một bí mật bạn lưu trong Keyvaci.
Cơ chế cốt lõi
Hành trình của một bí mật, từ đầu đến cuối
Khóa sinh ra trên thiết bị của bạn
Khi đăng ký, mật khẩu chính của bạn chạy qua Argon2id (64 MiB bộ nhớ, cố ý tốn kém để chống dò vét cạn) để dẫn xuất khóa chính. Khóa chính đó bảo vệ cặp khóa mã hóa X25519 cùng cặp khóa ký Ed25519 của riêng bạn. Mật khẩu chính và khóa chính không bao giờ rời khỏi trình duyệt.
Tổ chức ký xác nhận
Một quản trị viên cùng bạn kiểm tra mã đối chiếu của khóa qua một kênh riêng, rồi ký xác nhận bằng chìa khóa ký của tổ chức. Từ đó trở đi, mọi thiết bị trong tổ chức đều có thể xác minh khóa đó đúng là của bạn trước khi tin tưởng giao cho nó bất cứ thứ gì.
Mục được niêm phong ngay trên máy bạn
Mỗi kho có khóa riêng. Mọi mục, kể cả tên kho, đều được mã hóa bằng XChaCha20-Poly1305 có xác thực, ngay trên máy bạn. Thứ đi tới chỗ chúng tôi, và thứ chúng tôi lưu, là bản mã.
Chia sẻ là mã hóa có chữ ký
Chia sẻ một kho sẽ mã hóa khóa của kho đó cho khóa công khai của người nhận, sau khi đã kiểm tra chữ ký xác nhận, và ký lên quyền được cấp để nó không thể bị chuyển hướng sang một khóa khác. Thu hồi quyền sẽ mã hóa lại kho dưới một khóa mới.
Bản kiểm kê trung thực
Máy chủ của chúng tôi giữ những gì
Một tuyên bố zero-knowledge (máy chủ không đọc được dữ liệu) chỉ đáng tin bằng đúng bản kiểm kê của nó. Đây là bản của chúng tôi.
| Dữ liệu | Chúng tôi thực sự lưu gì | Keyvaci đọc được không? |
|---|---|---|
| Mục trong kho (mật khẩu, ghi chú) | Bản mã XChaCha20-Poly1305 | Không |
| Tên kho | Bản mã, mã hóa giống như các mục | Không |
| Mật khẩu chính của bạn | Không gì cả. Nó không bao giờ được truyền đi | Không |
| Khóa riêng tư | Bản mã được niêm phong bằng khóa chính của bạn | Không |
| Chìa khóa khôi phục & chìa khóa ký của tổ chức | Không gì cả. Được tạo và giữ ở phía bạn | Không |
| Khóa công khai và chữ ký xác nhận | Bản rõ (vốn là công khai theo thiết kế) | Có |
| Tên và email của thành viên | Bản rõ, cần để vận hành tài khoản | Có |
| Sự kiện nhật ký (ai làm gì, khi nào) | Metadata dạng bản rõ, chỉ ghi thêm | Có |
| Liên kết đăng nhập (chỉ khi đăng nhập bằng email) | Chỉ lưu tóm lược SHA-256, dùng được một lần, chết sau năm phút kể từ khi gửi. Không có mật khẩu đăng nhập nào để nắm giữ | Chỉ tóm lược |
Hệ quả, nói thẳng: một vụ xâm nhập toàn bộ cơ sở dữ liệu của Keyvaci chỉ thu được bản mã, khóa công khai và metadata. Thứ cần để giải mã kho của bạn không nằm ở đó để mà lấy.
Phòng thủ nhiều lớp
Xung quanh phần mã hóa
Xác thực lại khi hiện
Đọc một thông tin đăng nhập đòi hỏi vừa xác thực gần đây, kèm TOTP nếu bật. Chỉ riêng token phiên không bao giờ mở được một mục trong kho.
Giới hạn tần suất có mục đích
Số lần hiện và số lần mở kho đều bị giới hạn tần suất theo từng người dùng, nên kể cả một phiên đã bị chiếm và đã xác thực lại cũng không thể xuất dữ liệu hàng loạt của cả tổ chức.
Bảo vệ ở lớp biên
Toàn bộ lưu lượng đi qua một WAF (bộ luật quản lý sẵn, danh tiếng IP, luật giới hạn tần suất) đặt trước API, và địa chỉ gốc của API từ chối mọi request không đi qua đó.
Cô lập giữa các tổ chức
Mọi bản ghi đều được đánh khóa theo tổ chức, được kiểm tra ở từng request, và được phủ bởi các bài kiểm thử cô lập chéo giữa các tổ chức chạy trong CI.
Nhật ký chỉ ghi thêm
Quyền trên cơ sở dữ liệu của chính dịch vụ nhật ký chỉ cho phép ghi sự kiện mới, không cho gì khác. Can thiệp vào nhật ký không phải là vi phạm chính sách; đó là lỗi thiếu quyền.
Phiên làm việc chặt chẽ
Khóa giải mã chỉ nằm trong bộ nhớ, bị xóa khi khóa màn hình, sau 15 phút không hoạt động, hoặc khi tab bị ẩn đi. Độ mới của lần đăng nhập và audience được xác minh với khóa của nhà cung cấp định danh ở từng request.
Thêm ứng dụng, vẫn nguyên luật
Những gì tiện ích và điện thoại KHÔNG được phép làm
Thêm tiện ích trình duyệt và ứng dụng di động chính là chỗ đa số kho mật khẩu lặng lẽ nới lỏng luật của chính mình. Lý do rất đơn giản: điền mật khẩu cho tiện sẽ dễ hơn nhiều nếu có thứ gì đó đang giữ sẵn một cái khóa hộ bạn. Dưới đây là những chỗ chúng tôi từ chối nới, và cái giá của từng lần từ chối.
| Luật | Được thi hành bằng cách nào |
|---|---|
| Chỉ một bản hiện thực mã hóa | Tiện ích và điện thoại dùng chính bản mã hóa và chính chuỗi kiểm chứng của bảng điều khiển web, ở dạng mã nguồn. Không có bản sao thứ hai để lệch, và không có ứng dụng nào chạy tham số yếu hơn. Trên điện thoại, đó là lý do việc dẫn xuất khóa chạy native ở đủ 64 MiB thay vì bị hạ xuống mức một engine trình duyệt kham nổi |
| Mục nào không qua được kiểm chữ ký thì bị loại | Bảng điều khiển web còn có thể hiện cảnh báo cạnh một mục đáng ngờ. Menu autofill không có chỗ cho cuộc hội thoại đó, nên bất cứ mục nào trượt kiểm chữ ký tổ chức, chữ ký cấp quyền hay chữ ký tác giả đều bị loại bỏ và không bao giờ được đưa ra. Điền mật khẩu từ nguồn chưa kiểm chứng là điều duy nhất các ứng dụng này tuyệt đối không được làm |
| Mọi lần hiện bí mật đều vào nhật ký | Hiện, sao chép và điền đều đi qua đúng cơ chế reveal có kiểm toán như bảng điều khiển, kể cả khi điền vào app khác trên điện thoại. Một ứng dụng thứ hai không phải là đường vòng qua chính cái nhật ký mà sản phẩm đang bán |
| AutoFill không thể chạy khi không có người | Trình cung cấp mật khẩu trên iOS từ chối con đường im lặng mà hệ điều hành cho phép, và hỏi mật khẩu chính trong tiến trình riêng của nó mỗi lần. Trả lời được yêu cầu đó một cách im lặng đồng nghĩa có một cái khóa đang được cất sẵn ở đâu đó |
| Menu chỉ biết đúng trang bạn đang mở | Khớp đúng tên miền của trang hoặc quan hệ cha-con thật, không bao giờ theo chuỗi con. Địa chỉ gốc của trang do trình duyệt cung cấp, chứ không phải thứ mà trang tự khai. Một cú bấm bị lừa trên trang độc hại chỉ có thể điền thông tin đăng nhập vốn đã thuộc về chính nó |
| Khóa hết hạn theo mốc, không theo thời gian rảnh | Mười phút sau khi mở kho, tiện ích và điện thoại xóa khóa dù bạn có quay lại hay không. Điện thoại còn xóa ngay khoảnh khắc app rời khỏi màn hình, nên trình chuyển app không bao giờ chứa một kho mật khẩu đang mở |
| Keyvaci không bao giờ thấy mật khẩu công ty của bạn | Đăng nhập bằng Microsoft mở một cửa sổ do trình duyệt hoặc hệ điều hành sở hữu, thứ mà tiện ích không chèn được mã vào và không đọc được |
Một ngoại lệ trung thực, và quyền quyết định thuộc về người đọc: bật Face ID nghĩa là mật khẩu chính của bạn được lưu trên đúng thiết bị đó. Nó nằm dưới sự canh giữ của phần cứng bảo mật trong máy, và tự vô hiệu nếu tập sinh trắc học thay đổi. Nó tắt cho tới khi bạn tự bật, app nói rõ đánh đổi ngay tại chỗ bạn đồng ý, mật khẩu chính vẫn bị hỏi lại mỗi 30 ngày và ngay sau bất kỳ lần đổi mật khẩu nào, và không bao giờ có trạng thái mà sinh trắc học là lối vào duy nhất.
Giới hạn, nói thẳng ra
Zero-knowledge không làm được gì
Một trang bảo mật chỉ liệt kê điểm mạnh là quảng cáo. Đây là ranh giới của mô hình này, và những gì chúng tôi đã làm với từng ranh giới đó.
Thiết bị của bạn do bạn bảo vệ
Việc giải mã diễn ra trên máy của bạn, nên mã độc trên thiết bị của một thành viên có thể thấy đúng những gì thành viên đó thấy. Tự khóa, tự ẩn, xóa clipboard và ghi nhật ký mỗi lần hiện chỉ thu hẹp khoảng hở đó; chúng không xóa bỏ được nó.
Khôi phục là một quyền lực thật sự
Chìa khóa khôi phục của tổ chức có thể phục hồi khóa của bất kỳ thành viên nào, nghĩa là nó có thể đọc được kho của họ. Chúng tôi nói rõ điều này với mọi thành viên ngay lúc đăng ký, bằng ngôn từ dễ hiểu, và mọi lần khôi phục đều được ghi nhật ký. Hãy giữ bộ chìa khóa dự phòng đó đúng như một bí mật tối quan trọng.
Mất khóa là mất dữ liệu
Nếu một thành viên quên mật khẩu chính và tổ chức làm mất bộ chìa khóa dự phòng, dữ liệu đó mất hẳn. Không ai, kể cả chúng tôi, lấy lại được. Chúng tôi nhắc lại cảnh báo này lúc đăng ký vì đó là cái giá trung thực của một máy chủ không đọc được dữ liệu của bạn.
Đưa kiến trúc này vào việc
14 ngày, đầy đủ tính năng, không cần thẻ. Đội bảo mật của bạn cứ thoải mái đặt cho chúng tôi những câu hỏi khó qua keyvaci@xnorgroup.com trong lúc đánh giá.