【问题标题】:Niche, possible Naive digital message signing利基,可能的 Naive 数字消息签名
【发布时间】:2011-07-25 15:46:56
【问题描述】:

我的目标是一种轻量级的消息签名,可与 PGP 相媲美,只是只需要一个私钥,不需要公钥关联。目标仅仅是防止篡改两个受信任实体之间的字符串。它从受信任的来源开始,经过互联网,然后到达另一个受信任的目的地。

我想知道我的幼稚方法是否安全。因为签名算法实际上不会被暴力破解。

1) 源和目标都有一个“私钥”,它只是 uuidgen 生成的一个非常随机的数字。

2) 源有一个要发送到目的地的字符串。

3) Source 将有效负载字符串与私钥连接起来,然后对结果进行 sha1,以生成签名。

4) 生成的纯文本值 + 签名成对发送到目的地。 "你好//SIG:12345ABCDEFG"

5) 目的地接收签名变量,使用其已知的私钥生成签名,并将签名与接收到的数据配对进行比较。如果它们匹配,则被接受。

其中的一个变体将包含一个四舍五入到小时的 unix 时间戳,使签名过期。

我担心的是,在给定一组选择性数据有效负载的情况下,暴力破解私钥是否可行,并使用这种方法分析生成的签名。

谢谢

【问题讨论】:

  • 如果您怀疑自己的解决方案,请不要这样做,而是使用已建立的方法,例如 PGP。设置它肯定会比调试自定义解决方案花费更少的时间和精力。

标签: cryptography digital-signature


【解决方案1】:

看起来您想要实现的目标与 HMAC (article on Wikipedia) 非常相似。

对于 HMAC,您需要执行一些额外的步骤来将消息和密钥组合成一个散列。这使得生成的散列比简单地连接原始消息和密钥并对其进行散列得到的散列更难攻击。

如果您想尽可能多地使用加密标准(在我看来,这几乎总是一件好事),我会考虑按照 HMAC 定义规定的方式进行操作。为了使签名过期,我只需将过期日期附加到消息中,然后构建该组合字符串的 HMAC。

【讨论】:

  • 谢谢,这篇文章指出了我对碰撞的确切担忧。我肯定会采用 HMAC 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2011-08-04
  • 1970-01-01
相关资源
最近更新 更多