web-dev-qa-db-fra.com

Cryptage asymétrique vs symétrique

Je prends actuellement un cours de principes de sécurité de l'information. En parlant de différentes méthodes de cryptage, un grand nombre de mes camarades de classe semblent croire que le cryptage asymétrique est meilleur (plus sûr) que le cryptage symétrique. Une déclaration typique est quelque chose comme ceci:

Les schémas de chiffrement asymétriques sont généralement plus sûrs car ils nécessitent à la fois une clé publique et une clé privée.

Certes, avec le cryptage symétrique, vous devez vous soucier de l'échange de clés sécurisé, mais pour autant que je sache, il n'y a aucune raison inhérente pour que l'un soit plus sécurisé que l'autre.

Surtout étant donné que la partie asymétrique est souvent juste utilisée pour l'échange de clés, puis les données réelles sont cryptées avec un algorithme symétrique.

Alors, est-ce que je manque quelque chose ou peut-on vraiment faire une déclaration générale comme celle-ci qui est plus sûre.


Donc, si j'ai un message chiffré avec AES et une autre copie chiffrée avec RSA et toutes choses égales par ailleurs, il est plus susceptible d'être craqué. Cette comparaison peut-elle même être faite?

56
matthew

Il existe un sens dans lequel vous pouvez définir la force d'un algorithme de chiffrement particulier¹: en gros, la force est le nombre de tentatives qui doivent être faites afin de briser le cryptage. Plus précisément, la force est la quantité de calculs à effectuer pour trouver le secret. Idéalement, la force d'un algorithme est le nombre de tentatives de force brute qui doivent être effectuées (pondérées par la complexité de chaque tentative, ou réduites si une sorte de parallélisation permet plusieurs tentatives de partager une partie du travail); à mesure que les attaques contre l'algorithme s'améliorent, la force réelle diminue.

Il est important de réaliser que "algorithme de chiffrement particulier" inclut la prise en compte d'une taille de clé spécifique. Autrement dit, vous ne lancez pas RSA contre AES, mais RSA 1024 bits (avec un mode de remplissage spécifique) avec AES-256 (avec un mode de chaînage spécifique, IV, etc.). En ce sens, vous pouvez demander: si j'ai une copie de mes données cryptées avec l'algorithme A avec des valeurs données des paramètres P et Q (en particulier la taille de la clé), et une copie cryptée avec l'algorithme B avec les paramètres P et R, alors lequel de (A, Pval₁, Qval₁) et (B, Pval₂, Rval₂) est susceptible d'être fissuré en premier?

En pratique, de nombreux protocoles impliquent l'utilisation de plusieurs primitives cryptographiques. Différentes primitives ont différentes utilisations possibles, et même lorsque plusieurs primitives peuvent servir une fonction donnée, il peut y en avoir une mieux adaptée que d'autres. Lors du choix d'une primitive cryptographique pour un objectif donné, le processus de décision se déroule un peu comme ceci:

  1. Quels algorithmes peuvent faire le travail? → Je peux utiliser A ou B ou C.
  2. De quelle force ai-je besoin? → je veux 2N opérations, j'ai donc besoin de la taille de clé LUNE pour primitif A, LB pour B, L primitifC pour le primitif C.
  3. Compte tenu de mes contraintes (vitesse brute, latence, efficacité mémoire,…), laquelle de celles-ci (LUNE-bit A ou LB-bit B ou LC-bit C) est le meilleur?

Par exemple, supposons que votre exigence soit un protocole d'échange de données avec une personne en qui vous n'avez pas confiance. Ensuite, la cryptographie symétrique ne peut pas faire le travail à elle seule: vous avez besoin d'un moyen de partager la clé. La cryptographie asymétrique telle que RSA peut faire l'affaire, si vous laissez les parties échanger des clés publiques à l'avance. (Ce n'est pas la seule possibilité, mais je n'entrerai pas dans les détails ici.) Vous pouvez donc décider quelle longueur de clé RSA a la bonne force pour votre application. Cependant, RSA est lent et encombrant (par exemple, il n'y a pas de protocoles standard pour appliquer le cryptage RSA à un flux - principalement parce que personne n'a dérangé parce qu'il serait si lent). De nombreux protocoles courants impliquant la cryptographie à clé publique l'utilisent uniquement pour échanger un secret à durée limitée: une clé de session pour un algorithme de cryptographie symétrique. Ceci est connu sous le nom de cryptage hybride . Encore une fois, vous choisissez la longueur de la clé de session en fonction de la force souhaitée. Dans ce scénario, les deux primitives impliquées ont tendance à avoir la même force.

