Vous êtes sur la page 1sur 9

PKCS

Public Key Cryptography Standards

Rapport de TP

Réalisé Par :

Aymen MAHMOUDI Amphi B G 03

Hamdi KADRI Amphi B G 02

PKCS

“Public Key Cryptgraphic Standards” : Standards Cryptographiques à Clé Publique.

Ensemble

Massachussets.

de

Standards

définis

par

la

société

RSA

Security,

sise

à

Bedford,

PKCS est la suite du développement et de la promotion de l’algorithme RSA.

Retour sur RSA

R = RIVEST, Ronald

S = SHAMIR, Adi

A = ADLEMAN, Leonard

RSA : Algorithme de Cryptage à Clé Publique, développé par les chercheurs mentionnées.

Naissance officielle : 1977

Bréveté par le MIT : 1983 jusqu’à 2001

Définition de RSA

RSA : Algorithme asymétrique de cryptographie à clé publique.

Très utilisé pour les applications des commerce électronique et dans les échanges des données confidentielles.

Fonctionne en trois étapes :

Création des deux clés (privée et publique)

Chiffrement du messages

Déchiffrement du message

Fonctionnement détaillé

Ronald Rivest, Adi Shamir et Leonard Adleman, dans A Method for Obtaining Digital Signatures and Public-key Cryptosystems, ont publié l'idée d'utiliser les anneaux et le petit théorème de Fermat pour obtenir des fonctions trappes, ou fonctions à sens

unique à brèche secrète. RSA repose sur le calcul dans les groupes , plus précisément sur l'exponentiation modulaire. Voici une description des principes mathématiques sur lesquels repose l'algorithme RSA.

Toutefois, le passage des principes à la pratique requiert de nombreux détails techniques qui ne peuvent pas être ignorés, sous peine de voir la sécurité du système anéantie. Par exemple, il est recommandé d'encoder le message en suivant l'OAEP (en anglais Optimal Asymmetric Encryption Padding).

Création des Clés

Optimal Asymmetric Encryption Padding). Création des Clés Choisir p et q, deux nombres premiers distincts Noter

Choisir p et q, deux nombres premiers distincts

Noter leur produit, appelé « module de chiffrement » : n=pq

Calculer l'indicatrice d'Euler de n :

» : n=pq Calculer l'indicatrice d'Euler de n : Choisir , un entier premier avec ,

Choisir

: n=pq Calculer l'indicatrice d'Euler de n : Choisir , un entier premier avec , appelé

, un entier premier avec

d'Euler de n : Choisir , un entier premier avec , appelé « exposant de chiffrement

, appelé « exposant de chiffrement ».

Comme est premier avec

« exposant de chiffrement ». Comme est premier avec , il est, d'après le théorème de
« exposant de chiffrement ». Comme est premier avec , il est, d'après le théorème de

, il est, d'après le théorème de Bachet-Bézout,

avec , il est, d'après le théorème de Bachet-Bézout, inversible , c'est-à-dire qu'il existe un entier

inversible , c'est-à-dire qu'il existe un entier tel que . est l'exposant de déchiffrement.

un entier tel que . est l'exposant de déchiffrement. Le couple est appelé clef publique, alors

Le couple

tel que . est l'exposant de déchiffrement. Le couple est appelé clef publique, alors que le

est appelé clef publique, alors que le couple

. est l'exposant de déchiffrement. Le couple est appelé clef publique, alors que le couple est

est appelé clef privée.

Chiffrement/Déchiffrement

Chiffrement/Déchiffrement Si représenté par est un entier inférieur à représentant un message, alors le message

Si

représenté par

Chiffrement/Déchiffrement Si représenté par est un entier inférieur à représentant un message, alors le message

est un entier inférieur à

Si représenté par est un entier inférieur à représentant un message, alors le message chiffré sera

représentant un message, alors le message chiffré sera

Déchiffrement : Se référer à R. Rivest, A. Shamir, L. Adleman. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM, Vol. 21 (2), pp.120– 126. 1978

La sécurité de cet algorithme repose sur deux conjectures :

« casser » RSA nécessite la factorisation du nombre n,

la factorisation est un problème difficile, car il n'existe pas d'algorithme suffisamment rapide. De façon plus précise, les mathématiciens affirment qu'il n'existe pas d'algorithme ayant une complexité polynomiale en temps qui donne les facteurs premiers d'un nombre quelconque.

Il est possible que l'une des deux conjectures soit fausse, voire les deux. Si c'est le cas, alors RSA n'est pas sûr. Cela fait néanmoins maintenant plus de 25 ans que RSA est cryptanalysé et il n'a pas encore été « cassé ». On peut donc raisonnablement le considérer comme un algorithme sûr. Cependant si une personne venait à trouver un moyen « rapide » de factoriser ce nombre n, tous les algorithmes de chiffrement fondés sur ce principe seraient remis en cause ainsi que toutes les données chiffrées auparavant à l'aide de ces algorithmes.

