ウェブサイトとパスワードが安全であることをユーザーに保証する方法[非公開]


15

信頼できるWebサイトでは、「すべてのデータは暗号化されています」または「すべてのパスワードは128ビット暗号化を使用して暗号化されています」などのクレームが常に表示されます。

私のウェブサイトでは、SHA-512(ほとんどの場合)ハッシュをランダムソルトで使用した後、すべてのユーザーパスワードをデータベースに保存します。パスワードが必要であるためにWebサイトの使用を妨げないように、パスワードが安全であることをユーザーに保証するスニペットを追加します。ユーザーに安全を感じてもらいたいのですが、ハッシュとは誰もが知っているとは思いません。

私の質問:「すべてのパスワードは暗号化され安全です」というメッセージを提供しても大丈夫ですか?平均的なユーザーはハッシュと暗号化の違いを知っているとは思わないので、見ているだけで安全だと感じる可能性が高い慰めの言葉「暗号化」?または、提供する必要がある代替メッセージはありますか?

ちなみに、私は暗号化とパスワードハッシュが初めてであり、サイトを立ち上げた時点でこれで十分であるかどうか疑問に思っていました。安全でない場合は安全だとユーザーに伝えたくありません。どんな情報でも大歓迎です。ありがとう。


7
個人的に私はコミュニケーションについてあまり心配しません:あなたがすることの技術的な説明を書き、技術志向の人が見つけるFAQの奥深くに埋めます。とにかく誰も気にしない。さらに重要なことは、あなたが正しいことをしていることを確認することです(もしあなたが新しいなら難しいですが、少なくともあなたはやっています!)。独自のハッシュを構築しないで、bcryptのようなものを使用してください。
ヨアヒムザウアー

4
正しいことは、ログインを統合することであり、ユーザーを別のユーザー名とパスワードで煩わせることではありません。
Jan Hudec

1
OpenIDは適切ですが、ユーザー名/パスワードも問題ありません。あなたの問題は、あなたのサイトが安全であることをユーザーに説得することではないと思います。あなたは経験が浅いので、持っていないものを約束するようなものです。共通の基準を適用するだけです-プロのハッカーが来るのを止めることはできませんが、誰もあなたを責めることはできません。
ホアンロング

3
@coredump確かに。パスワードのハッシュ化にSHA-512を使用するのは良くありません。「大丈夫」ではありません。
トーマス

3
おそらく、情報セキュリティに関するフォローアップの質問をして、あなたが最高の最新のアドバイスを確実に得られるようにする価値があるでしょう。(これは、ここで悪いアドバイスを得ているという意味ではありません。単にセキュリティの専門家ではないというだけです)。
ChrisF

回答:


22
  1. ユーザーは気にしません。

    彼らが気にするのは、誰かが自分の銀行口座からお金を引き出し、それが数日前に誰かがあなたのデータベースに完全にアクセスしたというリンクがあるように見えるときだけです。

  2. 私がそのようなメッセージを見たほとんどすべての場合、それらは誤解を招くものでした。最も陽気なものは、すべてのページに「軍事級の安全な」スタイルのラベルが付いたウェブサイトにありました。HTTP証明書が無効であることを伝えるアラートがありました。ログオンフォームにSQLインジェクションがありました。数週間後、ウェブサイトはハッキングされ、その後永久に姿を消しました。

    実際に電子メールで元のパスワードを送信する「パスワードを回復する」フォームを使用して、情報を安全に保持していると主張するWebサイトの数のカウントを停止します。

    「W3Cの有効なXHTML」ラベルのようなものです。なぜ彼らは通常、ホームページにも少なくとも数十のエラーやコードが含まれているウェブサイトに置かれているの<DIV COLOR='red'>ですか?

それでもユーザーを安心させるには、次のようなものを追加できます。

パスワードは安全に保たれます。パスワードが表示されないため、パスワードの入力を求めるメールは送信されません。

しかし、率直に言って、「パスワードを忘れました。電子メールで送信してください」に代わる「パスワードのリセット」フォームは、どんな言葉よりも安心です。

さまざまなコメントからのヒント:

  • 車輪を再発明しないでください:OpenIDを使用してください。この方法では、ハッシュも保存しません。

    出典: Jan Hudecによるコメント

  • あなたは学生なので、プロジェクトをオープンソース化します。「学校の子供がパスワードを設計したため、パスワードが安全でないとユーザーに思わせたくない」という懸念があるためです。、ソースコードを読み取ることで、セキュリティを重視する熟練した開発者によって作成されたことを確認できることを保証するものはありません。

    出典: Jan Doggenによるコメント


ご意見ありがとうございます。問題は、私が学生のために大学向けのサービスを設計していることです。学校の一部の子供がパスワードを設計したため、パスワードが安全でないとユーザーに思わせたくない。私はbcryptを含むさまざまな方法を見てきましたが、どちらを使用するかはまだ決めていません。これで十分に安全になり、多くの人が使い始めたら、必要に応じて追加できると思います。私は今のところそれを世に出すことに取り組んでいます。再度、感謝します。
user2698818

