Le chiffre de Porta

AB
a b c d e f g h i j k l m
n o p q r s t u v w x y z
CD
a b c d e f g h i j k l m
z n o p q r s t u v w x y
EF
a b c d e f g h i j k l m
y z n o p q r s t u v w x
GH
a b c d e f g h i j k l m
x y z n o p q r s t u v w
IJ
a b c d e f g h i j k l m
w x y z n o p q r s t u v
KL
a b c d e f g h i j k l m
v w x y z n o p q r s t u
MN
a b c d e f g h i j k l m
u v w x y z n o p q r s t
OP
a b c d e f g h i j k l m
t u v w x y z n o p q r s
QR
a b c d e f g h i j k l m
s t u v w x y z n o p q r
ST
a b c d e f g h i j k l m
r s t u v w x y z n o p q
UV
a b c d e f g h i j k l m
q r s t u v w x y z n o p
WX
a b c d e f g h i j k l m
p q r s t u v w x y z n o
YZ
a b c d e f g h i j k l m
o p q r s t u v w x y z n

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.
Porta emploie 11 alphabets différents et réversibles qu'il désigne, comme on le voit ci-dessous dans le tableau de droite, par AB, CD, EF, etc.
Ce tableau peut être étendu à 13 alphabets (voir le tableau bleu de gauche), afin de pouvoir chiffrer toutes les lettres de notre alphabet occidental actuel.

           

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.
Ce chiffre est réversible: si on chiffre un texte déjà chiffré (avec la même clef bien sûr), on obtient à nouveau le texte clair.

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).

Message clair

Clef
Message chiffré

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).


Exercice

Chiffrement

Chiffrez à la main le texte suivant avec le chiffre de Porta en utilisant la clef "sed non satiata": Bizarre déité, brune comme les nuits,
Au parfum mélangé de musc et de havane
Vérifiez votre cryptogramme avec le programme ci-dessus.

Déchiffrement

Déchiffrez à la main le texte suivant avec le chiffre de Porta en utilisant la clef "sed non satiata": KPIBL YURML RPDDP CVOSV SRLFC QVWZL TBRAV JBAPZ PFYTA WYREP URSPB YXGWN JKQVF JDUKM TZADR GB

Programmation

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.

Décryptement

Le chiffre de Porta comporte une faille que l'on peut exploiter (à vous de voir comment): une lettre appartenant à la première moitié de l'alphabet est forcément remplacée par une lettre de la deuxième moitié (et vice versa).
Décryptez le message suivant, sachant qu'il contient le mot "division": SRMYT EPFOG CBYAH ZXZYF TLIRJ HXJDJ MYTAT PSRWZ XRPAT TYDVR

Solution


  Didier Müller, 24.1.21