IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トラストニック リミテッドの特許一覧

<>
  • 特許-デバイス証明技術 図1
  • 特許-デバイス証明技術 図2
  • 特許-デバイス証明技術 図3
  • 特許-デバイス証明技術 図4
  • 特許-デバイス証明技術 図5
  • 特許-デバイス証明技術 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】デバイス証明技術
(51)【国際特許分類】
   G06F 21/44 20130101AFI20240813BHJP
   H04L 9/32 20060101ALI20240813BHJP
   G06F 21/64 20130101ALI20240813BHJP
【FI】
G06F21/44
H04L9/32 200A
G06F21/64
【請求項の数】 32
【外国語出願】
(21)【出願番号】P 2019194632
(22)【出願日】2019-10-25
(65)【公開番号】P2020071880
(43)【公開日】2020-05-07
【審査請求日】2022-10-12
(31)【優先権主張番号】1817901.0
(32)【優先日】2018-11-01
(33)【優先権主張国・地域又は機関】GB
【前置審査】
(73)【特許権者】
【識別番号】514098986
【氏名又は名称】トラストニック リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】リチャード ヘイトン
【審査官】平井 誠
(56)【参考文献】
【文献】特開2005-038411(JP,A)
【文献】米国特許出願公開第2018/0191688(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
H04L 9/00-40
(57)【特許請求の範囲】
【請求項1】
デバイスが前記デバイスに関するアサーションを証明できるようにする証明を提供する方法であって、
証明識別子と、前記証明識別子に対応する基本秘密コードを生成することと、
前記証明識別子及び検証秘密コードを、前記アサーションとともに記憶するための検証装置に提供し、前記検証秘密コードは、前記基本秘密コードに基づいていることと、
前記証明識別子及びデバイス秘密コードをデバイスに提供するためのアダプタ又は製造者に提供し、前記デバイス秘密コードは前記基本秘密コードに基づいていることと
を含み、
前記検証秘密コードは、第1の所定のハッシュ関数を使用して前記基本秘密コードをハッシュすることにより生成される、方法。
【請求項2】
前記証明識別子及び前記デバイス秘密コードが、前記製造者又はアダプタによって前記デバイスに提供される、請求項1に記載の方法。
【請求項3】
前記デバイス秘密コードは、前記基本秘密コードと同じである、請求項1又は2に記載の方法。
【請求項4】
前記基本秘密コードは、前記検証装置に提供されない、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記デバイス秘密コードは前記基本秘密コードと同じであり、前記デバイスへの前記証明識別子及び前記デバイス秘密コードの提供に応じて、前記デバイスは前記検証秘密コードを生成するための前記第1の所定のハッシュ関数を使用して前記デバイス秘密コードをハッシュする、請求項1に記載の方法。
【請求項6】
前記デバイスは、第2の所定のハッシュ関数を使用して、ローカルで利用可能な情報の1つ以上の項目と組み合わせて前記検証秘密コードを更にハッシュして、ハッシュ値を生成する、請求項5に記載の方法。
【請求項7】
前記第1の所定のハッシュ関数及び第2の所定のハッシュ関数は、同じ計算関数を使用するが、異なるデータ入力で動作する、請求項6に記載の方法。
【請求項8】
前記証明識別子及びデバイス秘密コードが前記デバイスに提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の前記1つ以上の項目はデバイス識別子を含み、
前記証明識別子及びデバイス秘密コードが前記デバイスに提供される前記初期証明識別子及び前記初期デバイス秘密コードでない場合、ローカルに記憶された情報の前記1つ以上の項目は以前のハッシュ値を含む、請求項6又は7に記載の方法。
【請求項9】
前記以前のハッシュ値は、最新の以前のハッシュ値である、請求項8に記載の方法。
【請求項10】
前記ハッシュ値の生成後、前記デバイスは前記ハッシュ値を記憶するが、前記デバイス秘密コード又は検証秘密コードは記憶しない、請求項8又は9に記載の方法。
【請求項11】
前記デバイスは、前記最新のハッシュ値のみを記憶する、請求項9に従属する請求項10に記載の方法。
【請求項12】
前記デバイスは、前記検証秘密コードを前記証明識別子と組み合わせて更にハッシュして、前記ハッシュ値を生成する、請求項6~11のいずれか一項に記載の方法。
【請求項13】
前記ハッシュ値の生成後、前記デバイスが前記証明識別子を記憶する、請求項12に記載の方法。
【請求項14】
前記ローカルで利用可能な情報の1つ以上の項目は、メタデータを更に含む、請求項6~13のいずれか一項に記載の方法。
【請求項15】
前記ハッシュ値の生成後、前記デバイスは前記メタデータを記憶する、請求項14に記載の方法。
【請求項16】
検証装置がデバイスに関するアサーションを証明する前記デバイスからの証明を検証する方法であって、
証明データベースから1つ以上のエントリを取得し、各エントリは証明識別子、検証秘密コード及びアサーションを含むことと、
前記デバイスから1つ以上の証明識別子及びハッシュ値を取得することと、
前記デバイスから取得した前記ハッシュ値を検証するために、前記証明データベースから取得した対応する検証秘密コードとともに、前記デバイスから取得した前記1つ以上の証明識別子に対して検証動作を実行することと、
前記検証動作の検証結果に応じて、前記デバイスから取得された1つ以上の証明識別子に関連付けられた前記1つ以上のアサーションが、前記デバイスに関して妥当か否かを判定することと
を含み、
前記検証秘密コードは、所定のハッシュ関数を使用して前記証明識別子に対応する基本秘密コードをハッシュすることにより生成される、方法。
【請求項17】
デバイス識別子が前記デバイスから更に取得され、前記検証動作が前記デバイス識別子に対して更に実行される、請求項16に記載の方法。
【請求項18】
前記デバイスからメタデータが更に取得され、前記メタデータに対して前記検証動作が更に実行される、請求項16又は17に記載の方法。
【請求項19】
前記検証動作は、前記デバイスから取得された証明識別子ごとに少なくとも1つのハッシュ関数を含み、各ハッシュ関数は、以前のハッシュ関数の結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも前記以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する、請求項16~18のいずれか一項に記載の方法。
【請求項20】
複数の証明識別子が前記デバイスから取得され、最新のハッシュ値に対応する1つのハッシュ値のみが前記デバイスから取得され、
前記デバイスから取得された前記複数の証明識別子に関連付けられた前記複数のアサーションのうちの全てが、前記検証動作による前記検証結果に応じて前記デバイスに関して妥当であるか、又は、前記デバイスから取得された前記複数の証明識別子に関連付けられた前記複数のアサーションのうちの、前記検証動作による前記検証結果に応じて前記デバイスに関して妥当であるアサーションはないか、が判定される、請求項16~19のいずれか一項に記載の方法。
【請求項21】
複数の証明識別子が前記デバイスから取得され、複数のハッシュ値が前記デバイスから取得され、前記検証動作は複数の検証動作を含み、それによって、前記デバイスから取得された前記複数の証明識別子に関連付けられた複数のアサーションのサブセットが、前記複数の検証動作の前記検証結果に応じて妥当であるか否かが判定される、請求項16~19のいずれか一項に記載の方法。
【請求項22】
前記検証装置は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを前記証明データベースから取得し、前記特定の証明識別子が前記デバイスから取得されると、それぞれの可能な検証秘密コードを使用して前記検証動作が試行される、請求項16~21のいずれか一項に記載の方法。
【請求項23】
デバイスが前記デバイスに関するアサーションを証明できるようにする情報を前記デバイスに記憶する方法であって、
前記デバイスで、基本秘密コード及び対応する証明識別子を受信することと、
前記デバイスで、第1の所定のハッシュ関数を使用して、前記基本秘密コードをハッシュし、検証秘密コードを生成することと、
前記デバイスで第2の所定のハッシュ関数を使用して、ローカルで利用可能な情報の1つ以上の項目と組み合わせて前記検証秘密コードをハッシュして、ハッシュ値を生成することと
を含み、
前記ハッシュ値の生成後、前記デバイスは前記ハッシュ値を記憶する、方法。
【請求項24】
請求項1~15のいずれか一項に記載の方法を実行するためにデバイスを制御するためのコンピュータプログラム。
【請求項25】
請求項16~22のいずれか一項に記載の方法を実行するために検証装置を制御するためのコンピュータプログラム。
【請求項26】
請求項23に記載の方法を実行するためにデバイスを制御するためのコンピュータプログラム。
【請求項27】
請求項24に記載のコンピュータプログラムを記憶する記憶媒体。
【請求項28】
請求項25に記載のコンピュータプログラムを記憶する記憶媒体。
【請求項29】
請求項26に記載のコンピュータプログラムを記憶する記憶媒体。
【請求項30】
データ処理を実行するための処理回路と、
請求項1~15のいずれか一項に記載の方法を実行するために前記処理回路を制御するためのコンピュータプログラムを記憶するデータストレージと
を含む装置。
【請求項31】
データ処理を実行するための処理回路と、
請求項16~22のいずれか一項に記載の方法を実行するために前記処理回路を制御するためのコンピュータプログラムを記憶するデータストレージと
を含む装置。
【請求項32】
データ処理を実行するための処理回路と、
請求項23に記載の方法を実行するために前記処理回路を制御するためのコンピュータプログラムを記憶するデータストレージと
を含む装置。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、電子デバイスの分野に関する。より具体的には、本技術は、デバイスに関するアサーションをデバイスが証明できるようにするための証明を提供することに関する。
【背景技術】
【0002】
モバイルバンキング、ヘルスケアサービスへのアクセス又は雇用の詳細の取り扱いなど、潜在的に機密性の高い情報の取り扱いを伴う可能性のあるサービスへのアクセスに電子デバイスが使用されることが増えている。また、モノのインターネット(IoT)の発展に伴い、温度データ又は例えばユーザが存在するか否かを示す近接情報などのセンサ情報を提供する可能性のある電子デバイスによって提供される情報に基づいて、暖房、空調、又は街路照明などのシステムが制御されることが一般的になりつつある。これらのシナリオでは、サービスプロバイダは、電子デバイスとの対話が安全であることを信頼するために、電子デバイスが特定の要件を満たしていることを検証できることが重要である。サービスプロバイダは、電子デバイスの製造に使用される製造プロセス中、又はそのライフサイクル中のデバイスのその後の適応中に特定のイベントが発生したことを確信する必要がある場合がある。例えば、このようなイベントは、デバイス製造者によって構成要素に埋め込まれているシステムオンチップ、特定の品質保証ステップを通過するデバイス、又は、デバイスに提供されているいくつかの特定のソフトウェアを含み得る。
【0003】
外部エンティティがそのようなイベントが発生したことを検証できるようにする詳細な証明情報をデバイスに記憶する暗号技術が提供され得る。ただし、このような技術では通常、デバイス自体に大量の情報を記憶する必要がある。センサ、アクチュエータ、又はIoT内の他のデバイスなどの非常に小さなコンピューティングデバイスでは、メモリ記憶容量、処理能力及び通信帯域幅が非常に制限される可能性があるため、このようなアプローチは実行できない。更に、そのような情報をデバイスに記憶すると、情報が抽出されて別のデバイスに複製され、偽装デバイスがイベントの証明を受けたと誤って証明できる「偽装」デバイスを作成できる可能性がある。
【0004】
本開示の少なくとも特定の実施形態は、上述のこれらの問題のうちの1つ以上に対処する。
【発明の概要】
【0005】
特定の態様及び実施形態は、添付の特許請求の範囲に記載されている。
【0006】
一観点から見ると、デバイスがデバイスに関するアサーションを証明できるようにする証明を提供する方法を提供でき、証明識別子と、証明識別子に対応する基本秘密コードを生成することと、証明識別子及び検証秘密コードを、アサーションとともに記憶するための検証装置に提供し、検証秘密コードは、基本秘密コードに基づいていることと、証明識別子及びデバイス秘密コードをデバイスに提供するためのアダプタ又は製造者に提供し、デバイス秘密コードは基本秘密コードに基づいていることと、を含む。
【0007】
異なるエンティティに異なる秘密コードを提供すると、あるエンティティから秘密コードが抽出され、別のエンティティの偽装バージョンを作成するために使用されるリスクが軽減される。例えば、検証装置から検証秘密コードを抽出しても、どのデバイス秘密コードが製造者又はアダプタに提供されたのかを判定できず、したがって検証装置からのデータ盗難の影響が軽減される。更に、このアプローチでは、アサーション自体をデバイスから離れた場所に記憶できるため、デバイスの記憶領域を節約できる。いくつかの例では、証明識別子は証明生成器を使用して生成される。証明生成器は、検証装置とは物理的に別個のデバイスであってもよく、又は証明生成器及び検証装置の両方が同じ物理デバイスに配置されていてもよい。いくつかの例では、証明生成器はデバイス秘密コード及び/又は検証秘密コードを生成する。
【0008】
いくつかの例では、証明識別子及びデバイス秘密コードは、製造者又はアダプタによってデバイスに提供される。それにより、デバイス秘密コードは、製造者又はアダプタの制御下でデバイスに配布される。したがって、この配布は、証明識別子及び基本秘密コードを生成する検証装置又はデバイス(例えば、証明生成器)の直接の関与、あるいは証明識別子及び基本秘密コードを生成する検証装置又はデバイス(例えば、証明生成器)への配布に関する情報の提供なしに行うことができる。
【0009】
いくつかの例では、デバイス秘密コードは基本秘密コードと同じである。これにより、デバイス秘密コードを生成するための追加処理の必要性を回避できる。
【0010】
いくつかの例では、基本秘密コードは検証装置に提供されない。これにより、検証装置は基本秘密コードにアクセスできないため、検証装置からの情報の盗難により悪意のあるエンティティがデバイス秘密コード(基本秘密コードに基づく)を生成できなくなり、したがって、この情報を使用して偽装デバイスを作成することはできない。
【0011】
いくつかの例では、検証秘密コードは、第1の所定のハッシュ関数を使用して基本秘密コードをハッシュすることにより生成される。そのため、一方向関数(ハッシュ関数など)を使用して検証秘密コードを生成することにより、一般にハッシュ関数を逆にして検証秘密コードから基本秘密コードを生成することはできない。いくつかの例では、検証秘密コードのこの生成は、検証秘密コードを検証装置に提供する前に、証明生成器によって実行される。他の例では、基本秘密コードが証明生成器に提供され、証明生成器は検証秘密コード自体を生成する。
【0012】
いくつかの例では、デバイス秘密コードは基本秘密コードと同じであり、デバイスへの証明識別子及びデバイス秘密コードの提供に応じて、デバイスは検証秘密コードを生成するための第1の所定のハッシュ関数を使用してデバイス秘密コードをハッシュする。これにより、デバイスで一方向関数(ハッシュ関数など)を使用して派生秘密コード(検証秘密コード)を生成することにより、基本秘密/デバイス秘密コードをデバイスに記憶する必要がなくなり、したがって、デバイスからの情報の盗難により、悪意のある者が基本秘密/デバイス秘密コードを第2のデバイスに提供して、偽装デバイスを作成することはできない。
【0013】
いくつかの例では、デバイスは、第2の所定のハッシュ関数を使用して、ローカルで利用可能な情報の1つ以上の項目と組み合わせて検証秘密コードを更にハッシュして、ハッシュ値を生成する。それにより、デバイスは、ローカルで利用可能な情報を使用してのみ生成できる、更なる派生秘密コード(ハッシュ値)を生成する。したがってこれは、ハッシュ値は、デバイスのローカルで利用可能な情報にアクセスできるデバイスによってのみ生成され、ハッシュ値を生成できるデバイスを制限することを意味する。検証の目的で(検証装置などで)、検証エンティティは、検証時にローカルで利用可能な情報にアクセスできることだけが必要である。つまり、この時点まで、デバイスはローカルで利用可能な情報をプライベートに保つことができる。更に、デバイスが検証秘密コードを記憶する必要がないため、デバイスからの情報の盗難により、デバイスに関する証明の検証が許可されないことを意味する。
【0014】
いくつかの例では、第1の所定のハッシュ関数及び第2の所定のハッシュ関数は同じ計算関数を使用するが、異なるデータ入力で動作する。それにより、単一の計算ハッシュ関数のみをデバイスに記憶する必要があり、したがってスペースを節約し、一般に、ハッシュ関数のパフォーマンスの更なるハードウェア/ソフトウェア最適化を可能にする。
【0015】
いくつかの例では、証明識別子及びデバイス秘密コードがデバイスに提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の1つ以上の項目はデバイス識別子を含み、証明識別子及びデバイス秘密コードがデバイスに提供される初期証明識別子及び初期デバイス秘密コードでない場合、ローカルに記憶された情報の1つ以上の項目は以前のハッシュ値を含む。
【0016】
それにより、初期証明識別子/デバイス秘密コードに対する第2の所定のハッシュ関数の使用は、デバイスの識別子を使用することによりデバイス自体に結び付けられたハッシュ値を生成する。更に、初期証明識別子/デバイス秘密コードの後の証明識別子/デバイス秘密コード上で第2の所定のハッシュ関数を使用する場合、以前のハッシュ値を使用することによって、生成された更なるハッシュ値は以前のハッシュ値(単数又は複数)に部分的に基づく。
【0017】
それにより、更なるハッシュ値は、直接的又は間接的に入力された全ての以前のハッシュ値の「ダイジェスト」として機能する(つまり、第2の所定のハッシュ関数が複数の以前の証明識別子及びデバイス秘密コードに対応する以前のハッシュ値のチェーンに繰り返し適用された)。そのため、「ダイジェスト」は、全ての中間ハッシュ値をデバイスに記憶する必要なしに、ダイジェストを作った全ての証明識別子/デバイス秘密コードに対応する証明の検証に使用できる。
【0018】
いくつかの例では、以前のハッシュ値は最新の以前のハッシュ値である。それにより、第2の所定のハッシュ関数は以前の全てのハッシュ値に繰り返し適用されるため、デバイスによって受信された全ての証明識別子/デバイス秘密コードに対応する証明の検証に最終ハッシュ値を使用できる。
【0019】
いくつかの例では、ハッシュ値の生成後、デバイスはハッシュ値を記憶するが、デバイス秘密コード又は検証秘密コードは記憶しない。これにより、悪意のある者がデバイスに記憶された情報にアクセスした場合でも、盗まれた情報により、悪意のある者が偽装デバイスを作成したり、デバイスに関する証明を検証したりすることはできない。
【0020】
いくつかの例では、デバイスは最新のハッシュ値のみを記憶する。最新のハッシュ値は以前の全てのハッシュ値の「ダイジェスト」として機能できるため、最新のハッシュ値を記憶すると、以前のハッシュ値自体を記憶することによってデバイス上の記憶装置を消費する必要なく、以前のハッシュ値のそれぞれに対応する証明を検証するのに十分である。
【0021】
いくつかの例では、デバイスは検証秘密コードを証明識別子と組み合わせて更にハッシュし、ハッシュ値を生成する。それにより、ハッシュへの入力としてより多くの要素を含めることにより、ハッシュを逆にすることをより難しくすることによりセキュリティが強化される。
【0022】
いくつかの例では、ハッシュ値の生成後、デバイスは証明識別子を記憶する。これにより、ハッシュ値がどの証明(単数又は複数)に対応するかを識別し、特定の例では証明を検証するために必要である、情報をデバイス自体が直接提供できる。
【0023】
いくつかの例では、ローカルで利用可能な情報の1つ以上の項目は、メタデータを更に含む。これにより、より多くの要素をハッシュへの入力として含めることでセキュリティを強化し、ハッシュを逆にするのを更に難しくすることができる。更に、メタデータは、ハッシュ値が生成された時に、特定の情報(例えば、デバイスの内部ステータス、情報ペイロード、外部ソースからデバイスが受信した情報)がデバイスで利用できたことを確立できる。いくつかの例では、メタデータは、デバイスに存在するコードの一部又は全てと、デバイスに記憶されている1つ以上の公開キーとを含んでもよい。追加又は代替として、メタデータは、デバイスソフトウェアの状態(例えば、ソフトウェア名、バージョン、ソフトウェアに署名するために使用されるハッシュ/公開キー)、ハッシュ値が生成された時刻/日付、関与する人/マシン動作(単数又は複数)あるいは動作が行われた地理的位置に関する情報を含んでもよい。
【0024】
いくつかの例では、ハッシュ値の生成後、デバイスはメタデータを記憶する。これにより、特定の例では、証明(単数又は複数)を検証するために必要なメタデータを、デバイス自体が直接提供できる。
【0025】
一観点から見ると、検証装置がデバイスに関するアサーションを証明するデバイスからの証明を検証する方法を提供することができ、証明データベースから1つ以上のエントリを取得し、各エントリは証明識別子、検証秘密コード及びアサーションを含むことと、デバイスから1つ以上の証明識別子及びハッシュ値を取得することと、デバイスから取得したハッシュ値を検証するために、証明データベースから取得した対応する検証秘密コードとともに、デバイスから取得した1つ以上の証明識別子に対して検証動作を実行することと、検証動作の検証結果に応じて、デバイスから取得された1つ以上の証明識別子に関連付けられた1つ以上のアサーションが、デバイスに関して妥当か否かを判定することとを含む。言い換えれば、いくつかの例では、デバイスは1つ以上の証明識別子及びハッシュ値を検証装置に単純に提供するが、別個の証明データベースから取得されるアサーション自体(つまり、証明の実際の意味論上の意味)は提供しない。また、特定の例では、アサーションを追加又は代替としてデバイス自体に記憶できることも明確に企図されている。
【0026】
証明識別子を証明データベース及びデバイスの両方から取得することにより、デバイスからのハッシュ値を検証秘密コード及び証明デバイスから受信した証明と照合することができ、検証装置は、検証秘密コード又はアサーションをデバイス自体に記憶する必要なしに、デバイスに関して様々な証明が正しいか否か検証できるため、スペースを節約できる。これは更に、どちらのエンティティも、単独又は組み合わせで偽装デバイスの作成を可能にする情報を記憶しないため、デバイス又は証明データベースのいずれからの情報の盗難のリスクも低減する。更に、証明を検証するには、デバイスと証明データベースの両方から情報を取得する必要がある。いくつかの例では、証明データベースは検証装置と同じ物理デバイス上に配置される及び/又は検証装置の一部である。他の例では、証明データベースは検証装置とは別個の物理デバイスに配置される。
【0027】
いくつかの例では、デバイス識別子はデバイスから更に取得され、検証動作がデバイス識別子に対して更に実行される。これにより、特定のデバイス識別子に関してアサーションが特に妥当であると判定でき、一般に、少なくとも製造者/アダプタは、デバイス識別子がどの物理デバイスに属しているかを認識している。
【0028】
いくつかの例では、デバイスからメタデータが更に取得され、メタデータに対して検証動作が更に実行される。それにより、検証プロセスの一部として、検証装置は、ハッシュ値が生成された時点でメタデータが既知であったことを証明できる。追加又は代替として、デバイスからの証明を検証する試みが行われた時点でメタデータが既知であったことを証明するために、デバイスからメタデータを取得することができる。
【0029】
いくつかの例では、検証動作は、デバイスから取得された証明識別子ごとに少なくとも1つのハッシュ関数を含み、各ハッシュ関数は、以前のハッシュ関数の結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する。それにより、以前のハッシュ関数(単数又は複数)の結果(単数又は複数)を取得することにより、ハッシュ関数が互いに計算に依存する結果として、特定のシーケンスで複数の証明が生成されたことを検証できる。
【0030】
いくつかの例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する1つのハッシュ値のみがデバイスから取得され、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの全てが、検証動作による検証結果に応じてデバイスに関して妥当であるか、又は、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの、検証動作による検証結果に応じてデバイスに関して妥当であるアサーションはないか、が判定される。これにより、デバイスから単一のハッシュ値を受信するだけで複数のアサーションを検証できるため、通信帯域幅を節約し、デバイスが単一の最新のハッシュ値より多くを記憶する必要性を減らす。
【0031】
いくつかの例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得され、検証動作は複数の検証動作を含み、それによって、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのサブセットが、複数の検証動作の検証結果に応じて妥当であるか否かが判定される。したがって、複数のハッシュ値を受信することにより、検証装置はアサーションのサブセットを個別に検証できるため、ネガティブ検証の場合、アサーション(単数又は複数)のどの特定のサブセットが偽であるかを少なくとも部分的に識別することができる。したがって、例えば、(例えば、特に対話するデバイス又はエンティティへの)偽のアサーションのソースを絞り込むことができる場合がある。例えば、いくつかの例では、2、3、又は4つの証明識別子ごとにハッシュ値を取得してもよい。
【0032】
いくつかの例では、検証装置は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを証明データベースから取得し、特定の証明識別子がデバイスから取得されると、それぞれの可能な検証秘密コードを使用して検証動作が試行される。それにより、非固有の証明識別子の使用を徹底して、証明を妥当な時間で検証できるようにしながら、短い証明識別子を使用することができる(従って、デバイスの記憶スペースを節約できる)。例えば、各証明識別子に対して3つの検証秘密コード及び3つのアサーションがある場合、最悪の場合検証動作を3回試行して、あるとすればどのアサーションが妥当であるかを判定する必要がある。ただし、テストされた最初のアサーションが妥当であることが示されている場合、いくつかの例では、検証動作は2番目と3番目のアサーションをチェックしない。
【0033】
一観点から見ると、デバイスがデバイスに関するアサーションを証明できるようにする情報をデバイスに記憶する方法を提供することができ、デバイスで、基本秘密コード及び対応する証明識別子を受信することと、デバイスで、第1の所定のハッシュ関数を使用して、基本秘密コードをハッシュし、検証秘密コードを生成することと、デバイスで第2の所定のハッシュ関数を使用して、第2の所定のハッシュ関数を使用してローカルで利用可能な情報の1つ以上の項目と組み合わせて検証秘密コードをハッシュして、ハッシュ値を生成することとを含み、ハッシュ値の生成後、デバイスはハッシュ値を記憶する。
【0034】
デバイスで2つのハッシュを実行して記憶されているハッシュ値を生成することにより、デバイスは基本秘密コード又は検証秘密コードのいずれも記憶する必要がない。これにより、デバイスはスペースを節約できるが、ハッシュ値がデバイスから盗まれた場合(例えば、ハッシュ値のみがデバイスに記憶されているため)、偽装デバイスを作成できないため、複製にも耐性がある。デバイスによって実行される2つのハッシュ動作は一方向の動作であるため、一般に基本秘密コードはハッシュ値から再作成できないため、偽装は作成できず、したがって、基本秘密コードは偽装を作成する第2のデバイスに提供できない。
【0035】
一観点から見ると、デバイスを制御して上記の方法のいずれかを実行するためのコンピュータプログラムが提供され得る。いくつかの例では、コンピュータプログラムは記憶媒体に記憶される。
【0036】
一観点から見ると、装置を提供することができ、データ処理を実行するための処理回路と、上記の方法のいずれかを実行するために処理回路を制御するためのコンピュータプログラムを記憶するデータストレージとを含む。
【0037】
他の態様も、本開示を検討すると、特に図面の簡単な説明、発明を実施するための形態及び特許請求の範囲を検討すると明らかになるであろう。
【0038】
本開示の例は、添付の図面を参照して、例としてのみ説明される。
【図面の簡単な説明】
【0039】
図1】開示の例を実装するためのシステム例を概略的に示す。
図2】デバイスに関するアサーションをデバイスが証明できるようにするための証明を提供する方法を概略的に示す。
図3】検証装置が、デバイスに関するアサーションを検証するデバイスからの証明を検証するための方法を概略的に示す。
図4】証明データベースの情報コンテンツの例を概略的に示す。
図5】デバイスが、情報をデバイスに記憶し、デバイスに関するアサーションをデバイスが証明できるようにする方法を概略的に示す。
図6】電子デバイスの例を概略的に示す。
【発明を実施するための形態】
【0040】
本開示は様々な修正及び代替形態の影響を受けやすいが、特定の例示的なアプローチが図面に例として示されており、本明細書で詳細に説明される。ただし、添付の図面及び詳細な説明は、開示を開示された特定の形態に限定するものではなく、開示は、特許請求された発明の精神及び範囲に含まれる全ての修正、均等物、及び代替物を網羅するものであることを理解されたい。
【0041】
本開示の上述の例の特徴は、任意の適切な組み合わせで便利にかつ交換可能に使用できることが認識されるであろう。
【0042】
図1は、本開示の例を実施するためのシステム100の概略図を示している。このシステムは、証明生成器110、製造者/アダプタ120、デバイス130、検証装置140及び証明データベース150を含む。これらの各要素は、図6及びその対応する以下の説明に示す電子デバイスを使用して実装できる。
【0043】
図1には、様々な要素間の複数のリンケージの例も示されている。これらのリンケージは、要素間の通信チャネルを表す。これらの通信チャネルは、有線の電気接続(イーサネット(登録商標)など)を使用して、有線の光学接続(光ファイバケーブルなど)、無線接続(Wi-Fi(登録商標)、Bluetooth(登録商標)、ZigBee(登録商標)など)を使用して、又は要素がデータを通信できるようにする他の適切な技術を使用して実装してもよい。
【0044】
複数の主要なリンケージが示されているが、特定の例では他のリンケージもまた存在してもよい。例えば、製造者/アダプタ120は、証明データベース150への直接リンクを有してもよく、又は証明生成器110はデバイス130に直接連結されてもよい。また、特定の例では、示されている全てのリンケージが存在するわけではないことも理解されよう。例えば、デバイス130と検証装置140との間のリンケージは存在しなくてもよく、代わりにデバイス130は、製造者/アダプタ120及び証明生成器110を介して検証装置140と通信してもよい。
【0045】
また、特定の例では、全てのリンケージが永続的であるとは限らず、代わりに一時的又は周期的であることも理解される。例えば、製造者/アダプタ120は、製造中又は適応中にのみデバイス130に接続されてもよく、別の例として、デバイス130と検証装置140との間の接続は、デバイスの検証中にのみ利用可能であってもよい。
【0046】
証明生成器110は、証明識別子及び対応する基本秘密コードの生成を担当する。特定の例では、証明生成器は、証明プロセスを全体的に制御している第一者によって制御される中央サーバである。
【0047】
製造者/アダプタ120は、証明識別子(単数又は複数)及び対応する基本秘密コード(単数又は複数)のデバイス130への提供を担当するエンティティである。特定の例では、製造者/アダプタ120は、少なくとも部分的に完成デバイス130の作製を担当する第2者によって制御される製造、組立、又は適応機器に対応する。
【0048】
デバイス130は、デバイスに関するアサーションの証明が行われているエンティティである。特定の例では、デバイスはモノのインターネット(IoT)デバイスに対応する。このようなIoTデバイスは通常、センサ、アクチュエータ、又はIoT内の他のデバイスなどの非常に小さいコンピューティングデバイスであり、メモリ記憶容量、処理能力及び通信帯域幅が非常に制限される可能性がある。
【0049】
検証装置140は、デバイスに関するアサーションが妥当であるか否かを検証する役割を果たすエンティティである。特定の例では、検証装置は、第一者(すなわち、証明生成器と同じ当事者)によって制御されるサーバである。特定の例では、検証装置はクラウドホスト型Webサービスである。
【0050】
証明データベース150は、証明識別子をアサーション、並びにデバイスに関するアサーションの検証に使用される秘密コードと連結する情報を記憶するエンティティである。特定の例では、証明データベースは検証装置と同じ物理デバイス上に配置される及び/又は検証装置の一部である。他の例では、証明データベースは検証装置とは別個の物理デバイスに配置され、通信チャネル(リンケージ)で接続される。
【0051】
証明データベースの場所の選択に加えて、他の要素を組み合わせることができる。特定の例では、要素はより大きなエンティティのソフトウェア又はハードウェアモジュールとして実装できる。例えば、証明生成器110及び検証装置140は、同じ物理的/論理的デバイス上に配置されてもよい。別の例として、製造者/アダプタ120及び検証装置140は、同じ物理的/論理的デバイス上に配置されてもよい。
【0052】
システム100は、複数の様々な要素を含むことができることも理解されよう。例えば、システム100は、複数のデバイス130に作用して、それぞれが検証された自身に関するアサーションを有することができるようにすることができる。別の例として、システム100は、全て単一のデバイス130に作用するか、又はそれぞれ異なるデバイス130に作用してもよい複数の製造者/アダプタ120を含むことができる。
【0053】
図2は、デバイス130が以下のステップを含むデバイス130に関するアサーションを証明できるようにするための証明を提供する方法200の概略図を示す。
【0054】
ステップS210で、証明識別子と、証明識別子に対応する基本秘密コードとが生成される。特定の例では、生成は証明生成器110によって実行される。
【0055】
ステップS220で、証明識別子及び検証秘密コードが検証装置140に提供され、検証秘密コードは基本秘密コードに基づいている。特定の例では、証明識別子及び検証秘密コードは、証明生成器110によって提供される。特定の例では、基本秘密コードは検証装置140に提供されない。
【0056】
特定の例では、検証秘密コードは、第1の所定のハッシュ関数を使用して基本秘密コードをハッシュすることにより生成される。第1の所定のハッシュ関数は、「一方向」関数のセキュリティを更に強化するための暗号化ハッシュ関数であってもよい。適切なハッシングアルゴリズムの例には、MD5、SHAファミリー(SHA-256など)又はその他の適切なハッシングアルゴリズムが含まれる。また、いくつかの例では、第1の所定のハッシュ関数は、巡回冗長検査などの非暗号化ハッシュ関数であってもよいことも明確に企図されている。特定の例では、検証秘密コードは、証明生成器110で生成され、検証装置140が基本秘密コードに決してアクセスできないように検証装置140に送信される。他の例では、基本秘密コードは、検証装置140に送信され、検証装置140は、第1のハッシングアルゴリズムを使用してハッシュを実行し、検証秘密コードに到達する。
【0057】
ステップS230で、証明識別子及びデバイス秘密コードが、デバイス130への提供のために製造者又はアダプタ120に提供される。特定の例では、証明識別子及びデバイス秘密コードは、証明生成器110によって提供される。特定の例では、デバイスの秘密コードは基本秘密コードと同じである。
【0058】
ステップS240で、証明識別子及びデバイス秘密コードは、製造者又はアダプタ120によってデバイス130に提供される。特定の例では、デバイス秘密コードは基本秘密コードと同じであり、デバイス130への証明識別子及びデバイス秘密コードの提供に応じて、デバイス130は検証秘密コードを生成するための第1の所定のハッシュ関数を使用してデバイス秘密コードをハッシュする。この第1の所定のハッシュ関数は、検証装置140に検証秘密コードを提供するために使用されるものと同じであり、したがって、検証装置140及びデバイス130の両方は、このコードを両方のデバイスに配布することなく同じ検証秘密コードのコピーで終わる。
【0059】
特定の例では、デバイスは次に、第2の所定のハッシュ関数を使用して、ローカルで利用可能な情報の1つ以上の項目と組み合わせて検証秘密コードを更にハッシュして、ハッシュ値を生成する。第2の所定のハッシュ関数は、第1の所定のハッシュ関数に使用されるものと同じ計算関数(例えば、SHA-256)であってもよいが、異なる入力に対して単に動作するだけでもよい。
【0060】
特定の例では、デバイス130は、証明識別子及びそれが受け取るデバイス秘密コードが、受信した初期(つまり最初に)のそのような証明識別子及びデバイス秘密コードであるか、又はその後受信した証明識別子及びデバイス秘密コードであるかに応じて、異なるローカルで利用可能な情報を使用してもよい。特定の例では、証明識別子及びデバイス秘密コードがデバイス130に提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の1つ以上の項目はデバイス識別子を含み、証明識別子及びデバイス秘密コードがデバイス130に提供される初期証明識別子及び初期デバイス秘密コードでない場合、ローカルに記憶された情報の1つ以上の項目は以前のハッシュ値を含む。言い換えれば、第2の所定のハッシュ関数は、第2の所定のハッシュ関数の以前の繰り返しの以前のハッシュ値を取得して、新しい証明識別子及びデバイス秘密コードが受信されるたびに繰り返し適用される。これは、最終的なハッシュ値を、少なくともいくつかの以前のハッシュ値、したがってこれらの以前のハッシュ値を生成した対応する証明識別子及びデバイス秘密コード、の「ダイジェスト」にすることと考えることができる。いくつかの例では、以前のハッシュ値は以前のハッシュ値であり、この反復動作を通じて最終ハッシュ値はデバイス130で生成された全てのハッシュ値のダイジェストとして機能する。いくつかの例では、所定のハッシュ値の生成後、ハッシュ値はデバイス130によって記憶されるが、対応するデバイス秘密コード及び検証秘密コードは破棄され、デバイス130に記憶されない。更に、いくつかの例では、最新のハッシュ値のみが記憶され、最新のハッシュ値が生成された後に以前の全てのハッシュ値が破棄される。前述のように、最新のハッシュ値は以前の全てのハッシュ値のダイジェストとして機能するため、ハッシュ値自体が破棄された場合でも、以前の全てのハッシュ値の妥当性を依然として確認することができる。
【0061】
特定の例では、データの他の項目をハッシュ関数への入力として含めて、セキュリティを更に強化できる。例えば、特定の例では、第2の所定のハッシュ関数は、証明識別子及び/又はメタデータ(例えば、デバイスの内部ステータスに関する情報、情報ペイロード、外部ソースからデバイスが受信した情報)を入力として更に取得することができる。いくつかの例では、メタデータは、デバイスに存在するコードの一部又は全てと、デバイスに記憶されている1つ以上の公開キーとを含んでもよい。追加又は代替として、メタデータは、デバイスソフトウェアの状態(例えば、ソフトウェア名、バージョン、ソフトウェアに署名するために使用されるハッシュ/公開キー)、ハッシュ値が生成された時刻/日付、関与する人/マシン動作(単数又は複数)あるいは動作が行われた地理的位置に関する情報を含んでもよい。これらの追加の入力が使用される場合、ハッシュ値が生成された後、デバイス130に記憶することもできる。
【0062】
方法のステップは特定の順序で描かれているが、任意の適切な順序でステップを実行できることが明確に企図されていることが認識されよう。例えば、ステップS230は、ステップS220の前に実行することができ、ステップS240は、ステップS230が実行された後の任意の時点で実行することができる。
【0063】
図3は、検証装置140が、以下のステップを含むデバイス130に関するアサーションを証明するデバイス130からの証明を検証する方法300の概略図を示す。
【0064】
ステップS310で、検証装置140は、証明データベース150から1つ以上のエントリを取得し、各エントリは、証明識別子、検証秘密コード及びアサーションを含む。特定の例において、特定の証明識別子に関連する複数の検証秘密コード及びアサーションは、証明データベース150から検証装置140によって取得される。言い換えれば、証明識別子は特定の検証秘密コード及びアサーションを一意に識別しない場合がある。
【0065】
ステップS320では、検証装置140は、デバイス130から1つ以上の証明識別子及びハッシュ値を取得する。特定の例では、デバイス識別子及び/又はメタデータもまたデバイスから取得される。追加又は代替として、いくつかの例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する1つのハッシュ値のみがデバイス130から取得される。他の例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得される。
【0066】
ステップ330で、検証装置140は、証明データベース150から取得した対応する検証秘密コードとともに、デバイス130から取得した1つ以上の証明識別子に対して検証動作を実行して、デバイス130から取得したハッシュ値を検証する。特定の例では、デバイス識別子及び/又はメタデータもまた、デバイスから取得されると、検証動作がデバイス識別子及び/又はメタデータに対して更に実行される。
【0067】
特定の例では、検証動作は、デバイス130から取得された証明識別子ごとに少なくとも1つのハッシュ関数を含む。各ハッシュ関数は、以前のハッシュ関数の結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する。言い換えれば、例えば、検証装置140により受信されたハッシュ値がデバイス130上で実行された反復動作により生成された場合(すなわち、送信されたハッシュ値が1つ以上の以前のハッシュ値に部分的に基づいてデバイス130で生成された場合)、検証動作は、この「ダイジェスト」ハッシュ値に繰り返し作用して、受信したハッシュ値の各「レイヤ」を連続的に検証し、最終的にハッシュ値のチェーン全体を検証できる。
【0068】
特定の例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する1つのハッシュ値のみがデバイスから取得され、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの全てが、検証動作による検証結果に応じてデバイスに関して妥当であるか、又は、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの、検証動作による検証結果に応じてデバイスに関して妥当であるアサーションはないか、を検証動作は判定する。
【0069】
他の例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得され、検証動作は複数の個々の検証動作を含み、それによって、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのサブセットが、複数の検証動作の検証結果に応じて妥当であるか否かが判定される。
【0070】
更なる例では、検証装置140は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを証明データベース150から取得し、検証動作は、それぞれの可能な検証秘密コードを使用して、デバイスから取得した証明識別子に関連して試行される。言い換えると、検証動作は、一意ではない証明識別子に関連付けられた全ての可能な検証秘密コードに対して試行される。
【0071】
ステップ340で、検証装置140は、デバイス130から取得された1つ以上の証明識別子に関連付けられた1つ以上のアサーションが検証動作の検証結果に応じて、デバイス130に関して妥当か否かを判定する。
【0072】
方法のステップは特定の順序で描かれているが、任意の適切な順序でステップを実行できることが明確に企図されていることが認識されよう。例えば、ステップS320は、ステップS310の前に実行することができる。
【0073】
図4は、証明データベース150の例示的な情報コンテンツ400を概略的に示す。示されている特定の例では、証明識別子、検証秘密コード、アサーション、追加フィールド1及び追加フィールド2の5つのフィールドが示されている。3つのサンプルエントリが示される。最初の行には、1001の証明識別子、AB47EF89の検証秘密コード及びデバイスプロパティ1のアサーションがある(例えば、データストレージ620のセキュリティ領域630がある)。2番目の行には、1002の証明識別子、749DABE6の検証秘密コード及びイベント1のアサーションがある(例えば、特定の製造者/アダプタ120によってインストールされた通信I/F 640がある)。3番目の行には、1003の証明識別子、BF56DEF0の検証秘密コード及び品質保証1のアサーションがある(例えば、データストレージ620に記憶されているOSの整合性が検証されている)。
【0074】
更に、各行には2つの追加フィールド、1及び2がある。これらには、例えば、特定の証明識別子が割り当てられた特定の製造者/アダプタ、2回又は特定のアサーションを検証する要求が行われた回数など、必要な追加情報を含めることができる。実質的に任意の所望の情報をこれらのフィールドに記憶できると考えられる。いくつかの例では、フィールド(単数又は複数)は、証明が以前に見られたデバイス(単数又は複数)の識別子(例えば、デバイス識別子)を含むことができ、フィールド(単数又は複数)は証明の検証中に更新される。
【0075】
上述したように、証明データベース150のこの例示的な情報コンテンツ400は、1つの可能なフォーマットにすぎない。例えば、情報コンテンツの行と列の数は少なくても多くてもよい。例えば、情報コンテンツには、0、1、3、4、又は5つの追加フィールドがあってもよい。情報コンテンツには、実質的に必要な任意の数の行を含めることができる。証明識別子、検証秘密コード及びアサーションのエントリに表示される特定の形式は、単なる一例の形式であることが更に明確に認識される。例えば、証明識別子及び検証秘密コードは、より多く又はより少ない数の記号で構成でき、これらの記号は、例えば、10進数、16進数、又はASCII文字セットで構成できる。
【0076】
図5は、デバイス130が情報をデバイス130に記憶し、デバイス130が以下のステップを含むデバイス130に関するアサーションを証明できるようにするための方法500の概略図を示す。
【0077】
ステップS510で、基本秘密コード及び対応する証明識別子がデバイス130で受信される。
【0078】
ステップS520で、基本秘密コードは、第1の所定のハッシュ関数を使用してデバイス130でハッシュされ、検証秘密コードを生成する。
【0079】
ステップS530で、検証秘密コードは、第2の所定のハッシュ関数を使用して、ローカルで利用可能な情報の1つ以上の項目と組み合わせてデバイスでハッシュされて、ハッシュ値を生成する。
【0080】
ステップS540では、ハッシュ値がデバイス130に記憶される。
【0081】
図6は、電子デバイス600の一例を概略的に示す。デバイスは、プログラム命令に応じてデータ処理を実行するための処理回路610、処理回路610によって処理されるデータ及び命令を記憶するためのデータストレージ620を有する。データストレージ620は、ハードウェアメカニズム(例えば、信頼できる実行環境を提供するメモリ保護ユニット又はセキュリティメカニズムを使用)又はソフトウェアメカニズム(例えば、暗号化)により保護されるセキュア領域630を有することができ、その結果、セキュア領域630に記憶されたデータには、信頼できる環境内で実行されていないソフトウェアはアクセスできない。デバイス600は、外部デバイスと通信するための通信インタフェース640を有する。例えば、通信インタフェース640は、イーサネット(登録商標)、WiFi(登録商標)、ブルートゥース(登録商標)、ZigBee(登録商標)などのような他の範囲の異なる通信プロトコルを使用することができる。デバイスは、温度、圧力、近くのユーザの近接などの特定の外部条件を感知するための1つ以上のセンサ650を有してもよい。提供される特定のセンサ650は、デバイスの目的に依存し得る。図6は、デバイスに提供され得る可能なハードウェアの単なる例であり、他の構成要素も提供され得ることが理解されるであろう。例えば、情報をユーザに表示し、ユーザからの入力を受信するために、ユーザとの対話が予想されるいくつかのデバイスに、ディスプレイ及び/又はユーザインタフェースモジュールを提供することができる。他の種類のデバイスは、単にデータをキャプチャして外部デバイスにデータを送信するセンサであってもよいため、これらの種類のデバイスはユーザインタフェイスやディスプレイを必要としない場合がある。証明生成器110、製造者/アダプタ120、検証装置140又は証明データベース150のいずれかを実装する場合は、電子デバイス600に対して、デバイス130を実装する場合よりも処理回路がより強力であり、データストレージがより大きくなり得ることが理解されよう。
【0082】
上述の方法は、装置で実行されるコンピュータプログラムの制御下で実行され得る。したがって、コンピュータプログラムは、上記の方法のいずれかを実行するための装置を制御するための命令を含むことができる(証明生成器110、製造者/アダプタ120、デバイス130、検証装置140及び証明データベース150のいずれかで実行される方法を含む)。プログラムは、記憶媒体に記憶できる。記憶媒体は、非一時的な記録媒体又は一時的な信号媒体であってもよい。
【0083】
本出願において、「~ように構成される」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有することができ、又はプロセッサ若しくは他の処理装置が機能を実行するようにプログラムされてもよい。「~ように構成される」は、定義された動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
【0084】
本開示の例示的な教示を添付の図面を参照して詳細に説明したが、本発明はこれらの厳密な教示に限定されず、様々な変更及び修正が添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者により本発明の範囲内において行うことができる。
図1
図2
図3
図4
図5
図6