Encrypt-Then-MACがMAC-Then-Encryptに勝る理由
暗号化と認証を正しい順序で組み合わせるべき暗号学的根拠を理解します。
「Encrypt-Then-MACがMAC-Then-Encryptに勝る理由」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
3つの組み合わせ順序
暗号化とMACを組み合わせる場合、Encrypt-then-MAC(EtM)、MAC-then-Encrypt(MtE)、Encrypt-and-MAC(E&M)の3つの順序があります。それぞれのセキュリティ特性は根本的に異なり、あらゆる状況で証明可能な安全性を持つのは1つだけです。
Encrypt-then-MACの定義
Encrypt-then-MACでは、まず平文を暗号化して暗号文を生成し、その暗号文に対してMACを計算します。受信者は復号を試みる前にMACを検証できるため、改ざんされたメッセージは情報を漏らすことなく直ちに拒否されます。
MAC-then-Encryptの定義
MAC-then-Encryptでは、平文に対してMACを計算した後、平文とMACをまとめて暗号化します。受信者はMACを検証する前にメッセージを復号する必要があるため、パディングオラクル攻撃や復号オラクル攻撃につながる可能性があります。
SSL 3.0とTLS 1.0の欠陥
SSL 3.0とTLS 1.0は、CBCモードのブロック暗号でMAC-then-Encryptの順序を使用していました。この設計上の欠陥は、2011年のBEAST攻撃と2014年のPOODLE攻撃に悪用されました。どちらも、MACの検証より先に復号が行われると存在するオラクルを利用した攻撃です。
Bellare-Namprempreの証明
2000年、BellareとNamprempreは、3つの組み合わせ順序のうち、暗号化プリミティブとMACプリミティブが安全であれば、そのすべての組み合わせに対してIND-CCA2安全性(選択暗号文攻撃に対する安全性)を達成できるのはEncrypt-then-MACだけであることを形式的に証明しました。MtEとE&Mは、特定の組み合わせでは安全性を失う可能性があります。
SSHにおけるEncrypt-and-MAC
SSHはEncrypt-and-MACを使用します。MACは平文に対して計算され、暗号文と一緒に平文形式で送信されます。SSHはSSL/TLSのMtEで発生したものと同じ攻撃を受けてはいませんが、この組み合わせも理論的には欠陥があり、暗号化されていないMACを通じて平文の情報が漏れる可能性があります。
安全な抽象化としてのAEAD
Authenticated Encryption with Associated Data(AEAD)は、設計によって組み合わせの問題を解決する現代的な抽象化です。AEADは暗号化と認証を単一のプリミティブに統合し、開発者が組み合わせの順序を選ばなくても、常に正しく組み合わせられるようにします。
AES-GCM:AEADの標準
AES-GCM(Galois/Counter Mode)は、最も広く導入されているAEAD暗号スイートです。CTRモードの暗号化とGHASH認証を組み合わせることで認証付き暗号化を提供し、最新のCPUではAES-NI命令とCLMUL命令によってハードウェアアクセラレーションされます。
TLS 1.3はAEADのみを強制します
TLS 1.3は、AEADではないすべての暗号スイートを削除することで、過去から明確に決別しました。TLS 1.3のすべての暗号スイートはAEADを使用するため、それ以前のTLSバージョンを悩ませていた、暗号化プリミティブとMACプリミティブの不適切な手動組み合わせに起因する脆弱性を、広範囲にわたって排除しています。
プリミティブを手動で組み合わせない
数十年にわたる暗号攻撃から得られる重要な教訓は、専門家であっても暗号化プリミティブとMACプリミティブを手動で組み合わせると、ミスが起こりやすいということです。最新の暗号ライブラリがAEADインターフェースを提供しているのは、組み合わせのミスによって現実の脆弱性を引き起こすことを開発者が防げるようにするためです。
実践的な指針
現在システムを構築する場合は、AES-GCMやChaCha20-Poly1305などのAEADプリミティブを必ず使用してください。MACと暗号化を別々に使用するレガシーシステムとの相互運用が必要な場合は、Encrypt-then-MACの順序を使用し、MtEやE&Mは決して使用しないでください。
EtMとMtEの確認
Encrypt-then-MACとMAC-then-Encryptのセキュリティ上の違いを正しく説明しているのは、次のうちどの文でしょうか。
レッスンのまとめ:組み合わせの順序が重要
別々の暗号化プリミティブとMACプリミティブを組み合わせる場合、証明可能な安全性を持つ順序はEtMだけです。TLS 1.3ではAEADのみの暗号スイートを必須にすることで、この問題を完全に排除しています。迷った場合は、AES-GCMやChaCha20-Poly1305などのAEADプリミティブを使用し、組み合わせを正しく処理するようライブラリに任せてください。
AI チューターと学ぶ Cryptology Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 67
- レッスン
- 261
よくある質問
「Encrypt-Then-MACがMAC-Then-Encryptに勝る理由」レッスンは無料ですか?
はい。「Encrypt-Then-MACがMAC-Then-Encryptに勝る理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「Encrypt-Then-MACがMAC-Then-Encryptに勝る理由」で何を学びますか?
暗号化と認証を正しい順序で組み合わせるべき暗号学的根拠を理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Encrypt-Then-MACがMAC-Then-Encryptに勝る理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Encrypt-Then-MACがMAC-Then-Encryptに勝る理由
- SIVモード:Nonce誤用耐性を持つAEAD
- AEGIS:高速な認証付き暗号
- 本番システム向けAEADの選定