chiffrer les données dans des références partagées
Im en train d'élaborer un cadre pour l'accès aux services web de oAuth 1 et 2 et ma question Est, Comment puis-je stocker des données sensibles comme une clé d'accès oAuth d'une manière sécurisée? le problème avec ces clés est que certaines plateformes comme twitter utilisent une clé permanente et si quelqu'un obtient l'accès à cette clé, il pourrait faire ce qu'il veut avec le compte twitter des utilisateurs..
ainsi est - il possible de crypter automatiquement les données avant qu'elles ne soient stockées dans le partage préférences? Ou est-il une meilleure façon/de place pour stocker des données très importantes?
mise à jour-également lire: Quelle est la façon la plus appropriée de stocker les paramètres de l'utilisateur dans L'application Android
10 réponses
1). Comment chiffrer?
sur Android le cryptage se fait via Java Cryptography Architecture (JCA). Il s'agit principalement du paquet javax.crypto.*
.
voici un exemple d'utilisation de L'API JCA (en particulier AES alrorithm).
2). Où stocker?
L'API de cryptage manipule avec des tableaux d'octets (pas de chaînes). Cela signifie que vous pouvez utiliser SharedPreferences
, mais vous aurez besoin d'appliquer l'encodage de Base-64 sur le tableau byte crypté avant de le mettre dans SharedPreferences
(sinon L'analyseur XML manquera de lire le fichier des préférences partagées). Ensuite, vous aurez besoin d'utiliser en Base 64 décodage. Notez que par défaut, la plupart des versions D'Android OS n'ont pas d'API Base-64 intégrée (voir la section Mise à jour). Donc, pour supprimer cette base-64 overhead je recommande juste pour stocker vos octets dans un fichier privé .
mise à JOUR: Depuis l'API de Niveau 8, l'API a android.util.Base64
.
vous pouvez aussi jeter un oeil à cette classe que j'ai faite pour faire exactement ceci: https://github.com/sveinungkb/encrypted-userprefs
il utilise AES à la place du DES déprécié et faible utilisé dans l'autre suggestion.
je recommande d'utiliser Facebook Cacher pour le cryptage sur Android presque chaque fois - c'est une bibliothèque Android rapide qui prend des décisions vraiment sain et vous laisse avec quelques, des interfaces simples pour faire réellement le travail.
Bonus! J'ai récemment assemblé le puzzle de comment vous pouvez l'utiliser de Xamarin - voir mon article sur la sécurisation des données de votre c# app en utilisant le cache pour plus d'informations.
vous devriez jeter un oeil à Slink . Je me suis rendu compte que la plupart des outils de cryptage SharedPreferences utilisent le cryptage pour chaque action que vous faites, ce qui signifie que chaque paire clé-valeur est sauvegardée seulement après que la clé et la valeur ont été cryptées, séparément. Cela crée une grosse performance aérienne.
donc j'ai cherché une bibliothèque qui me donnera un processus de cryptage plus efficace et J'ai trouvé Slink. Slink utilise la bibliothèque cache de Facbook pour enregistrer la carte complète des objets dans son ensemble, ce qui en fait la solution de cryptage SharedPreferences la plus efficace et la plus rapide. Il utilise également les interfaces SharedPreferences D'Android commune, ce qui rend l'utilisation extrêmement facile et presque sans couture. Avertissement: je fais partie de l'équipe de développement de cette bibliothèque.
Voir double: Obscurcir de Chiffrer/SharedPreferences fichier possible?
Salut, j'ai créé une implémentation SharedPreferences en utilisant AES encryiption. Le projet est un module maven. Si vous avez besoin d'un, prendre un regarder. https://github.com/kovmarci86/android-secure-preferences
essayez d'utiliser notre https://github.com/BottleRocketStudios/Android-Vault composant voûte. Il utilisera le Keystore D'Android (sur les appareils pris en charge) ou une technique D'Obfuscation pour chiffrer les valeurs dans un fichier SharedPreference et implémente l'interface SharedPreference, il s'agit donc en grande partie d'un remplacement direct.
nouveau cryptage introduit par facebook-masquer le cryptage.. facile à utiliser
https://github.com/afiqiqmal/ConcealSharedPreference-Android
cet article sur codeproject contient une belle enveloppe pour les préfets partagés. Toutefois, le nom de classe SecurePreferences
est trompeur quelque chose comme ObfuscatedPreferences
serait plus approprié.
Il ya une bibliothèque Android qui utilise Facebook cacher pour crypter les données.
https://github.com/rtoshiro/SecureSharedPreferences
Maven Central:
compile 'com.github.rtoshiro.securesharedpreferences:securesharedpreferences:1.0.+'
vous pouvez crypter les données dans les préférences et garder la clé de cryptage dans le système Android Keystore . De cette façon, votre clé de cryptage serait également Sécuritaire.
vous pouvez regarder dans une bibliothèque faisant ceci https://github.com/ophio/secure-preferences