RSA : qu’est-ce que c’est, algorithme et application du chiffrement

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

RSA est un cryptosystème à clé publique qui fournit le chiffrement et les signatures numériques basé sur la complexité de calcul de la factorisation de grands nombres. Selon la publication spéciale NIST 800-56B Rev. 2 (2023), RSA avec une longueur de clé de 2048 bits reste la norme de sécurité pour les systèmes gouvernementaux et commerciaux. L’algorithme est largement utilisé dans les protocoles TLS, les signatures numériques et le chiffrement des données dans les applications mobiles.

Points clés

  • RSA est un algorithme de chiffrement asymétrique qui utilise une paire de clés : publique et privée.
  • La sécurité de l’algorithme repose sur la difficulté mathématique de décomposer un grand nombre en ses facteurs premiers.
  • La taille de clé de 2048 bits est considérée comme la norme minimale fiable depuis 2023 selon le NIST.
  • RSA est utilisé dans les certificats TLS, les signatures numériques et les protocoles d’authentification.
  • Le développement mobile utilise RSA via les bibliothèques cryptographiques intégrées : Android Keystore et iOS Security Framework.

Qu’est-ce que RSA ?

RSA est un algorithme cryptographique à clé publique développé en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman. Le nom est formé par les premières lettres des noms de famille des auteurs. L’algorithme est devenu le premier cryptosystème asymétrique pratiquement applicable où les clés de chiffrement et de déchiffrement diffèrent.

Historique de la création

L’algorithme RSA a été publié en 1977 dans le magazine Scientific American et repose sur les travaux antérieurs de Whitfield Diffie et Martin Hellman sur la cryptographie à clé publique. Le Massachusetts Institute of Technology a obtenu un brevet pour RSA en 1983, qui a duré jusqu’en 2000. Selon le rapport de RSA Laboratories (2023), l’algorithme reste l’une des normes cryptographiques les plus répandues dans le monde — il est utilisé dans des milliards d’appareils chaque jour.

Le principe d’asymétrie

Contrairement aux chiffrements symétriques où la même clé est utilisée pour le chiffrement et le déchiffrement, RSA fonctionne avec une paire de clés mathématiquement liées. La clé publique peut être publiée pour tout le monde sans risque de compromission du système. La clé privée n’est connue que du propriétaire et n’est jamais transmise sur le réseau. Selon l’étude IBM Security X-Force Threat Intelligence Index (2024), le chiffrement asymétrique est utilisé dans 96 % des protocoles modernes de transmission sécurisée de données.

Fondements mathématiques

La sécurité de RSA repose sur le problème de factorisation — décomposer le produit de deux grands nombres premiers en facteurs. Si vous choisissez des nombres premiers p et q de 1024 bits chacun, leur produit n fera 2048 bits. Calculer p et q en connaissant seulement n avec des méthodes modernes est pratiquement impossible : selon l’évaluation d’experts du CNRS (2024), casser RSA-2048 nécessiterait plus de 300 milliards d’années de calcul sur un ordinateur classique.

Comment fonctionne l’algorithme RSA

Considérons le cycle complet de travail de RSA, de la génération de clés au chiffrement et au déchiffrement de messages. Comprendre ces étapes est nécessaire pour une implémentation correcte de l’algorithme dans les applications mobiles.

Génération de clés

Le processus commence par la sélection de deux grands nombres premiers p et q. Le module n = p x q est calculé, ce qui détermine la longueur de la clé. Ensuite, la fonction indicatrice d’Euler phi(n) = (p-1)(q-1) est calculée. Un exposant public e est choisi, premier avec phi(n). L’exposant privé d est calculé comme l’inverse multiplicatif modulaire de e modulo phi(n). Selon NIST SP 800-56B Rev. 2, la longueur minimale de n doit être de 2048 bits pour garantir une protection adéquate.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Chiffrement et déchiffrement

Pour chiffrer un message m, l’expéditeur le convertit en un entier inférieur à n et calcule le texte chiffré c = m^e mod n. Le destinataire utilise la clé privée d pour récupérer le message original : m = c^d mod n. Il est important de noter que RSA n’est pas conçu pour chiffrer de grands volumes de données en raison de ses faibles performances — la taille maximale du message est égale à la longueur de la clé moins les octets de surcharge (environ 190 octets pour RSA-2048 avec OAEP).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

