JP2020098506A - マイクロコントローラ及び半導体装置 - Google Patents

マイクロコントローラ及び半導体装置 Download PDF

Info

Publication number
JP2020098506A
JP2020098506A JP2018236817A JP2018236817A JP2020098506A JP 2020098506 A JP2020098506 A JP 2020098506A JP 2018236817 A JP2018236817 A JP 2018236817A JP 2018236817 A JP2018236817 A JP 2018236817A JP 2020098506 A JP2020098506 A JP 2020098506A
Authority
JP
Japan
Prior art keywords
program
processing circuit
installation information
task
circuit
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
JP2018236817A
Other languages
English (en)
Inventor
清武郎 長野
Seimuro Nagano
清武郎 長野
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 JP2018236817A priority Critical patent/JP2020098506A/ja
Priority to US16/682,958 priority patent/US11526598B2/en
Publication of JP2020098506A publication Critical patent/JP2020098506A/ja
Pending legal-status Critical Current

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】マイクロコントローラのセキュア状態の維持性能を向上させる。【解決手段】マイクロコントローラは、CPUと暗号処理回路とを備え、第1のプログラムが暗号処理回路を使用するとき、第2のプログラムが第1のプログラムのインストール情報と予め暗号化されたプログラムインストール情報とを暗号処理回路に送信する。暗号処理回路は、暗号化されたプログラムインストール情報を復号し、第1のプログラムのインストール情報と比較する。一致した場合は、第1のプログラムによる暗号処理回路の使用を許可する。【選択図】図6

Description

本発明は、マイクロコントローラ及び半導体装置におけるセキュリティ技術に関する。
マイクロコントローラにおいて、悪意のあるプログラムによるデータ改竄や、セキュリティデータ処理に使われる暗号鍵の漏洩を防止するため、様々な対策が行われている。
マイクロコントローラで実行されるプログラムは、一般に、ファームウェア、オペレーティングシステム(OS)、ドライバ、ミドルウェア(ライブラリとも呼ばれる)、アプリケーションといった階層構造が取られるが、セキュリティ対策もこの階層構造を考慮して行う必要がある。
特許文献1には、ソフトウェアの階層構造を考慮したセキュリティ対策に関する技術が記載されている。より具体的には、メインプログラムと、メインプログラムから呼び出されるサブプログラムとで構成されるプログラムを実行する時、サブプログラムからメインプログラムに戻る時の戻り先アドレスを取得する。取得した戻り先アドレスに基づいて、メインプログラムが実行可能状態のメモリ領域にあるか、予め登録されている属性情報と一致するかどうかを、OSを使って判断する。実行可能状態のメモリ領域にあり、属性情報も一致した場合は、そのメインプログラムは正規のものと判断され、そうでなければ不正のものとして、プログラムの実行が中止される。
ここで、サブプログラムとは、例えばセキュリティ機能を提供するプラグインである。
特開2007−148962号公報
しかしながら、メインプログラムが正規なものであるかどうかを、OSを含めたソフトウェアで実現しているため、セキュリティ対策が十分とは言えない。ソフトウェアの場合、ソフトウェアの不具合を利用した情報改竄、漏洩の技術が知られているからである。
その他の課題および新規な特徴は、本明細書および図面の記載から明らかになる。
一実施の形態に係るマイクロコントローラは、CPUと暗号処理回路とを備え、第1のプログラムが暗号処理回路を使用するとき、第2のプログラムが第1のプログラムのインストール情報と予め暗号化されたプログラムインストール情報とを暗号処理回路に送信する。暗号処理回路は、暗号化されたプログラムインストール情報を復号し、第1のプログラムのインストール情報と比較する。一致した場合は、第1のプログラムによる暗号処理回路の使用を許可する。
他の実施の形態に係るマイクロコントローラは、CPUと、暗号処理回路と、予め暗号化されたインストール情報を格納したメモリと、タスク管理回路とを備え、タスク管理回路はタスク切り替え時にタスクに対応するインストール情報を暗号処理回路に送信する。暗号処理回路は、暗号化されたインストール情報を復号し、インストール情報と比較する。一致した場合は切り替わったタスクによる暗号処理回路の使用を許可する。
一実施の形態に係るマイクロコントローラでは、マイクロコントローラのセキュリティ能力を向上させることができる。
実施の形態1に係るマイクロコントローラの構成を示すブロック図である。 実施の形態1に係るマイクロコントローラ上のソフトウェアスタックのブロック図である。 実施の形態1に係る暗号ドライバと暗号処理回路のブロック図である。 実施の形態1に係るディレクトリ構成図である。 実施の形態1に係るプログラムのインストール及び登録方法を示すフローチャートである。 実施の形態1に係るプログラムの動作を示すフローチャートである。 実施の形態1に係るプログラムのインストールディレクトリを取得するためのコードの一例である。 実施の形態1の変形例に係る暗号処理ライブラリの構成例を示すブロック図である。 実施の形態1の変形例に係る動作例を示すフローチャートである。 実施の形態2に係るマイクロコントローラの構成を示すブロック図である。 実施の形態2に係るCPUコアとハードウェアOSのブロック図である。 実施の形態2に係るプログラムの動作を示すフローチャートである。
以下、一実施の形態に係るマイクロコントローラについて、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要件または対応する構成要件には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。また、各実施の形態の少なくとも一部は、互いに任意に組み合わされてもよい。
[実施の形態1]
(マイクロコントローラの構成)
図1は、実施の形態1に係るマイクロコントローラの構成を示すブロック図である。
図1に示されるように、マイクロコントローラ10は、CPU(Central Processing Unit)コア20、プログラムメモリ40、メモリ50、内部バス70、暗号処理回路30、周辺回路60を有する。マイクロコトンローラ10は好ましくは1つの半導体チップ上で構成されるが、プログラムメモリやメモリは別の半導体チップであっても構わない。
CPUコア20は、プログラムメモリ40に格納されているOS(Operating System)、アプリケーションプログラム、ミドルウェア、暗号処理回路用ドライバソフトウェア、I/O用ドライバソフトウェア等の各種ソフトウェアを実行する。プログラムメモリ40としては、フラッシュメモリ、ROM(Read Only Memory)が利用可能である。また、プログラムメモリ40に格納されているプログラムをCPUコア20が実行する際、フラッシュメモリあるいはROMから直接プログラムを読み出しても良いし、一旦、SRAM(Static Random Access Memory)にプログラムを展開し、SRAMからプログラムを読み出すようにしても良い。
メモリ50は、CPUコア20や暗号処理回路30の処理用データや処理結果データを格納するものである。SRAMやDRAM(Dynamic Random Access Memory)で構成される。
内部バス70は、CPUコア20、プログラムメモリ40、メモリ50、暗号処理回路30、周辺回路60が所定のプロトコルに基づいて通信を行うためのバスである。内部バス70には、アドレス、データ、制御信号が含まれる。図1では、1つの内部バスが示されているが、複数のバスで構成することも可能である。例えば、CPUコア20とプログラムメモリ40とを接続するバスと、CPUコア20と暗号処理回路30とを接続するバスとを別のバスにすることも可能である。
周辺回路60は、有線または無線の通信インターフェース、シリアル通信インターフェースや表示装置等を接続するための回路である。図1では1つの周辺回路を示しているが、複数の周辺回路を搭載可能である。
暗号処理回路30は、暗号処理を行うためのハードウェアであり、バスインターフェース31、アクセスマネジメント32、暗号エンジン33、ALU(Arithmetic and Logic Unit)34、汎用レジスタ35、乱数生成回路36、HASH回路37を有する。
バスインターフェース31は内部バス70との通信を行うためのものであり、暗号処理回路30宛てのリクエストの取得と、暗号処理回路30の処理結果の返送を行う。
アクセスマネジメント32は、特定のリクエストだけが暗号エンジン33、ALU34、汎用レジスタ35にアクセスできるように管理を行う。詳細は後述する。
暗号エンジン33は、指定された情報に対して特定のアルゴリズムの暗号化または復号を行うハードウェアである。暗号化・復号のアルゴリズムとしては、共通鍵方式や公開鍵方式が使用可能である。具体的には、共通鍵方式としてAES(Advanced Encryption Standard)、DES(Data Encryption Standard)、公開鍵方式としてRSA(Rivest-Shamir-Adleman cryptosystem)が広く知られており、本実施の形態でも利用可能である。
ALU34は、暗号処理に関する演算処理を行うハードウェアである。具体的には、暗号エンジン33、乱数生成回路36、HASH回路37が処理した結果に対して、追加の演算や、比較を行う。
汎用レジスタ35は、暗号処理を行うための処理用データや、処理結果データが格納される。好ましくは、汎用レジスタ35へのアクセスは、アクセスマネジメント32により、暗号エンジン33とALU34のみが許可される。
乱数生成回路36は乱数を生成する回路であり、好ましくは真性乱数を生成する。HASH回路37は、入力されたデータに対して特定のアルゴリズムでハッシュ値を生成する回路である。アルゴリズムとして、SHA(Secure Hash Algorithm)のSHA−0、SHA−1、SHA−2、SHA−3が広く知られており、本実施の形態でも利用可能である。
(ソフトウェアの構成)
次いで、本実施の形態に係るマイクロコントローラ10上で動作するソフトウェアについて説明する。
図2は実施の形態1に係るマイクロコントローラ上のソフトウェアスタックのブロック図であり、マイクロコントローラ10のOSとしてLinux(登録商標)を用いた例である。Linux(登録商標)は大別するとカーネルとユーザランド(カーネル以外の部分)で構成される。カーネルもユーザランドも、実際には非常に多くの要素で構成されるが、ここでは本実施の形態に直接関連する部分のみを記載している。カーネルには、システムコール130、プロセス管理140、ファイルシステム150といった機能が含まれ、ユーザランドにはプログラム80および90、インストーラ100、暗号ライブラリ110が含まれる。
システムコール130は、アプリケーションプログラム(プロセス)がOSの機能を使うときに呼び出される機能である。アプリケーションが別のアプリケーションを呼び出すときにも使われる。プロセス管理140は、プロセスの生成や、プロセスごとに設定される優先度に応じてプロセスの管理を行うものである。ファイルシステム150は、実行ファイル、データファイルをディレクトリで管理するものである。
暗号ライブラリ110は、暗号処理を行うためのプログラム・ライブラリ(関数群)である。マイクロコントローラ10を使用するユーザが、ハードウェアによる暗号処理を行うアプリケーションプログラムを開発する場合は、この暗号処理ライブラリを呼び出すことで実現できる。暗号ライブラリ110は、暗号ドライバ120を介して暗号処理回路30の機能を使うことができる。暗号ライブラリ110は、ユーザプログラムからのリクエストに応じて、暗号処理回路30へ送信するデータの加工と、暗号処理回路30からのレスポンスをユーザプログラムに返すための処理を行う。
図3は、実施の形態1に係る暗号ドライバと暗号処理回路のブロック図であり、暗号ドライバ120の一例である。暗号ドライバ120には、暗号化処理121、復号処理122、乱数生成処理123、HASH計算処理124、証明書検証処理125、登録処理126、照合処理127が含まれる。それぞれの処理は関数の形で定義され、暗号処理ライブラリ110からの呼び出しを受けて、暗号処理回路30内の対応する回路、すなわち、暗号エンジン33、ALU34、汎用レジスタ35、乱数生成回路36、HASH回路37に処理のリクエストを出す。また、各回路の処理結果を、暗号ライブラリ110を介してアプリケーションプログラムに返す。
暗号化処理121は、特定の暗号化処理を行うものであり、暗号処理回路30の暗号エンジン33を使って処理を行う。上述したように、暗号エンジン33はAES、DES、RSAなどの暗号化アルゴリズムに対応しており、どの暗号化アルゴリズムを使うかは、アプリケーションプログラムで指定する。あるいは予め設定したルールに基づいて決めれば良い。また、復号処理122も暗号化処理121と同様に、暗号エンジン33が暗号データに対して指定されたアルゴリズムで復号を行うものである。
乱数生成処理123は、暗号処理121に関わる乱数を生成するためのものであり、暗号処理回路30の乱数生成回路36を使って処理を行う。乱数生成回路36が出力した乱数をALU34で加工しても良い。乱数は、例えば鍵の元データとして使用される。HASH計算処理124は、入力データに対するハッシュ値を生成するためのものであり、HASH回路37を使って処理を行う。ハッシュ値は、例えば認証用に使用される。HASH回路37が出力敷いたハッシュ値をALU34で加工しても良い。
証明書検証処理125は、入手した証明書が正当なものかどうかを検証するものであり、暗号処理回路30の暗号エンジン33、ALU34、HASH回路37を使って処理を行う。例えば、通信相手が本物かどうかを確認するために、通信相手から入手した証明書と、当該証明書を発行した認証局から入手した証明書(ルート証明書)とを用いて検証を行う。より具体的に説明すると、まず、証明書が正規なものである場合、その証明書には公開鍵と、認証局の署名とが入っている。署名とは、証明書の内容のハッシュ値に対して認証局の秘密鍵を用いて暗号化したデータのことである。マイクロコントローラ10は予めルート証明書を入手しておき、ルート証明書に入っている公開鍵を使って通信相手から入手した証明書内の署名を復号する。ここで復号できなければ通信相手の証明書は正規のものではないことになる。更に、マイクロコントローラ10は、通信相手から入手した証明書の内容からハッシュ値を計算し、当該ハッシュ値と復号した署名(すなわちハッシュ値)とを比較する。証明書が正規なものであればこれらの値は一致するため、通信相手が本物であることがわかる。
登録処理126は、暗号処理回路30の使用が許可されたプログラムを登録するための処理である。登録されたプログラムの情報は登録リストとしてメモリ50に格納されるが、メモリ50に格納される前に、暗号処理回路30の暗号エンジン33を使って暗号化される。また、登録リストへのプログラムの情報追加は、暗号化された登録リストをメモリ50から読み出し、暗号エンジン33を使って復号してから行われる。登録リストは、プログラム情報追加後、再度暗号エンジン33を使って暗号化されてからメモリ50に格納される。換言すると、メモリ50には必ず暗号化された登録リストが格納されるため、あるプログラムが登録リストに直接アクセスしても、その内容を知ることも、情報を追加することもできない。
照合処理127は、暗号処理回路30を使おうとしているプログラムが、予め登録リストに登録されたプログラムであるかどうかを照合するための処理である。プログラムが暗号化処理121、復号処理122、乱数生成処理123、HASH計算処理124、証明書検証処理125を行うに先立ち、まず照合処理127によって、そのプログラムが登録リストに登録されているかどうかが照合される。照合の結果、登録リストに登録されているプログラムならば、暗号処理回路30による暗号処理の実行が許可される。登録リストに登録されていないプログラムの場合は、そのプログラムの以降の処理は中止される。
再び図2に戻って説明する。プログラム80は、マイクロコントローラ10を使用するユーザが開発したアプリケーションプログラムであり、暗号処理回路30を使用するものである。本実施の形態では、このプログラム80はマイクロコントローラ10の正規のユーザが開発したプログラムとして説明する。一方、プログラム90は、プログラム80と同様に暗号処理回路30を使用するアプリケーションプログラムであるが、正規のユーザではなく、悪意のあるユーザが秘匿情報の取得や、マイクロコントローラ10の正常動作を妨害するために準備したプログラムであるとして説明する。
インストーラ100は、アプリケーションプログラムをマイクロコントローラ10にインストールするためのプログラムである。ここで、インストーラ100によるプログラムのインストールは、特別に権限が与えられたユーザ(特権ユーザやスーパユーザと呼ばれる)のみが実行可能である。
図4は、実施の形態1に係るディレクトリ構成図であり、OSとしてLinux(登録商標)を使用した場合のディレクトリ構造の一例である。本実施の形態では、正規ユーザがインストーラ100を使ってインストールしたプログラムは、ディレクトリ“/usr/trustbin”に格納される。従って、正規のプログラムであるプログラム80は、/usr/trustbinに格納されている。一方、悪意のあるユーザが作成したプログラム90は、/usr/trustbinではなく、/usr/binに格納されているとする。
(インストーラ実行時のマイクロコントローラの動作)
次いで、本実施の形態に係るインストーラ100を実行した時のマイクロコントローラ10の動作例について説明する。
図5は、実施の形態1に係るプログラムのインストール及び登録方法を示すフローチャートであり、インストーラ100実行時のマイクロコントローラの動作フローである。
まず、正規ユーザのプログラム80をインストールする場合を説明する。スーパユーザはインストーラ100を起動し、プログラム80のインストール処理を開始する(ステップS00)。インストーラ100は、プログラム80を/usr/trustbinにインストールすると共に、暗号ライブラリ110を介して暗号ドライバ120の登録処理126の関数を呼びだす(ステップS10)。登録処理126の関数呼び出し時の引数はプログラム80のインストール情報である、/usr/trustbin/program80である。
暗号ドライバ120の登録処理126の関数は、呼び出しに応じてメモリ50に格納されている暗号化された登録リストを取得する(ステップS20)。そして、取得した登録リストと、プログラム80のインストール情報である/usr/trustbin/program80とを暗号処理回路30に送信し、登録リストの復号、登録リストへのプログラム80のインストール情報の登録、及び登録リストの暗号化をリクエストする。
暗号処理回路30は、受信した登録リストを復号し(ステップS30)、復号した登録リストに/usr/trustbin/program80を登録する(ステップS40)。登録後、登録リストを暗号化し、暗号化した登録リストを暗号ドライバ120に送信する(ステップS50)。暗号ドライバ120は暗号化された登録リストをメモリ50に格納する(ステップS60)。暗号化された登録リストのメモリ50への格納が正常終了したかどうかを判断し(ステップS70)、正常終了した場合は、暗号ドライバ120はインストーラに正常終了したことを知らせ(ステップS80)、インストーラ100はプログラム80のインストールを正常終了する。異常終了した場合は、インストーラは異常終了し、エラー通知を行う(ステップS90)。
ここで悪意のあるユーザのプログラム90のインストールについて説明する。スーパユーザになる方法を知り得ない悪意のあるユーザは、インストーラ100を起動できない。従って、何らかの不正行為によりプログラム90をインストールすることになる。この結果、例えば、ディレクトリ“/usr/bin”にプログラム90が格納されたとする。しかし、例え不正行為によってプログラムがインストールできたとしても、インストーラ100を起動できていないため、登録リストにプログラム90のインストール情報、すなわち/usr/bin/program90を登録することはできない。
以上のプログラム80、プログラム90のインストールの結果、メモリ50に格納されている暗号化された登録情報には、プログラム80のインストール情報である/usr/trustbin/program80は格納されているが、プログラム90のインストール情報は何も格納されていない状態となる。
(ユーザプログラム実行時のマイクロコントローラの動作)
次いで、本実施の形態に係るユーザプログラム実行時のマイクロコントローラ10の動作例について説明する。
図6は、実施の形態1に係るプログラムの動作を示すフローチャートであり、ユーザプログラム実行時のマイクロコントローラ10の動作を説明するためのフローチャートである。
まず、正規ユーザのプログラム80を実行する場合を説明する。ここでプログラム80は、例えば所定の情報に対して暗号化処理を行う機能を有し、プログラム80の実行時には暗号ドライバ120の暗号化処理121の関数が呼び出され、暗号処理回路30が使われるものとする。
プログラム80が実行されると(ステップS100)、暗号ライブラリ110が呼び出される。呼び出された暗号ライブラリ110は、暗号化処理関数を実行するのに先立ち、呼び出し元であるプログラム80のインストールディレクトリを確認するために、システムコール130を行い、インストールディレクトリのフルパスの情報を取得する(ステップS110)。図7は、実施の形態1に係るプログラムのインストールディレクトリを取得するためのコードの一例であり、フルパスの情報を得るための処理プログラムコードの一例である。このコードを実行することにより実行中のプロセス情報と実行ファイル名を元にフルパスの情報を得ることができる。暗号ライブラリ110は取得したフルパスの情報を引数として、暗号ドライバ120の照合処理127の関数を呼び出す(ステップS120)。
暗号ドライバ120の照合処理127の関数は、呼び出しに応じてメモリ50に格納されている暗号化された登録リストを取得する。そして、取得した登録リストと、プログラム80のインストール情報である/usr/trustbin/program80とを暗号処理回路30に送信し、登録リストの復号と、復号された登録リストとプログラム80のインストール情報との照合とをリクエストする(ステップS130)。
暗号処理回路30は、受信した登録リストを復号し(ステップS140)、復号した登録リストにプログラム80のインストール情報/usr/trustbin/program80が登録されているかどうかを照合し(ステップS150)、一致するかどうか判断する(ステップS160)。照合の結果、プログラム80は登録されているので照合一致の結果を暗号ドライバ120に通知する(ステップS170)。
暗号ドライバ120は、暗号処理回路30からの照合一致の結果を受信後、プログラム80による暗号処理回路30を使った暗号処理の実行を許可する(ステップS190、S210)。
ここで悪意のあるユーザのプログラム90の実行について説明する。プログラム90の場合、前述した通り、インストーラ100を使ってインストールされていないため、登録リストにインストール情報が登録されていない。従って、暗号処理回路30の照合処理において、照合不一致の結果となる(ステップS180)。照合不一致の結果を受け、暗号ドライバ120はプログラム90の以降の処理を中止する(ステップS200)。更に好ましくは、照合不一致が発生した場合には、アクセスマネジメント32は、以降の暗号処理回路30へのアクセスを受けないようにする。
(効果)
以上のように、本実施の形態に係るマイクロコントローラでは、ユーザプログラムが暗号処理回路を使った暗号処理を実行する際に、そのプログラムが正規ユーザの物なのかどうかを、暗号処理回路を使って判定を行っている。これにより、悪意のあるユーザのプログラムによる暗号処理回路の使用を制限でき、マイクロコントローラをセキュアな状態に保つことができる。
[変形例]
図8は、実施の形態1の変形例に係る暗号ライブラリ110の構成例を示すブロック図である。本変形例においては、暗号ライブラリ110が状態遷移確認処理を持っていることに特徴がある。暗号ライブラリ110は、ユーザプログラムからの呼び出しにより動作する関数群であるが、図8はそのうちの1つの関数を例示している。この関数は暗号ドライバ120の中の3つの暗号ドライバ処理を呼び出す構成になっており、3つの暗号ドライバ処理のそれぞれは、暗号ドライバ120の暗号化処理121、復号処理122、乱数生成処理123、HASH計算処理124、証明書検証処理125のうちのいずれかに相当する。
状態遷移確認処理1(S310)は、暗号ドライバ処理2(S320)が暗号ドライバ処理1(S300)の処理後に起動されているかどうかを確認するものである。同様に、状態遷移確認処理2(S330)は、暗号ドライバ処理3(S340)が暗号ドライバ処理2(S320)の処理後に起動されているかどうかを確認するためのものである。状態遷移確認処理1(S310)は、暗号ドライバ処理2(S320)が暗号ドライバ処理1(S300)の処理後以外のタイミングで起動された場合は、当該暗号ドライバ処理2の呼び出し元であるユーザプログラムを不正アクセスしているものとして異常終了させる。状態遷移確認処理2(S330)についても同様である。なお、暗号ドライバ処理1や暗号ドライバ処理2の処理が終わっているかどうかは、それぞれの処理が終わったときにフラグを立てることで実現可能である。
図9を用いてより具体的に説明する。図9は、実施の形態1の変形例に係る動作例を示すフローチャートであり、インターネットのセキュア通信でよく使われるTSL(Transport Layer Security)を使った通信を例にしたフローチャートである。ユーザプログラムがTSLを使って通信を行うように構成されており、TSLに必要な暗号化や証明書の検証が暗号処理回路30を使って行われる例である。
まず、TSLを使うユーザプログラムが、正規なユーザのプログラムであるかを照合処理(S400)で確認するが、照合処理(ステップS400)は、実施の形態1で説明したプログラムの照合処理と同じ内容のものであるため説明を省略する。照合処理以降の処理(ステップS410〜S490)は、照合処理(ステップS400)で照合一致となった場合に実行されるものである。照合処理(ステップS400)で照合不一致となった場合は、TSLを使ったプログラムが悪意のあるユーザのものであるとして、以降の処理(ステップS410〜S490)は実行されない。
図9の通信開始(ステップS410)、証明書検証(ステップS430)、乱数発生(ステップS440)、暗号化(ステップS450)、セッション鍵生成(ステップS460)、セッション鍵による通信(ステップS470)は、それぞれ暗号ドライバ120による処理であり、暗号ライブラリ110がアプリケーションプログラムからTSL通信のリクエストを受けると、図9に示すフローで暗号ドライバ120の各処理が起動される。そして図8で説明した通り、暗号ドライバ120の各処理が起動される前に、所定の暗号ドライバ処理が終わっているかどうかを確認する状態遷移確認処理が実行される(図9では状態遷移確認処理部分は不図示)。
TSL通信開始が起動されると、マイクロコントローラ10は通信先のサーバ160に対してTSL通信開始のメッセージを送信する(ステップS410)。TSL通信開始のメッセージを受信したサーバ160は、サーバ証明書をクライアントであるマイクロコントローラ10に送信する(ステップS420)。このサーバ証明書には公開鍵が添付されている。なお、送信するメッセージには、これ以降で実行する暗号化、乱数発生、HASH計算でどのアルゴリズムを使うかを指定する情報も含まれている。
マイクロコントローラ10はサーバ160からサーバ証明書を受信すると、証明書検証の処理を開始するが、その前に、通信開始処理が実行されたかどうかを確認する(ステップS430)。通信開始処理が実行されていれば証明書検証の処理を開始する。通信開始処理が実行されていなければ以降の処理は中止する。証明書検証では、サーバ証明書が正当なものであるかどうかを検証するが、これはサーバ証明書を発行した認証局からルート証明書を入手し、ルート証明書を使って行われる。
次に、乱数処理が開始されるが、その前に、証明書検証処理が実行されたかどうかを確認する(ステップS440)。証明書検証処理が実行されていなければ以降の処理を中止する。
次に、暗号化処理が開始されるが、その前に、乱数発生処理が実行されたかどうかを確認する(ステップS450)。乱数発生処理が実行されていなければ以降の処理を中止する。暗号化処理では、乱数発生処理で作成した乱数を、サーバ証明書に添付されていた公開鍵を使って暗号化を行う。暗号化された乱数はサーバにも送信され、クライアントであるマイクロコントローラ10とサーバ160とで共有される。
次に、セッション鍵生成処理が開始されるが、その前に、暗号化処理が実行されたかどうかを確認する(ステップS460)。暗号化処理が実行されていなければ以降の処理を中止する。セッション鍵生成処理では、乱数発生処理で作成した乱数を使ってHASH計算を行うことでセッション鍵を生成する。サーバ160側でも、マイクロコントローラ10から送信された暗号化された乱数を復号し、復号された乱数を使ってHASH計算を行うことで、マイクロコントローラ10と同じセッション鍵を生成することができる。生成されたセッション鍵は以降のマイクロコントローラ10とサーバ160との暗号通信で使われることになる。
(効果)
以上のように、本変形例では、ある暗号ドライバ処理を起動する前に実行状態、すなわち予め決められた他の暗号ドライバの処理が実行された状態であるかどうかを確認する。これにより、実施の形態1で説明したユーザプログラムの登録と照合処理を、悪意のあるプログラムがたとえ通過してしまった場合であっても、そのプログラムは予め定められた暗号ドライバ処理のフロー、すなわちセキュア状態を維持するための処理フローを守らなければならず、マイクロコントローラ10のセキュア状態を維持することが可能となる。
[実施の形態2]
図10は、本実施の形態2に係るマイクロコントローラの構成を示すブロック図である。図1との違いは、ハードウェアOS170が追加されていることである。なお、図10では、ハードウェアOS170は内部バス70に接続されているが、内部バス70ではなく専用バスでCPUコア20と接続しても良い。図11は、図10のCPUコア20とハードウェアOS170の構成を示すブロック図である。CPUコア20とハードウェアOS170以外のブロックは、図1と同じであるため省略してある。
CPUコア20は、実行制御回路180、プログラムカウンタ190、スタックポインタ200、汎用レジスタ210(R0〜Rm)、ALU220、退避レジスタ230(R0〜Rn)を備えている。実行制御回路180は、プログラムカウンタ190、汎用レジスタ210(R0〜Rm)、メモリ50、ALU220を管理・制御することでタスクの実行を制御する。ここでCPUコア20はマルチタスク対応のCPUコアである。
スタックポインタ200と退避レジスタ230(R0〜Rn)はタスクの切り替えが発生した時に使われる。実行制御回路180がシステムコールを実行した時や外部からの割り込みでタスクの切り替えが発生した場合は、現在実行中のタスク処理を中断し、中断した時のタスクの情報(コンテキスト)をスタックポインタ200で示される退避レジスタ230に退避する。ここで、コンテキストの中には、プログラムカウンタ190の値や汎用レジスタ210の値だけではなく、本実施の形態ではタスク(プログラム)のインストールディレクトリのフルパス情報と、タスクの種別情報も含まれる。タスクの種別情報とは、そのタスクが暗号ライブラリ110の処理であるかを示す情報である。インストールディレクトリのフルパス情報と暗号ライブラリ110については、実施の形態1で説明したものと同じであるためここでは説明を省略する。
また、退避レジスタ230にコンテキストを退避したタスクに切り替えるときは、退避レジスタ230に退避したタスクのコンテキストが、プログラムカウンタ190、汎用レジスタ210に戻され、そのタスクを中断した時点から再開される。なお、コンテキストの退避先は退避レジスタ230ではなく、メモリ50でも構わない。
ハードウェアOS170は、ソフトウェアで構成されるOSの機能の一部を回路としてハードウェア化したものである。より具体的には、ハードウェア化された機能としてプロセス管理が含まれる。従って、ハードウェアOS170のことは、プロセス管理回路、あるいはタスク管理回路とも呼ぶ。ハードウェアOS170は、タスク管理回路240、セマフォ管理回路250、イベント管理回路260、タスク選択回路270、タスク情報用メモリ280(0〜n)を備える。
タスク情報用メモリ280(0〜n)には、CPUコア20で実行可能なタスク、すなわち実行中のタスクあるいは実行待ちのタスクに関するコンテキスト情報のうち、タスクの優先度に関する情報、タスクの種別情報、タスク(プログラム)のインストールディレクトリのフルパス情報が格納されている。タスクの優先度は、プログラム設計者が予め設定するものであり、この優先度に基づいてタスクが選択され、タスクの切り替えが行われる。
タスク管理回路240は、実行制御回路180がタスクの切り替えを意味するシステムコールを実行した時、あるいは外部から割り込み要求を受ける(不図示)とタスクの切り替えを行う。タスク管理回路240は、タスク切り替えをリクエストされたら、タスク選択回路270に対してタスクの選択を指示する。タスク選択回路270は、タスク情報用メモリ280(0〜n)に格納されている各タスクの優先度、セマフォ管理回路250のセマフォ情報、イベント管理回路260のイベント情報に基づいて次に実行すべきタスクを選択し、選択したタスクの情報をタスク管理回路240に通知する。
また、タスク選択回路270は、選択したタスクが暗号処理タスク、すなわち暗号ライブラリ110を使った処理であるかどうかも、タスク種別情報で判断する。選択したタスクが暗号処理タスクであった場合は、暗号処理タスクを呼び出したタスク(プログラム)がインストールされているディレクトリのフルパス情報もタスク管理回路240に通知する。
タスク管理回路240は、タスク選択回路270が選択したタスクと、フルパス情報とに基づいてCPUコア20にタスクの切り替えを実行させる。
ここで、セマフォ管理回路250とイベント管理回路260について説明する。
セマフォ管理回路250は、複数のタスク間で共有の資源(メモリ50、汎用レジスタ210、周辺回路60)を使うときに排他制御を行うための回路である。共有の資源にはセマフォが設定され、セマフォがあるタスクによって獲得されている時は、そのセマフォが解放されるまで他のタスクはその共有の資源は使用できず、処理が待ち状態となる。このセマフォの設定・管理が、セマフォ管理回路250で行われる。より具体的には、実行制御回路180で実行中のあるタスクがセマフォを獲得する場合は、セマフォ獲得用のシステムコールを実行し、セマフォを開放する場合はセマフォ解放用のシステムコールを実行する。これらのシステムコールに基づき、セマフォ管理回路250はどのタスクがセマフォを獲得しているのか、どのタスクがセマフォを獲得待ちになっているのか、を管理する。
イベント管理回路260は、複数のタスク間の同期を取るための回路である。例えば、3つのタスクA、タスクB、タスクCがあるとする。タスクA、B、Cの順番で実行したい場合、各タスクが終了したことを知らせるイベントフラグを設定・管理することで実現できる。つまり、タスクBはタスクAが実行終了したことを示すイベントフラグをチェックすることで実行タイミングを知ることができる。タスクCについても同様である。このイベントフラグの設定・管理が、イベント管理回路260で行われる。より具体的には、実行制御回路180で実行中のあるタスクがイベントフラグをセットする場合には、イベントフラグセット用のシステムコールを実行する。このシステムコールに基づき、イベント管理回路260はイベントフラグを設定・管理する。
(マイクロコントローラの動作)
次いで、本実施の形態2に係るマイクロコントローラの動作例について説明する。
図12は、実施の形態2に係るプログラムの動作を示すフローチャートであり、ユーザプログラム実行時のマイクロコントローラ10の動作を説明するためのフローチャートである。全体の動きとしては実施の形態1の動作と同じであるため、本実施の形態2の特徴であるハードウェアOS170に関連した部分を中心に説明する。
まず、正規ユーザのプログラム80あるいは悪意のあるユーザのプログラム90が実行され、暗号ライブラリ110が呼び出される(ステップS500)。呼び出された暗号ライブラリ110は、システムコールを行って呼び出し元のプログラム80あるいはプログラム90のインストールディレクトリのフルパス情報を取得する(ステップS510)。暗号ライブラリ110はフルパス情報取得後、暗号ドライバ120を呼び出す(ステップS520)。
実施の形態1で説明した通り、暗号ドライバ120は呼び出された後、暗号処理回路30にフルパス情報の照合を実行させるが、その前に、外部からの割り込みによってタスクの切り替えが発生(ステップS530)した場合で説明する。この場合、ハードウェアOS170は、CPUコア20で実行中のプログラム80のコンテキスト情報を退避レジスタ230に退避させる(ステップS540)。更に、ハードウェアOS170は、プログラム80が暗号処理のタスクを含んでいることを示す情報と、プログラム80のインストールディレクトリのフルパス情報とをタスク情報用メモリ280に保存する(ステップS550)。プログラム90の場合も同様である。
次いで、割り込みによるタスクの処理が終了し、プログラム80に復帰する場合を説明する(ステップS560)。ハードウェアOS170は、CPUコア20で実行中のタスクのコンテキストを退避レジスタ230に退避させる。タスク選択回路270が、セマフォ、イベント及びタスク優先度を考慮した結果、ステップS540、S550で退避したタスクへの切り替えを選択した場合、ハードウェアOS170(タスク管理回路240)は、退避レジスタ230に退避してあったプログラム80のコンテキストをプログラムカウンタ190、汎用レジスタ210に戻す(ステップS570)。ハードウェアOS170は、更にタスク情報用メモリ280に保存したフルパス情報、暗号処理のタスクであることを示す情報を取得することで(ステップS580)、CPUコアにプログラム80の実行、すなわち暗号ドライバ120の実行を再開させる。プログラム90の場合も同様である。
プログラム80の再開により、暗号ドライバ120がメモリから暗号リストを取得し(ステップS590)、暗号処理回路がフルパス情報の照合を実行するが(ステップS600)、ここからは実施の形態1と同じであるため説明を省略する。プログラム80の場合は、暗号リストにフルパス情報が登録されているため、暗号処理回路30による処理が正常に実行される(ステップS670)。一方、プログラム90の場合は、登録リストに登録されていないため、暗号処理回路30による処理は実行されない(ステップS660)。
本実施の形態2において、プログラムのインストールディレクトリのフルパス情報をタスク情報用メモリに格納したが、退避レジスタに格納しても良い。
(効果)
以上のように、本実施の形態2では、従来ソフトウェアで構成していたOSの一部をハードウェア化し、インストールされたプログラムが正規のユーザの物なのかどうかを、ハードウェアOSを使って検証を行っている。これにより、マイクロコントローラのプログラム処理の高速化とセキュア状態の維持とを両立することが可能となる。
なお、本発明は、上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更され得る。例えば、OSの一部であるファイルシステムをハードウェア化、すなわち回路で実現しても良い。
10 マイクロコントローラ
20 CPUコア
30 暗号処理回路
40 プログラムメモリ
50 メモリ
60 周辺回路
70 内部バス
80、90 プログラム
100 インストーラ
110 暗号ライブラリ
120 暗号ドライバ
130 システムコール
140 プロセス管理
150 ファイルシステム
160 サーバ
170 ハードウェアOS
180 実行制御回路
190 プログラムカウンタ
200 スタックポインタ
210 汎用レジスタ
220 ALU
230 退避レジスタ
240 タスク管理回路
250 セマフォ管理回路
260 イベント管理回路
270 タスク選択回路
280 タスク情報用メモリ

Claims (16)

  1. CPUと、
    暗号処理回路と、を備えたマイクロコントローラであって、
    前記CPUは、
    前記暗号処理回路を使用する第1のプログラムと、
    前記第1のプログラムが前記暗号処理回路を使用するときに、前記第1のプログラムのインストール情報と、予め暗号化されたプログラムインストール情報とを前記暗号処理回路に送信する第2のプログラムと、
    を実行し、
    前記暗号処理回路は、前記暗号化されたプログラムインストール情報を復号し、当該復号したプログラムインストール情報と、前記第1のプログラムのインストール情報とを比較し、比較の結果、一致した場合は前記第1のプログラムによる前記暗号処理回路の使用を許可する、
    マイクロコントローラ。
  2. 前記CPUはオペレーティングシステムを動作させ、
    前記プログラムインストール情報には、前記オペレーティングシステムの特権ユーザがプログラムをインストールすることができるディレクトリ情報が含まれる、請求項1に記載のマイクロコントローラ。
  3. 前記暗号処理回路は、HASH回路、乱数生成回路、電子証明検証回路のうち少なくとも1つを備え、前記比較で一致した場合に使用可能となる、請求項2に記載のマイクロコントローラ。
  4. 前記暗号処理回路は、前記比較が不一致だった場合は、以降のアクセスを禁止するアクセス管理回路を備える、請求項3に記載のマイクロコントローラ。
  5. 前記第2のプログラムは、プログラムのインストールが行われたとき、インストールされたプログラムのインストール情報と、前記暗号化されたプログラムインストール情報とを前記暗号処理回路に送信し、
    前記暗号処理回路は、前記暗号化されたプログラムインストール情報を復号し、当該復号されたプログラムインストール情報に前記プログラムのインストール情報を追加し、当該インストール情報が追加されたプログラムインストール情報を暗号化して前記第2のプログラムへ通知する、請求項3に記載のマイクロコントローラ。
  6. 前記第2のプログラムは、前記暗号処理を制御するためのドライバである、請求項3に記載のマイクロコントローラ。
  7. 前記第2のプログラムは、複数のドライバを有し、
    前記CPUは、前記複数のドライバが予め決められた順序で実行されなかった場合は異常処理と判断する、請求項6に記載のマイクロコントローラ。
  8. バスインターフェースと、
    暗号処理回路と、を備える半導体装置であって、
    前記暗号処理回路は、
    前記バスインターフェースを介してプログラムインストール情報と、暗号化されたプログラムインストール情報とを受信し、
    前記暗号化されたプログラムインストール情報を復号し、当該復号されたプログラムインストール情報と前記プログラムインストール情報とを比較し、一致した場合は前記プログラムインストール情報に対応するプログラムからのリクエストを許可する、
    半導体装置。
  9. 演算処理回路を更に備え、
    前記比較で一致となった場合に前記演算処理回路を使用するリクエストを許可する、請求項8に記載の半導体装置。
  10. 前記演算処理回路は、HASH生成、乱数生成、電子証明検証のうち少なくとも1つを処理可能である、請求項9に記載の半導体装置。
  11. 前記バスインターフェースと前記暗号処理回路との間にアクセス管理回路を更に備え、
    前記アクセス管理回路は、前記比較が不一致だった場合は、以降の前記暗号処理回路へのアクセスを禁止する、請求項9に記載の半導体装置。
  12. CPUと、
    暗号処理回路と、
    予め暗号化されたインストール情報を格納したメモリと、
    前記CPUで実行するタスクの切り替えを管理するタスク管理回路と、を備えるマイクロコントローラであって、
    前記タスク管理回路は、
    第1のタスクに対応するインストール情報を格納する記憶回路を有し、
    前記CPUで実行するタスクを前記第1のタスクに切り替えるとき、前記インストール情報を前記暗号処理回路に送信し、
    前記暗号処理回路は、前記暗号化されたインストール情報を復号し、当該復号されたインストール情報と前記インストール情報とを比較し、一致した場合は前記第1のタスクによる暗号処理回路の使用を許可する、
    マイクロコントローラ。
  13. 前記タスク管理回路は、前記CPUが前記第1のタスクを処理中にタスク切り替えのリクエストを受けた場合は、前記第1のタスクに対応するインストール情報を前記記憶回路に格納する、請求項12に記載のマイクロコントローラ。
  14. タスクの切り替え時にタスクに必要なコンテキストを退避するための退避レジスタを更に備える、請求項13に記載のマイクロコントローラ。
  15. 前記タスク管理回路は、タスク毎に設定されている優先度に応じてタスクの切り替えを行う、請求項13に記載のマイクロコントローラ。
  16. 前記暗号処理回路は、HASH生成、乱数生成、電子証明検証のうちの少なくとも1つを処理可能である、請求項13に記載のマイクロコントローラ。
