クライアントがパスワードを取得する必要がある場合はどうなりますか?


34

現在、職場でアプリケーションを継承していますが、残念なことに、データベースに保存されているユーザーパスワードは社内暗号化機能を使用して暗号化されており、暗号化解除機能も含まれています。

したがって、誰かが本当にする必要があるのは、ユーザーテーブルをコピーし、暗号化アセンブリ(データベースの実稼働アクセス権を持つユーザー)をコピーするだけです。そうすれば、100,000の電子メールアドレスと潜在的なパスワードにアクセスできます。

なぜこれが良いアイデアではないのかをビジネスに説明しようとしていますが、セキュリティの概念は技術的にあまり気になっていないので頭に浮かぶようです(政府向けです)。さらに、管理者ユーザーがユーザーのパスワードを取得してログインし、作業を行うために必要な機能を実行するための、アプリケーション内に実際に存在する機能があります。

そのため、彼らはセキュリティへの影響を理解していません。また、強力なセキュリティポリシー(パスワードを簡単に取得できないようにハッシュする)を実装するには、既存の機能を削除する必要があります。

私は何をすべきか?そもそもパスワードシステムを構築していなかったので、何か問題が発生しても非難できるわけではありません。一方、私はそれについて気分が悪く、また、100,000の潜在的な電子メールログオンにアクセスしたくありません。


9
「彼らは言った、彼らは必要とする」。そして彼らも嘘をつきます。
-S.ロット

10
何をするにしても、ただお尻を覆うだけです。
ジョブ

6
セキュリティの重要な側面の1つは否認防止です。すなわち、ユーザーは「それは私ではなかった」と言って、信じられるべきではありません。管理者がユーザーとしてログインできる場合は、それが元に疑いの影を落として任意のアクション。基本的に、管理者アカウントを取得したら、何でもできます。
ベリンロリチュ

10
新しいPSNを構築しますか?;-)
バルテック

11
そのため、この質問に「Sony」というタグを付け直したいと思います。
ジョエルイーサートン

回答:


57

必要な機能を安全な方法で実装します。別のユーザーとしてログインする管理者は、ユーザーのパスワードを知らなくても実装できます。彼らは自分自身としてログインし、「IDの変更」機能を利用できます。

パスワードデータベースの保護はビジネス上の問題ではなく、技術的な問題です。そうしないことはバグです。ビジネスがセキュリティを機能のトレードオフと考えている場合、セキュリティは失われます。このように考える理由を与えるべきではありません。


6
2番目の段落の+1と「そうしないことはバグです」。すべての開発者がそれを理解することを願っています
アルセニムルゼンコ

3
+1 「パスワードデータベースのセキュリティ保護はビジネス上の問題ではなく、技術的な問題です」。/ meは、このようないくつかの決定は純粋に技術的なものであると考えています。
マチャド

1
別のユーザーとしてログインしている管理者は、ほとんどの政府のポリシーで必要とされているセキュアシステムの否認防止の側面に違反していると考えています。
ベリンロリチュ

私は防衛契約に携わってきましたが、政府は、SOXコンプライアンスを望む企業に対して、彼ら自身よりもはるかに厳しいことを保証できます。
corsiKa

16

あなたは彼らが彼らのサーバーが侵入された場合に彼らが本当に民事責任を負う必要がないことを彼らに納得させる必要があります。彼らは、彼らが過失であることを理解している情報に基づいたユーザーベースからの反発も必要としません。

時には、一方の当事者が間違っていて、他方の当事者が正しいという明確なケースがあります。これはそれらの時間の1つです。

ソニーに起こったことを見てください。また、私たちのサイトは最近ハッキングされましたが、それが軽減されない災害にならないようにした理由の1つは、(比較的)良い一方向ハッシュ関数(SHA512)を使用したことです。それ以来、ブルートフォース攻撃や辞書攻撃さえも防ぐために(または少なくともそれらをテナント化できないように)bcryptに切り替えました。私は他に何も良心的だとは思わない。


8

事実:人々は多くのサイトで同じパスワードを使用しています

おそらく上司は、人々があらゆる種類のサービス(銀行やFacebookなどを含む)に単一のパスワード(または非常に限られたセット)を使用することが多いことに気付いていないでしょう。ユーザーがシステムでパスワードを変更できる場合、他のユーザーと同じパスワードを使用する可能性が高くなります。

