Was ist Deep Packet Inspection (DPI)?
Die ITU tagt grade in Dubai und möchte jetzt endlich die Verwaltung des Internets übernehmen. Um ihren Anspruch zu unterstreichen, möchten sie als erstes mal einen Standard für Deep Packet Inspection einführen. Zu einer ordentlichen Verwaltung gehört doch auch immer eine lückenlose Kontrolle. Aber was versteht man eigentlich unter DPI?
Prinzipiell ist das Internet ein paketorientiertes Netz. Sehr einfach dargestellt, werden alle Daten in Pakete gepackt, mit einer Adresse und einem Absender versehen. Diese Pakete werden dann von Router zu Router über sogenannte Gateways gereicht, bis sie es zum Empfänger geschafft haben. Dabei ist es diesen Routern eigentlich vollkommen egal, was in diesen Paketen ist. Nur eine Beschränkung gibt es: die Paketgröße oder Maximum Transmission Unit (MTU). Sie ist in einem typischen Ethernet 1500 Bytes. Das bedeutet, dass fast alles, was im Netz stattfindet auf mehrere Pakete aufgeteilt werden muss.
Die verschiedenen Arten der Kommunikation zwischen zwei Rechnern im Netz kann man einem Paket von aussen nicht ansehen. Und bei jeder Art von Kommunikation handelt es sich um einen Dienst respektive Service. Dabei ist es relativ egal, wer jetzt grade der Diensteanbieter (also Server) ist und wer der Empfänger (Client). Für das WWW der http-Service oder -Protokoll eingesetzt. Bei Mail kommen verschiedene Dienste in Frage: IMAP, POP und SMTP. Bei Chats gibt es dutzende verschiedene Protokolle und letztlich kann sich jeder seinen eigenen Dienst ausdenken und ihn auch benutzen.
Für DPI wird bei den Gateways zusätzliche Hardware installiert, die in der Lage ist, Inhalte der Pakete zu analysieren. Dazu müssen die Pakete nach ihrer fortlaufenden Nummer untersucht werden, da die erste wichtige Information bei allen Diensten in den ersten Paketen zu finden ist. Bei dieser wichtigen Information geht es um die Art des verwendeten Dienstes, also z.B. ob es sich um http, imap oder smtp handelt. Diese Erkennung ist notwendig, weil alle Dienste verschiedene Sprachen sprechen. Und diese Sprache muss bekannt sein, damit man analysieren kann, wer die beiden Teilnehmer und was der Inhalt der Kommunikation ist.
Nachdem der Dienst und damit das Datenformat der Kommunikation bekannt ist, wird der Inhalt des Paketes an einen anderen Prozessor weitergereicht, der nur dieses entsprechende Protokoll versteht. Dieser kann nun die Weiterreichung unterbinden, weil zum Beispiel der entsprechende Server auf einer schwarzen Liste steht. Zu dieser Sperrung genügt die bloße IP-Adresse meistens nicht, weil z.B. ein Web-Server unter verschiedenen Domains auf der gleichen IP-Adresse verschiedene Inhalte ausliefern kann.
Wenn es jedoch darum geht ganz bestimmte Inhalte zu sperren – etwa ein urheberrechtsgeschütztes Bild – muss das Paket mit dem Request noch genauer untersucht werden. Erst die GET-Anforderung gibt Aufschluss über die tatsächlich angeforderte Adresse. Problematisch bei http ist aber beispielsweise, dass vor dem GET beliebig viele Zeilenumbrüche erlaubt sind. Unter Umständen muss also nicht nur das erste Paket mit den 1500 Bytes ausgepackt werden, sondern noch weitere Pakete.
Noch komplizierter wird es, wenn die Inhalte selbst Gegenstand der Untersuchung werden. Es können verschiedene Zeichensätze zum Einsatz kommen, oder die Übertragung kann beispielsweise mit Zip gepackt sein. Diese müssten also vorher umgewandelt oder ihrerseits wieder ausgepackt werden.
Bei Milliarden von Paketen, die stündlich über ein typisches Gateway laufen bräuchte man dafür eigentlich schon einen Supercomputer. Wenn es da nicht diese kleinen FPGAs gäbe. Dabei handelt es sich Computer, die keine CPUs im herkömmlichen Sinne haben, sondern viele sehr einfache Recheneinheiten, die für bestimmte Aufgaben hardverdrahtet (allerdings mittels Software) werden. Sie verhalten sich eher wie Signalprozessoren, die bei einem bestimmten Signal eine Ausgabe generieren, während sie ansonsten nichts tun.
Für eine Paketanalyse werden viele dieser FPGAs mit allen möglichen Regeln programmiert. Letztlich agieren sie dann wie ein Weichensystem, dass in dem Paketstrom alle Pakete an eine Adresse rausfiltert, dann die Pakete mit http-Daten an andere weiterleiten, diese wiederum, die Pakete mit bestimmten Hostnamen rausfiltern u.s.w.
Einer der Hersteller von solcher Hardware ist übrigens die Berliner Firma Rohde&Schwarz. Die haben auf der letzten CeBIT bekanntgegeben, dass sie eine Partnerschaft mit Adyton Systems aus Leipzig eingehen. Es geht dabei um eine “revolutionäre” Technik der Leipziger für Deep Packet Inspection. Und von Rohde&Schwarz ist auch ein Vertreter der Deutschlands auf der ITU in Dubai. So schliesst sich der Kreis.
wenn es so waere, wie beschriebn, dann waere es js extrem leicht das zu umgehen. laut deiner beschreibung koennen solche geraete nur muster erkennen fuer die sie programmiert sind. also sollte ein fluktuierendes protokoll ausreichen. wie waere es mit einem protokoll, das immer beim senden von daten auch eine andere dtd mitsendet?
die sind doch nicht wirklich so doof , oder?!
Argus
6 Dec 12 at 12:53 am
Im Prinzip ist das richtig. Allerdings gibt es dann natürlich auch die Möglichkeit eine Regel zu definieren, die sagt “lass nur durch, was du auch kennst”.
qrios
6 Dec 12 at 2:10 pm