BT

Nouveau Early adopter ou innovator ? InfoQ a travaillé sur de nouvelles fonctionnalités pour vous. En savoir plus

Encrypter des fichiers sur Android avec Conceal

| par Abel Avram , traduit par Olivier Gonthier le 06 févr. 2014. Durée de lecture estimée: 1 minute |

Facebook a rendu open source Conceal, un set d'APIs Java pour encrypter des fichiers et gérer l'authentification d'utilisateurs sur Android. Conceal utilise un sous-ensemble d'algorithmes et de réglages prédéfinis issus d'OpenSSL afin de maintenir la librairie aussi petite que possible, représentant actuellement 85Ko.

La librairie cible les anciennes versions d'Android, de Froyo à Jelly Bean, sur lesquelles les performances sont selon Facebook bien meilleures en comparaison de l'utilisation de code natif.

Le benchmark ci-dessus compare un algorithme natif (ES-CTR-HMAC-SHA1) avec Bouncycastle (AES-GCM) et Conceal (AES-GCM) sur un Galaxy Y.

Google a introduit le support d'OpenSSL dans KitKat, mais la source de chiffrement par défaut "n'est pas très performante", selon Facebook. "Lorsque l'on remplace cette source par la notre (Voir BetterCipherInputStream), les performances sont comparables à celles de Conceal."

L'exemple de code suivant montre comment fonctionne l'encryption de fichiers avec Conceal:

// Crée un nouvel objet Crypto avec l'implémentation
// d'une key chain et celle d'une librairie native.
Crypto crypto = new Crypto(
  new SharedPrefsBackedKeyChain(context),
  new SystemNativeCryptoLibrary());

// Vérifie si les fonctionnalités d'encryption sont disponibles
// Cela peut ne pas être le cas si Android ne charge pas les librairies correctement
if (!crypto.isAvailable()) {
  return;
}

OutputStream fileStream = new BufferedOutputStream(
  new FileOutputStream(file));

// Crée un OutputStream qui encrypte les données en entrée
// puis les écrit dans un fichier
OutputStream outputStream = crypto.getCipherOutputStream(
  fileStream,
  entity);

// Donne un flux de texte lisible à ce stream
outputStream.write(plainText);
outputStream.close();

Conceal peut être utilisé pour encrypter des fichiers de grande taille. Facebook l'utilise pour encrypter des données et des images sur la carte SD des appareils.

Des instructions pour construire une librairie similaire basée sur OpenSSL sont disponibles sur la page GitHup de Conceal.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de lindustrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT