(57)【要約】外部コードのためのセキリティ機構を提供する方法。サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；サーバ識別子（NAF-Id）及びセキュリティトークンを決定することと；を含む。前記方法はさらに、前記サーバ識別子（NAF-Id）に基づいてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；を含む。前記方法はさらに、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することを含む。【選択図】図２
2015501613.tif 000002
【特許請求の範囲】
【請求項１】
外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む、方法。
【請求項２】
第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて前記セキュリティトークンを決定することをさらに含む、請求項1に記載の方法。
【請求項３】
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）の検証のために、前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）をアプリケーションサーバへ送信することをさらに含む、請求項2に記載の方法。
【請求項４】
前記送信することはさらに、前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を含む応答外部コードを送信することを含む、請求項3に記載の方法。
【請求項５】
請求項1に記載の方法であって、
装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）及び前記セキュリティトークンを決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
をさらに含む、方法。
【請求項６】
上記請求項のいずれかに記載の方法であって、
装置のブラウザアプリケーションとアプリケーションサーバとの間にトランスポート層セキュリティ（TLS）トンネルを確立することと；
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含む前記サーバ識別子（NAF-Id）を決定することと；
をさらに含む、方法。
【請求項７】
前記セキュリティプロトコル識別子は、トランスポート層セキュリティ（TLS）の暗号文を用いて形成される、請求項６に記載の方法。
【請求項８】
鍵導出機能を用いて、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することを更に含む、上記請求項のいずれかに記載の方法。
【請求項９】
前記外部コードはJavaScriptコードを含む、上記請求項のいずれかに記載の方法。
【請求項１０】
トランスポート層セキュリティ（TLS）マスタ鍵を用いて前記セキュリティトークンを決定することを含む、請求項1に記載の方法。
【請求項１１】
少なくとも一つのプロセッサと、コンピュータプログラムコードを含む少なくとも一つのメモリとを備える装置であって、前記少なくとも一つのメモリ及び前記コンピュータプログラムコードは、前記少なくとも一つのプロセッサを用いて、前記装置に少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを含む、装置。
【請求項１２】
前記少なくとも一つのメモリ及び前記プログラムコードが、前記少なくとも一つのプロセッサを用いて、前記装置に、少なくとも、
第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて前記セキュリティトークンを決定させるようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記少なくとも一つのメモリ及び前記プログラムコードが、前記少なくとも一つのプロセッサを用いて、前記装置に、少なくとも、
前記装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）を決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
を遂行させるようにさらに構成される、請求項１１又は１２に記載の装置。
【請求項１４】
前記少なくとも一つのメモリ及び前記プログラムコードが、前記少なくとも一つのプロセッサを用いて、前記装置に、少なくとも、
トランスポート層セキュリティ（TLS）マスタ鍵を用いて前記セキュリティトークンを決定させるように構成される、請求項11から13のいずれかに記載の装置。
【請求項１５】
コンピュータ可読媒体に具現化されるコンピュータプログラムであって、装置の少なくとも一つのプロセッサにより実行されると、前記装置に：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定することと；
前記サーバ識別子（NAF-Id）に基づいてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを含む、コンピュータプログラム。
【請求項１６】
外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
セキュリティトークンを決定することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む、方法。
【請求項１７】
請求項16に記載の方法であって、
ブートストラップ・サーバ機能（BSF）から前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含む前記サーバ識別子（NAF-Id）を決定することと；
を含む、方法。
【請求項１８】
請求項16又は17に記載の方法であって、
外部コード固有ブートストラップ鍵（Ks_js_NAF）を受け取ることと；
前記生成した外部コード固有ブートストラップ鍵（Ks_js_NAF）と、前記受け取った外部コード固有ブートストラップ鍵（Ks_js_NAF）とを比較することにより、前記外部コードの前記セキュリティ機構のために、外部コード固有ブートストラップ鍵（Ks_js_NAF）を検証することと；
を含む．方法。
【請求項１９】
アプリケーションサーバであって、
少なくとも一つのプロセッサと、コンピュータプログラムコードを含む少なくとも一つのメモリとを備えるアプリケーションサーバであって、前記少なくとも一つのメモリ及び前記コンピュータプログラムコードが、前記少なくとも一つのプロセッサを用いて、前記アプリケーションサーバに少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成される、アプリケーションサーバ。
【請求項２０】
コンピュータ可読媒体に具現化されるコンピュータプログラムであって、アプリケーションサーバの少なくとも一つのプロセッサにより実行されると、前記アプリケーションサーバに：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションWebサーバから提供される外部コードのためのセキュリティ機構の分野に関する。限定するわけではないが、本発明は特に、サーバや、電話のブラウザ、オペレーティングシステムが、セルラベースの信用情報を、JavaScript（登録商標）のような外部コードを通じてブラウザから安全に利用することを、どのように可能にしうるかに関する。
【背景技術】
【０００２】
現在では、世界中で多くのWebページ（例えばHTMLドキュメント）が利用可能であり、テキストや非テキストの様々なコンテンツを提供している。また、通信の分野、特に無線電話通信の分野が急速に拡大している。この技術の進展は、PDAやラップトップコンピュータ、携帯電話やタブレットのような、手で掴めるような小さな電子機器が、パーソナルコンピュータ（PC）がPC用ブラウザを使って接続するものと同じ情報ソース（例えばWebサーバやデータベース）に接続することを可能にした。ハンドヘルドデバイスにインターネットからのコンテンツを表示する、小型デバイス用クライアントブラウザがいくつか利用可能である。
【０００３】
HTMLドキュメントのようなWebコンテンツには、JavaScriptなどのスクリプト言語で記述されたスクリプトコマンドが使われている。PC用ブラウザで実行されるスクリプトコマンドは、PC用ブラウザのユーザが利用可能な情報コンテンツを生成しうる。
【０００４】
マルチメディア対応の最新の移動端末（マルチメディア電話）は、アプリケーション開発者にオープンな開発プラットフォームを提供し、マルチメディア環境のための新たなサービスやアプリケーションを、個々のアプリケーション開発者が設計することを可能にしている。そしてユーザは、新しいアプリケーションやサービスを自身の携帯端末にダウンロードし、使用するだろう。従って、全体のセキュリティのためには、携帯端末のセキュリティ管理モジュールと、アプリケーション・Webサーバとの間の相互作用が重要となる。外部のソースからリトリーブされる、JavaScriptのような外部コードを含むWebコンテンツのために、携帯端末のセキュリティ管理モジュールを使用する、優れたソリューションが求められている。
【発明の概要】
【０００５】
本発明の第1の具現化によれば、次のような方法が提供される。この方法は、外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む。
【０００６】
ある具現化形態において、前記方法は、第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて前記セキュリティトークンを決定することをさらに含む。前記方法は、さらに、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）の検証のために、前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）をアプリケーションサーバへ送信することを含んでもよい。前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を含む応答外部コードが送信されてもよい。
【０００７】
ある具現化形態において、前記方法は更に、
装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）及び前記セキュリティトークンを決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
を含んでもよい。
【０００８】
装置のブラウザアプリケーションとアプリケーションサーバとの間にトランスポート層セキュリティ（TLS）トンネルが確立されてもよい。ドメイン名（FQDN）及びセキリュティプロトコル識別子を含むサーバ識別子（NAF-Id）が決定されてもよい。セキュリティプロトコル識別子はトランスポート層セキュリティ（TLS）の暗号文を用いて形成されてもよい。
【０００９】
ある実施形態において、前記方法は、鍵導出機能を用いて、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することを更に含む。前記外部コードはJavaScriptコードを含んでもよい。
【００１０】
ある実施形態において、前記方法は、トランスポート層セキュリティ（TLS）マスタ鍵を用いて前記セキュリティトークンを決定することを含む。
【００１１】
本発明の第2の具現化によれば、次のような装置が提供される。この装置は、
少なくとも一つのプロセッサと；
コンピュータプログラムコードを含む少なくとも一つのメモリとを備える装置であって、前記少なくとも一つのメモリ及び前記コンピュータプログラムコードが、前記少なくとも一つのプロセッサを用いて、前記装置に少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードのセキュリティ機構のために使用することと；
を遂行させるように構成される。
【００１２】
前記セキュリティトークンは、第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて決定されてもよい。
【００１３】
ある具現化形態において、前記少なくとも一つのメモリ及び前記プログラムコードは、前記少なくとも一つのプロセッサを用いて、前記装置に少なくとも、
前記装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）を決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
を遂行させるようにさらに構成される。
【００１４】
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含ませてサーバ識別子（NAF-Id）が決定されてもよい。
【００１５】
ある具現化形態において、前記セキュリティトークンは、トランスポート層セキュリティ（TLS）マスタ鍵を用いて決定されてもよい。
【００１６】
本発明の第3の具現化によれば、次のようなコンピュータプログラムが提供される。このコンピュータプログラムは、コンピュータ可読媒体に具現化されるコンピュータプログラムであって、装置の少なくとも一つのプロセッサにより実行されると、前記装置に：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを含む。
【００１７】
本発明の第4の具現化によれば、次のような方法が提供される。この方法は、外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
セキュリティトークンを決定することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む。
【００１８】
ある具現化形態において、前記方法は更に、
ブートストラップ・サーバ機能（BSF）から前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含む前記サーバ識別子（NAF-Id）を決定することと；
を含む。    
【００１９】
ある具現化形態において、前記方法は更に、
外部コード固有ブートストラップ鍵（Ks_js_NAF）を受け取ることと；
前記外部コードの前記セキュリティ機構のために、前記生成した外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記受け取った外部コード固有ブートストラップ鍵（Ks_js_NAF）と比較することにより検証することと；
を含む。
【００２０】
本発明の第5の具現化によれば、次のようなアプリケーションサーバが提供される。このアプリケーションサーバは、
少なくとも一つのプロセッサと；
コンピュータプログラムコードを含む少なくとも一つのメモリとを備えるアプリケーションサーバであって、前記少なくとも一つのメモリ及び前記コンピュータプログラムコードは、前記少なくとも一つのプロセッサを用いて、前記アプリケーションサーバに少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成される。
【００２１】
ある具現化形態において、前記少なくとも一つのメモリ及び前記プログラムコードは、前記少なくとも一つのプロセッサを用いて、前記アプリケーションサーバに、少なくとも、
ブートストラップ・サーバ機能（BSF）から要求することにより、サーバ固有ブートストラップ鍵（Ks_NAF）を少なくとも生成させるようにさらに構成される。
【００２２】
本発明の第6の具現化によれば、次のようなコンピュータプログラムが提供される。このコンピュータプログラムは、コンピュータ可読媒体に具現化されるコンピュータプログラムであって、アプリケーションサーバの少なくとも一つのプロセッサにより実行されると、前記アプリケーションサーバに：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成される。
【００２３】
上述のメモリの媒体は、データディスクやディスケット、光学記憶装置、磁気記憶装置、ホログラフィック記憶装置、光磁気記憶装置、相変化メモリ、抵抗変化型ランダムアクセスメモリ、磁気ランダムアクセスメモリ、固体電解質メモリ、強誘電体メモリ、有機メモリ、高分子メモリ等のデジタルデータ記憶装置を有してもよい。これらのメモリ媒体は、記憶以外の機能は事実上備えていないようなデバイスとして実装されてもよく、または、様々な機能を有する装置の一部として実装されてもよい。例えば、限定するわけではないが、コンピュータやチップセット、電子機器のサブアセンブリのメモリとして実装されてもよい。
【００２４】
本発明の具現化の非限定的ないくつかの例を示してきたが、これらの具現化形態は、本発明の実施において利用されうる特徴やステップをいくつか選択して説明したものに過ぎない。いくつかの具現化形態は、本発明の例示的な側面のあるものを参照してのみ示されるかもしれない。ある実施形態は他の例示的な具現化例にも適用されうるものである。
【図面の簡単な説明】
【００２５】
以下の添付図面を例として参照しつつ本発明が説明される。
【図１】本発明の様々な実施形態が適用されうるシステムアーキテクチャの詳細を示している。
【図２】本発明の様々な実施形態が適用されうるシステム要素の詳細を示している。
【図３】本発明のある実施形態に従う信号の流れを示している。
【図４】本発明の様々な実施形態が適用されうるアプリケーションサーバの例示的ブロック図である。
【図５】本発明の様々な実施形態が適用されうるユーザ装置の例示的ブロック図である。
【図６】本発明のある例示的実施形態に従うユーザ装置の動作を示す流れ図である。
【図７】本発明のある例示的実施形態に従うアプリケーションサーバの動作を示す流れ図である。
【詳細説明】
【００２６】
以下の説明において、似たような符号は似たような要素を表す。
【００２７】
本発明の多くの実施形態は、3GPPにおいてピア認証及び通信セキュリティのために策定された、GAA（Generic Authentication Architecture；汎用認証アーキテクチャ）及びGBA（Generic Bootstrapping Architecture；汎用ブートストラップ・アーキテクチャ）の機能を取り入れている。GAA/GBAの変形版は、OMA（Open Mobile Alliance：オープン・モバイル・アライアンス）により標準化されている。GAA/GBAは、移動通信アルゴリズムである、3GPPのAKA（Authentication and Key Agreement；認証および鍵管理）に基づいている。GAA/GBA手続の元々の目的は、ユーザ装置又は加入者を認証することである。本発明の様々な実施形態では、GAA/GBAが、アプリケーションサーバ，移動端末ブラウザ，移動端末のオペレーティングシステムの間のセキュリティを向上させるために使用される。ある実施形態では、Webページ等でサーバからユーザ装置にダウンロードされる外部コードを通じて、ブラウザから、セルラベースの信用情報を安全に使用することが可能にされる。外部コードは、例えばJavaScriptコードを含んでもよい。
【００２８】
アプリケーションサーバを認証するためにGAA/GBAの認証メカニズムを用いることにより達成されうる利点の一つは、もしそれがなければ必要とされうる、高価な公開鍵インフラを用いる必要がなくなりうることである。GAA/GBAは様々な目的のためのイネーブラであり、例えばモバイルTVやプレゼンスのために使用されている。既存のメカニズム及び関連インフラを利用することにより、必要とされる管理コストや投資額を抑えうるという利益を得られうる。
【００２９】
以下の説明において、ユーザ装置やアプリケーションサーバ、ブートストラッッピングサーバ、汎用認証手続のような用語は、本発明の様々な実施形態に関連する様々な要素やメカニズムを表現するために使用される。また、説明されているものと同じような機能を提供するために、明示的に記載されている要素やメカニズムに加えて、またはこれらに代えて、別の要素やメカニズムが使用されることがあることも留意されたい。
【００３０】
本発明の様々な実施形態において、アプリケーションサーバは、ユーザにWebサービスを提供するWebサーバであることができる。このアプリケーションサーバは、ネットワーク事業者によって信頼されたものではないかもしれない。またこのアプリケーションサーバは、ネットワーク・アプリケーション機能（NAF）を備えていてもよい。
【００３１】
図1は、本発明の様々な実施形態が適用されうるシステムアーキテクチャ100の詳細を示している。このシステムは、ユーザ装置（UE）110のようなユーザ装置と、Webサービスを提供するアプリケーションサーバ120とを有する。さらにこのシステムは、ブートストラップ・サーバ機能（BSF）130および加入者データベース140を有する。加入者データベース140は、例えば、ホーム加入者サーバ（HSS； Home Subscriber Server）や、ホーム・ロケーション・レジスタ（HLR；Home Location Register）であることができる。装置110はさらに、GBA機能ブロック150を備え、これはBSFと協働するように構成される。また装置110は、ネットワーク・アプリケーション機能（NAF）クライアント160を備え、これはアプリケーションサーバ120と協働するように構成される。NAFクライアントは、例えばブラウザを備えてもよい。GAA/GBAにおいて、アプリケーションサーバは、ネットワーク・アプリケーション機能（NAF）と称される場合がある。またGAA/GBAにおいて、BSF130と加入者データベース140との間にはZhインタフェースが定義されている。また、GSF130とアプリケーションサーバ120との間にはZnインタフェースが、BSF130とユーザ装置110との間にはUbインタフェースが、それぞれ定義されている。さらに、HLRが配備されている場合、BSF130とHLR140との間には、Zh'インタフェースが設けられていてもよい。加えて、加入者情報をBSFに提供する加入者情報ロケータ機能（SLF；Subscription Locator Function）へのインタフェースが設けられていてもよい。
【００３２】
アプリケーションサーバ120は、BSF130や加入者データベース140とは異なる事業者によって管理されていてもよい。また、これら全てが同じ事業者（例えば通信ネットワーク事業者）によって管理されていてもよい。
【００３３】
なお、システム100は、紹介されているもの以外にも様々な要素を有していてもよいし、通常は有している。それらは明確性の向上のために図示されていないだけである。
【００３４】
ある実施形態において、汎用BSF（汎用ブートストラップ・サーバ機能）130及びUE110は、AKAプロトコルを用いて互いに認証を行い、後にUE110とサーバ120のNAFとの間で使用される鍵について合意を行う。NAFは、サービスを提供するサーバ120に設けられる機能モジュールである。さらに、レガシーなスマートカードが用いられている場合、TLS（トランスポート層セキュリティ）及びレガシー認証法が用いられてもよい。GBAは、HTTP DigestやSIP Digestのような、他の認証メカニズムを利用してもよい。サーバ120のNAFモジュールの多くの機能は、サービス／ユーザ管理（例えばサービスへの加入及び脱退）や、サービス鍵管理（例えばサービス鍵の生成や配信）に関するものである。BSF130は、鍵導出手続（key derivation procedure）を用いることにより、サーバ120の特定のNAFへの鍵情報の適用を制限しうる。この鍵導出メカニズムは、当該鍵情報の有効期間の間に、複数のNAFと共に使用されうる。鍵情報の有効期間はBSF130のローカル・ポリシに従って設定される。BSF130は、必要とされる認証情報やセキュリティ情報、加入者プロファイル情報を、HSS140からフェッチしうるようにされる。レガシー・ネットワークでは、BSF130は、HSS140ではなくHLRとやりとりを行うかもしれない。
【００３５】
ここで、例えばJavaScript等のスクリプトコードのような外部コードからGBAを使用することについて、例えばネットワーク事業者などは、懸念するかもしれない。外部コードはユーザ装置へダウンロードされうるが、GBAモジュールの秘密情報が、Webサーバへそのまま送信されることについて懸念されるかもしれない。
【００３６】
図2は、本発明の様々な実施形態が適用されうるシステム要素の詳細を示している。外部コードは、装置にダウンロードされるどのようなコードを含んでもよく、おそらくローカルで実行されうる。外部コードは、例えばプラウザやヴィジェットのような、インストールされたアプリケーション内で実行される。外部コードの一例はJavaScriptコードである。簡単のために、以下に紹介する例示的実施形態はJavaScriptを使用している。しかし、本発明の実施形態はJavaScriptに限定されるものではなく、様々な外部コードを使用するものが含まれる。
【００３７】
JavaScriptはクライアントサイドJavaScriptの形態を有していてもよく、UE110によって処理されてもよい。動作しているJavaScript 280は、Webブラウザ210の一部として実装され、ユーザインタフェースの強化やダイナミックなWebサイトを提供してもよい。これは、ホスト環境において、計算オブジェクトへのプログラム的なアクセスを可能にする。JavaScript 280はWebページ外のアプリケーションによって使用されてもよい。例えば、ドキュメントやサイト固有のブラウザ、デスクトップヴィジェット等で使用されてもよい。JavaScriptはまた、サーバ側のWebアプリケーションで使用されてもよい。アプリケーション・プログラミング・インタフェース（API）は、特定のルール（コード）及び仕様のセットであり、ソフトウェアプログラムはAPIに従って互いにやりとりを行うことができる。APIは、様々なソフトウェアプログラムの間のインタフェースとしての役割を果たし、これらの間のやりとりを容易にする。JavaScript 280のために、GBA APIが設けられてもよい。これは、図2においてJS-GBA-APIとして符号220によって示されている。UE110のオペレーティングシステム（OS）230は、UE110のセキュリティ管理に関与するGBAモジュール240を有していてもよい。UE110はまた、セルラネットワークにおいて移動端末により使用されるスマートカードであるUICC（Universal Integrated Circuit Card）270を備えていてもよい。UICC 270は,全ての個人用データについて整合性や安全性を保証する。またUICC 270は通常、アプリケーションを有している。UICCスマートカードはまた、CPUやROM、RAM、EEPROM、I/O回路を含んでもよい。
【００３８】
UE110のブラウザ210は、例えばWebコンテンツのためのアプリケーションサービスサーバとして動作しているNAFサーバ120と通信を行ってもよい。NAFサーバ120はGBA NAFモジュール250やサーバアプリケーション260等を有していてもよい。
【００３９】
実施形態によっては、ユーザ装置セキュリティ管理モジュールと、アプリケーションWebサーバとの相互作用が行われる。ここで、ユーザ装置セキュリティ管理モジュールはGBAモジュールであり、OSの一部であってもよい。セキュリティ機構は、外部ソース120から送られてきたJavaScript 280と共にブラウザ210がセキュリティ管理モジュール240を使用する際に、安全に使用することを可能にする。
【００４０】
本明細書において、"GBA鍵"との用語は、Ksや、Ksから導出されたNAF個別鍵を表すことが意図されている。 本明細書において、"NAF個別鍵"（NAF specific key）との用語は、（GBA_Uのコンテキストにおける）Ks_ext_NAFやKs_int_NAF、また、（GBA_MEのコンテキストにおける）Ks_NAF、更にこれらの鍵から導出される鍵を表すことが意図されている。Ks_ext_NAFはKs_NAFと同じ鍵であり、すなわち、MEで使用されるNAF個別鍵である。Ks_ext_NAFは、GBA_UコンテキストにおいてUICCで導出されMEへ渡される。Ks_NAFは、GBA_MEコンテキストにおいてMEで導出される。これらは、コンテキストに関わらず、いずれもMEで同様に用いられる。Ks_int_NAFはUICCで導出され、UICCで使用される。Ks_int_NAFはUICCの外に出されることはない。Ks_js_NAF鍵というとき、それは、JavaScriptコード及びアプリケーションサーバがKs_NAFまたはKs_ext_NAFの代わりに使用するJavaScript鍵のことをいう。
【００４１】
ある実施形態において、UIとNAFとの間の通信が開始できるようになる前に、UE及びNAFはまず、GBAを使用するか否かについて合意しなければならない。UEがNAFとのやりとりを希望し、しかしそのNAFが、GBAを利用して取得する共有鍵を必要とするかどうかを知らない場合、UEは、更なる指示を仰ぐために、NAFに連絡しなければならない。
【００４２】
図3は、本発明のある実施形態に従う信号の流れを示している。送受信されるメッセージや必要な項目の全てが表示されている訳ではなく、メッセージの順番は図示されたものでは無い場合もあり、さらに多くのメッセージが送受信される場合もある。図3に描かれるメッセージや項目は限定的なものではない。
【００４３】
UE等のユーザ装置は、基準点（reference point）Uaを通じて、NAF等のアプリケーションサーバとの通信を開始してもよい。この通信の開始は、GBAに関するパラメータなしで行われてもよい。NAFが、GBAによって得られる共有鍵を使用することを要求するものであるが、UEからの要求がGBAに関するパラメータを含んでいない場合、NAFは、ブートストラップ開始メッセージ（bootstrapping initiation message）によって返信してもよい。この標示の形態は、基準点（reference point）Uaに依存するものであってもよい。
【００４４】
ある実施形態において、Webブラウザ210は、信頼されたアプリケーション（trusted application）であると考えられる。これは、セキュリティに関する機能を適切に取り扱い、パスワード等の機密情報を第三者に漏洩させないことについて、ユーザがブラウザ210を信頼しているという意味である。図3において、Webブラウザ210は、三つの機能ブロックに分かれている。エンジンモジュール310，JavaScriptモジュール320，GBA-APIモジュール330である。
【００４５】
エンジンモジュール310は、Webブラウザ210の基本的な機能を扱う。そのような機能には、例えば、Webサーバ120と共にTLSを設定したり、Web上のリソースをダウンロードしたり、ユーザインタフェース情報をユーザに提供したりすることが含まれる。
【００４６】
GBA-APIモジュール330は、Webブラウザ210で実行されるJavaScriptコードのために、APIを提供する。JavaScriptは明示的に信頼されてはいないであろうから、Webブラウザ210及びGBA-APIモジュール330は、秘密情報をJavaScriptに教えるべきではなく、また、JavaScriptからの秘密情報を必要性を越えて受け入れるべきではない。
【００４７】
JavaScriptモジュール320は、ダウンロードしたJavaScriptを実行する。Webブラウザ210で実行されるJavaScriptコードは信頼されたもの（trusted）であると考えるべきではなく、秘密性を有するリソースへのアクセスも許可されるべきではない。少なくとも、そのようなリソースへのアクセスはコントロールされるべきである。
【００４８】
図3の流れ図に描かれたシーケンスは、サーバにより認証されるTSL（server authenticated transport layer security）において実行されてもよい。また、Webブラウザ210がHTMLページをダウンロードする処理を行っている間、リンクされたJavaScriptリソースのうちの一つは"gba.js"と呼ばれてもよい。
【００４９】
項目0において、ブラウザアプリケーション210及びWebサーバ120は、シーケンスは、サーバにより認証されるTSLトンネルを確立する。
【００５０】
図3の項目1において、UE等のユーザ装置のブラウザアプリケーション210から、コンテンツのダウンロードが要求される。このコンテンツは、例えば、Webサーバ等のアプリケーションサーバ120により提供されるWebページであってもよい。項目1における要求は、例えばHTTPリクエストを含んでもよい。
【００５１】
図3の項目2において、Webサーバ120は、サーバ・ランダム・チャレンジ（RAND1）を生成することを通じてJavaScriptコード"gba.js"を動的に構成する。"gba.js"は、JavaScriptコードに含まれて、ブラウザ210のGBA-API 330に提供される。RAND1はまた、Webサーバ120のローカルにも格納される。このJavaScriptコードにおいて、JavaScript個別GBA鍵（Ks_js_NAF）を要求し取得するために、JavaScript GBA- API 220が使用されてもよい。ランダムチャレンジRAND1は、項目2におけるGBA APIリクエストに含まれる。Ks_js_NAF要求はまた、ブラウザ210により受信されると、GBAモジュール240へと転送されてもよく、また、更なる処理のために、GBAモジュール240によって、GBA-API 220へと更に転送されてもよい。
【００５２】
項目3において、JavaScriptコードを有するWebページが、例えばHTTP Responseによってサーバからロードされる。項目4において、Webブラウザ210のエンジン310は、JavaScriptモジュール320において、JavaScriptコード"gba.js"を実行することを開始する。
【００５３】
項目5において、JavaScriptコード"gba.js"は、GBA API 330へのコールがなされる点へと到達する。このコールはRAND1をそのパラメータの一つとして含む。項目6において、JavaScript GBA API 330は、受け取ったRAND1を格納する。GBA API 330は、JavaScriptコードにとって重要な情報を特定する。そのような情報とは、例えば、どのHTMLページを実行しようとしているのか、そのHTMLページをダウンロードしたURLは何なのか、TLSトンネルにおいて使用されているTLS暗号文（TLS ciphersuite）はどれなのか、等であってもよい。Webサーバ（NAF）120のドメイン名（FQDN）は、WebページのURLから抽出されてもよく、使用されているTLS暗号文からUaセキュリティプロトコル識別子が導出されてもよい。NAFサーバ120のドメイン名（FQDN）及びUaセキュリティプロトコル識別子は、ネットワーク・アプリケーション識別子（NAF-Id）からきてもよい。
【００５４】
項目7において、GBA APIモジュール330は、項目6において導出されたNAF-Idを用いてGBA module240にコールを行う。項目8において、GBAモジュール240は、BSFを用いてブートする。ただし、有効なGBAマスタ鍵Ksがない場合である。NAF-Idを用いて、KsからNAF個別鍵（Ks_ext_NAF）が導出される。
【００５５】
GBA_MEの場合、USCC 270がCKおよびIKをGBAモジュール240に与え、GBAモジュール240は、CKおよびIK からKsを生成する。例えばGBAモジュール240は、、CKおよびIKを連結してKsを生成する。さらにGBAモジュール240は、Ks NAF-Idを使ってKs_NAFを生成する。
【００５６】
GBA_Uの場合、USCC 270は、CKおよびIKを自身で保持しており、Ks_ext_NAFを生成してGBAモジュール240に渡す。
【００５７】
従って、GBA_MEの場合は、GBA特有の機能の全てがMEに実装され、GBA_Uの場合は、GBAの機能の一部はUICC 270に実装される。Ksは主にUICC 270に保持され、導出されたKs_(ext)_NAFのみがGBAモジュール240に渡される。言い換えれば、GBA"マスタ鍵"Ksは、MEでも（GBA_MEの場合）UICC 270でも（GBA_Uの場合）生成されうる。
【００５８】
必要なGBA鍵を受け取るアプリケーションは、GBAモジュール240とのみやりとりを行う。GBA鍵は、GBA_MEの場合はKs_NAF であり、GBA_Uの場合はKs_ext_NAFである。このアプリケーションは、ソースに関わらず、GBA鍵Ks_(ext)_NAFを使用する。
【００５９】
項目9において、GBAモジュール240は、例えばNAF個別鍵（Ks_ext_NAF）を、ブートストラップ・トランザクション識別子（Bootstrapping Transaction Identifier；B-TID）及び鍵の有効期間と共に、ブラウザのGBA API 330へと返す。項目10において、GBA API 330は、クライアント側のランダムチャレンジRAMD2を生成してもよい。ランダムチャレンジRAND1とランダムチャレンジRAND2とを用いて、セキュリティトークンが決定されてもよい。さらに、サーバ固有のブートストラップ鍵（Ks_ext_NAF）及びセキュリティトークン（RAND1及びRAND2）を用いて、JavaScript個別GBA鍵（Ks_js_NAF）が作られてもよい。JavaScript個別GBA鍵を生成するにあたっては、鍵導出機能（Key Derivation Function；KDF）を次のように使用してもよい。
【００６０】
Ks_js_NAF = KDF （Ks_ext_NAF, RAND1 || RAND2）
【００６１】
RAND1はサーバ120から受け取ったランダムチャレンジであり、RAND2はGBA API 330が生成したものである。Ks_(ext)_NAFはGBA API 330へとJavaScriptレベルで処理されてもよい。JavaScript関数は、例えばGBA.getNAFKey（RAND1）としてコールされてもよく、Ks_js_NAFおよびRAND2を返してもよい。
【００６２】
項目11において、GBA API 330は、JavaScript個別Ks_js_NAF鍵、RAND2、B-TID、鍵の有効期間を、実行中のJavaScriptモジュール320に返す。項目12において、JavaScriptモジュール320は実行を続け、また、（JavaScriptコード"gba.js"を通じて）Webサーバ120が指示した通りにKs_js_NAFを使用する。
【００６３】
項目13において、クライアント側のロジックを実行した後に、JavaScriptモジュール320は、Webサーバ120に要求（例えばHTTPリクエスト）を行う。この要求は、少なくともKs_js_NAF、RAND2、B-TIDを含んでいてもよい。
【００６４】
項目14において、Webサーバ120はBSFからKs_ext_NAFをフェッチし、受け取ったRAND2および格納しているRAND1をも用いてKs_js_NAFを導出する。Webサーバ120は、検証のために、受け取ったKs_js_NAFをローカルで導出したものと比較する。受け取ったKs_js_NAFが有効である場合、Webサーバ120は項目13で受け取った要求の処理を進め、その結果をブラウザ120のJavaScriptモジュール320に返す（項目15）。さらに、Webサーバ120は、JavaScriptコードの実行を続けてもよい。
【００６５】
実施形態によっては、NAF個別鍵（Ks_NAF）は上述のようにサーバには送信されない。それはセキュリティ機構を改善する。さらに、JavaScript個別鍵（Ks_js_NAF）は、GBA API 330が使用されるたびに変更される。なぜなら、RAND1及びRAND2が変更されるからである。このようなメカニズムは、例えば、更なる安全性や、反復操作による保護（replay protection）を提供する。
【００６６】
別の実施形態では、異なるセキュリティトークンが使用される。そのような実施形態では、図3の項目2において、Webサーバ120は、ブラウザ210のGBA API 332提供するファイルとして、JavaScriptコード"gba.js"を選択する。このJavaScriptコードにおいて、JavaScript個別GBA鍵（Ks_js_NAF）を要求し取得するために、JavaScript GBA-220が使用されてもよい。Ks_js_NAF要求はまた、ブラウザ210により受信されると、GBAモジュール240へと転送されてもよく、また、更なる処理のために、GBAモジュール240によって、GBA-API 220へと更に転送されてもよい。
【００６７】
項目3において、JavaScriptコードを有するWebページが、例えばHTTP Responseによってサーバからロードされる。項目4において、Webブラウザ210のエンジン310は、JavaScriptモジュール320において、JavaScriptコード"gba.js"を実行することを開始する。
【００６８】
項目5において、JavaScriptコード"gba.js"は、GBA API 330へのコールがなされる点へと到達する。項目6において、JavaScriptGBA API 330は、JavaScriptコードにとって重要な情報を特定する。そのような情報とは、例えば、どのHTMLページを実行しようとしているのか、そのHTMLページをダウンロードしたURLは何なのか、TLSトンネルにおいて使用されているTLS暗号文（TLS ciphersuite）はどれなのか、等であってもよい。Webサーバ（NAF）120のドメイン名（FQDN）は、WebページのURLから抽出されてもよく、使用されているTLS暗号文からUaセキュリティプロトコル識別子が導出されてもよい。NAFサーバ120のドメイン名（FQDN）及びUaセキュリティプロトコル識別子は、ネットワーク・アプリケーション識別子（NAF-Id）からきてもよい。
【００６９】
項目7において、GBA APIモジュール330は、項目6において導出されたNAF-Idを用いてGBAモジュール240にコールを行う。項目8において、GBAモジュール240は、BSFを用いてブートする。ただし、有効なGBAマスタ鍵Ksがない場合である。NAF-Idを用いて、KsからNAF個別鍵（Ks_ext_NAF）が導出される。
【００７０】
GBA_MEの場合、USCC 270がCKおよびIKをGBAモジュール240に与え、GBAモジュール240は、CKおよびIK からKsを生成する。例えばGBAモジュール240は、、CKおよびIKを連結してKsを生成する。さらにGBAモジュール240は、Ks NAF-Idを使ってKs_NAFを生成する。
【００７１】
GBA_Uの場合、USCC 270は、CKおよびIKを自身で保持しており、Ks_ext_NAFを生成してGBAモジュール240に渡す。
【００７２】
従って、GBA_MEの場合は、GBA特有の機能の全てがMEに実装され、GBA_Uの場合は、GBAの機能の一部はUICC 270に実装される。Ksは主にUICC 270に保持され、導出されたKs_(ext)_NAFのみがGBAモジュール240に渡される。言い換えれば、GBA"マスタ鍵"Ksは、MEでも（GBA_MEの場合）UICC 270でも（GBA_Uの場合）生成されうる。
【００７３】
必要なGBA鍵を受け取るアプリケーションは、GBAモジュール240とのみやりとりを行う。GBA鍵は、GBA_MEの場合はKs_NAF であり、GBA_Uの場合はKs_ext_NAFである。このアプリケーションは、ソースに関わらず、GBA鍵Ks_(ext)_NAFを使用する。
【００７４】
項目9において、GBAモジュール240は、例えばNAF個別鍵（Ks_(ext)_NAF）を、ブートストラップ・トランザクション識別子（Bootstrapping Transaction Identifier；B-TID）及び鍵の有効期間と共に、ブラウザのGBA API 330へと返す。項目10において、Ks_(ext)_NAF鍵を受け取ると、ブラウザのGBA API 330は、セキュリティトークンを決定する。セキュリティトークン（TLS_MK_Extr）は、エキスポートされる関数を用いて、TLSマスタ鍵から抽出されてもよい。エキスポートされる関数のラベルは、例えば、"EXPORTER_3GPP_GBA_WEB"であってもよい。セキュリティトークン（TLS_MK_Extr）は、サーバにより認証されるTLSトンネルに関係しているJavaScript個別鍵Ks_js_NAFを導出するために使用されてもよい。Ks_js_NAFは、Ks_(ext)_NAFを用いて次のように導出されてもよい。
【００７５】
Ks_js_NAF = KDF（Ks_(ext)_NAF, TLS_MK_Extr）
【００７６】
JavaScript個別GBA鍵（Ks_js_NAF）は、サーバ固有のブートストラップ鍵（Ks_ext_NAF）及びセキュリティトークン（TLS_ML_Extr）を用いて作られてもよい。JavaScript個別GBA鍵を生成するにあたっては、鍵導出機能（Key Derivation Function；KDF）を使用してもよい。Ks_(ext)_NAFはGBA API 330へとJavaScriptレベルで処理されてもよい。
【００７７】
項目11において、GBA API 330は、JavaScript固有Ks_js_NAF鍵、B-TID、鍵の有効期間を、実行中のJavaScriptモジュール320に返す。項目12において、JavaScriptモジュール320は実行を続け、また、（JavaScriptコード"gba.js"を通じて）Webサーバ120が指示した通りにKs_js_NAFを使用する。
【００７８】
項目13において、クライアント側のロジックを実行した後に、JavaScriptモジュール320は、Webサーバ120に要求（例えばHTTPリクエスト）を行う。この要求は、少なくともKs_js_NAF、B-TIDを含んでいてもよい。
【００７９】
項目14において、Webサーバ120は、BSFからKs_(ext)_NAFをフェッチし、項目10においてなされたように、セキュリティトークン（TLS_MK_Extr）を決定してもよい。その後Webサーバ120は、セキュリティトークン（TLS_MK_Extr）を用いてKs_js_NAFを導出してもよい。Webサーバ120は、検証のために、受け取ったKs_js_NAFをローカルで導出したものと比較する。受け取ったKs_js_NAFが有効である場合、Webサーバ120は項目13で受け取った要求の処理を進め、その結果をブラウザ120のJavaScriptモジュール320に返す（項目15）。さらに、Webサーバ120は、JavaScriptコードの実行を続けてもよい。
【００８０】
実施形態によっては、NAF個別鍵（Ks_NAF）は上述のようにサーバには送信されない。それはセキュリティ機構を改善する。
【００８１】
図4は、本発明の様々な実施形態が適用されうるアプリケーションサーバ400の例示的ブロック図である。このサーバはWebサーバやファイルダウンロードサーバ、その他の如何なるコンテンツ提供サーバであってもよい。
【００８２】
アプリケーションサーバ400の一般的な構成は、通信インタフェースモジュール450，通信インタフェースモジュール450に組み合わされるプロセッサ410，プロセッサ410に組合わされるメモリ420を含む。装置にはさらに、メモリ420に格納されるソフトウェア430を含む。ソフトウェア430はプロセッサ410にロードされ、実行される。ソフトウェア430は、コンピュータプログラム製品の形式をとりうるソフトウェアモジュールを一つ又は複数備えてもよい。
【００８３】
通信インタフェース450は、本発明の様々な実施形態に関連して述べられたデータ送信の少なくとも一部を実装する。通信インタフェース450は、例えば、WLANやBluetooth（登録商標），GSM（登録商標），GPRS，CDMA，WCDMA（登録商標），LTE（ロング・ターム・エボリューション）の無線モジュールであってもよい。通信インタフェース450はアプリケーションサーバ400自身に統合されていたり、アプリケーションサーバ400の適切なスロットやポートに挿入されるアダプタやカードのようなものに統合されていたりしてもよい。通信インタフェース450は、単一の無線インタフェース技術をサポートするものであってもよいし、複数の無線インタフェース技術をサポートするものであってもよい。図4において、通信インタフェース450は一つしか描かれていないが、アプリケーションサーバ400は、複数の通信インタフェースモジュール550を備えている場合もある。通信インタフェースモジュール450は、例えばブートストラップ機能（BSF）やホーム加入者サーバ（HSS）、外部のコンテンツサーバ等との間のデータ通信機能を提供する。
【００８４】
プロセッサ410は、例えば、中央処理ユニット（CPU），マイクロプロセッサ，デジタルシグナルプロセッサ（DSP），グラフィックスプロセッシングユニット等であってもよい。図4において、プロセッサ410は一つしか描かれていないが、アプリケーションサーバ400は、複数のプロセッサを備えている場合もある。
【００８５】
メモリ420は、例えば、不揮発性メモリや揮発性メモリであることができ、例えば、読み取り専用メモリ（ROM）やプログラム可能な読み取り専用メモリ（PROM），消去・プログラム可能な読み取り専用メモリ（EPROM），ランダムアクセスメモリ（ROM），フラッシュメモリ，データディスク，光学記憶装置，磁気記憶装置，スマートカード等であってもよい。アプリケーションサーバ400は複数のメモリを備えていてもよい。メモリ420は、アプリケーションサーバ400の一部として構成されてもよいし、アプリケーションサーバ400のスロットやポート等に挿入されるものであってもよい。メモリ420は、データの格納という単一の目的のために使用されてもよいし、データ処理等様々な目的のために働く装置の一部として構成されてもよい。
【００８６】
汎用ブートストラップ・アーキテクチャ・モジュール（GBA）440は、ネットワーク・アプリケーション機能（NAF）を備えていてもよい。GBAはNAFとUEとの間で認証の目的のために使用されてもよく、また、UEとNAFとの間の通信路を万全にするために使用されてもよい。ブートが完了した後、UE及びNAFはアプリケーション固有のプロトコルを動かすことができるが、ここでメッセージの認証は、UEとBSFとの間の相互認証の間に生成されたセッションキーに基づくものとなるだろう。
【００８７】
当業者には明らかなことであろうが、アプリケーションサーバ400は、図4に描かれた要素以外にも様々な要素を備えていることができる。例えば入力／出力（I／O）回路のような追加の回路やメモリチップ、ASIC、特定目的のための処理回路等を備えることができる。また、そのような処理回路には、ソースの符号化／復号のための回路、チャネル符号化／復号のための回路、暗号化／平文化回路等が含まれてもよい。
【００８８】
図5は、本発明の様々な実施形態が適用されうるユーザ装置500の例示的ブロック図である。この装置は、例えば携帯電話やラップトップ、タブレット等の通信デバイスのような、ユーザ装置（デバイス）であることができる。
【００８９】
ユーザ装置500の一般的な構成は、通信インタフェースモジュール550，通信インタフェースモジュール550に組み合わされるプロセッサ510，プロセッサ510に組合わされるメモリ520を含む。ユーザ装置はさらに、メモリ520に格納されるソフトウェア530を含む。ソフトウェア430はプロセッサ510にロードされ、実行される。ソフトウェア530は、コンピュータプログラム製品の形式をとりうるソフトウェアモジュールを一つ又は複数備えてもよい。ユーザ装置500はさらに、プロセッサ510に組み合わされるユーザインタフェース・コントローラを備えてもよい。
【００９０】
通信インタフェース550は、本発明の様々な実施形態に関連して述べられたユーザデータ無線機能の少なくとも一部を実装する。通信インタフェース550は、例えば、WLANやBluetooth，GSM／GPRS，CDMA，WCDMA，LTE（ロング・ターム・エボリューション）の無線モジュールであってもよい。通信インタフェース550はユーザ装置500自身に統合されていたり、ユーザ装置の適切なスロットやポートに挿入されるアダプタやカードのようなものに統合されていたりしてもよい。通信インタフェース550は、単一の無線インタフェース技術をサポートするものであってもよいし、複数の無線インタフェース技術をサポートするものであってもよい。図5において、通信インタフェース550は一つしか描かれていないが、ユーザ装置500は、複数の通信インタフェースモジュール550を備えている場合もある。
【００９１】
プロセッサ510は、例えば、中央処理ユニット（CPU），マイクロプロセッサ，デジタルシグナルプロセッサ（DSP），グラフィックスプロセッシングユニット等であってもよい。図5において、プロセッサ510は一つしか描かれていないが、ユーザ装置500は、複数のプロセッサを備えている場合もある。
【００９２】
メモリ520は、例えば、不揮発性メモリや揮発性メモリであることができ、例えば、読み取り専用メモリ（ROM）やプログラム可能な読み取り専用メモリ（PROM），消去・プログラム可能な読み取り専用メモリ（EPROM），ランダムアクセスメモリ（ROM），フラッシュメモリ，データディスク，光学記憶装置，磁気記憶装置，スマートカード等であってもよい。ユーザ装置500は複数のメモリを備えていてもよい。メモリ520は、ユーザ装置500の一部として構成されてもよいし、ユーザ装置500のスロットやポート等に挿入されるものであってもよい。メモリ520は、データの格納という単一の目的のために使用されてもよいし、データ処理等様々な目的のために働く装置の一部として構成されてもよい。
【００９３】
UICC（Universal Integrated Circuit Card）は、ユーザ装置内で使用されるスマートカードとして備えられてもよい。UICC 540は,全ての個人用データについて整合性や安全性を保証する。UICC 540は、それ自身に固有のシリアルナンバーや、国際移動電話加入者識別番号（IMSI）、セキュリティ認証及び暗号化情報、ローカルネットワークに関する一時的情報、ユーザがアクセスしたことがあるサービスのリスト、パスワード（通常の使用についてはPIN、アンロックのためにはPUK）等を格納していてもよい。UICC 540はまた、複数のアプリケーションを備えていてもよく、それによってスマートカードに様々なネットワークへのアクセスを提供してもよい。UICC 540はまた、電話帳やその他のアプリケーションのための記憶領域を提供してもよい。システムは、鍵の保存や処理のために、内蔵されたセキリティモジュールを利用してもよい。
【００９４】
ユーザインタフェース・コントローラ560は、ユーザ装置500のユーザから入力を受け取る回路手段や、ユーザへ出力を提供する回路手段を備えてもよい。ユーザからの入力は、例えばキーボードや、ユーザ装置500のディスプレイ上に表示されるグラフィカル・ユーザインタフェース、音声認識回路、ヘッドセット等の周辺機器を介して入力されてもよく、ユーザへの出力は、グラフィカル・ユーザインタフェースやスピーカーを通じて行われてもよい。
【００９５】
当業者には明らかなことであろうが、ユーザ装置500は、図5に描かれた要素以外にも様々な要素を備えていることができる。例えばマイクロフォンやディスプレイ、入力／出力（I／O）回路のような追加の回路やメモリチップ、ASIC、特定目的のための処理回路等を備えることができる。また、そのような処理回路には、ソースの符号化／復号のための回路、チャネル符号化／復号のための回路、暗号化／平文化回路等が含まれてもよい。さらにユーザ装置500は、外部からの電源供給が不可能な場合に電力を供給するための、使い切り式や充電式のバッテリーを備えていてもよい（図示されていない）。
【００９６】
図6は、本発明のある例示的実施形態に従うユーザ装置の動作を示す流れ図である。ステップ600において、方法は開始する。ステップ610において、サーバ固有のブートストラップ鍵（Ks_NAF）の要求が受け取られる。ステップ620において、サーバの識別子（NAF-Id）が決定される。サーバ固有のブートストラップ鍵 （Ks_NAF）は、ステップ630において、サーバ識別子 （NAF-Id）に基づいて生成される。ステップ640において、セキュリティトークンが決定される。ステップ650において、外部コード固有のブートストラップ鍵（Ks_js_NAF）が、サーバ固有のブートストラップ鍵（Ks_NAF）及びセキュリティトークンを用いて生成される。外部コード固有のブートストラップ鍵（Ks_js_NAF）は、ステップ660において、外部コードのセキュリティ機構のために使用される。この方法はステップ670で終わる。
【００９７】
図7は、本発明のある例示的実施形態に従うアプリケーションサーバの動作を示す流れ図である。ステップ700において、方法は開始する。ステップ710において、スクリプトコード固有のブートストラップ鍵（Ks_js_NAF）の要求が送信される。ステップ720では、サーバ識別子（NAF-Id）が決定される。ステップ730において、サーバ固有のブートストラップ鍵 （Ks_NAF）が、サーバ識別子 （NAF-Id）を用いて生成される。ステップ740において、セキュリティトークンが決定される。ステップ740において、スクリプトコード固有のブートストラップ鍵（Ks_js_NAF）が、サーバ固有のブートストラップ鍵（Ks_NAF）及びセキュリティトークンを用いて生成される。スクリプトコード固有のブートストラップ鍵（Ks_js_NAF）は、ステップ760において、スクリプトコードのセキュリティ機構のために使用される。この方法はステップ770で終わる。
【００９８】
様々な実施形態が紹介されてきた。本明細書において、「備える」や「有する」「含む」等は、その他の要素が更に含まれることを排除しない意図で用いられており、記載されていないものしか備えられないという意味では使われていない。
【００９９】
上述の説明は非限定的な例の特定の実装例を用いてなされたものであり、また、本発明を実施するために最も適した手法であると発明者が現在考えている形態の完全かつ有益な説明を用いてなされたものである。しかし、当業者には明らかであるように、本発明の実施形態は本明細書で紹介された具体的な実施形態に限定されるものではない。本発明の実施形態は、本発明の特徴を逸脱せずに、同様の手段や様々な組み合わせを用いて具現化されることができる。
【０１００】
さらに、本発明の上述の実施形態は、その他の特徴の対応する使用なしに、利益をもたらすために使用されうる。従って、上述の説明は、本発明の原理の説明に過ぎないと考えるべきであり、これらを限定するものであると考えてはならない。従って、本発明の範囲は添付の特許請求の範囲によってのみ制限される。
【図１】
2015501613.tif 000003
【図２】
2015501613.tif 000004
【図３】
2015501613.tif 000005
【図４】
2015501613.tif 000006
【図５】
2015501613.tif 000007
【図６】
2015501613.tif 000008
【図７】
2015501613.tif 000009
【手続補正書】
【提出日】平成26年5月28日(2014.5.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む、方法。
【請求項２】
第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて前記セキュリティトークンを決定することをさらに含む、請求項1に記載の方法。
【請求項３】
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）の検証のために、前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）をアプリケーションサーバへ送信することをさらに含む、請求項2に記載の方法。
【請求項４】
前記送信することはさらに、前記第2のランダムチャレンジ（RAND2）及び前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を含む応答外部コードを送信することを含む、請求項3に記載の方法。
【請求項５】
請求項1に記載の方法であって、
装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）及び前記セキュリティトークンを決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
をさらに含む、方法。
【請求項６】
上記請求項のいずれかに記載の方法であって、
装置のブラウザアプリケーションとアプリケーションサーバとの間にトランスポート層セキュリティ（TLS）トンネルを確立することと；
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含む前記サーバ識別子（NAF-Id）を決定することと；
をさらに含む、方法。
【請求項７】
前記セキュリティプロトコル識別子は、トランスポート層セキュリティ（TLS）の暗号文を用いて形成される、請求項６に記載の方法。
【請求項８】
鍵導出機能を用いて、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することを更に含む、上記請求項のいずれかに記載の方法。
【請求項９】
前記外部コードはJavaScriptコードを含む、上記請求項のいずれかに記載の方法。
【請求項１０】
トランスポート層セキュリティ（TLS）マスタ鍵を用いて前記セキュリティトークンを決定することを含む、請求項1に記載の方法。
【請求項１１】
少なくとも一つのプロセッサと、コンピュータプログラムコードを含む少なくとも一つのメモリとを備える装置であって、前記コンピュータプログラムコードは、前記少なくとも一つのプロセッサに実行されるときに、前記装置に少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定し、該サーバ識別子（NAF-Id）に基づいて前記サーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを含む、装置。
【請求項１２】
前記プログラムコードが、前記少なくとも一つのプロセッサに実行されるときに、前記装置に、少なくとも、
第1のランダムチャレンジ（RAND1）及び第2のランダムチャレンジ（RAND2）を用いて前記セキュリティトークンを決定させるようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記プログラムコードが、前記少なくとも一つのプロセッサに実行されるときに、前記装置に、少なくとも、
前記装置のプラウザアプリケーションによって、アプリケーションサーバから、前記外部コードを受信することと；
前記ブラウザアプリケーションのアプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記サーバ識別子（NAF-Id）を決定することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、オペレーティングシステムのブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記ブートストラップ・モジュールから、前記サーバ固有ブートストラップ鍵（Ks_NAF）を受け取ることと；
前記アプリケーション・プログラミング・インタフェース（JS-GBA-API）により、前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
を遂行させるようにさらに構成される、請求項１１又は１２に記載の装置。
【請求項１４】
前記プログラムコードが、前記少なくとも一つのプロセッサに実行されるときに、前記装置に、少なくとも、
トランスポート層セキュリティ（TLS）マスタ鍵を用いて前記セキュリティトークンを決定させるように構成される、請求項11から13のいずれかに記載の装置。
【請求項１５】
コンピュータ可読媒体に具現化されるコンピュータプログラムであって、装置の少なくとも一つのプロセッサにより実行されると、前記装置に：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む外部コードを受け取ることと；
サーバ識別子（NAF-Id）を決定することと；
前記サーバ識別子（NAF-Id）に基づいてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを含む、コンピュータプログラム。
【請求項１６】
外部コードのためのセキリティ機構を提供する方法であって：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
セキュリティトークンを決定することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を含む、方法。
【請求項１７】
請求項16に記載の方法であって、
ブートストラップ・サーバ機能（BSF）から前記サーバ固有ブートストラップ鍵（Ks_NAF）を要求することと；
ドメイン名（FQDN）及びセキリュティプロトコル識別子を含む前記サーバ識別子（NAF-Id）を決定することと；
を含む、方法。
【請求項１８】
請求項16又は17に記載の方法であって、
外部コード固有ブートストラップ鍵（Ks_js_NAF）を受け取ることと；
前記生成した外部コード固有ブートストラップ鍵（Ks_js_NAF）と、前記受け取った外部コード固有ブートストラップ鍵（Ks_js_NAF）とを比較することにより、前記外部コードの前記セキュリティ機構のために、外部コード固有ブートストラップ鍵（Ks_js_NAF）を検証することと；
を含む．方法。
【請求項１９】
アプリケーションサーバであって、
少なくとも一つのプロセッサと、コンピュータプログラムコードを含む少なくとも一つのメモリとを備えるアプリケーションサーバであって、前記コンピュータプログラムコードが、前記少なくとも一つのプロセッサに実行されるときに、前記アプリケーションサーバに少なくとも：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成される、アプリケーションサーバ。
【請求項２０】
コンピュータ可読媒体に具現化されるコンピュータプログラムであって、アプリケーションサーバの少なくとも一つのプロセッサにより実行されると、前記アプリケーションサーバに：
サーバ固有ブートストラップ鍵（Ks_NAF）の要求を含む前記外部コードを送信することと；
サーバ識別子（NAF-Id）を用いてサーバ固有ブートストラップ鍵（Ks_NAF）を生成することと；
セキュリティトークンを決定することと；
前記サーバ固有ブートストラップ鍵（Ks_NAF）及び前記セキュリティトークンを用いて外部コード固有ブートストラップ鍵（Ks_js_NAF）を生成することと；
前記外部コード固有ブートストラップ鍵（Ks_js_NAF）を、前記外部コードの前記セキュリティ機構のために使用することと；
を遂行させるように構成されるコンピュータ実行可能なプログラムコードを備える、コンピュータプログラム。
【国際調査報告】
2015501613.tif 000010
2015501613.tif 000011
2015501613.tif 000012
2015501613.tif 000013