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 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.
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.
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.
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.
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.
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.
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();
}
}
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).
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);
}
}
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.
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)
}
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étrique | Statut |
|---|---|---|
| 1024 bits | 80 bits | Interdit depuis 2023 |
| 2048 bits | 112 bits | Norme minimale |
| 3072 bits | 128 bits | Recommandé pour les nouveaux systèmes |
| 4096 bits | 256 bits | Pour les données confidentielles |
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.
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.
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.
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.
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()
}
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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é
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.
Lisez aussi