Cryptology Academy · レッスン

CMACとPoly1305:ブロック暗号MAC

CMACとPoly1305をハッシュベースMACの代替として比較します。

レッスン 4/413 ステップ

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

MACとは

メッセージ認証コード(MAC)は、鍵とメッセージを受け取り、タグを生成します。このタグによって、メッセージが改ざんされておらず、鍵を保持する者によって生成されたことを証明できます。

HMACとブロック暗号MACの比較

HMACは基本要素としてハッシュ関数を使用します。一方、CMACとPoly1305はブロック暗号または多項式演算を使用します。ブロック暗号MACはハッシュ関数への依存を避けられ、AESハードウェアと自然に統合できます。

CMACの構成

CMAC(Cipher-based MAC)はNIST SP 800-38Bで定義されています。メッセージをブロック境界までパディングし、暗号から2つのサブキーK1/K2を導出して最終ブロックにXORし、その後、中間暗号文を保存せずにCBCモードを実行します。

CMACのサブキー導出

K1 = AES_K(0^128)を1ビット左シフトし、MSBが1だった場合は定数とXORします。K2 = K1も同様にシフトします。これらのサブキーにより、長さ拡張に対して最終部分ブロックを安全に束縛できます。

Poly1305の概要

Poly1305は、Daniel Bernsteinが設計したワンタイム認証方式です。素数2^130-5上で多項式を評価し、メッセージを多項式の係数として扱い、ワンタイム鍵ペア(r, s)を使用します。

Poly1305の数学

Tag = (sum of (m_i * r^i) mod 2^130-5) + s mod 2^128. タイミング攻撃を防ぐため、鍵rは特定の22ビットがクリアされるよう制限されます。sは16バイトのワンタイム加算マスクです。

ChaCha20-Poly1305

Poly1305はほぼ必ずChaCha20と組み合わせて使用されます。ChaCha20はストリーム暗号のキーストリームからワンタイムの(r, s)を生成するため、組み合わせたAEAD方式は安全性が証明されており、ARMやモバイルCPU上で非常に高速です。

AES-GCMとAES-CMACの比較

AES-GCMは、GF(2^128)上の多項式MACであるGHASHを使用して認証します。AES-CMACはより単純で、IEEE 802.11i(WPA2)およびTLS 1.2の暗号スイートで使用されます。GCMは暗号化と認証の両方を1回の処理で行います。

性能比較

ARM Cortex-A上のPoly1305は、NEON intrinsicを使用すると約1サイクル/バイトで動作します。AES-CMACは16バイトのブロックごとに1回のAESブロック操作を必要とします。大容量データでは、AES-NIを搭載していないハードウェア上でPoly1305がCMACを上回ります。

安全性の特性

AESが擬似ランダム置換であると仮定すると、CMACは選択メッセージ攻撃に対して存在的偽造不可能です。Poly1305は、真にランダムなワンタイム鍵を前提とすれば情報理論的に安全であり、偽造確率は最大で8*ceil(L/16)/2^106です。

用途

CMAC:WPA2、S/MIME、ファイルシステムの完全性。Poly1305:ChaCha20-Poly1305を介したTLS 1.3、WireGuard VPN、Signal Protocol、Noise Protocol Framework。どちらも最新の高セキュリティシステムで広く導入されています。

確認問題

ChaCha20-Poly1305 AEADでは、どのMACが使用されていますか?

まとめ

CMACのCBCベースの構成と、Poly1305の多項式演算について学びました。どちらも実際のプロトコルで使用されている、定数時間で安全なMACです。次はTLS/HTTPSに進み、これらすべての基本要素がどのように組み合わさるかを確認します。

無料で開始

AI チューターと学ぶ Cryptology Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
67
レッスン
261

よくある質問

「CMACとPoly1305:ブロック暗号MAC」レッスンは無料ですか?

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

「CMACとPoly1305:ブロック暗号MAC」で何を学びますか?

CMACとPoly1305をハッシュベースMACの代替として比較します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「CMACとPoly1305:ブロック暗号MAC」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. MACの概念と長さ拡張攻撃
  2. HMACの構成と安全性証明
  3. APIにおけるHMAC:リクエスト署名
  4. CMACとPoly1305:ブロック暗号MAC
← Cryptology Academyに戻る