JP2015036847A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2015036847A
JP2015036847A JP2013167603A JP2013167603A JP2015036847A JP 2015036847 A JP2015036847 A JP 2015036847A JP 2013167603 A JP2013167603 A JP 2013167603A JP 2013167603 A JP2013167603 A JP 2013167603A JP 2015036847 A JP2015036847 A JP 2015036847A
Authority
JP
Japan
Prior art keywords
semiconductor device
memory
information
program
stored
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.)
Abandoned
Application number
JP2013167603A
Other languages
English (en)
Inventor
正幸 萩原
Masayuki Hagiwara
正幸 萩原
武 小原
Takeshi Obara
武 小原
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013167603A priority Critical patent/JP2015036847A/ja
Priority to US14/193,495 priority patent/US20150046717A1/en
Publication of JP2015036847A publication Critical patent/JP2015036847A/ja
Abandoned 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 セキュリティが確保された量産性にすぐれた半導体装置10を提供する。【解決手段】 実施形態の半導体装置10は、起動プログラムを記憶するNANDメモリ11と、起動プログラムを起動するファームウェアが記憶されるROM23と、前記起動プログラムのセキュリティ情報を記憶するOTPメモリ24と、前記OTPメモリ24に記憶された前記セキュリティ情報と、前記NANDメモリ11に記憶された起動プログラムとを用いて、前記起動プログラムの改ざん検知を行い、改ざんを検知しなかった場合に、前記起動プログラムを実行するコントローラであるCPU21と、を具備する。【選択図】図1

Description

本発明の実施形態は、起動時に起動プログラムの改ざん検知を行う半導体装置に関する。
半導体装置は、各種の電子デバイスの起動情報を記憶するために使用されている。例えば、スマートテレビ、携帯電話等の無線通信機器、セットトップボックス、又は、これらの組み合わせよる電子デバイスシステムは、例えば、コントローラとコントローラが起動時にもちいるファームウェア、ブートローダ等の起動プログラムを記憶する書き込み可能な不揮発性メモリを含む半導体装置を有する。
特に、電子デバイスの起動には、SoC(System on Chip)と不揮発性メモリ等とが配線板に実装された半導体装置が用いられている。SoC(System on Chip)には、CPU及びROM等の構成要素が1チップ化されている。不揮発性メモリとしては、例えばNANDメモリ(NAND型フラッシュメモリ)等の書き換え可能で大容量のメモリが用いられる。
ここで、電子デバイスの開発においては、SoCのROMに記憶する第1起動プログラムであるファームウェアが開発の初期に決定される。これに対し、NANDメモリ等の書き換え可能メモリに記憶される第2起動プログラムであるブートローダは、電子デバイスの機能の追加、若しくは変更、又は、コスト等の要因による仕様変更に合わせて、出荷直前まで変更が行われることがある。このため、主起動プログラム(ブートローダー)の起動等に必要な最低限の機能を有するファームウェアを最初に確定し、ファームウェアをROMに記憶しておき、追加機能については、ブートローダやオペレーティングシステムをNANDメモリ等の不揮発性メモリに記憶することが多い。
ここで、書き換え可能メモリに記憶された起動プログラムは、出荷後に第三者により改ざんされるおそれがある。悪意のあるコードが起動プログラムに組み込まれると、あらゆるセキュリティ手順が迂回される懸念がある。
例えば、スマートテレビの起動を行う半導体装置の起動プログラムが改ざんされると、有料放送が無料で視聴されたりするおそれがある。
セキュリティ確保の観点から、起動プログラムは改ざんのおそれのないROMに記憶することが好ましい。しかし、ROMへの記憶は、いわゆるハードコーディングであるため、更新に要する労力は大きい。
このため、例えば、ROMにファームウェアと起動プログラムを記憶し、書き換え可能な不揮発メモリにセキュリティ確保のためのセキュリティ情報と追加プログラムとを記憶することで、追加プログラムに変更が生じてもROMの更新が不要な構成が提案されている。
ここで、電子デバイスシステムの製造のためにSoCを購入する顧客の要求は、多種多様である。要求を実現できるSoCを短期間で提供するためには事前に量産されているSoCにて対応できることが好ましい。また、セキュリティ情報もSoCのROMに記憶することが好ましい。
しかし、同一のセキュリティ情報がROMに記憶されたSoCを量産した場合に、セキュリティ情報が暴露される事態が発生した場合に、同じ情報が書き込まれているSoCのすべてが影響を受けるという問題がある。一方、暴露の影響を限定的にするために、異なるセキュリティ情報がROMに記憶されている複数の種類のSoCを量産した場合、製造後のSoC及び起動情報の管理/配布が繁雑になるという問題があった。
すなわち、セキュリティの確実性と量産管理の効率というトレードオフが生じていた。そして、ROMの更新を行わずとも十分なセキュリティを維持し、かつ、起動プログラムの改ざん検知に必要となる情報を記憶できる半導体装置、すなわち、セキュリティが確保された量産性にすぐれた半導体装置が求められていた。
特開2010−129037号公報
本発明はセキュリティが確保された量産性にすぐれた半導体装置を提供することを目的とする。
実施形態の半導体装置は、起動プログラムを記憶する、書き込み可能な不揮発性メモリと、前記起動プログラムを起動するファームウェアが記憶されるROMと、前記起動プログラムのハッシュ値であるセキュリティ情報を記憶するOTP(One Time Programmable)メモリと、前記OTPメモリに記憶された前記ハッシュ値と、前記不揮発性メモリに記憶された起動プログラムを用いて算出されたハッシュ値との比較により、前記起動プログラムの改ざん検知を行い、改ざんを検知しなかった場合に、前記起動プログラムを実行するコントローラと、を具備し、前記ROMと前記OTPメモリと前記コントローラとが、1チップ化されている。
実施形態の半導体装置を含む電子デバイスシステムの構成図である。 実施形態の半導体装置の製造工程のフローチャートである。 実施形態の半導体装置の起動方法のフローチャートである。 実施形態の変形例1の半導体装置の起動方法のフローチャートである。 実施形態の変形例2の半導体装置の起動方法のフローチャートである。 実施形態の変形例3の半導体装置の起動方法のフローチャートである。 実施形態の変形例4の半導体装置の起動方法のフローチャートである。 実施形態の変形例5の半導体装置の起動方法のフローチャートである。
<半導体装置の構成>
最初に、図1を用いて本発明の実施形態の半導体装置10の構成について説明する。半導体装置10は、コンテンツの送受信機能と表示機能を有するホスト2とともに、スマートテレビである電子デバイスシステム1を構成している。半導体装置10は、ホスト2の起動デバイスであるが、例えば外観上はスマートテレビの内部に組み込まれホスト2と一体化している。
半導体装置10は、それぞれが、SoC20とメインバス15でSoC20と接続されている、NANDメモリ11と、SDRAM12と、DMAC(Direct Memory Access controller)13と、I/O14と、を有する。NANDメモリは書き換え可能な不揮発性メモリである。
SoC20は内部でデータを転送するためのローカルバス25で接続されているCPU21と、ROM23と、OTP(One Time Programmable)メモリ24等の構成要素とが1チップ化されている。
コントローラであるCPU21は、プログラム等が展開され実行されるSRAM22を有する。なお、本実施形態の半導体装置10では、CPU21は、後述するようにハッシュ演算を行い、演算結果からデータ改ざんを検知するセキュリティH/W(ハードウエア)を含む。
SRAM(Static Random Access Memory)22は、フリップフロップ等の順序回路を用いてデータを記憶するため、高速な情報の出し入れ、すなわち計算等の高速信号処理が可能な動作メモリである。
不揮発性の読み出し専用メモリであるROM23は、設計された配線構造によって特定のデータを記憶するようになっており、フォトマスクを使って集積回路を製造すると、ハードウェアにデータが刻み込まれる、いわゆるマスクROMである。なお、後述するように、ROM23には、第2起動プログラム(主起動プログラム)であるブートローダを起動する第1起動プログラムであるファームウェアが記憶される
これに対して、OTPメモリ24は、一度データを書き込んだ後は、データの消去やデータの再書き込みは不可能で、読み出しのみが可能な不揮発性メモリである。例えば、OTPメモリ24は、ヒューズ素子が設けられたNANDメモリセルに電気的に一度だけ書き込むことができる。なお、メモリセルに電気的に一度だけ書き込む方法としては、MOS構造のヒューズ素子に対してそのゲート絶縁膜に最大定格を超える高電圧を印加して絶縁膜を破壊するようにし、絶縁膜破壊前のヒューズ素子には“0”という情報を記憶させ、絶縁膜破壊後のヒューズ素子には“1”という情報を記憶させるようにしてもよい。または、ゲート配線に電流を流してエレクトロマイグレーションのような物理的な現象を引き起こし、配線又は配線の一部を形成するシリサイド領域を断線(高抵抗化)させることで情報を記憶するようにしてもよい。
SDRAMコントローラ12Aで制御されるSDRAM(Synchronous Dynamic Random Acess Memory)12は、メインバス15に同期して動作するため、非同期DRAMよりも複雑な操作パターンを持つことができ、より高速に動作できる。SDRAM12には、ブートローダ及びオペレーティングシステムが実行時に展開される。
DMAC13は、例えば、メモリからメモリへのデータのブロック転送を可能にする。 独立したエンティティによるデータ転送は、プロセッサの負荷を大幅に軽減する。DMC13は、SoC20の内部のメモリとSDRAM12と間のデータ転送を可能とする。
I/O14は、半導体装置10とホスト2等とのインターフェイス機能を有する。半導体装置10が専用の表示部(不図示)を具備する場合には、表示部も、I/O14を介して接続される。
<半導体装置の製造>
次に、図2のフローチャートに沿って半導体装置10の製造工程について簡単に説明する。
<ステップS11>
最初にハードウェアの最低限の起動制御を行うためのソフトウェアであるファームウェア(Firmware)が作成される。
<ステップS12>
ファームウェアをもとに回路設計が行われて、それに基づきROM23が作製される。ROM23は、SoC20の一部であるが、CPU21等はハードウェアの仕様が少し異なっていても同じ設計で作製されるため、ROM23と同時にSoC20が作製される。
<ステップS13>
電子デバイスシステム1の基本ソフトウェアであるOS(Operating System)、起動直後に動作し、OS等を起動する起動プログラム(起動データ)であるブートローダ、メインプログラム等のソフトウェアが作成される。
そして、ブートローダのハッシュ値が算出される。ハッシュ値は、起動プログラム等のデータから生成された固定長の疑似乱数であり、不可逆な一方向関数を含むため、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である。
ハッシュ値を算出する関数には、シャーワン(SHA−1: Secure Hash Algorithm 1)、又は、MD5(Message Digest 5)等を用いる。
シャーワンは、1995年に米国標準技術局によってアメリカ政府の標準ハッシュ関数として採用された。インターネット上で安全に通信を行うためのIPSec等に応用されている。MD5はRFC1321として、IETFで標準化されている。
例えばブートローダの全体、又は、一部分に対してハッシュ関数が実行されて、そのハッシュ値が算出される。
<ステップS14>
Soc20と、NANDメモリ11等とが配線板に実装されて、半導体装置10のハードウェアが作製される。そして、NANDメモリ11に、ブートローダ、OS、及びメインプログラム等のソフトウェアが記憶される。
<ステップS15>
半導体装置10のSoC25のOTPメモリ24に、算出されたブートローダのハッシュ値が記憶される。
なお、ステップS14とステップS15の順序は逆でもよい。また、データが記憶されたメモリが配線板に実装されてもよい。
ソフトウェアが記憶された半導体装置10が、ホスト2と接続されることで、電子デバイスシステム1が完成する。
<起動方法>
次に、図3のフローチャートに沿って、半導体装置10による、電子デバイスシステム1の起動方法について説明する。
<ステップS21>
電源が投入されると、CPU21はROM23に記憶されているファームウェアの実行を開始し、バス上に存在する部品構成を検知し、NANDコントローラ11Aの初期化を行う。以下、「CPU21がファームウェア等のソフトウェアにより行う制御」を、「ファームウェア等が行う」と表現することがある。また、ソフトウェアを動作メモリに「コピーする」ことを「展開する」という。
ファームウェアは、NANDメモリ11に記憶されているデータを読み取り可能な状態にし、SDRAMコントローラ12Aの初期化を行い、SDRAM12を読み書き可能な状態にする。続いて、CPU21は、NANDメモリ11から、ブートローダを読み取り、SRAM22に展開する。
<ステップS22>
ファームウェアは、SRAM22に展開されたブートローダのハッシュ値を算出する。なお、CPU21は、H/Wとしてハッシュ演算部を有する。
<ステップS23>
ファームウェアは、算出したハッシュ値と、OTPメモリ24に記憶されているハッシュ値とを比較する。比較結果、すなわち、改ざん検知結果は、例えば、SRAM22に記憶される。
<ステップS24、S25>
ファームウェアは、ハッシュ値が一致した場合(S24:Yes)、すなわち、改ざんが検知されなかった場合には、SRAM22に展開されたブートローダに制御を移動し、ブートローダの実行を開始する。
<ステップS26>
ブートローダは、オペレーティングシステムをSDRAM12に展開し、メインプログラム等の起動を行う。
<ステップS24、S27>
ファームウェアは、ハッシュ値が一致しなかった場合(S24:No)、すなわち、起動プログラムであるブートローダの改ざんが検知された場合は、例えば、I/O14に接続されている表示部に「起動中止」のメッセージを表示し、起動処理を中止する。すなわち、CPU21は、起動プログラムを実行しない。
以上の説明のように、半導体装置10では、セキュリティ情報であるハッシュ値を一度のみ書き込み可能なメモリ(OTPメモリ24)に記憶する。このため、半導体装置10では、ROM23の作製(図2:S12)の後、すなわち、SoC20の製造後に、顧客の要望に応じてセキュリティ情報を書き込める。このためROM23にセキュリティ情報を記憶したときと同様のセキュリティを維持しつつ、ROM作製後に、改ざん検証に必要となるセキュリティ情報や改ざん検証の方式を設定できる。
すなわち、本実施形態によれば、セキュリティが確保された量産性にすぐれた半導体装置を提供できる。
なお、電子デバイスシステム1は、コンテンツの受信を行い、モニタにコンテンツの表示をする上で、コンテンツ保護のために、第三者による改ざんを防止できることが重要となるスマートテレビであるが、改ざんされたプ起動ログラムの実行防止を目的とする各種の電子デバイスシステムに、半導体装置は応用できる。
起動制御を行うコントローラであるCPU21は、ARM等汎用プロセッサとしても良いし、その他のマイクロコントローラ、DSP等専用プロセッサであってもよい。また、セキュリティH/Wの代わりに、同機能をコントローラの処理としてさせるソフトウェアを、ファームウェアの中に組み込んでもよい。
半導体装置10では、SoC20は、ファームウェアとブートローダ/オペレーティングシステムを実行するコントローラが単一のCPU21であるが、ブートは簡易なマイクロコントローラのみで処理し、オペレーティングシステムを処理するのはより高速なプロセッサとするなど、検証を行うコントローラと、オペレーティングシステムを実行するプロセッサとが別途存在する構成としてもよい。
半導体装置10では、ブートローダ、オペレーティングシステム等を記憶する不揮発性メモリが、単一のNANDメモリ11であるが、それぞれ異なる不揮発メモリとしても良い。例えば、プログラムサイズに応じ、サイズが小さいブートローダをEEPROMに記憶し、サイズが大きいオペレーティングシステムをNANDメモリ11に記憶してもよい。SRAMの代わりに、SDRAMを代替してもよい。この場合、SDRAMの利用前の時点で初期化を行うようにプログラムされたファームウェアをもちいる。また、半導体装置内でのプログラム等の動作メモリへの展開にはDMACをもちいるが、コントローラ自身の転送機能によって展開してもよい。
<変形例1〜変形例5>
次に、実施形態の変形例の半導体装置10A〜10Eについて説明する。変形例の半導体装置10A〜10E、すなわち、電子デバイスシステム1A〜1Eは、半導体装置10、電子デバイスシステム1と類似機能の構成要素を有するため、構成要素の説明は省略する。
半導体装置10A〜10Eでは、例えば、NANDメモリ11が記憶する起動プログラムが、起動プログラムの改ざん検知のための検証用情報を含んでいる。そして、OTPメモリ24が検証用情報を検証するためのセキュリティ情報を記憶する。起動すると、コントローラであるCPU21は、OTPメモリ24のセキュリティ情報と、NANDメモリ11の検証用情報を読み取り、セキュリティ情報と検証用情報とをもちいて起動プログラムの改ざん検証を行う。
<変形例1>
変形例1の半導体装置10Aでは、検証用情報としてメッセージ認証コード(MAC:Message Authentication Code)に基づいた改ざん検知を行う。MACは、生成と検証に同じ共通鍵情報が使われる。
半導体装置10Aでは、共通鍵情報がOTPメモリ24に記憶される。一方、ブートローダと共通鍵情報とからMACが生成され、MACを含むブートローダ、言い換えれば、MACとブートローダとが、NANDメモリ11に記憶される。
開発されたブートローダに機能追加するためブートローダの更新を行う場合、更新されたブートローダと共通鍵情報とからMACが新たに算出される。そして、更新されたブートローダと更新されたMACとがNANDメモリ11に記憶される。NANDメモリ11への更新データの記憶方式については、電子デバイスシステムを回収してから書きこみ機器をもちいてNANDメモリ11に書き込む、NANDメモリ11を交換する、又は電子デバイスが無線通信等のネットワークによるデータ通信機能を有する場合、オペレーティングシステムが書きこみを実施しても良い。
次に、図4のフローチャートに沿って、半導体装置10Aによる、電子デバイスシステム1の起動方法について説明する。
<ステップS31>
電源が投入され起動すると、CPU21はROM23に記憶されていたファームウェアにより、NANDメモリ11から、ブートローダを読み取り、SRAM22に展開する。
<ステップS32>
CPU21は、ファームウェアによりOTPメモリ24に記憶されている共通鍵情報を読み取る。
<ステップS33>
CPU21は、ブートローダのMACを、OTPメモリ24から読み取った共通鍵情報を用いて算出する。
<ステップS34>
CPU21は、NANDメモリ11に記憶されていたMACと算出したMACの比較を行う。
<ステップS35〜S37>
CPU21は、MACが一致した場合(S35:Yes)、すなわち、改ざんが検知されかった場合には、ブートローダを実行し(S36)、OS及びメインプログラムを起動する(S37)。
<ステップS35、S38>
CPU21は、MACが一致しなかった場合(S35:No)、すなわち、改ざんが検知された場合、ファームウェアはブートローダに制御を渡さず、起動処理を中止する。
MACに基づいた検証機能を提供する際には、顧客毎に異なる共通鍵情報が割当られる。このため、半導体装置10Aは、半導体装置10等の効果を有し、更に、共通鍵情報がある顧客向けの鍵が第三者に不正に渡ったとしても、異なる共通鍵情報が書き込まれているSoCについては影響が及ばないため、半導体装置10Aでは、暴露された場合の影響範囲を限定できる。
<変形例2>
変形例2の半導体装置10Bは、公開鍵方式に基づいた改ざん検知を行う。すなわち、検証用情報として起動プログラムの署名値と公開鍵とを有し、セキュリティ情報として公開鍵のハッシュ値を有し、検証用情報の改ざん検知にハッシュ演算をもちい、起動プログラムの改ざん検知に公開鍵方式をもちいる。
SoC20を利用して電子デバイスシステム1を設計する開発者は、OTPメモリ24にデータを記憶する作業を外部開発者に委託することがある。その際に、起動プログラムの対となるセキュリティ情報を生成するのに必要な鍵情報を外部開発者に提供せずに、設計を行いたい場合がある。電子デバイスシステム1の半導体装置10Bを設計する開発者は、公開鍵方式の秘密鍵と公開鍵とを生成する。
秘密鍵は、電子デバイスシステム1を設計する開発者により厳密に管理される。公開鍵は外部開発者に提供される。外部開発者は、公開鍵情報をOTPメモリ24に書き込む。開発者は、ブートローダを作成した後に、秘密鍵をもちいてブートローダに署名を行い、署名情報(署名値)を生成する。そして署名値とブートローダとがNANDメモリ11に記憶される。
次に、図5のフローチャートに沿って、半導体装置10Bによる、電子デバイスシステム1の起動方法について説明する。
<ステップS41>
電源が投入され起動すると、CPU21はROM23に記憶されていたファームウェアにより、NANDメモリ11から、ブートローダを読み取り、SRAM22に展開する。
<ステップS42>
CPU21は、ファームウェアにより、OTPメモリ24に記憶されている公開鍵を読み取る。
<ステップS43>
CPU21は、NANDメモリ11に記憶されているブートローダと署名値とを読み取る。そして、CPU21は、公開鍵と署名値とからダイジェストを算出し、さらに、ブートローダからダイジェストを算出する。
<ステップS44>
CPU21は、それぞれ算出した2つのダイジェストを比較する。
<ステップS45〜S47>
CPU21は、ダイジェストが一致した場合(S45:Yes)には、ブートローダを実行し(S46)、OS及びメインプログラムを起動する(S47)。
<ステップS45、S48>
ダイジェストが一致しなかった場合(S45:No)、すなわち、改ざんが検知された場合には、ファームウェアはブートローダに制御を渡さず、起動を中止する。
半導体装置10Bは、半導体装置10等の効果を有し、更に、OTPメモリ24にデータを記憶する作業を外部開発者に委託できるため、生産性が高い。
<変形例3>
変形例3の半導体装置10Cは、検証用情報の改ざん検知にMACをもちい、起動プログラムの改ざん検知に公開鍵方式をもちいる。半導体装置10Cは、検証用情報としてプログラムの署名値と公開鍵と公開鍵のMACを有し、セキュリティ情報としてMACの秘密鍵を有し、検証用情報の改ざん検知にMACをもちい、プログラムの改ざん検知に公開鍵方式をもちいる。
すなわち、半導体装置10Cは、公開鍵方式に基づいた改ざん検知方式において、MACに基づいた改ざん検知方式で示した、ブートローダの更新に対応している。ブートローダの更新毎に、秘密鍵により署名情報が生成される。
なお、OTPメモリ24記憶する検証用情報に替えて、検証用情報のハッシュ値を用いてもよい。
公開鍵方式でもちいられる鍵のデータサイズは、ハッシュ値のデータサイズよりも大きい場合がある。半導体装置10Cは、OTPメモリ24の記憶容量が十分でない場合でも、公開鍵を記憶する替わりに、そのハッシュ値を記憶できる。
この場合には、外部開発者には公開鍵ではなく、公開鍵のハッシュ値が提供される。そして外部開発者により、公開鍵のハッシュ値が、OTPメモリ24に記憶される。一方、ブートローダ作成後に、秘密鍵をもちいてブートローダに署名が行われ、署名情報が生成される。そして、署名情報とブートローダと公開鍵とがNANDメモリ11に記憶される。
次に、図6のフローチャートに沿って、半導体装置10Cによる、電子デバイスシステム1の起動方法について説明する。
<ステップS51>
電源が投入され起動すると、CPU21はROM23に記憶されていたファームウェアにより、NANDメモリ11から、公開鍵を読み取り、SRAM22に展開する。
<ステップS52>
CPU21は、ファームウェアにより、公開鍵のハッシュ値を算出する。
<ステップS53>
CPU21は、算出したハッシュ値と、OTPメモリ24から読み取ったハッシュ値とを比較する。
<ステップS54、S55>
CPU21は、署名値が一致しなかった場合(S54:No)、すなわち、改ざんが検知された場合、ファームウェアはブートローダに制御を渡さず、起動処理を中止する。
<ステップS54、S56>
CPU21は、署名値が一致した場合(S54:Yes)、さらに、公開鍵をもちいてブートローダと署名との改ざん検証を行う。
すなわち、CPU21は、このステップにおいて、NANDメモリ11から、ブートローダを読み取り、SRAM22に展開する。
<ステップS57>
CPU21は、ファームウェアにより、SRAM22に展開されたブートローダのダイジェストを算出する。さらに、CPU21は、ファームウェアにより、公開鍵と署名値とからダイジェストを算出する。
<ステップS58>
CPU21は、それぞれ算出した2つのダイジェストを比較する。
<ステップS59〜S61>
CPU21は、ダイジェストが一致した場合(S59:Yes)には、ファームウェアから、SRAM22に展開されたブートローダに制御を移動し、実行を開始する。
一方、署名値が一致しなかった場合(S59:No)には、起動を中止する。すなわち、CPU21は、起動プログラムを実行しない。
半導体装置10Cは、半導体装置10等の効果を有し、更に、より高いセキュリティを維持できる。
なお、変形例3では、公開鍵のハッシュ値をOTPメモリ24に記憶したが、公開鍵の検証にMACをもちいてもよい。
<変形例4>
変形例4の半導体装置10Dは、すでに説明した複数の検証方式(改ざん検知方式)を兼ね備えたファームウェアを含み、セキュリティ情報がフラグ情報(制御フラグ)を含み、フラグ情報に応じて改ざん検知方式が切り替わる。すなわち、半導体装置10Dは、セキュリティ情報がフラグ情報を含み、ファームウェが複数の改ざん検証方式を有し、フラグ情報に応じて改ざん検知方式が切り替わる
半導体装置10Dでは、改ざん検知方式を選択するときに必要なフラグ情報がROM23又はOTPメモリ24に記憶される。そして、CPU21は、ファームウェアにより、OTPメモリ24から制御フラグを読み取り、検証方式を判定し、判定結果に応じた改ざん検知を行う。
次に、図7のフローチャートに沿って、半導体装置10Dによる、電子デバイスシステム1の起動方法について説明する。
<ステップS71>
起動すると、CPU21はファームウェアにより、フラグ情報を読み取り、SRAM22に展開する。
<ステップS72、S73>
CPU21は、フラグ情報が定義されている場合(S72:Yes)、検証方式を判定し、フラグ情報に応じた検証方法による改ざん検知処理、例えば、図3で示したステップS22からの処理を実行したり、図4で示したステップS32からの処理を実行したりする。
<ステップS74>
CPU21は、フラグ情報が定義されていない場合(S72:No)、起動を中止する。すなわち、OTPメモリ24の破損又は誤った操作等により不正な値が書き込まれ、定義されている制御フラグ以外であった場合、CPU21はブート処理を中断する。
半導体装置10Dは、半導体装置10等の効果を有し、更に効率的に、改ざん検知が行える。
<変形例5>
変形例5の半導体装置10Eは、半導体装置10Dと類似しているが、複数の検証方式のそれぞれに応じた検証情報を有し、記憶する検証情報に応じて複数の改ざん検知処理を順に実行する。フラグ情報は、起動時に実行する複数の検証方式に対応した複数のフィールドをもつ。
次に、図8のフローチャートに沿って、半導体装置10Eによる、電子デバイスシステム1の起動方法について説明する。
<ステップS81>
起動すると、CPU21はファームウェアにより、フラグ情報を読み取り、SRAM22に展開する。フラグ情報には、複数の検証方式の実行順序が含まれている。
<ステップS82、S83>
CPU21は、フラグ情報が定義されていない場合(S83:No)、起動を中止する。すなわち、CPU21はブート処理を中断する。
<ステップS84>
CPU21は、フラグ情報に含まれるフィールドを予め組み込まれた順番に応じ、複数の検証処理を順に実行する。
<ステップS85>
CPU21は、1つの検証処理を実行すると、フラグ情報を更新する。
<ステップS86>
CPU21は、フラグ情報で指定されている全ての検証処理を完了するまで(S86:No)、ステップS82からの処理を繰り返す。
<ステップS87>
全ての検証処理が完了し(S86:Yes)、全ての検証処理において改ざんが検知されなかった場合に限り、ファームウェアによる制御からブートローダによる制御に切り替わる。そして、OS及びメインプログラムが、実行される(S87、S88)。言い換えれば、ファームウェアは、フラグ情報に書き込まれた全ての検証処理が実施されたことを確認した後に、ブートローダに制御を移す。OTPメモリ24に記憶されたフラグ情報が不正であった場合、あるいは、何れかの時点で改ざんが検知された場合には、ファームウェアはブートローダに制御を渡さない。
半導体装置10Eは、半導体装置10等の効果を有し、更に、複数の検証方式を順次実施するため、改ざん検知の確実性が高い。
なお、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。実施形態は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…電子デバイスシステム
2…ホスト
10、10A〜10E…半導体装置
11…NANDメモリ
12…SDRAM
20…SoC
21…CPU
22…SRAM
23…ROM
24…OTPメモリ