JP2018236817A 2018-12-18 2018-12-18 マイクロコントローラ及び半導体装置 Pending JP2020098506A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018236817A JP2020098506A (ja) 2018-12-18 2018-12-18 マイクロコントローラ及び半導体装置
US16/682,958 US11526598B2 (en) 2018-12-18 2019-11-13 Microcontroller and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018236817A JP2020098506A (ja) 2018-12-18 2018-12-18 マイクロコントローラ及び半導体装置

Publications (1)

Publication Number Publication Date
JP2020098506A true JP2020098506A (ja) 2020-06-25

Family

ID=71072615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018236817A Pending JP2020098506A (ja) 2018-12-18 2018-12-18 マイクロコントローラ及び半導体装置

Country Status (2)

Country Link
US (1) US11526598B2 (ja)
JP (1) JP2020098506A (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196096A1 (en) * 2002-04-12 2003-10-16 Sutton James A. Microcode patch authentication
JP4844102B2 (ja) 2005-11-30 2011-12-28 富士ゼロックス株式会社 サブプログラム及びそのサブプログラムを実行する情報処理装置

Also Published As

Publication number Publication date
US20200193014A1 (en) 2020-06-18
US11526598B2 (en) 2022-12-13

Similar Documents

Publication Publication Date Title
CN109522726B (zh) 小程序的鉴权方法、服务器及计算机可读存储介质
US8856544B2 (en) System and method for providing secure virtual machines
WO2019119929A1 (zh) 区块链共识方法、装置和系统、标识信息处理方法和装置
US9281949B2 (en) Device using secure processing zone to establish trust for digital rights management
JP6067449B2 (ja) 情報処理装置、情報処理プログラム
US7539868B2 (en) Run-time firmware authentication
JP5100286B2 (ja) 暗号モジュール選定装置およびプログラム
JP4993733B2 (ja) 暗号クライアント装置、暗号パッケージ配信システム、暗号コンテナ配信システム及び暗号管理サーバ装置
US11025415B2 (en) Cryptographic operation method, method for creating working key, cryptographic service platform, and cryptographic service device
US8250630B2 (en) Detecting unauthorized computer access
US20040025027A1 (en) Secure protection method for access to protected resources in a processor
JP4282472B2 (ja) マイクロプロセッサ
JP2006338554A (ja) サービス利用方法及び端末
JP2020098506A (ja) マイクロコントローラ及び半導体装置
CN111353150B (zh) 一种可信启动方法、装置、电子设备及可读存储介质
JP6741236B2 (ja) 情報処理装置
CN114329574B (zh) 基于域管平台的加密分区访问控制方法、系统及计算设备
TWI803035B (zh) 適用於容器的電子裝置及運行中容器系統的軟體更新方法
KR102650001B1 (ko) 복호화 정보에 따른 유저 데이터 수집 방법
US20230221949A1 (en) Vehicle secure start method and apparatus, electronic control unit and storage medium
CN116432163A (zh) 认证信息处理方法、装置、设备及存储介质
JP5483754B2 (ja) ソフトウェアモジュール管理装置およびソフトウェアモジュール管理プログラム