Académique Documents
Professionnel Documents
Culture Documents
Module RX : SSL
'
Module RX : SSL
Propos
Limiter le risque li e` a la communication Condentialit e : donn ees lisibles par quiconque ? Utiliser des algorithmes de chirement Int egrit e : donn ees modi ees pendant le transport ? Utiliser des algorithmes de hachage (condens e) Authentication : dialogue avec lentit e attendue ? Obtenir un document ociel identiant linterlocuteur Pr eserver les protocoles applicatifs Ne pas n ecessiter une r e ecriture compl` ete des applications Une couche suppl ementaire dans la pile de protocoles (usage tr` es similaire ` a celui de la couche de transport) Principes de fonctionnement discut es dans le module ASR Seule la mise en uvre est vue ici
&
'
Module RX : SSL
'
'
&
'
'
'
'
'
*/ */ */ */ */ } */
'
'
fd=acceptTcp(sock,&addr,&port); /* attendre une connexion TCP (netUtils.h) if(fd==-1) { perror("acceptTcp"); return -1; } ssl=SSL_new(ctx); /* creer une connexion SSL SSL_set_mode(ssl,SSL_MODE_AUTO_RETRY); /* renegotiation automatique SSL_set_fd(ssl,fd); /* la connexion SSL utilisera la connexion TCP r=SSL_accept(ssl); /* demarrer le handshake avec le client if(r!=1) { fprintf(stderr,"SSL_accept: %s\n", ERR_error_string(ERR_get_error(),NULL)); return -1; /* ... utiliser la connexion SSL pour dialoguer avec le client */ SL_free(ssl); /* detruire la connexion en fin de dialogue close(fd); close(sock); SSL_CTX_free(ctx);
&
*/ */ */ */ */ } */
'
Fonction d ecriture similaire ` a lappel syst` eme write() int SSL_write(SSL * ssl,const void * buf,int count); Les erreurs peuvent etre dues ` a TCP ou SSL
SSL * ssl= ... char * data= ... unsigned int dataSize= ... int r=SSL_write(ssl,data,dataSize); if(r>0) { /* r octets de data envoyes */ } else { if(SSL_get_error(ssl,r)==SSL_ERROR_SYSCALL) { /* TCP, consulter errno */ } else { fprintf(stderr,"SSL_write: %s\n",ERR_error_string(ERR_get_error(),NULL)); } }
&
'
Fonction de lecture similaire ` a lappel syst` eme read() int SSL_read(SSL * ssl,void * buf,int count); Les erreurs peuvent etre dues ` a TCP ou SSL La n de chier peut etre due ` a TCP ou SSL
SSL * ssl= ... char buffer[BUFFER_SIZE]; int r=SSL_read(ssl,buffer,BUFFER_SIZE); if(r>0) { /* r octets recus dans buffer */ } else { if(!r||(SSL_get_error(ssl,r)==SSL_ERROR_ZERO_RETURN)) { /* EOF TCP ou SSL */ } else if(SSL_get_error(ssl,r)==SSL_ERROR_SYSCALL) { /* TCP, consulter errno */ } else { fprintf(stderr,"SSL_read: %s\n",ERR_error_string(ERR_get_error(),NULL)); } }
&
'
'
'
'
'
'
' HTTPS
: HTTP s ecuris e
&
' HTTPS
: HTTP s ecuris e
'
Module RX : SSL
Bilan
La connexion en elle-m eme est relativement s ecuris ee L ecoute du trac est inutile On peut etre certain de sadresser au bon serveur En nacceptant que les certicats en bonne et due forme En ayant une liste dautorit es de certication ` a jour En ayant une liste de certicats auto-sign es bien tenue !!! Repose sur la vigilance de lapplication et de lutilisateur !!! Prise de risque a ` la premi` ere apparition dun certicat auto-sign e Une seule fois peut sure pour divulger son mot de passe ssh ! Lutilisateur doit prendre en compte les avertissements de lapplication Sujet et API tr` es vastes Le serveur peut egalement demander un certicat au client Enorm ement de choses non trait ees ici . . .
&