Hướng dẫn bảo mật
Web Crypto API là gì?
Tìm hiểu cách Web Crypto API hỗ trợ tạo mật khẩu ngẫu nhiên trên trình duyệt và tại sao nó khác với tính ngẫu nhiên JavaScript thông thường.
Tóm tắt
Web Crypto API là một tiêu chuẩn trình duyệt cho các hoạt động mật mã. Đối với việc tạo mật khẩu, tính năng quan trọng nhất là crypto.getRandomValues(), cung cấp cho các trang web các giá trị ngẫu nhiên mạnh về mặt mật mã phù hợp để chọn ký tự mật khẩu.
Tại sao nó quan trọng đối với mật khẩu
Mật khẩu cần tính không thể đoán trước. Tính ngẫu nhiên JavaScript thông thường không được thiết kế cho bí mật. Web Crypto tồn tại để trình duyệt có thể hiển thị các nguyên thủy mật mã an toàn hơn thông qua một API tiêu chuẩn. PwdGen sử dụng API đó để chọn ngẫu nhiên có giới hạn và tránh Math.random() cho việc tạo mật khẩu.
Ranh giới hệ điều hành
Web Crypto không có nghĩa là một trang điều khiển trực tiếp nguồn entropy phần cứng. Trình duyệt thường dựa vào hệ điều hành và nhà cung cấp mật mã nền tảng. Một phương pháp luận cẩn thận nên nói rằng Web Crypto cung cấp đầu ra CSPRNG, không phải mỗi lần gọi đều đọc nhiễu vật lý từ CPU.
Cách PwdGen sử dụng nó
PwdGen yêu cầu các số nguyên ngẫu nhiên 32-bit, sử dụng lấy mẫu loại bỏ để tránh thiên lệch modulo, ánh xạ các giá trị được chấp nhận vào chỉ số ký tự và xáo trộn các lớp ký tự bắt buộc. Điều này giữ cho việc triển khai nhỏ gọn và có thể kiểm tra.
Hướng dẫn chi tiết
Hướng dẫn này tập trung vào việc hiểu Web Crypto API như một nguyên thủy bảo mật trình duyệt. Nó được viết cho người dùng và nhà phát triển muốn biết tại sao tính ngẫu nhiên của trình duyệt lại quan trọng, vì vậy mục tiêu thực tế không phải là tạo ra một tuyên bố bảo mật ấn tượng. Mục tiêu là chọn một thói quen mật khẩu có thể tồn tại trong sử dụng hàng ngày: biểu mẫu đăng nhập, trình quản lý mật khẩu, bàn phím di động, khôi phục tài khoản, thiết bị dùng chung và dịch vụ thỉnh thoảng có quy tắc xác thực kỳ lạ. Một khuyến nghị an toàn chỉ hữu ích nếu một người thực sự có thể tuân theo nó một cách nhất quán.
Điểm khởi đầu an toàn nhất là tính ngẫu nhiên cộng với tính duy nhất. Tính ngẫu nhiên có nghĩa là giá trị được chọn từ một không gian lớn bởi một nguồn ngẫu nhiên phù hợp về mặt mật mã, không phải được phát minh từ ngày sinh, tên thú cưng, mẫu bàn phím hoặc câu trích dẫn yêu thích. Tính duy nhất có nghĩa là cùng một mật khẩu không được sử dụng ở bất kỳ nơi nào khác. Một mật khẩu dài nhưng được sử dụng lại có thể thất bại nhanh chóng sau một vụ vi phạm không liên quan, trong khi một mật khẩu ngẫu nhiên duy nhất giới hạn thiệt hại cho tài khoản duy nhất nơi nó được sử dụng.
Đối với chủ đề này, một thiết lập thực tế là Chrome, Edge, Safari và Firefox hiện đại với crypto.getRandomValues khả dụng. Bạn có thể áp dụng thiết lập đó với trang hỗ trợ trình duyệt và sau đó lưu trữ giá trị cuối cùng trong một trình quản lý mật khẩu đáng tin cậy. PwdGen tạo giá trị cục bộ trong trình duyệt với Web Crypto; mật khẩu được tạo không được gửi đến máy chủ PwdGen. Thiết kế cục bộ đó giảm thiểu rủi ro phía máy chủ, nhưng nó không bảo vệ chống lại mọi mối đe dọa. Một tiện ích mở rộng trình duyệt độc hại, thiết bị bị xâm phạm, trang lừa đảo hoặc xử lý clipboard không an toàn vẫn có thể làm lộ bí mật sau khi nó được tạo.
Các vấn đề phổ biến nhất cần tránh là trình duyệt cũ, ngữ cảnh không an toàn, polyfill âm thầm sử dụng Math.random và nhầm lẫn mã hóa với mã hóa. Những vấn đề này quan trọng vì kẻ tấn công hiếm khi cần brute-force mọi mật khẩu có thể khi thói quen của con người cho chúng một lối tắt. Credential stuffing, lừa đảo, danh sách mật khẩu bị rò rỉ và lạm dụng khôi phục tài khoản thường thực tế hơn một tìm kiếm toán học thuần túy. Đó là lý do tại sao lời khuyên tốt nhất kết hợp chất lượng mật khẩu với các biện pháp kiểm soát cấp tài khoản như MFA, khóa truy cập, lưu trữ mã khôi phục và xem xét định kỳ cài đặt email hoặc điện thoại khôi phục.
Sử dụng danh sách kiểm tra này khi áp dụng khuyến nghị:
- Sử dụng trình duyệt hiện đại.
- Tránh các công cụ tự triển khai nguồn ngẫu nhiên của riêng chúng.
- Hiểu rằng Web Crypto không sửa được phần mềm độc hại.
- Đọc phương pháp luận trước khi tin tưởng một trình tạo.
Nếu một trang web từ chối cài đặt lý tưởng, đừng ép mật khẩu vào một mẫu yếu hơn bằng tay. Điều chỉnh một biến tại một thời điểm. Nếu ký hiệu bị từ chối, giữ chữ hoa, chữ thường và số được bật và tăng độ dài. Nếu độ dài tối đa thấp, sử dụng độ dài được chấp nhận lớn nhất và đảm bảo giá trị là duy nhất. Nếu mật khẩu phải được đọc to, in ra hoặc gõ trên màn hình tivi hoặc bộ định tuyến, hãy cân nhắc loại trừ các ký tự gây nhầm lẫn và tăng độ dài để bù đắp cho bảng chữ cái nhỏ hơn.
Cuối cùng, hãy nhớ ranh giới của lời khuyên mật khẩu. Một mật khẩu mạnh là một lớp phòng thủ, không phải là sự đảm bảo. Nó không thể làm cho một trang lừa đảo an toàn, sửa phần mềm độc hại hoặc bù đắp cho một dịch vụ lưu trữ thông tin xác thực kém. Thói quen hữu ích là nhàm chán nhưng bền bỉ: tạo một giá trị duy nhất, lưu trữ an toàn, bảo vệ đường dẫn khôi phục và thay thế nhanh chóng nếu bạn nghi ngờ bị lộ.
Một bước tiếp theo an toàn
Sau khi đọc hướng dẫn này, hãy kiểm tra một tài khoản nhỏ thay vì cố gắng sửa mọi thứ cùng một lúc. Chọn tài khoản sẽ gây rắc rối nhất nếu bị chiếm đoạt, xác nhận mật khẩu của nó là duy nhất và kiểm tra email khôi phục, điện thoại khôi phục, phương thức MFA và lưu trữ mã dự phòng. Nếu bất kỳ phần nào của chuỗi đó yếu, hãy cải thiện phần đó trước khi chuyển sang các tài khoản rủi ro thấp hơn. Thứ tự này giữ cho công việc có thể quản lý và bảo vệ các tài khoản mà kẻ tấn công có nhiều khả năng sử dụng làm bước đệm. Đối với web crypto api là gì?, kết quả tốt nhất là một thói quen có thể lặp lại: tạo cục bộ, lưu trữ cẩn thận và tránh sử dụng lại.
Các câu hỏi thường gặp
Phần nào của Web Crypto mà PwdGen sử dụng?
PwdGen sử dụng crypto.getRandomValues() để yêu cầu các giá trị ngẫu nhiên mạnh về mặt mật mã từ trình duyệt.
Web Crypto có nghĩa là mỗi byte đến trực tiếp từ phần cứng không?
Không. Trình duyệt thường sử dụng các nhà cung cấp mật mã của hệ điều hành được gieo hạt bằng entropy chất lượng cao; trình duyệt và hệ điều hành chọn cách triển khai.
Web Crypto có khả dụng trong tất cả các trình duyệt không?
Nó khả dụng trong các trình duyệt hiện đại. Nếu thiếu, PwdGen vô hiệu hóa việc tạo thay vì dựa vào tính ngẫu nhiên không an toàn.