2 Ethernet-Ports und ein FPGA

Ich muss ein Ethernet-Verschlüsselungsschema entwickeln. Alles, was getan werden muss, ist die Eingabe auf Ethernet zu nehmen und die Pakete zu verschlüsseln und sie über das Ausgabe-Ethernet zu senden. Gibt es eine Möglichkeit, dies für 35 Dollar pro Stück zu tun? Wie wäre es mit 50 $?

Wie schnell muss es sein? 10/100/1G/10G? Auch welche Verschlüsselung, AES, 3DES oder etwas anderes?
Beliebig. Vorzugsweise 100 MBps mit Public-Key-Verschlüsselung.
-1 für "Drink deep ... the Pierian Spring" scheitern. +1 für "Alles, was getan werden muss ..." :-). Insgesamt eine Wäsche.
Wie wollen Sie die Pakete entschlüsseln? Vielleicht wäre es einfacher, vorhandene VPN-Technologien wie IPsec oder L2TP über eine Art eingebettete Linux-Plattform / Board zu nutzen, anstatt den FPGA-Weg zu gehen.
@Craig mit Software. Ich würde nur den Inhalt der Pakete verschlüsseln, nicht den 16-Byte-Ethernet-Header. Es würde also immer noch mit herkömmlichen Schaltern und Computern funktionieren. Sie könnten den Inhalt der Pakete nicht entziffern.

Antworten (2)

Ich habe viele Bedenken mit diesem Projekt, also lassen Sie mich hier brutal ehrlich sein. Wenn es um Kryptographie geht, ist es am gefährlichsten, wenn jemand, der nichts davon weiß, versucht, sie zu implementieren. Und ehrlich gesagt, Sie wissen nichts davon. Ich sage das, weil Sie sich nicht darum kümmern, welcher Verschlüsselungsalgorithmus verwendet wird. Ich glaube auch nicht, dass Sie die für die Verschlüsselung mit öffentlichen/privaten Schlüsseln erforderlichen Rechenressourcen wirklich kennen.

Selbst wenn Sie den richtigen Verschlüsselungsalgorithmus gewählt und perfekt implementiert haben, bedeutet das nicht, dass Ihr Gerät sicher ist. Die meisten Verschlüsselungssicherheitsverletzungen werden nicht von jemandem verursacht, der einen Brute-Force-Angriff auf den Schlüssel durchführt, sondern von etwas anderem, das viel einfacher ist und nichts mit dem verwendeten Algorithmus zu tun hat. Wenn Sie beispielsweise die Ethernet-Paket-Header verschlüsseln, haben Sie eine bessere Sicherheit, aber Sie können diese Daten nicht über einen Standard-Ethernet-Switch und/oder Layer-3-Router senden. Wenn Sie die Header nicht verschlüsseln, öffnen Sie sich einer Form von Analyse und Angriff, die jemandem Informationen geben könnte, auch ohne die Verschlüsselung zu knacken.

Ein Buch, das ich sehr empfehlen kann, ist Angewandte Kryptographie . Es spricht über viele Probleme mit der Kryptografie und geht auch viele Algorithmen durch. Es ist ein wenig veraltet, da es AES nicht abdeckt, aber es spricht über viele Hash-Algorithmen, DES und die Verschlüsselung mit öffentlichen/privaten Schlüsseln.

Ok, jetzt zu Ihrer eigentlichen Frage: Kann es für 35 $/Stück gemacht werden? Absolut! Können SIE es für 35 $/Stück tun? Nun, das kann ich nicht beantworten. Sie haben uns einfach nicht genug Informationen gegeben. Ist dies zunächst ein Hobbyprojekt oder etwas, das in großen Mengen hergestellt wird? Was wird dein Gehäuse/Chassis sein? Wie wird dies gesteuert, über LCD und Tasten?

Wenn Sie nur zwei dieser Dinge bauen, wird es sehr schwierig, den Preis auf 35 $ zu drücken. Es wäre tatsächlich schwierig, den Preis unter 250 $ zu drücken. Aber selbst bei einem Volumen von etwa 2.000/Jahr würde ich schätzen, dass die PCB + Teile im Bereich von 30-35 $ liegen würden, und das berücksichtigt nicht die Arbeitskosten, ein Chassis oder ein AC/DC-Netzteil. Außerdem gibt es möglicherweise billigere Möglichkeiten, dies ohne FPGA zu tun.

