次のセキュリティ実装を使用してWeb管理パネルを作成しました。
md5(strrev(md5(IP_ADDR)))
です。トークンは、他のすべてのセッションを無効にすることでデータベースに保存されます。ただし、メールはウェブサイトの管理者のみが開くことができます。
この実装の欠陥は何でしょうか?これをどのように改善できますか?
それぞれが異なる欠陥をカバーしている可能性があるため、この質問に対する単一の回答はありそうにありません。ここにいくつかありますトークンの導出と404の使用に関してのみ:
トークンの2番目の部分は、攻撃者が自分のIPアドレスを知っているため、直接計算できます。したがって、セキュリティを低下させることなく削除できます。
トークンの最初の部分でハッシュを使用しても、セキュリティ値は追加されませんが、オーバーヘッドが増加します(無視できる可能性がありますが、それでも意味がありません)。ワンタイムパスワードのポイントは、攻撃者がランダムに生成された値を推測するのが難しいということです。攻撃者は5つの元の数値を推測する必要があるため、値をハッシュしても難易度は上がりませんまたはハッシュ。
前者の推測空間は、すべての数値を単純に連結できるため、1e25の値です。これは、log(1e25)/ log(2)= 83.05ビットと同等です。魔法のようにMD5の128を取得することはありません。
これを増やす必要がありますか?私の推測では、ブルートフォース攻撃はより早くDOSを実行しますが、より多くのスペースを使用しても害はほとんどないので、それを選択してください。
404エラーの使用は 隠すことによるセキュリティ これはセキュリティではありません。
5桁の乱数の品質とは関係なく、「ただし、電子メールはWebサイトの管理者のみが開くことができます」という主張について詳しく説明したいと思います。
管理者の電子メールアカウントはパスワードのみで保護されていると想定しています。このようにして、1つのパスワード(電子メールパスワード)をおそらくWeb管理インターフェイスのパスワードと組み合わせます。同様の方法で攻撃される可能性のある2つのパスワードが生成されます。攻撃者は、「どれほど不便で、2つのパスワードを取得する必要がある」と考えるかもしれません。しかし、彼はパスワードを攻撃するのが得意です!彼がそれを1回または2回行っても関係ありません。
したがって、攻撃者が得意ではないものを追加することを検討する必要があります。ハードウェアトークンやyubikeyのような本当の2番目の要素。たぶん、くだらないGoogle Authenticatorでさえ(彼がスマートフォンにマルウェアを取り込むのが苦手だと仮定して)。ちなみに、これらはすべてオープンソースでサポートされています privacyidea 。