Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Benutzernamen- und Kennwortanmeldeinformationen bleiben für die Authentifizierung üblich, auch wenn stärkere Methoden wie Zertifikate, Biometrie und Passkeys weiter verbreitet werden. Verschlüsselungsschlüssel und andere geheime Schlüssel erfordern auch Schutz. Softwaresysteme müssen diese Anmeldeinformationen sicher verarbeiten, um den Diebstahl von Anmeldeinformationen, Wiederholungsangriffe und laterale Bewegungen von Angreifern zu widerstehen.
Warnung
Niemals hartcodieren Sie Kennwörter, API-Schlüssel, Verbindungszeichenfolgen oder andere geheime Schlüssel im Quellcode. Fest im Code hinterlegte Geheimnisse lassen sich von Angreifern mithilfe von Dekompilierern, Speicheranalysen oder Quellcode-Lecks mühelos extrahieren. Dies ist eine der am häufigsten tatsächlich ausgenutzten Schwachstellen im Zusammenhang mit Anmeldeinformation.
Important
Wenn Sie die Verwendung von Kennwörtern oder geheimen Schlüsseln im Arbeitsspeicher abgeschlossen haben, überschreiben Sie den Puffer sofort, indem Sie SecureZeroMemory aufrufen. Im Gegensatz zu memset kann der Compiler SecureZeroMemory nicht wegoptimieren, wodurch sichergestellt wird, dass Geheimnisse tatsächlich gelöscht werden.
Moderne Zugangsdatenverwaltung
Verwenden Sie für neue Entwicklungen unter Windows die folgenden Ansätze in der folgenden bevorzugten Reihenfolge:
- Entfernen Sie kennwörter, sofern möglich. Verwenden Sie Windows Hello, Passkeys (FIDO2/WebAuthn) oder zertifikatbasierte Authentifizierung, um die Behandlung von Kennwörtern vollständig zu vermeiden.
- Verwenden Sie die Windows-Anmeldeinformationsverwaltung. Rufen Sie CredWrite und CredRead auf, um Anmeldeinformationen im Betriebssystem-Anmeldeinformationstresor zu speichern und abzurufen, wodurch sie mit dem Anmeldesitzungsschlüssel des Benutzers verschlüsselt werden.
- Verwenden Sie DPAPI für den lokalen geheimen Speicher. Rufen Sie CryptProtectData auf, um geheime Schlüssel zu verschlüsseln, die lokal beibehalten werden müssen. DPAPI bindet die Verschlüsselung an das Benutzerkonto oder den Computer und bietet damit mehrschichtigen Schutz.
- Verwenden Sie für Dienstanmeldeinformationen verwaltete Identitäten oder Schlüsseltresore. Dienste, die auf Azure ausgeführt werden, sollten verwaltete Identitäten verwenden. Lokale Dienste sollten geheime Schlüssel aus einem sicheren Tresor zur Laufzeit abrufen, anstatt sie in Konfigurationsdateien zu speichern.
Grundsätze für die Kennwortbehandlung
Wenn Kennwörter im Code behandelt werden müssen:
- Sammeln Sie Kennwörter so spät wie möglich, und verwerfen Sie sie so früh wie möglich. Minimieren Sie das Fenster, in dem der geheime Schlüssel im Arbeitsspeicher vorhanden ist.
- Protokollieren Sie niemals Kennwörter oder geheime Schlüssel. Stellen Sie sicher, dass Diagnoseprotokolle, Ereignisprotokolle und Absturzabbilder keine Anmeldeinformationen enthalten.
- Übertragen Sie Niemals Kennwörter im Nur-Text-Format. Verwenden Sie immer TLS/HTTPS oder einen entsprechenden verschlüsselten Kanal.
- Verwenden Sie sichere Eingabeaufforderungen. Verwenden Sie CredUIPromptForWindowsCredentials, um Anmeldeinformationen über den Standarddialog für Windows-Anmeldeinformationen abzufragen, der die Isolierung des sicheren Desktops gewährleistet.
Weitere Informationen zu Bedrohungen und Gegenmaßnahmen: