gpt4 book ai didi

java - 可用的填充方案是否符合 BSI 指南

转载 作者:行者123 更新时间:2023-11-30 05:03:30 26 4
gpt4 key购买 nike

我目前正在评估 Java 的 ESAPI 安全库的加密功能。我的目标是验证 ESAPI 是否支持 this guideline written by the BSI 建议的对称加密方法。 (链接指向德语文档,没有可用的英文版本)。

到目前为止,我可以在 CBC 模式下使用建议的 AES-128。不幸的是,BSI 仅建议以下 3 种填充方案(文档中的第 10 页):

  • ISO 填充(引用 ISO-7816-4-2005)
  • 填充符合 RFC 4303
  • ESP 填充

ESAPI 库仅支持 PKCS5 PaddingISO-10126 Padding(根据 Wikipedia ,这已经过时了)。现在我想知道 PKCS5 填充方案是否符合 RFC 4303 (参见第 13 和 14 页)。在我看来,它看起来是兼容的,但第二个意见会有所帮助。任何具有更扎实的密码学背景的人都可以阐明这一点吗?如果到目前为止我的分析有任何错误,如果您能指出来,那就太好了。也许我把事情复杂化了,其中一些方案是等效的,但我错过了。

最佳答案

ESAPI 应支持您的 JCE 提供商可用且支持的任何填充方案。它只是默认使用 PKCS#5 填充,但可以通过调整 ESAPI.properties 文件中的 Encryptor.CipherTransformation 属性来更改。

ESAPI 使用您的 JVM 默认使用的任何 JCE 提供程序。一般来说,这是SunJCE。但是,这也可以通过 ESAPI.properties 中的 Encryptor.PreferredJCEProvider 属性进行更改。 SunJCE 仅支持 JDK 1.6 中 AES 的 NOPADDING、PKCS5PADDING、ISO10126PADDING 填充方案。 (IIRC,我认为 JDK 1.5 及更早版本不支持 ISO-10126 填充,但我尚未确认这一点。)但是,其他 JCE 提供商(例如 Bouncy CaSTLe)可能提供其他填充方案。 (根据此, http://www.bouncycastle.org/specifications.html ,似乎 Bouncy CaSTLe 通过 ISO7816d4Padding 支持 ISO-7816-4 填充。我还没有对此进行测试,但如果它不起作用,请向 ESAPI 用户列表发送电子邮件,地址为 或在 http://code.google.com/p/owasp-esapi-java/issues/list 上打开 Google 问题,我会尽力为您解决问题。)

顺便说一句,我不懂德语,但不确定 PKCS#5 填充的问题是什么,除非它是填充预言机攻击。如果是这样,只要您使用支持消息真实性的密码模式(例如 GCM 或 CCM(两者均经过 NIST 批准))或使用 ESAPI 以通过 HMAC 确保消息真实性,ESAPI 就能满足您的需求。后者通过属性 Encryptor.CipherText.useMAC 进行控制,该属性在交付的标准 ESAPI.properties 文件中默认设置为“true”。

-凯文·沃尔

关于java - 可用的填充方案是否符合 BSI 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com