## 4. Insertion de caractères spéciaux

Poursuivons l'enrichissement du mot de passe en ajoutant quelques caractères spéciaux, par exemple en conservant ceux déjà présents dans la phrase :

1) longtemps je me suis couché de bonne heure mais maintenant c'est fini je fais la fête ! → ljmsc2bhmm7fjflf!

Ou en en ajoutant aussi aux extrémités :

2) la guerre, un massacre de gens qui ne se connaissent pas, au profit de gens qui se connaissent mais ne se massacrent pas → [lg,1m2gqnscp,ap2gqscmnsmp)

Ou en en ajoutant après les chiffres, qui marquent une étape caractéristique à chaque fois. Le choix du caractère peut se faire par exemple selon sa position sur le clavier : 1→ !, 2→ @, 3→ #, 4→ $, 5→ %, 6→ &, etc :

4) to be or not to be, that is the question → 2@bon2@b,titq

Ou en jouant encore sur l'homophonie : et→ &. plus → +, moins → -, par → /, fois → * :

5) qui peut le plus peut le moins → qpl+pl-

6) Oh c'est trois fois rien ! → o73*r !

## 5. Test de résistance

De nombreux sites internet permettent de tester la résistance d'un mot de passe. Ils fournissent en général la durée estimée pour une attaque par force brute et parfois des informations plus techniques comme l'entropie ou le nombre équivalents de bits. En voici quelques uns :

http://rumkin.com/tools/password/passchk.php

https://www.microsoft.com/security/pc-security/password-checker.aspx

http://password-checker.online-domain-tools.com/

https://howsecureismypassword.net/

https://blog.kaspersky.com/password-check/

https://www.my1login.com/resources/password-strength-test/
## 1. Introduction

En général les systèmes manuels de chiffrement se limitent, par souci de simplicité, à l'usage des seules 26 lettres de l'alphabet majuscule A à Z. C'est le cas pour Diagonales par exemple mais pas pour Spirale qui permet de traiter n'importe quel alphabet. Cette restriction entraîne un certain nombre de conséquences :

- Les lettres accentuées sont remplacées par les même sans accents ;

- Les espaces et tous les signes de ponctuation sont supprimés, d'où un texte concaténé très compact pouvant être difficile à lire ou ambigu ;

- Les nombres doivent être écris littéralement ce qui peut les rendre extrêmement longs

- Il est difficile voir impossible d'exprimer des formules mathématiques ou chimiques

Tant que le texte reste lisible, clair et assez court on peut tolérer ces déformations mais c'est impossible pour des messages au contenu très scientifique ou technique, économique ou linguistique. Nous proposons ici deux conventions destinées à pallier à ces lacunes.

## 2. Conventions De Viaris étendues

À la fin du dix-neuvième siècle, De Viaris avait déjà proposé des conventions de transcription propres à résoudre ces difficultés. Nous donnons dans l'annexe A l'exposé intégral de ces conventions, reprises par Delastelle dans son ouvrage de 1902. Nous pouvons les adopter dans leur ensemble moyennant quelques compléments adaptés à notre époque.

Le symbole #, équivalent anglo-saxon de numéro sera traité identiquement : KQK.

Les espaces seront remplacés, seulement quand cela est nécessaire, indifféremment par W ou K avec le plus de variabilité possible. L'emploi unique et systématique d'une même lettre se remarquerait et deviendrait une faiblesse potentielle du chiffre.

Pour les symboles modernes ou linguistiques, nous conservons la logique de De Viaris en adoptant, cette fois, W comme autre délimiteur :

