なぜ今になって脱PPAPなのか?

2022年に入り、PPAPを禁止する企業が大幅に増えているようです。PPAPは、添付ファイルを暗号化して送ってから別のメールで復号用のパスワードを送るやり方です。今までPPAPを問題なく使っていたのに、どうして今になって脱PPAPと言われるようになったのでしょうか?

そもそもPPAPが普及した理由は、企業の情報漏洩を防ぐことが目的だったからだと思います。社員へ周知して徹底させれば、情報漏洩の対策になります。

  • PPAPでは暗号化した添付ファイルとパスワードを別のメールで送るため、両方のメールを同じ宛先に誤送信しなければ情報漏洩にはつながらない。
  • 添付ファイルが暗号化されているため通信経路で盗聴されても情報漏洩はしない。

PPAP導入時は、宛先を確認してからメールする、添付するファイルが間違っていないことを確認してからメールする、という意識があったかもしれませんが、慣れてくると確認がおざなりになり、意識が低くなってしまったように思われます。またPPAPツールの普及により、添付ファイルを送った相手に自動でパスワードを送ってしまうこともあるのではないでしょうか。

仮にパスワードを送る前に運良く宛先間違いに気づいたとしても、添付ファイルを送ってしまった後となると、受信者に解読される危険はあります。パスワード解析ツールを使えばパスワードが6桁未満だと20秒もあれば解読されてしまうようです。

通信経路においても通常は暗号化したファイルの経路とパスワードの経路は同じなる確立は高く、両方を盗聴されることは考えられます。

ですので、もともとPPAPは穴のあった対策だったのかもしれません。

では、これらの事実に気付いてきたことが脱PPAPの流れになったのか?というと違います。脱PPAPの動きとなった決定的な事件が2021年の暮れから2022年にかけて起こりました。Emotetです。2022年3月には爆発的に増えているようです。2020年に猛威を奮ったウィルスでしたが、復活しました。

マルウェアEmotetの感染再拡大に関する注意喚起

Emotetは、メールを介して広がるマルウェアです。悪意あるコードを仕込んだWordやExcelのマクロファイルを添付ファイルにしてターゲットにメールを送りつけます。ターゲットが添付ファイルを開きマクロを実行するとEmotetに感染してしまいます。

Emotetがこれほど広がった理由に、PPAPが大きく関わっています。

それは、PPAPでは添付ファイルを暗号化しているため受信者側ではウィルスの検知ができないからです。PPAPは送信者目線で情報漏洩を防ぐことに重点を置いていましたが、受信者目線で言うとリスクでしかありません。ですので多くの企業がPPAP禁止を打ち出しました。自分の会社では暗号化された添付ファイルを受け取りませんと。情報漏洩を防ぐことよりも、そもそものセキュリティ対策である外部からの侵入を防ぐことのほうが大事だと考えたのです。これが今になって脱PPAPとなった理由と考えます。

Emotetを防ぐために脱PPAPは必要と思いますが、ファイルの受け渡しを考えるとすぐに切り替えられるわけでもないので、脱PPAPにはもう少しだけ時間がかかるかと思います。

CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更する。

CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更します。実施した環境は以下です。CentOSにsshdはインストールされていて、パスワード認証が出来ているものとします。

クライアント、サーバーともログインアカウントには tak を使用しています。

鍵ファイルの作成

公開鍵ファイルと秘密鍵ファイルをクライアント側のubuntuで作成します。

[ クライアント側作業 ]
ubuntuにログインしてホームディレクトリ配下の .ssh ディレクトリに移動します。ssh-keygenコマンドで鍵生成をします。鍵の形式は RSA、ビット長は4096としました。

$ pwd
/home/tak/.ssh
$ ssh-keygen -t rsa -b 4096

鍵ファイルの名前を id_rsa.j として、パスワードの設定もしました。ログは以下のようになります。


