JP2019095969A - 半導体装置、認証システム及び認証方法 - Google Patents

半導体装置、認証システム及び認証方法 Download PDF

Info

Publication number
JP2019095969A
JP2019095969A JP2017223607A JP2017223607A JP2019095969A JP 2019095969 A JP2019095969 A JP 2019095969A JP 2017223607 A JP2017223607 A JP 2017223607A JP 2017223607 A JP2017223607 A JP 2017223607A JP 2019095969 A JP2019095969 A JP 2019095969A
Authority
JP
Japan
Prior art keywords
data
authentication
security module
hardware security
error detection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017223607A
Other languages
English (en)
Inventor
匡亮 谷本
Masaaki Tanimoto
匡亮 谷本
大輔 森山
Daisuke Moriyama
大輔 森山
良孝 多木
Yoshitaka Taki
良孝 多木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2017223607A priority Critical patent/JP2019095969A/ja
Priority to US16/137,346 priority patent/US10949527B2/en
Priority to KR1020180138975A priority patent/KR20190058302A/ko
Priority to EP18206955.9A priority patent/EP3486832B1/en
Priority to CN201811383641.4A priority patent/CN109815046A/zh
Publication of JP2019095969A publication Critical patent/JP2019095969A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Quality & Reliability (AREA)

Abstract

【課題】機能安全が考慮されたセキュアなデータ授受を行うことができる半導体装置を提供する。【解決手段】半導体装置は、認証処理を行うハードウェアセキュリティモジュール回路と、少なくともハードウェアセキュリティモジュール回路で処理される第1のデータに対してエラー検出処理を行うために使用されるエラー検出回路とを有する。エラー検出回路に関するメモリ領域は、少なくとも第1のデータに対してエラー検出処理が行われる際に、ハードウェアセキュリティモジュール回路からのみアクセス可能となるように構成されている。【選択図】図1

Description

本発明は、半導体装置、認証システム及び認証方法に関し、例えばハードウェアセキュリティモジュール回路を有する半導体装置、認証システム及び認証方法に関する。
機器間でデータを授受する場合においてセキュアなデータロード方式が提案されている。例えば、特許文献1は、公開鍵・秘密鍵によるデジタル署名及びMAC(Message Authentication Code;メッセージ認証コード)値をデータに付加したデータ構造と、本構造を用いてデータロード時に認証処理又はデータ改竄有無確認を実施する方法とを開示する。また、特許文献2は、車載ネットワークでの不正なフレームを検知するための検知ルールの更新を可能とする技術を開示する。
また、誤り符号訂正技術を取り入れた暗号復号方式が提案されている。特許文献3は、誤り符号訂正技術を取り入れた暗号復号方式を開示する。特許文献3においては、平文に誤り符号化処理を施し、この誤り符号化データに対して訂正可能な範囲でのランダムビットエラーを起こした後で暗号化して暗号文を作成する。また、この暗号文を復号し、復号化後に誤り符号訂正を施して、平文を得る。
特許第4856080号公報 特開2016−134914号公報 特開2002− 77135号公報
上記の特許文献1及び2にかかる技術では、通信におけるデータ誤り又はハードウェア故障によるデータ誤りに対する有無確認又は誤り符号といった、機能安全面への対応について考慮されていない。また、上記の特許文献3にかかる技術では、誤り符号訂正は暗号解読法への対策を目的として導入されており、機能安全面への対応のためになされたわけではない。したがって、上記の特許文献にかかる技術では、機能安全が考慮されたセキュアなデータ授受を行うことができないおそれがあった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、認証処理を行うハードウェアセキュリティモジュール回路と、少なくとも前記ハードウェアセキュリティモジュール回路で処理される第1のデータに対してエラー検出処理を行うために使用されるエラー検出回路とを有し、前記エラー検出回路に関するメモリ領域は、少なくとも前記第1のデータに対して前記エラー検出処理が行われる際に、前記ハードウェアセキュリティモジュール回路からのみアクセス可能となるように構成されている半導体装置である。
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本態様としては有効である。
前記一実施の形態によれば、機能安全が考慮されたセキュアなデータ授受を行うことができる。
実施の形態1にかかる半導体装置のハードウェア構成を示す図である。 実施の形態1にかかるハードウェアセキュリティモジュール回路のハードウェア構成を示す図である。 実施の形態1にかかる、アクセス制御回路を有する半導体装置を示す図である。 実施の形態1にかかる、アクセス制御回路を有する半導体装置を示す図である。 図3及び図4に示されたアクセス制御回路に設けられる属性制御ステートマシンを示す図である。 図5に示した属性制御ステートマシンによって実現される状態遷移図である。 (R,W,E)属性制御機構とメモリ空間との接続構成の一例を示す。 実施の形態1にかかる、ハードウェアセキュリティモジュール回路、エラー検出回路に設けられたアクセス制御回路、及びCPUに設けられたアクセス制御回路の接続構成を示す図である。 図4に示した、複数の構成要素にアクセス制御回路が設けられる場合の、データ読出しユニット及び命令フェッチユニットの構成を示す図である。 実施の形態1にかかるデータ授受シーケンスが行われる認証システムを示す図である。 実施の形態1にかかるデータ授受シーケンスを示すシーケンス図である。 実施の形態1にかかるデータ授受シーケンスを示すシーケンス図である。 実施の形態1にかかるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態1の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2にかかる認証システムにおいて実行されるデータ授受シーケンスである。 実施の形態2にかかる認証システムにおいて実行されるデータ授受シーケンスである。 実施の形態2にかかる認証システムにおいて実行されるデータ授受シーケンスである。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態2の変形例にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。 実施の形態3にかかる認証システムにおいて実行されるデータ授受シーケンスを示すシーケンス図である。
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
(実施の形態の概要)
本実施の形態の説明に先立って、本実施の形態の概要について説明する。
機能安全対応では、授受データの保護が重要である。つまり、エラーに対して授受データが破壊されないようにすることが望まれる。したがって、データ送信側での適切なCRC(Cyclic Redundancy Check)又はECC(Error−Correction Code)の付加(エラー検出用データの付加)、及び、データ受信側での適切なCRC又はECCのチェックが必要となる。
以下に説明する実施の形態では、データ受信側でのCRC又はECCの処理をHSM(Hardware Security Module;ハードウェアセキュリティモジュール)以外から隠蔽することで、改竄耐性に加えて秘匿性まで保証可能なデータ授受シーケンスを実現可能である。また、本実施の形態では、HSM専用のCRC又はECCの処理機構が、ソフトウェア又はハードウェアで設けられている。なお、このようなHSM専用の処理機構が設けられていない場合、機能安全対応で改竄耐性を持つデータ授受シーケンスが構成可能であるが、秘匿耐性が実現できないおそれがある。これに対し、本実施の形態では、HSMに専用のCRC又はECCの処理機構をソフトウェア又はハードウェアにより具備する構成、及び当該構成により機能安全対応で改竄耐性及び秘匿性を持つデータ授受シーケンスを開示する。
ここで、授受対象のデータはプログラムを含むものとする。また、以下に示すデータ授受シーケンスは、機能安全対応のセキュアなデータの格納及びプログラムの格納を含み、特に、プログラム保護のための、実行可能であるが読出し不可なメモリ領域への格納を含む。
また、本実施の形態では、データ格納において、格納先の(R,W,E)属性(アクセス属性)の指定が、W不可やR不可となっている場合であっても、機能安全対応かつセキュアな書込みが可能である。ここで、R,W,Eは下記を表す。
R:読出し可否の指定: 1で可能、0で不可
W:書込み可否の指定: 1で可能、0で不可
E:実行可否の指定: 1で可能、0で不可
つまり、アクセス属性は、そのメモリ領域に格納されたデータの読出しが可能であるか否か、そのメモリ領域にデータの書込みが可能であるか否か、及び、そのメモリ領域に格納されたデータ(プログラム)の実行が可能であるか否か、を示している。
(R,W,E)属性指定は、例えばUNIX(登録商標)又はLinux(登録商標)などが提供するソフトウェアでの属性設定変更手段を用いてもよいし、以下に説明する本実施の形態における(R,W,E)属性制御機構を用いてもよい。特に、ソフトウェアで(R,W,E)属性の設定変更が可能な場合は、チャレンジレスポンスなどの適切な暗号認証を伴う(R,W,E)属性変更機構であることが望ましい。
本実施の形態において、アクセス制御機構の利用を前提とする記述があるが、アクセス制御機構としては、例えば、SELinuxが提供する強制アクセス制御機構での実現であってもよいし、ATMega128が提供するようなメモリ領域毎のロックビット設定による方式であってもよい。また、本実施の形態で開示する(R,W,E)属性制御機構と既存のアクセス制御機構の併用による実現であってもよい。特に、ソフトウェアでアクセス制御設定変更が可能な場合は、チャレンジレスポンスなどの適切な暗号認証を伴うアクセス制御機構であることが望ましい。
また、本実施の形態において、(R,W,E)属性及びアクセス制御の設定は、HSMに内蔵されたCPU又は制御ステートマシンによって行われてもよいし、HSMの外部の非セキュア部に配置されたCPUによって行われてもよい。いずれの場合であっても、この設定を実行するソフトウェアは、その実行に先立ってセキュアブートなどで改竄がないことが確認されているものとする。なお、HSMでの実行の場合は、HSMに内蔵されたCPU又は制御ステートマシンが実行するものとする。
(実施の形態1)
図1は、実施の形態1にかかる半導体装置1のハードウェア構成を示す図である。半導体装置1は、例えば、車両等に搭載されるMCU(Micro Control Unit;マイクロコントローラ)である。半導体装置1は、CPU2と、プログラムメモリ3と、エラー検出回路4と、入出力インタフェース5(入出力I/F)と、ワークメモリ6と、ハードウェアセキュリティモジュール回路10(HSM)とを有する。CPU2、プログラムメモリ3、エラー検出回路4、入出力インタフェース5、ワークメモリ6、及びハードウェアセキュリティモジュール回路10は、バス9を介して互いに接続されている。なお、半導体装置1のハードウェアセキュリティモジュール回路10以外の構成要素(特にメモリ領域)を、非セキュア部と称することがある。
CPU2は、演算処理及びプログラムの実行処理を行う。プログラムメモリ3は、CPU2で実行されるプログラムを格納する。ワークメモリ6は、プログラムの実行などの処理を実行する際に用いられる。入出力インタフェース5は、外部との入出力を行うための処理を行う。なお、入出力インタフェース5には、パケットに対して、プロトコルで規定されるCRC/ECCを処理するための機能が具備されているものとする。
エラー検出回路4は、半導体装置1で処理されるデータに対してエラー検出処理(CRC/ECC処理)を行う。具体的には、エラー検出回路4は、半導体装置1の内部のバス9上の通信データに対するCRC/ECCの生成及び付加(エラー検出用データの生成及び付加)、及びCRC/ECCの処理(チェック)を行う。また、エラー検出回路4は、入出力インタフェース5とやり取りするデータに対するCRC/ECCの生成及び付加、及びCRC/ECCの処理(チェック)を行う。
また、半導体装置1は、ハードウェアセキュリティモジュール回路10に専用の専用エラー検出回路8を有してもよい。専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10とのみ接続されている。したがって、専用エラー検出回路8には、ハードウェアセキュリティモジュール回路10のみが、アクセス可能である。言い換えると、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10に専用のハードウェア回路である。専用エラー検出回路8は、エラー検出回路4と実質的に同様の機能を有する。
したがって、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10で処理されるデータ(第1のデータ)に対してエラー検出処理を行う。つまり、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10におけるセキュリティ関連処理で実行されるCRC/ECC処理(エラー検出処理)に用いられる。そして、専用エラー検出回路8に関するメモリ領域は、ハードウェアセキュリティモジュール回路10によってCRC/ECC処理が実行されているとき、ハードウェアセキュリティモジュール回路10からのみアクセス可能となるように構成されている。
ここで、専用エラー検出回路8が配置されていない場合、エラー検出回路4が、ハードウェアセキュリティモジュール回路10におけるセキュリティ関連処理で実行されるCRC/ECC処理(エラー検出処理)に用いられ得る。つまり、実施の形態1にかかるエラー検出回路4は、少なくともハードウェアセキュリティモジュール回路10で処理されるデータ(第1のデータ)に対してエラー検出処理を行う。この場合、ハードウェアセキュリティモジュール回路10によってCRC/ECC処理が実行されているとき、CPU2は、適切なアクセス制御により、エラー検出回路4に関するデータへのアクセスが禁止されているように構成されている。なお、アクセス制御は、ハードウェアセキュリティモジュール回路10によって、後述する授受シーケンス内で設定されることが望ましい。
図2は、実施の形態1にかかるハードウェアセキュリティモジュール回路10のハードウェア構成を示す図である。ハードウェアセキュリティモジュール回路10は、CPU11と、入出力インタフェース12(入出力I/F)と、暗号処理部13と、ワークメモリ14と、コード用不揮発性メモリ15と、データ用不揮発性メモリ16とを有する。
CPU11は、演算処理を行う。具体的には、CPU11は、後述するデータ授受シーケンスで実行される処理(アクセス制御等)を行う。なお、ハードウェアセキュリティモジュール回路10は、CPU11を有しなくてもよい。この場合、ハードウェアセキュリティモジュール回路10は、何らかの制御ステートマシンを有してもよい。
入出力インタフェース12は、外部との入出力を行うための処理を行う。暗号処理部13は、暗号化、復号化又は認証処理等の暗号処理を行う。また、暗号処理部13は、署名検証を行うための処理を行ってもよい。ワークメモリ14は、ハードウェアセキュリティモジュール回路10における処理を実行する際に用いられる。コード用不揮発性メモリ15は、ハードウェアセキュリティモジュール回路10で実行されるコードを格納する。データ用不揮発性メモリ16は、ハードウェアセキュリティモジュール回路10における処理で用いられるデータを格納する。
なお、コード用不揮発性メモリ15及びデータ用不揮発性メモリ16は、それらの一部の領域がハードウェアセキュリティモジュール回路10の外部から何らの認証なしにアクセス可能に構成されていてもよい。つまり、コード用不揮発性メモリ15及びデータ用不揮発性メモリ16の一部の領域は、保護されていなくても(セキュアでなくても)よい。言い換えると、コード用不揮発性メモリ15及びデータ用不揮発性メモリ16は、それらの一部の領域が、セキュリティ領域として、ハードウェアセキュリティモジュール回路10の管理下となるように配置されていてもよい。
ここで、実施の形態1にかかる動作の概要について説明する。
半導体装置1が専用エラー検出回路8を有している場合、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10内で復号されたデータに付加されたECC/CRC値を用いたECC/CRCチェック処理を行う。また、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10内での暗号化対象データにECC/CRC値を生成(発行)し、生成されたECC/CRC値を暗号化対象データに付加して暗号化を行う。
一方、半導体装置1が専用エラー検出回路8を有していない場合、バス9に接続されたエラー検出回路4が、上述した専用エラー検出回路8の処理と同様の処理を行う。ここで、ハードウェアセキュリティモジュール回路10での復号データを対象としたECC/CRCチェックは、エラー検出回路4がハードウェアセキュリティモジュール回路10のみからアクセス可能となるように制御することで、実現され得る。同様に、暗号化処理は、ハードウェアセキュリティモジュール回路10からのみアクセス可能となるように制御することで、実現され得る。なお、アクセス制御の詳細については後述する。
機能安全対応では、授受データの保護が重要であり、したがって、データ送信側での適切なCRC又はECCの付加と、データ受信側での適切なCRC又はECCのチェックとが必要となる。このとき、これらの処理を行うエラー検出回路は、ハードウェアセキュリティモジュール回路10以外からのアクセスが禁止されていることで、セキュリティ(秘匿性)が向上する。したがって、本実施の形態にかかる半導体装置1は、機能安全が考慮されたセキュアなデータ授受を行うことができる。
ここで、専用エラー検出回路8を具備する半導体装置1では、ハードウェア構成を拡張することで、上記の処理を実現可能としている。したがって、CRC/ECC付加及びCRC/ECCチェック(エラー検出処理)の際に、専用エラー検出回路8は、ハードウェアセキュリティモジュール回路10以外からのアクセスが禁止される。したがって、本実施の形態にかかる半導体装置1は、機能安全が考慮されたセキュアなデータ授受を行うことができる。そして、専用エラー検出回路8を設けることによって、後述するようなアクセス制御を行うことが不要となる。したがって、アクセス制御を行う場合と比較して処理内容が簡素となる。
また、半導体装置1が専用エラー検出回路8を具備しない場合、つまりハードウェア構成を拡張しない場合、エラー検出回路4は、適切なアクセス制御によってハードウェアセキュリティモジュール回路10からのみアクセス可能とする。これにより、CRC/CC付加及びCRC/ECCチェック(エラー検出処理)の際に、エラー検出回路4は、ハードウェアセキュリティモジュール回路10以外からのアクセスが禁止される。したがって、本実施の形態にかかる半導体装置1は、機能安全が考慮されたセキュアなデータ授受を行うことができる。また、アクセス制御を行うことで、専用エラー検出回路8を設けることが不要となるので、専用エラー検出回路8を設ける場合と比較して、半導体装置1のハードウェア構成が簡素となる。つまり、エラー検出回路4が、ハードウェアセキュリティモジュール回路10以外に関する処理も行い得る構成のままで、セキュリティの低下を抑制しつつ、機能安全に対応することができる。
(アクセス制御)
次に、アクセス制御について説明する。
図3及び図4は、実施の形態1にかかる、アクセス制御回路を有する半導体装置1を示す図である。アクセス制御回路20は、保護が要求される構成要素に設けられる。また、アクセス制御回路40は、CPU2(バスマスタ)に設けられる。図3に示す半導体装置1は、エラー検出回路4のみにアクセス制御回路20が設けられるように構成されている。言い換えると、図3に示す例では、エラー検出回路4のみが、アクセス制御(強制アクセス制御)の対象となっている。
一方、図4に示す半導体装置1は、エラー検出回路4だけでなく複数の構成要素にアクセス制御回路20(アクセス制御回路20A〜20D)が設けられるように構成されている。言い換えると、図4に示す例では、エラー検出回路4を含む複数の構成要素が、アクセス制御(強制アクセス制御)の対象となっている。なお、図4では、全ての構成要素にアクセス制御回路20が設けられているが、保護の必要がない構成要素には、アクセス制御回路20を設けなくてもよい。なお、図4に示す例では、アクセス制御回路20の配置数に応じてアクセス制御回路40を構成してもよい。なお、CPU2(バスマスタ)が複数ある場合は、それぞれのCPU2(バスマスタ)にアクセス制御回路40を設けてもよい。
図5は、図3及び図4に示されたアクセス制御回路20に設けられる属性制御ステートマシン22を示す図である。図5に示した属性制御ステートマシン22は、上述した(R,W,E)属性制御機構の一例である。属性制御ステートマシン22は、(R,W,E)値をレジスタ設定するためのステートマシンである。属性制御ステートマシン22は、CPU2等から(R_in,W_in,E_in)の3bit入力信号を受けると状態遷移を実施し、遷移先の状態を(R_out,W_out,E_out)として3bit信号を出力する。なお、(R_in,W_in, E_in)の値は、CPU2等からのレジスタ設定で更新され得る。
また、属性制御ステートマシン22は、状態遷移が発生する度に不揮発性メモリに更新された状態を格納するハードウェア制御機構である状態保持レジスタを有する。電源遮断又はリセット等が発生すると、状態保持レジスタの値は(0,0,0)に一旦初期化される。一方、電源が投入されると、状態保持レジスタは、発生する起動信号を検知し、不揮発性メモリへ格納した値を読み出し設定する。なお、状態格納読出し先の不揮発性メモリ領域へのアクセス保護を目的として、本機構及び不揮発性メモリ領域を、ハードウェアセキュリティモジュール回路10からのみアクセス可能としてもよい。
図6は、図5に示した属性制御ステートマシン22によって実現される状態遷移図である。各状態S0〜S7の状態(R,W,E)を、以下に示す。なお、R,W,Eは、それぞれ、「1」で実行可能であり、「0」で実行不可である。
S0:(1,1,1):全実行可能
S1:(1,1,0):読出し可能及び書込み可能
S2:(1,0,1):読出し可能及び実行可能
S3:(1,0,0):読出し可能
S4:(0,1,0):書込み可能
S5:(0,0,1):実行可能
S6:(0,0,0):全実行不可
S7:(0,1,1):書込み可能及び実行可能
ここで、状態S0が初期状態である。また、状態S7では、攻撃者等がプログラムを書き込んでそのプログラムを実行すると、システムに多大な影響を及ぼすおそれがある。したがって、状態S7には遷移しない。また、状態S6にも遷移しない。なお、状態S5では、プログラム(命令)を実行するためだけにプログラム(命令)を読み出すこと(フェッチ)は可能である。
図6に示すように、S0から、S0,S1,S2,S3,S4,S5に遷移し得る。S1から、S1,S2,S3,S5に遷移し得る。S2から、S1,S2,S4,S5に遷移し得る。S3から、S3,S4,S5に遷移し得る。S4から、S3,S4,S5に遷移し得る。そして、S5からは、S5にのみ遷移し得る。つまり、S1とS2との間での遷移及びS3とS4と間での遷移が認められている以外は、より厳しい(つまり可能な動作の多くない)(R,W,E)属性への変更のみが許容されている。なお、図6では、S1とS2との間での遷移が認められているとしたが、S1とS2との間での遷移は、認められていなくてもよい。
このように、本実施の形態にかかる属性制御ステートマシン22は、電源遮断又はリセット後の状態再設定により、より厳しい(R,W,E)属性に一旦遷移すると、それより厳しい属性へのみ遷移可能である。つまり、本実施の形態にかかる属性制御ステートマシン22は、第1の状態から、第1の状態よりも可能な動作が多くない第2の状態に遷移可能である。したがって、堅牢なハードウェア機構となっている。さらに、この属性制御ステートマシン22を有するアクセス制御回路20を、高々メモリ領域の数だけ配置することで、保護が必要となる各メモリ領域の(R,W,E)属性制御を行うことが可能となる。例えば、Bootloaderなどクリティカルなソフトウェアを配置する不揮発性メモリ領域を、本実施の形態にかかるアクセス制御回路20によって、ソフトウェア書込み(S1orS4)→読出しによる書込み確認(S1orS3)→実行のみ許可(S5)と制御することで、ソフトウェアの盗用及びソフトウェアによる攻撃を抑制することが可能となる。
図7は、(R,W,E)属性制御機構とメモリ空間との接続構成の一例を示す。図7に示す接続構成は、図5に示した属性制御ステートマシン22の信号に加えて、以下に示す信号を用いて構成される。
D_inは、メモリ(保護対象のメモリ領域)への入力データ信号である。D_outは、メモリからの出力データ信号である。Dec_Addr[i]は、メモリ内で生成するアドレスのデコード信号である。ここで、Dec_Addr[i]が「1」であるとき、入力アドレスが該当メモリエレメント[i]を指し示すことを示す。Dec_Addr[i]が「0」であるとき、入力アドレスが該当メモリエレメント[i]を指し示さないことを示す。
また、R_dec:=Dec_Addr[i] ∧ R_outである。また、W_dec:=Dec_Addr[i] ∧ W_outである。また、R_out’は、複数の対象メモリ領域のうち、アドレス上位ビット列などで識別される領域に付随するR_outであるが、(R,W,E)属性の指定対象外の場合は「1」となる信号である。E_out’は、複数の対象メモリ領域のうち、アドレス上位ビット列などで識別される領域に付随するE_outであるが、(R,W,E)属性の指定対象外の場合は「1」となる信号である。
図7に記載された構成により、W_outが1のときのみ、セレクタ23によって、メモリセル/レジスタ24内の、アドレスで指定された対象メモリ領域内へデータが書き込まれる。また、R_out及びE_outの少なくとも一方が1のときのみ、メモリセル/レジスタ24から、セレクタ25によって、データの読み出しがなされる。
読み出されたデータは、バス9を介して、例えばCPU2等に転送される。このとき、CPU2に設けられたデータ読出しユニット41は、R_outが1のとき(又は(R,W,E)属性の指定対象外の場合)のみ、セレクタ42によってデータの読み出しが可能である。また、命令フェッチユニット43は、E_outが1のとき(又は(R,W,E)属性の指定対象外の場合)のみ、セレクタ44によって命令フェッチが可能である。このとき、CPU2は、読出しデータを命令として実行することが可能である。ここで、DMAC(Direct Memory Access Controller)などのバスマスタを用いた場合でも同様なデータ読み出し制御がなされる。
このように、図6及び図7に示した構成を組み合わせることで、(R,W,E)属性にあった実行のみが可能となる。つまり、図6及び図7に示した構成を組み合わせることで、保護が必要となる各メモリ領域の(R,W,E)属性制御が可能となり、適切なアクセス権限を持つハードウェア又はソフトウェアのみが、保護が必要となるメモリ領域への読出し、実行、書込み、の動作を行うことが可能となる。上述したように、一旦、より厳しいアクセス制限が設定されると、(R,W,E)属性制御への入力信号または入力レジスタ設定変更では、より柔軟なアクセス制限には戻せない。そして、このアクセス制限が、電源遮断又はリセットを実施しても維持され得る。仮に、OS(Operating System)が、クラックされ、不正に特権昇格がなされ、悪意あるソフトウェアが実行されたとしても、(R,W,E)属性制御が定めた保護対象領域のアクセス制御に従ったアクセスしか、悪意あるソフトウェアは実行できない。したがって、適切なアクセス制御でのメモリ保護が可能となる。したがって、この図6及び図7に示した構成を図3に適用することで、ハードウェアセキュリティモジュール回路10のみからエラー検出回路4へのアクセスが実現可能となる。以下、説明する。
図8は、実施の形態1にかかる、ハードウェアセキュリティモジュール回路10、エラー検出回路4に設けられたアクセス制御回路20、及びCPU2に設けられたアクセス制御回路40の接続構成を示す図である。図8に示す接続構成は、図5に示した属性制御ステートマシン22の信号に加えて、以下に示す信号を用いて構成される。
D_inは、セレクタ23に入力される、メモリへの入力データ信号である。D_outは、セレクタ25から出力される、メモリからの出力データ信号である。また、R_HSMは、ハードウェアセキュリティモジュール回路10内で発行(生成)された強制Read信号である。R_HSMは、「1」のとき読出しが実行可能であり、「0」のとき読出しが実行不可であることを示す。また、W_HSMは、ハードウェアセキュリティモジュール回路10内で発行(生成)された強制Write信号である。W_HSMは、「1」のとき書込みが実行可能であり、「0」のとき書込みが実行不可であることを示す。
また、R_e=R_out ∨ R_HSMであり、R_eは、「1」のとき読出しが実行可能であり、「0」のとき読出しが実行不可であることを示す。W_e=W_out ∨ W_HSMであり、W_eは、「1」のとき書込みが実行可能であり、「0」のとき書込みが実行不可であることを示す。また、Dec_Addr[i]は、メモリ内で生成するアドレスのデコード信号である。ここで、Dec_Addr[i]が「1」であるとき、入力アドレスが該当メモリエレメント[i]を指し示すことを示す。Dec_Addr[i]が「0」であるとき、入力アドレスが該当メモリエレメント[i]を指し示さないことを示す。
また、R_e2:=Dec_Addr[i] ∧ R_eである。また、W_e2:=Dec_Addr[i] ∧ W_eである。また、E_e2:=Dec_Addr[i] ∧ E_outである。また、Dec_UpperAddr[j]は、対象メモリ領域は複数存在し得るため、アドレス上位ビット列などで対応する領域を識別するためのアドレスデコード信号である。また、R_e’:=Dec_UpperAddr[j] ∧ R_eである。R_e’は、複数の対象メモリ領域のうち、アドレス上位ビット列などで識別される領域に付随するR_eであるが、(R,W,E)属性の指定対象外の場合は「1」となる信号である。また、E_out’:=Dec_UpperAddr[j] ∧ E_outである。E_out’は、複数の対象メモリ領域のうち、アドレス上位ビット列などで識別される領域に付随するE_outであるが、(R,W,E)属性の指定対象外の場合は「1」となる信号である。
図8に記載された構成により、W_out及びW_HSMの少なくとも一方が1のときのみ、セレクタ23によって、メモリセル/レジスタ24内の、アドレスで指定した対象メモリ領域内へデータが書き込まれる。つまり、(R,W,E)属性でR_out指定値が0であっても、ハードウェアセキュリティモジュール回路10が強制的に書込み可能とすることができる。また、R_out、E_out、R_HSMの少なくともいずれかが1のときのみ、メモリセル/レジスタ24から、セレクタ25によって、データが読み出される。つまり、(R,W,E)属性でR_out指定値及びE_out指定値の両方が0であっても、ハードウェアセキュリティモジュール回路10が強制的に読み出し可能とすることができる。
読み出されたデータは、バス9を介して、例えばCPU2等に転送される。このとき、CPU2に設けられたアクセス制御回路40のデータ読出しユニット41は、R_out及びR_HSMの少なくとも一方が1のとき(又は(R,W,E)属性の指定対象外の場合)のみ、セレクタ42によってデータの読み出しが可能である。つまり、(R,W,E)属性でR_out指定値が0であっても、ハードウェアセキュリティモジュール回路10が強制的にCPU2でのデータの読み出しを可能とすることができる。一方、アクセス制御回路40の命令フェッチユニット43は、E_outが1のとき(又は(R,W,E)属性の指定対象外の場合)のみ、セレクタ44によって命令フェッチが可能である。つまり、CPU2は、読出しデータを命令として実行する事が可能である。
このように、図6及び図8に示した構成を組み合わせることで、図7に示した構成による効果に加えて、(R,W,E)属性が何であれ、ハードウェアセキュリティモジュール回路10内で生成する信号R_HSM及びW_HSMによる、対象メモリ領域への読み出し及び書込みの実行が可能となる。つまり、図8に示した構成によって、ハードウェアセキュリティモジュール回路10のみからは、(R,W,E)属性制御で定められた保護対象領域のアクセス制御を無視したメモリ領域への読出し、実行、書込み、の動作を行うことが可能となる。これにより、書込み不可となった領域へのデータ又はプログラムの書込みなどが、実現可能となる。通常、プログラムの秘匿性を保証する目的で実行のみ可能とした場合、そのプログラムの更新が不可能となるが、図8に示した構成では、ハードウェアセキュリティモジュール回路10からのみ更新可能となる。ここで、このようなアクセス制御を無視したハードウェアセキュリティモジュール回路10からの保護対象メモリ領域へのデータ書込みは、後述するデータ授受シーケンス内でのみ実施されることが望ましい。そして、この図6及び図8に示した構成を図3に適用することで、ハードウェアセキュリティモジュール回路10のみからエラー検出回路4へのアクセスが実現可能となる。
図9は、図4に示した、複数の構成要素にアクセス制御回路20が設けられる場合の、データ読出しユニット41及び命令フェッチユニット43の構成を示す図である。図9は、2つのアクセス制御回路20A,20B((R,W,E)属性制御機構#1)から、それぞれ、R_eA,E_outA及びR_eB,E_outBが受信される構成を示している。また、Dec_UpperAddr[j]は、アクセス制御回路20Aに関する領域を識別するためのアドレスデコード信号である。Dec_UpperAddr[i]は、アクセス制御回路20Bに関する領域を識別するためのアドレスデコード信号である。
図9に示すように、データ読出しユニット41は、アクセス制御回路20A,20Bごとに、セレクタ42A,42Bを有する。セレクタ42Aは、アクセス制御回路20Aにおいて、R_out及びR_HSMの少なくとも一方が1のとき(R_eA=1)のみ、データを読み出す。また、セレクタ42Bは、アクセス制御回路20Bにおいて、R_out及びR_HSMの少なくとも一方が1のとき(R_eB=1)のみ、データを読み出す。そして、セレクタ51は、アドレスデコード信号(Dec_UpperAddr[j]又はDec_UpperAddr[i])に応じて、セレクタ42A又はセレクタ42Bから読み出されたデータを出力する。
また、命令フェッチユニット43は、アクセス制御回路20A,20Bごとに、セレクタ44A,44Bを有する。セレクタ44Aは、アクセス制御回路20Aにおいて、E_outAが1のときのみ、命令フェッチを行う。また、セレクタ44Bは、アクセス制御回路20Bにおいて、E_outBが1のときのみ、命令フェッチを行う。そして、セレクタ53は、アドレスデコード信号(Dec_UpperAddr[j]又はDec_UpperAddr[i])に応じて、セレクタ44A又はセレクタ44Bから読み出されたデータを出力する。
なお、図9には、2つのアクセス制御回路20A,20B((R,W,E)属性制御機構#1)から、それぞれ、R_eA,E_outA及びR_eB,E_outBを受信する構成の例が示されているが、アクセス制御回路20の個数は任意である。N個(N>2の整数)のアクセス制御回路20への拡張は、上位アドレスデコード結果信号を追加し、バス9からの読出し制御部(セレクタ42,44)を追加し、最終段のセレクタ51,53を、N個のアドレスデコード結果に応じて、1つの信号出力を行うセレクタに置き換えることで、実現可能である。
(データ授受シーケンス)
次に、実施の形態1にかかる半導体装置1によってなされるデータ授受シーケンスについて説明する。以下に説明するデータ授受シーケンスは、改竄耐性及び秘匿性を持つ機能安全考慮のデータ授受プロトコルの動作である。ここで、機能安全考慮とは、通信路でのデータ誤り及びハードウェア故障でのデータ誤りへの対応を示す。
図10は、実施の形態1にかかるデータ授受シーケンスが行われる認証システム100を示す図である。認証システム100は、例えば、自動車等の車両に適用される車載ネットワークシステムである。認証システム100は、サーバ104、機器A102(第1の機器)及び機器B110(第2の機器)を有する。
機器A102及び機器B110は、車両内部に設けられている。サーバ104は、車両の外部に設けられている。機器A102は、例えば、車両の外部(サーバ104等)からの信号を受信するゲートウェイ(セントラルゲートウェイ)である。機器B110は、例えば、車両の各部品(ブレーキ、モータ、エンジン、ステアリング等)を制御するMCUである。機器A102は、サーバ104と無線等を介して通信可能に接続されている。機器A102と機器B110とは、有線又は無線を介して通信可能に接続されている。また、機器B110は、実施の形態1にかかる半導体装置1に対応する。つまり、機器A102は、半導体装置1の外部の機器である。機器B110は、ハードウェアセキュリティモジュール回路10と、ハードウェアセキュリティモジュール回路10以外の非セキュア部120(CPU2、プログラムメモリ3、エラー検出回路4、入出力インタフェース5、ワークメモリ6等)とを有する。なお、機器A102も、機器B110と同様の構成要素を有してもよい。
図11〜図13は、実施の形態1にかかるデータ授受シーケンスを示すシーケンス図である。なお、機器A102及び機器B110に対する共通対称鍵の初期設定として、下記設定が事前になされているものとする。
セキュリティパラメータをk(k=128又は256)とし、機器A102は、1^kを入力とする。機器A102は、認証識別子IDi∈{0,1}^kが割り振られている機器B110に対して対称鍵ski←{0,1}^k(つまりskiのビット長はk)を選び、(ski,IDi)を送付する。機器B110は、(ski,IDi)を不揮発性メモリに保存する。また、機器B110は、認証識別子IDiの集合IDを機器A102に送付する。ここで、機器B110の総数をNとし、i∈[1,N]とする。例えば、機器B110を出荷する前にこれらの初期設定を実行することで、各機器B110に個別の鍵を設定するとともに、機器A102に同鍵を格納してもよい。また、機器B110の非セキュア部120は、機器B110に内蔵されたハードウェアセキュリティモジュール回路10に格納されたIDiを読み出すことが可能であるとする。但し、上書き変更や消去は、適切なアクセス制御によりできないものとする。
(1)機器認証情報の機器Aでの構築:
機器B110の非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを取得する(ステップS101)。非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを読み出してもよいし、ハードウェアセキュリティモジュール回路10からIDiを受信してもよい。非セキュア部120は、IDiを得ると、セッション管理のためにセッション情報rp∈{0,1}^kを選択し(ステップS102)、(1,rp,IDi)を機器A102に送付する(ステップS103)。ここで、「1」は、セッション情報rpにおける1番目の処理を示す。機器A102は、(1,rp,IDi)を受け取ると、下記の処理を実施する(ステップS104)。これにより、機器B110が認証される。
1.rp,IDi∈{0,1}^kであるか、そしてIDi∈IDであるかを検証する。つまり、rp,IDiのビット長の検証及びIDiが登録されたものであるか否かの検証を行う。もし異なっていれば処理を終了する。もし満たしていれば、以下を実行する。
2.現在の時刻をtss←TimeStampとして選ぶ。
3.乱数をrh1←{0,1}^kとして選ぶ。
4.送信データdataに対して、CRCまたはECCを算出し、例えばCRCを算出したとして、data_crc:=CRC(data)とする。
5.c1:=AE.Enc(ski,tss||IDi||rh1||data||data_crc)を計算する。
そして、機器A102は、Data1:=(tss,IDi,c1)として、機器B110の非セキュア部120に、(1,rp,Data1)を送付する(ステップS105)。ここで、演算子「||」はビット連接を表す。また、c1は、認証付き暗号データである。また、AE.Encは、認証付き暗号であり、AES−GCM又はAES−CCMであってもよい。
あるいは、AE.Encは、例えば暗号とCMAC値との組合せとして、例えば下記で構成されていてもよい。これは、特に、認証付き暗号が使用できない場合等に効果的である。
乱数をrh0←{0,1}^mとして選ぶ。ここで、m:=sizeof(data||data_crc)である。
r1’:=PRF(ski,tss||IDi||rh1||rh0||2)
c1’:=Enc(r1’,tss||IDi||rh1||data||data_crc)
r1:=PRF(ski,tss||IDi||rh1||c1’||1)
この場合、Data1内のc1は、c1:=(rh1,rh0,c1’,r1)となる。ここで、PRFは疑似ランダム関数であり、CMAC値として用いている。また、Encは共通鍵ブロック暗号であり、例えばAES−CBCである。なお、r1’は、疑似ランダム関数用の、署名を発行するための共通鍵であり、r1は、署名付きの暗号結果である。
(2)機器Bでのデータ復号とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data1を格納するメモリ領域の(R,W,E)属性を、例えば上述したアクセス制御回路20により、(1,1,0)または(0,1,0)に設定する(ステップS106)。つまり、アクセス制御回路20は、(R,W,E)属性を、書込み可且つプログラムの実行不可と設定する。また、非セキュア部120は、現在の時刻をtsp←TimeStampとして選び、Data1を受け取ると、非セキュア部120のメモリ領域の(R,W,E)属性を、例えばアクセス制御回路20により、(1,0,0)に設定する(ステップS107)。つまり、アクセス制御回路20は、(R,W,E)属性を、読出しのみ可と設定する。
その後、非セキュア部120は、(rp,tsp,Data1)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS108)。このとき、送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を、例えばアクセス制御回路20により(0,1,0)に設定した後でData1を消去する(ステップS109)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立って、セキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tsp,Data1=(tss,IDi,c1))を受け取ると、mをdata||data_crcのサイズとして、rh2←{0,1}^mとして(つまりrh2のビット長をmとして)、以下を実施する(ステップS110)。これにより、機器A102の認証、受信されたデータの検証及びデータの復号処理がなされる。
1.rp,tsp,tss,IDi,c1∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、さらに、IDiが自身のものと一致するかを確かめる。これにより、簡単なスクリーニングがなされる。なお、c1:=(rh1,rh0,c1’,r1)の場合は、rh1,rh0,c1’,r1∈{0,1}^kであるかの検証も併せて実施する。
もし満たしていなければ、result1:=000,rc←{0,1}^(k−3),rc:=rc||result1とする。そして、後述するような処理はこれ以上実行されない。ここで、result1の値「000」は、不正なアクセスがされたことを示す。もし満たしている場合は、以下の操作を実行する。
2.tss||IDi||rh1||data||data_crc=AE.Dec(ski,c1)、つまり認証付き暗号での復号を実施し、認証が満たされるかを検証する。もし満たさない場合、result1を、認証付き暗号の結果が不合格であることを示すresult1:=110とする。もし満たしていた場合は、3.以降を実行する。
なお、c1:=(rh1,rh0,c1’,r1)の場合は、r1=PRN(ski,tss||ID||rh1||c1’||1)が満たされるか否かを検証する(つまり署名チェックを行う)。もし満たさない場合、result1:=110とする。もし満たしていた場合は、以下の操作を実行する。すなわち、復号処理として、r1’:=PRN(ski,tss||IDi||rh1||rh0||2),tss||IDi||rh1||data||data_crc:=Dec(r1’,c1’)を実施後、3.以降を実行する。ここで、Decは、共通鍵ブロック暗号での復号あり、例えばAES−CBCでの復号である。
3.例えばアクセス制御回路20により、アクセス制御設定が、ハードウェアセキュリティモジュール回路10のみがエラー検出回路4へアクセス可能と設定される。エラー検出回路4を用いて、復号して得られたdataのCRCをCRC(data)で算出し、data_crcと一致するか検証する。一致しない場合、result1を、CRCチェックが失敗したことを示すresult1:=100とする。もし満たしていた場合は、以下の操作を実行する。
4.復号で得られたdataを格納する領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可及び実行不可に)設定し、dataを領域A1に格納する(書き込む)。これにより、CRCチェックで合格した(つまりエラーが検出されなかった)データを書き込む際に、ハードウェアセキュリティモジュール回路10のみが書込み可と設定されるので、攻撃者等からデータを改竄されることを抑制できる。そして、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)に(つまり読出し可且つ書込み不可に)設定し、dataをA1から再度読み出してdata’とする。data’のCRCをCRC(data’)で算出し、data_crcと一致するか検証する。不揮発性メモリにデータを書き込むときにデータが壊れる可能性があるため、耐故障性を向上させるため、このように、データの書込みの後でデータを読み出してCRCチェックを行う。ここで、このとき、ハードウェアセキュリティモジュール回路10のみが読出し可と設定されるので、データを書き込む際のエラーを検出するためにデータを読み出すときに、攻撃者等からデータを改竄されることを抑制できる。
CRC(data’)とdata_crcとが一致する場合、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)または(0,0,1)に(つまり書込み不可に)設定する。領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result1を、全ての処理が成功したことを示すresult1:=001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定することで実行のみ可能とする。一致しない場合、領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、領域A1に書き込んだdataを消去する。これにより、不適切なデータの実行又は読み取りを抑制することができる。そして、result1を、再度のCRCチェックが失敗した(書込みに失敗した)ことを示すresult1:=010とする。
5.例えばアクセス制御回路20により、アクセス制御設定が、エラー検出回路4の処理を必要とするCPU2など他のモジュールがエラー検出回路4へアクセス可能と設定される。そして、乱数をrc←{0,1}^(k−3)として選び、rc:=rc||result1∈{0,1}^kとする。
6.r2:=PRF(ski,tss||tsp||IDi||rh2||rc)を求める。そして、機器B110のハードウェアセキュリティモジュール回路10は、Data2:=(tss,IDi,rh2,rc,r2)として、(rp,tsp,Data2)を、機器B110の非セキュア部120に送付する(ステップS120)。
7.機器B110の非セキュア部120は、Data2を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS121)、(2,rp,tsp,Data2)を機器A102に送付する(ステップS122)。ここで、「2」は、セッション情報rpにおける2番目の処理を示す。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定し、その後、Data2を消去する(ステップS123)。
なお、(R,W,E)属性の更新は、図3〜図9で示した(R,W,E)属性制御機構(アクセス制御回路20)を用いて行われてもよい。なお、図3〜図9で示した(R,W,E)属性制御機構を用いない場合は、メモリプロテクションユニット(Memory Protection Unit;MPU)又はメモリ管理ユニット(Memory Management Unit;MMU)を用いて設定が行われてもよい。また、図6の機構を用いる場合、R属性とW属性がたとえ0となっていてもハードウェアセキュリティモジュール回路10の設定で読出し及び書込みを可能とできるため、これを考慮した属性変更を行う必要がある。図6においてS1とS2との遷移がなされない場合は、更新可能な範囲が制限されるため、その制限に沿った形で属性変更を行う必要がある。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspが信頼できるときは、上記1.のサイズチェック時に、tssとtspとを比較することで、時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspと認証端末からの認証結果の受け取り時刻(以下、tsp2と記載)とを比較することで、時間制約の確認を実施してもよい。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。
(3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(2,rp,tsp,Data2)を機器A102に送付する(S122)。機器A102は、(2,rp,tsp,Data2=(tss,IDi,rh2,rc,r2))を受け取ると、以下の処理を実行する(ステップS124)。これにより、機器A102と機器B110との相互認証が行われることとなる。
機器A102は、rp,tss,tsp,IDi,rc,r2∈{0,1}^k、且つrh2∈{0,1}^mであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=000とする。もし満たしていれば、機器A102は、r2=PRF(ski,tss||tsp||IDi||rh2||rc)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rcの下位3bit(つまりresult1の値)とし、そうでなければresult2:=000とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「001」を示す場合、データdataが中間者に改竄されることも漏洩することもなく、またデータが欠損することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2が「010」を示す場合、書込みでのデータ欠損による書込み失敗を意味する。また、result2が「100」を示す場合、認証・復号は成功したが書込み前にデータ欠損が発生したことを意味する。また、result2が「110」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。
なお、機器A102から機器B110の非セキュア部120へ認証付き暗号データを送付後、機器A102が機器B110の非セキュア部120からの認証付き暗号データを取得するまでの間に時間制約がある場合、上記サイズチェック時に、tssと機器A102での現在時刻とを比較する事で、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの認証付き暗号データに対する復号操作の成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp2が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp2とtssとを比較する事で、その時間制約の確認を実施してもよい。
実施の形態1にかかる半導体装置1(機器B110)は、外部の機器である機器A102から、機器B110に転送対象データが転送される場合に、ハードウェアセキュリティモジュール回路10が、非セキュア部120のメモリ領域を介して、認証用データ(Data1,Data2)を、機器A102から受信し、機器A102に送信する。これにより、半導体装置1(機器B110)は、機器A102と相互認証を行うことができる。ここで、非セキュア部120のメモリ領域は、アクセス制御により、攻撃者等からのアクセスがなされないように構成されている。したがって、転送対象データが転送されるときに、攻撃者等が相手側の機器になりすますことを抑制することが可能となる。
実施の形態1にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110における認証の失敗のためシーケンスが継続しないため、フェールセーフである。また、実施の形態1にかかるデータ授受シーケンスは、rh2が改竄されると、機器A102の認証付き暗号の復号処理可否に対する検証が失敗するため、フェールセーフである。また、実施の形態1にかかるデータ授受シーケンスでは、機器A102での認証付き暗号の復号操作の成功可否に対する検証手段により、攻撃者等がrcの値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態1にかかるデータ授受シーケンスでは、tspが改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh2、tspの何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成した認証付き暗号の復号処理可否を、書込み成功や検証合格とすることができない。したがって、実施の形態1においては、rp,rh2,rcの全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗又は検証不合格を効率よく検出する目的で、tspに対してハッシュ値を付加してもよい。
(実施の形態1の変形例)
次に、実施の形態1の変形例について説明する。図11〜図13に示したシーケンス図は、機器A102から機器B110へ、転送対象データを一回で転送するためのシーケンスである。ここで、転送対象データのデータサイズが転送可能サイズよりも大きいためデータを分割して複数回に分けて転送することが必要な場合は、図11〜図13に記載したシーケンスをそのまま用いる場合、その回数分、認証等の処理を実行する必要がある。
ここで、転送可能サイズに制限がある場合、転送対象データ全体を認証付き暗号方式で暗号化し、その暗号化されたデータ全体を分割して転送する方が、転送回数ごとに暗号化して転送するよりも、効率がよいと考えらえる。例えば、不揮発性メモリへのデータ格納を考えた場合、機器B110のハードウェアセキュリティモジュール回路10にデータが十分蓄積されてから、認証付き暗号方式での復号を実施し、データ領域への書込みを実施した方が、効率がよい。ここで、認証付き暗号方式は、暗号化と署名生成とで異なる鍵を用いる事を前提とした、ブロック暗号方式での暗号と暗号結果に対する署名とを付加する方式であってもよい。
図14〜図19は、実施の形態1の変形例にかかる認証システム100において実行されるデータ授受シーケンスを示すシーケンス図である。なお、実施の形態1の変形例にかかる認証システム100の構成は、図10に示した実施の形態1にかかる認証システム100と実質的に同様であるので、説明を省略する。
図14〜図19のシーケンス図を用いて、改竄耐性と秘匿性を持つ機能安全考慮のデータ一括での暗号化とその暗号化されたデータの分割転送でのデータ授受を可能とするプロトコルの動作を説明する。ここで、図14〜図19のシーケンスは、(1)転送回数の通知を伴う相互認証処理(S201〜S224)、(2)全体で暗号化したデータの繰返し分割転送処理(S231〜S257)、及び、(3)結合データの復号とデータ格納を伴う相互認証処理(S262〜S286)を有する。なお、機器A102及び機器B110に対する共通対称鍵の初期設定として、下記設定が事前になされているものとする。
セキュリティパラメータをkとし、機器A102は1^kを入力とする。機器A102は、認証識別子IDi∈{0,1}^kが割り振られている機器B110に対して対称鍵ski←{0,1}^kを選び、(ski,IDi)を送付する。機器B110は、(ski,IDi)を不揮発性メモリに保存する。また、認証識別子IDiの集合IDを機器A102に送付する。ここで、機器B110の総数をMとし、i∈[1,M]とする。例えば、機器B110を出荷する前にこれら処理を実施する事で、各機器B110に個別の鍵を設定するとともに、機器A102に同鍵を格納してもよい。また、機器B110の非セキュア部120は、機器B110に内蔵されたハードウェアセキュリティモジュール回路10に格納されたIDiを読み出し可能とする。但し、上書き変更や消去は、適切なアクセス制御によりできないものとする。
(1)転送回数の通知を伴う相互認証処理:
(1−1)機器認証情報の機器Aでの構築:
機器B110の非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを取得する(ステップS201)。非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを読み出してもよいし、ハードウェアセキュリティモジュール回路10からIDiを受信してもよい。非セキュア部120は、IDiを得ると、セッション管理のためにセッション情報rp∈{0,1}^kを選択し(ステップS202)、(1,rp,IDi)を機器A102に送付する(ステップS203)。ここで、「1」は、セッション情報rpにおける1番目の処理を示す。機器A102は、(1,rp,IDi)を受け取ると、下記を実施する(ステップS204)。これにより、機器B110が認証され、転送回数に署名が付される。
1.rp,IDi∈{0,1}^kであるか、そしてIDi∈IDであるかを検証する。もし異なっていれば処理を終了する。もし満たしていれば、以下を実行する。
2.現在の時刻をtss1←TimeStampとして選ぶ。
3.乱数2つをrh0←{0,1}^k、rh1←{0,1}^kとして選ぶ。
4.セッション鍵として、r1’:=PRF(ski,tss1||IDi||rh0||1)を計算する。ここで、「ski」は、署名検証用の鍵である。
5.送信データ(転送対象データ)dataの全体に対して、CRCまたはECCを算出し、例えばCRCを算出したとして、data_crc:=CRC(data)とする。
6.c1:=AE.Enc(r1’,data||data_crc)を計算する。そして、機器A102は、c1を、転送サイズを考慮してN個に分割し、{c1[j];j=1,・・・,N}を構成する。ここで、演算子「||」はビット連接を表す。また、上述した例と同様に、AE.Encは、認証付き暗号であり、AES−GCM又はAES−CCMであってもよいし、例えば暗号とCMAC値の組合せとしてもよい。
7.分割転送個数Nの通知を行うために、r1:=PRF(ski,tss1||IDi||rh1||N||1)を計算する。ここで、r1は、転送対象データに対する署名ではなく、転送回数Nに対する署名である。
8.Data1:=(tss,IDi,rh1,r1,N)として、機器B110の非セキュア部120に、(1,rp,Data1)を送付する(ステップS205)。
(1−2)機器Bでのデータ復号とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data1を格納するメモリ領域の(R,W,E)属性を(1,1,0)または(0,1,0)に設定する(ステップS206)。つまり、(R,W,E)属性は、書込み可且つプログラムの実行不可と設定される。また、(R,W,E)属性の変更は、例えば上述したアクセス制御回路20を用いて行われてもよい。また、非セキュア部120は、現在の時刻をtsp1←TimeStampとして選び、Data1を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する(ステップS207)。つまり、アクセス制御回路20は、(R,W,E)属性を、読出しのみ可と設定する。
その後、非セキュア部120は、(rp,tsp1,Data1)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS208)。送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data1を消去する(ステップS209)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立って、セキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tsp1,Data1=(tss1,IDi,rh1,r1,N))を受け取ると、rh2←{0,1}^kとして、以下を実施する(ステップS210)。これにより、機器A102及び転送回数Nの認証がなされる。
1.rp,tsp1,tss1,IDi,rh1,r1∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、result1:=00,rc1←{0,1}^(k−2),rc1:=rc1||result1とする。そして、後述するような処理はこれ以上実行されない。ここで、result1の値「00」は、不正なアクセスがされたことを示す。もし満たしている場合は、以下の操作を実行する。
2.r1=PRF(ski,tss1||IDi||rh1||N||1)を満たすかを検証する。もし満たしている場合は、result1を、機器A102及び転送回数Nの認証に成功したことを示すresult1:=01とし、満たさない場合は、result1を、機器A102及び転送回数Nの認証に失敗したことを示すresult1:=10とする。なお、分割数「N」がハードウェアセキュリティモジュール回路10に送付されたので、ハードウェアセキュリティモジュール回路10は、機器A102からデータが何回送られてくるか(つまりデータが何個に分割されたか)を把握することができる。
3.乱数rc1←{0,1}^k−2とし、rc1:=rc1||result1とする。
4.r2:=PRF(ski,tss1||tsp1||IDi||rh2||rc1||N)を計算する。ここで、r2は、転送回数Nに対する署名である。そして、機器B110は、Data2:=(tss1,IDi,rh2,rc1,N,r2)として、(rp,tsp1,Data2)を、機器B110の非セキュア部120に送付する(ステップS220)。
5.機器B110の非セキュア部120は、Data2を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS221)、(2,rp,tsp1,Data2)を機器A102に送付する(ステップS222)。ここで、「2」は、セッション情報rpにおける2番目の処理を示す。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data2を消去する。さらに、非セキュア部120は、機器A102からのData3の受信に備えて、Data3を配置するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS223)。
なお、(R,W,E)属性の更新は、図3〜図9で示した(R,W,E)属性制御機構(アクセス制御回路20)を用いて行われてもよい。なお、図3〜図9で示した(R,W,E)属性制御機構を用いない場合は、メモリプロテクションユニット(MPU)又はメモリ管理ユニット(MMU)を用いて設定が行われてもよい。また、図6の機構を用いる場合、R属性とW属性がたとえ0となっていてもハードウェアセキュリティモジュール回路10の設定で読出し及び書込みを可能とできるため、これを考慮した属性変更を行う必要がある。図6においてS1とS2との遷移がなされない場合は、更新可能な範囲が制限されるため、その制限に沿った形で属性変更を行う必要がある。このことは、後述する実施の形態2の変形例でも同様である。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspが信頼できるときは、上記1.のサイズチェック時に、tss1とtsp1とを比較することで、時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp1と認証端末からの認証結果の受け取り時刻(以下、tsp’と記載)とを比較することで、時間制約の確認を実施してもよい。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。このことは、後述する実施の形態2の変形例でも同様である。
(1−3)機器Aでの認証結果の検証:
機器Bの非セキュア部120は、(2,rp,tsp1,Data2)を機器A102に送付する(S222)。機器A102は、(2,rp,tsp1,Data2=(tss1,IDi,rh2,rc1,N,r2))を受け取ると、以下の処理を実行する(ステップS224)。これにより、転送対象データを転送する前に、機器A102と機器B110との相互認証が行われることとなる。
機器A102は、rp,tss1,tsp1,IDi,rh2,rc1,r2∈{0,1}^k、且つ、N∈{0,1}^lであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=11とする。もし満たしていれば、機器A102は、r2=PRF(ski,tss1||tsp1||IDi||rh2||rc1||N)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rc1の下位2bitとし、そうでなければ、result2を、相互認証に失敗したことを示すresult2:=11とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「01」を示す場合、データ分割数Nが改竄される事なく機器A102から機器B110へ通知され、機器A102と機器B110との間での相互認証が成功したことを意味する。result2が「10」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。そして、機器A102は、result2=01である場合、転送回数を表すインデックス変数jをj=1(初期値)とする。そうでない場合、処理は終了する。
なお、機器A102から機器B110の非セキュア部120へ認証データを送付後、機器A102が機器B110の非セキュア部120からの認証データを取得するまでの間に時間制約がある場合、上記サイズチェック時に、tss1と機器A102での現在時刻とを比較することで、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの認証データの検証成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp’が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp’とtss1とを比較することで、その時間制約の確認を実施してもよい。このことは、後述する実施の形態2の変形例でも同様である。
実施の形態1の変形例にかかる半導体装置1(機器B110)は、外部の機器である機器A102から、機器B110に転送対象データが転送される場合に、ハードウェアセキュリティモジュール回路10が、非セキュア部120のメモリ領域を介して、認証用データ(Data1,Data2)を、機器A102から受信し、機器A102に送信する。これにより、半導体装置1(機器B110)は、機器A102と相互認証を行うことができる。したがって、転送対象データが転送されるときに、攻撃者等が相手側の機器になりすますことを抑制することが可能となる。
実施の形態1の変形例にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110での認証が実施されて認証が失敗するため、フェールセーフである。また、実施の形態1の変形例にかかるデータ授受シーケンスは、rh2が改竄された場合も、機器A102の認証付き暗号の復号処理可否に対する検証が失敗するため、フェールセーフである。また、実施の形態1の変形例にかかるデータ授受シーケンスは、機器A102でのPRFを用いた検証手段により、攻撃者等がrc1の値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態1の変形例にかかるデータ授受シーケンスは、tsp1が改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh2、tsp1の何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成したData2を検証合格とすることができない。したがって、rp,rh2,rc1の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗や検証不合格を効率よく検出する目的で、tsp1に対してハッシュ値を付加しても良い。
(2)全体で暗号化したデータの繰返し分割転送処理:
以下、処理(2−1)〜(2−3)が、機器A102から機器B110への分割データ{c1[j];j=1,・・・,N}の転送が完了するまで、繰返し実行される。ここで、機器A102と機器B110との相互認証は、データの分割転送処理では行われない。
(2−1)転送データの機器Aでの構築:
機器A102は、j=1として、下記を実施する。
1.Data3:=(tss1,IDi,N,j,c1[j])を生成し(ステップS231)、機器B110の非セキュア部120に、(j+2,rp,Data3)を送付する(ステップS232)。
(2−2)機器Bでのデータ復号とデータ格納、及び結果収集:
機器B110の非セキュア部120は、現在の時刻をtspj←TimeStampとして選び、Data3を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する(ステップS233)。非セキュア部120は、その後、(rp,tspj,Data3)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS234)。
送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data3を消去する。さらに、非セキュア部120は、機器B110からのData4の受信に備えて、Data4を配置するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS235)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立ってセキュアブートなどで改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tspj,Data3=(tss1,IDi,N,j,c1[j]))を受け取ると、enc_data_with_crc:={}として、以下を実施する(ステップS240)。
1.rp,tss1,tspj,IDi,c1[j]∈{0,1}^k、かつN,j∈{0,1}^l、であるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、result1:=00,rc←{0,1}^(k−2),rc1:=rc1||result1とする。もし満たしている場合は、以下の操作を実行する。
2.enc_data_with_crc:=enc_data_with_crc∪c1[j]を算出し、result1:=01とする。
3.乱数rc1←{0,1}^k−2とし、rc1:=rc1||result1とする。
4.機器B110のハードウェアセキュリティモジュール回路10は、Data4:=(tss1,IDi,rc1,N,j)として、(rp,tspj,Data4)を機器B110の非セキュア部120に送付する(ステップS250)。もし、j=N且つrc1の最下位ビットが1であれば、N分割したデータの受信動作を完了する。
5.機器B110の非セキュア部120は、Data4を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定し(ステップS252)、その後、(j+2,rp,tspj,Data4)を機器A102に送付する(ステップS254)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後Data4を消去する。j<Nの場合、機器A102からのData3の受信に備えて、Data3を配置するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS256)。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspjが信頼できる場合は、上記1のサイズチェック時に、tss1とtspjとを比較することで、その時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspjと認証端末からの認証結果の受取り時刻(以下、tsp’と記載)とを比較することで、その時間制約の確認を実施してもよい。
(2−3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(j+2,rp,tspj,Data4)を機器A102に送付する(S254)。機器A102は、(j+2,rp,tspj,Data4=(tss1,IDi,rc1,N,j))を受け取ると、以下の処理を実行する(ステップS257)。

機器A102は、rp,tss1,tspj,IDi,rc1∈{0,1}^k、且つ、N,j∈{0,1}^lであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=00とする。もし満たしていれば、機器A102は、result2:=rcの下位2bitとする。機器A102は、result2=01であれば、j:=j+1とする。そして、機器A102は、j>Nのとき、機器A102からの分割データの転送を完了する。ここで、result2が「01」を示す場合、データc1[j]がサイズを維持したまま、機器B110のデータ格納領域へのデータc1[j]の格納が成功したことを意味する。result2が「00」を示す場合、データサイズが不一致であったことを意味する。
尚、機器A102から機器B110の非セキュア部120へ分割した認証付き暗号データを送付後、機器A102が機器B110の非セキュア部120からの応答を取得するまでの間に時間制約がある場合、上記サイズチェック時に、tss1と機器A102での現在時刻とを比較することで、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの分割した認証付き暗号データのサイズチェック成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp’が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp’とtss1とを比較することで、その時間制約の確認を実施してもよい。
実施の形態1の変形例にかかるデータ授受シーケンスは、後に述べる(3)結合データの復号とデータ格納を伴う相互認証処理での、分割した認証付き暗号データを全て結合後、認証付き暗号方式での認証と復号を実施する。したがって、{c1[j];j=1,・・・,N}の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能である。
(3)結合データの復号とデータ格納を伴う相互認証処理:
(3−1)機器認証情報の機器Aでの構築:
(2)の繰返し実行にて、機器A102は、j>Nが満たされると、(2)の繰返し実行完了を識別し、下記を実施する(ステップS262)。
1.現在の時刻をtss2←TimeStampとして選ぶ。
2.乱数をrh3←{0,1}^kとして選ぶ。
3.r3:=PRF(ski,tss1||tss2||IDi||rh0||rh3||N||N+1)を計算する。ここで、最後の「N+1」は、分割データの転送が終了したので転送対象データを復号する旨を指示するためのものである。そして、機器A102は、Data5:=(tss1,tss2,IDi,rh0,rh3,r3,N,N+1)として、機器B110の非セキュア部120に、(j+2,rp,Data5)を送付する(ステップS263)。ここで、演算子「||」はビット連接を表す。
(3−2)機器Bでのデータ復号とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data5を格納するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS264)。つまり、(R,W,E)属性は、書込みのみ可と設定される。また、非セキュア部120は、現在の時刻をtspN+1←TimeStampとして選び、Data5を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する(ステップS265)。つまり、(R,W,E)属性は、読出しのみ可と設定される。
その後、非セキュア部120は、(rp,tspN+1,Data5)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS266)。送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data5を消去する(ステップS267)。また、非セキュア部120は、機器B110のハードウェアセキュリティモジュール回路10から受信するData6を格納するメモリ領域の(R,W,E)属性を(0,1,0)に設定しておく(ステップS281)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立って、セキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tspN+1,Data5=(tss1,tss2,IDi,rh0,rh3,r3,N,N+1))を受け取ると、rh4←{0,1}^kとして、以下を実施する(ステップS270)。これにより、機器A102の認証、受信されたデータの検証及びデータの復号処理がなされる。
1.rp,tspN+1,tss1,tss2,IDi,rh0,rh3,r3∈{0,1}^k、且つ、N,N+1∈{0,1}^lであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、result2:=0000,rc2←{0,1}^(k−4),rc2:=rc2||result2とする。もし満たしている場合は、以下の操作を実行する。そして、後述するような処理はこれ以上実行されない。ここで、result2の値「0000」は、不正なアクセスがされたことを示す。
2.r3=PRF(ski,tss1||tss2||IDi||rh0||rh3||N||N+1)を満たすか検証する。満たさない場合、result2を、署名検証の結果が不合格であることを示すresult2:=1100とする。満たす場合、r1’=PRF(ski,tss1||IDi||rh0||1)を計算し、以下の操作を実行する。
3.data||data_crc=AE.Dec(r1’,enc_data_with_crc)、つまり認証付き暗号について、(3)の繰返し実行で{c1[j];j=1,・・・,N}を連接したenc_data_with_crcの復号を実施し、認証が満たされるかを検証する。もし満たさない場合、result2を、データの認証の結果が不合格であることを示すresult2:=1000とする。もし満たしていた場合は、以下の操作を実行する。
4.アクセス制御設定が、ハードウェアセキュリティモジュール回路10のみがエラー検出回路4へアクセス可能と設定される。復号して得られたdataのCRCをCRC(data)で算出し、data_crcと一致するか検証する。一致しない場合、result2を、CRCチェックが失敗したことを示すresult2:=0100とする。もし満たしていた場合は、以下の操作を実行する。
5.復号で得られたdataを格納する領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可及び実行不可に)設定し、dataを領域A1に格納する(書き込む)。これにより、CRCチェックで合格した(つまりエラーが検出されなかった)データを書き込む際に、攻撃者等からデータを改竄されることを抑制できる。そして、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)に(つまり読出し可且つ書込み不可に)設定し、dataをA1から再度読出してdata’とする。data’のCRCをCRC(data)で算出し、data_crcと一致するか検証する。不揮発性メモリにデータを書き込むときにデータが壊れる可能性があるため、耐故障性を向上させるため、このように、データの書込みの後で書き込んだデータを読み出してCRCチェックを行う。このような処理により、データを書き込む際のエラーを検出するためにデータを読み出すときに、攻撃者等からデータを改竄されることを抑制できる。
CRC(data’)とdata_crcとが一致する場合、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)または(0,0,1)に(つまり書込み不可に)設定する。そして、領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result2を、全ての処理が成功したことを示すresult2:=0001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定することで実行のみ可能とする。一致しない場合、領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、領域A1に書き込んだdataを消去する。これにより、不適切なデータの実行又は読み取りを抑制することができる。そして、result2を、再度のCRCチェックが失敗したことを示すresult2:=0010とする。
6.アクセス制御設定が、エラー検出回路4の処理を必要とするCPU2など他のモジュールがエラー検出回路4へアクセス可能とする(「Default」)。そして、乱数をrc2←{0,1}^(k−3)として選び、rc2:=rc2||result2∈{0,1}^kとする。
7.r4:=PRF(ski,tss2||tspN+1||IDi||rh4||rc2||0)を求める。そして、機器B110のハードウェアセキュリティモジュール回路10は、Data6:=(tss2,IDi,rh4,rc2,r4)として、(rp,tspN+1,Data6)を機器B110の非セキュア部120に送付する(ステップS282)。
8.機器B110の非セキュア部120は、Data6を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS283)、(j+2,rp,tspN+1,Data6)を機器A102に送付する(ステップS284)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data6を消去する(ステップS285)。
なお、(R,W,E)属性の更新は、図3〜図9で示した(R,W,E)属性制御機構(アクセス制御回路20)を用いて行われてもよい。なお、図3〜図9で示した(R,W,E)属性制御機構を用いない場合は、メモリプロテクションユニット(MPU)又はメモリ管理ユニット(MMU)を用いて設定が行われてもよい。また、図6の機構を用いる場合、R属性とW属性がたとえ0となっていてもハードウェアセキュリティモジュール回路10の設定で読出し及び書込みを可能とできるため、これを考慮した属性変更を行う必要がある。図6においてS1とS2との遷移がなされない場合は、更新可能な範囲が制限されるため、その制限に沿った形で属性変更を行う必要がある。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspN+1が信頼できる場合は、上記1のサイズチェック時に、tss2とtspN+1とを比較することで、その時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspN+1と認証端末からの認証結果の受取り時刻(以下、tsp’と記載)とを比較することで、その時間制約の確認を実施しても良い。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。
(3−3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(j+2,rp,tspN+1,Data6)を機器A102に送付する(S284)。機器A102は、(j+2,rp,tspN+1,Data6=(tss2,IDi,rh4,rc2,r4))を受け取ると、以下の処理を実行する(ステップS286)。これにより、機器A102と機器B110との相互認証が行われることとなる。
機器A102は、rp,tss2,tspN+1,IDi,rh4,rc2,r4∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=1110とする。もし満たしていれば、機器A102は、r4=PRF(ski,tss2||tspN+1||IDi||rh4||rc2||0)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rc2の下位4bitとし、そうでなければresult2:=1110とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「0001」を示す場合、機器A102と機器B110との間での相互認証が成功し、データdataが中間者に改竄されることも漏洩することもなく、またデータが欠損することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2が「0010」を示す場合、書込みでのデータ欠損による書込み失敗を意味する。また、result2が「0100」を示す場合、認証・復号は成功したが書込み前にデータ欠損が発生したことを意味する。また、result2が「1000」を示す場合、enc_data_with_crcの認証付き暗号方式での認証が失敗したこと、つまり、{c1[j];j=1,・・・,N}の何れかの改竄の可能性があることを意味する。また、result2が「1100」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。
なお、機器A102から機器B110の非セキュア部120へ認証データを送付後、機器A102が機器B110の非セキュア部120からの認証データを取得するまでの間に時間制約がある場合、上記サイズチェック時に、tss2と機器A102での現在時刻とを比較することで、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの認証付き暗号データへの復号操作の成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp’が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp’とtss2とを比較することで、その時間制約の確認を実施してもよい。
実施の形態1の変形例にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110での認証が実施されて認証が失敗するためシーケンスが継続しないので、フェールセーフである。また、実施の形態1の変形例にかかるデータ授受シーケンスは、rh4が改竄された場合も、機器A102の認証付き暗号の復号処理可否に対する検証が失敗するため、フェールセーフである。また、実施の形態1の変形例にかかるデータ授受シーケンスは、機器A102での認証付き暗号の復号操作の成功可否に対する検証手段により、攻撃者等がrc2の値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態1の変形例にかかるデータ授受シーケンスでは、tspN+1が改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh4、tspN+1の何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成した認証付き暗号の復号処理可否を、書込み成功や検証合格とすることができない。したがって、rp,rh4,rc2の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗や検証不合格を効率よく検出する目的で、tspN+1に対してハッシュ値を付加してもよい。
また、実施の形態1の変形例にかかるデータ授受シーケンスは、データサイズに制限がある場合、転送対象データの転送の前後で相互認証を行い、転送対象データ全体にCRCを付加して認証付き暗号方式で暗号化し、その暗号化されたデータ全体を分割して転送している。したがって、分割されたデータそれぞれの転送の際に、相互認証が不要となる。したがって、実施の形態1の変形例にかかるデータ授受シーケンスでは、転送回数ごとに暗号化して転送するよりも、効率よく転送することが可能である。
(実施の形態2)
次に、実施の形態2について説明する。図11〜図13に示したシーケンス図は、認証付き暗号方式を用いた、改竄耐性と秘匿性を持つ機能安全考慮のデータ授受プロトコルを実現する。一方、改竄耐性のみの保証が必要な場合は、署名発行検証だけで機能安全考慮のシーケンスが構成可能である。ここで、機能安全考慮とは、通信路でのデータ誤りやハードウェア故障によるデータ誤りへの対応を示す。
図20〜図22は、実施の形態2にかかる認証システム100において実行されるデータ授受シーケンスである。なお、実施の形態2にかかる認証システム100の構成は、図10に示した実施の形態1にかかる認証システム100と実質的に同様であるので、説明を省略する。なお、機器A102及び機器B110に対する共通対称鍵の初期設定として、下記設定が事前になされているものとする。
セキュリティパラメータをkとし、機器A102Aは、1^kを入力とする。機器A102は、認証識別子IDi∈{0,1}^kが割り振られている機器B110に対して対称鍵ski←{0,1}^kを選び、(ski,IDi)を送付する。機器B110は、(ski,IDi)を不揮発性メモリに保存する。また、機器B110は、認証識別子IDiの集合IDを機器A102に送付する。ここで、機器B110の総数をNとし、i∈[1,N]とする。例えば、機器B110を出荷する前にこれらの初期設定を実行することで、各機器B110に個別の鍵を設定するとともに、機器A102に同鍵を格納してもよい。また、機器B110の非セキュア部120は、機器B110に内蔵されたハードウェアセキュリティモジュール回路10に格納されたIDiを読み出すことが可能であるとする。但し、上書き変更や消去は、適切なアクセス制御によりできないものとする。
(1)機器認証情報の機器Aでの構築:
機器B110の非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを取得する(ステップS301)。非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを読み出してもよいし、ハードウェアセキュリティモジュール回路10からIDiを受信してもよい。非セキュア部120は、IDiを得ると、セッション管理のためにセッション情報rp∈{0,1}^kを選択し(ステップS302)、(1,rp,IDi)を機器A102に送付する(ステップS303)。ここで、「1」は、セッション情報rpにおける1番目の処理を示す。機器A102は、(1,rp,IDi)を受け取ると、下記の処理を実施する(ステップS304)。これにより、機器B110が認証される。
1.rp,IDi∈{0,1}^kであるか、そしてIDi∈IDであるかを検証する。つまり、rp,IDiのビット長の検証及びIDiが登録されたものであるか否かの検証を行う。もし異なっていれば処理を終了する。もし満たしていれば、以下を実行する。
2.現在の時刻をtss←TimeStampとして選ぶ。
3.乱数をrh1←{0,1}^kとして選ぶ。
4.送信データdataに対して、CRCまたはECCを算出し、例えばCRCを算出したとして、data_crc:=CRC(data)とする。
5.r1:=PRF(ski,tss||IDi||rh1||data||data_crc||1)を計算する。ここで、r1は、データdataに対する署名である。このように、実施の形態2ではc1(認証付き暗号データ)を生成しない。言い換えると、実施の形態2では、データを暗号化しない。
そして、機器A102は、Data1:=(tss,IDi,rh1,r1,data,data_crc)として、機器B110の非セキュア部120に、(1,rp,Data1)を送付する(ステップS305)。
(2)機器Bでのデータ署名検証とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data1を格納するメモリ領域の(R,W,E)属性を、例えば上述したアクセス制御回路20により、(1,1,0)または(0,1,0)に設定する(ステップS306)。つまり、アクセス制御回路20は、(R,W,E)属性を、書込み可且つプログラムの実行不可と設定する。また、非セキュア部120は、現在の時刻をtsp←TimeStampとして選び、Data1を受け取ると、非セキュア部120のメモリ領域の(R,W,E)属性を、例えばアクセス制御回路20により、(1,0,0)に設定する(ステップS307)。つまり、アクセス制御回路20は、(R,W,E)属性を、読出しのみ可と設定する。
その後、非セキュア部120は、(rp,tsp,Data1)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS308)。このとき、送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を、例えばアクセス制御回路20により(0,1,0)に設定した後でData1を消去する(ステップS309)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立って、セキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tsp,Data1=(tss,IDi,rh1,r1,data,data_crc))を受け取ると、mをdata||data_crcのサイズとして、rh2←{0,1}^mとして(つまりrh2のビット長をmとして)、以下を実施する(ステップS310)。これにより、機器A102の認証及び受信されたデータの検証がなされる。
1.rp,tsp,tss,IDi,rh1,r1,data,data_crc∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。これにより、簡単なスクリーニングがなされる。
もし満たしていなければ、result1:=000,rc←{0,1}^(k−3),rc:=rc||result1とする。そして、後述するような処理はこれ以上実行されない。ここで、result1の値「000」は、不正なアクセスがされたことを示す。もし満たしている場合は、以下の操作を実行する。
2.r1=PRF(ski,tss||IDi||rh1||data||data_crc||1)、つまり、認証(署名検証)が満たされるかを検証する。もし満たさない場合、result1を、署名検証が失敗したことを示すresult1:=110とする。もし満たしていた場合は、以下の操作を実行する。
3.例えばアクセス制御回路20により、アクセス制御設定が、ハードウェアセキュリティモジュール回路10のみがエラー検出回路4へアクセス可能と設定される。dataのCRCをdata_crcとは別にCRC(data)で算出し、data_crcと一致するか検証する。一致しない場合、result1を、CRCチェックが失敗したことを示すresult1:=100とする。もし満たしていた場合は、以下の操作を実行する。
ここで、アクセス制御機構がない場合は、機器B110内の非セキュア部120に配置されているエラー検出回路4にCRCチェックを依頼することとなる。その場合は、ハードウェアセキュリティモジュール回路10は、乱数rh2’←{0,1}^kを選択し、r0:=PRF(ski,tss||IDi||rh2’||data||data_crc||2)として、dataを機器B110内の非セキュア部120に配置されているエラー検出回路4に送付する。これにより、ハードウェアセキュリティモジュール回路10は、CRCチェックをエラー検出回路4に委譲し、結果及びdata_crc2を受け取る。次いで、ハードウェアセキュリティモジュール回路10は、データ改竄がない事の確認として、r0=PRF(ski,tss||IDi||rh2’||data||data_crc2||2)が満たされるかを検証し、満たさない場合又は受け取り結果がNGの場合は、result1:=100とする。もし満たしており結果がOKの場合は、以下の操作を実行する。
4.dataを格納する領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可及び実行不可に)設定し、dataを領域A1に格納する(書き込む)。これにより、CRCチェックで合格した(つまりエラーが検出されなかった)データを書き込む際に、攻撃者等からデータを改竄されることを抑制できる。そして、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)に(つまり読出し可且つ書込み不可に)設定し、dataをA1から再度読み出してdata’とする。data’のCRCをCRC(data’)で算出し、data_crcと一致するか検証する。不揮発性メモリにデータを書き込むときにデータが壊れる可能性があるため、耐故障性を向上させるため、このように、データの書込みの後でデータを読み出してCRCチェックを行う。このような処理により、データを書き込む際のエラーを検出するためにデータを読み出すときに、攻撃者等からデータを改竄されることを抑制できる。
CRC(data’)とdata_crcとが一致する場合、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)または(0,0,1)に(つまり書込み不可に)設定する。領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result1を、全ての処理が成功したことを示すresult1:=001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定することで実行のみ可能とする。一致しない場合、領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、領域A1に書き込んだdataを消去する。これにより、不適切なデータの実行又は読み取りを抑制することができる。そして、result1を、再度のCRCチェックが失敗したことを示すresult1:=010とする。
ここで、エラー検出回路4に対するアクセス制御設定が出来ない場合は、エラー検出回路4にCRCチェックを依頼することとなる。この場合、以下のような処理を行ってもよい。すなわち、ハードウェアセキュリティモジュール回路10は、乱数rh2’’←{0,1}^kを選択し、r0’:=PRF(ski,tss||IDi||rh2’’||data||data_crc||3)として、dataを機器B110内の非セキュア部120に配置されているエラー検出回路4に送付する。これにより、ハードウェアセキュリティモジュール回路10は、CRCチェックをエラー検出回路4に委譲し、結果及びdata_crc2’を受け取る。次いで、ハードウェアセキュリティモジュール回路10は、データ改竄がない事の確認として、r0’=PRF(ski,tss||IDi||rh2’’||data||data_crc2’||3)が満たされるかを検証する。満たさない場合又は受け取り結果がNGの場合は、ハードウェアセキュリティモジュール回路10は、領域A1の(R,W,E)属性を(1,1,0)または(1,0,0)または(0,1,0)に設定し、領域A1に書き込んだdataを消去し、result1:=010とする。もし満たしており結果がOKの場合は、ハードウェアセキュリティモジュール回路10は、領域A1の(R,W,E)属性を(1,1,0)または(1,0,0)または(0,0,1)に設定する。さらに、ハードウェアセキュリティモジュール回路10は、領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、ハードウェアセキュリティモジュール回路10は、result1:=001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定する事で実行のみ可能とする。
5.例えばアクセス制御回路20により、アクセス制御設定が、エラー検出回路4の処理を必要とするCPU2など他のモジュールがエラー検出回路4へアクセス可能と設定される。そして、乱数をrc←{0,1}^(k−3)として選び、rc:=rc||result1∈{0,1}^kとする。
6.r2:=PRF(ski,tss||tsp||IDi||rh2||rc)を求める。そして、機器B110のハードウェアセキュリティモジュール回路10は、Data2:=(tss,IDi,rh2,rc,r2)として、(rp,tsp,Data2)を、機器B110の非セキュア部120に送付する(ステップS320)。
7.機器B110の非セキュア部120は、Data2を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS321)、(2,rp,tsp,Data2)を機器A102に送付する(ステップS322)。ここで、「2」は、セッション情報rpにおける2番目の処理を示す。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定し、その後、Data2を消去する(ステップS323)。
なお、(R,W,E)属性の更新は、図3〜図9で示した(R,W,E)属性制御機構(アクセス制御回路20)を用いて行われてもよい。なお、図3〜図9で示した(R,W,E)属性制御機構を用いない場合は、メモリプロテクションユニット(MPU)又はメモリ管理ユニット(MMU)を用いて設定が行われてもよい。また、図6の機構を用いる場合、R属性とW属性がたとえ0となっていてもハードウェアセキュリティモジュール回路10の設定で読出し及び書込みを可能とできるため、これを考慮した属性変更を行う必要がある。図6においてS1とS2との遷移がなされない場合は、更新可能な範囲が制限されるため、その制限に沿った形で属性変更を行う必要がある。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspが信頼できるときは、上記1.のサイズチェック時に、tssとtspとを比較することで、時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspと認証端末からの認証結果の受け取り時刻(以下、tsp2と記載)とを比較することで、時間制約の確認を実施してもよい。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。
(3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(2,rp,tsp,Data2)を機器A102に送付する(S322)。機器A102は、(2,rp,tsp,Data2=(tss,IDi,rh2,rc,r2))を受け取ると、以下の処理を実行する(ステップS324)。これにより、機器A102と機器B110との相互認証が行われることとなる。なお、データの暗号化は行われていないので、復号はなされない。
機器A102は、rp,tss,tsp,IDi,rc,r2∈{0,1}^k、且つrh2∈{0,1}^mであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=000とする。もし満たしていれば、機器A102は、r2=PRF(ski,tss||tsp||IDi||rh2||rc)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rcの下位3bit(つまりresult1の値)とし、そうでなければresult2:=000とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「001」を示す場合、データdataが中間者に改竄されることなく、またデータが欠損することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2が「010」を示す場合、書込みでのデータ欠損による書込み失敗を意味する。また、result2が「100」を示す場合、認証は成功したが書込み前にデータ欠損が発生したことを意味する。また、result2が「110」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。
なお、機器A102から機器B110の非セキュア部120へ認証付き暗号データを送付後、機器A102が機器B110の非セキュア部120からの認証付き暗号データを取得するまでの間に時間制約がある場合、上記サイズチェック時に、tssと機器A102での現在時刻とを比較する事で、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの署名データに対する署名検証の成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp2が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp2とtssとを比較する事で、その時間制約の確認を実施してもよい。
実施の形態2にかかる半導体装置1(機器B110)は、外部の機器である機器A102から、機器B110に転送対象データが転送される場合に、ハードウェアセキュリティモジュール回路10が、非セキュア部120のメモリ領域を介して、認証用データ(Data1,Data2)を、機器A102から受信し、機器A102に送信する。これにより、半導体装置1(機器B110)は、機器A102と相互認証を行うことができる。ここで、非セキュア部120のメモリ領域は、アクセス制御により、攻撃者等からのアクセスがなされないように構成されている。したがって、転送対象データが転送されるときに、攻撃者等が相手側の機器になりすますことを抑制することが可能となる。
実施の形態2にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110における認証の失敗のためシーケンスが継続しないため、フェールセーフである。また、実施の形態2にかかるデータ授受シーケンスは、rh2が改竄されると、機器A102の署名データに対する署名検証が失敗するため、フェールセーフである。また、実施の形態2にかかるデータ授受シーケンスでは、機器A102での署名データに対する署名の検証手段により、攻撃者等がrcの値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態2にかかるデータ授受シーケンスでは、tspが改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh2、tspの何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成した署名データに対する署名検証を、書込み成功や検証合格とすることができない。したがって、実施の形態2においては、rp,rh2,rcの全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗又は検証不合格を効率よく検出する目的で、tspに対してハッシュ値を付加してもよい。
さらに、実施の形態2においては、転送対象データを暗号化していない。しかしながら、非セキュア部120に対するアクセス制御を行っているため、データ転送時に、攻撃者等がデータを読み出すこと、及び攻撃者等がデータ(プログラム)を実行することを抑制することが可能となる。さらに、たとえ改竄がなされたとしても、CRCチェックによって、改竄があったことを検出することは可能である。したがって、転送対象データを暗号化することなしに、署名検証のみで、セキュアで機能安全を考慮したデータ授受を実現できる。これにより、転送対象データを暗号化するための処理及びハードウェアを削減することが可能となる。
(実施の形態2の変形例)
次に、実施の形態2の変形例について説明する。図20〜図22に示したシーケンス図は、機器A102から機器B110へ、転送対象データを一回で転送するためのシーケンスである。ここで、転送対象データのデータサイズが転送可能サイズよりも大きいためデータを分割して複数回に分けて転送することが必要な場合は、図20〜図22に記載したシーケンスをそのまま用いる場合、その回数分、署名検証等の処理を実行する必要がある。
ここで、転送可能サイズに制限がある場合、転送対象データ全体に対して署名データ等を付加し、その署名データ等が付加されたデータ全体を分割して転送する方が、転送回数ごとに署名データ等を付加して転送するよりも、効率がよいと考えらえる。例えば、不揮発性メモリへのデータ格納を考えた場合、機器B110のハードウェアセキュリティモジュール回路10にデータが十分蓄積されてから、署名検証等を実施し、データ領域への書込みを実施した方が、効率がよい。
図23〜図28は、実施の形態2の変形例にかかる認証システム100において実行されるデータ授受シーケンスを示すシーケンス図である。なお、実施の形態2の変形例にかかる認証システム100の構成は、図10に示した実施の形態1にかかる認証システム100と実質的に同様であるので、説明を省略する。
図23〜図28のシーケンス図を用いて、改竄耐性と秘匿性を持つ機能安全考慮のデータ一括での署名データ等の付加と署名データ等が付加されたデータの分割転送でのデータ授受を可能とするプロトコルの動作を説明する。ここで、図23〜図28のシーケンスは、(1)転送回数の通知を伴う相互認証処理(S401〜S424)、(2)全体で署名が付加されたデータの繰返し分割転送処理(S431〜S457)、及び、(3)結合データの署名検証とデータ格納を伴う相互認証処理(S462〜S486)を有する。なお、機器A102及び機器B110に対する共通対称鍵の初期設定として、下記設定が事前になされているものとする。
セキュリティパラメータをkとし、機器A102は1^kを入力とする。機器A102は、認証識別子IDi∈{0,1}^kが割り振られている機器B110に対して対称鍵ski←{0,1}^kを選び、(ski,IDi)を送付する。機器B110は、(ski,IDi)を不揮発性メモリに保存する。また、認証識別子IDiの集合IDを機器A102に送付する。ここで、機器B110の総数をMとし、i∈[1,M]とする。例えば、機器B110を出荷する前にこれら処理を実施する事で、各機器B110に個別の鍵を設定するとともに、機器A102に同鍵を格納してもよい。また、機器B110の非セキュア部120は、機器B110に内蔵されたハードウェアセキュリティモジュール回路10に格納されたIDiを読み出し可能とする。但し、上書き変更や消去は、適切なアクセス制御によりできないものとする。
(1)転送回数の通知を伴う相互認証処理:
(1−1)機器認証情報の機器Aでの構築:
機器B110の非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを取得する(ステップS401)。非セキュア部120は、ハードウェアセキュリティモジュール回路10からIDiを読み出してもよいし、ハードウェアセキュリティモジュール回路10からIDiを受信してもよい。非セキュア部120は、IDiを得ると、セッション管理のためにセッション情報rp∈{0,1}^kを選択し(ステップS402)、(1,rp,IDi)を機器A102に送付する(ステップS403)。ここで、「1」は、セッション情報rpにおける1番目の処理を示す。機器A102は、(1,rp,IDi)を受け取ると、下記を実施する(ステップS404)。これにより、機器B110が認証され、転送回数に署名が付される。
1.rp,IDi∈{0,1}^kであるか、そしてIDi∈IDであるかを検証する。もし異なっていれば処理を終了する。もし満たしていれば、以下を実行する。
2.現在の時刻をtss1←TimeStampとして選ぶ。
3.乱数をrh1←{0,1}^kとして選ぶ。
4.送信データdataに対して、CRCまたはECCを算出し、例えばCRCを算出したとして、data_crc:=CRC(data)とする。そして、機器A102は、data||data_crcを、転送サイズを考慮してN個に分割し、{d[j];j=1,・・・,N}を構成する。
5.分割転送個数Nの通知を行うために、r1:=PRF(ski,tss1||IDi||rh1||N||1)を計算する。ここで、r1は、転送対象データに対する署名ではなく、転送回数Nに対する署名である。また、「ski」は、署名検証用の鍵である。
6.Data1:=(tss,IDi,rh1,r1,N)として、機器B110の非セキュア部120に、(1,rp,Data1)を送付する(ステップS405)。
(1−2)機器Bでのデータ署名検証とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data1を格納するメモリ領域の(R,W,E)属性を(1,1,0)または(0,1,0)に設定する(ステップS406)。つまり、(R,W,E)属性は、書込み可且つプログラムの実行不可と設定される。また、(R,W,E)属性の変更は、例えば上述したアクセス制御回路20を用いて行われてもよい。また、非セキュア部120は、現在の時刻をtsp1←TimeStampとして選び、Data1を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する(ステップS407)。つまり、アクセス制御回路20は、(R,W,E)属性を、読出しのみ可と設定する。
その後、非セキュア部120は、(rp,tsp1,Data1)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS408)。送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data1を消去する(ステップS409)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアは、その実行に先立って、セキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tsp1,Data1=(tss1,IDi,rh1,r1,N))を受け取ると、rh2←{0,1}^kとして、以下を実施する(ステップS410)。これにより、機器A102及び転送回数Nの認証がなされる。
1.rp,tsp1,tss1,IDi,rh1,r1∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、result1:=00,rc1←{0,1}^(k−2),rc1:=rc1||result1とする。そして、後述するような処理はこれ以上実行されない。ここで、result1の値「00」は、不正なアクセスがされたことを示す。もし満たしている場合は、以下の操作を実行する。
2.r1=PRF(ski,tss1||IDi||rh1||N||1)を満たすかを検証する。もし満たしている場合は、result1を、機器A102及び転送回数Nの認証に成功したことを示すresult1:=01とし、満たさない場合は、result1を、機器A102の認証に失敗したことを示すresult1:=10とする。なお、分割数「N」がハードウェアセキュリティモジュール回路10に送付されたので、ハードウェアセキュリティモジュール回路10は、機器A102からデータが何回送られてくるか(つまりデータが何個に分割されたか)を把握できる。
3.乱数rc1←{0,1}^k−2とし、rc1:=rc1||result1とする。
4.r2:=PRF(ski,tss1||tsp1||IDi||rh2||rc1||N)を計算する。ここで、r2は、転送回数Nに対する署名である。そして、機器B110は、Data2:=(tss1,IDi,rh2,rc1,N,r2)として、(rp,tsp1,Data2)を、機器B110の非セキュア部120に送付する(ステップS420)。
5.機器B110の非セキュア部120は、Data2を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS421)、(2,rp,tsp1,Data2)を機器A102に送付する(ステップS422)。ここで、「2」は、セッション情報rpにおける2番目の処理を示す。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data2を消去する。さらに、非セキュア部120は、機器A102からのData3の受信に備えて、Data3を配置するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS423)。
(1−3)機器Aでの認証結果の検証:
機器Bの非セキュア部120は、(2,rp,tsp1,Data2)を機器A102に送付する(S422)。機器A102は、(2,rp,tsp1,Data2=(tss1,IDi,rh2,rc1,N,r2))を受け取ると、以下の処理を実行する(ステップS424)。これにより、機器A102と機器B110との相互認証が行われることとなる。
機器A102は、rp,tss1,tsp1,IDi,rh2,rc1,r2∈{0,1}^k、且つ、N∈{0,1}^lであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=11とする。もし満たしていれば、機器A102は、r2=PRF(ski,tss1||tsp1||IDi||rh2||rc1||N)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rc1の下位2bitとし、そうでなければresult2:=11とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「01」を示す場合、データ分割数Nが改竄される事なく機器A102から機器B110へ通知され、機器A102と機器B110との間での相互認証が成功したことを意味する。result2が「10」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。そして、機器A102は、result2=01である場合、転送回数を表すインデックス変数jをj=1(初期値)とする。そうでない場合、処理は終了する。
実施の形態2の変形例にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110での認証が実施されて認証が失敗するため、フェールセーフである。また、実施の形態2の変形例にかかるデータ授受シーケンスは、rh2が改竄された場合も、機器A102の署名検証が失敗するため、フェールセーフである。また、実施の形態2の変形例にかかるデータ授受シーケンスは、機器A102でのPRFを用いた検証手段により、攻撃者等がrc1の値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態2の変形例にかかるデータ授受シーケンスは、tsp1が改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh2、tsp1の何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成したData2を検証合格とすることができない。したがって、rp,rh2,rc1の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗や検証不合格を効率よく検出する目的で、tsp1に対してハッシュ値を付加しても良い。
(2)全体で署名が付加されたデータの繰返し分割転送処理:
以下、処理(2−1)〜(2−3)が、機器A102から機器B110への分割データ{d[j];j=1,・・・,N}の転送が完了するまで、繰返し実行される。ここで、機器A102と機器B110との相互認証は、データの分割転送処理では行われない。
(2−1)転送データの機器Aでの構築:
機器A102は、j=1として、下記を実施する。
1.Data3:=(tss1,IDi,N,j,d[j])を生成し(ステップS431)、機器B110の非セキュア部120に、(j+2,rp,Data3)を送付する(ステップS432)。
(2−2)機器BでのCRCチェックとデータ格納、及び結果収集:
機器B110の非セキュア部120は、現在の時刻をtspj←TimeStampとして選ぶ。また、非セキュア部120は、(j+2,rp,Data3=(tss1,IDi,N,j,d[j]))を受け取ると、enc_data_with_crc:={}として、以下を実施する(ステップS433)。
1.rp,tspj,tss1,IDi,d[j]∈{0,1}^k、かつ、N,j∈{0,1}^l、であるか、即ちそれぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、rc1[0]:=0とする。もし満たしている場合は、以下の操作を実行する。
2.enc_data_with_crc:=enc_data_with_crc∪d[j]を算出し、rc1[0]:=1とする。
3.非セキュア部120は、(2,rp,tspj,rc1[0])をData3格納領域に書き込み、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する。
非セキュア部120は、その後、(j+2,rp,tspj,rc1[0])を機器A102に送付する(ステップS454)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、rc1[0]を消去する(ステップS456)。なお、j<Nの場合、機器A102からのData3の受信に備えて、Data3を配置するメモリ領域の(R,W,E)属性を(0,1,0)に設定する。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspjが信頼できる場合は、上記1のサイズチェック時に、tss1とtspjとを比較することで、その時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspjと認証端末からの認証結果の受取り時刻(以下、tsp’と記載)とを比較することで、その時間制約の確認を実施してもよい。
(2−3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(j+2,rp,tspj,rc1[0])を機器A102に送付する(S454)。機器A102は、(j+2,rp,tspj,rc1[0])を受け取ると、以下の処理を実行する(ステップS457)。

機器A102は、rp,tspj∈{0,1}^k、且つ、rc1[0]∈{0,1}^1であるか、即ちそれぞれのデータの長さが規定値どおりの長さとなっているかを検証し、rc1[0]=1を満たすかを検証する。全て満たしていれば、j:=j+1とする。そして、j>Nなら機器A102からの分割データの転送を完了する。
なお、機器A102から機器B110の非セキュア部120へ分割した署名付きデータを送付後、機器A102が機器B110の非セキュア部120からの応答を取得するまでの間に時間制約がある場合、上記サイズチェック時に、tss1と機器A102での現在時刻とを比較する事で、その時間制約の確認を実施しても良い。また、機器B110の非セキュア部120からの分割した署名付きデータのサイズチェック成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp’が追加されたデータを機器B110の非セキュア部から機器A102へ送付し、tsp’とtss1とを比較する事で、その時間制約の確認を実施しても良い。
実施の形態2の変形例にかかるデータ授受シーケンスは、後に述べる(3)結合データの署名検証とデータ格納を伴う相互認証処理での、分割した署名付きデータを全て結合後、署名検証を実施する。したがって、{d[j];j=1,・・・,N}の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能である。
(3)結合データの署名検証とデータ格納を伴う相互認証部:
(3−1)機器認証情報の機器Aでの構築:
(2)の繰返し実行にて、機器A102は、j>Nが満たされると、(2)の繰返し実行完了を識別し、下記を実施する(ステップS462)。
1.現在の時刻をtss2←TimeStampとして選ぶ。
2.乱数をrh0←{0,1}^kとして選ぶ。
3.r3:=PRF(ski,tss2||IDi||rh0||data||data_crc||N||N+1)を計算する。ここで、最後の「N+1」は、分割データの転送が終了したので転送対象データに対して署名検証を行う旨を指示するためのものである。また、r3は、転送対象データに対する署名である。そして、機器A102は、Data5:=(tss1,tss2,IDi,rh0,r3,N,N+1)として、機器B110の非セキュア部120に、(j+2,rp,Data5)を送付する(ステップS463)。ここで、演算子「||」はビット連接を表し、PRFは疑似ランダム関数を表す。
(3−2)機器Bでの署名検証とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data5を格納するメモリ領域の(R,W,E)属性を(0,1,0)に設定する(ステップS464)。つまり、(R,W,E)属性は、書込みのみ可と設定される。また、非セキュア部120は、現在の時刻をtspN+1←TimeStampとして選び、Data5を受け取ると、Data5:=Data5∪data||data_crcを計算する。さらに、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定する(ステップS465)。つまり、(R,W,E)属性は、読出しのみ可と設定される。
その後、非セキュア部120は、(rp,tspN+1,Data5)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS466)。送付が完了すると、非セキュア部120は、非セキュア部120のメモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data5を消去する(ステップS467)。また、非セキュア部120は、機器B110のハードウェアセキュリティモジュール回路10から受信するData6を格納するメモリ領域の(R,W,E)属性を(0,1,0)に設定しておく(ステップS481)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11によって実行されてもよいし、非セキュア部120のCPU2によって実行されてもよい。いずれの場合であっても、設定ソフトウェアはその実行に先立ってセキュアブートなどにより、改竄がないことが確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は(rp,tspN+1,Data5=(tss1,tss2,IDi,rh0,rh3,r3,N,N+1,data,data_crc))を受け取ると、rh4←{0,1}^kとして、以下を実施する(ステップS470)。これにより、機器A102の認証及び受信されたデータの署名検証がなされる。
1.rp,tspN+1,tss1,tss2,IDi,rh0,r3,data,data_crc∈{0,1}^k、且つ、N,N+1∈{0,1}^lであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証する。さらに、IDiが自身のものと一致するかを確かめる。もし満たしていなければ、result2:=000,rc2←{0,1}^(k−3),rc2:=rc2||result2とする。もし満たしている場合は、以下の操作を実行する。そして、後述するような処理はこれ以上実行されない。ここで、result2の値「000」は、不正なアクセスがされたことを示す。
2.r3=PRF(ski,tss1||tss2||IDi||rh0||data||data_crc||N||N+1)を満たすか検証する。満たさない場合、result2を、署名検証の結果が不合格であることを示すresult2:=110とする。満たす場合、以下の操作を実行する。
3.アクセス制御設定で、ハードウェアセキュリティモジュール回路10のみがエラー検出回路4へアクセス可能と設定される。復号して得られたdataのCRCをCRC(data)で算出し、data_crcと一致するか検証する。一致しない場合、result2を、CRCチェックが失敗したことを示すresult2:=010とする。もし満たしていた場合は、以下の操作を実行する。
ここで、アクセス制御機構がない場合は、機器B110内の非セキュア部120に配置されているエラー検出回路4にCRCチェックを依頼することとなる。その場合は、ハードウェアセキュリティモジュール回路10は、乱数rh2’←{0,1}^kを選択し、r0:=PRF(ski,tss||IDi||rh2’||data||data_crc||2)として、dataを機器B110内の非セキュア部120に配置されているエラー検出回路4に送付する。これにより、ハードウェアセキュリティモジュール回路10は、CRCチェックをエラー検出回路4に委譲し、結果とdata_crc2を受け取る。次いで、ハードウェアセキュリティモジュール回路10は、データ改竄がない事の確認として、r0=PRF(ski,tss||IDi||rh2’||data||data_crc2||2)が満たされるかを検証し、満たさない場合又は受け取り結果がNGの場合は、result1:=100とする。もし満たしており結果がOKの場合は、以下の操作を実行する。
4.署名検証で得られたdataを格納する領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可及び実行不可に)設定し、dataをA1に格納する(書き込む)。これにより、CRCチェックで合格した(つまりエラーが検出されなかった)データを書き込む際に、攻撃者等からデータを改竄されることを抑制できる。そして、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)に(つまり読出し可且つ書込み不可に)設定し、dataをA1から再度読出してdata’とする。data’のCRCをCRC(data)で算出し、data_crcと一致するか検証する。不揮発性メモリにデータを書き込むときにデータが壊れる可能性があるため、耐故障性を向上させるため、このように、データの書込みの後で書き込んだデータを読み出してCRCチェックを行う。このような処理により、データを書き込む際のエラーを検出するためにデータを読み出すときに、攻撃者等からデータを改竄されることを抑制できる。
CRC(data’)とdata_crcとが一致する場合、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)または(0,0,1)に(つまり書込み不可に)設定する。そして、領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result2を、全ての処理が成功したことを示すresult2:=001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定する事で実行のみ可能とする。一致しない場合、領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、領域A1に書き込んだdataを消去する。これにより、不適切なデータの実行又は読み取りを抑制することができる。そして、result2を、再度のCRCチェックが失敗したことを示すresult2:=010とする。
ここで、エラー検出回路4に対するアクセス制御設定が出来ない場合は、エラー検出回路4にCRCチェックを依頼することとなる。この場合、以下のような処理を行ってもよい。すなわち、ハードウェアセキュリティモジュール回路10は、乱数rh2’’←{0,1}^kを選択し、r0’:=PRF(ski,tss||IDi||rh2’’||data||data_crc||3)として、data’を機器B110内の非セキュア部120に配置されているエラー検出回路4に送付する。これにより、ハードウェアセキュリティモジュール回路10は、CRCチェックをエラー検出回路4に委譲し、結果及びdata_crc2’を受け取る。次いで、ハードウェアセキュリティモジュール回路10は、データ改竄がない事の確認として、r0’=PRF(ski,tss||IDi||rh2’’||data’||data_crc2’||3)が満たされるかを検証する。満たさない場合又は受け取り結果がNGの場合は、ハードウェアセキュリティモジュール回路10は、領域A1の(R,W,E)属性を(1,1,0)または(1,0,0)または(0,1,0)に設定し、領域A1に書き込んだdataを消去し、result1:=010とする。もし満たしており結果がOKの場合は、ハードウェアセキュリティモジュール回路10は、領域A1の(R,W,E)属性を(1,1,0)または(1,0,0)または(0,0,1)に設定し、領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result1:=001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定する事で実行のみ可能とする。
5.アクセス制御設定が、エラー検出回路4の処理を必要とするCPU2など他のモジュールがエラー検出回路4へアクセス可能とする。そして、乱数をrc2←{0,1}^(k−3)として選び、rc2:=rc2||result2∈{0,1}^kとする。
6.r4:=PRF(ski,tss2||tspN+1||IDi||rh4||rc2||0)を求める。そして、機器B110のハードウェアセキュリティモジュール回路10は、Data6:=(tss2,IDi,rh4,rc2,r4)として、(rp,tspN+1,Data6)を、機器B110の非セキュア部120に送付する(ステップS482)。
7.機器B110の非セキュア部120は、Data6を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS483)、(j+2,rp,tsp,Data6)を機器A102に送付する(ステップS484)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data6を消去する(ステップS485)。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtspN+1が信頼できる場合は、上記1のサイズチェック時に、tss2とtspN+1とを比較することで、その時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tspN+1と認証端末からの認証結果の受取り時刻(以下、tsp’と記載)とを比較することで、その時間制約の確認を実施しても良い。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。
(3−3)機器Aでの認証結果の検証:
機器B110の非セキュア部120は、(j+2,rp,tspN+1,Data6)を機器A102に送付する(S484)。機器A102は、(j+2,rp,tspN+1,Data6=(tss2,IDi,rh4,rc2,r4))を受け取ると、以下の処理を実行する(ステップS486)。これにより、機器A102と機器B110との相互認証が行われることとなる。
機器A102は、rp,tss2,tspN+1,IDi,rh4,rc2,r4∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているかを検証し、満たしていなければ、result2:=000とする。もし満たしていれば、機器A102は、r4=PRF(ski,tss2||tspN+1||IDi||rh4||rc2||0)であるか(つまり署名が正しいか否か)を検証する。機器A102は、もし正しければresult2:=rc2の下位3bitとし、そうでなければresult2:=111とする。
そして、機器A102は、result2を認証結果として出力し、これを記録する。ここで、result2が「001」を示す場合、機器A102と機器B110との間での相互認証が成功し、データdataが中間者に改竄されることなく、またデータが欠損することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2が「010」を示す場合、書込みでのデータ欠損による書込み失敗を意味する。また、result2が「100」を示す場合、認証は成功したが書込み前にデータ欠損が発生したことを意味する。また、result2が「100」を示す場合、enc_data_with_crcの署名検証が失敗したこと、つまり、{d[j];j=1,・・・,N}の何れかの改竄の可能性があることを意味する。また、result2が「110」を示す場合、受信エラー(メッセージ改竄の可能性あり)が発生したことを意味する。
なお、機器A102から機器B110の非セキュア部120へ認証データを送付後、機器A102が機器B110の非セキュア部120からの認証データを取得するまでの間に時間制約がある場合、上記サイズチェック時に、tss2と機器A102での現在時刻とを比較することで、その時間制約の確認を実施してもよい。また、機器B110の非セキュア部120からの署名データに対する署名検証の成功可否の機器A102への送付に時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp’が追加されたデータを機器B110の非セキュア部120から機器A102へ送付し、tsp’とtss2とを比較することで、その時間制約の確認を実施してもよい。
実施の形態2の変形例にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在したとしても異なるセッションでの機器B110での認証が実施されて認証が失敗するためシーケンスが継続しないので、フェールセーフである。また、実施の形態2の変形例にかかるデータ授受シーケンスは、rh4が改竄された場合も、機器A102の署名データに対する署名検証が失敗するため、フェールセーフである。また、実施の形態2の変形例にかかるデータ授受シーケンスは、機器A102での署名データに対する署名の検証手段により、攻撃者等がrc2の値を改竄しても、機器A102で検証合格とすることはできない。また、実施の形態2の変形例にかかるデータ授受シーケンスでは、tspN+1が改竄された場合も、機器A102での認証結果の検証手段により、機器A102で検証合格とすることはできない。つまり、rp、rh4、tspN+1の何れを改竄しても、攻撃者等は、機器B110のハードウェアセキュリティモジュール回路10で構成した署名データに対する署名検証を、書込み成功や検証合格とすることができない。したがって、rp,rh4,rc2の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知することが可能となる。なお、改竄による認証失敗や検証不合格を効率よく検出する目的で、tspN+1に対してハッシュ値を付加してもよい。
また、実施の形態2の変形例にかかるデータ授受シーケンスは、データサイズに制限がある場合、転送対象データの転送の前後で相互認証を行い、転送対象データ全体にCRCを付加して署名を付加し、その署名が付加されたデータ全体を分割して転送している。したがって、分割されたデータそれぞれの転送の際に、相互認証が不要となる。したがって、実施の形態2の変形例にかかるデータ授受シーケンスでは、転送回数ごとに暗号化して転送するよりも、効率よく転送することが可能である。
(実施の形態3)
次に、実施の形態3について説明する。上述した実施の形態1及び実施の形態2では、機器A102と機器B110とが、事前に対称鍵skiを共有していることを前提としていた。ここで、機器の出荷時に機器への鍵の書込みを行う場合、機器のIDi∈IDと鍵skiの集合を{(IDi,ski);IDi∈ID,ski←{0,1}^k,k:正整数のセキュリティパラメータ}として、サーバ(サーバ104)がデータベースに登録することが考えられる。
一方で、出荷後にどの2つ以上の機器がデータ授受を行うかを予め予測することは一般に容易ではないため、機器組み上げ後(例えば機器の使用時など)に共通の対称鍵を設定できることが望ましい。また、機器のIDを自由に読み出せる一方、上書きや消去はできないことが前提の場合に、機器A102と機器B110との間のデータ授受において、機器A102及び機器B110以外の例えば機器A’にも全く同じ対称鍵が配置されていることがある。この場合、機器Bがデータを受信する場合、機器A102からのデータなのか機器A’からのデータなのかを識別することは、容易ではない。したがって、機器A102及び機器B110の2つの機器のみが共有する対称鍵を配置できることが望ましい。
ここで、機器A102から機器B110へ送信されるデータは、機器A102によって生成されたデータであってもよいし、データ送信サーバ(サーバ104)から別途セキュア通信など適切な手段で機器A102に配置されたデータであってもよい。特に、後者の場合は、TLS(Transport Layer Security)などのセキュアプロトコルにより、機器A102に配置されたHSM内に格納されていることが望ましい。また、データ送信サーバのデータベースに各機器のIDiと鍵skiが登録されていない状況、及び、そもそもそのようなデータベースがなく各機器のIDiと鍵skiはデータ送信サーバとは異なるサーバで管理されている状況も、考慮すべきである。実施の形態3では、サーバ104が、機器A102と機器B110との間のデータ授受のみに使用される鍵情報(乱数)を発行する。
図29〜図34は、実施の形態3にかかる認証システム100において実行されるデータ授受シーケンスを示すシーケンス図である。図29〜図34に示すシーケンス図は、送信元機器によって生成された(又は送信元機器に別の手段でセキュアに配備された)データを、送信先機器へ送付するプロトコルの動作を示す。ここで、図29〜図34に示すシーケンス図は、送信元機器と送信先機器とが事前に共通鍵を持たない前提における、改竄耐性及び秘匿性を持つ機能安全考慮のデータ授受プロトコルの動作を示す。なお、機器A102及び機器B110に対する共通対称鍵の初期設定として、下記設定が事前になされているものとする。
セキュリティパラメータをkとし機器A102は1^kを入力とする。サーバ104は、認証識別子IDp∈{0,1}^kが割り振られている機器A102に対して対称鍵skp←{0,1}^kを選び、(skp,IDp)を送付する。同様に、サーバ104は、認証識別子IDd∈{0,1}^kが割り振られている機器B110に対して対称鍵skd←{0,1}^kを選び、(skd,IDd)を送付する。ここで、skpは、サーバ104と機器A102との間の共通鍵であり、skdは、サーバ104と機器B110との間の共通鍵である。機器A102及び機器B110は、それぞれ、(skp,IDp)及び(skd,IDd)の対応するものを、夫々の不揮発性メモリに保存する。例えば、機器A102及び機器B110を出荷する前にこれら処理を実施することで、各機器に個別の鍵を設定してもよい。また、機器B110の非セキュア部120は、機器B110に内蔵されたハードウェアセキュリティモジュール回路10に格納されたIDiを読み出し可能である。但し、上書き変更及び消去は適切なアクセス制御によりできないものとする。
(1)機器認証情報及び機器A102と機器B110との間に配備する共通鍵情報のサーバでの構築:
機器A102は、機器A102からIDdを取得する(ステップS501)。機器A102は、機器B110からIDdを読み出してもよいし、機器B110から受信してもよい。機器A102は、セッション管理のためにrp∈{0,1}^kを選び(ステップS502)、(1,rp,IDd,IDp)をサーバ104に送付する(ステップS503)。サーバ104は、(1,rp,IDd,IDp)を受け取ると、下記の処理を実施する(ステップS504)。これにより、機器A102及び機器B110が認証され、機器A102と機器B110との間のセッション鍵が生成される。
1.rp,IDd,IDp∈{0,1}^kであるか、そしてIDd,IDp∈IDであるかを検証する。もし異なっていれば処理を終了する。もし満たしていれば、以下を実行する。
2.現在の時刻をtss←TimeStampとして選ぶ。
3.乱数をrh←{0,1}^kとして選ぶ。
4.機器A102及び機器B110に対するセッション鍵をk1←{0,1}^kとして選ぶ。
5.機器A102とサーバ104との相互認証のための情報として、r1p:=PRF(skp,tss||IDp||rh||1)を計算する。
6.機器B110とサーバ104との相互認証のための情報として、r1d:=PRF(skd,tss||IDd||rh||1)を計算する。
7.機器A102及び機器B110に対してセッション鍵k1を送信するために、下記を実施する。
・機器A102向けに、r1’p:=PRF(skp,tss||IDp||rh||2)、及び、c1p:=AE.Enc(r1’p,k1)を計算する。ここで、r1’pは、鍵k1を暗号化するための鍵である。
・機器B110向けに、r1’d:=PRF(skd,tss||IDd||rh||2)、及び、c1d:=AE.Enc(r1’d,k1)を計算する。ここで、r1’dは、鍵k1を暗号化するための鍵である。
8.サーバ104は、Data1:=(tss,IDd,rh,r1d,c1d,IDp,r1p,c1p)として、機器A102に、(1,rp,Data1)を送付する(ステップS505)。
(2)機器Aでの、サーバ機器認証情報の検証と、機器Bへ送信する認証付き暗号データの構築:
機器A102は、現在の時刻をtsp←TimeStampとして選び、乱数2つをrcp←{0,1}^(k−3),r3p←{0,1}^kとして選ぶ。また、機器A102は、Data1を格納するメモリ領域の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、Data1を受け取ると、当該メモリ領域にData1を書き込む。そして、機器A102は、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定し、以下を実施する(ステップS510)。
1.rp,tss,IDd,rh,r1d,c1d,IDp,r1p,c1p∈{0,1}^kであるか、そしてIDd,IDp∈IDであるかを検証する。もし満たしていなければ、result1p:=000,rcp:=rcp||result1pとして、乱数をr2p←{0,1}^kとして選ぶ。ここで、result1pの値「000」は、サーバ104と機器A102との間で不正なアクセスがされたことを示す。もし満たしていれば、以下を実行する。
2.r1p=PRF(skp,tss||IDp||rh||1)を満たすか検証し、満たさない場合は、result1p:=0100とする。満たす場合は、下記を実施する。
・result1p:=001とする。
・r1’p:=PRF(skp,tss||IDp||rh||2),k1:=AE.Dec(r1’p,c1p)を計算する。ここで、AE.Decは認証付き暗号方式での復号である。なお、暗号と署名との組として与えられた場合は、暗号文の署名検証を実施し、検証が通れば、暗号文の復号を実施する。
・もし、認証付き暗号方式での認証にて、認証エラーが出た場合は、result1pをresult1p:=010に上書きする。
3.機器A102でのサーバ104の認証結果、及び、サーバ104による機器A102の認証に用いる認証情報として、rcp:=rcp||result1p,r2p:=PRF(skp,tss||tsp||IDp||rh||rcp||1)を計算する。
4.乱数をrh1←{0,1}^kとして選ぶ。
なお、3.及び4.は、5.以降に行われてもよい。また、下記5.が行われるとき、4.は行われなくてもよい。
5.result1p=001を満たすか検証し、満たす場合、下記を実施する。満たさない場合は、6.以下を実施する。
・現在の時刻をtss1←TimeStampとして選び、乱数をrh1←{0,1}^kとして選ぶ。
・機器B110への送信データdataに対して、機器A102内のエラー検出回路(ECC/CRC処理部)にて、例えばdata_crc:=CRC(data)として、CRCを計算する。ここで、本処理は、適切なアクセス制限を伴うものとして、機器A102内のHSM内で改竄耐性と秘匿性を満たす範囲で実施されるものとする。この処理にて、改竄耐性のみの保証しか出来ない場合は、機器A102内では、改竄耐性のみが保証可能である。また、機器A102から機器B110内HSMでの格納に至るまでの経路での中間者攻撃に対しては、改竄耐性と秘匿性を持つこととなる。
・機器A102と機器B110との相互認証のため、r1’’p:=PRF(k1,tss1||IDd||rh||2),c1:=AE.Enc(r1’’p,tss1||IDd||rh1||data||data_crc)を計算する。
6.機器A102は、Data2:=(tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,c1)として、機器B110の非セキュア部120に、(1,rp,tsp,Data2)を送付する(ステップS522)。
(3)機器Bでのデータ復号とデータ格納、及び結果収集:
機器B110の非セキュア部120は、Data2を格納するメモリ領域の(R,W,E)属性を(1,1,0)または(0,1,0)に設定する(ステップS521)。また、非セキュア部120は、Data2を受け取ると(S522)、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS523)、(rp,tsp,Data2)を機器B110のハードウェアセキュリティモジュール回路10に送付する(ステップS524)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data2を消去する(ステップS525)。ここで、(R,W,E)属性の変更は、機器B110のハードウェアセキュリティモジュール回路10に内蔵されたCPU11が実行しても良いし、非セキュア部120のCPU2が実行してもよい。いずれの場合であっても、設定ソフトウェアはその実行に先立ってセキュアブートなどで改竄がない事が確認されているものとする。
さて、機器B110のハードウェアセキュリティモジュール回路10は、(rp,tsp,Data2=(tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,c1))を受け取ると、乱数4つを、r2d←{0,1}^k,r3d←{0,1}^k,rcd←{0,1}^(k−3),rcdp←{0,1}^(k−4)とする。そして、ハードウェアセキュリティモジュール回路10は、以下を実施する(ステップS530)。
1.rp,tsp,tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,c1∈{0,1}^kであるか、つまり、それぞれのデータの長さが規定値どおりの長さとなっているか、そしてIDd,IDp∈IDとなっているかを検証する。もし満たしていなければ、result1d:=000,rcd:=rcd||result1d,result1dp:=000,rcdp:=rcdp||result1dpとする。ここで、result1dの値「000」は、サーバ104と機器B110との間で不正なアクセスがされたことを示す。また、result1dpの値「000」は、機器A102から機器B110の間で不正なアクセスがされたことを示す。もし満たしている場合は、以下の操作を実行する。
2.r1d=PRF(skd,tss||IDd||rh||1)を満たすか検証し、満たさない場合は、result1d:=100とする。満たす場合は、下記を実施する。
・result1d:=001とする
・r1’d:=PRF(skd,tss||IDd||rh||2),k1:=AE.Dec(r1’d,c1d)を計算する。
・もし、認証付き暗号方式での認証にて、認証エラーが出た場合は、result1dをresult1d:=010に上書きする。
3.機器B110でのサーバ認証結果と、サーバ104による機器B110の認証に用いる認証情報として、rcd:=rcd||result1d,r2d:=PRF(skd,tss||tsp||IDd||rh||rcd||1)を計算する。
4.result1d=001を満たすか検証し、満たさない場合は、result1dp:=1100とする。満たす場合は、r1’’p:=PRF(k1,tss1||IDd||rh||2),tss1||IDd||rh||data||data_crc:=AE.Dec(r1’’p,c1)を計算する。これにより、c1がチェックされる。
5.tss1||IDd||rh||data||data_crc:=AE.Dec(r1’’p,c1)、つまり認証付き暗号での認証付き復号を実施し、認証が満たされるかを検証する。もし満たさない場合、result1dp:=1000とする。もし満たしていた場合は、以下の操作を実行する。ここで、AE.Decは認証付き暗号方式での復号である。暗号と署名の組として与えられた場合は、暗号文の署名検証を実施し、検証が通れば、暗号文の復号を実施する。またここでの署名検証が認証に該当する。
6.アクセス制御設定により、ハードウェアセキュリティモジュール回路10のみがエラー検出回路4へアクセス可能となる。復号して得られたdataのCRCをCRC(data)で算出し、data_crcと一致するか検証する。一致しない場合、CRCチェックが失敗したことを示すresult1dp:=0100とする。もし満たしていた場合は、以下の操作を実行する。
・復号で得られたdataを格納する領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可及び実行不可に)設定し、dataをA1に格納する。これにより、CRCチェックで合格した(つまりエラーが検出されなかった)データを書き込む際に、攻撃者等からデータを改竄されることを抑制できる。そして、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)に(つまり読出し可且つ書込み不可に)設定し、dataをA1から再度読出してdata’とする。data’のCRCをCRC(data’)で算出し、data_crcと一致するか検証する。不揮発性メモリにデータを書き込むときにデータが壊れる可能性があるため、耐故障性を向上させるため、このように、データの書込みの後でデータを読み出してCRCチェックを行う。このような処理により、データを書き込む際のエラーを検出するためにデータを読み出すときに、攻撃者等からデータを改竄されることを抑制できる。
・CRC(data’)とdata_crcとが一致する場合、領域A1の(R,W,E)属性を(1,0,1)または(1,0,0)または(0,0,1)に(つまり書込み不可に)設定する。領域A1が不揮発性メモリ部なら活性化処理を実施する。さらに、result1dpを、全ての処理が成功したことを示すresult1dp:=0001とする。dataがクリティカルなプログラムであり秘匿性が必要な場合は、(0,0,1)と設定する事で実行のみ可能とする。一致しない場合、領域A1の(R,W,E)属性を(1,1,0)または(0,1,0)に(つまり書込み可且つ実行不可に)設定し、領域A1に書き込んだdataを消去する。これにより、不適切なデータの実行又は読み取りを抑制することができる。そして、result1dpを、再度のCRCチェックが失敗したことを示すresult1dp:=0010とする。
・アクセス制御設定により、エラー検出回路4の処理を必要とするCPU2など他のモジュールがエラー検出回路4へアクセス可能となる。
・機器B110での機器A102認証結果と、機器A102による機器B110の認証に用いる認証情報として、rcdp:=rcdp||result1dp,r3d:=PRF(k1,tss||tsp||IDd||rh||rcdp||1)を計算する。
7.機器B110のハードウェアセキュリティモジュール回路10は、Data3:=(tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d)として、(rp,tsp,Data3)を、機器B110の非セキュア部120に送付する(ステップS540)。
8.機器B110の非セキュア部120は、Data3を受け取ると、当該メモリ領域の(R,W,E)属性を(1,0,0)に設定した後(ステップS541)、(2,rp,tsp,Data3)を機器A102に送付する(ステップS542)。送付が完了すると、非セキュア部120は、当該メモリ領域の(R,W,E)属性を(0,1,0)に設定した後、Data3を消去する(ステップS543)。
なお、(R,W,E)属性の更新は、図3〜図9で示した(R,W,E)属性制御機構(アクセス制御回路20)を用いて行われてもよい。なお、図3〜図9で示した(R,W,E)属性制御機構を用いない場合は、メモリプロテクションユニット(MPU)又はメモリ管理ユニット(MMU)を用いて設定が行われてもよい。また、図6の機構を用いる場合、R属性とW属性がたとえ0となっていてもハードウェアセキュリティモジュール回路10の設定で読出し及び書込みを可能とできるため、これを考慮した属性変更を行う必要がある。図6においてS1とS2との遷移がなされない場合は、更新可能な範囲が制限されるため、その制限に沿った形で属性変更を行う必要がある。
なお、機器A102から機器B110の非セキュア部120への送付に時間制約がある場合であってtsp及びtss1が信頼できるときは、上記1.のサイズチェック時に、tssとtsp及びtss1とを比較することで、時間制約の確認を実施してもよい。また、認証対象端末での認証処理への時間制約があり、機器B110の非セキュア部120の時計が信頼できる場合は、tsp及びtss1と認証端末からの認証結果の受け取り時刻(以下、tsp’と記載)とを比較することで、時間制約の確認を実施してもよい。これにより、処理にあまりにも長い時間を要した場合に、不適切な処理を検出することができる。
(4)機器Aでの機器Bにおける認証結果の検証:
機器B110の非セキュア部120は、(2,rp,tsp,Data3)を機器A102に送付する(S542)。機器A102は、(2,rp,tsp,Data3=(tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d))を受け取ると、rcp←{0,1}^(k−3)として、以下の処理を実行する(ステップS544)。これにより、サーバ104の認証及びk1の検証が行われることとなる。
1.rp,tss,tss1,tsp,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^kであるか、つまりそれぞれのデータの長さが規定値どおりの長さとなっているか、そしてIDd,IDp∈IDとなっているかを検証する。満たしていなければresult1pd:=000,result1p:=000とする。ここで、result1pdの値「000」は、機器B110から機器A102の間で不正なアクセスがされたことを示す。もし満たしていれば、以下を実施する。
2.r1p=PRF(skp,tss||IDp||rh||1)を満たすか(つまり署名が正しいか否か)検証し、満たさない場合は、result1p:=110とする。満たす場合は、下記を実施する。
・result1p:=001とする
・r1’p:=PRF(skp,tss||IDp||rh||2),k1:=AE.Dec(r1’p,c1p)を計算する。
・もし、認証付き暗号方式での認証にて、認証エラーが出た場合は、result1pをresult1p:=010に上書きする。
3.result1p=001を満たすか検証し、満たさない場合、5.へ処理を移行する。満たす場合は、下記を実施する。
4.r3d=PRF(k1,tss||tsp||IDd||rh||rcd||1)を満たすか検証する。これにより、サーバ104に送信するデータの検証がなされる。満たさない場合、result1pd:=100とし、満たす場合、result1pd:=001とする。
5.result1pd=001を満たすか検証し、満たさない場合、result2pd:=1111とし、満たす場合、result2pd:=0x0・・・0f&rcdp(rcdpの下位4bit)とする。
そして、機器A102は、result2pdを認証結果として出力し、これを記録する。ここで、result2pdが「0001」である場合、サーバ104の真正が証明され、データdataが中間者に改竄されることも漏洩することもなく、またデータが欠損することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。result2pdが「0010」である場合、書込みでのデータ欠損による書込み失敗を意味する。また、result2pdが「0100」である場合、サーバ104の真正証明と認証・復号は成功したが書込み前にデータ欠損が発生したことを意味する。また、result2pdが「1100」である場合、受信エラー(メッセージ改竄の可能性:サーバ104の真正が証明されないか、証明できたが共通鍵k1の認証付き暗号方式での認証不合格)が発生したことを意味する。
(5)サーバでの、機器Aと機器Bそれぞれの認証結果の検証:
機器A102は、(2,rp,tsp,Data3)をサーバ104に送付する(ステップS551)。サーバ104は、(2,rp,tsp,Data3=(tss,tss1,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d))を受け取ると、result2d:=111,result2p:=111として、以下を実施する(ステップS552)。
1.rp,tss,tss1,tsp,IDd,rh,r1d,c1d,IDp,r1p,c1p,rcp,r2p,r3p,rcd,r2d,rcdp,r3d∈{0,1}^kであるか(つまりそれぞれのデータの長さが規定値どおりの長さとなっているか)、そしてIDd,IDp∈IDとなっているかを検証する。満たしていなければresult2d:=101,result2p:=101とする。もし満たしていれば、以下を実施する。ここで、result2d及びresult2pの値「101」は、不正なアクセスがされたことを示す
2.機器A102でのサーバ104の真正結果の検証のため、r2p=PRF(skp,tss||tsp||IDp||rh||rcp||1)を満たすかを検証する。満たす場合、result2p:=0x0・・・7&rcp(rcpの下位3bit)とする。そして、result2pを機器A102とサーバ104との相互認証結果として記録する。ここで、result2pが「001」である場合、サーバ104の真正が証明され、鍵k1が中間者に改竄されることも漏洩することもなく、機器A102のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2pが「010」である場合、鍵k1の認証付き暗号方式での認証に失敗(メッセージ改竄の可能性)したことを意味する。また、result2pが「100」である場合、サーバ104の真正証明に失敗(メッセージ改竄の可能性)したことを意味する。
3.機器B110でのサーバ104の真正結果の検証のため、r2d=PRF(skd,tss||tsp||IDd||rh||rcd||1)を満たすかを検証する。満たす場合、result2d:=0x0・・・7&rcd(rcdの下位3bit)とする。そして、result2dを機器B110とサーバ104との相互認証結果として記録する。ここで、result2dが「001」である場合、サーバ104の真正が証明され、鍵k1が中間者に改竄されることも漏洩することもなく、機器B110のデータ格納領域にデータ格納を行うことが成功したことを意味する。また、result2dが「010」である場合、鍵k1の認証付き暗号方式での認証に失敗(メッセージ改竄の可能性)したことを意味する。また、result2dが「100」である場合、サーバ104の真正証明に失敗(メッセージ改竄の可能性)したことを意味する。
なお、サーバ104から機器A102へ鍵k1の認証付き暗号データを送付後、機器A102及び機器B110によるサーバ104の真正証明や鍵k1の認証に対する結果をサーバ104が取得するまでの間に時間制約がある場合、上記サイズチェック時に、tssとサーバ104での現在時刻とを比較することで、その時間制約の確認を実施してもよい。
実施の形態3にかかるデータ授受シーケンスは、rpが改竄されると、対応するセッションが非存在となるか、存在しても異なるセッションでの機器B110での認証が実施されるが認証が失敗するため、フェールセーフである。また、実施の形態3にかかるデータ授受シーケンスは、rhが改竄される場合も、機器A102及び機器B110での鍵k1の認証付き暗号の復号処理可否に対する検証が失敗するため、フェールセーフである。また、実施の形態3にかかるデータ授受シーケンスは、機器B110での認証付き暗号の復号操作の成功可否に対する検証手段により、rhが改竄された場合に機器A102が機器B110へ送付したデータの復号時の認証に失敗するため、フェールセーフである。また、実施の形態3にかかるデータ授受シーケンスでは、機器A102と機器B110との間での相互認証手段により、攻撃者がrcdpの値を改竄しても、機器A102において機器B110でのデータ書込みに成功したとすることはできない。また、実施の形態3にかかるデータ授受シーケンスでは、tspが改竄された場合も、機器A102及び機器B110での認証結果の検証手段により、機器B110でのデータ書込みを成功とすることも、機器A102において機器B110でのデータ書込みを成功とすることもできない。他の値も同様である。つまり、rp、rh2、tspなど全ての値の内、何れを改竄しても、機器B110のハードウェアセキュリティモジュール回路10で構成された認証付き暗号の復号処理可否を、攻撃者等は、書込み成功や検証合格とすることができない。したがって、実施の形態3においては、メッセージに含まれる値の全てまたは何れかが改竄された場合、何らかの改竄があったことを検知可能である。なお、改竄による認証失敗又は検証不合格を効率よく検出する目的で、tspに対してハッシュ値を付加してもよい。
また、実施の形態3にかかるデータ授受シーケンスでは、機器A102機器B110(半導体装置1)との通信のみに用いられる鍵情報(k1)が、サーバ104によって、機器A102及び機器B110に対して発行される。そして、機器A102及び機器B110に鍵情報が送信されるときに、サーバ104と、機器A102と、機器B110とで、相互に認証を行う。さらに、実施の形態1及び実施の形態2において転送対象データを転送する場合と同様に、非セキュア部120のメモリ領域に対して、アクセス制御がなされる。したがって、機器A102及び機器B110に共通鍵を予め配置しておくことが不要となる。さらに、配置される際にアクセス制御がなされることによって、攻撃者等によって鍵情報の改竄がなされることを抑制することが可能となる。
(変形例)
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した複数の実施の形態のそれぞれは、互いに適用可能である。例えば、実施の形態1にかかるデータ授受シーケンスが行われる前に、実施の形態3にかかる鍵情報の送付が行われてもよい。また、上述した実施の形態にかかるシーケンス図において、各処理の順序は、適宜、変更可能である。
また、上述した実施の形態において、認証システム100は、車載ネットワークシステムであるとしたが、認証システム100は、車載ネットワークシステムに限定されない。認証システム100は、他の機器と通信可能な任意の装置に、適用可能である。例えば、認証システムは、外部の機器と通信可能な家電製品等に、適用可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1 半導体装置
2 CPU
3 プログラムメモリ
4 エラー検出回路
5 入出力インタフェース
6 ワークメモリ
8 専用エラー検出回路
10 ハードウェアセキュリティモジュール回路
11 CPU
12 入出力インタフェース
13 暗号処理部
14 ワークメモリ
15 コード用不揮発性メモリ
16 データ用不揮発性メモリ
20 アクセス制御回路
22 属性制御ステートマシン
40 アクセス制御回路
41 データ読出しユニット
43 命令フェッチユニット
100 認証システム
102 機器A
104 サーバ
110 機器B
120 非セキュア部

