2016-04-10 22 views
5

Nơi tốt nhất để lưu trữ khóa API, Khóa mã hóa cơ sở dữ liệu, v.v ... trong mã ứng dụng để không ai có thể lấy mã bằng cách giải mã mã? Tôi đã sử dụng proguard để làm xáo trộn mã nhưng nó không hoạt động trên Strings.Nơi tốt nhất để lưu trữ khóa bí mật trong ứng dụng Android là gì?

+2

Câu hỏi này đã được [yêu cầu] (http://stackoverflow.com/questions/14570989/best-practice-for-storing -private-api-keys-in-android) – Dmitriy

+0

Có thể trùng lặp [Thực tiễn tốt nhất để lưu trữ khóa API riêng tư trong Android] (https://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api -keys-in-android) – Suhaib

Trả lời

2

Không có cách nào để lưu trữ chúng trong ứng dụng. Ứng dụng có thể được giải mã hoặc thực hiện trên thiết bị đã được sửa đổi, cung cấp thêm quyền truy cập vào bộ nhớ của ứng dụng hoặc ứng dụng có thể được sửa đổi bởi kẻ tấn công để thêm ghi nhật ký mạng hoặc lưu trữ cơ sở dữ liệu/lưu trữ, v.v.

Để xác thực máy chủ, ứng dụng của bạn có thể có được mã thông báo xác thực (hoặc tương tự) bằng cách trao đổi thông tin đăng nhập do người dùng nhập cho mã thông báo xác thực hoặc bằng cách lấy các mã thông báo xác thực từ AccountManager hoặc các API tương tự. Bạn cũng có thể sử dụng API SafetyNet Attest (https://developer.android.com/training/safetynet/index.html) để chứng thực cho các máy chủ của mình rằng ứng dụng của bạn đã được ký bằng khóa ký đang tạo yêu cầu.

Để mã hóa cơ sở dữ liệu, ứng dụng có thể tạo khóa mã hóa ngẫu nhiên trên thiết bị, được liên kết với thông tin đăng nhập do người dùng nhập hoặc được lưu trữ trong Android Keystore hoặc đơn giản dựa vào bảo vệ do Android cung cấp cho ứng dụng. Nó phụ thuộc vào mô hình mối đe dọa của bạn (ví dụ, tại sao bạn nghĩ rằng bạn cần mã hóa cơ sở dữ liệu?)

+0

Làm cách nào để ngăn ứng dụng lừa đảo mạo danh ứng dụng của bạn khi nói chuyện với máy chủ? – pete

+0

Máy chủ của bạn có thể yêu cầu tất cả các yêu cầu (hoặc yêu cầu đăng nhập hoặc tương tự) chứa mã xác nhận/xác nhận của SafetyNet. Sau đó, máy chủ sẽ xác minh rằng (1) mã xác thực/xác nhận thực sự được cơ sở hạ tầng SafetyNet Attest của Google cấp và (2) trích xuất tên gói + ký xác nhận của ứng dụng từ mã thông báo/xác nhận và kiểm tra xem chúng có khớp với ứng dụng của bạn hay không. Về bản chất, máy chủ của bạn sẽ tin tưởng rằng rất khó để đánh lừa cơ sở hạ tầng SafetyNet Attest (cả phía máy khách lẫn phía máy chủ). –

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