3
@ user2698818あなたがすべきことは、セキュリティを設計し、それを詳細に説明する質問を投稿し、「これは安全ですか(十分)」と尋ねることです。優れたセキュリティは完全に公開できます。
ヤンドッグゲン

@ user2698818:わかった。私の答えを編集しました。
Arseni Mourzenko

6
@JanDoggen:まあ、彼がやるべきことは、他の誰かが設計し、「十分に安全か」と尋ねた既存のセキュリティシステムを使用することです。好ましくは、その質問がかなり前からあり、分野の何人かの専門家の注意を引いているもの;
Joachim Sauer

12

そもそもパスワードを保存しないでください!Stack Exchangeの例に従って、ユーザーがOpenIDによる認証を提供する別のサイトに自分のIDでログインできるようにします。実装は、ほとんどの一般的なWebフレームワークで自由に利用できます。

または、おそらく他のプロトコル。ある機関の社内プロジェクトである場合(他の回答に対するコメントが示唆するように)、ほぼ確実にLDAP、Kerberos(Windows Active Directoryはこれら2つにも基づいています。Apacheはそれらに対するHTTP認証をサポートしています)またはいくつかのコンピュータログインのためのそのようなサービス。それに接続するだけです。

これは、機密情報を格納する必要がなくなります(あなたはおそらくまだストアの権限を持っていますが、彼らはそうではありませんことを重要)さらに別のユーザー名とパスワードを覚えておく持つからユーザーがそう全体的なWin-Winの、と。


1
アクセス許可をセキュリティ上重要ではないものとして扱っている場合は、サイトを回避できるように、作成したサイトを教えてください。
orlp

1
パスワードを保存することが要件である場合はどうなりますか。また、質問はそれらの保存について具体的に尋ねます。
ピョートルクラ

3
@ppumkin:「Xを使用してYを実行する方法」という種類の質問がたくさんありますが、最良の答えは「あなたはZを使用する」です。同意しない場合は、より良い回答を提供してください;-)。
Jan Hudec

3
@ppumkinアナロジーを使用するには、「拳で岩を砕こうとしていますが、どの手袋を使うべきですか?」19回目のドイツ騎兵のガントレットを提供する前に、ノミを知っているかどうかを確認してください。
deworde

1
速すぎてOpenIDを提案することは避けたい。はい、それは素晴らしいことですが、複数のOpenID / OAuthプロバイダーをサポートしている場合、一般的に最適に機能します。FacebookのOIDプロバイダー経由でログインする必要があり、他のものを使用できない技術フォーラム、ブログ、Q&Aなどがたくさんあります。私は、Facebookドメインを大量にブロックする職場ネットワークにいるので、それらのサイトで作業することはできません。あなたはサポートOIDになるだろう、とだけターゲットオーディエンスの間で人気、あるプロバイダ選ぶ、今のいずれかを使用しようとしている場合と、システム管理者によってブロックされる可能性は低いが。GoogleとWindows Liveは良い選択です。
キース

2

言って:

「これは安全です。」

特定の技術的事実またはプロセスについてあなたが下す個人的な判断であり、この判断は、あなたがその時点でセキュリティについて知っていることによって制限されます。しかし、暗号化、保存方法などが、どんな種類の攻撃にも耐えられることを疑いなく保証できますか?

意味:このステートメントは、おそらくあなたがそれを知らなくても、時代遅れになる危険があります。

したがって、@ JoachimSauerによる上記のコメントに同意する傾向があります。あなたが何をするか、ユーザー情報をどのように保存するかを説明し、これがサービスを安全する方法をユーザーに伝えるだけです。次に、ユーザーが自分で判断できるようにします。


いいえ、「これは安全です」は私にとって「個人的な」または主観的な声明ではなく、「それは美しい」というようなものではありませ。実際には、「何に関連して」または「どの攻撃から安全に」または「どのコンテキストのどのレベルで」を指定せずに、意味的に空のステートメントです。文全体が「これは安全です」で構成されている場合、入力を終える前に古くなっており、気付いていない可能性が高いです。最後の部分については同意しますが、詳細はすべてです。
AviD

@AviD:おそらくあなたは私の特定の言葉の選択を読みすぎているのでしょう。はい、それ以上の詳細を与えずに何かが「安全」であると言うことは無意味です。しかし、誰もが「セキュリティ」に対するまったく同じ感覚と要求を持っているわけではないため、個人的な判断であると確信しています。 「安全だ」と発言する人。そして、それは誰かに関連する事実を与え、彼らに彼ら自身の結論を引き出すことと同じ重みを持つ議論ではありません。
stakx

