L’envoi d’emails sur internet se fait via le protocole de communication SMTP (Simple Mail Transfer Protocol). Il définit la manière dont les mails sont transférés vers les serveurs de messagerie électronique.
Et comme dans tous protocoles de communications sur internet, la sécurité de communication est un sujet prioritaire afin d’assurer l’intégrité, la confidentialité et l’authenticité de données.
Comment le protocole SMTP établie la sécurité de ces échanges de messages ?
Le chiffrement des mails !
Le chiffrage de données est l’une des techniques qui permet aux utilisateurs du protocole SMTP d’éviter d’envoyer des emails en clair sur le réseau, et de pouvoir créer un canal de communication sécurisé entre le client mail et les serveurs SMTP.
Parmi les méthodes de chiffrements les plus couramment utilisées on trouve le Protocole TLS (Transport Layout Security) et le standard S/MIME (Secure/Multipurpose Internet Mail Extensions) qui permettent la confidentialité et l’intégrité des données échangées, et donc éviter que les données échangées soient lisibles.
L’authentification SMTP
L’authentification SMTP ou bien le SMTP AUTH est l’extension qui protège le serveur de messagerie d’un usage non autorisé. L’expéditeur d’un mail doit s’authentifier avec un compte valide pour pouvoir transférer son email au serveur SMTP et donc procéder à l’envoi. Cela limite les envois de spam via des clients non autorisés.
Attention cependant : l’extension SMTP AUTH ne contrôle que l’envoi du mail, pas toutes ses informations. Notamment, cela ne permet pas de garantir l’identité de l’expéditeur d’un mail via l’en-tête “From”, une personne malveillante peut donc usurper l’identité d’une autre malgré cette couche de sécurité.
Comment ça marche ?
Généralement les serveurs SMTP utilisent les trois mécanismes les plus courants : PLAIN, LOGIN, et CRAM-MD5.
Pour communiquer un message au serveur SMTP AUTH, le client et le serveur passent par une phase initiale de prise de connaissance dans laquelle le client s’assure qu’il est en train de communiquer avec le bon destinataire, et non avec un serveur malveillant. Ils échangent des clés de chiffrement à fin de chiffrer les messages avant de les envoyer et déchiffrer les messages reçus.
C’est ce qu’on appelle le handshake.
Ensuite, le client envoie une commande EHLO au serveur qui répond par un message de succès « success 250″ attaché à d’autres informations contenant les extensions de services supportées par le serveur. Le client sait à ce moment-là les différents mécanismes d’authentification supportés par le serveur.
Le client fait le choix d’utiliser la méthode d’authentification qu’il préfère parmi celles proposées par le serveur et fait part de ce dernier via la commande AUTH [PLAIN | LOGIN | CRAM-MD5]
Les différents mécanismes d’authentification
Les méthodes d’authentification se différencient par leurs niveaux de sécurité.
PLAIN
L’authentification en utilisant le PLAIN se fait par le nom d’utilisateur et son mot de passe. Ces informations sont transmises sous forme d’une chaîne de caractères codée en Base64 mais non chiffrée.
S: 250 AUTH LOGIN PLAIN CRAM-MD5 C: AUTH PLAIN S: 334 C: hgeSReTfzerfGR= S: 235 Authentication successful |
Le client peut ainsi envoyer les informations d’identification avec la commande AUTH PLAIN sur la même ligne.
S: 250 AUTH LOGIN PLAIN CRAM-MD5 C: AUTH PLAIN hgeSReTfzerfGR= S: 235 Authentication successful |
LOGIN
L’authentification en utilisant le LOGIN se fait de la même manière que PLAIN en utilisant le nom d’utilisateur et son mot de passe. La seule différence est qu’en mode LOGIN on envoie le nom d’utilisateur puis ensuite son mot de passe, et non pas les deux en même temps.
S: 250 AUTH LOGIN PLAIN CRAM-MD5 C: AUTH LOGIN S: 334 FRdfrGBTR C: TRhjkotrG2TggDX= S: 334 Kfio46ERRfd C: STgtrbrrT1Yres= S: 235 Authentication successful |
CRAM-MD5
Le serveur demande au client de chiffrer son message en utilisant le mot de passe comme une clé secrète. La réponse du client est une chaîne contenant le nom d’utilisateur et un résumé de 16 octets avec le message de serveur chiffré par le mot de passe du client en notation hexadécimale et encodée en Base64.
Le serveur reçoit le message précédemment chiffré et encodé. Il trouve l’utilisateur via son nom d’utilisateur, ensuite il déchiffre les 16 octets en utilisant le mot de passe de cet utilisateur. Si le serveur trouve que le message déchiffré correspond bien à ce qu’il a envoyé au client, alors l’authentification est réussie. Sinon il envoie un message d’erreur.
S: 250 AUTH LOGIN PLAIN CRAM-MD5 C: AUTH CRAM-MD5 S: 334 jizRGtH6gDxyjGMgrt1t452ee= C: U45efFTR82hjLkoDSHtrG2TggDccX= S: 235 Authentication successful |
L’authentification via CRAM-MD5 est en réalité compromise depuis plusieurs années et n’est pas aussi sécurisée que l’on pourrait le penser. Cependant elle a l’avantage par rapport à PLAIN et LOGIN de permettre une authentification sur le réseau avec un mot de passe qui n’est pas en clair.
Branchez Pacomail sur votre application !
Quelque soit la méthode d’authentification que vous utilisez, elles sont toutes supportées par Pacomail.
Alors n’attendez plus : attrapez, centralisez et testez tous les mails sortant de vos applications depuis une seule et même plateforme. Démarrez vos 15 jours d’essai offert et découvrez le mailcatcher qui va simplifier vos tests d’emails !