CodeQL 文档

使用损坏或弱的加密算法

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

点击查看 CodeQL 代码库中的查询

使用损坏或弱的加密算法会导致数据容易受到攻击者的解密或伪造。

许多加密库提供的加密算法已知是弱的或有缺陷的。使用这种算法意味着加密或哈希的数据比看起来的安全性要低。

此查询会提示任何使用弱加密算法的情况,这些算法不是哈希算法。使用损坏或弱的加密哈希函数由 py/weak-sensitive-data-hashing 查询处理。

建议

确保您使用强大的现代加密算法,例如 AES-128 或 RSA-2048。

示例

以下代码使用 pycryptodome 库来加密一些秘密数据。当您使用 pycryptodome 创建密码时,您必须指定要使用的加密算法。第一个示例使用 DES,这是一种较旧的算法,现在被认为是弱的。第二个示例使用 AES,这是一种更强大的现代算法。

from Crypto.Cipher import DES, AES

cipher = DES.new(SECRET_KEY)

def send_encrypted(channel, message):
    channel.send(cipher.encrypt(message)) # BAD: weak encryption


cipher = AES.new(SECRET_KEY)

def send_encrypted(channel, message):
    channel.send(cipher.encrypt(message)) # GOOD: strong encryption

注意:提供 Crypto 模块的原始 [pycrypto](https://pypi.ac.cn/project/pycrypto/) PyPI 包不再积极维护,因此您应该改用 [pycryptodome](https://pypi.ac.cn/project/pycryptodome/) PyPI 包(它具有兼容的 API)。

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私