(57)【要約】  階層暗号システムにおける階層をなすドメインオーソリティにおいて用いるドメインオーソリティ１３。ドメインオーソリティ１３は、ドメイン秘密鍵と、一または複数の属性表現とに基づいてユーザ秘密鍵を生成し、前記属性表現に対応する一組の属性に関連するユーザ秘密鍵を取得するユーザ秘密鍵生成器２１を有し、ドメイン秘密鍵は、親ドメインオーソリティのドメイン秘密鍵、または階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵とに基づき、属性表現は前記階層とは独立である。復号器は前記ユーザ秘密鍵を用いる。暗号化器は復号器により復号可能な暗号文を生成する。
2014531850.tif 000002
【特許請求の範囲】
【請求項１】
階層をなすドメインオーソリティと、
ユーザにアサイン可能な複数の属性と、を有する暗号システムであって、
前記階層中のドメインオーソリティは、
ドメイン秘密鍵と一または複数の属性表現に基づきユーザ秘密鍵を生成し、前記鍵の将来の所有者にアサインされる一組の属性の属性表現に基づきユーザ秘密鍵を取得するユーザ秘密鍵生成器を有し、
前記ドメイン秘密鍵は、
ａ）親ドメインオーソリティのドメイン秘密鍵、または
ｂ）前記階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵に基づき、
前記属性表現は前記階層とは独立である、
暗号システム。
【請求項２】
前記ドメインオーソリティは元のドメイン秘密鍵を有する元のドメインオーソリティであり、
前記階層をなすドメインオーソリティ中の子ドメインオーソリティの、前記元のドメイン秘密鍵に基づくさらに別のドメイン秘密鍵を生成するドメイン秘密鍵生成器をさらに有する、
請求項１に記載の暗号システム。
【請求項３】
前記システムは、前記階層をなすドメインオーソリティに関する公開鍵を含む公開情報を有し、
前記子ドメインオーソリティのさらに別のドメイン秘密鍵は、前記元のドメイン秘密鍵の生成に使われていない、前記属性とは独立な前記公開鍵の一部に基づく、
請求項２に記載の暗号システム。
【請求項４】
前記子ドメインオーソリティのさらに別のドメイン秘密鍵は、前記階層をなすドメインオーソリティ中の先行ノードに関連する暗号文の復号をさせないように構成された、
請求項２に記載の暗号システム。
【請求項５】
前記属性表現の少なくともいくつかは、前記階層中の一または複数のドメインオーソリティに公に利用可能である、請求項１に記載の暗号システム。
【請求項６】
前記ユーザ秘密鍵は、
第１のコンポーネントは前記階層をなすドメインオーソリティにおける一を表し、
第２のコンポーネントは前記ユーザにアサインされた前記一組の属性を表し、
前記ユーザ秘密鍵生成器は、前記第１コンポーネントと前記第２コンポーネントを乱数値により結合するように構成された、
請求項１に記載の暗号システム。
【請求項７】
複数の属性に対するポリシーに関連し、前記階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信し、
前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行されたユーザ秘密鍵に基づいて前記暗号文を復号する、するように構成された復号器をさらに含み、
前記ユーザ秘密鍵に対応する前記一組の属性が前記暗号文のポリシーを満たすとき、前記ユーザ秘密鍵により前記暗号文の復号が可能になる、
請求項１に記載の暗号システム。
【請求項８】
前記ユーザ秘密鍵は、前記ユーザ秘密鍵を生成する前記階層をなすドメインオーソリティにおける、前記階層中の先行ノードの数を表すレベルに関連し、
前記階層をなすドメインオーソリティの少なくとも一部は、前記階層中の所定レベルまでのドメインオーソリティよりなり、前記ユーザ秘密鍵を生成したドメインオーソリティのレベルが前記所定レベル以下であるときにのみ、前記ユーザ秘密鍵により暗号文の復号ができる、
請求項７に記載の暗号システム。
【請求項９】
前記階層をなすドメインオーソリティの少なくとも一部に関する公開鍵情報と、一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するように構成された暗号化器をさらに含む、請求項１に記載の暗号システム。
【請求項１０】
前記階層の少なくとも一部は、ルートオーソリティと、前記ルートオーソリティの子孫ノードの所定数の世代とを有する、請求項７または９に記載の暗号システム。
【請求項１１】
階層属性ベース暗号システムにおいて用いるユーザ秘密鍵を生成する方法であって、
親ドメインオーソリティのドメイン秘密鍵、またはｂ）階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵とに基づいて、ドメイン秘密鍵を生成するステップと、
ドメイン秘密鍵と、前記階層をなすドメインオーソリティとは独立な一または複数の属性表現とに基づきユーザ秘密鍵を生成し、前記鍵の将来の所有者にアサインされる一組の属性の属性表現に基づきユーザ秘密鍵を取得するステップとを有する、方法。
【請求項１２】
階層属性ベース暗号システムにおいて用いる暗号文を復号する方法であって、
複数の属性に対するポリシーに関連し、階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信するステップと、
前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行された、一組の属性に関連するユーザ秘密鍵に基づいて前記暗号文を復号するステップとを有し、
前記ユーザ秘密鍵に対応する前記一組の属性が前記暗号文のポリシーを満たすときにのみ、前記暗号文を復号するステップが可能になる、方法。
【請求項１３】
階層属性ベース暗号システムにおいて用いるメッセージを暗号化する方法であって、
前記階層をなすドメインオーソリティの少なくとも一部に関する公開鍵情報と、一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するステップを有する、方法。
【請求項１４】
コンピュータシステムに、請求項１１ないし１３いずれか一項に記載の方法を実行させる命令を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は階層的属性ベースの暗号システムに関する。
【背景技術】
【０００２】
ホームヘルスケアを介した従来のヘルスケアからウェルネスサービスまで広がるケアサイクルに関与する複数の異なるパーティ間で、データ交換の必要性が高まっており、デジタル的に格納されたヘルスデータのセキュアな管理が重要な問題となっている。今日のアプローチは、物理的手順及び管理的手順で補足された従来のセキュリティメカニズムに基づくものであり、ヘルス情報の利用が制限され、ヘルスレコードの交換が面倒になっている。デジタルポリシー管理及び実施技術は、（１）データが転送されるインフラストラクチャまたは機関境界とは独立にデータを保護する、異質なネットワークにおけるエンド・ツー・エンドプライバシー及びセキュリティ；（２）ヘルスケアアプリケーションにおいて非常に重要な、属性ベースのアクセス制御メカニズムの上での使用制御；及び（３）特定ネットワークの準備の必要性をなくし、実装と維持のコストを低減する、ネットワークにとらわれずにシステムを開発できる単純な相互利用可能なセキュリティアーキテクチャ；を提供することによりこれらのアプローチより優れている。
【０００３】
かかるセキュリティシステムの重要なコンポーネントは、非特許文献１により知られている属性ベース暗号方式（ＡＢＥ）であり、具体的には、暗号文ポリシーＡＢＥ方式（ＣＰ−ＡＢＥ）である。この方式では、データは、好適な一組の属性を有するユーザのみがデータを復号できるように、アクセス制御ポリシーとしても知られるアクセスストラクチャにより暗号化される。データを復号するため、ユーザは、自分が有する一組の属性に対応する秘密鍵を、トラステッドオーソリティ（trusted  authority）から入手する。
【０００４】
既知の属性ベース暗号方式は単一のルートオーソリティ（root  authority）を使用する。すなわち、システム中の全ユーザは、セントラルオーソリティ（central  authority）から自分の属性に関連する秘密鍵を取得する。しかし、大きな分散した組織では、このアプローチは非現実的である。
【０００５】
階層的暗号方式により組織の階層を確立でき、一般的に組織の階層の下位にいる人にいくつかのタスクを委任できる。セントラルオーソリティはドメインオーソリティ（domain  authorities）に秘密鍵を発行するだけである。これにより、セントラルオーソリティの手間が減少し、ユーザの利便性があがる結果となる。セントラルオーソリティにコンタクトする替わりに、ユーザは自分のドメイン（またはデパートメント）オーソリティにコンタクトして、自分の秘密鍵を取得する。アイデンティティベース階層的暗号方式の例が非特許文献２に開示されている。
【０００６】
特許文献１はユーザ制御暗号に関する方法を開示している。このシステムでは、ルート鍵（root  key）は、患者の秘密（例えば、バイオメトリック、パスワード）から求められる。このルート鍵を用いて、一組の復号及び暗号化鍵を求める。これらの鍵は階層に従う。この階層は、暗号化及び復号鍵の機能を黙示的に規定する。例えば、階層中のあるレベルの復号鍵は、対応する暗号化鍵を用いて暗号化された文書のみを復号できる。
【０００７】
非特許文献３を参照。米国イリノイ州シカゴのハイアットリージェンシーシカゴは、階層的アイデンティティベース暗号（ＨＩＢＥ）システムと暗号文ポリシー属性ベース暗号化（ＣＰ−ＡＢＥ）システムを組み合わせて、アクセス制御と委任を提供する階層的属性ベース暗号（ＨＡＢＥ）モデルを開示している。性能・表現性トレードオフ（performance-expressivity  tradeoff）を行って高い性能を実現するＨＡＢＥ方式が開示されている。ドメインマスター（ＤＭ）が、ドメインのユーザまたは互いに素な一組の属性のいずれかを管理できるようにしてもよい。属性に対応する鍵は、その属性を管理しているドメインマスターにより発行される。このアプローチには次の欠点がある：１）暗号文のサイズと復号コストが階層の深さに依存し、階層の深さとともに増加する。２）暗号化の際、暗号化器はそれぞれのドメインと階層を指定しなければならない。すなわち、新しいドメイン（例えば、病院）がネットワークに参加すると、新しく参加したメンバーのユーザは、アクセス制御ポリシーを満たしていても、すでに暗号化されたデータにはアクセスできない。
【０００８】
非特許文献４は、階層の深さにかかわらず、２つの双線形マップ計算を用いて復号を実行する階層アイデンティティベース暗号（ＨＩＢＥ）システムを開示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２０１０/０２４６８２７A１
【非特許文献】
【００１０】
【非特許文献１】J.  Bethencourt,  A.  Sahai,  and  B.  Waters,  「Ciphertext-Policy  Attribute-Based  Encryption」Proceedings  of  the  ２００７  IEEE  Symposium  on  Security  and  Privacy,  pages  ３２１-３３４,  ２００７
【非特許文献２】C.  Gentry  et  al.,  「Hierarchical  ID-Based  Cryptography」ASIACRYPT  ２００２,  LNCS  ２５０１,  pp.  ５４８‐５６６,  Springer-Verlag  Berlin  Heidelberg,  ２００２
【非特許文献３】Guojun  Wang,  Qin  Liu  and  Jie  Wu,「Hierarchical  Attribute-Based  Encryption  for  Fine-Grained  Access  Control  in  Cloud  Storage  Services」  １７th  ACM  Conference  on  Computer  and  Communications  Security,  October  ４-８,  ２０１０
【非特許文献４】Dan  Boneh,  Xavier  Boyen,  Eu-Jin  Goh「Hierarchical  Identity  Based  Encryption  with  Constant  Size  Ciphertext」  Cryptology  ePrint  Archive:  Report  ２００５/０１５  (http://eprint.iacr.org/２００５/０１５.pdf)
【発明の概要】
【００１１】
階層属性ベース暗号システムを改良すると有利である。
【００１２】
この問題をよりうまく解決するため、本発明の第１の態様による暗号システムは、階層をなすドメインオーソリティと、ユーザにアサイン可能な複数の属性とを含み、前記階層中のドメインオーソリティは、ドメイン秘密鍵と一または複数の属性表現に基づきユーザ秘密鍵を生成し、前記鍵の将来の所有者にアサインされる一組の属性の属性表現に基づきユーザ秘密鍵を取得するユーザ秘密鍵生成器を有し、前記ドメイン秘密鍵は、親ドメインオーソリティのドメイン秘密鍵、または前記階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵に基づき、属性表現は前記階層とは独立である。
【００１３】
階層とは独立な属性の使用により、ローカルドメインオーソリティは、ユーザに必要な一組の属性により、そのユーザの鍵を発行できる。このユーザにアサインされる必要があるが、ユーザ鍵を発行するドメインオーソリティにはアクセス不可である属性に責任を有する他のどのドメインマスターにもコンタクトする必要はないその結果、提案のシステムにより、属性ベース階層的暗号システムにおける鍵生成の委任ができるようになる。
【００１４】
以下、ドメイン秘密鍵は元のドメイン秘密鍵と呼び、ドメインオーソリティは元のドメインオーソリティと呼ぶが、特に元のドメインオーソリティによるさらに別のドメイン秘密鍵の生成を説明する時にそうする。これは用語だけの問題である。「元の」との形容詞は、ドメイン秘密鍵やドメインオーソリティの特性を指すものではない。
【００１５】
元のドメインオーソリティは、階層をなすドメインオーソリティにおける子ドメインオーソリティに対してさらに別のドメイン秘密鍵を生成するドメイン秘密鍵生成器を有する。このさらに別のドメイン秘密鍵は、元のドメイン秘密鍵に基づいて生成される。このように、ドメイン秘密鍵の発行は、個々のドメインオーソリティに委任でき、ルートレベルで行う必要は必ずしもない。このように、ルートオーソリティが第１世代のドメインオーソリティ、すなわちレベル１ドメインオーソリティのドメイン秘密鍵を生成し、一世代のドメインオーソリティの各ドメインオーソリティが次の世代のドメインオーソリティのドメイン秘密鍵を生成するという意味で、階層システムをなすドメインオーソリティが生成される。このように、レベル１ドメインオーソリティは、レベル２のドメイン秘密鍵を生成し、以下同様である。
【００１６】
本システムは、階層をなすドメインオーソリティに関連する公開鍵を含む公開情報を有し、子ドメインオーソリティ、すなわち次の世代のドメインオーソリティ中のドメインオーソリティのさらに別のドメイン秘密鍵は、この公開鍵の一部に基づく。好ましくは、前記公開鍵の一部は、元のドメイン秘密鍵を生成でまだ用いられていないものである。公開鍵は階層に関連するので、公開鍵の一部は同様に属性とは独立である。
このように、ドメインオーソリティの逐次的生成は、逐次的に公開鍵のより大きな部分に基づく。これにより、暗号化器は、公開鍵の適切な部分を用いることにより、生成のサブセットのための暗号化ができる。
【００１７】
本発明の一態様によると、子ドメインオーソリティのドメイン秘密鍵によっては、階層の子孫に関連する暗号文の復号ができない。すなわち、暗号文がユーザのレベルより高い階層のレベルに関連する場合、暗号文はそのユーザにより復号して読むことができない。
【００１８】
公開鍵の新しい部分を元のドメイン秘密鍵の既存の鍵情報と結合することにより、階層内の子孫世代に関連する公開鍵の部分のみを用いて生成された暗号文を復号できない新しいドメイン秘密鍵を生成できる。このように、属性ベースの区別に加えて追加的区別オプションを利用できるようにする。これは、適切な一組の属性を有することとは別に、ユーザは、暗号文を復号できるようにするために、階層中の十分高いレベルが必要であることを意味する。同時に、暗号文に関連するポリシーが満たされる限り、システム中の全ての世代により復号され得る暗号文を生成することも可能である。
【００１９】
属性表示は、一組の属性に関連するユーザ秘密鍵を生成するのに使われるが、階層中のすべてのドメインオーソリティに公に利用可能であってもよい。これにより、任意のドメインオーソリティが、どれかの属性に関連するユーザ秘密鍵を生成できる。さらに、表現はシステム全体または世界に対して公開されてもよい。これにより、同じ表現が、メッセージの暗号化のために暗号化器により使われることができる。
【００２０】
ユーザ秘密鍵は、階層中の位置を表す第１コンポーネントと、鍵のユーザすなわちその鍵の将来の所有者にアサインされた一組の属性を表す第２コンポーネントとを含み得る。ユーザ秘密鍵生成器は、第１コンポーネントと第２コンポーネントを乱数値により結合するように構成されてもよい。このように、悪意あるユーザによるユーザ秘密鍵の修正が防止され得る。言い換えると、第１のコンポーネントは、両方のパーティにおけるランダム化ファクタを用いて第２のコンポーネントに結合される。これは、ユーザ秘密鍵の再ランダム化または改変により、ユーザ秘密鍵が無効になるとの効果を有する。結果として、他のユーザと鍵を共有することによる乱用を思いとどまらせることができる。鍵の共有は改変されていないユーザ秘密鍵の共有によってのみ可能であり、ユーザをトレース可能であるからである。
【００２１】
本発明の他の一実施形態によると、復号器を有する階層的属性ベース暗号システムが提供される。復号器は、複数の属性に対するポリシーに関連し、階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信し、前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行されたユーザ秘密鍵に基づいて前記暗号文を復号するように構成され、ユーザ秘密鍵に関連する一組の属性が暗号文のアクセスポリシーを満足する場合に、ユーザ秘密鍵により暗号文の復号ができる。
【００２２】
これにより、復号器は、ドメインオーソリティから直接ユーザ秘密鍵を取得できる。セントラルオーソリティにコンタクトする必要はない。ドメインオーソリティは、所望の一組の属性でユーザ秘密鍵を生成する完全に委任された権限を提供され得るからであり、属性が階層とは独立しているからである。
【００２３】
本発明の他の一実施形態によると、ユーザ秘密鍵により、ユーザ秘密鍵を発行した前記階層をなすドメインオーソリティのうちの子孫に関連する暗号文の復号はできない。これにより、階層におけるユーザのレベルに基づき暗号文を復号できる一群のユーザを設定できる。
【００２４】
本発明の他の一態様によると、前記ユーザ秘密鍵は、前記ユーザ秘密鍵を発行した前記階層をなすドメインオーソリティにおける、前記階層中の先行ノードの数を表すレベルに関連し、前記階層をなすドメインオーソリティの少なくとも一部は、所定レベルまでのドメインオーソリティよりなり、前記ユーザ秘密鍵を発行したドメインオーソリティのレベルが前記所定レベル以下であるときにのみ、前記ユーザ秘密鍵により暗号文の復号ができる。
【００２５】
本発明の他の一態様によると、暗号化器を有する階層属性ベース暗号システムが提供され；暗号化器は、ドメインオーソリティの階層の少なくとも一部と複数の俗低に対するポリシーに関する公開鍵情報に基づいてメッセージを暗号化して、そのポリシー及びドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得するように構成され得る。
【００２６】
よって、暗号化器は、ポリシーを満たす一組の属性がアサインされたユーザのみがデータを付く号できるように、そのデータを暗号化できる。暗号文は特定のドメインに結びつけられる必要はない。また、暗号文を、階層をなすドメインオーソリティの一部のみと関連づけ、その階層の一部のユーザのみがそのデータを復号できるようにすることが可能である。
【００２７】
本発明の一態様では、暗号文と関連づけられた前記階層の少なくとも一部は、ルートオーソリティと、前記ルートオーソリティの所定数の世代の子孫ノードとを有する。子孫は、階層中の親からドメイン鍵を取得する、階層をなすドメインオーソリティのうちのドメインオーソリティである。一般的に、世代は階層中の同じレベルにある一組のドメインである。
【００２８】
このように、階層の一部を選択することにより、その階層内のあるレベルよりしたユーザの暗号文を暗号化できる。これは、例えば、階層をなすドメインオーソリティが、レベルが低いとますます高い権限を有する一組織階層のユーザに対応する場合に、有用である。階層中のユーザのレベルが下がり、そのユーザはより高い権限レベルを有し、ユーザはより多くのメッセージを復号して読むことができる。
【００２９】
他の一態様において、本発明は、階層的属性ベース暗号システムにおける階層をなすドメインオーソリティにおいて使用されるユーザ秘密鍵を生成する方法を提供する。
【００３０】
前記方法は、親ドメインオーソリティのドメイン秘密鍵、または階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵とに基づき、ドメイン秘密鍵を生成するステップと、ドメイン秘密鍵と、前記階層をなすドメインオーソリティとは独立な一または複数の属性表現とに基づきユーザ秘密鍵を生成し、前記鍵の将来の所有者にアサインされる一組の属性の属性表現に基づきユーザ秘密鍵を取得するステップとを有する。
【００３１】
他の一態様において、本発明は、暗号文を復号する方法であって、複数の属性に対するポリシーに関連し、階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信するステップと、前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行された、一組の属性に関連するユーザ秘密鍵に基づいて前記暗号文を復号するステップとを有し、ユーザ秘密鍵に関連する一組の属性が暗号文のポリシーを満足する場合にのみ、ユーザ秘密鍵の復号ができる。
【００３２】
他の一態様において、本発明は、メッセージを暗号化する方法であって、前記階層をなすドメインオーソリティの少なくとも一部に関する公開鍵情報と、一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するステップを有する。
【００３３】
本発明の他の一態様では、コンピュータシステムに上記の一または複数の方法を実行させる命令を含むコンピュータプログラム製品を提供する。
【００３４】
当業者には言うまでもないが、本発明の上記の実施形態、インプリメンテーション、及び／または態様のうち２つ以上を、有用と思われる方法で組み合わせることができる。
【００３５】
画像取得装置、ワークステーション、システム、方法、及び／またはコンピュータプログラム製品の修正や変形は、記載するシステムの修正と変形に対応するが、本説明に基づき当業者により実行できる。
【図面の簡単な説明】
【００３６】
本発明のこれらの態様等は、以下に説明する実施形態から明らかであり、これらの実施形態を参照して説明する。図面中、同じアイテムには同じ参照数字を付した。
【００３７】
【図１】階層的属性ベース暗号システムを示す図である。
【図２】ドメインオーソリティを示す図である。
【図３】階層的属性ベース暗号の方法を示すフローチャートである。
【図４】階層的属性ベース暗号システムに関与するエンティティを示す図である。
【図５】階層的属性ベース暗号システムにおける公開情報を示す図である。
【図６】ドメイン秘密鍵を示す図である。
【図７】ユーザ秘密鍵を示す図である。
【発明を実施するための形態】
【００３８】
ヘルスケア分野における提案の方式に対する複数のユースケースシナリオの一は、異なる病院及びヘルスケア期間が参加して国家的または地域的に結びついたヘルスケアネットワークを形成した時である。かかるヘルスケアネットワークで過去に形成されたものの例としては、オランダのＮＩＣＴＩＺ、英国のＮＨＳ、及びカナダのＩｎｆｏＷａｙがある。例えば、ＮＩＣＴＩＺは、オランダの国家電子ヘルスレコード（ＨＥＲ）インフラストラクチャであり、これによりヘルスケアプロバイダ、患者、ヘルスケア保険会社及び政府がヘルスケア関連データを共有できる。ＮＩＣＴＩＺは、提案の方式のセントラルオーソリティとして機能でき、ＮＩＣＴＩＺに参加した異なる機関は、自分のドメイン／キーオーソリティ（domain/key  authorities）を有するドメインとして機能できる。各メンバー組織のキーオーソリティは、ＮＩＣＴＩＺのセントラルオーソリティにより一または複数の鍵を発行する。ドメインオーソリティは、これらの鍵を用いて、それぞれ自分のドメイン／組織中のユーザの属性により、自分のユーザにかぎを発行する。ヘルスケアでは、ユーザ（医師、看護師など）の役割とその他の属性は、慎重に扱うべき患者のデータへのアクセスを与える基礎として用いられる。
【００３９】
属性ベース暗号方式により、暗号化器は、属性のリストに対するアクセスコントロールポリシーにより、慎重に扱うべきデータを暗号化できる。既存の属性ベース暗号方式ユーザは、セントラルオーソリティにコンタクトして、自分の属性に関連する秘密鍵を取得しなければならない。ユーザは、関連するアクセスコントロールポリシーを満たしていれば、この秘密鍵を用いて、データを復号できる。しかし、かかる方式ではセントラルオーソリティに過重な負荷がかかる。自分の属性に関連する秘密鍵を得るため、各ユーザがセントラルオーソリティにコンタクトしなければならないからである（上記の例では、すべてのメンバー組織におけるヘルスケアワーカーは、自分の役割その他の属性をＮＩＣＴＩＺから取得しなければならない）。また、これはユーザにとっても面倒である。換言すると、現在の属性暗号方式は、通常、ユーザがルート（またはトップ）オーソリティではなくインターミディエイトオーソリティ（intermediate  authority）にコンタクトする組織の階層／ワークフローをサポートしていない。
【００４０】
提案の方式では、（サブ）ドメインオーソリティが属性に関連するユーザに鍵を発行できるようにすることにより、セットアップまたはルートオーソリティに対する負荷は、減らされている。ドメインオーソリティは、許されれば、階層を下方向にまたいで他のユーザにも鍵を発行できる。暗号化の際、関連ドメインを指定する必要はない。暗号化器は、一組の属性に対するアクセスコントロールポリシーにより、データを暗号化するだけでよい。結果として、データは特定のドメインに結びついていないので、新しいドメイン（例えば、追加的ヘルスケア組織）がシステムに参加しても、データを再暗号化する必要はない。また、ここに開示の方式は、一定の暗号文サイズと、階層の大きさと比較した復号コストなど、他の利点を有する。
【００４１】
以下、多数の実施形態を説明する。これらの実施形態は、実装例として提示するだけであり、本発明を限定する意図ではない。
【００４２】
図１は、階層的属性ベース暗号システム、すなわち、ドメインの階層とユーザにアサインされた複数の属性とを含む暗号システムを示す図である。
【００４３】
この図は、セットアップオーソリティ１０、ルートオーソリティ１１、ドメインオーソリティ１２，１３，１５，１６、復号器１４，１７，１９、暗号化器１８、及び伝送チャンネル２０を示す。これらのオブジェクトは別々のデバイスにより実装されてもよい。しかし、これらのエンティティの一または複数を、任意のコンピュータシステム上で実行できるソフトウェアモジュールとして実装することも可能である。また、複数のモジュールの機能を一台の機器に組み込むことも可能である。また、１つのサーバコンピュータを用いて、すべてのモジュールを実装することも可能である。ユーザは、自分が特権を有するモジュールと鍵へのアクセスを提供され得る。また、システムは、分散コンピュータシステム上に実装してもよい。
【００４４】
セットアップオーソリティ１０は、複数の一般的システムパラメータを提供するように構成されている。一般的に、セットアップオーソリティ１０は、システムの寿命の間は一定にとどまる複数のパラメータを決定する。これらのパラメータが固定されると、セットアップオーソリティ１０はもう必要なくなる。ルートオーソリティ１１は、ドメインオーソリティ１２，１３，１５，１６と同じ機能を提供する。しかし、ルートオーソリティ１１は親ドメインオーソリティを有さないので、用いられるアルゴリズムは少し異なる。ドメインオーソリティ１３はより詳細に図２に示す。
【００４５】
ここで詳細に説明するドメインオーソリティ１３は、他のドメインオーソリティ１２，１５，１６を代表する。また、同様の特徴はルートオーソリティ１１にも見つかる。
【００４６】
ドメインオーソリティ１３は、その親オーソリティからドメイン秘密鍵を受信するように構成されている。この例では、第１レベルドメインオーソリティ１３の親オーソリティはルートオーソリティ１１である。第２レベルドメインオーソリティ１５，１６の親オーソリティは第１レベルドメインオーソリティ１３である。
【００４７】
ドメイン秘密鍵は、親ドメインオーソリティのドメイン秘密鍵に基づいて、またはドメインオーソリティの階層のルートオーソリティのルート秘密鍵に基づいて、親オーソリティにより生成される。この例では、第１レベルドメインオーソリティ１３のドメイン秘密鍵は、ルートオーソリティ１１により生成され、ドメインオーソリティ１５、１６の第２レベルドメイン秘密鍵は、第１レベルドメインオーソリティ１３により生成される。
【００４８】
ドメインオーソリティの階層は、ルートオーソリティがツリーのトップにあるツリー構造と見ることができる。ツリーのノードは、ツリー中の先行ノード（predecessor）から自分のドメイン秘密鍵を受信するドメインオーソリティである。復号器１９はツリーのリーフと見なすこともできる。
【００４９】
ドメインオーソリティ１３はドメイン秘密鍵の生成の役割を果たす。追加的にまたは代替的に、ドメインオーソリティ１３はユーザ秘密鍵の生成の役割を果たす。このため、ドメインオーソリティ１３はドメイン秘密鍵生成器２２及び／またはユーザ秘密鍵生成器２１を含み得る。
【００５０】
図２に示すように、ドメインオーソリティ１３はユーザ秘密鍵生成器２１を含む。ユーザ秘密鍵生成器２１は、ドメイン秘密鍵と一または複数の属性表現を受信するように構成されている。これらの属性表現は、ユーザ秘密鍵の将来の所有者にアサインされた一組の属性を表す。
【００５１】
一般的に、ユーザにアサイン可能な各属性は、その属性に一意的なデータを含む、対応する属性表現を有する。これらの属性表現はドメインオーソリティの階層とは独立である。
【００５２】
例えば、属性表現は、セットアップオーソリティ１０またはルートオーソリティ１１により生成される。すべてのドメインオーソリティにより同じ表現が使われてもよい。これは、表示がドメインオーソリティのサブセットによってのみ使われる可能性を排除しない。ユーザ秘密鍵生成器２１は、ユーザ秘密鍵を生成するように構成されている。このユーザ秘密鍵は、ドメインオーソリティ１３のドメイン秘密鍵と、ユーザの一組の属性に対応する属性表現とに基づき生成される。特に、ユーザ秘密鍵が生成されるユーザにアサインされた属性が、鍵の将来の所有者にアロケートされる。取得されたユーザ秘密鍵は、属性表現に対応する一組の属性に関連付けられる。さらに、ドメインオーソリティの階層レベル及び／または位置は、ユーザ秘密鍵に表される。
【００５３】
上記の説明から分かるように、ドメインオーソリティはそれ自信のドメイン秘密鍵に基づき、さらに別のドメイン秘密鍵を生成できる。後者のドメイン秘密鍵は、以後、元のドメイン秘密鍵と呼ぶ。新しいドメイン秘密鍵を生成するドメインオーソリティは、以後、元のドメインオーソリティと呼ぶ。さらに別のドメイン秘密鍵を生成できるドメインオーソリティは、ドメイン秘密鍵生成器２２を有する。ドメイン秘密鍵生成器２２は、ドメインオーソリティの階層中の子ドメインオーソリティのドメイン秘密鍵を生成するアルゴリズムの実装を有する。
【００５４】
図１を参照して、例えば、元のドメインオーソリティ１３は、子ドメインオーソリティ１６のさらに別のドメイン秘密鍵を生成する。子ドメインオーソリティ１６のさらに別のドメイン秘密鍵は、元のドメインオーソリティ１３の元のドメイン秘密鍵に基づき生成される。結果として、生成されたドメイン秘密鍵は、階層ツリー中の隣接する子ノードを表すドメインオーソリティのものである。
【００５５】
ドメイン秘密鍵生成器２２は、ドメイン秘密鍵生成器２２は、子ドメインオーソリティ１６のさらに別のドメイン秘密鍵をドメインオーソリティの階層の公開鍵の一部に基づき生成するように、構成され得る。このため、公開鍵は複数のコンポーネントに分割され、元のドメイン秘密鍵はこれらの公開鍵コンポーネントのサブセットのみに基づく。
【００５６】
子ドメイン秘密鍵を生成ため、一または複数の追加的公開鍵コンポーネントを用いる。使用されるかかる公開鍵コンポーネントの数は、階層内のドメインオーソリティのレベルに関係する。好ましくは、さらに別のドメイン秘密鍵を生成するのに用いられる追加的公開鍵コンポーネントは、元のドメイン秘密鍵の生成に使われていない。
【００５７】
さらに、ドメイン秘密鍵の生成に用いられる公開鍵の一部は、属性とは、特に上記の属性表現とは独立である。このように、ドメインオーソリティがユーザ秘密鍵を生成する時、ドメイン秘密鍵は一または複数の属性に限定されない。
【００５８】
子ドメインオーソリティ１６のさらに別のドメイン秘密鍵によっては、階層中の先行ノード（predecessors）、すなわちルートオーソリティ１１と元のドメインオーソリティ１３に関連する暗号文の復号ができない。暗号化するとき、暗号化器は、上記の公開鍵の一部のサブセットのみを用いる。これは、より多くのコンポーネントに基づく鍵を有する復号器は、暗号文を復号できない可能性があることを意味する。子ドメイン秘密鍵を生成する時に用いる追加的コンポーネントは、復号器がデータを復号するため、対応する公開鍵コンポーネントを暗号文に使う必要があるように、元のドメイン秘密鍵と組み合わせられるので、かかる効果を達成し得る。これは後で実施形態の詳細な説明で説明する。
【００５９】
ドメインオーソリティは、公開鍵のコンポーネントを同じ順序で加えるように構成され得る。このように、ドメインオーソリティの各「世代」は、公開鍵の同じコンポーネントに基づくドメイン秘密鍵を有する。これにより、暗号化データは、ドメインオーソリティの所定数の世代すなわちレベルにより発行されたユーザ秘密鍵によってのみ復号できるようになる。
【００６０】
少なくともいくつかの属性表現は、システム内のドメインオーソリティにとって公に利用可能であってもよい。これにより、これらのドメインオーソリティは、適切に公に利用可能な属性表現に基づき、任意に選択された属性に関連するユーザ秘密鍵を生成できる。
【００６１】
ユーザ秘密鍵は、階層中の位置を表す第１コンポーネントと、ユーザ秘密鍵に関連する一組の属性を表す第２コンポーネントとを含み得る。しかし、ユーザ秘密鍵生成器は、第１コンポーネントと第２コンポーネントを乱数値により結合するように構成されてもよい。このように、悪意あるユーザによるユーザ秘密鍵の修正が防止され得る。このメカニズムの実施例は、以下、第２の詳細な実施形態で説明する。
【００６２】
図５は、本発明による暗号システムの一実施形態における公開情報７５を示す図である。
【００６３】
公開情報７５は、システムの公開パラメータ７０を含む。公開パラメータ７０は、フォーマット情報と、例えば、アルゴリズムで用いられるグループのフィールドまたはグループ識別子を含み得る。例えば、グループの序列（an  order  of  a  group）がパラメータにより指示され得る。公開情報７５は、さらに、ドメインオーソリティの階層に関連する公開鍵７１を含む。この公開鍵７１は、複数の公開鍵コンポーネント７３に分割される。公開情報７５は、さらに、複数の属性に関連する部分７２を含む。この部分７５は、複数の属性表示７４を含む。これらの属性表示は、例えば、各属性を表す公開鍵及び／または属性のサブセットを表す公開鍵を含み得る。
【００６４】
図６は、ドメイン秘密鍵８０を示す図である。
【００６５】
図７は、ユーザ秘密鍵８４を示す図である。ユーザ秘密鍵８４は、ドメインオーソリティの階層に関連する第１コンポーネント８１を含む。ユーザ秘密鍵８４の第１コンポーネント８１を生成するために、階層に関する公開鍵７１の公開鍵コンポーネント７３のサブセット（または全部）を用いることができる。
【００６６】
ユーザ秘密鍵８４は、さらに、ユーザ秘密鍵８４がアサインされるユーザに関連する属性に関する第２コンポーネント８２を含む。第２コンポーネント８２は複数のサブコンポーネント８３を含む。各サブコンポーネント８３は、公開属性表現７４の一に基づくものであってもよい。
【００６７】
ユーザ秘密鍵はさらに別のコンポーネント８５を含み得る。これらのさらに別のコンポーネント８５は、好ましくは、階層と属性の両方と独立である。ユーザ秘密鍵コンテンツのより詳細な例は後で説明する。必要な情報がユーザ秘密鍵においていかに表されるかという点については多くのバリエーションがあり得る。
【００６８】
復号器１９は例えば、システムのエンドユーザにより利用される。これは、階層の他の場所にある復号器１４と１７にも当てはまる。復号器１９は、伝送チャンネル２０を解して暗号化器１８から暗号文を受信する受信器を有する。かかる伝送チャンネルは、例えば、電子メール、インターネットなどのデジタル通信手段、または光ディスクなどのリムーバブル記憶媒体を有する。さらに、復号器１９は、ドメインオーソリティ１６からユーザ秘密鍵を受信する受信器を有する。ユーザ秘密鍵は、例えば、暗号文に関してこの段落で述べた任意の伝送手段を用いて、ドメインオーソリティから送信される。暗号文は、システムで利用できる属性に関するポリシーに関連し得る。さらに、暗号文は、さらにドメインオーソリティ１１１，１２，１３，１５，１６の階層の少なくとも一部に関連し得る。復号器は、ドメインオーソリティ１６により発行されたユーザ秘密鍵に基づき、暗号文を復号するように構成されている。上記の通り、ユーザ秘密鍵は、システム中で利用できる一組の属性に関連し得る。
【００６９】
ユーザ秘密鍵に関連する一組の属性が暗号文のアクセスポリシーを満足する場合にのみ、ユーザ秘密鍵により暗号文の復号ができる。上記の通り、属性は階層とは独立である。このように、どのドメインオーソリティ１６も、これらの属性をそのエンドユーザに付与できる。これは、他の属性が特定のドメインオーソリティに制限される可能性を排除するものではない。
【００７０】
上記の通り、ユーザ秘密鍵は、ユーザ秘密鍵を発行したドメインオーソリティ１６の階層における一に関連し得る。この位置は、階層中の先行ノード（puredecessors）の数を示すレベルを有するものと見なすことができる。この先行ノードの数は、例えば、ドメインオーソリティから階層ツリーを通ってルートオーソリティまでの最短経路を計算することにより、カウントできる。しかし、かかるカウントは、一般に実行中システムにおいては実行されない。レベルは、ユーザ秘密鍵のコンテンツにより黙示的または明示的に表されているからである。
【００７１】
上記の通り、暗号文は、ドメインオーソリティの階層の少なくとも一部に関連し得る。この部分は、所定レベルすなわち上記の通りルートオーソリティまでのドメインオーソリティと、その所定レベルまでのドメインオーソリティの世代よりなる。これは、暗号化のための公開鍵の対応コンポーネントを用いることにより、暗号化器により実現できる。
【００７２】
ユーザ秘密鍵を発行したドメインオーソリティが所定レベルまでのドメインオーソリティに属するときにのみ、ユーザ秘密鍵により暗号文の復号ができる。これは、ユーザ秘密鍵と暗号文とを近似的に指定することにより、実現できる。しかし、ユーザ秘密鍵を用いて暗号文を復号できるように、復号アルゴリズムを適宜適用する。近似的復号アルゴリズムの詳細な例は後で説明する。
【００７３】
暗号化器１８は、図示した例では、階層の一部ではない。暗号化器は、暗号化するメッセージを受信する受信器を有する。このメッセージは、キーボード、医療画像化装置、ユーザアプリケーションプログラムなどの任意のメッセージ源から発せられても良いし、任意の種類の伝送チャンネルを介したものでもよい。暗号化器１８は、さらに、例えば、セットアップエンティティ１０及び／またはルートオーソリティ１１から公開情報を受信する受信器も有する。この公開情報は、階層に関する公開鍵のコンポーネント及び／または公開属性表示を含む。この情報はすべて暗号化器により受信され、またはその生産段階で事前設定され得る。
【００７４】
暗号化器１８は、ドメインオーソリティの階層の少なくとも一部と複数の俗低に対するポリシーに関する公開鍵情報に基づいてメッセージを暗号化して、そのポリシー及びドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得するように構成され得る。上記の通り、属性は階層とは独立である。このため、アクセスポリシーに関する属性の公開属性表現を用いて、データを暗号化する。さらに、階層に関する公開鍵のコンポーネントを用いて、暗号文を、ドメインオーソリティの階層の前記少なくとも一部と関連づける。
【００７５】
上記の通り、前記階層の少なくとも一部は、ルートオーソリティと、ルートオーソリティの子孫ノード（descendants）の所定数の世代とを含む。ここで子孫ノードは、自分のドメイン鍵を階層中の自分の親から取得するドメインオーソリティ階層中のドメインオーソリティである。
【００７６】
階層的属性ベース暗号化の方法を図３に示す。ステップ５１において、暗号化システムの複数の一般パラメータを確立するため、セットアップアルゴリズムを実行する。これらの一般パラメータは、暗号文と平文のフォーマットとサイズ、及び暗号化に用いられるフィールドの順序とタイプに関係する。また、一般パラメータは、システムにおいて用いられる属性の表現、及びドメインオーソリティにユーザ秘密鍵の発行を委任するのに用いられるコンポーネントを有する公開鍵も含む。
【００７７】
ステップ５２において、ルートオーソリティは、ドメインオーソリティのドメイン秘密鍵を生成する。これは、公開鍵に基づき、公開鍵のコンポーネントの少なくとも一を用いてドメイン秘密鍵を生成する。ステップ５５において、さらにどれかのドメインオーソリティがルートオーソリティからドメイン秘密鍵を必要とするか判断する。ＹＥＳでなければ、ステップ５２が繰り返される。原理的には、ルートオーソリティにより生成された各ドメイン秘密鍵に対して、公開鍵の同じコンポーネントを用いる。しかし、これは限定ではない。
【００７８】
ステップ５３において、ドメインオーソリティの階層中のドメインオーソリティは、その階層中の自分の子ドメインオーソリティの一に対して、ドメイン秘密鍵を生成する。これは、元のドメインオーソリティの元のドメイン秘密鍵と、及びその階層に関する公開鍵の未使用部分、すなわち元のドメイン秘密鍵の生成に用いられなかった一または複数の公開鍵コンポーネントとに基づき行われる。
【００７９】
ステップ５６において、他のドメインオーソリティがドメイン秘密鍵を必要としているか判断する。その場合、ステップ５３が繰り返され、元の各ドメインオーソリティがそれにより管理されるドメインオーソリティのドメイン秘密鍵を生成するようにする。
【００８０】
ステップ５４において、ドメインオーソリティの階層中のドメインオーソリティは、自分のドメイン秘密鍵と、一または複数の属性表現とに基づきユーザ秘密鍵を生成する。このように、ユーザ秘密鍵が、属性表現に対応する一組の属性、具体的にはユーザ秘密鍵がアサインされるユーザの属性に関連して発行される。ユーザ秘密鍵は、さらに、階層中のドメインオーソリティの一に関連する。
【００８１】
ステップ５７において、他のユーザがユーザ秘密鍵を必要とするか判断する。そうであれば、ステップ５４が繰り返され、各ドメインオーソリティがそれにより管理されるユーザのユーザ秘密鍵を生成するようにする。
【００８２】
ステップ５８において、ドメインオーソリティの階層の少なくとも一部と、複数の属性に対するポリシーとに関連する公開鍵情報（例えば、公開鍵コンポーネント）に基づいて、メッセージが暗号化され、ポリシーと、ドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得する。階層とは独立な属性表現を用いる。
【００８３】
ステップ５９において、暗号文が、ユーザのユーザ秘密鍵に基づき、ユーザの復号器の一により復号される。ユーザ秘密鍵はポリシーを満たす一組の属性に関連する。ユーザ秘密鍵により、そのユーザ秘密鍵に関連する一組の属性が暗号文のポリシーを満たすとき、暗号文の復号が可能になり、ユーザ秘密鍵は、暗号文に関連するドメインオーソリティの階層の前記少なくとも一部のドメインオーソリティにより発行されたものである。    
ステップ６０において、他のメッセージを送信する必要があるか判断する。そうであれば、ステップ５８と５９を繰り返す。より多くの鍵が必要な場合、本プロセスは関連ステップを実行してもよい。例えば、新しいドメインオーソリティがシステムに追加されると、本プロセスはステップ５２または５３を実行して、そのドメインオーソリティのドメイン秘密鍵を生成する。新しいユーザが追加、またはユーザの属性が変化した時、本プロセスはステップ５４を実行して新しいユーザ秘密鍵を生成する。それ以上アクションが必要なければ、本プロセスは終了する。
【００８４】
言うまでもなく、これらのステップのうち一または複数は、例えば、異なるエンティティの装置により、またはパラレルプロセッサにより、並列に実行できる。また、言うまでもなく、ここに説明したステップの順序は、単なる一例である。実際には、ステップの実行順序は、ユーザの通信需要により変わり得る。本方法は、コンピュータシステムに方法を実行させる命令を有するコンピュータプログラム製品として、ソフトウェアで実装するのに好適である。具体的に、セットアップエンティティ、ルートオーソリティ、ドメインオーソリティ、復号器、暗号化器などの特定のエンティティを実装するのに必要なステップを実行するコンピュータプログラム製品を考案することができる。ソフトウェアを分割してモジュールにすることも可能である。
【００８５】
階層属性ベース暗号方式は次のアルゴリズムの実装を含む。対応するアルゴリズムは、既存の暗号文ポリシー属性ベース暗号（ＣＰ−ＡＢＥ）システムにある。この既存のＣＰ−ＡＢＥ方式を次のように拡張できる：
-セットアップ：セットアップアルゴリズムは、初期化段階においてシステムパラメータを設定し、公開パラメータＰＫとマスター鍵ＭＫを出力する。このアルゴリズムはルートオーソリティにより実行される。
【００８６】
−Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎｒｏｏｔ  ａｕｔｈ．（ＭＫ，ＰＫ）：このアルゴリズムは、ドメインオーソリティの鍵を生成するため、ルートオーソリティにより実行される。ＭＫとＰＫを入力とし、レベルｋ＝１であるドメインオーソリティの秘密鍵ｄＩＤ｜ｋ＝１を出力する。ドメインオーソリティは、これらの鍵を用いて、自分のドメイン中のユーザに、さらに別の鍵を発行できる。
【００８７】
−Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎｄｏｍａｉｎ  ａｕｔｈ．（ｄＩＤ｜ｋ＝１）：このアルゴリズムはドメインオーソリティにより実行される。秘密鍵ｄＩＤ｜ｋ＝１を入力とし、ユーザ秘密鍵ｄＩＤ｜ｋ＋１を出力する。ユーザ秘密鍵は、２つの部分を有する。１つの部分は階層に関し、他の１つの部分はユーザが有する属性に関する。ドメインオーソリティは、問題の鍵が許せば（？）、階層部分を用いてさらに別の鍵を発行できる。
【００８８】
−Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，Ｍ，Ａ）：暗号化アルゴリズムは、公開鍵ＰＫ、メッセージＭ、及び属性ユニバース（a  universe  of  attributes）に対するポリシーＡを入力とする。このアルゴリズムは暗号文ＣＴを返す。この暗号文は、アクセスポリシーＡを満たす属性セットωに関連する秘密鍵を有するユーザのみが暗号文ＣＴを復号できるように、構成されている。暗号文ＣＴはアクセスポリシーＡの記述を黙示的に含む。
【００８９】
−Ｄｅｃｒｙｐｔｉｏｎ（ＰＫ，ＣＴ，ｄＩＤ｜ｋ＋１）：復号アルゴリズムは、公開パラメータＰＫ、暗号文ＣＴ、秘密鍵ｄＩＤ｜ｋ＋１を入力とする。このアルゴリズムは、ｄＩＤ｜ｋ＋１が、暗号文Ａにより黙示的に表されたアクセスポリシー「Ａ」を満たせば、復号されたメッセージＭを出力する。そうでなければ、エラーシンボル┴を返す。
【００９０】
提案の方式の一において、セントラルオーソリティ（例えば、セントラルヘルスケアフェデレーション）は、セントラルオーソリティの下のドメインオーソリティ（特定の病院または機関）に鍵を発行する。ドメインオーソリティは、これらの鍵を用いて、ユーザ属性に対応するユーザに鍵を発行する。概念的には、ユーザ鍵２つの部分を有するものとして可視化できる。一部分は階層に関し、他の部分はユーザが有する属性に関する。暗号化器は、一組の属性に対するアクセスコントロールポリシーによりデータを暗号化し、暗号を特定のドメイン／階層に結びつける必要はない。ＣＰ−ＡＢＥ方式と（階層アイデンティティベース暗号方式などの）階層的暗号方式の両方の機能性は、結合できる。暗号化器はドメインを指定する必要がない。暗号文のサイズ、及び復号コストは、階層の深さ「１」とは独立であってもよい。
【００９１】
図４は、一実施形態を示す概念図である。このシステムでは、ルートオーソリティ１は、ドメインオーソリティ２，３及び４に、個人鍵（personalized  keys）（ｄＩＤ｜ｋ＝１）を発行する。ドメインオーソリティ２は、その鍵ｄＩＤ｜ｋ＝１を用いて、自分のドメイン内のユーザにかぎｄＩＤ｜ｋ＋１を発行する。ユーザ鍵ｄＩＤ｜ｋ＋１は２つの部分よりなる。一部分は階層に関し、他の部分はユーザが有する属性に関する。ユーザは、そうすることが許されていれば、階層部分を用いて、さらに別のユーザに鍵を発行することにより、ドメインオーソリティとして機能できる。
【００９２】
以下、本発明の第１の実施形態をさらに詳しく説明する。Ｇ０を素数次ｐの双線形群とし、ｇをＧ０の生成元とする。また、ｅ：Ｇ０×Ｇ０→Ｇ１が双線形写像を示すとする。セキュリティパラメータλは群のサイズを決定する。ｉ∈Ｚｐとし、Ｚｐ＝｛０，…，ｐ−１｝とし、ωがＺｐの要素の集合であるとして、ラグランジュ係数Δｉ，ωは
（外１）
2014531850.tif 000003
と定義される。また、耐衝突性のあるハッシュ関数Ｈ１：｛０，１｝＊→Ｇ０とＨ２：｛０，１｝＊→Ｚｐ＊とを用いる。ここで、｛０，１｝＊は任意長さのバイナリシーケンスを示し、Ｚｐ＊＝Ｚｐ＼｛０｝である。Ｈ１は、バイナリストリングとして記述した任意の属性を、ランダムな群要素Ｇ０に写す写像であり、Ｈ２はオーソリティのアイデンティティを表すストリングをＺｐ＊に写す写像である。以下、階層的属性ベース暗号（ＨＡＢＥ）方式を実装するのに用いられるアルゴリズム例を説明する。
【００９３】
１．Ｓｅｔｕｐ（λ，ｌ）：このアルゴリズムは、ルートオーソリティにより実行され、最大深さ１のＨＡＢＥのシステムパラメータを生成する。これは、ランダム生成元ｇ∈Ｇ０を選択し、α∈Ｚ、β∈Ｚを選択し、ｇ１＝ｇα、ｇ２＝ｇβを設定する。また、ランダム要素ｇ３、ｈ１、・・・、ｈｌ∈Ｇ０を取る。公開パラメータ及び秘密パラメータはコンポーネント
【数１】
2014531850.tif 000004
を有する。ここで、Ａ＝ｅ（ｇ，ｇ）α−βである。
【００９４】
２．Ｋｅｙ  ＧｅｎｅｒａｔｉｏｎＲＡ（ＭＫ，ＰＫ）：このアルゴリズムは、マスター秘密鍵ＭＫと公開鍵ＰＫを用いて、深さｋ≦ｌにおけるドメインオーソリティの秘密鍵ＳＫＩＤ｜ｋを生成するために実行される。ランダムなｒ∈Ｚｐ＊を取り、深さｋ≦ｌのドメインオーソリティの鍵を出力する。ｒの値は各ドメインオーソリティについて一意的である。秘密鍵ＳＫＩＤ｜ｋは
【数２】
2014531850.tif 000005
のように計算される。ここで、記号ＩＤは異なるサブオーソリティに対して発行される鍵を区別するラベルとして用いられる。
【００９５】
深さ１＜ｋ≦ｌのドメインオーソリティの秘密鍵ＳＫＩＤ｜ｋは、階層における秘密鍵ＳＫＩＤ｜ｋ−１を有する親ドメインオーソリティの秘密鍵が与えられれば、インクリメンタルに生成できる。
【００９６】
このために、まず、ａ０、ａ１、ｂｋ、・・・、ｂｌ、及びｃ０を
【数３】
2014531850.tif 000006
のように確定する。
【００９７】
ここで、記号ｒ’は親ドメインオーソリティの一意的値ｒである。ＳＫＩＤ｜ｋを生成するため、本システムは乱数値ｔ∈Ｚｐ＊を取り、
【数４】
2014531850.tif 000007
を出力する。
【００９８】
秘密鍵ＳＫＩＤ｜ｋはｒ＝ｒ’＋ｔに完全に分散していてもよい。これは、ｒ’がランダムに選択され、ｔもランダムに選択され、その分布が（疑似）ランダムであると、ｒの分布も（疑似）ランダムであることを意味する。
ｒ∈ＲＺｐ＊を取り、鍵生成アルゴリズムはｔをランダムに選択し、ｒ＝ｒ’＋ｔを設定する。
【００９９】
３．Ａｔｔｒｉｂｕｔｅ  Ｋｅｙ  ＧｅｎｅｒａｔｉｏｎＤＡ｜ｋ（ＳＫＩＤ｜ｋ，ＰＫ，ω）：このアルゴリズムは、深さ１≦ｋ≦ｌのドメインオーソリティにより実行され、属性セットωを有するユーザの秘密鍵ＳＫＩＤ｜ｋ，ωを生成する。まず、このアルゴリズムは、乱数値ｒｕ∈Ｚｐを選択し、次に各属性ｊ∈ωについて乱数値ｒｊを選択し、次いで
【数５】
2014531850.tif 000008
によりＳＫＩＤ｜ｋ，ωを計算して出力する。
ここで、∀ｊ∈ω：Ｄｊ＝ｇｒｕ・Ｈ１（ｊ）ｒｊ及びＤ’ｊ＝ｇｒｊである。
【０１００】
４．Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，Ｍ，τ，ｌ）：このアルゴリズムは、暗号化器により実行され、アクセスツリーτの下でメッセージＭ∈Ｇ１を暗号化する。暗号化されたメッセージＣＴは、鍵がレベルｋ≦ｌと、アクセスツリーτを満たす属性セットωとを有するユーザによってのみ復号できる。概念的には、暗号文ＣＴは、３つのカテゴリーに関する成分を有する：１）暗号化メッセージ、２）階層に関連するコンポーネント、及び３）アクセスツリーτ。
【０１０１】
τがアクセス構造を表すツリーであるとする。τの各非リーフノードは閾値ゲートを表す。閾値ゲートはその子ノード及び閾値により記述され得る。ｎｕｍｋをノードκの子供の数とし、ｋκをその閾値とする。ここで、０＜ｋｋ≦ｎｕｍｋである。ノードκの閾値ゲートがＯＲゲートであるとき、ｋκ＝１である。ノードκの閾値ゲートがＡＮＤゲートであるとき、ｋκ＝ｎｕｍｋである。リーフノードκは、例えばｋκ＝１のように、属性と閾値により記述できる。
【０１０２】
この段落では、いくつかの関数を定義する。関数ａｔｔ（κ）を用いて、アクセスツリー中のリーフノードκに関連する属性値を示す。この属性値は特定の属性を表す数値である。アクセスツリー中のノードｋの親はｐａｒｅｎｔ（ｋ）により示される。また、アクセスツリー中のノードの子供間に順序を定義する。子ノードは１からｎｕｍまでの数字を付される。子ノードに関連するかかる値を返すため、関数（κ）を用いる。
【０１０３】
アクセスツリーを表すために、暗号化アルゴリズムは、まずアクセスツリーτ中の各ノードκ（リーフを含む）に対して多項式ｑκを選択する。これらの多項式は、ルートノードＲから始めて、トップダウン式に、つぎのように選択できる。ツリー中の各ノードκに対して、その多項式ｑκの次数をそのノードの閾値ｋκより１少なく設定する。すなわち、ｄκ＝ｋκ−１である。
【０１０４】
ルートノードＲから始めて、本アルゴリズムは、ランダム値ｓを選択し、ｑＲ（０）＝ｓと設定する。値ｓは閾値の秘密共有のために用いる秘密値である。次に、本アルゴリズムは、ランダムに多項式ｑＲの他のｄＲ個の点を選択し、多項式を完全に確定する。他の任意のノードκについて、ｑκ（０）＝ｑｐａｒｅｎｔ（κ）（ｉｎｄｅｘ（κ））を設定して、他のｄκ個の点をランダムに選択して、ｑκを完全に確定する。ここで、ｉｎｄｅｘ（κ）はノードκの値にアクセスするのに用いられる。Ｙをアクセスツリーτ中のすべてのリーフノードの集合とする。暗号文ＣＴは
【数６】
2014531850.tif 000009
を計算することにより構成される。
ここで、Ｍはメッセージであり、ａｔｔ（ｙ）は属性ｙの値です。
【０１０５】
５．Ｄｅｃｒｙｐｔｉｏｎ（ＣＴ，ＳＫＩＤ｜ｋ，ω）：復号アルゴリズムは暗号文ＣＴと秘密鍵ＳＫＩＤ｜ｋ，ωを入力とする。復号アルゴリズムは、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）という反復的アルゴリズムを含む。暗号文ＣＴはアクセスツリーτの表現を黙示的に含むとみなせる。アクセスツリーτは、属性のどの組み合わせが暗号文ＣＴの復号に必要かを示すアクセスポリシーの表現である。
【０１０６】
以下、最初に、κがリーフノードである場合について、反復的アルゴリズムＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）を確定する。次に、κが非リーフノードである場合について、反復的アルゴリズムＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）を確定する。その後、メッセージＭを回復する関数Ｄｅｃｒｙｐｔｉｏｎ（ＣＴ，ＳＫＩＤ｜ｋ，ω）を説明する。
【０１０７】
（ａ）リーフノードκの場合のＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）：最初のステップにおいて、τ中のリーフノードκから始める。かかるリーフノードは、属性を表す実数値に関連する。関数ａｔｔ（κ）は、リーフノードκの実属性値を返す。ｉ＝ａｔｔ（κ）とする。
ｉ∈ωであれば、
【数７】
2014531850.tif 000010
である。
（外２）
2014531850.tif 000011
であれば、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）＝⊥である。
【０１０８】
（ｂ）非リーフノードκの場合のＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）：κがτ中の内部（非リーフ）ノードであるとき、アルゴリズムは繰り返しプロセスを実行する。アルゴリズムは次のように進行する。κの子であるすべてのノードｚに対して、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，ｚ）を呼び出す。ユーザがポリシーを満たすのに十分な属性を有するか判断するため、その出力を用いる。ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，ｚ）の出力をＦｚとして記憶する。ωκを、子ノードの集合ωκ中のすべてのｚについてＦｚ≠⊥となるような、子ノードｚのｋκサイズの集合であるとする。ここで、ｋκはノードの閾値を示す。
【０１０９】
このようなｋκサイズの集合がなければ、ノードκの閾値は満たされず、関数は⊥を返す。そうでなく、そのような集合があれば、ＤｅｃｒｙｐｔＮｏｄｅは
【数８】
2014531850.tif 000012
を計算する。
ここで、ｚがリーフノードでありω’κ＝ｉ：ｚ∈ωκであれば、ｉ＝ａｔｔ（ｚ）でる。
このように、ｅ（ｇ，ｇ）ｒｕ・ｑκ（０）が求まるが、それは
【数９】
2014531850.tif 000013
だからである。
これでＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）の確定は終了する。
【０１１０】
秘密鍵ＳＫＩＤ｜ｋ，ωを用いて暗号文ＣＴを復号するため、復号アルゴリズムは次のように進行する。最初に、復号アルゴリズムはアクセスツリーτのルートノードＲにおいて、ＤｅｃｒｙｐｔＮｏｄｅ関数を呼び出す。ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，Ｒ）が⊥を返すと、それはアクセスツリーτが鍵ＳＫＩＤ｜ｋ，ωの利用可能な一組の属性ωにより満たされないことを意味する。かかる場合、復号は可能ではない。そうでなければ、アクセスツリーτがωにより満たされる。かかる場合、復号アルゴリズムは
【数１０】
2014531850.tif 000014
を設定する。ここで、ｓ＝ｑＲ（０）である。
【０１１１】
次に、復号アルゴリズムは
【数１１】
2014531850.tif 000015
を計算する。
【０１１２】
次に、復号アルゴリズムはＺ（３）を次のように計算する。レベルｋがｋ≦ｌであるユーザのみが、Ｚ（３）の正しい値を回復でき、それによりメッセージＭを回復できる。値Ｚ（３）は
【数１２】
2014531850.tif 000016
により計算できる。
【０１１３】
次に、復号アルゴリズムは、Ｚ（３）をＺ（２）で割り、Ｚ（４）を得る：
【数１３】
2014531850.tif 000017
。
【０１１４】
最後に、復号アルゴリズムは、
（外３）
2014531850.tif 000018
を計算し、
【数１４】
2014531850.tif 000019
によりメッセージＭを得る。
【０１１５】
以下に第２の実施形態を説明する。第２の実施形態は、（例えば、裏切り者を含む）ユーザが自分の秘密鍵を、例えばインターネット上に公開することにより、公開してしまうことを防ぐという問題に対する解とを提供する。上記の第１の実施形態では、ユーザは、自分の有効な秘密鍵を再ランダム化して、それを公開することもできる。こうした再ランダム化された秘密鍵は、誰でも、医療レコードなどの秘密情報を復号または閲覧するために用いられる。かかる行為を防ぐ阻止メカニズムを提供できる。
【０１１６】
これは、再ランダム化により秘密鍵が使えなくなるので、ユーザが自分の秘密鍵を再ランダム化することを防ぐことにより実現できる。ユーザは、自分の鍵を元の改変されていない形式で公開するしかない。しかし、鍵を改変されていない形式で公開すると、それらの鍵を発行したドメインオーソリティまたはセントラルルートオーソリティが、公開された鍵を認識して、その鍵の元のユーザをトレースできる。
【０１１７】
第２の実施形態の説明の記述法において、ルートオーソリティは秘密鍵ＳＫｋをドメインオーソリティに発行する。ドメインオーソリティは、鍵ＳＫｋを用いて、自分のドメイン内のユーザに、鍵ＳＫＰｋ，ωを発行できる。ユーザ鍵ＳＫＰｋ，ωは、２つの部分を含む。一方の部分は階層中の位置に関し、他方の部分はユーザが有する属性に関する。次のアルゴリズム例を用いて第２の実施形態を実装してもよい。
１．Ｒｏｏｔ  Ｓｅｔｕｐ（Ｋ）：
ａ）  ｓ０，α，β，ａ∈Ｚｐを選択し、秘密に保つ；
ｂ）  暗号ハッシュ関数Ｈ１：｛０，１｝＊→Ｇ１とＨ２：ＧＴ→｛０，１｝ｎとを選択する；
ｃ）  Ａ＝ｅ（ｇ，ｇ）α・ｅ（ｈ１，ｇ）ｓ０を設定する。
公開パラメータはＰＫ＝（Ｇ１，ＧＴ，ｅ，ｇ，Ｈ１，Ｈ２，ｈ１，ｈ２，・・・，ｈｔ，ｇａβ）を含む。
マスター秘密鍵はＭＫ＝（α，ａ，β，ｓ０）を含む。
１．Ｌｏｗｅｒ  Ｌｅｖｅｌ  Ｓｅｔｕｐ（ｋ−１）：レベルｋ−１のドメインオーソリティがランダムなｓｋ−１∈Ｚｐを選択し、それを秘密に保つ。
２．Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎ（ＰＫ，β，ｇａ，ｓｋ−１，ｗ）：
ａ）ｈｉを選択する。これは、階層中のドメインオーソリティのレベルを示す；
ｂ）
（外４）
2014531850.tif 000020
を設定する。これは、レベルｋのドメインオーソリティの、ユーザにさらに別の秘密鍵を発行するのに使える鍵である。ここで、ルートオーソリティの鍵はＳＫ１＝ｇαｈ１ｓ０である。ユーザの秘密鍵はその属性に関連する；
ｃ）ｒｕ∈Ｚｐを選択し、ＳＫＰｋ，ωを
【数１５】
2014531850.tif 000021
となるよう設定する。
１．Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，τ）：
ａ）ランダムなｓ∈Ｚｐを選択する；
ｂ）暗号文Ｃを
【数１６】
2014531850.tif 000022
となるよう設定する。
ここで、
（外５）
2014531850.tif 000023
は例えば追加的秘密共有方法（additive  secret  sharing  method）を用いて計算されるｓのシェア（share）である。秘密共有方法のさらに詳細は、説明を明確にするため、ここでは省略する。当事者は、これらの詳細を、この説明及びその当業者の秘密共有方法に関する知識とに基づき、埋め合わせることができる。
１.Ｄｅｃｒｙｐｔｉｏｎ（ＳＫＰ＿ｋ，ω，Ｃ）：
仮定：ωがアクセス構造τを満たすものとする。
ａ）
（外６）
2014531850.tif 000024
を計算する；
ｂ）
（外７）
2014531850.tif 000025
を計算する；
ｃ）
（外８）
2014531850.tif 000026
を計算する。
【０１１８】
次の記号テーブルは第２の実施形態の説明に当てはまる。
【表１】
2014531850.tif 000027
【０１１９】
言うまでもなく、本発明はコンピュータプログラム、特に情報担体上またはその中のコンピュータプログラムにも適用できる。そのプログラムは、ソースコード、オブジェクトコード、ソースコードとオブジェクトコードの中間コード（部分的にコンパイルされた形体）、その他本発明による不法の実施に使用するのに好適な形体でもよい。言うまでもなく、かかるプログラムは多くの異なるアーキテクチャ的な設計を有する。例えば、本発明による方法またはシステムの機能を実施するプログラムコードは、一または複数のサブルーチンに分割してもよい。当業者には、これらのサブルーチン間の機能の分配する多くの異なる方法が明らかであろう。サブルーチンは実行可能な一ファイルに格納され、自己完結型のプログラムを構成する。かかる実行可能ファイルは、コンピュータ実行可能命令である例えばプロセッサ命令やインタープリタ命令（例えば、Ｊａｖａ(登録商標)インタープリタ命令）を含む。あるいは、一または複数または全部のサブルーチンは、少なくとも１つの外部ライブラリファイルに格納して、静的または動的、例えば実行時に、メインプログラムとリンクできる。メインプログラムは、少なくとも１つのサブルーチンへのコールを含む。サブルーチンは互いへのコールを含んでいてもよい。コンピュータプログラム製品に関する一実施形態は、ここに記載した少なくとも１つの方法のステップの処理に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、静的または動的にリンクされた一または複数のファイルに格納される。コンピュータプログラム製品に関する他の一実施形態は、ここに記載した少なくとも１つのシステム及び／または製品の各手段に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、静的または動的にリンクされた一または複数のファイルに格納される。
【０１２０】
コンピュータプログラムの記憶担体は、プログラムを担うことができる任意の要素または装置である。例えば、記憶担体は、ＲＯＭ（例えば、ＣＤ−ＲＯＭまたは半導体ＲＯＭ）等、または磁気記録媒体（例えばフラッシュドライブまたはハードディスク）等の記憶媒体を含む。さらにまた、記憶担体は、電子的または光ケーブル、または無線その他の手段により搬送できる電子的または光学的信号等の伝送可能キャリアであってもよい。プログラムがそのような信号に化体しているとき、そのキャリアはそのようなケーブルまたはその他の装置または手段により構成される。あるいは、記憶担体は、関係する方法を実行またはその実行に使用するように適応している、プログラムが化体した集積回路であってもよい。
【０１２１】
もちろん、上記の実施形態は、本発明を例示するものであり、限定するものではなく、当業者は、添付したクレームの範囲を逸脱することなく、別の実施形態を多数設計することができる。クレームにおいて、括弧の間に入れた参照符号はクレームを限定するものと解釈してはならない。「有する」という動詞及びその変化形を用いたが、請求項に記載された要素または段階以外の要素の存在を排除するものではない。構成要素に付された「１つの」、「一」という前置詞は、その構成要素が複数あることを排除するものではない。本発明は、複数の異なる構成要素を有するハードウェア手段によって、または好適にプログラムされたコンピュータによって実施してもよい。複数の手段を挙げる装置クレームにおいて、これらの手段は、１つの同じハードウェアにより実施してもよい。相異なる従属クレームに手段が記載されているからといって、その手段を組み合わせて有利に使用することができないということではない。
【図１】
2014531850.tif 000028
【図２】
2014531850.tif 000029
【図３】
2014531850.tif 000030
【図４】
2014531850.tif 000031
【図５】
2014531850.tif 000032
【図６】
2014531850.tif 000033
【図７】
2014531850.tif 000034
【手続補正書】
【提出日】平成26年3月31日(2014.3.31)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は階層的属性ベースの暗号システムに関する。
【背景技術】
【０００２】
ホームヘルスケアを介した従来のヘルスケアからウェルネスサービスまで広がるケアサイクルに関与する複数の異なるパーティ間で、データ交換の必要性が高まっており、デジタル的に格納されたヘルスデータのセキュアな管理が重要な問題となっている。今日のアプローチは、物理的手順及び管理的手順で補足された従来のセキュリティメカニズムに基づくものであり、ヘルス情報の利用が制限され、ヘルスレコードの交換が面倒になっている。デジタルポリシー管理及び実施技術は、（１）データが転送されるインフラストラクチャまたは機関境界とは独立にデータを保護する、異質なネットワークにおけるエンド・ツー・エンドプライバシー及びセキュリティ；（２）ヘルスケアアプリケーションにおいて非常に重要な、属性ベースのアクセス制御メカニズムの上での使用制御；及び（３）特定ネットワークの準備の必要性をなくし、実装と維持のコストを低減する、ネットワークにとらわれずにシステムを開発できる単純な相互利用可能なセキュリティアーキテクチャ；を提供することによりこれらのアプローチより優れている。
【０００３】
かかるセキュリティシステムの重要なコンポーネントは、非特許文献１により知られている属性ベース暗号方式（ＡＢＥ）であり、具体的には、暗号文ポリシーＡＢＥ方式（ＣＰ−ＡＢＥ）である。この方式では、データは、好適な一組の属性を有するユーザのみがデータを復号できるように、アクセス制御ポリシーとしても知られるアクセスストラクチャにより暗号化される。データを復号するため、ユーザは、自分が有する一組の属性に対応する秘密鍵を、トラステッドオーソリティ（trusted  authority）から入手する。
【０００４】
既知の属性ベース暗号方式は単一のルートオーソリティ（root  authority）を使用する。すなわち、システム中の全ユーザは、セントラルオーソリティ（central  authority）から自分の属性に関連する秘密鍵を取得する。しかし、大きな分散した組織では、このアプローチは非現実的である。
【０００５】
階層的暗号方式により組織の階層を確立でき、一般的に組織の階層の下位にいる人にいくつかのタスクを委任できる。セントラルオーソリティはドメインオーソリティ（domain  authorities）に秘密鍵を発行するだけである。これにより、セントラルオーソリティの手間が減少し、ユーザの利便性があがる結果となる。セントラルオーソリティにコンタクトする替わりに、ユーザは自分のドメイン（またはデパートメント）オーソリティにコンタクトして、自分の秘密鍵を取得する。アイデンティティベース階層的暗号方式の例が非特許文献２に開示されている。
【０００６】
特許文献１はユーザ制御暗号に関する方法を開示している。このシステムでは、ルート鍵（root  key）は、患者の秘密（例えば、バイオメトリック、パスワード）から求められる。このルート鍵を用いて、一組の復号及び暗号化鍵を求める。これらの鍵は階層に従う。この階層は、暗号化及び復号鍵の機能を黙示的に規定する。例えば、階層中のあるレベルの復号鍵は、対応する暗号化鍵を用いて暗号化された文書のみを復号できる。
【０００７】
非特許文献３と非特許文献５は、階層的アイデンティティベース暗号（ＨＩＢＥ）システムと暗号文ポリシー属性ベース暗号化（ＣＰ−ＡＢＥ）システムを組み合わせて、アクセス制御と委任を提供する階層的属性ベース暗号（ＨＡＢＥ）モデルを開示している。性能・表現性トレードオフ（performance-expressivity
tradeoff）を行って高い性能を実現するＨＡＢＥ方式が開示されている。ドメインマスター（ＤＭ）が、ドメインのユーザまたは互いに素な一組の属性のいずれかを管理できるようにしてもよい。属性に対応する鍵は、その属性を管理しているドメインマスターにより発行される。このアプローチには次の欠点がある：１）暗号文のサイズと復号コストが階層の深さに依存し、階層の深さとともに増加する。２）暗号化の際、暗号化器はそれぞれのドメインと階層を指定しなければならない。すなわち、新しいドメイン（例えば、病院）がネットワークに参加すると、新しく参加したメンバーのユーザは、アクセス制御ポリシーを満たしていても、すでに暗号化されたデータにはアクセスできない。
【０００８】
非特許文献４は、階層の深さにかかわらず、２つの双線形マップ計算を用いて復号を実行する階層アイデンティティベース暗号（ＨＩＢＥ）システムを開示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２０１０/０２４６８２７A１
【非特許文献】
【００１０】
【非特許文献１】J.  Bethencourt,  A.  Sahai,  and  B.  Waters,  「Ciphertext-Policy  Attribute-Based  Encryption」Proceedings  of  the  ２００７  IEEE  Symposium  on  Security  and  Privacy,  pages  ３２１-３３４,  ２００７
【非特許文献２】C.  Gentry  et  al.,  「Hierarchical  ID-Based  Cryptography」ASIACRYPT  ２００２,  LNCS  ２５０１,  pp.  ５４８‐５６６,  Springer-Verlag  Berlin  Heidelberg,  ２００２
【非特許文献３】Guojun  Wang,  Qin  Liu  and  Jie  Wu,「Hierarchical  Attribute-Based  Encryption  for  Fine-Grained  Access  Control  in  Cloud  Storage  Services」  １７th  ACM  Conference  on  Computer  and  Communications  Security,  October  ４-８,  ２０１０
【非特許文献４】Dan  Boneh,  Xavier  Boyen,  Eu-Jin  Goh「Hierarchical  Identity  Based  Encryption  with  Constant  Size  Ciphertext」  Cryptology  ePrint  Archive:  Report  ２００５/０１５  (http://eprint.iacr.org/２００５/０１５.pdf)
【非特許文献５】G.  Wang  et  al.  「Hierarchical  attribute-based  encryption  and  scalable  user  revocation  for  sharing  data  in  cloud  servers」,  Computer  &  Security,  Elsevier  Science  Publishers,  Amsterdam,  NL,  vol.  30,  no.  5,  2011
【発明の概要】
【００１１】
階層属性ベース暗号システムを改良すると有利である。
【００１２】
この問題をよりうまく解決するため、本発明は、請求項１に係る暗号システム、請求項１１に係るユーザ秘密鍵の生成方法、請求項１２に係るメッセージの暗号化方法、及び請求項１３に係る暗号文の復号方法を提供する。
【００１３】
本発明の第１の態様による暗号システムは、階層をなすドメインオーソリティと、ユーザにアサイン可能な複数の属性とを含み、前記階層中のドメインオーソリティは、ドメイン秘密鍵と一または複数の属性表現に基づき前記ユーザのユーザ秘密鍵を生成し、前記ユーザにアサインされる一組の属性を表す公開鍵情報を含むユーザ秘密鍵生成器を有し、前記ドメイン秘密鍵は、前記階層中のドメインオーソリティの親ドメインオーソリティのドメイン秘密鍵、または前記階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵に基づき、属性表現は前記階層をなすドメインオーソリティとは独立である。
【００１４】
階層とは独立な属性の使用により、ローカルドメインオーソリティは、ユーザに必要な一組の属性により、そのユーザの鍵を発行できる。このユーザにアサインされる必要があるが、ユーザ鍵を発行するドメインオーソリティにはアクセス不可である属性に責任を有する他のどのドメインマスターにもコンタクトする必要はないその結果、提案のシステムにより、属性ベース階層的暗号システムにおける鍵生成の委任ができるようになる。
【００１５】
以下、ドメイン秘密鍵は元のドメイン秘密鍵と呼び、ドメインオーソリティは元のドメインオーソリティと呼ぶが、特に元のドメインオーソリティによるさらに別のドメイン秘密鍵の生成を説明する時にそうする。これは用語だけの問題である。「元の」との形容詞は、ドメイン秘密鍵やドメインオーソリティの特性を指すものではない。
【００１６】
元のドメインオーソリティは、階層をなすドメインオーソリティにおける子ドメインオーソリティに対してさらに別のドメイン秘密鍵を生成するドメイン秘密鍵生成器を有する。このさらに別のドメイン秘密鍵は、元のドメイン秘密鍵に基づいて生成される。このように、ドメイン秘密鍵の発行は、個々のドメインオーソリティに委任でき、ルートレベルで行う必要は必ずしもない。このように、ルートオーソリティが第１世代のドメインオーソリティ、すなわちレベル１ドメインオーソリティのドメイン秘密鍵を生成し、一世代のドメインオーソリティの各ドメインオーソリティが次の世代のドメインオーソリティのドメイン秘密鍵を生成するという意味で、階層システムをなすドメインオーソリティが生成される。このように、レベル１ドメインオーソリティは、レベル２のドメイン秘密鍵を生成し、以下同様である。
【００１７】
本システムは、階層をなすドメインオーソリティに関連する公開鍵を含む公開情報を有し、子ドメインオーソリティ、すなわち次の世代のドメインオーソリティ中のドメインオーソリティのさらに別のドメイン秘密鍵は、この公開鍵の一部に基づく。好ましくは、前記公開鍵の一部は、元のドメイン秘密鍵を生成でまだ用いられていないものである。公開鍵は階層に関連するので、公開鍵の一部は同様に属性とは独立である。
このように、ドメインオーソリティの逐次的生成は、逐次的に公開鍵のより大きな部分に基づく。これにより、暗号化器は、公開鍵の適切な部分を用いることにより、生成のサブセットのための暗号化ができる。
【００１８】
本発明の一態様によると、子ドメインオーソリティのドメイン秘密鍵によっては、階層の子孫に関連する暗号文の復号ができない。すなわち、暗号文がユーザのレベルより高い階層のレベルに関連する場合、暗号文はそのユーザにより復号して読むことができない。
【００１９】
公開鍵の新しい部分を元のドメイン秘密鍵の既存の鍵情報と結合することにより、階層内の子孫世代に関連する公開鍵の部分のみを用いて生成された暗号文を復号できない新しいドメイン秘密鍵を生成できる。このように、属性ベースの区別に加えて追加的区別オプションを利用できるようにする。これは、適切な一組の属性を有することとは別に、ユーザは、暗号文を復号できるようにするために、階層中の十分高いレベルが必要であることを意味する。同時に、暗号文に関連するポリシーが満たされる限り、システム中の全ての世代により復号され得る暗号文を生成することも可能である。
【００２０】
属性表示は、一組の属性に関連するユーザ秘密鍵を生成するのに使われるが、階層中のすべてのドメインオーソリティに公に利用可能であってもよい。これにより、任意のドメインオーソリティが、どれかの属性に関連するユーザ秘密鍵を生成できる。さらに、表現はシステム全体または世界に対して公開されてもよい。これにより、同じ表現が、メッセージの暗号化のために暗号化器により使われることができる。
【００２１】
ユーザ秘密鍵は、階層中の位置を表す第１コンポーネントと、鍵のユーザすなわちその鍵の将来の所有者にアサインされた一組の属性を表す第２コンポーネントとを含み得る。ユーザ秘密鍵生成器は、第１コンポーネントと第２コンポーネントを乱数値により結合するように構成されてもよい。このように、悪意あるユーザによるユーザ秘密鍵の修正が防止され得る。言い換えると、第１のコンポーネントは、両方のパーティにおけるランダム化ファクタを用いて第２のコンポーネントに結合される。これは、ユーザ秘密鍵の再ランダム化または改変により、ユーザ秘密鍵が無効になるとの効果を有する。結果として、他のユーザと鍵を共有することによる乱用を思いとどまらせることができる。鍵の共有は改変されていないユーザ秘密鍵の共有によってのみ可能であり、ユーザをトレース可能であるからである。
【００２２】
本発明の他の一実施形態によると、復号器を有する階層的属性ベース暗号システムが提供される。復号器は、複数の属性に対するポリシーに関連し、階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信し、前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行されたユーザ秘密鍵に基づいて前記暗号文を復号するように構成され、ユーザ秘密鍵に関連する一組の属性が暗号文のアクセスポリシーを満足する場合に、ユーザ秘密鍵により暗号文の復号ができる。
【００２３】
これにより、復号器は、ドメインオーソリティから直接ユーザ秘密鍵を取得できる。セントラルオーソリティにコンタクトする必要はない。ドメインオーソリティは、所望の一組の属性でユーザ秘密鍵を生成する完全に委任された権限を提供され得るからであり、属性が階層とは独立しているからである。
【００２４】
本発明の他の一実施形態によると、ユーザ秘密鍵により、ユーザ秘密鍵を発行した前記階層をなすドメインオーソリティのうちの子孫に関連する暗号文の復号はできない。これにより、階層におけるユーザのレベルに基づき暗号文を復号できる一群のユーザを設定できる。
【００２５】
本発明の他の一態様によると、前記ユーザ秘密鍵は、前記ユーザ秘密鍵を発行した前記階層をなすドメインオーソリティにおける、前記階層中の先行ノードの数を表すレベルに関連し、前記階層をなすドメインオーソリティの少なくとも一部は、所定レベルまでのドメインオーソリティよりなり、前記ユーザ秘密鍵を発行したドメインオーソリティのレベルが前記所定レベル以下であるときにのみ、前記ユーザ秘密鍵により暗号文の復号ができる。
【００２６】
本発明の他の一態様によると、暗号化器を有する階層属性ベース暗号システムが提供され；暗号化器は、ドメインオーソリティの階層の少なくとも一部と複数の俗低に対するポリシーに関する公開鍵情報に基づいてメッセージを暗号化して、そのポリシー及びドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得するように構成され得る。
【００２７】
よって、暗号化器は、ポリシーを満たす一組の属性がアサインされたユーザのみがデータを付く号できるように、そのデータを暗号化できる。暗号文は特定のドメインに結びつけられる必要はない。また、暗号文を、階層をなすドメインオーソリティの一部のみと関連づけ、その階層の一部のユーザのみがそのデータを復号できるようにすることが可能である。
【００２８】
本発明の一態様では、暗号文と関連づけられた前記階層の少なくとも一部は、ルートオーソリティと、前記ルートオーソリティの所定数の世代の子孫ノードとを有する。子孫は、階層中の親からドメイン鍵を取得する、階層をなすドメインオーソリティのうちのドメインオーソリティである。一般的に、世代は階層中の同じレベルにある一組のドメインである。
【００２９】
このように、階層の一部を選択することにより、その階層内のあるレベルよりしたユーザの暗号文を暗号化できる。これは、例えば、階層をなすドメインオーソリティが、レベルが低いとますます高い権限を有する一組織階層のユーザに対応する場合に、有用である。階層中のユーザのレベルが下がり、そのユーザはより高い権限レベルを有し、ユーザはより多くのメッセージを復号して読むことができる。
【００３０】
他の一態様において、本発明は、階層的属性ベース暗号システムにおける階層をなすドメインオーソリティにおいて使用されるユーザ秘密鍵を生成する方法を提供する。
【００３１】
前記方法は、前記階層中のドメインオーソリティの親ドメインオーソリティのドメイン秘密鍵、または階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵とに基づき、ドメイン秘密鍵を生成するステップと、前記ドメイン秘密鍵と、ユーザにアサインされる一組の属性を表す公開鍵情報を含む一または複数の属性表現とに基づき前記ユーザのユーザ秘密鍵を生成するステップとを有し、前記属性表現は前記階層をなすドメインオーソリティとは独立である。
【００３２】
他の一態様において、本発明は、暗号文を復号する方法であって、複数の属性に対するポリシーに関連し、階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信するステップと、前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティによりユーザに発行されたユーザ秘密鍵に基づいて前記暗号文を復号するステップであって、前記第１のコンポーネントは前記階層をなすドメインオーソリティの少なくとも一部に関連する公開鍵の一部に基づき、前記第２のコンポーネントは前記ユーザにアサインされた前記一組の属性を表す公開鍵情報を含む属性表現に基づくステップとを有し、前記属性表現は前記階層をなすドメインオーソリティとは独立であり、ユーザ秘密鍵に関連する一組の属性が暗号文のポリシーを満足する場合にのみ、ユーザ秘密鍵の復号ができる。
【００３３】
他の一態様において、本発明は、メッセージを暗号化する方法であって、前記階層をなすドメインオーソリティの少なくとも一部に関連する公開鍵情報と、一組の属性を表す公開鍵情報を含む一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するステップを有し、前記属性表現は前記階層をなすドメインオーソリティとは独立である方法を提供する。
【００３４】
本発明の他の一態様では、コンピュータシステムに上記の一または複数の方法を実行させる命令を含むコンピュータプログラム製品を提供する。
【００３５】
当業者には言うまでもないが、本発明の上記の実施形態、インプリメンテーション、及び／または態様のうち２つ以上を、有用と思われる方法で組み合わせることができる。
【００３６】
画像取得装置、ワークステーション、システム、方法、及び／またはコンピュータプログラム製品の修正や変形は、記載するシステムの修正と変形に対応するが、本説明に基づき当業者により実行できる。
【図面の簡単な説明】
【００３７】
本発明のこれらの態様等は、以下に説明する実施形態から明らかであり、これらの実施形態を参照して説明する。図面中、同じアイテムには同じ参照数字を付した。
【００３８】
【図１】階層的属性ベース暗号システムを示す図である。
【図２】ドメインオーソリティを示す図である。
【図３】階層的属性ベース暗号の方法を示すフローチャートである。
【図４】階層的属性ベース暗号システムに関与するエンティティを示す図である。
【図５】階層的属性ベース暗号システムにおける公開情報を示す図である。
【図６】ドメイン秘密鍵を示す図である。
【図７】ユーザ秘密鍵を示す図である。
【発明を実施するための形態】
【００３９】
ヘルスケア分野における提案の方式に対する複数のユースケースシナリオの一は、異なる病院及びヘルスケア期間が参加して国家的または地域的に結びついたヘルスケアネットワークを形成した時である。かかるヘルスケアネットワークで過去に形成されたものの例としては、オランダのＮＩＣＴＩＺ、英国のＮＨＳ、及びカナダのＩｎｆｏＷａｙがある。例えば、ＮＩＣＴＩＺは、オランダの国家電子ヘルスレコード（ＨＥＲ）インフラストラクチャであり、これによりヘルスケアプロバイダ、患者、ヘルスケア保険会社及び政府がヘルスケア関連データを共有できる。ＮＩＣＴＩＺは、提案の方式のセントラルオーソリティとして機能でき、ＮＩＣＴＩＺに参加した異なる機関は、自分のドメイン／キーオーソリティ（domain/key  authorities）を有するドメインとして機能できる。各メンバー組織のキーオーソリティは、ＮＩＣＴＩＺのセントラルオーソリティにより一または複数の鍵を発行する。ドメインオーソリティは、これらの鍵を用いて、それぞれ自分のドメイン／組織中のユーザの属性により、自分のユーザにかぎを発行する。ヘルスケアでは、ユーザ（医師、看護師など）の役割とその他の属性は、慎重に扱うべき患者のデータへのアクセスを与える基礎として用いられる。
【００４０】
属性ベース暗号方式により、暗号化器は、属性のリストに対するアクセスコントロールポリシーにより、慎重に扱うべきデータを暗号化できる。既存の属性ベース暗号方式ユーザは、セントラルオーソリティにコンタクトして、自分の属性に関連する秘密鍵を取得しなければならない。ユーザは、関連するアクセスコントロールポリシーを満たしていれば、この秘密鍵を用いて、データを復号できる。しかし、かかる方式ではセントラルオーソリティに過重な負荷がかかる。自分の属性に関連する秘密鍵を得るため、各ユーザがセントラルオーソリティにコンタクトしなければならないからである（上記の例では、すべてのメンバー組織におけるヘルスケアワーカーは、自分の役割その他の属性をＮＩＣＴＩＺから取得しなければならない）。また、これはユーザにとっても面倒である。換言すると、現在の属性暗号方式は、通常、ユーザがルート（またはトップ）オーソリティではなくインターミディエイトオーソリティ（intermediate  authority）にコンタクトする組織の階層／ワークフローをサポートしていない。
【００４１】
提案の方式では、（サブ）ドメインオーソリティが属性に関連するユーザに鍵を発行できるようにすることにより、セットアップまたはルートオーソリティに対する負荷は、減らされている。ドメインオーソリティは、許されれば、階層を下方向にまたいで他のユーザにも鍵を発行できる。暗号化の際、関連ドメインを指定する必要はない。暗号化器は、一組の属性に対するアクセスコントロールポリシーにより、データを暗号化するだけでよい。結果として、データは特定のドメインに結びついていないので、新しいドメイン（例えば、追加的ヘルスケア組織）がシステムに参加しても、データを再暗号化する必要はない。また、ここに開示の方式は、一定の暗号文サイズと、階層の大きさと比較した復号コストなど、他の利点を有する。
【００４２】
以下、多数の実施形態を説明する。これらの実施形態は、実装例として提示するだけであり、本発明を限定する意図ではない。
【００４３】
図１は、階層的属性ベース暗号システム、すなわち、ドメインの階層とユーザにアサインされた複数の属性とを含む暗号システムを示す図である。
【００４４】
この図は、セットアップオーソリティ１０、ルートオーソリティ１１、ドメインオーソリティ１２，１３，１５，１６、復号器１４，１７，１９、暗号化器１８、及び伝送チャンネル２０を示す。これらのオブジェクトは別々のデバイスにより実装されてもよい。しかし、これらのエンティティの一または複数を、任意のコンピュータシステム上で実行できるソフトウェアモジュールとして実装することも可能である。また、複数のモジュールの機能を一台の機器に組み込むことも可能である。また、１つのサーバコンピュータを用いて、すべてのモジュールを実装することも可能である。ユーザは、自分が特権を有するモジュールと鍵へのアクセスを提供され得る。また、システムは、分散コンピュータシステム上に実装してもよい。
【００４５】
セットアップオーソリティ１０は、複数の一般的システムパラメータを提供するように構成されている。一般的に、セットアップオーソリティ１０は、システムの寿命の間は一定にとどまる複数のパラメータを決定する。これらのパラメータが固定されると、セットアップオーソリティ１０はもう必要なくなる。ルートオーソリティ１１は、ドメインオーソリティ１２，１３，１５，１６と同じ機能を提供する。しかし、ルートオーソリティ１１は親ドメインオーソリティを有さないので、用いられるアルゴリズムは少し異なる。ドメインオーソリティ１３はより詳細に図２に示す。
【００４６】
ここで詳細に説明するドメインオーソリティ１３は、他のドメインオーソリティ１２，１５，１６を代表する。また、同様の特徴はルートオーソリティ１１にも見つかる。
【００４７】
ドメインオーソリティ１３は、その親オーソリティからドメイン秘密鍵を受信するように構成されている。この例では、第１レベルドメインオーソリティ１３の親オーソリティはルートオーソリティ１１である。第２レベルドメインオーソリティ１５，１６の親オーソリティは第１レベルドメインオーソリティ１３である。
【００４８】
ドメイン秘密鍵は、親ドメインオーソリティのドメイン秘密鍵に基づいて、またはドメインオーソリティの階層のルートオーソリティのルート秘密鍵に基づいて、親オーソリティにより生成される。この例では、第１レベルドメインオーソリティ１３のドメイン秘密鍵は、ルートオーソリティ１１により生成され、ドメインオーソリティ１５、１６の第２レベルドメイン秘密鍵は、第１レベルドメインオーソリティ１３により生成される。
【００４９】
ドメインオーソリティの階層は、ルートオーソリティがツリーのトップにあるツリー構造と見ることができる。ツリーのノードは、ツリー中の先行ノード（predecessor）から自分のドメイン秘密鍵を受信するドメインオーソリティである。復号器１９はツリーのリーフと見なすこともできる。
【００５０】
ドメインオーソリティ１３はドメイン秘密鍵の生成の役割を果たす。追加的にまたは代替的に、ドメインオーソリティ１３はユーザ秘密鍵の生成の役割を果たす。このため、ドメインオーソリティ１３はドメイン秘密鍵生成器２２及び／またはユーザ秘密鍵生成器２１を含み得る。
【００５１】
図２に示すように、ドメインオーソリティ１３はユーザ秘密鍵生成器２１を含む。ユーザ秘密鍵生成器２１は、ドメイン秘密鍵と一または複数の属性表現を受信するように構成されている。これらの属性表現は、ユーザ秘密鍵の将来の所有者にアサインされた一組の属性を表す。
【００５２】
一般的に、ユーザにアサイン可能な各属性は、その属性に一意的なデータを含む、対応する属性表現を有する。これらの属性表現はドメインオーソリティの階層とは独立である。
【００５３】
例えば、属性表現は、セットアップオーソリティ１０またはルートオーソリティ１１により生成される。すべてのドメインオーソリティにより同じ表現が使われてもよい。これは、表示がドメインオーソリティのサブセットによってのみ使われる可能性を排除しない。ユーザ秘密鍵生成器２１は、ユーザ秘密鍵を生成するように構成されている。このユーザ秘密鍵は、ドメインオーソリティ１３のドメイン秘密鍵と、ユーザの一組の属性に対応する属性表現とに基づき生成される。特に、ユーザ秘密鍵が生成されるユーザにアサインされた属性が、鍵の将来の所有者にアロケートされる。取得されたユーザ秘密鍵は、属性表現に対応する一組の属性に関連付けられる。さらに、ドメインオーソリティの階層レベル及び／または位置は、ユーザ秘密鍵に表される。
【００５４】
上記の説明から分かるように、ドメインオーソリティはそれ自信のドメイン秘密鍵に基づき、さらに別のドメイン秘密鍵を生成できる。後者のドメイン秘密鍵は、以後、元のドメイン秘密鍵と呼ぶ。新しいドメイン秘密鍵を生成するドメインオーソリティは、以後、元のドメインオーソリティと呼ぶ。さらに別のドメイン秘密鍵を生成できるドメインオーソリティは、ドメイン秘密鍵生成器２２を有する。ドメイン秘密鍵生成器２２は、ドメインオーソリティの階層中の子ドメインオーソリティのドメイン秘密鍵を生成するアルゴリズムの実装を有する。
【００５５】
図１を参照して、例えば、元のドメインオーソリティ１３は、子ドメインオーソリティ１６のさらに別のドメイン秘密鍵を生成する。子ドメインオーソリティ１６のさらに別のドメイン秘密鍵は、元のドメインオーソリティ１３の元のドメイン秘密鍵に基づき生成される。結果として、生成されたドメイン秘密鍵は、階層ツリー中の隣接する子ノードを表すドメインオーソリティのものである。
【００５６】
ドメイン秘密鍵生成器２２は、ドメイン秘密鍵生成器２２は、子ドメインオーソリティ１６のさらに別のドメイン秘密鍵をドメインオーソリティの階層の公開鍵の一部に基づき生成するように、構成され得る。このため、公開鍵は複数のコンポーネントに分割され、元のドメイン秘密鍵はこれらの公開鍵コンポーネントのサブセットのみに基づく。
【００５７】
子ドメイン秘密鍵を生成するため、一または複数の追加的公開鍵コンポーネントを用いる。使用されるかかる公開鍵コンポーネントの数は、階層内のドメインオーソリティのレベルに関係する。好ましくは、さらに別のドメイン秘密鍵を生成するのに用いられる追加的公開鍵コンポーネントは、元のドメイン秘密鍵の生成に使われていない。
【００５８】
さらに、ドメイン秘密鍵の生成に用いられる公開鍵の一部は、属性とは、特に上記の属性表現とは独立である。このように、ドメインオーソリティがユーザ秘密鍵を生成する時、ドメイン秘密鍵は一または複数の属性に限定されない。
【００５９】
子ドメインオーソリティ１６のさらに別のドメイン秘密鍵によっては、階層中の先行ノード（predecessors）、すなわちルートオーソリティ１１と元のドメインオーソリティ１３に関連する暗号文の復号ができない。暗号化するとき、暗号化器は、上記の公開鍵の一部のサブセットのみを用いる。これは、より多くのコンポーネントに基づく鍵を有する復号器は、暗号文を復号できない可能性があることを意味する。子ドメイン秘密鍵を生成する時に用いる追加的コンポーネントは、復号器がデータを復号するため、対応する公開鍵コンポーネントを暗号文に使う必要があるように、元のドメイン秘密鍵と組み合わせられるので、かかる効果を達成し得る。これは後で実施形態の詳細な説明で説明する。
【００６０】
ドメインオーソリティは、公開鍵のコンポーネントを同じ順序で加えるように構成され得る。このように、ドメインオーソリティの各「世代」は、公開鍵の同じコンポーネントに基づくドメイン秘密鍵を有する。これにより、暗号化データは、ドメインオーソリティの所定数の世代すなわちレベルにより発行されたユーザ秘密鍵によってのみ復号できるようになる。
【００６１】
少なくともいくつかの属性表現は、システム内のドメインオーソリティにとって公に利用可能であってもよい。これにより、これらのドメインオーソリティは、適切に公に利用可能な属性表現に基づき、任意に選択された属性に関連するユーザ秘密鍵を生成できる。
【００６２】
ユーザ秘密鍵は、階層中の位置を表す第１コンポーネントと、ユーザ秘密鍵に関連する一組の属性を表す第２コンポーネントとを含み得る。しかし、ユーザ秘密鍵生成器は、第１コンポーネントと第２コンポーネントを乱数値により結合するように構成されてもよい。このように、悪意あるユーザによるユーザ秘密鍵の修正が防止され得る。このメカニズムの実施例は、以下、第２の詳細な実施形態で説明する。
【００６３】
図５は、本発明による暗号システムの一実施形態における公開情報７５を示す図である。
【００６４】
公開情報７５は、システムの公開パラメータ７０を含む。公開パラメータ７０は、フォーマット情報と、例えば、アルゴリズムで用いられるグループのフィールドまたはグループ識別子を含み得る。例えば、グループの序列（an  order  of  a  group）がパラメータにより指示され得る。公開情報７５は、さらに、ドメインオーソリティの階層に関連する公開鍵７１を含む。この公開鍵７１は、複数の公開鍵コンポーネント７３に分割される。公開情報７５は、さらに、複数の属性に関連する部分７２を含む。この部分７５は、複数の属性表示７４を含む。これらの属性表示は、例えば、各属性を表す公開鍵及び／または属性のサブセットを表す公開鍵を含み得る。
【００６５】
図６は、ドメイン秘密鍵８０を示す図である。
【００６６】
図７は、ユーザ秘密鍵８４を示す図である。ユーザ秘密鍵８４は、ドメインオーソリティの階層に関連する第１コンポーネント８１を含む。ユーザ秘密鍵８４の第１コンポーネント８１を生成するために、階層に関する公開鍵７１の公開鍵コンポーネント７３のサブセット（または全部）を用いることができる。
【００６７】
ユーザ秘密鍵８４は、さらに、ユーザ秘密鍵８４がアサインされるユーザに関連する属性に関する第２コンポーネント８２を含む。第２コンポーネント８２は複数のサブコンポーネント８３を含む。各サブコンポーネント８３は、公開属性表現７４の一に基づくものであってもよい。
【００６８】
ユーザ秘密鍵はさらに別のコンポーネント８５を含み得る。これらのさらに別のコンポーネント８５は、好ましくは、階層と属性の両方と独立である。ユーザ秘密鍵コンテンツのより詳細な例は後で説明する。必要な情報がユーザ秘密鍵においていかに表されるかという点については多くのバリエーションがあり得る。
【００６９】
復号器１９は例えば、システムのエンドユーザにより利用される。これは、階層の他の場所にある復号器１４と１７にも当てはまる。復号器１９は、伝送チャンネル２０を解して暗号化器１８から暗号文を受信する受信器を有する。かかる伝送チャンネルは、例えば、電子メール、インターネットなどのデジタル通信手段、または光ディスクなどのリムーバブル記憶媒体を有する。さらに、復号器１９は、ドメインオーソリティ１６からユーザ秘密鍵を受信する受信器を有する。ユーザ秘密鍵は、例えば、暗号文に関してこの段落で述べた任意の伝送手段を用いて、ドメインオーソリティから送信される。暗号文は、システムで利用できる属性に関するポリシーに関連し得る。さらに、暗号文は、さらにドメインオーソリティ１１１，１２，１３，１５，１６の階層の少なくとも一部に関連し得る。復号器は、ドメインオーソリティ１６により発行されたユーザ秘密鍵に基づき、暗号文を復号するように構成されている。上記の通り、ユーザ秘密鍵は、システム中で利用できる一組の属性に関連し得る。
【００７０】
ユーザ秘密鍵に関連する一組の属性が暗号文のアクセスポリシーを満足する場合にのみ、ユーザ秘密鍵により暗号文の復号ができる。上記の通り、属性は階層とは独立である。このように、どのドメインオーソリティ１６も、これらの属性をそのエンドユーザに付与できる。これは、他の属性が特定のドメインオーソリティに制限される可能性を排除するものではない。
【００７１】
上記の通り、ユーザ秘密鍵は、ユーザ秘密鍵を発行したドメインオーソリティ１６の階層における一に関連し得る。この位置は、階層中の先行ノード（puredecessors）の数を示すレベルを有するものと見なすことができる。この先行ノードの数は、例えば、ドメインオーソリティから階層ツリーを通ってルートオーソリティまでの最短経路を計算することにより、カウントできる。しかし、かかるカウントは、一般に実行中システムにおいては実行されない。レベルは、ユーザ秘密鍵のコンテンツにより黙示的または明示的に表されているからである。
【００７２】
上記の通り、暗号文は、ドメインオーソリティの階層の少なくとも一部に関連し得る。この部分は、所定レベルすなわち上記の通りルートオーソリティまでのドメインオーソリティと、その所定レベルまでのドメインオーソリティの世代よりなる。これは、暗号化のための公開鍵の対応コンポーネントを用いることにより、暗号化器により実現できる。
【００７３】
ユーザ秘密鍵を発行したドメインオーソリティが所定レベルまでのドメインオーソリティに属するときにのみ、ユーザ秘密鍵により暗号文の復号ができる。これは、ユーザ秘密鍵と暗号文とを近似的に指定することにより、実現できる。しかし、ユーザ秘密鍵を用いて暗号文を復号できるように、復号アルゴリズムを適宜適用する。近似的復号アルゴリズムの詳細な例は後で説明する。
【００７４】
暗号化器１８は、図示した例では、階層の一部ではない。暗号化器は、暗号化するメッセージを受信する受信器を有する。このメッセージは、キーボード、医療画像化装置、ユーザアプリケーションプログラムなどの任意のメッセージ源から発せられても良いし、任意の種類の伝送チャンネルを介したものでもよい。暗号化器１８は、さらに、例えば、セットアップエンティティ１０及び／またはルートオーソリティ１１から公開情報を受信する受信器も有する。この公開情報は、階層に関する公開鍵のコンポーネント及び／または公開属性表示を含む。この情報はすべて暗号化器により受信され、またはその生産段階で事前設定され得る。
【００７５】
暗号化器１８は、ドメインオーソリティの階層の少なくとも一部と複数の俗低に対するポリシーに関する公開鍵情報に基づいてメッセージを暗号化して、そのポリシー及びドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得するように構成され得る。上記の通り、属性は階層とは独立である。このため、アクセスポリシーに関する属性の公開属性表現を用いて、データを暗号化する。さらに、階層に関する公開鍵のコンポーネントを用いて、暗号文を、ドメインオーソリティの階層の前記少なくとも一部と関連づける。
【００７６】
上記の通り、前記階層の少なくとも一部は、ルートオーソリティと、ルートオーソリティの子孫ノード（descendants）の所定数の世代とを含む。ここで子孫ノードは、自分のドメイン鍵を階層中の自分の親から取得するドメインオーソリティ階層中のドメインオーソリティである。
【００７７】
階層的属性ベース暗号化の方法を図３に示す。ステップ５１において、暗号化システムの複数の一般パラメータを確立するため、セットアップアルゴリズムを実行する。これらの一般パラメータは、暗号文と平文のフォーマットとサイズ、及び暗号化に用いられるフィールドの順序とタイプに関係する。また、一般パラメータは、システムにおいて用いられる属性の表現、及びドメインオーソリティにユーザ秘密鍵の発行を委任するのに用いられるコンポーネントを有する公開鍵も含む。
【００７８】
ステップ５２において、ルートオーソリティは、ドメインオーソリティのドメイン秘密鍵を生成する。これは、公開鍵に基づき、公開鍵のコンポーネントの少なくとも一を用いてドメイン秘密鍵を生成する。ステップ５５において、さらにどれかのドメインオーソリティがルートオーソリティからドメイン秘密鍵を必要とするか判断する。ＹＥＳでなければ、ステップ５２が繰り返される。原理的には、ルートオーソリティにより生成された各ドメイン秘密鍵に対して、公開鍵の同じコンポーネントを用いる。しかし、これは限定ではない。
【００７９】
ステップ５３において、ドメインオーソリティの階層中のドメインオーソリティは、その階層中の自分の子ドメインオーソリティの一に対して、ドメイン秘密鍵を生成する。これは、元のドメインオーソリティの元のドメイン秘密鍵と、及びその階層に関する公開鍵の未使用部分、すなわち元のドメイン秘密鍵の生成に用いられなかった一または複数の公開鍵コンポーネントとに基づき行われる。
【００８０】
ステップ５６において、他のドメインオーソリティがドメイン秘密鍵を必要としているか判断する。その場合、ステップ５３が繰り返され、元の各ドメインオーソリティがそれにより管理されるドメインオーソリティのドメイン秘密鍵を生成するようにする。
【００８１】
ステップ５４において、ドメインオーソリティの階層中のドメインオーソリティは、自分のドメイン秘密鍵と、一または複数の属性表現とに基づきユーザ秘密鍵を生成する。このように、ユーザ秘密鍵が、属性表現に対応する一組の属性、具体的にはユーザ秘密鍵がアサインされるユーザの属性に関連して発行される。ユーザ秘密鍵は、さらに、階層中のドメインオーソリティの一に関連する。
【００８２】
ステップ５７において、他のユーザがユーザ秘密鍵を必要とするか判断する。そうであれば、ステップ５４が繰り返され、各ドメインオーソリティがそれにより管理されるユーザのユーザ秘密鍵を生成するようにする。
【００８３】
ステップ５８において、ドメインオーソリティの階層の少なくとも一部と、複数の属性に対するポリシーとに関連する公開鍵情報（例えば、公開鍵コンポーネント）に基づいて、メッセージが暗号化され、ポリシーと、ドメインオーソリティの階層の前記少なくとも一部とに関連する暗号文を取得する。階層とは独立な属性表現を用いる。
【００８４】
ステップ５９において、暗号文が、ユーザのユーザ秘密鍵に基づき、ユーザの復号器の一により復号される。ユーザ秘密鍵はポリシーを満たす一組の属性に関連する。ユーザ秘密鍵により、そのユーザ秘密鍵に関連する一組の属性が暗号文のポリシーを満たすとき、暗号文の復号が可能になり、ユーザ秘密鍵は、暗号文に関連するドメインオーソリティの階層の前記少なくとも一部のドメインオーソリティにより発行されたものである。    
ステップ６０において、他のメッセージを送信する必要があるか判断する。そうであれば、ステップ５８と５９を繰り返す。より多くの鍵が必要な場合、本プロセスは関連ステップを実行してもよい。例えば、新しいドメインオーソリティがシステムに追加されると、本プロセスはステップ５２または５３を実行して、そのドメインオーソリティのドメイン秘密鍵を生成する。新しいユーザが追加、またはユーザの属性が変化した時、本プロセスはステップ５４を実行して新しいユーザ秘密鍵を生成する。それ以上アクションが必要なければ、本プロセスは終了する。
【００８５】
言うまでもなく、これらのステップのうち一または複数は、例えば、異なるエンティティの装置により、またはパラレルプロセッサにより、並列に実行できる。また、言うまでもなく、ここに説明したステップの順序は、単なる一例である。実際には、ステップの実行順序は、ユーザの通信需要により変わり得る。本方法は、コンピュータシステムに方法を実行させる命令を有するコンピュータプログラム製品として、ソフトウェアで実装するのに好適である。具体的に、セットアップエンティティ、ルートオーソリティ、ドメインオーソリティ、復号器、暗号化器などの特定のエンティティを実装するのに必要なステップを実行するコンピュータプログラム製品を考案することができる。ソフトウェアを分割してモジュールにすることも可能である。
【００８６】
階層属性ベース暗号方式は次のアルゴリズムの実装を含む。対応するアルゴリズムは、既存の暗号文ポリシー属性ベース暗号（ＣＰ−ＡＢＥ）システムにある。この既存のＣＰ−ＡＢＥ方式を次のように拡張できる：
-セットアップ：セットアップアルゴリズムは、初期化段階においてシステムパラメータを設定し、公開パラメータＰＫとマスター鍵ＭＫを出力する。このアルゴリズムはルートオーソリティにより実行される。
【００８７】
−Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎｒｏｏｔ  ａｕｔｈ．（ＭＫ，ＰＫ）：このアルゴリズムは、ドメインオーソリティの鍵を生成するため、ルートオーソリティにより実行される。ＭＫとＰＫを入力とし、レベルｋ＝１であるドメインオーソリティの秘密鍵ｄＩＤ｜ｋ＝１を出力する。ドメインオーソリティは、これらの鍵を用いて、自分のドメイン中のユーザに、さらに別の鍵を発行できる。
【００８８】
−Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎｄｏｍａｉｎ  ａｕｔｈ．（ｄＩＤ｜ｋ＝１）：このアルゴリズムはドメインオーソリティにより実行される。秘密鍵ｄＩＤ｜ｋ＝１を入力とし、ユーザ秘密鍵ｄＩＤ｜ｋ＋１を出力する。ユーザ秘密鍵は、２つの部分を有する。１つの部分は階層に関し、他の１つの部分はユーザが有する属性に関する。ドメインオーソリティは、問題の鍵が許せば（？）、階層部分を用いてさらに別の鍵を発行できる。
【００８９】
−Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，Ｍ，Ａ）：暗号化アルゴリズムは、公開鍵ＰＫ、メッセージＭ、及び属性ユニバース（a  universe  of  attributes）に対するポリシーＡを入力とする。このアルゴリズムは暗号文ＣＴを返す。この暗号文は、アクセスポリシーＡを満たす属性セットωに関連する秘密鍵を有するユーザのみが暗号文ＣＴを復号できるように、構成されている。暗号文ＣＴはアクセスポリシーＡの記述を黙示的に含む。
【００９０】
−Ｄｅｃｒｙｐｔｉｏｎ（ＰＫ，ＣＴ，ｄＩＤ｜ｋ＋１）：復号アルゴリズムは、公開パラメータＰＫ、暗号文ＣＴ、秘密鍵ｄＩＤ｜ｋ＋１を入力とする。このアルゴリズムは、ｄＩＤ｜ｋ＋１が、暗号文Ａにより黙示的に表されたアクセスポリシー「Ａ」を満たせば、復号されたメッセージＭを出力する。そうでなければ、エラーシンボル┴を返す。
【００９１】
提案の方式の一において、セントラルオーソリティ（例えば、セントラルヘルスケアフェデレーション）は、セントラルオーソリティの下のドメインオーソリティ（特定の病院または機関）に鍵を発行する。ドメインオーソリティは、これらの鍵を用いて、ユーザ属性に対応するユーザに鍵を発行する。概念的には、ユーザ鍵２つの部分を有するものとして可視化できる。一部分は階層に関し、他の部分はユーザが有する属性に関する。暗号化器は、一組の属性に対するアクセスコントロールポリシーによりデータを暗号化し、暗号を特定のドメイン／階層に結びつける必要はない。ＣＰ−ＡＢＥ方式と（階層アイデンティティベース暗号方式などの）階層的暗号方式の両方の機能性は、結合できる。暗号化器はドメインを指定する必要がない。暗号文のサイズ、及び復号コストは、階層の深さ「１」とは独立であってもよい。
【００９２】
図４は、一実施形態を示す概念図である。このシステムでは、ルートオーソリティ１は、ドメインオーソリティ２，３及び４に、個人鍵（personalized  keys）（ｄＩＤ｜ｋ＝１）を発行する。ドメインオーソリティ２は、その鍵ｄＩＤ｜ｋ＝１を用いて、自分のドメイン内のユーザにかぎｄＩＤ｜ｋ＋１を発行する。ユーザ鍵ｄＩＤ｜ｋ＋１は２つの部分よりなる。一部分は階層に関し、他の部分はユーザが有する属性に関する。ユーザは、そうすることが許されていれば、階層部分を用いて、さらに別のユーザに鍵を発行することにより、ドメインオーソリティとして機能できる。
【００９３】
以下、本発明の第１の実施形態をさらに詳しく説明する。Ｇ０を素数次ｐの双線形群とし、ｇをＧ０の生成元とする。また、ｅ：Ｇ０×Ｇ０→Ｇ１が双線形写像を示すとする。セキュリティパラメータλは群のサイズを決定する。ｉ∈Ｚｐとし、Ｚｐ＝｛０，…，ｐ−１｝とし、ωがＺｐの要素の集合であるとして、ラグランジュ係数Δｉ，ωは
（外１）
2014531850.tif 000035
と定義される。また、耐衝突性のあるハッシュ関数Ｈ１：｛０，１｝＊→Ｇ０とＨ２：｛０，１｝＊→Ｚｐ＊とを用いる。ここで、｛０，１｝＊は任意長さのバイナリシーケンスを示し、Ｚｐ＊＝Ｚｐ＼｛０｝である。Ｈ１は、バイナリストリングとして記述した任意の属性を、ランダムな群要素Ｇ０に写す写像であり、Ｈ２はオーソリティのアイデンティティを表すストリングをＺｐ＊に写す写像である。以下、階層的属性ベース暗号（ＨＡＢＥ）方式を実装するのに用いられるアルゴリズム例を説明する。
【００９４】
１．Ｓｅｔｕｐ（λ，ｌ）：このアルゴリズムは、ルートオーソリティにより実行され、最大深さ１のＨＡＢＥのシステムパラメータを生成する。これは、ランダム生成元ｇ∈Ｇ０を選択し、α∈Ｚ、β∈Ｚを選択し、ｇ１＝ｇα、ｇ２＝ｇβを設定する。また、ランダム要素ｇ３、ｈ１、・・・、ｈｌ∈Ｇ０を取る。公開パラメータ及び秘密パラメータはコンポーネント
【数１】
2014531850.tif 000036
を有する。ここで、Ａ＝ｅ（ｇ，ｇ）α−βである。
【００９５】
２．Ｋｅｙ  ＧｅｎｅｒａｔｉｏｎＲＡ（ＭＫ，ＰＫ）：このアルゴリズムは、マスター秘密鍵ＭＫと公開鍵ＰＫを用いて、深さｋ≦ｌにおけるドメインオーソリティの秘密鍵ＳＫＩＤ｜ｋを生成するために実行される。ランダムなｒ∈Ｚｐ＊を取り、深さｋ≦ｌのドメインオーソリティの鍵を出力する。ｒの値は各ドメインオーソリティについて一意的である。秘密鍵ＳＫＩＤ｜ｋは
【数２】
2014531850.tif 000037
のように計算される。ここで、記号ＩＤは異なるサブオーソリティに対して発行される鍵を区別するラベルとして用いられる。
【００９６】
深さ１＜ｋ≦ｌのドメインオーソリティの秘密鍵ＳＫＩＤ｜ｋは、階層における秘密鍵ＳＫＩＤ｜ｋ−１を有する親ドメインオーソリティの秘密鍵が与えられれば、インクリメンタルに生成できる。
【００９７】
このために、まず、ａ０、ａ１、ｂｋ、・・・、ｂｌ、及びｃ０を
【数３】
2014531850.tif 000038
のように確定する。
【００９８】
ここで、記号ｒ’は親ドメインオーソリティの一意的値ｒである。ＳＫＩＤ｜ｋを生成するため、本システムは乱数値ｔ∈Ｚｐ＊を取り、
【数４】
2014531850.tif 000039
を出力する。
【００９９】
秘密鍵ＳＫＩＤ｜ｋはｒ＝ｒ’＋ｔに完全に分散していてもよい。これは、ｒ’がランダムに選択され、ｔもランダムに選択され、その分布が（疑似）ランダムであると、ｒの分布も（疑似）ランダムであることを意味する。
ｒ∈ＲＺｐ＊を取り、鍵生成アルゴリズムはｔをランダムに選択し、ｒ＝ｒ’＋ｔを設定する。
【０１００】
３．Ａｔｔｒｉｂｕｔｅ  Ｋｅｙ  ＧｅｎｅｒａｔｉｏｎＤＡ｜ｋ（ＳＫＩＤ｜ｋ，ＰＫ，ω）：このアルゴリズムは、深さ１≦ｋ≦ｌのドメインオーソリティにより実行され、属性セットωを有するユーザの秘密鍵ＳＫＩＤ｜ｋ，ωを生成する。まず、このアルゴリズムは、乱数値ｒｕ∈Ｚｐを選択し、次に各属性ｊ∈ωについて乱数値ｒｊを選択し、次いで
【数５】
2014531850.tif 000040
によりＳＫＩＤ｜ｋ，ωを計算して出力する。
ここで、∀ｊ∈ω：Ｄｊ＝ｇｒｕ・Ｈ１（ｊ）ｒｊ及びＤ’ｊ＝ｇｒｊである。
【０１０１】
４．Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，Ｍ，τ，ｌ）：このアルゴリズムは、暗号化器により実行され、アクセスツリーτの下でメッセージＭ∈Ｇ１を暗号化する。暗号化されたメッセージＣＴは、鍵がレベルｋ≦ｌと、アクセスツリーτを満たす属性セットωとを有するユーザによってのみ復号できる。概念的には、暗号文ＣＴは、３つのカテゴリーに関する成分を有する：１）暗号化メッセージ、２）階層に関連するコンポーネント、及び３）アクセスツリーτ。
【０１０２】
τがアクセス構造を表すツリーであるとする。τの各非リーフノードは閾値ゲートを表す。閾値ゲートはその子ノード及び閾値により記述され得る。ｎｕｍｋをノードκの子供の数とし、ｋκをその閾値とする。ここで、０＜ｋｋ≦ｎｕｍｋである。ノードκの閾値ゲートがＯＲゲートであるとき、ｋκ＝１である。ノードκの閾値ゲートがＡＮＤゲートであるとき、ｋκ＝ｎｕｍｋである。リーフノードκは、例えばｋκ＝１のように、属性と閾値により記述できる。
【０１０３】
この段落では、いくつかの関数を定義する。関数ａｔｔ（κ）を用いて、アクセスツリー中のリーフノードκに関連する属性値を示す。この属性値は特定の属性を表す数値である。アクセスツリー中のノードｋの親はｐａｒｅｎｔ（ｋ）により示される。また、アクセスツリー中のノードの子供間に順序を定義する。子ノードは１からｎｕｍまでの数字を付される。子ノードに関連するかかる値を返すため、関数（κ）を用いる。
【０１０４】
アクセスツリーを表すために、暗号化アルゴリズムは、まずアクセスツリーτ中の各ノードκ（リーフを含む）に対して多項式ｑκを選択する。これらの多項式は、ルートノードＲから始めて、トップダウン式に、つぎのように選択できる。ツリー中の各ノードκに対して、その多項式ｑκの次数をそのノードの閾値ｋκより１少なく設定する。すなわち、ｄκ＝ｋκ−１である。
【０１０５】
ルートノードＲから始めて、本アルゴリズムは、ランダム値ｓを選択し、ｑＲ（０）＝ｓと設定する。値ｓは閾値の秘密共有のために用いる秘密値である。次に、本アルゴリズムは、ランダムに多項式ｑＲの他のｄＲ個の点を選択し、多項式を完全に確定する。他の任意のノードκについて、ｑκ（０）＝ｑｐａｒｅｎｔ（κ）（ｉｎｄｅｘ（κ））を設定して、他のｄκ個の点をランダムに選択して、ｑκを完全に確定する。ここで、ｉｎｄｅｘ（κ）はノードκの値にアクセスするのに用いられる。Ｙをアクセスツリーτ中のすべてのリーフノードの集合とする。暗号文ＣＴは
【数６】
2014531850.tif 000041
を計算することにより構成される。
ここで、Ｍはメッセージであり、ａｔｔ（ｙ）は属性ｙの値です。
【０１０６】
５．Ｄｅｃｒｙｐｔｉｏｎ（ＣＴ，ＳＫＩＤ｜ｋ，ω）：復号アルゴリズムは暗号文ＣＴと秘密鍵ＳＫＩＤ｜ｋ，ωを入力とする。復号アルゴリズムは、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）という反復的アルゴリズムを含む。暗号文ＣＴはアクセスツリーτの表現を黙示的に含むとみなせる。アクセスツリーτは、属性のどの組み合わせが暗号文ＣＴの復号に必要かを示すアクセスポリシーの表現である。
【０１０７】
以下、最初に、κがリーフノードである場合について、反復的アルゴリズムＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）を確定する。次に、κが非リーフノードである場合について、反復的アルゴリズムＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）を確定する。その後、メッセージＭを回復する関数Ｄｅｃｒｙｐｔｉｏｎ（ＣＴ，ＳＫＩＤ｜ｋ，ω）を説明する。
【０１０８】
（ａ）リーフノードκの場合のＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）：最初のステップにおいて、τ中のリーフノードκから始める。かかるリーフノードは、属性を表す実数値に関連する。関数ａｔｔ（κ）は、リーフノードκの実属性値を返す。ｉ＝ａｔｔ（κ）とする。
ｉ∈ωであれば、
【数７】
2014531850.tif 000042
である。
（外２）
2014531850.tif 000043
であれば、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）＝⊥である。
【０１０９】
（ｂ）非リーフノードκの場合のＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）：κがτ中の内部（非リーフ）ノードであるとき、アルゴリズムは繰り返しプロセスを実行する。アルゴリズムは次のように進行する。κの子であるすべてのノードｚに対して、ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，ｚ）を呼び出す。ユーザがポリシーを満たすのに十分な属性を有するか判断するため、その出力を用いる。ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，ｚ）の出力をＦｚとして記憶する。ωκを、子ノードの集合ωκ中のすべてのｚについてＦｚ≠⊥となるような、子ノードｚのｋκサイズの集合であるとする。ここで、ｋκはノードの閾値を示す。
【０１１０】
このようなｋκサイズの集合がなければ、ノードκの閾値は満たされず、関数は⊥を返す。そうでなく、そのような集合があれば、ＤｅｃｒｙｐｔＮｏｄｅは
【数８】
2014531850.tif 000044
を計算する。
ここで、ｚがリーフノードでありω’κ＝ｉ：ｚ∈ωκであれば、ｉ＝ａｔｔ（ｚ）でる。
このように、ｅ（ｇ，ｇ）ｒｕ・ｑκ（０）が求まるが、それは
【数９】
2014531850.tif 000045
だからである。
これでＤｅｃｒｙｐｔ  Ｎｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，κ）の確定は終了する。
【０１１１】
秘密鍵ＳＫＩＤ｜ｋ，ωを用いて暗号文ＣＴを復号するため、復号アルゴリズムは次のように進行する。最初に、復号アルゴリズムはアクセスツリーτのルートノードＲにおいて、ＤｅｃｒｙｐｔＮｏｄｅ関数を呼び出す。ＤｅｃｒｙｐｔＮｏｄｅ（ＣＴ，ＳＫＩＤ｜ｋ，ω，Ｒ）が⊥を返すと、それはアクセスツリーτが鍵ＳＫＩＤ｜ｋ，ωの利用可能な一組の属性ωにより満たされないことを意味する。かかる場合、復号は可能ではない。そうでなければ、アクセスツリーτがωにより満たされる。かかる場合、復号アルゴリズムは
【数１０】
2014531850.tif 000046
を設定する。ここで、ｓ＝ｑＲ（０）である。
【０１１２】
次に、復号アルゴリズムは
【数１１】
2014531850.tif 000047
を計算する。
【０１１３】
次に、復号アルゴリズムはＺ（３）を次のように計算する。レベルｋがｋ≦ｌであるユーザのみが、Ｚ（３）の正しい値を回復でき、それによりメッセージＭを回復できる。値Ｚ（３）は
【数１２】
2014531850.tif 000048
により計算できる。
【０１１４】
次に、復号アルゴリズムは、Ｚ（３）をＺ（２）で割り、Ｚ（４）を得る：
【数１３】
2014531850.tif 000049
。
【０１１５】
最後に、復号アルゴリズムは、
（外３）
2014531850.tif 000050
を計算し、
【数１４】
2014531850.tif 000051
によりメッセージＭを得る。
【０１１６】
以下に第２の実施形態を説明する。第２の実施形態は、（例えば、裏切り者を含む）ユーザが自分の秘密鍵を、例えばインターネット上に公開することにより、公開してしまうことを防ぐという問題に対する解とを提供する。上記の第１の実施形態では、ユーザは、自分の有効な秘密鍵を再ランダム化して、それを公開することもできる。こうした再ランダム化された秘密鍵は、誰でも、医療レコードなどの秘密情報を復号または閲覧するために用いられる。かかる行為を防ぐ阻止メカニズムを提供できる。
【０１１７】
これは、再ランダム化により秘密鍵が使えなくなるので、ユーザが自分の秘密鍵を再ランダム化することを防ぐことにより実現できる。ユーザは、自分の鍵を元の改変されていない形式で公開するしかない。しかし、鍵を改変されていない形式で公開すると、それらの鍵を発行したドメインオーソリティまたはセントラルルートオーソリティが、公開された鍵を認識して、その鍵の元のユーザをトレースできる。
【０１１８】
第２の実施形態の説明の記述法において、ルートオーソリティは秘密鍵ＳＫｋをドメインオーソリティに発行する。ドメインオーソリティは、鍵ＳＫｋを用いて、自分のドメイン内のユーザに、鍵ＳＫＰｋ，ωを発行できる。ユーザ鍵ＳＫＰｋ，ωは、２つの部分を含む。一方の部分は階層中の位置に関し、他方の部分はユーザが有する属性に関する。次のアルゴリズム例を用いて第２の実施形態を実装してもよい。
１．Ｒｏｏｔ  Ｓｅｔｕｐ（Ｋ）：
ａ）  ｓ０，α，β，ａ∈Ｚｐを選択し、秘密に保つ；
ｂ）  暗号ハッシュ関数Ｈ１：｛０，１｝＊→Ｇ１とＨ２：ＧＴ→｛０，１｝ｎとを選択する；
ｃ）  Ａ＝ｅ（ｇ，ｇ）α・ｅ（ｈ１，ｇ）ｓ０を設定する。
公開パラメータはＰＫ＝（Ｇ１，ＧＴ，ｅ，ｇ，Ｈ１，Ｈ２，ｈ１，ｈ２，・・・，ｈｔ，ｇａβ）を含む。
マスター秘密鍵はＭＫ＝（α，ａ，β，ｓ０）を含む。
１．Ｌｏｗｅｒ  Ｌｅｖｅｌ  Ｓｅｔｕｐ（ｋ−１）：レベルｋ−１のドメインオーソリティがランダムなｓｋ−１∈Ｚｐを選択し、それを秘密に保つ。
２．Ｋｅｙ  Ｇｅｎｅｒａｔｉｏｎ（ＰＫ，β，ｇａ，ｓｋ−１，ｗ）：
ａ）ｈｉを選択する。これは、階層中のドメインオーソリティのレベルを示す；
ｂ）
（外４）
2014531850.tif 000052
を設定する。これは、レベルｋのドメインオーソリティの、ユーザにさらに別の秘密鍵を発行するのに使える鍵である。ここで、ルートオーソリティの鍵はＳＫ１＝ｇαｈ１ｓ０である。ユーザの秘密鍵はその属性に関連する；
ｃ）ｒｕ∈Ｚｐを選択し、ＳＫＰｋ，ωを
【数１５】
2014531850.tif 000053
となるよう設定する。
１．Ｅｎｃｒｙｐｔｉｏｎ（ＰＫ，τ）：
ａ）ランダムなｓ∈Ｚｐを選択する；
ｂ）暗号文Ｃを
【数１６】
2014531850.tif 000054
となるよう設定する。
ここで、
（外５）
2014531850.tif 000055
は例えば追加的秘密共有方法（additive  secret  sharing  method）を用いて計算されるｓのシェア（share）である。秘密共有方法のさらに詳細は、説明を明確にするため、ここでは省略する。当事者は、これらの詳細を、この説明及びその当業者の秘密共有方法に関する知識とに基づき、埋め合わせることができる。
１.Ｄｅｃｒｙｐｔｉｏｎ（ＳＫＰ＿ｋ，ω，Ｃ）：
仮定：ωがアクセス構造τを満たすものとする。
ａ）
（外６）
2014531850.tif 000056
を計算する；
ｂ）
（外７）
2014531850.tif 000057
を計算する；
ｃ）
（外８）
2014531850.tif 000058
を計算する。
【０１１９】
次の記号テーブルは第２の実施形態の説明に当てはまる。
【表１】
2014531850.tif 000059
【０１２０】
言うまでもなく、本発明はコンピュータプログラム、特に情報担体上またはその中のコンピュータプログラムにも適用できる。そのプログラムは、ソースコード、オブジェクトコード、ソースコードとオブジェクトコードの中間コード（部分的にコンパイルされた形体）、その他本発明による不法の実施に使用するのに好適な形体でもよい。言うまでもなく、かかるプログラムは多くの異なるアーキテクチャ的な設計を有する。例えば、本発明による方法またはシステムの機能を実施するプログラムコードは、一または複数のサブルーチンに分割してもよい。当業者には、これらのサブルーチン間の機能の分配する多くの異なる方法が明らかであろう。サブルーチンは実行可能な一ファイルに格納され、自己完結型のプログラムを構成する。かかる実行可能ファイルは、コンピュータ実行可能命令である例えばプロセッサ命令やインタープリタ命令（例えば、Ｊａｖａ(登録商標)インタープリタ命令）を含む。あるいは、一または複数または全部のサブルーチンは、少なくとも１つの外部ライブラリファイルに格納して、静的または動的、例えば実行時に、メインプログラムとリンクできる。メインプログラムは、少なくとも１つのサブルーチンへのコールを含む。サブルーチンは互いへのコールを含んでいてもよい。コンピュータプログラム製品に関する一実施形態は、ここに記載した少なくとも１つの方法のステップの処理に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、静的または動的にリンクされた一または複数のファイルに格納される。コンピュータプログラム製品に関する他の一実施形態は、ここに記載した少なくとも１つのシステム及び／または製品の各手段に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに分割され、静的または動的にリンクされた一または複数のファイルに格納される。
【０１２１】
コンピュータプログラムの記憶担体は、プログラムを担うことができる任意の要素または装置である。例えば、記憶担体は、ＲＯＭ（例えば、ＣＤ−ＲＯＭまたは半導体ＲＯＭ）等、または磁気記録媒体（例えばフラッシュドライブまたはハードディスク）等の記憶媒体を含む。さらにまた、記憶担体は、電子的または光ケーブル、または無線その他の手段により搬送できる電子的または光学的信号等の伝送可能キャリアであってもよい。プログラムがそのような信号に化体しているとき、そのキャリアはそのようなケーブルまたはその他の装置または手段により構成される。あるいは、記憶担体は、関係する方法を実行またはその実行に使用するように適応している、プログラムが化体した集積回路であってもよい。
【０１２２】
もちろん、上記の実施形態は、本発明を例示するものであり、限定するものではなく、当業者は、添付したクレームの範囲を逸脱することなく、別の実施形態を多数設計することができる。クレームにおいて、括弧の間に入れた参照符号はクレームを限定するものと解釈してはならない。「有する」という動詞及びその変化形を用いたが、請求項に記載された要素または段階以外の要素の存在を排除するものではない。構成要素に付された「１つの」、「一」という前置詞は、その構成要素が複数あることを排除するものではない。本発明は、複数の異なる構成要素を有するハードウェア手段によって、または好適にプログラムされたコンピュータによって実施してもよい。複数の手段を挙げる装置クレームにおいて、これらの手段は、１つの同じハードウェアにより実施してもよい。相異なる従属クレームに手段が記載されているからといって、その手段を組み合わせて有利に使用することができないということではない。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
階層をなすドメインオーソリティと、
ユーザにアサイン可能な複数の属性と、を有する暗号システムであって、
前記階層中のドメインオーソリティは、
ドメイン秘密鍵と、前記ユーザにアサインされる一組の属性を表す公開鍵情報を含む一または複数の属性表現に基づき前記ユーザのユーザ秘密鍵を生成するユーザ秘密鍵生成器を有し、
前記ドメイン秘密鍵は、
ａ）前記階層中のドメインオーソリティの親ドメインオーソリティのドメイン秘密鍵、または
ｂ）前記階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵に基づき、
前記属性表現は前記階層をなすドメインオーソリティとは独立である、
暗号システム。
【請求項２】
前記ドメインオーソリティは元のドメイン秘密鍵を有する元のドメインオーソリティであり、
前記階層をなすドメインオーソリティ中の子ドメインオーソリティの、前記元のドメイン秘密鍵に基づくさらに別のドメイン秘密鍵を生成するドメイン秘密鍵生成器をさらに有する、
請求項１に記載の暗号システム。
【請求項３】
前記システムは、前記階層をなすドメインオーソリティに関する公開鍵を含む公開情報を有し、
前記子ドメインオーソリティのさらに別のドメイン秘密鍵は、前記元のドメイン秘密鍵の生成に使われていない、前記属性とは独立な前記公開鍵の一部に基づく、
請求項２に記載の暗号システム。
【請求項４】
前記子ドメインオーソリティのさらに別のドメイン秘密鍵は、前記階層をなすドメインオーソリティ中の先行ノードに関連する暗号文の復号をさせないように構成された、
請求項２に記載の暗号システム。
【請求項５】
前記属性表現の少なくともいくつかは、前記階層中の一または複数のドメインオーソリティに公に利用可能である、請求項１に記載の暗号システム。
【請求項６】
前記ユーザ秘密鍵は、
第１のコンポーネントは前記階層をなすドメインオーソリティにおける一を表し、
第２のコンポーネントは前記ユーザにアサインされた前記一組の属性を表し、
前記ユーザ秘密鍵生成器は、前記第１コンポーネントと前記第２コンポーネントを乱数値により結合するように構成された、
請求項１に記載の暗号システム。
【請求項７】
複数の属性に対するポリシーに関連し、前記階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信し、
前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティにより発行されたユーザ秘密鍵に基づいて前記暗号文を復号する、するように構成された復号器をさらに含み、
前記ユーザ秘密鍵に対応する前記一組の属性が前記暗号文のポリシーを満たすとき、前記ユーザ秘密鍵により前記暗号文の復号が可能になる、
請求項１に記載の暗号システム。
【請求項８】
前記ユーザ秘密鍵は、前記ユーザ秘密鍵を生成する前記階層をなすドメインオーソリティにおける、前記階層中の先行ノードの数を表すレベルに関連し、
前記階層をなすドメインオーソリティの少なくとも一部は、前記階層中の所定レベルまでのドメインオーソリティよりなり、前記ユーザ秘密鍵を生成したドメインオーソリティのレベルが前記所定レベル以下であるときにのみ、前記ユーザ秘密鍵により暗号文の復号ができる、
請求項７に記載の暗号システム。
【請求項９】
前記階層をなすドメインオーソリティの少なくとも一部に関する公開鍵情報と、一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するように構成された暗号化器をさらに含む、請求項１に記載の暗号システム。
【請求項１０】
前記階層の少なくとも一部は、ルートオーソリティと、前記ルートオーソリティの子孫ノードの所定数の世代とを有する、請求項７または９に記載の暗号システム。
【請求項１１】
階層をなすドメインオーソリティと、ユーザにアサイン可能な複数の属性とを有する階層属性ベース暗号システムにおいて用いるユーザ秘密鍵を生成する方法であって、
ａ）前記階層中のドメインオーソリティの親ドメインオーソリティのドメイン秘密鍵、または
ｂ）階層をなすドメインオーソリティのルートオーソリティのルート秘密鍵とに基づいて、前記階層中のドメインオーソリティのドメイン秘密鍵を生成するステップと、
前記ドメイン秘密鍵と、前記ユーザにアサインされた一組の属性を表す公開鍵情報を含む一または複数の属性表現とに基づきユーザ秘密鍵を生成するステップとを有し、
前記属性表現は前記階層をなすドメインオーソリティとは独立である、
方法。
【請求項１２】
階層をなすドメインオーソリティと、ユーザにアサイン可能な複数の属性とを有する階層属性ベース暗号システムにおいて用いる暗号文を復号する方法であって、
複数の属性に対するポリシーに関連し、前記階層の少なくとも一部に関連する公開鍵情報に基づき暗号化することにより、前記階層をなすドメインオーソリティの少なくとも一部にさらに関連する暗号文を受信するステップと、
前記階層をなすドメインオーソリティの少なくとも一部のドメインオーソリティによりユーザに発行された、前記階層中の位置を表す第１のコンポーネントと、前記ユーザにアサインされた一組の属性を表す第２のコンポーネントとを有するユーザ秘密鍵に基づいて前記暗号文を復号するステップであって、前記第１のコンポーネントは前記階層をなすドメインオーソリティの少なくとも一部に関連する公開鍵の一部に基づき、前記第２のコンポーネントは前記ユーザにアサインされた前記一組の属性を表す公開鍵情報を含む属性表現に基づくステップとを有し、
前記属性表現は前記階層をなすドメインオーソリティとは独立であり、
前記ユーザ秘密鍵に対応する前記一組の属性が前記暗号文のポリシーを満たすときにのみ、前記暗号文を復号するステップが可能になる、方法。
【請求項１３】
階層をなすドメインオーソリティと、ユーザにアサイン可能な複数の属性とを有する階層属性ベース暗号システムにおいて用いるメッセージを暗号化する方法であって、
前記階層をなすドメインオーソリティの少なくとも一部に関する公開鍵情報と、一組の属性を表す公開鍵情報を含む一または複数の属性表現とに基づいて、メッセージを暗号化して、前記属性に対するポリシーと、前記階層をなすドメインオーソリティの少なくとも一部とに関連する暗号文を取得するステップを有し、前記属性表現は前記階層をなすドメインオーソリティとは独立である方法。
【請求項１４】
コンピュータシステムに、請求項１１ないし１３いずれか一項に記載の方法を実行させる命令を含むコンピュータプログラム製品。
【国際調査報告】
2014531850.tif 000060
2014531850.tif 000061
2014531850.tif 000062
2014531850.tif 000063
2014531850.tif 000064