コマンドライン暗号化にはcipher.exeを使用する - TechRepublic

コマンドライン暗号化にはcipher.exeを使用する - TechRepublic

Windows 2000およびXP Professionalのユーザーのほとんどは、暗号化ファイルシステム(EFS)を使用してファイルレベルでデータを暗号化できることをご存知でしょう。グラフィカルインターフェースから簡単に実行でき、「詳細ファイル属性」プロパティシートのチェックボックスをオンにするだけで済みます。しかし、多くのITプロフェッショナルは、暗号化がコマンドラインでも実行できることを知りません。

cipher.exe ユーティリティは、Microsoft の最新の NT ベースのオペレーティングシステムに含まれています。GUI で実行できるのと同じタスク(暗号化と復号化)を実行できるだけでなく、コマンドラインからさらに多くの操作を実行できます。管理者やパワーユーザーは、この cipher ツールの機能を活用して暗号化情報を収集し、暗号化タスクをより迅速に実行できます。

この Daily Drill Down では、暗号ツールを紹介し、さまざまなスイッチを使用する手順について説明します。


なぜコマンドライン暗号化ツールが必要なのでしょうか? GUIを使ってファイルを暗号化したり復号化したりするのがこんなに簡単なのに(文字ベースのインターフェースを好む人もいるという理由以外に)、コマンドライン暗号化ツールが必要なのでしょうか? 暗号化と復号化はファイルやフォルダのプロパティシートから簡単に設定できますが、GUIでは実行が難しい(あるいは不可能な)暗号化関連のタスクもあります。

例えば、ユーザーが新しいファイル暗号化キーを作成したい場合はどうすればよいでしょうか。新しいEFS証明書を要求すれば、新しいキーペアを生成できると考えるかもしれません。これは、証明書MMC(Active Directoryドメインの場合)または証明機関のWebページから証明書要求ウィザードを起動することで実行できます。しかし、この方法の問題点は、EFSによって生成されるファイル暗号化キーが、暗号化プロセス中にユーザーの公開キーでラップされてしまうことです。回避策として、暗号ツールでは「cipher /k」と入力することで新しい暗号化キーを作成できます。

すでに暗号化されているファイルを暗号化したい場合はどうすればよいでしょうか?グラフィカルインターフェースでは暗号化できません。ファイルの属性を暗号化状態に戻すには、まずファイルを復号化する必要があります。暗号ツールを使えば、すでに暗号化されているファイルも含め、すべてのファイルとフォルダを強制的に暗号化できます。

暗号化ツールは、Cyber​​Scrub や Paragon Disk Wiper などの「ディスク消去」ツールと同様に、ディスク上の削除されたデータを永久に上書きするためにも使用できます。


ヒント

Windows 2000 に同梱されていた cipher.exe のオリジナルバージョンには、データ上書き機能は含まれていません。この機能は、Microsoft が 2001 年 6 月にリリースした暗号ツールのバージョン(Windows 2000 SP3 に同梱)で追加されました。ドライブ消去機能は、Windows XP に同梱されている暗号ツールに含まれています。


Cipherツールの制限事項
CipherツールはGUIではできない機能をいくつか備えていますが、使用するコンポーネント(EFS)は同じであり、グラフィカルな方法でファイルを暗号化および復号化する場合と同じ制限事項が適用されます。Cipherコマンドでは、ファイルまたはフォルダの暗号化と圧縮を同時に行うことはできないという規則を回避することはできません。また、Cipherは読み取り専用属性またはシステム属性を持つファイルまたはフォルダを暗号化することはできません。暗号化しようとすると、アクセスが拒否されるというメッセージが表示されます。EFSのセキュリティに関する潜在的な懸念事項の詳細については、こちらをクリックしてください。

GUI からは実行できるものの、Cipher ツールでは実行できないことの 1 つは、暗号化されたファイルやフォルダへの暗号アクセスを他のユーザーに付与することです。Windows XP および 2003 Server(Windows 2000 とは異なります)では、ファイルを暗号化したユーザーが他のユーザーアカウントを追加し、他のユーザーがその暗号化データを閲覧できるようにすることができます。これは、「暗号化の詳細」ダイアログボックス(「詳細属性」プロパティシートの「詳細」ボタンからアクセスできます)で行います。Cipher ツールには、これを行うための仕組みはありません。


