Symetryczne przechowywanie kluczy

Moja firma będzie przechowywać poufne dane dla naszych klientów i będzie szyfrować dane za pomocą jednej z klas zarządzanych algorytmów szyfrowania. NET. Większość pracy została wykonana, ale nie wiemy, jak / gdzie przechowywać klucz. Zrobiłem lekkie przeszukiwanie i czytanie i wydaje się, że rozwiązanie sprzętowe może być najbezpieczniejsze. Czy ktoś ma jakieś zalecenia dotyczące kluczowego rozwiązania lub metody przechowywania?


Dzięki za odpowiedzi, wszyscy.

Spoulson, problemem są właściwie oba "zakresy", o których wspomniałeś. Chyba powinienem być jaśniejszy.

Same dane, a także logika, która je szyfruje i odszyfrowuje, są pobierane do ASP.NET dostawca profilu. Ten dostawca profilu umożliwia zarówno zaszyfrowane właściwości profilu, jak i zwykłe właściwości tekstowe. Zaszyfrowane wartości właściwości są przechowywane dokładnie w taki sam sposób, jak zwykłe wartości tekstowe - z oczywistym wyjątkiem, że zostały zaszyfrowane.

To powiedziawszy, klucz będzie musiał być przywołany z jednego z trzech powodów:

  1. autoryzowana aplikacja internetowa, działająca na autoryzowanym serwerze, musi szyfrować dane.
  2. to samo co #1, ale do odszyfrowania danych.
  3. Autoryzowani członkowie naszego zespołu biznesowego muszą wyświetlić zaszyfrowane dane.

Wyobrażam sobie, że nikt nigdy nie zna klucza - będzie kawałek oprogramowania kontrolującego rzeczywistą szyfrowanie i deszyfrowanie danych. To powiedziawszy, klucz nadal musi pochodzić z gdzieś .

Pełne ujawnienie-jeśli nie mogłeś powiedzieć, nigdy wcześniej nie robiłem czegoś takiego, więc jeśli jestem całkowicie poza moim postrzeganiem, jak to powinno działać, daj mi znać.

Author: Daniel Schaffer, 2008-09-08

9 answers

Istnieją tylko dwa realne rozwiązania (technicznego aspektu) tego problemu. Zakładając, że tylko aplikacja potrzebuje dostępu do klucza...

  1. Hardware Security Module (hsm) - zwykle dość drogi i nie prosty w implementacji. Może to być dedykowane urządzenie (np. nCipher) lub konkretny token (np. Alladin eToken). A potem nadal musisz określić, jak obsługiwać ten sprzęt...

  2. DPAPI (Windows Data Protection API). Są zajęcia na ten temat w System.Ochrona.Kryptografia (ProtectedMemory, ProtectedStorage, itp.). To przekazuje zarządzanie kluczami do systemu operacyjnego - i dobrze sobie z tym radzi. Użyty w "USER_MODE", DPAPI zablokuje odszyfrowanie klucza pojedynczemu użytkownikowi, który go zaszyfrował. (Hasło użytkownika jest częścią schematu szyfrowania/odszyfrowywania-i nie, zmiana hasła go nie fauluje.)

Dodano: najlepiej używać DPAPI do ochrony klucza głównego, a nie szyfrowania dane aplikacji bezpośrednio. I nie zapomnij ustawić silne ACL na zaszyfrowanym kluczu...

 9
Author: AviD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-20 17:58:25

W odpowiedzi na # 3 Tej ODPOWIEDŹ z OP

Jednym ze sposobów, aby upoważnieni członkowie mogli przeglądać zaszyfrowane dane, ale bez ich faktycznej znajomości klucza, byłoby użycie klucza escrow (RSA labs) (wikipedia)

Podsumowując klucz jest podzielony na oddzielne części i przekazywany "powiernikom". Ze względu na naturę kluczy prywatnych każdy segment jest bezużyteczny dla siebie. Jeśli jednak trzeba odszyfrować dane, to "powiernicy" mogą zebrać segmenty do całego klucza.

 1
Author: roo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:19:33

Mamy ten sam problem i przeszliśmy ten sam proces.
Musimy uruchomić proces na jednym komputerze (kliencie), który następnie loguje się na drugim komputerze (serwerze bazy danych).

