(57)【要約】ダウンロードプロセス中の伝送エラー及び信頼性についてソフトウェアのデータ整合性を検査するために、フラッシュメモリに格納されるデータは、繰り返し検査されなければならない。フラッシュメモリに格納されたプログラムデータへのアクセス、又はアクセス時間は比較的長い。コスト上の理由により一般に低い計算機能力しか有さない、特に自動車内の制御装置においては、信頼性検査などの複雑な計算を有する長いアクセス時間が、長く耐え難い遅延となる。本発明によれば、伝送エラー及び信頼性検査のための計算方法が、フラッシュウェアがアクセス時間の早いバッファ内にある間に行われ、伝送エラー及び信頼性についてのプログラムデータの検査が、効率的に行われる。したがって、フラッシュメモリへの時間集約的なアクセスが回避される。今日まで、フラッシュウェアが検査されるたび毎にフラッシュメモリにアクセスする必要があったが、本発明による方法によれば、すべての必要な検査のために、速いアクセス時間をもつバッファにフラッシュウェアを格納するので、フラッシュメモリへは一回アクセスするだけで良い。
2006523870.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのマイクロプロセッサ（ＣＰＵ）と、少なくとも１つのフラッシュメモリ（Ｆｌａｓｈ）と、少なくとも１つのブートセクタと、少なくとも１つのバッファと、フラッシュウェアをダウンロードするための少なくとも１つのインターフェースとを有する、電子制御装置内の前記フラッシュウェアのデータ整合性を検査する方法において、
前記データ整合性を検査するために、前記フラッシュウェアがバッファにロードされ、前記バッファ内の前記フラッシュウェアについて、伝送エラーを検査するための周期的ブロック保護方法の実行及び前記フラッシュウェアの信頼性を検査するためのハッシュ値の計算によって、少なくとも２つのチェックサムが計算されることを特徴とする方法。
【請求項２】
周期的ブロック保護方法（ＣＲＣ）、メッセージ認証コードを用いた認証、及びハッシュ値の計算が、前記バッファ内の前記フラッシュウェアについて行われることを特徴とする請求項１に記載の方法。
【請求項３】
周期的ブロック保護方法、電子署名の検査、及びハッシュ値の計算が、前記バッファ内のソフトウェアについて行われることを特徴とする請求項１に記載の方法。
【請求項４】
電子署名の検査が、公開鍵方式を用いて行われることを特徴とする請求項３に記載の方法。
【請求項５】
前記ブロック保護方法の後に、検査すべきソフトウェアのセキュリティクラスが照合されることを特徴とする請求項１〜４のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサシステムのプログラム格納用メモリ領域に格納されるべき、フラッシュウェアと呼ばれる、少なくとも１つのユーザプログラムを更新する及びロードする方法に関する。ダウンロードプロセスは、本明細書においては、システムインターフェースを用いて行われる。プログラム格納用のメモリ領域は、フラッシュと呼ばれる、電気的消去可能なメモリと、ランダムアクセスメモリと呼ばれる揮発性読取り／書込み用メモリとに分割して割当てられる。ダウンロードすべきフラッシュウェアがフラッシュメモリに格納される前に、ダウンロードされたフラッシュウェアは、整合性及び信頼性について検査される。
【背景技術】
【０００２】
ユーザプログラムを更新し、マイクロプロセッサシステムのプログラム格納用メモリにロードする方法が、特許文献１より知られている。ここでは、フラッシュウェアが、システムインターフェースを介して、マイクロプロセッサシステムのフラッシュメモリに読み込まれる。ここでは、フラッシュウェアは、まず、静的ランダムアクセスメモリ（ＳＲＡＭ）と呼ばれる、静的読取り／書込み用メモリにバッファされ、周期的ブロック保護方法を用いて、伝送エラーについて検査される。ここでは、ダウンロードされたフラッシュウェアプログラムの信頼性は検査されない。
【０００３】
他方、特許文献２では、自動車内の制御装置用のフラッシュウェアの信頼性を検査するための署名法について開示している。この方法においては、フラッシュウェアに、いわゆる電子署名が設けられる。電子署名を作成するために、いわゆるハッシュコードが、一般に知られているハッシュ関数を用いて、フラッシュウェアから生成される。このハッシュコードは、公開鍵暗号方式を用いて暗号化される。使用される公開鍵暗号方式は、発明者であるリベスト(Ｒｉｖｅｓｔ)、シャミル(Ｓｈａｍｉｒ)、及びアドルマン(Ａｄｌｅｍａｎ)にちなんで命名された、ＲＳＡ方法であることが好ましい。暗号化されたハッシュコードは、送信すべきアプリケーションプログラムに付加される。暗号化されたハッシュコードは、制御装置内において公開鍵を用いて復号化され、その復号化されたコードは、送信されたフラッシュウェアを用いて制御装置内で計算されたハッシュコードと比較される。両方のハッシュコードが一致していると、送信されたフラッシュウェアは信頼性がある。伝送エラーの検査は、署名法では扱われない。
【０００４】
【特許文献１】独国特許発明第１９５０６９５７Ｃ２号明細書
【特許文献２】独国特許出願公開第１０００８９７４Ａ１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、上述した先行技術を出発点として、制御装置内のソフトウェアのデータ整合性を検査する方法を提案することであり、この方法においては、送信されたデータは、伝送エラー及び信頼性について、可能な最も効率的な方法で検査される。
【課題を解決するための手段】
【０００６】
本発明による解決方法は、独立請求項の特徴を有する方法によって達成される。本発明による方法の好ましい実施形態が、従属請求項及び例示的実施形態についての記述に含まれている。
【０００７】
ソフトウェアのデータ整合性が、ダウンロードプロセス中に伝送エラー及び信頼性について検査される場合には、フラッシュメモリに格納されたデータは、繰り返し検査されなければならない。しかし、フラッシュメモリに格納されているプログラムデータへのアクセス又はアクセス時間は長い。特に、コスト上の理由により一般に低い計算機能力しか有さない、車両用の制御装置の場合には、信頼性検査などの複雑な計算のための長いアクセス時間が、長くかつ受け入れがたい遅延を引き起こす。本発明によれば、フラッシュウェアが速いアクセスタイムを持つバッファ内にある間に行われるため、伝送エラーの検査及び信頼性の検査のための計算が効率的な方法で実現できる。したがって、フラッシュメモリへの長いアクセスプロセスが回避される。これまでは、フラッシュウェアが検査される時には常にフラッシュメモリにアクセスする必要があったが、本発明による方法においては、すべての必要な検査の実行のために、速いアクセスタイムを持つバッファにフラッシュウェアを一時格納するために、フラッシュメモリには一回アクセスするだけで良い。
【０００８】
本発明により主に達成される利点は、フラッシュメモリへのアクセスプロセスを減少させることにより、複数のチェックサム、及び適宜、追加の署名検査が、時系列的に効率的に計算されることである。このことにより、フラッシュメモリへのダウンロードプロセスの短縮化が可能となり、したがって、生産に要する時間の大きな節約が可能となる。
【０００９】
信頼性検査については、一般に知られている方法が使用されることが好ましい。よく知られた標準的な方法は、たとえば、フラッシュウェアのＲＳＡ署名、又はＭＡＣ
(メッセージ認証コード: Message Authentication Code)の使用である。両方の以前より知られている認証検査が、本発明と合わせて使用されることが好ましい。
【００１０】
本発明による方法の１つの代替形態においては、信頼性検査に適用されるべきセキュリティクラスが、信頼性検査の前に照合され、選択される。この結果、本発明は、低いセキュリティクラスを有するフラッシュウェアと、高いセキュリティクラスを有するフラッシュウェアとの両方に使用され得る。
【００１１】
以下、図１〜図３の例示的実施形態を参照しながら、本発明についてより詳細に説明する。
【発明を実施するための最良の形態】
【００１２】
図１は、自動車の制御装置内でも使用される、代表的なマイクロプロセッサシステムを示している。マイクロプロセッサＣＰＵ、システムメモリ、及び外部システムとの通信用のシステムインターフェースが、プロセスバスＰＢＵＳに接続されている。システムメモリは、論理的かつ機能的に種々のメモリ領域に分割される。これらのメモリ領域は、互いに物理的に分離されることもあれば、物理的に同一メモリ内の純粋に論理的なセグメント化によって形成されることもある。マイクロプロセッサ用のオペレーティングシステム自体は、基本的に、マイクロプロセッサシステムのブートセクタに格納される。いわゆるフラッシュブートローダも、ブートセクタ内のアプリケーションプログラムとして格納される。必要な場合には、新しいアプリケーションプログラムが、このフラッシュブートローダとのシステムインターフェースの下でダウンロードされ、マイクロプロセッサシステムのフラッシュメモリに格納される。さらに、ハッシュ関数、具体的にはいわゆるＲＩＰＥＭＤ−１６０アルゴリズムが、ブートセクタに格納される。制御装置（ＥＣＵ）を動作させるアプリケーションプログラムは、通常、マイクロプロセッサシステムのフラッシュメモリ（フラッシュ）に格納される。フラッシュメモリは、電気的消去可能プログラマブル不揮発性メモリである。このようなメモリは、ＥＥＰＲＯＭとして知られている。本発明による方法を適用するために、マイクロプロセッサシステムは、バッファを含んでいる。このバッファは、別のメモリ、たとえばいわゆるキャッシュメモリとして具現化されることもあれば、マイクロプロセッサシステムの読取り／書込み用メモリＲＡＭ内の予約メモリ領域として具現化されることもある。必要なデータ、中間結果、及び結果は、アプリケーションプログラムにより読取り／書込み用メモリＲＡＭに読み込まれ、格納され、バッファされ、出力される。認証検査の目的で、復号コードの形態の又は秘密コードの形態のいずれかの鍵が、特に保護された読取り専用メモリに格納される。たとえばメッセージ認証コードなどの単純な認証方法には、コードが必要であるが、暗号化方法には復号コードが必要である。このようにして構築されたマイクロプロセッサシステムにより、たとえば独国特許発明第１９５０６９５７Ｃ２号明細書に記述されているダウンロードプロセスで、いわゆるフラッシュウェアとしてアプリケーションプログラムをダウンロードし、次いで、フラッシュメモリに格納することができる。図１の構造によれば、マイクロプロセッサシステムを使用して、ダウンロードすべきフラッシュウェア用に標準化された認証方法を行うこともできる。本発明においては、一方では、たとえば公開鍵の暗号化などの確立された署名法を認証方法と呼び、他方では、いわゆるメッセージ認証コードと呼ぶ。公開鍵方式に基づく、フラッシュウェア用の署名法の一例が、独国特許出願公開第１０００８９７４Ａ１号明細書に詳細に開示されている。
【００１３】
発明者であるリベスト(Ｒｉｖｅｓｔ)、シャミル(Ｓｈａｍｉｒ)、及びアドルマン(Ａｄｌｅｍａｎ)にちなんで命名された、いわゆるＲＳＡ暗号化方法は、標準的な公開鍵の暗号化方法として採用されてきた。この方法においては、まず、一般に知られているハッシュ関数、たとえば関数ＲＩＰＥＭＤ−１６０を有するハッシュ値が、送られるべきメッセージから生成される。送信側は、この計算されたハッシュ値を秘密鍵で暗号化する。暗号化されたハッシュ値は、署名を形成し、送られるべきメッセージに付加される。メッセージの受信側は、署名を公開鍵で復号化し、したがって送信側によって計算されたハッシュ値を再び取得する。さらに、メッセージの受信側は、送信側と同じハッシュ関数で、暗号化されていない元のメッセージからメッセージのハッシュ値を計算して求める。復号化された署名からのハッシュ値及びメッセージを用いて計算されたハッシュ値が互いに対応していると、そのメッセージは、整合性があり信頼性がある。公開鍵の暗号化方法は、データ整合性及び信頼性の点において、高いセキュリティ要求を満たしている。自動車内の制御装置及びこれらの制御装置用のフラッシュウェアのダウンロードプロセスに関して、公開鍵方式は、フラッシュウェアのダウンロードプロセスについて最高のセキュリティクラスのための要求を満たしている。
【００１４】
しかし、公開鍵の暗号化方法は、複雑な暗号化及び復号化アルゴリズムのために複雑であり、自動車の制御装置内のあらゆるマイクロプロセッサで使用できるわけではない。たとえば、暗号化方法は、簡単な制御装置内のマイクロプロセッサには常にサポートされているとは限らない浮動小数点オペレーションで動作する。より低いセキュリティレベルの認証方法は、暗号化及び復号化を必要としない。このような方法が、いわゆるメッセージ認証コードＭＡＣとして普及してきた。メッセージ認証コードは、その通信のすべての当事者が認識し、有していなければならない秘密識別コードで動作する。この認証コードは、暗号化されていないメッセージに付加され、ハッシュ関数を用いてこのような方法で区別されたメッセージから、ハッシュ値が計算される。次いで、暗号化されていないメッセージ及び計算されたハッシュ値は、その通信の当事者の間で交換される。受信側が、自分の識別コードを暗号化されていないメッセージに付加することにより、送信されたメッセージを検査し、送信側と同じハッシュ関数を使用して、これからハッシュ値を計算する。このように計算されたハッシュ値が、送信側によって送信されたハッシュ値に対応していると、その受信されたメッセージは、整合性があり信頼性があると考えられる。前述したメッセージ認証コードに基づく認証メッセージは、ハッシュ値を計算するのに、一般に知られているただ１つの方法を使用するだけで良いという利点を有する。本明細書においては、たとえばＲＳＡ暗号化などの、さらなる暗号化又は復号化のステップは必要でない。ハッシュ値関数は、非常に簡単なマイクロプロセッサでも計算され得る。メッセージ認証コードの適用形態は、たとえば米国特許第６,０６４,２９７号明細書に記載されている。しかし、メッセージ認証コードは、以前はインターネットの適用形態においてのみ知られていたが、この米国特許明細書の場合は、コンピュータネットワークの分野である。
【００１５】
図２は、論理的な又は物理的なメモリ領域、又は、メモリブロック内のデータの物理的な分割を表している。メモリブロック内のすべてのメモリ領域が、一般に、データで占有されているわけではない。メモリ内の有用なデータは、一般に、メモリ領域が書き込まれる、種々のセグメント内にある。それらに書き込まれた有用なデータを有さないメモリ領域は、図２に例示されているように、個々のセグメント、つまりセグメント１、セグメント２、．．セグメントＮの間に、いわゆる不正操作コード又はＮｕｌｌコードで満たされる。不正操作符号とは、たとえば、有用なデータが書き込まれていないメモリ領域が論理ゼロで満たされているという意味である。論理メモリブロックを検査し、伝送エラーについてコピープロセスを検査するために、情報技術の分野において、周期的ブロック保護方法が開発された。これらの周期的ブロック保護方法は、英語で、周期的冗長検査、略してＣＲＣとして知られている。これは、チェックサムを用いて伝送エラーを検査する方法である。チェックサムの簡単な一例が、パリティビットであり、これは、チェックサムとして計算され、８バイト長、１６バイト長、３２バイト長、及び６４バイト長である、それぞれの情報パケットに付加される。パリティビットは、本明細書においては、情報パケット内の論理１の数が偶数かそうでないかに関する情報を与える。次いで、コピープロセス中にチェックサムパリティが変わらなかった場合、そのコピープロセスには、エラーが含まれないと考えられる。周期的ブロック保護方法は、論理メモリブロック全体のチェックサム、即ちセグメント内のかつ隙間内に満たされている有用なデータとして、又はセグメント内の有用な情報のみを用いたチェックサムとして計算される。論理ブロック全体のチェックサムを、本明細書においてはＣＲＣ＿ｔｏｔａｌと呼び、セグメント内の有用なデータを用いたチェックサムを、本明細書においてはＣＲＣ＿ｗｒｉｔｔｅｎと呼ぶ。コピープロセス自体を検査するための周期的ブロック保護方法も、自動車内の制御装置のフラッシュメモリにフラッシュウェアをダウンロードするプロセス中に適用される。周期的ブロック保護方法は、ハッシュ関数と同様に、そのコピープロセス又はそのハッシュ値を計算すべき有用なデータへのアクセスを必要とする。しかし、これまで、周期的ブロック保護方法は、ハッシュ値方法を用いて動作する認証方法とは完全に分離されていた。つまり、ブロック保護方法がまず行われ、認証方法についてハッシュ値が計算される前に完了する。この結果、これまでは、それぞれ、一方ではブロック保護方法のために、他方ではその後の識別方法におけるハッシュ値計算のために、フラッシュメモリへの読取りアクセスプロセスが必要であった。
【００１６】
本発明は、ここで使用される。
【００１７】
図３は、フラッシュウェアをダウンロードするために最適化されたプロセスの一例を示しており、ここでは、周期的ブロック保護方法に加えて、ハッシュ値計算に基づく認証方法も行われる。フラッシュメモリに格納すべく、ダウンロードされたフラッシュウェアは、まず読み取られ（フラッシュ読み取り）、バッファ内にバッファされる（バッファにストア）。次のステップで、バッファ内にバッファされ、かつフラッシュメモリにコピーされるすべてのデータを用いて、周期的ブロック保護方法を使用して、フラッシュウェア全体を用いて、チェックサムが計算される。フラッシュウェアの整合性は、このチェックサムＣＲＣ＿ｔｏｔａｌを使用して、後に検査され得る。その後の問い合わせステップ（セグメント内のデータ？）で、読取りフラッシュメモリが有用なデータを含んでいるかどうかが問い合わせられる。有用なデータが存在しないと、エラーは直ちに出力されず、計算されたチェックサムＣＲＣ＿ｗｒｉｔｔｅｎとダウンロードプロセス中に転送されたチェックサムＣＲＣ＿ｔｒａｎｓｍｉｔｔｅｄとが比較された場合にのみ出力される。チェックサムＣＲＣ＿ｔｏｔａｌは、格納され、したがって、後のセルフチェックに利用可能である。
【００１８】
読取りフラッシュメモリが有用なデータを含んでいると、この有用なデータについて、別のブロック保護方法が行われる。有用なデータについてのこのブロック保護方法は、有用なデータが格納されているメモリ領域のみを用いて行われる。計算されたチェックサムＣＲＣ＿ｗｒｉｔｔｅｎは、後に、ダウンロードプロセス中に送信された、元のソフトウェアＣＲＣ＿ｔｒａｎｓｍｉｔｔｅｄの有用なデータのためのチェックサムと比較される。両方のチェックサムは、ダウンロードプロセス中の満足すべきコピーオペレーションについて対応していなければならない。チェックサムＣＲＣ＿ｗｒｉｔｔｅｎ及びＣＲＣ＿ｔｒａｎｓｍｉｔｔｅｄが対応していないと、エラーメッセージ「ＣＲＣ検証エラー」が再び出される。フラッシュウェアが特定のセキュリティクラスに従っていないと、バッファされたフラッシュウェアでさらなる検査が実施されない。フラッシュウェアが特定のセキュリティクラスに従っていると、フラッシュウェアの認証に必要なハッシュ値の計算が、ＣＲＣ＿ｗｒｉｔｔｅｎの計算の直後に行われる。この時、フラッシュウェアは、フラッシュメモリより極めて短いアクセス時間を有するバッファ内にまだあるので、ハッシュ値の計算は、バッファ内のデータを用いて行われ得る。これにより、本方法は時系列的に極めてより効率的に実行される。ハッシュ値の計算及び認証方法の実行は、勿論、フラッシュウェアの各セキュリティクラスに従って行われなければならない。図１について既に述べたように、いわゆるＲＳＡ方法の形態の公開鍵の暗号化方法は、本明細書においては、高いセキュリティクラスを有するフラッシュウェアに、又は比較的低いセキュリティレベルを有するフラッシュウェアのための前述のメッセージ認証コードに、特に重要である。
【００１９】
フラッシュウェアがメッセージ認証コードで保護されていると、暗号化されていないフラッシュウェアは秘密識別コードと連結され、ハッシュ値ＨＭＡＣが、この組合せを用いて計算される。このように計算されたハッシュ値ＨＡＭＣは、ダウンロードプロセス中に送信されたハッシュ値ＨＭＡＣ＿ｔｒａｎｓｍｉｔｔｅｄと比較される。２つの値が対応していると、その認証は成功（検証ＯＫ）であり、２つの値が対応していないと、エラーメッセージ「ＨＭＡＣ−検証エラー」が出力される。
【００２０】
ソフトウェアが、比較的高いセキュリティレベル、たとえば図１で論じたＲＳＡ方法を用いた認証に従っていると、認証方法は、バッファ内にバッファされたデータを使用して、このＲＳＡ方法に従って行われる。
【００２１】
この場合、元のソフトウェアの、符号化された形態で送信されたハッシュ値は、ＲＳＡ方法の公開鍵を使用して復号されるので、元のソフトウェアのハッシュ値Ｈａｓｈ＿ｔｒａｎｓｍｉｔｔｅｄが取得される。次いで、さらなるハッシュ値Ｈａｓｈ（ＣＣＣ）が、バッファ内にあるフラッシュウェアについて計算され、元のソフトウェアの復号されたハッシュ値Ｈａｓｈ＿ｔｒａｎｓｍｉｔｔｅｄと比較される。２つのハッシュ値が対応していると、その認証は成功（検証ＯＫ）である。２つのハッシュ値が対応していないと、障害メッセージ「Ｈａｓｈ検証エラー」が出力される。符号化された形態で送信されたハッシュ値の復号が成功しないと、認証プロセスは余りにも早く終了し、障害メッセージ「署名検証エラー」が出力される。
【００２２】
要約すると、素早いアクセス時間でバッファ内にダウンロードされたフラッシュウェアのバッファリングにより、時系列的により効率的に行われるべきダウンロードプロセスに必要な検査方法が可能となる。セキュリティクラスに従って適用されるべき周期的ブロック保護方法及び認証方法の両方が、バッファ内にバッファされたデータを使用して、本発明による方法で行われる。一方ではブロック保護方法を実行するための、他方では認証方法を実行するための、フラッシュメモリへの繰り返しアクセスが、うまく回避される。この結果、最終的により短いフラッシュ時間、したがって生産時間の節約が達成される。自動車の制御装置へのダウンロードの場合には、フラッシュウェアのダウンロードプロセスは、実際には、自動車の生産中に最初に行われなければならない。結局のところ、ソフトウェアのない制御装置で、自動車を作り出すことはできないのである。
【図面の簡単な説明】
【００２３】
【図１】マイクロプロセッサとメモリ領域内の論理的な分割状況を示す、制御装置の例を示すブロック図である。
【図２】メモリ内の論理ブロックへの分割例を示す図であり、それぞれの論理ブロックは、複数のセグメントから構成される。プログラムコード（フラッシュウェア）はあるセグメントに格納され、セグメント間の隙間は、いわゆる不正操作符号又はＮｕｌｌコードで満たされる。
【図３】本発明の検査方法の手順を示す流れ図である。
【図１】
2006523870.tif 000003
【図２】
2006523870.tif 000004
【図３】
2006523870.tif 000005
【国際調査報告】
2006523870.tif 000006
2006523870.tif 000007
2006523870.tif 000008
2006523870.tif 000009
2006523870.tif 000010
2006523870.tif 000011