web-dev-qa-db-ja.com

双方向暗号化でパスワードを保存することは安全ですか?

私は自分の地元の学区の親アカウントを持っている親です。そのため、自分のWebサイトにログインして、私の子供の成績などを表示できます。

「パスワードを忘れた」ボタンをクリックすると、パスワードがプレーンテキストでメールで送信されました。これが気になっていたため、 このページの下部 からのリンクを含めて、校長にメールを送りました。これは、組織のIT部門から受け取った返信:

親パスワードはプレーンテキストでは保存されません。それらは暗号化されています。一方向の暗号化ではなく、双方向の暗号化。これは、システムがAriandeのCoolSpoolユーティリティを介して電子メールでそれを提示できる方法です。

サポート上の理由から、親が3回サインインに成功するまで、親のパスワードは特定のスタッフに表示されます。その後、そのパスワードは誰にも表示されません。ただし、システム自体が確認済みの電子メールに送信できるように保存されます。保護者による3回のサインインが成功した後、パスワードを忘れた場合、確認済みのメールアカウントにパスワードをリセットするためのリンクが送信されます。この変更は現在進行中です。

この説明は、電子メールで送信されるプレーンテキストのパスワードを正当化しますか?また、私のパスワードはそれらで安全ですか?

そうでない場合、どのリファレンスやリソースを返信できますか?

139
43Tesseracts

いいえ、これは良い習慣ではありません。 2つの明確な問題があります。

  • ハッシュする代わりにパスワードを暗号化することは悪い考えであり、プレーンテキストのパスワードを格納する境界です。低速ハッシュ関数の全体的な考え方は、ユーザーデータベースの流出を阻止することです。通常、すでにデータベースにアクセスしている攻撃者は、Webアプリケーションが暗号化キーにアクセスできる場合、暗号化キーにもアクセスすることが期待できます。

    したがって、これは境界線の平文です。私はこれを この質問 の複製として閉じることを投票しました。これはほとんど同じであり、リンクされた回答はほとんど直接、特にプレーンテキストの犯罪者についてのビットが適用されるためです。平文の犯罪者についても 別の答え があります。

  • 平文の電子メールを介して平文のパスワードを送信することは悪い考えです。パスワードの再利用が行われなくても違いはないと主張するかもしれませんが、それが何であり、なぜそれが悪い習慣であると考えられているのかさえ理解していないと思います。また、パスワードの再利用は非常に一般的であるため、適切な回答にはなりません。

さらに、彼らは2番目の部分で機能しているようです(プレーンテキストの電子メールのパスワードリセットリンクが同じ球場にあるとしても、つまり、プレーンテキストのメールからパスワードを読み取ることができる脅威は、おそらくあなたの前にリンクを読み取ることもできます)できます)、私の回答からハッシュ化しないことに関する問題を説明できます。また、自由にリンクしてください この回答 を直接。

暗号化は1つの方法であることを説明するかもしれませんが、問題の暗号システムの逆関数、適切に復号化と呼ばれることによって常に逆にすることができます。 「ハッシュ」や「暗号化」ではなく、「一方向暗号化」や「双方向暗号化」などの用語を使用すると、理解が不足していることを示します。

実際の問題は、パスワードのリセットを実装しても、将来的に(正しく)ハッシュされるという意味ではありません。パスワードマネージャーを使用して、このサイトに固有の長くて強力なパスフレーズを作成することを除いて、これについてできることは多くありません。

彼らはスタッフにあなたのパスワードを伝えるシステムの一部を保持したいようですので、これは特に当てはまります(絶対にno正当な理由で)。彼らが適切にハッシュし続けていないという含意-彼らはスタッフがパスワードを見ることができるのは、3つのログイン期間が真実ではないということです。 Webアプリがキーにアクセスできれば、管理スタッフもアクセスできます。カスタマーサポートスタッフはもういないかもしれませんが、そもそもそれを見ることができないはずです。それは恐ろしく悪いデザインです。

あなたの場所に応じて、公共部門の一部としての学校には、直接連絡できるCISOを用意し、懸念を表明する義務があります。そして、公共部門ではいつものように、学校を監督する組織があるはずです。彼らは少なくともこの手続きにかなり興味を持つかもしれないCISOを持っているべきです。

192
Tobi Nary

誰もが暗号化とハッシュに焦点を合わせていますが、それ自体は悪いことですが、私は次のことをもっと悪質だと思います。

サポート上の理由から、親が3回サインインに成功するまで、親のパスワードは特定のスタッフに表示されます。

これは「ITスタッフが私のパスワードを知っている」と解釈する必要があります。彼らはスタッフの特定のメンバーがあなたのパスワードを知ることができることを公然と認めました。これはひどいことです。パスワードを変更した後にこのカウンターがリセットされることを想定しているため、ダミーパスワードを3回使用してから「実際の」パスワードに変更しても何も起こりません。公開したくないプラットフォームには何も置かないでください。他のサイトで同じパスワードを使用している場合は、それらを変更してください。