ヒント

開発者は、AddUsersToEncryptedFile 関数を使用して、暗号化されたファイルまたはフォルダーへの暗号化アクセスを他のユーザーに付与できます。


ファイルまたはフォルダーへの暗号化アクセスがあっても、必ずしもそれを読み取ることができるわけではありません。適切な NTFS アクセス許可も必要です。

cipher コマンドを使用して暗号化情報を収集する
cipher コマンドはスイッチなしで使用でき、特定のディレクトリ内のどのファイルとフォルダが暗号化されているかを素早く確認できます。必要なのは、目的のドライブまたはディレクトリに切り替えてcipherと入力するだけです。コマンドの出力は図Aに示されています。

図A
スイッチなしの cipher コマンドは、ファイルとフォルダーの暗号化ステータスを表示します。

図Aでは、Eというラベルの論理ドライブ(コマンドを入力した場所)のルートにある各ファイルまたはフォルダの名前の前にUまたはEが付けられていることに注目してください。Uはファイルが暗号化されていないことを示し、Eは暗号化されていることを示します。ファイルのその他の属性(隠しファイル、読み取り専用、システム、圧縮)は表示されません。

暗号化または圧縮されたNTFSファイルをカラーで表示するオプションが有効になっている場合、Windowsエクスプローラーで暗号化されているファイルを一目で確認できます(ツール|フォルダーオプション|表示を選択し、該当するチェックボックスをオンにすることで有効になります)。図Bに示すように、GUI方式では、暗号化されたファイルは緑色のテキストで、圧縮されたファイルは青色のテキストで表示されます。

図B
cipher コマンドとは対照的に、GUI では暗号化されたファイルが別の色で表示されます。

ディレクトリを暗号化すると、そのディレクトリに切り替えて cipher コマンドを使用してディレクトリ内のファイルの暗号化状態を確認することができなくなります。代わりに、cipherと入力すると、図Cに示すようなメッセージが表示され、ディレクトリに追加された新しいファイルが暗号化されることを示します。

図C
フォルダーを暗号化した後は、cipher コマンドを使用してフォルダー内のファイルのステータスを表示することはできません。

代わりに、指定したフォルダ内のどのファイルが暗号化されているかを確認するには、構文cipher <フォルダ名またはパス>\*を使用します。例えば、encryptedというディレクトリ内のファイルの暗号化状態を確認するには、次のコマンドを入力します:
cipher encrypted\*

これは、ディレクトリ内の各ファイルのステータス属性が U または E であるファイルのリストを返します。

コマンドラインからの暗号化と復号化
cipher コマンドを使用して、コマンドライン、個別のディレクトリ、またはバッチでデータを暗号化および復号化できます。

/e および /d スイッチの使用
/e および /d スイッチは、cipher コマンドでそれぞれディレクトリを暗号化または復号化するために使用されます。ディレクトリを暗号化する構文は、cipher /e <ディレクトリ名>です。これらのスイッチはディレクトリに対してのみ機能し、個々のファイルに対しては機能しないことに注意してください。これは、このツールを使用する際に最もよくある間違いの 1 つであり、「cipher が機能しない」という苦情につながります。cipher /e <ファイル名>を何度入力しても、ファイルは暗号化されません。これを行うと表示される以下のメッセージに、そのヒントがあります。「
2 つのディレクトリ内の 0 つのディレクトリが暗号化されました。」

このメッセージから推測できるように、ファイル名ではなくフォルダー名でコマンドを使用する必要があります。

同様に、 cipher /d <ディレクトリ名>コマンドを使用して暗号化されたディレクトリを復号化できます。ただし、このコマンドはディレクトリに対してのみ機能します。


ヒント

ディレクトリを暗号化する際、ディレクトリ内に暗号化されていないファイルが既に存在する場合、それらのファイルは暗号化されずに残ります。ただし、ディレクトリに追加される新しいファイルはすべて自動的に暗号化されます。


