Bối cảnh:Tạo xác thực mã hóa an toàn mã thông báo
Đây thực sự là một thực hành tốt nhất chung câu hỏi, nhưng một số cơ bản về tình hình cụ thể có thể hữu ích:
Chúng tôi đang phát triển một ứng dụng "kết nối" cho Iphone. Nó sẽ liên lạc với ứng dụng phụ trợ thông qua các dịch vụ REST. Để không phải nhắc người dùng nhập tên người dùng và mật khẩu mỗi khi họ khởi chạy ứng dụng, chúng tôi sẽ hiển thị dịch vụ "Đăng nhập" xác thực tên người dùng và mật khẩu của họ khi khởi chạy ban đầu và trả về mã thông báo xác thực có thể được sử dụng cho trang web sau này yêu cầu dịch vụ cho dữ liệu thực. Mã thông báo có thể có thời gian hết hạn sau đó chúng tôi sẽ yêu cầu họ xác thực lại bằng tên người dùng/mật khẩu của họ.
Các Câu hỏi:
gì đang thực tiễn tốt nhất để tạo ra loại này của thẻ được sử dụng để xác thực?
Ví dụ, chúng ta có thể ...
- Hash (SHA-256, vv) một chuỗi ngẫu nhiên và lưu nó trong cơ sở dữ liệu cho người sử dụng được cùng với ngày hết hạn. Thực hiện tra cứu đơn giản mã thông báo trên các yêu cầu tiếp theo để đảm bảo mã thông báo khớp với yêu cầu tiếp theo.
- Mã hóa id người dùng và một số thông tin bổ sung (dấu thời gian, v.v ...) bằng khóa bí mật. Giải mã mã thông báo trên các yêu cầu tiếp theo để đảm bảo mã thông báo được phát hành bởi chúng tôi.
Điều này có vẻ như nó phải là một vấn đề được giải quyết.
bạn đang tìm cách tiếp cận này như thế nào? Tôi có thể sai, tuy nhiên, tôi nghĩ rằng có một chút sai sót với nó. Điều duy nhất cần thiết cho yêu cầu khách hàng được ủy quyền là vé có thể được giải mã trên máy chủ. Nếu vé bị chặn trong quá trình vận chuyển (ví dụ như gói sniffing) hoặc thậm chí được trích xuất từ thiết bị di động, kẻ tấn công có thể sử dụng lại để gửi các yêu cầu độc hại. Nếu bạn đang sử dụng SSL thì cuộc tấn công đầu tiên sẽ được giảm nhẹ, tuy nhiên, thứ hai vẫn còn khả thi. – James
Chúng tôi vẫn rất hài lòng với cách tiếp cận này. Chúng tôi sử dụng SSL, do đó, vấn đề đánh hơi không phải là một mối quan tâm. Vé được trích xuất từ thiết bị di động yêu cầu thiết bị di động bị xâm nhập và/hoặc thể chất trong tay của kẻ tấn công. Vào thời điểm đó, kẻ tấn công đã "thắng" và trò chơi kết thúc. Bất kể chi tiết kỹ thuật, điều này sẽ luôn luôn xảy ra nếu có chức năng "nhớ mật khẩu của tôi". Trong trường hợp của chúng tôi, điều này phần nào được giảm nhẹ bởi thực tế là vé chỉ tốt trong 8 giờ, vì vậy kẻ tấn công có một khoảng thời gian giới hạn để sử dụng vé bị đánh cắp. –
lý do tôi hỏi là vì tôi thực sự nghĩ đó là cách thông minh để tạo mã thông báo mà không cần phải tự viết mã bảo mật. Tuy nhiên, tôi đã hỏi [câu hỏi] (http://security.stackexchange.com/questions/19676/token-based-authentication-securing-the-token) trên trang web Bảo mật CNTT để được tư vấn về * cách * an toàn nó thực sự là và ý kiến khác nhau. Đó là nhiều hơn để làm với thực tế bạn sử dụng mã hóa để bảo đảm các mã thông báo chứ không phải là một [MAC] (http://en.wikipedia.org/wiki/Message_authentication_code). – James