签名如何与椭圆曲线加密一起使用?

信息安全 密码学 电子签名 RSA 电子抄送
2021-09-10 08:02:13

因此,我已经阅读并了解加密如何与椭圆曲线密码学一起使用。我还认为我了解签名如何与椭圆曲线数字签名算法 (ECDSA) 等技术一起工作。我的 Web 服务器上的证书和私钥都是 2048 位 RSA 密钥。我可以只做 RSA 签名,因为那是我的密钥吗?如果我可以做 ECDSA 之类的事情,那么信任如何从我的 RSA 密钥链接到用于在 ECDSA 下签名的 ECC 密钥?

1个回答

椭圆曲线 (EC) 密码学与传统的 RSA 风格密码学显着不同。

底线预先 ( BLUF ):您的服务器只能根据您提供的信息处理 RSA 密钥交换。

作为入门,这两个都是非对称加密协议。它们用于安全地传输双方用来加密实际数据/消息的对称密钥。这背后的原因是,与对称加密协议(在一般情况下)相比,非对称加密协议的计算量非常大。因此,加密大型数据集或流式消息将是资源密集型的。而是使用对称密钥。

所以回到你的问题。您的数字签名已创建并签名,说明您的公钥是 2048 位 RSA 密钥。这必然意味着您的私钥也是 RSA 密钥 - 您不能使用具有该数字签名或您拥有的密钥的 EC 协议。所以第一个问题的答案是:是的,您只能在您的 Web 服务器上进行 2048 位 RSA 密钥交换。

要创建/生成 EC 密钥,您必须从上游提供商那里获得一个(或多个)密钥,或者通过诸如 openssl 之类的第三方工具自己生成它们。

另外,读者可能想知道为什么要使用 EC 而不是 RSA。那是因为性能。理论上(至少迄今为止在安全社区中已经证明),EC 密钥占用的空间要少得多,并且在特定系统上运行得更快(硬件实现可能会有所不同,这与该声明相矛盾,但仅在相同的软件实现中)系统 EC 应该比等效强度的 RSA 更快)。

例如,根据 EC 上的 openssl 页面(http://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography),在 RSA 中加密 256 位对称密钥需要 15360 位 RSA 密钥,但只需 512 位EC 密钥。

所以你看,如果你正在运行一个有很多客户端的 HTTPS 服务器,你会需要 EC 密钥,因为你可以更快地保护对称密钥并减少你的整体处理(包括通过网络发送的数据量)在密钥交换中)。

关于你的第二个问题。如果您拥有 EC 密钥,它们可能会在不同的证书中,因为它们将在不同的时间发布/生成。信任将来自您当前信任的任何来源 - 无论是内部根证书颁发机构还是外部证书颁发机构(如 verisign 或 godaddy)。

从理论上讲,如果您的证书被授予适当的权限,它可以用于签署下游证书(这意味着,您的证书是一个中间证书颁发机构,然后可以签署您组织内其他人的请求)。如果是这种情况(鉴于您的证书不太可能在 Web 服务器上使用),您可以创建 EC 密钥和 EC 证书签名请求,并颁发由您的 2048 位 RSA 签名授权的证书,以允许您使用,例如 384 位 EC 密钥。

我希望这会有所帮助。我已经阅读了我发布的 openssl 链接以了解更多信息。