web-dev-qa-db-ja.com

複数の受信者のGPGファイルサイズ?

複数のユーザーのファイルを暗号化した場合、ファイルサイズはどのように変更されますか?

2人のユーザーに対して、出力のサイズが2倍になりますか。 10人または100人のユーザーはどうですか?

30
PiTheNumber

GPGは対称鍵を使用してファイルを1回暗号化し、次にターゲット鍵ペアと対称鍵の暗号化されたバージョンを識別するヘッダーを配置します。その複雑な詳細は RFC 244 のセクション5.1で定義されています。複数の受信者に対して暗号化される場合、このヘッダーは複数回配置され、各受信者に同じ対称鍵の一意に暗号化されたバージョンを提供します。

したがって、各受信者のファイルサイズの増加は小さく、ほぼ線形です。キーの長さとパディングにはいくつかのバリエーションがあるため、 予測不可能 鍵のサイズとアルゴリズムによって異なりますが、サイズは小さいです。圧縮を使用しない簡単なテストデモンストレーションで:

11,676,179 source
11,676,785 encrypted-to-one (+606 bytes)
11,677,056 encrypted-to-two (+277 bytes)
11,677,329 encrypted-to-three (+273 bytes)
24
Jeff Ferland

OpenPGP 形式(つまり、PGPおよびGnuPGが実装するプロトコル)では、メッセージは最初に圧縮され、次にランダムキーで対称暗号化を使用して暗号化されます[〜# 〜] k [〜#〜]; [〜#〜] k [〜#〜]は、各受信者の公開鍵で暗号化されます。

圧縮ステップは、データの種類に応じて、データのサイズを縮小する傾向があります(ASCIIテキストは適切に圧縮されますが、JPG画像は圧縮されません)。対称暗号化は、サイズをごくわずか(20バイト程度)だけ増やします。

各受信者に対して、「公開キー暗号化セッションキーパケット」が追加されます(OpenPGPのセクション5.1を参照)。このようなパケットのサイズは、その受信者の公開鍵のタイプと長さによって異なります。たとえば、2048ビットのRSAキーの場合、そのパケットの長さは271バイトでなければなりません(2048ビットのElGamalの場合、529バイトになります)。

最後に、暗号化されたファイルが電子メールに含まれる場合、通常は「ASCII装甲」、つまりBase64でエンコードされます(バイナリデータではなくテキストを期待するメールサーバーを無傷で移動するため)。 Base64エンコードでは、データ長が+ 33%増加します。

結論:受信者ごとのサイズの増加は、受信者のキーに依存しますが、元のファイルサイズにはではありません。サイズの増加は、受信者あたり1 kB未満である必要があります。

14
Thomas Pornin