Webセキュリティ入門:HTTP・Cookie・脆弱性
機密性(Confidentiality)とは
この回でやること
機密性とは、見てよい人だけが見られる状態です。CIAの1つ目として、Webで実際に崩れる場所を学びます。
- 読む 約 7 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
機密性は、CIAの1つ目で、見てよい人だけが見られる状態を指します。この回では、Webサービスでそれが崩れる場所を具体的に挙げます。
読み終えるころには、機密性が崩れる典型的な場所を6つ挙げられるようになります。
機密性とは見てよい人だけが見られること
Confidentiality(機密性) は、許可された人だけが情報を見られる状態です。
ここで見落とされやすいのが、「許可された人」の中身です。他人に見られないことだけでなく、同じサービスの別の利用者に見られないことも機密性です。むしろ実務では、こちらのほうが問題として多く出ます。
暗号化は入り口にすぎない
機密性というと通信の暗号化が思い浮かびますが、HTTPS が守るのは運ばれている途中だけです。
途中で盗み見られない状態にしても、次のような場合には何の役にも立ちません。
- サーバーが、頼まれるまま他人のデータを返している
- ログに個人情報がそのまま書かれ、多くの人が読める場所に置かれている
- エラー画面が、内部の構造やデータの一部を表示している
暗号化されたまま、正しく届けられた、間違った相手への応答は、暗号化では防げません。
HTTPSは「途中で見られないこと」を保証します。「渡してよい相手か」は、サーバー側の確認が決めます。
崩れる場所
Web で機密性が崩れる典型を挙げます。以降のコースで、それぞれ詳しく扱います。
他人のデータが返る。 識別子を変えると別の人の情報が見えてしまう。注文番号を1つずらすと他人の注文が開けてしまう、という例がこれです。
一覧に混ざる。 検索や一覧の絞り込み条件が抜けていて、権限の無いデータまで含まれてしまう。
応答に余分が入っている。 画面には出していないが、APIの応答にはメールアドレスや内部IDが含まれている。画面で隠しても、通信を見れば読めます。
エラーが喋りすぎる。 「そのメールアドレスは登録されていません」と「パスワードが違います」を区別すると、登録の有無が分かってしまいます。
ログと通知に残る。 障害調査のためのログや、外部への通知に、そのまま個人情報が乗っている。
保管したまま忘れる。 公開設定のまま置かれたファイル置き場、消し忘れたバックアップ。
見えなくすることと、渡さないことは違う
画面で隠す、ボタンを無効にする、JavaScript で表示を消す。これらはすべて見せ方の話です。データはすでにブラウザまで届いています。
機密性を保つには、そもそも渡さないことが必要です。応答に含めない、そもそも取り出さない。前回の信頼境界の話がここでも効きます。