ら、ら、「.rnd」?――Windowsのドライブルートに出現する謎ファイルの正体とはその知識、ホントに正しい? Windowsにまつわる都市伝説(81)(2/3 ページ)

» 2017年04月18日 05時00分 公開
[山市良テクニカルライター]

「.rnd」の正体はOpenSSLが鍵生成に使用した乱数データ

 「.rnd」ファイルをWindowsのCドライブのルートに作成した張本人は、オープンソースの暗号化ライブラリおよびユーティリティーである「OpenSSL」です。OpenSSLは、さまざまなオープンソースソフトウェア(OSS)やソフトウェア製品に同梱されて提供され、暗号化のための鍵生成に利用されています。とあるヴイエムウェア製品もその1つというわけです。

 OpenSSLを同梱しているWindows向けのソフトウェアとしては、例えば「Git for Windows」があります。

 マイクロソフトのツール集「Windows Sysinternals」の「Process Monitor(Procmon)」を使用して、「openssl」コマンドの操作中のファイル操作イベントをキャプチャーしてみました(画面2)。Windowsのコマンドプロンプトからopensslコマンドを実行してRSA鍵を生成すると、「.rnd」ファイルを探して、存在しない場合は作成する様子を確認できます(画面3)。

  • Process Monitor(Windows Sysinternals:マイクロソフト TechNet)
画面2 画面2 キャプチャーしたイベントから「.rnd」で終わるパスに対するイベントのみを表示するフィルターを設定
画面3 画面3 管理者権限で「openssl」コマンドを実行すると、Cドライブのルートの「.rnd」ファイルを探し、見つからないので新たに作成している

 「.rnd」ファイルが既定の検索場所に存在しない場合、一般ユーザーの権限でopensslコマンドを実行すると、ユーザープロファイル(%USERPROFILE%)ディレクトリに「.rnd」ファイルが作成されます。一方、管理者権限に昇格したコマンドプロンプトから実行すると、Cドライブのルートに「.rnd」ファイルが作成されました。

 Windows 10 Anniversary Update(バージョン1607)からは、UbuntuのBashシェル環境をネイティブに動かすことができる「Bash on Ubuntu on Windows」が提供されました。このBashシェル環境では、opensslを標準で利用できます。Bash on Ubuntu on Windowsで実行した場合は、Bashシェル環境の「$HOME」のパスに「.rnd」ファイルが作成されました(画面4)。

画面4 画面4 Bash on Ubuntu on Windowsのシェル環境でopensslを実行し鍵を生成すると、「$HOME」のパスに「.rnd」ファイルが作成された

 OpenSSLで鍵を生成するには、乱数(ランダム)データを渡す必要があります。乱数データは「openssl rand」コマンドで生成してファイルに出力することができ、作成したファイルはopensslの「-rand」パラメーターで渡すことができます。

 「-rand」パラメーターを省略した場合、既定の場所を検索し、存在しなければ「.rnd」ファイルを自動的に作成するようになっています。そして、「.rnd」ファイルの検索および作成される場所は、UNIXやLinuxの場合は常に「$HOME」ですが、Windowsの場合は「%HOME%(既定では存在しない変数)」「%USERPROFILE%」「%SYSTEMROOT%」「C:\」の順番という仕様になっています。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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