【Windows】EFS 暗号化ファイルを他端末にコピーする仕組みについて解説!

PKI

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 証明書が登録されている必要がある
 
ここで注意が必要なのは、アカウントの [個人] の証明書ストアに秘密鍵付きで EFS 証明書が登録されている必要があるという点です。[個人] の証明書ストアであるため、EFS 証明書や秘密鍵の保存場所は “ユーザー プロファイル” の中となります。ユーザー プロファイルは、EFS 暗号化されたファイルがある Windows 端末のローカル ディスクに存在します。
つまり、「EFS 暗号化されたファイルを他の端末にコピーしても、EFS 証明書や秘密鍵がないので使えない」ということになります。この前提条件を踏まえて、Windows OS にて EFS 暗号化されたファイルをコピーする際にどのような動作となるのか見ていきましょう。

 

EFS の基本的な仕組みについては、以下の記事でも紹介しております。

あわせて読みたい!

EFS (Encrypting File System) とは、Windows OS 標準で利用可能な機能で、ファイルやフォルダを暗号化してセキュリティ保護することができます。 EFS 暗号化ファイル システムでは、公開鍵暗号化方式と共通[…]

 

 

エクスプローラーでファイルをコピーする基本動作

先ほど説明した通り、EFS の仕組み上、「EFS 暗号化されたファイルを他の端末にコピーしても、EFS 証明書や秘密鍵がないので使えない」という前提があります。そのため、Windows OS では、エクスプローラーで他の端末の共有フォルダに EFS 暗号化されたファイルをコピーする際、EFS 証明書が存在するコピー元の端末上でファイルの EFS 暗号化を解除するという仕組みになっております。

ファイルのデータがコピー元の端末からコピー先の端末へ送信される時、データは平文の状態となります。また、コピー先の端末も平文のままのファイルで保存されるという状態が基本動作となります。

 

基本構成では、コピー先には EFS 暗号化が解除された状態の平文ファイルがコピーされます。
 
 

ファイルを EFS 暗号化させた状態でコピーする方法

基本構成では EFS 暗号化されたファイルを、暗号化させたままの状態でコピーすることはできません。しかしながら、以下の 2 通りの方法で対処することが可能です。

  1. コンピューター アカウントに Kerberos 委任を設定
  2. robocopy コマンドで efsraw オプションを付ける

いずれかの方法で実施すれば、コピー先の端末にも EFS 暗号化された状態でファイルをコピーすることが可能です。各方法について詳細を説明します。

 

コンピューター アカウントに Kerberos 委任を設定

EFS 暗号化されたファイルのコピー先となる端末のコンピューター アカウントに “Kerberos 委任” を有効にしておけば、EFS 暗号化された状態でファイルをコピーすることが可能です。

 

 Kerberos 委任とは?
端末にアクセスしにきたユーザーの権限で、Kerberos 認証を行うことができる仕組みのことです
コピー先の端末のコンピューター アカウントに Kerberos 委任の設定を行うことで、コピー先の端末では、コピーの作業を行ったユーザーの権限で代理で Kerberos 認証を行うことができるようになります。つまり、コピー先の端末上にユーザーがログオンしていなくても、作業ユーザーの TGT やサービス チケットをとることができる構成になります。作業ユーザーのサービス チケットがあれば、コピー先の端末で以下の処理ができるようになります。
 
  • EFS 証明書の発行
  • ファイルの EFS 暗号化
 
コピー先の端末のコンピューター アカウントに Kerberos 委任の設定が行われている環境での、EFS 暗号化されたファイルのコピーの処理は以下のような流れとなります。
  1. 端末 A 上で「ねこまる」はエクスプローラーを開き、端末 B の共有フォルダへアクセスします。
  2. 端末 A 上にある EFS 暗号化ファイルを、端末 B の共有フォルダへコピーします。
  3. 端末 A のユーザー プロファイル上に保存されている EFS 証明書の秘密鍵を利用して、EFS 暗号化されたファイルを復号します。
  4. 端末 A からデータを送信されるときは、平文の状態のデータで送信されます。
  5. 端末 B では送信されたファイル データの受領が完了します。
  6. Kerberos 委任の設定が行われているため、「ねこまる」の権限で TGT を取得します。
  7. 「ねこまる」の TGT で、端末 B を利用するためのサービス チケットを取得します。
  8. 「ねこまる」のユーザー プロファイルを作成し、EFS 証明書の発行を行います。
  9. 発行された EFS 証明書を利用して、ファイルの EFS 暗号化を行います。
 
