【问题标题】:SonarQube: Make sure that encrypting data is safe here. AES/GCM/NoPadding, RSA/ECB/PKCS1PaddingSonarQube:确保加密数据在这里是安全的。 AES/GCM/NoPadding、RSA/ECB/PKCS1Padding
【发布时间】:2020-01-14 11:45:22
【问题描述】:

我正在使用:

1. RSA/ECB/PKCS1Padding

2。 AES/GCM/NoPadding

在我的 Android (Java) 应用程序中加密我的数据。在 SonarQube 的 documentation 中声明:

高级加密标准 (AES) 加密算法可用于多种模式。没有填充的 Galois/Counter 模式 (GCM) 应优先于以下不安全的组合:

  • 电子密码本 (ECB) 模式:在给定密钥下,任何给定的 明文块总是被加密为相同的密文块。 因此,它不能很好地隐藏数据模式。从某种意义上说并不 提供严重的消息机密性,不推荐 完全用于加密协议。
  • 带有 PKCS#5 填充(或 PKCS#7)的密码块链接 (CBC) 是 容易受到填充预言机攻击。

因此,推荐,我使用AES/GCM/NoPadding 作为:

Cipher c = Cipher.getInstance("AES/GCM/NoPadding");

但是,它仍然给我警告确保这里加密数据是安全的。

同理:

Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");

SonarQube 为什么会抛出该警告? 这些用途不再安全了吗?

【问题讨论】:

  • 欢迎来到 crypto.stackexchange - 这似乎是一个编程问题,即使程序使用密码学,编程问题在这里也是题外话。编程问题属于stackoverflow。我可以帮你迁移到那里。
  • 警告是什么?
  • @JamesKPolk Make sure that encrypting data is safe here.

标签: encryption rsa aes padding aes-gcm


【解决方案1】:

这似乎是关于加密任何数据的一般警告。 “AES/GCM/NoPadding”应该没有问题,如shown in their test code

【讨论】:

  • 是的,但有什么办法可以摆脱它?
【解决方案2】:

GCM 模式下的 AES 作为分组密码算法进行保护。但这并不能保证使用 AES(在 GCM 模式下)加密数据的代码是安全的。有几件事可能会出错,使代码容易受到攻击。以正确的方式对其进行编码以获得所需的安全级别是开发人员的责任。一些可能出错的例子是:

  1. IV 针对给定键重复
  2. 密钥或原始数据存储在String 数据类型中,一直在堆中徘徊
  3. 密钥以明文形式存储在代码存储库中的属性文件中

等等。

现在,SonarQube 无法识别所有这些漏洞,因此他们提出了一个名为 Hotspot 的新概念,将 here 描述为:

与漏洞不同,安全热点不一定是容易受到攻击的问题。相反,安全热点突出显示需要手动审查的安全敏感代码片段。经过审查,您会发现需要修复的漏洞或不存在威胁​​。

热点有一个单独的生命周期,在上面给出的链接中进行了解释。

附:这个答案解释了如何以安全的方式在 GCM 模式下使用 AES 加密 Java 中的字符串:https://stackoverflow.com/a/53015144/1235935

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2023-01-20
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多