右、「何に関連して」私はどんな要件、セキュリティプロファイル、リスクなどを意味しました。それでも個人的な判断ではありませんが、おそらく「個人」が意味するのは「コンテキスト」の意味です。「セキュア」、科学的なハードメトリックであり、ソフトでウィッシュウォッシュの「フィーリング」ではありません。ええ、あなたが言うように、「安全」だと言わないでください。そうするためにあなたが何をしたか教えてください。
AviD

@AviD:OK。セキュリティ希望的でウォッシュな感じだと言うことを除いて、私はこれ以上議論をしません。それはもちろんそれ以上ですが、質問がユーザーを「保証する」ことである場合(質問のタイトルを参照)、最終的には希望的でウォッシュな感覚が重要です。
stakx

1

それは本当にあなたの特定のウェブサイトのコンテキストに依存します。

たとえば、これが消費者向けWebサイトの場合、ほとんどの人がパスワード(多分)、金融/健康情報(依存)、写真などの個人情報(笑) 。

これがビジネスアプリケーションである場合、パスワードだけでなく、サイト全体のセキュリティレベルが関係します。同様に、ターゲットユーザーが誰であるかによって異なります-非常に技術的/それほど技術的ではないなど

このコンテキストはすべて、通信する内容と必要な保証のレベルを大きく定義ます。

たとえば、非技術系の消費者の場合、次のような一般的で簡単なコメントがあれば十分です。

このサイトは、最先端のセキュリティ技術を使用して構築されています。パスワードは常に暗号化されており、NSAに写真を送信することはありません。

(そして、他の人が言ったように、パスワードさえまったく持っていない方が良いです。OpenIdやOAuthのような標準を使用してください。)

高度に技術的なビジネスの場合、次のような技術的および手順の詳細の完全なページが必要です。

開発および展開プロセス全体で、完全なSDL(安全な開発ライフサイクル)を実装しています。
...
セキュリティアーキテクチャは...次の
ような利点があります...次のような安全なコーディングを保証します... by ...これらのテストを実行します。
私たちの暗号にはこれらのアルゴリズムが含まれています...そして...私たちはあなたが必要とする業界の規制に準拠し、認定されています...
私たちのセキュリティはこの独立した第三者コンサルタントによって検証されています。
...
詳細およびポリシーの確認または独立監査の手配については、マーケティング部門とご相談ください。

もちろん、あまりにも詳細な情報を提供したくはありません。パスワードそのものよりもプロセスについての情報が多いはずです。そしてもちろん、現実はそこに書いたものに実際に従うべきであることは言うまでもありません、あなたが扱っているコンテキスト。

ほのめかされる答えの1つとして、ほとんどのユーザーは気にせず、何を言っても理解せず、ユーザーデータをNSAに送信すると言っても、とにかくサインアップします。
これは彼らのためではありません。
パスワードを持っていなくても彼らは幸せです。リストから自分のユーザー名を選んで自動的にログインさせてください。

これは明らかにその小さな割合のためであるケア -あなたは彼らが必要とする情報を提供するために、右の何を行うにスマートユーザーを有効にすること、そして彼らがために頼むかもしれない教育を付与する必要があります。
そうしないと、それがうまくいかないと、他の98%が突然目を覚まして怒ります。
(「確かに、写真を見るためにパスワードが必要ないことは知っていましたが、他の人も見ることができるとは思いませんでした!!」)


0

システムを安全にしたい場合、パスワードアルゴリズムの強度は意味がありません-ほとんどのハッカーはすぐにパスワードを解読できます。特に、選択したパスワードが小さい場合、またはハッカーが既に「解読して保存した一般的な単語」である場合「レインボーテーブルなどを使用します。ArsTechnicaのパスワードクラッキングに関する記事を読んで、多くの洞察を得てください。

あなたがする必要があるのは、悪者がそもそもハッシュに到達できないことをユーザーに保証することです。私が働いていたあるセキュリティ重視の会社には、Webサーバーがデータベースサーバーに物理的に接続されていない3層Webシステムがありました。上司が自分のWebサイトを配置し、DBに直接アクセスしたい場合(設計が不十分なコード、「ナフ」と言いました)、彼はそれを手に入れることができないと言われ、彼がプッシュしたときに...それらの間に配線がないと言われました。彼は、すべてのデータ要求を中間層サービスに渡すように設計する必要がありました。また、これらのサービスはセキュリティで保護されているだけでなく、最小限の攻撃対象にさらされており、ロックダウンされています。また、DBは読み取り用にテーブルを一切公開せず、ストアドプロシージャのみをロックし、関連するサービスのみがアクセスできるようにしました。

アーキテクチャーと各層の分離がわかれば、コーディングするのは思ったほど悪くありませんでしたが、コーディングは非常に簡単でした。


0

地球上で最も安全なサイトを開発し、ユーザーエクスペリエンスを非常に低くすることができます。ユーザーは、サイトが安全でないと想定します。

地球上で最も安全性の低いサイトを構築し、素晴らしいユーザーエクスペリエンスを提供できます。ユーザーは、サイトが安全であると想定します。少なくとも夕方のニュースに登場するまで。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.