2009-08-29 13 views
4

最も長い間、私は「どこでも同じようなパスワード」の問題を避けるために私が訪れるさまざまなサイトのパスワードを生成するためにJavascriptブックマークレットを使用することを検討していました。しかし、this paperを読んだ後、この方法を使用すると悪質な単一のページが私のセキュリティ全体を傷つける可能性があることがわかりました。JavaScriptのパスワードジェネレータのセキュリティに関する考慮事項は何ですか?

私は次のような解決策を考えています。ブックマークレットは、元のURLが追加された新しいページ(例:http://example.com/password_man.html?url=slashdot.org)でURLを開きます。 example.comのページにあるスクリプトは、実際のパスワード生成を行います。

誰もこの方法でセキュリティ上の問題が発生していませんか?私が見る限りでは、悪意のあるページでさえパスワードを見ることしかできず、ではなく、はマスターパスワードのような機密情報にアクセスできます。私はこれを仮定して正しいですか?

より明確化:

  • パスワードの生成は完全にクライアント側で実行されます。上記の例で言及されている "password_man.html"には、既にブックマークレットに含まれているようなjavascriptコードが含まれており、マスターパスワードを指定するための入力フィールドが含まれます。
  • "url"パラメータの解釈もクライアント側で行われます。私はこのファイルを自分のGoogleコードアカウントの特定のリビジョン(つまり、password_man.htmlのv1234)としてホスティングすることを考えています。
  • また、HTTP/HTTPSすべての処理がクライアントブラウザによって行われるため、問題はありません。データはサーバに返されません。 MITM攻撃では、クリアテキストプロトコル(HTTPなど)を使用している場合に、生成されたパスワード(例:そのパスワードはマスターパスワード)を返すようにページを変更できると主張していますが(例:それを提出、またはセッションIDを詮索される要求からパスワードなどをスヌーピング)すでにMITM状況を持っている場合の対処が容易になり、攻撃の他の道があります

更新 :問題を巡り調査した後、同じページ内でこれを安全に行う方法がないと結論づけました。ブックマークレットがドメインをキャプチャして新しいウィンドウ(window.open経由)を開くだけであっても、悪意のあるサイトはwindow.openを上書きして、実際にマスターパスワードを取得するページのコピーを開くことができます基本的にフィッシング攻撃を行う)。

答えて

0

パスフレーズをurlと一緒に渡すと、パスワードを再生成するために知っておく必要があることが2つあります。

URLだけを渡しても常に同じパスワードになると、このアプリケーションを1人しか使用できません。

2人で同じパスフレーズを使用する可能性は低いですし、すべてのサイトで同じパスフレーズを使用できます。

https接続を使用している場合は、スヌーピングにより安全です。

あなたのアプローチにはいくつかのユーザビリティの問題があると思います。また、http接続を使用すると、スヌーピングにも脆弱になります。URLを知ることで誰かがパスワードを取得できるという事実は、各サイトで同じパスワードを使用するよりも、これがより脆弱であることを意味します。

更新: 解明のために私の答えは変わります。

基本的にjavascriptにプライベートメンバーを置くことができます。そのため、firebugのようなものが使われていない限り、他のコードは値を見ることができません。 http://www.crockford.com/javascript/private.html

あなたはここにマスターパスフレーズとすべての関連情報を入れて、パスワード生成を行う場合は、あなたが作成されますよう、その後は他のJavaScriptコードは、その情報を取得することはできません。

このリンクは、この多くを説明するのに役立ちますゲッターを持たないセッター。

これにより、安全なパスワード生成ページを作成できるようになります。

+0

クイック返信ありがとうございます。私はあなたが提起した問題にうまく対処するためのいくつかの説明を追加しました。まず、生成されたパスワードは、ユーザー名、マスターパスワード、サイトドメインの2つを入力する必要があります(ユーザー名とマスターパスワード)。 第2に、すべての処理がクライアント側で行われるため、MITMの攻撃者は、前後に移動するデータではなく、ダウンロードされているスクリプトのみを監視することができます。リクエストに追加されたURLは、あなたのフィールドの1つを入力するためにローカルのjavascriptによってのみ使用されます。 –

0

Firefoxを中心としたソリューションに気にしない場合は、Password Hasherをご覧ください。他のブラウザでも使用できるページを生成できる「ポータブルページ」オプションがありますが、Chromeで試してみました。

他のブラウザ用に調整する場合は、hereのソースを利用できます。

2

supergenpassは、あなたが提案しているものに非常に似ています。

ブックマークレットとして実装する要件が移植性である場合、既存のマルチプラットフォームパスワードマネージャがあります。たとえば、私はLastpassを使用しています。すべての主要なブラウザをサポートしています。また、Opera Miniで動作し、ブックマークレット形式でも提供されます。

0

Javascripts PRNGは通常、暗号的に強力ではありません。https://bugzilla.mozilla.org/attachment.cgi?id=349768;そのため、パスワードの生成に使用すると、他のサイトで生成されたパスワードを推測したり、選択したパスワードに影響を与える可能性があります。

関連する問題