Signature numérique avec RSA

RSA est également utilisé pour créer des signatures numériques — un mécanisme pour vérifier l’authenticité et l’intégrité des données. Le propriétaire signe le hachage du message avec sa clé privée, et n’importe qui peut vérifier la signature en utilisant la clé publique. Selon le rapport Sectigo Certificate Transparency (2025), plus de 85 % des certificats TLS sur Internet utilisent RSA pour les signatures numériques, faisant de l’algorithme le fondement de la confiance pour les communications web.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Tailles de clé et niveau de sécurité

La longueur de la clé affecte directement la force cryptographique de RSA. À mesure que la puissance de calcul augmente, la taille minimale acceptable de la clé est régulièrement révisée par les organismes de normalisation internationaux. Examinons les recommandations actuelles du NIST et d’autres régulateurs.

Longueur de cléÉquivalent symétriqueStatut
1024 bits80 bitsInterdit depuis 2023
2048 bits112 bitsNorme minimale
3072 bits128 bitsRecommandé pour les nouveaux systèmes
4096 bits256 bitsPour les données confidentielles

Impact sur les performances

L’augmentation de la longueur de la clé RSA affecte considérablement le temps d’exécution des opérations. La génération d’une clé de 4096 bits prend environ 10 fois plus de temps qu’une clé de 2048 bits. Les opérations de chiffrement et de déchiffrement avec une clé plus longue nécessitent plus de ressources informatiques, ce qui est critique pour les appareils mobiles à consommation d’énergie limitée.

Menace quantique

Avec le développement de l’informatique quantique, RSA peut être cassé en utilisant l’algorithme de Shor en temps polynomial. Cet algorithme, proposé par Peter Shor en 1994, peut factoriser de grands nombres en O((log n)^3) opérations. Selon la feuille de route IBM Quantum (2025), le cassage pratique de RSA-2048 n’est pas attendu avant 2035, mais le NIST recommande déjà une transition progressive vers les algorithmes post-quantiques CRYSTALS-Kyber et CRYSTALS-Dilithium.

Application de RSA dans le développement mobile

RSA est activement utilisé dans les applications mobiles pour garantir la transmission sécurisée des données, l’authentification des serveurs et la protection des transactions numériques. L’intégration se fait via les API cryptographiques standard des deux principales plateformes.

Android Keystore

La plateforme Android fournit Android Keystore — un stockage systémique de clés cryptographiques protégé par le niveau matériel Trusted Execution Environment. Les clés RSA générées dans KeyStore ne peuvent pas être extraites de l’appareil même si l’application est compromise. Cela offre une protection contre un large éventail d’attaques, y compris les logiciels malveillants avec accès root.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

Sous iOS, RSA est traité via le Security Framework avec accès à Secure Enclave sur les appareils dotés d’une puce A7 et plus récents. Secure Enclave est un coprocesseur dédié isolé du processeur principal qui effectue des opérations cryptographiques et stocke les clés dans un coffre-fort matériel. Les clés RSA peuvent être générées à la fois dans Secure Enclave et dans le Keychain logiciel avec différents niveaux d’accès.

Chiffrement hybride en pratique

Dans les applications mobiles réelles, RSA est rarement utilisé pour le chiffrement direct de grandes données. La pratique standard est un schéma hybride : l’application génère une clé de session AES, la chiffre avec la clé publique RSA du serveur et l’envoie au serveur. Tout le trafic ultérieur est chiffré avec AES, qui est 100 à 1000 fois plus rapide que la transmission directe des données via RSA.

Avantages et limites de RSA

Comme tout algorithme cryptographique, RSA a des forces et des faiblesses qui doivent être prises en compte lors de la conception de systèmes sécurisés. Une évaluation objective aide à choisir le bon outil pour une tâche spécifique.

Principaux avantages

