Szyfrowanie w C# Web-Services


16

Szukam prostego sposobu szyfrowania mojej komunikacji mydlanej w mojej C# Web-Service.

Zajrzałem do WSE 3.0, ale wygląda na to, że Microsoft zrzekł się dla niego wsparcia, a zatem nie jest to łatwe w użyciu.
Wygląda na to, że WCF mogło być opcją, ale wolę nie aktualizować z .NET 2.0.

Dowolna prosta, prosta metoda szyfrowania?

8

Myślę, że to może pomóc; w ubiegłym roku używaliśmy tego do kompresowania serwisów internetowych i działało bardzo dobrze, uważam, że można go ulepszyć za pomocą klas szyfrowania;

Creating Custom SOAP Extensions - Compression Extension


0

Być może jestem naiwny, ale czy wymuszenie komunikacji za pośrednictwem protokołu https będzie do przyjęcia? Rozwijam usługi internetowe, które działają w wersji 2.0 i odniosłem sukces, gdy tylko IIS wymusił na https w katalogu wirtualnym.

Alternatywnie lub dodatkowo można sprawdzić HttpRequest.IsSecureConnection property.


1

Może mam być naiwna, ale zmuszając komunikację za pośrednictwem https być akceptowalne? Rozwijam usługi internetowe , które działają w wersji 2.0 i odniosły sukces , uzyskując po prostu IIS do wymuszania https w wirtualnym katalogu .

To byłoby najprostszym sposobem, aby przejść prawdopodobnie, ale niestety nie mają kontrolę nad konfiguracją IIS i nie może zagwarantować że można go uruchomić https.

W takim przypadku najlepiej jest zaszyfrować fragmenty wiadomości SOAP w każdym przypadku (w końcu może nie być konieczne szyfrowanie całej wiadomości - tylko niektóre wrażliwe pola?), lub możesz zdecydować się na użycie HttpModule, aby przechwycić wszystkie wiadomości i operować na zawartości. W obu przypadkach prawdopodobnie będziesz musiał podać niestandardowe proxy.


0

My faktycznie korzysta GPW 3,0 w naszych serwisów internetowych, które zostały pierwotnie opracowane pre-WCF. Ze względów bezpieczeństwa korzystamy z systemu opartego na tokenie SAML zbudowanego na klasach kryptograficznych w System.Security.

Działa bardzo dobrze. Jednak ta metoda nie jest bynajmniej "prosta".


2

Wszystko, co robisz, aby zapewnić "szyfrowanie", które nie używa SSL/TLS, może być podatne na ataki. Teraz musisz zadać sobie pytanie, czy warto płonąć godzinami deweloperów, które można wydawać na funkcje zabezpieczające gumowymi kurczakami? Może to jest.

. Interfejsy API .NET, takie jak DPAPI i Win32 crypt32 API, ułatwiają szyfrowanie obiektów blobowych za pomocą kluczy statycznych. Ale w jaki sposób klienci otrzymają klucze? Każdy zainstalowany klient SOAP musi mieć klucz spalony w swojej konfiguracji lub odebrać go przez niezabezpieczony Internet.

Jest to problem rozwiązujący protokół SSL/TLS; taniec, który robisz z certyfikatami TLS, rozwiązuje problem przekazywania kluczy publicznych przez niezaufane kanały.


0

Można użyć szyfrowania parametrów w języku C# przy użyciu rozszerzenia System.Security.Cryptography.

Szyfrowanie parametrów i odszyfrowywanie ich będzie trudniejsze, ale o wiele bezpieczniejsze.

How To: Encrypt and Decrypt Data Using a Symmetric (Rijndael) Key (C#/VB.NET)

Używam tego Aproach dla OTP (One Time Password) usług internetowych, i to działa dobrze dla mnie.