私のUbuntuシステムにはLUKS暗号化パーティションであるファイルがいくつかあります。今日までの自分の恥として、バイナリファイルの拡張子を変更するだけで、ファイルが本当に何であるかを隠すのに十分だと思っていました。つまりLUKSパーティションの名前をstuff
からwindows.vdi
に変更すると、拡張機能が示すように使用しようとすると間違いなく失敗するため、破損しているにもかかわらず、これは仮想ボックスドライブであるとみなされます。
しかし、今日、file
コマンドについて知っています。これは、ファイルが何であるかを正しく表示します。
file windows.vdi
windows.vdi: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: xxx-xxx-xxx
同じ問題が他のファイルタイプでも発生します。キーパスパスワードファイルなど、非表示にしたいものです。
システム上のファイルの真の目的を隠す方法を誰かが知っていますか?
アイデアは、パスワードを提供する要求に抵抗できない状況(たとえば、物理的に捕らえられて拷問された場合)では、コンピューターがシャットダウンされた直後に暗号化の存在そのものを否定できるはずです。彼がこれを行うのに十分な時間がないかもしれないという理由だけで、別のファイルにファイルを隠したり、バイナリエディターでファイルを編集したりすることなく
あなたが探しているものは deniable encryption と呼ばれます。
拒否可能な暗号化には2つの形式があります。最初の種類は「情報理論」の拒否可能な暗号化です。攻撃者が実行できる数学的分析がない暗号化は、ファイルが暗号化されたデータであり、ランダムなバイトのコレクションではないことを証明できます。 2番目の種類は、「現実の」拒否可能な暗号化です。つまり、ファイルに盗まれたDeath Star計画が含まれていないことを $ 5レンチ で攻撃者に説得できる暗号化です。
誰もがあなたに最初の種類を提供します。それに関する問題は、通常の人々は大量のランダムバイトを持ち歩かないことです-そのようなファイルを見つけることはprima facie暗号化が使用されている証拠です。 2番目の種類は存在せず、不可能である可能性があります-否定を証明できる暗号化が必要です。
あなたの答えを読んで、あなたが望むものは拒否可能な暗号化と呼ばれます。
これは、暗号化されたコンテナを別の暗号化されたコンテナに隠すことによって行われます。これは、暗号化するとき、キーがわからないと暗号文がランダムに見えるためです。
ハードドライブでランダムに検索するだけで、誰かがデータを暗号化したと推測し、キーを要求することができます。
ランダムにランダムに配置すると、最初のコンテナキーを指定して、2番目のコンテナキーの存在を拒否できます。
興味がある場合は、例としてtruecrypt(またはfork)の機能を確認してください。
これは、ハードドライブのスナップショットを作成して2つのイメージを比較するだけで解決できることに注意してください。実際、何かを変更すると、「ランダム」が変化し、攻撃者はあなたがもっともらしい否認性を破って2番目のコンテナを隠していると推測します。
あなたが探しているものはsteganographyと呼ばれ、それは暗号の分岐です。
すぐに始めるためにウィキペディアを読むことができます: http://en.wikipedia.org/wiki/Steganography
その後、任意のコンテナーを.jpg
または.avi
に「ステゴ」するためのオープンソースツールがいくつかあることがわかります。
このようなstego-containerは、.jpg
または.avi
ファイルのように見えます。さらに、誰でもこれを.avi
または.jpg
で見ることができました。そして、このstegoコンテナー内には、LUKSと呼ばれる暗号化されたコンテナーがあります。
暗号化されたLUKSパーティションを、mp3ファイルなど、それよりも大幅に大きい任意のストリーミング可能なファイルに追加できます。
$ cat beethovens_9th.mp3 windows.vdi > beethovens_9th_with_partition.mp3
ファイルはほとんどのMP3ソフトウェアで引き続き再生され、file
コマンドを使用するとMP3ファイルとして表示されます。暗号化されたパーティションを使用する場合は、新しいファイルの先頭から削除する元のMP3ファイルの正確なサイズを知る必要があります。パーティションの使用が終了したら、新しいファイルを再作成する必要があります。
ファイルサイズによって、暗号化されたパーティションがMP3ファイルに追加されることがわかります。また、ファイルの実際のMP3部分の終わりとパーティション部分の始まりに遭遇した場合、MP3プレーヤーごとに異なる障害モードが発生します。 これは絶対に簡単な計画ではありませんが、最も単純な使用例でfile
コマンドを無効にする方法にすぎません。
「GPG」などの2番目のタイプの暗号化でファイルを暗号化すると、fileコマンドは「内部」ファイルタイプを判別できなくなります。
または、1バイトのオフセットでファイル内容が同じであるファイルをXORするなど、本当に単純なことを実行するか、ファイルをbase64などにします。
難読化(実際のセキュリティではなく、「file」コマンドを使用する人にとっては不便)または非表示(二次暗号化を使用)の程度によって異なります。
最後に、「file」コマンドを、ファイルタイプを認識しない不必要なコマンド(実行可能ファイルを制御できる場合)に置き換えることを検討できます...
あなたの物語の全体は以下で構成されます:
パスワードを提供する要求に抵抗できない状況(たとえば、物理的に捕らえられて拷問を受けた場合)では、暗号化の存在そのものを否定できるはずです。
あなたが到達したとしても、あなたの目標は rubber hose cryptanalysis を使用して真剣に批判されています。これは、すべての暗号キーを公開した後でも、悪意のあるエージェントが攻撃を続けている場合、さらに害を及ぼす可能性があります。
特にluksの場合、残りのデータからluksヘッダーを切り離す方法があります。私はよく、完全に暗号化されたシステムの一種の2faとして使用しました。
まず、luksヘッダーを別の場所にコピーします。
cryptsetup luksHeaderBackup windows.vdi --header-backup-file header.img
次に、元の場所から削除します。
dd if=/dev/urandom of=windows.vdi bs=1M count=2
データにアクセスするには、--header
コマンドラインオプションを指定してcryptsetupを使用します。
cryptsetup luksOpen --header header.img windows.vdi windows
もちろん、画像とともにヘッダーを保存すると、目的全体が無効になります。
また、将来的にパスフレーズを変更した場合でも、このヘッダーとパスフレーズを使用してボリュームを復号化できることに注意してください。 luksヘッダーは、少なくともプライベートpgpまたはsshキーと同じように慎重に扱ってください。疑わしい場合は、再暗号化して細断処理します。
実際には、ファイル名とファイルタイプが変更されても、コンテンツはファイルタイプのフィンガープリントを提供します。したがって、システムで何かを非表示にする場合は、ファイルへのアクセス/書き込みのアクセス許可を割り当てて、それを自分のフォルダに保存することをお勧めします。 rootユーザーは引き続きファイルにアクセスできますが、他のユーザー(通常のユーザー)がこのファイルにアクセスできなくなる可能性があります。
参考:ファイルタイプは、ユーザー、システム、およびソフトウェアの参照のみです。 Windowsでは、ファイルの種類は、特定のプログラムで表示/開くことができる形式として認識されます。これは、ファイルタイプリストがWindowsのレジストリに保存されているためです。そのため、ファイルをダブルクリックして、このファイルを開くことができるべきプログラムを起動できます。ただし、Linuxなどのシステムでは、ファイルの種類はユーザーのみの参照であるため、この方法は使用されません。 README後ろにファイルタイプのないファイルが表示されます。これは、これが人間が読めるテキストファイルであることを知っているためです。一部のプログラムは、名前とファイルタイプに関係なく、ファイルのヘッダーを認識しますPHPアップローダーの場合、スクリプトは通常、最初にファイルのヘッダーを読み取り、それが画像ファイルかZipファイルかを判断します。一部のプログラムやスクリプトでは、ファイルの種類を確認するために、ファイルのどこかにフッターバイトまたはデータバイトがあります。
したがって、本当に何かを隠したい場合は、最初にヘッダー/フッターを一掃することをお勧めしますが、ファイルを開くときに問題が発生する可能性があります。本当にファイルを非表示にしたい場合は、他のファイルへのファイルの埋め込みについて検索してみてください。これの古いトリックは、画像ファイルをZipファイルに隠すことでした。