<table><tr><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td><td>Q</td><td>R</td><td>S</td><td>T</td><td>U</td><td>V</td></tr><tr><td>@</td><td>%</td><td>&amp;</td><td>¿</td><td>¿</td><td>€</td><td>[ ]</td><td>_</td><td>$</td><td>£</td><td>~</td></tr></table>
Ces conventions qui utilisent la rareté d'apparition des lettres K et W en Français peuvent encore s'appliquer à d'autres langues latines (Espagnol, Italien, Portugais). Pour les langues germaniques d'autres choix conviendraient mieux : par exemple Q et Z pour l'Anglais et X et Q pour l'Allemand. Ces conventions induisent une modification des fréquences des lettres qui transparaitraient malgré un chiffre par transposition mais elles passeraient inaperçues avec un chiffre par substitution poly-alphabétique.

## Exemples

* Rendez-vous le 27 Mai à 14 h au 32 de la rue Louis Martin devrait s'écrire :

RENDEZVOUSLEVINGTSEPTMAIAQUATORZEHAUTRENTEDEUXDELARUELOUI
SMARTIN

Avec ces conventions cela s'écrira, en minimisant les corrections :

RENDEZSKSKVOUSLEKBGKMAIAKYKKADKHAUKCBKDELARUELOUISMARTIN

* The prototype has reached Mach 2.56 devrait s'écrire :

THEPROTOTYPEHASREACHEDMACHTWOPOINTFIFTYSIX

Il s'écrira plus brièvement :

THEPROTOTYPEHASREACHEDMACHQBLEFQ

* L'adresse de l'auteur est AMD-crypto@orange.fr s'écrira :

LADRESSEDELAUTEURESTAMDKSKCRYPTOWLWORANGEKMKFR

* Der Brennstoff R-stoff enthält 57 % diyldiisocyanat ($H_2N-C_6H_3(CH_3)_2$) s'écrira :

DERBRENNSTOFFXRXSXSTOFFXENTHAXVXLTXEGXQMQDIYLDIISOCYANATX
RXHKBKNSKCKFKHKCKKRKCHKCKKRKKBKXRX

## 3. UNICODE adaptée

La norme informatique UNICODE [1] a été développée pour donner à tout caractère de n'importe quel système d'écriture de langue un identifiant numérique unique. L'identifiant numérique, appelé *point de code*, a la forme U+xxxx où (où xxxx est un nombre hexadecimal de 4 à 6 chiffres, entre U+0000 et U+10FFFF). L'immense ensemble de points de code est subdivisé en *plans* puis en *blocs*. Le *plan multilingue de base* (PMB, points de code de U+0000 à U+0FFF) contient la plupart des caractères utilisés par les langues modernes les plus courantes dans le monde. Son premier bloc *Latin de base* (U+0000 à U+007F) offre les lettres courantes, les chiffres et la ponctuation. Le bloc suivant *Supplément Latin-1* (U+0080 à U+00FF) apporte d'autres signes de ponctuation et des lettres diacritées (é,è,ê,à,...) courantes dans un grand nombre de langues, dont les langues latines. Une seule lettre utile pour nous, € (U+20AC), se trouve à part dans le *plan idéographique complémentaire* (PIC).
Cette norme répond donc à notre besoin à condition d'en changer la forme. Nous pouvons garder la logique et l'ordre de ces identifiants mais en conservant seulement les deux chiffres hexadécimaux de poids faible et en les exprimant avec les seules lettres dont nous disposons. Il suffit pour cela de se donner une représentation des valeurs de 0 à 15. Nous reprenons ici celle adoptée dans Diagonales [2] pour la base 26 mais en se limitant aux 16 premières lettres :

<table><tr><td>Chiffre<sub>16</sub></td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td></tr><tr><td>Valeur<sub>10</sub></td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr><tr><td>Lettre</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td></tr></table>

De plus il nous faut une lettre, de fréquence minimale, jouant le rôle de préfixe et ne faisant pas partie de la table ci-dessus. Nous pouvons ainsi adopter W pour les langues latines et Q pour les langues germaniques.

Ainsi le caractère ! codé U+0021 sera exprimé par WCB ou QCB suivant la langue.

