私はCでユーザを登録してログインできるプログラムを作っています。ユーザーが自分のユーザー名とパスワードをファイルに保存したいときに登録します。
私が理解しているように、これを行う最善の方法は、パスワードの最後にランダムな塩を加えて、塩漬けされたパスワードの安全なハッシュ(たとえばSHA-1)を保存することです。
私は、ユーザー名、ハッシュ、および塩をテキストファイルにローカルに保存すると、攻撃者がファイル内のハッシュと塩を自分のsaltでSHA-1ハッシュに変更してログに記録するのを防ぐ新しいパスワードを使用していますか?
ありがとうございます。安全にローカルにパスワードを保存する
1
A
答えて
1
これは、攻撃者は、このパスワードファイルへのアクセスのみを持っているかどうか、または彼は同様に実行可能ファイルへのアクセス権を持っている場合に依存します。後者の場合は、ハッシュを交換するのが難しくなりますが、完全に防ぐことはできません。
- アプリケーションはその後、秘密強い鍵を含んでいるでしょうし、このキーでハッシュのHMACを計算します:保存されたハッシュを確認するためにHMACを使用することができます上の最初のケースでは
、。
- このHMACは、パスワードハッシュとともにファイルに格納できます。
- 検証のためにハッシュを読み取ると、ソフトウェアはHMACを再度計算し、保存したものと比較することができます。
攻撃者は、自分のアプリケーションの秘密鍵がわからない限り、自分のハッシュに対して正しいHMACを生成することはできません。パスワードファイルを変更することはできませんが、アプリケーションによってセキュリティはアプリケーションのキーに集中します。パスワードファイルを暗号化/復号化することでも同じことができます。
P.S. SHA-をパスワードの格納に使用しないでください。代わりに、BCrypt、PBKDF2、SCryptなどのコスト係数を持つハッシュ関数を使用してください。*
1
アプリケーションをホストするサーバーは1つだけですが、ユーザー名とハッシュパスワードもあるようです。この構成では、ルートになっている攻撃者に対して完全な防御はありません。
- ハッシュされたパスワードは、攻撃者がパスワードを取得し、
- ただし、ユーザーの資格情報を使用してアプリケーションを使用することが難しい、攻撃者が可能性になる:
しかし、あなたはいくつかの良い機能を持ってしようとすることができます実際にハッシュを変更します。
- は、リモートコピー
- と比較して変化を検出するか、それに署名を使用します:基本的には、唯一のアプリケーションでパスワードを更新できるようにすることを防ぐには、のいずれかによって、そのファイルを保護しようとすることができます。あなたは、アプリケーションに秘密鍵を持たせて、ファイルに署名し、最後に署名を追加することができます。アプリケーションが認証のためにファイルを読み取ると、ファイルが破損しているかどうかを確認できます。攻撃者がその署名メカニズムを取得するのは難しいでしょうが、不可能なことはありません。
関連する問題
- 1. ユーザー名/パスワード(ローカル)を安全に保存する方法は?
- 2. PHPコードの中にパスワードを安全に保存するには?
- 3. サーバーにパスワードを保存するのには安全です
- 4. jqueryモバイルアプリにローカルにユーザーパスワードを安全に保存する
- 5. greasemonkeyで安全にパスワードを保存するには?
- 6. ハッシュのないパスワードを安全に保存するには?
- 7. 安全にanglejsにパスワードを保存する方法
- 8. Webアプリケーションのメールサーバーにパスワードを安全に保存する方法
- 9. 安全にAndroid KeyStoreのパスワードを保存する方法
- 10. HeidiSQLのパスワードを安全に保存する方法
- 11. アクセストークンを安全に保存する
- 12. 安全にキーストリング値を保存する
- 13. 安全にAPIを保存する
- 14. ウェブアプリケーションのソースコードにパスワードを保存するのは安全ですか?
- 15. Paypal Proのパスワードを安全に保存する方法は何ですか? (PHP)
- 16. ログインとパスワードのハッシュをセッションに安全に保存していますか?
- 17. textField.textを安全にアンラップしてプロパティに安全に保存する方法
- 18. パスワードを安全にURLエンコード
- 19. Firebase Javascript:安全にデータベースにパスワードを保存してください
- 20. 安全なパスワードにSHAパスワードを使用
- 21. フラッシュ共有オブジェクト(Cookie) - 安全にパスワードを保存できますか?
- 22. app.configファイルはパスワードを保存するための安全な場所ですか?
- 23. 安全にiOSにプライベートファイルを保存するには
- 24. パスワードをデータベースに保存する前に安全にハッシュする方法はありますか?
- 25. ローカルにSQL暗号パスワードを保存する方法
- 26. bashで安全にパスワードを渡す
- 27. logstash.confファイルのElasticsearchのパスワードを暗号化/安全に保護
- 28. サーバ側で使用するためにパスワードを安全に保存するには?
- 29. ファイルをアンドロイドでディスクに安全に保存する方法は?
- 30. ウェブアプリケーションで安全に画像を共有に保存する
攻撃者が既にそのレベルのアクセス権を持っている場合、直接必要なすべてのデータを取得できるだけの理由でログインする必要がありますか? –
それはまさに私が防止したいものです。攻撃者がローカルに保存されているデータにアクセスできないようにするにはどうすればよいですか? – Matan
私はあなたのテキストファイルを暗号化している可能性があると思います。それでも、バイナリプログラムには解読方法に関する情報がありますので、攻撃者が解読することは不可能ではありませんが、十分なことをあいまいにすると難しくなります。 – Milack27