0Pricing
Cryptology Academy · レッスン

GCMと認証付き暗号化

暗号化に認証タグを追加して、改ざんを防止します。

「GCMと認証付き暗号化」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

AES-GCM は認証付き暗号化の標準的な方式です。1回の操作で機密性と完全性の両方を提供し、別途 HMAC を使用しなくても改ざんを防止します。

暗号化だけでは不十分な理由

暗号化は機密性を提供しますが、完全性は提供しません。攻撃者は AES-CBC の暗号文を傍受すると、鍵を知らなくてもビットを反転させ、復号後の平文を変更できます。

AEAD:関連データ付き認証暗号化

AEAD 方式は、暗号文と認証タグを出力します。タグは暗号文だけでなく、暗号化しないオプションの関連データ(AAD)も認証します。どのような変更でもタグは無効になります。

GCM の構造

AES-GCM は次の要素を使用します。 1. 暗号化には AES-CTR 2. 認証には GHASH GHASH は GF(2^128) 上の乗算を使い、暗号文と AAD に対する多項式 MAC を計算します。

GHASH の概要

GHASH(H, A, C) = サブキー H = AES(K, 0^128) を使って AAD と暗号文をハッシュした値です。多項式を GF(2^128) 上で H に対して評価します。その結果を暗号化されたカウンタと XOR して、タグを形成します。

AES-GCM の入力と出力

入力:128/192/256ビットの鍵、96ビットのノンス、平文、オプションの AAD 出力:暗号文(平文と同じ長さ)、128ビットの認証タグ タグは通常16バイトです。12バイト未満に切り詰めることは推奨されません。

GCM のノンス要件

GCM では、同じ鍵を使う暗号化ごとに一意のノンスが必要です。96ビットのランダムなノンスが標準的です。2^32 個を超えるメッセージを処理すると、衝突確率は1%を超えます。その時点で鍵をローテーションしてください。

GCM のノンス再利用による壊滅的被害

GCM で(鍵、ノンス)を再利用すると、攻撃者は GHASH サブキー H を復元し、有効なタグ付きの任意の暗号文を偽造できるようになります。これにより、機密性と完全性の両方が完全に破られます。

関連データ(AAD)の使用例

AAD は、暗号化はしないものの認証したいメタデータです。 - HTTP ヘッダー:レスポンスのルーティング攻撃を防ぐために認証します - データベースのレコード ID:正しい行で暗号文が復号されることを保証します - プロトコルのバージョン:ダウングレード攻撃を防ぎます

AES-GCM の Python 完全例

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(256) nonce = os.urandom(12) aad = b'user_id=12345' aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b'secret', aad) pt = aesgcm.decrypt(nonce, ct, aad) # raises if tampered

代替方式:ChaCha20-Poly1305

ChaCha20-Poly1305 は、もう1つの主要な AEAD 方式です。AES-NI を搭載していないデバイス(ARM/モバイル)向けに TLS 1.3 で使用されています。AES-GCM と同程度の安全性を提供し、ハードウェアアクセラレーションのない環境ではより高速です。

確認問題

AES-GCM の認証タグは、何から保護しますか?

まとめ

認証付き暗号化には AES-GCM をデフォルトとして使うのが適切です。次はストリーム暗号について、破られた RC4 から現代的な ChaCha20 まで学びます。

よくある質問

「GCMと認証付き暗号化」レッスンは無料ですか?

はい。「GCMと認証付き暗号化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「GCMと認証付き暗号化」で何を学びますか?

暗号化に認証タグを追加して、改ざんを防止します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「GCMと認証付き暗号化」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ブロック暗号の基礎とパディング
  2. ECBとCBC:パターンとIV
  3. CTRモードとストリーム暗号の動作
  4. GCMと認証付き暗号化
← Cryptology Academyに戻る