データベースを勉強していて、ふと思ったのですが、大抵のデータベースには、
・メール
・ID(アカウント名)
・パスワード
・性別
・年齢
などあると思うのですが、同じデータベースで、IDとパスワードを両方保管するのは危険では?と思いました。素人なので全くわからないのですが、もしセキュリティーホールなどから、データベースを持っていかれたときに、IDとパスワードは別の場所に保管すべきでは?と思いました。
実際はどうなのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
公式ドキュメント
安全なパスワードハッシュ
投稿2016/12/24 17:58
退会済みユーザー
総合スコア0
0
長くなりましたので結論から先に書きます。
そもそも漏れた時点で企業の信頼はもうだめです。
セキュリティーホールを潰すための業者や専門家がいます。
システムを公開する前に業者に頼んで入念に調査してもらいましょう。
もしセキュリティーホールなどから、データベースを持っていかれたときに、IDとパスワードは別の場所に保管すべきでは?
どうやってそのシステムにログインするのですか?
認証ページでログインボタンが押される度に、私に席から金庫まで歩いてパスワードの情報を取り出して目視で確認しろと?したくないですよ?
…というわけで、
いくら情報を分散させたとしてもIDやパスワードはサーバーからアクセス出来る比較的近い位置に保管するしかありません。
そしてシステムへログインすれば顧客の情報、メールアドレスや住所等の一覧が表示されるページに移動出来ますよね?
その時点でWebサーバーはID・パスワード・メールアドレスの詰まった金庫にすぐさまアクセスできるわけです。
このように、いくら物理的に情報を分散させても論理的には情報は1箇所に集まっており、芋づる式にデータを抜き出せます。
データの持って行かれ方次第ではどんな対策を施しても無駄です。
ハッシュ化すれば解決?
ハッシュ化の目的は単なる時間稼ぎです。
レインボーテーブルと呼ばれるよく使われるパスワードとハッシュコード一覧を使って一気に解読するテクニックがあります。
セキュリティホールで全顧客データが抜かれている場合、
ログイン認証まわりのソースコードも一緒に持っていかれてる可能性があり、
その場合はソルトがあろうがどんな強固なハッシュアルゴリズムであろうがもうダメです。
アタッカーの勝利条件は抜き出したn万件のユーザーの情報を全て抜きだすことではなく、
password123
みたいなしょぼいパスワードを登録している数十人のログイン情報を抜き出せれば十分だからです。
そもそもハッシュ化で企業の信頼は守れるの?
そもそもパスワードを復号化する必要なんてどこにもありません。
メールアドレス、氏名、性別、年齢、住所、クレカ情報…これらの情報はデータベース内にそのまま残っているからです。
例えばクレカ情報を抜き出してアタッカーが作った架空のシステムに課金で攻撃成功というわけですね。
そもそも生きているメールアドレスがあれば闇業者に名簿ごと売り払ってしまえば1ユーザー1円みたいな感じでお金もらえます。
「◯◯のシステムを利用した瞬間、アダルト広告や銀行のフィッシングメールやらが届くようになった」という噂が流れてくるようになって、そのシステム使いたいと思いますか?
それ、どうしようもなくない?
そうです、漏れたら基本的にどうしようもありません。
即座にサービスを止め、対策を施してユーザーのログイン情報を無効にしつつ通知するくらいしか手段はありません。
なのでそもそもセキュリティーホールがないように細心の注意を払うわけです。
大規模なシステムの場合、必ず専門家に頼んで調査してもらいます。
一例として、検索したらセキュリティー関係の企業がヒットしたので共有します。
HASHコンサルティング株式会社
そもそもどんなケースで情報漏えいって発生してるの?
第一回 原因の約80%は内側にアリ
実は、大半の事件はバイト君や平の人間が小金欲しさに名簿を売り払ったのが原因です。
そもそもそんな情報下っ端に見せんなって話で、
触る人間を限定して管理するだけでほとんどの情報漏えいは防げます。
なんと、こんな解決策もあった!?
リスクを抑える事が目的なら個人情報など持たないのが一番です。
世の中OAuthという認証システムがあります。
Teratailにもありますね、一度TwitterやFacebookのログインページを通過してログイン情報を持たせてまた戻ってくるあれです。
あれを使えば、顧客情報としてメールアドレスを持つ必要はありません。
課金周りはどうすんねん?
その情報もOAuth的に受け持ってくれるサービスは沢山あります。
Amazonログイン&ペイメント、PayPalなどが有名ですかね?
はい、これでクレカ情報も持たずに済んだ。
住所・年齢・性別?そもそもどこで使うの?保存する必要なくね?
このように漏れてやばい情報を削っていけばノーリスクで運用することも不可能ではありません。
まとめ
企業としては個人情報は出来るだけほしいところです。
新しいプロモーションを打って、サービスを利用して頂いて利益を上げるところが目的になります。
なのでほぼ全ての経営者は(リスクなく個人情報が得られるなら)個人情報はいくらでも欲しいわけですね。
ただし、個人情報は悪い意味でもいくらでも金になります。
保存するなら相応のコストを支払って漏れないように尽力するのは当然の義務です。
金にする使い方が思いつかないのに保存するだなんて愚か者のやることです。
何を保存するか、何は保存しないか…企業によって注目する点は違うと思いますので、
コストと上手く折り合いをつける事が重要です。
投稿2016/12/25 02:16
編集2016/12/25 02:23総合スコア21158
0
Kosuke_Shibuyaさんが提示されております、
パスワードをアプリケーション側でハッシュ暗号化する手法もあれば、
DBMS側の**透過的暗号化技術(TDE)**を利用する手法もあります。
(後者は全てのDBMSで実装されているものではないですが・・・)
データベース暗号化についてはWEBサービスにおけるDBの暗号化についてのQA、
加えて暗号化すべき情報とは?のQAにて、
回答者の方々が有益な情報を回答しております。
是非勉強の一環として参照してみることをお勧めいたします
。
投稿2016/12/24 19:19
総合スコア1636
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/24 18:00