◾️はじめに
https://dk521123.hatenablog.com/entry/2026/04/11/101026
で、「AEAD(Authenticated Encryption with Associated Data)」 について、少し触れたが、今回は深掘りする。
目次
【1】AEAD 1)OCBモード 【2】使用上の注意 【3】AEADに関するあれこれ 1)Publicキー作成手順 2)作成手順 3)確認方法
【1】AEAD
* AEAD = Authenticated Encryption with Associated Data = 関連データ付き認証付き暗号 * データの秘匿性(盗み見防止)と完全性・認証(改ざん防止・なりすまし防止)を 同時に提供する暗号化方式
https://wiki.archlinux.jp/index.php/GnuPG
より抜粋 ~~~~~~~ 9.1 サポートされていない AEAD メカニズムを無効にする gnupg 2.4 では、gpg は GnuPG 固有の AEAD 暗号化メカニズム (OCB に基づく) のサポートを通知するキーを生成します。 ただし、AEAD のこのフレーバーは、他の OpenPGP 実装ではサポートされていません。 ~~~~~~~
1)OCBモード
* OCB (Offset Codebook) * データの高速な暗号化と改ざん検知(認証付き暗号: AEAD)を同時に実現するモード => 従来の手法(CFB+MDC)よりも高速かつ安全で、 大規模なファイルの暗号化処理に適している
gpgコマンド 〜 MDC 〜
https://dk521123.hatenablog.com/entry/2026/06/29/095627
| モード | 特徴 | メリット | デメリット | |
|---|---|---|---|---|
| CFB (Cipher FeedBack) | 従来 | GPGなどで長年標準だった方式 | 互換性が高い | 改ざん検知(MDC)を後付けしているため、処理がやや非効率。 |
| GCM (Galois/Counter Mode) | 普及期 | Web(HTTPS通信)などで主流のAEAD | 特許の制約がなく広く普及 | 計算がやや複雑で、OCBに比べると速度で劣る場合がある。 |
| OCB (Offset Codebook) | 現代 | 高速性を追求したAEAD | とにかく高速で安全 | 過去に特許制限があったため普及が遅れた(現在は特許フリー)。 |
【2】使用上の注意
* OCBモード/AEADは、OpenPGPの標準仕様としては新しいため、 古いバージョンのGPG(旧システム)や他のOpenPGP実装ソフトウェアとの間で 互換性の問題が生じる可能性がある => GnuPG 2.2以降でサポート ( OCBモードによる復号はGnuPGバージョン2.2.21以降で対応 ) => 実際に「PGPy」では、AEADが未サポートだった。
Python 〜 PGPy 〜
https://dk521123.hatenablog.com/entry/2026/04/11/101026
【3】AEADに関するあれこれ
1)Publicキー作成手順
gpg full-generate-key # kind: ECC (sign and encrypt) # curve: Curve25519/Ed25519 # UID: Demo AEAD <demo@example.com>
2)作成手順
* Optionに関する詳細は以下の公式ドキュメント参照
https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Options.html
[1] 共通鍵暗号方式(パスフレーズ)
gpg --symmetric --use-ocb-sym <対象のファイル名>
| Options | short option | Explanations | Note |
|---|---|---|---|
| --symmetric | -c | パスフレーズ(パスワード)を使用してファイルを暗号化 | symmetric(シンメトリック)=対称的な |
| --use-ocb-sym | - | 暗号化モードとして従来の CFB+MDC の代わりに OCB を適用 |
[2] 公開鍵暗号方式(受信者の鍵)
gpg --encrypt --recipient <EMAIL> --force-ocb <対象のファイル名>
| Options | short option | Explanations | Note |
|---|---|---|---|
| --encrypt | -e | ファイル暗号化 | |
| --recipient EMAIL | -r EMAIL | 宛先指定 | |
| --force-ocb | - | OCB を矯正適用 |
3)確認方法
gpg --list-packets <対象のファイル名> # さらに詳しく gpg --vv --list-packets <対象のファイル名> # 結果が以下のような文言が出るはず。 # gpg: AES256.OCB encrypted data # :aead encrypted packet: cipher=9 aead=2
関連記事
gpgコマンド 〜 入門編 〜
https://dk521123.hatenablog.com/entry/2026/02/12/143942
gpgコマンド 〜基本編 〜
https://dk521123.hatenablog.com/entry/2026/04/08/160351
gpgコマンド 〜 MDC 〜
https://dk521123.hatenablog.com/entry/2026/06/29/095627
Python 〜 python-gnupg / 入門編 〜
https://dk521123.hatenablog.com/entry/2025/10/18/222208
MWAA ~ gpg/python-gnupgを使うには ~
https://dk521123.hatenablog.com/entry/2026/06/12/001707