L'annexe B rassemble les codes des caractères les plus courants dans les textes.

### Exemple

SPIRALE is a one-time-pad cryptosystem designed in 2015/05 to replace SOLITAIRE when one has no cards. It is based in parts on the generalized Fibonacci sequence $X_n = X_{n-49} * X_{n-24}$. As it is free it costs nothing (0 €). It also allows expressing chemical formulas: $FeS_2 + O_2 -> Fe_2O_3 + SO_2$.

s'écrira en laissant les espaces, à quelques exceptions prés dont la suppression ne nuit pas à l'intelligibilité du texte :

SPIRALEQCAISQCAAQCAONEQCNTIMEQCNPADQCACRYPTOSYSTEMQCADESI GNEDQCAINQCAQDCQDAQDBQDFQCPQDAQDFQCATOQCAREPLACEQCASOLIT AIREQCAWHENQCAONEQCAHASQCANOQCACARDSQCOITQCAISQCABASEDQC AINQCAPARTSQCAONQCATHEQCAGENERALIZEDQCAFIBONACCIQCASEQUEN CEQCAXNQDNXNQCNQDEQDJQCKXNQCNQDCQDEQCOASQCAITQCAISQCAFR EEQCAITQCACOSTSQCANOTHINGQCIQDAQKMQCJQCOITQCAALSOQCAALLO WSQCAEXPRESSINGQCACHEMICALQCAFORMULASQDKFESQDCQCLOQDCQCN QDOFEQDCOQDDQCLSOQDC

## 4. Références

1. Table des caractères Unicode, disponible à www.unicode.org/fr/charts/ ou fr.wikipedia.org/wiki/Table_des_charactères_Unicode

2. Diagonales – un chiffre par transposition, 2015.
Extrait du *Traité Élémentaire de Cryptographie*, F. Delastelle, 1902, pages 115 et 116.

## Représentation des signes numériques et orthographiques

*Note.* - Le présent paragraphe est extrait de *L'Art de chiffrer et déchiffrer les dépêches secrètes*, par de Viaris.

*Nécessité d'une convention.* – Il peur arriver que, dans le courant d'une dépêche, on ait absolument besoin d'indiquer la ponctuation ou l'orthographe exacte d'un nom propre ; à coup sûr il arrivera que l'on ait à parler de nombres qu'il serait trop long de traduire en toutes lettres ; quel que soit le système employé, une convention s'impose.

*Représentation des chiffres arabes et des nombres.* – Voici celle que nous proposons. Les dix chiffres arabes seront représentés par les dix premières lettres de l'alphabet :

<table><tr><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td></tr><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>0</td></tr></table>

et, pour avertir de leur signification numérique, on les encadrera entre deux K, ainsi KCK signifiera 3, et KCFIJAK : 36 901.

*Les signes orthographiques.* – Toutes les autres lettres de l'alphabet placées comme les dix premières entre deux K auront une signification de signes orthographiques :

<table><tr><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td><td>Q</td><td>R</td></tr><tr><td>virgule</td><td>point</td><td>alinéa</td><td>exclamation</td><td>interrogation</td><td>guillemets</td><td>parenthèses</td></tr><tr><td>,</td><td>.</td><td></td><td>!</td><td>?</td><td>« »</td><td>()</td></tr></table>

<table><tr><td>S</td><td>T</td><td>U</td><td>V</td><td>X</td><td>Y</td><td>Z</td></tr><tr><td>trait d'union</td><td>apostrophe</td><td>cédille</td><td>tréma</td><td>accent aigu</td><td>accent grave</td><td>accent circonflexe</td></tr><tr><td>-</td><td>,</td><td>,</td><td>..</td><td>/'</td><td>/'</td><td>^</td></tr></table>

