Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nazwa użytkownika i hasło pozostają powszechnie stosowanymi poświadczeniami do uwierzytelniania, mimo że silniejsze metody, takie jak certyfikaty, dane biometryczne i klucze dostępu, stają się coraz bardziej rozpowszechnione. Klucze szyfrowania i inne wpisy tajne wymagają również ochrony. Systemy informatyczne muszą bezpiecznie przetwarzać te poświadczenia, aby chronić się przed kradzieżą poświadczeń, atakami odtworzeniowymi i ruchem bocznym napastników.
Warning
Nigdy nie należy kodować haseł, kluczy interfejsu API, parametrów połączenia lub innych wpisów tajnych w kodzie źródłowym. Zakodowane na stałe wpisy tajne są trywialnie wyodrębniane przez osoby atakujące przy użyciu dekompilatorów, inspekcji pamięci lub przecieków kodu źródłowego. Jest to jedna z najczęstszych luk w zabezpieczeniach poświadczeń wykorzystywana w środowisku naturalnym.
Ważna
Po zakończeniu korzystania z haseł lub wpisów tajnych w pamięci natychmiast zastąp bufor przez wywołanie metody SecureZeroMemory. W przeciwieństwie do memset, kompilator nie może zoptymalizować SecureZeroMemory, co zapewnia, że tajne dane są faktycznie usuwane z pamięci.
Nowoczesne zarządzanie poświadczeniami
W przypadku nowego programowania w Windows użyj tych metod w kolejności preferencji:
- W miarę możliwości eliminuj hasła. Użyj Windows Hello, kluczy dostępu (FIDO2/WebAuthn) lub uwierzytelniania opartego na certyfikatach, aby całkowicie uniknąć obsługi haseł.
- Użyj menedżera poświadczeń Windows. Wywołaj CredWrite i CredRead, aby przechowywać i pobierać poświadczenia w magazynie poświadczeń systemu operacyjnego, który szyfruje je przy użyciu klucza sesji logowania danego użytkownika.
- Użyj DPAPI do lokalnego przechowywania sekretów. Wywołaj metodę CryptProtectData , aby zaszyfrować wpisy tajne, które muszą być utrwalane lokalnie. Interfejs DPAPI łączy szyfrowanie z kontem użytkownika lub maszyną, zapewniając ochronę w głębi systemu.
- W przypadku poświadczeń usługi użyj tożsamości zarządzanych lub usługi Key Vault. Usługi uruchomione na Azure powinny używać tożsamości zarządzanych. Usługi lokalne powinny pobierać sekrety z bezpiecznego magazynu w czasie działania, zamiast przechowywać je w plikach konfiguracji.
Zasady obsługi haseł
Gdy hasła muszą być obsługiwane w kodzie:
- Zbierz hasła tak późno, jak to możliwe, i odrzuć je tak szybko, jak to możliwe. Zminimalizuj okres, przez który tajny klucz znajduje się w pamięci.
- Nigdy nie rejestruj haseł ani wpisów tajnych. Upewnij się, że dzienniki diagnostyczne, dzienniki zdarzeń i zrzuty po awarii nie zawierają danych uwierzytelniających.
- Nigdy nie przesyłaj haseł w postaci zwykłego tekstu. Zawsze używaj protokołu TLS/HTTPS lub równoważnego szyfrowanego kanału.
- Monituj bezpiecznie. Użyj CredUIPromptForWindowsCredentials, aby pobrać poświadczenia za pomocą standardowego okna dialogowego poświadczeń systemu Windows, które zapewnia bezpieczną izolację pulpitu.
Aby uzyskać więcej informacji na temat zagrożeń i środków zaradczych: