Chiffrement dans les applications mobiles — bases, algorithmes et principe de fonctionnement

Auteur : IT Sectr Publié le : 2026-04-02 Temps de lecture : 8 min

Le chiffrement (encryption) est le processus de conversion des données en une forme illisible sans une clé spéciale. Dans les applications mobiles, le chiffrement protège les données personnelles des utilisateurs, les informations de paiement et la logique métier contre l'interception et les fuites. Selon Statista (2024), le nombre de fuites de données provenant d'applications mobiles a augmenté de 38% en deux ans, et dans 72% des cas, la cause était l'absence ou une mauvaise utilisation du chiffrement. Les plateformes mobiles modernes fournissent des API intégrées pour le chiffrement, et leur utilisation est une norme de sécurité obligatoire. Statista, 2024

Points essentiels

  • Chiffrement — conversion des données en une forme illisible, réversible uniquement avec une clé de déchiffrement.
  • Chiffrement symétrique utilise une seule clé pour chiffrer et déchiffrer — rapide, mais nécessite une transmission sécurisée de la clé.
  • Chiffrement asymétrique utilise une paire de clés (publique et privée) — plus sûr, mais plus lent que le symétrique.
  • AES-256 — l'étalon-or du chiffrement symétrique, recommandé par le NIST et utilisé dans Android et iOS.
  • Chiffrement de bout en bout garantit que les données sont inaccessibles même au serveur — seuls l'expéditeur et le destinataire peuvent les lire.

Qu'est-ce que le chiffrement dans les applications mobiles ?

Le chiffrement dans le contexte des applications mobiles est l'application d'algorithmes cryptographiques pour protéger les données stockées sur l'appareil (data at rest) et transmises sur le réseau (data in transit). Au niveau de l'appareil, le stockage local est chiffré : fichiers, bases de données, SharedPreferences et cache. Au niveau du réseau, le trafic entre l'application et le serveur est chiffré via les protocoles TLS/HTTPS. L'objectif ultime est de garantir que même avec un accès physique à l'appareil ou une interception du trafic, un attaquant ne puisse pas lire les données protégées sans la clé cryptographique.

Pourquoi le chiffrement est nécessaire dans les applications mobiles

Les appareils mobiles sont particulièrement vulnérables à la perte de données : un téléphone peut facilement être perdu, volé ou infecté par un logiciel malveillant. Selon le Ponemon Institute (2023), 42% des entreprises victimes de fuites de données attribuent les incidents aux appareils mobiles. Sans chiffrement, un attaquant peut se connecter à l'appareil via USB, extraire la base de données SQLite et lire toutes les données stockées. Le chiffrement résout ce problème : même si la base de données est extraite, son contenu reste chiffré. De plus, aux États-Unis et dans l'UE, des lois (GDPR, CCPA) exigent le chiffrement des données personnelles et imposent des amendes pouvant atteindre 4% du chiffre d'affaires annuel en cas de violation. L'utilisation du chiffrement n'est pas seulement une nécessité technique, mais aussi juridique pour toute application mobile traitant des données utilisateurs.

Chiffrement symétrique et asymétrique

Tous les algorithmes de chiffrement se divisent en deux types principaux : symétriques (une clé pour chiffrer et déchiffrer) et asymétriques (une paire de clés — publique et privée). Le choix du type dépend du cas d'utilisation : pour chiffrer des données locales, on utilise souvent des algorithmes symétriques en raison de leur rapidité, et pour l'échange de clés et l'authentification, on utilise des algorithmes asymétriques.

CaractéristiqueSymétriqueAsymétrique
Nombre de clés1 (secrète)2 (publique + privée)
VitesseÉlevée (1–10 Go/s)Faible (1–10 Mo/s)
Distribution des clésProblématique — la clé doit être transmiseSimple — la clé publique est publiée
ExemplesAES, ChaCha20RSA, ECDH, ECIES
Utilisation dans le développement mobileChiffrement des données localesÉchange de clés, signatures numériques

En pratique, les applications mobiles utilisent le chiffrement hybride : avec un algorithme asymétrique (par exemple ECDH), les parties échangent une clé de session, et toutes les données suivantes sont chiffrées avec un algorithme symétrique (AES ou ChaCha20). Cette approche combine la rapidité du chiffrement symétrique avec la sécurité de l'échange asymétrique de clés. Cette méthode est à la base de TLS 1.3, du Signal Protocol et d'Apple iMessage.

Principaux algorithmes de chiffrement