*Les signes relatifs aux nombres.* – Mais on peut aussi, sans crainte de confusion, placer l'une de ces lettres entre deux des dix premières ou entre l'une d'elles et un K et alors lui donner
une signification différente et ayant rapport aux signes numériques. L signifierait « virgule » comme ci-dessus et 25,33 se traduirait par KBELCCK. Les autres lettres voudraient dire :

<table><thead><tr><th>Q</th><th>R</th><th>S</th><th>T</th><th>U</th></tr></thead><tbody><tr><td>numéro</td><td>terminaison<br>ième</td><td>séparation de<br>deux nombres</td><td>terminaison<br>ièmement</td><td>exposant ou<br>puissance</td></tr></tbody></table>

<table><thead><tr><th>V</th><th>X</th><th>Y</th><th>Z</th></tr></thead><tbody><tr><td>plus</td><td>moins</td><td>multiplié</td><td>divisé</td></tr><tr><td>+</td><td>-</td><td>x</td><td>/</td></tr></tbody></table>

Les lettres MNOP restent disponibles si l'on avait à établir d'autres conventions relatives aux nombres.

Donnons quelques exemples :

<table><tr><td>Numéro 27</td><td>:</td><td>KQBGK</td></tr><tr><td>Vingt-septième</td><td>:</td><td>KBGRK</td></tr><tr><td>27-32-14</td><td>:</td><td>KBGSCBSADK</td></tr><tr><td>Vingt-septièmement</td><td>:</td><td>KBGTK</td></tr><tr><td>27<sup>4</sup></td><td>:</td><td>KBGUDK</td></tr><tr><td>27 plus 32</td><td>:</td><td>KBGVCBK</td></tr><tr><td>32 moins 27</td><td>:</td><td>KCBXBGK</td></tr><tr><td>32 multiplié par 27</td><td>:</td><td>KCBYBGK</td></tr><tr><td>32 divisé par 27</td><td>:</td><td>KCBZBGK</td></tr></table>

Dans les conventions précédentes, nous n'avons pas parlé du point et virgule (:) qui se traduira par KMLK, ni des deux points (:) que l'on traduira par KMMK.

De Viaris. – *L'Art de chiffrer*, etc.
<table><tr><td>Chiffre<sub>16</sub></td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td></tr><tr><td>Valeur<sub>10</sub></td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr><tr><td>Lettre</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td></tr></table>

