关于为许可证系统创建密钥生成器的问题

Questions about creating a key generator for a license system

我是这个领域的新手,我必须建立一个相当安全的许可机制,但我对 public 密钥系统的工作原理有一些疑问。

  1. 想象一个密钥生成器的实现,它使用私钥生成带有 MAC 和到期日期的字符串。该字符串将被软件解密,并检查 MAC 是否可以执行。我的问题是:如果有人解密我的消息并看到 MAC 那么创建密钥就相当容易了,不是吗?我这么说是因为我知道你可以用一个私钥加密并用 public 私钥解密这一事实背后有一些数学原理,因此使用加密消息、真实消息和 public 密钥我猜有人可以找到私钥。

  2. 关于是否有必要在加密之前对某些消息进行散列的讨论让我有点不知所措。以及使用椭圆曲线进行压缩。如果有人能给我一些关于这个话题的信息,我将不胜感激。

P.S。我正在使用 C++,但欢迎任何其他语言的评论。

创建一个 DSA 或 ECDSA 或 <insert favourite sigining algo here> 密钥对...您保证私钥安全...public 密钥嵌入到您的二进制文件中

创建一个包含相关许可信息的数据结构

压缩它

签名

许可证检查时:

验证许可证签名

解压缩结构

根据许可数据进行必要的检查


  1. 常见的众所周知的非对称密码不易受到已知明文攻击

  2. 据我所知,椭圆曲线不用于压缩

椭圆曲线用于密码学(读取加密和数字签名)

  1. 使用以下内容训练您的 google-fu:RSA、DSA、ECC(椭圆曲线密码学)、ECDSA