72
MrZarq

いいえ、正しく推測したように、この動作は明らかに安全ではありません。

あなたができることとすべきことは、彼らのシステムを信頼することではありません。学校のシステムでは、銀行や他のパスワードのようなパスワードを使用しないでください。子供を学校に通わせるために絶対に必要な情報以外は入力しないでください。お子様が「ログインして情報を更新してください」というメモを家に持ち帰った場合は、不快に感じるものを入れないでください。

少なくとも「将来の」シナリオでは、安全にハッシュされたパスワードをサポートするために必要な動作を実装しているようです。パスワードを暗号化する代わりに、パスワードを(3回のログイン後に)実際に安全にハッシュするかどうかは別の問題です。そして、観察によってその質問に答えることはできません。それでも心配な場合は、ソフトウェアベンダーに連絡して、動作を確認してください。

19
John Deters
  1. パスワードが安全であることを前提とすべきではありません。 パスワードマネージャが推奨される方法です には理由があります。

    実際には、これらすべてのパスワードを自分で処理しようとするときに、いくつかのパスワードを再利用するという大きな罪を犯します。これは、実際にはパスワードマネージャを使用するよりもはるかに危険です。このパスワードを使用する単一のサイトが該当する場合、それを使用するすべてのアカウントが侵害されます。そのパスワードを再利用したすべてのサイトを覚えてから、それらをすべて変更する必要があります。

  2. リセットを行うための推奨される方法は、ユーザーがTLSで保護されたWebサイトで独自のリセットを行うための一意のキーを生成することです。 TLSを有効にしても、電子メール まだ本質的に安全ではありません

    TLSとSSLは、間違いなく、企業のデータセキュリティへのアプローチの重要な基盤を形成していますが、それが潜在的な脆弱性の数を伴うシステムであることを示唆する証拠がまだいくつかあります。

    弱点の主な点は、TLSを使用して完全に保護されるトランスポートチャネル、つまり電子メールを多くの人が信じている電子メールの暗号化方法について、企業からの理解が不足していることにあります。

  3. ハッシュは基本的に異なる暗号化とは異なります。これは スタックオーバーフローで十分に調査されました

    [暗号化関数]は、任意の長さの入力と出力の間の1:1マッピングを提供します。 そしてそれらは常にリバーシブルです

    SmokeDispenserが述べたように、彼らがあなたのデータベースを取得できれば、彼らは暗号化キーを取得できます。これはハッシュとどう違うのですか?ハッシュは常に一方向です。データは入り、出てくることはありません。つまり、盗む鍵はありません。

    入力データの妥当性をチェックする場合は、ハッシュ関数を使用してください。それは彼らが設計されたものです。 2つの入力があり、それらが同じかどうかを確認したい場合は、両方をハッシュ関数で実行します。入力サイズが小さい場合、衝突の確率は天文学的に低くなります(適切なハッシュ関数を想定)。これがパスワードに推奨される理由です。

    つまり、私のサイトにパスワードを保存します。ランダムな文字列(ソルトと呼ばれます)を使ってハッシュを(bcryptのような)遅いもので繰り返しハッシュします。あなたを検証するために、あなたはもう一度パスワードを入力し、私は同じハッシュを通してそれを洗います。同じアルゴリズム(ただし、コストと呼ばれる回数は何度も実行しました)、ソルト、およびパスワードを使用して、保存したのと同じハッシュを取得する必要があります。したがって、リバーシブルな暗号化されたパスワードまたは暗号化されていないパスワードを保存する必要はありません。

14
Machavity

定義上、パスワードがあなた以外の誰かによって保存されている場合、そのパスワードは安全に保存されません。パスワードを保存する必要はありません。

IT担当者が、パスワードを提供せずにアカウントにアクセスする正当な理由がある場合、どこかにパスワードを保存する必要はありません。彼らは、パスワードのリセット、アカウントへのアクセス、パスワードの元の置き換えを行うことができます。すべてあなたのパスワードを知らなくても。

彼らがあなたにあなたのパスワードを送ることができるなら、彼らはそれをあなたになりすました誰かに送ることができます。したがって、安全ではありません。

PS。認証のためにパスワードを保存する必要はまったくありません。パスワードを回復することが不可能であるソルトハッシュを保存できます。それが標準的なやり方です。どのようにして、あなたを装った誰かにそれを送ることができますか?それはソーシャルエンジニアリングと呼ばれます。誰かが電話して、それがあなたであり、あなたのメールアドレスが変更されたと確信させ、パスワードを間違った人に送信します。

1
gnasher729