2015-03-06 17 views
12

Tôi muốn lưu trữ dữ liệu bí mật trong kho khóa riêng của ứng dụng của mình.Sử dụng KeyPairGeneratorSpec cho cấp API Android <18?

Tuy nhiên, khi tôi đang làm việc trên mã để thực hiện việc này, Android Studio cảnh báo rằng KeyPairGeneratorSpec.Builder(context) yêu cầu cấp API 18 và tôi đang nhắm mục tiêu 14 ở mức tối thiểu. :-(

Làm thế nào tôi có thể lưu trữ dữ liệu bí mật trong ứng dụng của tôi cho cấp API Android 14 thông qua 17?

+1

Thông thường, bạn có thể tìm thấy mọi thứ bạn cần trong thư viện hỗ trợ nhưng nó có vẻ như họ không thêm lớp đó. https://developer.android.com/reference/android/support/v4/app/package-summary.html Xin lỗi, tôi không có câu trả lời cho bạn. – nasch

+1

vâng, tôi cũng không thể tin vào mắt mình. –

Trả lời

5

Các AndroidKeyStore mà vẫn thường được hỗ trợ bởi phần cứng (nhưng không nhất thiết phải như vậy) được chính thức giới thiệu vào mức API 18 như bạn có thể nhìn thấy và được mô tả ở đây: http://developer.android.com/training/articles/keystore.html

Nikolay Elenkov đã viết một ứng dụng nhỏ đẹp để kiểm tra AndroidKeyStore mà bạn có thể tìm thấy ở đây: https://github.com/nelenkov/android-keystore

có một số thủ thuật mà bạn có thể sử dụng để làm cho nó loại công việc ở cấp API 17 nếu bạn đào sâu vào AOSP, nhưng không có bảo đảm nó sẽ hoạt động trên mọi thiết bị vì vậy nó là vô nghĩa. Bạn chắc chắn sẽ không làm cho nó làm việc trên bất cứ điều gì trước đó. Nó thực sự không cần thiết để sử dụng AndroidKeyStore để lưu trữ khóa riêng của bạn trừ khi bạn siêu hoang tưởng về an ninh và yêu cầu nó được hỗ trợ bởi phần cứng hoặc trong một quá trình bị cô lập (quá trình keystore trên thiết bị không được phần cứng hỗ trợ).

Nếu bạn tự tạo một cặp khóa trong ứng dụng và lưu nó trong một tệp kho khóa vào vùng dữ liệu của bạn, không ứng dụng Android nào khác có thể đọc khóa của bạn đủ an toàn cho hầu hết các ứng dụng. Bạn thậm chí có thể cho phép người dùng bảo vệ kho khóa bằng mật khẩu mà họ chọn.

Có một số thông tin hữu ích vào việc tạo ra một cặp khóa trong phần mềm sử dụng Java và Android có thể được tìm thấy ở đây:

Android RSA Keypair Generation - Should I use Standard Java/Bouncy Castle/Spongy Castle/JSch/Other?

https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html

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