私は現在、クライアントのローカル サーバーに配布される Java 検索プロジェクトに取り組んでいます。このプロジェクトには、マシン上で直接アクセスできないようにしたい貴重なデータが含まれていますが、プロジェクト サービス/API からのみアクセスできます。データは毎日更新され、24 時間年中無休でクエリを実行できる必要があります。私はeCryptFsを考えていますが、いくつかのテストの後、暗号化されたデータがサービスユーザー、たとえば「root1」の下にマウントされると、クエリをサポートするために暗号化されたデータをマウントされた状態に保つ必要があるようです。他のすべてのログインユーザーは、パスワードなしで復号化されたデータにアクセスできます。とにかく私のシナリオをサポートするものはありますか? ありがとう。
2 に答える
ユーザーにrootアクセス権がない場合は、暗号化キーをファイルに保存して、他のユーザーへの読み取りアクセスを拒否できます。
ユーザーがrootアクセス権を持っている場合、あなたにできることは何もありません。
編集: ほとんどの状況では、root アカウントを持つユーザーは、他のユーザーができることは何でもできます。そのため、ファイルに対するユーザーごとの読み取り/書き込みアクセス許可を取得したとしても、特定のユーザーに対してのみ (これは非常に可能性があります)、かなり無意味です。(sudo/root アクセス権を持つ人は を実行できますsudo su USER
。ここで、USER は r/w パーミッションを持つアカウントです。これについてもっと良い方法は、ユーザーが制御できないオプションを調べることだと思います。最初に出てきたのは、安全な情報を保持することを意図したものではありませんが、単純なプログラムをコンパイルして、時間の遅れの後に少しの情報を出力することができます (プログラムを継続的に実行してからすべてのプログラムをコンパイルすることを防ぐため)。そこから得られるデータです。)実際には、Java プログラムを変更する方が簡単かもしれません。情報を巨大な文字列か何かとして保存するだけです。:D
これらのオープンソースの Java 難読化ツールは、プログラムとそれに伴う内部データのリバース エンジニアリングを困難にします (もちろん不可能ではありません)。
より安全なオプションは、C プログラムを作成してコンパイルし、JAVA ファイルで管理できる情報を出力させることです (時間の遅延の後)。逆コンパイルをより困難にするために、文字列にいくつかの暗号化方法を追加することができます。これにより、逆コンパイラが文字列の一部を台無しにしても、それは依然として価値のない情報になります。
最終的な判断: 他人のコンピュータに保存されている場合、100% 安全というものはありませんが、自分のサーバーでも 100% 安全ではありません。他の選択肢を検討することをお勧めしますが、他に選択肢がなく、情報が法的に保護されている場合は、これでうまくいくかもしれません。