汎用セキュリティ サービス アプリケーション プログラミング インターフェイス( GSSAPI、GSS-APIとも呼ばれる) は、プログラムがセキュリティサービスにアクセスするためのアプリケーション プログラミング インターフェイスです。
GSSAPI は、2005 年時点で使用されている多くの類似しているが互換性のないセキュリティ サービスの問題に対処する IETF標準です。
操作
GSSAPI自体はセキュリティを提供しません。代わりに、セキュリティサービスベンダーがGSSAPI実装を提供します。通常、これは自社のセキュリティソフトウェアにインストールされるライブラリの形で提供されます。これらのライブラリは、アプリケーション開発者にGSSAPI互換のインターフェースを提供し、ベンダーに依存しないGSSAPIのみを使用するようにアプリケーションを作成できます。セキュリティ実装を置き換える必要が生じても、アプリケーションを書き直す必要はありません
GSSAPIアプリケーションの決定的な特徴は、実装の詳細を上位アプリケーションから隠蔽する不透明なメッセージ(トークン)の交換です。アプリケーションのクライアント側とサーバー側は、それぞれのGSSAPI実装から提供されたトークンを伝達するように記述されます。GSSAPIトークンは通常、そのメカニズムが固有のメッセージセキュリティを提供するため、安全でないネットワーク上でも転送可能です。一定数のトークンが交換された後、両端のGSSAPI実装は、セキュリティコンテキストが確立されたことをローカルアプリケーションに通知します。
セキュリティコンテキストが確立されると、機密性の高いアプリケーションメッセージをGSSAPIでラップ(暗号化)し、クライアントとサーバー間の安全な通信を実現できます。GSSAPIラップによって保証される典型的な保護機能には、機密性(秘匿性)と整合性(真正性)が含まれます。GSSAPIは、リモートユーザーまたはリモートホストのIDに関するローカルな保証も提供します。
GSSAPIは約45の手続き呼び出しを記述します。重要なものには以下が含まれます。
- GSS_Acquire_cred
- ユーザーの身元証明(多くの場合、秘密の暗号鍵)を取得します
- GSS_Import_name
- ユーザー名またはホスト名をセキュリティエンティティを識別する形式に変換します
- GSS_Init_sec_context
- サーバーに送信するクライアントトークン(通常はチャレンジ)を生成します
- GSS_Accept_sec_context
- GSS_Init_sec_contextからのトークンを処理し、返すレスポンストークンを生成することができる。
- GSS_Wrap
- アプリケーションデータを安全なメッセージトークン(通常は暗号化)に変換します
- GSS_Unwrap
- セキュアメッセージトークンをアプリケーションデータに戻します
GSSAPIはC言語(RFC 2744)向けに標準化されています。JavaはGSSAPI [ 1 ]を JGSS [ 2 ] (Java Generic Security Services Application Program Interface)として実装しています。[ 3 ]
GSSAPI には次のような制限があります。
- 認証のみを標準化し、認可は標準化しない。
- クライアントサーバーアーキテクチャを想定しています。
GSSAPI には、新しいセキュリティ メカニズムを予測して、元のアプリケーションが構築されたときには存在しなかった新しいメカニズムを検出して使用できる ネゴシエーション疑似メカニズムであるSPNEGOが含まれています。
可用性
様々な言語がGSSAPIを実装しています。Javaはこれらの機能を標準ライブラリパッケージで提供していますorg.ietf.jgss.*。[ 4 ]
Kerberosとの関係
現在使用されているGSSAPIメカニズムの実装はKerberosです。GSSAPIとは異なり、Kerberos APIは標準化されておらず、既存の様々な実装では互換性のないAPIが使用されています。GSSAPIにより、Kerberos実装のAPI互換性が実現されます
関連技術
主要な概念
- 名前
- セキュリティプリンシパル(ユーザーまたはサービスプログラム)にラベルを付けるバイナリ文字列。アクセス制御とアイデンティティを参照してください。たとえば、Kerberosでは、ユーザーにはuser@REALM 、プログラムにはservice/hostname@REALMのような名前を使用します
- 認証情報
- 本人であることを証明する情報。指定された本人として行動する主体によって使用されます。認証情報には通常、秘密の暗号鍵が含まれます
- コンテキスト
- 認証プロトコルの一方の端の状態。安全なチャネルを構成するために使用できるメッセージ保護サービスを提供する場合があります
- トークン
- 初期認証プロトコルの一部として(コンテキストレベルトークン)、または保護された通信の一部として(メッセージごとのトークン)交換される不透明なメッセージ
- メカニズム
- 実際の名前、トークン、および資格情報を提供する基盤となるGSSAPI実装。既知のメカニズムには、Kerberos、NTLM、分散コンピューティング環境(DCE)、SESAME、SPKM、LIPKEYなどがあります
- イニシエーター/アクセプター
- 最初のトークンを送信するピアがイニシエーター、もう一方のピアがアクセプターです。一般的に、クライアントプログラムがイニシエーター、サーバーがアクセプターとなります。
歴史
- 1991年7月:IETF共通認証技術(CAT)ワーキンググループがアトランタで開催され、ジョン・リンが主導した
- 1993 年 9 月: GSSAPI バージョン 1 (RFC 1508、RFC 1509)
- 1995年5月: Windows NT 3.51がリリースされ、SSPIが含まれるようになった。
- 1996年6月: GSSAPIのKerberosメカニズム (RFC 1964)
- 1997 年 1 月: GSSAPI バージョン 2 (RFC 2078)
- 1997年10月: SASLが公開され、GSSAPIメカニズムが含まれる(RFC 2222)
- 2000 年 1 月: GSSAPI バージョン 2 アップデート 1 (RFC 2743、RFC 2744)
- 2004年8月: KITTENワーキンググループがCAT活動を継続するために会合
- 2006年5月: Secure ShellのGSSAPI使用が標準化(RFC 4462)
参照
参考文献
- ^ 「JSR-000072 汎用セキュリティサービスAPI仕様0.1」 2001年6月15日。2015年10月7日閲覧
- ^マルク、シェーネフェルト (2010).分散 Java コンポーネントにおけるセキュリティ アンチパターンのリファクタリング。オットー フリードリヒ大学バンベルクの情報に関するシュリフテン。 Vol. 5. バンベルク大学出版局。 p. 179.ISBN 97839235076892015年10月7日閲覧。JGSS
はGSSAPIのJava実装です
- ^フィッシャー、マリーナ、シャルマ、ソヌ、レイ、モロニー、ローレンス (2006). 『Java EEと.NETの相互運用性:統合戦略、パターン、ベストプラクティス』 プレンティス・ホール・プロフェッショナル. ISBN 97801327157062015年10月7日閲覧。
シングルサインオンとデータ暗号化の構成要素であるKerberosを含む、さまざまな基盤となるセキュリティメカニズム上のセキュリティサービスへの均一なアクセスを実現するJava Generic Security Services Application Program Interface (JGSS) API
- ^ "org.ietf.jgss (Java SE 25 & JDK 25)" . docs.oracle.com . Oracle Corporation . 2025年10月10日閲覧。
外部リンク
- RFC 2743汎用セキュリティサービスAPIバージョン2アップデート1
- RFC 2744汎用セキュリティサービス API バージョン 2: C バインディング
- RFC 1964 Kerberos 5 GSS-API メカニズム
- RFC 4121 Kerberos 5 GSS-API メカニズム: バージョン 2
- RFC 4178シンプルで保護された GSS-API ネゴシエーション メカニズム (SPNEGO)
- RFC 2025シンプル公開鍵 GSS-API メカニズム (SPKM)
- RFC 2847 LIPKEY - SPKM を使用した低インフラストラクチャ公開鍵メカニズム
- 「次世代共通認証技術(キトゥン)」インターネット技術タスクフォース。2013年9月。
- Sun Microsystems (2002). 「GSS-API プログラミングガイド — Sun Solaris 9」 . Oracle Corporation .
- Oracle Corporation (2020). 「GSS-API を使用するアプリケーションの作成 — Oracle Solaris 11.4 セキュリティ開発者ガイド」