Jetzt offiziell: TLS 1.3 als Standard anerkannt

Wir haben zuvor geschrieben, dass der Internet Engineering Council (IETF) eine neue Version von TLS - 1.3 genehmigt hat. Letzte Woche wurde das Protokoll als Standard anerkannt. Heute - lassen Sie uns über seine Fähigkeiten sprechen.


/ Foto Charles Dyer CC

Funktionen von TLS 1.3


Sie haben bereits 2014 begonnen, das Protokoll zu aktualisieren. Inoffiziell endeten die Arbeiten an TLS 1.3 im März dieses Jahres, aber die Ingenieure benötigten noch einige Monate, um zusätzliche Überprüfungen durchzuführen.

Die Entwickler behaupten, dass die endgültige Version von TLS 1.3 sicherer und produktiver ist: Alle bekannten (heute) TLS 1.2-Schwachstellen sind in ihren Verschlüsselungsalgorithmen geschlossen, und der „Handshake“ -Prozess ist doppelt so schnell wie beim Vorgänger. Die Entwickler fügten außerdem Vorwärtsgeheimnis und neue Funktionen wie 0-RTT hinzu.

TLS 1.3 hat die meisten signifikanten Änderungen in der Geschichte des Protokolls vorgenommen. Aus diesem Grund schlugen einige sogar vor , es TLS 2.0 zu nennen.

Nachdem die neue Version des TLS 1.3-Protokolls ( RFC 8446 ) offiziell genehmigt wurde, muss sie noch für alle Netzwerkverbindungen implementiert werden.

Implementierungsschwierigkeiten


TLS hat eine Art Abwärtskompatibilität. Wenn eine Verbindung zwischen dem Client und dem Server hergestellt wird, werden die unterstützten Versionen des Protokolls ausgetauscht und diejenige ausgewählt, mit der beide Seiten arbeiten können. Diese Funktion wird jedoch nicht überall verwendet. Mit dem Aufkommen von TLS 1.3 wurden mehr als 3% der Server mit TLS 1.2-Unterstützung einfach getrennt, anstatt dem Client die unterstützte Versionsnummer zu senden.

Ein ähnliches Problem ist bei Zwischenknoten ( Middlebox ) aufgetreten . Aufgrund der Tatsache, dass sich TLS nicht wesentlich geändert hat, weigerten sich Dinge wie Firewalls, NAT und Load Balancer, mit der neuen Version des Protokolls zu arbeiten.

Ingenieure nannten dieses Phänomen Ossifikation (Ossifikation). Die Tatsache, dass einige Entwickler die flexiblen Funktionen des Protokolls nicht verwenden, erschwert die Einführung neuer Implementierungen. Als Analogie führen die Branchenteilnehmer das Beispiel der alten Tür an. Wenn Sie es längere Zeit nicht berühren, rosten die Schlaufen und es öffnet sich mit einem Knarren.


/ Foto Christopher Sessums CC

Es stellt sich heraus, dass das vorherige Protokoll veraltet ist, aber es funktioniert nicht, standardmäßig ein neues einzuführen. Mehr zum Thema finden Sie beispielsweise in der letztjährigen Studie von IEEE ( PDF ).

Die Lösung wurde von David Benjamin gefunden, der an Chrom arbeitete. Er schlug vor, die erste Nachricht eines Clients, der TLS 1.3 unterstützt, als TLS 1.2-Nachricht zu tarnen. Und es hat funktioniert: Die genannten 3% der Server haben die Verbindung nicht mehr getrennt. Kyle Nekritz von Facebook schlug für Zwischenwebsites den gleichen Ansatz vor. Dies reduzierte die Anzahl der Abstürze in Chrome um 6,5% und in Firefox um 2%.

Um zu überprüfen, ob Middleboxen mit der neuen Version des Protokolls kompatibel sind, können Sie den in Cloudflare entwickelten Test verwenden .

So vereinfachen Sie die Implementierung


Laut Eric Rescorla, einem der Entwickler von Spezifikationen für TLS und HTTPS, ist die Implementierung von TLS 1.3 im Allgemeinen nicht so schwierig. Der Technische Rat hat versucht, diesen Prozess so einfach wie möglich zu gestalten. TLS 1.3 verwendet dieselben Schlüssel und Zertifikate wie TLS 1.2. Auf diese Weise können Client und Server automatisch eine Verbindung über TLS 1.3 herstellen, wenn beide die neue Version des Protokolls unterstützen.

Darüber hinaus gibt es eine Reihe von Bibliotheken, mit denen Sie das Protokoll schneller bereitstellen können. Anfang letzter Woche hat Facebook beispielsweise seine TLS 1.3 Fizz-Bibliothek auf Open Source übertragen . Fizz reduziert die Latenz beim Übertragen von Daten sowie die Belastung der CPU.

Die Entwickler haben eine Anleitung vorbereitet, wie Sie Fizz unter Ubuntu 16.04 LTS verwenden können. Es befindet sich im offiziellen Repository auf GitHub (es enthält auch eine Anleitung für MacOS).

Zuerst müssen Sie die erforderlichen Folly- und Libsodium-Abhängigkeiten installieren:

sudo apt-get install \ g++ \ cmake \ libboost-all-dev \ libevent-dev \ libdouble-conversion-dev \ libgoogle-glog-dev \ libgflags-dev \ libiberty-dev \ liblz4-dev \ liblzma-dev \ libsnappy-dev \ make \ zlib1g-dev \ binutils-dev \ libjemalloc-dev \ libssl-dev \ pkg-config \ libsodium-dev 

Als nächstes müssen Sie Folly erstellen und installieren:

 git clone https://github.com/facebook/folly mkdir folly/build_ && cd folly/build_ cmake configure .. make -j $(nproc) sudo make install 

Dann können Sie mit der Installation von Fizz fortfahren:

 cd ../.. git clone https://github.com/facebookincubator/fizz mkdir fizz/build_ && cd fizz/build_ cmake configure ../fizz make -j $(nproc) sudo make install 

Neben Fizz gibt es im Netzwerk weitere Bibliotheken, z. B. wolfSSL , GnuTLS oder rustls .

Zukünftiges Protokoll


Um das Problem mit der "Ossifikation" des Protokolls endgültig zu lösen, schlug David Benjamin zusätzlich zur offiziellen Version des Standards vor, eine Reihe seiner Variationen zu verwenden, die alle sechs Wochen (zusammen mit der Veröffentlichung neuer Versionen von Chrome) veröffentlicht werden. Daher müssen Server und Zwischenknoten alle Regeln zum Herstellen einer Verbindung einhalten, da sonst die meisten Clients keine Verbindung zu Diensten herstellen können.

Aus diesem Grund hoffen die Entwickler, mögliche Abstürze beim Laden von Webseiten sowie ähnliche Probleme mit zukünftigen Versionen von TLS zu vermeiden.

Die Gesamtsicherheit des Netzwerks wird nach der Einführung von TLS 1.3 voraussichtlich erheblich zunehmen. Bibliotheken, die die Bereitstellung einer neuen Version des Protokolls erleichtern, müssen zur Massenverteilung beitragen.



PS Weitere Materialien aus unserem IaaS-Unternehmensblog:




Was wir in IT-GRAD machen - die Hauptbereiche:

Virtuelle Infrastruktur (IaaS) | PCI DSS Hosting | Wolke FZ-152

Source: https://habr.com/ru/post/de420521/


All Articles