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 9-ben | Nem |
Feljegyzé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();
Solution
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RC2-titkosítás megsértése
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Solution
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
DES-titkosítás megsértése
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Solution
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}