2011-01-04 9 views
2

Ich muss ein Datenpaket der Größe 50 MB in einer verteilten Umgebung digital signieren. Die Signierung erfolgt auf dem zentralen Server und die Clients senden die Datenpakete an den zentralen Server. Ich wollte die Engpässe im Netzwerk durch das Senden riesiger Datenpakete vermeiden.Digitales Signieren - verteilte Umgebung - separates Hashing und Signieren

Meine Frage ist

  1. Kann ich den Hash am Client generieren und nur den Hash an den zentralen Server zum Signieren schicken?
  2. Gibt es irgendwelche Sicherheitsmängel in diesem Ansatz?

Dank

+1

Gegen welche Bedrohungen möchten Sie sich schützen? – Karmastan

+0

Meine Anforderung besteht darin, das digitale Signieren von Finanztransaktionsdaten von einer Bank zu implementieren, bevor Sie es an die andere Bank senden, die dasselbe überprüft. Also sollte ich sicherstellen, dass meine Implementierung sicher genug ist. – Raj

Antwort

3

Sie den Hash signieren kann von dem Client empfangen, doch gibt es ein Sicherheitsproblem hier - Sie müssen einen Weg finden, um sicherzustellen, dass der Hash aus den Daten abgeleitet wird, die zugelassen werden soll Hashed. Stellen Sie sich vor, Ihr Server verwendet ein Unternehmenszertifikat, um ausführbare Dateien zu signieren, die Ihr dev.team kompiliert. Jetzt erstellt ein Hacker einen Trojaner und findet eine Möglichkeit, eine Signieranfrage (nur durch Übergabe des Hashes) an Ihren Server zu senden. Und er bekommt einen Trojaner, unterschrieben mit Ihrem Firmenzertifikat. Bei externen Angriffen ist dies weniger reell, bei internen nicht.

+0

Es ist richtig, dass alles von der Integrität des Clients abhängt. Aber das ist unabhängig davon, ob ein Hash oder der komplette Inhalt gesendet wird. – mtraut

+0

@mtraut nicht genau. Wenn ein 50 MB großes PDF-Dokument signiert werden soll (auf dem Server), kann der Server bestimmte Parameter des PDF-Dokuments prüfen (oder es zum Beispiel durch ein Wasserzeichen ändern). Wenn es sich um eine XML-Datei handelt, kann der Server überprüfen, ob die XML-Datei der zulässigen Struktur entspricht. Aber all das ist nicht möglich mit nur einem Hash. –

+0

Das stimmt. Aber er kann nur formale Überprüfungen machen. Er weiß nicht, ob 10,00 $ oder 10.000.000,00 $ gültig sind. – mtraut

2

Blind Unterzeichnung eines Hashes scheint wie ein riskantes Angebot. Es gibt ein paar Fragen, die in dieser Situation relevant scheinen:

  • Sind die Clients "vertrauenswürdig"?
  • Ist der Kommunikationskanal vertrauenswürdig?
  • Führt der Server eine Überprüfung der empfangenen und signierten Daten durch?

Die letzte kann die kritischste sein. Wenn der Server die Daten nicht verifiziert und nur blind signiert, dann ist es wahrscheinlich nicht anders, als blind einen Hash zu signieren. Jeder dieser Prozesse erlaubt es jedem, Daten signiert zu bekommen.

+1

..und wenn der Server keine Validierung der Daten durchführt, können Sie auch den zentralen Server komplett eliminieren und den Signierungsschlüssel herausgeben die Kunden. – caf

+0

Danke, Ihre Fragen haben die Faktoren zusammengefasst, die ich berücksichtigen sollte. – Raj