OWASP-Kategorie:MASVS-CRYPTO: Cryptography
Übersicht
Trotz der weitverbreiteten Verwendung von Kryptografie zum Schutz der Vertraulichkeit und Integrität von Daten besteht ein erhebliches Risiko, wenn Entwickler versehentlich schwache oder veraltete kryptografische Algorithmen implementieren. Diese Sicherheitslücke beruht auf den inhärenten Schwachstellen dieser Algorithmen, die von böswilligen Akteuren mit der erforderlichen Rechenleistung oder dem erforderlichen Wissen ausgenutzt werden können. Die Folgen einer solchen Ausnutzung können schwerwiegend sein und möglicherweise zu unbefugtem Zugriff, Datenpannen und Manipulationen sensibler Informationen führen.
Positiv beeinflussen
Sensible Daten können offengelegt, geändert oder gefälscht werden. Defekte oder riskante kryptografische Algorithmen können zu Sicherheitslücken führen und missbraucht werden, um sensible Informationen zu entschlüsseln, Daten zu manipulieren oder sich als legitime Entitäten auszugeben. Die Folgen der Ausnutzung solcher Sicherheitslücken können von Datenpannen und finanziellen Verlusten bis hin zu Reputationsschäden und dem Verlust des Vertrauens der Nutzer reichen.
Risiko: Schwache oder fehlerhafte kryptografische Hash-Funktionen
Die Verwendung schwacher oder fehlerhafter kryptografischer Hash-Funktionen (z. B. MD5
oder SHA1
) birgt ein erhebliches Risiko für die Sicherheit und Integrität von Daten. Hash-Funktionen sind so konzipiert, dass sie eindeutige Fingerabdrücke (Hashes) mit fester Länge von Eingabedaten erstellen. Dadurch eignen sie sich für verschiedene Zwecke, darunter die Überprüfung der Datenintegrität, die Speicherung von Passwörtern und digitale Signaturen. Wenn jedoch schwache oder kompromittierte Hashfunktionen verwendet werden, können mehrere Sicherheitslücken entstehen:
- Kollisionsangriffe: Schwache Hash-Funktionen sind anfällig für Kollisionsangriffe, bei denen ein Angreifer zwei verschiedene Eingaben findet, die denselben Hash-Wert erzeugen. So können sie schädliche Daten unbemerkt durch legitime Daten ersetzen und die Datenintegrität gefährden.
- Datenpannen: Wenn Passwörter mit einem schwachen Algorithmus gehasht werden, kann ein erfolgreicher Einbruch in ein System zur Offenlegung von Anmeldedaten führen. Angreifer könnten dann Rainbow Tables oder andere Techniken verwenden, um die Passwörter zu knacken und unbefugten Zugriff auf Konten zu erhalten.
- Ablehnung digitaler Signaturen: Schwache Hash-Funktionen, die in digitalen Signaturen verwendet werden, können ausgenutzt werden, um gefälschte Signaturen zu erstellen. Dadurch wird es schwierig, die Authentizität und Integrität von Dokumenten oder Nachrichten zu bestimmen.
Maßnahmen zur Risikominderung
Um diese Risiken zu minimieren, ist es entscheidend, starke, gut geprüfte kryptografische Hash-Funktionen wie SHA-2
oder SHA-3
zu verwenden und sie auf dem neuesten Stand zu halten, wenn neue Sicherheitslücken entdeckt werden. Darüber hinaus kann die Datensicherheit durch die Anwendung von Sicherheitsmaßnahmen wie das Salting von Passwörtern und die Verwendung von passwortspezifischen Hashing-Algorithmen wie bcrypt
oder Argon2
weiter verbessert werden.
Risiko: Schwache oder fehlerhafte kryptografische Verschlüsselungsfunktionen
Die Verwendung schwacher oder fehlerhafter kryptografischer Verschlüsselungsfunktionen (z. B. DES
oder RC4
) birgt erhebliche Risiken für die Vertraulichkeit sensibler Daten. Die Verschlüsselung soll Informationen schützen, indem sie in ein unlesbares Format umgewandelt werden. Wenn der Verschlüsselungsalgorithmus jedoch fehlerhaft ist, können diese Schutzmaßnahmen umgangen werden:
- Datenpannen:Schwache Verschlüsselungsalgorithmen sind anfällig für verschiedene Angriffe, darunter Brute-Force-Angriffe, Angriffe bei bekanntem Klartext und Kryptoanalysetechniken. Wenn diese Angriffe erfolgreich sind, können verschlüsselte Daten offengelegt werden, was zu unbefugtem Zugriff auf sensible Informationen wie persönliche Daten, Finanzunterlagen oder vertrauliche Geschäftsdaten führen kann.
- Datenmanipulation und ‑verfälschung:Selbst wenn ein Angreifer die Daten nicht vollständig entschlüsseln kann, kann er sie möglicherweise unbemerkt manipulieren, wenn der Verschlüsselungsalgorithmus schwach ist. Dies kann zu unbefugten Änderungen an Daten führen, was möglicherweise Betrug, Falschdarstellung oder andere böswillige Aktivitäten zur Folge hat.
Maßnahmen zur Risikominderung
Starke kryptografische Algorithmen in Verschlüsselungsfunktionen verwenden
Um diese Risiken zu minimieren, ist es entscheidend, starke, gut geprüfte kryptografische Algorithmen zu verwenden und Best Practices für die Schlüsselverwaltung und die Implementierung der Verschlüsselung zu befolgen. Auch das regelmäßige Aktualisieren von Verschlüsselungsalgorithmen und das Informieren über neue Bedrohungen sind unerlässlich, um eine robuste Datensicherheit zu gewährleisten.
Empfohlene Standardalgorithmen:
- Symmetrische Verschlüsselung:
AES-128
/AES-256
mitGCM
-ModusChacha20
- Asymmetrische Verschlüsselung:
RSA-2048
/RSA-4096
mitOAEP
-Abstand
Sichere Primitiven aus einer Kryptografiebibliothek verwenden, um häufige Fehler zu vermeiden
Die Auswahl eines geeigneten Verschlüsselungsalgorithmus ist zwar entscheidend, um Sicherheitslücken wirklich zu minimieren, aber Sie sollten auch eine Kryptografiebibliothek verwenden, die eine optimierte API bietet und sichere Standardkonfigurationen in den Vordergrund stellt. Dieser Ansatz stärkt nicht nur die Sicherheit Ihrer Anwendungen, sondern verringert auch die Wahrscheinlichkeit, dass durch Programmierfehler Sicherheitslücken entstehen. Tink vereinfacht beispielsweise die Auswahl der Verschlüsselung, indem es zwei verschiedene Optionen bietet: AEAD
- und Hybrid
-Verschlüsselung. So können Entwickler leichter fundierte Sicherheitsentscheidungen treffen.
Risiko: Schwache oder fehlerhafte kryptografische Signaturfunktionen
Die Verwendung schwacher oder fehlerhafter kryptografischer Signaturfunktionen (z. B. RSA-PKCS#1 v1.5
oder Funktionen, die auf schwachen Hashfunktionen basieren) birgt erhebliche Risiken für die Integrität von Daten und Kommunikation. Digitale Signaturen sollen Authentifizierung, Nichtabstreitbarkeit und Datenintegrität bieten und dafür sorgen, dass eine Nachricht oder ein Dokument von einem bestimmten Absender stammt und nicht manipuliert wurde. Wenn der zugrunde liegende Signaturalgorithmus jedoch fehlerhaft ist, können diese Zusicherungen beeinträchtigt werden:
- Fälschen von Signaturen: Schwache Signaturalgorithmen können anfällig für Angriffe sein, die es böswilligen Akteuren ermöglichen, gefälschte Signaturen zu erstellen. Das bedeutet, dass sie sich als legitime Unternehmen ausgeben, Dokumente fälschen oder Nachrichten manipulieren können, ohne dass dies erkannt wird.
- Ablehnung von Signaturen: Wenn ein Signaturalgorithmus manipuliert wird, kann ein Unterzeichner fälschlicherweise behaupten, dass er ein Dokument nicht unterzeichnet hat. Dies untergräbt das Prinzip der Nichtabstreitbarkeit und führt zu rechtlichen und logistischen Problemen.
- Datenmanipulation und ‑verfälschung: In Szenarien, in denen Signaturen zum Schutz der Datenintegrität verwendet werden, könnte ein schwacher Algorithmus es Angreifern ermöglichen, die Daten zu ändern, ohne die Signatur zu ungültig zu machen. Dies würde zu unentdeckten Manipulationen und einer potenziellen Gefährdung wichtiger Informationen führen.
Maßnahmen zur Risikominderung
Starke kryptografische Signaturalgorithmen verwenden
Um diese Risiken zu minimieren, ist es entscheidend, starke, gut geprüfte kryptografische Signaturalgorithmen zu verwenden:
RSA-2048
/RSA-4096
mitPSS
-Abstand- Elliptic Curve Digital Signature Algorithm (
ECDSA
) mit sicheren Kurven
Sichere Primitiven aus einer Kryptografiebibliothek verwenden, um häufige Fehler zu vermeiden
Die Auswahl des richtigen Signaturalgorithmus ist unerlässlich. Um Sicherheitslücken wirklich zu minimieren, sollten Sie jedoch eine Kryptografiebibliothek in Betracht ziehen, die standardmäßig robuste Sicherheitsgarantien bietet. Tink vereinfacht beispielsweise die Auswahl von Signaturen, indem es ECDSA
mit sicheren Kurven als Standardoption anbietet – alles innerhalb einer einfachen und umfassenden API. Dieser Ansatz erhöht nicht nur die Sicherheit, sondern vereinfacht auch die Entwicklung, da keine komplexe Konfiguration oder Entscheidungsfindung erforderlich ist.
Ressourcen
- Tink Crypto-Bibliothek
- Android-App-Qualität: Kryptografie
- Digitale Signatur mit Tink
- Hybridverschlüsselung mit Tink
- Authentifizierte Verschlüsselung mit Tink
- Android-Sicherheits-Lint für schwache oder fehlerhafte kryptografische Hash- und Verschlüsselungsfunktionen
- CWE-327: Use of a Broken or Risky Cryptographic Algorithm
- CWE-328: Use of Weak Hash (Verwendung eines schwachen Hash)
- CWE-780: Verwendung des RSA-Algorithmus ohne OAEP
- NIST-Seite zu genehmigten Hash-Funktionen
- Advanced Encryption Standard (Wikipedia)
- Secure Hash Algorithm 2 (Wikipedia)
- Secure Hash Algorithm 3 (Wikipedia)
- RSA-Kryptosystem (Wikipedia)
- Elliptic Curve Digital Signature Algorithm (Wikipedia)
- Stream cipher ChaCha (Wikipedia)
- Salting password (Wikipedia)
- Hybrid-Kryptosystem (Wikipedia)
- Authentifizierte Verschlüsselung