/s スイッチの使用
/s スイッチは /e スイッチまたは /d スイッチと組み合わせて使用​​し、暗号化または復号化の対象となっているフォルダ内のサブフォルダに対して、指定された操作(暗号化または復号化)を実行できます。複数の階層にフォルダがあり、ツリー全体を素早く暗号化したい場合は、cipher /e /s: <ディレクトリ名> という構文を使用します。/e を /d に置き換えることで、ディレクトリ内のサブディレクトリも同様に復号化できます。

/s スイッチの後にコロンを付ける必要があることに注意してください。コマンドの実行結果には、図Dに示すように、暗号化または復号化されたサブディレクトリの名前が表示されます。

図D
/s スイッチは /e または /d と組み合わせて使用​​され、ディレクトリ内のサブディレクトリを暗号化または復号化します。

/a スイッチの使用
ここまで読んで、個々のファイルをどのように暗号化するのか疑問に思われるかもしれません。それが /a スイッチの機能です。cipher /e /a <ディレクトリパス\ファイル名>という構文を使うと、単一のファイルを暗号化できます。例えば、次のコマンドは、 encryptedというディレクトリ内にあるsubencryptedというサブディレクトリ内のsubsubというサブディレクトリにあるtestdoc1.txtというファイルを暗号化します。Cipher /e /a encrypted\subencrypted\subsub\testdoc1.txt

ディレクトリ内のすべてのファイルを暗号化するには、そのディレクトリに移動してcipher /e /aと入力します。図Eに示すように、コマンドは結果を表示し、暗号化されたファイル名を表示します。また、個々のファイルを暗号化すると(暗号化されたフォルダにファイルを作成するのではなく)、ディスク上に平文のデータが残る可能性があるという警告も表示されます。

図E
ディレクトリではなく個々のファイルを暗号化するには、/a スイッチを使用します。

ワイルドカードを使って、複数のファイルを暗号化(または復号)することもできます。例えば、作業ディレクトリ内にある「test」で始まる名前のファイルをすべて復号するには、次のコマンドを使用します:
cipher /d /a test*

/i スイッチの使用
デフォルトでは、cipher が暗号化または復号化処理を実行中にエラーが発生した場合、処理は停止します。ただし、/i スイッチを使用することで、エラーが発生しても処理を強制的に続行できます。構文はcipher /e [または /d] /i です。

/f スイッチの使用
通常、暗号化対象のパス内に既に暗号化されているファイルまたはフォルダがある場合、暗号ツールはそれらのオブジェクトに対する操作をスキップします。ただし、既に暗号化されているものも含め、指定されたすべてのフォルダまたはファイルの暗号化(または復号化)を強制的に実行したい場合は、/f スイッチ(cipher /e [または /d] /f <ディレクトリまたはパス>)を使用できます。

暗号化キーと回復証明書の管理
cipherユーティリティは、ファイルの暗号化と復号化以外にも多くの機能を提供します。また、暗号化キーと回復証明書の管理に使用できるスイッチもいくつか含まれています。それでは、それらについて見ていきましょう。

/k スイッチを使用して新しい暗号化キーを作成する
cipher を使用すると、cipher ユーティリティを実行しているユーザーに対して新しい暗号化キーを生成できます。構文はcipher /kです。このスイッチを使用すると、cipher ツールは他のスイッチを無視します。

新しいキーが生成されると、図 Fに示すように、暗号化証明書の「サムプリント情報」が表示されます。

図F
/k スイッチを使用して、新しい暗号化証明書とキーを生成します。

キーを作成するアカウントで現在ログオンしていない場合は、Windows XP の [別のユーザーとして実行] オプションを使用してコマンド プロンプトを開くことができます。


ヒント

「別のユーザーとして実行」オプションを使用するには、通常はSystem32フォルダにあるcmd.exeに移動し、アイコンを右クリックします(または、私のようにコマンドプロンプトを頻繁に使用する場合は、デスクトップまたはクイック起動ツールバーにプログラムのショートカットを作成してください)。いずれの場合も、プログラムを開くために使用したアイコンを右クリックし、コンテキストメニューから「別のユーザーとして実行…」を選択します。「次のユーザー」を選択し、使用するアカウントのユーザー資格情報を入力します。


