「Windows でやってみよう PKI シリーズ 2」

こんにちは。

Critical response team の昼間を担当しています、松木と申します。

前回に引き続き、「Windows でやってみよう PKI シリーズ 2」 ですが、もう少し私の業務内容に関わりがあり、緊急対応でもお問い合わせいただきます EFS (暗号化ファイル システム)と回復エージェントについてご紹介したいと思います。 (この EFS の動作は Windows Server 2008 R2 でも動作に変更がありません。)

昨今のセキュリティ強化の一環として、メールファイルや重要なフォルダを EFS によって暗号化していただいている環境も多いかと思います。ここで使用されております EFS とは、NTFS 標準の機能となりまして、FAT または FAT32 ファイル システムではサポートしておりません。

まず、 EFS における回復エージェントの動作についてご説明させていただきたいと思います。

EFS では、以下の二つの暗号化の技術が使われています。

1. 共有鍵暗号

2. 公開鍵暗号

これらの暗号化の技術の詳細は別途ご確認いただければ幸いです。(話がそれ過ぎるので暗号化の詳細については次回とさせて下さい。)

それぞれの暗号化技術の概念は読んで字のごとく、

1. 鍵を共有する。

2. 公開鍵と秘密鍵を分けて使用する。公開鍵のみ第三者に公開する。

Windows にてファイルのプロパティ等からファイルやフォルダを暗号化して保存すると、ランダムな暗号化ジェネレータによって一意のファイル暗号化キーFEK (=共有鍵 ) が生成されます。 EFS.sys (ドライバー) はファイルに以下のヘッダーを追加し、そのヘッダー内に FEK を格納します。

DDF (Data Decryption Field)

ここで、ユーザーの公開鍵を使って暗号化された FEK が格納されます。 その後、ユーザーによってファイルが復号化される際には、一旦、この暗号化された FEK を公開鍵暗号方式における秘密鍵を用いて復号化し、暗号化されていない FEK を取り出します。そして、この FEK を用いて実際のデータ部分を復号化していきます。 (つまり、鍵を二つ作り、それぞれ別の用途で使っているんですね。)

このように、EFS では二つの暗号化技術がハイブリッドで用いられているのですが、これは実際のファイルに対する処理速度と、鍵の秘匿性を含めた安全性のどちらも実現できるようにするためで、Windows に限らず PKI では広く見受けられます。実際にはこの二つの暗号化技術が併用されている場合が多いのです。

と、ここまでは実際にファイルを暗号化したユーザーでのみ復号化が可能です。しかし、鍵の紛失や暗号したユーザーが退職されてファイルの復号化ができない、といったシチュエーションもあります。ここで、Windows ドメイン環境下では、回復エージェントという概念を用いてそのシチュエーションの回避を行っています。

(前回のキーのアーカイブとはちょっと違うアイディアになります。)

実際の動作をご説明します。

ファイルが暗号化される際、EFS はファイルに以下のヘッダーを追加し、そのヘッダー内にも FEK を格納します。

DRF (Data Recovery Field)

DRF には "Default Domain Policy" にて割り当てられた回復エージェントごとに、その証明書内の公開鍵を使用し暗号化された FEK が格納されます。回復エージェントは複数指定することが可能ですので、DRF は複数存在する場合も十分考えられます。ファイルの復号化時には、いずれかのヘッダー(DRF)が解読できた場合のみ、FEK が取り出せますので、その場合はその FEK を用いて暗号化されたファイルを復号化し、実際のファイルにアクセス可能、となります。

色々鍵が出てまいりますが、秘密鍵はユーザーのプロファイル内に実際のファイルとして格納されています。場所は、 \Documents and Settings\<username>\ApplicationData\Microsoft\Crypto\RSA です。ユーザーがログオフするか、コンピュータを再起動するまでの間ずっと読み込まれた状態になります。

ちなみに、一番に昇格したドメインコントローラを、Administrator の秘密鍵を取り出す前に撤去される場合も十分ありますよね。

初めてドメイン コントローラに昇格した時点で、"Default Domain Policy" に、回復エージェントが指定されます。この証明書はドメイン Administrator から取得されますが、それに対応する秘密キーもドメインコントローラ上のユーザープロファイル内に格納されておりますため、「この証明書に対応する秘密キーを持っています。」と表示されます。但し、上述の通り、EFS に必要なのは、回復エージェントに指定された証明書の公開キー(cer ファイル)のみとなりますため、ポリシーを表示した際、「この証明書に対応する秘密キーを持っています。」と表示される必要はありません。

- まだ信頼されていない証明書

image

- 証明書をインストールした場合

image

- 自己署名証明書を信頼された CA のストアにインストールした場合

image

 

- Editors Note (編集後記)

実は意外とお問い合わせに多いのが「回復エージェントの秘密鍵がない」なんです。最初に構築したドメイン コントローラの Administrator アカウントのプロファイルはマシンの撤去等で存在しない場合もあります。その場合、やはり Windows OS から復旧することができません。場合によっては大きな問題になりかねませんので、回復エージェントに指定された証明書の秘密鍵を確認し、安全な場所に保存していただければ幸いです。

ちなみに、Cipher コマンドを使用して 100 年ものの自己署名証明書を作成した際、100 年後の日付から 25 日前が期限切れになります。これは、Cipher コマンドでうるう年を考慮していないためです (すみません。) さて、「Windows でやってみよう PKI シリーズ 」 ですが、次は Windows における証明書の署名と暗号化の違いについてお話したいと思います。

- 免責事項

「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」