CA5351 Gebruik geen gebroken cryptografische algoritmen
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA5351 |
Titel | Geen gebroken cryptografische algoritmen gebruiken |
Categorie | Beveiliging |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Nr. |
Notitie
Deze waarschuwing is voor het laatst bijgewerkt op november 2015.
Oorzaak
Hashingfuncties zoals MD5 en versleutelingsalgoritmen zoals DES en RC2 kunnen aanzienlijke risico's opleveren en kunnen leiden tot blootstelling van gevoelige informatie via triviale aanvalstechnieken, zoals beveiligingsaanvallen en hash-botsingen.
De onderstaande lijst met cryptografische algoritmen is onderhevig aan bekende cryptografische aanvallen. Het cryptografische hash-algoritme MD5 is onderhevig aan hash-botsingsaanvallen. Afhankelijk van het gebruik kan een hash-botsing leiden tot imitatie, manipulatie of andere soorten aanvallen op systemen die afhankelijk zijn van de unieke cryptografische uitvoer van een hash-functie. De versleutelingsalgoritmen DES en RC2 zijn onderhevig aan cryptografische aanvallen die kunnen leiden tot onbedoelde openbaarmaking van versleutelde gegevens.
Beschrijving van regel
Gebroken cryptografische algoritmen worden niet beschouwd als veilig en het gebruik ervan moet worden afgeraden. Het MD5-hash-algoritme is vatbaar voor bekende botsingsaanvallen, hoewel het specifieke beveiligingsprobleem varieert op basis van de context van gebruik. Hash-algoritmen die worden gebruikt om gegevensintegriteit (bijvoorbeeld bestandshandtekening of digitaal certificaat) te garanderen, zijn bijzonder kwetsbaar. In deze context kunnen aanvallers twee afzonderlijke gegevens genereren, zodat goedaardige gegevens kunnen worden vervangen door schadelijke gegevens, zonder de hash-waarde te wijzigen of een bijbehorende digitale handtekening ongeldig te maken.
Voor versleutelingsalgoritmen:
DES versleuteling bevat een kleine sleutelgrootte, die in minder dan een dag brute-forceren kan zijn.
RC2 versleuteling is vatbaar voor een aanval met gerelateerde sleutels, waarbij de aanvaller wiskundige relaties tussen alle sleutelwaarden vindt.
Deze regel wordt geactiveerd wanneer een van de bovenstaande cryptografische functies in broncode wordt gevonden en een waarschuwing voor de gebruiker genereert.
Schendingen oplossen
Cryptografisch sterkere opties gebruiken:
Gebruik voor MD5 hashes in de SHA-2-familie (bijvoorbeeld SHA512, SHA384). SHA256
Gebruik Aes versleuteling voor DES en RC2.
Wanneer waarschuwingen onderdrukken
Onderdrukt geen waarschuwing van deze regel, tenzij deze is beoordeeld door een cryptografische expert.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Voorbeelden van pseudocode
De volgende pseudocodevoorbeelden illustreren het patroon dat door deze regel is gedetecteerd en mogelijke alternatieven.
SCHENDING VAN MD5-hashing
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Oplossing:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Schending van RC2-versleuteling
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Oplossing:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
Schending van DES-versleuteling
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Oplossing:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}