CS.RCA

使用了有风险的密码算法

如果程序通过敏感数据运行或保护通信通道,则可以通过加密防止攻击者读取程序。一些过时的密码算法已被证明具有攻击弱点。

CS.RCA 检查器是专用的检查器,用于查找程序中是否使用了已知被破坏或有风险的密码算法。

漏洞与风险

如果程序使用被破损或有风险的算法处理数据,可能在程序中造成安全漏洞。CWE-327 列举了 MD4、MD5、SHA1、DES 和其他算法作为被破坏或有使用风险的算法示例。.Net FrameworkSystem.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
      {
          ...
      }
  }

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。