3

実行時に機密コンテンツを生成するシェル スクリプトがあります。少数のユーザーのみがアクセス許可を持つボックスに置かれています。ただし、次の方法で、無許可の使用を防ぐために階層化された難読化も追加しました。

  1. スクリプトはルートとして実行する必要があります
  2. 出力を生成するには、スクリプトに特定のコマンドライン引数を渡す必要があります
  3. スクリプトはシェル コンパイラ「shc」によってエンコードされ、事実 #1 と #2 を通常のユーザー (実際のコードを表示するために TRACE や STRINGS を使用することを知らないユーザー) から隠しています。

次に、実際のセキュリティ層を追加して、より高度なユーザーとシステム管理者を再び保護するために、スクリプトを gpg で暗号化しました。

私の質問は - 復号化パスフレーズのプロンプトを表示し、スクリプトを復号化してメモリ内でのみ実行できる gpg コマンド (またはその他の暗号化方法) はありますか (ファイルの復号化されたバージョンをファイル システムに保存せずに) )?

機密情報は、実行中に保護されていないメモリにまだ存在する可能性があることを認識しています。これについては個別に説明します。

4

3 に答える 3

3

復号化の出力をキャプチャするには、

decrypted=$(gpg -d ...)

その後、結果を評価できます

eval "$decrypted"
于 2013-02-01T17:26:31.850 に答える
0

これを改良できる可能性は非常に高いですが、choroba の例のようにスクリプトを評価するのではなく、スクリプトを実行する別のアイデアを次に示します。引数を渡すことができます...

bash <( gpg -d ... ) arg1 arg2

...ただし、インタープリターを「オーバーライド」します。つまり、スクリプトを で実行しbash -ueます。スクリプトと、自分で書いているかどうかによって、問題になる場合とそうでない場合があります:)

于 2013-12-09T15:11:37.307 に答える
0

チョロバの答えとは対照的な別の簡単なオプション:

復号化された出力を のファイルに保存します/dev/shm/。(これは、事実上すべての Linux ディストリビューションでデフォルトで存在する RAM 内の tmpfs ファイルシステムです。)trapスクリプトの終了時にファイルを削除するようにセットアップします。

于 2013-02-04T20:01:40.947 に答える