EFS(Encrypting File System) とは、Windows OS 標準で利用可能な機能で、ファイルやフォルダを暗号化してセキュリティ保護することができます。
EFS の機能でセキュリティ保護したファイルを利用するには、EFS 証明書とそのキーペアとなる秘密鍵が必要です。これは EFS 暗号化されたファイルを利用するユーザーのプロファイル上に保存されています。ユーザー プロファイルはクライアント端末のローカル上に保存されています。そのため、EFS 暗号化されたファイルを他端末へコピーする場合、EFS 証明書とそのキーペアとなる秘密鍵も考慮する必要があります。
今回は、EFS 暗号化されたファイルを他の端末へコピーする仕組みについて紹介します。
EFS の仕組みについて
EFS(Encrypting File System) は、Windows OS 標準で利用可能な機能でファイルやフォルダをセキュリティ保護できます。ファイルやフォルダの EFS 暗号化は、プロパティ画面の [詳細設定] より行うことができます。
EFS の仕組みは、共通鍵(FEK)でファイルを暗号化しています。また、その共通鍵は EFS 証明書の公開鍵で暗号化し、そのデータをファイルのヘッダとして付与しています。また、その EFS 暗号化されたファイルを利用する時は、EFS 証明書のキーペアとなる秘密鍵でヘッダを復号して、共通鍵を入手してファイルを復号して利用するという仕組みです。
EFS 暗号化されたファイルを利用するには、EFS 証明書とキーペアとなる秘密鍵が必要となります。これは、ファイルを利用するユーザーの [個人] の証明書ストアに EFS 証明書が秘密鍵付きで登録されている状態であれば、利用可能ということになります。
EFS の基本的な仕組みについては、以下の記事でも紹介しております。
EFS (Encrypting File System) とは、Windows OS 標準で利用可能な機能で、ファイルやフォルダを暗号化してセキュリティ保護することができます。 EFS 暗号化ファイル システムでは、公開鍵暗号化方式と共通[…]
エクスプローラーでファイルをコピーする基本動作
先ほど説明した通り、EFS の仕組み上、「EFS 暗号化されたファイルを他の端末にコピーしても、EFS 証明書や秘密鍵がないので使えない」という前提があります。そのため、Windows OS では、エクスプローラーで他の端末の共有フォルダに EFS 暗号化されたファイルをコピーする際、EFS 証明書が存在するコピー元の端末上でファイルの EFS 暗号化を解除するという仕組みになっております。
ファイルのデータがコピー元の端末からコピー先の端末へ送信される時、データは平文の状態となります。また、コピー先の端末も平文のままのファイルで保存されるという状態が基本動作となります。
ファイルを EFS 暗号化させた状態でコピーする方法
基本構成では EFS 暗号化されたファイルを、暗号化させたままの状態でコピーすることはできません。しかしながら、以下の 2 通りの方法で対処することが可能です。
- コンピューター アカウントに Kerberos 委任を設定
- robocopy コマンドで efsraw オプションを付ける
いずれかの方法で実施すれば、コピー先の端末にも EFS 暗号化された状態でファイルをコピーすることが可能です。各方法について詳細を説明します。
コンピューター アカウントに Kerberos 委任を設定
EFS 暗号化されたファイルのコピー先となる端末のコンピューター アカウントに “Kerberos 委任” を有効にしておけば、EFS 暗号化された状態でファイルをコピーすることが可能です。
- EFS 証明書の発行
- ファイルの EFS 暗号化
- 端末 A 上で「ねこまる」はエクスプローラーを開き、端末 B の共有フォルダへアクセスします。
- 端末 A 上にある EFS 暗号化ファイルを、端末 B の共有フォルダへコピーします。
- 端末 A のユーザー プロファイル上に保存されている EFS 証明書の秘密鍵を利用して、EFS 暗号化されたファイルを復号します。
- 端末 A からデータを送信されるときは、平文の状態のデータで送信されます。
- 端末 B では送信されたファイル データの受領が完了します。
- Kerberos 委任の設定が行われているため、「ねこまる」の権限で TGT を取得します。
- 「ねこまる」の TGT で、端末 B を利用するためのサービス チケットを取得します。
- 「ねこまる」のユーザー プロファイルを作成し、EFS 証明書の発行を行います。
- 発行された EFS 証明書を利用して、ファイルの EFS 暗号化を行います。
Kerberos 委任の設定手順について
robocopy コマンドで efsraw オプションを付ける
robocopy コマンドは別端末にフォルダ内のデータを同期(コピー)する時に利用できるコマンドです。
robocopy コマンドでは efsraw というオプションを指定することできます。このオプションは、EFS 暗号化されたファイルやフォルダは、EFS 暗号化されたままの状態でコピーするというオプションです。そのため、コピー元の端末からデータを送信する時、EFS 暗号を復号するという操作は必要ありません。
robocopy コマンド実行した場合における、EFS 暗号化されたファイルのコピーの処理は以下のような流れとなります。
- 端末 A 上で「ねこまる」はコマンド プロンプトを開きます。
- robocopy コマンドに efsraw オプションを指定して、端末 A から端末 B へ EFS 暗号化されたファイルをコピーします。
- 端末 A からデータが送信されるときは、efs 暗号化された状態のままファイルのデータを送信します。
- 端末 B では送信されたデータをそのままファイルとしてコピーします。
robocopy コマンドでコピーすると EFS 暗号化されたファイルを復号するという処理を行わないため、コピーの作業を行うアカウントが EFS 証明書を持っている必要はありません。しかし、端末 B 上では EFS 暗号化されたままのデータを受領して保存しているのみであり、端末 B 上には EFS 暗号化されたファイルを復号するために必要な EFS 証明書やキーペアの秘密鍵は存在しません。そのため、robocopy コマンドを利用する場合は、EFS 暗号化されたファイルをそのままコピーしただけとなり、それだけでは端末 B 上では EFS 暗号化ファイルは利用できません。
端末 B 上で robocopy でコピーした EFS 暗号化されたファイルを利用するには、端末 B 上にてファイルを利用するユーザーの個人の証明書ストアに EFS 証明書を秘密キー付きでインストールする必要があります。証明書のインストールの作業は、利用するユーザーが端末 B にログオンして EFS 証明書のインストールを行う作業を実施する必要があります。