web-dev-qa-db-ja.com

使用されるハッシュのタイプを偽装する

MD5、SHA1、および他の多くのハッシュ関数が安全でない理由については多く読んだことがありますが、別のアプローチをとることを考えています。

セキュリティは向上しませんが、そのことは承知していますが、ハッシュのクラックがはるかに困難になると考えています。

たとえば、MD5を使用してhellworldを使用し、128ビットのハッシュを取得する場合など、いくつかの情報をハッシュするとします。
fc5e038d38a57032085441e7fe7010b0

今、それをSHA1であるかのように偽装することを考えています。160ビットハッシュです。私は開始/終了にパディングを追加することができ、その間、固定/ベースのロジックではるかに優れています。

したがって、出力ハッシュは次のようになります
fc5e038d38a57032fafe46a9085441e7fe7010b0

これは実際にこのように形成されます
fc5e038d38a57032 + fafe46a9 + 085441e7fe7010b0

(元のハッシュを中央で分割し、中央に(ランダムな)パディングを追加しました。)

これは、攻撃者を混乱させるので、ハッシュを解読することをより困難にしますか?

どのようにこれをクラックして元のテキストを見つけるのでしょうか?もちろん、サーバーファイルにはアクセスしません。

1
das

基本的に、カスタムハッシュアルゴリズムを作成しました。アルゴリズムがどのように機能するか誰も知らず、それがMD5に基づいていることを誰も知らない場合、このハッシュを解読することは不可能ではないにしても、非常に困難になります。したがって、ハッシュに関する直接の質問に答えるために、それ以上の知識がなくても解読される可能性があります。

ここでの唯一の本当の危険性は、些細な問題ではありませんが、アルゴリズムがどのように機能するかを誰かが見つけた場合、あなたの努力はまったく保護を提供しません。

これは「あいまいさによるセキュリティ」として知られています。攻撃者が永遠に無知である限り、安全です。アルゴリズムとハッシュを一見すると、MD5と同様にクラック可能です。

玄関のドアを隠すと、鍵を持った誰かが入ることができなくなります...玄関のドアが見つかるまで。より良いキーとロックを持っていることは常により良いです。

3
schroeder

あなたが提案しているものはほとんど完全に無意味であり、おそらく全体として逆効果です。標準フォーマットを探すだけの自動スキャンからは保護されますが、システムを確認するのに数分かかる人からは保護されません。

私が認識しているセキュリティは向上しませんが、ハッシュのクラックを非常に困難にする可能性があると思います。

これらの2つのステートメントは矛盾しています。ハッシュの解読が難しくなることはありません。そのため、セキュリティは向上しません。とにかく、セキュリティが向上しないのに、なぜこれを行うのですか?

どのようにこれをクラックして元のテキストを見つけるのでしょうか?

これはかなり簡単です。いくつかの異なるパスワードを試し、同じパスワードを数回試します。これにより、攻撃者はパスワードに依存する部分とそうでない部分を突き止めることができます。実際のハッシュは16バイトであることに注意してください。MD5であることを確認してください。攻撃者のメンタリティに応じて、サイトのクラックにほとんど時間を費やしていないか、つまらないことに挑戦してがっかりします。

もちろん、サーバーファイルにアクセスしません。

攻撃者がサーバーファイルにアクセスできないと想定した場合、パスワードハッシュが表示されることはありません。したがって、この質問をする必要はありません。しかし、攻撃者doが常にサーバーファイルを見ることができるため、この質問をするのは正しいです(SQLインジェクション、PHPの脆弱性、安全に保存されていないバックアップ、盗まれた管理者資格情報、…)。攻撃者がサーバーファイルを認識しないという仮説は現実的ではないため、分析に基づくべきではありません。


このことをすべて忘れて、 パスワードを安全にハッシュする方法 を読んでください。開発プラットフォームに適切なパスワードハッシュ機能がない場合は、アップグレードを真剣に検討してください。そのプラットフォームは、インターネット上でアクセス可能なソフトウェアの開発には明らかに適していません。しかし、完全に行き詰まり、SHA-1しかなければ、このSHA-1プリミティブの上にPBKDF2の実装を探します。 PBKDF2の既存の十分に管理された実装が見つからない場合は、最後の手段として自分で実装してください。

攻撃者がデータベースからハッシュを抽出できる場合、サービスにサインアップしてパスワードpass123は、ハッシュアルゴリズムにかけられ、データベースに挿入されます。

これにより、一般的なハッシュ関数を試して、どのようにハッシュが隠されているかを判断できます。

  • データベースハッシュ32250170a0dca92dfafe46b853ec9624f336ca24
  • SHA1(pass123)aafdc23870ecbcd3d557b6423a8982134e17927e
  • MD5(pass123)32250170a0dca92d53ec9624f336ca24
1
Joe