(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-08-18
(45)【発行日】2025-08-26
(54)【発明の名称】暗号操作の動的最適化のためのシステム、方法及びコンピュータプログラム
(51)【国際特許分類】
H04L 9/14 20060101AFI20250819BHJP
【FI】
H04L9/14
【外国語出願】
(21)【出願番号】P 2024092975
(22)【出願日】2024-06-07
【審査請求日】2024-06-07
(32)【優先日】2023-10-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100167461
【氏名又は名称】上木 亮平
(72)【発明者】
【氏名】ケーレブ ムクガリー
【審査官】平井 誠
(56)【参考文献】
【文献】特開2003-069555(JP,A)
【文献】特開2019-096045(JP,A)
【文献】国際公開第2008/018318(WO,A1)
【文献】特表2010-507266(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00-5/00
H04L 9/00-40
(57)【特許請求の範囲】
【請求項1】
コンピュータ実行可能な命令を記憶するメモリストレージと、
前記メモリストレージに通信可能に結合された少なくとも1つのプロセッサと、
を備えるシステムであって、
前記少なくとも1つのプロセッサは、
1つまたは複数種類の暗号操作を、前記システムのソフトウェア
、前記システムのハードウェア、および前記ソフトウェアと前記ハードウェアとの組み合わせで実行するための時間量を決定し、
前記1つまたは複数種類の暗号操作のそれぞれについて、前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための前記決定された時間量に基づいて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを決定するための前記命令を実行するように構成され
、
前記時間量は、複数のサイズの入力データに対して、前記1つまたは複数種類の暗号操作のそれぞれについて決定され、
前記少なくとも1つのプロセッサは、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記システムの前記ソフトウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、前記ハードウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、前記ソフトウェアおよび前記ハードウェアの組み合わせで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを比較し、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかを、前記第1の時間量、前記第2の時間量、および前記第3の時間量のうちのどれが最低値を有するかに基づいて決定することによって、
前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを決定するための前記命令を実行するように構成される、
システム。
【請求項2】
前記1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を備える、
請求項1に記載のシステム。
【請求項3】
前記少なくとも1つのプロセッサは、
前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかどうかの決定の結果を記憶するための前記命令を実行するようにさらに構成される、
請求項
1又は2に記載のシステム。
【請求項4】
前記少なくとも1つのプロセッサは、
少なくとも前記暗号操作の種類、入力データのサイズ、および前記記憶された結果に基づいて、前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの前記組合せのいずれで暗号操作を実行するかどうかを決定するための前記命令を実行するようにさらに構成される、
請求項
3に記載のシステム。
【請求項5】
前記少なくとも1つのプロセッサは、
高信頼実行環境(TEE)の下で、前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せで暗号操作を
さらに実行するための前記命令を実行するよう
に構成される、
請求項1又は請求項2に記載のシステム。
【請求項6】
システムのソフトウェア、前記システムのハードウェア、および前記ソフトウェアと前記ハードウェアとの組み合わせで1つまたは複数種類の暗号操作を実行するための時間量を決定することと、
前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための前記決定された時間量に基づいて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを、前記1つまたは複数種類の暗号操作のそれぞれについて決定することと、
含
み、
前記時間量は、複数のサイズの入力データに対して、前記1つまたは複数種類の暗号操作のそれぞれについて決定され、
前記1つまたは複数種類の暗号操作のそれぞれが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを決定することは、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記システムの前記ソフトウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、前記ハードウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、前記ソフトウェアおよび前記ハードウェアの組み合わせで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを比較することと、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかを、前記第1の時間量、前記第2の時間量、および前記第3の時間量のうちのどれが最低値を有するかに基づいて決定することと、
を含む方法。
【請求項7】
前記1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を含む、
請求項
6に記載の方法。
【請求項8】
前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかどうかの決定の結果を記憶することをさらに含む、
請求項
6又は7に記載の方法。
【請求項9】
少なくとも前記暗号操作の種類、入力データのサイズ、および前記記憶された結果に基づいて、前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの前記組合せのいずれで暗号操作を実行するかどうかを決定することをさらに含む、
請求項
8に記載の方法。
【請求項10】
高信頼実行環境(TEE)の下で、前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せで暗号操作を
さらに実行すること
を含む、
請求項
6又は7に記載の方法。
【請求項11】
少なくとも1つのプロセッサによって実行可能な命令を記録した非一時的コンピュータ可読記録媒体であって、
前記少なくとも1つのプロセッサに、
1つまたは複数種類の暗号操作を、システムのソフトウェア、前記システムのハードウェア、および前記ソフトウェアと前記ハードウェアとの組み合わせで実行するための時間量を決定することと、
前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための前記決定された時間量に基づいて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを、前記1つまたは複数種類の暗号操作のそれぞれについて決定することと、
を含む方法を実行させ
、
前記時間量は、複数のサイズの入力データに対して、前記1つまたは複数種類の暗号操作のそれぞれについて決定され、
前記1つまたは複数種類の暗号操作のそれぞれが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組み合わせのいずれで実行されるべきかを決定することは、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記システムの前記ソフトウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、前記ハードウェアで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、前記ソフトウェアおよび前記ハードウェアの組み合わせで前記1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを比較することと、
前記複数のサイズの入力データのそれぞれに対して、前記1つまたは複数種類の暗号操作のそれぞれについて、前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかを、前記第1の時間量、前記第2の時間量、および前記第3の時間量のうちのどれが最低値を有するかに基づいて決定することと、
を含む、
非一時的コンピュータ可読記録媒体。
【請求項12】
前記1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を含む、
請求項
11に記載の非一時的コンピュータ可読記録媒体。
【請求項13】
前記1つまたは複数種類の暗号操作のそれぞれ1つが前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの組合せのいずれで実行されるべきかどうかの決定の結果を記憶することをさらに含む、
請求項
11又は12に記載の非一時的コンピュータ可読記録媒体。
【請求項14】
少なくとも前記暗号操作の種類、入力データのサイズ、および前記記憶された結果に基づいて、前記ソフトウェア、前記ハードウェア、または前記ソフトウェアと前記ハードウェアとの前記組合せのいずれで暗号操作を実行するかどうかを決定することをさらに含む、
請求項
13に記載の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例としての実施形態と整合するシステム、方法及びコンピュータプログラムは、暗号操作の動的最適化のためのシステム、方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
暗号操作は、暗号アルゴリズムを使用して、データ暗号化、認証、およびデジタル署名のために実行される操作を指し得る。従来技術では、暗号操作は、専らソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで実行されるように事前構成され得る。
【0003】
しかしながら、従来技術における暗号操作を実行するための上記のアプローチは、少なくとも以下の欠点を有し得る。
【0004】
いくつかのシステムでは、いくつかの暗号操作は、ソフトウェアよりもハードウェアにおいてより速く実行される場合も、その逆となる場合もあり得る。例えば、いくつかの統合されたハードウェアアクセラレータ、ハードウェア特徴(hardware features)、およびサポート機能(support capabilities)を提供するシステムオンチップ(SoC:System On Chip)では、SoCの各ハードウェア特徴は、関連するハードウェアの異なる条件および機能に基づいて、異なるクロック速度で操作を実行することができる。したがって、そのようなSoCにおける大量のデータの暗号化などの計算集約的暗号操作(computationally intensive cryptographic operations)は、ソフトウェアで実行されるときよりもハードウェアで実行されるときの方が遅くなり得る。
【0005】
したがって、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを動的に決定することによって、暗号操作を動的に最適化する必要がある。
【発明の概要】
【0006】
本開示の例示的な実施形態は、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを動的に決定することによって、暗号操作を動的に最適化する。したがって、本開示の例示的な実施形態は、暗号操作の効率、速度、およびセキュリティを改善する。
【0007】
実施形態によれば、システムが提供される。システムは、コンピュータ実行可能な命令を記憶するメモリストレージと、メモリストレージに通信可能に結合された少なくとも1つのプロセッサとを含み得、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作を、システムのソフトウェア、システムのハードウェア、およびソフトウェアとハードウェアとの組み合わせで実行するための時間量を決定し、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つを実行するための決定された時間量に基づいて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを決定するための命令を実行するように構成され得る。
【0008】
実施形態によれば、1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を含み得る。
【0009】
実施形態によれば、時間量は、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作のそれぞれについて決定され得る。
【0010】
実施形態によれば、少なくとも1つのプロセッサは、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作のそれぞれについて、システムのソフトウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、ハードウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、ソフトウェアおよびハードウェアの組み合わせで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを比較し、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを、第1の時間量、第2の時間量、および第3の時間量のうちのどれが最低値を有するかに基づいて決定することによって、1つまたは複数種類の暗号操作のそれぞれ1つが、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを決定するための命令を実行するように構成され得る。
【0011】
実施形態によれば、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかの決定の結果を記憶するための命令を実行するようにさらに構成され得る。
【0012】
実施形態によれば、少なくとも1つのプロセッサは、少なくとも暗号操作の種類、入力データのサイズ、および記憶された結果に基づいて、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを決定するための命令を実行するようにさらに構成され得る。
【0013】
実施形態によれば、少なくとも1つのプロセッサは、高信頼実行環境(TEE)の下で、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで暗号操作を実行するための命令を実行するようにさらに構成され得る。
【0014】
実施形態によれば、方法が提供される。方法は、システムのソフトウェア、システムのハードウェア、およびソフトウェアとハードウェアとの組み合わせで1つまたは複数種類の暗号操作を実行するための時間量を決定することと、1つまたは複数種類の暗号操作のそれぞれ1つを実行するための決定された時間量に基づいて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを1つまたは複数種類の暗号操作のそれぞれについて決定することと、含み得る。
【0015】
実施形態によれば、1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を含み得る。
【0016】
実施形態によれば、時間量は、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作のそれぞれについて決定され得る。
【0017】
実施形態によれば、1つまたは複数種類の暗号操作のそれぞれがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを決定することは、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作ごとに、システムのソフトウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、ハードウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、ソフトウェアおよびハードウェアの組み合わせで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを比較することと、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを、第1の時間量、第2の時間量、および第3の時間量のうちのどれが最低値を有するかに基づいて決定することと、を含み得る。
【0018】
実施形態によれば、方法は、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかどうかの決定の結果を記憶することをさらに含み得る。
【0019】
実施形態によれば、方法は、少なくとも暗号操作の種類、入力データのサイズ、および記憶された結果に基づいて、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを決定することをさらに含み得る。
【0020】
実施形態によれば、方法は、高信頼実行環境(TEE)の下で、ソフトウェアハードウェア、または前記フトウェアとハードウェアとの組合せで暗号操作を実行することをさらに含み得る。。
【0021】
実施形態によれば、非一時的コンピュータ可読記録媒体が提供される。非一時的コンピュータ可読記録媒体は、システムの少なくとも1つのプロセッサによって実行可能な命令を記録し、少なくとも1つのプロセッサに、システムのソフトウェア、システムのハードウェア、およびソフトウェアとハードウェアとの組み合わせで1つまたは複数種類の暗号操作を実行するための時間量を決定することと、1つまたは複数種類の暗号操作のそれぞれ1つを実行するための前記決定された時間量に基づいて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを、1つまたは複数種類の暗号操作のそれぞれについて決定することと、を含む方法を実行させる。
【0022】
実施形態によれば、1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作と、復号化アルゴリズムを実行する暗号操作と、ハッシュアルゴリズムを実行する暗号操作と、導出鍵アルゴリズムを実行する暗号操作と、生成アルゴリズムを実行する暗号操作と、を含み得る。
【0023】
実施形態によれば、時間量は、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作のそれぞれについて決定され得る。
【0024】
実施形態によれば、1つまたは複数種類の暗号操作のそれぞれがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせのいずれで実行されるべきかを決定することは、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作のそれぞれについて、システムのソフトウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、ハードウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、ソフトウェアおよびハードウェアの組み合わせで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量と、を比較することと、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを、第1の時間量、第2の時間量、および第3の時間量のうちのどれが最低値を有するかに基づいて決定することと、を含み得る。
【0025】
実施形態によれば、方法は、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかどうかの決定の結果を記憶することをさらに含み得る。
【0026】
実施形態によれば、方法は、少なくとも暗号操作の種類、入力データのサイズ、および記憶された結果に基づいて、ソフトウェア、ハードウェア、またはソフトウェアと前記ハードウェアとの組合せのいずれで暗号操作を実行するかどうかを決定することをさらに含み得る。
【0027】
追加的態様は、下記の記述において部分的に記述され、記述から部分的に明白であり、または、本開示の提示されている実施形態の実践により実現可能である。
【図面の簡単な説明】
【0028】
本開示の例示的な実施形態の特徴、利点および有意性は、同様の符号が同様の要素を示す添付の図面を参照して以下に説明される。
【0029】
【
図1】
図1は、1つまたは複数の実施形態による、暗号操作を最適化するための例示的なシステム構成のブロック図を示す。
【0030】
【
図2】
図2は、1つまたは複数の実施形態による、暗号操作最適化(COO)システムにおける例示的な構成要素のブロック図を示す。
【0031】
【
図3】
図3は、1つまたは複数の実施形態による、最適暗号操作のための例示的な方法のフロー図を示す。
【0032】
【
図4】
図4は、1つまたは複数の実施形態による、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで1つまたは複数種類の暗号操作を実行するための時間量を決定するための例示的な方法のフロー図を示す。
【0033】
【
図5】
図5は、1つまたは複数の実施形態による、暗号操作のタイプがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで実行されるべきかどうかを決定するための例示的な方法のフロー図を示す。
【0034】
【
図6】
図6は、1つまたは複数の実施形態による、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで暗号操作を実行するかどうかを決定するための例示的な方法のフロー図を示す。
【0035】
【
図7】
図7は、1つまたは複数の実施形態による、暗号操作最適化(COO)システム内の命令のフローの例を示す。
【発明を実施するための形態】
【0036】
例としての実施形態の下記の詳細な記述は付随する図面を参照する。異なる図面における同じ参照番号は、同じまたは類似の要素を特定できる。
【0037】
前述の開示は例示と記述を提供するが、すべてを網羅することは意図されておらず、また、実現形態を開示されている正確な形状に制限することも意図されていない。上記の開示を考慮すれば、修正および変形は可能であり、または、実現形態の実践により取得できる。更に、1つの実施形態の1つまたは複数の特徴またはコンポーネント(構成要素)は、他の実施形態(または、他の実施形態の1つ以上の特徴)に組み込むことができ、またはそれと組み合わせることができる。追加的に、下記に提供される操作の記述において、1つまたは複数の操作は省略でき、1つまたは複数の操作を追加でき、1つまたは複数の操作は、同時に実行ででき(少なくとも部分的には)、および1つまたは複数の操作の順序は切り替えることができるということは理解される。
【0038】
ここにおいて記述されているシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせの異なる形状において実現できるということは明白であろう。これらのシステムおよび/または方法を実現するために使用される実際の特殊化された制御ハードウェアまたはソフトウェアコードは実現形態に対する制限ではない。そのため、システムおよび/または方法の動作と挙動は、ここにおいては、特定のソフトウェアコードを参照せずに記述されている。ソフトウェアとハードウェアは、ここにおける記述に基づいてシステムおよび/または方法を実現するために設計できるということは理解される。
【0039】
特徴の特別な組み合わせが特許請求の範囲において詳述され、および/または、明細書において開示されているが、これらの組み合わせは、可能な実現形態の開示を制限することは意図されていない。実際、これらの特徴の多くは、本明細書において開示されていない方法で組み合わせることができる。
【0040】
ここにおいて使用されている如何なる要素、動作、または命令は、そのように明示的に記述されない限り、決定的または本質的であると解釈されるべきでない。また、ここにおいて使用されているように、冠詞「ある」(「a」及び「an」)は、1つまたは複数の項目を含むことが意図されており、「1つまたは複数」と交換可能に使用できる。1つの項目のみが意図されているときは、「1つの」という用語、または類似の言語が使用される。また、ここにおいて使用されているように、「有する」、「有している」、「含む」、「含んでいる」などのような用語は、制限されない、開かれた用語であることが意図されている。更に、「基づいて」というフレーズは、そうでないと明示的に記述されない限り「少なくとも部分的には~に基づいて」を意味することが意図されている。更に、「[A]と[B]の少なくとも1つ」または「[A]または[B]の少なくとも1つ」などのような表現は、Aのみ、Bのみ、またはAとBの両者を含んでいるものとして理解されるべきである。
【0041】
本開示の例示的な実施形態で提供されるシステム、方法、デバイスなどは、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで暗号操作を実行するかどうかを動的に決定することによって、暗号操作を動的に最適化する。
【0042】
実施形態によれば、システムは、暗号操作の種類を、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで実行するための時間量を決定し、前記暗号操作の種類がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定し、そのような決定の結果を記憶することができる。その後、システムは、記憶された結果に基づいて、同じ種類の暗号操作を、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行すべきかどうかを決定することができる。
【0043】
最終的に、本開示の例示的な実施形態は、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを動的に決定することによって、暗号操作を動的に最適化し、これにより、暗号操作の効率、速度、およびセキュリティが改善される。
【0044】
上記の例示的な実施形態の特徴、利点、および有意性は、本開示の一部にすぎず、網羅的であること、または本開示の技術的範囲を限定することを意図するものではないことが企図される。
【0045】
1つまたは複数の実施形態による、本開示の閾値調整システム(threshold tuning system)の特徴、コンポーネント、構成、動作、および実装形態のさらなる説明が、以下で提供される。
【0046】
<システム構成例>
図1は、1つまたは複数の実施形態による、暗号操作を最適化するための例示的なシステム構成100のブロック図を示す。
図1に示されるように、システム構成100は、暗号操作最適化(COO:Cryptographic Operation Optimization)システム110と、ハードウェア120と、ソフトウェア130と、を含む得る。
【0047】
COOシステム110は、システム、プラットフォーム、モジュールなどを含むことができ、それらは暗号操作を最適化するための1つまたは複数の操作または動作を実行するように構成され得る。実施形態によれば、COOシステム110は、ハードウェア120およびソフトウェア130に関連付けられ得る。実施形態によれば、COOシステム110、ハードウェア120およびソフトウェア130は、そのハードウェアおよびソフトウェア(すなわち、ハードウェア120およびソフトウェア130)を検証するために、暗号操作を実行することが可能な車両などの暗号操作を実行することが可能なシステムに含まれ得る。
【0048】
暗号操作を最適化するためのCOOシステム110によって実行可能な例示的な動作が、
図3から
図6を参照して以下に説明される。さらに、1つまたは複数の実施形態による、COOシステム110に含まれ得るいくつかの例示的なコンポーネントについて、
図2を参照しながら以下で説明する。
【0049】
図2は、1つまたは複数の実施形態による、COOシステム200における例示的なコンポーネントのブロック図を示す。COOシステム200は、
図1のCOOシステム110に対応することができ、したがって、COOシステム110およびCOOシステム200に関連する特徴は、他に明示的に記載されない限り、互いに同様に適用可能であり得る。
【0050】
図2に示すように、COOシステム200は、少なくとも1つの通信インタフェース210と、少なくとも1つのプロセッサ220と、少なくとも1つの入出力コンポーネント230と、少なくとも1つのストレージ240とを含むことができるが、COOシステム200は、本開示の技術的範囲から逸脱することなく、
図2に示すものよりも多いまたは少ない構成要素を含むことができ、および/または
図2に示すものとは異なる方法で構成することができることを理解することができる。
【0051】
通信インタフェース210は、COOシステム200のコンポーネントが互いに通信すること、および/または、有線接続、ワイヤレス接続、または有線接続とワイヤレス接続との組合せを介してなど、COOシステム200の外部の1つまたは複数のコンポーネントと通信することを可能にする、少なくとも1つのトランシーバのようなコンポーネント(たとえば、トランシーバ、別個の受信機および送信機、バスなど)を含み得る。
【0052】
たとえば、通信インタフェース210は、プロセッサ220をストレージ240に結合し、それによって、それらが1つまたは複数の動作を実行する際に、それらが通信し、互いと相互動作することを可能にし得る。
【0053】
1つまたは複数の実施形態によれば、通信インタフェース210は、COOシステム200(またはそこに含まれる1つまたは複数のコンポーネント)が1つまたは複数のソフトウェアアプリケーションと通信することを可能にする1つまたは複数のアプリケーションプログラミングインターフェース(APIs;Application Programming Interfaces)を含み得る。
【0054】
入出力コンポーネント230は、COOシステム200が情報を受信し、および/または出力情報を提供することを可能にする少なくとも1つのコンポーネントを含み得る。いくつかの実施形態では、入出力コンポーネント230は、少なくとも1つの入力コンポーネント(たとえば、タッチスクリーンディスプレイ、ボタン、スイッチ、マイクロフォン、センサなど)と、少なくとも1つの出力コンポーネント(たとえば、ディスプレイ、スピーカ、1つまたは複数の発光ダイオード(LED)など)とを含み得、それらの各々は、互いから分離され得ることが理解され得る。
【0055】
ストレージ240は、その中にデータ、情報、および/またはコンピュータ実行可能命令を記憶するのに適した1つまたは複数の記憶媒体を含むことができる。実施形態によれば、ストレージ240は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、および/またはプロセッサ220によって使用するための情報および/または指示を記憶する別のタイプの動的または静的記憶デバイス(たとえば、フラッシュメモリ、磁気メモリ、および/または光メモリ)など、少なくとも1つのメモリストレージを含み得る。追加的または代替的に、ストレージ240は、対応するドライブとともに、ハードディスク(たとえば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、および/または別のタイプの非一時的コンピュータ可読媒体を含み得る。
【0056】
実施形態によれば、ストレージ240は、生データ、メタデータなどの情報を記憶するように構成されてもよい。追加的または代替的に、ストレージ240は、プロセッサ220によって実行される1つまたは複数の操作に関連する1つまたは複数の情報を記憶するように構成され得る。たとえば、ストレージ240は、暗号操作を最適化するためにプロセッサ220によって実行される履歴操作や、プロセッサ220によって実行される操作の1つまたは複数の結果などを定義する情報を記憶し得る。さらに、ストレージ240は、暗号操作を最適化するのに必要なデータまたは情報を記憶し得る。例えば、ストレージ240は、少なくとも1つの較正ファイル(
図5を参照して以下で説明する)を記憶し得る。
【0057】
いくつかの実装形態では、ストレージ240は、複数の記憶媒体を含み得、ストレージ240は、冗長性を提供するために、および情報または関連データをバックアップするために、複数の記憶媒体中に情報の少なくとも一部分の複製またはコピーを記憶するように構成され得る。さらに、ストレージ240はまた、1つまたは複数のプロセッサ(たとえば、プロセッサ220)によって実行されているときに、1つまたは複数のプロセッサに、本明細書で説明する1つまたは複数の動作/操作を実行させる、コンピュータ可読またはコンピュータ実行可能命令を記憶し得る。
【0058】
プロセッサ220は、本明細書で説明する機能または操作を実行するようにプログラムまたは構成されることが可能な少なくとも1つのプロセッサを含み得る。たとえば、プロセッサ220は、少なくとも1つの記憶媒体またはメモリストレージ(たとえば、ストレージ240など)に記憶されたコンピュータ実行可能命令を実行し、それによって、本明細書で説明する1つ若しくは複数のアクションまたは1つ若しくは複数の操作を実行するように構成され得る。
【0059】
実施形態によれば、プロセッサ220は、1つまたは複数の操作を実行するための1つまたは複数の指示を定義する1つまたは複数の信号および/または1つまたは複数のユーザ入力を(たとえば、通信インタフェース210や、入出力コンポーネント230などを介して)受信するように構成され得る。さらに、プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組合せで実装され得る。例えば、プロセッサ220は、中央処理ユニット(CPU:Central Processing Unit)、グラフィック処理ユニット(GPU)、加速処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、および/または別のタイプの処理またはコンピューティング成分のうちの少なくとも1つを含み得る。
【0060】
実施形態によれば、プロセッサ220は、(信号またはデータなどの形態で)1つまたは複数の情報を収集、抽出、および/または受信し、受信された1つまたは複数の情報を処理して、それによって暗号操作を最適化するように構成され得る。
【0061】
プロセッサ220によって実行され得るいくつかの例示的な操作の説明が、
図3から
図6を参照して以下に提供される。
【0062】
<本開示における暗号操作を最適化するための操作例>
以下では、
図3から
図6を参照して、本開示のCOOシステムによって実行可能ないくつかの例示的な操作について説明する。
【0063】
図3は、1つまたは複数の実施形態による、最適暗号操作のための例示的な方法300のフロー図を示す。方法300における1つまたは複数の操作は、COOシステムの少なくとも1つのプロセッサ(たとえば、プロセッサ220)によって実行され得る。
【0064】
図3に示すように、操作S310において、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作を、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで実行するための時間量を決定するように構成され得る。
【0065】
実施形態によれば、暗号操作は、暗号化アルゴリズム(cryptographic algorithm)、復号化アルゴリズム、ハッシュアルゴリズム、導出鍵アルゴリズム、生成アルゴリズムなどの、の暗号アルゴリズム(encryption algorithm)の種類を実行する操作を指し得る。例えば、暗号アルゴリズムを実行する暗号操作は、入力データを受信し、そのような入力データを暗号化して、暗号化されたデータを提供することができる。
【0066】
したがって、実施形態によれば、1つまたは複数種類の暗号操作は、暗号化アルゴリズムを実行する暗号操作、復号化アルゴリズムを実行する暗号操作、ハッシュアルゴリズムを実行する暗号操作、導出鍵アルゴリズムを実行する暗号操作、生成アルゴリズムを実行する暗号操作などを含み得る。
【0067】
実施形態によれば、ソフトウェアおよびハードウェアは、COOシステムに関連付けられたソフトウェアおよびハードウェアを指し得、COOシステムは、暗号操作を実行することが可能なシステムに含まれ得る。例えば、COOシステムは、車両に含まれてもよく、ハードウェアは、車両内のシステムオンチップ(SoC:System on Chip)のコア処理ユニット(CPU:Core Processing Unit)やハードウェア機能などを指し得、ソフトウェアは、そのようなハードウェアにインストールされたソフトウェアライブラリなどを指し得る。そのような車両では、例えば、車両にインストールされたコンポーネントを有効にし、使用を確立するために、暗号操作が実行され得ることが理解され得る。したがって、少なくとも1つのプロセッサは、車両に現在インストールされているソフトウェアおよびハードウェアに基づいて、1つまたは複数種類の暗号操作を実行するための時間量を決定するように構成され得ることを理解されたい。
【0068】
暗号操作を実行する時間は、少なくとも暗号操作のタイプ、暗号操作によって処理される入力データのサイズ、および暗号操作が実行されている場所(すなわち、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せ)に応じて変化し得ることが理解され得る。
【0069】
したがって、実施形態によれば、少なくとも1つのプロセッサは、ソフトウェアで1つまたは複数種類の暗号操作のそれぞれを実行するための時間量、ハードウェアで1つまたは複数種類の暗号操作のそれぞれを実行するための時間量、およびソフトウェアとハードウェアとの組合せで1つまたは複数種類の暗号操作のそれぞれを実行するための時間量を決定するように構成され得る。実施形態によれば、時間量は、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作ごとに決定され得る。1つまたは複数種類の暗号操作を実行するための時間量を決定するための操作の例については、
図4を参照しながら以下で説明する。
【0070】
ソフトウェアとハードウェアとの組合せで実行される暗号操作のために、暗号操作の特定の機能が、必要に応じてソフトウェアとハードウェアとの間で分割され得ることが理解され得る。例えば、AES-CCMの場合、ブロックチェーン化は、ソフトウェアにおいて行われてもよく、一方、ハードウェアは、AESのために使用されてもよい。次いで、方法は操作S320に進む。
【0071】
操作S320において、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つを実行するための、決定された時間量に基づいて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、複数のサイズの入力データごとに、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つを実行するための、決定された時間量に基づいて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定するように構成され得る。
【0072】
例えば、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで暗号化アルゴリズムを実行する暗号操作を実行するための、決定された時間量(すなわち、操作S310で決定された時間量)に基づいて、少なくとも1つのプロセッサは、暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであると決定するように構成され得る。
【0073】
同様に、例えば、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せにおいて、10メガバイトサイズの入力データで暗号化アルゴリズムを実行する暗号操作を実行するための、決定された時間量(すなわち、操作S310で決定された時間量)に基づいて、少なくとも1つのプロセッサは、10メガバイトサイズの入力データで暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであると決定するように構成され得る。
【0074】
以下、
図5を参照して、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせにおいて、暗号操作の種類を決定するための操作の例を説明する。
【0075】
操作S320を実行すると、方法300は終了することができる。代替的に、方法300は、少なくとも1つのプロセッサが、少なくとも所定の時間にわたって、(操作S310において)1つまたは複数種類の暗号操作を実行するための時間量を決定することと、(操作S320において)暗号操作の種類をソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行すべきかを決定することとを、反復的に実行することができるように、操作S310に戻ることもできる。
【0076】
例えば、車両のハードウェアが変更されると、(以前のハードウェアに基づいて決定された)1つまたは複数種類の暗号操作を実行するための時間量が、新しいハードウェアを搭載した車両に対してはもはや正確ではない可能性がある。そのため、少なくとも1つのプロセッサは、(操作S310において)1つまたは複数種類の暗号操作を実行するための時間量を決定することと、(操作S320において)暗号操作の種類がソフトウェア、ハードウェア、またはソフトウェアとハードウェアの組み合わせのいずれで実行されるべきかを決定することと、を再開することができる。
【0077】
上記の説明は、暗号操作を実行するための速度(すなわち、時間量)の評価に関連するが、精度、衝突耐性などの暗号操作に関連する他のパラメータも評価され得ることが理解され得る。
【0078】
<本開示において1つまたは複数種類の暗号操作を実行するための時間量を決定するための例示的な操作>
図4は、1つまたは複数の実施形態による、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで1つまたは複数種類の暗号操作を実行するための時間量を決定するための例示的な方法400のフロー図を示す。方法400の1つまたは複数の操作は、方法300の操作S310の一部であり得、COOシステムの少なくとも1つのプロセッサ(たとえば、プロセッサ220)によって実行され得る。
【0079】
図4に示すように、操作S410において、少なくとも1つのプロセッサは、複数のテストを実行するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、ソフトウェアで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行し、ハードウェアで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行し、ソフトウェアとハードウェアとの組合せで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行することによって、複数のテストを実行するように構成され得る。
【0080】
実施形態によれば、1つまたは複数種類の暗号操作のそれぞれは、極小から極大までの範囲の異なるサイズのデータのブロックを用いて実行され得、ここで、均一なブロックサイズが最初に使用され、次いで、不均一なブロックサイズが次に使用される。実施形態によれば、複数のサイズの入力データは、段階的に増加する入力データのサイズを含むことができる(例えば、入力データは、1メガバイト、2メガバイト、3メガバイトなど、1メガバイト単位のサイズを有することができる)。
【0081】
例えば、少なくとも1つのプロセッサは、ソフトウェアにおいて1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作を実行し、次いで、1メガバイト単位で入力データのサイズを増加させながらそのプロセスを繰り返すように構成され得る。少なくとも1つのプロセッサは、暗号化アルゴリズムを実行する暗号操作を、ハードウェアにおいて、およびソフトウェアとハードウェアとの組合せにおいて、同様の方法で実行するように構成され得る。少なくとも1つのプロセッサは、次いで、1つまたは複数種類の暗号操作のそれぞれについてそのプロセスを繰り返し得る。次に、方法は操作S420に進む。
【0082】
少なくとも1つのプロセッサはまた、テストを実行するために必要とされる任意の追加のデータを取得するように構成され得ることが理解され得る。例えば、少なくとも1つのプロセッサは、システムのハードウェアによってどのような種類の暗号操作が実行され得るかを指定するパラメータを含むハードウェアアプリケーションプログラミングインターフェース(API)リストを指定する、構成ファイルを取得するように構成され得る。ハードウェアAPIリストは、ハードウェアの製造業者によって提供されてもよい。別の例として、少なくとも1つのプロセッサは、ソフトウェアライブラリがソフトウェアインストールの一部としてサポートするもののリストを取得するように構成され得る。
【0083】
操作S420において、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作を実行するための時間量を決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、ソフトウェアで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行するための時間量を決定し、ハードウェアで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行するための時間量を決定し、ソフトウェアとハードウェアとの組合せで複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれを実行するための時間量を決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、操作S410において、複数のサイズの入力データを用いて1つまたは複数種類の暗号操作のそれぞれ1つを実行するための時間量を測定することによって、複数のサイズを用いて1つまたは複数種類の暗号操作のそれぞれを実行するための時間量を決定するように構成され得る。
【0084】
例えば、少なくとも1つのプロセッサが、操作S410において暗号化アルゴリズムを実行する暗号操作をソフトウェアで1メガバイトの入力データで実行した後、少なくとも1つのプロセッサは、暗号化アルゴリズムを実行する前記暗号操作を、ソフトウェアで1メガバイトの入力データで実行するための時間量を測定するように構成され得る。少なくとも1つのプロセッサは、次いで、暗号化アルゴリズムを実行する暗号操作が、入力データのサイズを1メガバイト単位で増加させて実行される場合、および暗号化アルゴリズムを実行する暗号操作がハードウェアならびにソフトウェアとハードウェアとの組合せにおいて実行される場合に、そのプロセスを反復し得る。少なくとも1つのプロセッサは、次いで、1つまたは複数種類の暗号操作のそれぞれについてそのプロセスを繰り返し得る。
【0085】
実施形態によれば、少なくとも1つのプロセッサは、決定された時間量に基づいて1つ以上のグラフを作成(プロット)するように構成され得る。実施形態によれば、1つ以上のグラフは、1つまたは複数種類の暗号操作のそれぞれを実行するための時間量とソフトウェアにおける複数のサイズの入力データとの間の関係、1つまたは複数種類の暗号操作のそれぞれを実行するための時間量とハードウェアにおける複数のサイズの入力データとの間の関係、および1つまたは複数種類の暗号操作のそれぞれを実行するための時間量とソフトウェアとハードウェアとの組合せにおける複数のサイズの入力データとの間の関係を特定し得る。
【0086】
例えば、少なくとも1つのプロセッサは、ソフトウェアにおいて暗号化アルゴリズムを実行する暗号操作のためのグラフを作成するように構成され得、そのようなグラフは、入力データサイズに対して、ソフトウェアにおいて暗号化アルゴリズムを実行する暗号操作を実行するための時間量を示し得る。また、少なくとも1つのプロセッサは、プロットされたグラフの方程式を計算するように構成され得る。
【0087】
<本開示における、暗号操作の種類がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せでのいずれで実行されるべきかを決定するための例示的な操作>
図5は、1つ以上の実施形態による、暗号操作の種類がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定するための例示的な方法500のフロー図を示す。方法500の1つ以上の操作は、方法300の動作S320の一部であり得、COOシステムの少なくとも1つのプロセッサ(たとえば、プロセッサ220)によって実行され得る。
【0088】
図5に示すように、操作S510において、少なくとも1つのプロセッサは、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せにおいて1つまたは複数種類の暗号操作を実行するための時間量を比較するように構成され得る。実施形態によれば、1つまたは複数種類の暗号操作を実行するための時間量は、方法400における動作S420で決定された時間量を参照し得る。
【0089】
実施形態によれば、少なくとも1つのプロセッサは、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作のそれぞれについて、システムのソフトウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第1の時間量と、ハードウェアで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第2の時間量と、ソフトウェアとハードウェアとの組合せで1つまたは複数種類の暗号操作のそれぞれ1つを実行するための第3の時間量とを、比較するように構成され得る。
【0090】
例えば、方法400において動作S410およびS420を実行した後、少なくとも1つのプロセッサは、ソフトウェアで1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作を実行するための時間(すなわち、第1の時間量)が10秒であり、ハードウェアで1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作を実行するための時間(すなわち、第2の時間量)が20秒であり、ソフトウェアとハードウェアとの組合せで1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作を実行するための時間(すなわち、第3の時間量)が15秒であると決定し得る。続いて、少なくとも1つのプロセッサは、前記10秒、20秒、および15秒を互いに比較するように構成され得る。次いで、少なくとも1つのプロセッサは、複数のサイズ入力データのそれぞれに対して、1つまたは複数種類の暗号操作ごとにそのプロセスを繰り返し得る。次に、方法は動作S520に進む。
【0091】
操作S520において、少なくとも1つのプロセッサは、1つまたは複数種類の暗号操作がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、第1の時間量、第2の時間量、および第3の時間量に基づいて、暗号操作の種類がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せもいずれで実行されるべきかを決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、複数のサイズの入力データに対して、1つまたは複数種類の暗号操作のそれぞれについて、1つまたは複数種類の暗号操作のそれぞれ1つがソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを、第1の時間量、第2の時間量、および第3の時間量のうちのどれが最低値を有するかに基づいて決定するように構成され得る。
【0092】
たとえば、少なくとも1つのプロセッサは、1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作が、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかを、10秒(すなわち、第1の時間量)、20秒(すなわち、第2の時間量)、および15秒(すなわち、第3の時間量)のうちのどれが最低値を有するかに基づいて決定するように構成され得る。したがって、第1の時間量は最低値を有するので、少なくとも1つのプロセッサは、1メガバイトの入力データを用いて暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであると決定するように構成され得る。次いで、少なくとも1つのプロセッサは、複数のサイズの入力データのそれぞれに対して、1つまたは複数種類の暗号操作ごとにそのプロセスを繰り返し得る。次に、方法は操作S530に進む。
【0093】
操作S530において、少なくとも1つのプロセッサは、決定の結果(すなわち、操作S520で行われた決定)をシステムのメモリに記憶するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、決定の結果を較正ファイルに記憶するように構成され得る。較正ファイルは、ISO26262標準規格に定義されているようにコンパイルされたソフトウェアに入力される較正パラメータを含むファイルを指すことができることを理解されたい。
【0094】
例えば、少なくとも1つのプロセッサは、較正ファイルにおいて、1メガバイトの入力データを有する暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであること、5メガバイトの入力データを有する暗号化アルゴリズムを実行する暗号操作がハードウェアで実行されるべきであること、1メガバイトの入力データを有する暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであることなどを指定するように構成され得る。
【0095】
この目的のために、COOシステムは、現在インストールされているハードウェアおよびソフトウェア、暗号操作の種類、および入力データのサイズを考慮して、安全上重要な方法で、暗号操作を実行するための最適な場所を決定することができる。さらに、COOシステムは、記憶された結果に基づいて実行時間の上限を定義することもできる。
【0096】
<本開示におけるソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかを決定するための例示的な操作>
図6は、1つ以上の実施形態による、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかを決定するための例示的な方法600のフロー図を示す。方法600の1つ以上の操作は、方法300のあとで実行され得、COOシステムの少なくとも1つのプロセッサ(たとえば、プロセッサ220)によって実行され得る。
【0097】
図6に示すように、操作S610において、少なくとも1つのプロセッサは、入力データに対して暗号操作を実行するための命令を受信するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、COOシステムに関連付けられたユーザ機器やサーバなどから、暗号操作を実行するための命令を受信するように構成され得る。例えば、ユーザは、データを暗号化する命令を提供することができる。次に、方法は操作S620に進む。
【0098】
操作S620において、少なくとも1つのプロセッサは、暗号操作の種類および入力データのサイズを決定するように構成され得る。例えば、少なくとも1つのプロセッサは、(操作S610で受信された命令に従って実行される)暗号操作の種類が暗号化アルゴリズムを実行する暗号操作であること、および入力データのサイズが1メガバイトであることを決定するように構成され得る。
【0099】
少なくとも1つのプロセッサはまた、安全関連性など、暗号操作を実行することに関連する任意の追加のパラメータを決定するように構成され得ることを理解されたい。また、1つまたは複数種類の暗号操作のそれぞれは、複雑さ、セキュリティプロトコル、ライブラリサポート、ハードウェアサポート、独自の実装などからなるランキングスコアを有し得ることが理解され得る。次に、方法は操作S630に進む。
【0100】
操作S630において、少なくとも1つのプロセッサは、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行すべきかを決定するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、少なくとも操作S620で決定された暗号操作の種類および入力データのサイズ、ならびに方法500の動作S530でメモリに記憶された結果に基づいて、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかを決定するように構成され得る。
【0101】
例えば、(操作S610で受信された命令に従って実行される)暗号操作の種類が暗号化アルゴリズムを実行する暗号操作であり、入力データのサイズが1メガバイトである場合、較正ファイル(すなわち、記憶された結果)が、1メガバイトの入力データを有する暗号化アルゴリズムを実行する暗号操作がソフトウェアで実行されるべきであると指定する場合、少なくとも1つのプロセッサは、暗号操作がソフトウェアで実行されるべきであると決定するように構成され得る。次に、方法は操作S640に進む。
【0102】
操作S640において、少なくとも1つのプロセッサは、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで暗号操作を実行するように構成され得る。実施形態によれば、少なくとも1つのプロセッサは、操作S630の決定に基づいて、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せで暗号操作を実行するように構成され得る。
【0103】
例えば、少なくとも1つのプロセッサが、操作S630においてソフトウェアで暗号操作が実行されるべきであると決定する場合、少なくとも1つのプロセッサは、ソフトウェアで暗号操作を実行するように構成され得る。
【0104】
暗号操作は、データまたはキーが通常のワールドオペレーティングシステムに公開されないように、高信頼実行環境(TEE)の下で実行され得ることが理解され得る。
【0105】
さらに、実施形態によれば、少なくとも1つのプロセッサは、ランキングスコア、ハードウェアによってサポートされる入力データの最大サイズ、および暗号操作に関連する安全性影響(safety impact)(最大実行時間)に基づいて追加的に、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで暗号操作を実行するかどうかを決定するように構成され得る。例えば、AESである必要がある小さいサイズの入力を有する暗号操作は、ハードウェアが最良の選択であるので、ハードウェアにおいて実行され得るが、より大きいサイズの入力を有する同じ暗号操作は、最大実行時間の制約のため、ソフトウェアにおいて実行され得る。したがって、COOシステムは、最悪の場合の実行時間に基づいて、暗号操作を実行するための最適なロケーションを決定することができ、それによって、この安全性を関連させることができる。
【0106】
<本開示における命令の例示的なフロー>
図7は、1つ以上の実施形態による、COOシステム内の命令のフローの例を示す。
【0107】
図7に示されるように、オペレーティングシステムの機能は、現在インストールされているハードウェアおよびソフトウェアが与えられると、暗号操作を最適化するために、命令を高信頼実行環境(TEE)ドライバに送信するように構成され得る。特に、暗号操作は確実かつ安全に行われなければならず、ARM v8によって提供されるTEEおよびフォワード準拠のハードウェア(forward compliant hardware)を使用する必要がある。TEEは、例えば、ARM準拠のプロセッサ(同等の技術は、Intel SGXまたはMicrosoftのPluton Coreである)に存在する特殊モードであり、関連するシステムオンチップ(SoC)が、特定のハードウェアアクセラレータを必要とすることなく、任意の数および種類の暗号操作をサポートすることを可能にする。
【0108】
ARM準拠のプロセッサでは、TEE内でコマンドが実行される場合、プロセッサは、より高い特権モードへのコンテキストスイッチを実行し、コマンドが実行されると、TEEで実行されているオペレーティングシステムによって応答が署名(証明)され、呼び出し関数に返される。
【0109】
特に、高信頼実行環境ドライバは、その暗号化/復号化ミドルウェアに命令を送信することができる。暗号化/復号化ミドルウェアは、ハードウェアおよびソフトウェアコンテキストを認識することができ、暗号化/復号化ミドルウェアは、較正および構成(Calibration and Configuration)(たとえば、較正ファイルおよび/または構成ファイル)からデータを取得し、読み取るように構成され、ソフトウェア、ハードウェア、およびソフトウェアとハードウェアとの組合せで暗号操作を実行するための時間量を決定するとともに、暗号操作がソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組合せのいずれで実行されるべきかどうかを決定する。
【0110】
<実施形態の様々な態様>
上記の開示は例示と記述を提供するが、網羅的であることは意図されておらず、また、実現形態を開示されている正確な形状に制限することも意図されていない。上記の開示を考慮すれば修正と変形は可能であり、または実現形態の実践から取得できる。
【0111】
幾つかの実施形態は、統合の任意の可能な技術的詳細レベルにおいて、システム、方法、および/またはコンピュータ読み取り可能媒体に関することができる。更に、上述されている上記の構成要素の1つ以上は、コンピュータ読み取り可能媒体に格納され、少なくとも1つのプロセッサにより実行可能な命令として実現できる(および/または、少なくとも1つのプロセッサを含むことができる)。コンピュータ読み取り可能媒体は、プロセッサに動作を実行させるためのコンピュータ読み取り可能プログラム命令を有しているコンピュータ読み取り可能非一時的格納媒体を含むことができる。
【0112】
コンピュータ読み取り可能格納媒体は、命令実行装置による使用のための命令を保持および格納できる実体的装置であることができる。コンピュータ読み取り可能格納媒体は、例えば、下記に制限されないが、電子格納装置、磁気格納装置、光格納装置、電磁格納装置、半導体格納装置、または上述の任意の適切な組み合わせであってよい。コンピュータ読み取り可能格納媒体のより具体的な例の、すべてを網羅しているわけではないリストには下記の、携帯型コンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能型プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、携帯型コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードまたは記録されている命令を有している溝における隆起構造などのような機械的に符号化されている装置、および上述の任意の適切な組み合わせが含まれる。ここにおいて使用されているようなコンピュータ読み取り可能媒体は、無線波、または、他の自由に伝播する電磁波、導波管または他の送信媒体を通して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して送信される電気信号などのような、それ自体が一時的な信号として解釈されるべきではない。
【0113】
ここにおいて記述されているコンピュータ読み取り可能プログラム命令は、コンピュータ読み取り可能格納媒体から各演算/処理装置にダウンロードでき、または外部コンピュータまたは外部格納装置に、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/または無線ネットワークなどのネットワークを介してダウンロードできる。ネットワークは、銅送信ケーブル、光送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを備えることができる。各演算/処理装置におけるネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ読み取り可能プログラム命令を受信し、各演算/処理装置内のコンピュータ読み取り可能格納媒体における格納のためにコンピュータ読み取り可能プログラム命令を転送する。
【0114】
動作を実行するためのコンピュータ読み取り可能プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または、Smalltalk、C++などのようなオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラム言語などのような手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせにおいて記述されているソースコードまたはオブジェクトコードの何れかであってよい。コンピュータ読み取り可能プログラム命令は、ユーザのコンピュータ上で全体を実行でき、ユーザのコンピュータ上で一部を実行でき、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で一部を実行でき、および、リモートコンピュータ上で一部を実行でき、または、リモートコンピュータまたはサーバ上で全体を実行できる。後者のシナリオにおいては、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続でき、または接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを通して)実行できる。幾つかの実施形態においては、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、態様または動作を実行するために、コンピュータ読み取り可能プログラム命令の状態情報を利用して電子回路を個人化することにより、コンピュータ読み取り可能プログラム命令を実行できる。
【0115】
これらのコンピュータ読み取り可能プログラム命令は、コンピュータのプロセッサ、または、他のプログラマブルデータ処理装置を介して実行される命令が、フローチャートおよび/またはブロック図のブロックにおいて指定されている機能/動作を実現するための手段を作成するように、汎用コンピュータ、特殊目的コンピュータ、または、他のプログラマブルデータ処理装置のプロセッサに機械を製作するために提供できる。これらのコンピュータ読み取り可能プログラム命令はまた、格納されている命令を有しているコンピュータ読み取り可能格納媒体が、フローチャートおよび/またはブロック図のブロックにおいて指定されている機能/動作の態様を実現する命令を含んでいる製造品を備えるように、コンピュータ、プログラマブルデータ処理装置、および/または、他の装置に特別な様式で機能するように命令できるコンピュータ読み取り可能格納媒体に格納できる。
【0116】
コンピュータ読み取り可能プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他の装置で実行される命令が、フローチャートおよび/またはブロック図のブロックにおいて指定されている機能/動作を実現するように、コンピュータにより実現されるプロセスを生成するために、コンピュータ、他のプログラマブル装置、または他の装置上で一連の動作ステップが実行されるようにさせるために、コンピュータ、他のプログラマブルデータ処理装置、または他の装置にロードできる。
【0117】
図面におけるフローチャートとブロック図は、種々の実施形態に係わる、システム、方法、およびコンピュータ読み取り可能媒体の可能な実現形態のアーキテクチャ、機能、および動作を例示している。この点に関して、フローチャートまたはブロック図における各ブロックは、マイクロサービスモジュール、セグメント、または命令の一部を表すことができ、それらは、特定された論理機能を実現するための1つ以上の実行可能命令を備えている。方法、コンピュータシステム、およびコンピュータ読み取り可能媒体は、追加的ブロック、より少ないブロック、異なるブロック、または、
図1において示されているのとは異なるように配置されているブロックを含むことができる。幾つかの代替の実現形態においては、ブロックにおいて示されている機能は、図において示されている順序とは異なる順序で起こることができる。例えば、連続して示されている2つのブロックは、実際は、同時に、または実質的に同時に実行でき、または、関与する機能によっては、ブロックを逆の順序で実行できることもある。ブロック図および/またはフローチャートの例示における各ブロック、および、ブロック図および/またはフローチャートの例示におけるブロックの組み合わせは、指定された機能または動作を実行し、特殊目的ハードウェアおよびコンピュータ命令の組み合わせを実行する特殊目的のハードウェアに基づくシステムにより実現できるということにも気付くであろう。
【0118】
ここにおいて記述されているシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形状において実現できる。これらのシステムおよび/または方法を実現するために使用された実際の特殊化された制御ハードウェアまたはソフトウェアコードは実現形態を制限するものではない。そのため、システムおよび/または方法の動作と挙動は、特定のソフトウェアコードを参照しないでここにおいて記述されてきており、ソフトウェアとハードウェアは、ここにおける記述に基づいてシステムおよび/または方法を実現するように設計できるということは理解される。
【0119】
上記の教示に照らして、本開示の多数の修正および変形が可能であることが理解され得る。添付の条項の技術的範囲内で、本開示は、本明細書に具体的に記載されたものとは別の方法で実施され得ることは明らかであろう。