Die grundlegende Frage
Wie weiß ich, geschickt zu authentifizieren, dass es meine öffentlich zugänglich ist (Client) Anwendung, die meine Dienstnachricht sendet? Woher weiß ich, dass es nicht nur eine andere Anwendung ist, die sich als meine Anwendung ausgibt?Wie Client-Anwendung für das Vertrauen von Nachrichten von ihm
Einige Hintergrund
Derzeit protokollieren wir alle Fehler, die auf unseren Webseiten über log4net und WCF in einer Datenbank auftreten. Dies funktioniert gut, da der Web-Server (Zugriff vom Web - teilweise vertrauenswürdig) über eine vertrauenswürdige Beziehung Fehler an den WCF-Dienst meldet, der auf dem Anwendungsserver ausgeführt wird (vom Web aus nicht erreichbar - vertrauenswürdig). Wir wissen daher, dass alle Fehlerprotokolle echt sind und wir sie untersuchen müssen.
Mit unseren neuen Websites planen wir, SilverLight zu nutzen, um die Dinge ein wenig aufzupeppen. Das Problem, mit dem wir konfrontiert sind, besteht darin, Fehler von der SilverLight-Anwendung, die auf dem Web-Consumer-PC (Nicht vertrauenswürdig) läuft, an unseren Anwendungsserver zu melden (vom Web aus nicht erreichbar - vertrauenswürdig).
Wir können das Problem der Unzugänglichkeit des Anwendungsservers lösen, indem wir den Client über eine Service-Fassade auf dem Webserver kommunizieren lassen, so dass es keine Sorgen macht. Das Problem tritt auf, wenn wir sicherstellen müssen, dass die Anwendung, die die Nachrichten sendet, wirklich unsere Anwendung ist und nicht nur ein Imitator.
Einige Gedanken
Der Code wird in C# geschrieben werden und in einer Silverlight Anwendung ausgeführt werden, die lokal auf dem Client-PC läuft, so dass wir nicht garantiert werden kann, dass es dekompilierten und verwendet werden, werden nicht an Senden Sie gefälschte Nachrichten an unseren Service.
Das obige bedeutet, dass wir die herkömmliche symmetrische Verschlüsselung nicht verwenden können, da wir unseren privaten Schlüssel nicht in der Anwendung speichern können (er kann dekompiliert werden). Ebenso können wir keine asymmetrische Verschlüsselung verwenden, da sie einfach nur angenommen werden könnte (der Angreifer könnte einfach Nachrichten mit dem gespeicherten öffentlichen Schlüssel signieren und senden - die Nachrichten würden echt aussehen)
Bei dieser Anwendung gibt es keinen Benutzer Authentifizierung, also können wir das nicht nutzen, um uns Vertrauen zu schenken.
Ja, ich weiß, dass dies als die Daten mit den Fehlerprotokolle sind besser geschützt eher bizzare ist zeigt die Anwendung, aber es ist der Fall :)
Irgendwelche Gedanken oder Hilfe wäre sehr dankbar!
Dies ist fast der Punkt, den ich erreicht habe, aber das scheint wie ein gemeinsames Softwareproblem. Ich hoffe auf weitere Ideen, die mich auf den richtigen (oder besseren) Weg schicken. – FryHard
Es ist eine sehr schlechte Idee, "unmöglich" zu sagen, wenn es um Technologie geht. Im Allgemeinen hat jemand es bereits getan, als jemand anderes "unmöglich" sagt ... –
Ich sehe das nicht als ein Problem der Technologie. Es ist ein Problem unvollständiger Informationen. Der Server erhält Anweisungen von einer nicht vertrauenswürdigen Quelle. Diese Quelle kann nur vertrauenswürdig sein, wenn Informationen von einem vertrauenswürdigen Kanal bereitgestellt werden. –