2013-01-17 25 views
15

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 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!

Trả lời

0

Có lẽ đây trích dẫn từ here có thể giúp bạn:

Về phía OOB android không được hỗ trợ trong API công cộng để điều được khéo léo. Tôi tin rằng điều này là bởi vì Honeycomb 3.2 không có một ngăn xếp màu xanh chính thức hỗ trợ liên kết OOB, nhưng Google có một số loại thực thi được mã hóa. Tôi tin điều này bởi vì nếu bạn nhìn vào mã nguồn của Bộ điều hợp Bluetooth và Bluetooth của . các lớp học bạn có thể xem các phương pháp OOB có sẵn nhưng không được hiển thị qua API tài liệu .

Các phương pháp này vẫn công khai để bạn có thể gọi cho chúng qua phản ánh . Sử dụng sự phản chiếu, bạn cũng có thể nhận được tất cả các phương thức chữ ký trong một lớp học. Đây là cách tôi đã tìm ra phương pháp nào tôi có sẵn .

Hãy coi chừng dù nhiều tài liệu không được ghi lại và không rõ ràng những gì một số thực hiện. Những điều quan trọng cần lưu ý là readOutOfBandData() trong lớp bộ điều hợp và setDeviceOutOfandData() trong lớp thiết bị.

+0

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 ... –

+0

; o) Không sao, tôi hiểu lầm. –

1

Bạn có thể sử dụng nó với sự kết hợp của Keychain API (có sẵn ở cấp API 14 trở đi) và mã hóa dữ liệu bằng Cipher API bằng chứng chỉ từ khóa API api.

Hãy lưu ý: Theo Android an ninh Tổng quan tài liệu, không có bảo đảm nếu thiết bị được bắt nguồn từ: http://source.android.com/tech/security/index.html#rooting-of-devices

+0

vâng sự khởi động của các thiết bị có khả năng là một nhức đầu từ quan điểm bảo mật; như là cài đặt roms tùy chỉnh (nó tương đối đơn giản để xây dựng một rom tùy chỉnh mà snoops trên dữ liệu người dùng). Tuy nhiên, người dùng thực hiện điều đó với rủi ro của riêng mình (tôi chắc chắn có!) Điều này thật thú vị, tôi sẽ phải xem liệu có bất kỳ chứng chỉ thiết bị cụ thể nào có thể được sử dụng hay không. –

Các vấn đề liên quan