もちろん、どちらも簡単ではありません。攻撃者がディスク/フラッシュストレージからコピーするよりもメモリダンプを取得するのは難しい、またはマルウェアがRAMからコピーするよりもディスクからコピーする傾向があるという私の考えを確認したいと思います。そのため、可能な限り、私が作成するアプリはディスクに機密情報を取得しないようにし、必要になるまでメモリに保存することをお勧めします。
これは特定のシナリオではなく、私が興味を持っている一般的なルールです。
微妙なニュアンスがあります。各プロセスは、カーネルによって割り当てられたメモリ領域にのみアクセスできます。ファイル/ディスクアクセスを使用すると、各プロセスは、呼び出し元のユーザーが所有するファイル、呼び出し元のユーザーのグループが読み取り可能としてマークされたファイル、および誰でも読み取り可能なファイルを読み取ることができます。
つまり、仮想メモリとサスペンド/ハイバネートアクションの場合、アプリケーションがメモリ内で処理している機密データがシステムによってディスクに書き込まれる可能性があります。 ([〜#〜] edit [〜#〜]:新しく割り当てられたプロセスRAMはゼロになることが指摘されていますほとんどの状況ではカーネルによって、そのため、強制終了されたプロセスがRAMに多くの残留を残す可能性は低いです。ただし、mallocされた変数を解放したプロセスが、そのアドレス空間に残っているデータが残っている可能性があります。同じプロセスは後でmallocの新しい変数になりますが、ここではそれほど関係ありません。他の点はまだ当てはまります)最後に、機密データを処理しているプロセスに偶然バッファオーバーリードの脆弱性がある場合攻撃者がそのプロセスに巧妙に細工された入力を提供することにより、その攻撃者がプロセスの現在のメモリ空間を読み取ることを可能にする可能性があります。機密データを含める...
機密データは必要なときまで暗号化しておくことをお勧めします。通常、これはディスク上で暗号化し、使用時に復号化することを意味しますが、保持することも可能です。メモリで暗号化され、使用時に復号化されます(復号化キーもメモリに保存されないと想定)。