【问题标题】:Openssl cipher suite explanationOpenssl密码套件解释
【发布时间】: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


    【解决方案1】:

    如果您是客户端,ECDHE_{RSA,ECDSA} 密钥交换必须使用服务器选择的“曲线”,OpenSSL 这样做; DHE 同样使用服务器参数。 (在 1.1.1 版本中预期/计划在草案 1.3 协议中进行了一些修改。)如果您是服务器,OpenSSL 有几种不同的方式来选择“曲线”,具体取决于您没有向我们展示的代码:

    • 1.0.x 支持 SSL_{CTX_,}set_tmp_ecdhSSL_{CTX_,}set_tmp_ecdh_callback,它们没有手册页,但与有手册页的 _dh 版本等效。

    • 1.0.2 添加了SSL_{CTX_,}set_ecdh_auto,它设置了一种模式,自动选择客户端和服务器都可接受的“第一”(根据客户端或服务器列表,使用与密码套件首选项相同的选项)曲线

    • 1.1.0 将ecdh_auto 设为默认值,不再支持tmp_ecdh_callback 选项,但允许使用新的text-basedfile-based 配置选项以及直接代码设置tmp_ecdh .

    在 SUITEB 模式下,这 (IIUC) 与“FIPS”模式(意思是 FIPS-140)不同,但对于受整个 FIPS 和其他 NIST '指导的同一用户来说,通常是必需的',唯一受支持的曲线是 P-256 和/或 P-384,具体取决于选项集。

    (从技术上讲,我们松散地称为 EC 密码学的“曲线”实际上是一条具有合适特征的曲线,由基础场上的方程系数定义,加上基点又名生成器,加上点顺序和辅因子。小心或准确的人,如密码学家,将其称为参数集或 EC 组而不是曲线。OpenSSL 将其实现为 typedef EC_GROUP。)

    TLS 将公钥表示为 X9.62(和 SEC1)未压缩(通常)或可选压缩(罕见)格式中的一个点,这两种格式都有固定的大小,具体取决于底层字段的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多