/u スイッチを使用したキーの更新
暗号化キーを変更した場合はどうなりますか?以前のキーで暗号化されたデータに引き続きアクセスできますか?一部の情報源では、以前のキーで暗号化されたすべてのファイルとフォルダが復号化されるまで、以前のキーを保持することを推奨していますが、ユーザーのファイル暗号化キーまたは回復エージェントキーを現在のキーに更新する方法があります。これを行うには、cipher コマンドに /u スイッチを使用します ( cipher /u )。これにより、ローカルドライブ上のすべての暗号化ファイルのキーが更新されます。

このコマンドを使用すると、図 Gに示すように、キーが更新されたファイルの名前がツールによって一覧表示されます。

図G
既存の暗号化されたファイルの暗号化キーを更新するには、/u スイッチを使用します。

/n スイッチを使用してキーの更新を防止
システム上の暗号化されたファイルのみのリストを取得し、キーの更新を防止したい場合は、/n スイッチと /u スイッチを組み合わせて使用​​する必要があります ( cipher /u /n )。図 Hに示すように、暗号化されたファイルのみのリストが表示されます (作業ディレクトリに存在しないファイルのパスも含みます) 。

図H
システム上のすべての暗号化されたファイルのリストを取得するには、/n スイッチを /u スイッチと一緒に使用します。

/r スイッチを使用して新しい回復エージェント証明書を生成する
回復エージェントのキーが侵害された場合、新しい回復エージェント証明書を生成する必要がある場合があります。/r スイッチを使用して、新しい回復エージェント証明書と秘密キーを作成できます。新しい証明書とキーを書き込むファイルを、拡張子なしのパス名で指定する必要があります。構文はcipher /r:<拡張子なしのパス名>です。

Windows 2000では、Active Directoryドメインに属するコンピュータで、回復ポリシーに有効な証明書を持つ回復エージェントが含まれていない場合、EFSは動作しません。スタンドアロンマシンでは回復ポリシーは必須ではありませんが、ローカル管理者は必要に応じてポリシーを定義し、回復エージェントを追加できます。これを行うには、ローカルセキュリティポリシーにアクセスし、「公開キーポリシー」ノードを展開し、「暗号化ファイルシステム」ノードを右クリックして「データ回復エージェントの追加」を選択します。

Windows XP ProfessionalおよびWindows Server 2003におけるEFSの変更点の一つとして、ドメイン環境では回復エージェントが不要になったことが挙げられます。そのため、ドメインに空の回復ポリシーを設定すると、Windows 2000クライアントではEFSが無効になりますが、Windows XPおよびWindows Server 2003クライアントでは無効になりません。空のポリシーとは、回復エージェントが一切追加されていないポリシーのことです。

/w スイッチによる未割り当て領域の上書き
/w スイッチは暗号化ツールに新たに追加されたもので、Windows 2000 でリリースされたオリジナルバージョンには含まれていません。このスイッチは、ディスク上の未割り当て領域を上書きすることで、削除されたファイルから残っている可能性のある痕跡データを除去するために使用されます。処理中に一時的なプレーンテキストファイルが作成されるため、既存のファイルを暗号化した後は、このスイッチを実行することが特に重要です。

構文はcipher /w:<パス名>です。このコマンドを実行すると、他のすべてのアプリケーションを閉じるように指示されます。これは、暗号ツールがドライブをロックしないため、他のプログラムがドライブに書き込みを行えるためです。できるだけ多くのアプリケーションを閉じることで、暗号ツールによって上書きされるトレースデータの量を最大化できます。

ディスク容量が大きい場合、上書き処理にかなりの時間がかかることがあります。図Iに示すように、ユーティリティは上書き処理の進行状況を表示します。

図I
/w スイッチは、ディスク上の未割り当て領域にあるデータを上書きするために使用されます。

最後に、
暗号ツールで実行できるタスクは他にもいくつかあります。その中には、ツールの使い方に関する役立つ情報を表示する /? スイッチや、隠し属性やシステム属性を持つファイルを表示する /h スイッチなど、標準的なコマンドラインスイッチがあります(システムファイルは暗号化できませんが、隠しファイルは暗号化できます)。

Tagged: