Coi số tài khoản bí mật là thông tin xác thực: hãy kiểm toán nó
Nếu biết số đó giúp ai đó đăng nhập hoặc tải cấu hình, thì nó là thông tin xác thực. Hãy kiểm tra quyền hạn, lưu trữ, tốc độ đoán và luân chuyển.
Một trường được dán nhãn số tài khoản không tự động là tham chiếu công khai, và nhãn không phải là phép thử. Phép thử là những gì việc sở hữu cho phép: nếu biết số đó giúp ai đó đăng nhập, tải xuống hồ sơ kết nối hoặc ủy quyền thiết bị, thì số đó là thông tin xác thực có vòng đời. Tôi thực hiện năm kiểm tra dưới đây mỗi khi một dịch vụ cấp danh tính số và gọi nó là vô hại. Mỗi kiểm tra tạo một dòng trong bản ghi ngắn, và bản ghi là kết quả bàn giao, không phải phán quyết về sản phẩm.
Kiểm kê những gì việc sở hữu thực sự trao
Ghi riêng từng hành động mà số đó mở khóa. Đăng nhập cổng thông tin, lấy tệp cấu hình, ủy quyền thiết bị mới và cung cấp đăng nhập đường hầm được chấp nhận là những quyền hạn khác nhau, và một dịch vụ có thể triển khai một quyền mà không có các quyền khác. Cổng chỉ chấp nhận số đó làm trường duy nhất không cho bạn biết gì về cách đường hầm xác thực đối tác của nó sau đó hoặc cách khóa lưu lượng được dẫn xuất.
Mô hình chung dễ phát biểu: thông tin xác thực bearer là thông tin mà người giữ có thể dùng mà không cần chứng minh sở hữu một khóa mật mã riêng, và đó là sự phân biệt mà RFC 6750 vạch ra cho token. Đây là so sánh, không phải tuyên bố rằng dịch vụ dựa trên số triển khai OAuth. Nếu người giữ không cần gì khác, hãy coi số đó là bí mật bearer và phân loại phần còn lại của thiết kế cho phù hợp.
Bảo vệ nó như bí mật, không như tham chiếu
Việc lưu trữ suy ra từ phân loại. Giá trị dùng để đăng nhập thuộc về trình quản lý mật khẩu, không phải ảnh chụp màn hình, lịch sử clipboard, tin nhắn trò chuyện hay ghi chú trình duyệt. Ảnh chụp màn hình là rò rỉ thường gặp: số ngắn và trông vô hại, nên nó nằm lại trong một luồng hỗ trợ sống lâu hơn thiết bị nó đến từ.
Lừa đảo là chế độ thất bại còn lại, và nó không quan tâm số ngẫu nhiên đến đâu. Kẻ mạo danh muốn giá trị sẽ yêu cầu bạn dán nó vào biểu mẫu, và thông tin xác thực không bao giờ hết hạn, không có yếu tố thứ hai đáng để bỏ công. Hãy đến đường dẫn đăng nhập từ dấu trang hoặc địa chỉ đã biết, không từ liên kết trong tin nhắn cũng đòi số đó.
Coi vật liệu khôi phục là một phần của bí mật. Nếu nhà cung cấp cũng cấp mã khôi phục, PIN hoặc địa chỉ email có thể đặt lại tài khoản, đó là những thông tin xác thực riêng biệt với cùng yêu cầu bảo vệ. Một kênh đặt lại không được bảo vệ biến mọi biện pháp khác thành vật trang trí.
Kiểm tra khả năng chống đoán và giới hạn tốc độ cùng nhau
Độ dài chỉ có ý nghĩa bên cạnh phương pháp tạo. Một số dài sinh từ chuỗi dự đoán được yếu hơn một giá trị ngắn sinh từ bộ tạo mật mã, và số chữ số ấn tượng không chứng minh tính không thể đoán trước. Hãy hỏi giá trị được tạo như thế nào trước khi lý luận về độ khó đoán.
Chỉ khả năng chống đoán cũng không chịu nổi tốc độ thử không giới hạn. Những biện pháp quan trọng là những gì nhà cung cấp triển khai: bộ đếm lần thử thất bại, khóa tài khoản, giới hạn theo nguồn và liệu số sai có phân biệt được với số không tồn tại hay không. Nếu dịch vụ hỗ trợ, một lần thử thất bại cho bạn biết lỗi trông thế nào và có bộ đếm thử lại xuất hiện hay không:
# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"
Ghi lại những gì phản hồi tiết lộ. Một lỗi riêng cho tài khoản không tồn tại là oracle liệt kê ngay cả khi số không thể đoán, và phát hiện đó thuộc về bản ghi, dù bạn có thể sửa từ phía máy khách hay không.
Lập kế hoạch luân chuyển và thu hồi trước khi cần
Tìm quy trình được hỗ trợ cho số bị mất hoặc bị lộ và ghi lại khi mọi thứ đang hoạt động. Thông tin xác thực của tài khoản có thể thay thế được không? Việc thay thế có vô hiệu hóa thiết bị đã đăng ký, phiên đang hoạt động hay cấu hình đã tải xuống không? Quy trình yêu cầu vật liệu khôi phục nào? Một dịch vụ không phụ thuộc email có thể chuyển nhiều trách nhiệm khôi phục hơn cho người dùng, điều này làm quy trình quan trọng hơn, không phải ít hơn.
Tách việc thay thế tài khoản khỏi việc thu hồi thông tin xác thực. Nếu số ủy quyền tải xuống khóa, chứng chỉ hoặc hồ sơ, việc thay số có thể để vật liệu đã tải vẫn hợp lệ, và thu hồi vật liệu đã tải có thể là thao tác khác với chủ sở hữu khác. Đừng cho rằng một trường bị đổi sẽ kết thúc mọi kết nối; hãy kiểm tra mô hình thực tế của nhà cung cấp và ghi lại nơi bạn đã xác minh.
Ghi lại quyết định và kiểm tra lại sau
Giữ bản ghi một trang cho mỗi dịch vụ: số trao những quyền gì, lưu ở đâu, ai có thể đặt lại, có bằng chứng sử dụng nào và bạn sẽ làm gì trong giờ đầu sau khi lộ. Bản ghi đó là thứ biến cuộc tranh luận về thuật ngữ thành quyết định mà ai đó có thể kiểm toán.
Các tuyên bố về quyền riêng tư cần phạm vi riêng. Một số sinh ngẫu nhiên vẫn có thể là định danh ổn định liên kết các sự kiện tài khoản theo thời gian; không thể đoán trước không phải là không thể liên kết, và không thuộc tính nào nói gì về siêu dữ liệu mạng được lưu giữ. Hãy so sánh toàn bộ thiết kế thay vì đếm các trường trên màn hình đăng nhập.
Trước khi ghi lại:
- Mọi quyền hạn mà số trao đều được liệt kê, bao gồm tải xuống và ủy quyền thiết bị.
- Các kênh lưu trữ và khôi phục được bảo vệ theo cùng tiêu chuẩn như chính số đó.
- Phương pháp tạo và giới hạn tốc độ đã biết, không phải giả định từ độ dài.
- Có quy trình thay thế và quy trình thu hồi, và bạn biết cái nào hủy cái nào.
- Bản ghi nêu ai có thể đặt lại giá trị và bằng chứng nào còn lại sau khi dùng.