私が設定したいサービスのデザインに関する質問です。
説明する
私の意図は、サーバーに接続し、いくつかの機能を提供するクライアントボックスを提供することです。
クライアントボックスは、コピーを防止したいファイル(セキュリティキーや実行可能ファイルなどの情報)を含む組み込みシステムを含むOLinuXinoやRaspberry-Piなどの小型コンピュータです。
サーバーはサービスの集中化された部分です。
保護されたファイルサイズ:1kB〜500kB。
[クライアント]ボックスには、読み取り専用でtmpfsに設定されているDebian(wheezy)システムが含まれています(図を参照)。ここ)。
どのように保護したいですか?
システムには、好奇心旺盛な目から隠したい構成と実行ファイルがいくつか含まれています。したがって、高度に暗号化されます。
クライアントボックスがサーバーに接続され、リバースSSHトンネル(サーバーからクライアントへ)を開くので、サーバーは一部の認証後に(サーバー側のキーを使用して)ファイルを復号化できます。復号化されたファイルは、クライアントが終了するまでクライアントのRAMに残ります。
このクライアントボックスはヘッドレス(画面なし、キーボードなし)で完全に自動化されていますが、ユーザーが何が起こっているのかを見るために画面やキーボードを接続しようとしないかどうかはわかりません。
そのため、サーバーがクライアントにキーボードや画面が接続されていないことを確認したいと思います。したがって、(サーバーからクライアントへのsshリモート呼び出しを介して)いくつかのコマンドを呼び出します。
- シリアル番号、MACアドレス、特定のファイルチェックサム、およびその他のシステム関連情報を確認して、クライアントボックスが破損していないこと(また、ファイルシステム全体が他のシステムにコピーされていないか)を確認してください。
- キーボードが接続されているかどうかを検出し、最終的にブロックします。
- 開いているすべてのユーザーセッションを閉じます。
- 新しい接続(キーボード、新しいセッション、デバイス)をブロックします。
- 画面が接続されていることを検出し、出力が表示されないようにします。
その後、サーバーはRAM内のファイルをリモートで復号化します。
私の最初の質問:これは私のファイルを隠す安全な方法だと思いますか?私が逃したものは何ですか?
私の2番目の質問:上記のリストの項目1、2、3については、この方法を見つけると確信しています。しかし、項目4と5についてはわかりません。コメントありますか?それとも単に不可能だと思いますか?
どんな提案でも歓迎します(例:「しないでください。愚かです」または「やってみてください。効果があるでしょう」)!
ベストアンサー1
止められないものがあると思います。
あなたの家はクライアントのフラッシュドライブに2つのパーティションを使いました。最初はブートに使用され、最小限のCプログラムをロードします。この最小 C プログラムはサーバーに接続し、2 番目のパーティションのデコード鍵を取得します。このプロセス全体は initrd で実行されます。
正常にデコードされたら、システムの2番目の物理パーティションを使用できます。
最も重要なのは、セキュリティを損なう可能性があるカーネルおよびユーザースペースソフトウェアからすべてを削除することです。
(似ていますが、セキュリティに焦点を当てた観点から、security.stackexchange.comで同様の質問をすることもできます。)