Obecnie uważamy, że najlepszą praktyką będzie:

  • Operator ręcznie uruchamia proces na komputerze klienckim.
  • klient PC prosi operatora ojego osobiste dane logowania.
  • Operator wprowadza swoje dane uwierzytelniające.
  • klient PC używa tych aby zalogować się na serwer bazy danych.
  • klient PC żąda własnych danych logowania z serwera bazy danych.
  • Serwer bazy danych sprawdza, czy poświadczenia logowania operatora są upoważnione do uzyskania poświadczeń procesu klienta i zwraca je na komputer klienta.
  • komputer kliencki loguje się z serwera datbase.
  • komputer kliencki loguje się z powrotem do serwera bazy danych przy użyciu własnych danych uwierzytelniających.

Skutecznie, hasło logowania operatora jest kluczem, ale nie jest przechowywane gdziekolwiek.

 1
Author: AJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 15:05:57

Microsoft Rights Management Server (RMS) ma podobny problem. Po prostu rozwiązuje go, szyfrując jego konfigurację za pomocą hasła głównego. ...Hasło na hasło, jeśli chcesz.

 0
Author: spoulson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 17:01:15

Najlepiej jest fizycznie zabezpieczyć sprzęt, na którym znajduje się klucz. Ponadto, nigdy nie zapisuj go na dysk - znajdź sposób, aby zapobiec wysyłaniu tej sekcji pamięci na dysk. Podczas szyfrowania / deszyfrowania klucz musi zostać załadowany do pamięci, a przy niezabezpieczonym sprzęcie zawsze jest to miejsce ataku.

Są, jak powiedziałeś, sprzętowe urządzenia szyfrujące, ale nie skalują się - wszystkie szyfrowanie / deszyfrowanie przechodzi przez chip.

 0
Author: Kyle Cronin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 18:07:59

Chyba źle zrozumiałam twoje pytanie. To, o co prosisz, Nie dotyczy sposobu, w jaki aplikacja radzi sobie z przechowywaniem kluczy, ale raczej sposobu, w jaki firma będzie je przechowywać.

W takim przypadku masz dwa oczywiste wyjścia:

  • Fizyczny: zapis na dysk USB, nagrywanie na CD itp. Przechowywać w fizycznie bezpiecznym miejscu. Ale napotkasz problem rekurencyjny: gdzie przechowujesz klucz do skarbca? Zazwyczaj delegujesz 2 lub więcej osób (lub zespół) do przeprowadzenia klucze.

  • Oprogramowanie: Cyber-Ark prywatna Arka jest tym, czego moja firma używa do przechowywania swoich tajnych informacji cyfrowych. Przechowujemy wszystkie hasła administratora, klucze licencyjne, klucze prywatne itp. Działa poprzez uruchomienie serwera Windows "vault", który nie jest dołączony do domeny, zapora wszystkich portów z wyjątkiem własnego i przechowuje wszystkie swoje dane zaszyfrowane na dysku. Użytkownicy uzyskują dostęp za pośrednictwem interfejsu internetowego, który najpierw uwierzytelnia użytkownika, a następnie bezpiecznie komunikuje się z serwerem vault poprzez interfejs podobny do Eksploratora. Wszystkie zmiany i wersje są rejestrowane. Ale to również ma ten sam problem rekurencyjny... PŁYTA CD Master admin access. To jest przechowywane w naszym fizycznym sejfie z ograniczonym dostępem.

 0
Author: spoulson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 20:09:06

Użyj mocno zakodowanego klucza, aby zaszyfrować wygenerowany klucz przed jego zapisaniem. Możesz to napisać wszędzie.

Tak, możesz znaleźć klucz zakodowany na twardo, ale dopóki zakładasz, że można przechowywać klucz symetryczny w dowolnym miejscu, nie jest to mniej bezpieczne.

 0
Author: Jason Cohen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 21:06:00

W zależności od aplikacji można użyć metody Diffie-Hellman , aby dwie strony mogły bezpiecznie uzgodnić klucz symetryczny.

Po pierwszej, bezpiecznej wymianie klucz jest uzgadniany, a reszta sesji (lub nowa sesja) może używać nowego klucza symetrycznego.

 0
Author: Jason Cohen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-08 21:07:18

Możesz zaszyfrować klucz symetryczny za pomocą innego klucza symetrycznego, który pochodzi z hasła, używając czegoś w rodzaju PBKDF2 .

Poproś użytkownika o podanie hasła, wygeneruj nowy klucz używany do szyfrowania danych, Wygeneruj inny klucz za pomocą hasła, a następnie Zaszyfruj i przechowuj klucz szyfrowania danych.

Nie jest tak bezpieczny jak używanie tokena sprzętowego, ale nadal może być wystarczająco dobry i jest dość łatwy w użyciu.

 0
Author: sock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 13:51:56