認証プロトコル

# 認証プロトコルとは
認証プロトコルとはシステムやネットワークにおいて利用者やデバイスが正当なものであると確認するための手段やルールを定めた通信プロトコル。認証プロトコルはセキュリティの基本であり利用者やデバイスの信頼性を確認することで不正アクセスやデータの漏洩を防ぐ役割を果たす

# 認証プロトコルの役目
主にシステムやネットワーク上でのセキュリティを確保し不正アクセスやデータ漏洩を防ぐ為にある。単なる利用者確認に留まらずシステム全体のセキュリティを向上させ、アクセス制御、データ保護、ユーザー利便性の向上を実現する重要な役割を担ってる。これらを通じて安全で効率的なシステム運用を支える基盤として機能している

### 1.正当性の確認、アイデンティティの検証
認証プロトコルの最も基本的な役目は利用者やデバイスの正当性を確認すること。利用者やデバイスが信頼できる存在であることを保証する。
- 誰がアクセスしているかを明確にする
利用者やデバイスが事前に登録された正規なものであることを確認する（例：ユーザー名とパスワード、指紋認証）
- なりすましの防止
攻撃者が他人のアカウントを不正に使用することを防ぐ（例：公開鍵と秘密鍵を用いたデジタル署名）

### 2.アクセス制御の基盤
認証はアクセス制御を実現するための鍵となっている
- アクセス許可の判断
認証が成功した場合のみ利用者に特定のリソースやサービスのアクセス権が与えられる
- 権限分離の実現
利用者の役割に応じてアクセスできる範囲を制限する（最小権限の原則）（例：開発者が運用データにアクセスできないようにする）

### 3.セキュリティの強化
認証プロトコルはシステム全体のセキュリティを向上させるために重要な役割を果たす
- 盗聴の防止
認証情報（例：パスワードやトークン）が平文で送信されないよう暗号化を使用する（例：TLSプロトコルでの暗号化通信）
- リプレイ攻撃の防御
攻撃者が以前の認証データを再利用することを防ぐ（例：ワンタイムパスワード（OTP）やCHAPのチャレンジレスポンス方式

### 4.ユーザー体験の向上
認証プロトコルはセキュリティだけでなく利用者の利便性を向上させる役割も果たす
- シグナルサインオン（SSO）
1度の認証で複数のサービスにアクセス可能にする（例：SAMLやOAuthを使ったGooleアカウントの統合ログイン）
- トランスペアレント認証
ユーザーが意識せずにバックグラウンドで認証を行う仕組み（例：Kerberosによるネットワーク内の透過的な認証）

### 5.データの完全生と信頼性の確保
認証プロトコルは通信データの完全性や信頼性を担保する
- データの改ざん防止
認証を通じて通信の送信元を確認しデータが正当な送信者からのものであることを保証する（例：デジタル署名やHMAC（ハッシュベースメッセージ認証コード））
- エンドポイントの検証
クライアントとサーバーが互いに信頼できる相手であることを確認する（例：SSL/TLSでのサーバー証明書の確認）

### 6.多要素認証の実現
認証プロトコルは複数の要素を組み合わせた多要素認証（MFA）を支える技術基盤である
- 要素の種類
①知識要素：ユーザーが知っているもの、パスワード・PINなど
②所有要素：ユーザーが持っているもの、スマートフォン、セキュリティトークンなど
③生体要素：ユーザー自身、指紋・顔認証・声紋など
- 目的
単一の要素が盗まれてもシステム全体が侵害されないようにする

### 7.柔軟なセキュリティ要件の適応
認証プロトコルは異なるシステムやサービスのセキュリティ要件に合わせて調整できる
- コンテキスト認証
利用者の行動やアクセス場所に基づいて動的に認証の強度を調整（例：新しいデバイスからのログイン要求時に追加の認証を要求）
- システム間の統合
異なるシステムやアプリケーション間で認証情報を安全に共有（例：OAuthを使ったAPI間の認証）

### 8.規制とログ管理
認証プロトコルは法的要件やコンプライアンス（GDPR、HIAAなど）を満たすために必要である
- 認証ログの記録
認証の成功・失敗を記録し、不正アクセスや異常な行動を検出（例：システム監査ログ）
- 規制要件の順守
- 認証プロセスが国際的なセキュリティ基準に準拠している必要がある（例：PCI DSS→クレジットカードデータ保護基準）


# 認証プロトコルの種類と仕組み
### 1.パスワードベースの認証プロトコル
- シンプルで最も一般的な方式
- ユーザーがパスワードを入力しシステムがそのパスワードをデータベースのものと比較する
[例]
PAP(Password Authentication Protocol)
パスワードを平文で送信するためセキュリティが低い