Claims (7)

  1. 起動プログラムを記憶する、書き込み可能な不揮発性メモリと、
    前記起動プログラムを起動するファームウェアが記憶されるROMと、
    前記起動プログラムのハッシュ値であるセキュリティ情報を記憶するOTP(One Time Programmable)メモリと、
    前記OTPメモリに記憶された前記ハッシュ値と、前記不揮発性メモリに記憶された起動プログラムを用いて算出されたハッシュ値との比較により、前記起動プログラムの改ざん検知を行い、改ざんを検知しなかった場合に、前記起動プログラムを実行するコントローラと、を具備し、
    前記ROMと前記OTPメモリと前記コントローラとが、1チップ化されていることを特徴とする半導体装置。
  2. 起動プログラムを記憶する、書き込み可能な不揮発性メモリと、
    前記起動プログラムを起動するファームウェアが記憶されるROMと、
    前記起動プログラムのセキュリティ情報を記憶するOTP(One Time Programmable)メモリと、
    前記OTPメモリに記憶された前記セキュリティ情報と、前記不揮発性メモリに記憶された起動プログラムとを用いて、前記起動プログラムの改ざん検知を行い、改ざんを検知しなかった場合に、前記起動プログラムを実行するコントローラと、を具備することを特徴とする半導体装置。
  3. 前記ROMと前記OTPメモリと前記コントローラとが、1チップ化されていることを特徴とする請求項2に記載の半導体装置。
  4. 前記セキュリティ情報が前記起動プログラムのハッシュ値を含み、前記コントローラが前記改ざん検知にハッシュ演算を用いることを特徴とする請求項3に記載の半導体装置。
  5. 前記起動プログラムが検証用情報を含み、前記OTPメモリが前記検証用情報の前記セキュリティ情報を記憶し、前記コントローラが、前記改ざん検知に前記セキュリティ情報と前記検証用情報とを用いることを特徴とする請求項2から請求項4のいずれか1項に記載の半導体装置。
  6. 前記検証用情報がMACであり、前記OTPメモリが前記セキュリティ情報として秘密鍵情報を記憶し、前記コントローラが、前記改ざん検知にMACを用いることを特徴とする請求項5に記載の半導体装置。
  7. 前記検証用情報が署名値であり、前記OTPメモリが前記セキュリティ情報として公開鍵を記憶し、前記コントローラが、前記改ざん検知にMACを用いることを特徴とする請求項5に記載の半導体装置。
