連載
» 2017年03月10日 05時00分 公開

Windows 10でUSBメモリに書き込んだファイルが読めない場合の原因と対策(FATのEFS暗号化編)Tech TIPS(2/2 ページ)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2       

そもそもEFSとは?

 それにしても、なぜWindows 10からこのようなトラブルが生じるようになったのだろうか。それを知るには、Windows 2000の頃から利用できる「暗号化ファイルシステム(EFS:Encrypting File System)」という機能をひもとく必要がある。

 EFSは、ファイルやフォルダの内容を暗号化して、適切なアクセス権を持たないユーザーに対しては、ファイルの内容を読めないようにする機能である。EFSはWindows OSのログオン(サインイン)アカウントと密接に結び付けられており、基本的にはファイルを作成したユーザーなら何の制限もなく読み書きできる。一方、そうでないユーザーなら、ファイル名は見えるものの、その内容を表示させたり、書き込んだりすることはできない。

 EFSの操作方法そのものは簡単で、ファイルのプロパティ画面を表示させて、暗号化のためのチェックボックスをオンにするだけだ。コマンドプロンプトを使う場合は、「cipher /e 〜」コマンドで暗号化属性を設定できる。

 ただしファイルごとに設定を行うのは大変なので、通常は、暗号化データ保存用のフォルダを1つ作成し、そのフォルダに暗号化属性を付けておく。そうすると、そのフォルダ中に作成されるファイルは全てデフォルトで暗号化属性がオンになる。重要な情報を扱っている場合は、このような使い方をしているかもしれない。

 ファイルをコピーした場合でも、暗号化属性は(可能な限り)維持されたまま(暗号化されたまま)になる。例えばアプリなどから新規保存されたファイルは、保存先フォルダの暗号化属性に従う。

 EFSの使い方については以下のTIPSも参照していただきたい。

EFSで暗号化されたファイルをNTFSからFATへコピーすると?

 Windows 10より前のWindows OSの場合、EFSはNTFSだけに対応していて、FATでは利用できなかった。USBメモリでは通常FATが使われているため、NTFS上の暗号化されたファイルをUSBメモリにコピーする場合、必ず暗号化が解除されて通常のファイルとなっていた。そのためわざわざ暗号化を解除しなくても、持ち出し先のPCでは普通に読み出すことができた。

NTFSからFATへのコピー NTFSからFATへのコピー
これはWindows 8.1上でNTFS上の暗号化されたファイルをFATへコピーしようとしているところ。以前のWindows OSでは、NTFS上からFATへコピーすると、暗号化属性は解除され、非暗号化ファイルに戻っていた。だがWindows 10ではFATでも暗号化されたまま保存される。
  (1)暗号化を解除するかどうかの問い合わせ。
  (2)暗号化されたファイルを暗号化をサポートしていない場所へコピーしようとすると、このようなメッセージが表示される。
  (3)これを選択すると、暗号化されていない通常のファイルとしてコピーされる。FATなのだから、しょうがない。

 だが、2016年8月にリリースされたWindows 10のバージョン1607(Anniversary Update,RS1)やWindows Server 2016なら、FAT(FAT16やFAT32、exFAT)上でもEFSを利用できるようになっている(*1)。これらのWindows OSでは、暗号化された状態のままFATにコピーされる(当然だが、暗号化を解除する権限/証明書情報がないとコピーできない)。

 つまりWindows 10では、ファイルがEFSで暗号化されたままUSBメモリにコピーされるようになった、ということだ。持ち出し先のPCでは、暗号化を解除(復号)するまでそのファイルの内容を読み出せない。

*1 FAT上のEFSをサポートするWindows 10のバージョンについて
 FAT上のEFSサポートは、Windows 10のバージョン1607(RS1)からの新機能である(EFSはPro/Enterpriseエディションでのみサポート)。
 だが、それ以外のWindows 10でも限定的ながら利用できる。
 バージョン1507(TH1)/バージョン1511(TH2)では、NTFS上に作成したEFSファイルを暗号化したままFATへコピーすることができる(ただしFAT上で直接暗号化するのは不可の模様。これを実行するとファイルが壊れるなどの症状が発生した)。
 Homeエディションでも証明書をインポートすれば、暗号化ファイルの読み出しだけはできるようである。


