(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】分散化認証方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20240220BHJP
G06F 21/44 20130101ALI20240220BHJP
【FI】
H04L9/32 200D
G06F21/44 350
(21)【出願番号】P 2021519003
(86)(22)【出願日】2019-05-31
(86)【国際出願番号】 GB2019051524
(87)【国際公開番号】W WO2019239108
(87)【国際公開日】2019-12-19
【審査請求日】2022-05-18
(32)【優先日】2018-06-15
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】520494024
【氏名又は名称】イオシック エルティディ
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】オートリ、クリストファー パトリック
(72)【発明者】
【氏名】ロスコ、アンドルー ウィリアム
(72)【発明者】
【氏名】マーガル、ミハイロ
【審査官】行田 悦資
(56)【参考文献】
【文献】韓国公開特許第2018-0003196(KR,A)
【文献】特表2009-515448(JP,A)
【文献】米国特許出願公開第2006/0282662(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/44
(57)【特許請求の範囲】
【請求項1】
プロキシデバイスを用いて第2デバイスに対して第1デバイスが真正であることを証明する方法であって、
前記第1デバイスは第1デバイスデータと第1デバイス秘密鍵を保存し、
前記第2デバイスは第2デバイスデータと第2デバイス秘密鍵を保存し、
前記第1デバイスデータはさらに前記第2デバイスおよび前記プロキシデバイスによって保存され、
前記第2デバイスデータはさらに前記第1デバイスおよび前記プロキシデバイスによって保存され、
前記方法はコミットメント段階では、
前記第1デバイスが前記第1デバイスデータおよび第1デバイス秘密鍵情報を用いて、ワンタイム第1デバイスコミットメント値を発生するステップであって、前記第1デバイス秘密鍵情報は前記第1デバイス秘密鍵および第1ランダムノンスを有するか、または前記第1デバイス秘密鍵および前記第1ランダムノンスから導出されたものであるステップと、
前記第1デバイスは前記ワンタイム第1デバイスコミットメント値を前記プロキシデバイスに送るステップと、
前記第2デバイスが前記第2デバイスデータおよび第2デバイス秘密鍵情報を用いて、ワンタイム第2デバイスコミットメント値を発生するステップであって、前記第2デバイス秘密鍵情報は前記第2デバイス秘密鍵および第2ランダムノンスを有するか、または前記第2デバイス秘密鍵および前記第2ランダムノンスから導出されたものであるステップと、
前記第2デバイスが前記ワンタイム第2デバイスコミットメント値を前記プロキシデバイスに送るステップと、を含み
前記方法は前記コミットメント段階の後で行われるチェック段階でさらに
前記第1デバイスが前記第1デバイス秘密鍵情報を前記プロキシデバイスに伝送するステップと、
前記第2デバイスが前記第2デバイス秘密鍵情報を前記プロキシデバイスに伝送するステップと、
前記プロキシデバイスが、前記プロキシデバイスが保存する前記第1デバイスデータと前記第1デバイスから受け取った前記第1デバイス秘密鍵情報を用いて、前記第1デバイスから受け取った前記ワンタイム第1デバイスコミットメント値が真正であることを確認するステップと、
前記プロキシデバイスが、前記プロキシデバイスが保存する前記第2デバイスデータと前記第2デバイスから受け取った前記第2デバイス秘密鍵情報を用いて、前記第2デバイスから受け取った前記ワンタイム第2デバイスコミットメント値が真正であることを確認するステップと、を含み、
前記方法は前記コミットメント段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認した後に行われるダイジェスト段階でさらに、
前記プロキシデバイスが
i)前記プロキシデバイスが保存する前記第1デバイスデータと、
ii)前記プロキシデバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、
からワンタイムダイジェスト値を算出するステップと、
前記プロキシデバイスが前記ワンタイムダイジェスト値を前記第2デバイスに送るステップと、
前記第2デバイスが少なくとも、
i)前記第2デバイスが保存する前記第1デバイスデータと、
ii)前記第2デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイス秘密鍵情報と、を用いて前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第2デバイスが前記第1デバイスを認証するステップと、を含む。
【請求項2】
前記プロキシデバイスが前記ワンタイムダイジェスト値を前記第1デバイスに送るステップと、
前記第1デバイスが少なくとも、
i)前記第1デバイスが保存する前記第1デバイスデータと、
ii)前記第1デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、を用いて前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第1デバイスが前記第2デバイスを認証するステップと、をさらに含む請求項1に記載する方法。
【請求項3】
前記プロキシデバイスが前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認し、さらに前記第1デバイスおよび前記第2デバイスが一つ以上のワンタイムコミットメント値が真正であることを確認する請求項1または2に記載する方法。
【請求項4】
前記プロキシデバイスはプロキシデータおよびプロキシデバイス秘密鍵を保存しており、
前記プロキシデバイスが前記プロキシデータおよびプロキシデバイス秘密鍵情報を用いてワンタイムプロキシデバイスコミットメント値を発生するステップであって、前記プロキシデバイス秘密鍵情報は前記プロキシデバイス秘密鍵と第3ランダムノンスを含むか、または前記プロキシデバイス秘密鍵と前記第3ランダムノンスから導出されるステップをさらに含む請求項1乃至3のいずれかに記載する方法。
【請求項5】
前記第2デバイスは前記プロキシデータを保存し、
前記プロキシデバイスが前記ワンタイムプロキシデバイスコミットメント値を前記第2デバイスに送るステップと、
前記プロキシデバイスが前記プロキシデバイス秘密鍵情報を前記第2デバイスに伝送するステップと、
前記第2デバイスが前記第2デバイス中に保存された前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認するステップと、をさらに含む請求項4に記載する方法。
【請求項6】
前記プロキシデバイスが前記プロキシデータおよび前記プロキシデバイス秘密鍵情報を用いて、さらに前記ワンタイムダイジェスト値を計算するステップと、
前記第2デバイスが前記第1デバイスを認証する時に、前記第2デバイスがさらに前記第2デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認するステップと、をさらに含む請求項5に記載する方法。
【請求項7】
前記第1デバイスは前記プロキシデータを保存し、
前記プロキシデバイスが前記ワンタイムプロキシデバイスコミットメント値を前記第1デバイスに送るステップと、
前記プロキシデバイスが前記プロキシデバイス秘密鍵情報を前記第1デバイスに伝送するステップと、
前記第1デバイスが前記第1デバイス中に保存された前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認するステップと、をさらに含む請求項4乃至6のいずれかに記載する方法。
【請求項8】
前記プロキシデバイスが前記プロキシデータおよび前記プロキシデバイス秘密鍵情報を用いて、さらに前記ワンタイムダイジェスト値を計算するステップと、
前記第1デバイスが前記第2デバイスを認証する時に、前記第1デバイスが、前記第1デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認するステップと、をさらに含む請求項7に記載する方法。
【請求項9】
第1デバイスと、
第2デバイスと、
プロキシデバイスと、を有する通信システムであって、
前記第1デバイスは第1デバイスデータと第1デバイス秘密鍵を保存し、
前記第2デバイスは第2デバイスデータと第2デバイス秘密鍵を保存し、
前記第1デバイスデータはさらに前記第2デバイスおよび前記プロキシデバイスによって保存され、
前記第2デバイスデータはさらに前記第1デバイスおよび前記プロキシデバイスによって保存され、
コミットメント段階では、
前記第1デバイスが前記第1デバイスデータおよび第1デバイス秘密鍵情報を用いて、ワンタイム第1デバイスコミットメント値を発生し、前記第1デバイス秘密鍵情報は前記第1デバイス秘密鍵および第1ランダムノンスを有するか、または前記第1デバイス秘密鍵および前記第1ランダムノンスから導出されたものであり、
前記第1デバイスは前記ワンタイム第1デバイスコミットメント値を前記プロキシデバイスに送り、
前記第2デバイスが前記第2デバイスデータおよび第2デバイス秘密鍵情報を用いて、ワンタイム第2デバイスコミットメント値を発生し、前記第2デバイス秘密鍵情報は前記第2デバイス秘密鍵および第2ランダムノンスを有するか、または前記第2デバイス秘密鍵および前記第2ランダムノンスから導出されたものであり、
前記第2デバイスが前記ワンタイム第2デバイスコミットメント値を前記プロキシデバイスに送り、
前記コミットメント段階の後に行われるチェック段階では、
前記第1デバイスが前記第1デバイス秘密鍵情報を前記プロキシデバイスに伝送し、
前記第2デバイスが前記第2デバイス秘密鍵情報を前記プロキシデバイスに伝送し、
前記プロキシデバイスが、前記プロキシデバイスが保存する前記第1デバイスデータと前記第1デバイスから受け取った前記第1デバイス秘密鍵情報を用いて、前記第1デバイスから受け取った前記ワンタイム第1デバイスコミットメント値が真正であることを確認し、
前記プロキシデバイスが、前記プロキシデバイスが保存する前記第2デバイスデータと前記第2デバイスから受け取った前記第2デバイス秘密鍵情報を用いて、前記第2デバイスから受け取った前記ワンタイム第2デバイスコミットメント値が真正であることを確認し、
さらに前記チェック段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認すると、前記プロキシデバイスはダイジェスト段階に移行し、
前記ダイジェスト段階では、
前記プロキシデバイスが
i)前記プロキシデバイスが保存する前記第1デバイスデータと、
ii)前記プロキシデバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、
からワンタイムダイジェスト値を算出し、
前記プロキシデバイスが前記ワンタイムダイジェスト値を前記第2デバイスに送り、
前記第2デバイスが少なくとも、
i)前記第2デバイスが保存する前記第1デバイスデータと、
ii)前記第2デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイス秘密鍵情報と、を用いて前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第2デバイスが前記第1デバイスを認証する通信システム。
【請求項10】
前記第1デバイス、前記第2デバイスおよび前記プロキシデバイスのうち少なくとも一つはセンサーまたはセンサーハブである請求項9に記載する通信システム。
【請求項11】
前記プロキシデバイスがさらに前記ワンタイムダイジェスト値を前記第1デバイスに送り、
前記第1デバイスが少なくとも、
i)前記第1デバイスが保存する前記第1デバイスデータと、
ii)前記第1デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、を用いて
から前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第1デバイスが前記第2デバイスを認証する請求項9または10に記載する通信システム。
【請求項12】
前記プロキシデバイスはプロキシデータおよびプロキシデバイス秘密鍵を保存しており、
前記プロキシデバイスが前記コミットメント段階で前記プロキシデータおよびプロキシデバイス秘密鍵情報を用いてワンタイムプロキシデバイスコミットメント値を発生し、前記プロキシデバイス秘密鍵情報は前記プロキシデバイス秘密鍵と第3ランダムノンスを含むか、または前記プロキシデバイス秘密鍵と前記第3ランダムノンスから導出された請求項9乃至11のいずれかに記載する通信システム。
【請求項13】
前記第2デバイスは前記プロキシデータを保存し、
前記プロキシデバイスが前記ワンタイムプロキシデバイスコミットメント値を前記第2デバイスに送り、
前記プロキシデバイスが前記プロキシデバイス秘密鍵情報を前記第2デバイスに伝送し、
前記第2デバイスが前記第2デバイス中に保存された前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認する請求
項12に記載する通信システム。
【請求項14】
前記プロキシデバイスが前記プロキシデータおよび前記プロキシデバイス秘密鍵情報を用いて、さらに前記ワンタイムダイジェスト値を計算し、
前記第2デバイスが前記第1デバイスを認証する時に、前記第2デバイスがさらに前記第2デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認する請求項13に記載する通信システム。
【請求項15】
前記第1デバイスは前記プロキシデータを保存し、
前記プロキシデバイスが前記ワンタイムプロキシデバイスコミットメント値を前記第1デバイスに送り、さらに前記プロキシデバイス秘密鍵情報を前記第1デバイスに伝送し、
前記第1デバイスが前記第1デバイス中に保存された前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認する請求項12乃至14のいずれかに記載する通信システム。
【請求項16】
前記プロキシデバイスがさらに前記プロキシデータおよび前記プロキシデバイス秘密鍵情報を用いて前記ワンタイムダイジェスト値を計算し、
前記第1デバイスが前記第2デバイスを認証する時に、前記第1デバイスが、前記第1デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認する請求項15に記載する通信システム。
【請求項17】
前記第1デバイスデータは、前記第1デバイスを特定する第1デバイス識別データを含み、前記第2デバイスデータは前記第2デバイスを特定する第2デバイス識別データを含む請求項9乃至16のいずれかに記載する通信システム。
【請求項18】
前記第1デバイス、前記第2デバイスおよび前記プロキシデバイスは無線機を含み、無線で通信する請求項9乃至17のいずれかに記載する通信システム。
【請求項19】
前記第1デバイス、前記第2デバイスおよび前記プロキシデバイスは一つ以上の有線の中継器を介して通信する請求項9乃至17のいずれかに記載する通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明はデバイスを認証するための方法およびシステムに関する。
【背景技術】
【0002】
認証のプロセスは、暗号化システム中の中心概念である。認証を行うことにより互いに情報交換したい2つのパーティ同士の信用が確立される。認証を行うことにより、あるパーティがそのパーティが申告する者または物であるかどうかを判定できる。認証は承認とは異なる。承認はあるパーティが行ってよいことを、例えばそのパーティが他のどのパーティと通信してよいかを判定する。
【0003】
従来、認証は公開鍵基盤(以下、「PKI」という)を用いて行われていた。PKIの中では、証明機関(以下、「CA」という)とも言われる、一か所に集まった複数の信頼できる第三者機関(以下、「TTP」という)が、パーティの身元を注意深くチェックし、(一対の非対称鍵のうちの)そのパーティの公開鍵を認証する。
【0004】
第2のパーティがこの証明書を見ると、その第2のパーティは第1のパーティのみが解読できるメッセージを作成する方法がわかるか、またはその第2のパーティは第1のパーティが暗号化技術を用いて署名された書類の真の著者であったことを証明する署名が真正であることを確認することができる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、PKIはあらゆる状況に十分に適したものではない。PKIは中心に配置された所定のクライアント・サーバーモデル用に設計されたものであり、そのようなクライアント・サーバーモデル中では、取引を完了させるために認証をしてもらいたいすべてのパーティが所定の中心に集まったネットワーク、普通は公共インターネットを介して通信しなければならない。このようなパーティはすべてTTPが高価になる場合がある証明書を保持していることをあてにしなければならない。PKIが複雑なため、PKIはモノのインターネット(以下、「IoT」という)には余り向いていない。IoTにおいては、数十億のノードを認証することが望ましいが、それらのノードの多くは、携帯電話によるものであり、少なくとも世界全体から見て共通の意味の身元を有しているものではない。これらのノードが意味のある身元(例えば、ノードの所有権または物理的な位置)を有しているとしても、この規模の効果的なPKIを作って、維持することのコストは極めて高い。PKIが大きくなればなるほど、さらに構造化されればされるほど、より多くのCAの層が通常必要になる。このことによって、PKIによる認証に必要な複雑な数学計算のために、受け入れられないほどのコンピュータの能力および電力を、単純な電池式のセンサーでもよい複数のデバイスに要求することになる。さらに、複雑なIoTシステムの中では、多くのアセットが他の多くのアセットとリアルタイムで、簡単に言えば一度に大量のデータを通信する必要がある
【0006】
ゲートウェイ・レベルでのPKI認証を用いて、大規模なIoTネットワーク用の認証を行う試みがなされてきた。しかし、ゲートウェイでの認証に依存すると、センサーおよびセンサーのハブが例えば総当たり攻撃、中間者攻撃およびポスト量子暴露のような様々な攻撃に対して脆弱になる。もしもゲートウェイが露出されれば、ゲートウェイに接続、ルーティングおよび機能を依存するすべての部品も露出されることになる。
【0007】
本願発明は、従来の一か所に集めたPKI認証方法に存在する前述した欠点のいくつかを解決する、代わりとなる認証方法を提供しようとするものである。
【課題を解決するための手段】
【0008】
本願発明の第1の要部は、プロキシを用いて第2デバイスに対して第1デバイスが真正であることを証明する方法を提供するものであって、前記方法において、
前記第1デバイスは第1デバイスデータと第1デバイス秘密鍵を保存し、
前記第2デバイスは第2デバイスデータと第2デバイス秘密鍵を保存し、
前記第1デバイスデータはさらに前記第2デバイスおよび前記プロキシによって保存され、
前記第2デバイスデータはさらに前記第1デバイスおよび前記プロキシによって保存され、
前記方法はコミットメント段階では、
前記第1デバイスが前記第1デバイスデータおよび第1デバイス秘密鍵情報を用いて、ワンタイム第1デバイスコミットメント値を発生するステップであって、前記第1デバイス秘密鍵情報は前記第1デバイス秘密鍵および第1ランダムノンスを有するか、または前記第1デバイス秘密鍵および前記第1ランダムノンスから導出されたものであるステップと、
前記第1デバイスは前記ワンタイム第1デバイスコミットメント値を前記プロキシに送るステップと、
前記第2デバイスが前記第2デバイスデータおよび第2デバイス秘密鍵情報を用いて、ワンタイム第2デバイスコミットメント値を発生するステップであって、前記第2デバイス秘密鍵情報は前記第2デバイス秘密鍵および第2ランダムノンスを有するか、または前記第2デバイス秘密鍵および前記第2ランダムノンスから導出されたステップと、
前記第2デバイスが前記ワンタイム第2デバイスコミットメント値を前記プロキシに送るステップと、を含み
前記方法は前記コミットメント段階の後で行われるチェック段階でさらに
前記第1デバイスが前記第1デバイス秘密鍵情報を前記プロキシに伝送するステップと、
前記第2デバイスが前記第2デバイス秘密鍵情報を前記プロキシに伝送するステップと、
前記プロキシが、前記プロキシが保存する前記第1デバイスデータと前記第1デバイスから受け取った前記第1デバイス秘密鍵情報を用いて、前記第1デバイスから受け取った前記ワンタイム第1デバイスコミットメント値が真正であることを確認するステップと、
前記プロキシが、前記プロキシが保存する前記第2デバイスデータと前記第2デバイスから受け取った前記第2デバイス秘密鍵情報を用いて、前記第2デバイスから受け取った前記ワンタイム第2デバイスコミットメント値が真正であることを確認するステップと、を含み、
前記方法は前記チェック段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認した後に行われるダイジェスト段階でさらに、
前記プロキシが
i)前記プロキシが保存する前記第1デバイスデータと、
ii)前記プロキシが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、
からワンタイムダイジェスト値を算出するステップと、
前記プロキシが前記ワンタイムダイジェスト値を前記第2デバイスに送るステップと、
前記第2デバイスが少なくとも、
i)前記第2デバイスが保存する前記第1デバイスデータと、
ii)前記第2デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイス秘密鍵情報と、を用いて前記プロキシから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第2デバイスが前記第1デバイスを認証するステップと、を含む。
【0009】
本願発明の第2の要部は、第1デバイス、第2デバイスおよびプロキシデバイスを有する通信システムを提供するものであって、前記通信システムにおいては、
前記第1デバイスは第1デバイスデータと第1デバイス秘密鍵を保存し、
前記第2デバイスは第2デバイスデータと第2デバイス秘密鍵を保存し、
前記第1デバイスデータはさらに前記第2デバイスおよび前記プロキシデバイスによって保存され、
前記第2デバイスデータはさらに前記第1デバイスおよび前記プロキシデバイスによって保存され、
コミットメント段階では、
前記第1デバイスが前記第1デバイスデータおよび第1デバイス秘密鍵情報を用いて、ワンタイム第1デバイスコミットメント値を発生し、前記第1デバイス秘密鍵情報は前記第1デバイス秘密鍵および第1ランダムノンスを有するか、または前記第1デバイス秘密鍵および前記第1ランダムノンスから導出されたものであり、
前記第1デバイスは前記ワンタイム第1デバイスコミットメント値を前記プロキシデバイスに送り、
前記第2デバイスが前記第2デバイスデータおよび第2デバイス秘密鍵情報を用いて、ワンタイム第2デバイスコミットメント値を発生し、前記第2デバイス秘密鍵情報は前記第2デバイス秘密鍵および第2ランダムノンスを有するか、または前記第2デバイス秘密鍵および前記第2ランダムノンスから導出されたものであり、
前記第2デバイスが前記ワンタイム第2デバイスコミットメント値を前記プロキシデバイスに送り、
前記コミットメント段階の後に行われるチェック段階では、
前記第1デバイスが前記第1デバイス秘密鍵情報を前記プロキシデバイスに伝送し、
前記第2デバイスが前記第2デバイス秘密鍵情報を前記プロキシデバイスに伝送し、
前記プロキシデバイスが、前記プロキシが保存する前記第1デバイスデータと前記第1デバイスから受け取った前記第1デバイス秘密鍵情報を用いて、前記第1デバイスから受け取った前記ワンタイム第1デバイスコミットメント値が真正であることを確認し、
前記プロキシデバイスが、前記プロキシデバイスが保存する前記第2デバイスデータと前記第2デバイスから受け取った前記第2デバイス秘密鍵情報を用いて、前記第2デバイスから受け取った前記ワンタイム第2デバイスコミットメント値が真正であることを確認し、
さらに前記チェック段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認すると、前記プロキシデバイスはダイジェスト段階に移行し、
前記ダイジェスト段階では、
前記プロキシデバイスが
i)前記プロキシが保存する前記第1デバイスデータと、
ii)前記プロキシが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、
からワンタイムダイジェスト値を算出し、
前記プロキシデバイスが前記ワンタイムダイジェスト値を前記第2デバイスに送り、
前記第2デバイスが少なくとも、
i)前記第2デバイスが保存する前記第1デバイスデータと、
ii)前記第2デバイスが保存する前記第2デバイスデータと、
iii)前記第1デバイスから受け取った前記第1デバイス秘密鍵情報と、
iv)前記第2デバイス秘密鍵情報と、を用いて前記プロキシから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第2デバイスが前記第1デバイスを認証する。
【0010】
本願発明の別の要部は、本明細書で開示され前記第1デバイスによって実行される複数のステップを有する方法を実行するデバイスである。本願発明の別の要部は、本明細書で開示され前記第2デバイスによって実行される複数のステップを有する方法を実行するデバイスである。さらに本願発明の別の要部は、本明細書で開示され前記プロキシデバイスによって実行される複数のステップを有する方法を実行するプロキシデバイスを提供する。
【0011】
したがって、本願発明によれば、前記プロキシを用いて前記第2デバイスへ仲介し、前記第2デバイスに対してデータが真正であることを独立して立証し、さらに前記第1デバイスが、同デバイスが申告する者またはものである、すなわち前記第1デバイスは事実前記第1デバイスデータによって特定されるデバイスであるという信頼を前記第2デバイスに与える。コミットメント段階では、前記第1デバイスおよび前記第2デバイスはそれぞれワンタイムコミットメント値を前記プロキシに送信する。このワンタイムコミットメント値は好ましくはそれぞれのデバイスに固有のデバイスデータから導出されたものである。そして、両方のデバイスがそれらのコミットメント値を送信した後、さらに、オプションになるが前記プロキシがそのコミットメント値を送信した後になって始めて、前記第1デバイスおよび前記第2デバイス、さらにオプションになるが前記プロキシはそれぞれの秘密鍵情報を明らかにする。これらの秘密鍵情報によって、前記プロキシは送信されたたコミットメント値が真正であることを確認することができる。さらにオプションになるが、この秘密鍵情報によって、前記第1デバイスおよび/または前記第2デバイスも送信したコミットメント値が真正であることを確認することができる。前記プロキシは自身が保存する前記第1デバイスデータおよび前記第2デバイスデータを用いて、自身に対して前記第1デバイスおよび前記第2デバイスが真正であることを証明する。この認証がうまくいった場合、前記プロキシはダイジェスト値を計算して、前記第2デバイスに送信する。このダイジェスト値によって、前記第2デバイスに対する前記第1デバイスが真正であることの証明が正しいことがわかる。前記第1デバイスが真正であることの証明を前記プロキシがこのように裏付けることによって前記第2デバイスが前記第1デバイスを認証することにより、前記プロキシの関与なしで前記第1デバイスを直接認証しようとする場合に比べて、認証の信頼性を高めることができる。前記したデバイスは、いずれもIoTのセンサーもしくはセンサーハブのような単純なデバイス、または例えばルーターのようなもっと複雑なデバイスでもよい。
【0012】
前記したデバイスデータ(第1デバイスデータ、第2デバイスデータおよび任意のプロキシデバイスデータ)は好ましくはデバイス固有のデータである。前記したデバイスデータはプロビジョニングデータを含むものでよい。前記したデバイスデータはデバイス識別データを含むものでよい。
【0013】
前記プロキシは信頼できるデバイスでよい。特に、前記第2デバイス(およびオプションになるが前記第1デバイス)は、例えば前記方法を実行する前に行われるデータ交換の結果として、前記プロキシを信頼するものでもよい。所定の実施形態では、前記第2デバイス(およびオプションになるが前記第1デバイス)は、本明細書で開示する複数のステップのうちの少なくともいくつかを行うことによって、前記プロキシについての信頼を確立するものでよい。
【0014】
前記プロキシはプロキシデータおよびプロキシデバイス秘密鍵を保存する。オプションになるが、このプロキシデータはさらに前記第2デバイスにより保存され、さらにオプションになるが前記第1デバイスによっても保存される。
【0015】
所定の実施形態では、前記プロキシが前記プロキシデータおよびプロキシデバイス秘密鍵情報を用いてワンタイムプロキシデバイスコミットメント値を発生するものでよい。ここで、前記プロキシデバイス秘密鍵情報は前記プロキシデバイス秘密鍵と第3ランダムノンスを含むか、または前記プロキシデバイス秘密鍵と前記第3ランダムノンスから導出されたものである。好ましい実施形態では、前記プロキシが前記ワンタイムプロキシデバイスコミットメント値を前記第2デバイスに送るものでよい。前記プロキシは前記ワンタイムプロキシデバイスコミットメント値を前記第1デバイスにも送るものでよい。
【0016】
前記第1ランダムノンスは前記第1デバイスが発生するものでよい。前記第2ランダムノンスは前記第2デバイスが発生するものでよい。前記第3ランダムノンスは前記プロキシデバイスが発生するものでよい。各ランダムノンスは真の乱数の発生源から発生する、または疑似乱数発生機が発生するものでよい。
【0017】
所定の実施形態では、前記チェック段階の間に前記プロキシが前記プロキシデバイス秘密鍵情報を前記第2デバイスに伝送する。前記プロキシは前記プロキシデバイス秘密鍵情報を前記第1デバイスにも伝送してもよい。
【0018】
所定の実施形態では、前記第2デバイスが、前記第2デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認する。所定の実施形態では、前記第1デバイスが、前記第1デバイスが保存する前記プロキシデータおよび前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムプロキシデバイスコミットメント値が真正であることを確認する。
【0019】
所定の実施形態では、前記チェック段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイムプロキシデバイスコミットメント値が真正であることを前記第2デバイスが確認して初めて、前記プロキシデバイスはダイジェスト段階に移行する。所定の実施形態では、前記チェック段階で前記ワンタイム第1デバイスコミットメント値および前記ワンタイムプロキシデバイスコミットメント値が真正であることを前記第2デバイスが確認して始めて、前記プロキシデバイスはダイジェスト段階に移行する。前記第1デバイスおよび/または前記第2デバイスはこれらのコミットメント値が真正であることが確認できたことを前記プロキシデバイスに伝えることができる。前記第1デバイスおよび/または前記第2デバイスは、前記第1デバイスおよび/または前記第2デバイスが再計算した一つ以上のコミットメント値、それぞれ前記プロキシデバイスに送ることができる。前記プロキシデバイスの前記ダイジェスト段階への移行は、前記第1デバイスおよび前記第2デバイスの一方または両方によって、ワンタイム第1デバイスコミットメント値およびワンタイム第2デバイスコミットメント値が真正であることを確認できただけでなく、ワンタイムプロキシデバイスコミットメント値が真正であることを確認できた後になって始めてできる。
【0020】
所定の実施形態では、前記プロキシはさらにプロキシデータおよびプロキシデバイス秘密鍵情報を用いてワンタイムダイジェスト値を算出する。
【0021】
前記第2デバイス(オプションになるが、および前記第1デバイス)は、さらに前記プロキシデータおよび前記プロキシデバイス秘密鍵情報を用いて、前記プロキシデバイスから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第1デバイスを認証することができる。
【0022】
前記第1デバイスおよび/または前記第2デバイスは任意の電子デバイスでよい。これらデバイスは無線デバイスでもよい。これらのデバイスはルーターおよび/またはサーバーでもよい。これらのデバイスは携帯型デバイスでもよい。これらのデバイスは電池駆動されるものでもよい。好ましい実施形態の組では、これらのデバイスは無線センサーデバイスである。これらのデバイスはIEEE802.1Xプロトコル、例えば802.11(Wifi(登録商標))を用いて、互いに通信する、および/または前記プロキシデバイス通信する、ものでよい。これらのデバイスは、例えばZigBee(登録商標)のようなIEEE802.15プロトコルを用いて、および/またはWifiもしくはブルートゥース(登録商標)あるいは他の短距離範囲、中距離範囲、もしくは長距離範囲無線プロトコルを用いて、互いに通信する、および/または前記プロキシデバイスと通信する、ことができる。しかしながら、このことは重要ではなく、これらのデバイスは、一つ以上の無線光学チャンネル、マイクロ波中継器。802.3X(イーサネット(登録商標))のような有線中継器、電線、光ファイバ等を用いて通信してもよい。前記第1デバイスおよび/または前記第2デバイスはインターネットのインタフェースを有してもよい。これらのデバイスはそれぞれIPアドレスを有してもよく、またIPアドレスを有してなくてもよい。これらのデバイスはIoTデバイスでもよい。
【0023】
前記プロキシは任意のデバイスでよい。前記プロキシは前記第1デバイスおよび/または前記第2デバイスの有する特徴のうちどれかを有するものでもよい。特に、前記プロキシは別のセンサーデバイスでもよい。所定の実施形態では、前記プロキシはセンサーハブまたはゲートウェイである。
【0024】
前記第1デバイス、前記第2デバイスおよび前記プロキシは、すべてそれぞれの近傍にあるものでよい。例えば、これらのデバイスは、1km以内、100m以内または10m以内にあるものでよい。または、これらのデバイスは長距離の範囲にわたって分散しているものでよく、地球上に分散しているものでもよい。
【0025】
所定の実施形態では、前記第1デバイスまたは前記第2デバイスがさらに前記プロキシとしても働くものでもよい。すなわち、一つの物理的なデバイスが、前記第1デバイスおよび前記プロキシの両方に、または前記第2デバイスおよび前記プロキシの両方になるものでもよい。しかし、他の実施形態では、前記プロキシは前記第1デバイスとも前記第2デバイスとも別体でよい。
【0026】
所定の実施形態では、前記方法を用いて第2の複数のデバイスまたは複数のデバイスからなる第2の組に対して、第1の複数のデバイスまたは複数のデバイスからなる第1の組が真正であることを証明することができる。
【0027】
所定の実施形態では、前記方法を用いて第1の複数のデバイスまたは複数のデバイスからなる第1の組と第2の複数のデバイスまたは複数のデバイスからなる第2の組の一方に対して、他方が真正であることを証明することができる。
【0028】
前記方法は、前記ダイジェスト段階で前記プロキシがワンタイムダイジェスト値を前記第1デバイスに送るステップをさらに含むものでよい。前記第1デバイスは、i)前記第1デバイスが保存する前記第1デバイスデータと、ii)前記第1デバイスが保存する前記第2デバイスデータと、iii)前記第1デバイス秘密鍵情報と、iv)前記第2デバイスから受け取った前記第2デバイス秘密鍵情報と、を用いて前記プロキシから受け取った前記ワンタイムダイジェスト値が真正であることを確認することによって、前記第2デバイスを認証することができる。このようにして、前記方法は第1デバイスと第2デバイスが相互に認証することを可能にするものでよい。
【0029】
前記第2デバイスは、前記第1デバイスを認証する時に、さらに前記第2デバイスが保存する前記プロキシデバイスデータと前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて前記プロキシデバイスから受け取ったワンタイムダイジェスト値が真正であること確認することができる。前記第1デバイスは、前記第2デバイスを認証する時に、さらに前記第1デバイスが保存する前記プロキシデバイスデータと前記プロキシデバイスから受け取った前記プロキシデバイス秘密鍵情報を用いて前記プロキシデバイスから受け取ったワンタイムダイジェスト値が真正であることを確認することができる。
【0030】
所定の実施形態では、前記プロキシが前記ワンタイム第1デバイスコミットメント値および前記ワンタイム第2デバイスコミットメント値が真正であることを確認し、さらに前記第1デバイスおよび/または前記第2デバイスが一つ以上のワンタイムコミットメント値が真正であることを確認するものでよい。このステップにより、攻撃に対する認証プロトコルの堅牢性を高める。特に、所定の実施形態は、前記コミットメント段階で前記第1デバイスがさらに前記ワンタイム第1デバイスコミットメント値を前記第2デバイスに送るステップを有するものでよい。所定の実施形態は、前記第2デバイスがさらに前記ワンタイム第2デバイスコミットメント値を前記第1デバイスに送るステップを有するものでよい。所定の実施形態は、チェック段階で前記第1デバイスがさらに前記第1デバイス秘密鍵情報を前記第2デバイスに伝送するステップを含むものでよい。前記第2デバイスはその後前記第2デバイスが保存する前記第1デバイスデータと受け取った前記第1デバイス秘密鍵情報を用いて、前記第1デバイスから受け取った前記ワンタイム第1デバイスコミットメント値が真正であることを確認できる。所定の実施形態は、前記第2デバイスが前記第2デバイス秘密鍵情報を前記第1デバイスに送るステップを含むものでよい。前記第1デバイスはその後前記第1デバイスが保存する前記第2デバイスデータと受け取った前記第2デバイス秘密鍵情報を用いて、前記第2デバイスから受け取った前記ワンタイム第2デバイスコミットメント値が真正であることを確認できる。
【0031】
前記第1デバイスおよび/または前記第2デバイスが一か所に集まった証明機関と通信しないことが好ましい。これらのデバイスは公開鍵の暗号化するためのメカニズムを有する必要はない。このことにより、PKI認証プロトコルを使用するのに比べて、これらのデバイスの構成を単純にして、プロセスの必要な要件および使用電力を減らすことができる。
【0032】
所定の実施形態は、SHA関数のようなハッシュ演算を用いて、デバイスごとにコミットメント値を発生するものでよい。このようにすれば、非対称キー演算を行う場合よりも、これらのデバイスにかかる計算負荷は小さくなる。
【0033】
前記方法は、前記第1デバイス、前記第2デバイスおよび前記プロキシデバイスのうちの一つ以上のデバイスが前記第1デバイス、前記第2デバイスおよび前記プロキシデバイスのうちの一つ以上のデバイスによって識別されるハンドシェイク段階を有するものでよい。このデバイスの識別は厳しい認証なしで行われる。このデバイスの識別は一つ以上の比較的短いハッシュ値、を交換するものでよい。このハッシュ値は、これらのデバイスのうちの一つ以上のデバイスのデバイスデータから導出されたものであり、例えば、20ビットのハッシュ値である。すべてのハッシュ値がワンタイム値となるように、各ハッシュ値はそのハッシュ値へ入力されたランダムノンスを含むものでよい。各ハッシュ値はそのハッシュ値に入力されたタイムスタンプを含むものでよい。各ランダムノンスは対応するデバイスによって他のデバイスのうちの少なくとも一つに伝送される。ハンドシェイクは、前記第1デバイスが、前記第1デバイスが保存する前記第2デバイスデータと前記第2デバイスから受け取ったランダムノンスに基づいてハッシュ値を再計算することにより、前記第1デバイスが前記第2デバイスの身元を判定するステップを含むものでよい。前記第1デバイスは再計算したハッシュ値を前記第2デバイスから受け取ったハッシュ値と比較し、これらのハッシュ値が一致するとき前記第1デバイスは前記第2デバイスが本物であることを確認できる。同様に、ハンドシェイクは、前記第2デバイスが、前記第2デバイスが保存する前記第1デバイスデータと前記第1デバイスから受け取ったランダムノンスに基づいてハッシュ値を再計算することにより、前記第2デバイスが前記第1デバイスの身元を判定するステップを含むものでよい。前記第2デバイスは再計算したハッシュ値を前記第1デバイスから受け取ったハッシュ値と比較し、これらのハッシュ値が一致するとき前記第2デバイスは前記第1デバイスが本物であることを確認する。
【0034】
前記方法はさらに、前記第2デバイスおよび前記プロキシデバイスに前記第1デバイスデータを与え、前記第1デバイスおよび前記プロキシデバイスに前記第2デバイスデータを与えるデプロイメント前ハンドシェイク段階を含むものでよい。
【0035】
前記プロキシデバイスが算出するワンタイムダイジェスト値は、前記複数のデバイスのうちの一つ以上からのタイムスタンプ情報にさらに依存するものでよい。前記第2デバイスおよび/または前記第1デバイスはこのタイムスタンプ情報を用いて前記ワンタイムダイジェスト値が新しいものであることに相違ないことを確認することができる。この確認は、リプレー攻撃を防ぐのに役立つ。
【0036】
前記第1デバイスが発生する前記第1デバイスコミットメント値または前記第2デバイスが発生する前記第2デバイスコミットメント値はそれぞれのデバイスの内部クロックからのタイムスタンプ情報にも依存するものでよい。コミットメント値を受け取るデバイス(例えば、プロキシ)は、コミットメント値が真正であることを確認することの一部として、受け取ったコミットメント値が新しさの条件(例えば、新しさを確認するプロキシのクロックの現在時間よりも0.1秒よりも前ではない)を満たしていることをチェックするものでよい。
【0037】
前記第1デバイスは一つの組を構成する認証プロトコルの複数の段階を実行したことをチェックするマイルストーンチェックを行うものでよい。この一つの組を構成する複数の段階には、前記コミットメント段階および/または前記チェック段階および/または前記ダイジェスト段階が含まれるものでよい。この一つの組を構成する複数の段階にはさらに、ハンドシェイク段階が含まれてもよい。前記チェック段階は鍵交換マイルストーンと別個のチェックマイルストーンを与えるものでよい。もしもこのマイルストーンチェックがうまくいかないと、前記第1デバイスはこの認証方法から撤退できる。前記第1デバイスは、マイルストーンの組を構成する複数の段階をすべて実行したことを前記プロキシデバイスに対して証明することができる。前記第2デバイスは同様にこれらのマイルストーン作業の一部またはすべてを行うことができる。
【0038】
前記複数のデバイス同士の通信は、2つ異なる無線プロトコルのような2つ以上のチャンネルに、または有線のチャンネルと無線のチャンネルに分けることができる。 このことにより安全性が向上する。
【0039】
前記複数のデバイスは暗号化鍵、例えばAES鍵を共有し、この暗号化鍵を用いて前記複数のデバイス間でやりとりするデータ情報のすべて、または一部を暗号化できる。しかし、認証の完全性はAES鍵の安全性に依存しないことが好ましい。
【0040】
前記プロキシデバイスおよび/または第1デバイスあるいは第2デバイスは成功した認証を、例えばブロックチェーン中に記録することができる。
【0041】
好ましくは、前記システムは、認証プロトコルを実行するたびに異なるデータが前記複数のデバイス間でやり取りされるような構成を有する。このような構成は、本明細書で説明するようにノンスを用いることにより実現される。このようにすれば、データのやり取りをするたびに認証が行われ、これにより攻撃者が鍵または証明書を解読するのを防ぐことができる。実施形態は耐量子攻撃性を高めることができる。
【0042】
前記複数のデバイス同士の認証が永久でないことが好ましい。認証は必要な時のみ行われる。所定の場合では、認証された状態が続くのは、数秒またはそれより短い間しか続かない一つの通信セッションの間だけである。このことが特にあてはまるのは、前記複数のデバイスが携帯型デバイスであり、数秒間だけ互いに近くにある場合(例えば、近距離無線範囲内にある場合)である。
【0043】
前記コミットメント段階、前記チェック段階および前記ダイジェスト段階は、好ましくは複数の異なるノンスを用いて同じ第1および第2デバイスによって複数回行うことができる。これらの第1および第2デバイスは、条件が合致したら必ずこれらの段階を実行できる(すなわち再認証できる)。例えばこれらのデバイス間の無線チャンネルが(再)確立したら必ず、これらの段階を実行できる。
【0044】
一つの組を構成する複数の実施形態では、前記第1デバイスは第1ゲートウェイ(例えば、ルーターまたは前記第1デバイスと前記第2デバイスを接続するローカルネットワークにデータが入ってくること、および同ローカルネットワークからデータが出ていくことを可能にする他のデバイス)である。所定のそのような実施形態では、前記第2ゲートウェイは第2ゲートウェイとなり、この第2ゲートウェイは前記第1ゲートウェイがインタフェースとなって接続するのと同じ外部ネットワークをインタフェース接続するものでもよいし、他の外部ネットワークをインタフェース接続するものでもよい。
【0045】
前記第1および第2ゲートウェイは、静止したデバイス(すなわち、携帯型デバイスではない)でよい。これらゲートウェイの間には有線中継器のような永続的な通信チャンネルがあってもよい。しかし、前記通信チャンネルが永続的なものであっても、コミットメント段階、チェック段階およびダイジェスト段階を周期的に行うことがやはり望ましい。これらの複数のデバイスは1秒間に1回、またはもっと頻繁に、例えば1秒間に50回以上、再認証してもらうことができる。このようにすれば、いかなる認証セッションの継続時間よりも総当たり攻撃でセキュリティを破るのにかかる時間の方がはるかに長くすることを確実にできるので潜在的な攻撃者に対する抵抗力を高めることができる。これにより、量子計算に基づく攻撃に対しても耐える可能性がある。
【0046】
所定の実施形態では、前記システムは前記第1および第2デバイスの間に2つの通信チャンネルを設けてもよい。これらの2つ通信チャンネルは単一のイーサネットケーブルのような一つの普通の媒体で繋がった2つの多重化チャンネルでもよいし、一対のイーサネットケーブルのような2つの異なる媒体を用いる2つの多重化チャンネルでもよい。前記システムの構成は、いずれの時点においても、これら2つのチャンネルのうちの一つのみが認証されたチャンネルとなり、そのチャンネルを用いて本明細書で記載するコミットメント段階、チェック段階およびダイジェスト段階を行い、一方、もう一つのチャンネルは非接続(すなわち、データ通信には用いられない)とするか、または応答が必要でない通信のみに用いられる。 認証されたチャンネルを用いて応答をする通信をすることもできる。前記複数のデバイスは、これらの2つのチャンネルのうちのどれを認証されたチャンネルとするかを一定の周期で交代させてもよい。認証されるチャンネルの身元が変わるたびに、再認証を行えばよい。この認証チャンネルの交代は1秒間に1回、またはもっと頻繁に、例えば1秒間に50回以上行うことができる。このようにすることにより、どの認証されたチャンネルの継続時間よりも総当たり攻撃でセキュリティを壊すにかかる時間の方がはるかに長くすることが確実になるので、可能性のある攻撃者に対する安全性を高めることができ、量子計算に基づく攻撃に対しても耐えられる可能性がある。もちろん、3つまたは4つのチャンネルがあってもよく、これらのうちの一部は任意の時間に認証される。
【0047】
前記デバイスデータは、モデル番号、固有のID、クラス、所有者等のような一つ以上の属性を含むものでよい。これらの属性は、特定のデバイスまたは複数のデバイスからなる特定のクラスに固有なものである。適切な属性を選択する、さらに/または組み合わせることによって、ネットワーク内の各デバイスに固有なデバイスデータが定まる。前記秘密鍵はデバイス属性を用いて発行される。前記秘密鍵は各デバイスが起動される間に発行される。
【0048】
前記複数のデバイスは互いに通信するように設定されている。この設定(プロビジョニング)は認証とは通常異なるものである。前記複数のデバイスが認証プロトコルを開始する前に、前記複数のデバイスが互いに通信できるように設定されることは必要なことである。
【0049】
各デバイスは、本明細書で開示する一つ以上のステップを実行するため、プロセッサによって実行されるソフトウェア命令を有する。このソフトウェアは前記デバイスのメモリに保存される。各デバイスは、CPU、DSP、GPU、FPGA、ASIC、揮発性メモリ、不揮発性メモリ、入力装置、出力装置、ディスプレー、ネットワーク接続、電源、無線機、クロック、および他の適切な部品を有するものでよい。各デバイスは認証の結果を保存、表示または出力する。
【0050】
本明細書中で説明する本願発明のどの実施形態またはどの要部の特徴も、適宜本明細書中で説明する本願発明の他の実施形態または他の要部のいずれにも適用できる。複数の異なる実施形態または複数の実施形態からなる組に言及するときは、これらは必ずしも全く異なるものではなく、一部重複するものでもよい。
【図面の簡単な説明】
【0051】
本願発明の所定の好ましい実施形態は、以下、実施例により次の図面を参照して説明される。
【
図1】
図1は本願発明の実施形態を構成する認証プロトコルに参加する2個のアセットとプロキシを示す概略図である。
【
図2】
図2は本願発明の実施形態を構成する認証プロトコルの主要な段階を示すフローチャートである。
【
図3】
図3は前記2個のアセットの初期デプロイメントの間に実行される認証プロトコルの「ハンドシェイク」段階が実行されるときの、認証プロトコルの「ハンドシェイク」段階の詳細を示すフローチャートである。
【
図4a】
図4aは前記2個のアセットが初期デプロイメントの後に、前記2個のアセットの認証を行うときに実行される前記認証プロトコルの「ハンドシェイク」段階の第1部の詳細を示すフローチャートである。
【
図4b】
図4bは前記認証プロトコルのデプロイメント後「ハンドシェイク」段階の第2部の詳細を示すフローチャートである。
【
図5A】
図5Aは前記認証プロトコルの「コミットメント」段階の詳細を示すフローチャートである。
【
図5B】
図5Bは前記認証プロトコルの「コミットメント」段階の詳細を示すフローチャートである。
【
図6】
図6は、複数のコミットメント値のチェックが行われる、前記認証プロトコルの「チェック」段階の詳細を示すフローチャートである。
【
図7】
図7は、最終ダイジェスト値が発生され、共有される、前記認証プロトコルの「最終ダイジェスト」段階の詳細を示すフローチャートである。
【
図8】
図8は、各アセットが要求されるマイルストーンの各々を経たことをチェックする、前記認証プロトコルの最終「マイルストーン」段階の詳細を示すフローチャートである。
【発明を実施するための形態】
【0052】
図1は、本願発明の実施形態を構成する認証プロトコルに参加する、アセットA100とアセットB101とプロキシ102またはアセットPと呼ぶ第3アセットと、を有する無線センサーネットワークの複数の部品を示す。このネットワークはこの図よりももっと多くのアセットを有するものでもよい。これらのアセットの各々は個別のメモリ103、クロック104、無線機105およびプロセッサ106を有する。これらのメモリ103は本明細書で説明されるステップのいくつか、またはすべてを実行するために、それぞれのプロセッサで実行される命令を有するソフトウェアを保存するものでよい。代わりの例では、複数のアセット100、101、102は前記ステップの少なくとも一部を実行するためのクリプト・アクセラレーター(図示されていない)のような専用ハードウェアを有するものでよい。複数のアセット100、101、102は電池、ユーザーインタフェース、センサー等を含むものでよい。 これらのアセットは無線機により互いに通信する。
【0053】
これらのアセットは、例えば、IoTセンサーまたはIoTセンサーのハブでもよい。例えば、アセットA100は街灯柱の中に配置されたセンサーで、アセットB101が車両内に配置されたセンサーで、プロキシ102が前記街灯柱の近くの道路の中に埋め込まれたセンサーとなることもある。前記車両が前記街灯柱と前記道路センサーに電波近接した場所を通過する短い時間窓の間に、車両センサーBは、街灯柱センサーAとセンサーデータをやりとりする前に街灯柱センサーAにより認証されることを望む。以下でさらに詳細に説明するように、道路センサー102とも通信することにより、この認証が確実に行われる。所定の実施形態では、複数のアセットA100,B101の一つまたは両方が、ローカルエリアネットワークとインターネットのような2つの異なるネットワークの間のインタフェースとなるゲートウェイデバイスになりうる。
【0054】
図2は本願発明の一実施形態である認証プロトコルの概略を示す。この認証プロトコルは
図1のセンサーネットワーク内または別のネットワーク内で実行されるものでよい。
【0055】
このプロトコルは、アセットAと呼ぶ、アセット(例えば、アセットA100)または複数のアセットからなる組が、認証信号を発行して、アセットBと呼ぶ、別のアセット(例えば、アセットB101)または複数のアセットからなる別の組に対して送信することから始まる。この認証信号を受信すると、アセットBは認証要求を発行して、「プロキシ」またはアセットPと呼ぶ第3のアセット(例えば、プロキシ102)に送る。それから、このプロキシは追加の要求を発行してアセットAとアセットBの両方に送り、各アセットがこの追加の要求をプロキシから受け取ると認証プロセスが進行する。このプロセスはすべて、
図2のフローチャートの「要求」ステップ2で行われる。このステップは
図3および
図4中に詳細に示されている。
【0056】
認証が必要なときは必ず要求がなされ、アセットの認証は、認証を必要とする所定の通信が終了するとすぐに終了する。その結果、アセットの認証は、その認証が意図的に使用されている時以外は「常にオフ」になっていて、そうすることで、いかなるアセットに対する認証も永続的にならないように、言い換えれば、認証は必要にのみ基づいて発生するようしているので、認証プロトコルの安全性が高められている。
【0057】
これらの要求はすべて、バンド1と呼ばれる第1通信バンドを用いて発行される。第1通信バンドは802.15.xチャンネルになることがある。
【0058】
もっと一般的に言えば、プロトコルはすべての通信が単一の通信バンドである、バンド1上を用いて伝送されることにより実行できる。 しかし、好ましい実施形態では、プロトコル実行中の複数の異なる時点で2つの異なる通信バンドを用いてデータを伝送する。これらの通信バンドは、例えばWifi接続、ブルートウ―ス、または有線接続のうちのいずれでもよく、例えば、バンド1は802.11.x無線チャンネルにして、バンド2を802.15.x無線チャンネルにすることも可能である。
【0059】
アセットAがアセットBおよびプロキシによって認証されるためには、この特別な例の実施形態ではこれらのすべてのアセットの設定(プロビジョニング)の特徴が同一であることが必要であり、これはこれらのアセットが通信することが許されるのは同じアセットだけであることを意味する。これらのアセットは同一の固有の属性(NP)を有していなければならず、ここで固有の属性に含まれるのは、英数字、実数、年月日、時間または組の身元の任意の組み合わせでよい。他の実施形態ではこの要件がなくてもよい。
【0060】
認証プロトコルにおける次の段階は、
図2のステップ4に示される「ハンドシェイク」と呼ばれるものである。二者択一となる2つの「ハンドシェイク」の段階がある。
図3に詳細が示される第1「ハンドシェイク」段階4aは複数のアセットの組が始めのデプロイメントの間のみ、例えばすべてのアセットが工場で設定されるときにのみ起きる。第2の代わりとなる「ハンドシェイク」段階4bがおきるのは、「デプロイメント後」(例えば、工場からの初期デプロイメントの後)におきる、例えば複数のセンサーが他のデバイス中に設置されたときにおきる任意の認証の間である。段階4bはその詳細が
図4aおよび4b中に示される。
図3の段階4aで詳細に説明されているように、複数のアセットが初期デプロイメントの間にハンドシェイクがおきるときは、各アセットまたは各複数のアセットからなる組が所定の属性を圧縮し、圧縮した属性を暗号化し、さらに暗号化した属性を他のアセットと共有する。このような属性には、アセットのハードウェアID(HID)、仮想ID(VID)および顧客ID(CID)を連結した固有のIDである「UID」だけでなく、アセットxの固有の属性に加えて所定のアセットの内部クロックに基づくタイムスタンプ値を表すデータの組である「INFOx」およびアセットが有する設定の仕様または許可である「PSx」(例えば、オン時間/オフ時間、一回の仕事の継続時間、仕事の間隔、条件つきの、例外、暗示された、である/でない、もっと多い/もっと少ない、少なくとも等の許可)を含むものでよい。複数のセンサーの内部クロックは、既知の同期方法を用いて、最初のセットアップの段階の間、および/またはその後周期的に同期化されるものでよい。ハードウェアIDはアセットが製造されている時に焼き付けられた固有のIDである。仮想IDは、アセットの第1スタートの間に作られたアセットの名前空間の複数の値の中から無作為に選ばれた一つのSHA-3ハッシュ値である。顧客IDはアセットが属する顧客の固有の顧客IDであり、初期プロトコル・デプロイメントの間に作られる。各アセットはさらに顧客または製造者によってすべてのアセットに予め設けられた鍵であるAES鍵を用いて前記した属性を暗号化する。これらの圧縮されてさらに暗号化された属性は認証プロセスに参加しているすべてのアセットの間で通信バンド1を介して共有される。各アセットはその後他のすべてのアセットからこれらの属性の受領の確認連絡を待ち、この確認連絡を受け取るか、またはタイムアウトになるまでは、これらの属性を再び送る。これらの共有される属性はすべて、各アセットがそのメモリ103中に永久に保存する。
【0061】
各アセットは、ハードウェアID。モデル名、モデルID、シリアル番号等を含む予め設定された値を有する。各アセットは起動されると、その固有ID=ハードウェア_ID、仮想_ID、顧客_IDを発行する。
【0062】
信用されたプロキシを含め、各アセットは認証を始める前に次の値を定めてもらう必要がある。
― 認証に参加するためのINFOデータ(認証プロセス中に加えられるタイムスタンプは除く)
― 認証に参加するための暫定仕様データ
― 複数のアセットの間で暗号化されたデータの共有を始めるための共通のAES-128暗号鍵
― ハンドシェイク タイムアウト
― コミットメント交換タイムアウト
― 秘密鍵交換タイムアウト
【0063】
図4aおよび4bの段階4bで示される、複数のアセットの初期デプロイメントの後にハンドシェイクがおきるときは、プロトコルの安全性を高めるようにアセットの属性はいずれも直接は共有されていない。
もっと正確に言えば、(プロキシを含む)各アセットは段階30において、20ビットの使い捨て乱数データ(以下、「ノンス」という)、すなわち一度のみ用いられる乱数を発生する。各アセットは、その後段階31において、タイムスタンプを発行し、このタイムスタンプをそのアセットのINFOアレーに書き込む。各アセットはその後段階32において、自身の属性、すなわちUID、INFO、PS、の連結から20ビットのSHA-3ハッシュ値、すなわちPH(属性ハッシュ)を計算する。各アセットは、その後段階34において、段階30からのノンスと段階32からの属性ハッシュ値の連結から、別のSHA-3ハッシュ値、すなわちNPH(使い捨て乱数データが付いた属性ハッシュ)を計算する。各アセットはその後、そのNPHハッシュ値およびそのノンスの両方を他のすべてのアセットにバンド1を介して送り、
図4b中の段階36に示すように受領確認連絡を受け取るまで、またはタイムアウトまで、これらの値をずっと共有する。いずれの段階においても、アセットが認証に参加している他のすべてのアセットに伝送される詳細の受領の確認を受け取ることなく、タイムアウトになった場合、
図4bのフローチャートの黒丸で示されるように、そのアセットは認証のセッションに参加するのを取り止める。もしもそのような状態になったのがプロキシであった場合、そのプロキシは(そのプロキシの参加だけでなく)認証のセッションすべてを停止させる。
【0064】
ステップ38において示されているように、各アセットは、他のアセットからNPHとノンスの値を受け取ると、デプロイメント段階4aの間にそのアセットが取得した保存されたレコードを用いて、受け取ったNPH値を再計算して参加しているアセットの属性を特定する。
【0065】
二者択一の「ハンドシェイク」ステップ4a、4bのいずれかが完了したことが、第1の「マイルストーン」として、参加しているアセットの各々によって記録される。
図2に示すように、各アセットは、そのアセットが認証された地位を認められる前には、認証プロトコルの最終段階だけでなく、認証プロトコル中の5個のマイルストーンのステップを経なければならない。したがって、認証プロセスに参加しているアセットは、必要とされる5個のマイルストーンのそれぞれを経たことを記録する(例えば、メモリ中にフラグを保存する)必要がある。マイルストーンをチェックするやり方については、
図8を参照して後で説明する。
【0066】
「ハンドシェイク」の後、
図2に簡単に示すようにアセットはすべて「コミットメント」段階6に進む。詳細は
図5Aおよび
図5Bに示す。この段階6においては、参加している各アセットはまずステップ40で204ビットのノンスを発生する。その後各アセットは、ステップ42で、そのアセットのオペレーティング・システムを起動する間にそのアセットのUIDに基づいて作られ、けっして共有されることのないそのアセット固有の20ビットの鍵である、そのアセットが有する秘密鍵を読み出し、この秘密鍵をステップ40で発生したノンスと連結させて、ワンタイム224ビット秘密鍵を作る。この秘密鍵はノンスを含んでいるので、各認証セッションで異なるものであり、各セッションに固有のものである。
【0067】
ステップ44で、各アセットはそのコミットメント値Cxを計算する。コミットメント値はSHA-3ハッシュ関数として計算される。
Cx=ハッシュSx(UIDx、INFOx、PSx)
ここで、Sxはステップ42で作られたアセットxの第2鍵であり、UIDxはアセットxのハードウェアID、仮想IDおよび顧客IDの連結したものであり、INFOxはアセットxを表すデータ(すなわち、アセットxの固有の属性)の組である。このINFOxはタイム-ピリオド・スタンプを含むので、このINFO値は特定の認証セッションに特有なものになり、時間と結びついたものである。このタイムスタンプは各アセットの内部クロックに基づくものであり、すべてのアセットのクロックは最初のセットアップ工程の間に同期化される。PSxはアセットxの暫定的な仕様または許可である。したがって、これらのコミットメント値は認証セッションごとに異なり、各セッションに特有な値になる。各認証セッションのたびに、複数のアセットのそれぞれに固有の鍵が作られるため、攻撃者が不正にアクセスできる永続的な鍵や証明はない。
【0068】
ステップ46になると、各アセットは共通のAES鍵を用いてそのアセット自身のコミットメント値を暗号化し、暗号化したコミットメント値を第2の通信チャンネルすなわちバンド2を介して他のすべての参加しているアセットに送る(第2のバンドを用いることにより、安全性が高まるが、所定の実施形態では、たった一つのバンドであるバンド1のみを用いる)。各アセットは他のすべての参加しているアセットから受け取ったコミットメント値を復号化して、保存する。各アセットは、受領確認を受け取るまで、またはコミットメント交換のタイムアウトになるまで。暗号化されたコミットメント値を再び送り続ける。アセット、例えば、アセットAが、アセットAが送った暗号化されたコミットメント値を他のすべてのアセットが受け取ったという受領確認を受け取ると、アセットAは第2のマイルストーンM2に到達したとみなされる。
【0069】
図5Bの段階48および
図2の段階8で示すように、各アセットはすべてのアセットが保存しているAES鍵を用いてそのアセットのワンタイム秘密鍵を暗号化し、暗号化した秘密鍵を他のすべての参加しているアセットに通信バンド1を介して送る。コミットメント値と同様に、各アセットは他のすべてのアセットから暗号化した秘密鍵の受領確認を受け取るまでまたはタイムアウトの限度に到達するまで、この暗号化した秘密鍵値を繰り返し送る。タイムアウトの限度に到達する場合、符号16が示すようにタイムアウトの限度に到達した特定のアセットは認証プロトコルに参加するのを取り止める。アセットがそのアセットの秘密鍵値の受領確認を他のすべてのアセットから受け取ると、このアセットは第3のマイルストーンM3に到達したとみなされる。各アセットは、所定の認証セッションに用いる受領した他のアセットの秘密鍵を、その所定のセッションの継続時間の間保存する。
【0070】
認証プロトコルにおける次の段階は、
図2の段階10で示すように、さらに
図6中で詳細に示すように、「コミットメント値をチェックする」段階で、この段階では各アセットが他のすべてのアセットが送ってきたコミットメント値をチェックする。この段階では、段階50で示されるように、各アセットは前の段階の後に保存された秘密鍵値とともに各アセット自身が有する他の認証をしてもらうアセットの属性のレコードを用いて、他の参加しているアセットそれぞれのすべてのコミットメント値の予測値を計算する。ここで、他の認証をしてもらうアセットの属性のレコードは、最初のデプロイメント前ハンドシェイク段階4aの間に保存された属性のレコード、およびハンドシェイク段階4bに間に特定された属性のレコードである。
【0071】
例えば、アセットAは段階4bで保存されているどのUID値、PS値およびINFO値がアセットBに対応するのかを決定する。アセットAは段階4bの後にこれらの決定した値(INFO値中のアセットAの内部クロックにしたがう現在のタイムスタンプを含む)を用いて、さらに通信バンド1によってアセットAに以前に送られてきたアセットB用の秘密鍵を用いて、前記したコミットメント値ハッシュ関数を計算する。
【0072】
その後段階52で、各アセットは他のすべてのアセットの各々から最初に送られてきたコミットメント値と再計算されたコミットメント値が一致しているかをチェックする。もしもこれらのコミットメント値が一致していないならば、そのアセットは認証プロセスへの参加を止める。もしも所定のアセット、例えばアセットAに対するこれらのコミットメント値が一致するならば、この所定のアセットは認証プロセスの第4のマイルストーンM4に到達したとみなされる。これらのコミットメント値が一致する場合、段階54で各アセットは再計算されたコミットメント値をプロキシ102に送り、プロキシ102は他のすべてのアセット(例えば、アセットAおよびアセットB)から最初に送られてきたコミットメント値とこれらの他のアセットから受け取った再計算されたコミットメント値が一致しているかどうかをチェックする。 もしもこれらのコミットメント値が一致しないならば、これらのコミットメント値が一致しないアセットは認証プロセスへの参加を止める。所定の実施形態では、プロキシがこの追加のチェックを実行するまで、各アセットは第4のマイルストーンM4に到達しない。
【0073】
【0074】
認証プロトコルは2つのアセットと一つのプロキシの場合に対応する例を説明したが、認証プロトコルは任意の数のアセットに拡張できることがわかる。この場合、INFOSは参加しているすべてのアセットを表す情報を連結したものになり、kは参加しているすべてのアセットの秘密鍵のビットごとのXORになる。
【0075】
段階62で、OMEGA値はプロキシから各アセットに通信バンド2を介して送られる。 各アセットは段階62でそのアセットが有し保存している、他のすべての認証をしてもらうアセットについてのデータを用いてOMEGA値を再計算し、これらのOMEGA値が一致するかを示す。 アセット(例えば、アセットA)が再計算したOMEGA値が、プロキシが送ってきたOMEGA値と一致することがそのアセットによって確認されると、このアセットは第5のマイルストーンM5に到達したとみなされる。このOMEGA値を再計算し、真正な値であることを確認する各アセットは、このようにしてこのOMEGA値が最初から認証セッションに参加した本物のプロキシから与えられたものであると判断する。
【0076】
プロキシの役割は、(プロキシは既に認証されていて、所定のバンドを用いて所定のタイプのデバイスの認証をするためのプロキシの役割等を果たす権限を与えられているので)一定レベルの信用を有する独立した第三者として振る舞って、認証セッションを独立して促進する、すなわちアセットA,Bおよび(もしもあるとすれば)他の参加しているアセットによって作られたコミットメントが真正なものであることを確認することを確実に行い、さらに認証をしてもらう複数のアセットに、これらのアセットによって変えることのできない最終ダイジェスト値Ωをブロードキャストで送信する。しかし、値Ωはすべての認証をしてもらうすべてのアセットが受け取り、これらのアセットによって再計算され、プロキシになりすましている可能性を排除する。
【0077】
認証プロトコルの最終段階は、
図2の段階14に示すように、さらに
図8中に詳細に示すように各アセットが必要とされるすべてのマイルストーンを経たことをチェックすることである。この段階によって、認証プロトコル中に悪意のあるアセットが不正に参加できなくすることが確実になる。特定のアセット、例えばアセットAが必要とされる5個のすべてのマイルストーンを経たことをチェックするため、アセットxが224ビットの長さのストリングMを発生するステップ70が行われる。
M=ハッシュ(H
P、C
P、C
X、Ω)
ここで、
図6を参照して説明したように、H
Pはプロキシの圧縮されたAESで暗号化された属性、C
Pはプロキシのコミットメント値、C
Xはアセット自身のコミットメント値、さらにΩは最終ダイジェスト値である。これらの属性値のそれぞれは、必要とされるすべてのマイルストーンのそれぞれの前にアセットにより計算された、または受領されるので、所定のマイルストーンに対応する。したがって、これらの値が正しく発生していることは、所定のアセットがすべてのマイルストーンを経ていることに間違いないことになる。
【0078】
図8のチェックステップ70中に明示的に示してはいないが、この発生した値はプロキシに送られ、プロキシは、プロキシが有する必要とされる値のレコードを用いて値Mを再計算する。これらの値が一致するならば、プロキシは224ビットの固有の認証番号(UAN)、
UAN=ハッシュ(M)
を発生して、このUAN番号を認証プロトコルに参加しているすべてのアセットに送る。この番号を受け取った後、各アセット(例えば、アセットA)は、プロキシおよび他のすべての参加しているアセットにより「認証された」地位を受け取る。この手順は
図8中の「Yes」の枝で示されており、この枝は「認証された」のボックスにつながっている。同じプロセスは認証プロセスに参加している他のすべてのアセットに適用される。これらのUAN番号は必要であれば、記録して保存することができ、例えばUAN番号をブロックチェーンの中に入れて記録することができる。
【0079】
すべてのアセットが認証された後、各アセットが設定(プロビジョニング)されることにより、そのアセットは所定の許可を有することになり、所定のタイプのデータを所定のポートを介して所定のアセットに送ること、および/または所定のデータ源にアクセスすることが可能になる。 例えば、PSxデータが設定されると、初期プロトコル・デプロイメントがうまくいくことにより、参加しているアセットはPSx中に定められた所定の行動を完了させることが自動的に許可されることになる。(デプロイメント後ハンドシェイクを用いて)すべてのアセットに対する認証の実行が結果的に成功した場合は必ず、認証されたアセットは自動的に同じ行動を完了することが許可され、同じ行動を再び実行するための許可を設定する必要がない。
【0080】
以上の説明中においては、アセットAがいろんな場所で例として用いられてきたが、以上の説明はアセットBにも同じようにあてはまるし、これらのアセットの一つまたは両方が複数のアセットの組を有する場合にもあてはまるし、プロキシに加えて互いに認証をしてもらう3個以上のアセットがある状況にもあてはまる。認証プロトコルによって、任意の数のアセットを同時に認証することが可能になる。
【0081】
前述した例では、2つの通信バンド、すなわちバンド1およびバンド2が用いられ、バンド2はコミットメント値と最終オメガ値を共有するために用いられ、バンド1は認証セッションの間の他のすべてのデータ交換用に用いられる。利用できる通信バンドがたった一つの場合、すべての情報がバンド1またはバンド2のいずれかの単一のバンドにより伝送されることにより認証プロトコルは進行する。
【0082】
前記した認証プロトコルの実施形態は、2個のデジタルアセットまたは2個の複数アセットからなる組が、第三者の証明や公共鍵基盤を必要としないで安心して互いに認証し合うことを可能にする耐量子攻撃性のある2点間認証の方法を提供すると考えられる。さらに、アセットまたは複数のアセットからなる組のいずれも、インターネット接続、中心に集まった通信手段、または第三者のデータベースを必ずしも必要とすることなく、認証プロセスを完了して、それによってリアルタイムで、「新たな」、常にオフで、必要な時に使える分散化した認証が可能になる。
図3の初期デプロイメント「ハンドシェイク」段階の後、認証セッションの実行の間に参加しているアセット間で交換されるすべてのデータの値は乱数化され、ワンタイムであり、一方向であり、二度と同じ値にならない(SHA-3の能力範囲内で)ものであり、これは、通信バンドを介していかなる身元データを開示することなく各アセットは他の参加しているアセットにその身元を証明しているのであり、証明がゼロ知識であることを意味する。このことにより、プロトコルの耐量子攻撃性を飛躍的に高め、リプレーまたは盗聴される原因がなくなる。このことは、例えば、複数回用いられ、対照的なブロック暗号である共有される認証用のAES鍵を用いたりすることや、同AES鍵にのみ依存ことよりも有利である。もしもAES鍵が敵対者に知られると、認証プロセスは不正アクセスされる。対照的に、前記した認証プロトコルの実施形態では、コミットメント値とアセット間で共有される秘密鍵はすべて各セッションに特有の唯一のワンタイム値であるから、不正アクセスするものはない。
【0083】
前記した認証プロトコルの実施形態の利点をさらに説明するため、次に前記した認証
プロトコルに対して配備される、いくつかの可能な悪意のある攻撃を説明する。前記した認証プロトコルが可能の攻撃のそれぞれに対していかにして反撃するかについて説明する。これらの説明は、添付する図面を参照して開示する例となる実施形態についてのみに関するものであり、これらの説明が必ずしも本願発明のすべての実施形態に同じようにあてはまるものではない。
【0084】
盗聴攻撃
攻撃者は有線で、または無線で伝送される情報を盗聴し、その情報を将来の目的のために使う。これはリプレー攻撃の一種である。これはネットワーク盗聴またはオフライン盗聴にもなる。
【0085】
デプロイメント後認証セッションの間に交換されたすべてのデータは、乱数化されたワンタイムで一方向(非可逆)の値であるから、前記した認証プロトコルの実行の間には盗聴される原因がない。すべてのアセットが初めて前記認証プロトコルを実行するのに、この実施形態では必須である初期プロトコル・デプロイメントのセッションに、アセット攻撃者は参加していないので、アセット攻撃者は、アセットA(プロキシおよび組の中の他のアセットだけでなく)の真の属性(UID、INFO、PS)を初めは知らない。その結果、アセット攻撃者は他の参加しているアセットの正しいコミットメント値を再計算して、
図6中に示す前記した認証プロトコルのコミットメント値チェック段階でコミットメント値が一致していることを証明できない。
【0086】
アセット攻撃者は他のアセットによって作られたコミットメントの再計算値(一致を示す、正しい、または誤りの論理信号だけではなく)を送らなければならず、プロキシが他のアセットによってもともと送られた当該他のアセットのコミットメント値と盗聴されたアセットに代わってアセット攻撃者が送った当該他のアセットのコミットメント値とが一致しているかをチェックする。もしもこれらのコミットメント値が一致していないことをプロキシがわかると、一致していないコミットメント値を再計算したアセット(すなわちアセット攻撃者)は拒絶されて、報告される。
【0087】
進行中のセッション中に盗聴されたデータは、それが再生されたとしても次のセッションには役立たない。なぜならば、
図4aおよび
図4b中に示すハンドシェイク段階では、アセット攻撃者は、他の参加しているアセットおよびプロキシの真の属性(UID,INFO、PS)について初めから知らないため、受け取ったハッシュ値から当該他の参加しているアセットおよびプロキシの真の属性を導き出すことができないからである。このことから、アセット攻撃者は
図6中に示すコミットメント値チェック段階で他の参加しているアセットおよびプロキシに対応する正しいコミットメント値を再計算できない。再び言うが、コミットメント値が一致していることをプロキシが証明しない場合、一致しないコミットメント値を再計算したアセット(すなわちアセット攻撃者)は拒絶されて、報告される。初期デプロイメントの間、すべてのアセットはUID、INFOおよびPSのAESで暗号化された値を共有しているが、
図3のハンドシェイク段階の間、この初期デプロイメントがおきるのは1回のみであり、再び言うが、この共有されたデータは、その後のデプロイメント後認証セッションのどれでも価値がない。
【0088】
中間者攻撃
中間者攻撃は盗聴攻撃の一種である。攻撃者は2個のアセットの間、またはアセットとプロキシの間の中に入って、これらの間の通信がすべて攻撃者を通ることになる。そのため、攻撃者は両方のパーティのそれぞれになりすましてその相手と対し、両方のパーティの間のデータトラフィックの一部をコピー、改竄、消去する、すなわち相互認証への攻撃をする可能性がある。この攻撃は受動的な攻撃または能動的な攻撃になるかもしれない。
【0089】
中間者攻撃を防ぐため、すべてのアセットとプロキシはそれらのAESにより暗号化された真の属性(UID、INFO、PS)を互いに共有することによって、ワンタイム初期プロトコル・デプロイメントの間は相互に認証されている。中間者が認証されたアセットになりすますと仮定すると、その中間者は初期プロトコル・デプロイメント段階を経ていないので、既に認証されたアセットおよびプロキシの真の属性について初めから知らない。この中間者は、
図6のコミットメント値チェック段階で認証されたアセットとプロキシに対応する正しいコミットメント値を再計算できず、認証されない、すなわち信用されないので、その中間者はどれかのアセットになりすまそうとするかもしれないが、そのアセットに代わって所定の行動をすることはできない。
【0090】
偽アセット
この攻撃において、アセット攻撃者は(例えば、コピーされた)合法的なアセットのコピー(クローン)として振る舞い、何かの理由で接続が切れた後、合法的なアセットがするようにプロキシに対して認証要求を発行して、他のアセットとともに認証セッションに参加しようとする。
【0091】
AES暗号化鍵を知っているとしても、偽アセットは
図6のコミットメント値チェック段階を完了することに成功できない。デプロイメント後プロトコルのデータ交換はゼロ知識証明である、すなわち、アセットおよび/またはプロキシは、その真の身元データを他のアセットに明示することなくその身元データ(UID、INFO、PS)の細切れになった値のみを他の参加しているアセットと共有している。
【0092】
たとえ偽アセットが本物のアセットの完全なクローンでそのためINFOデータとPSデータを知っているとしても、コミットメント値および最終ダイジェスト値を前記したように計算するのに用いる、その偽アセットの乱数化された固有ID、UID=HID.VID.CID、は空値か異なる値なので、その偽アセットは
図6のコミットメント値チェック段階で拒絶されて、報告される。
【0093】
一番初めのワンタイムプロトコルの初期デプロイメント段階の間にアセット攻撃者が複数のからなる組の中に何とかしてもぐり込んだとしても、その間にはこれらのアセットが自身の属性を共有しているが、この合法的でないアセットも新しいAES暗号鍵がインストールされていなければならないため、この攻撃は失敗する。このAES鍵は、合法的なアセットが前記した初期デプロイメント型の認証プロトコルを経る前に、その合法的なアセットのみに予めインストールされる。
【0094】
偽プロキシ
この攻撃の中では、攻撃者は他のアセットに対する認証プロセスを促進し、合法的なアセットの認証をしてもらうための申し込み(要求)に対して応答する合法的なプロキシとして振る舞う。認証プロトコルは相互に認証をする手法を実行するので、すべてのアセットはプロキシのコミットメントもチェックする。この特徴があるため、偽プロキシの場合は前述した偽アセットの場合と同様になる。相違点は単に偽プロキシが拒絶されて、報告されるときである。プロキシはアセットが認証プロセスの次の段階に進むかどうかをチェックして判定する
図6のコミットメント値チェック段階では、本物の認証をしてもらうアセットはこの段階では偽プロキシであることがわからない。しかし、
図7の最終ダイジェスト段階では、すべてのアセットが、偽プロキシが知らせてきたダイジェスト値を再計算して、そのダイジェスト値をこれらのアセットが知っている本物のプロキシの属性に基づいて計算したダイジェスト値を比較した後、これらの本物のアセットは不一致を検出し、このプロキシが合法的なものでないと報告し、認証セッションから撤退する。
【0095】
他のアセットの属性を復号化して、他のアセットのUID、INFOおよびPSを知るためにプロキシには新しいAES暗号鍵がインストールされていなければならないため、もしも偽プロキシが一番初めのワンタイム初期デプロイメント・プロトコルの間に、認証をしてもらう複数のアセットの組の中に何とかしてもぐり込んでも、この偽プロキシはこの攻撃もあきらめる。AES鍵は合法的なアセットのみに、そのアセットが初期デプロイメント・プロトコルを経る前に予めインストールされる。
【0096】
(次に来るデプロイメント後セッション中の)リプレー攻撃
この攻撃では、攻撃者は認証されるため自身が合法的なアセットの一つであるとプロキシと他のアセットに思わせようとして、(前のセッションで盗聴された)特定のアセット認証セッションの値を次のセッションでリプレーしようとする。
【0097】
この場合の攻撃者は
図3中に示す初期プロトコル・デプロイメントセッションを経ていなかったので、同攻撃者は(同じ組の、他のアセットアセットAの真の属性(UID、INFO、PS)を初めから知らなかった。その結果、この攻撃者は受け取った細分化されたデータの値のみに基づいて、他のアセットの属性を決められない。結果として、プロキシがコミットメント値の一致を調べるためにチェックするときに、この攻撃者はプロキシおよび他のアセットの正しいコミットメント値を再計算して一致していることを証明することができない。さらに、すべてのアセットのINFO属性はタイム-ピリオド・スタンプも含む。そのため、異なる(時刻+x秒期間)では、INFO属性値は異なり、その結果、計算されるコミットメント値および最終ダイジェスト値はすべてのセッションのそれぞれで異なる。この特徴のため、後で行う認証セッション中でのリプレー攻撃を効果的に防ぐことができる。
【0098】
本物のアセット自身が計算したコミットメント値を送らなければならない
図6中の認証プロトコルのコミットメント値チェック段階で、攻撃者が新しいコミットメント値を計算しないで、その前に盗聴した攻撃された本物のアセット(例えばアセットB)のコミットメント値を単に送るとする。盗聴されたアセットBのコミットメント値は、プロキシが始めに知っているアセットBの真の属性(UID、INFO、PS)と現在のタイム-ピリオド・スタンプに基づいてプロキシが再計算するアセットBの現在のコミットメント値とは異なって現れる。その結果、アセットBの盗聴者はプロキシによって拒絶されて、報告される。
【0099】
(進行中のデプロメント後セッションの範囲内での)リプレー攻撃
この攻撃では、攻撃者は認証されるため自身が合法的なアセットであるとプロキシと他のアセットに思わせるために、目標とするアセットの認証セッションの値を進行中のセッション中でリプレーしようとする。この場合の攻撃者は
図3の初期プロトコル・デプロイメントセッションを経ていなかったので、同攻撃者は(同じ組の、他のアセットアセットAの真の属性(UID、INFO、PS)について初めから知らない。その結果、この攻撃者は受け取った細分化されたデータの値のみに基づいて、他のアセットの属性を決められない。結果として、プロキシがコミットメント値が一致しているかチェックするときに、この攻撃者は、「自身」のコミットメント値を計算して、またはプロキシおよび他のアセットの正しいコミットメント値を再計算して、一致していることを証明することができない。
【0100】
デプロイメント後ハンドシェイク段階(
図4aおよび
図4B)の間に伝送される新しい乱数化されたハッシュ値およびノンスはいずれも、アセット受領者がそれを受け取るとすぐに(アセット受領者から見ると)無効になる。攻撃者がデータを盗聴するには、少なくとも一回のワンタイムデータ伝送イベントが必要である。もしも攻撃者が同じセッションで盗聴されたデータを伝送したいとしても、受領者は盗聴しているアセットBから後で受け取るワンタイム値を既に本物のアセットBから、受け取っているので、これらの同じデータは受領者によって拒絶される。この状況では、攻撃者は拒絶され、報告される。
【0101】
注入攻撃
この攻撃はリプレー攻撃を切り抜けた後に使われる。この攻撃では、攻撃者は誤ったデータを複数の認証されたアセットの組の中に注入する。この攻撃者はそれをするために認証されていなければならない。前述した認証プロトコルの実施形態はリプレー攻撃を防いでいるので、この注入攻撃も防止できる。
【0102】
セッション・ハイジャック攻撃
この攻撃では、攻撃者はプロキシの代わりとなって、またはセッションの最中にプロキシとしてもぐり込んで認証セッションをコントロールしようとする。
【0103】
認証プロトコルは偽プロキシ(前記参照)を用いる認証の可能性を防ぎ、どのセッションの終わりにも、いかなるアセットも認証プロトコルの必要なすべてのマイルストーンを経ていなかったならばそのアセットが認証される可能性を排除する最終マイルストーンチェック段階(
図8参照)があるので、攻撃者が認証セッションをハイジャックしてその認証セッションを完了することは不可能である。
【0104】
総当たり
総当たり攻撃は認証セッションの間に複数のアセットが交換するデータ値を取得するために用いる試行錯誤方法である。総当たり攻撃では、自動化されたソフトウェアを用いて欲しいデータの値についての極めて多数の連続する推測値を発生する。この認証プロトコルの実施形態では、アセットの属性は乱数化された一方向SHA-3ハッシュ関数を用いて細分化され、このようなハッシュ値からアセットの属性データをリバースエンジニアリングすることが不可能であることは極めて高い確率で言える。 さらに、セッションの継続時間は極めて短く(認証をしてもらうアセットの数にもよるが、通常0.01秒未満)、SHA-3で細分化されたアセットのコミットメント値はセッションに参加しているすべてのアセットのそれぞれで異なり、SHA-3で細分化された最終ダイジェスト値は新しい認証セッションのたびに異なる値になる。したがって、このように極めて短時間の間で交換されるすべての認証値の正しい組み合わせを推測することは、実際には不可能かつ実行不能であり、総当たり攻撃のリスクは最小化されている。
【0105】
本願発明をその一つ以上の実施形態を説明することによって解説したが、本願発明はこれらの実施形態に限定されるものではなく、添付する特許請求の範囲の技術的範囲内で多くの変更および変形が可能であることを、当業者は理解するはずである。