dans le logiciel RCRYPTO
PRINCIPE DE CRYPTAGE UTILISE
Les premières réflexions sur la cryptographie (qui est en quelque sorte l'art de définir des codes pour rendre inintelligible un message à ceux à qui il n'est pas destiné) sont très anciennes (et à peu près contemporaine de celles sur la stéganographie, l'art de cacher des informations) ; le chiffrement (ou cryptage) est le procédé qui permet de rendre incompréhensible un document à toute personne qui ne possède pas la clé de chiffrage. Nous citerons quelques méthodes importantes qui ont permis au fil des temps de faire se développer la cryptologie (la science du secret) qui contient la cryptographie (qui code les messages) et la cryptanalyse (qui se propose de décrypter les messages codés; voir quelques techniques classiques de la cryptanalyse et le paragraphe suivant sur Al-Kindi). Ces diverses disciplines sont à la frontière des mathématiques et de l'informatique et dans certains cas, elles utilisent des outils théoriques difficiles d'accès (complexité et cryptographie; travaux de Jacques Stern, PICSI )
Sans remonter à la scytale
(ou bâton de Plutarque) utilisée en 440 avant J.C, et d'un efficacité
faible, Jules César (-101-44 avant J.C.) envoyait déjà des messages codés: le cryptage
de César consistait à décaler les lettres de l'alphabet de quelques
crans vers la droite ou vers la gauche.
C'est Al-Kindi (801-873) qui découvre au IX ème siècle une méthode simple de déchiffrement du code de César par l'analyse des fréquences. Il publit ainsi le plus vieux
traité de cryptologie (et plus exactement de cryptanalyse) "Un manuscrit sur le déchiffrement des messages codés"; ce document, écrit en arabe, n'a été découvert dans les archives ottomanes d'Istanbul qu'en 1987.
L' analyse fréquentielle consiste à répertorier toutes les lettres du texte codé avec leur fréquence d'apparition et à comparer avec le tableau des fréquences d'utilisation des lettres dans la langue correspondante.
Par exemple en français on utilise par ordre décroissant des fréquences ESARINTULO ...et en anglais ETAONISR...
Le cryptage avec la méthode du chiffre
de Vigenère (Blaise
de Vigenère (1523-1596) diplomate français de la renaissance) date de 1585;
il améliore nettement la méthode précédente en utilisant un mot (la clé de
chiffrement) pour faire varier le décalage. Il a été repris en 1917 par Vernam
(Gilbert Vernam
(1890-1960) cryptographe américain) qui a proposé le principe d'une clé
aléatoire de la même taille que le message à coder. On parle donc de clé de Vernam ou de chiffre de Vigenère (ou du masque
jetable) pour ce mode
de cryptage dont la clé est unique et jamais réutilisée. Cet algorithme
parfait a d'ailleurs longtemps servi pour le téléphone rouge entre
Moscou et Washington, la clé étant transportée par valise diplomatique, ainsi
qu'entre Fidel Castro et Che Guevara (voir le
chiffre du Che).
Il ne sert à rien d'ailleurs de vouloir inventer un système de cryptage à clé
réduite aussi sûr que celui de Vernam: la théorie de Shannon
(Claude Shannon
(1916-2001) mathématicien américain) prouve que cela est
impossible, le chiffre de Vernam étant le seul et unique système cryptographique parfait
ou inviolable (théorème de Shannon de 1949 dans le cadre plus général de la théorie de
l'information) à clé de la même taille que le message.
Tous les cryptages précédents utilisent un chiffrement symétrique ou à clé secrète (ou privée). En 1976, Diffie et Hellman ont proposé un nouveau principe de chiffrement: le cryptage à clé publique (ou encore à clé asymétrique); en réalité il y a une clé publique (librement accessible et visible) mais aussi une clé secrète uniquement connue par le receveur du message codé, et on parle encore de codage à clé publique/clé privée. Le chiffrement correspondant du message est réalisé par des fonctions telles que le processus de calcul soit extrêmement difficile à inverser sauf si l'on possède la clé secrète. Le cryptage à clé publique le plus utilisé actuellement est le système RSA; mis au point en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman de l'Institution de technologie du Massachusetts, le RSA est fondé sur la difficulté de factoriser des grands nombres, et la 'fonction à sens unique' utilisée est une fonction puissance. La clé secrète est constituée de deux grands nombres premiers p et q, la clé publique est formée de n = pq et d'un entier e premier avec f = (p-1)(q-1) (c'est-à-dire que le PGCD de e et f est égal à 1). Les cartes bleues sont actuellement protégées par un code RSA basé sur un nombre n d'environ 230 à 250 chiffres. La sécurité de ce code n'est cependant pas démontrée (comme le théorème de Shannon pour la clé de Vernam) et il est possible que de futurs ordinateurs puissants puissent le casser en sachant rapidement factoriser de grands nombres.
Dans les années 1980 les américains N. Koblitz et V. Miller proposent un chiffrement asymétrique à clé publique en utilisant des courbes elliptiques (cryptographie sur les courbes elliptiques ou EEC); les courbes elliptiques sont des courbes algébriques particulières (comme y 2 = x 3 + ax + b) telles que l'on peut additionner géométriquement deux points de la courbe pour en obtenir un troisème, ce qui permet de construire des clés publiques assez difficilement cassables. Ceci est utilisé dans les passeports électroniques, les codes-barres sécurisant les timbres-poste électroniques et certains billets électroniques de spectacle ou de voyage en train. Mais ici aussi, le système est potentiellement cassable, par exemple ... avec les futurs ordinateurs quantiques ...
Citons enfin le principe de cryptage de Philip Zimmermann (informaticien américain) qu'il a mis au point en 1991 sous la forme du logiciel PGP (logiciel sûr et gratuit, particulièrement adapté au codage des mails sur internet). Il s'agit d'un cryptage de même type avec une clé publique pour chiffrer et une clé privée pour déchiffrer; ce qui a été crypté avec la clé publique de l'interlocuteur X ne peut être décrypter que par la clé secrète de ce même X. PGP est cependant un système de cryptographie hybride, car lorsqu'un utilisateur crypte du texte en clair avec PGP, ces données sont d'abord compressées. Cette compression des données permet bien sûr de réduire le temps de transmission des données.
Plus récemment le cryptage quantique, qui utilise et met en oeuvre le classique cryptage du masque jetable de Vernam, permet à deux utilisateurs de se communiquer une clé (de la longueur du message donc) en toute sécurité en se servant des propriétés quantiques des photons polarisés. Ces photons sont le support de bits quantiques, les qubits, dont les valeurs, 0 et 1, corrrespondent à des directions de polarisation distinctes; ce sont ces qubits qui constituent la clé de cryptage. Le caractère inviolable de cette clé est assuré par le principe d'incertitude de Heinsenberg (la mesure d'une propriété d'un système quantique perturbe celle d'une autre qui est conjuguée à la première, comme c'est le cas pour le couple position vitesse). Quand cette technologie d'avenir sera parfaitement au point, et en particulier lorsque l'ordinateur quantique (avec ses qubits) sera réalisé, elle permettra d'utiliser la cryptographie quantique sur des distances arbitrairement grandes et avec une sécurité quasi parfaite... et ce sera, d'ailleurs, la fin du chiffrement RSA si l'on en croit les travaux de P. Shor (1994) qui a montré qu'avec son algorithme un ordinateur quantique pourrait factoriser un très grand nombre en un temps polynomial, c'est-à-dire bien plus vite qu'un ordinateur classique actuel ...Le premier transfert d'informations sécurisées par cryptage quantique a été réalisé en Europe à Vienne en octobre 2008 (projet SECOQC).
Pour être complet citons encore la cryptographie visuelle développée en 1994 qui est fondée elle aussi sur le principe du 'masque jetable' de Vernam. Etant donnée une image secrète S (dessin, photo ou texte) formée de pixels noirs ou blancs, on utilise un masque de même taille M (image dont les pixels, uniquement noirs ou blancs, ont été tirés au hasard). A l'aide d'un programme ou d'un logiciel de dessin, on opère le 'ou exclusif' (ou XOR) entre les pixels de M et de S pour obtenir une image chiffrée C (C = M xor S); la superposition des images M et C, imprimées sur des transparents, fera apparaître l'image secrète S. Le théorème de Shannon cité plus haut, assure ici aussi l'inviolabilité du procédé, à condition de ne jamais réutiliser le masque M.
Notre produit s'inspire des deux démarches: une clé
publique et une clé privée d'une part, un cryptage de type clé unique jetable de Vernam
d'autre part.
La clé de cryptage que nous utiliserons pour notre codage aura ainsi toujours autant de
caractères que le message à crypter et elle sera unique en ce sens qu'elle
ne sera utilisée qu'une seule fois. Les 256 caractères ASCII du clavier sont
utilisables et peuvent intervenir.
Cette clé sera construite à partir d'un certain nombre N (possédant au moins 200
à 250 chiffres). Ce nombre résultera d'un calcul assez complexe à partir
d'une clé publique à quelques chiffres (nous avons choisi 4 pour
rappeler le principe des cartes bancaires et pour la facilité de mémorisation) associée au message. Seule cette
information (on parlera encore de code public) sera publique en ce sens qu'elle
sera fournie avec le message codé. Pour fixer les ordres de grandeur,
précisons que 2 700 est un nombre à 211 chiffres, alors que 2 128
possède seulement 38 chiffres. C'est ainsi à partir d'un nombre au moins de
l'ordre de 2 700 que nous calculons la clé de cryptage de nos
messages ou fichiers; il y a donc au moins 2 700 manières de
crypter, ce qui rend pratiquement impossible le décryptage pirate de nos
données.
Le calcul du nombre N sera associé à des fonctions dont l'itération converge toujours vers un attracteur (point fixe ou cycle d'ordre fini); à chaque couple message et code public, seront associés des valeurs numériques caractéristiques d'une telle fonction et d'un attracteur correspondant à son itération, à partir desquelles on déduira l'unique nombre N correspondant qui permettra la détermination de l'unique clé associée au couple de départ: seule cette clé permettra de décoder le message.
A l'envoi du message, le logiciel calcule le nombre N associé au code public, en déduit la clé correspondante du message et crypte ce dernier; à la réception du message codé, le même logiciel calcule le nombre N associé au code public, en déduit la clé qui a été utilisée et décode le message. La clé publique associée à un message sera en réalité constituée du code à 4 chiffres et de la date de cryptage (seuls éléments qui voyageront sur le Web de manière transparente et lisible et accompagneront le message crypté). Le temps de calcul par le logiciel de la clé de codage est de l'ordre de la minute.
Si le code public peut éventuellement être réutilisé (il peut par exemple être associé à l'interlocuteur qui envoie le message, mais ce n'est absolument pas obligatoire: on peut attacher n'importe quelle clé publique à un message), la clé quant à elle sera définitivement jetée et la probabilité est quasiment nulle de la retrouver lors d'un autre cryptage.
Naturellement l'interlocuteur recevant un message codé devra posséder le logiciel calculant la clé de décryptage, mais dans le transfert sur le Web, il ne sera visible (et lisible) que le code public (à 4 chiffres) et le message codé. Ce logiciel de calcul joue le rôle de la clé secrète de Diffie et Hellman. Le choix d'une clé publique à 4 chiffres peut naturellement être remplacé par un code à plus de 4 chiffres, mais ce n'est absolument pas nécessaire (et cela n'ajouterait rien à la qualité du cryptage).
Un autre mode de cryptage (utilisé dans le logiciel ALEA)
En utilisant toujours une clé de type Vernam, nous avons
développé un autre produit qui réalise un cryptage - brouillage du message.
Le message initial est crypté par une clé de session aléatoire de la même
longueur que le message; cette clé est elle-même cryptée et l'ensemble est
brouillé dans un fichier commun qui constituera le fichier crypté, ces
deux dernières démarches utilisent des calculs qui prennent en compte en
particulier le code public associé au message (code à 4 chiffres). A la
réception du fichier crypté et du code public, le logiciel récupèrera d'une
part le message crypté, d'autre part la clé de session pour restituer
enfin le message initial. Ce processus produit un fichier crypté
nettement plus gros que le message initial et nécessite un temps de calcul
supérieur au cryptage précédent, mais le logiciel de calcul est plus
simple et la clé de cryptage, au lieu d'être recalculée est extraite du
fichier crypté.
Principe essentiel de calcul d'un cryptage de Vernam.
Si le message à crypter est la suite de caractères (m 1 , m 2 , ..., m t ) et la clé aléatoire jetable la suite (c 1 , c 2 , ..., c t ), le cryptage consiste essentiellement à définir les sommes
m 1 + c 1 = m 1* , m 2 + c 2 = m 2* , ..., m t + c t = m t * ;
pour le décryptage il faut effectuer les différences
m 1* - c 1 = m 1 , m 2* - c 2 = m 2 , ..., m t * - c t = m t .
Vers le mode d'emploi de RCRYPTO
Vers la page de Cryptage en ligne sur le site Sayrac
Pour laisser un message ou un commentaire.
![]() ![]() ![]() ![]() |