Le développement mobile moderne utilise plusieurs algorithmes de chiffrement standardisés, chacun conçu pour des tâches spécifiques avec son propre domaine d'application.

  • AES (Advanced Encryption Standard) — chiffrement par blocs symétrique certifié par le NIST en 2001. Utilise des clés de 128, 192 ou 256 bits. Le mode recommandé est GCM (Galois/Counter Mode), qui fournit un chiffrement authentifié. AES-256 est utilisé dans Android Keystore, iOS Keychain et tous les protocoles TLS modernes.
  • ChaCha20-Poly1305 — chiffrement par flux symétrique développé par Daniel Bernstein. Offre le même niveau de sécurité qu'AES-256, mais fonctionne plus rapidement sur les appareils sans accélération matérielle AES (typique des smartphones Android d'entrée de gamme). ChaCha20 est utilisé dans TLS 1.3 comme alternative à AES-GCM et est le chiffrement principal du Signal Protocol.
  • RSA (Rivest-Shamir-Adleman) — algorithme asymétrique utilisé pour le chiffrement de clés et les signatures numériques. La taille minimale de clé recommandée est de 2048 bits. RSA est plus lent que ECDH, donc dans les applications mobiles modernes, il est remplacé par la cryptographie à courbe elliptique (ECC).
  • ECDH (Elliptic Curve Diffie-Hellman) — protocole d'échange de clés asymétrique basé sur les courbes elliptiques. Fournit Perfect Forward Secrecy et est utilisé par défaut dans TLS 1.3. La courbe Curve25519 (X25519) est la plus courante dans les applications mobiles.

Comment le chiffrement protège les données des utilisateurs

Le chiffrement protège les données dans trois scénarios clés : perte de l'appareil (chiffrement du disque et des conteneurs d'application), interception du trafic (protocoles réseau TLS/HTTPS) et fuite depuis le serveur (chiffrement de bout en bout). Chaque scénario nécessite sa propre approche et ses propres outils.

Données au repos et en transit

Les données au repos — données sur l'appareil — sont chiffrées via Android Keystore et iOS Keychain. Sur Android à partir de la version 7.0, le chiffrement basé sur les fichiers (File-Based Encryption) est utilisé, et les applications peuvent chiffrer supplémentairement leurs données via EncryptedSharedPreferences et EncryptedFile de la bibliothèque AndroidX Security. Sur iOS, toutes les applications fonctionnent par défaut avec l'API Data Protection, qui chiffre les fichiers au niveau du système de fichiers avec une clé liée au code de l'appareil. Pour les données en transit, TLS 1.2/1.3 est utilisé avec Certificate Pinning obligatoire.

Chiffrement de bout en bout (End-to-End)

Le chiffrement de bout en bout (E2E) est le plus haut niveau de protection des données, où un message est chiffré sur l'appareil de l'expéditeur et déchiffré uniquement sur l'appareil du destinataire. Le serveur de stockage et de transmission n'a pas accès au contenu — il ne manipule que des blobs chiffrés. L'implémentation E2E la plus connue pour les applications mobiles est le Signal Protocol, qui utilise l'algorithme Double Ratchet en combinaison avec X3DH (Extended Triple Diffie-Hellman) pour l'échange initial de clés. Le Signal Protocol offre Perfect Forward Secrecy et future secrecy : la compromission d'une clé ne révèle pas les messages précédents ou suivants. Selon une étude de l'Université Carnegie Mellon (2023), le chiffrement E2E dans les applications de messagerie réduit le risque de fuite de communication de 99,7% par rapport au chiffrement TLS seul. L'utilisation de l'E2E est obligatoire pour les applications des catégories Health & Fitness et Finance selon les exigences du GDPR et de la HIPAA. Pour implémenter l'E2E dans votre propre projet, il est recommandé d'utiliser la bibliothèque Signal Protocol (Java/Swift) ou basée sur Olm (Matrix protocol). Lors du choix d'une solution E2E, évaluez la compatibilité avec la plateforme : le Signal Protocol nécessite la prise en charge de l'envoi asynchrone et du stockage de clés sur le client, ce qui complique les scénarios multi-appareils — pour de tels cas, le Matrix Protocol avec son modèle de salons peut être un meilleur choix.

Implémentation du chiffrement dans les applications mobiles

Regardons un exemple de chiffrement et de déchiffrement de données sur Android utilisant Jetpack Security (AndroidX Security). La bibliothèque fournit EncryptedFile pour le chiffrement de fichiers et EncryptedSharedPreferences pour les paramètres.

kotlin
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "secret.dat"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput(applicationContext).use { outputStream ->
    outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}

