(57)【要約】サービス開発及び実行環境におけるプライバシー保護のためのシステム及び方法である。サービス作成者は、開発環境を用いてサービスを作成できる。エンドユーザは、これらのサービスを、実行環境を用いて実行でき、そのサービスに個人情報を安全に供給できる。これと共に、開発及び実行環境は、どんな個人情報も、エンドユーザの明確な承認なしに、受信者へ送信されないようにする。実行中のサービスによって用いられる情報の各部分に対して、それが秘密であるかどうか及び誰に対して秘密であるかが、トラッキングされ、情報の所定の部分が家族に対してパブリックであるが、例えばその他の者に対してはプライベートであることが可能とされる。サービスが情報を受信者に送信する必要のある場合、プライバシーファイアフォール規則が用いられ、情報がその受信者に対してプライベートでないこと、あるいは、エンドユーザが明確に送信を承認したこと、あるいは、送信が否定されることを（起こらないだろうが）確実にする。【特許請求の範囲】
【請求項１】
個人情報へのアクセスを制御する方法であって、
分散型ネットワークを伴った電子通信において少なくとも１つのサービス開発環境及び実行環境をコンピュータ上で確立し、
ユーザから情報を収集し、
前記情報に対するプライバシーアクセス権を確立し、
前記分散型ネットワークを介して前記情報の送信を要求する電子トランザクションを行い、
前記プライバシーアクセス権を前記情報に対して適用して、送信する前記情報の部分を選択し、
前記情報の前記部分を送信する、
ことを特徴とする方法。
【請求項２】
前記情報は、個人識別情報、住居情報、雇用情報、ファイナンス情報、少なくとも１つのクレジットカード番号及びこれらの組み合わせから構成されるグループから選択されることを特徴とする請求項１に記載の方法。
【請求項３】
前記分散型ネットワークはインターネットであることを特徴とする請求項１に記載の方法。
【請求項４】
前記環境は、ユーザがサービスを使用可能な実行環境を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記環境は、サービスを作成する開発環境を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記実行環境は前記開発環境内で動作することを特徴とする請求項５に記載の方法。
【請求項７】
前記プライバシーアクセス権は、前記情報がパブリックな受取人を示す変数を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記情報へ前記プライバシーアクセス権を適用するためにプライバシーファイアフォールが設けられたことを特徴とする請求項１に記載の方法。
【請求項９】
さらに、前記情報が、前記受取人に関してプライベートであるかどうかを決定し、前記情報へ前記アクセスの制限を適用した後、データの送信を拒否することを特徴とする請求項１に記載の方法。
【請求項１０】
分散型ネットワーク上で送信される個人情報へのアクセスを制御する方法であって、
サービス開発環境及び実行環境、さらにプライバシーファイアフォールを含み、前記開発環境は前記実行環境によって実行されるサービスである環境を作成し、
前記環境において処理される少なくともいくつかの情報に対する、前記情報に対するプライバシー属性を含むプライバシーアクセス権を確立し、
要求者から前記情報を送信する要求を受け取り、
前記情報に対する前記プライバシー属性が、前記要求者に関してパブリックあるいはプライベートであるかを決定し、
前記情報のプライバシー属性が前記要求者に関してプライベートである場合はエンドユーザに通知し、
前記プライバシー属性が前記要求者に関してパブリックである場合は前記要求者へ前記情報を送信する、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザにデータサービスを供給する開発及び実行環境に関する。より詳しくは、本発明は、人間であろうとプログラム式であろうとサービス作成主体が、あるユーザのためのデータサービスを実行する実行環境に関連して、データサービスを実行するユーザについての個人情報にアクセスするデータサービスを作成可能な開発環境に関する。加えて、開発環境及び実行環境は、サービスの実行の間、ユーザの個人情報のプライバシーを保護する。
【背景技術】
【０００２】
ここにおいて用いられる用語“サービス”は、人間であろうとプログラム式であろうとエンドユーザに機能を提供する、コンピュータ、コンピュータあるいは通信ネットワーク、通信プロトコル、無線装置、コンピュータ言語などのような情報技術を用いたアプリケーションを示す。サービスは、例えば食料の注文、あるいは、ユーザへの特定の情報の送信を含み得る。
【０００３】
サンのＪａｖａ（登録商標）バーチャルマシンは、ユーザのウェブブラウザによってダウンロードされ、ユーザの装置（通常はパーソナルコンピュータ）で実行されるアプレットを実行する。悪意のある人々がこれらのアプレットを開発し得るので、Ｊａｖａ（登録商標）言語は、実行アプレットがユーザの装置上で危険な活動を起こすことを阻止するセキュリティメカニズムを実行する。これらの危険な活動は、例えば、ファイルを読み出す、装置から設定情報を入手する、ファイルを削除する、ハードディスクをフォーマットすることを含む。このアプローチは、アプレットがファイルあるいは個人情報を含み得る他の情報にアクセスできないようにして、ユーザのプライバシーを保護もする。ユーザがＪａｖａ（登録商標）バーチャルマシンのセキュリティレベルを下げる場合、Ｊａｖａ（登録商標）バーチャルマシンは、ユーザがアプレットに信頼を与えたと想定するため、アプレットは全てのファイル及び情報にアクセスする。従って、ユーザは、アプレットがどの情報にアクセス可能かについてのコントロールを失う。さらに、アプレットがユーザに対してクレジットカード番号のような個人情報を入力することを要求した場合、ユーザはアプレットに与えられた情報に対するコントロールを手放す。例えば、この情報が、エンドユーザの知らないところで、知らない第３者（サードパーティ）に送信されるか否かである。
【０００４】
マイクロソフトパスポートシステムは、パスポートメンバについての情報が格納されたデータベース（いわゆるeWallet）を提供する。パスポートプログラムに参加しているウェブサイトを訪れ、あるいはここで買い物するとき、メンバはこの情報を安全にデータベースからウェブサイトに送信することを要求でき、従ってメンバは情報を入力する必要はない。この情報は、ユーザのクレジットカード番号のような秘密データを含み得る。マイクロソフトパスポートは、ウェブサイトを用いて電子商取引機能を供給するどの会社について参加を許可するかの認証局として活動する。会社のウェブサイトが、パスポートプログラムによって設定されたプライバシーガイドラインを破った場合、それは追い出され得る。そのようなシステムは、各トランザクションの間に入力する必要のある情報量を減少する便利な方法をユーザに提供し、さらにユーザは個人及びファイナンス情報に対して高められたセキュリティレベルを受け取る。しかしながら、ユーザは、どんな情報がウェブサイトに開放されるかについてのコントロールは制限される。ウェブサイトの開発者は簡単にそれを作成し、それを利用可能にすることはできないけれども、まずプログラムに登録されるマイクロソフトパスポートシステムの要求を満たさなければならない。
【０００５】
これらの両方のアプローチに伴って、アプレットあるいは電子商取引ウェブサイトによって供給されるサービスにおいて決定をなすために個人情報が要求されるときはいつも（たとえサービス作成者がその情報を知る必要がない場合でも）、その情報はそのサービスに利用可能になされなければならず、ユーザはそのサービスが個人情報を用いて何をなすかについてのコントロールを失う。
【０００６】
しばしばユーザについての個人情報を所有する信頼された関係者（party）は、開発されたサービスが個人情報を悪用しないことを保証するため、多くのサービスプロバイダ／作成者と契約を結ぶ。法的拘束力のある間も、これらの約束は、技術的に例えば悪意のある従業員あるいはハッカーによる悪用を阻止しない。さらに、いつかの国では、ユーザ電気通信事業者プロバイダのような信頼された関係者が、ユーザの事前の同意を得ないで第３者にユーザの個人情報を流すことを禁止する法律が可決されてきた。
【０００７】
インターネットのような分散型ネットワークで実施される電子取引の人気が上昇すると、認証されていないおそらく非合法なユーザの個人及び財務情報の使用の可能性を最小限にした状態で、ユーザが、必要な個人及び財務情報を与えることを許容するシステムを有することが益々重要になってくる。
【発明の開示】
【課題を解決するための手段】
【０００８】
本発明は、サービス作成主体が、エンドユーザによって実行可能なサービスを作成できる環境を供給する。開発者（サービス作成主体）はエンドユーザであり得るけれども、さらに、例えば、コンテンツプロバイダあるいはコンテンツアグリゲータであり得る。その環境内においては、サービスが、悪意的あるいはその他の理由で、エンドユーザの明確な許可がない状態でサービス作成者あるいは第３者に情報を送信する危険性無しに、エンドユーザは、サービスに利用可能な個人情報を作成できる。このことは、エンドユーザが安全に秘密情報をサービスに供給し、この結果、サービスはより個人化（personalized）され得（例えばサービスの振る舞いは、エンドユーザについての個人情報である、エンドユーザの年齢に依存して変化する）、あるいは、サービスはユーザ固有のタスクを実行し得る（例えば株式がある値の上あるいは下へ行ったとき、エンドユーザについての個人情報を用いて自動的に株式を取引する）。サービスが個人情報をサービス作成者あるいは第３者に供給しなければならない場合、環境は明示的にエンドユーザに許可を求める。このことは、どのような情報が送信され、その情報が誰に送信されるのかを、ユーザに正確に知らせることを含む。
【０００９】
本発明の実施の形態によれば、開発環境が、サービスを作成するサービス作成主体に供給される。サービス作成主体がサービスの作成を完了した場合、開発環境の出力は、実行環境によって実行され得るサービスである。
【００１０】
本発明の別の実施の形態によれば、実行環境はサービスのエンドユーザに供給され、エンドユーザは特定のサービスを実行できる。結合された開発及び実行環境は環境と呼ばれる。
【００１１】
本発明の一観点によれば、実行中のサービスにおいて用いられる情報の全ての部分に対して、その情報が誰に対してプライベートであり、誰に対してパブリックであるのかが、その環境によって確実にされる。これは、本パラグラフで述べられた情報のプライベートアクセス権と呼ばれる。
【００１２】
本発明の一観点によれば、情報のプライバシーアクセス権が、情報操作を通じて一貫性を維持することを、その環境は確実にする。
【００１３】
本発明の別の実施の形態によれば、受信者へのある情報の送信が許容されるかどうかを決定することの可能な“プライバシーファイアフォール”アルゴリズムが供給される。
【００１４】
本発明の一観点によれば、“プライバシーファイアフォール”は、そのアルゴリズムが、送信が許可されないことを検出した場合、エンドユーザにデータを送信する許可を求める。
【００１５】
本発明の一観点によれば、個人情報は、エンドユーザによって直接にサービスに提供され得る。
【００１６】
本発明の一観点によれば、個人情報は、事前にユーザからそれを受け取った、あるいはその情報へ直接アクセスする実行環境によって、サービスに提供され得る。
【００１７】
これら及びその他の本発明の特徴は、以下の本発明の詳細な説明、添付の図面及び請求項を読むことによって当業者にとって明らかになる。
【発明を実施するための最良の形態】
【００１８】
プライバシーファイアフォールは、従来のプログラミング環境に対してなされ得る増強である。特に、このプライバシーファイアフォールは以下を必要とする。
【００１９】
（ａ）全ての変数は、それに関連したプライバシーアクセス権を有さなければならない。
【００２０】
（ｂ）完全に信頼された関係者（party）だけが、変数のプライバシーアクセス権を修正できる。
【００２１】
（ｃ）コンパイラ、インタプリタ、及び／あるいはバーチャルマシンは、アプリケーションの実行中、プライバシーアクセス権が矛盾なく最新であり続けるようにしなければならない。
【００２２】
（ｄ）変数内の情報を誰か（受取人）に送信、表示、あるいは、なんらかの方法により伝達する前に、受取人がそれに含まれた情報を見ることができるよう、変数のプライバシーアクセス権が認証されなければならない。
【００２３】
（ｅ）アプリケーションの実行フローの一部が変数“ａ”によって影響を与えられた場合、全ての新たに生成された変数は、実行フローの影響された部分の間に送信される情報と同様、変数“ａ”のプライバシーアクセス権でさらに従わなければならない。
【００２４】
１．プライバシーアクセス権を伴った変数
プライバシーファイアフォールは、あらゆる変数がそれに関連するプライバシーアクセス権を有する開発環境及び実行環境を必要とする。
【００２５】
最も単純化した実現形態では、あらゆる変数は、その変数が秘密であるかどうかを決定するユニークなブール値を含む。もしその変数が秘密として定められた場合、そのユーザ（その変数が何かを明かす人）のみがそれを見ることを許容される。誰か他の人にその変数を表示するためには、そのユーザの明示的な許可が必要とされる。
【００２６】
より複雑な実現形態では、各変数は、その変数の中身を見ることが許容される主体（人々あるいは他のプログラム）及び主体のグループから構成されるそれに関連づけられたユニークなリスト（アクセス制御リストすなわちＡＣＬ）を有し得る。
【００２７】
もしこのリストが空であるのならば、ユーザ以外のだれも、明示の許可なしで変数の中身を見ることは許容されない。もしＡＣＬが“ＡＬＬ”トークンを含むのならば、誰もがそれを見ることを許容される。
【００２８】
例１は、いくつかの秘密の変数をＡＣＬメカニズムを用いてセットアップする方法を簡易なＪａｖａ（登録商標）プログラミング言語によって示す。
【００２９】
例１：変数へのプライバシーアクセス権の割り当て
2004529432.tif 000002
【００３０】
２．信頼された関係者だけがプライバシーアクセス権を修正できる。
【００３１】
上述したコード例は、そのコードを書いた関係者がそのユーザによって完全に信頼された場合だけ動作すべきである。もし信頼のない関係者がそのコードを書いた場合、そのプライバシーアクセス権の修正は許されず、そのコードはＪａｖａ（登録商標）様式でプライバシー違反例外を指摘すべきである。
【００３２】
もし信頼された関係者がそのコードを書いた場合、変数のプライバシーアクセス権を設定及び変更することは許容される。例えば、もしユーザ自身がそのコードを書いた場合、そのコードは、悪意の無いことが想定され得、従ってプライバシーアクセス権は修正可能である。
【００３３】
プログラム実行前あるいは間の実行環境は、適切なプライバシーアクセス権を伴って変数を定義し得る。これは、例えば、ユーザについての情報が既に知られている環境にプログラミング環境が格納されたときになされ得る（そのような環境は信頼された環境であると考えられる）。そのような環境の一つは、例えば無線キャリアのネットワークであり、そこでは、身元、住所、クレジットカード番号及びエンドユーザの位置が知られており、エンドユーザとキャリアとの間に信頼関係が存在する。そのような環境において、プログラムは、信頼されていない（及びおそらく知られていない）関係者によって書かれ得る。プログラムがアクセスする全ての秘密情報は前もってセットアップされ、プログラム自身はプライバシーアクセス権を修正できず、そのようにしてユーザの個人情報を保護する。そのような環境において、プログラミング言語が変数プライバシーアクセス権の変更をサポートすることは全く必要でない。
【００３４】
信頼されていないプログラムは、ユーザから新しい情報を要求するプログラミング環境において利用可能な信頼された関数を用いることができる。例えばプログラムは、ユーザのアドレスを要求する関数を用い得る。ユーザからのこの入力を扱う関数は、信頼されているが、信頼されていないプログラムがそれを用いて開始し得る前に、この関数は新しい変数に適正なプライバシーアクセス権を設定し得る。もしプログラミング環境が信頼された関数を通してのデータ入力をサポートするだけならば、ユーザによって供給された全ての情報は適正に保護され得る。
【００３５】
Ｊａｖａ（登録商標）のような言語において、このことは、信頼されていないＪａｖａ（登録商標）ネイティブインターフェース（ＪＮＩ）のクラスの使用を禁止することによって実行され得る。このことは、信頼されていないクラスを、入力を扱うための現存クラスの使用に制限し、そして、全ての現存するクラスは信頼され、安全であり、オーバーライド不可能である。別のアプローチは、入力目的のために設定された信頼された関数を単に供給するだけのスクリプト言語を作ることである。
【００３６】
３．プライバシーアクセス権の一貫性
プログラミング環境は、変数の修正及び割当てに渡り、プライバシーアクセス権が一貫した状態を保持し続けるようにしなければならない。例えば新たな変数が現存する変数に基づいて宣言された場合、その新たな変数は、その現存する変数のプライバシーアクセス権を承継しなければならない。
【００３７】
ＡＣＬｓの場合、上述したように、新たな変数が多数の現存する変数に基づいて宣言された場合、その新たな変数に対するＡＣＬは、それが基づく変数のＡＣＬｓの共通部分でなければならない。このことは例２において示される。
【００３８】
例２：プライバシーアクセス権の共通部分
2004529432.tif 000003
【００３９】
新たな変数Ｍｅに対するＡＣＬは、元の変数へのアクセスを有する人々の共通部分であり、結果として、GROUPS(Parents)+USERS(Jenn, Doug)（元の全ての変数を見ることを許された全ての主体）である。もし３つの変数のいずれかがＡＣＬとして"null"を有している場合、新たな変数も同様にいつも空のＡＣＬを有する（従ってそのユーザ以外の誰も見ることができない）。新たな変数が定義され、現存する変数に基づかない場合、この変数に対するＡＣＬはいつも“ＡＬＬ”（誰にでも見ることができる）である。追加の規則のための下記の要点５を見ると、そこは、新たな変数に割り当てられた実際のプライバシーアクセス権に強い影響を与える（impact）。
【００４０】
変数プライバシーアクセス権の共通部分がどのように働くかはさらに図７によって示される。
【００４１】
一貫した変数プライバシーアクセス権を提供するため、その一貫性は、信頼されていないプログラムを処理する、コンパイラ、インタプリタ、及び／あるいはバーチャルマシンによって実施されなければならない。これがどのようにしてなされるのかは、コンパイラ、インタプリタ及びバーチャルマシン設計の当業者にとって明らかであるべきである。
【００４２】
４．変数送信におけるプライバシーファイアフォール
変数に含まれる情報を受信者に送信する前あるいはなんらかの方法で送る前に、プログラミング環境は、受信者がその情報を見ることを許されているかを確認しなければならない。もし受信者が許可を有してない場合、プログラミング環境は、受信者がその変数に含まれる情報を見ることを許すかどうかをユーザに尋ねるべきである。もし受信者がそれを見ることをユーザが許す場合、そのサービスは正常に続き、情報は受信者に渡る。もしユーザがその要求を拒絶する場合、あるいは何らかの理由でプログラミング環境がユーザに尋ねない若しくは尋ねることができない場合は、そのサービスは終了し、あるいは、変数に含まれる情報を受信者に可視可能にさせる活動をスキップした後でそのサービスは続行する。この処理はプライバシーファイアフォールと称される。
【００４３】
プログラミング環境がユーザに許可を求めることができない場合が起こり得、例えば、サービスがイベント（例えば株式価値がある閾値を下回る）によって開始され、ユーザとのやり取りなしで実行される場合があり得る。
【００４４】
この特徴は、プログラミング環境の外側で変数内に含まれる情報を送信あるいは表示する唯一の方法である信頼された関数呼び出しを行うことによって実行され得る。Ｊａｖａ（登録商標）バーチャルマシンでは、これは、Ｊａｖａ（登録商標）ネイティブインターフェース（ＪＮＩ）クラスの追加を無効にすることによって、そして、要点２で述べた入力クラスと一致して、信頼されたクラスを情報出力のために利用可能にすることによってのみなされ得る。
【００４５】
スクリプト言語では、これは、信頼された出力関数を与えることによってのみ達成され得る。
【００４６】
５．実行フローの影響（impact）
１つの追加が、信用できるプライバシーファイアフォールを作成するため、上述した変数の扱いに必要である。上述した規則だけを用いて、サービス開発者は、サービスの実行フローを決定するための秘密情報を用いることによって、依然として秘密情報を送信できる。これは、以下の例３、４に示される。
【００４７】
例３：プライバシーアクセス権を回避する実行フローを用いる
String Age = "28"; //年齢（Ages）プライバシーセッティングはGROUPS(Family, Friends)である。
【００４８】
2004529432.tif 000004
例４：プライバシーアクセス権を回避する実行フローを用いる
2004529432.tif 000005
変数に含まれる全ての情報及び例３、４で送信される定数は、ＡＬＬトークン（ＡＣＬ型実行）に設定されたプライバシーアクセス権を有するので、この方法は、常にプライバシーファイアフォールを始動させることなく、ユーザの年齢が誰にでも送信されることを可能にする。明らかにこれは望まれない。
【００４９】
この種の違反に対向するため、プログラミング環境は、サービスの実行におけるある点で実行フローに影響を与える全ての変数のプライバシーアクセス権の共通部分を追跡しなければならない。その結果としてのプライバシーアクセス権（サービスの実行の至る所で動的に変化する）は、さらに“実行フロープライバシーアクセス権”と呼ばれる。実行フローがいずれの変数にも基づかない場合、実行フロープライバシーアクセス権は全体として秘密でない（ＡＬＬトークン）ものとして設定されなければならない。
【００５０】
新たな変数が生成されると、そのプライバシーアクセス権は、それが基づく全ての変数のプライバシーアクセス権と、実行フロープライバシーアクセス権との両方の共通部分に設定されなければならない。このことは次のことを意味する。即ち、新たな変数が定数値を伴って（別の変数に基づかない）定義された場合、その新たな変数のプライバシーアクセス権は実行フロープライバシーアクセス権に設定され、それはかならずしも要点３で述べられたようなＡＬＬトークンとは限らない。
【００５１】
さらに、受信者に情報を送信するために関数が用いられる場合、受信者がその情報を見ることを許容されているか否かをチェックするとき、その関数は実行フロープライバシーアクセス権を含んでいなければならない。このチェックは、その関数が送信する必要のある変数のプライバシーアクセス権チェックに加えて実行されなければならない。関数が定数（上記例１に示されるような）を送信する必要のあるとき、送信に適用されるプライバシーアクセス権は実行フロープライバシーアクセス権に等しい。もし関数が単一の変数に含まれる情報を送信する必要があるのであれば、送信に適用されるプライバシーアクセス権は、実行フロープライバシーアクセス権を伴った変数のプライバシーアクセス権の共通部分に等しい。
【００５２】
この規則の具体的な実行は以下に述べられる。
【００５３】
６．実行
ソフトウェアプラットフォームにおいて、サービス作成者（ユーザ、プラットフォームオーナ、（信頼されていない）第３者開発者など）は、オンラインサービスを作るシステム及び方法（出願番号09/643,749）の特許に述べられたような、オープンサービス作成環境を用いてサービスを作成できる。オープンサービス作成環境（OSCE：Open Service Creation Environment）内で、彼らは、ビルディングブロックを互いにリンクし、また、それらを設定することによってサービスを作成できる。そのプラットフォーム内で、そのサービスは、ある汎用プログラム言語（GPL：Generic  Programming  Language）スクリプトへ変換され、それはビルディングブロックを表すコードを呼び出すために関数呼び出しと同等のものを用いる（いくつかのビルディングブロックは全体としてGPLへ変換され、関数呼び出しを必要としない）。
【００５４】
GPLは、サービスが実行されるときに解釈される、XMLに基づくスクリプト言語である。サービスの実行は、いつも特定のユーザのために開始する。なぜなら、ユーザが直接サービスの開始を要求する（例えばクリックすることによって）、あるいは、ユーザがサービス開始の引き金となるイベントを設定する（例えばＥメールが入ってくる）からである。
【００５５】
サービスの実行が要求されたとき、プラットフォームは、サービスが実行されるユーザに関する情報を変数内に満たすことによって始動し、そして、これらの各変数に適正なプライバシーアクセス権を設定する。プライバシーアクセス権は、各変数に対する内部構造へ接触するアクセス制御リスト（要点１で述べられたような）を用いて設定される。ＡＣＬは、変数を見る特権が与えられた１以上の人々を各ノードが識別する、リンクされたリストである。３タイプのノード、即ち、ＡＬＬ（全ての人が変数を見ることができる）、ＵＳＥＲ（特定のユーザが変数を見ることができる）、ＧＲＯＵＰ（特定のグループが変数を見ることができる）が定義される。
【００５６】
例えば、変数FirstName、LastName、Age、StreetAddress、City、Zip、PhoneNumberが全てプラットフォームによって設定され得る。これらの変数に設定される情報は、プラットフォームのユーザデータベースから検索され、このデータベースは、ユーザがプラットフォームオーナの客あるいは加入者になったときに入れられる。この情報の存在は、ユーザがプラットフォームオーナを信頼したことを意味する。変数が初期化されたプライバシーアクセス権（ＡＣＬＳ）は、ユーザが要求したもの、プラットフォームオーナによって設定された初期値、及びプラットフォーム自体によって設定された初期値に基づく（この優先順序で）。プラットフォームオーナによって設定された初期値は、プラットフォームが動作する国におけるプライバシー保護に対する適法な要求を反映させるべきである。
【００５７】
これらの変数の存在は、サービス作成者がサービスにおいてこれらを用いることを、そして、変数に含まれる情報に基づいてサービス内の基礎決定を行うことを許容する。例えばサービスは、ユーザが男性あるいは女性か、また、ユーザの年齢によって、異なって動作し得る。サービスが、特定のユーザに対するサービスを個人化するためにプライベート情報を単に用いる限り、そして、その情報をサービス作成者あるいは第３者に送信しようとしない限り、プログラムはいつもプライバシーファイアフォールに阻害されることなく稼働する。サービス作成者は、これらの変数が存在し、サービスの作成の間これらを用いることができることを知っている。変数は、作成の間定義されず（サービス作成者がそれらを見ることができる場合）、あるいは、定義され且つサービス作成者自身の秘密情報を含む。
【００５８】
サービスの実行が開始される前に初期化される別の変数は、要点５で述べたような実行フロープライバシーアクセス権を実行するＥＸＥＣ変数である。ＥＸＥＣ変数の値は重要でないけれども、そのＡＣＬはサービスの実行のいたるところで非常に重要である。ＥＸＥＣ変数が生成されたとき、そのＡＣＬはＡＬＬトークンに設定される。
【００５９】
サービス実行が開始される前に生成された全ての変数は読込みのためだけに設定され、ＧＰＬプログラムはそれらの値を変更できない。
【００６０】
いったんこれらの変数が初期化されると、ソフトウェアプラットフォームはＧＰＬプログラムの解釈（実行）を開始する。ＧＰＬプログラミング言語は、変数のプライバシーアクセス権を直接に変更することをサポートしない。全てのプライバシーアクセス権はＧＰＬスクリプト以外のコードによってなされる。
【００６１】
プログラムが、１以上の変数に基づいてプログラムフローの決定をなすたびに、ＥＸＥＣ変数のＡＣＬは、専用スタックにプッシュされ、それは、変数のこれらを伴う、現存するＡＣＬの共通部分に設定される。フロー決定がこれらの変数に基づいたコードセクションからプログラムフローが抜けたとき、ＥＸＥＣ変数は、スタックからポップされたその以前のＡＣＬに戻る。このことは、注釈における、ＥＸＥＣ変数に対するＡＣＬ変化を示す例５に示される。
【００６２】
例５：実行フロープライバシーアクセス権の動き
2004529432.tif 000006
新たな変数が生成されたとき、あるいは変数値が変更されたとき、そのＡＣＬは、それが基づく全ての変数のＡＣＬと、そのときのＥＸＥＣ変数のＡＣＬとの共通部分に設定される。新たな変数が定数に基づく場合（現存する変数ではない）、その変数に対するＡＣＬはいつもそのときのＥＸＥＣ変数のＡＣＬと同じである（例５参照）。
【００６３】
サービス実行が開始される前に生成された変数、及びＧＰＬプログラムによって生成された新たな変数（現存する変数及び定数データに基づく）以外で、変数を生成あるいは修正する唯一の他の方法は、関数呼び出しを介してである。ＧＰＬメインプログラムあるいはサブルーチンにおいて利用可能な全ての関数呼び出しは、ビルディングブロックを表す（プライベートファイアフォール規則を守る）信頼されたコードである。各ビルディングブロックが特定の目的のために用いられたとき、そのビルティングブロックコードは、それが生成あるいは修正する各変数に、正しいＡＣＬを設定できる。新しい変数を設定するビルディングブロックの例は、ユーザの位置を検索するビルディングブロック、ファイナンス情報ビルディングブロック、天気情報ビルディングブロックを含む。もしビルディングブロックコードが、新しい変数に対する正しいＡＣＬについて１００％確実でないのならば（例えばサービス作成者によって設定される入力フィールドに基づく変数）、そのコードは、要求される最も厳しいＡＣＬをいつも選択する。
【００６４】
同様に、プラットフォーム以外で第３者に利用可能なデータを作成する唯一の方法は、信頼されたビルディングブロックコード（関数）を介することである。情報を表示しあるいは何とかして送信するために信頼された関数を用いるとき、関数はいつも、データ伝送が許容されていることを確認するために、プライバシーファイアフォールアルゴリズムを用いる。
【００６５】
図４は、プラットフォームにおいて用いられるプライバシーファイアフォールアルゴリズムの概要を示す。ＧＰＬプログラムが、プラットフォーム以外へ情報を送る関数を呼び出すときはいつも、その関数は、プライバシーファイアフォールアルゴリズムを発動し、それに対し、現在のユーザについての情報、どの変数が送信されるか、及び受信者のアドレスを与える。そのアルゴリズムによる第１のステップは、受信者を識別して、受信者のアドレスを特定のユーザＩＤへ変えることである。受信者に対するユーザＩＤを見つけることができなかった場合は、以下に続く多くのチェックは有効なく、図４に示すようにスキップされる。このことは、データベースにおけるどのユーザにも関連しないアドレスによって受信者が識別されたとき、多くの受信者が存在したとき、あるいは受信者が、信頼された外部アプリケーションに関連しないアプリケーションｉｄによって識別されたときに起こり得る。次に、そのアルゴリズムは、受信者がユーザ、あるいはプラットフォームオーナ（ユーザによって信頼されている）であるかどうかをチェックし、もしそうならば、送信を許可する。そのアルゴリズムは、次に、誰がそのサービスを作成したかをチェックし、もしそれがユーザによって作成されたのならば、データの伝送を許可する（ユーザは、決して自分自身の秘密データを、それを有するべきでない人々に送信するサービスを作成しない）。そのアルゴリズムは、次に、現在のＥＸＥＣ変数ＡＣＬが、受信者へのデータの送信を許容するかどうかをチェックする。このことは、悪意のあるプログラマがプログラムフローに影響を与える変数を使用できないようにし、そのようにして、前述したように、秘密データを開放する。もし、このチェックにおいて、受信者がデータを見ることを許されないことが分かったら、（データが受信者へ示されるのを依然として承認し得る）次及び最後のチェックは、スキップされる。最後のチェックは、受信者が実際に、伝送される変数内に含まれる情報を見ることを許されるかどうかである。もし受信者がその情報を見ることを許されるのであれば、その伝送は実行される。受信者は最後の２つのテストに対してユーザＩＤによって識別されていない可能性があり、その場合、その情報が全て（ＡＬＬ）へ可視可能であるかどうかだけが問題である。
【００６６】
もしこれらのチェックの後、伝送が依然として否定される場合、プライバシーファイアフォールは、最後に、ユーザに直接尋ねることによって許可を得ることを試みる。これは、図５に示すようなリクエスタをユーザに示すことによってなされる。もし何らかの理由でこのリクエスタをユーザに示すことができない場合は、伝送は常に拒否される。このことは例えば、実行されているサービスがプッシュサービス（タイマーのようなイベントに基づいて開始される）であり、サービスが実行されるユーザが、電源の切れたワイヤレス装置を有している場合に起こり得る。そのリクエスタにおいて、ユーザには、伝送を拒否（Ｎｏ）あるいは承認（Ｙｅｓ）する選択が提示される。
【００６７】
伝送を承認するか否かについて知識に基づいた決定をユーザがなすことができるようにするため、プライバシーファイアフォールアルゴリズムは、どんな情報がどんな受信者に伝送されるのかを正しく識別するために必要な全ての情報を常に提供する。ＥＸＥＣ変数のＡＣＬが、受信者が伝送されるデータを見ることを許容する場合、エンドユーザに与えられる情報は（ａ）受信者を識別する情報、（ｂ）全ての読出しだけの秘密変数、（ｃ）全ての他の秘密変数及びそれらの内容、を含む。ユーザが見ることを許される（そしてプライバシーファイアフォールの引き金とならない）変数は表示されない。読出しだけの秘密変数の名前は、プログラムが実行を開始する前に決定される。それらはプログラムによって変更できず、どんな情報が送信されるのかを正しく識別する名前を有する。それ故、ユーザには、秘密変数の名前が伴って提示され、それらの内容（例えばPendersに代わるLastName）は提示されない。ＥＸＥＣ変数のＡＣＬが、現在の受信者が伝送される情報を見ることを許さない場合、伝送される全ての情報（そのタイプ及びプライバシーアクセス権から独立している）は、承認のためユーザに提示される。この情報に基づいて、ユーザは、次に、その情報の伝送を許可あるいは拒否するかを決定できる。
【００６８】
プライバシーファイアフォールアルゴリズムは、情報を伝送する許可を与える場合、成功コードを返す。その機能はその伝送を実行し、通常のサービスが続く。もしプライバシーファイアフォールがその承認を拒否する場合、失敗コードを返す。その機能は直ちに、インタプリタレベルの失敗コードを伴って戻り、インタプリタはサービスの実行を終了する。
【００６９】
プラットフォームで生成されるサービスがどのようなもので、エンドユーザが何を見ることができるのかの例は、図６に示される。図６は、ピザレストランのオーナあるいは関連会社によって生成された、ピザを注文する簡易なサービスを示す。エンドユーザは、欲するピザのスタイル及びサイズを選択することを促され、その後、ピザが自宅アドレスに配達される。エンドユーザの名前、住所、電話番号、クレジットカードを知っている無線キャリアがそのプラットフォームを主催したと想定される。エンドユーザは、注文を完了するためにこの情報を入力する必要はなく、それは、サービスがそれにアクセスするからである。しかしながら、サービスが、ユーザの名前、住所、クレジットカード番号を送信しようとすると、プライバシーファイアフォールは、プライベート情報が送信されようとしていることを検出し、ユーザにこれを許容するかどうかを尋ねる。もしユーザの答えがイエスであれば、オーダ及びユーザの情報を伴ったファックスがピザレストランに送信される。もし、ユーザの答えがノードであれば、そのサービスは何も送信することなく直ちに終了する。
【図面の簡単な説明】
【００７０】
【図１】開発及び実行環境を用いてサービスを作成及び使用する基本的なアーキテクチャを示す。
【図２】ユーザの所有する装置内に実行環境が組み込まれた場合におけるこのアーキテクチャの適用例を示し、これは実行環境がスクリプトインタプリタあるいはバーチャルマシンから構成される場合であり得る。
【図３】開発環境及び実行環境の両方が、信頼されたプラットフォームに組み込まれた場合におけるこのアーキテクチャの適用例を示す。
【図４】プライバシーファイアフォールアルゴリズムを詳細に示す。
【図５】典型的な情報送信承認リクエスタの画面ショットを示す。
【図６】本発明に従った簡易なピザ注文サービスの構築方法を示し、プライバシーファイアフォールを備えたプラットフォームにおいてエンドユーザがそれを用いる際に見うるものを示す。
【図７】新たな変数が３つの現存する変数に基づく場合における新たな変数のプライバシーアクセス権の設定方法を示す。
【図１】
2004529432.tif 000007
【図２】
2004529432.tif 000008
【図３】
2004529432.tif 000009
【図４】
2004529432.tif 000010
【図５】
2004529432.tif 000011
【図６】
2004529432.tif 000012
【図７】
2004529432.tif 000013
【国際公開パンフレット】
2004529432.tif 000014
2004529432.tif 000015
2004529432.tif 000016
2004529432.tif 000017
2004529432.tif 000018
2004529432.tif 000019
2004529432.tif 000020
2004529432.tif 000021
2004529432.tif 000022
2004529432.tif 000023
2004529432.tif 000024
2004529432.tif 000025
2004529432.tif 000026
2004529432.tif 000027
2004529432.tif 000028
2004529432.tif 000029
2004529432.tif 000030
2004529432.tif 000031
2004529432.tif 000032
2004529432.tif 000033
2004529432.tif 000034
2004529432.tif 000035
2004529432.tif 000036
2004529432.tif 000037
2004529432.tif 000038
【国際調査報告】
2004529432.tif 000039
2004529432.tif 000040