Mit einigen wenigen Ausnahmen muss man annehmen, dass ein entschlossener Angreifer in der Lage ist, sich die Hardware zu besorgen, den Code auszulesen und ein Reverse-Engineering von Algorithmen und Software durchzuführen. Daraus ergibt sich, dass ein gut entwickeltes Sicherheitssystem nicht davon abhängig ist, dass der Algorithmus und die Software geheim bleiben, und auch nicht auf die Geheimhaltung eines oder mehrerer Schlüssel angewiesen ist. Bei einem Angreifer, der im Besitz eines der Netzwerkknoten ist, muss man annehmen, dass er in der Lage ist, die komplette Kontrolle über diesen Knoten zu haben. In einem gut entwickelten System aber kann die Gefährdung eines Knotens nicht die Sicherheit des restlichen Netzwerks beeinflussen.
Die sicherste Lösung für dieses Reverse-Engineering-Problem ist, sicherzustellen, dass jede Kommunikationssession (oder jeder Datenstrom zwischen zwei Endpunkten) ihren eigenen Schlüssel verwendet und dieser für die anderen Knoten im Netzwerk unbekannt ist. In diesem Fall, sogar bei einem gefährdeten Knoten im Netzwerk, können die anderen Netzwerkknoten die Daten oder Befehle nicht »erschnüffeln«, manipulieren oder imitieren.
Verteilung der Schlüssel
Vorausgesetzt es werden passende Protokolle und Chiffren verwendet, schützt ein Netzwerk mit einem einzigen Zufallsschlüssel die Vertraulichkeit, Integrität und Authentizität der Netzwerkkommunikation (Bild 2). Trotzdem sind einigen Systeme in dieser Situation verletzbar. Üblicherweise ist es unpraktisch, jeden Knoten im Netzwerk mit allen Schlüsseln zu programmieren, die für künftige Sessions benötigt werden. Besser ist es, alle erforderlichen Schlüssel erst nach der Formierung des Netzwerkes zu verteilen. In einigen Systemen erfolgt dies durch unverschlüsseltes Aussenden eines initialen Session-Schlüssels. Voraussetzung ist, dass das Netzwerk nur während einer kurzen Zeit während der Netzwerkformierung für eine Attacke anfällig ist. Leider ist ein Angreifer immer in der Lage, seine Schnüffelausrüstung zu aktivieren und geduldig auf einen Netzwerk-Reset zu warten, oder er kann beispielsweise mittels Ein/Ausschalten des Netzwerkcontrollers oder des Gateways oder durch andere Methoden einen Netzwerk-Reset selber auslösen.
Eine einfache Lösung dieses Problems ist, bei der Herstellung einen einzelnen Schlüssel in jedem Knoten des Netzwerks zu installieren, und dass man einen einzigen vertrauenswürdigen Sicherheitsmanager im Netzwerk hat, der über die Schlüssel verfügt. Das ermöglicht sichere Sessions zwischen jedem Knoten und dem Sicherheitsmanager. Dieser generiert die erforderlichen Schlüssel für alle anderen Sessions und sendet diese über seine sicheren Kanäle zu jedem beteiligten Gerät. Alternativ gibt es andere Tools, die öffentliche Schlüsselinfrastrukturen nutzen, die vergleichbare Funktionalität bietet sowie weitere Vorteile [5].