BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Encrypter des fichiers sur Android avec Conceal

Encrypter des fichiers sur Android avec Conceal

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

Contenu Éducatif

BT