Sicheres DSA-Signieren

9

Kann jemand meine Gedanken ruhen lassen und sehen, ob dieses Setup bestätigt, dass eine Datei von mir stammt? Eine Vorstellung davon, wie sicher das ist, wäre groß und mögliche Angriffsvektoren.

  1. Erstellen Sie einen öffentlichen und privaten Schlüssel mit DSACryptoServiceProvider.
  2. Öffentlichen Schlüssel als Anwendungsressource hinzufügen
  3. Erstellen Sie ein Update
  4. Erhalte den DSA-Hash des Updates mit dem privaten Schlüssel
  5. Hash senden und zur Anwendung aktualisieren (vorausgesetzt, dass diese abgefangen / geändert werden können)
  6. Überprüfen Sie, ob der Hash mit dem öffentlichen Schlüssel korrekt ist.
  7. Falls verifiziert, update
  8. anwenden

Das Update ist eine exe und wird ausgeführt, also möchte ich sicherstellen, dass es nicht ausgeführt wird, wenn jemand es ersetzt oder manipuliert.

BEARBEITEN: Punkt 6 wurde aktualisiert, da der öffentliche Schlüssel keinen Hash generiert, sondern nur überprüft. Ich denke, es ist dieser Teil, mit dem ich mit der Sicherheit von kämpfen muss.

    
Oli 15.05.2012, 02:38
quelle

1 Antwort

1

Ihr Ansatz sieht gut aus. Die Frage ist, wie sicher Ihre Anwendung auf dem Client ist. Besteht die Möglichkeit, dass jemand die ausführbare Datei manipulieren könnte? Vielleicht wechseln Sie den öffentlichen Schlüssel in der Anwendungsressource?

Es wird hier theoretisch, aber ich würde vorschlagen, eine kleine Änderung zu Schritt 6: Seien Sie spezifisch, welchen genauen öffentlichen Schlüssel Sie verwenden möchten. Wenn ein Angreifer den Schlüssel in der Anwendungsressource wechseln könnte, könnte er ein geändertes Paket mit einem korrekten Hash für einen anderen privaten Schlüssel senden. Dies kann nur ein geringfügiges Problem sein, da der Angreifer Ihre Software bereits geändert hat. Aber wenn er nur die Anwendungsressource und sonst nichts ersetzen könnte, dann könnte seine Anwendung sich selbst mit seinem bösartigen Code aktualisieren.

    
Johnny Graber 22.11.2012 16:01
quelle

Tags und Links