私は twitter クライアントを作成しており、ユーザーのログイン情報を保護するさまざまな方法を評価しています。
- ハッシュは明らかにそれを行いません
- 可逆的な方法で難読化することは、指の後ろに隠そうとするようなものです
- プレーンテキストは聞こえ、おそらく無差別です
- ユーザーが毎回パスワードを入力する必要があると、アプリケーションが面倒になります。
何か案は ?
パスワードを暗号化するために、いくつかの OS 呼び出しを行うことができます。
Windows の場合:
どのプラットフォーム?
*nix では、ホーム ディレクトリのサブディレクトリにある chmod 400 のファイルに、パスワードをプレーン テキストで保存します。たとえば、~/.subversion を参照してください。管理者は、パスワードを取得する独自のハッキングされたバージョンにプログラムを置き換えることを含め、ユーザーに対して好きなことを何でもできるので、ファイルを見ることができるという事実に害はありません. パスワードは、そのハード ドライブを取り出した人にもアクセスできることに注意してください。これが問題になる場合は、毎回ユーザーにパスワードを再入力させるか、このバージョンの *nix にファイル暗号化があるかどうかを確認してください。
Windows Pro では、パスワードを暗号化されたファイルに保存します。
Windows アマチュアでは、*nix と同じことを行います。[編集: Aleris が示唆するように、CryptProtectData は良さそうです。すべての Windows で利用できる場合、暗号化されたファイルをサポートする高価なバージョンのみの問題が解決されます]。
Symbian では、パスワードをデータ ケージに保存します。AllFiles パーミッションを持つプログラムはまれであり、とにかく信頼されていると思われます。これは *nix 管理者に少し似ています。
CryptProtectData は、この種の機密データを格納するための Windows 関数です。
http://msdn.microsoft.com/en-us/library/aa380261.aspx
例については、Chrome での使用方法を参照してください:
http://blog.paranoidferret.com/index.php/2008/09/10/how-google-chrome-stores-passwords/
Windows の場合: DPAPI (ユーザー ストア) を使用してパスワードを暗号化し、設定ファイルまたは別の場所に保存します。これは、ユーザー単位で機能します。たとえば、同じマシンの別のユーザーは、関連のない別の暗号化キーを持っています。
ケーキを持って食べることもできません。パスワードを保存する (除外した) か、毎回入力する必要がない (除外した) かのいずれかです。
優れた対称暗号化スキームを使用すると、試す価値のない資格情報を解読するのが十分に難しくなるはずです。それ以外の場合、サービスがハッシュをネットワーク経由で送信することのみを必要とする場合は、ハッシュを暗号化して保存できます。この方法では、暗号化を解除しても、攻撃者がソリューションに近づくことはありません。ただし、他のユーザーは真実です。データを保存すると、それを見つけることができます。重要なのは、セキュリティと使いやすさのバランスを見つけることです。