$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tak/.ssh/id_rsa): /home/tak/.ssh/id_rsa.j ←★鍵ファイルの名前を指定
Enter passphrase (empty for no passphrase):  ←★鍵ファイルにパスワードを設定
Enter same passphrase again: 
Your identification has been saved in /home/tak/.ssh/id_rsa.j.
Your public key has been saved in /home/tak/.ssh/id_rsa.j.pub.
The key fingerprint is:
SHA256:yjDweZqZvZQ/k8jnpD8xPAWnmsFQ0F633V1yLDQCdyU tak@maria
The key's randomart image is:
+---[RSA 4096]----+
 :
 :
+----[SHA256]-----+

カレントディレクトリの配下(/home/tak/.ssh)に以下の名前で鍵ファイルが作成されます。

秘密鍵ファイル・・・id_rsa.j
公開鍵ファイル・・・id_rsa.j.pub

公開鍵ファイルのアップロード

公開鍵ファイルをCentOSにアップロードします。サーバー側の作業とクライアント側の作業があるので、それぞれ行います。

[ サーバー側作業 ]
CentOSにログインします。僕の環境ではホームディレクトリ配下に .ssh ディレクトリがなかったため新規で作成します。鍵ファイルの格納場所となるため、他のユーザーがアクセスできないように制限をつけておきます。

$ pwd
/home/tak
$ mkdir .ssh
$ chmod 700 .ssh

[ クライアント側作業 ]
scpコマンドで公開鍵ファイルをCentOSにアップロードします。CentOSのIPアドレスは伏せさせていただきました。

$ pwd
/home/tak
$ scp .ssh/id_rsa.j.pub tak@xxx.xxx.xxx.xxx:~/.ssh/

[ サーバー側作業 ]
公開鍵ファイルが /home/tak/.ssh 配下にアップロードされていることを確認します。アップロードした公開鍵ファイルを authorized_keys という名前にリネームします。権限も変えます。

$ pwd
/home/tak/.ssh
$ mv id_rsa.j.pub authorized_keys
$ chmod 600 authorized_keys

なお、今回は authorized_keys には公開鍵ファイルは1つだけですが、複数の公開鍵ファイルを登録することも出来ます(その場合は、公開鍵ファイルを authorized_keys にアペンドしていきます)。

sshd_configの編集

sshd_configの編集をrootユーザーで行います。

[ サーバー側作業 ]
sshd_configは /etc/ssh 配下にあります。必要に応じてsshd_configのバックアップをとっておいてください。

# cd /etc/ssh
# vi sshd_config

編集する内容は、PubkeyAuthentication を yes にして、PasswordAuthentication を no にします。

修正前
#PubkeyAuthentication yes

PasswordAuthentication yes

修正後
PubkeyAuthentication yes ←コメントアウトを外す

PasswordAuthentication no ←yesからnoにする

修正が出来たら、sshdを再起動します。

# systemctl restart sshd

公開鍵認証での接続

[ クライアント側作業 ]
sshでクライアントから接続します。-i オプションで秘密鍵ファイルを指定します。

$ pwd
/home/tak
$ ssh -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Enter passphrase for key ‘.ssh/id_rsa.j’:

鍵ファイルのパスワードを入力して、サーバーに接続が出来ます。

なお、sshではこれで問題ないのですが、plinkだと以下のエラーとなりました。


$ plink -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Unable to use key file ".ssh/id_rsa.j" (OpenSSH SSH-2 private key (old PEM format))
Using username "tak".
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

「old PEM format」のようです。手持ちのツールの FileZilla で鍵ファイルのフォーマット変換が出来ましたので、書いておきます。FileZilla は ubuntu上で動くFTPクライアントソフトです。

FileZilla のサイトマネージャーを開いて、プロトコルは「SFTP」、ログオンの種類を「鍵ファイル」にして接続を試みます。

接続ボタンを押下すると、鍵ファイルの変換のダイアログが出ます。

「はい」を押下します。パスワードが必要と促されるので、鍵ファイルを生成したときと同じパスワードを入力します。

新しい鍵ファイルの名前を決めて保存します。今回は id_rsa.g としました。

plinkで作り直した鍵ファイルを指定して接続してみます。

$ plink -i .ssh/id_rsa.g tak@xxx.xxx.xxx.xxx
Using username “tak”.
Passphrase for key “imported-openssh-key”:

鍵ファイルのパスワードを入力すれば、サーバーに接続が出来ます。