Claims (18)

  1. 認証処理を行うハードウェアセキュリティモジュール回路と、
    少なくとも前記ハードウェアセキュリティモジュール回路で処理される第1のデータに対してエラー検出処理を行うために使用されるエラー検出回路と
    を有し、
    前記エラー検出回路に関するメモリ領域は、少なくとも前記第1のデータに対して前記エラー検出処理が行われる際に、前記ハードウェアセキュリティモジュール回路からのみアクセス可能となるように構成されている
    半導体装置。
  2. 前記エラー検出回路は、前記ハードウェアセキュリティモジュール回路に専用のハードウェア回路である
    請求項1に記載の半導体装置。
  3. 前記メモリ領域へのアクセス制御を行うアクセス制御回路
    をさらに有する請求項1に記載の半導体装置。
  4. 前記ハードウェアセキュリティモジュール回路は、前記メモリ領域に対し、前記アクセス制御回路による指定によらないで、データの読み出し又は書き込みが可能となるように構成されている
    請求項3に記載の半導体装置。
  5. 前記アクセス制御回路は、前記メモリ領域に対する、読出し、書込み及び実行のそれぞれの動作の可否の状態を設定し、
    前記アクセス制御回路は、第1の状態から、前記第1の状態よりも可能な動作が多くない第2の状態に遷移するように、制御を行う
    請求項3に記載の半導体装置。
  6. 前記半導体装置の外部の機器から、前記半導体装置に転送対象データが転送される場合、
    前記ハードウェアセキュリティモジュール回路は、前記メモリ領域を介して前記転送対象データに関する認証用データを前記機器から受信及び前記機器に送信することで、相互認証を行い、
    前記エラー検出回路は、前記認証用データに対して、エラー検出処理を行い、
    前記アクセス制御回路は、前記認証用データを前記メモリ領域に書き込む際又は前記メモリ領域から読み出す際に、アクセス制御を行う
    請求項4に記載の半導体装置。
  7. 前記ハードウェアセキュリティモジュール回路は、エラー検出処理の結果、エラーが検出されなかった前記第1のデータを前記メモリ領域に格納するときに、前記メモリ領域を書込み可能とする
    請求項4に記載の半導体装置。
  8. 前記ハードウェアセキュリティモジュール回路は、前記メモリ領域に格納した前記第1のデータに対してエラー検出処理を行うため、前記メモリ領域を読出し可能として、前記第1のデータを前記メモリ領域から読み出す
    請求項4に記載の半導体装置。
  9. 前記第1のデータを前記メモリ領域から読み出し前記エラー検出処理を行ってエラーが検出された場合に、前記ハードウェアセキュリティモジュール回路は、前記メモリ領域を書込み可能且つ実行不可として、前記メモリ領域に書き込んだ前記第1のデータを消去する
    請求項8に記載の半導体装置。
  10. 前記第1のデータには、セッション情報及び乱数の少なくとも一方が付加され、
    前記ハードウェアセキュリティモジュール回路は、前記セッション情報又は乱数が改竄された場合に、データ授受シーケンスが継続しないように構成されている
    請求項3に記載の半導体装置。
  11. 前記機器から、前記転送対象データが分割されて転送される場合、
    前記ハードウェアセキュリティモジュール回路は、前記転送対象データの転送前に、前記機器と相互認証を行い、
    前記ハードウェアセキュリティモジュール回路は、前記機器によって前記転送対象データの全体に対してエラー検出用データの付加及び認証処理がなされた前記認証用データを、分割して受信し、
    前記ハードウェアセキュリティモジュール回路は、前記転送対象データの転送後に、前記機器と相互認証を行う
    請求項6に記載の半導体装置。
  12. 前記ハードウェアセキュリティモジュール回路は、前記転送対象データの転送後、前記機器の認証が成功した場合に、分割された暗号データを結合して前記転送対象データを復号する
    請求項11に記載の半導体装置。
  13. 前記認証用データは、暗号化されないで前記機器から送信され、
    前記ハードウェアセキュリティモジュール回路は、前記相互認証を、暗号化及び復号を伴わないで行う
    請求項6に記載の半導体装置。
  14. 前記半導体装置の外部の機器と通信可能なサーバから、前記機器を介して、前記半導体装置に対して、前記半導体装置と前記機器との通信のみに用いられる鍵情報が発行され、
    前記ハードウェアセキュリティモジュール回路は、前記メモリ領域を介して前記鍵情報に関する認証用データを前記機器から受信及び前記機器に送信することで、前記サーバ及び前記機器と相互認証を行い、
    前記エラー検出回路は、前記認証用データに対して、エラー検出処理を行い、
    前記アクセス制御回路は、前記認証用データを前記メモリ領域に書き込む際又は前記メモリ領域から読み出す際に、アクセス制御を行う
    請求項4に記載の半導体装置。
  15. 第1の機器と、
    前記第1の機器と通信可能な第2の機器と
    を有し、
    前記第1の機器から前記第2の機器に対して、転送対象データが転送され、
    前記第2の機器は、
    認証処理を行うハードウェアセキュリティモジュール回路と、
    少なくとも前記ハードウェアセキュリティモジュール回路で処理される前記転送対象データに対してエラー検出処理を行うために使用されるエラー検出回路と
    を有し、
    前記エラー検出回路に関するメモリ領域は、少なくとも前記転送対象データに対して前記エラー検出処理が行われる際に、前記ハードウェアセキュリティモジュール回路からのみアクセス可能となるように構成されている
    認証システム。
  16. 前記第2の機器は、
    前記メモリ領域へのアクセス制御を行うアクセス制御回路
    をさらに有し、
    前記ハードウェアセキュリティモジュール回路は、前記メモリ領域に対し、前記アクセス制御回路による指定によらないで、データの読み出し又は書き込みが可能となるように構成されている
    請求項15に記載の認証システム。
  17. 前記ハードウェアセキュリティモジュール回路は、前記メモリ領域を介して前記転送対象データに関する認証用データを前記第1の機器から受信及び前記第2の機器に送信することで、相互認証を行い、
    前記エラー検出回路は、前記認証用データに対して、エラー検出処理を行い、
    前記アクセス制御回路は、前記認証用データを前記メモリ領域に書き込み又は前記メモリ領域から読み出す際に、アクセス制御を行う
    請求項16に記載の認証システム。
  18. 第1のデータに対して、認証処理を行い、
    前記第1のデータに対してエラー検出処理を行い、
    前記エラー検出処理に関するメモリ領域に対してアクセス制御がなされ、
    前記第1のデータに対してエラー検出処理が行われる際に、前記メモリ領域に対し、前記アクセス制御による指定によらないで、前記認証処理を行う回路がデータの読み出し又は書き込みが可能となるようにする
    認証方法。