Kerberos 委任を行うことで、端末 B 上で「ねこまる」の権限で処理を行うことができるようになります。そのため、EFS 暗号化されたファイルを端末 A から端末 B へコピーする場合、コピー時のデータ転送の際はデータは平文の状態となりますが、コピー先にて「ねこまる」の権限で自動で EFS 暗号化される動作となります。
また、コピーされた EFS 暗号化されたファイルを、端末 A から共有フォルダ上で開く時も、EFS 証明書のキーペアとなる秘密鍵が必要となります。そのため、端末 B 上で「ねこまる」のユーザー プロファイルをロードして秘密鍵を使うためには、Kerberos 委任が必須となります。
 
端末 B 上に「ねこまる」のログオン セッションがある場合は、Kerberos 委任の設定がなくとも EFS 暗号化されたファイルのコピーやファイルを開くことはできてしまいます。ただ、ログオン セッションがあるとは限らないので、端末 B 上の EFS 暗号化されたデータを利用したい場合は Kerberos 委任を設定するように構成してください。
 

Kerberos 委任の設定手順について

任意のコンピューター アカウントへの Kerberos 委任の設定は以下の通りです。
1) 任意のドメイン コントローラーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] を開き、[Active Directory ユーザーとコンピューター] を開きます。
3) 管理ツールより、コピーの対象となる端末のコンピューター アカウントをダブルクリックしてプロパティ画面を開きます。
4) [委任] タブを選択します。
5) [任意のサービスへの委任でこのコンピューターを信頼する] のチェックボックスを有効にします。
 
6) プロパティ画面にて、[適用]、[OK] をクリックして設定変更を反映させます。
 
コピーの作業を行うクライアント端末にて、「委任」のフラグが付いたサービスチケットをドメイン コントローラーから入手できたら、Kerberos 委任の仕組みが利用できるようになります。
 
 

robocopy コマンドで efsraw オプションを付ける

robocopy コマンドは別端末にフォルダ内のデータを同期(コピー)する時に利用できるコマンドです。

robocopy コマンドでは efsraw というオプションを指定することできます。このオプションは、EFS 暗号化されたファイルやフォルダは、EFS 暗号化されたままの状態でコピーするというオプションです。そのため、コピー元の端末からデータを送信する時、EFS 暗号を復号するという操作は必要ありません。

robocopy コマンド実行した場合における、EFS 暗号化されたファイルのコピーの処理は以下のような流れとなります。

 

  1. 端末 A 上で「ねこまる」はコマンド プロンプトを開きます。
  2. robocopy コマンドに efsraw オプションを指定して、端末 A から端末 B へ EFS 暗号化されたファイルをコピーします。
  3. 端末 A からデータが送信されるときは、efs 暗号化された状態のままファイルのデータを送信します。
  4. 端末 B では送信されたデータをそのままファイルとしてコピーします。

 

robocopy コマンドでコピーすると EFS 暗号化されたファイルを復号するという処理を行わないため、コピーの作業を行うアカウントが EFS 証明書を持っている必要はありません。しかし、端末 B 上では EFS 暗号化されたままのデータを受領して保存しているのみであり、端末 B 上には EFS 暗号化されたファイルを復号するために必要な EFS 証明書やキーペアの秘密鍵は存在しません。そのため、robocopy コマンドを利用する場合は、EFS 暗号化されたファイルをそのままコピーしただけとなり、それだけでは端末 B 上では EFS 暗号化ファイルは利用できません。

端末 B 上で robocopy でコピーした EFS 暗号化されたファイルを利用するには、端末 B 上にてファイルを利用するユーザーの個人の証明書ストアに EFS 証明書を秘密キー付きでインストールする必要があります。証明書のインストールの作業は、利用するユーザーが端末 B にログオンして EFS 証明書のインストールを行う作業を実施する必要があります。

 

コピー先端末にて、ファイルを利用するアカウントの [個人] ストアに、EFS 証明書と秘密鍵を登録が必要な作業です。ファイルを利用する全てのアカウントにそれぞれ登録作業を行う必要があります。