JP2013167603A 2013-08-12 2013-08-12 半導体装置 Abandoned JP2015036847A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013167603A JP2015036847A (ja) 2013-08-12 2013-08-12 半導体装置
US14/193,495 US20150046717A1 (en) 2013-08-12 2014-02-28 Semiconductor apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013167603A JP2015036847A (ja) 2013-08-12 2013-08-12 半導体装置

Publications (1)

Publication Number Publication Date
JP2015036847A true JP2015036847A (ja) 2015-02-23

Family

ID=52449663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013167603A Abandoned JP2015036847A (ja) 2013-08-12 2013-08-12 半導体装置

Country Status (2)

Country Link
US (1) US20150046717A1 (ja)
JP (1) JP2015036847A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019080229A (ja) * 2017-10-26 2019-05-23 京セラドキュメントソリューションズ株式会社 情報処理装置、改ざん検出方法
JP2020057304A (ja) * 2018-10-04 2020-04-09 キヤノン株式会社 情報処理装置、その制御方法、プログラム、及び画像形成装置
JP2020087293A (ja) * 2018-11-30 2020-06-04 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
CN112347518A (zh) * 2019-08-09 2021-02-09 铠侠股份有限公司 储存装置
JP2021504865A (ja) * 2017-11-30 2021-02-15 モカナ コーポレイションMocana Corporation ゲートウェイ装置に接続された非ipエンドポイントデバイスと接続されたサービスとの間のデータ転送を安全にするためのシステム及び方法
JP2021043674A (ja) * 2019-09-10 2021-03-18 ボッシュ株式会社 制御装置及び方法
JP2021140678A (ja) * 2020-03-09 2021-09-16 株式会社東芝 情報処理装置
JP2022141379A (ja) * 2021-03-15 2022-09-29 株式会社東芝 記憶装置
JP7393226B2 (ja) 2020-01-29 2023-12-06 キヤノン株式会社 情報処理装置とその起動方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9389793B2 (en) * 2014-03-06 2016-07-12 Freescale Semiconductor, Inc. Trusted execution and access protection for embedded memory
CN106487511B (zh) 2015-08-27 2020-02-04 阿里巴巴集团控股有限公司 身份认证方法及装置
JP2018194879A (ja) * 2017-05-12 2018-12-06 ルネサスエレクトロニクス株式会社 半導体装置、ブート方法、およびブートプログラム
KR102126931B1 (ko) * 2018-11-07 2020-06-25 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법
CN114065218B (zh) * 2021-11-19 2024-04-12 山东方寸微电子科技有限公司 一种SoC系统芯片安全启动方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536540B2 (en) * 2005-09-14 2009-05-19 Sandisk Corporation Method of hardware driver integrity check of memory card controller firmware
KR100792287B1 (ko) * 2006-07-27 2008-01-07 삼성전자주식회사 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
JP4896837B2 (ja) * 2007-08-20 2012-03-14 株式会社東芝 携帯可能電子装置および携帯可能電子装置の制御方法
US20130024930A1 (en) * 2011-07-20 2013-01-24 Michael Steil Executing Functions of a Secure Program in Unprivileged Mode
US9800405B2 (en) * 2012-03-02 2017-10-24 Syphermedia International, Inc. Blackbox security provider programming system permitting multiple customer use and in field conditional access switching
US20140250290A1 (en) * 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
US9189631B2 (en) * 2013-06-07 2015-11-17 Dell Inc. Firmware authentication

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019080229A (ja) * 2017-10-26 2019-05-23 京セラドキュメントソリューションズ株式会社 情報処理装置、改ざん検出方法
JP7267295B2 (ja) 2017-11-30 2023-05-01 モカナ コーポレイション ゲートウェイ装置に接続された非ipエンドポイントデバイスと接続されたサービスとの間のデータ転送を安全にするためのシステム及び方法
JP2021504865A (ja) * 2017-11-30 2021-02-15 モカナ コーポレイションMocana Corporation ゲートウェイ装置に接続された非ipエンドポイントデバイスと接続されたサービスとの間のデータ転送を安全にするためのシステム及び方法
JP2020057304A (ja) * 2018-10-04 2020-04-09 キヤノン株式会社 情報処理装置、その制御方法、プログラム、及び画像形成装置
US11822928B2 (en) 2018-10-04 2023-11-21 Canon Kabushiki Kaisha Information processing apparatus, method of controlling same, storage medium, and image forming apparatus
JP7330681B2 (ja) 2018-10-04 2023-08-22 キヤノン株式会社 情報処理装置、その制御方法、プログラム、及び画像形成装置
JP2020087293A (ja) * 2018-11-30 2020-06-04 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
US11550594B2 (en) 2018-11-30 2023-01-10 Canon Kabushiki Kaisha Information processing apparatus, method of controlling information processing apparatus, and storage medium
CN112347518A (zh) * 2019-08-09 2021-02-09 铠侠股份有限公司 储存装置
JP2021028763A (ja) * 2019-08-09 2021-02-25 キオクシア株式会社 ストレージ装置
JP7341784B2 (ja) 2019-08-09 2023-09-11 キオクシア株式会社 ストレージ装置
JP7270511B2 (ja) 2019-09-10 2023-05-10 ボッシュ株式会社 制御装置及び方法
JP2021043674A (ja) * 2019-09-10 2021-03-18 ボッシュ株式会社 制御装置及び方法
JP7393226B2 (ja) 2020-01-29 2023-12-06 キヤノン株式会社 情報処理装置とその起動方法
JP7249968B2 (ja) 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ
JP2021140678A (ja) * 2020-03-09 2021-09-16 株式会社東芝 情報処理装置
US11888990B2 (en) 2020-03-09 2024-01-30 Kabushiki Kaisha Toshiba Information processing device controlling analysis of a program being executed based on a result of verification of an analysis program
JP2022141379A (ja) * 2021-03-15 2022-09-29 株式会社東芝 記憶装置
JP7413300B2 (ja) 2021-03-15 2024-01-15 株式会社東芝 記憶装置

