(58)【調査した分野】(Int.Cl.,DB名)
前記セキュリティ情報管理部は、前記セキュリティ情報管理部への電源電圧の供給が再開された後に、前記第1制御部からの指示に従って、前記第3記憶部に記憶されている前記第1鍵情報の暗号化情報及び前記第2鍵情報の暗号化情報を、前記第3鍵情報に基づいて復号して得られた前記第1鍵情報及び前記第2鍵情報を前記第1記憶部に記憶する制御を行う第2制御部を有する、請求項1に記載の情報処理装置。
前記第2制御部は、前記セキュリティ情報管理部への電源電圧を遮断する前に、前記第1鍵情報の暗号化情報及び前記第2鍵情報の暗号化情報を識別する識別情報を前記第3鍵情報に基づいて生成し、
前記第1制御部は、前記生成された識別情報を、前記第1鍵情報の暗号化情報と、前記第2鍵情報の暗号化情報とともに前記第3記憶部に記憶する制御を行い、
前記第2制御部は、前記セキュリティ情報管理部への電源電圧の供給が再開された後に、前記第3記憶部に記憶された前記第1鍵情報の暗号化情報及び前記第2鍵情報の暗号化情報を識別する識別情報を前記第3鍵情報に基づいて生成し、前記生成された識別情報が前記第3記憶部に記憶された識別情報に一致するか否かをチェックし、一致する場合には、前記第3記憶部に記憶されている前記第1鍵情報の暗号化情報及び前記第2鍵情報の暗号化情報を、前記第3鍵情報に基づいて復号して得られた前記第1鍵情報及び前記第2鍵情報を前記第1記憶部に記憶する制御を行う、請求項2に記載の情報処理装置。
前記セキュリティ情報管理部は、前記第1記憶部に記憶された前記第1鍵情報及び前記第2鍵情報と、前記第2記憶部に記憶された前記第3鍵情報とが前記セキュリティ情報管理部の外部に出力されないように、前記第1乃至第3鍵情報を管理する、請求項1乃至3のいずれか一項に記載の情報処理装置。
前記第2記憶部は、電気的なヒューズと、論理回路の入力端子の論理固定化との少なくとも一方に基づいて、前記第3鍵情報を記憶する、請求項1乃至5のいずれか一項に記載の情報処理装置。
【発明を実施するための形態】
【0010】
以下、図面を参照して実施の形態について説明する。なお、本件明細書と添付図面においては、理解のしやすさと図示の便宜上、一部の構成部分を省略、変更または簡易化して説明および図示しているが、同様の機能を期待し得る程度の技術内容も、本実施の形態に含めて解釈することとする。また、本件明細書に添付する図面においては、図示と理解のしやすさの便宜上、適宜縮尺および縦横の寸法比等を、実物から変更し誇張してある。
【0011】
図1は本実施形態による情報処理装置1を備えた情報処理システム2の概略構成を示すブロック図である。
図1の情報処理システム2は、例えば車両に搭載されるものである。
図1では、情報処理装置1がECU3である例を示している。
図1の情報処理システム2には、複数のECU3と、これらECU3が共通に接続されるCAN4とを備えている。各ECU3は、車両の各部に設けられており、暗号化されたデータを相互に送受信することができる。なお、
図1の情報処理装置1及び情報処理システム2は、必ずしも車載用に限られるわけではないが、以下では、一例として車載用のECU3及び情報処理システム2について説明する。
【0012】
図2は
図1の各ECU3の内部構成を示すブロック図である。
図1のECU3は、メインCPU(第1制御部)11と、I/O部12と、セキュリティ情報管理部13とを備えている。また、ECU3には、フラッシュメモリ14からなる不揮発メモリが外付けされている。このフラッシュメモリ14は、本来的には、メインCPU11が実行するプログラム等を記憶するためものである。本実施形態では、メインCPU11用に設けられるフラッシュメモリ14を流用して、後述する鍵情報を記憶する。したがって、本実施形態によれば、鍵情報を記憶するための専用のフラッシュメモリが不要になり、装置コストを削減できる。なお、
図1の各ECU3は、フラッシュメモリ14を除いて一つの半導体チップで構成可能である。
【0013】
メインCPU11は、ECU3内の各部を制御する。例えば、メインCPU11は、セキュリティ情報管理部13に対して複数の鍵情報の少なくとも一つを用いたデータの暗号化処理及び復号化処理を指示するとともに、暗号化されたデータをI/O部12とCAN4を介して他のECU3との間で送受信する制御を行う。メインCPU11には、キャッシュメモリ等のワークメモリが内蔵されている。なお、メインCPU11とは別個に、メインメモリやキャッシュメモリ等のメインCPU11によりアクセスされるメモリを設けてもよい。ECU3に電源電圧が供給されると、メインCPU11は、不図示のROMに記憶された基本プログラムを読み出して実行し、その後に、フラッシュメモリ14に記憶されている種々のプログラムを読み出して実行する。
【0014】
セキュリティ情報管理部13は、セキュリティシステムとも呼ばれ、暗号化されていない平文の複数の鍵情報を管理するとともに、メインCPU11からの指示に従って複数の鍵情報の少なくとも一つを用いてデータの暗号化処理及び復号化処理を行う。
【0015】
図2の例では、メインCPU11、I/O部12、フラッシュメモリ14及びセキュリティ情報管理部13が共通のバスに接続されている例を示しているが、バスの構成は任意である。
【0016】
セキュリティ情報管理部13は、サブCPU(第2制御部)21と、AES処理部22と、CMAC処理部23と、揮発性の第1記憶部24と、不揮発性の第2記憶部25とを有する。
【0017】
サブCPU21は、メインCPU11と通信を行い、メインCPU11からの指示によりセキュリティ情報管理部13内の各部を制御する。AES処理部22は、AES(Advanced Encryption Standard)に従ってデータの暗号化処理を行う。CMAC処理部23は、CMAC(Cipher-based Message Authentication Code)アルゴリズムに従ってデータの暗号化処理を行う。なお、暗号化の方式は、必ずしもAESやCMACには限らない。
【0018】
第1記憶部24は、複数の鍵情報を記憶する。複数の鍵情報は、例えば、共通鍵情報(第1鍵情報)Keyと、Keyを暗号化するための鍵情報(第2鍵情報)KEKを含んでいる。第1記憶部24は、揮発性であればよく、大容量のメモリ容量を必要としないことから、例えばレジスタ等で構成可能である。レジスタは、例えば複数のフリップフロップを用いて構成される揮発メモリである。
【0019】
第2記憶部25は、KeyとKEKを暗号化するためのスクランブル鍵情報(第3鍵情報)を記憶する不揮発メモリである。第2記憶部25は、スクランブル鍵情報を記憶可能な小容量のメモリ容量で足りることから、例えばeFuseが用いられる。eFuseでは、予め定めた電圧レベルの配線パターンを電気的に切断するか否かにより、任意の論理のデータを記憶可能である。あるいは、第2記憶部25は、論理ゲート等の論理回路で構成可能である。この場合、論理回路の入力端子の論理を固定化することにより、論理回路から任意の論理レベルの鍵情報を出力することができる。ただし、第2記憶部25に用いる論理回路には、ECU3への電源電圧が遮断されても、電源電圧が供給されている必要があり、例えば専用の電池から電圧供給を受けてもよい。第2記憶部25をeFuseだけで構成すると、セキュリティ性能が弱いため、eFuseによる値と、論理回路による値とを組み合わせて、スクランブル鍵情報を生成してもよい。
【0020】
本実施形態によるセキュリティ情報管理部13は、第1記憶部24に記憶されたKey及びKEKと、第2記憶部25に記憶されたスクランブル鍵情報とを、セキュリティ情報管理部13の外部に読み出せないように管理する。
【0021】
ECU3に電源電圧を供給した直後の初期状態では、第1記憶部24には、初期状態のKeyiniとKEKiniが記憶される。第1記憶部24に記憶されるKeyとKEKは、定期または不定期に更新されることがある。Keyを更新するタイミングとKEKを更新するタイミングは、必ずしも一致しない。
図3はKeyの更新手順の一例を示すフローチャートである。また、
図4は、Keyの更新手順に関連する各部とバスを実線で示し、関連性の薄い各部とバスを破線で示したECU3のブロック図である。
【0022】
図3は、他のECU3から、暗号化されたKeyを受信する例を示している。まず、メインCPU11は、CAN4とI/O部12を介して、暗号化されたKeynew(Encrypted Keynew)とMACを受信すると(ステップS1)、サブCPU21に対して、復号化処理を指示する(ステップS2)。暗号化されたKeynewとMACは、それぞれ以下の(1)式と(2)式で表される。
Encrypted Keynew=AES(Keynew, KEK) …(1)
MAC=CMAC(Encrypted Keynew, KEK) …(2)
【0023】
この指示を受けて、サブCPU21は、第1記憶部24に記憶されているKEKを用いて、AES処理部22とCMAC処理部23に対して、新たなKeynewの復号を指示する(ステップS3)。この指示を受けて、CMAC処理部23は、上述した(2)式に基づいて、MACを生成する(ステップS4)。次に、生成されたMACとステップS1で受信されたMACとが一致するか否かをチェックし、一致する場合には、AES処理部22は、上述した(1)式に基づいて、新たなKeynewを取得する(ステップS5)。
【0024】
サブCPU21は、新たなKeynewが取得されると、第1記憶部24に記憶されていた旧Keyを、新たなKeynewに上書きして更新する(ステップS6)。
【0025】
図5はKEKの更新手順の一例を示すフローチャートである。また、
図6は、KEKの更新手順に関連する各部とバスを実線で示し、関連性の薄い各部とバスを破線で示したECU3のブロック図である。まず、メインCPU11は、CAN4とI/O部12を介して、暗号化されたKEKnew(Encrypted keynew9とMACを受信すると(ステップS11)、サブCPU21に対して、復号化処理を指示する(ステップS12)。暗号化されたKEKとMACは、それぞれ以下の(3)式と(4)式で表される。
Encrypted KEKnew=AES(KEKnew, KEKini) …(3)
MAC=CMAC(Encrypted KEKnew, KEKini) …(4)
【0026】
この指示を受けて、サブCPU21は、第1記憶部24に記憶されているKEKiniを用いて、AES処理部22とCMAC処理部23に対して、新たなKEKnewの復号を指示する(ステップS13)。この指示を受けて、CMAC処理部23は、上述した(4)式に基づいて、MACを生成する(ステップS14)。次に、生成されたMACとステップS11で受信されたMACとが一致するか否かをチェックし、一致する場合には、AES処理部22は、上述した(3)式に基づいて、新たなKEKnewを取得する(ステップS15)。
【0027】
サブCPU21は、新たなKEKnewが取得されると、第1記憶部24に記憶されていたKEKiniを、新たなKEKnewに上書きして更新する(ステップS16)。
【0028】
第1記憶部24は揮発メモリであるため、セキュリティ情報管理部13への電源供給が遮断されると、第1記憶部24内のKeyとKEKは消去されてしまう。そこで、本実施形態では、セキュリティ情報管理部13への電源供給が遮断される前に、第1記憶部24内のKeyとKEKを暗号化した上で、セキュリティ情報管理部13の外部のフラッシュメモリ14に待避させる。この待避処理を本実施形態ではエクスポート処理と呼ぶ。
【0029】
図7はエクスポート処理の処理手順の一例を示すフローチャートである。また、
図8は、エクスポート処理に関連する各部とバスを実線で示し、関連性の薄い各部とバスを破線で示したECU3のブロック図である。
【0030】
まず、メインCPU11は、セキュリティ情報管理部13への電源遮断要求があったか否かを判定する(ステップS21)。電源遮断要求がなければ、
図7の処理を終了する。電源遮断要求があった場合には、メインCPU11は、サブCPU21に対して、第1記憶部24内のKeyとKEKの読み出しと、第2記憶部25内のスクランブル鍵情報の読出とを指示する(ステップS22)。
【0031】
この指示を受けて、サブCPU21は、第1記憶部24内からKeyとKEKを読み出すとともに、第2記憶部25内からスクランブル鍵情報を読み出す(ステップS23)。次に、サブCPU21は、スクランブル鍵情報を用いてKeyを暗号化したScrambled Keyと、同じくスクランブル鍵情報を用いてKEKを暗号化したScrambled KEKを生成する(ステップS24)。このとき、AES処理部22により暗号化が必須である。また、CMAC処理部23でMACを生成してもよい。
【0032】
次に、メインCPU11は、サブCPU21が生成したScrambled KeyとScrambled KEKをフラッシュメモリ14に記憶する(ステップS25)。
【0033】
図7と
図8に示すように、セキュリティ情報管理部13の外部には、KeyとKEKをそれぞれ暗号化したScrambled KeyとScrambled KEKが出力され、Key、KEK及びスクランブル鍵情報は出力されない。よって、セキュリティ情報管理部13の外部で、Scrambled KeyとScrambled KEKを復号化することは困難であり、セキュリティ性能を向上できる。
【0034】
セキュリティ情報管理部13への電源供給が再開される場合は、セキュリティ情報管理部13内の第1記憶部24にKeyとKEKを再度記憶するインポート処理が行われる。インポート処理は、上述したエクスポート処理とは逆の処理である。
【0035】
図9はインポート処理の処理手順の一例を示すフローチャートである。インポート処理に関連する各部とバスの種類は、
図8と同様である。
図9の処理は、セキュリティ情報管理部13への電源供給が再開されたときに開始される。まず、メインCPU11は、フラッシュメモリ14内のScrambled KeyとScrambled KEKを読み出して、サブCPU21に転送するとともに、サブCPU21に対してkeyとKEKの復号処理を指示する(ステップS31)。
【0036】
この指示を受けて、サブCPU21は、第2記憶部25からスクランブル鍵情報を読み出す(ステップS32)。そして、サブCPU21は、スクランブル鍵情報を用いて、メインCPU11から送られてきたScrambled KeyとScramble KEKを復号して、KeyとKEKを取得する(ステップS33)。その後、サブCPU21は、取得したKeyとKEKを第1記憶部24に記憶する(ステップS34)。
【0037】
図9のインポート処理の際に、Scrambled KeyとScrambled KEKが改ざんされていないことをチェックするようにしてもよい。この場合、例えばMACを利用してチェックを行う。
図10は
図7のエクスポート処理の一変形例のフロートチャート、
図11は
図9のインポート処理の一変形例のフローチャートである。
図10のステップS21〜S23は
図7のステップS21〜S23と同様の処理である。ステップS24Aでは、Scrambled KeyとScrambled KEKを生成するだけでなく、Scrambled KeyとScrambled KEKに対するMAC(識別情報)をスクランブル鍵情報を用いて生成する。次に、Scrambled KeyとScrambled KEKとともに、生成したMACをフラッシュメモリ14に記憶する(ステップS25A)。
図11のインポート処理では、メインCPU11はサブCPU21に、フラッシュメモリ14内のScrambled Key、Scrambled KEK及びMACを送信する(ステップS31A)。次に、サブCPU21は、第2記憶部25からスクランブル鍵情報を読み出す(ステップS32)。次に、サブCPU21は、スクランブル鍵情報を用いて、ステップS31Aで受信されたScrambled KeyとScrambled KEKに対するMACを生成し、生成されたMACとステップS31Aで受信されたMACとが一致するか否かをチェックし、一致した場合には、受信されたScrambled KeyとScrambled KEKをスクランブル鍵情報を用いて復号して、KeyとKEKを取得する(ステップS33A)。次に、KeyとKEKを第1記憶部24に記憶する(ステップS34)。
【0038】
図12はデータを暗号化して他のECU3に送信する送信処理の処理手順の一例を示すフローチャートである。また、
図13は、送信処理に関連する各部とバスを実線で示し、関連性の薄い各部とバスを破線で示したECU3のブロック図である。まず、メインCPU11は、送信するべきユーザデータをサブCPU21に送信し、暗号化を指示する(ステップS41)。この指示を受けてサブCPU21は、第1記憶部24からKeyを読み出す(ステップS42)。次に、サブCPU21は、AES処理部22に対して、Keyを用いてユーザデータを暗号化するよう指示するとともに、CMAC処理部23に対して、Keyを用いてユーザデータのMACを生成するよう指示する(ステップS43)。
【0039】
AES処理部22は、以下の(5)式に基づいて、Encrypted User-dataを生成する。また、CMAC処理部23は、以下の(6)式に基づいて、MACを生成する。
Encrypted User-data=AES(User-data, Key) …(5)
MAC=CMAC(User-data, Key) …(6)
【0040】
サブCPU21は、AES処理部22が生成したEncrypted User-dataと、CMAC処理部23が生成したMACとをメインCPU11に送信する(ステップS44)。これらを受信したメインCPU11は、Encrypted User-dataとMACとをI/O部12とCAN4を介して、他のECU3に送信する(ステップS45)。
【0041】
このように、本実施形態では、セキュリティ情報管理部13内に、揮発性の第1記憶部24と不揮発性の第2記憶部25を設け、第1記憶部24にはKeyとKEKを記憶し、第2記憶部25にはスクランブル鍵情報を記憶する。そして、セキュリティ情報管理部13への電源供給を遮断する際には、スクランブル鍵情報を用いて、KeyとKEKをそれぞれ暗号化して、暗号化されたKeyとKEKを、セキュリティ情報管理部13の外部にあってメインCPU11により実行されるプログラム等を記憶するフラッシュメモリ14に記憶する。その後、セキュリティ情報管理部13への電源供給が再開されると、メインCPU11はフラッシュメモリ14内の暗号化されたKeyとKEKを読み出してセキュリティ情報管理部13に送る。セキュリティ情報管理部13内のサブCPU21は、第2記憶部25内のスクランブル鍵情報を用いて、暗号化されたKeyとKEKを復号して、第1記憶部24に記憶する。
【0042】
以上の処理を行うことで、セキュリティ情報管理部13への電源供給が遮断されても、KeyとKEKが失われることはない。また、本実施形態によれば、セキュリティ情報管理部13に、鍵情報を記憶するためのフラッシュメモリ14を設けなくて済み、装置コストを削減できる。さらに、セキュリティ情報管理部13の電源遮断時には、プロセッサが実行するプログラム等が記憶される既存のフラッシュメモリ14を流用して、暗号化されたKeyとKEKを記憶するため、これらの暗号化された鍵情報を記憶するための専用の不揮発メモリが不要となり、さらなる装置コストの削減が図れる。
【0043】
本実施形態では、セキュリティ情報管理部13への電源供給の遮断時にKeyとKEKを暗号化するのに用いるスクランブル鍵情報は、セキュリティ情報管理部13の外部へは出力されない。これにより、このスクランブル鍵情報を用いて暗号化されたKeyとKEKをセキュリティ情報管理部13の外部のフラッシュメモリ14に記憶したとしても、セキュリティ性能が低下するおそれはない。同様に、第1記憶部24に記憶されている平文のKeyとKEKもセキュリティ情報管理部13の外部には出力されないように管理されるため、データや鍵情報の改ざん等を防止できる。
【0044】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。