/ / Przechowywanie kluczy szyfrowania / odszyfrowywania w .NET - .net, cryptography

Przechowywanie kluczy szyfrowania / odszyfrowywania w .NET - .net, cryptography

Jakie są najlepsze praktyki, aby to zrobić w.NETTO? Mój problem polega na tym, że chcę współdziałać z usługą internetową, którą stworzyłem. Aby upewnić się, że żaden "twórczy" użytkownik nie może nadużywać usługi, chcę zaszyfrować argument (wynik jest wrażliwy).

Myślałem, że jestem sprytny, używając webservices, zamiast mieć moją aplikację bezpośrednio do naszego DB, ale jestem najwyraźniej nie dość sprytny, aby wiedzieć, co zrobić z kluczem.

Jak więc przechowywać klucz, zaszyfruję argument, w mojej zainstalowanej lokalnie aplikacji? Oczywiście chciałabym zapobiec "kreatywnym" użytkownikom, aby móc je odzyskać.

Przypuszczam, że mógłbym nakarmić klucz, zamiast tego z usługi sieciowej, ale nie widzę w tym żadnych korzyści. Ludzie wciąż mogą po prostu wywołać usługę i zdobyć klucz.

TL; DR Ogólnie rzecz biorąc, w jaki sposób obsługiwać klucze szyfrowania / deszyfrowania w .NET, kiedy każdy może dekompilować kod i uzyskać klucz (jeśli jest przechowywany w kodzie)?

Odpowiedzi:

0 dla odpowiedzi № 1

Prostym sposobem jest przechowywanie klucza w konfiguracji, a następnie szyfrowanie pliku konfiguracyjnego (albo web.config lub app.config) - szczegóły są tutaj.

Innym rozwiązaniem jest zabezpieczenie łącza do usługi sieci Web za pomocą certyfikatu i osadzenie certyfikatu w aplikacji jako zasobu. To by następnie przestało bardzo kreatywni użytkownicy za pomocą np. Wireshark, aby odczytać ruch w drodze do iz usługi. Szczegóły na ten temat tutaj.