上司がこのパスワードアクセスが問題ではないと考えている場合は、この事実を伝える必要があります。アプリが壁の後ろにあり、一般にアクセスできない場合でも、他のオンラインサービスにセキュリティ上の脅威をもたらす可能性があります。ユーザー名(特にメールの場合)は推測しやすいものです。上司のFacebookアカウントにログインして、彼らの壁に何かを置くことがどれほど面白いか想像できません。

ユーザーパスワードは常に、限られた数のユーザーのみがアクセスできる最上位のプライバシー/機密情報として扱う必要があります。このような揮発性の情報を保存しないようにしてください。そして、あなたがそうする時でさえ、あなたはこの情報への個々のアクセスを許可されるべきです。複数のキーでしか開けられない非常に安全な金庫から機密書類を入手するようなものです。だから、誰がいつアクセスを許可されたかを知っています。

アカウントの委任を実装する方法

アプリケーションでのアカウントの委任は別の方法で行う必要があります。

  1. 管理者は自分でログインしてから
  2. どちらか(特権ユーザーであるため)
    • UserNameのみを入力するか、
    • リストから特定のユーザーを選択してログインします

UserName + Passwordの組み合わせでログインして実行することは絶対にしないでください。

委任されたログオンを可能にするために新しい画面を開発する必要があるのは事実ですが、それでもです。

委任されたログオンが優れているのはなぜですか?

また、あるユーザーに代わって管理者が何らかのアクションを実行したことを明確にする追加機能を提供することもできます(管理者は神として行動し、傷つける可能性のあるものとしてログインしている可能性があるため、今ではわかりません)実際の従業員の評判)。

人々が間違いを犯すことに同意する必要があります。管理者も人です。そして、彼らが他の誰かに代わって間違いを犯した場合、彼らは彼らを責めようとします。私はそれについて100%確信しています。これにより、管理者以外のユーザーがより安全になり、実際の評判が他の人のミスに悩まされることがなくなります。


5

アプリケーションが何をするかは言及しません。保護する必要のある個人情報盗難情報でいっぱいのパスポートアプリケーションの場合、最大限の保護に値します。しかし、「家に帰る途中の交通事故を教えてください」の場合、パスワード侵害の結果はどうなりますか?私が書いたいくつかのシステムはパスワードさえ持っていません-あなたは単にあなたのメールまたは学生番号または人々がしばしばお互いについて知っている他の識別子を入力します、そしてシステムの所有者は使いやすさとロックできないことを高く評価します人々が互いになりすましている場合、プライバシー侵害の可能性を排除します。私もそれで問題ありません。たとえば、会議での優先セッションのスケジュールを設定するためにパスワードが必要なのはなぜですか?

したがって、コードのレビューのために私を連れて来て、あなたがこれを私に提起したら、それが私たちの出発点です。何を保護していますか?ある人が別の人としてログインできた場合のマイナスの影響は何ですか?全員の保存データが公開されることによる悪影響は何ですか?たぶん彼らはひどいです。あなたは私のためにそれらをリストするでしょう。次に、「パスワードをメールで送信」をクリックできず、代わりに「パスワードをリセット」をクリックしなければならない場合の結果は何ですか?彼らはサイトの使用をやめますか?そして、その人としてログインしているスタッフはどうですか?それは時間、お金、売上の損失、あるいは何を節約するのですか?

コスト/ベネフィットストーリーの最後の部分であり、今さらされているネガと機能を削除したときに得られるネガとの間に大きな違いがある場合にのみ得られるものは、それを修正するためのコストです。1000ドルの露出の可能性を避けるために、100万を費やすでしょうか?いいえ。他の方法はどうですか?オッズにもよりますが、最初の答えはイエスです。

ps-カナダ政府は、URLにIDを含むパスポート申請サイトを公開しました。URLを別のIDで編集すると、ランダムに完成した他の市民の姿が見られました。そして、私は一般的な幸福のために顧客サービスの目的で顧客としてサインインするクライアントを持っているので、私はそれの良い面を見ます。


9
ユーザーは、同じユーザー名を持つ複数のサイトで同じパスワードを使用する傾向があるため、データベースの公開は、金融ウェブサイトで組み合わせを試してみようとする泥棒を特定するのに役立つ可能性があります。
rjzii

