
TrueCryptで暗号化されたボリュームおよびディスクに対するパスワードのチェック、および/またはデータの復号化を行うためのツール。
NCC Group Plc によりオープンソースとして公開 - http://www.nccgroup.com/
Richard Turnbull により開発、richard [dot] turnbull [at] nccgroup [dot] com
http://www.github.com/nccgroup/untrue
AGPL の下で公開、詳細は LICENSE を参照
Untrue は、TrueCrypt で暗号化されたボリュームやディスクに対してパスワードをチェックしたり、データを復号したりするためのツールです。
Windows、.NET Framework バージョン 4.0 が必要です。
TCHead はボリュームヘッダーに対してパスワードをチェックするツールでもありますが、そのウェブサイトはダウンしているようで、いずれにせよデータを復号する機能は提供していません。 Bjrn Edstrm はいくつかの Python コードを公開しており、パスワードのチェックには効果的ですが、復号機能は限定的です。
Untrue を使用して実行できるタスクは 3 つあり、それぞれ使用方法が少し異なります。 Untrue はボリュームヘッダーの位置、および暗号化領域の位置とサイズをインテリジェントに判断するよう最善を尽くします。ただし、これがうまくいかない場合や、より柔軟性が必要な場合は、これを制御するためのオプションがあります。
Untrue.exe [general_options] --password_check_only -p passphrase (--volume_header_file=input_file | --volume_header_hex=hex_string) [algorithm_options] [password_checking_options]
ボリュームヘッダーを提供する必要があります。通常は --volume_header_file オプションを使用してファイルを指定します(通常、このファイルは TrueCrypt で暗号化されたボリューム、TrueCrypt で暗号化されたドライブのイメージ、または TrueCrypt レスキュー CD のイメージです)。
ただし、--volume_header_hex オプションを使用して、ボリュームヘッダーを 16 進文字列(512 バイト長)として提供することもできます。
Untrue.exe [general_options] -i input_file -o output_file (-k hex_string | --key_file=file_containing_key) [algorithm_options] [decryption_options]
ボリューム暗号化キーを提供する必要があります。16 進文字列(-k オプションを使用)として、またはそれを含むファイルを指定する(--key_file オプションを使用)かのいずれかです。
また、入力ファイル(つまり暗号化されたボリュームまたはドライブ)と出力ファイルを指定する必要があります。Untrue は既存の出力ファイルへの書き込みを拒否します(偶発的な上書きを避けるため)。
Untrue.exe [general_options] -p passphrase -i input_file (--volume_header_file=input_file | --volume_header_hex=hex_string) -o output_file [password_checking_options] [algorithm_options] [decryption options]
また、入力ファイル(つまり暗号化されたボリュームまたはドライブ)と出力ファイルを指定する必要があります。Untrue は既存の出力ファイルへの書き込みを拒否します(偶発的な上書きを避けるため)。
ボリュームヘッダーが入力ファイル内に存在しない場合(例:レスキュー CD イメージ上にある場合)、オプションでボリュームヘッダーを含むファイルを指定する(--volume_header_file を使用)か、ボリュームヘッダーのバイト列を提供する(--volume_header_hex を使用)ことができます。どちらも行わない場合、ボリュームヘッダーは入力ファイルから読み取られます。
パスフレーズが間違っている場合、復号は続行されません。
-h, --help 使用法の情報を表示して終了
-V, --version バージョンを表示して終了
-v, --verbose 詳細モード(詳細情報を標準出力に書き込む)
-d, --debug デバッグモード(さらに多くの情報を標準出力に書き込む)
-q, --quiet 静粛モード(標準出力に何も書き込まない)
--volume_header_location=VALUE
ボリュームヘッダーファイル内のボリュームヘッダーの位置。これはセクターサイズを 0x200 バイトと仮定したセクター番号として指定されることに注意してください。
多くの場合、このオプションは省略しても安全です。指定されていない場合、Untrue はインテリジェントに推測を試みます。ボリュームヘッダーファイルが指定されていない場合(つまり、ボリュームヘッダーが入力ファイル内にある場合)、Untrue は入力ファイルが暗号化ボリュームか暗号化ドライブイメージかを判定し、それに応じてボリュームヘッダーの位置を設定します。ボリュームヘッダーファイルが指定され、それがレスキューCDイメージであると思われる場合も、同様にボリュームヘッダーの位置が設定されます。それ以外の場合、ボリュームヘッダーの位置はデフォルトで 0 になります。
Untrue が試行する暗号化アルゴリズムを指定できます(TrueCrypt はさまざまな暗号化アルゴリズムを提供しており、暗号化ボリュームを検査してもどれが使用されたかを判別する方法はないことに注意してください)。 パスワードチェック時、以下のオプションが何も指定されていない場合は、すべてのオプションが試行されます。ただし、以下のオプションのいずれかが指定されている場合は、それらのアルゴリズムのみが試行されます。 特定の鍵で復号する場合、以下のオプションが何も指定されていない場合は、TrueCrypt のデフォルトアルゴリズムである AES が使用されます。それ以外の場合、以下のオプションのいずれか1つが指定されていれば(複数選択はエラーです)、それが使用されます。 パスワードチェックの成功に基づいて復号する場合、復号されたボリュームヘッダーで指定されたアルゴリズムが使用されます(以下のオプションに関係なく)。
--aes AES 暗号化アルゴリズムを試行
--serpent Serpent 暗号化アルゴリズムを試行
--twofish Twofish 暗号化アルゴリズムを試行
--aes_twofish AES-Twofish 暗号化カスケードを試行
--aes_twofish_serpent AES-Twofish-Serpent 暗号化カスケードを試行
--serpent_aes Serpent-AES 暗号化カスケードを試行
--serpent_twofish_aes Serpent-Twofish-AES 暗号化カスケードを試行
--twofish_serpent Twofish-Serpent 暗号化カスケードを試行
--all_encryption_algorithms すべての暗号化アルゴリズムを試行
Untrue が試行するハッシュアルゴリズムを指定できます(TrueCrypt はさまざまなハッシュアルゴリズムを提供しており、暗号化ボリュームを検査してもどれが使用されたかを判別する方法はないことに注意してください)。 パスワードチェック時、以下のオプションが何も指定されていない場合は、すべてのオプションが試行されます。ただし、以下のオプションのいずれかが指定されている場合は、それらのハッシュアルゴリズムのみが試行されます。 TrueCrypt は、RIPEMD-160 をシステム(全ディスク)暗号化に使用する場合とボリューム暗号化に使用する場合とで、PBKDF2 の反復回数が異なることに注意してください。Untrue ではこれを2つの異なるハッシュアルゴリズムとして扱います。
--ripemd160 RIPEMD-160 ハッシュアルゴリズムを試行
--ripemd160_system RIPEMD-160 ハッシュアルゴリズムを試行(システム暗号化)
--whirlpool Whirlpool ハッシュアルゴリズムを試行
--sha512 SHA-512 ハッシュアルゴリズムを試行
--all_hash_algorithms すべてのハッシュアルゴリズムを試行
-e, --encrypt
復号ではなく暗号化を実行します。 レスキューCDの復号操作が(誤って)ドライブに対して複数回実行された場合にのみ有用と思われます。
--first_decrypt_sector=VALUE
復号を開始する入力ファイル内のセクタ番号。 多くの場合、このオプションは省略できます。指定されていない場合、Untrue は復号されたボリュームヘッダーから正しい値(利用可能な場合)を読み取るか、そうでなければ入力ファイルが暗号化ボリュームか暗号化ドライブかをチェックして正しい値を判定しようとします。
--sectors_to_process=VALUE
復号するセクタ数 多くの場合、このオプションは省略できます。指定されていない場合、Untrue は復号されたボリュームヘッダーから正しい値(利用可能な場合)を読み取るか、そうでなければ入力ファイルの長さをチェックして正しい値を判定しようとします。
--first_sector_offset=VALUE
復号する最初のセクターのTrueCrypt論理セクター番号。 データを正常に復号するには、XTSモードは各セクターの正しい論理セクター番号を知る必要があります。 ほとんどの場合、このオプションは省略できます。これが必要になるのは、入力ファイルが暗号化ボリュームやドライブの先頭からではなく、その一部を抽出したものである場合のみです。
TrueCrypt暗号化ボリュームvol.tcに対してパスワード'foobar'を確認します:
Untrue.exe --password_check_only --volume_header_file=vol.tc -p foobar
同様のことを、デフォルトの暗号化およびハッシュアルゴリズムのオプションが使用されたことがわかっている場合に行います:
Untrue.exe --password_check_only --volume_header_file=vol.tc -p foobar --aes --ripemd160
同様のことを行いますが、さらにボリュームの復号も生成します:
Untrue.exe -i vol.tc -o decrypt.bin -p foobar --aes --ripemd160
ボリュームを復号しますが、指定した鍵を使用します (今回はパスフレーズを指定せず、ハッシュアルゴリズムを指定する必要もありません):
Untrue.exe -i vol.tc -o decrypt.bin -k F0839722F9DC490D985397860EAAED6350CAEC956B40A17B50CD397DD197442D9BBA43D0DB6C91167572D4E5630525FB3374EB49389DD5C8D78BB93AA1D4DC09 --aes
TrueCrypt暗号化ディスクdisk.imgを復号します:
Untrue.exe -i disk.img -p foobar -o output.bin
同様のことを行いますが、今回はボリュームヘッダーをレスキューCDイメージcd.imgから読み取ります (UntrueはレスキューCDイメージ上のボリュームヘッダーの位置を特定しようとします):
Untrue.exe -i disk.img -p foobar -o output.bin --volume_header_file=cd.img
同様のことを行いますが、レスキューCDイメージ上のボリュームヘッダーの位置を明示的に指定します (デフォルトではセクター0xA6にあります):
Untrue.exe -i disk.img -p foobar -o output.bin --volume_header_file=cd.img --volume_header_location=0xA6
同様のことを行いますが、今回はディスクイメージの最初のセクターが欠落していることがわかっており、200セクターのみを復号したいとします:
Untrue.exe -i disk2.img -p foobar -o output.bin --volume_header_file=cd.img --volume_header_location=0xA6 --sectors_to_process=200 --first_decrypt_sector=0x3E --first_sector_offset=0x3F
(デフォルトでは、暗号化データはセクター0x3Fから始まりますが、ここでの入力ファイルは最初のセクターが欠落しているため、復号する最初のセクターを0x3Eと指定します。ただし、これは元のディスクイメージの先頭から見ると実際にはセクター0x3Fであるため、最初のセクターオフセットを0x3Fと指定する必要があります。)
UntrueはTrueCrypt v5.0で導入されたXTS暗号モードのみをサポートしています。これより前のバージョンではLRWまたはCBCモードを使用しており、Untrueではサポートされていません (パスワード確認、復号のいずれも)。
Untrueは、キーファイルを使用するTrueCryptボリュームに対するパスワード確認をサポートしていません。
Untrueは、隠しボリュームや隠しオペレーティングシステムに対するパスワード確認、および復号をサポートしていません。
Untrueは、セクターサイズが0x200バイトでないTrueCryptボリューム/ディスクをサポートしていません。
これらの機能の一部またはすべては、将来追加される可能性があります。
UntrueはBouncy Castle C#暗号ライブラリ (http://www.bouncycastle.org/csharp/) を使用しています。 このライセンスはhttps://www.bouncycastle.org/licence.htmlで確認できます。
UntrueはNDesk.Optionsライブラリ (http://www.ndesk.org/Options) も使用しています。 これはMITライセンス (http://opensource.org/licenses/mit-license.php) の下で公開されています。