2012-01-01 2 views
0

私は安全でないチャネルを介してデータを送受信する必要があるシステムを持っています。私はこれを単純なままにしておきたい(PCではなく組み込みプラットフォーム上で動作している)ので、攻撃者がデータを読み込めるかどうかは気にしない。私が防御したいのは、攻撃者がデータを傍受して変更することです。平文の認証のためにハッシュをソルトする(パスワードではない)

プラットフォームにはハッシュ(MD5、SHA1など)のための機能が組み込まれていますが、暗号化はありませんので、私は単純に秘密データを連結してデータを生成しています私のシステムであり、攻撃者ではありません。例:

dataToSend = dataString + sha1(dataString + secretString) 

データ文字列は平文で送信され、その後にハッシュが続きます。秘密の部分とは、ハッカーを無効にすることなく攻撃者がデータを変更できないことを意味します。秘密は、プログラムに組み込まれ、チャンネルで送信されることはありません。私はこのスキームがリプレイ攻撃の影響を受けやすいことを認識しています。この特定のアプリケーションでは問題ありません。

私の質問は、秘密がアプリに組み込まれていても変更されない場合、盗聴されたデータ文字列とハッシュの大量のコレクションを持っていれば、シークレットが埋め込まれる実行ファイルは、プラットフォームによって暗号化されているため、16進エディタで秘密を発見する機会はありません。

第2に、秘密の期間は重要ですか?データ文字列は通常8バイトです。秘密がずっと長い(たとえば1024バイト)場合、ハッシュアルゴリズムへの入力のほとんどは変更されません。これはどうにかして安全性が低下しますか?

ありがとうございます!

答えて

0

鍵付き認証の標準的な手法はHMACです。他に特別な理由がない限り、あなたの問題にHMACを使用することをお勧めします。

キーをデータより長くすることは非常に良い考えです。あなたのデータは64ビットなので、HMAC-SHA-256を使うとデータの2倍の256ビットの鍵が得られます。必要に応じて異なるキーサイズを使用することができます.HMACは、受け入れるキーのサイズについて非常に柔軟です。

+0

これは私が探していたものです!どうもありがとう! – kernelpanic99

関連する問題