私は安全でないチャネルを介してデータを送受信する必要があるシステムを持っています。私はこれを単純なままにしておきたい(PCではなく組み込みプラットフォーム上で動作している)ので、攻撃者がデータを読み込めるかどうかは気にしない。私が防御したいのは、攻撃者がデータを傍受して変更することです。平文の認証のためにハッシュをソルトする(パスワードではない)
プラットフォームにはハッシュ(MD5、SHA1など)のための機能が組み込まれていますが、暗号化はありませんので、私は単純に秘密データを連結してデータを生成しています私のシステムであり、攻撃者ではありません。例:
dataToSend = dataString + sha1(dataString + secretString)
データ文字列は平文で送信され、その後にハッシュが続きます。秘密の部分とは、ハッカーを無効にすることなく攻撃者がデータを変更できないことを意味します。秘密は、プログラムに組み込まれ、チャンネルで送信されることはありません。私はこのスキームがリプレイ攻撃の影響を受けやすいことを認識しています。この特定のアプリケーションでは問題ありません。
私の質問は、秘密がアプリに組み込まれていても変更されない場合、盗聴されたデータ文字列とハッシュの大量のコレクションを持っていれば、シークレットが埋め込まれる実行ファイルは、プラットフォームによって暗号化されているため、16進エディタで秘密を発見する機会はありません。
第2に、秘密の期間は重要ですか?データ文字列は通常8バイトです。秘密がずっと長い(たとえば1024バイト)場合、ハッシュアルゴリズムへの入力のほとんどは変更されません。これはどうにかして安全性が低下しますか?
ありがとうございます!
これは私が探していたものです!どうもありがとう! – kernelpanic99