Jak uwierzytelnić aplikację kliencką pod kątem zaufania do wiadomości wysyłanych z niej

Podstawowe pytanie
Skąd mam wiedzieć, że jest to moja publicznie dostępna (klient) aplikacja, która wysyła moje wiadomości usługowe? Skąd mam wiedzieć, że to nie inna aplikacja podszywa się pod moją aplikację?

Jakieś tło
Obecnie rejestrujemy wszystkie błędy występujące na naszych stronach internetowych za pomocą log4net i WCF w bazie danych. Działa to dobrze, ponieważ serwer internetowy (dostępny z sieci - częściowo zaufany) zgłasza błędy do usługi WCF działającej na serwerze aplikacji (niedostępnej z sieci - zaufanej) za pośrednictwem zaufanej relacji. Wiemy zatem, że wszystkie dzienniki błędów są prawdziwe i musimy je zbadać.

W naszych nowych witrynach planujemy wykorzystać SilverLight, aby trochę ożywić. Problem, przed którym stoimy, polega na zgłaszaniu błędów z aplikacji SilverLight działającej na komputerze użytkownika sieci Web (Niezaufany) do naszego serwera aplikacji (niedostępnego z sieci - Zaufany).

Możemy rozwiązać problem niedostępności serwera aplikacji, sprawiając, że klient komunikuje się za pośrednictwem elewacji usługi na serwerze WWW, więc nie ma się czym martwić. Problem występuje, gdy musimy mieć pewność, że aplikacja wysyłająca wiadomości naprawdę jest naszą aplikacją, a nie tylko odtwórcą.

Kilka myśli
Kod zostanie zapisanyDO# i biegnij wSilverLight aplikacja działająca lokalnie na komputerze klienckim, więc nie możemy zagwarantować, że nie zostanie ona zdekompilowana i użyta do wysyłania fałszywych wiadomości do naszej usługi.

Powyższe oznacza, że ​​nie możemy korzystać z konwencjonalnego szyfrowania symetrycznego, ponieważ nie możemy przechowywać naszego klucza prywatnego w aplikacji (można go zdekompilować). Podobnie nie możemy używać szyfrowania asymetrycznego, ponieważ można go po prostu podszywać (atakujący może po prostu podpisywać wiadomości za pomocą przechowywanego klucza publicznego i wysyłać je - wiadomości wyglądają naprawdę)

W przypadku tej aplikacji nie ma autoryzacji użytkownika, więc nie możemy jej użyć, aby zapewnić nam zaufanie.

Tak, wiem, że to raczej dziwne, ponieważ dzienniki błędów są lepiej chronione niż dane wyświetlane przez aplikację, ale tak jest :)

Wszelkie myśli lub pomoc byłyby bardzo mile widziane!

questionAnswers(3)

yourAnswerToTheQuestion