多くの認証システムが暗号化ハッシュ関数を使用することを読んでいました。それにより、ユーザーのユーザー名とパスワードを保持する代わりに、ユーザー名と関連するパスワードのハッシュを保持します。このようにして、システムは入力されたパスワードのハッシュをそのユーザー名のパスワードに関連付けられた既知のハッシュと比較するだけで済みます。
ハッシュは理論的には一意であり、ハッシュ関数は常に同じ出力にマップされるため、これは安全なスキームのように見えます。
しかし、私は次のシナリオについて考えていました:ハッカーがサーバーのデータベースにアクセスして、使用されたハッシュ関数からのパスワードハッシュの出力を見ることができるとしましょう。ハッカーがパスワード(正当なパスワード)を選択し、そのパスワードのハッシュを取得してから、データベースを変更して、別のユーザーのパスワードハッシュをハッカー自身のパスワードハッシュに置き換えることはできませんか?これにより、サーバーをだまして、そのユーザー名に関連付けられたハッシュは、そのユーザーのパスワードのハッシュであると考えます。実際には、ハッカーのパスワードのハッシュです。
これは完全に偽物であるか、常に発生するはずですが、それが実行不可能であるかどうかについて知りたいと思います。
明らかに、ハッカーがサーバーのデータベースにすでにアクセスしているため、これを行う必要があるかどうか疑問に思われるかもしれませんが、貴重な情報の残りが暗号化できる方法で暗号化されているケースを考えています特定のユーザーがアクセスします。
攻撃者が(SQLインジェクションなどを介して)データベースへの書き込みアクセス権を取得した場合、攻撃者がユーザーのパスワードハッシュを自分のハッシュに変更することを妨げるものはありません。あまり頻繁に表示されない理由は、ご指摘のとおり、攻撃者がデータベースへの書き込みアクセス権を持っている場合、通常はより深刻な懸念があるためです。
特定のユーザーだけがアクセスできるように残りの貴重な情報が暗号化されるケースを考えています。
これを行うための最良の方法は、ユーザーのパスワードからキーを導出することです( ログインに使用されるパスワードハッシュとは別に )。この場合、パスワードハッシュを置換しても、攻撃者は、情報。