MESSAGE CRYPTE SIGNE AUTHENTIFIE !!!
Vous avez des certificats partout dans votre surfeur !
A quoi et a qui ils servent ?
GUIDE DE SURVIE
Copie : Consulter la derniere version, si le site dynamique original
"www.trousperdu.org" est connecte *


 La BOX LIBRE est aussi une AUTORITE DE CERTIFICATION,
qui edite c'est propres certificats !
 En fait elle ne certifi pas grand chose, comme les autres CA,
disons, que c'est un groupe de mailleurs ou une liste de diffusion oCULTE,
qui discretement cryptent leurs echanges !

 En fait ce TP est fait pour comprendre
comment etablir soit meme un CA prive (pour un groupe ou un reseau donne),
 Tous en utilisant des seurfeurs et mailleurs courants;
sans dependre des autorites de certifications externes et des certificats*,
preetablis dans ces logiciles (et etre independant, comme en PGP)
( * certains de ces dernies sont plutot fait pour aider a pomper vos datas pivees,
en utilisant souvant, le preteste falacieux de proteger vos communications
ou de vous vendre une assurance contre le gel par temps froid,
des fils electrique enterres dans les sol !)


------------------------

Vie Privee sur le Net :

 La plus parts des echanges sur internet se font en clair,
tous le monde peut les lire, ( y compris les mails dit prives).

 Le Net, c'est comme des autoroutes publiques :
les FAI et les professionnels du web se servent directement dedans,
et revendent, sous couvert de statistiques, vos info privees aux plus offrants !

 Cependant, sur une vraie autoroute, les voitures privees
on le droit de circuler avec des rideaux aux vitres arrieres !

 Comment dissimuler les echanges internet ..
 Comment s'assurer que l'emetteur du message est bien celui qu'il pretend ..
 Comment s'assurer que c'est bien le bon destinataire ...
 Comment s'assurer que le message transmis n'est pas modifie ...
 Comment faire en sorte que personne d'autre ne detecte l'echange ou l'utilise ..

 Comment contourner les pieges des surfeurs, du PKI, des moteurs de recherches ...
 C'est quoi une autorite de certification ??? a qui elle sert vraiment !!!
Peut on s'en passer ? ou en faire une soi meme !!

 Que faire pour securiser ces communications
 Quel est le minimum de parametrage a mettre dans un seufeur standard
pour qu'il laisse le moins de traces possible ?

 Ce TP ,ne fera pas de vous un expert en securitee
Mais vous aidera un peut, je espere, a comprendre comment tous cela peut fonctionner !
Et vous evitera de faire confiance aveuglement a un systhme dit securise !!!!
-----------------------

Materiel necessaire :

 * Le logiciel utilise ici est openssl (disponible partout),
