歴史と発展 マサチューセッツ工科大学( MIT )は、 Project Athena が提供するネットワーク サービスを保護するために 1988 年に Kerberos を開発しました。[ 5 ] 最初のバージョンは、主に Steve Miller と Clifford Neuman によって、以前のNeedham–Schroeder 対称鍵プロトコル に基づいて設計されました。[ 6 ] [ 7 ] Kerberos バージョン 1 から 3 は実験的なもので、MIT 以外では公開されませんでした。
Kerberos バージョン 4 は、最初の公開バージョンとして 1989 年 1 月 24 日にリリースされました。Kerberos 4 は米国で開発され、データ暗号化標準 (DES)暗号化 アルゴリズムを使用していたため、米国の輸出規制により 他国への輸出が禁止されていました。MIT は、暗号化コードをすべて削除した Kerberos 4 の輸出可能なバージョンを作成し、「Bones」と名付けました。オーストラリアのボンド大学 のエリック・ヤングは、DES を Bones に再実装し、「eBones」と呼ばれるバージョンを作成しました。これはどの国でも自由に使用できます。スウェーデンの王立工科大学は、 KTH-KRB と呼ばれる別の再実装をリリースしました。
ニューマンとジョン・コールは、既存の制限事項やセキュリティ上の問題を克服する目的で、1993年にバージョン5を公開した。バージョン5はRFC 1510 として発表されたが、2005年にRFC 4120によって廃止された。
2005年、インターネット技術タスクフォース (IETF)のKerberosワーキンググループは仕様を更新しました。更新内容は以下のとおりです。
暗号化およびチェックサム仕様(RFC 3961)。 Kerberos 5 用の高度暗号化標準(AES) 暗号化 ( RFC 3962 )。Kerberos V5仕様の最新版「Kerberosネットワーク認証サービス(V5)」(RFC 4120)。このバージョンはRFC 1510を廃止し、プロトコルの側面と意図された使用法をより詳細かつ明確に説明しています。 汎用セキュリティサービスアプリケーションプログラミングインターフェース (GSS-API)仕様の新版「Kerberosバージョン 5汎用セキュリティサービスアプリケーションプログラミングインターフェース(GSS-API)メカニズム:バージョン 2」(RFC 4121)。MITは、 BSD と同様の著作権許諾の下で、Kerberosの実装を無償で公開している。2007年、MITは継続的な開発を促進するためにKerberosコンソーシアムを設立した。設立スポンサーには、Oracle 、Apple Inc. 、Google 、Microsoft 、Centrify Corporation、TeamF1 Inc.などのベンダー、スウェーデン王立工科大学 、スタンフォード大学、MITなどの学術機関、そして商用サポート付きバージョンを提供するCyberSafeなどのベンダーが含まれる。
プロトコル
説明 クライアントは、鍵配布センター (KDC) の一部である認証サーバー(AS) に対して認証を行います。KDCは、タイムスタンプ付きのチケット発行チケット(TGT)を発行し、 チケット発行サービス(TGS)の 秘密鍵を使用して暗号化し、暗号化された結果をユーザーのワークステーションに返します。この処理は、通常、ユーザーのログオン時に行われます。TGTは有効期限が切れますが、ユーザーがログオンしている間は、セッションマネージャによって透過的に更新される場合があります。
クライアントが別のノード上のサービス(Kerberos用語では「プリンシパル」)と通信する必要がある場合、クライアントはTGTをTGSに送信します。TGSはKDCの別のコンポーネントであり、通常は認証サーバーと同じホストを共有しています。サービスは、サービスプリンシパル名(SPN) を使用してTGSに既に登録されている必要があります。クライアントはこのSPNを使用して、このサービスへのアクセスを要求します。TGSは、TGTが有効であり、ユーザーが要求されたサービスへのアクセスを許可されていることを確認した後、サービスチケット(ST) とセッションキーをクライアントに発行します。クライアントは、サービス要求とともにチケットをサービスサーバー(SS)に送信します。
Kerberos交渉 手順の詳細は以下に記載されています。
ユーザーログインと事前認証 ユーザーはクライアントマシン 上でユーザー名とパスワードを入力します。PKINIT(RFC 4556)などの他の認証メカニズムでは、パスワードの代わりに公開鍵やスマートカードを使用できます。 クライアントは、使用する暗号スイート に応じて、一方向ハッシュ関数 または標準鍵導出関数 を使用して、パスワードを対称鍵に変換します。最新のKerberos(v5)では、クライアントはこの鍵を使用して現在のタイムスタンプを暗号化することがよくあります。この暗号化されたタイムスタンプは、ユーザー名とともに「事前認証」としてASに送信され、ASがチケットを発行する前にユーザーがパスワードを知っていることを証明し、オフラインでの総当たり攻撃を防ぎます。
クライアント認証 クライアントは、ユーザーに代わってサービスを要求するユーザーIDの平文 メッセージを認証サーバー(AS)に送信します。(注:秘密鍵もパスワードも認証サーバーには送信されません。) ASは、クライアントがデータベースに登録されているかどうかを確認します。登録されている場合、ASはデータベース( Windows ServerのActive Directory など)で見つかったユーザーのパスワードをハッシュ化して秘密鍵を生成し、次の2つのメッセージをクライアントに返信します。 メッセージA:クライアント/TGSセッションキーは、 クライアント/ユーザーの秘密鍵を使用して暗号化されています。 メッセージB:TGSの秘密鍵を使用して暗号化されたチケット発行チケット (TGT。クライアントID、クライアントネットワークアドレス 、チケット有効期間、およびクライアント/TGSセッションキーが含まれます)。 クライアントはメッセージAとBを受信すると、ユーザーが入力したパスワードから生成された秘密鍵を使用してメッセージAの復号を試みます。ユーザーが入力したパスワードがASデータベースのパスワードと一致しない場合、クライアントの秘密鍵は異なるため、メッセージAを復号できません。有効なパスワードと秘密鍵があれば、クライアントはメッセージAを復号してクライアント/TGSセッションキー を取得します。このセッションキーは、TGSとの以降の通信に使用されます。(注:メッセージBはTGSの秘密鍵で暗号化されているため、クライアントは復号できません。)この時点で、クライアントはTGSに対して自身を認証するのに十分な情報を取得しています。
クライアントサービス承認 サービスをリクエストする際、クライアントはTGSに以下のメッセージを送信します。 メッセージC:メッセージB(TGS秘密鍵を使用して暗号化されたTGT)と要求されたサービスのIDで構成されます。 メッセージD:認証情報(クライアントIDとタイムスタンプで構成される)を、クライアント/TGSセッションキー (クライアントがメッセージAで検出)を使用して暗号化します。 TGSはメッセージCとDを受信すると、メッセージCからメッセージBを取り出します。TGSはTGS秘密鍵を使用してメッセージBを復号します。これにより、クライアント/TGSセッションキー とクライアントID(どちらもTGTに含まれています)が得られます。TGSはこのクライアント/TGSセッションキー を使用してメッセージD(認証情報)を復号し、メッセージBとDのクライアントIDを比較します。一致した場合、サーバーは次の2つのメッセージをクライアントに送信します。 メッセージE:クライアントID、クライアントネットワークアドレス、有効期間、およびクライアント/サーバーセッションキー を含む、サービスの秘密鍵を使用して暗号化されたクライアントからサーバーへのチケット。 メッセージ F:クライアント/サーバーセッションキーは、 クライアント/TGS セッションキー で暗号化されています。
クライアントサービスリクエスト TGSからメッセージEとFを受信すると、クライアントはサービスサーバー(SS)に対して自身を認証するのに十分な情報を得ます。クライアントはSSに接続し、次の2つのメッセージを送信します。 メッセージ E: 前のステップからのメッセージ ( TGS によってサービスの秘密鍵を使用して暗号化されたクライアントからサーバーへのチケット)。 メッセージ G: クライアント ID、タイムスタンプを含み、クライアント/サーバーセッション キー を使用して暗号化された新しい認証情報。 SSは、自身の秘密鍵を使用してチケット(メッセージE)を復号し、クライアント/サーバーセッションキー を取得します。セッションキーを使用して、SSは認証情報を復号し、メッセージEとGのクライアントIDを比較します。一致する場合、サーバーはクライアントに次のメッセージを送信して、自身の正体とクライアントへのサービス提供意思を確認します。 メッセージ H: クライアントの認証器で見つかったタイムスタンプ (バージョン 4 では + 1、バージョン 5 では不要[ 11 ] [ 12 ] ) をクライアント/サーバーセッションキー で暗号化したもの。 クライアントは、クライアント/サーバーセッションキー を使用して確認メッセージ(メッセージH)を復号し、タイムスタンプが正しいかどうかを確認します。タイムスタンプが正しければ、クライアントはサーバーを信頼し、サーバーへのサービス要求の発行を開始できます。 サーバーはクライアントから要求されたサービスを提供する。
オペレーティングシステムによるサポート
マイクロソフトWindows Windows 2000 以降のバージョンでは、Kerberos をデフォルトの認証方法として使用しています。[ 13 ] Microsoft が Kerberos プロトコル群に追加した機能の一部は、RFC 3244「Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols」に記載されています。RFC 4757 では、Microsoft によるRC4 暗号の使用について説明しています。Microsoft は Kerberos プロトコルを使用および拡張していますが、MIT ソフトウェアは使用していません。
Kerberos は優先認証方法として使用されます。一般的に、クライアントを Windows ドメインに参加させるということは、そのクライアントから Windows ドメイン内のサービス、およびそのドメインと信頼関係にあるすべてのドメインへの認証のデフォルト プロトコルとして Kerberos を有効にすることを意味します。[ 13 ]
対照的に、クライアントまたはサーバー、あるいはその両方がドメインに参加していない場合(または同じ信頼されたドメイン環境の一部でない場合)、Windows は代わりにNTLM を使用してクライアントとサーバー間の認証を行います。[ 13 ]
インターネットのWebアプリケーションは、 SSPI の下で提供されるAPIを使用することで、ドメインに参加しているクライアントの認証方法としてKerberosを強制することができます。
Microsoft Windows および Windows Server には、 Active Directoryサービス アカウント のサービス プリンシパル名 (SPN) を読み取り、変更、または削除するために使用できるコマンドラインユーティリティである setspn が 含まれています。[ 14 ] [ 15 ]
欠点と制限 Kerberosには厳密な時間要件があり、関係するホストの時計は設定された制限内で同期されている必要があります。チケットには有効期間があり、ホストの時計がKerberosサーバーの時計と同期されていない場合、認証は失敗します。MITのデフォルト設定では、時計の時刻の差は5分以内である必要があります。実際には、通常、ネットワークタイムプロトコル デーモンを使用してホストの時計を同期します。一部のサーバー(Microsoftの実装もその1つ)は、両方の時計のオフセットが設定された最大値よりも大きい場合、暗号化されたサーバー時刻を含むKRB_AP_ERR_SKEW結果を返す可能性があることに注意してください。その場合、クライアントは提供されたサーバー時刻を使用して時刻を計算し、オフセットを見つけることで再試行できます。この動作はRFC 4430に記載されています。 管理プロトコルは標準化されておらず、サーバーの実装によって異なります。パスワードの変更については、RFC 3244に記載されています。 対称暗号方式を採用する場合(Kerberosは対称暗号方式または非対称暗号方式(公開鍵暗号方式)を使用して動作できます)、すべての認証は中央集権型の鍵配布センター (KDC)によって管理されるため、この認証インフラストラクチャが侵害されると、攻撃者は任意のユーザーになりすますことが可能になります。 ホスト名が異なるネットワークサービスごとに、それぞれ独自のKerberosキーセットが必要になります。これは仮想ホスティングやクラスタリングを複雑にする要因となります。 Kerberosでは、ユーザーアカウントとサービスがKerberosトークンサーバーとの間で信頼関係を確立している必要があります。 必要なクライアントの信頼関係により、段階的な環境(例えば、テスト環境、プレプロダクション環境、プロダクション環境用の別々のドメイン)の作成が困難になります。環境ドメインの厳密な分離を妨げるドメイン信頼関係を作成するか、各環境に別途ユーザークライアントを提供する必要があります。
安全 データ暗号化標準 (DES)暗号はKerberosと組み合わせて使用できますが、脆弱であるため、もはやインターネット標準ではありません。[ 16 ] AESなどの新しい暗号化暗号をサポートしていないKerberosの旧バージョンを実装している製品にはセキュリティ上の脆弱性が存在します。
参考文献 ↑ 「Kerberos 5 Release 1.22.2」 。 2026年 1月30日 取得 。 ↑ RFC 4556、要約。 ↑ 「Kerberos認証」 .IONOS デジタルガイド. 2022年8月25日 取得 . ↑ Steiner, Jennifer G.; Geer, Daniel E. (1988年7月21日). Athena環境におけるネットワークサービス . 1988年冬季Usenixカンファレンス議事録. CiteSeerX 10.1.1.31.8727 . ↑ シュタイナー、ジェニファー・G.、ニューマン、クリフォード、シラー、ジェフリー・I. (1988年2月)。 Kerberos : オープンネットワークシステムのための 認証サービス 。1988 年冬季 USENIX 会議議事録。CiteSeerX 10.1.1.112.9002。S2CID 222257682 。 ↑ Elizabeth D. Zwicky; Simon Cooper; D. Brent (2000年6月26日). Building Internet Firewalls: Internet and Web Security . O'Reilly. ISBN 9781565928718 。↑ Neuman, C.; Kohl, J. (1993). "The Kerberos Network Authentication Service (V5)" . doi : 10.17487/RFC1510 . 2016年8月21日にオリジナルから アーカイブされました。 ↑ Neuman, Clifford; Hartman, Sam; Yu, Tom; Raeburn, Kenneth (2005). "The Kerberos Network Authentication Service (V5)" . doi : 10.17487/RFC4120 . 2016年8月21日にオリジナルから アーカイブ済み。 1 2 3 「Kerberos認証とは?」 。Microsoft TechNet。2009年10月8日 。2016年12月20日にオリジナルから アーカイブされました。 ↑ Setspn - Windows CMD - SS64.com ↑ Setspn | Microsoft Docs ↑ Tom, Yu; Love, Astrand (2012). "Kerberos における DES、RC4-HMAC-EXP、およびその他の脆弱な暗号アルゴリズムの非推奨化" . doi : 10.17487/RFC6649 . 2015-10-27 のオリジナルから アーカイブ済み。 一般的な ガーマン、ジェイソン(2003)。ケルベロス:決定版ガイド 。オライリー・メディア社 。ISBN 978-0-596-00403-3 。 マーク・プロール。コブラス、ダニエル(2022年4月14日)。Kerberos: gemischten Linux/Windows-Umgebungen でのシングル サインオン (ドイツ語)。 dpunkt.verlag。 p. 7.ISBN 9783960888512 。 Lynn Root (2013年5月30日) (2013年4月2日) 「5歳児にもわかるように説明して:ケルベロス」 Lynn Rootのブログ 。 {{cite web}}: CS1 maint: 数値名: 著者リスト (リンク)Microsoft TechNet (2012年7月18日)。「Kerberosプロトコルの基本概念」。MSDNライブラリ 。 リソースキットチーム (2021 年 1 月 7 日)。「Microsoft Kerberos (Windows)」。MSDN ライブラリ 。 B.クリフォード・ニューマン、セオドア・ツォー( 1994年9 月 )。 「Kerberos:コンピュータネットワークの認証サービス」。IEEE Communications。32 (9 ) : 33–8。Bibcode : 1994IComM..32i..33N。doi : 10.1109/35.312841。S2CID 45031265 。 Kohl, John T.; Neuman, B. Clifford; Ts'o, Theodore Y. (1994). 「Kerberos認証システムの進化」。Brazier , FMT ; Johansen , D (編) 『分散 オープンシステム』所収 。IEEE Computer Society Press、pp. 78–94。CiteSeerX 10.1.1.120.944。ISBN 978-0-8186-4292-0 OCLC 1191406172。 「Kerberosの概要:オープンネットワークシステム向け認証サービス」。Cisco Systems。2006年1月19日。 2012年 8月15日 取得 。 「Kerberos認証の仕組み」 learn-networking.com。2008年1月28日。2015年4月2日にオリジナルからアーカイブ済み。 2012年 8月15日 取得 。 「Kerberos認証とは?:ログオンと認証」。Microsoft TechNet。2009年10月8日。 2016年 12月7日 取得 。 RFC RFC 1510 Kerberosネットワーク認証サービス(V5)[廃止] RFC 1964 Kerberosバージョン5 GSS-APIメカニズム RFC 3961 Kerberos 5 の暗号化およびチェックサム仕様 RFC 3962 Kerberos 5 用の高度暗号化標準 (AES) 暗号化 RFC 4120 Kerberosネットワーク認証サービス(V5)[現行] RFC 4121 Kerberosバージョン5汎用セキュリティサービスアプリケーションプログラミングインターフェース(GSS-API)メカニズム:バージョン2 RFC 4537 Kerberos暗号システムネゴシエーション拡張機能 RFC 4556 Kerberosにおける初期認証のための公開鍵暗号方式(PKINIT) RFC 4557オンライン証明書ステータスプロトコル (OCSP) Kerberos における初期認証のための公開鍵暗号方式のサポート (PKINIT) RFC 4757 Microsoft Windowsで使用されるRC4-HMAC Kerberos暗号化タイプ[廃止] RFC 5021拡張Kerberosバージョン5キー配布センター(KDC)TCP経由の交換 RFC 5349 Kerberosにおける初期認証のための公開鍵暗号方式(PKINIT)に対する楕円曲線暗号(ECC)のサポート RFC 5868 Kerberosのクロスレルム操作に関する問題提起 RFC 5896汎用セキュリティサービスアプリケーションプログラミングインターフェース(GSS-API):ポリシーで承認されている場合は委任する RFC 6111 Kerberos命名規則に関する追加制約 RFC 6112 Kerberosの匿名性サポート RFC 6113 Kerberos事前認証のための汎用フレームワーク RFC 6251トランスポート層セキュリティ(TLS)プロトコル上でのKerberosバージョン5の使用 RFC 6448 Kerberos 5 KRB-CREDメッセージの暗号化されていない形式 RFC 6542 Kerberosバージョン5汎用セキュリティサービスアプリケーションプログラミングインターフェース(GSS-API)チャネルバインディングハッシュアジリティ RFC 6560ワンタイムパスワード(OTP)による事前認証 RFC 6649 KerberosにおけるDES、RC4-HMAC-EXP、およびその他の脆弱な暗号アルゴリズムの非推奨化 RFC 6784 DHCPv6 用 Kerberos オプション RFC 6803 Kerberos 5 用 Camellia 暗号化 RFC 6806 Kerberosプリンシパル名の正規化とクロスレルム参照 RFC 6880 Kerberosバージョン5の情報モデル RFC 8009 Kerberos 5 用の HMAC-SHA2 を使用した AES 暗号化
さらに読む 「タニー法に基づき、マイクロソフトと司法省の間で提案された和解案に対するノベル社のコメント」。民事訴訟番号98-1232(CKK):アメリカ合衆国対マイクロソフト社 。司法省。2002年1月29日。 2012年 8月15日 取得 。 ブライアント、ビル(1988年2月)。「認証システムの設計:4つの場面による対話」。Kerberosの設計がどのように進化してきたかを描いたユーモラスな 劇。MIT 。 ホーンスタイン、ケン(2000年8月18日)。「Kerberos FAQ、v2.0」。海軍長官 。2002年12月3日のオリジナルからアーカイブ。2012年8月15日 取得。 Bellovin, SM; Merritt, M. (1990年10月1日). 「Kerberos認証システムの限界」 . ACM SIGCOMM Computer Communication Review . 20 (5): 119–132 . doi : 10.1145/381906.381946 . S2CID 8014806 . Neuman, BC; Ts'o, T. (1994年9月)「Kerberos: コンピュータネットワークのための認証サービス」IEEE Communications Magazine . 32 (9): 33–38 . Bibcode : 1994IComM..32i..33N . doi : 10.1109/35.312841 . S2CID 45031265 . ベラ、ジャンパオロ;ポールソン、ローレンス C. (1998)。「Kerberos バージョン IV:秘密保持目標の帰納的分析」。コンピュータ セキュリティ — ESORICS 98。Lecture Notes in Computer Science。第 1485 巻、 361~ 375 ページ。doi : 10.1007 / BFb0055875。ISBN 978-3-540-65004-1 。 Abdelmajid, NT; Hossain, MA; Shepherd, S.; Mahmoud, K. (2010). 「改良型BANロジックを用いたKerberosセキュリティプロトコル評価の改善」. 2010年第10回IEEE国際コンピュータ・情報技術会議 . pp. 1610–1615 . doi : 10.1109/CIT.2010.285 . ISBN 978-1-4244-7547-6 . S2CID 6246388 .
外部リンク Kerberosコンソーシアム MIT ウェブサイトのKerberosページIETFの ウェブサイトにあるKerberosワーキンググループKerberosシーケンス図( 2015年3月26日、 Wayback Machine に アーカイブ済み) ヘイムダル/ケルベロスの実装