CodeQL 文档

使用已损坏或弱的加密算法

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

点击查看 CodeQL 存储库中的查询

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

加密库提供的许多加密算法已知是弱的或有缺陷的。使用此类算法意味着加密或散列的数据安全性低于预期。

推荐

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

示例

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

require 'openssl'

class Encryptor
  attr_accessor :secret_key

  def encrypt_message_weak(message)
    cipher = OpenSSL::Cipher.new('des') # BAD: weak encryption
    cipher.encrypt
    cipher.key = secret_key
    cipher.update(message)
    cipher.final
  end

  def encrypt_message_strong(message)
    cipher = OpenSSL::Cipher::AES128.new # GOOD: strong encryption
    cipher.encrypt
    cipher.key = secret_key
    cipher.update(message)
    cipher.final
  end
end

参考

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