web-dev-qa-db-ja.com

暗号化に必要なキーはどのような信頼レベルで提供する必要がありますか?

私はサーバーのバックアップを暗号化しているので、通常、公開GPGキーをキーサーバーからサーバーのキーリングにインストールします。

gpg --search-keys 6569758F

鍵を鍵リングにインポートします。

次に、ファイルを暗号化しようとします。

gpg --encrypt --recipient 6569758F myfile.log

私は今このようなものを提示されています:

gpg: EE928AAF: There is no assurance this key belongs to the named user

pub  4096R/EE928AAF 2013-12-05 Naftuli Tzvi Kay <[email protected]>
 Primary key fingerprint: 0E26 BDF1 BD1C 4A16 9571  21A8 8938 1D75 6569 758F
      Subkey fingerprint: 65F4 87F2 C898 F0E7 0377  EBA1 8484 EC48 EE92 8AAF

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) 

鍵を「信頼する」必要があります。ただし、「最終的に」キーを信頼しない限り(つまり、レベル5)、何かを暗号化する必要があるたびに、このプロンプトが表示されます。これは、シェルスクリプトではうまく機能しません。

ファイルを単純に暗号化するには、最終的にキーを信頼する必要がありますか?

8
Naftuli Kay

投稿のタイトルと実際に尋ねている質問が完全に一致していません。この権利を読んでいる場合は、バックアップを暗号化するために独自のPGP公開鍵をどのように使用するのが最善かを尋ねています。一方、質問のタイトルは、暗号化のためにキーに信頼レベルを割り当てることです。暗号化に独自のキーを使用しているように聞こえるので、信頼レベルを割り当てることは、あなたが探しているものではありません。あなたがバックアップの問題に間違ったGPGの「信頼モデル」を使用していると思います。

実行しているコマンドの「信頼モデル」を変更することで、GPGのすべてのキー検証を明示的にバイパスできます。デフォルトでは「PGP」信頼モデルが使用されます。これが、GPGが鍵を信頼できるものとして明示的にマークすることを期待する理由です。または、表示されているメッセージをバイパスする「常に」信頼モデルを使用するようにGPGに指示できます。

--trust-model always

これはあなたが望んでいる振る舞いをあなたにもたらすと思います。ただし、スクリプトが制御していないリモートホストからキーをダウンロードしているため、それが期待するキーであるという保証はありません(キーサーバーの侵害)。 1つのキーのみを使用してバックアップを暗号化することを想定している場合は、公開キーをスクリプトに埋め込むだけで(機密性は高くありません)、キーサーバーをアーキテクチャから完全に切り離すだけで十分です。これにより、キーサーバーへの依存がすべてなくなり、バックアップソリューションの信頼関係が簡素化されます。

ただ。お役に立てれば。

要求されたとおり、ここに例があります。管理しているシステムでバックアップデータを収集したいとします。このバックアップデータを自分で回復できるようにしたいだけです。これを実現するには、スクリプトで収集されたすべてのデータを公開PGPキーで暗号化する必要があります。また、バックアップを実行するユーザーアカウントはバックアップ以外の目的で使用されないため、〜/ .gnupgディレクトリには何も重要ではなく、キーの紛失を心配することなく削除できると想定しています。

これをいじる前に、常に.gnupgディレクトリをバックアップしてください!

以下は、スクリプトに埋め込まれた公開キーでテキストを暗号化する単純なbashスクリプトです。

#!/bin/bash -e                                                                 

gpg --trust-model always --import <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

xxxxxx
...
...
-----END PGP PUBLIC KEY BLOCK-----
EOF

echo "backup data" | gpg --trust-model always --armor  --encrypt --recipient [email protected] > backup-data.enc

このスクリプトの「マジック」は、シェル「 こちらのドキュメント 」(EOFマーカーを参照)を使用して、公開キーをスクリプトに埋め込みながら渡すことです。暗号化/バックアップタスクを実行する前にstdinを介してgpgでキーをインポートします。当然のことながら、「...」の代わりにすべてのASCIIアーマード公開キーを配置する必要があります私の例です。また、「[email protected]」を公開鍵に関連付けられたIDに置き換えてください。通常、これはメールです。

この例をクリーンアップしてより便利にする方法は100万通りあります。実行ごとに公開キーをインポートするのは少しばかげているので、キーが既にリングにあるかどうかを確認することから始めます:)

幸運を!

5
flihp

鍵に究極の信頼を置くとき、あなたはそれをあなた自身のものとして定義しています。

Trustを使用すると、他のキーの有効性を計算するときにvalidキーを考慮することができます。有効であるためには、この鍵への信頼パスが必要です。これは、署名することで実現されます(または、署名から鍵へのパスがあり、すべて信頼されています)。

特に用語が混同されているように思われるため、これは最初はかなり混乱しています。 私はこの回答で詳細に信頼の網を説明しました。

鍵の所有者が誰であるかがわかっていて、これを確認した場合は、鍵に署名するだけで済みます(鍵サーバーに送信することもできます)。よくわからない場合は、独自のキーを使用してローカルの署名(アップロード/エクスポートされない)を実行できます。どちらもキーが有効であることを確認します。信頼する必要はありません。

1
Jens Erat