En 2005, le plus grand nombre factorisé, en utilisant une méthode de calculs distribués à la pointe de la technologie, était long de 663 bits. Les clefs RSA sont habituellement de longueur comprise entre 1024 et 2048 bits. Quelques experts croient possible que des clefs de 1024 bits seront cassées dans un proche avenir (bien que ce soit controversé), mais peu voient un moyen de casser des clefs de 4096 bits dans un avenir prévisible. On présume donc que RSA est sûr si la taille de la clé est suffisamment grande. On peut trouver la factorisation d'une clé de taille inférieure à 256 bits en quelques heures sur un ordinateur individuel, en utilisant des logiciels librement disponibles. Pour une taille allant jusqu'à 512 bits, et depuis 1999, il faut

faire travailler conjointement plusieurs centaines d'ordinateurs. Par sûreté, il est couramment recommandé que la taille des clés RSA soit au moins de 2048 bits.

PKCS de nouveau

RSA Security a développé les PKCS pour permettre à ses clients d’implanter des solutions de cryptographie à clé publique.

On effet, PKCS ne sont pas vraiment des standards puisque RSA Security n’est pas un organisme de normalisation.

PKCS exlpose

L’adoption des PKCS par le milieu informatique les a transformé, par les efforts du groupe du travail PKIX de l’IETF(Internet Engineering Task Force, qui produit les normes d’internet) en des RFC (Request for Comments, une sorte de document qui standardise les technologies Internet : tout les standards de Internet sont des RFC, alors que l’inverse est faux).

PKCS Aujourd’hui

PKCS enveloppe aujourd’hui 15 standards don’t 3 sont obsolètes. Parmi les restants, 6 sont des RFC et 2 sont encore en cours de développement.

Voici alors la liste exhaustive de ces PKCS et leur significations :

PKCS #1 (RFC 3447)

Nom : Standard de Cryptographie RSA.

Rôle : Définit la Cryptographie RSA

Version courante : 2.1

PKCS #2 (Obsolète)

Décrivait le chiffrement RSA des résumés de messages.

A été intégrée au PKCS #1

PKCS #3

Nom : Standard d’échange des clés Diffie – Hellman.

Version courante : 1.4

