復号化コマンドで暗号化アルゴリズムを指定できるかどうかを知りたいです。現在サポートされているアルゴリズムのリストで、デフォルト以外の暗号化アルゴリズムを指定するために使用できる暗号化コマンドとは異なり、そのようなサポートは見つかりませんでした。
使用されるコマンドの例:
暗号化:
cat pwd | gpg2 --pinentry-mode loopback --passphrase-fd 0 -o plaintext.enc -r "USER ID" -c --cipher-algo IDEA -e plaintext
解毒:
cat pwd | gpg2 --pinentry-mode loopback --passphrase-fd 0 -o plaintext.dec -r "USER ID" -d plaintext.enc
私は初めてGnuPGに触れ、これを見つけました。郵便はがきWebサイトのコマンドラインでデフォルトの暗号化/暗号化解除を実行するのに非常に便利です。このコマンドをテストするためにUbuntu 20.04 VMを使用しました。
答え1
復号化コマンドで暗号化アルゴリズムを指定できるかどうかを知りたいです。
ない理由は、GnuPGのパケット構文がOpenPGPプロトコルに準拠し、使用された暗号化アルゴリズムが対称暗号化セッションキーパケットに記述されているためです。
バラよりRFC 4880セクション5.3もっと学ぶ。
編集する
暗号化は2つの部分で構成されているため、2つの異なるアルゴリズムが考慮されていることを明確にする必要があります。
メッセージを暗号化するコマンドを実行すると、GnuPGは最初にデフォルト/優先(または指定された)対称アルゴリズムに基づいてサイズが異なるランダムセッションキーを生成し、--cipher-algo
このセッションキーとアルゴリズムを使用してメッセージを暗号化します。
暗号化されたメッセージはSymに保存されます。暗号化された完全性が保護されたデータパケット。
その後、GnuPGは対称アルゴリズムを指定するオクテットをセッションキーの前に追加し、受信者の公開鍵(--encrypt
または-e
コマンドの場合はそのキータイプに固有のアルゴリズムを使用)および/またはパスワード(--symmetric
または-c
コマンドで次を使用)を使用します。オプションで指定した対称アルゴリズム--cipher-algo
、またはユーザーが好む対称アルゴリズム)。
その後、この暗号化セッションキーの前には、暗号化に使用されるアルゴリズムを説明するオクテットが続き、公開鍵暗号化セッション鍵パケット(公開鍵暗号化の場合)または対称鍵暗号化セッション鍵パケット(パスワード暗号化の場合)に配置されます。 。
これはすべて、復号化アルゴリズムが次のようになることを意味します。いつも暗号化されたセッションキーパケット内で指定されます。セッション鍵の復号化に使用されるアルゴリズムは、セッション鍵を暗号化する前に明示的に指定され、復号化されたセッション鍵の最初のオクテットは、実際のメッセージを復号化するために使用される対称アルゴリズムを指定します。