当前位置: 首页 > 知识库问答 >
问题:

为FIPS-140模式下的公钥配置弹性城堡填充机制

司徒宇
2023-03-14

根据Bouncy Castle FIPS Java API指南,版本:0.1

在第4.2节中,一些填充机制被指定与公钥算法(ElGamal/RSA)一起使用:

  • 不添加
  • OAEPWITHA-1和MGF1PADDING-别名:OAEPWITHSHA1和MGF1PADDING,OAEPADDING。
  • oaepwithsha-224andmgf1padding-别名:oaepwithsha224andmgf1padding
  • OAEPwithSHA-256andMGF1Padding-别名:OAEPwithSHA256andMGF1Padding
  • OAEPwithSHA-384andMGF1Padding-别名:OAEPwithSHA384andMGF1Padding
  • OAEPwithSHA-512andMGF1Padding-别名:OAEPwithSHA512andMGF1Padding
  • PKCS1Padding

如何配置哪种填充机制将与公钥算法一起使用?都用于客户端和服务器通信。

特别是对RSA作为TLS中密钥交换机制的情况感兴趣。

共有1个答案

锺超英
2023-03-14

在TLS纯RSA密钥交换中使用RSA进行密钥传输时,通常使用PKCS1-v1_5填充;参见rfc5246 4.7和7.4.7.1或相应的早期版本(当时它被简单地称为块类型2,因为OAEP还不存在)。您不能配置其他任何东西,其他任何东西都不能互操作。(在TLS1.3中,当前建议的RSA密钥传输将不再存在。)

当RSA用于TLS中的服务器或客户端身份验证时,作为密钥交换(如DHE_RSA和ECDHE_RSA)的一部分,在1.0和1.1中,签名算法固定为PKCS1-v1_5的修改(使用串联的MD5和SHA1哈希,没有ASN.1摘要信息);参见rfc4346 4.7或RFC2246。在1.2中,签名算法是从对等体提供的算法中选择的(在服务器的ClientHello扩展中,在客户端的CertReq字段中),但唯一的RSA选项是带有MD5 SHA-1或SHA-2散列的标准PKCS1-v1_5,并且许多实现(包括Java的最近更新)现在禁止MD5;在JSSE中没有配置可以在允许的散列中进行选择。(1.3建议在协议中更改为PSS,仅对证书允许PKCS1-v1_5签名。)

如果您关注美国政府应用程序的FIPS-140合规性,请参阅SP800-135,该SP800-135只在TLS中使用时批准TLS KDFs,尽管它们通常不被批准用于FIPS-140。此外,请注意,SP800-52中对TLS的其他部分有广泛的强制性指导,除了加密原语。

 类似资料:
  • 在FIPS模式下,PKCS#12格式在加密文件时必须使用兼容的加密和哈希算法。 当我阅读BC-FIPS文档时,它说在批准模式下,它们不支持PKCS#12,因此这意味着我们无法在BC-FIPS批准模式下读取PKCS12密钥库;我们使用BC-FIPS作为加密提供者,还使用PKCS12和JKS格式存储密钥和证书。 BC-FIPS声称-“PKCS12密钥存储支持以下变体: PKCS12-3DES-3DES

  • 使用PEM证书,如 我的问题是,AFAIK,pemparser中没有密码的位置。 有人能给我一个如何将代码迁移到PEMParser版本的例子吗?

  • 我想使用生成随机密钥,但java不支持填充,在我的算法中,我必须使用相同的填充,弹性城堡确实支持,但我无法理解如何使用它生成密钥 我的代码: 我收到的错误没有这样的算法

  • 我知道曲线名称()以及EC公钥的和坐标。 如何用它们创建? 我读过https://stackoverflow.com/a/29355749/5453873,但是那里的代码使用而不是,ECPublicKey是中的接口,而不是一个可实例化的类。

  • 我已经创建了一个小程序来使用Bouncy Castle 1.47 API生成一个DSA/El Gamal PGP钥匙环。密钥生成过程非常顺利,没有一个错误。我使用ARRAMED输出将私钥和公钥导出到一个文件,当我尝试用GPG(确切地说是KGpg)导入生成的私钥时,我得到以下错误: 单击OK后,它告诉我只处理了1个密钥。看起来它只拿了DSA键,因为在屏幕上它显示为1024/0。 **编辑**我刚刚尝

  • Ladar Levison编写了ecies_encrypt和ecies_decrypt C函数。这些功能与ECIES弹力城堡兼容吗?如果不是,有没有人知道要修复什么或者ecies的另一个C实现?