<table><thead><tr><th>XX<sub>16</sub></th><th>Caractère</th><th>Description</th><th>Code langue latine</th><th>Code langue germanique</th></tr></thead><tbody><tr><td>20</td><td></td><td>espace</td><td>WCA</td><td>QCA</td></tr><tr><td>21</td><td>!</td><td></td><td>WCB</td><td>QCB</td></tr><tr><td>22</td><td>"</td><td></td><td>WCC</td><td>QCC</td></tr><tr><td>23</td><td>#</td><td></td><td>WCD</td><td>QCD</td></tr><tr><td>24</td><td>$</td><td></td><td>WCE</td><td>QCE</td></tr><tr><td>25</td><td>%</td><td></td><td>WCF</td><td>QCF</td></tr><tr><td>26</td><td>&amp;</td><td></td><td>WCG</td><td>QCG</td></tr><tr><td>27</td><td>'</td><td></td><td>WCH</td><td>QCH</td></tr><tr><td>28</td><td>(</td><td></td><td>WCI</td><td>QCI</td></tr><tr><td>29</td><td>)</td><td></td><td>WCJ</td><td>QCJ</td></tr><tr><td>2A</td><td>*</td><td></td><td>WCK</td><td>QCK</td></tr><tr><td>2B</td><td>+</td><td></td><td>WCL</td><td>QCL</td></tr><tr><td>2C</td><td>,</td><td></td><td>WCM</td><td>QCM</td></tr><tr><td>2D</td><td>-</td><td></td><td>WCN</td><td>QCN</td></tr><tr><td>2E</td><td>.</td><td></td><td>WCO</td><td>QCO</td></tr><tr><td>2F</td><td>/</td><td></td><td>WCP</td><td>QCP</td></tr><tr><td>30</td><td>0</td><td></td><td>WDA</td><td>QDA</td></tr><tr><td>31</td><td>1</td><td></td><td>WDB</td><td>QDB</td></tr><tr><td>32</td><td>2</td><td></td><td>WDC</td><td>QDC</td></tr><tr><td>33</td><td>3</td><td></td><td>WDD</td><td>QDD</td></tr><tr><td>34</td><td>4</td><td></td><td>WDE</td><td>QDE</td></tr><tr><td>35</td><td>5</td><td></td><td>WDF</td><td>QDF</td></tr><tr><td>36</td><td>6</td><td></td><td>WDG</td><td>QDG</td></tr><tr><td>37</td><td>7</td><td></td><td>WDH</td><td>QDH</td></tr><tr><td>38</td><td>8</td><td></td><td>WDI</td><td>QDI</td></tr><tr><td>39</td><td>9</td><td></td><td>WDJ</td><td>QDJ</td></tr><tr><td>3A</td><td>:</td><td></td><td>WDK</td><td>QDK</td></tr><tr><td>3B</td><td>;</td><td></td><td>WDL</td><td>QDL</td></tr><tr><td>3C</td><td>&lt;</td><td></td><td>WDM</td><td>QDM</td></tr><tr><td>3D</td><td>=</td><td></td><td>WDN</td><td>QDN</td></tr><tr><td>3E</td><td>&gt;</td><td></td><td>WDO</td><td>QDO</td></tr><tr><td>3F</td><td>?</td><td></td><td>WDP</td><td>QDP</td></tr><tr><td>40</td><td>@</td><td></td><td>WEA</td><td>QEA</td></tr><tr><td>5B</td><td>[</td><td></td><td>WFL</td><td>QFL</td></tr><tr><td>5C</td><td>\</td><td></td><td>WFM</td><td>QFM</td></tr><tr><td>5D</td><td>]</td><td></td><td>WFN</td><td>QFN</td></tr><tr><td>5E</td><td>^</td><td></td><td>WFO</td><td>QFO</td></tr><tr><td>5F</td><td>_</td><td>barre horizontale</td><td>WFP</td><td>QFP</td></tr><tr><td>A1</td><td>¡</td><td>exclamation inversé</td><td>WKB</td><td>QKB</td></tr><tr><td>A2</td><td>¢</td><td>centime</td><td>WKC</td><td>QKC</td></tr><tr><td>A3</td><td>£</td><td>livre, lire</td><td>WKD</td><td>QKD</td></tr><tr><td>AC</td><td>€</td><td>euro</td><td>WKM</td><td>QKM</td></tr><tr><td>B0</td><td>°</td><td>degré</td><td>WLA</td><td>QLA</td></tr></tbody></table>
<table><tr><td>BF</td><td>¿</td><td>interrogation inversé</td><td>WLP</td><td>QLP</td></tr><tr><td>DF</td><td>β</td><td>eszett</td><td>WNP</td><td>QNP</td></tr><tr><td>E0</td><td>à</td><td></td><td>WOA</td><td>QOA</td></tr><tr><td>E7</td><td>ç</td><td></td><td>WOH</td><td>QOH</td></tr><tr><td>E8</td><td>è</td><td></td><td>WOI</td><td>QOI</td></tr><tr><td>E9</td><td>é</td><td></td><td>WOJ</td><td>QOJ</td></tr><tr><td>EA</td><td>ê</td><td></td><td>WOK</td><td>QOK</td></tr><tr><td>F1</td><td>ñ</td><td>n tilde</td><td>WPB</td><td>QPB</td></tr><tr><td>F7</td><td>÷</td><td>division</td><td>WPH</td><td>QPH</td></tr><tr><td>F9</td><td>ù</td><td></td><td>WPJ</td><td>QPJ</td></tr></table>