Delen via


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:

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())
{
  ...
}