2013-01-08 14 views
8

Używam kontenerów kryptograficznych Win32 dla poszczególnych użytkowników (za pośrednictwem klasy .Net RSACryptoServiceProvider) do przechowywania klucza prywatnego używanego do odszyfrowywania przechowywanych haseł w menedżerze haseł.Jak bezpieczne są okna kontenerów kryptograficznych?

Jak bezpieczny jest przechowywanie tego klucza prywatnego? Oczywiście każdy program uruchomiony z tego samego konta użytkownika może uzyskać do niego dostęp. Ale czy klucz jest rzeczywiście zaszyfrowany w oparciu o hasło użytkownika?

Czy mogę założyć, że klucz prywatny jest dostępny tylko, gdy użytkownik jest zalogowany? Czy usługa (lub inne konto) może nadal wydobywać klucz? Czy administrator komputera nie znający hasła użytkownika może je wyodrębnić? Czy klucz może zostać wyodrębniony poprzez zresetowanie hasła użytkownika za pomocą konta administracyjnego? Jeśli komputer zostanie skradziony, a osoba atakująca może uzyskać dostęp do dysku twardego (ale nie zna hasła użytkownika), czy może wyodrębnić klucz prywatny? Jeśli użytkownik zablokował sesję, czy atakujący może wyodrębnić klucz z pamięci za pomocą konta administratora/sterownika jądra?

P.S. Wiem o wzorze klucza głównego, ale jest to niedopuszczalne w moim przypadku, więc muszę przechowywać hasła w możliwie najbezpieczniejszy sposób.

+0

Trochę trudno jest zrozumieć, w jaki sposób szyfrujesz klucz, kiedy brzmi to tak, jakbyś chciał zaszyfrować hasło. Wywołanie RSA.ExportParameters (true) w dowolnym miejscu, aby odszyfrować hasło, wymaga fizycznego zabezpieczenia w celu ochrony klucza prywatnego. Zawsze implementuj tylko loginy, przechowując i porównując skrót hasła. –

Odpowiedz

2

Prywatne klucze użytkownika powinny być dostępne tylko po zalogowaniu się użytkownika i nie można uzyskać do nich dostępu po prostu resetując hasło użytkownika, a następnie logując się przy użyciu zresetowanego hasła (w rzeczywistości przed zresetowaniem hasła użytkownika są wyświetlane ostrzeżenia, że użytkownik utraci dostęp do zaszyfrowanych danych itp.) Patrz: http://support.microsoft.com/kb/290260

Jednak po zalogowaniu użytkownika istnieje możliwość, że procesy innych użytkowników na tym samym komputerze z odpowiednimi uprawnieniami (zwykle są przyznawane tylko administratorom/kont systemowych), aby uzyskać dostęp do przechowywanych kluczy, np poprzez wstrzyknięcie kodu do procesu użytkownika, który będzie działał, jestem kontekstem użytkownika i dlatego mogę zrobić wszystko, co użytkownik może zrobić z kluczem (użyć go do odszyfrowania, podpisania lub wyeksportowania klucza, itp.).

Włączenie silnej ochrony klucza prywatnego może złagodzić niektóre z tych problemów, wymagając od użytkownika wprowadzenia hasła do klucza, gdy jest używany. Mimo to prawdopodobnie złośliwy kod nadal będzie przechwytywał hasło klucza.

Powiązane problemy