CodeQL 文档

弱加密

ID: cs/weak-encryption
Kind: problem
Security severity: 7.5
Severity: warning
Precision: high
Tags:
   - security
   - external/cwe/cwe-327
Query suites:
   - csharp-code-scanning.qls
   - csharp-security-extended.qls
   - csharp-security-and-quality.qls

单击以在 CodeQL 代码库中查看查询

弱加密算法提供的安全性很低。例如,DES 加密仅使用 56 位密钥,不再为敏感数据提供足够的保护。对于非常敏感的数据,也应弃用 TripleDES:虽然它通过使用 168 位密钥改进了 DES,但它实际上最多只提供 112 位的安全性。

建议

您应该切换到更安全的加密算法,例如 AES(高级加密标准),并使用与其应用场景相匹配的密钥长度。不要使用 ECB 加密模式,因为它容易受到重放和其他攻击。

示例

此示例使用 DES,它限制为 56 位密钥。提供的密钥实际上是 64 位,但每个字节的最后一位都变成了奇偶校验位。例如,在加密和解密时,可以使用字节 01010101 和 01010100 来代替彼此。

class WeakEncryption
{
    public static byte[] encryptString()
    {
        SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider();
        byte[] key = { 16, 22, 240, 11, 18, 150, 192, 21 };
        serviceProvider.Key = key;
        ICryptoTransform encryptor = serviceProvider.CreateEncryptor();

        String message = "Hello World";
        byte[] messageB = System.Text.Encoding.ASCII.GetBytes(message);
        return encryptor.TransformFinalBlock(messageB, 0, messageB.Length);
    }
}

参考文献

  • ©GitHub 公司
  • 条款
  • 隐私