web-dev-qa-db-ja.com

バックアップサーバー上にない秘密キーを持つGPGを使用して暗号化されたオフサイトバックアップ?

私は、バックアップするディレクトリサーバーのxz圧縮tarアーカイブを作成するバックアップサーバーを持っています。これらのtarアーカイブは巨大(複数TB)になり、splitに断片(2.5TB)になり、各断片はLTO-6テープに書き込まれ、テープはオフサイトに移動します。

次に、暗号化を追加します。分割する前に、公開鍵と秘密鍵の暗号化を使用して、1人以上の受信者(管理公開鍵)を使用して、tarアーカイブをGPGで暗号化できます。

ただし、リカバリの場合、ファイルが大きすぎて他の場所に解凍できないため、少なくとも1人の管理者が自分の秘密鍵をバックアップサーバーに配置する必要があります。

GPGは、内部でハイブリッド暗号化スキームを使用し、セッション鍵を使用したAESのような対称暗号を使用し、そのセッション鍵のみが受信者に対して公開鍵と秘密鍵を暗号化します。

復元するファイルを復号化するためのセッションキーを管理者に提供させる方法はありますかバックアップサーバーに秘密キーを配置せずに


もちろん、ホイールを再発明することもできます。

  • バックアップする各ファイルごとにランダムなセッションキーをバックアップサーバーに作成する
  • gPG対称暗号化を使用してファイルを暗号化する
  • gPG非対称暗号化を使用して、各受信者のセッションキーを暗号化する

しかし、上記を達成するための「標準」または組み込みの、またはベストプラクティスの方法はありますか?

11
oberstet

これは、--show-session-keyおよび--override-session-keyオプションで確実に可能です。

まず、暗号化されたファイルの先頭が必要です。これは、暗号化されたセッションキーが格納される場所です。

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

次に、それをワークステーションにコピーして、セッションキーを取得します。

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <[email protected]>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

これで、セッションキーを使用してファイルを復号化できます

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <[email protected]>"
18
IsAGuest

あなたの質問のほとんどは答えられているように見えますが、管理者チームがローカル制御から外れる秘密鍵に警戒している場合は、sshセッションでリモートバックアップをマウントすることをsshfsに検討するかもしれません。

各リモート管理者のシステムにaptを介してインストールします

Sudo apt-get install sshfs

管理者のssh構成が次のようになっていると仮定します

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

次に、管理者は以下のようなものを使用してマウントできます

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

検査後にマウントを解除するには、リモート管理者は次を使用できます

fusermount -u /mnt/remote

Sshfsを使用することの利点は、リモートサーバーではGnuPGとsshの公開鍵のみが必要であり、関連する秘密鍵は所有しているシステムにとどまることです。 2つ目のいい点は、読み取りまたはアクセスされるまで、ほとんどのファイル情報が関連するファイルシステムにとどまることです。

ログまたはディレクトリの自動暗号化を容易にするツールをまだ探している場合は、私がプッシュしたコンセプトツールの専門家を確認する必要があるかもしれません GitHub (具体的には シナリオ4sshsf用に作成)少しカスタマイズすると、GnuPGを介してほぼすべてのデータを暗号化できます。ただし、これは実験的なものであり、その機能の一部を誤用するとデータが破損する可能性があることに注意してください。ソースコードは〜1600〜行未満であるため、週末よりも短い期間で監査することが非常に可能です。

リモートサーバーのssh設定をchrootユーザーに設定して、暗号化されたディレクトリへのアクセスのみを許可し、この方法で使用される管理者キーのインタラクティブシェルを無効にすることで、セキュリティを強化できます。

4
S0AndS0

秘密鍵をハードディスクから切り離したい場合は、ramdiskを作成し(それらを覚えていますか?)、必要に応じて安全なサーバー上ではない場所から秘密鍵をそこにロードします。復号化に使用し、完了したら/ dev/randomで上書きします。秘密はRAM=とにかくGPGで使用される必要があるので、なぜ2度しないのですか?

RAM上であっても、サーバー上に秘密鍵を置くことができない場合、技術的に不可能です。 GPGは、何かを復号化するために、どこかに秘密鍵を持っている必要があります。

Ramdisk情報: https://unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux

2
Steve Bonds