gpt4 book ai didi

security - 带 ECC 的串行 key

转载 作者:行者123 更新时间:2023-12-02 04:59:29 25 4
gpt4 key购买 nike

我想(或创建)基于椭圆 key 加密的串行 key 。我想做的是在序列中编码信息,这些信息可以公开验证但只能由我创建。最初的想法来自http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm他们可以在其中创建信息加密的连续剧。但是,这是基于 RSA 导致的,因此数量很大。因此,我想自己构建类似的东西。

然后我发现:http://www.codeguru.com/cpp/cpp/algorithms/general/article.php/c12799/Product-Keys-Based-on-Elliptic-Curve-Cryptography.htm

但是,我认为这没有任何好处:他们选择应用程序和创建者需要知道的域参数。公钥用于加密(生成序列),而私钥在应用程序中用于解密。但是,知道域参数和私钥,很容易推导出 ECIES 的公钥,对吧?

下一个想法是对信息进行任意编码,并为其附加基于 ECDSA 的签名。但这会导致很大的序列号。

我真正想要的是类似于 http://ellipter.com 的解决方案他们使用正确概念的地方:生成序列号的私钥和验证它们的公钥。他们在屏幕截图中显示的 key 非常短:对于 128 位 key ,只有大约 30 个字符。

正确的做法是什么?我是否错过了正确的方案?不可能是ECDSA,也不可能是ECIES。但还有什么?

最佳答案

你需要的是椭圆曲线digital signature scheme ,例如 ECDSA .

基本上,您的 key 生成服务器将保存 key 对的私有(private)部分,而您分发的软件将包含公共(public)部分。您的序列 key 将包含一个简单的序列号,以及使用私钥对该序列号进行的签名。当用户输入数字时,软件会使用其公钥检查签名是否有效。

您也可以对产品激活 key 使用相同的方案;在这种情况下,您要签名的数据将不仅仅是一个序列号,而是某种识别用户的摘要字符串,可能还有他们正在安装软件的系统的某些功能。

现在,坏消息是,不幸的是,具有非平凡安全级别的 ECDSA 签名对于许可证 key 来说仍然很长。您可以通过降低安全级别来减少签名长度,但这样就有可能通过蛮力伪造签名。基本上,您将在安全性和可用性之间进行权衡。您还可以尝试其他带有短签名的签名方案,例如 Schnorr signatures或者可能是类似 McEliece-based signature scheme described in this paper 的东西, 但即使是这些也可能非常适合用户可键入的许可证 key 。


第一次接触 RSA 签名形式的数字签名的人通常会感到困惑的是 RSA cryptosystem有点不寻常,因为相同的基本算法可用于两者 public-key encryption对于数字签名,在低层次上,这两个操作是双重的,因此 RSA 签名操作可以看作是“用私钥加密”,而签名验证可以看作是“用公钥解密”(这与您对普通公钥加密所做的相反)。

但是,对于大多数其他公钥密码系统而言,这种对偶性不成立:一般来说,数字签名方案与公钥加密方案完全不同(尽管它们通常基于类似的数学问题)。事实上,即使对于 RSA,一旦您开始考虑像 padding 这样的细节,签名和加密操作就会变得不同。 ,如果您想将基本的“教科书 RSA”算法转变为实际上可以用作安全实用的密码系统的东西,这些都是必不可少的。

关于security - 带 ECC 的串行 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com