Megosztás a következőn keresztül:


CA5351 Ne használjon hibás titkosítási algoritmusokat

Tulajdonság Érték
Szabályazonosító CA5351
Cím Ne használjon hibás titkosítási algoritmusokat
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Megjegyzés:

Ez a figyelmeztetés legutóbb 2015 novemberében frissült.

Ok

Az olyan kivonatoló funkciók, mint MD5 például a titkosítási algoritmusok, mint DES például a RC2 jelentős kockázat, és jelentős kockázatot jelenthetnek, és bizalmas információk expozícióját eredményezhetik triviális támadási technikákkal, például találgatásos támadásokkal és kivonatos ütközésekkel.

Az alábbi titkosítási algoritmusok listája ismert titkosítási támadásoknak van kitéve. A titkosítási kivonatoló algoritmust MD5 hash ütközési támadásoknak vetik alá. A használattól függően a kivonat ütközése megszemélyesítéshez, illetéktelen beavatkozáshoz vagy más típusú támadásokhoz vezethet olyan rendszereken, amelyek egy kivonatolási függvény egyedi titkosítási kimenetére támaszkodnak. A titkosítási algoritmusok DES titkosítási RC2 támadásoknak vannak kitéve, amelyek a titkosított adatok nem szándékos közzétételét eredményezhetik.

Szabály leírása

A hibás titkosítási algoritmusok nem tekinthetők biztonságosnak, és használatukat el kell kerülni. Az MD5 kivonatoló algoritmus hajlamos az ismert ütközési támadásokra, bár az adott biztonsági rés a használat környezetétől függően eltérő lesz. Az adatintegritást biztosító kivonatoló algoritmusok (például a fájlaláírás vagy a digitális tanúsítvány) különösen sebezhetők. Ebben az összefüggésben a támadók két különálló adatot hozhatnak létre, például a jóindulatú adatokat rosszindulatú adatokkal helyettesíthetik anélkül, hogy módosítanák a kivonat értékét, vagy érvénytelenítenék a kapcsolódó digitális aláírást.

Titkosítási algoritmusok esetén:

  • DES a titkosítás egy kis kulcsméretet tartalmaz, amely egy napnál rövidebb ideig találgatásos lehet.

  • RC2 a titkosítás egy kapcsolódó kulcsos támadásra érzékeny, ahol a támadó matematikai kapcsolatokat talál az összes kulcsérték között.

Ez a szabály akkor aktiválódik, ha a forráskódban megtalálja a fenti titkosítási függvények bármelyikét, és figyelmeztetést ad a felhasználónak.

Szabálysértések kijavítása

Használjon kriptográfiailag erősebb lehetőségeket:

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését, kivéve, ha egy titkosítási szakértő megvizsgálta.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Az alábbi pszeudokódminták a szabály által észlelt mintát és a lehetséges alternatívákat szemléltetik.

MD5 kivonatolási szabálysértés

using System.Security.Cryptography;
...
var hashAlg = MD5.Create();

Megoldás:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

RC2-titkosítás megsértése

using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();

Megoldás:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}

DES-titkosítás megsértése

using System.Security.Cryptography;
...
DES encAlg = DES.Create();

Megoldás:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}