平文とは?暗号化されていない生のテキストデータのリスクと対策

システム開発・テクノロジー
平文とは?ざっくりと3行で
  • 暗号化・エンコードなどの処理が施されておらず、人間がそのまま読める状態のテキストデータのこと。「プレーンテキスト」とも呼ばれる
  • 暗号化された状態(暗号文)と対比される概念でパスワードや機密情報を平文のままデータベースやログに保存することは深刻なセキュリティリスクになる
  • 通信の文脈では暗号化されていないHTTP通信は平文でデータが流れるため傍受されると内容が丸見えになる危険性があり、HTTPSへの移行が必須とされる理由のひとつだ

【深掘り】これだけ知ってればOK!

平文が危険な場面:DBのパスワード平文保存(DB流出時に全ユーザーのパスワードが即漏洩)・HTTP通信(同じWi-Fi上で傍受されると内容が読める)・ログへの機密情報出力(APIキーやクレジットカード番号がログに出ると見られるリスク)。

平文の対策として暗号化・ハッシュ化・マスキングの使い分けを理解しよう。パスワードはbcrypt・Argon2でハッシュ化(元に戻す必要がないため)。クレジットカード番号はAES-256などで暗号化(決済時に復号する必要があるため)。ログ・画面表示はマスキング(「****1234」のように一部のみ表示)で機密情報を隠す。

通信路の平文対策としてTLS(Transport Layer Security)がある。HTTPSはTLSで通信を暗号化することで通信経路上の第三者が傍受してもデータを読めない状態にする。現代のWebサービスでは全ての通信をHTTPS化することが実質的な必須要件だ。

ログに機密情報を平文で記録してしまうことはよくあるミスだ。デバッグ中に`console.log(user)`としてユーザーのパスワードや個人情報がログに出力されるケースがある。本番環境ではログのレベル管理とログの自動マスキング(クレジットカード番号のパターンを検出してマスクする)の仕組みが必要だ。

2022年から施行の改正個人情報保護法では漏洩時の報告義務が強化されており、平文で個人情報を保持していると漏洩時の被害が最大化する。適切な暗号化・ハッシュ化・マスキングは法的リスクの軽減にもつながる。

よくある誤解

HTTPは古いから安全ではないと知っているが管理画面はHTTPでいいと思っている

管理画面こそHTTPS必須だ。管理者のパスワード・機密データへのアクセスが平文で流れる管理画面はHTTPSなしでは非常に危険で、社内だからといってHTTPで済ませることは許容できないリスクがある。

パスワードをBase64エンコードして保存すれば平文ではないと思っている

Base64はエンコードであり暗号化でも保護でもない。デコードすれば即座に元のパスワードが取得できる。パスワードの保存にはbcrypt・Argon2などの専用ハッシュ関数を使うことが正しい方法だ。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

DBに平文でパスワードが保存されていました。今すぐbcryptでハッシュ化して全ユーザーにパスワードリセットを促してください。

セキュリティエンジニアが深刻なセキュリティ問題を発見して緊急対応を指示している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

このAPIのレスポンスにクレジットカード番号が平文で含まれています。マスキングして下番4桁だけ表示するように修正してください。

コードレビューで機密情報の平文露出を発見してマスキング対応を指示している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

ログにメールアドレスと電話番号が平文で出力されています。個人情報保護法の観点から問題なのでマスキング処理を入れてください。

セキュリティ担当者が個人情報の平文ログ記録のリスクを指摘している場面。

【まとめ】3つのポイント

  • 暗号化・ハッシュ化されていない生のテキストデータ:パスワード・機密情報・個人情報を平文のまま保存・通信・ログ出力することは流出時に即座に悪用されるため適切な保護処理が必須だ
  • パスワードはハッシュ化・機密データは暗号化・表示はマスキングで対処:用途に応じた保護手段の使い分けがデータセキュリティの基本でパスワードには不可逆なハッシュ化・復号が必要なデータには暗号化・画面やログにはマスキングを使う
  • 通信路の平文はTLS(HTTPS)で暗号化してデータの傍受を防ぐ:HTTPSは通信経路上の第三者による傍受を防ぐための基本的な対策でWebサービス全般での採用が実質必須になっている

よくある質問

Q
HTTPとHTTPSはどちらが安全ですか?
A

HTTPSは通信をTLSで暗号化しているため安全です。HTTPは平文で通信するため同じネットワーク上の第三者に傍受される可能性があります。

Q
パスワードを平文で保存してしまった場合どうすればいいですか?
A

まず全ユーザーのパスワードリセットを実施します。次にbcrypt・Argon2でハッシュ化して保存する実装に変更します。

Q
Base64は暗号化ですか?
A

いいえ、Base64はエンコード(文字列の形式変換)です。簡単にデコードできるため機密情報の保護には使えません。

Q
ログへの個人情報の平文出力はどう防ぎますか?
A

クレジットカード番号・電話番号・メールアドレスのパターンを検出して自動マスキングするライブラリを使うか、そもそも機密情報をログに出力しない設計にすることが重要です。

この用語と一緒に知っておきたい用語

用語 この記事との関連
パスワード 本記事のテーマと実務上セットで使われることが多い用語です。アカウントの持ち主が本人かどうかを確かめるための、本人だけが知る合言葉、それがパスワードだ
暗号化 次のステップとして暗号化を学ぶと知識が広がります。データを特定の鍵(アルゴリズム)を使って第三者には読めない形式に変換する技術。鍵を持つ者だけが元のデータ(平文)に戻せる(復号できる)
データ 本記事のテーマと実務上セットで使われることが多い用語です。コンピュータが処理する数値や文字、画像といった事実や資料そのもの、それがデータだ
HTTPS 次のステップとしてHTTPSを学ぶと知識が広がります。HTTP over TLSの略。WebサーバーとブラウザのHTTP通信をTLSで暗号化したプロトコル。URLが「https://」で始まりブラウザに鍵マークが表示される
ハッシュ化 本記事のテーマと実務上セットで使われることが多い用語です。任意のデータを固定長の文字列(ハッシュ値・ダイジェスト)に変換する一方向の処理のこと。元のデータに戻すことが計算上不可能という特性を持つ

【出典】参考URL

https://owasp.org/www-project-top-ten/ :OWASP Top 10(機密データの露出を含む)
https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html :OWASPパスワード保存チートシート
https://developer.mozilla.org/ja/docs/Glossary/Plaintext :MDN「平文(Plaintext)」

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました