Previous Up Next

Chapter 4  La sécurité sur Internet

4.1  Les faiblesses de l'Internet

Le protocole de transport des données sur Internet, TCP/IP, ne prévoit pas de protéger les données transportées. Tous les paquets sont transmis en clair et donc toute personne qui contrôle un des ordinateurs par lequel passera les données peut les lire. Par exemple au niveau d'un réseau local, tous les paquets sortant vers Internet doivent passer par une seule machine, la passerelle. Le contrôle de cette machine permet la lecture de tout ce qui va et vient. Toujours sur un réseau local une personne qui est physiquement sur le même fil Ethernet qu'une autre1 peut y détecter le courant qui y passe et donc lire les données.

4.1.1  Les connexions à distance

Lorsqu'un utilisateur désire se connecter à une machine distante il établit une connexion avec la machine en question qui lui demande de s'identifier. Si cette connexion est initiée avec un programme qui ne cache pas les données, comme le programme telnet qui reste très utilisé, le flux de données est lisible avec un détecteur de paquets IP comme le programme tcpdump. Voici ce que l'on peut voir passer :
aldebaran.devinci.fr -> hermes.devinci.fr TELNET Telnet Data ...
                
   0  00d0 590b 28c8 0800 2085 b5c6 0800 4500   ..Y.(... .....E.
  10  002f c4af 4000 ff06 eb4b c16b a4b9 c16b   ./..@....K.k...k
  20  a43c 0017 0576 8200 291f e4fd a7d4 5018   .<...v..).....P.
  30  2238 222e 0000 6c6f 6769 6e3a 20          "8"...login:
   
hermes.devinci.fr -> aldebaran.devinci.fr TELNET Telnet Data ...

   0  0800 2085 b5c6 00d0 590b 28c8 0800 4500   .. .....Y.(...E.
  10  0029 0000 4000 4006 6f02 c16b a43c c16b   .)..@.@.o..k.<.k
  20  a4b9 0576 0017 e4fd a7d4 8200 2926 5018   ...v........)&P.
  30  7f9a b2dd 0000 74                         ......t
Avec le t final du second paquet qui correspond à la première lettre du login de l'utilisateur.

Ce flux peut être interprété par le programme dsniff pour ne récupérer que les mots de passe :
[root@diane dsniff-2.2]# ./dsniff -i eth0
dsniff: listening on eth0
-----------------
09/25/00 18:34:25 tcp hermes.devinci.fr.1415 -> aldebaran.devinci.fr.23 (telnet)
test
pass_compte

-----------------
09/25/00 18:34:39 tcp hermes.devinci.fr.1416 -> aldebaran.devinci.fr.110 (pop)
user test
pass pass_pop
Le premier couple login/mot de passe intercepté provient d'une connexion distante en clair, le second d'une connexion à un serveur de mail POP pour y récupérer son courrier.

Il est donc important de cacher le sens de ses données avant qu'elles ne quittent votre machine en les chiffrant. Il existe pour cela des logiciels de cryptographie comme SSH pour les connexions à distance.

4.1.2  Le mail

Sachant que tout n'est que connexion de machine en machine, le courrier électronique comme les autres services est ouvert à tous si l'on utilise pas de moyens de protection. Ce n'est malheureusement pas le cas par défaut. Ainsi le mail Pour se protéger on peut appliquer diverses solutions qui fonctionneront à différents niveaux :

4.1.3  Le Web

Le Web est un peu mieux protégé avec l'algorithme de chiffrage SSL qui est présent sur les navigateurs les plus courants. Par contre, comme pour tout algorithme de chiffrage, son efficacité est directement liée à la taille de la clé de codage utilisée.

