語源で覚える「SAML認証」と「ケルベロス認証」

## はじめに

◆この記事は何？
シングルサインオンの手段である**SAML認証**と**ケルベロス認証**を説明する記事です。

◆この記事のねらい
「**用語の語源**」も紹介することで、理解と暗記のハードルを下げるのがねらいです。

◆対象は？
セキュリティ分野(認証分野、シングルサインオン)について試験対策している人

:::note warn
語源について

可能な限り出典・参考文献を記載、また確認するようにしていますが、語源はその性質上、不確実性を含みます。
この記事が皆様の暗記に役立つ一助となれば幸いです。
もし誤りを発見された場合には、ご指摘いただければと思います。
:::

## シングルサインオン(SSO)

シングルサインオンは、一度の認証で複数のサーバやアプリケーションを利用できる仕組みです。

シングルサインオンの実現手段には、SAML認証やケルベロス認証があります。

## SAML認証

### ◆SAML

SAMLは、Security Assertion Markup Languageの略です。

SAML認証の流れをシーケンス図で表します。

```mermaid
sequenceDiagram
    autonumber
    participant クライアント as クライアントWebブラウザ (ユーザー)
    participant SP as SP（サービスプロバイダ）
    participant IdP as IdP（アイデンティティプロバイダ） 

    Note over SP, IdP : 信頼関係
    クライアント ->> SP : サービス要求
    SP -->> クライアント : リダイレクト応答
    クライアント ->> IdP : 認証要求
    IdP ->> IdP : 認証
    IdP ->> IdP : 認証OKならアサーション(XML)作成
    IdP -->> クライアント : アサーション発行/リダイレクト応答
    クライアント ->> クライアント : アサーション取得
    クライアント ->> SP : アサーション提示
    SP ->> SP : アサーションOKならサービス開始
    SP -->> クライアント : サービス提供

```

### ◆サービスプロパイダ(Serveice Provider)
サービスプロパイダは、サービスを提供する側のWebアプリケーションやサービスです。

「プロパイダ」は「provider」で提供者を意味します。

### ◆アイデンティプロパイダ(Identity Provider)
アイデンティプロパイダは、アイデンティティ（ID）を管理し、必要に応じて一部をサービスプロバイダーに提供する事業者やシステムです。

### ◆アサーション(Assertion)の意味

[IT用語辞典](https://e-words.jp/w/%E3%82%A2%E3%82%B5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html)では、「アサーション」は次のように説明されています。

英単語としての意味
> アサーション（Assertion）とは、表明、断言、主張などの意味を持つ英単語。

プログラミングにおいての意味
> プログラミングにおいて、あるコードが実行される時に満たされるべき条件を記述して実行時にチェックする仕組みをアサーションという。

[わわわIT用語辞典](https://wa3.i-3-i.info/word17376.html)では、「Security Assertion Markup Language」を

> 安全主張用の印を付ける言語

と解釈されています。

### ◆SAMLアサーションについて
SAMLアサーションとは、ユーザーがサインインしたことをサービスプロバイダーに伝えるメッセージのことです。

SAMLアサーションはXML形式です。
SAMLアサーションに含まれる情報は、認証情報・属性情報・認可情報の三つです。

- 認証情報
    - 認証された時刻や場所など
- 属性情報
    - ユーザーの名前など
- 認可情報
    - ファイルへのアクセス権限などのユーザー権限情報

次のサイトでは、SAMLアサーションを実際に観察された例が紹介されています。

https://www.macnica.co.jp/business/security/manufacturers/okta/saml.html

### ◆SAMLの特徴

SAMLはサービスプロパイダとアイデンティプロパイダの間で認証情報のやり取りがありません。
リダイレクトを使って、クライアントからサービスプロパイダとアイデンティプロパイダにそれぞれ接続してSSOを行います。


＜参考＞

[「ゼロからスタート! 教育系YouTuberまさるの情報処理安全確保支援士1冊目の教科書」](https://amzn.asia/d/dSYLc7n)

[2024　情報処理安全確保支援士「専門知識＋午後問題」の重点対策](https://amzn.asia/d/0vzHwZR)

[SAML （サムル）](https://www.cloudgate.jp/glossary/saml.html)

## ケルベロス認証

まずはケルベロス認証(Kerberos認証)の流れをシーケンス図で説明します。


```mermaid
sequenceDiagram
    autonumber
    box レルム
        participant クライアント
        participant AS as AS
        participant TGS as TGS
        participant サーバ
    end
    
    Note over AS,TGS  : KDC(Key Distribution Center)
    クライアント ->> AS : 認証要求
    AS -->> クライアント : OKなら「TGT」を送付
    クライアント ->> TGS : 「TGT」を送付/アクセスしたいサービスを要求
    TGS -->> クライアント : OKなら「ST」を送付
    クライアント ->> サーバ : 「ST」を送付
    サーバ ->> クライアント : OKならサービス提供 
```

次のサイトでは「要求/応答のやりとり」がより詳細にわかります。

https://unit42.paloaltonetworks.com/next-gen-kerberos-attacks/

### ◆レルム(realm)

「レルム(realm)」の元々の意味は、「領域」や「王国」です。

ケルベロス認証における「レルム」は認証の範囲です。

また、レルム内で行われる通信はいずれも暗号化されています。
レルムの範囲にあるリソースを「principal」といいます。

<参考>
[英辞郎onWeb「realm」](https://eow.alc.co.jp/search?q=realm)

[2024　情報処理安全確保支援士「専門知識＋午後問題」の重点対策](https://amzn.asia/d/0vzHwZR)

### ◆KDC(Key Distribution Center)

「KDC(Key Distribution Center)」は、Kerberos認証のサーバです。

「Key Distribution Center」を直訳すると、「キー配布センター」です。

KDCは、AS、TGS、KDBで構成されます。

- KDCの構成要素
    - AS
        - Authentication Server
        - 認証サーバー
    - TGS
        - Ticket Granting Server
        - チケット認可サーバー
    - KDB
        - Kerberos DataBase
        - 共有鍵を保管するデータベース
- チケット
    - TGT
        - Ticket Granting Ticket
        - TGSにチケットを発行してもらうためのチケット
    - ST
        - Service Ticket
        - サービスを提供してもらうためのチケット

「Grant」は「許可する、承諾する」という意味です。 

<参考>
[キー配布センター](https://learn.microsoft.com/ja-jp/windows/win32/secauthn/key-distribution-center)

[英辞郎onWeb「grant」](https://eow.alc.co.jp/search?q=grant)

### ◆ケルベロス(Kerberos)

「ケルベロス」はギリシャ神話の「地獄の番犬ケルベロス（Kerberos）」に由来します。

いらすとやのケルベロスのイラスト

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616496/37058401-bb04-3fd2-bd1e-89cc773d013a.png)

<参考>
[大塚商会 IT用語辞典「Kerberos認証」](https://mypage.otsuka-shokai.co.jp/contents/business-oyakudachi/words/kerberos-authentication.html)

## おわりに

この記事では、SAML認証とケルベロス認証について説明しました。

理解や暗記のハードルが下がれば嬉しいです。

それでは。