使用已损坏或弱的加密算法¶
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
使用已损坏或弱的加密算法会导致数据容易受到攻击者解密或伪造的攻击。
加密库提供的许多加密算法已知是弱的或有缺陷的。使用此类算法意味着加密或散列的数据安全性低于预期。
推荐¶
确保使用强大的现代加密算法,例如 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
参考¶
NIST,FIPS 140 附录 a: 已批准的安全功能.
NIST,SP 800-131A: 过渡:使用加密算法和密钥长度过渡的建议.
OWASP:规则 - 使用强大的已批准的加密算法.
通用弱点枚举:CWE-327.