Giống như nhiều người - Tôi đang phát triển một ứng dụng với một codebase dùng chung (Windows Store + Android + MonoTouch + [later] WP8).Có lưu trữ an toàn nào trên Android thông qua Monodroid không?
Ngoài ra, cũng như với nhiều ứng dụng, tôi có trạng thái cục bộ mà tôi cần phải duy trì cho ứng dụng này.
Một phần thông tin mà tôi lưu trữ là mã thông báo xác thực cho người dùng đã đăng nhập. Trên nền tảng Windows Store, tôi đã thực hiện việc lưu trữ này với một hỗn hợp các cài đặt chuyển vùng (ApplicationData.Current.RoamingSettings
) cho dữ liệu phụ trợ của mã thông báo (tên người dùng và ngày phát hành) và PasswordVault
cho giá trị mã thông báo thực tế. Do đó mã thông báo được bảo vệ khỏi sự quan tâm đến mức hệ điều hành, vì nó được mã hóa bởi hệ điều hành.
Bây giờ tôi đang triển khai cùng một giao diện cho bản dựng MonoDroid của mình và tôi không thể thấy bất kỳ cách nào do nền tảng cung cấp, để lưu trữ dữ liệu chỉ có thể được giải mã bằng ứng dụng của tôi - giống như mật khẩu vault có thể được sử dụng cho các ứng dụng Store.
Kết quả là tại thời điểm này, tôi chỉ sử dụng giao diện Android.Content.ISharedPreferences
qua phương thức Application.Context.GetSharedPreferences
để đọc và ghi các giá trị này.
Vì vậy, tôi có chính xác trong giả định rằng nền tảng (MonoDroid hoặc Android) không cung cấp OOB lưu trữ an toàn không? Là lựa chọn duy nhất để thực hiện mã hóa trong ứng dụng - tất nhiên điều này sẽ yêu cầu nướng khóa mã hóa vào mã? Hoặc tôi có thể lấy chứng chỉ được sử dụng để ký ứng dụng và sử dụng nó làm khóa không?
Cuối cùng nó không phải là tận thế nếu tôi không thể mã hóa dữ liệu này, vì token là giới hạn thời gian anyway - nhưng nó sẽ được tốt đẹp nếu tôi thực sự có thể làm điều đó đúng!
Oh oops! Bởi 'OOB' tôi có nghĩa là 'ra khỏi hộp'! I.e là có một nền tảng cung cấp cơ chế cho lưu trữ được mã hóa được cung cấp trong hộp :-). Thay đổi tiêu đề câu hỏi ... –
; o) Không sao, tôi hiểu lầm. –