Windows
 Computer >> コンピューター >  >> システム >> Windows

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

MicrosoftがWindowsを設計した際、ファイルの作成日といった情報を通常の属性として保存する代わりに、あえて隠れた場所に保存する方式を採用しました。この隠れた場所こそが「ファイルストリーム」です。

本記事では、ファイルストリームの基本的な仕組みと、それを効果的に活用する方法について詳しく解説します。

ファイルストリームの基本

Windowsシステム上のすべてのファイルには、アプリケーションが情報を格納できる「既定のストリーム」が標準で備わっています。さらに、1つのファイルに複数のストリーム(「代替データストリーム」とも呼ばれます)を持たせることも可能ですが、実際にこの機能を活用しているアプリケーションはごく少数です。

ファイルにテキスト情報を隠す方法

アプリケーションにとって、データを既定のストリームではなく代替ストリームに保存するのは望ましい設計です。しかし、私たちが日常的に使うほとんどのプログラムはこれを気にかけておらず、既定のストリームだけを使用し、ファイルが複数のストリームを持てる可能性を無視しています。実は、代替ストリームの作成は非常に簡単で、コマンドプロンプトで file:stream という形式のコマンドを入力するだけです。

ここでは、「program.exe」というファイルにテキスト情報を隠してみましょう。コマンドプロンプトを開き、以下のコマンドを入力して新しいストリームを作成します。

notepad "program.exe:hide"

すると、次のようなウィンドウが表示されます。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

メモ帳は program.exe の内部に「hide.txt」という名前の代替ストリームを作成します。「はい」をクリックすれば、任意のテキストを自由に保存できます。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

「program.exe」ファイルを別の場所へコピーしても、この隠されたデータはファイルと一緒についてきます。ストリームへアクセスするには「hide.txt」という名前を正確に指定する必要があるため、第三者が内容を読み取ることはさらに困難になります。

ファイルが外部由来かどうかを確認する方法

Windowsはこの機能を利用して、ファイルの出所を管理しています。ファイルの入手元を把握できるため、セキュリティ対策の面でも大きなメリットがあります。あるファイルが他のコンピュータやインターネットから取得したものかどうかを確認するには、ファイルを右クリックして「プロパティ」を選択します。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

「全般」タブにファイルに関する情報が表示され、「セキュリティ」欄に「このファイルは他のコンピューターから取得したものです…」という警告文があれば、そのファイルが外部由来であることを示しています。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

ファイルストリームを管理する方法

ストリームの作成は簡単ですが、残念ながらWindowsには「どのファイルにストリームが存在するか」を確認したり、ファイルに関連付けられたストリームを一覧表示したりする標準ツールは用意されていません。この情報を調べたい場合は、現在Microsoftに在籍するMark Russinovich氏が開発したシンプルなユーティリティ「Streams」を使用しましょう。

Sysinternalsの公式サイトからStreamsをダウンロードできます。

このツールを使えば、ファイルが複数のストリームを含んでいるかどうかを確認でき、ストリームの名前やサイズも一目で把握できます。

下の画像を見ると、多くのファイルに「Zone.Identifier:$DATA」というストリームが存在していることがわかります。これはWindowsがファイルの出所情報を記録するために使用するもので、ファイルが他のコンピュータやインターネット由来の場合にのみ生成されます。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

デフォルト設定では、Windowsはインターネットからダウンロードしたプログラムをブロックします。ファイルの安全性を十分に確認できている場合は、Streamsを使ってこのデータを削除すれば、プログラムを実行するたびに毎回ブロック解除を求められる煩わしさから解放されます。

ストリームを表示する別の方法

Windows Vistaまたは7をお使いの方は、dir コマンドに /R スイッチを組み合わせることでもストリームを確認できます。下の画像のように、/R スイッチを付けるとストリーム情報が表示されます。

NTFSのファイルストリームとは?仕組みと賢い活用方法を徹底解説

この例では、「file.exe」に2つのストリームが含まれていることが確認できます。1つは名前なしの既定ストリーム、もう1つは「Zone.Identifier:$DATA」です。他のコンピュータやインターネット由来ではないファイルには、このストリームは存在しません。

ファイル内に機密データを隠すその他の方法をご存じでしたら、ぜひコメント欄でお聞かせください。

  1. Takeownコマンドとは?Windowsでファイル・フォルダーの所有権を取得する方法を解説

    Windowsには、Windows 7以降に標準搭載されている便利なツールがあります。それが、コマンドラインからファイルやフォルダーの所有権を取得できる「Takeown.exe」です。この記事では、Takeownの基本的な仕組みと、実際に所有権を取得する手順をわかりやすく解説します。Windowsにおける「所有権」とは何か?所有権とは、特定のファイルやフォルダーを使用する権限、そして他のユーザーに対してその使用許可を与える権限のことです。Windows内部には複数種類の所有者が存在します。TrustedInstaller.exe: Windowsモジュールインストーラーであり、Windows

  2. Windows Sysinternalsとは?概要から使い方まで徹底解説

    自分のWindowsパソコンを完全にコントロールできたら素晴らしいと思ったことはありませんか?ほぼすべてのWindowsプロセスやアプリケーションの内部を覗き見できるだけでなく、アプリがアクセスしているファイルやレジストリエントリをリアルタイムで確認できるのは、実に魅力的な機能です。 Sysinternalsは、最も信頼性が高く強力なWindowsシステム管理ツールキットのひとつです。そのほとんどのユーティリティはシンプルなEXEファイルなので、USBフラッシュドライブに入れておけば、持ち運び可能なシステム管理ツールとしていつでも活用できます。 Windows Sysinternalsとは?