web-dev-qa-db-ja.com

複数のキーを使用した暗号化/復号化

データを暗号化して、複数の異なるキーで復号化することは可能ですか?

例:

Key1でデータを暗号化しましたが、キー2、3、4で復号化できるようにしたいです。

これは可能ですか?

98
Glen Solsberry

GnuPG は標準でマルチキー暗号化を行います。

次のコマンドは、アリスの公開鍵とボブの公開鍵を使用してdoc.txtを暗号化します。アリスは自分の秘密鍵を使用して復号化できます。ボブは自分の秘密鍵を使用して復号化することもできます。

gpg --encrypt --recipient [email protected] \
    --recipient [email protected] doc.txt

この機能の詳細は、「 ドキュメントの暗号化と復号化 」というタイトルのユーザーガイドセクションに記載されています。

148
David Segonds

はい、可能です

はい、複数の受信者の暗号化が可能です。また、あなたが誰かに送ったものを読みたいと思うかもしれないと思うとき、それは論理的に思えますyou受信者リストにいる必要があります。

コマンドライン

gpgコマンドラインを使用して実行する方法を次に示します( David Segondsの回答 で説明されています)。

gpg --encrypt \
  --recipient [email protected] \
  --recipient [email protected] \
clear-message.txt

GUIクライアント

GUIは、複数のユーザーを暗号化する方法を提供する必要があります

機構

情報セキュリティGPGファイルサイズに複数の受信者がいますか?、暗号化メカニズムについての質問

GPGは対称キーを使用してファイルを1回暗号化し、ターゲットキーペアを識別するヘッダーと対称キーの暗号化バージョンを配置します。

[...]複数の受信者に暗号化される場合、このヘッダーは複数回配置され、各受信者に同じ対称キーの一意に暗号化されたバージョンを提供します

50
Édouard Lopez

GnuPG およびPGPクライアントは通常、「セッションキー」と呼ばれる対称キーで実際のデータを暗号化します。セッションキーは、各「受信者キー」(つまり、-r /-recipientで指定したもの)で暗号化されます。これは、 ハイブリッド暗号 と呼ばれることもあります。現在、GnuPGはデフォルトで256ビットのセッションキーとAESを使用してプレーンテキストデータをそのAES-256セッションキーに暗号化し、受信者のキーはRSA/DSA/ECDSA/etcであると考えています。この場合の非対称キー。

この方法でこれを行う理由の1つは、AESのような対称暗号化アルゴリズムは、一般にRSAのような非対称暗号化アルゴリズムよりもはるかに高速だからです。したがって、GnuPGはRSAで〜256ビット(セッションキー)を暗号化するだけでよく、AESを使用してそのセッションキーでデータを(必要なだけ)暗号化できます。 Intelマシンにも組み込みの命令 AES-NI があり、ハードウェアでアルゴリズムのいくつかのステップを実行します。これにより、GnuPGが暗号化/復号化でスナッピーになりますデータ。

この方法を使用するもう1つの理由は、PGPで暗号化されたドキュメントを、ドキュメントのサイズを2倍にすることなく、複数の関係者に対して暗号化できることです。暗号化されたドキュメント(たとえばgpg -ea -r Alice -r Bob -o ciphertext.asc)に複数の受信者を指定すると、格納される暗号化されたドキュメント(ciphertext.asc)は、アリスに暗号化した場合の2倍の大きさではないことに注意してください。

gpg manページの--show-session-keyパラメーターも参照してください 。たとえば、サードパーティが秘密鍵またはプレーンテキストデータを転送することなく、暗号化されたドキュメントを解読します。

27
ido

はい、可能です。 Googleの「マルチパーティ暗号化」が始まります。

私の知る限り、ドロップインはありませんし、パッケージを使用しています。

-MarkusQ

追伸それがどのように行われるかのスケッチについては、これを考慮してください。暗号化されたメッセージは次のもので構成されます。

  • ワンタイムパッドで暗号化されたペイロード
  • key1で暗号化されたワンタイムパッド
  • key2で暗号化されたワンタイムパッド
  • ...
  • keyNで暗号化されたワンタイムパッド

キーiを保持する受信者は、パッドのコピーをキーで解読し、ペイロードを解読します。

ただし、これは、それが実行可能であり、実際の実装としてsuckであるという証拠にすぎません。可能な場合は、独自の暗号化を行わないでください。理由がわからない場合は、間違いなく独自の暗号化を行わないでください。

-----編集------------

私が間違っていて、Gnuツールがそれを行う場合は、それらを使用してください。しかし、私はそれを行う方法に関する情報を見つけることができないようです。

4
MarkusQ