Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Openssl密码套件说明_C_Openssl_Public Key Encryption - Fatal编程技术网

C Openssl密码套件说明

C Openssl密码套件说明,c,openssl,public-key-encryption,C,Openssl,Public Key Encryption,我想在fips模式下使用密码套件TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,用于openssl,我不想知道详细信息 查看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, S

我想在fips模式下使用密码套件TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,用于openssl,我不想知道详细信息

查看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模式的,因此如果我对CBC使用prime256v1或secp384r1,这些Prime也应该是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;
    }

如果您是客户机,ECDHE{RSA,ECDSA}密钥交换必须使用服务器选择的“曲线”,OpenSSL会这样做;DHE同样使用服务器参数。(在draft1.3协议1.1.1版中有所修改。如果您是服务器,OpenSSL有几种不同的方式选择“曲线”,具体取决于您没有向我们展示的代码:

  • 1.0.x支持
    SSL{CTX}set\u tmp\u ecdh
    SSL{CTX}set\u tmp\u ecdh\u回调
    ,它们没有手册页,但与有手册页的
    \u dh
    版本等效

  • 1.0.2添加了
    SSL{CTX}set\u ecdh\u auto
    ,它设置了一种模式,自动选择客户机和服务器都可以接受的“第一个”(根据客户机或服务器列表,使用与密码套件首选项相同的选项)曲线

  • 1.1.0将
    ecdh\u auto
    设为默认值,不再支持
    tmp\u ecdh\u回调
    选项,但允许
    tmp\u ecdh
    设置新的和配置选项以及直接代码

SUITEB模式(IIUC)与“FIPS”模式(即FIPS-140)不同,但受整个FIPS范围和其他NIST“指南”约束的同一用户通常需要该模式,唯一受支持的曲线是p-256和/或p-384,具体取决于选项集

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


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

如果您是客户机,ECDHE_{RSA,ECDSA}密钥交换必须使用服务器选择的“曲线”,OpenSSL也会这样做;DHE同样使用服务器参数。(在draft1.3协议中有所修改,预计/计划在1.1.1版中使用。)如果您是服务器,OpenSSL有几种不同的方法选择“曲线”,具体取决于您没有向我们展示的代码:

  • 1.0.x支持
    SSL{CTX}set\u tmp\u ecdh
    SSL{CTX}set\u tmp\u ecdh\u回调
    ,它们没有手册页,但与有手册页的
    \u dh
    版本等效

  • 1.0.2添加了
    SSL{CTX}set\u ecdh\u auto
    ,它设置了一种模式,自动选择客户机和服务器都可以接受的“第一个”(根据客户机或服务器列表,使用与密码套件首选项相同的选项)曲线

  • 1.1.0将
    ecdh\u auto
    设为默认值,不再支持
    tmp\u ecdh\u回调
    选项,但允许
    tmp\u ecdh
    设置新的和配置选项以及直接代码

SUITEB模式(IIUC)与“FIPS”模式(即FIPS-140)不同,但受整个FIPS范围和其他NIST“指南”约束的同一用户通常需要该模式,唯一受支持的曲线是p-256和/或p-384,具体取决于选项集

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

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