Cryptography 利基,可能幼稚的数字消息签名

Cryptography 利基,可能幼稚的数字消息签名,cryptography,digital-signature,Cryptography,Digital Signature,我的目标是一种轻量级的消息签名,与PGP相当,只是只需要一个私钥,不需要公钥关联。目标仅仅是防止篡改两个受信任实体之间的字符串。它从一个可信的来源开始,通过互联网,然后到达另一个可信的目的地 我想知道我天真的方法是否安全。在这种情况下,签名算法实际上不会被强制使用 1) 源和目标都有一个“私钥”,它只是uuidgen生成的一个非常随机的数字 2) 源有一个要发送到目标的字符串 3) Source将有效负载字符串与私钥连接起来,然后将sha1与结果连接起来,以生成签名 4) 生成的纯文本值+签名成

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

我想知道我天真的方法是否安全。在这种情况下,签名算法实际上不会被强制使用

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

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

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

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

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

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

我关心的是,如果给定一组选择性的数据有效载荷,并使用这种方法分析生成的签名,那么强制执行私钥是否可行


谢谢

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

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


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

您想要实现的功能似乎与HMAC()非常相似

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


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

如果您怀疑您的解决方案,请不要这样做,而是使用已建立的内容,如PGP。设置它肯定会比调试自定义解决方案花费更少的时间和精力。如果您怀疑您的解决方案,请不要这样做,而是使用已建立的工具,如PGP。设置它肯定会比调试自定义解决方案花费更少的时间和精力。我肯定会采用HMAC方法。谢谢,这篇文章提到了我对碰撞的确切关注。我肯定会采用HMAC方法。