Vì vậy, tôi đang làm việc trên một ứng dụng dành cho thiết bị di động ngay bây giờ sẽ đưa ra yêu cầu cho một API REST được xây dựng với Django.Tôi làm cách nào để chia sẻ khóa bí mật của ứng dụng dành cho thiết bị di động của mình với máy chủ trong lần đầu tiên tôi tạo nó?
Để đảm bảo API tôi có kế hoạch sử dụng hệ thống xác thực cặp khóa riêng/công khai.
Các quy trình làm việc tôi đã nghĩ ra đi một cái gì đó như thế này:
- Các người dùng đăng nhập qua tài khoản Facebook
- Khi người dùng ký ứng dụng tạo ra một chìa khóa
- Khóa bí mật cá nhân được chia sẻ giữa các máy chủ và ứng dụng sao cho máy chủ biết để ánh xạ khóa riêng đó cho một người dùng cụ thể.
- Mỗi khi ứng dụng dành cho thiết bị di động đưa ra yêu cầu, ứng dụng sẽ tạo ra HMAC/chữ ký bằng thông số yêu cầu và khóa cá nhân. Ngoài HMAC, ứng dụng còn gửi user_id của người dùng đã gửi nó (điều này sẽ hoạt động như khóa công khai).
- Khi máy chủ nhận được yêu cầu, nó tạo ra HMAC riêng của mình. Nó lấy user_id và tra cứu khóa riêng trong một bảng. Sử dụng khóa riêng, nó tạo lại HMAC với các tham số yêu cầu và so sánh nó với HMAC mà ứng dụng di động đã gửi. Nếu máy chủ và thiết bị di động có các HMAC phù hợp thì nó sẽ thực hiện yêu cầu.
Hiện tại, sự cố của tôi nằm ở bước 3 trong đó khóa cá nhân phải được chia sẻ bằng cách nào đó giữa ứng dụng dành cho thiết bị di động và máy chủ. Làm thế nào tôi có thể gửi khóa riêng tư một cách an toàn?