セキュリティ
上級

PKCE(ピクシー)

Proof Key for Code Exchange(RFC 7636)・Authorization Code横取り対策。code_verifier(43-128文字ランダム)+code_challenge(S256 SHA-256 Base64URL)+code_challenge_method=S256でPublic Client(SPA/モバイル)必須、OAuth 2.1規格化、2026年全新規OIDC実装で標準化完了。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
RFC 7636
S256
code_verifier
OAuth 2.1

概要

PKCE(Proof Key for Code Exchange)は、RFC 7636 で定義された OAuth 2.1 の拡張機能で、Authorization Code の横取りを防止する仕組みです。
クライアントは code_verifier(43〜128 文字のランダム文字列)を生成し、code_challenge を S256(SHA‑256 でハッシュし Base64URL エンコード)で作成します。
認可サーバは code_challenge_method=S256 を受け取り、後で code_verifier を照合します。
このプロセスは、Public Client(SPA やモバイルアプリ)で必須となり、2026年に全新規 OIDC 実装で標準化が完了しました。
2025年に登場した最新の認証ライブラリは、PKCE をデフォルトで有効にしており、次世代のセキュリティ基盤として広く採用されています。

主な特徴・仕組み

  • code_verifier は 43〜128 文字の安全なランダム文字列。
  • code_challenge は S256 で生成され、認可リクエストに添付。
  • 認可サーバは code_challenge_method=S256 を確認し、後で code_verifier を検証。
  • Public Client でのクライアントシークレットが不要。
  • OAuth 2.1 で正式に位置づけられ、既存の Authorization Code フローに追加。
  • 2026年に OIDC 仕様に統合され、全ての新規実装で必須化。
  • 既存の OAuth 2.0 実装でも簡単に追加可能。
  • 文字列長とハッシュアルゴリズムにより、横取りリスクを 10⁻⁶ 以上に低減。
  • モバイルアプリでのバックグラウンド実行時も安全に動作。
  • 2025年にリリースされた最新 SDK では、code_verifier の生成が自動化。

スペック/製品比較表

仕様項目典型的な値例備考
code_verifier 長さ43〜128 文字64 文字乱数生成
ハッシュアルゴリズムSHA‑256S256速い
Base64URL エンコードありあり余分な文字なし
認可サーバ対応OAuth 2.1あり2026年標準
クライアント種別PublicSPA, Mobileシークレット不要
生成ライブラリ公式 SDKあり2025年版
失敗率<10⁻⁶低
速度<10 ms低
互換性旧版あり

具体例・対応製品

  • Google Sign‑In(Android, iOS)
  • Apple Sign In(iOS, macOS)
  • Microsoft Azure AD(SPA, Mobile)
  • Okta Auth SDK(Web, Mobile)
  • Auth0 SPA SDK(React, Vue)
  • Keycloak(Java, Node)
  • Firebase Authentication(Web, Mobile)
  • AWS Cognito(Web, Mobile)
  • ForgeRock Identity Platform(Enterprise)
  • Ping Identity(Hybrid)

自作PC で PKCE を利用する場合、以下のハードウェアが推奨されます。
RTX 5090(24GB GDDR7, 5.7GHz)、Ryzen 9 9950X3D(3.5GHz, 32GB DDR5)、Core Ultra 9 285K(3.0GHz, 8GB GDDR6)、DDR5‑6000(6000 MT/s)、PCIe 5.0 x16(最大 32GB/s)など、最新世代のパーツを組み合わせると、認証処理の遅延を最小化できます。

自作PCでの選び方・注意点

  • CPU は 3.5GHz 以上のクロックを持つものを選ぶ。
  • メモリは DDR5‑6000 以上を推奨。
  • GPU は RTX 5090 など 24GB GDDR7 を搭載。
  • ストレージは 1.5TB NVMe SSD を選択。
  • 電源は 650W 以上、80 PLUS Gold 以上。
  • ケースは 120mm ファンを 2 つ以上装備。
  • ネットワークカードは PCIe 5.0 x16 互換。
  • BIOS で Secure Boot を有効化。
  • OS は Windows 11 Pro 2025年版、または Ubuntu 24.04 LTS。
  • すべてのドライバを最新に保つ。

PKCE を利用するアプリは、認可サーバとの通信を HTTPS で行い、TLS 1.3 をサポートすることが前提です。
また、code_verifier の生成は OS の暗号ライブラリを使用し、乱数の品質を確保してください。

関連用語との違い

  • OAuth 2.0:認可フローを定義するだけで、横取り対策は必須ではない。
  • OAuth 2.1:OAuth 2.0 を改良し、PKCE を必須化。
  • OIDC:OpenID Connect は認証レイヤー。PKCE は認可レイヤーで使用。
  • PKCE:横取り防止のための追加パラメータ。
  • S256:SHA‑256 でハッシュした Base64URL エンコード。
  • code_verifier:ランダム文字列。
  • code_challenge:S256 で生成。

よくある質問

Q1. PKCE はどのような環境で必須ですか?
A1. Public Client(SPA、モバイルアプリ)で、クライアントシークレットを保持できない環境が必須です。

Q2. 既存の OAuth 2.0 アプリに PKCE を追加できますか?
A2. はい。認可リクエストに code_challenge と code_challenge_method を付与し、認可サーバ側で対応すれば追加可能です。

Q3. PKCE の code_verifier はどのくらい長くすべきですか?
A3. RFC 7636 では 43〜128 文字が推奨され、64 文字が実務で一般的です。

まとめ

PKCE は、Authorization Code フローにおける横取り攻撃を防ぐための標準化された手法です。
2026年に OIDC 仕様に統合され、2025年に登場した最新 SDK では自動化が進んでいます。
自作PC で PKCE を利用する場合、RTX 5090、Ryzen 9 9950X3D、Core Ultra 9 285K など最新ハードウェアを組み合わせると、認証処理の遅延を抑えつつ高いセキュリティを実現できます。
Public Client での安全な認証を実装する際は、必ず code_verifier と code_challenge を正しく生成し、HTTPS/TLS 1.3 で通信することが重要です。

この記事について
カテゴリーセキュリティ
難易度上級
作成日2026/4/20