【发布时间】:2018-06-19 07:18:01
【问题描述】:
我想在 fips 模式下为 openssl 使用密码套件 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,我不知道这方面的细节。
查看openssl 1.0.2k中的源码,看到有参数s3_lib.c:
/* Cipher C014 */
{
1,
TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
SSL_kEECDH,
SSL_aRSA,
SSL_AES256,
SSL_SHA1,
SSL_TLSV1,
SSL_NOT_EXP | SSL_HIGH | SSL_FIPS,
SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
256,
256,
},
我不明白的是它使用 SSL_kEECDH 进行密钥交换。我的问题是它使用什么椭圆曲线,密钥大小是多少?我打算使用 RSA 4096。
编辑
查看 openssl 源代码,在文件 t1_lib.c 中,我看到套件 B 提到,但这是针对 GCM 模式,所以如果我将 prime256v1 或 secp384r1 用于 CBC,这些素数也应该是 FIPS 140-2 批准的?
if (tls1_suiteb(s)) {
/*
* For Suite B ciphersuite determines curve: we already know
* these are acceptable due to previous checks.
*/
unsigned long cid = s->s3->tmp.new_cipher->id;
if (cid == TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
return NID_X9_62_prime256v1; /* P-256 */
if (cid == TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)
return NID_secp384r1; /* P-384 */
/* Should never happen */
return NID_undef;
}
【问题讨论】:
标签: c openssl public-key-encryption