追加のハードウェアを追加せずに、RAM暗号化は可能ですか?可能であれば、LinuxまたはWindowsシステムの既知の現在使用されている実装はありますか?そして、これが追加のハードウェアなしで可能なものである場合、 OSを再インストールすることなくこのタスクを実行できるソフトウェアはありますか?
ハードウェアを追加しなくても、RAM暗号化は可能ですか?
承知しました。
他のすべてのものを暗号化するのと同じように、RAMで好きなものを暗号化できます。
より興味深い質問は、「どこに鍵があるか」です。キーをRAMに残すか、RAMに格納するOSにキーを与えることができます。
Schneier et。al。in Cryptography Engineering によって提案されたいくつかの派手な手法を適用できます。つまり、ワンタイムパッドでデータのキーを暗号化し、RAMおよび必要な場合にのみデータを復号化します。
その場合、既知の現在使用されているLinuxまたはWindowsシステムの実装がありますか。
Windowsは Data-Protection API (DPAPI)を提供し、ユーザーのログイン認証情報を使用してデータを暗号化できます。少なくとも一部のパスワードマネージャー( KeePass など)は、これを使用してRAM内の貴重なパスワードを保護します。
Trusted Platform Module (TPM;これは、Windowsで必要になるため、ますます一般的になる)またはその他の専用ハードウェアを使用すると、 RAMが危険にさらされた場合に備えて、信頼できる場所にキーをオフロードすることで問題を最もよく解決します。
ただし、現在展開されているソリューションが1つあります: IntelのSoftware Guard Extensions (SGX)、Skylake以降のCPUに同梱。これらを使用すると、プログラムをプロセッサにロードし、その状態がリモートで正しいことを確認してから、その実行を保護できます。 CPUは、プロセッサから送信されるすべてのもの(つまり、RAMにオフロードされるものすべて)を自動的に暗号化し、セキュリティを確保します。大量導入の唯一の問題は、SGXでプロセッサーが受け入れる署名済みコードが必要であることです。つまり、インテルはこの目的のために証明書を発行する必要があります。
絶対に、特にRAMを非永続ストレージとして使用している場合は、パーティション化して名前空間にマウントした後、ディスク、ファイル、またはディレクトリと同様に暗号化できます。
ただし、実行可能プログラムのデータは、ある時点でメモリ内に「プレーンテキスト」として存在する必要があるため、この方法でカーネルおよびプログラムメモリを保護することは効果的ではありません。
必要なツールはシンプルでユビキタスです(opensslなど)。