GMailでPGPを使った暗号化メールを送る
PPAPはいい加減に廃止しましょう。と言われて相当経ちますが、未だに暗号化ZIPで送り、後から自動でパスワードメールを送るという意味のない仕組みを使ってる企業があったりします。そもそも、このテクニックって2000年頃にバッドノウハウとして広まったもので、情報漏えい対策として運用されてるものですが、現代ではむしろ害悪でしかないと言われています。
一方で昔から有りながら有効活用されてるのを見たことがないのが公開鍵暗号方式のPGPを使った暗号化メール。こちらはその仕組み上ややこしいのはあるものの、PPAP等と違って非常に安全。今回はこれをGMailで使う手段を試してみたいと思います(これをクライアントサイド暗号化と呼ぶ)
目次
PPAPの危険性とPGPの概要
PPAPが何故NGなのか?
そもそも情報漏えい対策として始まった暗号化ZIPで送る手法、何が問題なのか?ファイルを暗号化し、パスワードがなければ復号化して取り出せないのだから安全じゃないか?というのは、浅はかな考えで、大昔から意味がないと言われてる明確な理由があります。
- 昔と違い現在はメールの通信件路上はSSLで暗号化されてるので、通信傍受される可能性は非常に低い
- 暗号化ZIPにしてしまうことで、相手方のサーバ側ウイルススキャンが機能しない(ウイルススキャンができない為マクロウイルス等を相手に広めてしまうリスク)。但しマクロウイルスは証明書で制御が出来るのでこの問題は回避可能。
- 自動的に添付ファイルを暗号化ZIPで固めた上に、同じメアド宛に自動でパスワードを送信してるため、誤配信には全く無力なので情報漏えい対策になっていない。
- 近年では相手方メールサーバ側で暗号化ZIPの添付ファイルをセキュリティポリシーで受信拒否にしてる企業が増えてる
- PCのスペック向上で暗号化ZIPの解読自体が容易になってきている(量子コンピュータだと一瞬で解読されるという)
あくまでもPPAPはSSLが標準ではなかった時代の通信傍受対策で始まったもので、今使われてるような誤配信による情報漏えいの為のものではなかったのが、いつの間にか後者の理由にすげ変わった挙げ句、面倒だから処理を自動化した事で、全く無意味なものに成り果てたというのがPPAPがNGになった理由です。
利用してる企業は今すぐ廃止しましょう。社内情報システムの規程に記載があるならば直ちに改定すべき事です(規程があるから続けてるというのは思考停止です)。
クラウドストレージを使えばよいのでは?
ということで数年前からメジャーに利用されてるのが、クラウドストレージ。Google DriveやDropbox、Boxなどのクラウドストレージサービスですが、こちらも結構問題があったりします。正しく運用できれば良いのですが、そうはいかない事情に遭遇した人も多いでしょう。
- 相手方企業がセキュリティポリシーで対象のクラウドストレージへの接続を拒否してる企業が多く、企業によってそれがまちまち。
- それで宅ファイル便といった一時共有サイトを使って情報漏えいしたケースがある
- Boxはファイルのアクセスにパスワード設定ができますが、このパスワードは別途ユーザが相手方に通知が必要
- パスワード設定をせず、招待をしてアクセス権限を設定するにせよ、結局相手方のメールアドレス登録が必要で、しかもそれが可能なフォルダは特定のフォルダに制限を掛けてることが多い
- 招待の場合、相手はアカウントを持ってる必要性がある
- また招待した場合アクセス権限がいつまでも残ってしまうという問題もある(ユーザが能動的に期限設定や権限削除を行う必要がある)
- Google Driveの場合はパスワード設定での共有が無いため、社内規程でNGという企業も多い
アカウントを用意する必要なく渡せる利便性はあるものの、特に1つ目の理由で共有できなかったり、4.の理由で結局間違えたメアド登録で情報漏えいしたりと、にっちもさっちもいかないのがクラウドストレージの現状だったりします(グループ企業内なら一律同じシステムのハズなので、こういった問題は起きないと言っても、5.の問題は付きまとい、センシティブな情報がいつまでも見られるといった問題も起きています)
ビジター共有機能を使えばGoogle Driveでも安全に外部とやり取りは可能ですが、相手側がGoogle Driveを封じてる場合は共有が難しいのも事実です。
誤送信対策
問題が混同されてるが故に、では誤送信対策はどうするんだ?といった形で息巻く方が出てくるのが定番のパターンですが、そもそもPPAPは誤送信対策の為の手段ではなく通信経路や受信トレイに入った後のファイルの傍受や復号化を防ぐ為の手段であって、誤送信は全くの別問題です。ましてやPPAPの場合メール本文は暗号化されてるわけもないので見放題です。
誤送信は人間が行っている以上、仕組みで緩和は出来ても防ぐといったことは出来ません。Gmailの場合は送信取り消し機能を有効化しておくべきでしょう。また誤送信防止用のGMailSend Address CheckerとSafety for Gmailいった拡張機能を利用するのも良いでしょう。送信取り消し機能の有効化手順は以下の通りです。
- Gmailの右上の歯車アイコンをクリック
- すべての設定を表示をクリック
- 全般の中にある「送信取り消し」を見つけて、秒数があるので30秒に指定する
- 一番下の変更を保存をクリックする
送信後に左下に出る「元に戻す」をクリックすれば送信取り消しがなされます。また、社内でよくあることなのですが、情シス側も誤送信の対策をすることが可能です。
- 同姓同名対策のためにメールアドレス命名規則を見直す(姓名にこだわる理由は本質的には無い)
- 反射的に入力補完で出てきたメアドを選ぶ習性があるので、メアドの差出人名称に会社名を付与しておく(例:綾瀬太郎(苫東商店) <tarou.ayase@hogehoge.com>といった形で)。設定→アカウントにその設定がある
- グループ企業で同一のドメインに全員押し込めたりせず、きっちりドメインは分ける
誤送信対策でm-Filterとか入れてるケースありますが、手間が増えるだけでユーザが慣れると効果がなくなります。さらにユーザ側でも
- 自分から積極的にメアド入力して送信する一手目を送ったりせず、受信メールに対してのリプライをする(何故か毎回新規にメール作成して送信してるリテラシーが怪しい人を結構見かけます)
- 機械的に送信して処理する仕組みを用意する(特に一括で内容の異なるメールを手で送るなんて論外です。メール一括送信プログラムを作れば良い)
ダブルチェックと称してメール送信でメアドダブルチェックなんてやらせてる企業はダブルチェックの効果は期待してるほどありません。
図:30秒以内ならば取り消すことが可能
図:送信取り消しの画面
PGPの概要
PGPは公開鍵暗号方式という複雑な方式で暗号化と復号化を実現してる手段で、オープン仕様ではOpenPGPやGnuPGとして公開されている仕組み。なかなか歴史のあるもので、NHKの新電子立国 コンピュータ地球網でも取り上げられた非常に面白い技術で、知らない間に身近な場所であちこちですでに利用されてるものです。
公開鍵と秘密鍵の2つを双方で用意しておき、ネット上には暗号化オンリーの公開鍵を公開しておく。利用者はそれを使って暗号化し、相手方は自分の手元にある秘密鍵で復号化するという仕組みで、公開鍵では復号化は出来ない(当たり前ですが、秘密鍵は絶対に公開してはいけません)
メールで利用すると本文や添付ファイルがすべて暗号化される為、
- 受信したからといって添付ファイルを取り出せるわけじゃない。復号化できないと文章すら読めない。
- 相手方にパスワードの通知をする必要はない。相手方の公開してる公開鍵で暗号化してるため。
- 単純な暗号アルゴリズムではないため、解読が非常に難しい。
- メールで使える為、クラウドストレージのような厄介な問題が無い。
- S/MIMEと違い証明書購入のコストが掛からない
- 但し、添付ファイルも暗号化されてしまうので、PPAP同様の問題があるため、クラウドストレージと組み合わせて添付せずパスワードとURLを本文に記載して送ると良い(この部分は、Boxなどは標準で共有時にBox側から飛ぶようになってるので手動では行わない)
- ファイルの暗号化も同じPGPで相手方の公開鍵で暗号化してしまうというのもあり(パスワード通知が不要になる)
但し、「自分も相手方もPGPで秘密鍵と公開鍵を用意する必要がある」という点で、これまでメールで活用されてこなったという経緯があります。
GMailでPGPを使う方法
GMailそのものには、PGPを使ってのメール暗号化や復号化の機能は備わっていません。メールクライアントであるMozilla ThunderbirdにはPGPを使う機能があるため、結構昔から利用が可能になっています。そちらでGMailへ接続してやり取りはすでに使ってる人もいるでしょう。
今回はChromeでGMailを開いて使う手法になります。
FlowCrypt拡張機能を追加
PGPの面倒な準備や、暗号化・復号化を含めて簡単にアシストしてくれるのが、FlowCryptと呼ばれるChrome拡張機能。以下の手順で準備します。
- FlowCryptを開き、Get Chrome Extensionをクリック
- Chromeに追加をクリックするとインストールされる。拡張機能を追加をクリックして完了。
- 拡張機能を開くと、Sign in with Googleと出るのでクリック
- New Encryption Keyをクリックするか?すでに用意してあるならば、Import Private Keyをクリックする。今回は前者。
- Pass phraseではパスワードを設定する。なるべく長いものをセットしておきます。
- Encryption Key Typeは適当に選ぶ。デフォルトは128bit ECC Curve 25519。RSA 4096bitとかも選べる
- Create and Saveをクリックする
- 次の黄色い警告画面ではパスフレーズをどっかに保存しておけと言われるので、Yes, I Wrote it downにチェックを入れてOKをクリック
- 自分宛てに暗号キーのバックアップ(秘密鍵)が添付されて送られてくる
- テスト用に暗号化メールが送られてきて、自動的に復号化して見えるようになる
- GMailのトップ画面を開くと、左サイドバーにSecure Composeというボタンが追加されてるので、暗号化メールを送る場合はこれをクリックする
自動的に公開鍵はオープンにされて、秘密鍵はそのデバイスに登録されるようです。また、相手方も同じような手順でflowcryptで手順を踏んで暗号化キーを作成する必要があります。
図:暗号化メールの事例とボタンの追加
実際に送信する手順
2つのアカウントで前述の暗号化キーを作成し、Flowcryptを利用して送信してみることにしました。
- 左上のSecure Composeをクリックする
- 右下に緑色のメール作成画面が出る。Toに相手方のメアドを入れて、緑色で鍵付きになったら、相手の公開鍵が見つかった証拠。灰色の場合はPGPでメールは送れません。
- Subjectと本文をいれて、Encrypt, Sign and Sendをクリックする
- 暗号化されて送信される
図:暗号化メール送信画面
実際に受信してみると
もう一方で先程送ったメールを受信してみる。自動的に自分の秘密鍵を使って暗号メールが復号化されて本文が表示されるようになる。右上のSee Originalをクリックすると暗号本文の状態で表示されるようになります。
ちなみに添付ファイルもPGPで暗号化されてるけれど、クリックするとDownloadの表示が出るので、クリックすると復号化されてファイルがきちんと取り出せる仕組みになっています。
このメール内容はそのデバイスでFlowcrypt経由 + 秘密鍵がなければ取り出せないので、ウイルス等でメールボックスの中身を見られても、中身は暗号文だけです。
図:自動で復号化されて表示される
図:暗号化ファイルも取り出せる
注意点
メール本文が暗号化されているため、GMailの検索画面で検索しても、対象のメールはヒットしなくなります。暗号化されているため、検索インデックスに登録できなくなるため。また、前述にもあるように、添付ファイルも暗号化されてる点ではPPAPと変わらないので、サーバ側のウイルスチェッカーの対象にならない。
但し、暗号化ZIPではない為、一方では安全度が高いと言え、復号化にパスワードではなく秘密鍵を使うのでパスワード送信などという無意味な行為も不要という利点は高い。相手サーバから拒否されることも少ない。クライアント側のウイルスチェッカーを強化するであったり、マクロウイルスは証明書で制御が出来るので、クライアント側の対策強化をするだけでも防御できるので、そこまでガッチガチにする必要はないのではないかと思います。
※EXEやらVBSやら添付してくるケースが考えられるのでいずれにせよサーバ側でウイルスチェックをして済ますという考えは雑だと思います(寧ろ今は、フィッシングやランサムウェアといったほうが多いのでサーバ側ウイルスチェックはあまり意味がない)。
暗号化ZIPの送信を禁止にしてしまう
未だに「暗号化ZIPを辞めなさい」と命令が出ているにも関わらず、また前述のようなPGPや添付ファイル分離のソリューションを入れてるにも関わらず、GMailで暗号化ZIPで送信する愚か者が後を絶たないというケースがあります。このような場合、Google Workspaceの設定で阻止することが可能です。
以下のような手順でGoogle WorkspaceでZIPは許可しつつ、暗号化ZIPは弾くといったことが可能です。
- Admin Consoleにログインする
- 左サイドバーから、アプリ=>Google Workspace=>Gmailを開く
- コンプライアンスを開く
- 添付ファイルのコンプライアンスを開く
- ルールを追加をクリック
- タイトルを付けて、影響を受けるメールでは送信・内部送信にチェックを入れる
- 各メッセージで検索するコンテンツを表す表現を追加するでは、次の一部がメールに一致する場合として、追加をクリック
- ファイル形式が「暗号化された圧縮ファイルとアーカイブ」にチェックを入れる。暗号化されていないアーカイブに入れてしまうと通常のZIPも阻止されます。
- ついでにカスタムファイル形式で7zとか入れておけば特定拡張子のアーカイブもまるごと封じられます。
- 保存をクリックする
- 「上記の表現が一致する場合は、次の処理を行います」では、「メールを拒否」に変更する
- 下のテキストボックスにはメールを拒否した理由として、暗号化ZIPは送信出来ませんなどの文章を入れておく
- 「影響を受けるアカウントの種類」では、ユーザとグループにチェックを入れておくと良いでしょう。
- 最後に保存をクリックする。しばらく待つと反映される。
- 実際に暗号化ZIPを添付して送信すると送信出来るのですが、Mailer DaemonからDelivery Status Notification (Failure)として送信を阻止されてバウンスメールが返ってくる。
図:暗号化ZIPを阻止する設定
図:メールを拒否するようにセット
図:エラーとして送信が阻止された
関連リンク
- 公開鍵・秘密鍵とは?暗号化の仕組みをわかりやすく解説
- Google Workspaceがクライアントサイドの暗号化に対応するというお話
- Google Workspace クライアントサイド暗号化機能のベータ版が Google カレンダーでも利用可能に
- 情報漏えい発生の「宅ふぁいる便」、3月末で終了 システム再構築に要する時間・費用を考慮
- PGP によるファイルの暗号化
- 座談会 「社会からPPAP をなくすには?」
- ホスト型 S/MIME を有効化してメールの安全性を高める
- 送信者名(差出人)を見直そう
- Gmailを捨ててProtonMailを選ぶ5つの理由
- S/MIMEを使ってみよう! メールセキュリティ保護の仕組みと利用方法[中編]
- 基本的なメール コンテンツ フィルタリングに関するルールの設定