2016-03-03 14 views
13

Tôi đã đọc tài liệu Android ở http://developer.android.com/training/articles/keystore.html Nhưng tôi thiếu một số chi tiết ...Hệ thống Android Keystore có thể an toàn như thế nào?

Nếu ứng dụng tạo Khóa (đối xứng hoặc không đối xứng) bằng AndroidKeyStore.

Chúng tôi có thể trích xuất khóa từ kho khóa đó không?

Ứng dụng khác (AppB) có thể truy cập khóa do AppA tạo không?

Trong trường hợp nào chúng tôi có thể mất chìa khóa? Chỉ khôi phục cài đặt gốc thiết bị?

Cảm ơn.

+0

1) bạn nên giữ kho khóa an toàn và trong mọi trường hợp không chia sẻ 2) các khóa trong kho khóa yêu cầu mật khẩu, mặc dù tôi đoán mọi thứ đều có thể, vì vậy hãy xem điểm 1 3) không chắc tôi hiểu câu hỏi nhưng nói chung tôi sẽ nói không, không phải khóa cá nhân ít nhất (được sử dụng để ký ứng dụng) 4) cái này tôi không chắc chắn tôi có được, miễn là bạn có kho khóa, bạn có thể tạo một ứng dụng đã ký bằng cách sử dụng nó, nhưng một lần nữa. Nó không nên được lưu trữ trên thiết bị hoặc tương tự – cYrixmorten

+0

Cảm ơn câu trả lời của bạn nhưng tôi không nói về kho khóa mà chúng tôi sử dụng để ký ứng dụng. Tôi đã thêm tài liệu Android vào câu hỏi. –

+0

Ok sau đó tôi hiểu lầm :-) nvm – cYrixmorten

Trả lời

15

Bạn có thể sử dụng Android KeyStore Provider hoặc tạo tệp KeyStore bình thường.

  • KeyStore (API 1): Bạn sẽ phải tạo một tập tin KeyStore và bạn cũng sẽ phải quản lý các bí mật tiếp cận với nó. Những bí mật này rất nhạy cảm và khó che giấu cho kẻ tấn công. Cá nhân tôi không khuyên bạn nên lựa chọn này.

  • Nhà cung cấp KeyStore Android (API 18): Sử dụng API này, bạn sẽ ủy quyền tất cả những thứ nặng để truy cập vào hệ điều hành. Bạn sẽ không cần sử dụng bất kỳ mật khẩu nào vì bản thân hệ điều hành sẽ lưu trữ mật khẩu đó từ mã pin, mật khẩu, hình mẫu và các biến khác của màn hình khóa. Nếu thiết bị có chứa phần tử bảo mật được nhúng và đặt loại bộ nhớ là Được hỗ trợ một phần cứng và không chỉ Được hỗ trợ bởi phần mềm, nó sẽ lưu trữ những bí mật ở đó. Đây là cách bảo mật nhất để lưu trữ bất kỳ loại bí mật nào, sử dụng phần cứng bảo mật. Điều này thậm chí có thể giữ bí mật những bí mật mặc dù người dùng đã bắt nguồn từ điện thoại.

Chúng tôi có thể trích xuất khóa từ kho khóa đó không?

Với cả hai ứng dụng của bạn có thể nhận được PrivateKey và sử dụng nếu đây là ý của bạn.

Ứng dụng khác (AppB) có thể truy cập khóa do AppA tạo không?

Với mỗi nhà cung cấp KeyStore, mỗi ứng dụng chỉ có thể truy cập vào các trường hợp hoặc bí danh KeyStore của họ. Với một KeyStore bình thường, nếu một ứng dụng khác có quyền truy cập vào tệp, nó có thể cố gắng tấn công nó.

Trong trường hợp nào chúng tôi có thể mất chìa khóa? Chỉ khôi phục cài đặt gốc thiết bị?

Xóa ứng dụng sẽ xóa phiên bản nhà cung cấp KeyStore của ứng dụng của bạn. Tuy nhiên, do a nasty bug trong Android (phổ biến hơn trước Android 5) nếu người dùng thay đổi mẫu màn hình khóa thành mật khẩu hoặc xóa mẫu, KeyStore sẽ bị xóa. Điều tương tự cũng xảy ra khi người dùng thực hiện "Xóa thông tin đăng nhập" từ cài đặt Android. Thay vào đó, với KeyStore cổ điển, bạn có thể lưu trữ nó trong bộ nhớ ngoài và giữ nó ngay cả sau khi khôi phục cài đặt gốc của thiết bị. Tuy nhiên, nó vẫn kém an toàn hơn nhà cung cấp.

Tôi có thể sai về một số khía cạnh, nhưng đây là những gì tôi tìm hiểu và tôi vừa chia sẻ kinh nghiệm của mình. Hy vọng điều này là hữu ích cho bạn.

+1

Cảm ơn, nó thực sự hữu ích cho tôi. – Herman

+0

@Herman: bạn có đang sử dụng nhà cung cấp Android KeyStore để lưu trữ khóa của mình không? – j10

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