暗号化されたファイルを復号するには?

 EFSでは「公開鍵暗号システム」(「暗号化の基礎」参照)を使ってファイルを暗号化している。ユーザーの「公開鍵」で暗号化し、「秘密鍵」で復号する。そのため、暗号化したのとは異なるPCで復号したい場合、暗号化を行ったユーザーの秘密鍵とその証明書(「暗号化ファイルシステム」用の証明書)の情報がないと復号できない。

 Active Directoryドメインに参加している場合は、公開鍵や秘密鍵、証明書などの情報はActive Directory経由でアクセスできる。そのため、Active Directoryに参加しているPC/ユーザー間であれば、ユーザーはEFSを使う場合でも特に難しい操作は必要ない。

 一方、Active Directoryからワークグループ環境へ、あるいはワークグループ環境内のPC間で暗号化ファイルを移動させると、この鍵情報の手動での受け渡しが必要になる(これはFATのEFSだけに限った話ではなく、NTFS上のEFSでも同じ)。USBメモリでファイルを渡す場合、大抵はこれに該当するだろう。

 その場合、USBメモリを渡す相手がWindows 10なら、証明書情報などを受け渡すことでなんとか対処できなくもない。一方、Windows 10でない場合は、ファイルの形式の問題で復号はほぼ不可能である。

 よって、どの環境でも利用できる一番簡単で確実な解決方法は、前述のように、暗号化を行った(USBメモリを作成した)PC上で、あらかじめ全ファイルの暗号化の解除操作を行っておくことである。

暗号化を使わないようにするには?

 そもそもEFSを使わなければこんな面倒なことは起こらない。EFS機能を無効にするには幾つか方法があるが(EFSが無効でもWindows OSは特に問題なく動作する)、管理者権限でコマンドプロンプトを開いて次のコマンドを実行すればよい。実行後は再起動すること。

fsutil behavior set disableencryption 1




EFSで暗号化したままのFATのUSBメモリをWindows 10で読み書きするには?

 USBメモリを渡す相手がWindows 10のPCなら、ユーザーの「暗号化ファイルシステム」用証明書を移行させることでファイルを読めるようにすることもできる。その手順は次の通りである。

  1. USBメモリを作成したPC上で、暗号化のための証明書と秘密鍵情報をエクスポートする
  2. USBメモリを読み書きしたいPC上で、証明書情報をインポートする

 具体的な手順についてはTIPS「暗号化ファイルシステムEFSを読み出すために証明書をエクスポート/インポートする」を参照していただきたい。

 だがここまでするなら、元のPC上で暗号化を解除する方が簡単である。

 持ち出すUSBメモリを意図的に暗号化したいなら、BitLocker To Goの方が簡単で便利だ。例えば持ち出し先のPC単体でも、パスワード1つで簡単に暗号化を解除できる(「超入門BitLocker」参照)。

 安全のため、どうしてもEFSで暗号化したままにしておきたいなら、USBメモリをFATではなくNTFS形式でフォーマットするという方法もある。NTFSなら古いWindows OSでも暗号化したファイルを正しく取り扱える(ただしEFSを使う限り、証明書のエクスポート/インポート操作は必要。なので、リムーバブルデバイスにおけるデータの保護用途ではEFSはあまり推奨されない)。

ファイルの名前が「〜.PFILE」になっている場合は?

 Windows 7やWindows 8/8.1などではFAT上のEFS機能はサポートされておらず、Windows 10で暗号化したFAT形式のUSBメモリは次のように見える。

E:\>dir ……ファイルの一覧を確認する
 ドライブ E のボリューム ラベルは FATUSBMEM です
 ボリューム シリアル番号は 64C6-63A3 です

 E:\ のディレクトリ

2017/03/09  11:45      595,030 ToDo.docx ……暗号化されていないファイル
2017/03/09  12:10      721,360 ZZ計画4.pptx.PFILE ……暗号化されているファイル
2017/03/09  11:28      781,552 秘密文書1.docx.PFILE
2017/03/09  12:41       26,560 秘密文書2.xlsx.PFILE
2017/03/09  11:35        9,376 文書(暗号).txt.PFILE
2017/03/09  11:35        5,268 文書(非暗号).txt
2017/03/09  12:42    <DIR>     ラーメン情報  ……暗号化されていないフォルダ
2017/03/09  15:39    <DIR>     機密データ  ……暗号化されているフォルダ。フォルダの場合は、暗号化しても名前は変わらない。代わりに、中に特別なファイル($EFS)が保存され、そこに暗号化情報が書き込まれている
          6 個のファイル           2,139,146 バイト
          2 個のディレクトリ   7,991,529,472 バイトの空き領域
E:\>



 「〜.PFILE」という拡張子の付いたファイルが幾つかあるが、これが暗号化されたFAT上の本当のファイル名である。その内容は、暗号化のための鍵などの情報と暗号化されたオリジナルのデータである。サイズは元のファイルよりも4KB程大きくなる。ちなみに、この〜.PFILEのパス名やフォルダ構造などは厳密に管理されており、勝手に変えると暗号化ファイルとして認識されなくなるので注意が必要だ。

 持ち出し先のPCで、このファイルを復号する方法は(ほぼ)ない。ファイルを作成したWindows 10上で暗号化を解除するしかない。

「Tech TIPS」のインデックス

Tech TIPS

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。