Was sind die günstigeren Möglichkeiten? Beim Erstellen eines Internetinhaltsfilters muss ich die Pakete einfach verschleiern, damit nur meine Software sie lesen kann. Dies verhindert, dass Teenager die Software umgehen, indem sie sie hacken oder entfernen. Die einzige Hardware wird ein einfacher Ethernet-Stecker sein, der Pakete verschlüsselt.
@unixman83 TI hat eine ARM Cortex A8-CPU mit zwei GigE-Ports und kostet etwa 10 US-Dollar in Menge. Andere Firmen machen ähnliche Sachen. Hier ist ein Link zur TI-Version: ti.com/product/am3357
Oh, die TI-Teile haben auch das, was sie einen "Krypto-Beschleuniger" nennen, was auch immer das bedeutet.
David, iirc sie fügen Funktionen hinzu, um die AES-Schlüsselplanung und die Rundenfunktion zu beschleunigen.
@DavidKessner Danke für die sachkundige Antwort. Ich mag die TI-ARM-CPU. Wir entscheiden uns wahrscheinlich vorerst für eine reine Softwarelösung, aber ich werde diesen Link griffbereit halten, falls sich die Dinge ändern.

Die kostengünstigste Hardware mit zwei Ethernet-Ports und etwas Rechenleistung dazwischen wären zwei miteinander verbundene PIC 18 67J60. Jeder hat seine eigene Ethernet-Schnittstelle, und sie könnten mit ihren eingebauten UARTs zwischen ihnen auf derselben Platine kommunizieren. Die Teilekosten für die beiden PICs, zwei Transformatoren, zwei RJ-45-Buchsen und die Platine sollten unter 20 US-Dollar liegen. Wenn Sie bereits geregelte 3,3 V zur Verfügung haben, müssen es nicht viel mehr sein.

Dieses Setup ist sicherlich in der Lage, Pakete von einem Port zum anderen zu leiten und dazwischen eine Art Modifikation vorzunehmen. Ob es für das, was Sie vorhaben, schnell genug ist, wissen wir nicht. Das hängt alles davon ab, wie kompliziert Ihr Verschlüsselungsalgorithmus ist und welchen Datendurchsatz Sie erwarten.

Sie sagen, Sie haben es nur mit Paketen auf Ethernet-Ebene zu tun. Wenn das wirklich stimmt, dann könnte so etwas funktionieren. Ohne einen ausgewachsenen TCP-Stack sollten die Chips eine höhere Datenrate bewältigen können. Aber haben Sie wirklich darüber nachgedacht? Woher wissen Sie, welche Pakete Sie verschlüsseln müssen, ohne zumindest eine Analyse auf höherer Ebene durchzuführen? Sie könnten beispielsweise nur TCP/IP-Pakete umwandeln. Das ist leicht zu erkennen, aber wollen Sie wirklich das gesamte Paket verschlüsseln, einschließlich des TCP-Headers? Was ist mit dem IP-Header? Wenn Sie das verschlüsseln, wie werden Ihre Pakete geroutet? Es hört sich nicht so an, als hättest du das wirklich bis zum Ende durchdacht. Hardware, um dies zu tun, ist wahrscheinlich das geringste Ihrer Probleme.

Wie wäre es mit einem PC mit zwei Netzwerkkarten?

Der von Ihnen angegebene PIC leistet 10,5 MIPS, was weniger als 1 Anweisung/Byte bei voller Geschwindigkeit von 100 Mbit/s und Halbduplex ist. Vollduplex wäre doppelt so schlimm. Ich vermute , dass diese Lösung im besten Fall nur 10 MBit/s dauerhaft erreichen könnte und viel schlechter sein könnte. Das Problem ist, dass, wenn der PIC einen Burst von mehr als 8 kByte bei 100 Mbit/s empfängt, er beginnt, Pakete zu verwerfen. Wie hoch ist die Wahrscheinlichkeit, einen solchen Ausbruch zu bekommen? Meiner Erfahrung nach extrem hoch, wenn man bedenkt, wie dieses Gerät verwendet wird.
@David: Richtig, ich habe dies als die billigste Lösung erwähnt, die ich kenne, definitiv nicht die höchste Durchsatzleistung. Der OP hat in seiner Frage nichts über den Durchsatz gesagt. Außerdem ist dies sowieso nur 10-Mbit/s-Ethernet, sodass keine 100-Mbit/s-Pakete empfangen werden können. Denken Sie daran, dass dieser Prozessor für kleine eingebettete Systeme gedacht ist.
Wie dumm von mir. In den Dokumenten steht "Vollständig kompatibel mit 10/100/1000Base-T-Netzwerken", was ich so interpretiert habe, dass es 10/100/1000 Mbit / s leistet. Das Problem verworfener Pakete bleibt weiterhin bestehen, aber die Pakete würden am 100/1Gig-Switch statt am PIC verworfen.
@David: Ja, es ist voll kompatibel, wenn man einen Switch als Konverter dazwischen schaltet. Technisch ist es insofern voll kompatibel, dass die höheren Tarife nur gelten, wenn beide Geräte übereinstimmen. 100 Mb/s Geräte müssen 10 Mb/s können. Es ist so, als ob Sie "USB 2.0"-kompatibel sind, selbst wenn Sie nur 12 Mb/s verwenden. Es ist ein bisschen irreführend, aber technisch korrekt. 10 Mb/s sind eine Menge Daten für ein kleines eingebettetes System, daher ist dies keine Einschränkung bei der tatsächlichen Verwendung.