Ainsi. l'étude de mai 2001 faite par Projetweb, montre qu'une majorité de serveurs Web français continuait à utiliser des clés de 40 bits3, clés bien trop faibles pour résister aux attaques brutales4. Cela est d'autant plus regrettable que la loi autorise depuis 1999 l'utilisation de clé de 128 bits et que tous les navigateurs modernes comprennent SSL 128 bits. Voici les statistiques de cette étude sur la sécurité des serveurs Web, effectuée sur un échantillon de 319 sites de sociétés françaises :

  Java 0 40 bits 56 bits 128 bits total<128
Banque - Bourse 1,9% 1,9% 65,4% 4,8% 26,0% 74,0%
Biens de consommation 0,0% 5,6% 36,1% 2,8% 55,6% 44,4%
Culture - Loisirs 0,0% 5,5% 34,1% 3,3% 57,1% 42,9%
Maison - Électro-ménager Hifi 1,9% 1,9% 28,8% 7,7% 59,6% 40,4%
Total 0,9% 3,8% 43,9% 4,4% 47,0% 53,0%

Table 4.1: Niveau de sécurité des serveurs français (étude de ProjetWeb, mai 2001)


Aujourd'hui, en 2005, on peut considérer que la situation a changé, en particulier chez les plus mauvais, les banques, qui sont passés à SSL 128 bits.

On peut considérer que les connexions sécurisées sur le Web sont sûres aujourd'hui dès lors qu'on est sûr d'être à bon port ce qui est une autre histoire5.

4.2  L'espionnage industriel

Outre les faiblesses intrinsèques d'Internet, le risque d'espionnage industriel est encore augmenté par Internet et ce pour 3 raisons :

Échelon

Echelon est probablement le plus grand système d'écoute. Il permet l'interception des communications internationnales téléphoniques, par fax ou via Internet. Il est controlé par les Etats-Unis, l'Angleterre, le Canada, l'Australie et la Nouvelle Zélande.

Son but initial est lié à la sécurité des états concernés mais il sert aussi leur intérêts économiques comme l'ont montré ces 2 affaires rendues publiques :


Figure 4.1: Echelon


4.3  Introduction à la cryptographie

4.3.1  À quoi sert la cryptographie ? Qui en a besoin ?

Elle permet de garantir la confidentialité d'une information.

Ce besoin est partagé par les militaires, les industriels, les organisations et les citoyens car elle permet : 2ex

La cryptographie propose aussi 2ex Elle est enfin le seul moyen de protéger un transfert d'informations sur Internet.

4.3.2  Différentes méthodes de cryptographie

DES
Data Encryption Standard: Algorithme de chiffrement à clé symétrique développé par IBM. Adopté comme standard officiel par les États-Unis en 1977 et largement utilisé par la finance et l'industrie, DES utilise normalement une clé de 56 bits, mais 16 bits sont bloqués pour la version dédiée à l'exportation. DES est dépassé aujourd'hui.

Triple DES
Il s'agit de l'algorithme DES appliqué avec trois clés différentes. Appliquer un chiffrement avec deux clés à la suite n'améliore pas la sécurité, à cause d'une attaque appelée "rencontre au milieu" ("meet-in-the-middle" attack). Avec 3 clés, la sécurité est bonne mais le coût de chiffrement est trop important.

AES, le successeur de DES
Le 2 octobre 2000 le gouvernement américain à annoncé que l'Advanced Encryption Standard est l'algorithme belge Rijndael. Il est simple, élégant, rapide sur les processeurs actuels. Il pourra être intégré dans les cartes à puce.

IDEA
International Data Encryption Algorithm. Système à clé symétrique. IDEA utilise une clé de 128 bits. Développé en Suisse. Les droits d'exploitation sont détenus par Ascom Systec AG.

Le condensat MD5
Message Digest v.5. Fonction permettant de calculer un résumé à partir d'un message. Si un seul caractère du message change, le résumé est complètement différent. Une signature électronique consiste en ce résumé, chiffré avec la clé privée du signataire.
Les Rivest's Codes de RSA Data Security
La famille des RCn est assez bien conçue avec des chiffrements symétriques à la volée (``stream cipher'' -- RC4) et des chiffrements par bloc (``block cipher'' -- RC2 / RC5 / RC6).

RC4 est le seul de la famille à être propriétaire (``trade secret'') mais son code a été largement diffusé. RC6 était un des 5 candidats retenus à AES, procédure mise en place par le NIST (Bureau des standards US) pour remplacer DES comme système de chiffrement officiel.

RSA (Rivest, Shamir et Adleman)
L'algorithme le plus célèbre à clé publique/clé privée (ou asymétriques).

SSL, STT, SET, SSH
Il s'agit de protocoles permettant de négocier interactivement des algorithmes de chiffrement. Ces algorithmes sont à clé symétrique, à usage unique.

L'empreinte d'une clé

Une clé peut, comme un message, être résumée à l'aide d'un condensat comme MD-5, SHA-1 ou RIPEMD-160 pour ne citer que les plus connus. Ce résumé est suffisamment court pour tenir sur une carte de visite, ou pour être dicté par téléphone. Dans le cas de MD5, il fait 128 bits, soit 16 octets, qu'on exprime en hexadécimal. Par exemple:
43 65 F3 AD 32 34 66 12 2A 54 CD BB AA 87 43 FD

La sécurité de ces condensat est actuellement mise à bas puisque SHA-1 a été cassé en 2004 et l'on a montré en 2005 qu'il est possible de créer des documents ayants le même condensat MD5. S'il devient possible de choisir son condensat alors la sécurité de ces 2 algorithmes sera nulle et par conséquent le principe des signatures électroniques qui utilisent majoritairement ces 2 clés. La protection des mots de passe sous Unix sera aussi à revoir.

4.3.3  Les clés symétriques ou secrètes

Une clé symétrique permet d'encoder ainsi que de décoder un message. Entre 2 ou 3 personnes il suffit de se transmettre la clé de façon sûre pour pouvoir communiquer de façon protégée par la suite.

À plus grande échelle, un tiers de confiance (le TTP, Trusted Third Party) qui a les clés Ki de tous les utilisateurs Ai devient utile. Pour chaque communication, le TTP donne aux 2 utilisateurs une clé de session k pour chiffrer cette communication. Cette clé de session est transmise chiffrée avec la clé secrète de l'utilisateur.
Avantages :
  • il est facile de modifier le réseau,
  • chaque entité ne stocke qu'une longue clé,
  • le chiffrement est rapide
Inconvénients :
  • toute communication commence par appeler le TTP,
  • le TTP peut lire tous les messages,
  • si le TTP est cassé tout est cassé.
 

4.3.4  Les clés asymétriques ou publiques

La principe d'utilisation des clés publiques et privées (ei/di) est le suivant : la machine voulant envoyer un message récupère la clé publique du destinataire, e2, et s'en sert pour chiffrer son message. Le message ainsi chiffré ne peut être déchiffré qu'avec la clé privée correspondante à la publique, d2 dans notre cas.
Avantages :
  • pas de TTP,
  • le fichier des clés publiques peut être stocké sur chaque machine,
2ex Inconvénients :
  • un pirate peut mettre une fausse clé publique (cf ci-dessous),
  • le chiffrement est plus lent qu'avec une clé secrète.
0.5cm  
 

L'attaque de l'homme au milieu
L'attaque la plus simple contre ce système est de substituer la clé publique d'un utilisateur par celle du pirate et d'intercepter tous les messages. Une fois le message intercepté, le pirate, l'homme au milieu, le décode, le note, puis le recode avec la véritable clé publique du destinataire pour lui envoyer afin qu'il ne détecte pas l'interception.


Figure 4.2: Attaque de l'homme au milieu


La parade, pour ne pas voir son message intercepté, réside dans la fiabilité de la clé publique de son destinataire. Une clé publique est sûre, soit parce que le destinataire vous a remis en main propre l'empreinte de sa clé, soit parce qu'une personne en qui vous avez entièrement confiance vous garantit cette clé publique. Cette personne de confiance peut être un tiers de confiance institutionnel ou une personne dont vous êtes sûre car elle est dans votre liste des personnes de confiance. Dans ce dernier cas on parle de votre réseau de confiance ou Web of trust.

4.3.5  Les mathématiques de RSA

L'algorithme RSA est un algorithme de chiffrement à clé publique/clé privée. Il est asymétrique et ne nécessite pas la transmission de la clé permettant le décodage.

L'idée d'un algorithme asymétrique à été proposée par Whitfield Diffie et Martin Hellman dans un article en 1975 et mise en pratique en 1977 par Ronald Rivest, Adi Shamir et Leonard Adleman. James Ellis et Clifford Cocks des services de communication de l'armée anglaise, avaient trouvé cet algorithme quelques années plus tôt mais ne purent le dévoiler pour cause de secret militaire (cf [sing99] et http://www.cesg.gov.uk/about/nsecret/).

Son principe est relativement simple mais totalement révolutionnaire. On n'imaginait pas jusqu'à là qu'il puisse être possible de décoder un message sans avoir la clé ayant permis de l'encoder. Pour cela chaque utilisateur a avec les propriétés suivantes :
  1. n, le module, est le produit de 2 nombres premiers grands p et q,
  2. e<n est premier avec (p-1)(q-1),
  3. d est tel que ed-1 soit divisible par (p-1)(q-1).
Ces choix impliquent que    ed  mod  J(n) = 1    où J(n) est la fonction d'Euler sachant que J(n)=(p-1)(q-1) lorsque p et q sont premiers.

Chiffrer un message pour un destinataire précis
En chiffrant un message M à l'aide de sa clé publique (n||e) on a :
M' = Me   mod   n     (4.1)
ce qu'il peut déchiffrer avec sa clé privée (n||d) car
M'd   mod   n = (Me   mod   n)d   mod   n = Med   mod   n = Med   mod   J(n) = M

Prouver son identité
En envoyant un message chiffré avec sa clé privée (n||d) on a
M' = Md   mod   n
que le destinataire peut lire avec la clé publique (n||e) de l'émetteur en calculant M'e   mod   n.

Une application française

Le 4 mars 2000, le texte suivant tombait dans le forum fr.misc.cryptologie :
Petite feuille Maple

> pub:=2^320+convert(`90b8aaa8de358e7782e81c7723653be644f7d\
cc6f816daf46e532b91e84f`,decimal,hex);

pub := 213598703592091008239502270499962879705109534182641\
7406442524165008583957746445088405009430865999

> facteur1:=convert(`c31f7084b75c502caa4d19eb137482aa4cd57aab`, \
                   decimal, hex);

facteur1 := 1113954325148827987925490175477024844070922844843 

> facteur2:=convert(`14fdeda70ce801d9a43289fb8b2e3b447fa4e08ed`, \
                    decimal, hex);

facteur2 := 1917481702524504439375786268230862180696934189293 

> produit:=facteur1*facteur2;

produit := 2135987035920910082395022704999628797051095341826\
417406442524165008583957746445088405009430865999
> exposant_public:=3;
exposant_public := 3

> modulo_div_eucl:=(facteur1-1)*(facteur2-1);

modulo_div_eucl := 21359870359209100823950227049996287970510953418\    
23385970414850832581282681302737201380241573831864

> essai_rate_exposant_prive:=expand((1+modulo_div_eucl)/3);

essai_rate_exposant_prive := 2135987035920910082395022704999628797\ 
051095341823385970414850832581282681302737201380241573831865/3 

> exposant_prive:=expand((1+2*modulo_div_eucl)/3);

exposant_prive := 142399135728060672159668180333308586470073022788\    
2257313609900555054188454201824800920161049221243

> testnb:=1234;

testnb := 1234

> testsignnb:=testnb &^ exposant_prive mod produit;

testsignnb := 2235938147775183775641042325450404557899532144626481\    
7152366942909748069192341215834242192574336

> testverifsignnb:=testsignnb &^exposant_public mod produit;

testverifsignnb := 1234
On y trouve les nombres premiers p et q, ici facteur 1 et facteur 2 qui permettent de connaître le module n, ici produit. On voit que l'exposant publique, e, est 3 et après un premier test raté on trouve l'exposant privé d. Pour être sûr que tous ces chiffres sont bons, on chiffre 1234 et on le déchiffre. Ça marche.

Ce jour là le grand public voyait en clair la clé RSA à 320 bits qui permet de vérifier l'authenticité d'une carte bleue (voir l'article de Louis Guillou) . Cela indique seulement qu'une carte est authentique et non que l'on connaît le code secret de l'utilisateur, mais cela permet de faire des fausses cartes6 qui tromperont un lecteur non relié aux banques comme celui qu'on présente souvent dans les restaurants (cf le reportage de LCI).

C'est cette faiblesse connue des milieux de la cryptographie qu'a utilisé Serge Humpich7. La trouvaille n'est pas extraordinaire car casser une clé de 320 bits n'est plus un exploit depuis plus de 10 ans. L'exploit réside surtout dans la légèreté du groupement des cartes bleues qui n'a pas changé la longueur de la clé depuis la création des cartes en 1983.

4.4  L'authorité de certification

L'authorité de certification, AC, est le répertoire public dans le cas de clés asymétriques avec la sécurité en plus.

Cette sécurité est basé sur le chiffrement des clés publiques gérée par l'AC par la clé privée de l'AC. Cela ne règle pas le problème de l'attaque de l'homme au milieu, mais le déplace. Le point sensible devient l'authenticité de la clé publique de l'AC.

Il faut donc que l'AC transmettre de façon sûre sa clé publique pour que ce système d'authorité de certification soit efficace.

En pratique l'AC doit être une entité en laquelle ont confiances l'ensemble des personnes y déposant leur clés publiques. Cela peut être le Département Informatique dans une entreprise, l'Etat ou niveau d'un pays...

4.5  Utilisation de la cryptographie

4.5.1  La combinaison de méthodes : PGP

PGP est l'abréviation de "Pretty Good Privacy". C'est un logiciel libre développé par Phil Zimmerman. Il utilise 2ex Les messages sont donc chiffrés à l'aide d'un système à clé unique (symétrique), mais cette clé, insérée dans le message, est chiffrée à l'aide d'un système à clé publique (RSA), plus commode à gérer, mais plus coûteux en CPU. Il existe des versions destinées à être intégrées dans des clients E-Mail et dans la téléphonie (PGPfone, PGPTalk).

Depuis la version 2.6, il est possible de n'utiliser dans PGP que des algorithmes de chiffrement libres ce qui a donné OpenPGP, un standard de l'IETF.


Figure 4.3: Encodage d'un message à l'aide de PGP




Figure 4.4: Décodage d'un message à l'aide de PGP


En pratique
on utilisera plutôt la version GNU de PGP : GPG8. La façon la plus simple est d'utiliser son interface graphique GPA sur Unix, ou à l'aide de sa version Windows.


Figure 4.5: GPA, l'interface graphique de GPG


Lors du premier lancement, GPG vous proposera de créer votre clé ce qui ne doit être fait que si vous n'en avez pas. Si vous avez déjà une clé, sur une autre machine par exemple, recopiez là dans votre répertoire principal sous .gnupg. Vous devez avoir les fichiers suivants :
(hermes)../home/ricou>ls .gnupg/
options  pubring.gpg  random_seed  secring.gpg  trustdb.gpg
À l'usage on effectue les opérations suivantes : L'intérêt des 2 premières opérations est immédiat et relativement simple une fois que l'on a configuré son lecteur de mail, voire installé le plugin nécessaire (cf par exemple Enigmail pour Netscape).


Figure 4.6: Netscape mail et PGP


La validation de clé est tout aussi importante pour utiliser sereinement la cryptographie. On a vu le risque de l'interception de clé par la méthode dite de la personne au milieu, cf 4.3.4, aussi il est important de valider physiquement une clé publique, i.e. en se transmettant l'empreinte de sa clé main dans la main. On peut ainsi se créer son réseau de confiance. Il est ensuite possible de récupérer d'autres clés publique sur des serveurs de clé et accorder sa confiance en ces clés dès lors qu'une personne de notre réseau de confiance les a signées.

Les serveurs de clé sont interconnectés, soumettre sa clé à l'un d'entre eux revient à la diffuser à l'ensemble des serveurs. Voici quelques serveurs consultable en ligne ou à l'aide de son logiciel PGP :

4.6  La sûreté de la cryptographie

On considère qu'un algorithme sérieux de cryptographie doit être basé sur un algorithme publié. Une protection basée sur le secret de l'algorithme n'est pas fiable car 2ex Cependant même les algorithmes sérieux peuvent être cassés

4.6.1  Histoire d'une lutte sans fin

Avec l'arrivée d'Internet, les limites de résistance des messages chiffrés ont été nettement repoussées. La méthode brutale, qui consiste à tester toutes les clés possibles pour déchiffrer un message, est devenue une méthode attractive avec la possibilité de faire travailler ensemble un très grand nombre d'ordinateurs, chacun testant une partie des clés possibles.

Le DES et sa clé à 56 bits (256 » 1017) a été l'une des premières victimes, cassé à plusieurs reprises par la méthode brutale : Le DES n'est plus considéré comme sûr, il a été remplacé par Rijndael en 2000.

Pour venir à bout de RSA, la méthode utilisée est celle du ``crible algébrique'' qui permet de ramener le problème à un calcul matriciel dont la résolution nécessite un super ordinateur. Une présentation sur la factorisation et donc sur la façon de casser RSA est présentée sur ce site : http://pauillac.inria.fr/algo/banderier/Facto/ Le défi que s'est lancé le distributed.net :


Figure 4.7: Vitesse de test des clés RC5-64 depuis 1997


Casser le Web
L'algorithme de cryptographie le plus utilisé sur le Web est SSL. Il se conjugue principalement en 3 variantes de longueur de clés différentes : SSL 40 bits, SSL 56 bits et SSL 128 bits. Le mode SSL 40 bits, qui reste encore très utilisé en France, a été cassé dès l'été 1995 en 32 heures à l'INRIA et en 3h30 durant l'été 1997 à Berkeley. Aujourd'hui quelques minutes voire quelques secondes, suffisent aussi il est indispensable d'utiliser la méthode SSL 128 bits qui est à peu près 300 millions de milliards de milliards fois plus sûre. Cela devrait lui permettre de tenir quelques années.

4.7  Plus

Pour ce qui touche la cryptographie, On pourra aussi consulter les ouvrages suivants : The Codebreakers de David Kahn, cf [kahn96], et l'Histoire des codes secrets de Simon Sing, cf [sing99].

Certains manuels (livres) sont disponibles en ligne dont The Handbook of Applied Cryptography, cf [mov96], les Frequently Asked Questions About Today's Cryptography des RSA Labs, cf [rsa00].

Enfin, les sites suivants contiennent des informations intéressantes :
1
Toutes les personnes branchées sur un même hub sont sur le même fil Ethernet.
2
Pretty Good Privacy et GNU Privacy Guard
3
cela veut dire qu'il y a 240 clés différentes soit mille milliards.
4
type d'attaques qui essaye toutes les clés possibles.
5
celle des autorités de certification
6
faire une fausse carte bleue est assimilé à faire de la fausse monnaie. Le tarif est 30 ans de prison.
7
cf http://www.parodie.com/monetique/
8
Gnu Privacy Guard est compatible avec OpenPGP et PGP version 5.x et 6.x.

Previous Up Next