en mode console, sa syntaxe ne depend pas du systeme OS : linux , NT , ...
( il y a des passerelles entre openssl et d'autres logiciels)
OpenSSl est une boite a outils pour le cryptage, TLS, ....

 * on suppose de par ailleurs, que vous avez un editeur text,
qui supporte au moins le copier coller de texte
( on utilise principalement le format PEM qui est en ASCII simple ) !

 * Vous avez aussi, un surfeur mailleur ...
suffisamment simple et pratique !

 Les commandes principales sont mise en evidence comme suit :
"openssl genrsa -out ma_clefPrivee.pem 2048"
      ( Il suffit en principe, de copier coller la ligne de commande entre "",
        dans une fenetre console, pour l'executer. )

 Les "autres commande ssl", sont la pour
vous aider a voir et a comprendre ce qu'il y a dans les documents,
a resoudre des cas specifiques, ou a satisfaire votre curiositee ...

 Le but de ce document et de prendre juste un peut de hauteur
et d'independance intelectuelle, .... pour eviter de se faire plumer !

  Les remarques et explications sont mises en retrait ou en fin de paragraphe.


------------------------

Historique Presentation

 Le cryptage DISYMETRIQUE par clef RSA date des annees 1977 *.

 1 : Utilisateur A demande au programme de generer
une nouvelle clef RSA aleatoire, il la garde SECRETE .
 Mais il peut extraire de cette clef, une partie dite PUBLIQUE.
 La clef et donc constitue d'une partie PRIVEE et d'une partie PUBLIQUE.

  Tous message code par UNE partie de la clef
ne peut etre theoriquement decode que par l'AUTRE partie.

 Si on ne connais que la partie PUBLIQUE
on ne peut pas reconstituer la partie PRIVEE de la clef.
 Si on code un message avec la partitie PUBLIQUE de la clef,
on ne peut donc pas decrypter rapidement sans la clef PRIVEE!

 2 : Utilisateur A transmet par un moyen securise adequat la partie dite PUBLIQUE de sa clef
uniquement a ces correspondants connus et surs B1 B2 B3

 3 : Envois : A genere un message d'une centaine octets,
le crypte avec la partie PRIVEE [et SECRETE] de sa clef,
et transmet le meme message crypte aux differents Bx

 4 : Reception: Bx decrypte le message avec la partie dite PUBLIQUE de la clef de A !

 5 : Reponse: Bx genere ca reponse; la cryptant avec la meme partie PUBLIQUE
( de la clef de A ) ett la transmet crypte a A

 6 : A decrypte les messages de Bx avec la partie PRIVEE de sa clef !

 Conclusion :

 Si la reponse est choerente, A a la certitude que celui qui lui a fait reponse
est dans le groupe Bx ( il connait la partie dite* PUBLIQUE de sa clef !)
 De meme quand Bx decrypte un message choerent, il sait que c'est A qui la envoye,
Puisque A est le seul a connaitre la clef Privee qui a crypte !

 De plus quand Bx reponds a A , By ne peut pas decoder cette reponse !

 RQ : La partie non PRIVE de la clef est dite PUBLIQUE;
mais c'est un par abus de langague ( voir PKI ci-apres )!
 vous n'etes pas tenus de diffuser a tous le monde cette partie dite PUBLIQUE
vous pouvez la diffuser a une liste ferme d'utilisateurs !
 De ce fait a priory je pense que dans ce cas la aucune
autoritee ne peut la requisitionner, sans passer par le juge des libertees ! ?
 Si par contre vous publier cette partie PUBLIQUE clef dans un CA public
elle deviends de fait dans le PKI une info PUBLIQUE acessible librement !!!!

  RQ: Ici, seul A possede une clef et est identifie !

 on a la la base du PGP !

 Dans cette methode on pourrai avoir aussi une clef par couple de tansmission A B !
mais cela ferait beaucoup de clefs !
 Dans la pratique chaque interlocuteur A B C D a sa clef RSA
(en principe differentes) !
 On doit donc gerer LOCALEMENT une liste de clefs publiques pour savoir qui est qui !

 PKI Public Key Infrastructure :

 Une autre methode est de deleguer a un autre tiers,
une entitee centrale de CONFIANCE, le CA,
la gestion de la liste des clefs des correspondants du groupe donne !

 SI ON FAIT CONFIANCE AU CA (c'est la tous le PB !!!!), par transition,
on fera confiance a tous les utilisateurs qui s'y sont declares !

 Dans la liste des utilisateurs d'un CA, il peut y avoir d'autres CA
et la chaine s'agrandit alors par transitivitee,
sur un modele arboresance (similaire a celui des DNS)
 L'orgine de chaque arboresance est un CA racine (auto declare)!

 Ce systeme PKI arboresant est commun a beaucoup de services
les serveurs SSH, les serveurs HTTPS, les mails ....

 On le parametre donc souvant dans les seurfeurs et les mailleurs,
ou il sont plus ou moins bien implementes !

 Cependant le fait que votre seurfeur preautorise plusieurs chaines de CA,
peut conduire a autoriser des utilisateurs pas vraiment connus !
Et en cas de faille de securite dans un CA a des usurpation d'identitee ,
ou des espionnite aigue

 RQ : * on viends ici de parler du cryptage DISYMETRIQUE dit fort !
il permet de crypter ue chaine d'une ou deux centaines octets !

 Il existe aussi un cryptage SYMETRIQUE plus facille a casser
mais aussi beaucoup plus rapide en temps de calcule CPU
et pouvant s'appliquer a des fichiers entiers

 Il existe des crypage mixte qui mellange les deux ....

------------------------

 le plan du document qui suit, est en construction,
il essai de decrire, dans la pratique,
les info et declarations justes necessaires a echanger avec un CA !
et comment laisser le moins possible de trace !

 Il a un but avant tous explifcatif, de conferences et de TP ....
( Ce qui n'empeche pas la tres serieuse autorite CA BLib de fonctionner) !

  Les echanges avec un vrai CA peuvent se faire
en mode connecte avec SSH par exemple,
en utilisant des programme HTTPS ....

 Ce TP, a le partis pris de tous faire par mails cryptes et
SANS CONNECTION, avec une configuration minimaliste,
avec un support de transmission non securise, pas forcement informatise ...
 Ceci a fin de bien specifier comment cela fonctionne
de bien detailler tous les echanges,
et de differentier l'autentifcation, le cryptage .... !

 RQ : la methode des mails cryptes a un autre avantage,
sur le connections SSH HTTPS :
un mail n'est sous forme decrypte que pour etre consulte ou utilise,
durant la gestion d'une requette !
 Le reste du temps il est enregistre dans le CA que sous forme cryptee !
 Qq un qui s'introduire dans la machine du CA avec le login root
n'ayant pas acces a la clef du mail ni a celle du CA
( elles sont stockees ailleurs );
cela devrais, pour le moins le limite dans sa lecture !


 Le plan du TP est partage en sections :

 * La certification dans la pratique
 Avec apprentissage minimum des outils,
et des informations a transmettre au CA,
( avant de courir vers un certificat reel de CA public ).

 * Mail et HTTP

 * Un certificat pourquoi faire
 Pieges a eviter ..

 * Un peut de theorie
 Pour comprendre comment ca marche vraiment :

 Modulo, Condensat, chap, Signature, Connectio DieHellman
 Codage symetrique, Cryptage : Faible Fort Hybride,
 PKI, Neutralitee du net, Liberte de publication, Recap....

 * Ne vous laisser pas faire

 * la theorie 'mathematique' detailee

 Modulo, nombres premiers, PGCD, PPCM,
 Polynome de Newton, Triangle de Pascal, Combinaisons,
 Indicateur d'Euler, Ordre multiplicatif, associativite commutativite du modulo,
 Theoremes de Fermat,
  Optimisations de calculs : ...
 Theoreme Euler Fermat Ameliore, Coefficiants de Bezzou, Algo. Euclide
 Test de primalitee, Resume pour RSA, Limites du cryptage RSA

 * GLOSSAIRE

 RELIRE PLUSIEURS FOIS, AVANT DE VOUS LANCER ! :

 Certains termes et concepts, pour ne pas surcharger le texte,
sont expliques plus loin dans la page
( dans le glossaire en particulier) .... !

-----------------------






RECETTES PRATIQUES

 Dans le cadre de ce TP sur les CA, vous pourrez obtenir par mail
un certificat de CA pour une de vos clef, afin d'echanger avec votre mailleur
des mails cryptes automatiquement.

 Dans un 1er temps on va s'interesser, a la maniere de demander a un CA,
la certification d'une de vos clef privee (fabriquer localement par vous meme).
 Avec le plus de discretion possible (sans communiquer au CA la partie privee de la clef),
en utilisant des mails cryptes (avant meme la certification) !

 Bien Plus tard on abordera le probleme de gerer soit meme un CA !

---------

 * Comment certifier votre clef rsa, pour une adresse mail par exemple :
    (pour un serveur ssh ou autre la procedure reste a peut pret la meme) !

 Dans la plus part des surfeur la mise en place des certificats
est quasi automatique.
 Pour qu'un seurfeur accepte un certificat,
il doit etre emis par un CA qu'il connais deja,
 Mais chaque marque de surfeur, a sa liste de CA preferes
( pour des raisons essentiellement commerciales) !

_____________________

     Le seurfeur accepte un certificat, si il est emis par un CA qu'il connais deja !
  On vas donc, d'abord, etendre la liste des CA de confiances du surfeur ou mailleur :

    1 - Charger Le certificat Racine de l'autorite de certification CA INDEPENDANTE BLib :

 Format auto chargable pour la plus part des surfeur Cliquer ici :application/x-x509-ca-cert

 Si votre seurfeur ne comprends pas, le cliq percedent,
telecharger alors le Fichier texte PEM BLibRootCA.crt,
aller dans la rubrique "edition/preferences/confidentialitee/certificat/gerer",
sous section "autorites" et importer le fichier BLibRootCA.crt .
( sous firefox "menu/ preferences/vie privee et securite/certificats/... )

 Le programme vous demande si vous voulez utiliser
cette nouvelle autorite de certification ....
 Il est parfois necessaire de bien lui specifier que
vous faite confiance au CA : trusted BLib ...
 Appuyer sur "Verifier" ...

 Vous avez donc dans les certificats "autorites de certifications" :
Le certifcat "Blib Certification CA" !
 Auquel donc vous faites confiance,au moins pendant la duree du TP,
 Vous pourrez ensuite le supprimer !

 RQ : les liens dynamiques si-dessus sont directs dans le Site de la Box Libre,
qui n'est connecte a internet que par la radio !

_____________________

 On ajoute maintenant, une destination mail de confiance ( le mail de la CA Blib ):

 2 - Charger Le certificat pour joindre le mail de la box libre qui gere la certification :

      Format auto chargable pour surfeur Cliquer ici :application/x-x509-email-cert

 (sinon Fichier texte PEM BoxLibrecert.pem
dans la sous section "personnes" et importer le fichier BoxLibrecert.pem)

 Le programme ne vous demande rien et
en apparence ne fait rien (il connait deja le CA BLib), mais,
dans la section "personnes" un nouveau certificat est normalement apparus !

 Ouvrez le certificat BLib Mail :
(precisser eventuellemnt que vous faite confiance
a l'autorite CA qui est au dessus) !
 Dans le certificat BLIB CA (voir/sujet/E= )apparait l'adresse mail a contacter :
( "imcp.xxx" est un de mes mails ... ,
 Mais comme tous sera code, personne ne pourra rien comprendre !)

 RQ : les liens dynamiques si-dessus sont directs dans le Site de la Box Libre,
qui reside dans un trous perdu, ravitaille par les corbaux,
d'ou peut etre, un peut d'attente dans les transmissions ..... !

 ATTENTION CERTAINS LOGICIELS NE COMPRENNENT PAS
LE FORMAT TEXTE PRECEDANT

 Il est necessaire alors d'ouvrir le fichier avec un editeur de texte
et de ne garder que la partie entre
"-----BEGIN CERTIFICATE-----"
et "-----END CERTIFICATE-----" (inclus) !!!!

 Uiliser pour cela la commande unix :
sed -ne "/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p" <BoxLibrecert.pem >...

 ( Meme remarques, pour plus loin ...
si votre logiciel vous demande des chaines de certificats ! )

_____________________

 LA BASE ET LES DEUX FICHIERS CERTIFICATS CI-DESSUS
ON ETAIENT REGENERES LE 19/04/21 AU ENVIRON DE 10H45 TU !
 Detruire les certificats des TP anterieurs !!!!

_____________________

 Pour recevoir des messages cryptes vous devez avoir une clef RSA :

 3 - Vous devez avoir une clef de cryptage RSA personelle Privee

      Cette clef est partagee en deux parties rendues Asymetriques :

       * La partie SECRETE ( QUE VOUS NE DEVEZ COMMUNIQUER A PERSONNE !!!)
        La partie secrete Vous identifis (c'est Votre signature)
        La partie secrete Vous permet, a Vous Seul,
        de lire les messages crytes que l'on Vous envois.

          Un CA honnete n'a pas besoin de Votre clef secrete !!!
          Celui qui connais Votre clef secrete peut usurper Votre identite
         peut lire Vos messages et ecrire a Votre place !

       * La partie PUBLIQUE de la clef ( QUE LES AUTRES PEUVENT VOIR ET UTILISER )
        leurs permet de vous envoyer des messages cryptes,
        que vous serai le seul a pouvoir lire
        ou leurs permet de recevoir de vous des messages proteges, que vous seul,
        pouvais signer : PUISQUE VOTRE CLEF PRIVEE EST RESTE SECRETE !
        ( mais attention un message signe n'est pas forcement crypte ! )

        Comment ca marche :

          D'un point de vue mathematique ce n'est
         que des multiplications et des modulo !
          On reporte la theorie a plus tard
         (voir plus loin paragraphe UN PEUT DE THEORIE) !

          D'un point de vus pratique :
          Tous messages cryptes avec une partie de la clef (privee ou publique)
         ne peut etre facilement* decrypte que par l'Autre partie de la clef !!!
          Apres un decrytage on retrouve un message de meme taille.

          Plus precisement celui qui a la clef dite privee,
         a toutes les informations, et il peut donc en extraire la partie publique !
          Par contre celui qui n'a que la partie publique,
         ne peut pas* reconstituer la partie secrete !

 * Pour instant difficilement cela veut dire au moins de 2 mois pour
casser la premiere clef ( mais ensuite ca peut aller beaucoup plus vite) !
 Dans qq annees cela sera probablement facile pour tous le monde !

 Ce qui veut dire que si vous avez crypte des messages
presentement, dans qq annees tous le monde pourras les lire ...

 Si vous signe un message, vous etes presume(pour instant)
le seul a pouvoir le faire
tous le mode peut le verifier et vous opposer vos ecris
(si vous avez publie votre clef publique) !

 D'un point de vus legal en France,
la signature electronique de vos document
et dite non repudiable :
elle vous engage personellement a cette date et au dela
(comme un document signe papie)!

 De plus un document signe n'est pas forcement crypte (et vis et versa) !!!
 On doit faire tous de suite la difference entre signer et crypter !!!

 NE COMMUNIQUE JAMAIS VOTRE CLEF SECRETE;
MEME PAS A UN CA,
MEME SI IL VOUS LE DEMANDE ** !!!
 Seule la partie publique (deja contenu dans le CSR) est a communiquer :
LA PARTIE PRIVEE DE LA CLEF NE DOIT PAS ETRE DIVULGEE !!!

 Ou sont stockee vos clefs Privees ?

 * Dans la section "mes certificats" de votre surfeur ...
que vous pouvez, peut etre reutiliser !! ?? :

 COMMENT pirater REUTILISER UN VIEUX CERTIFICAT
meme perime meme revoque !


  Dans le cadre de cet exercice de certif je vous sugere plutot utiliser
une clef toute neuve, qui ne servira qu'a ca ! :

 * Vous n'avez aucune clef privee ou vous n'y faite plus aucune confiance :

 Generer facilement une Nouvelle clef SECRETE par la commande :
"openssl genrsa -des3 -out ma_clefPrivee.pem 2048"
 PROTEGER LA PAR UN PASSPHRASE ( option -des3 ) !!!

 En fait la syntaxe et le resultat d'une commande openssl
est liee a un fichier de configuration (/etc/ssl/openssl.cnf ),
dont on parlera plus tard ( copie du fichier disponible a la fin de cette page) !

 * Qui y a il dans votre clef privee ? :

 "openssl rsa -in ma_clefPrivee.pem -text -noout"
  ...
 Vous avez compris a quoi sert la passphrase ! :
 Toutes les infos de la clef privee, y compris la partie publique, sont la !
 La partie publique c'est la taille le modulus et l'exposant public 65537.

 Vous constate que la clef ne contiends qu'une serie de nombres
plus ou moins aleatoires ...
 Il n'y a pas de donnees personelles ( elles sont dans les parties certificats )!

 Vous pouvez aussi, avoir des certificats et des clefs qui protegent :
vos serveur ssh , des logicieles varies ...
 Il est important de bien les proteger de tous types acces
exterieur ou interieur* et d'utiliser des clefs differentes.

 * Protegez vos fichier :

  Cela ne sert a rien de crypter des messages avec des clefs
si les fichiers qui contiennent les clefs sont accesibles a tous !
  Vous devez donc a priorie interdire la lecture de ces fichiers aux autres,
qui on acces a la machine !
  Independament de l'OS , openssl prevois un codage leger de ces fichier
par une passphrase (en DESS souvant) !
  Mais cette protection de fichier est
tres legere .. elle est insuffisante,
elle ne dispensez pas de controler efficace
de l'acces local a la machine !


 La passphrase est meilleur que le pot de fleur pour cacher la clef privee,
mais elle ne vous dispense pas de proteger votre ordinateur et support
contre attaque dite de l'homme dans l'extremitee .
_____________________

 Maintenant que vous avez une clef vous aller transmettre sa partie publique (uniqement)
et qq autres informations, au CA dans une requete CSR :
_____________________

 Preparez seul votre demande de CSR

 4 - Fabriquer VOUS MEME votre requete CSR de certification au CA
et SIGNER la avec votre clef PRIVEE :

 RQ : cette requete N'est PAS une autocertification, que l'on abordera plus tard !)
mais c'est la creation d'une demande SIGNEE de certification :
CSR a expedie a un CA. )
 Le CA repondra ensuite, en renvoyant un certificat ...

 "openssl req -new -key ma_clefPrivee.pem -out ma_reqcsr.pem"

  Vous devez alors repondre a diverses questions :
 * Pays (C),
 * Etat ou province (ST)
 * Ville ou localitee (L)
 * Organisation (O)
 * Unitee (OU)
 * Nom (CN)
 * Email (E)

 Cette liste de champs variables est non exaustive ..... TBDF

 Vous pouvez aussi laisser vide certains champs,
ou y mettre des valeurs commiques,
 Les plus importants dans notre cas, pour un mail, c'est CN et E

 Il y a des champs supplemetaires, extra : challeng et optional name
qui sont utilises en mode specifiques, on les laisse pour le moment, ...

  La commande openssl precedante, de generation de requete, peut etre
complete par option " .... -config caconfig" :
"openssl req -new -key ma_clefPrivee.pem -out ma_reqcsr.pem -config caconfig"
qui permet de changer le fichier de configuration par defaut de openssl
 Sous shell unix on peut, dans ce meme but,
changer la variable environement : export OPENSSL_CONF="caconfig";.
 Le fichier "caconfig" est disponible, Francise, plus loin sur cette page ... !

 * Qui y a il dans votre requete de certification CSR destinee au CA ? :

       "openssl req -in ma_reqcsr.pem -text -noout"

  TOUS ce que vous voyer dans votre requete va etre transmis au CA !!
Et top ou tard, peut se retrouver dans tous les site web que vous visiterez,
suite au fonctionnement de votre surfeur qui peut etre tres bavard !!!
  Avant de transmettre votre demande reflechissez bien
a ce que vous avez indique de votre vie privee,
tous les champs renseignes dans la fabrication de la requete
sont ils utiles, et a qui sont ils utiles ???
 A quoi, ou a qui, destinez vous ce certificat ???? .....

 Votre requete CSR de certification est SIGNEE par votre clef; elle N'EST PAS CRYPTEE !

  La liste des champs precedante C ST L OU ....
est un agregat d'informations,(type espace de nommage),
condense dans une string que l'on apelle DN (Distinguis Name)

 La definitions et la composition des champ du DN, que Vous
faites certifier, depends de votre fichier de configuration openssl
et de celui du CA :
 Rien ne vous empeche(a part le bon sens) de rajouter un champs du style
/CB=votrenumerodecartebanqaire/OU=pigonnier/ICP=infoclientaplumer .. !

 * Bonne nouvelle : Vous avez fabriquer VOUS MEME votre requete CSR

 Dans la requete de certification que vous venez de faire,
vous avez peut etre vus, qu'il y a :
 + Des informations varies ??? (en clair)
 + la partie publique de votre clef (en clair)
 + votre signature (qui est un resume crypte par la partie privee de votre clef)
 - Mais il n'y a pas votre clef privee, dans la CSR; le CA n'en a pas besoin !!!
 - il n'y a aucune reference a un CA :

  Le meme CSR peut etre reutilise dans plusieurs CA,
par vous meme ,par le CA lui meme, ou par ...

  Le CA verifira la signature (que vous avez faite avec votre clef privee) :

 Il decrypte votre signature avec votre clef publique (a certifier)
(contenu en clair dans votre requete de certification),
 Il recupere donc, le hash code de controle que vous avez fait du message,
avant de le transmettre.
 Il recalcule le hash code du message recus ...
et si les deux hashs sont identiques,
il a alors la certitude quasi absolue, que le message de requete
n'a pas etait modifier dans le transport
et que vous detenez bien la clef privee, qui
complemente la partie publique, qui s'apprete a approuver !

 Bien sur il reste a verifier au CA, que ce que vous dite
dans les autres infos variees transmisses sont peut etre VRAI :
 C'est ca son vrai boulot : verifier le reste (et visiter le pigonnier ? ) !
 Mais il pourais aussi exploiter, voir diffuser ou faire des statistiques sur
tout ou partie des info que vous lui avez transmisse dans ce CSR !

_____________________

 5 - Envoyer votre requete CSR au CA

 Plusieurs methodes a tester :

 * A : Dans un mail crypte par exemple :

 Envoyer au CA, un mail CRYPTE qui contiend votre demande
vos remarque etc ..
et en copier coller, le texte du fichier de requete au CA : ma_reqcsr.pem

 On detaillera la procedure 5 A plus tard !

 * B : auto signez vous meme votre propre requete :

 Essayer en 1er la methode B auto signee avant de vous adresser a un vraie CA :
"openssl x509 -req -days 10 -in ma_reqcsr.pem -signkey maCle.pem -out autocert.pem"

 A ce stade vous venez d'auto signe votre clef !
 D'accord c'est pas tres utile dans la vie commerciale courante ;
mais cela permet de vous entrainer et de ne pas mettre de C sur la toille !!
 Vous pourrez faire alors des tests, de signature, de cryptage,
en local (en intranet), sans rien mettre sur la toile !

 Dans les instruction qui suivent, le nom des fichiers dans les commande
peut au besoin, dans le cas B, etre prefixe par le mots "auto"
on note la variante par "[auto]" !!!

_____________________

 6 - Recuperrer le certificat public fait par [votre] CA

  soit donc le CERTIFICAT PUBLIC de votre CA dans le fichier : [auto]cert.pem

 * voir a l'interieur :

 "openssl x509 -in [auto]cert.pem -noout -text"
 "openssl x509 -in [auto]cert.pem -noout -purpose"

 Il contiend le certificat que vous avez signe, et qui est renseigne par le CA :
soit des info diverse et variees :
Le modulus de votre clef,
Le modulus de la clef du CA et les deux signatures ...
Et l'enquete precedante sur votre pigonnie !!!

 C'est l'ensemble de ces donnees que vous allez distribuer
et que votre surfeur va distribuer (y compris peut etre en mode http(sans le S)) :
(verifier le parametrage d'identification SSL de votre seurfeur *) !

 La collecte de vos infos certificats
est un job de plus en plus attrayant pour les sites web !!!

 RQ : Comme vous avez garde la clef privee qui a signe le CSR,
vous pouvez meme reconstituer au besoin,
avec votre certificat du CA, votre demande initiale de CSR :
"openssl X509 -x509toreq -in [auto]cert.pem -out copiereqcsr.pem -sigkey ma_clefPrivee.pem" !
 Une fois que vous aurais recupere et verifier votre certificat de CA valide
le CSR n'aura donc(pour vous) plus aucune utilitee,
vous pourrais donc, plus tard, le supprimer !


_____________________

 7 - Fabriquer votre certificat PRIVE p12 a usage strictement LOCAL !

 Assembler le certificat public du CA et votre clef privee,
dans un fichier ma_certetclefPrivee.p12 :
"openssl pkcs12 -export -out ma_certetclefPrivee.p12 -inkey ma_clefPrivee.pem -in [auto]cert.pem"
 Poteger ce fichier par un passphrase et ne le communiquer a personne !!!

 En fabricant vous meme le CSR et le PK12
votre clef privee est restee chez vous !

 Quoi que c'est p12 ? :

 C'est un truc binaire, une "envellope" qui contien d'autres trucs !
ici, ce truc regroupe : votre certificat du CA et votre clef PRIVEE SCRETE
ce genre de truc est prise de certains logiciels !

 Avec openssl on travaille essentiellement au format PEM MIME BASE 64
ce format a l'avantage de passer sur tous les mailleurs,
dans tous les editeurs de texte,
independament de la marque de fin de ligne cr lf utilisee ...

 C'est de ASCII de base sur 7 bits,
ou on utilise 3 caracteres pour 2 octets binaires (.DEB).

 La plus part des autres logiciels : OpenSSH , ....
reconnaisent aussi le format PEM !

 Pour garder la compatibilite avec certains logiciels
opensssl a integre :
 * Assemblage d'enregistrements au format PEM, dans un truc p12 unique
 * La decomposition de envellope truc p12, en fichiers multiples PEM ascii !

_____________________

    8 - Mettez a jour votre surfeur ou vos programmes
       qui on besoin de votre certificat et clef privee

 Dans la partie "gestion des certificats" sous section "Mes certificats",
importer votre fichier ma_certetclefPrivee.p12

 Dans la partie "mail" "gestion des profiles" sous section "securitee"
selectionner votre "certificat personnel", (enregistre precedament),
pour signer et decrypter vos mails (avec la partie privee de votre clef).

 RQ : pour cryter un mail on utilise le certificat public, du Destinataire,
(on crypte avec sa clef publique)(il decrypte avec sa clef privee).
 Le certificat est dans la sous section "Autres Personnes".

 Plus precisement on utilise un codage mixte:
l'echange est code par une clef symetrique aleatoire
ce n'est que la transmission de cette clef symetriquequi qui est crypte
en disymetrique, avec le cote public, de la clef RSA du destinataire :
 Le ds'etinatiare sera le seul normalement a pouvoir le lire !

 * Ne pas confondre cryptage et signature !

_____________________


 Je suppose a ce stade la que vous avez fait en 5 la metode B AutoCertificat !
 C'est deja un bon exercise !
 Pourquoi la Metode B auto signature avant de passer au CA ?
 Pour eviter de mettre vos infos privees sur la toile !!!
 Pour crypter celle que vous serait oblige d'y mettre pour joindre le CA
 Pour pouvoir utiliser un CA non public !

________


  Pour joindre "l'autorite de certificat BLib" a l'adresse mail
(du deuxieme certificat du chapitre 2, que vous avez charge dans votre surfeur),
vous utiliser donc, un minimum de discretion,
en CRYPTANT votre message avec la clef publique du MAIL du CA !

 On a compris, que le cryptage d'un mail se fait au moyen
de la partie publique de la clef du destinataire, contenue dans son certificat !
(plus precissement une clef symetrique aleatoire crypte le message
et on transmet cette clef crypte, avec le message,
en la cryptant toute seule, avec la clef publique du destinataire)
 On peut donc theoriquement envoyer un mail crypte,
meme si on n'a pas encore de certificat prive pour soi meme.
le destinataire recois alors un mail, et le decrypte avec sa clef.
 Il suffit donc d'avoir le certificat ou la clef publique du destinataire !


RQ :

 MAIS certains surfeurs ne sont pas d'accord et
exigent pour envoyer un mail crypte a un tier, que vous installiez d'abord
un de vos "certificat personnel" (qui ne sert qu'a signer ou a decrypter)

 Pourquoi donc ! *
 On se retrouve donc dans un cercle vicieux (type La poule et L'oeuf ! + OSPF ?)
qui conduit utilisateur a passer qu'un CA "officiel" est obligatoire !!! ???

 Pour calmer votre surfeur, vous pourriez faire 5 6 7 8 et
lui servir alors votre certificat P12 autosigne temporaire du 5B.

 Si vous venez de faire cette methode, vous constater peut etre,
que votre mailleur ne veut toujour pas, utiliser ce certificat auto signe,
pour seulement, signer vos mails !
 Il n'a pas confiance en vous, vus qu'il n'a pas trouve autorite de CA qui va avec !

 Mais chez moi, y a un leger mieux, car ce certificat de signature invalide,
l'autorise a crypter ?
(avec le certificat de destination public BoxLibrecert.pem du 2,
approuve par le certificat CA du 1 ) !
 Et a partir de la, je peut envoyer mon mail crypte
contenant en copier coller ma demande de certification !!!

 Mais cela ne suffit pas toujours pour calmer, votre surfeur !,

 En resume votre seurfeur ne vous fait pas confiance !
il ne fait confiance qu'a ces parmetres implicites ...
( issus de chez les copains du fabricants du logiciels)

 Mais il y a une soultion beaucoup plus simple
(puisque vous savez utiliser des logiciels libres) :
 Crypter votre mail, SANS le mailleur (comme en PGP).
et ensuite utiliser le mailleur pour le transmettre
(sans lui dire que c'est crypte) !


 Rien n'est impossible dans les logiciels libres !
 Il est necessaire de bien comprendre pour commencer proprement.

 Pourquoi cryter le mail qui contiend votre demande de certification CSR ?

 Pour etre sur, que seule le CA destinataire
pourra exploiter votre demande !
 ( Meme le seurfeur ou le maileur que vous utiliserai
pour envoyer le mail n'y comprendra rien ! )

 Si votre demande est une test, qui contiend aucune data privee,
c'est pas trop grave !

 Mais si les infos que circulent sont confidentielles,
vous pouvez avoir un soucis !

 La demande de certification que vous avez faite(et lue j'espere)
est independante du CA, donc n'importe qui peut y repondre
et vous envoyer un certificat ...
et se faire passer pour le CA original ...
ou vous faire un certificat non dessire cache ...
(plus vrai que vrai puisque vous l'avez signe par avance) !!!)

 * RQ : En fait le mime et le pk dans les couriers ont etait beaucoup modifies
et tous le monde n'est pas d'accord , et implement se protcole comme il peut,
voir comme il veut ! :
 - on peut vouloir cryter un message pour un destinataire donne
(sans le signer)
 - on peut vouloir cryter un message pour un destinataire
et l'envoyer a un autre destinataire, qui le relayra, sans pouvoir le lire ...
 - on peut vouloir le signer , sans le crypter
 - on peut vouloir signer et crypter un message que l'on a recus
(sans le contre signer ...)
 - etc .....

 Et si interface du programme n'est pas ergonomique ou mal concus
on risque de ne pas savoir vraiment ce qu'il fait !

 D'ou peu etre le fait que certain seurfeur vous demande votre certificat
pour un cryptage simple alors que certificat du destinataire suffit !
et/ou decide d'utiliser votre certificat personnel en prime !

 D'ou le partis pris dans ce TP, de decomposser toutes les etapes
avec openssl; surtout dans le cas ou l'interrese n'a aucun certificat,
( et en demande un a un CA ) !

 Au cas ou votre seurfeur serait de type recalcitrant a crypter,
je publis juste ci-apres, une methode avec la boite a outils libre openssl,
qui permet de se passer des services defficiants de certains mailleurs :


        ----

 Vous avez lu jusque ici sans rien faire ???

 Vous avez teste en local la methode 5B auto signature,
et maintenat vous voulez utiliser un CA ...
 Mais la methode 5A(demander a votre mailleur de crypter le mail),
ne marche pas vraiment ?

 Il vous reste les options 5C 5D 5E ...:
Crypter votre mail vous meme, a l'EXTERIEUR du mailleur, avec openssl :

 Avec un editeur de texte simple favoris, ouvrez une page vide :
 Ecrivez moi une baffouille,
( en commentaire derrier des lignes debutants par #),
avec, a la suite, en Copier coller le CSR reqcsr.pem
(bien en evidence et en clair PEM).
 Sauvegarde le tout dans le fichier intermediaire : monmaildecsr.txt .

 Le format texte PEM passe dans tous les editeur de texte ! :
#
# Veuillez trouver ci-apres le CSR a certifier :
-----BEGIN CERTIFICATE REQUEST-----
MIIC+TCCAeECAQAwgbMxCzAJBgNVBAYTAkZSMRYwFAYDVQQIEw1NSURJLVBZUkVO
....
....
NFMQHApCmSU5mPiXxxU0GrxR6n40oY/Zt0W5iYYDQgZDLlE6R1ZGfYsx0cdx
-----END CERTIFICATE REQUEST-----
# fin du fichier PEM
#
  C'est ce fichier, "monmaildecsr.txt",
que vous devez crypter avant de le transmettre ! :


 Recuperer le certificat publique CA de destinataire du mail
(Le mailleur du CA libre, du Paragraphe 2 : BoxLibrecert.pem)
et crypter avec, votre fichier texte , au format mime :

 "openssl smime -encrypt -in monmaildecsr.txt -out mailcrypte.msg \
 -from VOTREaddresse@chezVOTREmailleur.biz \
 -to imcp.blib@trousperdu.org \
 -subject "Encrypted CSR message Mime for CA [BLIb]" \
 -des3 BoxLibrecert.pem"

 Noter au passage, que option de crytage mixte -des3
utilise le certificat du destinataire
(et pas seulement sa clef publique).

 Utilisation et la generation du format Pkcs7
peut etre tres differente d'un mailleur a l'autre !

 RQ Adresse mail de destination du CA a utiliser (-to xx)
est contenues dans le certificat BoxLibrecert.pem

 Vous avez obtenu mailcrypte.msg un fichire texte au format smime p7m !
(format compatible pour un envois direct avec sendmail :
"cat mailcrypte.msg | sendmail;")

 RQ: dans ce codage mixte,
votre texte de mail est en realitee encode faiblement par une clef symetrique;
seule la clef symetrique, est transmisse par cryptage asymetrique !

 Maintenant que vous avez crypte votre demande de CSR
vous pouvez me transmettre COMME VOUS VOULEZ* : mailcrypte.msg :

 * Donc aussi par mail ! :

      Ouvrez votre mailleur a l'adresse mail de certification ( 2),
     envoyer moi le fichier "mailcrypte.msg", en copier coller,
     a interieur de votre message texte (apres un autre #bafouille) !
#
#
# Veuillez trouver ci-apres la copie du MAIL CODE DU CSR :

To: imcp.blib@......
From: myaddresse@chezmonmailleur.bizmonmail
Subject: Encrypted CSR message Mime for CA [BLIb]
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64

MIIHiwYJKoZIhvcNAQcDoIIHfDCCB3gCAQAxggIIMIICBAIBADCB6zCB3jELMAkG
A1UEBhMCTFAxLTArBgNVBAgTJElOVEVSTkVUIExJQlJFIERBTlMgREVVWCBQQVlT
....
....
o+Tx4GBlpD/wFxYE8J1HTErF/e9HhbmDq3MdNwLBpGKnvjFFz2Xsl3lXVvibweg+
IIV9e0r+CxpwKQfbPage

# fin du fichier CODE
#
#

  Preciser a votre mailleur que c'est un message en clair
et non signe pour le mater ... !

 * ou envoyez moi votre message par clef usb en reunion... etc (5 Z)


  En resume, le message de demande de certificaton est crypte ET signe,
il est independant du support de transmission : mail, pigeon voyageur
seul le destinataire peut le lire (avec la clef PRIVEE du mail du CA)
et il est sur qu'il n'a pas etait modifie par le transport !

 Comment le CA va decrypter votre message ?

 Avec sa clef privee de mail :
"openssl smime -decrypt -in mailcrypte.msg -recip BLibMail/BLibMail_cer.pem -inkey BLibMail/BLibMail_clefPrivee.pem -out mailenclair.out"

 Ensuite je verify votre signature, avant une eventuelle certification,
simplement en la decryptant avec votre clef publique
qui est contenus dans votre CSR a certifier.

________


 Maintenant que votre mailleur commercial a etait dupe

  Recuperer la reponse de CA Blib ....
et enchainer maintenant pour de vrais les points 6 7 8 :


 Recuperer le certificat par couriel.

 En toutes logique on pourrais crypter, avec votre clef publique,
ce certificat pour vous le transmettre ...
dans le cas ou cette certification publique ne l'est pas vraiment (PGP)!
 Mais pour simplifier le TP je envois en clair !
 Sinon il vous suffit d'un petit coup openssl pour decrypter (sans le mailleur) !

 Assembler le pk12,(certificat + votreclefprivee)
et proteger le par une passphrase :
 "openssl pkcs12 -export -out ma_certetclefPrivee.p12 -inkey ma_clefPrivee.pem -in cert.pem"

 Mettre a jour le surfeur/mailleur(apres avoir supprimes les clefs d'essais) ...
 Dans la section certificat personnel
importer le fichier ma_certetclefPrivee.p12

 Vous avez maintenant, dans votre surfeur les 3 certificats :

 * Le votre dans "mes certificats" (certificat + clef privee),
que vous aller donner a votre mailleur comme source de signature et decryptage

 * Celui du mail de la box libre dans "certificats autres personnes",
que votre mailleur devrai trouver seul si vous ecrivez a la Box libre

 * Celui de autorite CA commune aux deux autres, dans "Autorites".

 Parametrer le mailleur pour qu'il utilise votre certificat ...
 Dans votre mailleur "parametre des comptes courrier" .
  "dans votre compte mail(celui que vous avez fait certifie)"
  "section securite"
 Charger votre certificat+clef personnel pour signer et dechiffrer
vos mails , a la demande (manuellement)

 Envoyer moi un mail a l'adresse du mailleur du CA
en precissant a votre mailleur que vous voulez le signer( avec votre clef)
et le chiffrer avec la clef du mailleur du ca ,
sont certificat et deja en place (autre personne BLib Mail) !

 A partir, de la votre mailleur peut signer et/ou crypter avec la box libre !

 N'oubliez pas,
au niveau du menu de gestion du certificat(du P2) "autres personnes"
de declarer que vous faites confiance a son autorite de certification (du P1)
pareil pour votre propre certificat (c'est le meme CA !)

 On a un groupe de discution "certifie" discretement !
et on pourra echanger des scripts de gestion des CA ....

  Si vous n'arrive pas a mater la bete contacter moi par mail,
dans le titre du message inscrivez quelque part "[BLib]" !

 RESUME DES OPERATIONS :

 Si vous etes sous linux/unix dans une fenetre en ligne de commande
importer dans votre directory de travail le fichier "caconfig" (si apres);
ensuite tapper la commande :
export OPENSSL_CONF="caconfig";.
#(sinon par defaut c'est normalement /etc/ssl/openssl.cnf qui est utilise)

 1 - Charger Le certificat Racine de l'autorite de certification independante BLib
 2 - Charger Le certificat de mail pour joindre la box libre qui gere la certification
 3 - Recuperer ou fabriquer une clef de cryptage RSA personelle Privee * (avec openssl)
 4 - Fabriquer VOUS MEME* votre requete de certification CSR et signer la (avec openssl)
 5 - Crypte (avec openssl et la clef publique du CA) votre requete CSR et Envoyer la au CA
 6 - Le CA signe votre requete et vous la renvois (sous forme de certificat)
 7 - Regrouper ce certificat et votre clef PRIVEE, dans un 'certificat pk12' PRIVE,
a usage LOCAL* (avec openssl) !
 8 - Mettre a jour les logiciels qui ont besoin de votre certificat et de votre clef PRIVEE
 9 - Envoyer au CA un mail crypte ET signe (pour verifier que cela marche)(optionnel) ... !

  * Les donnees PRIVEE ne doivent pas quitter votre machine !!!!

 Les donnees essentielles sont :
 VOTRE_CLEF_PRIVE *
 et
 LE[S] CERTIFICAT[S] CA !
 Tous le reste (y compris votre CSR) peut etre reconstitue
a partir de ce groupe de donnees !

 La syntaxe et le resultat d'une commande openssl
est liee a un fichier de configuration (/etc/ssl/openssl.cnf ).

 Le fichier de configuration global openssl utilise pour ce TP de certification,
est disponible en mode texte ici : caconfig !

 Pour ceux qui dispose d'unix bash, je prepare aussi un script shell interactif,
a telecharger, et qui est un assitant, pour les phases 3 a 9. .........

 RQ : Ce TP de CA etant centre sur le mail;
le port 443 de cette machine, ne vous est aucune utilitee !

 Bien sur on peut faire une liaison avec un CA en mode securise HTTPS ou SSH
avec du java script plus ou moins elabores et un menu graphique pimpam
(qui ramasse un max d'info)!
 Mais dans le cadre de ce TP, j'ai voulus montrer, que l'on peut faire
la meme chose, sans aucune connexion, sur un support peut fiable,
en maitrisant totalement (par les mail cryptes) les informations echangees
(par simple pop et smtp non securises)(et donc discretement comme en pgp ) !

 ** Certains CA vous proposent ou exigent de faire votre clef de cryptage PRIVEE ...
 Mefiez vous en, "a priory" ils ne sont pas honnetes !
ou alors ils sont assujettis, dans certainnes republiques bananieres,
a communiquer aux autoritees qui le demande, votre clef en moins de 72h ?
 Utiliser plutot un CA offshore ou faite votre CA vous meme !





MAIL ET HTTP

 Il y a des interfaces de plus en plus evolues et conviviaux pour gerrer les mails !
 Certains meme sont en mode graphique ou en html ...
 Par exemple sur un androide vous pouvez utiliser un iterface de type Gm..

 Vous remarquerez alors, si vous aves plusieurs ordinateurs, pc, androide
que quand vous vous connecte, avec une autre machine, vous retrouver dans votre "espace perso"
les mails que vous avez deja lus sur l'autre machine !
 En fait les mails restent sur le serveur (pop ...) distant ...

 Vous devez donc de temps en temps vider votre espace personnel
en mettant les messages deja lus a la poubelle !
 Par cette action vous demandes officillement au serveur la destruction de ces messages ,
il peut cacher qq part une copie, mais vous l'avez prevenus que vous n'etes pas d'accord !

 La methode normale pour gerrer ces mails consiste donc :
a aller chercher les messages sur les serveur de mail (pop , ima ...)
a en faire une copie locale sur ca machine (ou ces machine, une clef usb ...)
et a demander ensuite, la destruction des mails sur le serveur distant !!!

 Le plus rationnel si vous avez une machine toujours en ligne c'est d'avoir un smtp independant !
d'utiliser un challeng MD5 .SHA .. , pour identifier les connections des smtp de confiance ...
et de cryper les mails a transmettre ....

 Si vous avez des mails cryptes ( continuer a les stocker localement sous forme crypte )

 Vous pouvez evidament garder des mails sur des serveurs externes traditionels,
pour distraire les ackeur et pour les spam courant ....






[AUTO] CERTIFICATION POURQUOI FAIRE ?

 Des certificats pourquoi faire,
qui utilise les donnees de certifications ?

 Pour pouvoir, par exemple faire un groupe utilisateurs
qui echangent des mails cryptes/signe !
 Mais la procedure reste le meme pour certifier un serveur ...

 Quand vous envoyer un mail signe a un utilisateur,
si cet utilisateur a mis votre CA autorite, dans sa liste de ces CA de confiance,
son surfeur va integrer quasi automatiquement votre certificat
dans ces mails de confiances, ...
et votre groupe oCULTE va s'elargir automatiquement ...
sous l'influance du CA !

 Cet elargissement automatique est a la fois
avantage et inconveniant de la methode
de "publication" des clefs.

 Meme fonctionnement pour les certificats de serveur web :
----------- LE GROUPE S'ELARGIS AUTOMATIQUEMENT ! ------
le groupe de serveur amis du CA qui visite votre surfeur s'agrandit.

      -----

 A quoi peuvent servir vos certificats (ou vos cookis) ?
 Pour avoir une petite idee, Consulter le test ci-apres :

 FIL A LA PATTE SECURISE !

 En clair de nombreuses configurations sont la pour pomper vos datas Privees,
( et le fait que la liaison soit dite securisee, peut arranger les affaires des sponsors ) !

      -----

 Donc avant de faire votre requete de certification a un CA
regardez bien les infos privees que vous transmettez a votre sujet !!!!
contentez vous du MINIMUM necessaire !!!
(il existe meme des certificats annonymes et c'est pas pour rien !)

 Souvenez vous que les bases de certifications
collectent des infos en masse, pour fabriquer vos certifs,
que certainnes n'hesitent pas, a vous proposer de fabriquer elle meme
vos clefs privees (ca existe : c'est pas une blague) !!!!!

 Souvenez vous qu'une base de certification est plus ou moins
ouverte aux hackeurs et aux big brothers de tous poils.

 Souvenez vous que l'on peut recertifier une meme clef rsa
dans plusieurs racines (voir section 3)

 Souvenez vous que PKI veut dire en gros PUBLIC Key ....
( par opposition a pgp : private ...)

 Souvenez vous que quand vous envoyer un mails signe,
que toutes les infos de certifications son transmisent en clair !!!!

 Utilisez donc les certifications publique avec precaution :
dans la vie courante, vous ne signe pas un papier sans le lire !!!
et vous ne le montrez pas a tous le monde !!!
pourquoi faire differement sur le web ???
 Parametrez bien votre surfeur et mailleur en mode manuel !

 Vous pouvez toujours essayer de revoquer votre certificat
mais les documents que vous avez deja signe avec, restent toujours valides
et vous engage au yeux de la loi Francaise (authentifie ou pas par un CA).
 De plus quand vous revoquer votre certificats, le ackeur sait
que vous vous occuperez plus de ces donnees la !

 J'allais oublier un detail : OCSP !
 Chaque fois que voue recevez ou utilisez un certificat avec votre surfeur,
le seurfeur se propose de le verifier Automatiquement ! Merci ?
 Donc en suivant les logs de OCSP on sait plus ou moins
ce que vous visitez en temps reel !
 En https, vos seurfeur envois les requettes de controle OCSP en clair :
comme pour les cookis, cela permet aussi une remuneration au clik,
pour les annoceurs !

 Dans la serie "Fil a la patte" bienvenu au club !

 Que fait la CNIL ???

 Si certains logiciels vous imposse presque des clefs privees Publiees ,
il vous reste la solution de faire votre propre unitee de certification privee,!
pour controler toutes vos infos !!!
( c'est precissement ce que j'ai fait sur ce site autonome avec un script sh !)

 Il peut paraitre bizzzare de faire ca propre autoritee de certification !
 Mais imaginez simplement que vous avez un reseau local (wifi) avec
un serveur http que vous voulez proteger par des clefs (en https ) ?

 Il vous suffit alors de faire votre autoritee de certification (locale dans le reseau)
 - toutes vos infos confidentielles resteront en local !
 - en cas de panne internet, votre reseaux intranet continuera a marcher !
vus que votre CA est sur le meme reseau local !






 COMMENT TOUS CA FONCTIONNE ?

UN PEUT DE THEORIE


 Dans les theories on peut lire, que la base du crytage et de la signature ...
c'est le partage entre emetteur et le recepteur d'un SECRET commun
(ou d'une partie different pour chaqun de ce secret)

 Et Secret cela veut dire aussi qu'ils sont (emetteur et le recepteur)
les seuls a le connaitre !

 Par definition un secret ne peut etre public (ou stocke chez un tiers ) !

 Moins on est nombreux a la connaitre, plus on a de chance de la garder secret !

---------


 C'est quoi le calcul MODULO (que je note %)
A % P c'est le reste de la division entiere de A par P

 Si je vous dit A * 3 == 15 ;
vous trouvez immediatement La solution UNIQUE A== 5;
  
 Mais si je vous dit, j'ai choisi A de la sorte que A % 5 == 3 ;
quel est la valeur de A ?
cela peut etre 3 ou 8 ou 13 ou 18 ou 23 ou 28 ......
 Il y a PLUSIEURS solutions possibles laquelle est la bonne ?

 Si je vous dit, j'ai choisi A de la sorte que (A * A * A * A) % 5 == 3 ; ...?
A priory c'est pire ! si vous devez essayer toutes les solutions ...
vous etes occupes un bon moment ! Essayer donc pour voir .....

 Vous n'avez pas encore trouve .... c'est normal, il n'y a pas de solution !
 Essayer donc avec (A * A * A * A) % 19 == 16 ; !

 A partir d'ici on note A* A * A * A ( A a la puissnce 4 )  A^4

---------

 Les CONDENSATS, Hachs, crc, paritee : MD5 SHA ...
transforme un fichier, en une suite de quelques octets (dite empreinte binaire)

 Si dans le fichier initial, on change un seul caractere
le nouveau condensat doit etre totalement different,
 On dit que l'algorithme du condensat est sensible :

 "la poule a pondu un oeuf" -> "d1564da0657b26ebde8d1adeb3d272ec" (MD5)
 "la poule a pondu un Beuf" -> "0a6ce8214c8003b3ae4d37c5e6ce8ca2" (MD5) !

 (procedure utilisee sous linux :
echo -n "la poule a pondu un Beuf" | md5sum )

 Vus que la taille du message peut etre plus grande que le condensat
il y a fatalement plusieurs messages differents qui on la meme signature
 On dit qu'ils sont en collisions !
 Les algorithme de condensats utilises sont publics,
n'importe qui peut calculer le condensat de votre fichier fidelement !
 Mais avec le condensat, on ne peut pas reconstituer, le fichier original.
 Comme dans le cas precedant(du calcul modulo) il y a trop de solutions.
 En mathematique on parle de surjections.

 Donc si vous connaisez un secret en commun avec moi ( un password)
et que vous me retourniez son condensat,
et qu'il correspond au mien, je peut conclure que la copie que vous avez est fidele !
 L'avantage c'est que l'on a pas besoin de faire transiter le secret sur la liaison !
 L'incoveniant c'est que le hackeur a ecoute n'a qu'a noter le condensat lui meme
pour nous finter.

---------

 Pour pimenter la situation on va utiliser un peut de SEL,
on vas faire un CHALLENG :

 Je vous envois une phrase en clair ALEATOIRE,
par exemple "Grand mere fait du velot "(c'est ca le SEL du message).
 Vous assembler le SEL et le secret bout a bout et m'envoyer son condensat
 Je fait le meme calcul de mon cote et
je verifis alors que votre reponse est : "2f0565072c45d781e143c3d148d42f8b" !

 Je fabrique une autre challeng,
avec un autre sel aleatoire "Pepe reste a la maison " ...
 Vous assembler ce nouveau SEL et le meme secret bout a bout et m'envoyer son condensat
 Je fait le meme calcul de mon cote et
je verifis alors que votre reponse est : "a7c1f65150ad6efcd6bba7c9b69362fe"

 Au bout de quelques challengs reussits,
je peut conclure que vous connaisez bien le mot de passe secret *
 Je continue donc a dialoguer avec vous,
avec de temps a autre un autre challeng a traiter !

 Cette methode de challeng est utilisee dans les connections pppoe , APOP couriel
par exemple, pour identifier un cote.
 Vus que l'algorithme de hash est sensible le hackeur auras du mal a utiliser,
un condensat qui change toujours,
de plus le mots passe secret lui meme n'a jamais transite dans la liaison.
 En resume le condensat specifis que vous connaisez exactement le bon truc,
par exemple un tres gros fichier.

 Essayer, pour voir, de trouver le secret de pepe et meme
(string de 18 caracteres pour info) !
echo -n "Grand mere fait du velot SECRETATESTERDE18C" | md5sum ....

 RQ si deux messages de meme longeur M1 et M2 sont en collision
les message M1+T et M2+T seront aussi en collision !
 Compte tenus des collisions et de l'algorithme meme du condensat MD5
ce dernier n'est pas considere comme "sur"
on lui prefere depuis 2004 les condansats de type SHA
 Mais cela ne retire rien au methode utilisant les condensats

 RQ dans la methode du challeng le mot de passe doivent etre stocke
sur le machine client et sur le serveur (habituellement sur /etc/ppp/chap-secrets)!
 Le fichier des mots de passe doit etre protege en lecture !

 RQ le fait que le client ce vois accepter par le serveur a la suite d'un challeng
ne garantis pas que ce serveur est le bon ( il n'est pas authentifie chez le client )!
 En effet un serveur ackeur de spoffing (attaque dans le millieu)
pourrais accepter tous les challengs sans les verifier !
 Le client peut alors de temps en temps , utiliser un mots de passe volontairement errone
pour essayer de detecter des serveurs intrus de type "Yes All" !

 Le script bash linux suivant /etc/ppp/controlchap.sh,
permet au travers d'un dump de la liaison ethernet Box - Modem,
au momemnt etablir un controle chap des connexions ppp ,
de controler la correspondance des passwords effectivement utilise par les FAI
avec les mots de passe exactement declare dans l'abonnement :

 En effet certains FAI, pour vous obliger a utiliser leur BOX,
peuvent ajouter un prefixe un suffixe ou autre alteration au password contractuel !
---------

 Une autre utilisation des codensat et la SIGNATURE :

 On peut envoyer le fichier et son condensat, sur le meme support !
 Mais pour etre sur que les datas du fichier n'on pas ete modifies,
on doit proteger alors le condensat, beaucoup plus petit,
en le cryptant par exemple de maniere forte.
 Si on ne protege pas le condensat,
le hackeur peut changer dans la transmission
le fichier et recalculer le nouveau condensat correspondant !

 C'est le principe meme de la SIGNATURE par condensat et clef :
en cachant le petit condensat, on protege le gros message qui transite en clair
car le hackeur n'a acces en lecture qu'au fichier, (on y reviendra plus tard).

 Notez que la metode des challengs precedante necessite interactivite
dans la liaison pour qu'un cote identifier l'autre,
et au prealable il doivent avoir convenu d'un Secret le password !
 Dans la signature il n'est pas necessaire d'etre connecte;
mais on doit connaitre au prealable la methode de decryptage Secrete.

 On a vus comment faire en sorte de detecter les modifications
des datas qui transitent en claire, grace a la Signature.
(si on crypte de maniere secrete le condensat).
 On a vus comment identifier un cote, par un mot de passe secret
(qui doir rester Secret).

 Edifice entier repose sur au moins un SECRET !

---------

CONNEXION

  Comment echanger de MANIERE CACHE un Nouveau Secret,
entre deux utilisateurs qui veulent rester anonymes aux yeux des autres
ou QUI NE SE CONNAISSENT PAS
dans une liaison interactive non securisee
: Diffie Hellman Algorithme

  Dans les methode precedante chap, signature ...
on constate qu'un certains nombre informations d'identification est envoye en clair!
  Meme si celui qui ecoute passivement Chap challeng
ne peut pas determiner le mots de passe;
il connais le nom de login utilise, !
il peut donc dessider d'enregistrer ou pas le reste de la communication ...
en vus dessayer de la decrypeter plus tard !
 Quand on vie dans un etat non democratique ou pas;
cela peut devenir rapidement un incoveniant !

 On veux donc pouvoire echanger sans etre trace par des oreilles indiscretes
en partent du veil adage : quand on a rien a montrer ou peut tous cacher !

 Procedure
 Deux entite E1 et E2, qui ne se connaisent pas ( ou qui ne ce sont pas encore authentifie )
veulent communiquer confidentiellement
 Mais elle sont ecoutees par des ackeurs et des big brossers K !

 Elle echangent en clair deux nombres A et M tel que 1<A<M(suffisaments grands)

 L'entite E1 choisit ALEATOIREMENT un nombre SECRET X1<M
calcule H1 = (A^X1) % M et transmet H1

 L'entite E2 choisit ALEATOIREMENT un nombre SECRET X2<M
calcule H2 = (A^X2) % M et transmet H2

 Toutes les entitees on vu passer A M H1 H2 !
mais on du mal a connaitre simultanement X1 et X2 !

 La on peut finir le numero de telephatie :
E1 calcule C1= (H2 ^ X1) % M #il combine le nombre recus avec son secret local
E2 calcule C2= (H1 ^ X2) % M #l'autre cote utilise la meme methode

 En final on C1 = (A ^ (X1*X2)) % M = C2 c'est le SECRET COMMUN de E1 et E2
inconnu evidament de K !
 Fin du numero de telephatie ; le musichall applaudit !!!

 Comme on la devine dans exercise d'introduction,
le choix de A M X1 X2 n'est pas anodin
et n'est pas totalement du au "hazard"
si on veut que les ackuers cherchent longtemps ...
 Il y a des "recettes de cuisine" a appliquer
pour augmenter leurs temps de recherches
 Ces recettes son normalement connus de tous, pour vexer personne,
on les appellera des "heuristiques" !

 Il est necessaire que les programmes qui utilisent ces protcoles respectes bien
les consignes culinaires, dans la phase de generation des tables A M
et dans des calculs dit aux HAZARD (qui ne sont pas faciles pour un calculateur;
meme si il font intervenir chez certain les mouvement de la souris
et des trucs divers et varies, ).

 Le Hazard a besoin d'etre de bonne qualitee !!!

 Maintenant E1 et E2 on un parametre secret en commun C
fabrique a partir deux autres secrets prives disjoints)
 E1 et E2 on convenus d'utiliser C pour generer,
un clef de cryptage commune, (aussi aleatoire que C).
  A partir de la, ils font des echanges Confidentiels,
cryptes par clef symetrique jetable !

 Mais cela n'est pas suffisant !
 Le ackeur peut toujour nuire et ussurper.
car E1 et E2 ne ce sont pas encore authentifier reciprquement ..... !
 Ceci nous ramene a un problemes des signature et donc du cryptage .

 Le protocole Diffie Hellman est est utilise : pour etablir des liaisons ssh (version 2),
des connections a la demande, etc etc ...
 Quand vous voulez faire dialoger des telephones "bluetooth" (le mien est noir),
au moment ou vous les rapproches, chaque cote vous demande de confirmer
un numero "pin" commun, genere au hazard relatif,
il est le meme sur les deux menus appareil !
 C'est en gros les deux numero C1 et C2 !
 A partir de la la communication est plus ou moins bien cryptee.

 RQ : DE permet de crypter, proteger echanges;
Mais pas de garantir identitee des deux extremitees !

 Le protocole Diffie Hellman 1976, est un ancetre
du codage par clef nonsymetrique,
 Le RSA date apparament de 1978.,
 Le choix des recettes de cuisine et leurs applications
(et le brevet deposse) font (essentiel de) la difference.

 L'edifice entier repose sur un SECRET qui depend du HAZARD(jeux de des)!

 Ce protocole est utiliser pour cacher un echanger aux ecouteurs K !
mais il n'autentifis personne
( puisque par definition les deux extremitees ne se connaissent pas !!! )
 Identification de la source ou/et de l'emetteur,
est repouse a plus tard, dans un dialgue cache au tiers,
si on veut eviter une attaque dans le millieu !!!

---------

LE CRYPTAGE

 le cryptage d'un paquet de donnees initial, donne un autres packet de donnees,
qui une fois decrypte, a son tour donne un packet de donnees,
de la meme longeur que le packet initial
et de preferance avec les memes datas a interieur !
 Contrairement au condensat, l'operation est reversible !!!!

 Il existe une multitude de systemes de cryptage par clefs secretes !!!!
on va les classer en deux categories :

* LES CRYPTAGE FAIBLE PAR CLEF SYMETRIQUE :
celui qui connais la clef peut coder et decoder :
chaque extremitee connais la meme clef,
ou peut la deduire a partir de ces propres infos !

 ou exlcusif ....
 DES3
 Equivalent numerique du cryptage a 3 roues codeuses
de Enigmat allemende des Ubot, decrypte depuis la guerre de 40,
et qui a modifie la guerre, a partir des campagnes de Romel en Afrique ....
 Une partie du commandement Allemand, eyant suspecte statistiquement qq chose
a voulus rajouter une 4 eme roue codeusee; ....
mais cela n'a pas etait fait pour raison budgetaire !

 C'est ce genre de codage des mots de passe qui a eteit autorise sur UNIX
pour crypter /etc/password en 1970 (alors qu'il etait perce depuis 1940 !!!)

* LES CRYPTAGE FORT PAR CLEF NON SYMETRIQUE :
( et la tous de suite une remarque : l'agorithme est symetrique;
c'est l'usage des deux parties de la clef qui ne l'est pas !)

  Soit 3 nombres Pr Pu M
et le message a coder X
le message crypte est Y=(X^Pu)%M
le message decrypte est Z=(Y^Pr)%M

 Le proprietaire de la clef privee connais les trois chiffre Pr Pu M
Il ne rends public que Pu et M
 Vous l'avez compris Z est egal a (X^(Pu*Pr))%M

 On reconnais l'alogorithme Diffie Hellman, il est totalement symetrique :
on peut donc, crypter aussi avec la clef privee et decrypter avec la clef publique.

 Il reste a parler de heuristique de generation de Pr Pu M.
il doit avoir un HAZARD de bonne qualitee evidament !

 Mais par rapport a DE, il est touye, de telle sorte que
Z est egal a X quel que soit le X utilise !
(cela viends du fait que PU et PR sont premier : th Fermat )

 De plus, dans la pratique, on utilise Pu egal a 65537 (2^16+1)(premier).
 Autrement dit la clef Publique se resume a M le modulus et a la taille de la clef
et la mise en puissance 65537 est reduite a 16 multiplications !

Inconveniants et avantages

 C'est environ plus de 100 ou 1000 foix plus lent de decoder du non symetrique
que d'utiliser une clef symetrique !

 Plus on utilise une clef non symetrique ou pas,
plus on a de chance de se la faire decrypter !!!

 Le message crypte par une clef non symetrique
est plus petit que la taille de la clef
(une clef de 1024 bits, soit 128 octets, permet de crypter moins de 116 octets) !

 Dans la pratique,
on crypte les messages long avec des clefe symetriques que l'on change souvant,
et on reserve le cryptage FORT, a la transmission, pour cacher :
 * Les hash codes du condensat d'une signature
 * pour Transmettre les clefs symetriques elle memes
 * ou tous autre donnees sensibles (de moins de deux cents caracteres)
 * pour les authentfications Mutuelles ....

 Pour decrypter un message crypte, il est "necessaire"
que le destinataire, possede l'autre partie de la clef.
 Si ils sont les seuls a connaitre ces deux bouts de clef,
ils s'autentifis mutuellement (sans le concours d'un CA).

 L'ensemble de la theorie de ce cryptyage, reposse sur le fait
qu'il est facile de caculer Y=A^X%M;
mais que connaisant M et X il n'est pas facile a priory de trouver X,
en explorant systematiquement toutes les solutions(en FORCE), car il y en a trop !!!
(c'est peut etre plus facile autrement ? !)

 Ceci est a l'origine de PNG
qui est utilisable quand l'emetteur et le destinataire
s'echangent des messages, sans etre connectes en meme temps;
pour des mails entre autres.

---------

AUTRE USAGE DU CRYPTAGE HYBRIDE

  les mails/messages en diffusion/brodcast/tnt/sat, tel que les chaines de TV,
sont crypte de maniere faible, le meme cryptage est envoyes a tous le monde

  L'abonne qui veut la clef doit se connecter s'autentifier payer,
et il recois en retour la clef de cryptage commune, sous forme crypte personellement !
  (ou il va, a la boutique du coin, ou sur internet, recopier celle de son voisin).

  On peut auussi anticiper l'envois a un groupe d'abonnes, en diffusion,
le crypte de la prochaine clef du programme,
et faire allusion aux certificaxt a utiliser,
part les condensat, les fingerprint du cote public des clefs, etc etc ...

  On peut aussi faire une liste de diffusion cryptee ...
les posibiltees de la boite a outils sont nombreuses !

---------

C'EST QUOI LA PUBLICATION DE CLEF PKI ?

 Si une station genere une clef complete
et diffuse que la partie publique de sa clef,
a tous le monde (en disant c'est la mienne ! croyez moi c'est moi ?)

* Les autres stations, vont pouvoir crypter un petit message avec la clef publique,
que seul le proprietaire de la partie privee pourra decrypter (destinataire unique)
 Le petit message decrypte, peut etre la clef symetrique aleatoire,
que le recepteur pourra utiliser pour decoder le reste du message.

* si le proprietaire de la partie privee, crypte un petit message avec,
tous les destinatiaires qui le decoderont, avec la partie publique,
aurons la certitude que l'emetteur est le bon,
si le petit message decrytye correspond a quelque chosse de reconnus par eux !
 Par exemple, si le decryptage donne les hashs code exacts (MD5 SHA ..),
du message emis en clair, la signature du document prouve alors que le message
n'a pas etait change depuis sa confection par l'unique codeur qui a la clef privee.

 Incoveniant de la methode :
les modulus ou les certificats transitent dans la liaison
et le hackeur "identifira" le certificat d'un cote !!!
et la non-repudiation ...

 Mieux, dans le cas du cryptage, la nouvelle norme prevois que l'emetteur
peut envoyer les "references/condensat" du certificat/clef qu'il devra utiliser
pour decrypter le message, (il y a plusieurs clefs sur le recepteur )
Ce qui lui evite d'essayer une a une les clefs !
 Typiquement dans l'application client se trouve un directory
qui contiends sous forme de liens les condensats de toutes les clefs utilisables
 Parcourir la liste des condensat est beaucoup plus rapide que d'essayer les clefs !
(Voir aussi multidiffusion cryptee)
 Inconvenaint, c'est que la referance ou le condensat de la clef a etait transmise !

 Si vous signer un document, vous envoye son hash, code par votre clef privee
en decryptant avec la clef publique on recupere le hash ... on verifis le hash ...
 A partir de la, grace, au pki le hackeur connais le modulus et le message initial
c'est a dire le hash decode ...
 Il n'a plus qu'a calculer les puissance succesive de ce hash
et les comparer au crypte pour trouver exposant prive !
 Certe cela prendra un certain temps, du materil, ... (6mois ?)
si entre temps vous n'avez pas change la clef,
le ackeur peut signer a votre place !
 Si le big brother c'est attaque au CA, qui contiend des clefs privees ...
alors autoroute est ouverte : merci le CA !!!
 Il peut aussi usurper la signature du CA aupres de vous !
 Pourquoi donc enregistre les clefs Publiques dans un CA ?
pour eviter a BB d'avoir a checher sur instant qui dit quoi a qui,
et etre sur, plus tard ...,
de casser le contenus des messages enregistres precedaments !!!

 C'est le principe de non-repudiation, savoir Apres Coup ce qui c'est passe !!!

 Exemple precedant peut paraitre extreme :

 Il necessite des calculateurs performents en ligne ?
 Pas vraiment ! Chaque fois que vous utiliser votre clef privee PKI
on a la vois passer, il suffit au routeur ..., de memoriser
toutes les trames qui contienent cette clef (le fingerprint)
 Ensuite, on a tous le temps voulus pour recuperer les enregistrements
et eventuellement les decoder, bien plus tard ... (fil a la patte du pigeon) !!!
 Des attaque de CA ce sont deja produite, permettant de recuperer des clefs privee :
de ce fait toutes les connexion enregistre sur SSL ou TLS son descriptables a posteriorie

 Pour parrer a ces attaques a posteriorie, TLS permet d'adopter une nouvelle strategie
qui utilise toujour le clef privee du serveur (contre attaque de l'homme dans le millieu)
et qui utilise DHE (ECDHE : Eliptique Curviligne DH)
un algoritme DH pour generre la clef symetrique Ephemere
(le Pre Master SSL) sans la transmettre sur le reseau (meme pas sous forme crypte)
 De ce fait si la clef du serveur est plus tard compromise, de par le DHE,
les cessions enregistrees precedaments ne sont normalement toujours pas dechiffrables,
vus que le PM ephemere n'est pas transmisse (meme crypte)

 Une variante est que Les premiers envois de negociation du DH
(sensible a l'attaque de homme dans le millieu)
sont cryptes par la clef publique du serveur
(et ne peuvent etre exploite que par lui)
 Si un ackeur a tous de meme a la clef privee du serveur,
il reste devant les PB du DE entiers de chaque clefs ephemere
c'est pas vraiment un PB; mais ca va obliger a consommer du temps CPU !
;( Voir dans la litterature le PFS Perfect Forward Secrecy DHE ) !

 On peut aussi decomposert le pb :
 * le DH pour une etablir une connection
qui ne peut doit pas etre ecoute par un tiers
(en sachant que l'entite avec lequelle on dialgue n'est pas forcement la bonne)
 * et ensuite authentification des extremites ( a l'abrit des ecoutes ),
sans echanger de data sensibles temps que authentification n'est pas faite !
(et en envoyant des data sans interets, si authentification n'est pas bonne)

 On lis dans la literrature que DH est sensible a l'attaque l'homme dans le millieu
mais c'est parfaitement normal, puisque les deux extremites ne se connaissent pas !
 Si c'etait pas le cas, par absurde, cela voudrais dire qu'une des extremite
(et/ou les ackeurs/ecouteurs)
pourrais a l'Avance savoir que la connexion a venir, entre deux parfaits inconnus
est bonne ou pas !.
 Ce qui est visiblement contraire a l'objectif declare :
hopital se moque de la charitee !

 Mais la plus part de ces nouveaux protocoles PFS se heurte a un pb
qui est augmentation du temps de calcul (cote serveur)
necessaire a chaque connexion clients (a peut pret 15 pour cent en plus)
sur un serveur grand public c'est genant
(surtout si sont objectif est de tracer le clients !)
 Donc les serveurs on tendancent a utiliser des algorithme
pour couper rapidement les liaison douteuse (DOS obligue)
(ce qui renseigne de fait le ackeur a ecoute)

 En faite cryptage et decryptage son des arts d'utilisation des CPU,
fait pour que l'adversaire passe plus de temps a calculer que nous,
ou qu'apres de long calculs, il soit abreuve de datas sans interets,
ou totalement toxiques !

 On a vus comment "crypter/securiser" une liaison ouverte au ackeur
 On a vus comment authentifier un seul cote ...

 On ne doit pas negliger de proteger chaque bout,
de l'attaque locale de l'homme dans l'extremitee,
directement sur la machine E1 ou E2
surtout si elle est ouverte par ssh ! telnet ! http !
 Il peut y avoir des denis de services ,
et des acces en lecture aux clefs privees.
 C'est pour cela que independament du systeme et de os
openssl prevois un codage lege, par passphrase, des datas sensibles !

---------

NEUTRALITE DU NET ET CRYPTAGE ?

 Vous savez peut etre pour l'avoir tester ...
que les FAI et les reseaux ne sont pas forcement neutres quand a la maniere
acheminner les datas !
 eEn regle generale le HTTP transite beucoup plus vite que les mails,
et son relayes par des noeuds differents (qui au passage enregistre les datas ?)!
 Sous les pretextes falacieux de droits d'auteurs, d'encombrement du reseaux , ...
les FAI et les sites web se font la geurre pour exploiter les premiers
les datas qui transitent. (Voir par exemple les proces en cours)

 Si on etabli systematiquement une connection de type Diffie Hellman
suivis d'un cryptage symetrique, avant meme que les extremite identifis,
on aura certe, un protocole plus lourd , mais les noeuds de transit des message,
n'auront plus rien a exploiter !

 Pourquoi les transitaires devraient lire les messages !
Imaginez que votre postier intercepte toutes les lettres promotionelles
et vous les distributs plus tard, sous pretexte qu'il veut etre le premier
a beneficier de la promotion : Vous crier au scandale et faite un proces !!!!
 Ce pendant dans internet c'est comme ca : le postier fait ce qu'il veut,
il lit vos messages , vos pages web et les envois ou il veut, quand il veut !

  Doit on alors crypter systematiquement pour assurer la neutralitee
et fabriquer un net a deux vitesses ?

 Quand je poste une lettre, je paye pour une expedition rapide
et je m'etonne quand un courrier lent arrive plus vite
ou que ma lettre etait ouverte !

 Quand pourra t'on faire des tests legaux en ligne,
gratuis, et juridiquemnt opposables, pour verifier la neutralitee ????
comment payer la procedure gratuite (avec de la pub ?)?

 Les procedure actuelles et la publication pki
ne sont pas a l'avantage des internautes !!!

 La neutralitee n'est pas a exiger , simplement avec les datas en transit ...
elle doit s'appliquer, a la taille des caracteres, aux surfeurs utilises ... !

  il y a qq annees deja, le consulat de France par exemple,
imposse une version plus performante de surfeur,
pour pouvoir consulter des pages publiques fixes !
  C'etait deja de la discrimination inutiles !

 Ensuite, il vous sugere poliment de telecharger Microqqqchose, et
ignore completement les logiciels libres (malgre mes couriels de protestations) !
 Pour pouvoir passer il est necessaire de deguisser son surfeur libre en Mqqch. !!!
 C'est anormal dans un pays dit libre et egalitaire !!!!

 Vous arrive au peage de l'autoroute et on vous dit,
aller a l'autre guerite, ici c'est reserve aux professions liberales !
 C'est strictement interdit en France ! (hors de l'etat urgence)
(meme la mension "sauf riverain" n'a aucune valeur juridique ) !
 La discrimination des usages sur la route est interdite,
au nom de la libertee et de l'egalite des citoyens, marquee dans la constitution !
 Votre voisin, ne viend pas fouiller dans votre voiture
sous preteste quelle est sur la voie publique (la voiture reste privee)!!!

 Pourquoi faire differement sur le net ???
Pour les interets bien compris des acteurs et intermediaires
du net lobylises et des BB !

 La questions des droits auteur,
n'est qu'un preteste et ne conserne pas le reseaux !
 Quand vous envoye un CD par la poste,
on ne vous demande pas ou vous l'avez achete !
 La toile serait encombre par les telechargements illegaux ! ...
et la pub qui y transite , n'encombre t'elle pas ? ...
 Si qq un est en droit de la filtrer
c'est bien, l'internaute et lui seul qui paye le debit !
encore faudrait'il qu'il puisse parametrer son surfeur a sa guisse sur un logiciel ouvert.
 Je recois de la pub papier dans ma boite au lettre
(que je brule dans la cheminee l'hiver pour me chauffer) !
 Heureusement que la poste ne m'oblige pas encore
a mettre un timbre sur la pub que je recois !

 La neutralite du net c'est l'independance :
entre le resaux , le surfeur et son parametrage , les datas, les sites ....
 Si j'ecris une connerie sur un papier, on ne fait pas un proces,
au marchand de papier, du stylo bille ou de la photocopieuse !

 Quand les radio FM sont arrivees en France, certains journalistes ont propose
de les reserver en prioritee a la musique classique :
la bande FM pour retransmettre un commentaire sportif c'etait du gachis !

 Le net n'a rien avoir avec la publication des livres ou journaux imprimes,
mis en place par la censure de l'edition, apres la guerre en France :

 Si je pretent que l'ampoule a economie d'energie, par exemple, est une annerie !
je ne vais pas chercher un editeur, ...
je ne vais pas demander un numero isbn pour publier un article ...
j'ecrit directement sur mon site web :


 ARNAQUE DE L'AMPOULE A ECONOMIE D'ENERGIE
DES AMPOULES PLUS CHERES ET AUCUNE ECONOMIE

 "Une ampoule electrique a filamant, qui eclaire et qui chauffe en hiver,
c'est moins con, qu'un radiateur qui chauffe sans eclairer !"

 Elle est ou l'economie d'enegie ? IL N'Y EN A PAS :

 Si j'arrete l'ampoule a filamant qui chauffe,
(ou si je la remplece par une ampoule dite economique)
le thermostat fera chauffer le radiateur electrique
automatiquement plus longtemps !
 Je payerai done la MEME consomation electrique ..
et en plus, je serai dans le NOIR !

 Conclusion j'achete les ampoules normales,
car moins cheres (40c) !

 On fait payer d'avance au con sommateur, les pretendues economies,
qu'il ne fera pas en hiver (et en ete, j'allume pas la lumiere);
mais on ne baisse pas le prix des isolants thermique !?

 Il est a noter, qu'il y a longtemps deja, des proces en Amerique
on etait fait aux fabricants d'ampoules a incandescence,
qui on fait une entente,
pour limiter la duree de leurs ampoules a 1000 heures !

 On sait, depuis longtemps,
fabriquer des ampoules qui dure tres longtemps,
Berlin Est en RDA a etait equipe d'ampoules jaunes (Oxram ?) ...
 On pourrais probablement fabriquer
des ampoules a incandesence de 10.000H
pour moins d'un euro !
 Mais grace au lobis europeen c'est interdit,
pire on fait la promotion avec de l'argent public,
d'ampoules a economiee d'energie contenant du mercure ...

 Vous constate de par ailleurs, que dans les grandes surface,
qui ne sont pas filentrope,
eclairage ce fait ;principalement par tubes neon,
qui sont donc probablement le moyen eclairage le plus economique
(sans avoir a parler des self balast, du cosinus phi, du tris phases) !
 Oui, bien sur, a l'entree du magazin
(et haut dessus du rayon poissonerie , charcuterie ...)
il n'y a pas de neon; mais des ampoules specialisees,
(qui ne sont pas la pour economie d'energie) !

 Mais Personne n'a besoin de faire de la pub publique
pour les tubes neon, pourtant connus depuis longtemps
comme probablement tres economique* !
( * en 2017 on commence a voir des leds eclairage
dans les nouveaux magazins! )
etc etc .....

 Pire pour aider les pauvres a s'en sortir
on leur propose acheter ces fausses solutions surfacturees.
 En fait ampoule a economie energie est peut etre interessante
dans les salles climatisees !

 Donc ceux qui se chauffe a electricite, et qui achetant ces ampoules,
fabrique a etrange, poluantes, et trop cheres pour le moment,
perde de argent et sponsorise de fait,
ceux qui font marcher leur clim en ete,
( et qui n'on pas besoin etre aides ...) etc etc....

 Attendez que leurs prix baissent a moins d'un euro pour 10.000h !
isoler vous meme vos murs !

 De plus cette arnaque ecolo a etait promue par des campagnes
de pub institutionelles payes par nos impots !

 Consomateurs : pigons etc etc .....

 Pour vous eclairez l'ete, attendez un peut, pour
passer directement a la technolgie filament led,
que l'on commence a trouver sur tous les supports
de connection, a 10 000H, pour une consommation faible ...
  Leurs prix devrais commencer a baisser en 2017,
et pourrais concurencer le filament traditionnel !

 ARNAQUE ECOLO DU VEHICULE HYBRIDE
LA PASTILLE VERTE SUR CES GROSSES VOITURES ... ?


 Mes propos incandescents (et probablement vrais)
ne sont pas politiquement corrects,
et de ce fait personne les editera .... (meme si la presse est sponsorise par l'etat !)
 Mais je peut les dire grace au net
( et au fait que j'heberge directement mon serveur chez moi ) !

 ET en fait c'est ca qui derrage :
je peut le dire publiquement , sans rien demander a personne !!!

(ou crypter le tout ou partie )

 J'ai echappe aux controles de l'edition et j'ai pas envis de tomber
dans celui des FAI et des moteurs de recherches et des rentiers des droits d'auteurs Nuls !

 Pour que des propos puissent etre NET ils doivent etre LIBRES (et reciproquement)
donc le net doit etre EQUITABLE
(sinon y'aura jamais de polemiques ni de reponses (des fabricants ampoules)) !
 Ce qui implique que je puisse tranmettre de maniere publique ou pas,
independament du support utilise le net, le livre, la clef usb ...
crypte ou pas
meme si cela ne plait pas a certains !!!

 Quand Gutenberg a invente la presse
il a subit des remarques desobligeantes ...
sa machine etait diabolique, elle imprime les evengiles trop vites,
et elle a etait brullee (par les moines copistes)!!!
 On aurais peut etre fait alors une loi specifique qui interdit
impression automatise de la bible et autorise le reste ???
 Si on raisonne comme ca, vous devais envoyer les chiens sur le facteur
qui vous envois une facture a payer !
 uquel cas il ne viendra plus chez vous !

 On devrais donc separer legalement le contenus le message,
de son support de transmission !
eventuelleemnt crypter la communication,
( si on veux pas que la facteur passe son temps a lire )
utiliser plusieurs systeme de transport simultanement,
en decoupant le message en bouts incomprensibles ... !)

---------

RECAPITULATIF THEORIQUE

 En resume vous avez les briques :

 condensat MD5 SHA....
 le challengs CHAP
 codage rapide symetrique
 cryptage fort non symetrique
 connection Diffie Hellman

 combinaison du condensat et du cryptage pour signer
 combinaison du cryptage fort et d'une clef symetrique temporaire pour crypter faiblement

 Certificat public : clef publique avec signature du proprio [et du qq autres]
empilement de signatures et de certificats :
 l'homme, qui a vus l'homme, qui a vus l'ours
et pour finir ours du CA, qui c'est vus
dans un miroir auto signant
et qui certifis, s'etre reconnus lui meme,
comme etant la poule qui a fait l'oeuf !!!

 On peut assembler tous ca :

 Les possibilitees son nombreuses :
 Boucles de certification
 Fabriquer vous meme un CA Racine a usage Prive ou secret
 Faire signer votre CA par d'autres personnes ...
 Faire enregistre votre "CA" dans un autre ...
  ...
  ...
 Il commence a y avoir des CA libre :
alors, pourqoui faire son ca auto signe ??? :

 La certification est en fait une chaine de certificats
votre certifcat contiend les coordonnees de votre CA,
(et la securite veux que l'on verifis souvent cette chaine de certificats)
on doit donc joindre le CA pour lui demander son certificat est le controler
vec le ca de celui qui a sont tour a certifie le CA ...
jusque a arriver a la prentendue racine autosigne !!!

 Vous notez, que vous laisse des infos de certification,
en passant les controles, un peut partous sur la toile !
 Si vous avez un reseaux intranet, la certification par un CA exterieur
ne peut plus marcher, si vous perdez votre lien adsl :
 Impossible alors etablir un lien "wifi securise" entre la chambre et le bureaux !

 En pratique, un CA qui n'est plus autocertifie, doit donner aux clients
avec son certificat de CA, tous les autres certificats CA intermediaires,
jusqu'a la racine autosigne, le tous groupe dans le meme fichier .crt
dans une url acessible !
 Cela peut evite au client d'avoir a controler la premiere fois
toutes la chaine de certification , pour generer ce fichier !
 Certains ca pensent que l'on doit etre toujours connecte !
 Le resultat, c'est que certains seurfeurs,
refuse le certificat, sans expliquer au client ce qu'il doit faire !
 Suite a des "mouvements" dans les CA , cetains seurfeurs
ne peuvent plus connecter leur clients comme avant !
 Une minoritee de CA discreditent tous les autres !!

 Si, votre ca auto certifie est dans votre resaux intranet,
par contre, en cas de tempete votre resaux local continus a marcher securise.
 De plus il n'y a aucune raison que vos infos de certification locale
transite au travers de votre pare feux !

 Vous pouvez toujours faire [RE]certifier une de vos clef locale a exterieur aussi !

 En fait en utilisant les CA autosigne ou/et les CA intermediaires ,
c'est vous qui controlez les infos qui transitent !

 Dite mois donc a quoi sert votre pare feux , si vous laisser trainer,
vos clefs SSH sur des CA externes ???
 
 De plus si vous gerrer vous meme votre CA,
vous pouvez CHANGER DE CLEF PLUS SOUVANT
et supprimer definitivement toutes trace de celles qui ne vous servent plus (PFS)!






NE VOUS LAISSER PAS FAIRE !

 A vous de continuer et de bien comprendre ce qui se passe,
avant de sauter dans la mare de l'ours ou la bananerai des pyranas!!!
  Proteger votre vie privee, le net est tansparent !
TBDF ....







LA TEHORIE DANS LE DETAIL
Sur des exemples numeriques


 Documentations culinaire : nombres premiers, Euler, Fermat, breches,
et autres ... ici et sur le web !!!!

 Pour l'instant il n'est pas facile de reduire, pour un particulier,
un nomber entier en ces composants premiers( de factoriser ).
 Les cryptages actuels resistent encore, car on chossi, pour
generer les clefs, des nombres premiers de plus en plus grands !

 Dans le web vous entendrez par de groupes anneaux additif multiplicatif,
element neutre , identitee
de distributivite ?associativite de commuatativite et pseudo commutativitee,
restes chinois ...

 Vous n'avez pas tous compris ! moi non plus !!!

 Je vais me concentre sur essentiel et intuitifs :
( envoyer moi vos remarques ... )


  Rappel :

   A modulo M  ( A % M) est le reste de la division de A par M 
  ce reste est fatalement entre 0 et M-1

   A est donc la Forme  A = (A % M) + K * M   (avec des entiers)
  Donc (A + B) % M  = ((A % M) + ( B % M))  % M  + 0 = (A % M ) + ( B % M )
  Donc (A * B) % M  = ((A % M) * ( B % M))  % M  + 0 = (A % M ) * ( B % M )
  Donc ( A % (P1 * P2) ) % P1  = A % P1
          soit A % M % M % M = A % M

   On vois que le % M a tendance a ce retouver un peut partous
  il passe de interieur d'une expresion vers exterieurs et reciproquement
  par associativite, distributivite, nilpotance ....
  et donc on est tente d'ecrire :

    ((A^e)*(A^d))%M  =   (A ^(e + d)) % M

    ((A^e)%M)^d) %M  =   (A ^(e * d)) % M

   En calculant des puissances sucessives de X modulo M on s'attend 
  a retouver un meme reste, au plus toutes les M-1 operations
  ou meme avant (puisque le nombre de restes est finis ) :

...

   ISOMORPHISMES

     Ethimologiquement cela caracterise 
    des trucs qui on a peut pret la "meme geule" d'une representation a l'autre
    ou dans lequel on retrouve des invarianst plus ou moins caracteristiques 

 On vas s'interesser au puissance sucessives de X (le nombre a coder ) :

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

   0    0    0    0     0      0      0       0        0         0          0
   1    1    1    1     1      1      1       1        1         1          1
   2    4    8   16    32     64    128     256      512      1024       2048
   3    9   27   81   243    729   2187    6561    19683     59049     177147
   4   16   64  256  1024   4096  16384   65536   262144   1048576    4194304
   5   25  125  625  3125  15625  78125  390625  1953125   9765625   48828125
   6   36  216 1296  7776  46656 279936 1679616 10077696  60466176  362797056
   7   49  343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743


  Ensuite on considere ces memes nombres
 dans divers systemes de representations de type modulo 2 3 4 5 ...

  Cette suite images numeriques est un peut etre un peut longue
 mais c'est pour ce rendre compte qu'il y a des criteres numerique
 qui fait que l'image est parfois un peut transparente
 et que l'on arrive parfois a devine la geule du X qui y est code 


---

soit les memes valeurs lues en modulo 2 (M=2) (phi = 1)
   les colonnes veticales sont identiques : se repetent par groupe de 1
      les lignes horizontales se repetent par groupe de 2
          une ligne sur 2 est nulle (x multiples de 2)

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  0    0    0    0     0      0      0       0        0         0          0
3  1    1    1    1     1      1      1       1        1         1          1
4  0    0    0    0     0      0      0       0        0         0          0
5  1    1    1    1     1      1      1       1        1         1          1
6  0    0    0    0     0      0      0       0        0         0          0
7  1    1    1    1     1      1      1       1        1         1          1

---

soit les memes valeurs lues en modulo 3  (M=3)  (phi = 2)
    les colonnes verticales se repetent par groupe de 2
       les lignes horizontales se repetent par groupe de 3
          une ligne sur 3 est nulle (x multiples de 3)
          une ligne sur 3 est a 1

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    1    2    1     2      1      2       1        2         1          2
3  0    0    0    0     0      0      0       0        0         0          0
4  1    1    1    1     1      1      1       1        1         1          1
5  2    1    2    1     2      1      2       1        2         1          2
6  0    0    0    0     0      0      0       0        0         0          0
7  1    1    1    1     1      1      1       1        1         1          1

---

soit les memes valeurs lues en modulo 4 = 2 * 2 ( M=4) (phi = 2)
    les colonnes verticales se repetent par groupe de 2
      les lignes horizontales se repetent par groupe de 4
        une ligne sur 4 est nulle (x multiples de 4)
          une ligne sur 4 est a 1

              la ligne 2 est incodable presque nulle

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    0    0    0     0      0      0       0        0         0          0
3  3    1    3    1     3      1      3       1        3         1          3
4  0    0    0    0     0      0      0       0        0         0          0
5  1    1    1    1     1      1      1       1        1         1          1
6  2    0    0    0     0      0      0       0        0         0          0
7  3    1    3    1     3      1      3       1        3         1          3

---

soit les memes valeurs lues en modulo 5  ( M=5) (phi = 4 = 2 * 2)
    les colonnes verticales se repetent par groupe de 4
        ceraines lignes verticale ( ex  4) sont egale a 1  toutes les 2 colonnes
       les lignes horizontales se repetent par groupe de 5
          une ligne sur 5 est nulle (x multiples de 5)
          une ligne sur 5 est a 1

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    4    3    1     2      4      3       1        2         4          3
3  3    4    2    1     3      4      2       1        3         4          2
4  4    1    4    1     4      1      4       1        4         1          4
5  0    0    0    0     0      0      0       0        0         0          0
6  1    1    1    1     1      1      1       1        1         1          1
7  2    4    3    1     2      4      3       1        2         4          3



---

soit les memes valeurs lues en modulo 6 = 2 * 3    (phi = 2)
    les colonnes verticales se repetent par groupe de 2
    les colonnes verticales sont egale  a 1 par multiples de 2 
      les lignes horizontales se repetent par groupe de 6
          une ligne sur 6 est nulle 
          une ligne sur 6 est a 1
          une ligne sur 6 est a 3
          une ligne sur 6 est a 4

          les lignes 2 4 et 3  manquent de diversitee

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    4    2    4     2      4      2       4        2         4          2
3  3    3    3    3     3      3      3       3        3         3          3
4  4    4    4    4     4      4      4       4        4         4          4
5  5    1    5    1     5      1      5       1        5         1          5
6  0    0    0    0     0      0      0       0        0         0          0
7  1    1    1    1     1      1      1       1        1         1          1

---

soit les memes valeurs lues en modulo 7    (phi = 6 = 2 * 3)
    les colonnes verticales se repetent par groupe de 6
     mais sont parfoix egale a 1 par multiples de 3 ou 2
      les lignes horizontales se repetent par groupe de 7
          une ligne sur 7 est nulle (x multiples de 7)
          une ligne sur 7 est a 1

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    4    1    2     4      1      2       4        1         2          4
3  3    2    6    4     5      1      3       2        6         4          5
4  4    2    1    4     2      1      4       2        1         4          2
5  5    4    6    2     3      1      5       4        6         2          3
6  6    1    6    1     6      1      6       1        6         1          6
7  0    0    0    0     0      0      0       0        0         0          0

  On constante ici que la deuxieme moitie des lignes ce deduit des premieres

   en effet 6 % 7 c'est aussi -1 % 7
  donc 6 quand on le multilis par lui meme donne une suite de 6 1 6 1 6 1
  c'est a dire -1 +1 -1 +1 -1 +1 ....

   de meme pour 5  qui est auusi -2 % 7
  donc pour ecrire la ligne 5 il suffit de recopier la 2
  en rajoutant un signe moins (le complement a 7)
  sur toutes les puissances impaires :

   4 c'est aussi -3 % 7 ....

   de plus la ligne 4 ce deduit de la 2 en sautant un element sur deux

   la ligne 6 est aussi  le produit des termes de lignes  2 et 3 ( %7)

    Bref : il ne reste environ que la motie des lignes premieres !!!

   et on constante que tous les (X^6)%7 sont egal a 1 (element neutre)


---

soit les memes valeurs lues en modulo 9 = 3 * 3
                             (phi = 6 = 2 * 3 ) != ( phi(3) * phi(3) = 2 * 2 )

    les colonnes verticales se repetent par groupe de 6  ( pas de 3 ou 9 ou  2)
                              (si on exclus les x multiples de 3)
     les lignes horizontales se repetent par groupe de 9
          une ligne sur 3 est nulle

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

0  0    0    0    0     0      0      0       0        0         0          0
1  1    1    1    1     1      1      1       1        1         1          1
2  2    4    8    7     5      1      2       4        8         7          5
3  3    0    0    0     0      0      0       0        0         0          0
4  4    7    1    4     7      1      4       7        1         4          7
5  5    7    8    4     2      1      5       7        8         4          2
6  6    0    0    0     0      0      0       0        0         0          0
7  7    4    1    7     4      1      7       4        1         7          4
8  8    1    8    1     8      1      8       1        8         1          8
9  0    0    0    0     0      0      0       0        0         0          0


---

soit les memes valeurs lues en modulo 15 = 3 * 5  (phi = 8 = 2 * 2 * 2)

   les colonnes verticales se repetent par groupe de 8 ( 4 ?)
      mais sont parfopis egale a 1 par multiples de 2
     les lignes horizontales se repetent par groupe de 15

          une ligne sur 15 est nulle (x multiples de 15)
          une ligne sur 15 est a 1


   X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

 0  0    0    0    0     0      0      0       0        0         0          0
 1  1    1    1    1     1      1      1       1        1         1          1
 2  2    4    8    1     2      4      8       1        2         4          8
 3  3    9   12    6     3      9     12       6        3         9         12
 4  4    1    4    1     4      1      4       1        4         1          4
 5  5   10    5   10     5     10      5      10        5        10          5
 6  6    6    6    6     6      6      6       6        6         6          6
 7  7    4   13    1     7      4     13       1        7         4         13
 8  8    4    2    1     8      4      2       1        8         4          2
 9  9    6    9    6     9      6      9       6        9         6          9
10 10   10   10   10    10     10     10      10       10        10         10
11 11    1   11    1    11      1     11       1       11         1         11
12 12    9    3    6    12      9      3       6       12         9          3

  la aussi on vois que les lignes  1 et 4 
            sont liees en complement a 5 et alternees
  de meme les lignes 7 et  8 sont liees en complement a 15 et alternees
          les lignes 6 et  9 sont liees en complement a 15 et alternees
          les lignes 5 et 10 sont liees en complement a 15 et alternees
          les lignes 4 et 11 sont liees en complement a 15 et alternees
          les lignes 3 et 12 sont liees en complement a 15 et alternees ...

---

soit les memes valeurs lues en modulo 35 = 7 * 5  (phi = 24 = 2 * 2 * 2 * 3)

   X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

 0  0    0    0    0     0      0      0       0        0         0          0
 1  1    1    1    1     1      1      1       1        1         1          1
 2  2    4    8    16   32     29     23      11       22         9         18
 3  3    9   27    11   33     29     17      16       13         4         12
 4  4   16   29    11    9      1      4      16       29        11          9
 5  5   25   20    30   10     15      5      25       20        30         10
 6  6    1    6     1    6      1      6       1        6         1          6
 7  7   14   28    21    7     14     28      21        7        14         28

   la ligne 6 ce deduit de la 3 et de la 2 !
   Comme tous X peut etre decompose en facteur premier
 on peut se contempter de garder que les lignes
 correspondant a des nombre premier 1 2 3 5 7 11
  la multiplication etant associative on peut reconstituer
 les autres lignes .

---

synthese 

  X1   X2   X3   X4    X5     X6     X7      X8       X9       X10        X11

   0    0    0    0     0      0      0       0        0         0          0

   1    1    1    1     1      1      1       1        1         1          1

   2    4    8   16    32     64    128     256      512      1024       2048
%2 0    0    0    0     0      0      0       0        0         0          0
%3 2    1    2    1     2      1      2       1        2         1          2
%4 2    0    0    0     0      0      0       0        0         0          0
%5 2    4    3    1     2      4      3       1        2         4          3
%6 2    4    2    4     2      4      2       4        2         4          2
%7 2    4    1    2     4      1      2       4        1         2          4

   3    9   27   81   243    729   2187    6561    19683     59049     177147
%2 1    1    1    1     1      1      1       1        1         1          1
%3 0    0    0    0     0      0      0       0        0         0          0
%4 3    1    3    1     3      1      3       1        3         1          3
%5 3    4    2    1     3      4      2       1        3         4          2
%6 3    3    3    3     3      3      3       3        3         3          3
%7 3    2    6    4     5      1      3       2        6         4          5

   4   16   64  256  1024   4096  16384   65536   262144   1048576    4194304
%2 0    0    0    0     0      0      0       0        0         0          0
%3 1    1    1    1     1      1      1       1        1         1          1
%4 0    0    0    0     0      0      0       0        0         0          0
%5 4    1    4    1     4      1      4       1        4         1          4
%6 4    4    4    4     4      4      4       4        4         4          4
%7 4    2    1    4     2      1      4       2        1         4          2

   5   25  125  625  3125  15625  78125  390625  1953125   9765625   48828125
%2 1    1    1    1     1      1      1       1        1         1          1
%3 2    1    2    1     2      1      2       1        2         1          2
%4 1    1    1    1     1      1      1       1        1         1          1
%5 0    0    0    0     0      0      0       0        0         0          0
%6 5    1    5    1     5      1      5       1        5         1          5
%7 5    4    6    2     3      1      5       4        6         2          3

   6   36  216 1296  7776  46656 279936 1679616 10077696  60466176   36279056
%2 0    0    0    0     0      0      0       0        0         0          0
%3 0    0    0    0     0      0      0       0        0         0          0
%4 2    0    0    0     0      0      0       0        0         0          0
%5 1    1    1    1     1      1      1       1        1         1          1
%6 0    0    0    0     0      0      0       0        0         0          0
%7 6    1    6    1     6      1      6       1        6         1          6

   7   49  343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743
%2 1    1    1    1     1      1      1       1        1         1          1
%3 1    1    1    1     1      1      1       1        1         1          1
%4 3    1    3    1     3      1      3       1        3         1          3
%5 2    4    3    1     2      4      3       1        2         4          3
%6 1    1    1    1     1      1      1       1        1         1          1
%7 0    0    0    0     0      0      0       0        0         0          0


   Rq : Quand le modulo choisi est composite (non premier)
       on constate que les  tables de codage sont moins diversifiees !!!

        Et indicateur Euler PHI semble interresant !

   Rq :  En utilisant le theoreme des restes chinois on fini par decouvrir X !!!




 DEFINITIONS 

 * NOMBRES PREMIERS ENTRE EUX  (relativ prim) :

  deux nombres sont premiers entre eux, si n'on aucun diviseur commun 
  (autre que 1)
   ex :
       5 et 6 sont premier entre eux !
       ( leurs plus petit commun multiple PPCM est egal a leur produit 30)
       ( leurs plus grand commun diviseur PGCD est 1)

       10 et 6 ne sont pas premier entre eux
           on peut les diviser chaqun par 2
           ( leurs plus grand commun diviseur PGCD est 2)
             et leur PPCM est 30 (est pas 60)
             ( 10 * 6 = pgcd *ppcm )

   Un nombre premier en absolu
  ne peut pas se decomposer en produit de plusieurs nombres
  ( il est donc premier relatif avec tous les autres )

   un nombre en general est le produit (la factorisation)
  de un ou plusieurs nombres premiers
    par exemple   9 est egal a   3 * 3 
    par exemple  63 est egal a   3 * 3 * 7


   on a en general
  A * B = PGCD(A,B) * PPCM(A,B)


     DIRE QUE DEUX NOMBRES SONT PREMIER ENTRE EUX
    EST EQUIVALENT A DIRE QUE LEUR PGCD EST 1 


 * POLYNOME DE NEWTON, TRIANGLE DE PASCAL, COMBINAISONS

   Polynome de Newton (A+B)^P

     (A+B)^2 = A^2  + 2 * A   * B  +  B^2
     (A+B)^3 = A^3  + 3 * A^2 * B  + 3 * A   * B^2   + B^3
     (A+B)^4 = A^4  + 4 * A^3 * B  + 6 * A^2 * B^2   + 4 * A^3 * B  + B^4  


      les coefficiant entiers des termes multpilicatif sont C(N,P) :
     Donnes dans le triangle de Pascal :

     C(N,P)    0   1    2    3    4    5    6    7    8    9   10   N

         0     1
      -  1     1   1
         2     1   2    1
      -  3     1   3    3    1
         4     1   4    6    4    1
      -  5     1   5   10   10    5    1
         6     1   6   15   20   15    6    1
      -  7     1   7   21   35   35   21    7    1
         8     1   8   28   56   70   56   28    8    1
         9     1   9   36   84  126  126   84   36    9    1
        10     1  10   45  120  210  252  210  120   45   10    1
      - 11     1  11   55  165  330  462  462  330  165   55   11    1
        12     1  12   66  220  495  792  924  792  495  220   66   12    1
      - 13     1  13   78  286  715 1287 1716 1716 1287  715  286   78   13    1

         P                                           N inf ou egal a P


            RQ  lignes avec un P premiers
           1, 3,  5, 7, 11 ...
           ne contiennent que des multipes de P 
            ou des 1 ( au deux extremitees )
 
              Si le nombre est nom premier, comme par exemple 6 = 2 * 3 
             on a des coef egaux a 1 , et des multiples de 3 , de 5 , de 4 ...

            On reporte la demonstration, juste apres
           la definition et le calcul des combinaisons .

   Combinaisons :

        Comment choisir 2 fois A dans (A+B)(A+B)(A+B)(A+B)
       je peut choisir le premier A dans un des 4 termes 
       le deuxieme A dans les 3 termes restant  soit 4*3 arragement;
       ( ensuite  je choisi 2 foix B )
           A * A * B * B
           A * B * A * B
           A * B * B * A

           B * A * A * B
           B * A * B * A
           A * A * B * B  !

           B * B * A * A
           A * B * A * B  !
           B * A * A * B  !

           A * B * B * A  !
           B * A * B * A  !
           B * B * A * A  !

        Mais peut importe l'ordre que le premier A soit dans le 1 terme
       et le deuxieme soit dans  le 3 eme terme
       ou que le premier soit le 3 eme et les segond dans le premier ;
        C'est pareil
       on va tous diviser par 2 

       C(2,4)  =  4*3 / 2  = 6

       C(N,P)  comment choisir N elements dans une liste de P elements
                sans tenire compte de l'ordre :

       C(N,P) =  P * (P-1) * (P-2 ) ...  /  N * (N-1)  * (N-2) ...

           soit en utilsant le symbole ! factorielle :
               C(N,P) =  P !  / ( (P-N) ! *  N ! )

        on retrouve tous les coefficiant du triangle de Pascal
                                            dans le polynome de Newton :

         symetrie :
           C(P-N,P) = C(N,P) ; (choisir N terme c'est comme en elliminer P-N )

         extrmitees :
           C(0,P) = 1    C(M,P) = 1; 

         calculs :
           C(N+1,P+1) =  C(N,P) + C(N,P+1) 
             Dans le triangle de Pascal un nombre est la somme des deux nombres
            qui le precede et du meme rang, sur la ligne precedante !

        et on peut ecrire le polynome

         (A+B)^P =   C(0,P)         * B^P
                   + C(1,P)  * A^1  * B^(P-1)
                   + C(2,P)  * A^2  * B^(P-2)
                   + C(3,P)  * A^3  * B^(P-3)
                   +  ....
                   + C(P,P)  * A^P


 * INDICATEUR EULER ( ex pour N = 63 = 3 * 3 * 7) 

    Combien un Nombre N a il de nombre inferieur ou egal a lui meme ( ici 63)
   mais de plus premier avec lui (PGCD 1) ?
    A priori,  pas plus de N ( ici 63 )(en comptant aussi 1 et 63 ) !
   mais on doit enlever tous les mutiples de 3 : 3  6  9
    donc il en reste 2/3 de 63
   idem pour les multiples de 7
     il en reste donc 6/7 ...
    soit donc 63 * 2/3  * 6/7 =  3 * 3 * 7 * 2/3  * 6/7 =  3 * 2 * 6  =  36
    PHI(63)=36

    Ce nombre est indicateur Euler PHI utilise precedament qui denombre
   l'ensemble des nombres I non elimines, qui  verifis donc  pgcd(I,63) =  1
   (il reste : 1 2 4 5 8 10 11 13 16 17 19 20 ..... 62.)
    On connais donc leur nombre sans les connaitres individuellement !

    Dans le cas general Pour N= p1^A * p2^B  * p3^C  ....
      ( p1 p2 p3 etant les nombres premiers de factorisation de N )
      on trouve  PHI(N)  = N * (1 - 1/p1)  * (1 - 1/p2) * (1 - 1/p3)  ....

    Dans le cas ou N est le produit de
      Deux nombres premiers differents p1 et p2
       PHI(n=p1*p2) = (p1-1) * (p2-1)
         ( par definition PHI(1) = 1)

 * Ordre_multiplicatif_M( A ) : C'est le plus petit entier K
     tel que (A^K) %M  = 1  ( pour A non null )
     on a vus precedament que ce nombre ne peut pas depasser M-1
     du fait que les restes d'une division modulo M sont limite a M-1

 * associativite  commutativite des operateur %

      A priory X ^P  % M = ( X % M) ^ P % M = .

        et on peut faire la calcul dans ordre que l'on veut
       et parfois la notation %m (deviends sous entendu ou optionnelle)

        certain mathematicien utilise de preferance operateur d'egalite modulo
       note par trois trait horizontal  (non disponible en ASCII de base ) !

        exemple  5 "est egal a" 11 (en modulo 3 )

         puisque ils sont egaux leur differance  11 - 5  =  6  est donc nulle !
           (ce qui est vrai : 6 en modulo 3 est bien nul )

        Bref on doit faire tres attention de quoi on parle
       pour ce debaraser de ces anbiguites et eviter la notation modulo
       on peut transformerr la notation A % M = H  en   A = H + K * M 
       avec des entier relatif

        Mais il y des contraintes ou des simplifications
       si pendant les calculs on tombe sur
         le 0 zero ou le  1 (l'ellement neutre de la multiplication)
        on peut trouver le resultat tres(trop) rapidement ! .....


 THEOREME FERMAT

   si X==0   alors X^?  est null 

   si X est non nul et pour peut que M soit premier  :
   alors on a :

    X^M % M   =  X % M  ( en fait il sagit de egalite modulo M )

     * SOIT LA FORME GENERALE SUIVANTE DU THEOREME DE FERMAT
        =====================================
          X^M - X =  K * M    QQ SOIT X 
            POUR PEUT QUE M SOIT PREMIER !
        =====================================

          ( RQ on peut demontre le petit th de Fermat
               par recurance X X+1 .....
                avec le developpemnt du polynome de newton (X+1)^M
                 donc les coefficiant, 
                  qui sont dans le triangle de Pascal CiM,
                   sont tous des multiples de M 
                    (sauf le premier et le dernier qui sont egaux a 1 :

           -----

              C(N,M) est un nombre entier de conbinaisons,
             c'est  la maniere  de choisir N (facteur X) 
            dans les M termes du polynome 
                (X+1) (X+1) (X+1) ...
              on a la choix entre X ou 1 a chaqun des  M termes
              ( N inferieur ou egal a M)

               C(3,M)   =  M * (M-1)  * (M-3)  /  1 * 2 * 3 
                   ( le nombre de combinaison non ordonees 
                              = arrangement / permutatations )

               C(i,M)    = M!  /  (M-i)!   /  i!

                   le nombre M ce trouve au numerateur
                  et pas au diviseur !!!!!!!!!!!!!!

                           ( sauf C(0,M) et C(M,M) qui sont egaux a 1)
                     C(3,7)  = 7 * 6 * 5 / 1 * 2 * 3 = 5 * 7

                   Si M est premier il n'a pas de diviseur au denominateur
                  (ni ailleurs de par definition)
                   Dans ce cas la C(i,M) est  :
                          soit  1 soit un multiple de M ,
                                  car c'est un entier et que M est premier

                Donc    si X^M % M  = X  (X inferieur a M)

                  supposont que  X^M - X = K * M
                   alors 
                    ((X+1)^M       = X^M  + M * (....    )  + 1
                       on remplace X^M  par ca valeur pecedante X + K * M
                     on a (X+1)^M  =  1 +  X  + K * M  +  M * (....    )
                     avec Y = X+1 
                       on a la memem forme  Y^M  =  Y +  Z * M

                Donc si la relation est vrai pour X=1
                   elle est vrai aussi pour tous X+1 

                Pour X=1 c'est vrai ( 1 % M = 1 )
                 donc ....c'est vrai quel que soit X !
                  pour M premier

             On demontre bien alors que
           X^M - X =  K * M  qq soit X
           pour peut que M soit premier  ! 

                Pour faire la demonstrations
                par recursion du theoreme de Pascal :
                M doit etre premier !                 )

               Plusieur autre demonstrations par recurance peuvent etre abordees
              par cette methode .... 


           -----

      *  RQ : si M est premier alors on a  PHI(M)  = M - 1


      *  On peut vouloir etendre et generaliser ce theoreme
            a un nombre non premier !
              par exemple  produit de
              deux nombres premiers  M = P1 * P2  (differants) :

                 -----

                On se rends compte que approche methodologique precedante 
               ne marche pas, car il y a des C(i,M)
               qui ne sont pas multiples de M (ou egal 1)
                Pour peut que i soit  un multiple  uniquement d'un seul
               des composants P1 ou de P2 et pas de l'autre 
                Car ils vont etre divises par un des termes P1 ou P2  ;
               mais pas par l'autre (puisque  P1 et P2 sont differants)

               (ces termes ne sont plus egaux a 0 en modulo M)
               (evidament C(0,M) et C(M,M) reste egal a 1)

                  un exemple avec  M = 3 * 5  :

                   C(3,15) =  15 * 14 * 13 / 3 * 2 *1 
                           =  455 = 30 * 15 + 5 ; 
                              C(3,15) % 15 =  5
                   C(12,15)=  5

                   C(6,15) =  15 * 14 * 13 * 12 * 11 * 10 / 6 * 5 * 4* 3 *2 
                           =  5005 = 333 * 15 + 10 ;
                              C(6,15) % 15 = 10
                   C(9,15) =  10

                   C(5,15) =  15! / 10!  / 5!  = 3003 = 200 * 15 + 3;
                              C(5,15) % 15 =  3
                   C(10,15)=  3

                         ? ? ?

                 on doit changer de methode :

                 ----

            VARIANTE TH FERMAT

               On peut ecrire le Th de Fermat sous une autre forme
              pour essayer de resoudre le probleme
              ( par un petit coup de marche arriere )
              (en divisent tous par X ( c'est la division % M ))
              (X^(m-1)) % M  = 1  ( si x est NON NULL % M !!!) 

                  Cette variante du TH de Fermat est moins generale
                 car pour diviser par X il est necessaire 
                 que X%M soit different de zero
                 soit PGCD(X,M) == 1

                 X^(M-1)  =   1  +  Q * M  
                 si   PGCD(X,M) == 1 ( X et M premiers enter eux )
                 X^(M-1) % M == 1

                   RQ si X= K*P1  ou  X=L*P2  cela ne marche pas !!!!

                  =========================================================

                   RQ si M est premier alors PHI(M) = M-1 
                     alors le th. precedant  prends la forme 
                        X^PHI(M) % M  = 1
                        si PGCD(X,M) == 1 ( X et M premiers enter eux )! 
                  =========================================================


               Mais cette forme du theoreme a l'avantage de se generaliser dans
              le cas ou M est le produit de deux nombres premiers differents
              P1 et P2
               sous la forme   (X^((P1 - 1) * (P2 - 1)) = 1 + S * (P1 * P2)

                 ----

                  Il suffit de develloper le calcul
                        S = X^((P1-1)*(P2-1)

                           =  (X^(P1-1))^(P2-1)  = (X^(P2-1))^(P1-1)
                 en utilisant deux fois le theoreme precedant de Pascal, 
                  que l'on peut toujours utiliser
                    vus que P1 est suppose etre premier 
                    vus que P2 est suppose etre premier 
                            X^P1 = X + K * P1    
                           X^P2 = X + L * P2    
                      si X % P1 != 0 et X % P2 != 0 
                           (pour eviter des multiplication par zero)
                    alors 
                       X^(P1-1) est de la forme 
                                  1+ K/X * P1 = un entier non nul = 1 + V * P1
                       X^(P2-1) est de la forme
                                  1+ L/X * P2 = un entier non nul = 1 + W * P2
                    donc 
                      S = (X^(P1-1)  ) ^(P2-1) est de la forme  1+ W * P2  
                    par symetrie
                      S = (X^(P2-1)  ) ^(P1-1) est de la forme  1+ V * P1  

                    on en deduit que K * P2  = L * P1  
                          et commme P1 est different de P2
                           P2 ne divise pas P1 donc il divise  L
                         autrement dit  S = 1 + R * P1 * P2 

                Donc ( X^((P1-1)*(P2-1) ) % M  = 1
               pour peut que X % P1 != 0 et X % P2 != 0
               avec P1 et P2  des nombres premiers differants 

                 ----

                DONC SI M = P1 * P2  ( P1 ET P2 DEUX NOMBRES PREMIERS DIFFERENTS )
               ( X^((P1-1)*(P2-1) ) % M  = 1
               POUR PEUT QUE  X % P1 != 0 et X % P2 != 0
 
                 RQ : si X= K*P1  ou X=L*P2  cela ne marche pas !!!!

             =========================================================
              On peut generaliser a M =  P1 *  P2  * P3 ...
               ou P1 P2 P3 sont des nombres premiers tous differants
                On peut alors verifier que  :
                    (X ^ PHI[M)) % M = 1   si PGCD(X,M) == 1
             ==========================================================


                RQ : si X= K*P1  ou X=L*P2  cela ne marche pas !!!!
                    on ne trouve pas 1  : mais K un inverse de X  en modulo M 
                            K*X % M == 1

                     Ce qui donne bien au rang suivant la forme classique
                    du th de Fermat
                    X ^( 1 + Z * PHI(M))  % M = X % M  

                 dans le cadre du RSA le filtre PHI(M) 
                 est simplement (P1 -1) * (P2 -1) * ....


            Ordre multiplicatif de X tel que PGCD(X,M) == 1
           est egal a PHI(M)
            PGCD(X,M) == 1 est la pour eviter les ZERO !

            Elliminer les 1 :

               Comment etre Franc et eviter les Un
              soit X^K == 1 + S * M (ceci est possible si PGCD(X,M) != 0)
              ceci est possible si P est egal a  (P1- 1) ou  (P2 -1)
              ceci est possible si PGCD(P,PHI(M)) != 1

               Pour eviter avoir  X^K %M  == 1
              il est preferable  que PGCD(P,PHI(M)) == 1
              il est preferable  que P soit premeir !



 OPTIMISATION DES CALCULS


    RQ    A%(m1*M2) % M2 =  A % M2  :  operateur % modulo est distributif


    Exemple je veux calculer X^17 :

     * La methode bete :  X2 = X * X  X3 = X2 * X  .... 17 multiplications

     * Plus evolue  : j'ecrit 17 en base 2  : 10001   =  2^4 + 1
        je calcule la suite
           X2 = X * X ; X4=  X2 *X2;  X8 = X4 * X4;  X16 = X8 * X8;
             en 4 multiplication j'ai reconstitue la base 
           et j'ai plus qu'a multiplie entre eux 
                 ce qui sont marque par des 1 binaires :
           X17 = X16  * X    (5 multiplication en tout,  au lieu de 17 !)

       ( RQ Dans ces calculs suivants je ne precisse plus % M ,
          ce n est pas tres utile,
          car  A %( F * H) = A %H  = A %H %H %H ... !)

         RQ  ici pour obtimiser les calculs
           on a utilise une decomposition en binaire
           parce que les utilisateurs et les ordinteurs
           sont habitues a ca !
             Mais on pourrais faire ces calculs dans
            n'importe quelle base ou representation numerique  !

     * Mais il y a beaucoup d'autres variantes pour optimiser 
       les calculs de cryptage ( et de decryptage ) ...
         dont une que l'on vas decrire ici :

         Exemplez X^161 (10100001)
            ce truc la vas couter a priory 7+2 soit 9 multiplications !

         mais je peut aussi ecrire 161 = 23 * 7  = 7 * 23

          (x^7)^23=  X^161

          codage   7  (111)   
                   X2 = X * X  ; X4 = X2 * X2; ...  ; Y = X4 *X2 * X ;
                           total 4 multiplications

          decodage 23 (10111) 
                   Y2 = Y * Y  ; Y4= Y2 * Y2 ; Y8 = ..., Y16= 
                     4 multiplications
                   Y23 =  Y16  *   Y4  * Y2 * Y;
                     3 multiplications
                           total 7 multiplications  (* au plus !)

                 (resultat Z = Y^23  = (X^7)^23 = X^161
                   (et si j'ai fait le calcul en modulo M 
                       tel que 1+ K * phi(M) = 161 !!!!
                   alors x^161%M == X   trouvez donc X !!! )

             le calcul global semble plus long (11 multiplications au lieu de 9);
          Mais il permet en reception de calculer la valeur de X sans la connaitre !

           Resultat en ecrivant 161 = 7 * 23   :

             * on peut coder Y=X^7
                 et on a besoin de connaitre X pour cela !

             * Mais Pour decoder  Z= (Y^23) (et obtenir x^161) 
                 ON N'A PAS BESOIN DE CONNAITRE X
                     (sinon c'est plus du decodage !!!);

                  Mais on doit etre sur que Y n'est jamais egal a 1
                   ( pour tous X != 1 )
                     ( sinon l'adn de X est perdu dans le pseudo codage !)
                   c'est pour cela que l'on verifis 
                        que 7 est premier avec PHI !

              global  ((x^7)^23 ) % ...

           c'est cette methode qui est a la basse du codage RSA !!!!


       RSA EXEMPLE NUMERIQUE 

            Soit donc   M =  5 * 11  =  55
           on a PHI(55)   =  4 * 10  =  40

            on verifis que avec  E=7   et D=23
           E*D= 161 = 1 +  K * PHI  = 1 + 4 * 40

                Pour etre sur que E a un inverse D modulo PHI
               il ne doit etre premier avec les composant de PHI 
               ( ici 7 est un nombre premier absolu 
                 qui verifis aussi : pgcd (7,40) = 1  ! )

                Ce controle avec indicateur Euler s'assure que X^7
               ne vas pas devenir element neutre 1 (en %M ) ! ( car 1 ^N = 1 )
               sinon on a perdu X en codent !!!

                   Comme le raisonnement est symetrique 
                  X^23 est different de 1%M (pour X >1 )
                  ce qui permet la signature 
                  ( qui sera decode par Y^7 la clef publique )


            *  RQ: quand on calcule pour le RSA 
                   les deux nombres premiers P1 P2,  
                   les deux nombres  E D
                       on peut garder ces infos dans la clef privee
                            pour obtimiser le decodage  Y^D ....

          X^ 161 % 55    = X    si pgcd(X,55) = 1
          X^   7 % 55   != 1    si X % M != 1


 THEORME 

     Euler Fermat ameliore 
     C'est une genralisation pour M = P1 * P2,
    avec P1 et P2 des premiers distincts :

       (X^PHI(M) ) % M  = 1  si X non null   et  PGCD (X,M) = 1 
        qui ce deduit simplement du TH de Fermat par distributivitee !

        Pgcd (X,P1*P2) permet de selectionner les X qui vont bien;
       en elliminent les mutiples indesirable !


   (  Dans le cas du RSA  M= P1 * P2,
     DEUX nombres premiers differents P1 et P2
      Si X est non null est inferieur a P1 et P2 ca marche aussi ! )

    L'ordre multiplicatif K de certain A modulo M
   est au plus egal a PHI,
    Il peut se reduire dans certain cas X  a des sous multiples de PHI 

    Par exemple si M est egale a 5 * 11 
   ordre multiplicatif pour %5  est 4 = 2 * 2
   ordre multiplicatif pour %11 est 10 = 2 * 5

    Par associativite on deduit que certain X^P peuvent se neutraliser
   pour       P multiple de 4  en %5
   ou pour    P multiple de 10 en %11
    On en deduit que pour modulo %55
   les neutralisation a 1 pourrais se produire
   sur les multiples 2 et 5 ( au plus tard a 40)

    Donc on choisi E ( pour coder les X  ( pour Y= X^E%M ))
   tel que PGCD(E ,PHI) = 1
   ce qui evite de tomber sur element neutre pour tous les Y

    On choisi ensuite D tel que ED soit 1 + K * de PHI
   ( pour retrouver X au decodage )

    Autrement dit dans le RSA on passe sont temps a eviter les zero et les un :

        le X a coder doit avoir un pgcd(X,M) == 1
       pour eviter que les multiplications, modulo ne devienne jammais nulle
        Le Y=X^E%M doit etre different de 1 
       on s'assure alors que PGCD(E,PHI(M)) == 1
        Une methode gagnante et de choisir E premier


 COEFFICIANTS DE BEZZOU

   Soit deux nombre entier A et B
   il existe  deux entiers U et V
   tel que   U*A + V*B  =  K * PGCD(A,B)

       si on rapport cela a equation de l'ordre multiplicatif

          E * D   =  1 + K * PHI(M)

        on trouve que D est egal au coefficiant de Bezzou U
        de   (  E,PHI  )
           U * E  + V * PHI   = PGCD(E,PHI) = 1 (si E et PHI sont premeir)

           D *  E  = 1  - V* PHI

               donc X^(E*D)%M   = X

 ALOGORITHME EUCLIDE

   Le PGCD(A,B) plus grand commun multiples de A et de B

   Si A et B sont premier entre eux alors leur PDGCD(A,B) est egal a 1
  et reciproquement

   On peut calculre le PGCD par recurance 
  PGCD(A,B) = PGCD(B, A%B)

   pseudo code
     avec A>B

      while(B) do

          NB  =   A % B
          A   =   B
          B   =   NB

        done
      return(A)


   On sait qu'il existe U et V les coef. de Bezzou tel que
  U * A + V * B = PGCD(A,B)

   On peut calculer ces coefficient en meme temps que le pgcd
  par algorithme Euclide etendu

   pseudo code
     avec A>B

     U  = 1    V = 0      ( A0 = 1 * A0 + 0 * B0) les deux vecteurs
     UU = 0   VV = 1      ( B0 = 0 * A0 + 1 * B0) initiaux

     while(B) do

          Q  =   A // B   division entiere  ( A % B  =  A - Q * B )

          NB  =   A % B
          A   =   B 
          B   =  NB

          NUU =  U - Q * UU
          U   =  UU
          UU  = NUU

          NVV =  V - Q * VV
          V   =  VV
          VV  = NVV

     done
     return (PGCD=A  ,  U ,   V)

        les 3 groupes iterations ci-dessus   A  B      U UU    V VV
       sont similaires et peuvent etre traites simultanement
       par une notation vectorielle
        on utilise deux vecteurs que l'on combine lineairement
       pour obtenir un troiseme (qui est le reste de la division A % B ) ,
        on recommence a iterer sur le 2 eme et le 3 eme ...

           A=A0  U=1   V=0     
           B=B0  UU=0  VV=1

           while(B) do

                Q= A//B
                (nB nUU nVV)  =     ( A  U   V )  - Q * ( B  UU  VV)
                (A U V)   =   ( B UU VV)
                (B UU VV) =   (nB nUU nVV)

           done 
           return (PGCD=A  ,  U ,   V)

           PGCD(A0,B0) =  U * A0 + V * B0


 TESTS DE PRIMALITEE


   Il est necesaire dans les calculs RSA
  de trouver deux nombres premier P1 et P2 differants et tres grands !
   Ce qui permet de valider les algorithme de Fermat ....

   Ceci peut etre long et doit donner des resultats variees
  (non predictibles) et on n'a pas pour le momemnt 
   algorithme rapide et sur  (heureusement *) :

    On n'est pas sur en fait que les nombres trouves
   son vraiment premiers :
       Il existe des nombres dit de Kermichel
      qui peuvent etre utilise dans le RSA
      sans etre premier !
        M pourrais etre alors le produit de trois nombres premiers differents ...

    Dans le cadre du RSA on prends le probleme a l'envers
   on verifis que les nombres trouves pour le moment
   fonctionnent en testant un cycle cryptant decryptant 
   sur des  valeur de X de test special
   les nombres premier 1 3 5 7 11...
   et puis c'est tous !!!
    Si ca plante on continus a chercher d'autres nombres premiers
   compatible RSA ....
    Si ca ne plante pas on espere alors que cela va marcher !

    (* En matier de securitee cryptage :
           le mieux peut etre ennemis du bien !)


 RESUME RSA


   On sait que les puissances sucessives de X 
    finissent par redonner X ( en modulo M )
     au bout d'un certains temps !

  M est a priori le produit de deux nombres premiers differants P1 et P2
    on calcule sont indicateur Euler PHI= (P1 - 1) * (P2 - 1)

  Y=  (x^E) % M   cryptage
  Z=  (y^D) % M   decryptage

    on veut que Z soit egal a X 
      au minimum on doit avoir (X ^(E*D) ) % M  egal  X % M

          Ceci est vrai avec th Euler Fermat si (E*D) = 1 + K * PHI(M)
         ( E et D sont des genres d'inverses modulo PHI )

          Mais cela n'est pas suffisant ;
         Il est necessaire en plus que Y ne soit pas egal a 1
         ( car sinon on perd X )
         Pour eviter cela, E doit etre premier
         avec tous les composant de PHI(M) !

            Traditionellement on prends E de la forme 2^K+1  
           3  5  32767  .....
           qui sont  aussi des nombres premier dans l'absolu
           (donc ils ne sont pas des diviseurs de PHI )

         Il reste a calculer D l'inverse de E modulo phi(M) !!!!
        si pgcd (E,PHI) = 1 alors D existe, pour le trouver,
        on utilise le TH Euclide etendu ( calcul pgcd et des coef Bezzou)

          Par iterations on trouve D , N  , PGCD  (algo euclide etendu)
         pour  N * PHI + D * E  = pgcd(PHI,E) = 1
              ( pgcd = 1 par choix de E premier )

        Algo Euclide etendu permet de trouver D ( le coef Bezzou  V )
       et verifis que le PGCD est bien 1 ( D et E sont alors premiers avec PHI )

   La celf publique se resume a M et a E !
  tous le reste n'est connus que dans la clef prive !!!


 LIMITES DU CRYPTAGE RSA


   * 0 est toujours code 0

   * 1 est toujours code 1

   * si on code un X trop grand superieur a  M 
      apres decodage on ne retrouvera pas le meme
        mais plutot son equivalant X % M

     si par Hazard X=P1 ( ou P2) il sera code O, 
     il faudrai que X soit plus petit que P1 et P2
     ( que l'on peut extimer a racine carre de M )
     et garder un peut de place pour faire les calculs

       * limiter la taille du X a coder
          typiquement pour une clef de 1024 (128 octets) bits
          on peut se limites a 880 bits (110 octets)

   * inversement si le nombre a coder X est
       trop petit il est transmis sans etre 'crypte'

      La norme 509 prevois :
         Que l'on utilise pour exposant public un nombre
        premier de la forme 2^? + 1 :
            3,   5,    2^16 + 1 = 65537  ....

      Si le nombre a coder n'a pas suffisament de bits significatif
     ( LB2 (X) est le log base 2 de x )
     compare a la taille de la clef ( son modulo M ) :

        Donc si LB2(X)  * 16  est inferieur a LB2(M)

        Alors le 'crypage' peut se faire
       sans avoir a utiliser le %M 
       ( donc independament de la clef privee utilisee)
        il se reduit a X^65537

        De fait on peut decrypter :
       avec n'importe quelle autre clef
       de taille superieur ( avec un M plus grand )!

         Il suffit alors de  recrypter le nombre obtenue
        avec la premiere clef publique initiale
        et de comparer les resultats pour verifier !!!

     En premiere approximations :

       pour une clef de 1024 bit le nombre a coder doit avoir
             au moins  64 bits significatif  (8 octes)  (1024/16)
       pour une clef de 2048 bit le nombre a coder doit avoir
             au moins 128 bits significatif (16 octes)  (2048/16)

       RQ : Une signature MD5 utilisee
           juste 16 octets (un peut plus en SHA !)
             donc pour instant signer un document en MD5
               avec une clef de 2048 bits
                 n'est pas vraiment garantis (usurpation possible)
            Prenez donc habitude de signer simultanement en MD5 et SHA 
           et d'utiliser des mots de passe suffisament long !!!








GLOSSAIRE

TP : travaux pratique
 ( acquisition de conaissances sur des exemples plus ou moins realistes)
 ( avec report de la theorie a plus tard !)

PKI : public key infrastructure : publier votre clef "publique"
 pour que tous le monde vous identifis
 ( y compris ceux que vous ne voullez pas ) !

CSR : Certificate Signing Request : demande faite a un tiers,
 CA plantigrade du PKI,de bien vouloir nous reconnaitre.

CERTIFICAT DE CLEF: document contenant une CLEF PUBLIQUE
 et/ou des INFOS diverses
 SIGNE par un tiers CA de confiance.

X509 : norme theorique qui dit comment on devrai faire .... : RFC

RFC : Request For Comment : norme qui dit plutot comment ca etait fait !

PEM : public/private Enhanced Mime format
 (utilise dans les mails et ailleurs): BASE64

BASE64 : maniere de coder deux octets binaire en 3 octets ASCCI 7 bits : DEB
 Permet de transmettre du binaire, sans tomber
sur des caracteres speciaux ou nom editables : password

SIGNATURE : ajout au document de son CONDENSAT,
 Crypte avec la clef SECRETE du signataire
 Le controle : le decryptage du condensat se fait
avec la la clef PUBIQUE du signataire.

MAIL/COURIEL : systeme de transmission de donnees utilisant MIME BASE 64 PEM ...

OPEN SOUCE : logiciel qui n'a rien a cacher (et normalement sans porte derrobees)

openssl : logiciel ouvert open source, independant de la machine
       qui utilise PEM, CONDENSAT, CRYPTAGE ....

LIBRE : voir informations oCULTE ! si si !

Secret : truc auquel on peut faire allusion explicitement, mais sans en parler.

Non-repudiation: impossibiltee de nier le transfert, le document, la signature : fil a la patte

Fermat : (A^P)%P==A pour P premier A<P : Euler 1736

Diffie Hellman 1976

RSA : Rivest,Shamir,Adleman 1977 :
  Brevet de utilisation disymetrique de algo. Diffie Hellman :

CLEF PRIVEE SECRETE :
 Ensemble de donnees dont on peut deduire la partie PUBIQUE de la clef : RSA

CLEF PUBLIQUE :
 Sous ensemble ne permetant pas de reconstituer facilement la clef PRIVEE globale

PGP : pretty-good-privacy
 Pour un minimum de discretion dans les echanges Prives : sans PKI

openssh : pour les telnet securisee
 ( ne pas confondre OpenSSH avec OpenSSL ! )

Attaque de l'homme dans le millieu :
 Modifier les messages au passage, entre emetteur et le recepteur, un genre masqueride, de proxy

Attaque dans l'extremitee :
 Acces direct a votre machine/clavier ... que vous avez oublier de proteger

PFS : Perfect Forward Secrecy

 Dispositions pour eviter que l'on puisse decrypter a posteriorie,
enregistrement des connexions SSL TLS ...
au cas, ou plus tard, la clef privee vennez a etre decouverte :
 En utilisant par exemple DHE: clef Ephemer genere par DH Diffi helman

 RQ en TLS HTTPS traditionel la clef de ciffrage symetrique utilise
est transmisse crypte asymetrique par une clef publique !
 Mais il est indispensable de connaitre la clef publique ou ca referance
et donc de transmettre sont digest la reference en clair
( et c'est la le PB de la petite Fadette )!
 En voulant adjoindre authentification, des le debut de la connection;
on augmente paradoxalment la tracabilitee et la faciltee de ecoute !!!

 Exemple Attaque: je suis enqueteur ??,

 j'enregistre toutes les communication SSL TLS d'une entitee
pendant une duree tres longues,
en utilisant comme filtre le digest * de la clef de crypte utilisee

 J'obtiends enfin d'un juge (ou par une autre methode), pour une motif qq :
drogue, pedophilie, suspicion qq, terrorisme financie ....
une ecoute limitee a 15 jours !
 je fait donc saisir la clef de crypte, dont je connais deja le digest,
dans le CA duquel ,l'entite a eu la mauvais idee de s'enregistrer
( ou a defaut je casse la clef ) !

 j'accede non seulement a l'ecoute de 15 jours
(la partie legale accorde par le juge),
mais aussi du coup, a peut de frais, je peut decrypter toutes les enregistrements,
que j'ai fait non officiellement pendant plusieurs annees (BINGO),
sans en fait aucune autorisation ...
et receuillir toutes FADETTES marginales (non demande au juge )!

 En France apparemment il y a un vide juridique
sur cette methode acquisition :
vus que la signature numerique n'est pas theoriquement repudiable,
et que la limite entre le prive et le public sur reseau GSM ...
ou autres, est floue !!

 * Pourqoui dans le protocole securise HTTPS je doit faire referance
a une clef de crypte style RSA ou autre, si je veux authentifier un cote ?
car le digest de la clef disymetrique de crypte evite a l'autre cote de tester
des centaines de clef differentes !
 Car pour eviter l'attaque dans le millieu d'un ackeur on transmet la clef symetrique
en la cryptant par la clef disymetrique,
ce qui assure la confidentialite et authentificatio simultanement !
 Mais cette methode apparament astucieuse est malheureusement aussi,
une preuve en clair a cause de la non repudiablitee d'une des extremitees
pour un ackeur a ecoute !

  le PFS a pour but d'interdire le decryptage des blocs transmis,
par une tierce personne en surveillance ,
meme si elle connais la clef d'authentification d'une des 2 extremitees,
et de rendre l'utilisation des infos marginales FADETTES
plus compliquees a utiliser plus tard !!!

 En cryptant par exemple chaque bloc en Diffi helmant ephmere ECDHE,
independament de clef authentification dans un eventuel CA !

 En obligent ecouteur a faire des calculs et des frais beaucoups plus importants !

 Le fait de saisir la clef n'apporte alors rien de plus,
car il est necessaire d'enregistrer toutes les trames echangees
(pas seulement celle marque par le digest !)
de casser chaque bloc DHE ephemere un par un ,
et de ce rendree compte a ce moment la :
 * qui c'est un pot de miel
 * ou que la clef de certification n'a pas ete utilisee
et donc que la transmissios n'est plus opposable a emetteur ...

 Car on assure d'abord la confidentialite par DHE ....
et ensuite authentification a l'abrit des ecoutes

 Mais dans la plus part des cas, HTTPS DHE, en analysant les trames SSL/TLS
on peut voir passer en clair, une extension type query_names,
qui renseigne le destinataire (et ecouteur amateur de fadette )
sur URL demandee !!!!

 A TOR ou a raison ne laisser pas les ecouteurs se meller de vos OIGNONS !!!


FADETTES : info que l'on a marginalement, par "inadvertance"
 que normalement en democratie on ne peut pas utiliser directement a charge,
et que l'on garde au frais pour plus tard !

Divers : j'injecte dans un message code, un message que je connais
 pour mieux decrypter le reste

Divers : Je me fait passer pour vous et
 Je vous inscrit dans le cercle des amis de Ben L


Surfeur/Mailleur :
 truc qui passe sont temps a transmettre vos informations privees
  + d'autres : porte derobee
 Options : casse a cocher : parametrage : mets en route ou arret certaines portes
 Documentation : truc qui devrai expliquer toutes les options

CA officiel : truc qui devrai inspirer la CONFIANCE par son serieux
 Institu qui publis une liste de CERTIFICAT de clef d'utilisateur qu'il garantis : PKI
 le CA etant lui meme certifie par un autre CA ,....,jusqu'au CA racine
 Racine : voir Mythe de l'ours dans une bannaneraie de miel,

CA autosigne : Faite le vous meme est n'y mettez que le minimum info
 Chaine ou Boucle de signature de confiance: a un ou plusieurs ...
 Ne pas confondre un CA autosigne avec une clef un certificat autosigne !

CA secret : liste secrete de certificats :
 Sans PKI, sans OSPF, ... voir PGP

! CONFIANCE : BIG BROTHER, republique bananiere,
 Porte derobee, atteinte a la vie privee,
 Non repudiation du document pour le ackeur aussi, pki, ...

MEFIANCE : systeme ou logiciel qui entretiend un doute, salutaire ou pas :
  retour aux sources open !

CHAINE DE CONFIANCE : maillon faible

DATA MINING : exploitation de masse des infos, meme marginales,
 pour etablir des correlations, ...
 pouvant aboutir, a tous et n'importe quoi :
 a decryter , a la segregation de la clientelle ...

PROCES POUR RACISME D'UN ORDINATEUR :
 Precedent ??? de la cours Americaine qui aurai condanne un ordinateur/logiciel
(donc la societe qui l'emplois) pour comportement raciste envers les clients !
 Comportement appris apparament, par un reseaux neuronal,
aupres des employes :
 La societe refusant preferentiellement certains services(l'attribution de credit ?),
a une partie de la clientelle, l'ordinateur aurai amplifie ce comportement !
 (c'est pas ma faute dit employe : l'ordinateur ne veut pas !)
 (ordinateur : j'ai appris chez eux a faire comme ca !)

INTOX : Desinfo ..
 Voir paragraphe precedent !
et alogo des gafa ?

HUMAIN : Dispositif, normalement dote d'un minimum de bon sens,
 de ce fait, superieur aux ordinateurs ? !

CNIL : Epsilon Ressource,
  a peine 200 colaborateurs

RGPD : Demission de Europe,
 demerdez vous tous seul,
si vous vous faites plumer ce sera exclusivement de votre faute !

PERE UBU : Pologne remerciment

 Pour des raisons assez evidentes, 'espere, je traiterai obthugraphe plus tard !!!

Retour a la page d'appel du web miroir courant

NC imcp.ba@trousperdu.org imcp.ba@free.fr IMCP Blandy Alain

Statistiques