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.
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.
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.
Tags und Links .net c# code-signing