Also Published As

Publication number Publication date
US20150046717A1 (en) 2015-02-12

Similar Documents

Publication Publication Date Title
JP2015036847A (ja) 半導体装置
US8281229B2 (en) Firmware verification using system memory error check logic
US8560823B1 (en) Trusted modular firmware update using digital certificate
CN110989994B (zh) 基于区块链的代码版本管理方法、装置、终端及存储介质
KR101687277B1 (ko) 시스템 온 칩 디바이스들에서의 키 폐기
CN103914658B (zh) 终端设备的安全启动方法及终端设备
KR20150008546A (ko) 보안 다운로드 및 기능 실행방법 및 장치
US8683213B2 (en) Progressive boot for a wireless device
US11829479B2 (en) Firmware security verification method and device
US20170097830A1 (en) Nand-based verified boot
CN110990084B (zh) 芯片的安全启动方法、装置、存储介质和终端
US8479017B2 (en) System and method for N-ary locality in a security co-processor
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
TW201516733A (zh) 用以核對uefi認證變量變化之系統及方法
JP2017528037A (ja) 外部不揮発性メモリに記憶されたデータが有効かどうかを判定するための集積回路
US20130081144A1 (en) Storage device and writing device
JP5705235B2 (ja) データを格納するための方法及び装置
CN109445705B (zh) 固件认证方法及固态硬盘
WO2021249359A1 (zh) 数据完整性保护的方法和装置
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
JP2017504267A (ja) セキュアブート中のキー抽出
US20170286665A1 (en) Devices and methods for facilitating software signing by more than one signing authority
US20160350537A1 (en) Central processing unit and method to verify mainboard data
WO2019233022A1 (zh) 防回滚方法及系统
JP6861739B2 (ja) 組み込み装置及びファームウェア更新方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150812

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20151202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151209