NOTICE TEXTE n° 1 (5.28 Ko)
Crypto * Amstrad Magazine 20 - mars 1987
------
J.L.Morel
Si vos disquettes contiennent des donnees confidentielles (fichiers ASCII,
ecrans, programmes... ) CRYPTO permet de les mettre a l'abri des regards
indiscrets. CRYPTO est un programme de codage d'une face complete de disquette.
Il rend totalement illisible celle-ci, catalogue compris. Ecrit en langage
machine, il est rapide (moins de deux minutes pour coder / decoder 178ko) et
accepte les formats DATA ou SYSTEM.
Note : le programme ne gere pas le lecteur B:.
Le principe du codage
---------------------
Le programme lit une piste de la disquette et l'ecrit dans un tampon en
memoire; puis il code chacun des octets de ce tampon et recopie ensuite la
piste sur le disque. Quand les quarante pistes ont ete traitees, les donnees
initiales ont ete remplacees oar des cides incoherents. Seul un decocage adequat
permet de retrouver les donnees initiales.
Le codage de chaque octet du tampon utilise la fonction logique XOR. Par
exemple, pour coder l'octet &41 (correspondant a la lettre A en ASCII) avec la
valeur &E6, on calcule : &41 XOR &E6 = &A7.
Pour verifier ce resultat, taper au clavier en mode direct : ? HEX$(&41 XOR
&E6) puis <ENTER>. L'ordinateur repond : A7.
Pour retrouver l'octet initial il faut savoir que celui-ci a ete code avec la
valeur &E6; on calcule : &A7 XOR &E6 = &41 (verifiez-le !). Ainsi, le meme
procede qui a servi au codage sert au decodage.
Naturellement, si on codait tous les octets avec la meme valeur &E6 le secret
serait bien mal garde ! Pour durcir le code, on change cette valeur a chaque
octet code suivant une loi complexe. L'ideal serait d'utiliser une sequence
aleatoire (systeme dit "a cle aleatoire une fois"). Le resultat serait alors
totalement inviolable, mais la sequence a retenir pour le decodage aurait la
meme longueur que le message a coder (ici 182 272 caracteres !). Pour palier
cet inconvenient, on utilise un generateur pseudo-aleatoire qui, une fois
initialise par l'utilisateur, va produire une suite de valeurs pour le codage.
Le generateur utilise par CRYPTO est du type a congruence lineaire. Sans etre
le meilleur au point de vue "imprevibilite", il a l'avantage d'etre rapide et
d'avoir une periode suffisament longue pour empecher une attaque statistique
du code.
Le programme Basic
------------------
Pour permettre l'ecriture du programme par des lecteurs ne possedant pas
d'assembleur, celui-ci est propose en DATA dans un programme BASIC, qui le
chargera en memoire. Le programme verifie chaque ligne de DATA grace a une
somme de controle. Si une erreur est detectee, le programme s'arrete et le
numero de la ligne fautive est affiche. Il faut la corriger avec la commande
EDIT puis relancer le programme. Quand tout se deroule bien, le programme
demande si l'ordinateur est un CPC 464 ou un 664-6128. Répondre suivant le
cas. Le programme cree alors sur disque le fichier CRYPTO.BIN.
Le disque contenant CRYPTO etant dans le lecteur, on le lance par :
RUN"CRYPTO" <ENTER>
Le programme demande alors la cle de codage / decodage. C'est une chaine de
caracteres alphanumeriques (dont il faudra imperativement se souvenir) qui
sert a initialiser le generateur aleatoire. Ensuite, on place dans le lecteur
le disque a coder et on appuie sur <ENTER>. Le codage commence alors et le
numero de la piste en cours de traitement est affiche. En cas d'erreur, le
programme affiche un message : suivre alors les indications donnees.
Quand le codage est termine, on retourne sous Basic. On peut alors demander
un catalogue de la disquette : on obtient generalement n'importe quoi : la
disquette est illisible. Pour decoder, il suffit de relancer CRYPTO avec
exactement la meme cle de codage. L'operation terminee, on doit retrouver
le catalogue initial et la disquette doit etre a nouveau lisible.
Mise en garde
-------------
CRYPTO modifiant directement les donnees sur la disquette, les donnees
initiales figurant sur celle-ci sont effacees. L'auteur ne connait aucun moyen
simple pour retrouver ces donnees si on a oublie la cle ! Amnesiques, abstenez-
vous ! En particulier, il est prudent de conserver une disquette "claire"
contenant CRYPTO. Pour bien initialiser le generateur aleatoire, il est
preferable d'utiliser une cle d'au moins huit caracteres.
Noter que le programme distingue les majuscules des minuscules et que tous les
caracteres dont le code ASCII est compris entre 32 et 127 sont valides.
Sans etre indecryptable par un gros systeme, CRYPTO permet de proteger effica-
cement et rapidement vos disquettes. Pour les lecteurs interesses par la
cryptographie, signalons les ouvrages suivants :
* David Kahn : "La guerre des codes secrets" 1980 InterEdition Paris (une
etude historique passionnante, des hieroglyphes a l'ordinateur).
* Romain Roubaty : "ABC de cryptographie avec programmes en Basic" 1984 Masson
(tous les codes classiques avec des programmes de decryptement).
* Evangelos Kranakis : "Primality and Cryptography" 1986 Wiley-Teubner Series
in Computer Science. (le point actuel sur la question, en
anglais, pour ceux que les mathetiques n'effraient pas !.
J.L.Morel