### 2.挑戦応答方式
- サーバーがクライアントにランダムなチャレンジデータを送信しクライアントがそれに応じて正しい応答を返す
- パスワードを直接送信しないため安全性が向上
[例]
CHAP(Challenge-Handshake Authentication Protocol)
パスワードをハッシュ化して送信しセッション中に再度認証を行う

### 3.公開鍵暗号方式
- 非対称鍵暗号を用いて認証を行う
- クライアントが秘密鍵を持ち、サーバーが公開鍵を使って認証を確認する
[例]
TLS/SSL認証
クライアントとサーバー間で証明書を交換し、安全な通信路を確立。

### 4.トークンベースの認証
- トークン（アクセストークンやリフレッシュトークン）を利用して認証を行う
- 1度認証されるとセッション内でトークンを使い続けることが可能
[例]
OAuth2.0
Webサービスやアプリで広く使用されアクセストークンを発行する

### 5.証明書ベースの認証
- クライアントとサーバーがデジタル証明書を使って互いに認証する
[例]
PKI(Public Key Infrastructure)
公開鍵基盤を利用した認証方式

### 6.バイオメトリクス認証
- 指紋、顔認証、虹彩認証など、利用者の生体情報を用いる方式
- 非常に高いセキュリティを実現するが実装コストが高い


# 主な認証プロトコル
## Kerberos（ケルベロス）
大規模な企業ネットワークActiveDirectory、社内の閉じたネットワークで使用されてる。セキュリティの高さ、シグナルサインオンの利便性、集中管理による効率性、大規模ネットワークへの適応性がある。大規模環境における信頼性と効率性の確保に優れている。チケット方式（認証情報を暗号化）を用いてユーザー、アプリケーション、サービス間の認証を行う

## OAuth（オース、オーオース）
SNSやクラウドサービスなどでよく利用される。ユーザーのパスワードを直接サードパーティアプリに渡さなくてもソースへのアクセスを許可する仕組み（ユーザーがIDプロバイダ（Goole、Facebookなど）を通じてログインしサービスを利用できる）だったりSNSやクラウドの分散型サービスを相性が良い。サービス間の連携だったりプラットフォームを跨ぐ安全な認証が行われる。標準化もされているため開発効率も良い。

## RADIUS
Remote Authentication Dial-In User Service。
企業のVPN接続やISPで使用される。リモートアクセスのための認証、承認、課金（AAA）を実現、リモートアクセスや分散型ネットワーク環境に最適化されている。VPN、Wi-Fi認証、ISPによるインターネット接続の管理など外部からのアクセス認証を得意としている。ただパスワードは暗号化されるが通信自体は暗号化されてないのでKerberosにセキュリティ面は劣る。

## SAML
Security Assertion Markup Language。
シグナルサインオン（SSO）を実現するために使用される認証プロトコル、ウェブページやアプリケーションでよく使用される。企業や組織でも使用されクラウド向けに設計されているため異なる組織間やクラウドサービス間でSSOを実現したい時に使用される、インターネットを介した認証に特化しているためWebブラウザを使用するサービスと相性が良い。OAuthはソースへのアクセス（認可・どのデータにアクセスできるか）なのに対しSAMLはログイン（認証・あなたが誰かを確認）に使われるプロトコル

## SSL/TLSハンドシェイク
HTTPで使用される。HTTP通信を暗号化し盗聴、改ざん、なりすましから保護するために使用される。HTTPSとして採用されることで現在のインターネットにおけるセキュリティ基盤となっている。特にオンラインショッピングや金融サービスなどセキュリティが重要な場面で不可欠な技術。他にもHTTP通信を保護するものはあるがセキュリティの高さや設定の簡便さや性能向上面でSSL/TLSハンドシェイクが採用されている

# 認証プロトコルの仕組み
### 1.リクエスト送信
利用者やデバイスがリソースへのアクセスを要求する

### 2.資格情報の送信
ユーザー名、パスワード、証明書、トークンなどの資格情報を提供する

### 3.認証の確認
サーバーが資格情報を確認し、正当性を検証する

### 4.応答の送信
認証が成功した場合、アクセス権が付与されます。不正な場合は拒否される

# 認証プロトコルの課題
### 1.中間者攻撃への脆弱性
SSL/TLSなど暗号化プロトコルを併用しない場合、通信内容が盗聴されるリスクがある

### 2.パスワード漏洩
パスワードベースのプロトコルはパスワードの盗聴や漏洩に弱い

### 3.物理的なセキュリティの必要性
トークンや証明書を利用する場合、それを安全に保管する必要がある

### 4.スケーラビリティ
大規模なシステムで認証負荷が増加する可能性

# まとめ
認証プロトコルはセキュリティの中核を担う技術でありセキュリティ要件に応じて選択され、システム全体の信頼性を向上させるために不可欠なもの。パスワードからトークン、証明書、バイオメトリクスに至るまで、それぞれの特徴と用途を理解しセキュリティ要件に合致した実装を行うことが重要。