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


11

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

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

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

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

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


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

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

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

回答:


18

これは--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 <admin@domain.tld>"
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 <admin@domain.tld>"

それは問題に対する本当にクールな解決策です
Lars

ありがとう!! などの素敵なトリックhead。アプローチは私の元のかゆみを解決します。
oberstet

4

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

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


2

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

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

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


2
GPGは、暗号化されたメッセージごとに異なるメッセージごとの対称シークレット(「セッションキー」)を使用します。技術的にそれぞれのメッセージを復号化するマシン上に存在する必要があるのは、この対称鍵です。GPG(非対称)秘密キーをオフラインにしたいのですが。後者は、対称セッションキーを暗号化するためにGPGによって使用されます。だから私はこれらの側面を利用する計画の後でいます...
oberstet
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.