Frage

Das ist etwas, was ich schon immer wollte lernen. Wenn ich ein System Design (Software oder Hardware), wo mehrere Komponenten miteinander kommunizieren, wie kann ich für einige grundlegende Sicherheit einig einfache Verschlüsselung oder andere Funktionen im Protokoll implementieren?

ich das Protokoll sowieso ändern kann, da ich Low-Level-Zugriff auf die Serie von Bytes nach unten, die übertragen / empfangen werden.

Edit:. Ich habe Interesse an Embedded-Programmierung, einfache Over-the-Wire-Verschlüsselung für Protokollsicherheit

War es hilfreich?

Lösung

Sie sagen: „Grundsicherung“, aber das bedeutet nicht viel. Was ist Ihr Bedrohungsmodell? Welche Art von Angriff verteidigen Sie gegen? Wenn Sie Kreditkartendaten werden übertragen, dann sind Sie gehen zu müssen robuste Verschlüsselung wie RSA verwenden. Aber ich kann nicht glauben, ein Beispiel, das „weniger“ Schutz benötigt. Wenn Sie über Hacker sind besorgt Code Auseinanderbauen, ist es bereits Spiel vorbei - wenn es interessant oder wertvoll ist, sie werden es hacken. Wenn nicht, verschwendet man Zeit, es zu implementieren.

Andere Tipps

Die einfachste Lösung ist bei weitem zu einfach anstelle einem normal man einen SSL-Socket verwenden, a la HTTPS / FTPS-Stil.

Es gibt keinen Unterschied überhaupt in dem Protokoll zwischen HTTP und HTTPS, der einzige Unterschied ist, dass sie auf verschiedenen Ports betreiben (80 vs 443 normal), und man verwendet eine normale Steckdose und das andere verwendet eine SSL-verschlüsselte Buchse.

implementieren keine Grundverschlüsselung im Sinne von es von Grund auf neu zu entwerfen. Es ist sehr schwierig, richtig Verschlüsselung richtig zu implementieren.

Stattdessen konzentrieren sich auf die Verschlüsselung auf Ihrer Plattform ... was ist Ihre Plattform?

EDIT:

Sehen Sie diese SO Post für eine Liste der Verschlüsselung Alternativen, von denen einige funktionieren soll ganz gut in einer eingebetteten Umgebung (zB CryptoPP und TomCrypt ).

OAuth kann für Sie interessant sein, um Zugriffskontrolle zwischen verschiedenen APIs zu ermöglichen.

Wenn Sie lediglich einen verschlüsselten Kanal von Daten wollen, ist es besser, nur dass ontop Ihrer Protokollschicht; gehen über SSL oder SSH.

Wenn Sie die Programmierung eingebetteter Machen wo ist dann die Verschlüsselung betreffen?

Solange Sie auf dem gleichen Prozessor, zum Beispiel bleiben, Verschlüsselung ist nutzlos.

Wenn Sie zwischen den Prozessoren auf dem Gerät betroffen sind, dann kann die Verschlüsselung schwierig sein, da ein dsp nicht notwendigerweise den Ersatzraum für jede Verschlüsselung jeglicher Komplexität hat.

Wenn Sie wollen schnell dann ein symmetrischer Algorithmus ist die beste Wahl, und es gibt viele, dass Sie tun können, die gut sind, wie Blowfish oder IDEA. Sie können einen einzigartigen symmetrischen Schlüssel speichern, so dass, wenn sie das Gerät auseinander nehmen, nur einen Schlüssel entdeckt werden, aber jedes Gerät sollte über einen eigenen Schlüssel ist.

Nur jede Taste mit der Seriennummer binden, so dass, wenn Sie mit einem Server kommunizieren, dann die Seriennummer mit dem Paket übergeben und der Webserver kann die korrekten symmetrischen Schlüssel sucht und entschlüsselt es schnell.

Wenn Sie eine schnelle Hardware-Verschlüsselung, für meine MSEE These tun wollte, entwickelte ich eine Verschlüsselungsfamilie, die beliebiger Reihenfolge Kalkül verwendet, die schwierig sein würde, den Schlüssel, um zu bestimmen, wie es in der Hardware-Schaltung Mikros verwendet werden kann, wie es ist keine Verarbeitung, wäre es direkt vor der Antenne und alles geht über sie verschlüsselt werden würde gebunden in.

Es gibt viele Dinge in der Gestaltung eines sicheren Systems berücksichtigt werden. Nur einige zu nennen:

  • Auswahl von symmetrischen / asymmetrischen Verschlüsselungsverfahren
  • Encryption-Algorithmus (AES, Blowfish, DES)
  • Auswahl von bekannten Protokollen (zum Beispiel SSL)
  • Key Management und Vertrieb
    • Ein einzelner Hauptschlüssel (wenn gehackt, gesamte System gefährdet ist)
    • Key pro Gerät (Schlüsselverteilung kann schwieriger sein)
    • Der Schutz der wichtigsten Vertriebswege
  • Wird ein potentieller Hacker einen einfachen Zugang zu Probe-Gerät haben (s)? Z.B. Verbraucherprodukt wie X-Box gegen eine in einer Telefonvermittlungsstelle gesperrt Box. Es ist schwieriger, zum Schutz vor Hacking, wenn der Hacker physischen Zugriff hat.
  • Menschliche Faktoren-Social-Engineering-etc.
  • ist ein System nur so sicher wie ihr schwächstes Glied.

Ich schlage vor, Sie lesen Bruce Schneier Material für den Anfang.

OAuth ist auf jeden Fall eine Überlegung. Zusätzlich zu, dass, können Sie WS-Security zu berücksichtigen. Durch denen über einen Web-Service zu übertragen, halten Sie alle Plattform und sprachunabhängig, und das Hinzufügen von WS-Security bedeutet, dass die Verschlüsselung und Entschlüsselung ist auf der Anwendungsschicht (end-to-end). Also, solange Sie darauf vertrauen, dass die Nachrichten sicher sind, sobald sie den Sender verlassen, wissen Sie, dass sie sicher bleiben, bis der Client die Nachricht tatsächlich erhält (dies bedeutet, dass sie nicht von dem Server entschlüsselt wird und dann an den Kunden weitergegeben / Empfänger, aber nach der empfangende Anwendung hat die Meldung).

Also im Grunde würden Sie OAuth sichern / authentifizieren, die verschiedenen Anwendungen und WS-Security, die Nachrichten, die zwischen ihnen zu sichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top