CS.RCA
使用了有风险的密码算法
如果程序通过敏感数据运行或保护通信通道,则可以通过加密防止攻击者读取程序。一些过时的密码算法已被证明具有攻击弱点。
CS.RCA 检查器是专用的检查器,用于查找程序中是否使用了已知被破坏或有风险的密码算法。
漏洞与风险
如果程序使用被破损或有风险的算法处理数据,可能在程序中造成安全漏洞。CWE-327 列举了 MD4、MD5、SHA1、DES 和其他算法作为被破坏或有使用风险的算法示例。.Net Framework 的 System.Security.Cryptography 命名空间中有数种应该兼容的算法,但不建议使用:
过时算法 | 替代算法 |
---|---|
DES | AES |
TripleDES | AES |
MD5 | SHA256、SHA512 |
RC2 | AES |
DSA | RSA、ECDSA、ECDiffeHellman |
RIPEMD160 | SHA256、SHA512 |
Rijndael | AES |
SHA1 | SHA256、SHA512 |
示例 1
代表有风险算法的类的实例通过新的运算符创建。
复制
using System.Security.Cryptography;
namespace Program
{
class Program
{
public static void Main()
{
var desEncryptor = new DESCryptoServiceProvider(); // CS.RCA reported
}
}
}
示例 2
创建调用代表有风险算法的类的方法。
复制
using System.Security.Cryptography;
namespace Program
{
class Program
{
public static void Main()
{
var desEncryptor = DES.Create(); // CS.RCA reported
}
}
}
示例 3
自定义类继承自代表有风险算法的类。
复制
using System.Security.Cryptography;
namespace Program
{
class MyDESEcryptWrapper : DES // CS.RCA reported
{
...
}
}