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

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

▶ ダイムラー・アクチェンゲゼルシャフトの特許一覧

特表2024-527037デジタル署名を検証する方法、車両計算ユニット、及び車両
<>
  • 特表-デジタル署名を検証する方法、車両計算ユニット、及び車両 図1
  • 特表-デジタル署名を検証する方法、車両計算ユニット、及び車両 図2
  • 特表-デジタル署名を検証する方法、車両計算ユニット、及び車両 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-19
(54)【発明の名称】デジタル署名を検証する方法、車両計算ユニット、及び車両
(51)【国際特許分類】
   G06F 21/64 20130101AFI20240711BHJP
   G06F 21/57 20130101ALI20240711BHJP
【FI】
G06F21/64
G06F21/57 320
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024504907
(86)(22)【出願日】2022-07-20
(85)【翻訳文提出日】2024-01-25
(86)【国際出願番号】 EP2022070300
(87)【国際公開番号】W WO2023006531
(87)【国際公開日】2023-02-02
(31)【優先権主張番号】102021003840.1
(32)【優先日】2021-07-27
(33)【優先権主張国・地域又は機関】DE
(81)【指定国・地域】
(71)【出願人】
【識別番号】598051819
【氏名又は名称】メルセデス・ベンツ グループ アクチェンゲゼルシャフト
【氏名又は名称原語表記】Mercedes-Benz Group AG
【住所又は居所原語表記】Mercedesstrasse 120,70372 Stuttgart,Germany
(74)【代理人】
【識別番号】100101856
【弁理士】
【氏名又は名称】赤澤 日出夫
(72)【発明者】
【氏名】ヴィルマー,トーステン
(57)【要約】
本発明は、フラッシュメモリ(1)に保存されているデータにハッシュ関数が適用されることによって、署名を生成するために処理されるハッシュが作成される、デジタル署名を検証する方法に関する。本発明は、少なくとも次の方法ステップ、すなわち、フラッシュメモリ(1)の少なくとも1つのメモリ素子(1.1)にデータを書き込むステップと、フラッシュメモリ(1)の各々の書き込まれたブロック(2)について、それぞれのブロック(2)に書き込まれたデータからフラッシュメモリ(1)のメモリコントローラ(1.2)によってハッシュを計算し、計算されたハッシュをデータとともにブロック(2)に保存するステップと、ブロック(2)に保存されている少なくとも1つのハッシュに、メモリコントローラ(1.2)によりハッシュ関数を適用することによって検証ハッシュ(#V)を計算するステップと、署名が検証されるブロック(2)について、ブロック(2)に保存されている少なくとも1つのハッシュ及び検証ハッシュ(#V)を、フラッシュメモリ(1)よりも上位のシステム(3)によって読み取るステップと、少なくとも1つの読み取られたハッシュに、フラッシュメモリ(1)よりも上位のシステム(3)によりハッシュ関数を適用して検査ハッシュ(#P)を計算するステップと、計算された検査ハッシュ(#P)と読み取られた検証ハッシュ(#V)を比較するステップと、検査ハッシュ(#P)が検証ハッシュ(#V)と一致している場合は、署名を認証するステップを有することを特徴とする。
【選択図】図2
【特許請求の範囲】
【請求項1】
フラッシュメモリ(1)に保存されているデータにハッシュ関数が適用されることによって、署名を生成するために処理されるハッシュが作成される、デジタル署名を検証する方法において、
少なくとも次の方法ステップ、すなわち、
-フラッシュメモリ(1)の少なくとも1つのメモリ素子(1.1)にデータを書き込むステップと、
-前記フラッシュメモリ(1)の各々の書き込まれたブロック(2)について、それぞれのブロック(2)に書き込まれたデータから前記フラッシュメモリ(1)のメモリコントローラ(1.2)によってハッシュを計算し、計算されたハッシュを前記データとともに前記ブロック(2)に保存するステップと、
-ブロック(2)に保存されている少なくとも1つのハッシュに、前記メモリコントローラ(1.2)によりハッシュ関数を適用することによって検証ハッシュ(#V)を計算するステップと、
-署名が検証されるブロック(2)について、前記ブロック(2)に保存されている少なくとも1つのハッシュ及び前記検証ハッシュ(#V)を、前記フラッシュメモリ(1)よりも上位のシステム(3)によって読み取るステップと、
-少なくとも1つの前記読み取られたハッシュに、前記フラッシュメモリ(1)よりも上位の前記システム(3)によりハッシュ関数を適用して検査ハッシュ(#P)を計算するステップと、
-前記計算された検査ハッシュ(#P)と読み取られた前記検証ハッシュ(#V)とを比較するステップと、
-前記検査ハッシュ(#P)が前記検証ハッシュ(#V)と一致している場合は、署名を認証するステップとを特徴とする方法。
【請求項2】
ブロック(2)に保存されているデータを読み取るため、及び/又は上書きするために、少なくとも1つのブロック(2)の署名が検証されることを特徴とする、請求項1に記載の方法。
【請求項3】
前記フラッシュメモリ(1)のブロック(2)の少なくとも1つの書き込まれたページ(4)について個別のページハッシュ(#S)が生成されて、それぞれのページ(#S)に保存されることを特徴とする、請求項1又は2に記載の方法。
【請求項4】
ブロック(2)のハッシュを生成するために少なくとも1つのページハッシュ(#S)にハッシュ関数が適用されることを特徴とする、請求項3に記載の方法。
【請求項5】
少なくとも2つのブロック(2)の署名の検証される場合、それぞれのブロック(2)の署名が別々に検証されることを特徴とする、請求項1から4のいずれか1項に記載の方法。
【請求項6】
少なくとも2つのブロック(2)の署名を共通する署名によって検証するために、検証する前記ブロック(2)の両方の個々のハッシュから検証ハッシュ(#V)が計算されることを特徴とする、請求項1から4のいずれか1項に記載の方法。
【請求項7】
前記フラッシュメモリ(1)よりも上位のシステム(3)で実行可能なソフトウェアのソフトウェア差分更新の実行中に署名検証が行われることを特徴とする、請求項1から6のいずれか1項に記載の方法。
【請求項8】
フラッシュメモリ(1)を有する車両計算ユニット(5)において、
前記フラッシュメモリ(1)は、請求項1から7のいずれか1項に記載の方法を実施するように設定されていることを特徴とする、車両計算ユニット。
【請求項9】
請求項8に記載されている車両計算ユニット(5)を有することを特徴とする車両。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1のプレアンブルに詳しく定義されている種類のデジタル署名を検証する方法、フラッシュメモリを有する車両計算ユニット、及びこのような車両計算ユニットを有する車両に関する。
【背景技術】
【0002】
デジタル化の進展に伴って、車両の自動化の度合いも増加している。そのために車両は、センサ信号の評価や制御量の計算をするために計算ユニットを有し、その数はさらに増え続け、複雑さも進む一方である。機能性を提供するために、このような計算ユニットによって機械可読のコードが実行される。このようなコードは、物理的なデータ記憶装置にソフトウェアの形態で保存される。新たな機能性をインポートし、バグを除去し、及び/又はセキュリティホールを埋めるために、このようなソフトウェアはソフトウェアアップデートによって更新される。
【0003】
たとえば車両の発進時に行われる車両計算ユニットの初期起動のとき、物理的なデータ記憶装置からデータが読み取られる。更に、ソフトウェア更新がインポートされたときに、データを読み込むだけでなく上書きすることができ、ないしは消去することができる。このとき計算ユニットの、ないしは物理的なデータ記憶装置に保存されているデータの不正利用を防ぐために、典型的にはデータにデジタル署名が付与され、これを用いて、そのデータが第三者によって不正操作されているかどうか、ないしはソフトウェアアップデートが信頼できる送信者に由来するかどうかを認識することができる。それにより計算ユニットのプロセッサで、信頼に値するソースからのコードだけが実行されることを保証することができる。
【0004】
デジタル署名の根底にある技術の1つは、いわゆるハッシュ値の計算である。ハッシュ値を計算するために、たとえばテキスト文書、画像、Eメール、プログラムコードやプログラムコードモジュールなどの任意のデータが、該当するデータから任意の長さの文字列を計算する数学関数のための入力変数として利用される。文字列は、数字及び/又はアルファベットを含むことができる。そのために利用される数学関数はハッシュ関数とも呼ばれ、理想的には決定論的関数である。すなわち、同一の入力データが利用されることで、特定のハッシュ関数を用いて常に同一の結果が、すなわち同じハッシュ値が計算される。このときハッシュ関数は、同一のハッシュ値につながり得る異なるデータが存在しない程度に強くなければならない。
【0005】
チェックサムを用いて、物理的なデータ記憶装置のメモリ素子に保存されているデータが「正しく」書き込まれているかどうかチェックされる。このことは巡回冗長検査(CRC)と呼ばれる。たとえばデータの書き込み及び/又はデータ記憶装置からの読み取りのときにエラーが生じる可能性があり、それにより、データが誤って読み取られ、ないしは書き込まれてしまう。CRCは、ランダムなエラーを認識するのに適している。データの完全性も追加的にチェックしたいときには、チェックサムに代えて、暗号学的ハッシュ関数が適用される。そのために、書き込まれたデータ又は読み取られたデータからハッシュが形成され、比較ハッシュと比較される。このとき、それぞれのシステム間で交換されるハッシュを、実証済みの署名検証方法に基づいて暗号化して伝送することができる。両方のハッシュが一致していれば、このことは、データが適正に書き込まれ、ないしは読み取られたことを意味する。しかしデータの検証は比較的多くの時間を要する。検証のたびに、該当するデータについてハッシュ値が形成されなければならないからである。
【0006】
データを保存するために、ハードディスクやフラッシュメモリなどのさまざまな記憶媒体が知られている。埋め込みシステムなどの分散型機器、たとえば車両制御装置は、典型的には、関連データの保存のためにフラッシュメモリを利用する。このようなフラッシュメモリは、たとえばシステム・オン・チップ(SOC)などで、計算ユニットに固定的に組み込まれていてよい。このようなフラッシュメモリは、データを保存するための少なくとも1つのメモリ素子を含み、並びにそれぞれのメモリ素子をアドレシングするためのメモリコントローラを含む。更に、メモリ素子はブロックとページからなる構造を有する。このときメモリ素子は多数のブロックを含み、これらが更に多数のページをそれぞれ含む。データはフラッシュメモリでページごとに記憶され、ブロックごとに消去される。
【0007】
特許文献1より、安全なハイブリッド・ブート・システム及びハイブッド・システムのための安全なブート方法が公知である。このようなハイブリッドシステムは複数の異なるサブシステムを含み、各々のサブシステムがソフトウェアを保存するための独自の記憶装置を有し、並びにソフトウェアを実行するための独自のCPUすなわちプロセッサを有する。サイバーセキュリティの向上のために、それぞれ異なる記憶装置に含まれるソフトウェアの署名ベースの真正性検証検査が、該当するサブシステムないし該当するハイブリッド装置のブートプロセス中に行われる。このようなブート法は、第1のサブシステムが第1の署名を有し、この署名が、第1のサブシステムで記憶装置に保存されているソフトウェアの第1のハッシュに対応することを意図する。第1のソフトウェアの第1のハッシュは、第1のサブシステムから、第1のソフトウェアの第1のハッシュに対応する第2の署名を有する第2のサブシステムに伝送される。そして該当するハッシュを比較することで、真正性検証検査が実行される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】独国特許出願公開第102020117552号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の課題は、フラッシュメモリのメモリ素子への、ないしメモリ素子からのデータの保存、読み取り、及び/又は消去が高速化される、デジタル署名を検証する方法を提供することにある。
【課題を解決するための手段】
【0010】
本発明によれば、この課題は、請求項1の特徴を備えた、デジタル署名を検証する方法によって解決される。有利な実施形態及び発展形態、並びにフラッシュメモリを有する車両計算ユニット、及びその種の車両計算ユニットを有する車両は、これに従属する請求項から明らかになる。
【0011】
冒頭に述べた種類のデジタル署名を検証する方法では、署名を生成するために処理されるハッシュは、フラッシュメモリに保存されているデータにハッシュ関数が適用されることによって作成される。このとき本発明によると、少なくとも次の方法ステップ、すなわち、
-フラッシュメモリの少なくとも1つのメモリ素子にデータを書き込むステップと、
-フラッシュメモリの書き込まれた各々のブロックについて、それぞれのブロックに書き込まれたデータからフラッシュメモリのメモリコントローラによってハッシュを計算し、計算されたハッシュをデータとともにブロックに保存するステップと、
-ブロックに保存されている少なくとも1つのハッシュに、メモリコントローラによりハッシュ関数を適用することによって検証ハッシュを計算するステップと、
-署名が検証されるべきブロックについて、ブロックに保存されている少なくとも1つのハッシュ及び検証ハッシュを、フラッシュメモリよりも上位のシステムによって読み取るステップと、
-少なくとも1つのその読み取られたハッシュに、フラッシュメモリよりも上位のシステムによりハッシュ関数を適用することによって検査ハッシュを計算するステップと、
-読み取られた検証ハッシュと計算された検査ハッシュとを比較するステップと、
-検証ハッシュと検査ハッシュが一致している場合は、署名を認証するステップとが実行される。
【0012】
本発明による方法を用いて、フラッシュメモリに保存されているデータでのデジタル署名の検証が高速化される。それにより、フラッシュメモリの該当するデータをより高速に読み取ることができ、ないしは上書きすることができる。したがって、該当するコンピュータシステムないし計算ユニットをより高速にブートすることができ、実行するソフトウェアをより高速にロードすることができ、又はフラッシュメモリに保存されたソフトウェアをより高速に更新することができる。中心となる考え方は、検査ハッシュの生成のために、フラッシュメモリに保存されているデータに関するハッシュを生成する必要はなく、保存されている1つ/複数のハッシュにハッシュ関数を適用するだけで検査ハッシュが計算されることである。より少ないデータ量によって、ソフトウェアを構成するために使用されるデータよりも高速にハッシュをフラッシュメモリから読み取ることができる。
【0013】
ハッシュ関数としては、HAVAL、Whirlpool、又はセキュアハッシュアルゴリズム(SHA)、特にSHA2又はSHA3など、任意の暗号学的ハッシュ関数を利用することができる。
【0014】
このときブロックに保存されている個々のハッシュ、並びに検証ハッシュが、フラッシュメモリ自体によって、厳密にはフラッシュメモリのメモリコントローラによって計算される。検証ハッシュは、フラッシュメモリのメモリ素子の任意のブロックに保存することができる。メモリコントローラは該当するメモリ素子をアドレシングするので、メモリコントローラには、これに該当する照会があるとすぐに、どこで検証ハッシュを読み取る必要があるかもわかる。フラッシュメモリは上位のシステムに組み込まれている。上位のシステムは計算ユニットである。計算ユニットは、データの形態でフラッシュメモリに保存されているソフトウェアを実行するためのプロセッサを含む。フラッシュメモリよりも上位のシステムが、他の計算ユニットと通信接続されることも可能である。そのようにしてデータをフラッシュメモリから読み取り、上位のシステムから他の計算ユニットへ転送することができる。これに準じて、他の計算ユニットから上位のシステムへデータを伝送し、そのようにして保存のためにフラッシュメモリへ送ることができる。たとえば、上位のシステムで実行可能なソフトウェアのソフトウェア更新をインポートすることができる。
【0015】
フラッシュメモリよりも上位のシステムが、たとえばブートされる車両制御装置である場合、データの形態でフラッシュメモリに保存されている該当するソフトウェアが読み取られ、プロセッサにより実行される。ただし、該当するソフトウェアを読み取るには、潜在的に不正操作されたデータ、及びそれに伴って車両制御装置に送り込まれる安全性が損なわれたソフトウェアが実行されるのを防止するために、署名検証が正常に行われなければならない。このように本発明による方法を用いることにより、署名検証をするためにブロックからそれぞれのデータを検査ハッシュの計算のために読み取って、そこから検査ハッシュを計算する必要がなくなり、すでにフラッシュメモリにより計算されてフラッシュメモリに保存されている1つ/複数のハッシュを読み取り、ブロックから読み取られたハッシュにハッシュ関数を適用して検査ハッシュを計算するだけでよい。このことは、極めて高速に進行する。したがって、フラッシュメモリよりも上位のシステムをより高速にブートすることができ、また該当するソフトウェアをより高速に開始して実行する、ないしはソフトウェア更新をより高速にインストールすることができる。
【0016】
ソフトウェア更新がインストールされる場合、フラッシュメモリのメモリ素子の個々のブロックのデータないしデータの一部は、新たなデータに置き換えられるか、補足される。データが変更されるので、変更されたデータを含む該当するブロックの該当するハッシュも変更される。新しいデータないし変更されたデータがブロックに書き込まれると、フラッシュメモリ、すなわちメモリコントローラも、当該ブロックについての新しいハッシュを計算する。それに応じて、新しい検証ハッシュを計算することも必要となる。というのも、検証ハッシュの基礎となる1つ/複数のハッシュが変更されているからである。
【0017】
このとき、メモリコントローラが計算されたハッシュをフラッシュメモリのメモリ素子に保存できるようにするため、ないしはそれぞれブロックに保存されているハッシュをブロックごとに読み取れるようにするために、フラッシュメモリ及び/又はフラッシュメモリよりも上位のシステムのファームウェアを変更することが必要になる可能性がある。
【0018】
本発明による方法の好ましい発展形態は、ブロックに保存されているデータを読み取るため、及び/又は上書きするために、少なくとも1つのブロックの署名が検証されることを意図する。すでに述べたとおり、それによって車両制御装置での安全性が損なわれたソフトウェアのインプリメントないし実行を防止することができる。
【0019】
本方法の別の好ましい実施形態によれば、フラッシュメモリ、すなわち該当するメモリ素子のブロックの少なくとも1つの書き込まれたページについて個別的なページハッシュが生成され、それぞれのページに保存される。データは、フラッシュメモリのメモリ素子で、常にブロックごとに、かつそれぞれのブロックでページの形態で保存される。1つのブロックについて少なくとも1つのハッシュを設けるために、それぞれのブロックの任意のページに該当するハッシュを保存することができる。しかしながら、1つのブロックの1つの書き込まれたページ、複数の書き込まれたページ、又はすべての書き込まれたページについて、独自のハッシュを生成することもできる。それに応じて検証ハッシュを生成するために、1つのブロックの1つのページハッシュ、複数のページハッシュ、又は全部のページハッシュにハッシュ関数を適用することができる。1つ又は複数のページハッシュから、該当するブロックについての1つのハッシュを計算し、少なくとも1つのページハッシュから算出された当該ブロックハッシュを、検証ハッシュの計算のために利用することもできる。
【0020】
一般に、検証ハッシュの計算のためにページハッシュ及び/又はブロックハッシュの任意の組み合せが可能である。ただし検証ハッシュを計算するシステムは、検証ハッシュと検査ハッシュの間の一致が得られるようにするために、どのハッシュが計算に利用されるかの情報を利用できなければならない。
【0021】
本発明による方法の別の好ましい実施形態によれば、少なくとも2つのブロックの署名が検証される場合、それぞれのブロックの署名が別々に検証される。該当するコードを複数のブロックに保存する必要があるほどソフトウェアが大きい場合、各々のブロックも、ないしはそこに保存されるデータも完全性に関して検証されなければならない。このことは、各々のブロックについて個別に行うことができる。たとえば各々のブロックについて、それぞれのブロックについて代表的なハッシュから(場合によりページハッシュを取り込んだうえで)メモリコントローラにより検証ハッシュが計算されて、該当するブロックに保存される。これに準じて、フラッシュメモリよりも上位のシステムは、それぞれのブロックについて代表的なハッシュから各々のブロックについて検査ハッシュを計算し、これらをそれぞれの検証ハッシュと比較する。このことは、特に確実な署名検証を可能にする。それにより、データが不正操作されている場合に、改ざんされたデータを含むブロックを直接的に識別することができる。
【0022】
本発明による方法の別の好ましい実施形態は、少なくとも2つのブロックが検証される場合、共通するブロック署名の検証も可能であることを意図する。そのために各ブロックのそれぞれのハッシュから、共通の検証ハッシュが算出される。それにより、該当するブロックからデータを読み取るのに必要な時間をさらに短縮することができる。というのも、該当するブロックの署名をより高速に検証できるからである。このとき、データが該当するブロックから読み取られる前に、フラッシュメモリが複数のブロックについて1つの共通の署名をすでに生成する、すなわち該当する共通の検証ハッシュを生成することが可能である。このことは、たとえば最初の保存のときに、すなわちフラッシュメモリにソフトウェアがインストールされるときに可能である。たとえばメモリコントローラには、該当するソフトウェアにどのデータが属するかがわかっており、またそれに応じて、ソフトウェアをロードするときにどのブロックを読み取る必要があるかがわかっている。そして、これらのブロックについてメモリコントローラが、共通の検証ハッシュを個々のブロックハッシュから事前に算出しておくことができる。
【0023】
ただしアップデートのインストールでは、ソフトウェアのいくつかのコードモジュールを交換するだけで済むことがある。その場合は、これらのコードモジュールは、任意のブロックとページに保存されている可能性がある。そのため、メモリコントローラは、どのブロックやページにアクセスしなければならないかを事前に知ることができない。したがって本方法の考えられる1つの実施形態は、異なるブロックからのデータの読み取りないし書き込みに対する照会が残っている場合にのみ、メモリコントローラが該当する検証ハッシュを生成することも意図する。
【0024】
異なるブロック及びページに保存されているデータの読み取り及び/又は上書きは、特に、ソフトウェア差分更新をインストールするために重要である。たとえば、フラッシュメモリよりも上位のシステムで実行可能なソフトウェアのソフトウェア差分更新の実行中に、署名検証が行われるのが好ましい。ソフトウェア差分更新とは、変更されたコードモジュールだけが交換されるソフトウェアアップデートである。それにより、該当するソフトウェア更新の量を減らすことができる。したがって、書き込むデータも少なくて済み、このことは、ソフトウェア更新をインストールするための時間を短縮する。
【0025】
フラッシュメモリを有する車両計算ユニットにおいて、本発明によれば、フラッシュメモリは上で説明した方法を実施するためにセットアップされる。車両計算ユニットは任意の計算ユニットであってよい。たとえば車両計算ユニットは、中央ボードコンピュータ、テレマチックユニット、又は車両サブシステムのその他の制御装置であってよい。フラッシュメモリは、NANDフラッシュ又はNORフラシュとして製作されていてよい。フラッシュメモリは、1つ又は複数のメモリ素子を有することができる。該当するメモリ素子は、データがページごとにメモリセルに保存される複数のブロックが組み合わされて構成される。メモリ素子は任意のサイズを有することができる。たとえばメモリ素子は100KB、64MB、1GB、128GB、1TBなどのサイズを有することができる。フラッシュメモリは、該当するメモリ素子をアドレシングするためのメモリコントローラを更に含む。車両計算ユニットは、他の車両計算ユニットと通信接続されていてよい。たとえば通信モジュールからソフトウェアアップデートを無線通信で受信することができ、たとえばエンジン制御ソフトウェアなどのソフトウェア更新のインポートのために転送することができる。
【0026】
本発明によれば、車両は、上で説明した車両計算ユニットを含む。この車両は、乗用車、トラック、トランスポータ、バス等、任意の車両であってよい。本発明による方法及び本発明による車両計算ユニットを用いて、車両でのソフトウェアのブートプロセスないしロードプロセスを高速化することができる。更に、ソフトウェア更新も該当する車両計算ユニットに、ないしは車両計算ユニットのフラッシュメモリにより迅速に実施することができる。更に、フラッシュメモリへのアクセスのために署名検証が実行されるので、該当する車両計算ユニットのサイバーセキュリティが維持される。
【0027】
デジタル署名を検証するための本発明の方法、車両計算システム、及び車両の、その他の好ましい実施形態は、以下において図面を参照しながら詳しく説明する実施例からも明らかとなる。
【図面の簡単な説明】
【0028】
図1】車両計算ユニットを示す模式的な平面図である。
図2】フラッシュメモリのメモリ素子のメモリ構造を示す原理図である。
図3】フラッシュメモリへの読み取りアクセス及び/又は書き込みアクセスのための署名検証の模式的な手順を示す。
【発明を実施するための形態】
【0029】
図1は、たとえばエンジン制御装置や中央ボードコンピュータなどの車両計算ユニット5を示している。車両計算ユニット5は、少なくとも1つのフラッシュメモリ1を含んでおり、ひいては、フラッシュメモリ1よりも上位のシステム3である。更に車両計算ユニット5は、フラッシュメモリ1に保存されているプログラムコードを実行するためのプロセッサ6を含んでいる。
【0030】
更にフラッシュメモリ1は、少なくとも1つのメモリ素子1.1並びにメモリコントローラ1.2を含んでいる。メモリ素子1.1にデータが保存される。このときメモリコントローラ1.2はそれぞれのメモリ素子1.1をアドレシングし、それにより、フラッシュメモリ1への書き込みアクセスないし読み取りアクセスの際に正しいデータがアドレシングされる。
【0031】
図2は、メモリ素子1.1の構造を示している。メモリ素子1.1は多数のブロック2を含んでいて、その中で、保存されるべきデータがページごとに、すなわち少なくとも1つのページ4の形態で、保存される。このときフラッシュメモリはページごとにのみ書き込むことができ、ブロックごとに消去することができる。
【0032】
サイバーセキュリティの向上のために、フラッシュメモリ1に保存されているデータへの書き込みアクセスないし読み取りアクセスの前に署名検証が行われる。署名の検証はハッシュ値の比較を必要とする。そのために従来技術では、フラッシュメモリ1に保存されているデータから少なくとも1つのハッシュ値が計算され、これが保存される。そしてデータへのアクセスを行おうとするときに、データにアクセスするプロセッサが、読み取られたデータから同じくハッシュ値を計算する。このハッシュ値が、事前に計算されていたハッシュ値と比較される。両方のハッシュ値が一致すれば、署名検証が認証される。しかし、そのためには比較的長い時間が必要である。データへの書き込みアクセスないし読み取りアクセスのたびに、データからあらためてハッシュ値を計算しなくてはならないからである。
【0033】
本発明による方法では、フラッシュメモリ1、すなわちメモリコントローラ1.2は、フラッシュメモリ1へデータが書き込まれるときに少なくとも各々のブロック2についてハッシュを計算し、このハッシュを、書き込むデータとともにそれぞれのブロック2で保存する。本発明による方法の根底にある考え方は、署名検証のために利用されるハッシュを計算するために、フラッシュメモリ1に保存されているデータに代えて、フラッシュメモリ1により計算されたハッシュが対応するハッシュ関数に読み込まれることを意図する。その利点は、フラッシュメモリ1により計算されたハッシュの読み込みが、データ自体の読み込みよりはるかに高速であることにある。そのようにして署名検証をはるかに高速に行うことができる。
【0034】
署名検証のために、検査ハッシュ#P(図3参照)が検証ハッシュ#Vと比較される。検証ハッシュ#Vは、少なくとも1つのブロックハッシュ#Bから計算される。たとえば少なくとも1つのブロックハッシュ#Bがハッシュ関数に読み込まれ、これから検証ハッシュ#Vが導き出される。それぞれのブロックハッシュ#Bと検証ハッシュ#Vが、ブロック2のページ4に保存される。そのために、一般に任意のページ4を利用することができる。たとえば図2に破線の三角形で示されているように、対応するブロック2のブロックハッシュ#Bとは別のページ4で検証ハッシュ#Vを保存することもできる。
【0035】
フラッシュメモリ1へのデータの書き込みのときに、ブロック2の少なくとも1つのページ4について、ただ1つのページハッシュ#Sが生成されることも可能である。たとえばそれぞれのページ4には、ペイロードデータ7、すなわちプログラムを具体化するためのコードのある程度の部分が保存される。フラッシュメモリ1、すなわちメモリコントローラ1.2は、ペイロードデータ7を入力変数としてハッシュ関数に読み込み、そこからそれぞれのブロックハッシュ#B及び/又はページハッシュ#Sを算出する。
【0036】
ペイロードデータ7は、場合によりページハッシュ#Sとともに、それぞれのページ4に保存される。書き込みプロセスが完了すると、対応するブロック2について、それぞれのブロックハッシュ#Bから検証ハッシュ#Vが別のハッシュ関数を用いて決定される。そして検証ハッシュ#Vが、同じく任意のブロック2の任意のページ4に保存される。ハッシュの計算に利用される個々のハッシュ関数は同一であってよく、又は互いに相違していてよい。ハッシュ関数はそれぞれの強度に関して互いに相違していてもよい。
【0037】
ブロックハッシュ#Bが別様に計算されたブロック2も、検証ハッシュ#Vの計算のために組み合わせることができる。たとえば第1の数のブロック2では、それぞれのブロックハッシュ#Bがペイロードデータ7から計算されていてよく、第2の数のブロック2では、それぞれのブロックハッシュ#Bがページハッシュ#Sから計算されていてよい。
【0038】
図3は、署名検証の模式的な進行を示している。たとえば、まずフラッシュメモリ1ないし厳密に言えばメモリコントローラ1.2が、フラッシュメモリ1で書き込むデータから、ブロック別にブロックハッシュ#Bを計算する。このときブロックハッシュ#Bはペイロードデータ7から直接的に、あるいはページハッシュ#Sから計算することができる。そして、少なくとも1つのブロックハッシュ#Bから検証ハッシュ#Vが計算されて、同じくブロック2に保存される。検証ハッシュ#Vの計算には、理論上、1つのブロックハッシュ#Bがあるだけで十分なので、図3では、ブロックハッシュ#Bだけが検証ハッシュ#Vと実線で結ばれている。破線は、検証ハッシュ#Vの計算のために複数のブロックハッシュ#B及び/又はページハッシュ#Sの使用が任意選択であることを表しているか、ないしは多くのペイロードデータ7を書き込み/読み取りする必要があるために、これらを複数のブロック2に書き込まなければならない場合、ないしは複数のブロック2から読み取らなければならない場合にのみ、考慮の対象となることを表している。
【0039】
そしてペイロードデータ7へのアクセスを行おうとするとき、それが読み取り、書き込み、及び/又は消去のいずれであれ、データにアクセスする計算ユニット、たとえば車両計算ユニット5のプロセッサ6が、検証ハッシュ#Vに対応する検査ハッシュ#Pを計算するのが好都合である。検査ハッシュ#Pが検証ハッシュ#Vに合致していれば、署名検証は成功する。それに対して検査ハッシュ#Pと検証ハッシュ#Vが一致しない場合、このことはペイロードデータ7の不正操作を示唆しており、これを受けて署名検証が却下される。
【0040】
検査ハッシュ#Pを計算するために、プロセッサ6はフラシュメモリ1と同一のハッシュ関数を利用する。そして検査ハッシュ#Pを計算するために、本発明による方法ではペイロードデータ7に代えて、ページハッシュ#S及び/又はブロックハッシュ#Bが、フラッシュメモリ1にアクセスする計算ユニットによってフラッシュメモリ1から読み取られる。フラッシュメモリ1にあるデータの初期の保存と、該当する計算ユニットによる読み取りとの間で、それぞれのデータへの不正が生じていると、フラッシュメモリ1から読み取られたハッシュが当初のハッシュと一致しなくなる。データの書き込みのときに、メモリコントローラ1.2が新たなブロックハッシュ#Bを計算するからである。しかし、検証ハッシュ#Vは操作過程で変更されていないので、このことは、データの操作が行われている場合に、検査ハッシュ#Pが検証ハッシュ#Vと一致しなくなることを意味する。
【0041】
それに対して、フラッシュメモリ1に保存されているデータが信頼に値するソースによって変更されると、署名検証の成功後に検証ハッシュ#Vもあらためて計算される。
【0042】
秘密鍵と公開鍵を用いる暗号化・復号化など、署名検証で実証済である暗号化技術が適用されることによって、計算ユニットとフラッシュメモリ1との間で交換されるハッシュの漏洩を防ぐことができる。
図1
図2
図3
【手続補正書】
【提出日】2024-01-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
フラッシュメモリ(1)に保存されているデータにハッシュ関数が適用されることによって、署名を生成するために処理されるハッシュが作成される、デジタル署名を検証する方法において、
少なくとも次の方法ステップ、すなわち、
-フラッシュメモリ(1)の少なくとも1つのメモリ素子(1.1)にデータを書き込むステップと、
-前記フラッシュメモリ(1)の各々の書き込まれたブロック(2)について、それぞれのブロック(2)に書き込まれたデータから前記フラッシュメモリ(1)のメモリコントローラ(1.2)によってハッシュを計算し、計算されたハッシュを前記データとともに前記ブロック(2)に保存するステップと、
-ブロック(2)に保存されている少なくとも1つのハッシュに、前記メモリコントローラ(1.2)によりハッシュ関数を適用することによって検証ハッシュ(#V)を計算するステップと、
-署名が検証されるブロック(2)について、前記ブロック(2)に保存されている少なくとも1つのハッシュ及び前記検証ハッシュ(#V)を、前記フラッシュメモリ(1)よりも上位のシステム(3)によって読み取るステップと、
-少なくとも1つの前記読み取られたハッシュに、前記フラッシュメモリ(1)よりも上位の前記システム(3)によりハッシュ関数を適用して検査ハッシュ(#P)を計算するステップと、
-前記計算された検査ハッシュ(#P)と読み取られた前記検証ハッシュ(#V)とを比較するステップと、
-前記検査ハッシュ(#P)が前記検証ハッシュ(#V)と一致している場合は、署名を認証するステップとを特徴とする方法。
【請求項2】
ブロック(2)に保存されているデータを読み取るため、及び/又は上書きするために、少なくとも1つのブロック(2)の署名が検証されることを特徴とする、請求項1に記載の方法。
【請求項3】
前記フラッシュメモリ(1)のブロック(2)の少なくとも1つの書き込まれたページ(4)について個別のページハッシュ(#S)が生成されて、それぞれのページ(#S)に保存されることを特徴とする、請求項1又は2に記載の方法。
【請求項4】
ブロック(2)のハッシュを生成するために少なくとも1つのページハッシュ(#S)にハッシュ関数が適用されることを特徴とする、請求項3に記載の方法。
【請求項5】
少なくとも2つのブロック(2)の署名の検証される場合、それぞれのブロック(2)の署名が別々に検証されることを特徴とする、請求項1または2に記載の方法。
【請求項6】
少なくとも2つのブロック(2)の署名を共通する署名によって検証するために、検証する前記ブロック(2)の両方の個々のハッシュから検証ハッシュ(#V)が計算されることを特徴とする、請求項1または2に記載の方法。
【請求項7】
前記フラッシュメモリ(1)よりも上位のシステム(3)で実行可能なソフトウェアのソフトウェア差分更新の実行中に署名検証が行われることを特徴とする、請求項1または2に記載の方法。
【請求項8】
フラッシュメモリ(1)を有する車両計算ユニット(5)において、
前記フラッシュメモリ(1)は、請求項1または2に記載の方法を実施するように設定されていることを特徴とする、車両計算ユニット。
【請求項9】
請求項8に記載されている車両計算ユニット(5)を有することを特徴とする車両。
【国際調査報告】