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

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

▶ オリーブ イノベーションズ エルティーディーの特許一覧

特表2024-528971セキュリティモジュール及び安全な通信方法
<>
  • 特表-セキュリティモジュール及び安全な通信方法 図1
  • 特表-セキュリティモジュール及び安全な通信方法 図2
  • 特表-セキュリティモジュール及び安全な通信方法 図3
  • 特表-セキュリティモジュール及び安全な通信方法 図4
  • 特表-セキュリティモジュール及び安全な通信方法 図5A
  • 特表-セキュリティモジュール及び安全な通信方法 図5B
  • 特表-セキュリティモジュール及び安全な通信方法 図5C
  • 特表-セキュリティモジュール及び安全な通信方法 図6A
  • 特表-セキュリティモジュール及び安全な通信方法 図6B
  • 特表-セキュリティモジュール及び安全な通信方法 図6C
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-01
(54)【発明の名称】セキュリティモジュール及び安全な通信方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240725BHJP
   H04L 9/32 20060101ALI20240725BHJP
【FI】
H04L9/08 B
H04L9/32 200A
H04L9/08 E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024506560
(86)(22)【出願日】2022-05-13
(85)【翻訳文提出日】2024-01-31
(86)【国際出願番号】 GB2022051214
(87)【国際公開番号】W WO2023012444
(87)【国際公開日】2023-02-09
(31)【優先権主張番号】2111310.5
(32)【優先日】2021-08-05
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】524041761
【氏名又は名称】オリーブ イノベーションズ エルティーディー
(74)【代理人】
【識別番号】110000659
【氏名又は名称】弁理士法人広江アソシエイツ特許事務所
(72)【発明者】
【氏名】オリバー,ポール
(57)【要約】
制御ユニット(102)を動作させるように構成されたコマンドデータを含むコマンドデータパケットを生成及び送信するための、ユーザ制御デバイス(102)内で実行されるコンピュータ実装方法であって、コマンドデータは、それに関連付けられた複数の属性を有し、方法は、前記ユーザ制御デバイス(102)のプロセッサの制御下で、リモートキー発行プラットフォーム(106)から時限暗号化キーを要求し、前記キー発行プラットフォーム(106)から前記時限暗号化キーを受信することであって、前記時限暗号化キーは、前記コマンドデータに関連付けられた前記属性の特定の1つ又は複数に従って選択されたベースキーを使用して、前記キー発行プラットフォームによって生成される、受信することと、前記キー発行プラットフォーム(106)から前記時限暗号化キーと共に、ベースキーを選択するためにキー発行プラットフォーム(106)によって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、ベースキーを選択するためにキー発行プラットフォームによって使用される特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、前記チェックサム値と、を含み、前記コマンドペイロードが少なくとも暗号化されたコマンドデータを備える、構築することと、前記コマンドデータパケットを前記制御ユニット(102)に送信することと、を備える。
【選択図】図2
【特許請求の範囲】
【請求項1】
制御ユニットを動作させるように構成されたコマンドデータを含むコマンドデータパケットを生成及び送信するための、ユーザ制御デバイス内で実行されるコンピュータ実装方法であって、前記コマンドデータは、それに関連付けられた複数の属性を有し、前記方法は、前記ユーザ制御デバイスのプロセッサの制御下で、
-リモートキー発行プラットフォームから時限暗号化キーを要求し、前記キー発行プラットフォームから前記時限暗号化キーを受信することであって、前記時限暗号化キーは、前記コマンドデータに関連付けられた前記属性の特定の1つ又は複数に従って選択されたベースキーを使用して、前記キー発行プラットフォームによって生成される、受信することと、
-前記キー発行プラットフォームから前記時限暗号化キーと共に、前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
・前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含み、
前記コマンドペイロードが、少なくとも前記暗号化されたコマンドデータを備える、構築することと、
-前記コマンドデータパケットを前記制御ユニットに送信することと、を備える、コンピュータ実装方法。
【請求項2】
前記キー発行プラットフォームから前記時限暗号化キーと共にキーの有効期限を受信し、それを表すデータを前記コマンドデータパケットの前記プレーン値ヘッダに含めることをさらに備える、請求項1に記載の方法。
【請求項3】
時限暗号化キーを要求することが、コマンドデータパケットの送信が必要とされる前記ユーザ制御デバイス及び前記制御ユニットを表すデータを含む要求データを生成することと、前記要求データを前記リモートキー発行プラットフォームに送信することとを備える、請求項1又は請求項2に記載の方法。
【請求項4】
コマンドデータパケットを構築することが、
-前記コマンドデータ及びそれに関連付けられた複数の属性を備えるプレーン値データパッケージを構築し、前記複数のプレーン値属性に関して署名を生成し、署名付きデータパッケージを生成するために、前記署名を前記プレーン値データパッケージに付加することと、
-前記時限暗号化キーを使用して、前記署名付きデータパッケージを暗号化し、暗号化されたコマンドペイロードを生成することと、
-前記暗号化されたコマンドペイロードを前記プレーン値ヘッダに付加することと、を備える、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記プレーン値ヘッダが、前記ユーザ制御デバイスのリアルタイムクロックから抽出されたコマンド時間を表すデータと、前記ユーザ制御デバイスのユーザを表す所有者IDとを含む、請求項1■4のいずれか1項に記載の方法。
【請求項6】
セキュリティモジュール及び制御プロセッサを含む制御ユニットで実行され、ユーザ制御デバイスから受信した有効なコマンドデータを受信し、検証し、実装するためのコンピュータ実装方法であって、前記セキュリティモジュールは、内部に複数のベースキーを記憶しており、前記方法は、前記セキュリティモジュールのプロセッサの制御下で、
-ユーザ制御デバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含む、受信することと、
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
-前記復号化されたコマンドデータを前記制御プロセッサに転送することと、を備える、コンピュータ実装方法。
【請求項7】
前記選択されたベースキー及び前記チェックサム値を使用して、前記暗号化キーを計算することを備える、請求項7に記載の方法。
【請求項8】
前記プレーン値ヘッダは、前記コマンドデータパケットに関連付けられたキーの有効期限及び/又は時刻を表すデータを含み、前記方法はさらに、前記キーの有効期限を、前記セキュリティモジュールのリアルタイムクロックに保持されている日付及び/又は時刻と照合することを備える、請求項6又は7に記載の方法。
【請求項9】
前記コマンドデータ属性の1つはコマンド時間であり、それを表すデータは前記コマンドデータパケットの前記プレーン値ヘッダに含まれ、前記方法は、前記コマンド時間を、以前に記憶されたコマンド時間及び/又は前記制御ユニットのリアルタイムクロックによって保持される時間と比較して、前記コマンド時間が有効であるかどうかを判定し、有効でない場合には、前記コマンドデータパケットを破棄することをさらに含む、請求項6から8のいずれかに1項に記載の方法。
【請求項10】
1つ又は複数の制御ユニットに対して1つ又は複数のリモートユーザ制御デバイスによって使用される時限暗号化キーを生成するためのキー発行プラットフォームで実行されるコンピュータ実装方法であって、前記方法は、前記キー発行プラットフォームのプロセッサの制御下で、
-リモートユーザ制御デバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記ユーザ制御デバイス及び前記ユーザ制御デバイスがコマンドを発行することを望む制御ユニットを表すデータを含む、受信することと、
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
-前記ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
-前記選択されたベースキーを使用して暗号化キーを計算することと、
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記ユーザ制御デバイスに送信することとを備える、コンピュータ実装方法。
【請求項11】
前記暗号化キーは、前記ベースキー及び前記チェックサム値を使用して計算される、請求項10に記載の方法。
【請求項12】
制御ユニットチップ上に統合するためのコンピュータ実装セキュリティモジュールであって、前記セキュリティモジュールは、プロセッサ及びメモリ並びに記憶された複数のベースキーを有し、前記プロセッサの制御下で、前記メモリに記憶された命令を実行して、
-ユーザ制御デバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含む、受信することと、
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
-前記復号化されたコマンドデータを前記制御ユニットの制御プロセッサに転送することと、を行うように構成される、コンピュータ実装セキュリティモジュール。
【請求項13】
請求項12に記載のセキュリティモジュールを有する 集積回路を備えるコンピュータ実装制御ユニット。
【請求項14】
プロセッサ及びメモリを備え、前記プロセッサの制御下で、前記メモリに記憶された命令を実行して、
-リモートキー発行プラットフォームから時限暗号化キーを要求し、前記キー発行プラットフォームから前記時限暗号化キーを受信することであって、前記時限暗号化キーは、前記コマンドデータに関連付けられた前記属性の特定の1つ又は複数に従って選択されたベースキーを使用して、前記キー発行プラットフォームによって生成される、受信することと、
-前記キー発行プラットフォームから前記時限暗号化キーと共に、前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
・前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含み、
前記コマンドペイロードが、少なくとも前記暗号化されたコマンドデータを備える、構築することと、
-前記コマンドデータパケットを制御ユニットに送信することと、を行うように構成される、コンピュータ実装ユーザ制御デバイス。
【請求項15】
プロセッサ及びメモリを備え、前記プロセッサの制御下で、前記メモリ内の命令を実行して、
-リモートユーザ制御デバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記ユーザ制御デバイス及び前記ユーザ制御デバイスがコマンドを発行することを望む制御ユニットを表すデータを含む、受信することと、
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
-前記ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
-前記選択されたベースキーを使用して暗号化キーを計算することと、
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記ユーザ制御デバイスに送信することとを行うように構成されるコンピュータ実装暗号キー発行プラットフォーム。
【請求項16】
請求項1から11のいずれか1項に記載の方法を実装するための命令を備えるコンピュータプログラム製品。
【請求項17】
請求項1から11のいずれか1項に記載の方法を実行するための命令を備えるコンピュータプログラム。
【請求項18】
プロセッサによって実行されると、前記プロセッサに、請求項1~11のいずれか1項に記載の方法を実施させる命令を記憶する非一時的記憶媒体。
【請求項19】
クライアントデバイス、サーバ及びキー発行プラットフォームを備える通信システムであって、前記サーバは統合セキュリティモジュールを有し、前記セキュリティモジュール及びクライアントデバイスは通信ネットワークを介して前記キー発行プラットフォームに通信可能に接続可能であり、前記クライアントデバイスは、指定された通信リンクを介して前記サーバに通信可能に接続可能であり、前記クライアントデバイスは、前記通信ネットワークを介して前記キー発行プラットフォームから暗号化キーを受信するための入力、並びに前記キー発行プラットフォームに暗号化キー要求を送信するための出力、及びコマンドデータパケットを前記サーバに送信するための出力を有し、
前記キー発行プラットフォームは、プロセッサの制御下で、メモリ内の命令を実行して、
-前記クライアントデバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記クライアントデバイス及び前記クライアントデバイスがコマンドを発行することを望むサーバを表すデータを含む、受信することと、
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
-前記ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
-前記選択されたベースキーを使用して暗号化キーを計算することと、
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記クライアントデバイスに送信することとを行うように構成され、
前記クライアントデバイスは、プロセッサの制御下で、命令を実行して、
-前記キー発行プラットフォームから前記時限暗号化キーと共に、前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
・前記ベースキーを選択するために前記キー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含み、
前記コマンドペイロードが、少なくとも前記暗号化されたコマンドデータを備える、構築することと、
-前記コマンドデータを前記サーバに送信することと、を行うように構成され、
前記サーバは、受信したコマンドデータパケットを前記セキュリティモジュールに転送するように構成され、前記セキュリティモジュールは、プロセッサの制御下で、メモリ内の命令を実行して、
-クライアントデバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
・前記チェックサム値と、を含む、受信することと、
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
-前記復号化されたコマンドデータを前記サーバの制御プロセッサに転送することと、を行うように構成される、通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、クライアントデバイスとサーバとの間の安全な通信の方法、及びそのような方法を実行するように構成された通信セキュリティモジュールに関する。
【背景技術】
【0002】
サイバーセキュリティ、具体的には、いくつかの異なるクライアントデバイスからコマンドメッセージを受信して実装するように構成されたネットワークデバイスのセキュリティは、進化し続ける技術分野である。サイバー攻撃がより巧妙になるのと同時に、サイバーセキュリティソフトウェア及びハードウェアは、一部のクライアントデバイスからのコマンドメッセージがMCUに到達することを許可し、他のクライアントデバイスからのコマンドメッセージを、悪意のある攻撃を表すためか、単に権限のないユーザから発信されたものであるためかに関係なく、ブロックするという基本的なニーズを満たすように進化している。
【0003】
ネットワークデバイスで利用されるセキュリティの最も一般的な形態は、ファイアウォールとして知られている。ファイアウォールは、プライベートネットワークに出入りする、又はプライベートネットワーク内のデータパケットを制限するコンピュータネットワークセキュリティシステム(又はモジュール)である。ファイアウォールは、所定のセキュリティルールセットに基づいてデータパケットをブロック又は許可するソフトウェア又は専用のハードウェアとソフトウェアのユニットを備え、典型的には、プライベートネットワークの内外を問わず、誰もが不正な通信に参加するのを防ぎ、悪意のある活動の防止を支援することを目的としている。したがって、ファイアウォールは、プライベートネットワーク内で許可及び禁止されたデータパケット(通常はWebアクティビティ)の移動を管理する「ゲートウェイ」と見なすことができる。
【0004】
近年、パブリック及びプライベートの通信ネットワークを介してデバイス間で伝送されるデータの追加の保護層として、アプリケーションで暗号化形式を使用することが一般的になっている。例えば、近年、電子メールアプリケーションでは、セキュアソケットレイヤ(又はSSL)として知られている以前のバージョンから派生した暗号化ポリシであるトランスポートレイヤセキュリティ(TLS)が使用されることが特に多い。TLSを使用したデータ通信に参加するためには、送受信装置がセキュリティ証明書(信頼できる機関によって発行された)を有していなければならない。例えば、電子メールを送信する場合、意図された受信者は、そのセキュリティ証明書及び公開暗号化キーを送信者に送信する。送信者は、公開暗号化キーを使用してメッセージを暗号化し、暗号化されたメッセージを受信者デバイスに送信する。そして、受信者デバイスは、その秘密キーを使用してメッセージを復号化することができる。これは一般に、公開キー暗号(PKC)として知られており、サイバーセキュリティの当業者にはよく知られている。しかし、このタイプのセキュリティは、PKCプロトコルのサポートに必要な処理及びストレージのオーバヘッド、並びに追加の電力消費を、法外なものにしてしまうため、典型的には、単一の機能専用であり、別のデバイス(例えば、家庭用電子デバイス)に最も多く組み込まれるMCU(又はMPU)と共に使用するのに適されていない。また、受信者サーバがキー発行プラットフォームにアクセスできない場合、新しいクライアントデバイスはそのプラットフォームと通信できない。したがって、例えば、処理機能及び通信機能が制限されたIoTデバイスは、少数の指定されたクライアントデバイスからPKC暗号化データパケットを受信するように(理論的には)事前に構成できるが、他の未知のクライアントデバイスからそのようなデータパケットを受信することはできない。これにより、一部のアプリケーションに対するセキュリティの形態としてのPKCの有用性が制限される。
【0005】
別の既知のタイプのセキュリティプロトコルはHTTPSとして知られており、クライアント及びサーバがTCP接続を確立し、続いて、SSL/TLSハンドシェイクプロセスが行われ、最後に暗号化されたアプリケーションデータがクライアントとサーバとの間でやり取りされることが許可される。この場合も、サーバはクライアント認識型であり、区別するために有効なユーザ資格情報を記憶する必要がある。これらの初期証明書の検証は、認証局に対して実行しなければならず、また、アプリケーション自体の認証及び認可の方法も必要である。さらに、証明書は一定期間のみ有効であるため、サーバは証明書を定期的に更新しなければならない。したがって、サーバには、HTTPSを利用するためのインターネットアクセス及び適切なソフトウェア(及び処理機能)が必要である。
【0006】
さらに別の既知のセキュリティプロトコルはSSHであり、SSHでは、サーバがユーザに対して公開キー及び秘密キーの対を生成し、ユーザには秘密キーが与えられ、サーバはそのユーザの公開キーを記憶する。クライアントとサーバとの間で接続が開始されると、サーバはランダムメッセージを(クライアントに)送信する。クライアントは、そのサーバに対してそのユーザの秘密キーを使用してこのメッセージを暗号化し、暗号化されたメッセージがサーバに送信される。サーバは、ユーザの公開キーを使用して暗号化されたメッセージを復号化し、復号化されたメッセージと元のメッセージが一致した場合、認証に合格し、クライアント及びサーバは、そのセッション中に後続のすべてのメッセージを暗号化するために使用されるセッションキーに同意する。したがって、認証又は通信を行うことが可能になる前に、ユーザキー対を生成し、それらをクライアントと共有するプロセスが必要である。サーバはユーザキー対を記憶する必要があり、新しいセッションごとに新しいキーが必要になる。したがって、サーバは新しいクライアントからの通信をサポートするためにネットワーク接続性を必要とするだけでなく、多数のクライアントをそれぞれのキー対と共にサポートする必要がある場合、膨大なストレージオーバヘッドが存在する。
【0007】
外部アイデンティティプロバイダ(EIP)による認証を伴うものなど、他の既知のセキュリティプロトコルもあるが、これらのタイプのプロトコルは、上記で説明したものと同様、ユーザによって送信されたトークンが有効であることを検証するために、認証サーバへのアクセスを許可するインターネット接続を必要とする。例えば、4G及び5G通信ネットワークは、通信システム内の基地局及びユーザ機器によって使用される共有キー又は「公開」キーを発行可能な専用のセキュリティアンカー機能(SEAF)を利用する。例えば、欧州特許第3576446号には、ハンドオーバコマンドがUEに送信され、それにより、通信ネットワーク内の2つの異なる通信システム間のAMF間ハンドオーバが実現されるセキュリティ実装方法が記載されている。ハンドオーバコマンドメッセージには、対象となる通信システムに関連するセキュリティコンテキストデータが付随され、セキュリティキーのライフタイム、キーインデックス、又はキー計算に関連するカウンタを含む、いくつかの特性のうちのいずれか1つ又は複数であってもよい。ハンドオーバコマンドメッセージはまた、特定のキーを含み得る。UEは、中間キー及び対象となる通信システムのセキュリティコンテキストを使用してセキュリティキーを生成する。最終的な目標は、UEがSEAFキー及びセキュリティコンテキストデータを使用してセキュリティキーを生成することであり、そのセキュリティキーは本質的に、ハンドオーバが発生した後にそのUEが通信するための「秘密」キーであるため、ハンドオーバコマンドは暗号化されないし、暗号化される必要もない。実際、この方法は上記で説明したSSH方法と似ており、上記で説明した技術的課題を解決するものではない。専用のSEAFをサポートするために必要なオーバヘッドは、多くの(ほとんどではないしにしても)アプリケーションにとって法外なものであるため、小規模な通信ネットワークには非常に不適当である。ハンドオーバコマンドメッセージの前に必要な通信の数、この方法を(意図どおりに)大規模に実装するために必要な処理及びストレージのオーバヘッド、及びハンドオーバコマンドメッセージを処理するためのネットワーク接続の必要性はすべて、このセキュリティ方式を大規模な通信ネットワーク以外での使用に適用させることを妨げる技術的な欠点である。さらに、ハンドオーバコマンドは、指定された形式及び指定されたプロトコルに従って生成される必要がある。説明した方法は、UEが任意の形式で、任意のプロトコルを使用して暗号化されたコマンドメッセージを受信できるようにすることには適していない。これは、4G eNBから5G gNBへのUEのハンドオーバを可能にするように特別に設計されている。
【0008】
産業用及びIoTアプリケーション向けのMCUは必然的に電力及び機能が制限されており、上記で説明したセキュリティプロトコルのいずれかを利用するにも容易に適応しないことは、当業者には自明であろう。
【0009】
技術の現状では、このようにサーバとの間のデータ通信の制御を試みられるのは従来のファイアウォールのみである。従来のファイアウォール配置では、クライアントは宛先アドレス、プロトコル、宛先ポートを含むデータのパケットを構築する。ファイアウォールは、どのクライアントアドレス、ポート及びプロトコルがどのアドレス、ポート、及びプロトコルにメッセージを送信できるかを決定する許可済みルールで構成される。パケットが許可済みルールに一致する場合、パケットは送信される。多くの場合、データの暗号化は全くされておらず、暗号化されている場合でも、それはクライアント及びサーバの責任であり、上記で説明した方法(すなわち、SSL/TLS又はPKC)のいずれかを使用してキーを事前同意又は交渉することによって実現され、受信デバイスにはインターネットにアクセスできること、並びに生成及び記憶する必要があるすべてのユーザキーを管理するための十分なストレージ及び処理のオーバヘッドが必要である。
【0010】
しかし、通常は(電力を節約するため)オフラインになり、(コスト及びある程度にサイズを最小限に抑えるため)最小限のストレージ及び処理能力を有する傾向がある、IoTデバイスの実装がますます広まっていることを踏まえて、発明者は、サーバによって受信されたデータパケットを認証する新しい方法の必要性を認識し、この方法では、サーバがインターネットに接続する必要がなく、クライアントデバイスから(Bluetooth(登録商標)、SERIAL、HTTP、UARTなどを含むあらゆる手段によって)データパケット(コマンドメッセージ)を受信したときに新しいクライアントを認証するためのいかなる外部介入も必要がなく、クライアントの個別のキーを記憶することなく、クライアント又はクライアントが送信を許可されているデータに関するルールを記憶する必要もなく、無制限の数の異なるクライアントからのコマンドメッセージを処理できる。したがって、本発明の態様の目的は、これらの技術的課題の少なくとも1つ又は複数に対処することである。
【発明の概要】
【0011】
本発明の第1の態様によれば、制御ユニットを動作させるように構成されたコマンドデータを含むコマンドデータパケットを生成及び送信するための、ユーザ制御デバイス内で実行されるコンピュータ実装方法が提供され、コマンドデータは、それに間連付けられた複数の属性を有し、方法は、前記ユーザ制御デバイスのプロセッサの制御下で、
【0012】
-リモートキー発行プラットフォームから時限暗号化キーを要求し、前記キー発行プラットフォームから前記時限暗号化キーを受信することであって、前記時限暗号化キーは、前記コマンドデータに関連付けられた前記属性の特定の1つ又は複数に従って選択されたベースキーを使用して、前記キー発行プラットフォームによって生成される、受信することと、
【0013】
-前記キー発行プラットフォームから前記時限暗号化キーと共に、ベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
【0014】
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
【0015】
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
【0016】
・ベースキーを選択するためにキー発行プラットフォームによって使用される特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0017】
・前記チェックサム値と、を含み、
【0018】
前記コマンドペイロードが少なくとも暗号化されたコマンドデータを備える、
【0019】
構築することと、
【0020】
-前記コマンドデータパケットを前記制御ユニットに送信することと、を備える。
【0021】
一実施形態では、方法は、前記キー発行プラットフォームから前記時限暗号化キーと共にキーの有効期限を受信し、それを表すデータを前記コマンドデータパケットの前記プレーン値ヘッダに含めることをさらに備え得る。
【0022】
任意選択で、時限暗号化キーを要求することは、コマンドデータパケットの送信が必要とされるユーザ制御デバイス、及び制御ユニットを表すデータを含む要求データを生成することと、前記要求データを前記リモートキー発行プラットフォームに送信することとを備え得る。
【0023】
一実施形態では、コマンドデータパケットを構築することは、
【0024】
-前記コマンドデータ及びそれに関連付けられた複数の属性を備えるプレーン値データパッケージを構築し、前記複数のプレーン値属性に関して署名を生成し、署名付きデータパッケージを生成するために、前記署名を前記プレーン値データパッケージに付加することと、
【0025】
-前記時限暗号化キーを使用して、前記署名付きデータパッケージを暗号化し、暗号化されたコマンドペイロードを生成することと、
【0026】
-前記暗号化されたコマンドペイロードを前記プレーン値ヘッダに付加することと、を備え得る。
【0027】
プレーン値ヘッダは、前記ユーザ制御デバイスのリアルタイムクロックから抽出されたコマンド時間を表すデータ、及び前記ユーザ制御デバイスのユーザを表す所有者IDを含み得る。
【0028】
本発明の別の態様によれば、セキュリティモジュール及び制御プロセッサを含む制御ユニットで実行され、ユーザ制御デバイスから受信した有効なコマンドデータを受信し、検証し、実装するためのコンピュータ実装方法が提供され、前記セキュリティモジュールは、内部に複数のベースキーを記憶しており、方法は、前記セキュリティモジュールのプロセッサの制御下で、
【0029】
-ユーザ制御デバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
【0030】
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0031】
・前記チェックサム値と、を含む、受信することと、
【0032】
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
【0033】
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
【0034】
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
【0035】
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
【0036】
-前記復号化されたコマンドデータを前記制御プロセッサに転送することと、を備える。
【0037】
一実施形態では、方法は、前記選択されたベースキー及び前記チェックサム値を使用して、前記暗号化キーを計算することをさらに備え得る。
【0038】
プレーン値ヘッダは、前記コマンドデータパケットに関連付けられたキーの有効期限及び/又は時刻を表すデータを含み得、方法はさらに、前記キーの有効期限を、前記セキュリティモジュールのリアルタイムクロックに保持されている日付及び/又は時刻と照合することを備える。
【0039】
一実施形態では、前記コマンドデータ属性の1つはコマンド時間であり得、それを表すデータはコマンドデータパケットのプレーン値ヘッダに含まれ得、方法は、前記コマンド時間を、以前に記憶されたコマンド時間及び/又は前記制御ユニットのリアルタイムクロックによって保持される時間と比較して、コマンド時間が有効であるかどうかを判定し、有効でない場合には、前記コマンドデータパケットを破棄することをさらに備え得る。
【0040】
本発明のさらなる態様によれば、1つ又は複数の制御ユニットに対して1つ又は複数のリモートユーザ制御デバイスによって使用される時限暗号化キーを生成するためのキー発行プラットフォームで実行されるコンピュータ実装方法が提供され、方法は、キー発行プラットフォームのプロセッサの制御下で、
【0041】
-リモートユーザ制御デバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記ユーザ制御デバイス及び前記ユーザ制御デバイスがコマンドを発行することを望む制御ユニットを表すデータを含む、受信することと、
【0042】
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
【0043】
-ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
【0044】
-前記選択されたベースキーを使用して暗号化キーを計算することと、
【0045】
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記ユーザ制御デバイスに送信することとを備える。
【0046】
一実施形態では、暗号化キーは、前記ベースキー及び前記チェックサム値を使用して計算され得る。
【0047】
本発明の別の態様によれば、制御ユニットチップ上に統合するためのコンピュータ実装セキュリティモジュールが提供され、セキュリティモジュールは、プロセッサ及びメモリ並びに記憶された複数のベースキーを有し、プロセッサの制御下で、メモリに記憶された命令を実行して、
【0048】
-ユーザ制御デバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
【0049】
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0050】
・前記チェックサム値と、を含む、受信することと、
【0051】
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
【0052】
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
【0053】
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
【0054】
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
【0055】
-前記復号化されたコマンドデータを制御ユニットの制御プロセッサに転送することと、を行うように構成される。
【0056】
本発明の別の態様は、制御プロセッサ及びセキュリティモジュールを有する集積回路を備えるコンピュータ実装制御ユニットを提供し、セキュリティモジュールはプロセッサ、メモリ、及び記憶された複数のベースキーを有し、プロセッサの制御下で、メモリに記憶された命令を実行して、
【0057】
-ユーザ制御デバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
【0058】
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0059】
・前記チェックサム値と、を含む、受信することと、
【0060】
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
【0061】
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
【0062】
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
【0063】
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
【0064】
-前記復号化されたコマンドデータを前記制御プロセッサに転送することと、を行うように構成される。
【0065】
本発明のさらに別の態様は、プロセッサ及びメモリを備え、プロセッサの制御下で、メモリに記憶された命令を実行して、
【0066】
-リモートキー発行プラットフォームから時限暗号化キーを要求し、前記キー発行プラットフォームから前記時限暗号化キーを受信することであって、前記時限暗号化キーは、前記コマンドデータに関連付けられた前記属性の特定の1つ又は複数に従って選択されたベースキーを使用して、前記キー発行プラットフォームによって生成される、受信することと、
【0067】
-前記キー発行プラットフォームから前記時限暗号化キーと共に、ベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
【0068】
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
【0069】
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
【0070】
・前記ベースキーを選択するためにキー発行プラットフォームによって使用される特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0071】
・前記チェックサム値と、を含み、
【0072】
前記コマンドペイロードが、少なくとも前記暗号化されたコマンドデータを備える、
【0073】
構築することと、
【0074】
-前記コマンドデータパケットを前記制御ユニットに送信することと、を行うように構成される、コンピュータ実装ユーザ制御デバイスを提供する。
【0075】
本発明のさらなる態様によれば、プロセッサ及びメモリを備え、プロセッサの制御下で、メモリ内の命令を実行して、
【0076】
-リモートユーザ制御デバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記ユーザ制御デバイス及び前記ユーザ制御デバイスがコマンドを発行することを望む制御ユニットを表すデータを含む、受信することと、
【0077】
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
【0078】
-ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
【0079】
-前記選択されたベースキーを使用して暗号化キーを計算することと、
【0080】
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記ユーザ制御デバイスに送信することとを行うように構成されるコンピュータ実装暗号キー発行プラットフォームが提供される。
【0081】
本発明の一態様は、実質的に上記で説明した方法を実施するための命令を備えるコンピュータプログラム製品にまで及ぶ。
【0082】
本発明の別の態様は、実質的に上記で説明した方法を実施するための命令を備えるコンピュータプログラムにまで及ぶ。
【0083】
本発明の別の態様は、プロセッサによって実行されると、実質的に上記で説明した方法をプロセッサに実行させる命令を記憶する非一時的な記憶媒体にまで及ぶ。
【0084】
本発明のさらに別の態様によれば、クライアントデバイス、サーバ、及びキー発行プラットフォームを備える通信システムが提供され、サーバは、統合されたセキュリティモジュールを有し、クライアントデバイスは、指定された通信リンクを介してサーバに通信可能に接続可能であり、クライアントデバイスは、前記通信ネットワークを介してキー発行プラットフォームから暗号化キーを受信するための入力、及びキー発行プラットフォームに暗号化キー要求を送信するための出力、及びコマンドデータパケットを前記サーバに送信するための出力を有し、
【0085】
キー発行プラットフォームは、プロセッサの制御下で、メモリ内の命令を実行して、
【0086】
-前記クライアントデバイスから時限暗号化キーの要求を受信することであって、前記要求は、前記クライアントデバイス及び前記クライアントデバイスがコマンドを発行することを望むサーバを表すデータを含む、受信することと、
【0087】
-1つ又は複数の特定のコマンドデータ属性を決定し、記憶されたベースキーのセットから、前記1つ又は複数の特定のコマンドデータ属性に対応するベースキーを選択することと、
【0088】
-前記ベースキーを選択するために使用される前記特定の1つ又は複数のコマンドデータ属性を含む前記コマンドデータの複数の属性の少なくともサブセットを表すチェックサム値を計算することと、
【0089】
-前記選択されたベースキーを使用して暗号化キーを計算することと、
【0090】
-前記暗号化キーを、前記チェックサム値及び前記キーの有効期限を表すデータと共に、前記クライアントデバイスに送信することとを行うように構成され、
【0091】
クライアントデバイスは、プロセッサの制御下で、命令を実行して、
【0092】
-前記キー発行プラットフォームから前記時限暗号化キーと共に、ベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を含む、前記コマンドデータの前記複数の属性の少なくともサブセットを表すチェックサム値を受信することと、
【0093】
-前記時限暗号化キーを使用して、少なくとも前記コマンドデータを暗号化することと、
【0094】
-プレーン値ヘッダ及び暗号化されたコマンドペイロードを備えるコマンドデータパケットを構築することであって、前記プレーン値ヘッダが、
【0095】
・ベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0096】
・前記チェックサム値と、を含み、
【0097】
前記コマンドペイロードが、少なくとも暗号化されたコマンドデータを備える、
【0098】
構築することと、
【0099】
-前記コマンドデータを前記サーバに送信することと、を行うように構成され、
【0100】
サーバは、受信したコマンドデータパケットを前記セキュリティモジュールに転送するように構成され、セキュリティモジュールは、プロセッサの制御下で、メモリ内の命令を実行して、
【0101】
-クライアントデバイスからコマンドデータパケットを受信することであって、前記コマンドデータパケットはプレーン値ヘッダ及び暗号化されたコマンドペイロードを含み、前記コマンドペイロードは少なくとも時限暗号化キーによって暗号化されたコマンドデータを含み、前記プレーン値ヘッダが、
【0102】
・前記暗号化キーが生成されたベースキーを選択するためにキー発行プラットフォームによって使用される前記特定の1つ又は複数の属性を除く、前記コマンドデータの前記複数の属性の前記サブセットを表すデータと、
【0103】
・前記チェックサム値と、を含む、受信することと、
【0104】
-前記プレーン値ヘッダ及び前記チェックサム値に含まれる属性データを使用して、前記1つ又は複数の特定の属性を決定することと、
【0105】
-前記特定の1つ又は複数の属性に関連付けられた前記記憶されたベースキーからベースキーを選択することと、
【0106】
-前記選択されたベースキーを使用して、前記暗号化キーを計算することと、
【0107】
-前記暗号化キーを使用して、前記コマンドデータを含む前記コマンドペイロードを復号化することと、
【0108】
-前記復号化されたコマンドデータをサーバの制御プロセッサに転送することと、を行うように構成される。
【0109】
以下で明らかになるように、本発明の態様は、無制限の数のユーザ制御デバイスからのコマンドを識別するように構成され得るセキュリティ方法、デバイス、及びプロトコルを提供でき、ユーザ制御デバイスのそれぞれは、異なる期間に対して異なる許可及び/又はアクセスレベルを有し得、動作のためにネットワーク接続性は必要なく、証明書の検証又は証明書の記憶のために別のサービスに依存することもなく、コマンドはリアルタイムで処理できる。したがって、本発明の例示的な実施形態によるセキュリティモジュールはオフラインで動作し、無制限の数の未知のユーザに対応し、低電力及びストレージのオーバヘッドを必要とし、第三者との間でキーを共有する必要がなく、デフォルトのパスワードを必要としない。本発明のこれらの態様及び他の態様は、以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0110】
以下、本発明の実施形態を、単なる例示として、添付の図面を参照して説明する。
図1】本発明の例示的な実施形態による、統合セキュリティモジュールを有するサーバ又はMCU/MPUデバイスを含む通信システムを示す概略ブロック図である。
図2】本発明の例示的な実施形態による、統合セキュリティモジュールを有するMCU/MPUデバイスを含む制御システムを示す概略ブロック図である。
図3図2に概略的に示されるような制御システム内のユーザ制御デバイスで実行される例示的な方法の主なステップを示す概略プロセス図である。
図4図2に概略的に示されるような制御システム内のMCU/MPUデバイスの統合セキュリティモジュールで実行される例示的な方法の主なステップを示す概略プロセス図である。
図5A】本発明の例示的な実施形態による、キー発行プラットフォームにおける例示的なプロセスを示す概略図である。
図5B】本発明の例示的な実施形態による、ユーザ制御デバイスにおける例示的なプロセスを示す概略図である。
図5C】本発明の例示的な実施形態による、セキュリティモジュールにおける例示的なプロセスを示す概略図である。
図6A図5Aのプロセスに関連付けられたデータ変換を示す概略図である。
図6B図5Bのプロセスに関連付けられたデータ変換を示す概略図である。
図6C図5Cのプロセスに関連付けられたデータ変換を示す概略図である。
【発明を実施するための形態】
【0111】
マイクロコントローラ又はMCUは、プロセッサユニット、メモリモジュール、通信インターフェース、及び周辺機器からなる集積回路である。当業者に明らかなように、MCUとマイクロプロセッサ(動作するために必要な周辺機器も合わせて)との最大の違いは、MCUができる限り小型で、電力の使用を少なくするように設計されていることであり、典型的には、MCUは単一の機能専用であり、他のデバイス(例えば、家庭用電化製品)に組み込まれる場合が最も多い。したがって、これにより、MCUが組み込まれる製品のコスト及び複雑さが可能な限り低く抑えられる。MCUは、洗濯機、ロボット、ドローン、ラジオ及びゲームコントローラ、あらゆる種類のIoTデバイスを含む、幅広い用途で使用されている。
【0112】
MCUの欠点は、当然のことながら、セキュリティの本質的な欠如である。典型的には、MCUは単一の機能専用であり、電力の消費をできる限り少なくすることを目的としているため、多くの場合、何らかの特別な理由(例えば、リモートメンテナンスのため、など)で接続が必要でない限り、オフラインのままになるように設計されている。必要なRAM、ROM、周辺機器をすべて含む完全なデバイスは、単一の小型(低電力)マイクロチップ上に設けられ、これが可能になるのは、現在のアプリケーションに必要な限られた機能のみを有し、(多くの場合)それ以上の機能は有していないためである。したがって、MCUに関連付けられたセキュリティが存在しない場合が多く、これがますます問題になっている。(例えば)家庭内のWiFiルータに接続されているIoTデバイスは、IoTデバイスを介してネットワークに侵入したマルウェア及びウイルスによる攻撃の可能性が広がり、場合によっては、接続されている任意の他のデバイスからデータが盗まれたり破損したりする可能性があるため、ネットワーク(及び家庭内のそのネットワークに接続されている他のすべてのデバイス)にリスクをもたらす。一方で、MCUのプロセッサにファイアウォールなどの保護ソフトウェアをインストールして実行することは、そもそもの魅力である低コスト、低電力の要素を失うことなく困難である。
【0113】
そのような攻撃からコンピューティングデバイスを保護することを目的とした従来技術のセキュリティプロトコルは、多くの場合、コマンドメッセージを受信するたびに正しく機能するためにインターネットアクセスを必要とし、消費電力が大幅に増加し得る。そのようなプロトコルでは、ユーザキーの記憶も必要になり得、これによりデバイスのストレージオーバヘッド(及びサイズ)が増加し、デバイスと通信可能なクライアントの数が制限される。これには、最初にクライアントデバイスのキーを記憶するために、クライアントデバイスがサーバデバイスに事前に認識されている必要もあるため、特にインターネットアクセス及び大幅な処理のオーバヘッドを使用しない限り、事前に認識されていないクライアントデバイスの使用はサポートされない。以下に説明する方法及び装置は、これらの技術的課題に対処し、安全な通信方法及び通信セキュリティモジュールを提供し、その安全な通信方法及び通信セキュリティモジュールにより、インターネットアクセスを必要とせずに不正なデータパケットをブロックしながら(後で詳しく説明するように、そのようなデータパケットは任意の既知の通信手段によって送信できる)、個別のクライアントデバイス又はユーザキーを記憶する必要がなく、MCUの処理のオーバヘッド又は消費電力を増加させることはなく、事前に認識されていない(しかし、認可されている)クライアントデバイスからのコマンドメッセージをMCUが受信して処理できるようにする。
【0114】
図面の図1を参照すると、通信システムが示されている。通信システム100は、マイクロコントローラユニット(MCU)又はマイクロプロセッサユニット(MPU)104の形態の制御ユニット、キー発行プラットフォーム(KIP)106、及びユーザ制御デバイス102を備える。PCU/MPUデバイス104の製造中、PCU/MPUデバイス104及びキー発行プラットフォーム106は、例えば、インターネット通信プロトコルを実装するそれぞれの通信リンク110、114を通じて通信ネットワーク108(例えば、インターネット)を介して通信可能に結合される。MCU/MPUデバイス104及びKIP106は、移動セルラ通信ネットワークを含む公衆交換電話網(PSTN)などの他の通信ネットワークを通じて通信可能であってもよいが、明確にするために図1からは省略されている。MCU/MPUデバイス104の製造及び構成後、暗号化キーの更新が必要な状況を除いて、MCU/MPUデバイス104及びKIP106はそれ以上通信する必要はないと理解されたい。ユーザ制御デバイス102は、Bluetooth(登録商標)、HTTP、UART、SERIALなどを含む(しかし、決してこれらに限定されない)、任意の数の異なる通信プロトコルを実装する通信リンク111を介して、あるいは、例えば、インターネット通信プロトコルを実装する通信リンク112を介してMCU/MPUデバイス104と通信できるが、本発明はこの点に関して決して限定することを意図するものではない。実際、後述するように、ユーザ制御デバイス(複数可)は、アプリケーションに適切な通信プロトコルを介してMCU/MPUデバイス104と通信するように構成でき、どちらのデバイスもコマンドデータパケットの送受信及び検証のために通信ネットワーク108への接続を必要とせず、実際、これは本発明の実施例の重要な技術的利点の1つである。MCU/MPUデバイス104は、ユーザ制御デバイス102からのコマンドデータパケットを受信又は検証し、動作させるためのインターネット接続を必要としないため、追加の消費電力が最小限に抑えられ、セキュリティが向上することを意味し、これにより、本発明のいくつかの実施例は、とりわけIoTデバイスに非常に適したものとなる。ユーザ制御デバイス102は、例えば、インターネット通信プロトコルを実装する通信リンク110を介して、インターネットなどの通信ネットワーク108を介してKIP106と通信することができる。
【0115】
図1の例では、MCU/MPUデバイス104は、限定されないが、1つ以上のマイクロプロセッサ116と、MCU/MPUがプロセッサ116の制御下で実行する機能性を定義する実行可能命令120をロードするためのメモリ118(例えば、RAMなどの揮発性メモリ)とを含む、いくつかの個別の構成要素を備え得る。MCU/MPUデバイス104はまた、MCU/MPUデバイス104がいくつかの(典型的には、本質的にではないが近距離)通信プロトコルのうちの1つを介してユーザ制御デバイス102と通信することを可能にする入出力モジュール122を備える。ユーザインターフェース124は、ユーザ制御のために提供され、例えば、ディスプレイスクリーン、タッチスクリーン、キーパッド、又はモニタ、マウスタイプの入力デバイスもしくはコンピュータキーボードなどのコンピューティング周辺機器を備え得る。ユーザインターフェース124の機能性及び必要な周辺機器は、MCU/MPUデバイス104が利用されているアプリケーションに依存し、本発明は必ずしもこの点に関して限定することを意図するものではない。
【0116】
ユーザ制御デバイス102は、限定されないが、1つ以上のマイクロプロセッサ128と、実行可能命令132をロードするためのメモリ130(例えば、RAMなどの揮発性メモリ)とを含む、いくつかの個別の構成要素を備え得、実行可能命令132は、プロセッサ128の制御下でユーザ制御デバイス102が実行する機能性を定義する。ユーザ制御デバイス102はまた、ユーザ制御デバイス102が通信ネットワーク108を介して、また他の通信プロトコル(そのように構成されている場合)を介して通信することを可能にする入出力モジュール134も備える。ユーザインターフェース136は、ユーザ制御のために提供される。ユーザ制御デバイス102が、例えば、スマートフォン又はタブレットデバイスである場合、ユーザインターフェース136は、多くのスマートフォン及び他のハンドヘルドデバイスで普及しているようなタッチパネルディスプレイを有する可能性が高い。あるいは、ユーザ制御デバイスは、ユーザが制御データを入力することを可能にするために、キーパッド、キーボード、コンピュータマウスなどを備え得る。MCU/MPUデバイスは、セキュリティモジュール148をさらに備え、セキュリティモジュール148は、他のMCU/MPUデバイスコンポーネントと同じ集積回路上に統合され、プロセッサ116に通信可能に結合される。
【0117】
キー発行プラットフォーム(KIP)106は、限定されないが、1つ以上のマイクロプロセッサ138と、実行可能命令142をロードするためのメモリ140(例えば、RAMなどの揮発性メモリ)とを含む、いくつかの個別の構成要素を備え得、実行可能命令は、プロセッサ138の制御下でKIP106が実行する機能性を定義する。KIP106はまた、KIP106が通信ネットワーク108を介して通信できるようにする入出力モジュール(送受信機モジュールを含み得る)144を備える。状況によっては、任意の既知の入力手段によるユーザ制御のためにユーザインターフェース146が提供され得る。
【0118】
MCU/MPUデバイス104は、以下でより詳細に説明されるように、メインMCU/MPUが通信可能に結合される統合セキュリティモジュール148を含む。
【0119】
図面の図2を参照すると、通信セキュリティモジュール148は、MCU/MPUデバイス104に統合され、時限暗号化キーの生成及び着信データパケット(本明細書ではコマンドデータパケットとも呼ばれる)の検証に使用されるリアルタイムクロック149を含む。
【0120】
通信セキュリティモジュール148(本明細書では単にセキュリティモジュール148とも呼ばれる)は、複数(n)のベース暗号化キーを有する。これらのベース暗号化キーは、ユーザ制御デバイス102から受信したコマンドデータパケットのコマンドペイロードを復号化して検証するために使用される時限暗号化キーを生成するために使用される。
【0121】
KIP106は、MCU/MPUデバイス104(統合セキュリティモジュール148を含む)から物理的に分離されており、セキュリティモジュール148と同じn個のベース暗号化キー、及びリアルタイムクロック107を有する。KIP106によって保持されるベース暗号化キーは、MCU/MPUデバイス104に送信するデータを暗号化及び署名するためにユーザデバイス102によって使用される時限暗号化キーを生成するために使用される。暗号化されたデータパケットは、以下でより詳細に説明されるように、プレーン値ヘッダと、KIP106によって提供される時限暗号化キーを使用して暗号化されたデータを備えるコマンドペイロードと、を備える。しかし、MCU/MPUデバイス104のセキュリティモジュール148がコマンドメッセージを暗号化するために使用される時限暗号化キーを決定するには、ヘッダ内に提供されるプレーン値データで十分であり、したがって、プレーン値データでメッセージを復号化し、処理及び動作のためにプレーン値データをMCU/MPUに返すことが可能になることに留意することが重要である。セキュリティモジュール148は、検証及び復号化プロセス中にKIP106との通信を必要とせず、これは、MCU/MPUデバイス104に統合されたセキュリティモジュール148の追加の消費電力オーバヘッドが無視できることを意味し、また、本発明は、MCU/MPUデバイスが実際にインターネットに接続されることがほとんどないアプリケーションで使用できることも意味するため、IoTデバイス、車両セキュリティの入口セキュリティなどでの使用に最適である。
【0122】
図面の図3を参照すると、例示的なプロセスの最初の部分の概観が示されており、ステップ300において、ユーザ制御デバイス102は、コマンドメッセージをMCU/MPU装置104に送信することを望むため、暗号化キーの要求を(例えば、通信ネットワーク108を介して)KIP106に送信する。要求に応じて、KIPは、ユーザ制御デバイスによって許可されたコマンドタイプ又はアクセスレベルに特有の時限暗号化キーを生成する。実際、ベースキーは、KIP106が保持するユーザデータに基づく、ユーザによって許可されたアクセスレベルに基づいて、KIP106が保持するn個のベースキーから選択される。アクセスレベルは、暗号化キーが有効な期間を定義することもでき、これによりKIPがキーの有効期限を計算できるようになる。ユーザデータが検証され、アクセスレベルが決定されると、以下で説明されるように、ベースキーが選択され、例えば、ベースキー、並びにユーザ及びユーザが送信することを望むコマンドメッセージに関連付けられた選択されたデータに関してキー付きハッシュ関数を実行することによって、暗号化キーが生成され得る。
【0123】
より詳細には、暗号化キーは、選択されたベースキー及びコマンドメッセージに関連付けられた複数の異なる値の組み合わせから導出されるチェックサムに関してキー付きハッシュ関数を実行することによって生成される。例示的な実施形態では、チェックサムは、複数のそのような値の算術和であり得る。これらの値の1つは、アクセスレベル(又はアクセスレベル番号自体)を表すデータである。これらの値の他の値には、ユーザを表すデータ、コマンドメッセージの送信先となるMCU/MPUデバイスを表すデータ、及び/又はキーの有効期限日(又はそれを表すデータ)が含まれる可能性がある。場合によっては、後者の値のうち1つ又は2つだけを使用できるが、その場合、この例で提供されるセキュリティのレベルが低下する。追加のデータ項目を含めることもでき、これによりセキュリティが向上するが、複雑さ及び処理のオーバヘッドも増加する。
【0124】
一例では、ユーザID、(MCU/MPU)デバイスID、アクセスレベル番号及びキーの有効期限日が算術的に合計されてチェックサムが生成され、暗号化キーは、ベースキー(ユーザのアクセスレベルに従って選択される)及びチェックサムに関してキー付きハッシュ関数などの暗号アルゴリズムを実行することによってKIP106によって生成される。
【0125】
チェックサムを異なる方程式又はアルゴリズムを使用して計算できること、並びにこれに異なるデータを使用できることが考えられる。ただし、以下の重要な要素がある。
【0126】
・セキュリティモジュール148は、チェックサムがどのように計算されたかを認識していなければならない;
【0127】
・セキュリティモジュールは、ベースキーが選択される基準を認識していなければならない;及び
【0128】
・チェックサムには、ベースキーが選択された基準を表すデータが含まれているべきである。したがって、この例では、アクセスレベルに応じてベースキーが選択される。したがって、アクセスレベルを表すデータがチェックサムに含まれる。ただし、ベース暗号化キーが他の基準、例えば、コマンドタイプに基づいて選択される場合、それを表すデータをチェックサム計算に含める必要がある。
【0129】
この例では、様々な識別データの算術和を使用してチェックサムを生成する。これは最も単純な選択肢の1つであると考えられる。しかし、セキュリティモジュールが、それがどのようなものであるかを認識している限り、他の方程式及びアルゴリズムも考えられる。
【0130】
図面の図3に戻ると、ステップ302において、ユーザ制御デバイス102のセキュリティモジュール150は、暗号化キーを受信する。ステップ304において、ユーザ制御デバイスは、当業者には知られているような適切な暗号アルゴリズム及び暗号化キーを使用してコマンドメッセージを暗号化する。次いで、ステップ306において、ユーザ制御デバイス102はプレーン値ヘッダを構築する。プレーン値ヘッダには、セキュリティモジュール148が、ベース暗号化キーがKIP106によってどのように選択されたかを判断できるようにするのに十分なデータが含まれるべきであり、したがって、セキュリティモジュール148が、それ自体のストアから同じベース暗号化キーを選択し、暗号化キーを再作成し、したがって、コマンドメッセージを復号化する。したがって、一例では、プレーン値ヘッダは、ベース暗号化キーがどのように選択されたかを示す値を除く、チェックサムを生成するために使用されるすべての値を表すデータ項目、及びチェックサム自体を識別するデータも含み得る。一例では、プレーン値ヘッダには、以下でより詳細に説明されるように、セキュリティモジュール148がコマンドメッセージ(コマンドデータパケット)を受信したときに、それ自体のリアルタイムクロック149を使用して、いくつかの初期検証チェックをセキュリティモジュール148によって実行できるように、キーの有効期限及びコマンドが生成された時刻(CommandTime)を表すデータが含まれる。いくつかの例では、コマンドデータは、最終的に暗号化されるコマンドデータが、暗号署名が付加されるコマンドデータを検証する暗号署名を含むように、暗号化される前に署名され得る。
【0131】
ステップ308において、ユーザ制御デバイスは、暗号化されたコマンドデータをプレーン値ヘッダに付加してコマンドデータパケットを構築し、ステップ310において、ユーザ制御デバイスは、コマンドデータパケットをMCU/MPUデバイス104に送信する。
【0132】
オンチップセキュリティモジュール148は、MCU/MPUデバイス104に関して使用され、セキュリティモジュールとプロセッサ116との間の通信に関して検出されない改ざんがないことを保証している一方で、ユーザ制御デバイス102にはそのような専用モジュールは必要ないことが理解されるであろう。キー要求及びコマンドデータパケット構築プロセスは、ユーザ制御デバイス上で実行されるアプリ又は他のソフトウェアモジュール内で実装できる。多くのアプリケーションでは、キー要求及びコマンドデータパケット構築プロセスを、1つ又は複数の関連付けられたコントローラと通信するように構成されたダウンロード可能なアプリに実装できる。KIPとセキュリティモジュールの両方は、後で例示されるように、同じベースキーのセット、及びベースキーを選択して暗号化キーを生成するためのルールにアクセスできるとすると、多くの異なるアプリケーションに対して多くの異なる方法で本発明を実装することが可能である。
【0133】
図面の図4を参照すると、ステップ400において、MCU/MPUデバイス104は、その入出力モジュール122でコマンドデータパケットを受信し、それをすぐにセキュリティモジュール148に転送する。
【0134】
ステップ402において、セキュリティモジュールは、プレーン値ヘッダを使用して、コマンドメッセージと、特に、キーの有効期限及びコマンドが生成された時刻とに関していくつかの初期検証チェックを実行する。セキュリティモジュールは、キーの有効期限をそのリアルタイムクロック149によって保持されている日付と比較し、それによって、キーの有効期限が切れていると判定された場合、セキュリティモジュールはデータパケットを破棄する。同様に、CommandTimeがクロック149に保持されている現在時刻より遅い場合、又は現在時刻より数秒早い範囲外にある場合、パケットは破棄される。受信したコマンドデータパケットがこれらの初期検証チェックに合格した場合、ステップ404に進み、チェックサムを逆算する。チェックサム(又はチェックサムを表すデータ)と、チェックサムの計算に使用されるデータの1つを除くすべてのデータとがヘッダに含まれる。残りの値、すなわち、暗号化キーの生成に使用されるベースキーを決定するために使用される値が、欠落している唯一の部分である。欠落データを特定するための方程式又はアルゴリズムを逆算するいくつかの方法がある。一例では、欠落データは、例えば、昇順の整数1からxのセットに関して定義されるアクセスレベルであり得る。各アクセスレベルは、指定されたユーザがMU/MPUデバイスに関して有する制御の程度を表し得る。例えば、MCU/MPUデバイスが部屋の使用を制御するように構成されている場合、アクセスレベル1は照明及びドアの制御を表すことができ、アクセスレベル2はドア制御のみ、アクセスレベル3は、照明のみ、アクセスレベル4は、すべての部屋機能及び予約許可などを定義することができる。この場合、セキュリティモジュールは、セキュリティモジュールが認識しているデータ及び1からxまでの整数を使用してチェックサム計算を、単に複数回繰り返し実行し、結果のチェックサムがヘッダ内で識別されたチェックサムと一致するまで各繰り返しを通じてその整数を増分するように構成し得る。
【0135】
ステップ406において、ベースキーの選択を定義するデータが一致するチェックサムの計算から識別されると、そのベースキーは、セキュリティモジュール148によってそれ自体のベースキーのストアから選択され、KIP106によってユーザ制御デバイス102に対して生成された方法と同じ方法で、暗号化キーを生成するために使用され得る。
【0136】
ステップ408において、セキュリティモジュールはコマンドメッセージを復号化する。コマンドメッセージには、コマンド自体だけでなく、コマンドメッセージをさらに検証するために使用できるいくつかのデータバイトも含まれることが想定されている。例えば、コマンドメッセージは、コマンド自体の文字長を示すデータを含み得、さらにCommandTimeと、ユーザに関するデータ(すなわち、OwnerID)とも含み得る。その場合、コマンドメッセージが復号化されると、セキュリティモジュール148は、この追加データに対してさらなる検証を実行するように構成され得る。例えば、所有者IDがヘッダ内の所有者IDと一致しない場合、パケットは破棄される。コマンドメッセージのCommandTimeがヘッダ内のCommandTimeと一致しない場合、パケットは破棄される。署名がコマンドメッセージ内に存在する場合、再計算され得、その結果が復号化されたコマンドメッセージ内の署名と照合され、一致しない場合はパケットが破棄される。
【0137】
これらの追加の検証が正常に完了すると、セキュリティモジュールは、ステップ412において、CommandTimeと復号化されたCommandData自体のみを連結し、その連結されたデータを処理及び動作のためにMCU/MPUに送信するように構成され得る。
【0138】
ここで、図面の図5A図5B、及び図5Cを参照し、上記のすべての例及び実施形態をまとめて、完全なプロセス例をより詳細に説明する。このプロセスは、ユーザ制御デバイス102(MCU/MPUデバイス104には事前に認識されていない可能性がある)が、MCU/MPU104に特定のタスクを実行させるようにMCU/MPU104にコマンドを発行することを可能にするために、新しいキーを要求する要求データを生成するときに開始される。ユーザ制御デバイス102によってキー発行プラットフォーム(KIP)106に送信される要求データには、(少なくとも)OwnerID(ユーザ(又はユーザのデバイス)に一意に関連する識別子(例えば、番号)を備える)と、DeviceID(コマンドが発行されるMCU/MPUデバイスに一意に関連する識別子(例えば、番号)を備える)と、が含まれる。一例では、OwnerIDは、「1001」などのユーザに一意の4桁の数字であってもよく、DeviceIDは、「220280」など、MCU/MPUデバイス104に一意の6桁の数字であってもよいが、本発明は、この点に関して決して限定するものではない。要求データは、通信ネットワーク108を介してKIP106に送信される。
【0139】
上記で説明したように、KIP106はまずユーザの資格情報をチェックし、そのようなコマンドをMCU/MPUデバイス104に発行することが許可されていることを確認する。ユーザは、MCU/MPUデバイス104にアクセスするためのキーを取得するために、MCU/MPUデバイス104に関連付けられたサービスに事前登録することが要求され得、そのような登録のレベルにより、ユーザがMCU/MPUデバイス104に実行させることを許可されるタスクのタイプが定義され得る。
【0140】
KIP106及びMCU/MPUデバイス104は両方とも、いくつか(n個)のベース暗号化キーを有する。この例でのベース暗号化キーは、プロセス中により長い暗号化キーとして使用できる、単純な比較的短い英数字のコードワードである。複数のベースキーは、AccessLevel又は許可に関して階層的にラベル付けされており、各ベースキーは(MCU/MPUデバイス104への)異なるアクセスレベルに関連付けられており、この例では、各AccessLevelはそれぞれの1からxの整数で表される。したがって、各ベース暗号化キーはそれぞれのコマンドIDグループに関連付けられ、それにより各コマンドIDグループは、その許可レベルに対するベースキーで(MCU/MPUデバイス104によって)処理可能なコマンドのセットを識別する。KIP106は、ユーザ(暗号化キー要求内のOwnerIDデータによって定義される)がMCU/MPUデバイス104にコマンドを発行することが許可されていると判定すると、そのユーザのアクセス許可レベル(AccessLevel)及び暗号化キーが有効であるべき期間(KeyValidFor)を検索する。また、ステップ502において、ユーザのAccessLevelにリンクされたコマンドIDグループに対してベースキーを検索する。したがって、AccessLevel識別子(例えば、「1」)が、暗号化キーの生成に使用されるベース暗号化キー(例えば、「BaseKey1」)を定義することは明らかであろう。
【0141】
したがって、簡単な例では、BaseKey1はAccessLevel1にリンクされたベース暗号化キーであり、BaseKey1=「ABCD」であり、BaseKey2は、AccessLevel2にリンクされたベース暗号化キーであり、BaseKey2=「EFGH」であり、BaseKey3はAccessLevel3にリンクされたベース暗号化キーであり、BaseKey3=「IJKL」である。BaseKey及び関連付けられたAccessLevelは、KIP106及びMCU/MPUデバイス104のセキュリティモジュールに記憶される。
【0142】
KIP106は、ユーザ、そのAccessLevel、及び関連付けられたキーが有効であるべき期間(KeyValidForDays)を検証した後、ベース暗号化キーのセットからそのAccessLevelにリンクされているベースキーを検索する(ステップ502)。したがって、一例では、新しいユーザが検証され、AccessLevel1に対応する権限を有していると判定され、これにより、キーは30日間有効になる。KIP106は、BaseKey1(「ABCD」)を検索する。
【0143】
ステップ504において、KIP106はキーの有効期限日を計算する。
【0144】
(数1)
KeyExpDate=現在の日付(KIP106のRTC107から導出)+KeyValidForDays
YYYYMMDD+30
例えば、20210130+30
KeyExpDate=20210301
【0145】
次に、ステップ506において、要求データから導出されたいくつかのキーデータを本質的に組み合わせた、本明細書では「CheckSum(チェックサム)」として知られる値を計算し、そのキーデータの組み合わせを表す単一のデータ項目(この場合、数字)を生成する。一例では、キーデータは、DeviceID、KeyExpDate、AccessLevel、及びOwnerIDで構成され、一例では、すべて数字を含むこのキーデータが算術的に合計され(すなわち、単純に加算され)、すべてのキーデータの組み合わせを表す新しい数字が生成される。例えば、
【0146】
(数2)
Checksum=DeviceID+KeyExpDate+AccessLevel+OwnerID
例えば、220280+20210301+1+1001
Checksum=20431442
【0147】
最後に、ステップ508において、KIP108は、ユーザ制御デバイス102のための新しい暗号化キーを計算する。AccessLevelは「1」なので、BaseKey1が選択される(例えば、上記で参照した「ABCD」)。新しい暗号化キーは、上記のチェックサム及び選択されたベース暗号化キーに適用される暗号アルゴリズムを使用して生成される。一例では、キー付きハッシュアルゴリズムが使用され得る。具体例では、HMACSHA256アルゴリズムが使用され得る。HMACSHA256は、当業者にはよく知られているキー付きハッシュアルゴリズムであり、ハッシュベースのメッセージ認証コードとして暗号化の分野で一般的に使用されている。他の適切なHMAC実装には、HMACMD5及びHMACSHA1、並びに当業者には知られているその他のものが含まれる。この具体例では、HMACSHA256アルゴリズムが使用されるが、本発明はこの点に関して決して限定することを意図するものではない。
【0148】
さらに図6Aを参照すると、ステップ508において、KIP106は、以下のように、選択されたBaseKey及び計算されたチェックサムにHMACSHA256暗号化アルゴリズムを適用することによって、BaseKey「ABCD」及びチェックサムをユーザ制御デバイス要求に一意の新しい(秘密)暗号化キー(EncKey)に変換する。
【0149】
次に、KIP106は、計算されたEncKeyを、チェックサム及びKeyExpDateを表すデータと共に、通信ネットワーク208を介してユーザ制御デバイス102に送信し、EncKeyデータは、チェックサム及びKeyExpDateデータと共に、ユーザ制御デバイス102によって受信され、コマンドデータをMCU/MPUデバイス104に送信する必要があるまで(即時ではない場合)記憶される。
【0150】
暗号化キーは、ユーザ制御デバイスがコマンドデータをMCU/MPUデバイス104に送信することを望むときに検索され、使用される。例えば、MCU/MPUデバイス104が、ユーザ制御デバイスからの有効なコマンドメッセージに応答してドアのロックを選択的に解除する機能を有する電子ドアアクセス制御デバイスである場合、ユーザ制御デバイス102によって送信される必要があるコマンドデータは「OPEN」である可能性があるが、この要素はアプリケーションによって大きく異なり、本発明はこの点に関して決して限定することを意図するものではない。しかし、単に例として、理解を助けるために、コマンドデータ「OPEN」を実行するためにユーザ制御デバイス102によって送信されるコマンドパケットは、以下の属性を有し得る。
CommandTime(すなわち、リアルタイムクロック103から取得した、コマンドパケットが生成される時刻):YYYYMMDD HH:MM;例えば、20210222 12:30
CommandID(このコマンドに関連する一意の識別子):例えば、2000
CommandData例えば、「OPEN」
EncryptionIV例えば、1234567890123456
【0151】
当業者にはよく知られているように、EncryptionIVは暗号化初期化ベクトルであり、初期状態を提供するための、暗号アルゴリズム(すなわち、コマンドメッセージの暗号化に使用される暗号アルゴリズム)への単にランダムな、又は少なくとも一意の入力である。
【0152】
ここで図面の図5Bを参照すると、ステップ510において、ユーザ制御デバイス102は、CommandData、OwnerID、CommandTime、CommandLength、及びCommandIDを算術的に合計し、ステップ512において、その結果を使用して暗号署名を生成する(それによって、これらの属性及びデータ項目の合計結果に効果的に「署名」する)。暗号署名は、合計結果に関してキー付きハッシュアルゴリズム(当業者には他のアルゴリズムが知られているが、例えば、SHA256)を使用することによって生成される。したがって、さらに図面の図6Bを参照すると、ユーザ制御デバイスはまず、上記で参照したように、CommandData、OwnerID、CommandTime、CommandLength、及びCommandIDの値を備えるデータパッケージを構築する。次いで、これらのデータの合計に署名して署名ブロックを作成し(ステップ514)、その署名ブロックをデータパッケージに付加する。
【0153】
ステップ516において、署名ブロックを含むデータパッケージが暗号化されて、コマンド本体(又はコマンドデータパケットペイロード)が生成される。この段階では、任意の既知の暗号化方式を使用できる。例えば、AES暗号化方法は当業者にはよく知られており、明確にするために本明細書では詳細に説明されない。図示の例では、KIP106から受信した暗号化キー(EncKey)及び上記で説明した暗号化初期化ベクトルEncryptionIVを使用して、
【0154】
(数4)
OwnerID+CommandTime+CommandLength+CommandID+CommandData+Signature
【0155】
の連結に関してAES暗号化方式が実行されていると言えば十分である。結果として得られる以下のコマンドペイロード
【0156】
UjtLqGk75mLmdQVuisbFsYCofq+0TIcD3Ovgyzr2g8XgwYTM06qUbwJN00SaATvYMOvDX8X9aLiKcj34+v/3cpwYTie+SMKqgv2JR7vlE8YnkPbeUX4Ga+MyffF/IJGf
【0157】
は、プレーン値(暗号化されていないヘッダ)に付加されて(ステップ516において)、図6Bに示すように、コマンドデータパケットを構築する。プレーン値ヘッダは、キーの有効期限日(KeyExpDate)(KIP106から暗号化キーと共に受信される)、ステップ510において決定されたCommandTime、ユーザに固有かつ一意のOwnerID、Checksum(暗号化キー生成プロセスのステップ506においてKIP106によって計算され、暗号化キーと共にユーザ制御デバイスに提供される)、及びステップ510において取得されたCommandIDからなる。
【0158】
コマンドデータパケットは、MCU/MPUデバイス104に送信され、その入力122(図1)で受信される。コマンドデータパケットは、アプリケーションに実装された任意の通信ポリシを介してMCU/MPUデバイス104に送信できることを理解されたい。したがって、例えば、ユーザ制御デバイス102及びMCU/MPUデバイス104は、Bluetooth(登録商標)、WiFi、イーサネット、USB、UART、SERIALなどのプロトコルを介して相互に通信するように構成することができ、本発明は必ずしもこの点に関して限定することを意図するものではない。実際、本発明の主要な技術的利点の1つは、セキュリティモジュール148を含むMCU/MPUデバイス104は、未知のユーザ制御デバイス102からのデータパケットを受信して検証するためにインターネット(又は他の通信ネットワーク108)に接続する必要がないことである。したがって、MCU/MPUデバイス104の入力122で受信されたコマンドデータパケットは、オンチップ統合セキュリティモジュール148に直接転送される。
【0159】
次に、図面の図5Cをさらに参照すると、セキュリティモジュール148では、コマンドデータパケットが受信されると、ステップ518において、(暗号化されていない)ヘッダに含まれるプレーン値に関して初期検証プロセスが実行される。セキュリティモデル148は、自体のリアルタイムクロック149を使用して、現在の日付及び時刻を決定する。そして、まず、KeyExpDateが現在の日付と比較され、有効期限が切れている場合はコマンドデータパケットが破棄される。有効期限が切れていない場合は、CommandTimeをチェックする。CommandTimeが、受信した最後のコマンドデータパケットのCommandTimeより早い場合、又はリアルタイムクロック149によって保持される時間から数秒を超えている場合、コマンドデータパケットは破棄される。そうでなく、これらの検証が正常に完了した場合、プロセスはステップ520に進む。
【0160】
ステップ520において、セキュリティモジュール148はチェックサムを計算し、それによってコマンドペイロードの暗号化に使用される暗号化キーを決定する。セキュリティモジュールはプレーン値ヘッダデータから、
【0161】
OwnerID+KeyExpDateを判定できる。
【0162】
DeviceIDは、セキュリティモジュール148が統合されているMCU/MPUデバイス104に関連する一意の識別子であり、したがって、セキュリティモジュール148には既知である。プレーン値ヘッダにはチェックサム値も含まれる。したがって、この段階で、セキュリティモジュール148には、
【0163】
(数5)
OwnerID+DeviceID+KeyExpDate+[unknown]AccessLevel=Checksumは既知である。
【0164】
このことから、AccessLevelを決定できることは明らかである。一例では、セキュリティモジュールは、AccessLevel=1からxまでを繰り返す(ここで、xは、KIP106及びMCU/MPUデバイス104のセキュリティモジュール148の両方によって記憶されたBaseKeyに関連付けられた最も高いAccessLevelである)。チェックサム計算の各繰り返しにおいて、セキュリティモジュール148は、結果がコマンドデータパケットヘッダ内のチェックサム値と一致するかどうかを確認するためにチェックする。一致していない場合は、AccessLevel値を1ずつ増分し、AccessLevelのすべての可能な値が試行されて一致が見つからない(この場合、コマンドデータパケットは破棄される)か、又は一致が判定されてAccessLevel番号が発見されるまで、チェックサムの計算を繰り返す。
【0165】
AccessLevel番号が既知であると、関連するBaseKeyを検索でき(ステップ522において)、コマンドデータパケットペイロードの暗号化に使用される暗号化キーを上記で説明した方法、すなわち、
【0166】
(数6)
HMACSHA256(BaseKey、Checksum)=EncKeyで計算できる(ステップ523において)。
【0167】
次いで、ステップ524において、このように計算されたEncKey(プロセスの開始時にKIP106によってユーザ制御デバイス102に提供されたのと同じEncKey)を使用して、コマンドパケットペイロードが復号化される。
【0168】
さらに図6Cを参照すると、現在、復号化されているコマンドデータパケットペイロードは、図6Bに概略的に示される暗号化されていないコマンドペイロードと同様に、OwnerID、CommandTime、CommandLength、CommandID、CommandData及び署名を備える。
【0169】
ステップ526において、復号化されたコマンドペイロードに関して検証プロセスが実行される。まず、復号化されたコマンドペイロード内のOwnerIDが、プレーン値ヘッダ内のOwnerIDと照合される。一致しない場合、コマンドデータパケットは破棄される。また、復号化されたコマンドペイロード内のCommandTimeがプレーン値ヘッダ内のCommandTimeと照合され、再度一致しない場合は、コマンドデータパケットが破棄される。
【0170】
次に、図5Bのステップ512に関して上記で説明したように、署名が計算される。
【0171】
SHA256(OwnerID、CommandTime、CommandLength、CommandID、CommandData)
【0172】
ここで、OwnerID、CommandTime、CommandLength、CommandID、及びCommandDataはすべて、復号化されたコマンドペイロードから取得される。署名が復号化されたコマンドペイロードの署名と一致しない場合、コマンドデータパケットは破棄される。一方、この段階で一致する場合、コマンドデータパケットは復号化され、完全に検証される。
【0173】
CommandTimeは、リプレイ攻撃を防ぐために、また将来のコマンドデータパケットを検証する(ステップ518、図5C)ためにも使用されるために、MCU/MPUデバイス104のセキュリティモジュール148によって記憶される。
【0174】
ステップ528において、CommandID及びCommandDataが、復号化されたコマンドペイロードから抽出されて連結され、その結果が、処理及び動作のためにMCU/MPU116に返される。この具体例では、プロセッサ116に返されるデータは次の通りである。
【0175】
(数7)
CommandID=2000
【0176】
(数8)
CommandData=OPEN
【0177】
いくつかの例では、追加のセキュリティのために、セキュリティモジュール148は、EncKeyの対となるキーを保持し得る。この場合、上記で説明したように、コマンドデータパケットが復号化され完全に検証されると、セキュリティモジュール148は、EncKeyの対となるキーを保持しているかどうかをチェックし、保持していない場合には、ステップ528に進む。しかし、上記で説明したように、セキュリティモジュール148が対となるキーを有している場合でも、セキュリティモジュール148はCommandID及びCommandDataを抽出して連結するが、セキュリティモジュール148は、プロセッサ116に送信する前に連結されたデータに署名し、図6Cに概略的に示すように、プロセッサ116に送信する前に、(暗号化されていない)データに署名を追加する。この最後のステップは、データパケットがセキュリティモジュール148によって処理され検証されたことをプロセッサが検証できるようにする方法である。しかし、これは決して必須ではなく、一部のアプリケーションで必要な場合に、プロセスにセキュリティの追加層を加えるだけである。
【0178】
前述の説明から、本発明の方法及び装置は、本明細書では挙げきれないほどの様々な異なるプリケーションに使用できることが明らかであろう。ただし、完全を期すために、2つの潜在的なプリケーションについて以下に説明する。
【0179】
第1のアプリケーション例では、MCU/MPUデバイスは、24時間年中無休で予約して使用できるスポーツホール(例えば、スカッシュコート)のドアロック及び照明を制御するように構成された制御システムに組み込まれている。予約システムは自動化されており、ユーザのスマートフォン又はその他のハンドヘルドコンピューティングデバイス上のアプリによって提供される。制御システムのコントローラは、コマンドデータ「OPEN」に応答して電子ドアロックを解除し、照明をオンにするように構成されている。あるいは、2つの別個の制御システムを提供し、ドアのロックを解除するための第1の機能、照明をオンにするための第2の機能という別個の機能をそれぞれ実行させ得る。照明を制御するMCUは、照明を所定の期間、例えば、1時間、点灯し続け、タイマーが切れると自動的に消灯し、次のユーザに備える。スポーツホールが本館から遠すぎるため、制御システム(複数可)がスポーツクラブのWiFiにアクセスできない場合があり、代わりに、Bluetooth(登録商標)などの近距離通信プロトコルを介してユーザデバイスと通信するように構成され得る。
【0180】
ユーザがスポーツホールの時間枠を予約したい場合、ハンドヘルドデバイスのアプリを使用してコート及び空いている時間枠を選択する。アプリは、上記で説明した方法でKIPから暗号化キーを取得し、将来の使用のために記憶するように構成されている。暗号化キーは、ユーザによって予約された日付/時間帯に対してのみ有効であるという意味で、時間制限がある。したがって、KeyValidForの値はそれに応じて設定される。
【0181】
ユーザはスポーツホールの建物に到着したら、アプリを開き、予約したスポーツホール又は時間枠を選択し、「ボタン」を押すと、コマンドデータパケットが、(例えば、Bluetooth(登録商標)を介して)スポーツホールの外の壁にある制御ボックスに収容された制御システムの入力に送信される。制御システム内の統合セキュリティモジュールは、ユーザに暗号化キーを発行したKIPと同じベースキーのセットを保持する。
【0182】
アプリは、時間枠の予約時にKIPから受信した暗号化キーを使用して、上記で説明したようにコマンドデータパケットを構築し、そのコマンドデータパケット(上記で説明したように、暗号化されていないヘッダ及び暗号化されたコマンドペイロードを備える)を制御システムの入力に送信するように構成されている。制御システムのセキュリティモジュールは、上記で説明した方法でコマンドデータパケットを検証及び復号化し、成功した場合は、スポーツホールのドアのロックを解除するコントローラ(MCU)にコマンドデータを転送する。同じ制御システムが照明を制御しない場合、ユーザは別の制御システムを使用して照明をオンにするプロセスを繰り返す必要があり得る。
【0183】
ドアの制御システムは、ユーザがシステムにアクセスするために必要な、ユーザ又は時間に関する事前知識を必要としないため、インターネットにアクセスする必要もなく、様々な時間での様々な人の無制限の数の予約を管理することが可能である。
【0184】
別の例では、ドローンの使用を制御するための方法及び装置が想定されている。企業は、様々な時間及び様々な地域に展開するために、様々な場所に複数のドローンを保管し得る。ドローンが保管されている間は、ドローンを起動したり制御したりすることができてはならず、ドローンを紛失又は盗まれた場合でも、不正使用を防止することが不可欠である。さらに、異なるユーザが異なる時間に単一のドローンにアクセスする必要がある場合、又は複数のユーザが同時にドローンを制御する必要があるがキーを共有できない場合、ドローンをユーザに認識させる必要があり、通常はミッションごとにプログラミングが必要になる。
【0185】
しかし、これらの問題は、本発明の例示的な実施形態による方法及び装置を使用して回避することができる。各ドローンには、上記で一般的に説明したような統合セキュリティモジュールを含む制御システムが含まれている。例えば、ユーザXが2日以内にドローンAにアクセスでき、14日間はドローンAにアクセスして制御できることをリモートKIPに通知できる。2日後にユーザXがドローンへのアクセスを要求した場合、ユーザXはKIPから有効な暗号化キーを要求し、それを使用して有効なコマンドデータパケットをドローンの制御システムに送信し、それによって、14日間が経過するまで制御できるようになる。その時点で、KeyExpDateが経過し、制御システムのセキュリティモジュールはコマンドデータパケットを成功に検証できなくなる。ただし、期間を延長する必要がある場合は、KIPに通知され得、ユーザXは、新しい有効な暗号化キーを要求して、コマンドデータパケットを制御システムに送信し続けることができ、それによって、プログラムすることを必要とせずに継続的な操作が可能になる。
【0186】
結果として、各ドローンへのアクセスは、将来の指定された日付及び/又は期間中、指定されたユーザに制限することができる。上記で説明したように、ドローンを再プログラムすることなく、ユーザの操作期間を延長することも可能である。固定のキー/パスワードがないため、稼働中のドローンは安全なままである。ドローンが紛失又は盗まれた場合、それ以上キーが発行されないように、KIPはそのドローンを非稼働中としてマークすることができる。
【0187】
上記の説明から、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、記載された実施形態に修正及び変更を加えることができることが当業者には明らかであろう。
図1
図2
図3
図4
図5A
図5B
図5C
図6A
図6B
図6C
【国際調査報告】