10
アプリケーションが何をするかは問題ではありません。最も機密性の高いデータはパスワードです。ほとんどのユーザーは、複数のシステムでパスワードを共有します。
アプリケーション

2
@Rob Z、@ RoboShop、皆さんが間違っていたことを願っています。悲しいかな、私はあなたがそうではないことを知っています。これは、パスワードを必要としないサイトでパスワードを使用しないようにするための適切な引数です。他の場所で意味のあるパスワードの再利用を促進するだけです。
ケイトグレゴリー

@Rob Z:または、別の例として、Gawkerのデータベースが危険にさらされた後、ボットがTwitterでユーザー名とパスワードのすべての組み合わせを試し、侵入されたすべてのアカウントからスパムツイートを投稿することを読んだことを思い出しました。
Carson63000

5

法律に違反している可能性があり、訴えられる可能性があります。ユーザーに関する何らかの個人情報が保持されている場合、またはシステムがユーザーとして他のシステムと対話する場合、システムが州または連邦のプライバシー法または法律のいずれかに該当するかどうかを確認する必要があります。すなわち。Sarbanes / Oxley、カリフォルニアOOPAなど

潜在的な法的問題は別として、管理者はいつでもテーブル全体をポータブルデータスティックにダンプし、任意のユーザーとしてログインして大混乱を引き起こしたり、データを販売したりすることができます。

すべての管理者が信頼できると仮定しても、管理者パスワードの侵害は壊滅的になります。

また、ユーザーとしての操作を実行するためにユーザーのパスワードは必要ありません。sudo-like機能を実装できます。


5

FIPSとFISMAの要件によりパスワードの可逆暗号化が禁止され、親部門がそれらを月に平手打ちするため、これはおそらく連邦政府システムにはなり得ません。

また、強力なセキュリティポリシー(パスワードを簡単に取得できないようにハッシュする)を実装するには、既存の機能を削除する必要があります。

前の会社では、この問題を回避するためにパスワードリセットメールを送信する機能を求めて戦い続けました。そして、私は覆され続けました。結局、私は潮に逆らってうんちをするのにうんざりしたので、立ち去った。これはまた、いくつかの銀行のウェブサイトが尋ねる愚かな質問が「2要素認証」としてカウントされると考えた先のとがった髪のボスでした。彼との議論は、ディルバートの漫画のようでした(彼はPHBのような形をしていました)。

さらに、管理者ユーザーがユーザーのパスワードを取得してログインし、作業を行うために必要な機能を実行するための、アプリケーション内に実際に存在する機能があります。

私はこれを金融機関で実装しました。カスタマーサポートエリアの人々は自分の資格情報でログインし、もし彼らにそうする権利があれば、顧客としてログインするふりをすることができます。これは顧客としてログインせず、顧客になりすましました。そうすれば、顧客サービス担当者がお金を引き出すことを決定した場合、ログにそれを行っている顧客として表示されません:顧客サービス担当者がそれをしようとしていることを示しますレンタコップは彼らの階にそれを作ることができました)。

うまく行かないと、カスタマーサポートスタッフは、エンドユーザーが深刻な財政的または法的責任をもたらす可能性のある活動に関与しているように見せることができます。

私が取り組んだ最後の連邦政府のWebサイトでは、エンドユーザー(そのうち約400ユーザー)から年間40億米ドルを収集したため、ログ記録は非常に厳しくする必要があり、許可されたエンドユーザーのみがタッチを許可されました彼らが物品税を支払ったものを報告したウェブページ。

ソニーは、最新のセキュリティ侵害を受けた企業の1つでした。PS3ネットワークだけでなく、MMORPGゲームのネットワークでもあり、合計で25,000,000を超える名前、アドレス、クレジットカード番号、ユーザー名、パスワードが含まれています。あなたは私がまったく幸せではないと信じることができます(私は私のひび割れが欲しい!)。


PlayStation Networkの7,500万アカウント、Sony Online Entertainmentの2,500万アカウント。このリークで公開されたクレジットカードは12,000枚だけだったとは思いません。wired.com/gamelife/2011/05/sony-online-entertainment-hack~~Vない週末まではevercrackを。多分。
タングレナ

4

