2011-07-25 9 views
1

私の目標は、PGPに匹敵する軽量なメッセージ署名です。ただし、公開鍵の関連付けがないプライベートキーは1つだけ必要です。目標は、単に2つの信頼できるエンティティ間の文字列の改ざんを防ぐことです。信頼できるソースから始まり、インターネットを経由して、別の信頼できる宛先に到着します。ニッチ、可能なナイーブなデジタルメッセージの署名

私の素朴なアプローチが安全かどうかを知りたいと思います。そのため、署名アルゴリズムは実際には強要されませんでした。

1)ソースと宛先の両方にuuidgenによって生成された非常に乱数である「秘密鍵」があります。

2)送信元には送信先の文字列があります。

3)Sourceはペイロード文字列を秘密鍵と連結し、sha1を結果として署名を生成します。

4)結果として得られる平文の値+署名は、ペアで宛先に送信されます。 "hello // SIG:12345ABCDEFG"

5)Desinedは、署名付き変数を受け取り、既知の秘密鍵で署名を生成し、受け取ったデータと対になった署名を再度比較します。一致した場合は受け入れられます。

この変形には、1時間に四捨五入されたユニックスのタイムスタンプが組み込まれ、署名が失効します。

私の懸念は、データペイロードの選択セットを与えられた秘密鍵をブルートフォースし、この手法で結果の署名を分析することが可能であるかどうかです。それはあなたが達成したいかのように思える

おかげ

+0

あなたの解決策が疑わしい場合は、それをしないで、代わりにPGPのような何かを確立してください。それを設定することは、カスタムソリューションをデバッグするよりも、時間と労力を要することはありません。 –

答えて

6

は、HMAC(article on Wikipedia)と非常によく似ています。

HMACの場合、メッセージと秘密鍵を組み合わせてハッシュにする追加の手順を実行します。これにより、元のメッセージと秘密鍵を連結してハッシュした結果のハッシュよりも、結果ハッシュが攻撃されにくくなります。

可能な限り暗号標準を使用したい場合(私の意見では、ほとんど常に良いことです)、私はHMAC定義で規定する方法を検討します。署名が期限切れになるようにするには、メッセージに有効期限を付けて、その結合された文字列のHMACを構築するだけです。

+0

ありがとう、この記事では、私が持っていた衝突の正確な懸念をメモします。私は間違いなくHMACのアプローチをとるだろう。 – emery

関連する問題