l'échange de clés Diffie-Hellman, du nom de ses auteurs Whitfield DIFFIE et Martin HELLMAN, est une méthode par laquelle deux personnes nommées conventionnellement Alice et Bob peuvent se mettre d'accord sur un nombre (qu'ils peuvent utiliser comme clé pour chiffrer la conversation suivante) sans qu'une troisième personne appelée Ève puisse découvrir le nombre en écoutant.

Le concept utilise la notion de groupe multiplicatif avec des entiers (modulo p) avec p un nombre premier. En gros, les opérations mathématiques (multiplication, puissance, division) sont utilisées telles quelles mais le résultat doit être divisé par pn pour obtenir le reste le plus petit ([modulo]). Les groupes ayant la propriété de l'association des puissances, l'égalite (gb)a [p] = (ga)b [p] est valide et les deux parties obtiennent bel et bien la même clé secrète.

La sécurité de ce protocole réside dans la difficulté du problème du logarithme discret : pour que Ève retrouve gab à partir de ga et gb, elle doit élever l'un ou l'autre à la puissance b ou à la puissance a respectivement. Mais déduire a (resp. b) grâce à ga [p] (resp. gb [p]) est un problème que l'on ne sait pas résoudre efficacement. Ève est donc dans l'impossibilité (calculatoire) de déduire gab [p].

Il faut toutefois que le groupe de départ soit bien choisi et que les nombres utilisés soient suffisamment grands pour éviter une attaque par recherche exhaustive. À l'heure actuelle, un nombre premier p de l'ordre de 300 chiffres ainsi que a et b de l'ordre de 100 chiffres sont tout simplement impossibles à casser même avec les meilleurs algorithmes de résolution du logarithme discret (source ?). Si une solution pratique pour résoudre un logarithme discret venait à apparaître, d'autres systèmes cryptographiques pourraient tomber, notamment ElGamal qui repose sur ce principe.

PKCS #4 (Obsolète)

Décrivait la syntaxe de clé RSA, mais a été intégré dans PKCS#1.

PKCS #5 (RFC 2898)

Nom : Standard de chiffrement des mots de passe.

Version courante : 2.0

PKCS #6 (Obsolète)

Définissait les extensions de l'ancienne spécification de certificat X.509 v1.

Dernière version : 1.5

PKCS #7 (RFC 2315)

Nom : Standard de syntaxe de message cryptographique.

Utilisé pour signer et/ou chiffrer des messages dans le cadre d'une infrastructure à clés publiques. Sert également à la transmission de certificats (notamment en réponse à un message PKCS#10)

Version courante : 1.5

PKCS #8 (RFC 5208)

Nom : Standard de syntaxe d'information de clé privée.

Utilisé par Apache pour le chargement des clés des certificats privés. Sans cryptage.

Version courante : 1.2

PKCS #9 (RFC 2985)

Nom : Types d’attribus sélectionnées :

Dans les certificats étendus du PKCS #6

Dans les messages signés numériquement du PKCS #7

Dans les informations de clé privée du PKCS #8

Dans les demandes de signature des certificats du PKCS #10

Version courante : 2.0

PKCS #10 (RFC 2986)

Nom : Standard de Requête de Certificat.

Rôle : Définir le format des messages envoyés à une autorité de certification et demandant la signature d'une paire de clés.

Version courante : 1.7

PKCS #11

Nom : Interface de périphérique cryptographique (cryptoki).

Rôle

cryptographique.

:

Une

API

définissant

une

Version courante : 2.20

interface

générique

pour

périphérique

PKCS #12

Nom : Standard de syntaxe d'information personnelle.

Rôle : Définit un format de fichier généralement utilisé pour stocker la clé privée et le certificat de clé publique correspondant en les protégeant par un mot de passe.

Version courante : 1.0

PKCS #13 (Phase de Dév.)

Nom : Standard de Cryptographie sur les courbes elliptiques.

En cryptographie, les courbes elliptiques, des objets mathématiques, peuvent être utilisées pour des opérations asymétriques comme des échanges de clés sur un canal non-sécurisé ou un chiffrement asymétrique, on parle alors de cryptographie sur les

courbes elliptiques ou ECC (de l'acronyme anglais Elliptic curve cryptography). L'usage des courbes elliptiques en cryptographie a été suggéré, de manière indépendante, par Neal Koblitz et Victor Miller en 1985.

Les clés employées pour un chiffrement par courbe elliptique sont plus courtes qu'avec un système fondé sur le problème de la factorisation comme RSA. De plus l'ECC procure un niveau de sécurité équivalent ou supérieur aux autres méthodes. Un autre attrait de l'ECC est qu'un opérateur bilinéaire peut être défini entre les groupes. Cet opérateur se base sur le couplage de Weil ou le couplage de Tate. Les opérateurs bilinéaires se sont récemment vus appliqués de nombreuses façons en cryptographie, par exemple pour le chiffrement basé sur l'identité. Un point négatif est que les opérations de chiffrement et de déchiffrement peuvent avoir une plus grande complexité que pour d'autres méthodes.

La résistance d'un système fondé sur les courbes elliptiques repose sur le problème du logarithme discret dans le groupe correspondant à la courbe elliptique. Les développements théoriques sur les courbes étant relativement récents, la cryptographie sur courbe elliptique n'est pas très connue et souffre d'un grand nombre de brevets qui empêchent son développement.

PKCS #14 (Phase de Dév.)

Nom : Générateur de nombres pseudo-aléatoires.

Très utiles pour la cryptographie et même d’autres domaines, comme la suppression sécurisée d’un fichier par sur-écriture (Overwriting).

PKCS #15

Nom : Standard de format d'information sur les périphériques cryptographiques.

Rôle : Définit un standard permettant aux utilisateurs de périphériques cryptographiques de s'identifier auprès des applications, indépendamment de l'implantation de la cryptoki par l'application (PKCS #11) ou une autre API.

Version courante : 1.1

Qu’apporte le PKCS ?

Comme chaque standard, norme ou spécification, le PKCS offre une organisation et une rigueur à la sécurité informatique surtout dans le réseau.

Il facilite le développement collaboratif et la compatibilité des application sécurisées.

Il renforce l’algorithme RSA.

I- Améliorer la sécurité

Avec les risques et les dangers d’échange des informations sur Internet, PKCS offre des commandements, des guidelines pour ne pas créer des failles de sécurité dans le système d’échange de l’information.

II- Faciliter le développement

Dans des application d’e-commerce ou de réseau militaire ou de recherche, il est important d’avoir une norme bien définie pour l’intéractions de plusieurs applications étendues. (Banques, WebStores, Bases de Connaissances, Fournisseurs de Publicité, etc.)

Une norme permet d’offrir une solution de migration et d’insertion pour tout élément mentionné ci-dessus.

III- Renforcer RSA

Outre les attaques traditionnelles (comme l’injection des paquets), une communication utilisant le chiffrement RSA peut subir d’autres attaques spécifiques, dans certains cas particulers (attaques de Hastad, par chronométrage, de Wiener, par chiffrement choisi, etc.)

PKCS garantit l’exclusion de ces cas particulier avec chaque Release.

Conclusion

PKCS est aujourd’hui indissociable du Net. Avec le cryptage RSA, il garantit un maximum pratique de confidentialité.

Malgré la réputation de ses produits comme la Bibliothèque B-SAFE et le ticket d’identification SecurID, RSA et PKCS sont la plus grande contribution de RSA Security dans le domaine de l’informatique.

Ressources :

IETF : www.ietf.org

Robert Churchhouse : Codes & Ciphers, Cambridge University Press.

Wikipedia : www.wikipedia.org

And Google tells more!