# STARTTLS

STARTTLS is een methode om beveiligde gegevensuitwisseling via TLS toe te voegen aan een bestaand netwerkprotocol, met behoud van terugwaartse compatibiliteit.

## Omschrijving

TLS is een beveiligingsprotocol waarmee een cryptografisch versleutelde verbinding tot stand wordt gebracht tussen computers. Applicaties die hiervan gebruikmaken, brengen gewoonlijk eerst een TLS verbinding tot stand en wisselen daarna gegevens uit volgens een specifiek applicatieprotocol. Voor veel applicaties bestond echter al een volledig uitgewerkt protocol, inclusief een voorschrift voor het tot stand brengen van de verbinding, nog voor de introductie van TLS.
Ondersteuning voor TLS kan achteraf in een protocol worden ingebouwd door toevoeging van het extra commando STARTTLS. Een applicatie die hiervan gebruikmaakt, brengt in eerste instantie een onbeveiligde verbinding tot stand op de wijze die was beschreven in het oorspronkelijke protocol. Door middel van het STARTTLS-commando wordt vervolgens overgeschakeld naar een beveiligde TLS-verbinding. Gedurende de rest van de sessie wordt alleen nog de beveiligde verbinding gebruikt.
Als blijkt dat een van beide partijen het STARTTLS-commando niet ondersteunt, kan de sessie eventueel onbeveiligd voortgezet worden. Hierdoor blijft het protocol terugwaarts compatibel met oudere versies van de applicatie.

## Toepassing

Voor veel protocollen is inmiddels een STARTTLS uitbreiding vastgelegd, onder andere:
* SMTP: e-mailverzending, zie hieronder
* IMAP en POP3: e-mail ontvangen
* LDAP: directory service
* XMPP: instant messaging

### STARTTLS voor SMTP

Het STARTTLS-mechanisme voor SMTP is beschreven in RFC 3207. Bij het gebruik ervan worden de certificaten van beide betrokken componenten (mailservers) gebruikt om de verkeersstroom te versleutelen.
Het SMTP-protocol voorziet standaard niet in beveiliging. Het afschermen van de communicatie voor onbevoegden is in het protocol niet opgenomen. Het kwaliteitscriterium vertrouwelijkheid is dan ook niet gewaarborgd. Voor het versleutelen van e-mailberichten moet dan ook gebruik worden gemaakt van verschillende aanvullende technieken. Te denken valt aan het gebruik van certificaten (PKI of PGP) of versleuteling van bestanden met aparte programmatuur.
Probleem is in beide gevallen dat verzender en ontvanger op elkaar afgestemde programmatuur en sleutels moeten gebruiken. Met STARTTLS is dat niet nodig. Het is afdoende om de mailserver te voorzien van een SSL-certificaat en op te geven dat STARTTLS gebruikt kan worden.
* Als de corresponderende server eveneens voorzien is van de STARTTLS-faciliteit, worden de sleutels uitgewisseld en gebruikt voor het versleutelen van het dataverkeer.
* Als de corresponderende server niet is voorzien van STARTTLS, dan wordt de reguliere SMTP transactie zonder de aanvullende beveiliging gebruikt.
Een aanvaller kan hiervan misbruik maken, door het opzetten van STARTTLS te frustreren via een man-in-the-middle-aanval. De beide servers komen dan niet tot overeenstemming over het gebruik van STARTTLS en schakelen terug naar onversleutelde communicatie. Dit is te ondervangen door gebruik te maken van de DANE standaard, of met behulp van MTS-STS.
STARTTLS is beschikbaar voor de meeste mailservers. De standaard Unix- en Linux-servers (sendmail, qmail en postfix) kennen STARTTLS evenals Microsoft Exchange en Lotus Notes/Domino.
Zelfs bij gebruik van een beveiligde SMTP-verbinding kan e-mail in principe onderweg nog door derden gelezen worden. Alleen de communicatie tussen mailservers onderling wordt versleuteld; elke mailserver ziet echter de onversleutelde inhoud van het e-mailbericht. Om het gehele traject van verzender naar ontvanger te beveiligen, moet het e-mailbericht zelf voor verzending worden versleuteld, bijvoorbeeld met behulp van OpenPGP of S/MIME.