JP2017223607A 2017-11-21 2017-11-21 半導体装置、認証システム及び認証方法 Pending JP2019095969A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2017223607A JP2019095969A (ja) 2017-11-21 2017-11-21 半導体装置、認証システム及び認証方法
US16/137,346 US10949527B2 (en) 2017-11-21 2018-09-20 Semiconductor device, authentication system, and authentication method
KR1020180138975A KR20190058302A (ko) 2017-11-21 2018-11-13 반도체 장치, 인증 시스템 및 인증 방법
EP18206955.9A EP3486832B1 (en) 2017-11-21 2018-11-19 Semiconductor device, authentication system, and authentication method
CN201811383641.4A CN109815046A (zh) 2017-11-21 2018-11-20 半导体器件、认证系统和认证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017223607A JP2019095969A (ja) 2017-11-21 2017-11-21 半導体装置、認証システム及び認証方法

Publications (1)

Publication Number Publication Date
JP2019095969A true JP2019095969A (ja) 2019-06-20

Family

ID=64402001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017223607A Pending JP2019095969A (ja) 2017-11-21 2017-11-21 半導体装置、認証システム及び認証方法

Country Status (5)

Country Link
US (1) US10949527B2 (ja)
EP (1) EP3486832B1 (ja)
JP (1) JP2019095969A (ja)
KR (1) KR20190058302A (ja)
CN (1) CN109815046A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3109229B1 (fr) 2020-04-09 2023-08-25 Proton World Int Nv Procédé d'authentification
US11893550B2 (en) * 2021-06-02 2024-02-06 Thales Dis Cpl Usa, Inc. System and method for hosting and remotely provisioning a payment HSM by way of out-of-band management

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4856080A (ja) 1971-11-12 1973-08-07
JP2002077135A (ja) 2000-09-05 2002-03-15 Ntt Fanet Systems Corp 暗号化方法および復号化方法とそれらの装置
EP1645931A1 (en) 2004-10-11 2006-04-12 Telefonaktiebolaget LM Ericsson (publ) Secure loading and storing of data in a data processing device
US8627086B2 (en) 2004-10-11 2014-01-07 Telefonaktiebolaget Lm Ericsson (Publ) Secure loading and storing of data in a data processing device
CN103597496B (zh) * 2011-05-23 2016-11-02 三星电子株式会社 用于认证非易失性存储器设备的方法和装置
EP2802152B1 (en) * 2013-05-07 2017-07-05 Nagravision S.A. Method for secure processing a stream of encrypted digital audio / video data
US10680816B2 (en) * 2014-03-26 2020-06-09 Continental Teves Ag & Co. Ohg Method and system for improving the data security during a communication process
US9734355B2 (en) 2014-04-11 2017-08-15 Rubicon Labs, Inc. System and method for an efficient authentication and key exchange protocol
CA2953144C (en) 2014-07-11 2023-10-24 Entrust, Inc. Method and apparatus for providing vehicle security
JP6573819B2 (ja) 2015-01-20 2019-09-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 不正検知ルール更新方法、不正検知電子制御ユニット及び車載ネットワークシステム
DE102015203776A1 (de) * 2015-03-03 2016-09-08 Robert Bosch Gmbh Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs

Also Published As

Publication number Publication date
KR20190058302A (ko) 2019-05-29
CN109815046A (zh) 2019-05-28
EP3486832A1 (en) 2019-05-22
US10949527B2 (en) 2021-03-16
US20190156018A1 (en) 2019-05-23
EP3486832B1 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
US11074371B2 (en) Systems, methods and apparatuses for secure storage of data using a security-enhancing chip
KR102434444B1 (ko) 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치
CN104734854B (zh) 密钥的安全提供
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
CA2919106C (en) Media client device authentication using hardware root of trust
JP2022528070A (ja) 運転中の緊急車両のidの検証
CN105144626B (zh) 提供安全性的方法和设备
ES2773950T3 (es) Sistema informático asegurado con autenticación asíncrona
JP2022527757A (ja) 物理複製困難関数を使用したコンピューティングデバイスのidの生成
JP5793709B2 (ja) 鍵実装システム
CN111264044B (zh) 芯片、生成私钥的方法和可信证明的方法
TW201502847A (zh) 運用一電腦處理器使用一安全非揮發儲存器之系統、方法及裝置
TW201346618A (zh) 使用物理性不可複製功能的安全金鑰儲存器
CN111444553A (zh) 支持tee扩展的安全存储实现方法及系统
CN110311780A (zh) 信息处理装置以及信息处理方法
JP6888122B2 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
US10949527B2 (en) Semiconductor device, authentication system, and authentication method
KR101656092B1 (ko) 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
CN109583196B (zh) 一种密钥生成方法
JP2015015542A (ja) 情報処理システム
WO2023089882A1 (ja) 情報処理装置および鍵管理装置
CN109598150B (zh) 一种密钥使用方法
JP6124338B2 (ja) 情報処理システム
Malipatlolla SUSTAINABLE TRUSTED COMPUTING