|
Le physicien italien Giovanni
Battista Della Porta fut l'inventeur du premier système
littéral à double clef, c'est-à-dire le premier chiffre pour
lequel on change d'alphabet à chaque lettre. Ce système polyalphabétique
était extrêmement robuste pour l'époque, à tel point que beaucoup considèrent
Porta comme le "père de la cryptographie moderne". Della Porta a inventé
son système de chiffrement en 1563, et il a été utilisé avec succès pendant
trois siècles.
Si on veut chiffrer avec un de ces alphabets, on choisit pour remplacer la lettre du texte clair la lettre qui lui fait face dans le tableau. Par exemple, si l'on chiffre avec l'alphabet AB, on substituera a par n, b par o, q par d, etc. Pour ne pas obliger les correspondants à prendre les onze alphabets à la suite, Porta propose de n'en adopter que cinq ou six et de convenir d'un mot-clef dont les lettres indiqueront les alphabets qu'il faudra successivement choisir. Ce mot constitue la clef du cryptogramme. |
Par exemple, si le mot-clef est ACIER, on utilisera successivement les alphabets A, C, I, E, R, A, C, etc. pour chiffrer le message. Si l'on chiffre la phrase "chiffre de Porta" avec la clef ACIER, on obtiendra:
Clair | c | h | i | f | f | r | e | d | e | p | o | r | t | a |
Clef | A | C | I | E | R | A | C | I | E | R | A | C | I | E |
Codé | P | T | R | Q | X | E | Q | Z | P | K | B | F | K | Y |
Pour déchiffrer, c'est le même principe: F devient s, Z devient a, etc.
Comme on le verra en exercice, il est déconseillé d'utiliser un alphabet régulier comme indiqué ci-dessus (a b c d e ...). Il vaut mieux utiliser des alphabets composés des 26 lettres réparties aléatoirement. Porta le recommandait déjà lui-même dans son traité «De furtivis litterarum notis, vulgo de ziferis; Naples 1563».
Entrez un message non accentué (au besoin prétraitez le texte).
C'est seulement en 1863 que le cryptologue allemand Kasiski découvrit comment casser le chiffre de Porta. Système désormais classique s'il en est: recherche de la longueur de la clef, puis ensuite analyse des fréquences (voir la page "Décryptement du chiffre de Vigenère"). Mais avec des clefs de grandes tailles, ce système est réellement sûr (à moins que le message soit vraiment très long).
Ecrivez un programme Python qui chiffre et déchiffre un texte en utilisant le chiffre de Porta (avec les 26 lettres de l'alphabet latin). Solution.
Didier Müller, 24.1.21 |