このような懸念については、ソフトウェアエンジニアリング倫理規範を参照します。私の解釈では、あなたの最優先事項は、公共の利益を損なうことではありません(この例のように、会社がデルのラップトップを変更して、レンタル会社が知らないうちにレンタル業者をスパイできるようにパスワードが侵害される可能性はありません)。その後、クライアントに潜在的なリスクを知らせ、それを考慮に入れることがあなたの責任です。もちろん、それが最小のベースラインです。あなたは、これがあなたがそれを待ち受けて許すことができる以上にそれを感じているかどうかのあなた自身の判断を使わなければなりません。

もちろん、政府のプロジェクトについて言及するとき、これらの慣行のために市民の個人情報が危険にさらされている場合、それは公共の利益を損なっています。


4
そして、それが政府のプロジェクトである場合、それを安全でないものにすることは合法でさえないかもしれません。
モニカを

3

メールのリストと復号化されたパスワードを印刷して上司の机に置くと、表紙に大きな警告が表示されます:「機密」

紙を無駄にしないようにフォントを小さくしてください。

また、bugzillaを使用して、管理者がパスワードを使用せずに人になりすますことができる方法を示すこともできます。


ボスに例を与えるために+1。ボスとその家族/知人のパスワードだけを机に置いた方が良いと主張することができます。
マチャド

2

まず第一に、これを回避する方がはるかに安全であり、パスワード自体ではなく、パスワードに戻すことができるものではなく、パスワードのハッシュのみを保存する方がはるかに安全であると指摘する他の回答に同意します。

ただし、復旧を許可する必要がある場合もあります。パスワードの場合、通常、既存のパスワードを回復するのではなく、管理者が必要に応じて/必要に応じてパスワードを変更できるようにするだけで回復する必要があります。

ただし、別の可能性は、ユーザーが自分のパスワードで暗号化されたサーバーにデータを保存できるようにすることです。この場合、管理者にパスワードの変更を許可するだけで不十分です。新しいパスワードはデータを復号化するために機能せず、ほとんどのユーザーは、パスワードを忘れた/失くした場合、すべての暗号化されたデータにアクセスできなくなることを受け入れられません。このような状況には、かなり安全な代替手段がありますが、本当に必要な場合でも回復が可能です。

ユーザーのパスワードを使用してデータを暗号化する代わりに、ランダムキーを作成してデータ自体を暗号化します。次に、そのキーを、ユーザーのパスワードで暗号化された場所と、管理者パスワードで暗号化された別の場所に保存します。ユーザーがパスワードを失い、データに直接アクセスできなくなった場合(実際にはそうではない場合)、管理者パスワードを使用して実際のキーを復号化し、それを使用してデータを回復したり、キーを再暗号化することができますユーザーの新しいパスワード。

1人の管理者を完全に信頼したくない場合は、それも管理できます。たとえば、5人が管理者キーを持つことを決定でき、キーを回復する前に少なくとも3人に同意してもらいたい。この場合、管理目的で暗号化されたパスワードを保存するとき、5人の管理者のうち3人ごとに1回ずつ、複数回保存します(複数のキーを保存するだけなので、多くのスペースを必要としませんデータの複数のコピーではなく、それぞれ最大256ビット)。これらの各コピーは、これら3人の管理者の各パスワード(のハッシュ)で連続的に暗号化されます。

暗号化を解除するには、パスワードを入力している3人の管理者を特定し、その3つのセットに適切な暗号化キーを選択し、3つのパスワードのそれぞれを使用して暗号化を解除し、最終的に元のキーを取得します。その後、それを使用してデータ自体を回復するか、ユーザーの新しいパスワード(のハッシュ)でデータを再暗号化して、ユーザーが引き続きデータにアクセスできるようにします。

これを行うと、しかし、あなたは本当に(強い好みによって)標準の暗号化アルゴリズム、および標準のそれの、よく知られている、徹底的に研究された実装を使用する必要があります。


2

政府のプロジェクトのためだから、これは心配だ。ユーザーのパスワードを取得して自分のIDでアクションを実行すると、あらゆる種類のセキュリティ監査が無意味になります。これを確認できる唯一の理由は、偽の監査証跡を作成することです。

パスワードに可逆暗号化を使用する必要は本当にありません。ユーザーIDをスプーフィングする正当な理由がある場合は、次の方法で対処できます。

  • 現在のパスワードハッシュを保存する
  • 既知の値で置き換える
  • (偽の監査証跡活動、例えば、オフショア口座への資金移動)
  • 元のパスワードハッシュを置き換える

システムになりすましている人は誰でも、それが起こったことを知っているはずです。「あなたの銀行は私が本当に必要だと言ったので、あなたの銀行があなたの知らないうちにあなたの口座にアクセスさせてくれるようなものだ」と言ってビジネスを説得できるかもしれません。


監査証跡の+1。日常業務や(できれば日常的ではない)災害に非常に重要です。セキュリティや監査を真剣に受け止める人はほとんどいません。
デイブ

2

優れたパスワードシステムに対する彼らの信念は問題ではありません。管理者/サポートがユーザーアカウントになりすますことを許可し、パスワードの修正を提供するソリューションを作成します。多くの場合、セキュリティは利便性のために苦しみます。便利で安全に。

編集: パスワードセキュリティの問題を完全に理解することは決してありませんが、機能を失うことは理解しています。この提案を行い、必要な変更を行うための承認を得ることができるかどうかを確認します。彼らはそれが1時間または1年かかるかどうかさえ知りません。これは機能の変更であり、完全な再構築ではありません。


3
これは完全な答えではありません-そうするコストをどのように正当化しますか?ビジネスが価値があると信じていない場合、従業員は優先度の高いアイテムに焦点を合わせないことで、仕事を危険にさらすことになります。
ニコール

@Renesis-システムが危険にさらされていないか、危険にさらされているが、価値が失われない場合、セキュリティのコストが回収されます。同社はセキュリティ指向の考え方を持つ必要があります。そうしないと、困難な戦いになります。
rjzii

1
@Rob Z-はい、質問はその考え方を達成する方法についてだと思います。明らかに、ビジネスはリスク(またはコスト、あるいはその両方)があるとは考えていません。
ニコール

1
@RoboShopいいえ。パスワードを取得できる場合、パスワードは安全ではなく、業界標準のベストプラクティスに従わないため、ユーザー(または会社)が怠慢になります。
ラインヘンリッヒス

1
ハッシュ経由でログインできる場合、パスワードをハッシュする主な目的はすぐに危険にさらされます。私の答えは立っています。しないでください。それは間違っています。
ラインヘンリヒス

1

現在のイベント(EpsilonデータリークとPlaystation Networkデータリーク)を考慮すると、問題が明白に明らかになることを願っています。

ただし、開発者としてポリシーに影響を与えられない場合もあります。

スキャンダルと費用の可能性を示すために最善を尽くしますが、これは簡単なはずですが、現在の出来事を考慮してください。しかし、それが失敗した場合、あなたは本当に何ができますか。あまりない。抗議して終了し、注意を喚起する脆弱性を示します。どちらも素晴らしいオプションのようには聞こえません。


1

これに反対することをお勧めしますが、パスワードを復号化する能力が絶対に必要な場合は、公開キー暗号化を使用する必要があります。これにより、公開鍵を使用してすべてのパスワードを暗号化できます。公開鍵で暗号化して比較することでパスワードを検証できます。また、秘密鍵を他の場所(本番コンピューター上ではない)に保持できます。


1
はい。秘密鍵は管理マシン上(ファイアウォールの後ろ)にある必要があります。管理者のみが所有し個人的に使用するUSB​​キー上にある場合はさらに良いはずです。しかし、盗まれることがあるため、これらの鍵を家に持ち帰ってはいけません。
ロバートKoritnik

KeePassのようなパスワードセーフに保存されている可能性があります。そうすれば、コンピューターが危険にさらされた場合でも、管理者のパスワード(できれば良いパスワード)で保護されます。..私は、安全で暗号化されたUSBキーに言うだろうが、彼らは頻繁にそれを使用する予定のようですね
復活モニカ

0

通常、管理者がユーザーのパスワードを見る理由は、パスワードを紛失した場合にユーザーに与えることができるためです。私が知る限り、Windowsは管理者にもパスワードを表示させません。社内の暗号化ライブラリは必ず壊れてしまいます。それを書いた人は誰でもNSAで動作しないと確信しているからです。


もちろん、あなたは質問AskerがNSAのために働かないと仮定します。
クリストファーマハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.