2015-05-14 59 views
6

Tôi đang tìm hiểu kho khóa Android cho mục đích lưu trữ mật khẩu trên thiết bị. (https://developer.android.com/training/articles/keystore.html)Cách lưu trữ mật khẩu trên Android

Trong bài viết này, nó nói "Sử dụng nhà cung cấp Keystore Android để cho phép một ứng dụng cá nhân lưu trữ thông tin xác thực của riêng mình mà chỉ ứng dụng có thể truy cập". Đây chính là điều tôi muốn.

Vì vậy, tôi nghĩ rằng cách này sẽ làm việc giống như: 1) Tôi sẽ tạo ra một RSA key

2) Lưu trữ các PrivateKey trong KeyStore

3) Lưu trữ các PublicKey trong một số SharePrefs

4) Mã hóa mật khẩu bằng cách sử dụng PublicKey

5) Mã hóa mật khẩu bằng Khóa riêng tư.

Tuy nhiên tôi nghĩ rằng tôi hiểu lầm gì đó vì bài viết này không hiển thị

1) Làm thế nào để tiết kiệm PrivateKey để KeyStore (Tôi không thấy bất kỳ API cho thấy cách keystore thêm phím)

2) Không hiển thị cách giải mã dữ liệu bằng PrivateKey

Trẻ sơ sinh lý do tại sao bài viết này nói về "Sử dụng khóa cá nhân trong kho khóa để tạo chữ ký trên một số dữ liệu". Tạo Chữ ký trên một số dữ liệu có nghĩa là gì? (Tôi muốn giải mã dữ liệu bằng PrivateKey). Và tại sao nó muốn xác minh "chữ ký trước đó được thực hiện bởi một PrivateKey".

Vì vậy, tôi bị mất vào thời điểm này ... bài viết này bắt đầu tôi ở đúng nơi nhưng sau đó vào cuối tôi bối rối những gì nó đang cố gắng để đạt được.

Ai đó có thể đề xuất xem điều tôi đang cố làm có ý nghĩa gì không? Hoặc tôi có nên lưu khóa công khai và riêng tư trong db của riêng mình không? (không có nhiều bảo mật ở đó nhưng nó là tốt nhất tôi có thể làm với yêu cầu nhất định để lưu trữ mật khẩu trên thiết bị).

Rất cám ơn

Rgds !!!!

Trả lời

2

Tôi trích dẫn dòng này từ Sử dụng lưu trữ nội bộ phần của http://developer.android.com/training/articles/security-tips.html Theo mặc định, tập tin mà bạn tạo ra trong bộ nhớ trong có thể truy cập duy nhất để ứng dụng của bạn. Việc bảo vệ này được thực hiện bởi Android và đủ cho hầu hết các ứng dụng.

Bây giờ về mã hóa: API cửa hàng đang xử lý mã hóa dữ liệu. Và các phím được sử dụng để liên lạc an toàn chứ không phải để lưu trữ mật khẩu. Mật khẩu thường là các băm hoặc bản đồ không thể đảo ngược. Và không yêu cầu giải mã nhưng chỉ cần khớp.

Ví dụ: Để liên lạc nếu bạn gửi dữ liệu được mã hóa, bên khác liên quan đến giao tiếp cần phải biết khóa dữ liệu yêu cầu dữ liệu gì. Vì vậy, nếu bạn đã gửi bộ tiếp nhận "Xin chào tôi bị bí mật", bạn phải biết rằng bạn đã gửi "Xin chào tôi đã được mã hóa" dưới dạng tin nhắn.

Đối với mật khẩu nếu bạn nhập một số cụm từ mật khẩu hoặc mã khóa, cần phải khớp với mật khẩu được lưu trữ. Giống như "pass123" là mật khẩu của bạn được lưu trữ dưới dạng "rdi # $$ [email protected]/b "sau đó khi bạn nhập mật khẩu khi xử lý bằng cách kiểm tra thuật toán, nó phải khớp với giá trị được lưu trữ và bạn được xác thực là không bắt buộc phải tạo" pass123 "

Vì vậy, đối với ứng dụng của bạn, bạn có thể sử dụng một số cơ chế tạo ra băm gần như độc đáo và không thể đảo ngược) để tạo khóa/băm duy nhất khi nhập mật khẩu và sau đó lưu trữ nó trong dữ liệu ứng dụng của bạn

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