gpt4 book ai didi

security - 带 ECC 的串行 key

转载 作者:行者123 更新时间:2023-12-02 21:58:27 26 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 使用相同的方案;在这种情况下,您要签名的数据不仅仅是序列号,而是某种识别用户的摘要字符串,以及可能识别他们正在安装软件的系统的某些功能。

现在,坏消息是,不幸的是,具有重要安全级别的 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/

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