3


2

アプリケーション自体からしかアクセスできないローカルシステム(Windows XP)にパスワードを保存することは可能ですか?

私の本能的な答えは「いいえ」でしょう。 たとえある種のハッシュや暗号化が使われていても、ソースコードが利用可能である限り、決定されたシーカーは常にこれを使ってパスワードを取得することができると思います。

私は個人的なオープンソースの趣味プロジェクトに取り組んでいます。このプロジェクトでは、ユーザーがソフトウェアを使用するたびにパスワードを入力する必要がないように、パスワードをディスクに保存することができます。 保存することができるパスワードの一例は、彼らのネットワークのプロキシサーバー上で認証するために使用されるものであろう。

ここでスタックオーバーフローに関するいくつかの関連した質問があり、最も適切な解決策はDPAPIのようなオペレーティングシステムサービスを使用するように聞こえます。

パスワードがユーザ入力なしでソフトウェアによって検索可能であり、ソースコードがオープンソースである限り、パスワードは常に(適切に技術的にそして意図的に傾いた)通行人によって検索可能であるという基本的前提は正しいですか?

4 Answer


6


Pidgin開発者がこれを理解していることについては、http://developer.pidgin.im/wiki/PlainTextPasswordsをご覧ください。


2


ユーザー入力なしにソフトウェアでパスワードを取得できる場合は、パスワードは常に(適切に技術的かつ意欲的な)通行人によって取得されます。 オープンソースまたはクローズドソースは、どれだけの労力がかかわっているかに影響するだけです。


2


UserDataモードでDPAPIを使用しても、あなたのマシン上のあなたのアカウントは暗号化されたデータにアクセスすることしかできません。

ログイン認証情報に基づいてマスターキーを生成し、それを暗号化に使用します。


0


もちろん、パスワードを安全に保存するためのプログラムを書くことができます。

AESを使用すると、プログラムにAESキーを生成させ、そのキーをオペレーティングシステムの保護領域に保存させることができます。 WinXPでは、これはDPAPIで暗号化されたレジストリです。 したがって、キーにアクセスする唯一の方法は、マシンに物理的にアクセスすることです。

AESキーを生成するときには、暗号的に安全な方法でそれを確実に行う必要があります。 RANDを使用しただけでは機能せず、ランダムな文字列も生成されません。

オープンソースはセキュリティとほとんど関係がありません(私の意見では)。 たとえあなたがクローズドソースの解決策を持っていたとしても、リバースエンジニアリングのソースコードのためのツールの洗練されたレベルを考えると、人々はあなたのコードをスヌープすることを決心しました。

選択した暗号化スキームを使用しながら、ベストプラクティスのガイドラインに従うことを確実にするために、あなたの努力はもっとよく使われます。 より大きなコミュニティであなたのコードを公然と見てもらうことは、実際にあなたのコードをより安全にすると主張するでしょう。脆弱性と脅威は、より多くのユーザーがあなたのコードを見ているほど早く発見されるでしょう。