Le principal avantage de RSA est de résoudre le problème fondamental de distribution des clés — la clé publique peut être publiée librement sans risque de compromettre l’ensemble du système. La polyvalence de l’algorithme se manifeste par la prise en charge à la fois du chiffrement et des signatures numériques avec une seule paire de clés. De plus, RSA dispose d’un vaste écosystème de support : des bibliothèques sont disponibles pour tous les langages et plateformes.

Principales limites

Le principal inconvénient de RSA est ses faibles performances par rapport aux algorithmes symétriques. Le déchiffrement de RSA-2048 sur un processeur mobile moderne prend environ 5 à 15 millisecondes, tandis qu’AES-256 traite des gigaoctets de données dans le même temps. De plus, RSA est vulnérable aux attaques quantiques via l’algorithme de Shor, ce qui limite son utilisation dans les systèmes nécessitant une protection des données à long terme.

Recommandations d’utilisation

Pour les projets mobiles, les experts du NIST recommandent : utiliser RSA uniquement pour le chiffrement des clés et les signatures numériques, choisir une longueur de clé d’au moins 3072 bits pour les nouveaux projets, combiner RSA avec AES dans un schéma hybride et surveiller le développement des normes post-quantiques pour une migration planifiée à long terme.

Questions fréquemment posées

Quelle est la différence entre RSA et AES ?

RSA est un algorithme asymétrique avec une paire de clés utilisé pour chiffrer de petits volumes de données et des signatures numériques. AES est un algorithme symétrique avec une seule clé partagée, fonctionnant 100 à 1000 fois plus rapidement que RSA. Dans les systèmes modernes, ils sont combinés : RSA protège la transmission de la clé de session AES, tandis qu’AES chiffre le trafic principal.

Quelle taille de clé RSA est considérée comme sécurisée aujourd’hui ?

La taille minimale sécurisée depuis 2023 est RSA-2048 selon NIST SP 800-131A Rev. 2. Les clés de 1024 bits sont officiellement interdites pour les systèmes gouvernementaux américains. Pour les nouveaux projets, 3072 bits sont recommandés, offrant une marge de sécurité et une force équivalente au chiffrement symétrique 128 bits.

Peut-on utiliser RSA dans les applications mobiles ?

Oui, RSA est largement utilisé dans les applications mobiles. Android fournit Android KeyStore pour la génération matérielle et le stockage sécurisé des clés RSA. iOS fournit le Security Framework avec le support de Secure Enclave. Pour le chiffrement de grandes données, un schéma hybride RSA + AES est recommandé, où RSA ne chiffre que la clé de session.

Peut-on casser RSA-2048 ?

Sur les ordinateurs classiques, casser RSA-2048 est pratiquement impossible — selon les estimations actuelles, cela nécessiterait plus de 300 milliards d’années de calcul continu. Cependant, un ordinateur quantique avec suffisamment de qubits pourrait casser RSA-2048 en quelques minutes en utilisant l’algorithme de Shor. Selon les estimations d’IBM, un tel ordinateur n’apparaîtra pas avant 2035.

Quelles alternatives à RSA existent ?

Parmi les algorithmes asymétriques, ECC (Cryptographie à Courbe Elliptique) est populaire, offrant une sécurité équivalente avec une longueur de clé plus courte — ECC 256 bits équivaut à RSA-3072. Pour l‘ère post-quantique, le NIST a sélectionné CRYSTALS-Kyber pour le chiffrement et CRYSTALS-Dilithium pour les signatures numériques en 2024.

Résumé

  • RSA est un algorithme de chiffrement asymétrique basé sur la difficulté de factoriser de grands nombres.
  • Paire de clés — publique pour le chiffrement et privée pour le déchiffrement, résout le problème de distribution des clés.
  • Taille de 2048 bits est la norme de sécurité minimale depuis 2023.
  • Performances de RSA sont 2 à 3 ordres de grandeur inférieures aux chiffrements symétriques, il est donc utilisé dans des schémas hybrides.
  • Signatures numériques avec RSA sont utilisées dans 85 % des certificats TLS sur Internet.
  • Plateformes mobiles Android et iOS fournissent des API intégrées pour travailler avec RSA.
  • Migration post-quantique — jusqu’en 2035, RSA restera la norme principale, puis la transition vers de nouveaux algorithmes commencera.

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