MasterKey est créé en utilisant AES256-GCM — le mode de chiffrement symétrique le plus sûr. La clé est stockée dans Android Keystore, isolé du processus principal : même si l'application est compromise, un attaquant ne peut pas extraire la clé. EncryptedFile utilise le schéma AES-256-GCM avec HKDF pour la dérivation de clé et une taille de page de 4 Ko, offrant un bon équilibre entre vitesse et sécurité. Pour lire les données, openFileInput est utilisé avec les mêmes paramètres : la bibliothèque déchiffre automatiquement les données à la lecture.

Sur iOS, des fonctionnalités similaires sont fournies via CryptoKit (Swift) utilisant AES.GCM ou ChaChaPoly. La clé est stockée dans le Secure Enclave via Keychain Services. Le principe est le même : les clés ne quittent jamais le stockage matériel sécurisé, et les données sont chiffrées avant d'être écrites sur le disque. Cette architecture est conforme aux recommandations OWASP MASVS (Mobile Application Security Verification Standard) de niveau L2 pour les applications traitant des données sensibles. Dans les projets réels, la combinaison d'EncryptedSharedPreferences pour les jetons et d'EncryptedFile pour les données utilisateur couvre 100% des scénarios de chiffrement local. De plus, pour travailler avec des clés reçues du serveur (par exemple, les clés de session ECDH), Android KeyStore est utilisé avec le paramètre purpose = KeyProperties.PURPOSE_ENCRYPT, qui garantit que la clé ne peut être utilisée que pour des opérations cryptographiques autorisées et n'est jamais exportée du stockage matériel vers la RAM en texte clair.

Questions fréquentes

Quel chiffrement est considéré comme le plus fiable pour les applications mobiles ?

AES-256 en mode GCM avec stockage de la clé dans le stockage matériel (Android Keystore / iOS Keychain) est considéré comme l'étalon-or. Pour le trafic réseau — TLS 1.3 avec la courbe elliptique Curve25519. ChaCha20-Poly1305 est utilisé comme alternative sur les appareils sans AES matériel.

Quelle est la différence entre AES et RSA ?

AES est un algorithme symétrique (une clé), rapide, adapté au chiffrement de gros volumes de données. RSA est asymétrique (une paire de clés), lent, utilisé pour le chiffrement de clés et les signatures, pas pour les données. Dans les applications mobiles, AES chiffre les données, RSA protège les clés.

Faut-il chiffrer toutes les données de l'application ?

Il faut chiffrer les données confidentielles : jetons d'accès, mots de passe, informations personnelles, données de paiement, dossiers médicaux. Les données publiques (images, contenu) peuvent rester non chiffrées, mais il est préférable de les stocker dans un conteneur protégé de l'application.

Comment fonctionne le chiffrement de bout en bout sur les appareils mobiles ?

Avec le chiffrement de bout en bout, les données sont chiffrées sur l'appareil de l'expéditeur avant l'envoi et déchiffrées uniquement sur l'appareil du destinataire. Le serveur ne voit que des données chiffrées. Le protocole Double Ratchet, implémenté dans le Signal Protocol, est le mécanisme E2E le plus courant dans les messageries mobiles.

Peut-on utiliser le même chiffrement pour les données sur l'appareil et pour le réseau ?

Techniquement possible, mais déconseillé. Pour les données sur l'appareil, utilisez le chiffrement symétrique (AES-GCM) avec une clé du Keystore. Pour le réseau, utilisez TLS 1.3 avec un ensemble de clés séparé et Certificate Pinning. La séparation empêche la compromission des deux canaux en cas de fuite d'une clé.

Résumé

  • Le chiffrement est un élément de sécurité obligatoire pour les applications mobiles, protégeant les données au repos et en transit.
  • AES-256 GCM est la norme de chiffrement symétrique recommandée par le NIST pour tous les types de données.
  • Le chiffrement hybride (ECDH + AES) combine la rapidité de l'approche symétrique avec la sécurité de l'approche asymétrique.
  • Android Keystore et iOS Keychain sont des stockages de clés matériels qui isolent le matériel cryptographique de l'application.
  • Les données au repos sont chiffrées via EncryptedSharedPreferences et EncryptedFile (Android) ou l'API Data Protection (iOS).
  • Les données en transit sont protégées par TLS 1.3 avec Certificate Pinning et Perfect Forward Secrecy.
  • Recommandation : chiffrez toutes les données confidentielles via Jetpack Security (Android) ou CryptoKit (iOS) avec des clés dans le stockage matériel.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi