Nos Partenaires

Stages de survie CEETS

Auteur Sujet: Didacticiels sécurité informatique  (Lu 1658 fois)

27 septembre 2014 à 10:55:22
Lu 1658 fois

justin80


déjà, première chose: une bonne partie des sujets ont été traité dans ce poste:

http://www.davidmanise.com/forum/index.php/topic,29394.0.html

et dans le Guide proposé par Phil67:

[...]
http://guide.boum.org/news/troisieme_edition/
Tome 1 : http://guide.boum.org/tomes/1_hors_connexions/
Tome 2 : http://guide.boum.org/tomes/2_en_ligne/

Le but est ici de faire des didacticiels vraiment basique pour aider à comprendre les principes généraux.

Le but aussi sera d'aller droit à l'information. Inutile d'aller dans le detail.
Je n'ai pas la science infuse et l'information retransmise ne provient la plupart du temps que de l'interpretation
 des données que j'en ai fait. En clair, si je dis des c0nner1es ou que c'est incomplet, n'hésitez surtout pas le dire/corriger.

Comme c'est assez long, je le ferais en plusieurs réponses sur ce fil et en cas de besoin, je me reserve le droit (respectueusement),
de corriger tout ce que j'aurais pu dire comme erreur ou completer (il y aura donc un edit pour préciser) et si d'autres veulent en faire aussi... avec joie.

J'aimerais traiter ici des sujets suivants:
   * qu'est ce que l'https/comment lire un certificat
   * qu'est ce que le phishing (online/offline)
   * comment tenter de sauvegarder son identité (je ne m'y connais pas assez, juste les bases)
   * adresses IP/cacher son IP etc...
   * sécurité des mots de passe (cf les deux liens plus haut http://guide.boum.org/news/troisieme_edition/ et http://www.davidmanise.com/forum/index.php/topic,29394.0.html)
   * etc...

pour les Admins svp: si trop hors sujet, à supprimer. si moyennement HS, rajouter dans http://www.davidmanise.com/forum/index.php/topic,29394.0.html . Si ca va pas, pas de doute que vous n'hésiterez pas ;)

Qu'est ce que l'https et le SSL en général
Qu'est ce que l'http
Le HTTP est un protocole simple pour faire transiter des données autour de mots clefs simple GET, POST, etc....
La connexion se fait en général sur le port 80.
Un client web se connecte à un serveur, lance une requete du type:
$ telnet www.google.com 80
Trying 173.194.45.52...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.0
host:  www.google.com

HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.fr/?gfe_rd=cr&ei=3kcmVIaQE8nI8ge0qIDwCw
Content-Length: 258
Date: Sat, 27 Sep 2014 05:15:10 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic,p=0.01

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.fr/?gfe_rd=cr&amp;ei=3kcmVIaQE8nI8ge0qIDwCw">here</A>.
</BODY></HTML>
Connection closed by foreign host.
en gros, le client se connecte à www.google.com sur le port 80 en telnet, on écrit le texte suivant:
GET / HTTP/1.0
host:  www.google.com
<< pas oublier les 2 retour chariot
Le serveur de google répond:
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.fr/?gfe_rd=cr&ei=3kcmVIaQE8nI8ge0qIDwCw
[...]
et google dit gentiment d'aller sur la version google.fr (car mon IP a été vu comme étant en France)

Les choses à retenir:
 - c'est très simple comme protocole
     * première ligne de contexte ou de requête
     * lignes suivantes d'entête
     * un retour à la ligne vide
     * du contenu si necessaire
 - ca passe en clair, n'importe qui qui sniff le réseau peut voir vos requêtes
 
Qu'est ce que l'https
Le HTTPS est simplement le protocole HTTP sur une couche de SSL.
En général, la connexion se fait sur le port 443.
Qu'est ce que le SSL
C'est un mode de cryptage asymétrique, qui gère principalement 3 aspects:
 - l'authentification : savoir que le serveur ou le client est digne de confiance
 - le cryptage
 - la validité des clefs
 
L'authentification
L'authentification est assez complexe et l'on va y revenir après.
L'authentification permet :
 - que le client dise au serveur qui il est
 - que le serveur dise au client qui il est
 
Tout le monde peut générer un certificat, il existe donc:
 - les certificats auto signés (généré par vous, moi...)
 - les certificats généré par une autorité de certification (verisign, globalsign) on y reviendra
 
Pour les certificats auto signés, sachez simplement que :
 - OpenSSL est capable d'en générer facilement
 - Que des logiciels comme http://www.ejbca.org/ permettent de monter une autorité de certification privée ou public (sous certaines conditions, très cher)
C'est un peu une usine à gaz, mais ca fonctionne bien.
 
 Cf: plus bas, la description des certificats
 
Le cryptage
avec 2 clefs (1 privée, 1 public) par hôte.
dans certains cas, autre que le HTTP, il peut y avoir plusieurs couches de cryptage qui se superposent.

Imaginons A se connecte à B.
A à 1 clef public [Apu] et une clef privé [Apr]
B à 1 clef public [Bpu] et une clef privé [Bpr]

A initie la connexion.
B répond
A envoi à B sa clef public [Apu] avec l'authentification dans le certificat client
B envoi à A sa clef public [Ppu] avec l'authentification dans le certificat serveur

=> des données cryptées peuvent commencer s'échanger.

A crypte les données pour B en utilisant [Apr] + [Bpu] que B va décrypter en utilisant [Apu] + [Bpr]
B crypte les données pour A en utilisant [Bpr] + [Apu] que A va décrypter en utilisant [Bpu] + [Apr]

La taille des clefs, exprimée en bits (512/1024/2048 bits) déterminé la complexité du cryptage et
aussi la charge pour les deux parties d'encrypter et de décrypter les données

QQQ Question, je ne trouve pas la réponse QQQ
je ne connais pas le process de génération des clefs coté navigateur.
Théoriquement, chaque navigateur de chaque poste à du générer à un moment ses clefs ou sont elle générée à chaque connexion?
j'ai bien trouvé ca :
https://www.ssllabs.com/ssltest/viewMyClient.html
https://www.evsslcertificate.com/ssl/description-ssl.html
mais pas réellement sur le process de génération des clefs privée/public client.
QQQ FIN Question QQQ


La validité
Chaque certificat est soumis à une date heure de début et une date heure de fin de validité.
En dehors de cette periode, le certificat n'est plus accepté comme sécurisant (mais peut être validé par manipulation manuelle)
Il y a quelque temps, une banque n'avait pas mis à jour ses certificats en temps et en heure. ca affichait des messages d'erreur
que l'on devait ignorer pour aller plus loin, d'où l'utilité de comprendre la lecture du certificat.

Qu'est ce que le STARTTLS
C'est très simple, c'est au début d'une requete sur un protocole non crypté qu'en général on utilise le mot clef STARTTLS et cela initialise une couche SSL, le reste des données étant alors crypté.
Ca existe pour le POP/IMAP/FTPS et plein d'autres, mais pas le HTTP!!
pourtant: http://www.faqs.org/rfcs/rfc2817.html
mais visiblement, pas généralisé à minima. (mais ct simple d'en parler ici)

Comment lire un certificat en HTTPS
Ces captures sont faites sous firefox, mais tous les navigateurs ont a peu près les mêmes options
Comment visualiser simplement un certificat



Une description sommaire

Une description complete


On y voit les 4 niveaux de certificat:
Builtin Object Token : Equifax Secure CA
 -> GeoTrust Global CA
   -> Google Internet Authority G2
     -> *.google.com

Plus il y a de niveau, est moins la sécurité est importante, car il suffit qu'un élément soit corrompu pour poser problème aux fils.
3 - 4 niveaux, ca reste normal pour le domaine public (5 max à mon sens). Moins, sauf si c'est un gros, genre GeoTrust ou Verisign, sinon, ce n'est pas normal.

Builtin Object Token certifie l'authenticité de GeoTrust Global CA
GeoTrust Global CA certifie l'authenticité de Google Internet Authority G2
Google Internet Authority G2 certifie l'authenticité de *.google.com

Les 3 premiers sont donc des autorités de certifications pour le dernier.
le premier est une autorité de certification
les 2 suivants des certificats intermédiaires
le dernier, le certificat du serveur qui nous concerne.

le *.google.com veut dire que c'est un certificat Wildcard, en gros, ca certifie www.google.com comme mail.google.com.

Ces niveaux de certificat sont la première chose que je regarde, voir si c'est cohérent, s'ils sont bien public, si la plus haute autorité semble cohérente aussi.

Les dates de validité:




la clef public du serveur :


Un autre exemple sur yahoo.com cette fois, l'autorité est verisign.


Un certificat simplement auto signé, aura cette tête là:


Les types de certificats
Il existe différent type de certificat; les principaux sont les suivants:
 - certificat pour un ensemble domaine et un sous domaine, par exemple www.google.com (google.com est le domaine), on peut souvent y ajouter des SAN, c'est à dire des autres ensembles domaines + sous domaines
 - certificat pour une IP données
 - certificat wildcard *.google.com : tous les sous domaines pour un domaine sont autorisé (cf certificat google.com plus haut)
 
Ce type de certificat est moins sécurisant, par le fait qu'on installe le même certificat pour l'ensemble des serveurs, mais tellement plus simple à gérer.

Il faut savoir qu'un certificat peut être révoqué par l'autorité de certification qui l'a émis. En gros, il est publié alors sur une liste qui mentionne les certificats révoqués.
(option à valider dans le navigateur)

Qui certifie la première autorité de certification ?
Bêtement ? NOUS !
En fait, pas tout a fait. Les navigateurs incluent dans leur système des ensemble de certificats d'autorités de certifications.
AMHA (mais pas certain du tout, quelqu'un peu confirmer peut être), une autorité comme verisign paie très cher firefox pour figurer parmis la liste de ceux qu'ils sont naturellement considérés comme des autorités.
Les systèmes d'exploitation comme OSX en ont aussi.

Un certificat d'autorité de certification peut être installé sur le navigateur.
Par exemple, un certificat créé par un projet comme ejbca peut être inclus dans le navigateur et tous les certificats qui en découleront seront automatiquement considéré comme secure.
Ca n'a d'intérêt que si l'on a beaucoup de système et pas envie de s'embêter avec les acceptation de certificats auto-signés
le vent se lève, il faut tenter de vivre

 


Keep in mind

Bienveillance, n.f. : disposition affective d'une volonté qui vise le bien et le bonheur d'autrui. (Wikipedia).

« [...] ce qui devrait toujours nous éveiller quant à l'obligation de s'adresser à l'autre comme l'on voudrait que l'on s'adresse à nous :
avec bienveillance, curiosité et un appétit pour le dialogue et la réflexion que l'interlocuteur peut susciter. »


Soutenez le Forum

Les dons se font sur une base totalement libre. Les infos du forum sont, ont toujours été, et resteront toujours accessibles gratuitement.
Discussion relative au financement du forum ici.


Publicité

// // //