我正在通过一个使用libtomcrypt库的程序特尔斯来学习TLS握手。我看到,在第5236行(链接),程序调用libtomcrypt过程ecc_ansi_x963_export(context->ecc_dhe, out, &out_len)。我看到该过程在缓冲区out中形成一个ECC键,并将其添加到第5248行的客户端"key_share“扩展中。我的问题是: X9.63的格式是什么?它是按照大端顺序指定ECC键-字节的格式还是其他什么?(不幸的是,我在术语上搞不懂--你能给我解释一下吗?)
发布于 2023-05-15 00:56:04
正式的X9.63格式与X9.62格式相同(X9.62格式现在被撤回,但纪念包括SEC1在内的其他地方),实际上有三种形式--未压缩、压缩和混合--加上身份元素的特例,通常在使用仿射坐标时称为“无穷点”,就像X9中的Weierstrass曲线形式一样。实际上,没有人使用混合形式,也没有人想使用(因此编码)标识元素,因此,例如rfc5480用于PKIX证书,rfc5656用于SSH2,两者都引用SEC1。
然而,钥匙_占TLS1.3的份额有一点不同。它使用TLS表示法重新定义了等效的未压缩形式--一个字节04,固定长度的大端无符号x和y --不允许压缩形式。相反,TLS1.0-1.2中的ECC通过引用X9.62定义了用于服务器公钥和显式曲线参数(在TLS1.3中几乎无人使用并被删除的)和客户公开密钥,并允许未压缩或可选压缩,但必须遵守Hello中协商的“受支持的点格式”。
https://crypto.stackexchange.com/questions/106517
复制相似问题