7

Tôi đang viết ứng dụng cho Android và tôi phải lưu trữ hai khóa mà tôi sẽ sử dụng để mã hóa/giải mã một số tin nhắn. (Tôi phải lưu trữ khóa riêng RSA). Tôi đã đọc:Lưu trữ khóa trong Android

https://developer.android.com/training/articles/keystore.html#WhichShouldIUse

và có một phần có tiêu đề:

Lựa chọn giữa một Keychain hoặc các nhà cung cấp Android Keystore

Nhưng, tôi không chắc chắn vẫn còn những gì Tôi nên chọn để có được giải pháp an toàn nhất.

Hãy giúp tôi.

Trả lời

5

Khi trang này nói:

Sử dụng API Keychain khi bạn muốn thông tin toàn hệ thống

Mục đích của API Keychain là sử dụng thông tin username/password để có được một 'dấu hiệu 'Ứng dụng này (và các ứng dụng khác tiềm năng) có thể sử dụng. KeyChain cũng được sử dụng rất nhiều để đồng bộ hóa thông tin cá nhân (như thư) trong nền.

Nhưng trong trường hợp của bạn, có vẻ như bạn chỉ muốn lưu trữ khóa RSA riêng. Trong trường hợp này, Keystore là một giải pháp tốt hơn. Lưu ý rằng Keystore chỉ hoạt động trên các thiết bị 4.3+, điều này là do nó sử dụng bộ lưu trữ an toàn được hỗ trợ phần cứng (như ARM Trustzone và các môi trường thực thi an toàn khác) để lưu trữ các khóa riêng của nó (nếu có một mô-đun phần cứng). Tính năng này đã được thêm vào Android 4.3.

Để sử dụng Keystore, bạn cần tạo chứng chỉ bằng khóa công khai và lưu khóa đó bằng khóa cá nhân trong kho khóa. Keystore sử dụng mẫu/mã pin/v.v. của người dùng. (nếu có) để mã hóa khóa riêng. Lưu ý rằng điều này đôi khi dẫn đến thực tế khó chịu mà người dùng không thể tắt màn hình khóa của nó nữa miễn là người dùng không xóa kho lưu trữ chứng chỉ hoặc xóa ứng dụng (trong Android < = 5), vì vậy hãy đảm bảo xóa chứng chỉ khi khóa không còn cần thiết nữa. Keystore sẽ lưu khóa riêng tư trong mô-đun phần cứng (nếu có) nên khó có thể trích xuất khóa cá nhân hoặc cho các ứng dụng khác mã hóa dữ liệu bằng khóa riêng tư. Tuy nhiên nó không phải là 100% bằng chứng ngu ngốc, vì mới exploits are found và root có thể phá vỡ (theo một cách nào đó) lớp bảo vệ bổ sung này. Nhưng nó vẫn còn tốt hơn so với lưu khóa riêng của bạn trong một tập tin.

Ngoài ra nếu bạn muốn hiểu sâu hơn về cách hoạt động của tính năng này ', tôi khuyên bạn nên đọc this paper, chi tiết về Keystore và các cơ chế bảo mật khác trong Android.

+0

Bài đăng tuyệt vời, cảm ơn bạn! Một câu hỏi, như giấy trích dẫn đề cập đến những thay đổi trong Lollipop: bạn có biết liệu mã hóa của kho khóa có được cải thiện trong các phiên bản sau của Android không? Các thông tin có sẵn mà tôi đã tìm thấy không phải là rất rõ ràng trong thời điểm này. – Frank

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