¹ La même notion s'applique à d'autres utilisations de la cryptographie, telles que la signature ou le hachage.

Le chiffrement symétrique et asymétrique sont des opérations distinctes qui opèrent dans des contextes distincts, pour des usages et des modèles d'attaque distincts. Il est peu logique d'affirmer que l'un est "plus sûr" que l'autre (cela nécessiterait d'abord une sorte de mesure quantifiée de la sécurité, ce qui n'est pas facile à définir).

Le chiffrement asymétrique est plus exigeant : il s'agit de réaliser le chiffrement et pouvoir publier les moyens de chiffrer (le public sans révéler les moyens de décrypter (la clé privée). Une implémentation pratique a besoin de mathématiques, tandis que le chiffrement symétrique consiste principalement à brouiller les choses (attention, il est difficile de faire un bon travail de brouillage; mais encore moins de mathématiques sont impliquées).

Les systèmes couramment déployés (par exemple SSL/TLS ) combinent le chiffrement asymétrique et le chiffrement symétrique (et quelques autres choses également) en protocoles qui font le travail prévu (par exemple " tunnel bidirectionnel avec confidentialité, intégrité et authentification ").

29
Thomas Pornin

Le choix entre un cryptage symétrique et asymétrique dépend du cas d'utilisation.

Le chiffrement symétrique est utilisé pour partager des informations entre un ensemble de personnes qui doivent toutes y avoir accès. De plus, le cryptage symétrique est agréable car il est plus facile à comprendre (moins susceptible de le gâcher) et les algorithmes ont tendance à être plus rapides.

Le cryptage asymétrique est utilisé lorsqu'un grand nombre de sous-ensembles de personnes doivent pouvoir partager des informations. De plus, la cryptographie asymétrique peut être utilisée à l'envers pour signer des documents. Ceci est particulièrement intéressant car il permet aux gens de certifier qu'une clé publique appartient à une certaine personne.

Dans un ensemble de 10 personnes, permettant à chaque paire de personnes de communiquer en toute sécurité, nécessite 45 clés uniques (9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1). Et maintenant, pensez à Internet au lieu du petit groupe de 10 personnes. Il est évident que cela ne peut pas être géré avec des clés symétriques.

Dans le monde réel, les deux types sont souvent combinés. Une approche asymétrique est utilisée pour confirmer l'identité d'un partenaire de communication et pour transmettre quelque chose qui se traduira par une clé symétrique. Cette clé symétrique est ensuite utilisée pour un cryptage performant des données réelles.

21
Hendrik Brummermann

Les schémas de chiffrement asymétriques sont généralement plus sûrs car ils nécessitent à la fois une clé publique et une clé privée.

Non, tu ne peux pas dire ça. C'est baloney. Ce n'est tout simplement pas vrai.

La force est indépendante de symétrique vs asymétrique. La cryptographie symétrique et la cryptographie asymétrique sont deux types différents d'outils cryptographiques. Chacun peut être faible ou fort, selon. Il n'y a aucune raison que la cryptographie asymétrique soit nécessairement plus forte que la cryptographie symétrique.

Par exemple:

  • AES est plus sécurisé contre les attaques cryptanalytiques que RSA 512 bits, même si RSA est asymétrique et AES est symétrique.

  • Le RSA 4096 bits est plus sûr contre les attaques cryptanalytiques que le RC4 40 bits, même si le RC4 est symétrique et le RSA est asymétrique.

14
D.W.

Je suis d'accord avec ce que Thomas a déclaré ci-dessus. Le chiffrement symétrique et asymétrique sont des opérations distinctes.

Le chiffrement symétrique est moins cher que le chiffrement asymétrique. Cher car il nécessite moins de traitement. Pour être exact, je fais référence au processus de décryptage.

Et c'est pourquoi SSL/TLS utilise une combinaison de chiffrement symétrique et asymétrique. Le chiffrement/déchiffrement asymétrique entre deux homologues lors d'une transaction SSL/TLS ne se produit que lors de la prise de contact initiale. Une fois que les deux pairs se sont mis d'accord sur une clé privée partagée, le reste de la communication utiliserait un cryptage symétrique. Ce faisant, la seule opération coûteuse aura lieu pendant la prise de contact initiale et le reste de la communication utilisera un chiffrement symétrique qui nécessite moins de ressources.

4
Chun Tat David Chu