Telegram testet eine neue Version der Blockierung des Bypass-Maskierungsverkehrs unter normalem TLS (https).
Hintergrund: Versuche, Telegramm zu blockieren, finden in verschiedenen LĂ€ndern statt. Die erste Blockierungsoption war einfach: Blockieren Sie IP-Adressen von Telegrammservern.
Das Telegramm bekĂ€mpft diesen Angriff erfolgreich genug und Ă€ndert regelmĂ€Ăig die IP-Adresse, ĂŒber die es verfĂŒgbar ist. Dies fĂŒhrt jedoch zu einer langen anfĂ€nglichen Verbindung ...
Socken-Proxys wurden etwas spĂ€ter verfĂŒgbar, aber das Protokoll impliziert keine VerschlĂŒsselung. Dies ermöglichte es, einfach in den Socken-Tunnel zu schauen und festzustellen, dass sich ein Telegramm darin befand, wodurch die Proxys blockiert wurden.
Die nĂ€chste Runde war die Veröffentlichung von MTProto Proxy, einem Telegramm-Proxyserver, der sein MTProto-Protokoll verwendet, aber auch einige Probleme hatte - die PaketgröĂe ist sehr charakteristisch und spezifisch, und viele DPIs begannen, Telegramm nach dem ersten paketblockierenden Zugriff zu bestimmen.
Die Antwort auf dieses Verhalten war die EinfĂŒhrung einer neuen Version des MTProto-Protokolls - mit einer zufĂ€lligen LĂ€nge ist es jetzt schwieriger festzustellen, dass sich der Telegrammtunnel vor uns befindet. Ein Teil der DPI begann, den Verkehr als âeinen anderenâ Teil zu klassifizieren, lernte jedoch immer noch, ein charakteristisches Muster zu identifizieren, und zwar mit einer gewissen Wahrscheinlichkeit (nicht 100%) Stellen Sie fest, dass der Datenverkehr mit Telegramm zusammenhĂ€ngt
Jetzt gehen wir zur nĂ€chsten Stufe ĂŒber (es scheint endgĂŒltig oder vorfinal zu sein) - der
Steganographie .
Steganographie (aus dem Griechischen. ÎŁÏÎ”ÎłÎ±ÎœÏÏ âverstecktâ + ÎłÏÎŹÏÏ âIch schreibeâ; Briefe. âGeheimes Schreibenâ) - eine Methode zur Ăbermittlung oder Speicherung von Informationen unter BerĂŒcksichtigung der Vertraulichkeit der Tatsache einer solchen Ăbertragung (Speicherung).
Mit anderen Worten, Telegramm gibt jetzt vor, regulÀrer TLS-Verkehr (https) zu sein.
Warum so tun?
Die Antwort liegt an der OberflĂ€che - derzeit ist der gröĂte Teil des Datenverkehrs TLS (https). Wenn Sie dieses Protokoll verwenden, sieht Ihr Provider oder DPI Folgendes:
- Ihre IP
- IP Server
- VerbindungsdomÀne (URL wird nicht angezeigt)
DarĂŒber hinaus wird aktiv an dem letzten Element gearbeitet, um es zu entfernen, und zusĂ€tzlich zu zwei IPs gab es nur einen verschlĂŒsselten Tunnel mit unbekanntem Inhalt.
In dieser Situation ziehen alle nicht standardmĂ€Ăigen Protokolle zusĂ€tzliche Aufmerksamkeit auf sich, und die Lösung fĂŒr dieses Problem ist eine Sache: Wenn Sie wie TLS (https) aussehen, gibt es weniger Fragen.
Technische Umsetzung
Bei Verwendung des neuen Protokolls wird der MTProto-Stream in Standard-HTTPS (die ersten Tunnelverhandlungsnachrichten) eingeschlossen, in denen die DomĂ€ne (FĂ€lschung) ĂŒbertragen wird. Nach Aushandlung des MTProto-Protokolls - Fake-TLS wird nicht verwendet, beginnt der Datenverkehr mit dem ĂŒblichen MTProto-Protokoll mit zufĂ€lliger LĂ€nge (dd-SchlĂŒssel) zu laufen.
Als Referenz: Telegramm verwendet 3 Arten von SchlĂŒsseln fĂŒr MTProto Proxy:
- Normale SchlĂŒssel (leicht durch DPI zu bestimmen)
- Die ersten beiden Buchstaben - dd - zufÀllige NachrichtenlÀnge (DPI kann das Protokoll nur anhand der ersten Verbindungsverhandlungspakete bestimmen - es sieht aus wie normales https / TLS)
- Die ersten beiden Buchstaben - ee - Fake TLS + zufÀllige NachrichtenlÀnge (DPI kann das Protokoll nicht bestimmen, die erste Nachricht und alle nachfolgenden sehen aus wie HTTPS / TLS)
Wo kann man es versuchen?
Es gibt bereits zwei Proxyserver, die den neuen Standard unterstĂŒtzen
(es gibt noch keinen offiziellen Proxyserver, obwohl vor langer Zeit die UnterstĂŒtzung fĂŒr DD-SchlĂŒssel hinzugefĂŒgt wurde).UnterstĂŒtzung des gefĂ€lschten TLS-Proxy-Modus:
- Python github.com/alexbers/mtprotoproxy
- Erlang github.com/seriyps/mtproto_proxy/tree/fake-tls
Bitte beachten Sie: Zum Zeitpunkt des Schreibens ist die FunktionalitĂ€t des Artikels - fake tls experimentell, daher mĂŒssen Sie Beta- oder Alpha-Versionen der Software verwenden (sowohl Proxys als auch Clients).Welche Clients unterstĂŒtzen den neuen Modus?
Beta-Versionen von Telegram Desktop, Telegram iOS und
sagen stabile Version auf Android.
Wie versuche ich es?
- Zum Beispiel werden wir einen Proxy in Python verwenden:
- Proxy installieren:
git clone https://github.com/alexbers/mtprotoproxy.git; cd mtprotoproxy
- :
python3 mtprotoproxy.py
- (experimental) â :
tg: tg://proxy?server=8.8.8.8&port=443&secret=7gAAAAAAAAAAAAAAAAAAAABnb29nbGUuY29t (experimental)
- â , Fake TLS.
?
Google.com , DPI HTTPS Google.com IP â , , .
! (IP) Google.com
Fake TLS â ?
â HTTPS DPI :
- IP
( eSNI).Fake TLS , , , Google - Google â , , - - Google HTTPS/TLS .
?
, â â ( ). , HTTPS . ? â , .
â + () â , â MTProto.
eSNI ( ) â .
?
, Telegram , https/TLS WebSocket â .
MTProto â , Telegram â .
, â () , .
â 443 ( HTTPS) ( dd ee), ee dd , .
â , eSNI â .