Le Chiffre de César est un algorithme de cryptographie dit de substitution mono-alphabétique qui prend en entrée un message et une clé de chiffrement sous la forme d’une lettre de l’alphabet. Un décalage circulaire de chaque caractère alphabétique est opéré selon un offset égal à la position de la clé dans l’alphabet.

Soient l’alphabet latin , un plaintext , avec , et la clé .

peut s’écrire comme la concaténation de éléments de :

Soient une fonction renvoyant la position dans du caractère passé en argument, et la fonction réciproque.

Notons le message chiffré à produire décomposé de la même manière que :

Alors on a :

De manière analogue, pour le déchiffrement, on a :

Une fois le message chiffré, il est très simple de le cryptanalyser : il suffit d’effectuer une analyse fréquentielle sur le ciphertext afin de déterminer la clé utilisée, et de déchiffrer le ciphertext pour cet offset.

En voici une implémentation en Python et en Bash : Cryptanalyse du Chiffre de César

Le wrapper dceaser_as.sh va, dans un premier temps, appeller dceaser.py pour chaque offset possible sur le fichier contenant le ciphertext passé en argument, et écrire les plaintext potientiels dans des fichiers dédiés situés dans le répertoire Results. Ensuite, il exécute freq_an.py sur le ciphertext, qui va effectuer une analyse fréquentielle afin de déterminer l’offset le plus probable. Enfin, le script va afficher une partie du texte déchiffré avec l’offset obtenu précédemment, et proposera soit d’en afficher l’intégralité, soit d’afficher une overview de l’ensemble des textes obtenus lors de l’attaque par force brute, dans le cas où l’analyse fréquentielle aurait échoué.

zweisamkeit@Armory [ Ceasar ] --> head -n 5 ciphertext 
O ibs doggobhs - Qvofzsg Psoirszowfs

Zo fis oggcifrwggobhs oihcif rs acw vifzowh.
Zcbuis, awbqs, sb ufobr rsiwz, rcizsif aoxsghisigs,
Ibs tsaas doggo, r'ibs aowb toghisigs
zweisamkeit@Armory [ Ceasar ] --> 
zweisamkeit@Armory [ Ceasar ] --> ./dceasar_as.sh ciphertext


	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Cryptanalysis of the Ceasar Cipher
	        Zweisamkeit -- 2016       
	          License GNU/GPL
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  The probable shift is 14

  Overview for the probable shift:

	A une passante - Charles Beaudelaire


  Do you want to see all the text for this shift (1),

  or an overiew of the other results (2)? [1/2/exit] 1



  A une passante - Charles Beaudelaire
  
  La rue assourdissante autour de moi hurlait.
  Longue, mince, en grand deuil, douleur majestueuse,
  Une femme passa, d'une main fastueuse
  Soulevant, balancant le feston et l'ourlet ;
  
  Agile et noble, avec sa jambe de statue.
  Moi, je buvais, crispe comme un extravagant,
  Dans son oeil, ciel livide ou germe l'ouragan,
  La douceur qui fascine et le plaisir qui tue.
  
  Un eclair... puis la nuit ! - Fugitive beaute
  Dont le regard m'a fait soudainement renaitre,
  Ne te verrai-je plus que dans l'eternite ?
  
  Ailleurs, bien loin d'ici ! trop tard ! jamais peut-etre !
  Car j'ignore ou tu fuis, tu ne sais ou je vais,
  O toi que j'eusse aimee, o toi qui le savais !