首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Server Hello”消息中的命名曲线值0 0xffff

“Server Hello”消息中的命名曲线值0 0xffff
EN

Security用户
提问于 2015-08-19 13:52:44
回答 3查看 1.2K关注 0票数 2

我使用Java中的BSAFE Crypto-J6.2JCE提供程序作为SSL/TLS服务器(SunJSSE采用FIPS 140兼容模式)。

如果使用TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b),至少Chrome和Firefox无法建立连接。

火狐连接到服务器时的错误是:"sec_error_unsupported_elliptic_curve

以错误消息作为提示,我查看了握手(使用Wireshark)。在“客户你好”中,我看到了3条曲线:

代码语言:javascript
复制
Elliptic curve: secp256r1 (0x0017)
Elliptic curve: secp384r1 (0x0018)
Elliptic curve: secp521r1 (0x0019)

在相应的"Server“消息中,我看到了命名曲线值0xffff

代码语言:javascript
复制
Named Curve: Unknown (0xffff)

因此,浏览器终止与上述错误消息的连接。

如果我在服务器端使用标准Java (没有BSAFE Crypto-J提供程序),"Server“中的命名曲线是:

代码语言:javascript
复制
Named Curve: secp256r1 (0x0017)

..。握手就成功了。

  1. 现在的问题是,如果0xffff是什么意思?这是否意味着服务器不理解客户端建议的一组曲线?我查看了RFC4492的5.1.1节,但没有找到任何关于0xffff值的内容
  2. 如果有人有在FIPS模式下运行的RSA、BSAFE、Crypto和Java的经验。任何遇到这个问题并找到解决办法的人。
EN

回答 3

Security用户

回答已采纳

发布于 2015-08-20 07:07:02

现在的问题是,如果0 0xffff是什么意思?这是否意味着服务器不理解客户端建议的一组曲线?

我不认为这是正式意义上的。但我有一种感觉,即执行工作仍然是出于这一目的。

未分配在IANA

标识符0xFFFF (65535小数点)是标记为Unassigned在IANA官方登记处

也就是说,这也意味着它不是Reserved,也不是以任何其他方式标记为特殊的。

Re.枚举定义

TLS 1.2 RFC包含枚举语法的定义:

RFC 5246 -传输层安全协议,版本1.2,第4.5款数字

代码语言:javascript
复制
One may optionally specify a value without its associated tag to
force the width definition without defining a superfluous element.

In the following example, Taste will consume two bytes in the data
stream but can only assume the values 1, 2, or 4.

   enum { sweet(1), sour(2), bitter(4), (32000) } Taste;

我看RFC4492 5.1.1节的意思也是一样的。

票数 1
EN

Security用户

发布于 2015-08-19 17:37:24

查看您在文章中提到的RFC4492 5.1.1节,我们看到以下结构:

代码语言:javascript
复制
enum {
        sect163k1 (1), sect163r1 (2), sect163r2 (3),
        sect193r1 (4), sect193r2 (5), sect233k1 (6),
        sect233r1 (7), sect239k1 (8), sect283k1 (9),
        sect283r1 (10), sect409k1 (11), sect409r1 (12),
        sect571k1 (13), sect571r1 (14), secp160k1 (15),
        secp160r1 (16), secp160r2 (17), secp192k1 (18),
        secp192r1 (19), secp224k1 (20), secp224r1 (21),
        secp256k1 (22), secp256r1 (23), secp384r1 (24),
        secp521r1 (25),
        reserved (0xFE00..0xFEFF),
        arbitrary_explicit_prime_curves(0xFF01),
        arbitrary_explicit_char2_curves(0xFF02),
        (0xFFFF)
    } NamedCurve;

在我看来,0xFFFF是一个保留值,是(可能是错误的?)发送以指示服务器不支持ECC,或指示曲线数组的结束。

BSAFE Crypto提供程序可能没有正确配置。

票数 2
EN

Security用户

发布于 2015-12-07 08:30:29

我也遇到了同样的问题,所有东西都在使用Java 7,当我将JRE升级到Java8时,我开始得到这个错误sec_error_unsupported_elliptic_curve

我通过将JVM参数com.sun.net.ssl.enableECC设置为false来解决这个问题。

-Dcom.sun.net.ssl.enableECC=false

票数 -1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/97259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档