JP5984625B2 - 半導体装置及び暗号鍵書き込み方法 - Google Patents

半導体装置及び暗号鍵書き込み方法 Download PDF

Info

Publication number
JP5984625B2
JP5984625B2 JP2012240051A JP2012240051A JP5984625B2 JP 5984625 B2 JP5984625 B2 JP 5984625B2 JP 2012240051 A JP2012240051 A JP 2012240051A JP 2012240051 A JP2012240051 A JP 2012240051A JP 5984625 B2 JP5984625 B2 JP 5984625B2
Authority
JP
Japan
Prior art keywords
key
area
address
encryption key
encryption
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.)
Active
Application number
JP2012240051A
Other languages
English (en)
Other versions
JP2014089640A (ja
Inventor
遠藤 隆
隆 遠藤
洋祐 丹野
洋祐 丹野
佳幸 天沼
佳幸 天沼
雄一郎 成吉
雄一郎 成吉
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 JP2012240051A priority Critical patent/JP5984625B2/ja
Priority to US14/061,619 priority patent/US9280671B2/en
Priority to EP13190143.1A priority patent/EP2728509B1/en
Publication of JP2014089640A publication Critical patent/JP2014089640A/ja
Priority to US15/006,837 priority patent/US20160140057A1/en
Application granted granted Critical
Publication of JP5984625B2 publication Critical patent/JP5984625B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Description

本発明は、例えばIC (Integrated Circuit) カードなどに搭載される、CPUとそのプログラムを暗号化して格納するROM (Read Only Memory) を備える半導体装置に関し、特に暗号化されたプログラムを不正に読み出す攻撃に対するセキュリティレベルを向上するために好適に利用できるものである。
ICカードは、一般に、ROM,RAM (Random Access Memory),EEPROM (Electrically Erasable Programmable Read-Only Memory),CPU (Central Processing Unit) が1チップ化されたSoC (System On Chip)(マイクロコンピュータ) として提供される。電源、グランド、クロック、リセット、シリアル通信インターフェースなど必要最小限の外部端子のみを備えている。内部のメモリへの直接的なアクセスを行なえる構成にはなっておらず、データのやり取りは、必ずシリアル通信を介して行われることで、メモリ内容の秘匿性が保証されてきた。
しかし、解析装置の性能向上に伴い、リバースエンジニアリングによるセキュリティ機器の解析が問題となってきている。中でも、ROMのリバースエンジニアリングによって、ROMに格納されているファームウェアの内容を読み出されることが現実の脅威となってきている。従来、単純な組み合わせ回路によるスクランブルが行なわれてきた。スクランブル回路の構成は非公開で、その秘匿性がファームウェアの秘匿性を担保してきた。しかし、リバースエンジニアリング技術の向上により、スクランブル回路の解析すらも可能となりつつある。こうした背景から、単純なROMパターンの読み出しだけではファームウェアが解析できないような、ROM内容の暗号化が求められている。暗号化では、方式の秘匿性か鍵の秘匿性により、暗号化されたプログラムを不正に読み出す攻撃に対するセキュリティレベルを向上する。ROMの内容をリバースエンジニアリングで解読できる攻撃を想定した場合、暗号化方式も回路構成の物理解析から解析されることが予想される。そこで、暗号鍵を電気的に書き換え可能な不揮発性メモリに格納し、物理形状や回路構成の光学的観察によるリバースエンジニアリングのみでは暗号鍵が読み取られないようにする。
特許文献1と特許文献2には、プログラムを暗号化して記憶する、セキュリティ機器に関する発明が開示されている。暗号化されたプログラムは、暗号鍵を使って復号され、別の記憶装置に展開された後に実行される。
ICカードでは、ファームウェアであるプログラムの秘匿を目的とした暗号化が行われるようになる以前から、記憶しているユーザ情報と通信の秘匿のために、暗号化技術が広く利用されてきており、そのための暗号鍵の保管にはいくつかの方法が知られている。特許文献3には、ICカード内の、外部から絶対に読み出しのできないメモリエリアに暗号鍵を記憶することにより、また、特許文献4には、暗号鍵を分割し、1つの記憶装置内の分散した領域に記憶することにより、それぞれ、暗号鍵を不正に読み出す攻撃に対するセキュリティレベルを向上する技術が開示されている。特許文献5には、複数の暗号鍵からなる鍵情報を分割管理し、あるいは一括管理することにより、効率よく記憶することができる技術が開示されている。
特開2000-155819号公報 特開2003-333027号公報 特開平04-102185号公報 特開2000-252973号公報 特開2012-080295号公報
特許文献1、2、3、4及び5について本発明者が検討した結果、以下のような新たな課題があることがわかった。
特許文献1には、暗号鍵の保管方法について、特に不正に読み出す攻撃に対するセキュリティレベルを向上する技術は、記載されていない。特許文献2には、暗号鍵を分割して複数の記憶装置に分散して記憶する技術が記載されているが、複数の記憶装置を備える必要があるため、ICカードのような小規模なシステムには、採用することができない。
特許文献3、4及び5に記載される暗号鍵の保管方法は、プログラムによって実行されるため、そのプログラム自体の暗号化に用いる暗号鍵の保管には、利用することができない。
さらに、仮に特許文献3や特許文献4に開示される暗号鍵の保管方法を、特許文献1または特許文献2に開示される技術に適用したとしても、プログラムを不正に読み出す攻撃に対するセキュリティレベルを向上することはできない。特許文献1と特許文献2に開示される技術では、暗号化されたプログラムは、暗号鍵を使って復号され、別の記憶装置の上に展開された後に実行されるため、その展開されたプログラム、即ち復号されて平文となったプログラムを読み出す攻撃に対しては、暗号鍵の秘匿は無意味だからである。
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
一実施の形態によれば、下記の通りである。
すなわち、CPUと電気的に書き換え可能なEEPROMと電気的に書き換え不能なROMを備える半導体装置であって、ROMに暗号化領域と非暗号化領域を設け、暗号化領域に暗号化されたファームウェアを格納する。暗号鍵を保持し、暗号化されたファームウェアを復号してCPUに供給する暗号復号器を備える。CPUはシステムモードとユーザモードを含むいずれかの動作モードで動作し、EEPROMはユーザモードではCPUからのアクセスが禁止される、システム領域を備える。ファームウェアを暗号化した暗号鍵は、複数のビット列である分割鍵に分割され、EEPROMのシステム領域内の分散したアドレス領域に格納される。
ROMの非暗号化領域には、暗号化されていない暗号鍵読み込みプログラムが格納されており、これをCPUによって実行することにより、EEPROMに分散して保持される複数の分割鍵を読み出し、再構成することにより暗号鍵を復元し、暗号復号器に供給することができる。
ここでCPUとは、供給される命令コードを解釈して実行するプロセッサであって、そのアーキテクチャに限定されない。マイクロコンピュータやマイクロコントローラのCPUであってもよく、マルチプロセッサやDSP(Digital Signal Processor)であってもよい。
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、ROMの暗号化領域に格納されている、暗号化されたプログラムを、不正に読み出す攻撃に対するセキュリティレベルを向上することができる。
図1は、実施の一形態に係る半導体装置の構成を表すブロック図である。 図2は、実施の一形態に係る半導体装置におけるリセットルーチンの一例を示すフローチャートである。 図3は、実施の一形態に係るLSIの構成を表すブロック図である。 図4は、鍵格納アドレスによって分割鍵を格納するアドレスを指定する実施形態における、ROMとEEPROMのメモリマップである。 図5は、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定する実施形態における、ROMとEEPROMのメモリマップである。 図6は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する実施形態における、ROMとEEPROMのメモリマップである。 図7は、鍵書き込み用の認証及び鍵書き込み処理に伴う通信フローの一例を表す説明図である。 図8は、鍵書き込み用の認証及び鍵書き込み処理に伴う通信フローの別の例を表す説明図である。 図9は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する実施形態における、鍵書き込み処理に伴う通信フローの例を表す説明図である。 図10は、鍵格納アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループ)のフローチャートである。 図11は、鍵格納アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。 図12は、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループ)のフローチャートである。 図13は、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。 図14は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループ)のフローチャートである。 図15は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<暗号鍵を分割しEEPROMのシステム領域に分散して格納するマイコン>
半導体装置(9)であって、以下の各要素を備える。
第1動作モード(システムモード)と第2動作モード(ユーザモード)を有するCPU(CPU2、中央処理装置)。
前記第2動作モード(ユーザモード)において前記CPUからのアクセスが禁止される第1領域(システム領域41)と第2領域(ユーザ領域42)を有し電気的に書き換え可能な第1不揮発性メモリ(EEPROM4)。
暗号化された命令及び/又はデータである暗号化コードを格納可能な第3領域(暗号化領域32)と第4領域(非暗号化領域31)を有し電気的に書き換え不能な第2不揮発性メモリ(ROM3)。
暗号復号器(1)。
ここで、前記第1不揮発性メモリ(EEPROM4)は、前記暗号化コードを復号するための暗号鍵(11)を構成する複数の分割鍵(12)を保持するための、前記第1領域(システム領域41)内の分散する複数のアドレス領域を有する。
前記暗号復号器は、暗号鍵(11)を保持し、前記第2動作モード(ユーザモード)において、前記第2不揮発性メモリの前記第3領域(暗号化領域31)から読み出された前記暗号化コードを前記暗号鍵により復号して前記CPUへ供給可能である。
前記第2不揮発性メモリ(ROM3)は、前記第1動作モード(システムモード)において前記CPUによって実行されることにより、前記第1不揮発性メモリ(EEPROM4)に分散して保持される前記複数の分割鍵を読み出して再構成することにより前記暗号鍵を復元し、前記暗号復号器に供給する、暗号鍵読み込みプログラム(70)を、前記第4領域(非暗号化領域31)に保持する。
これにより、暗号化されたプログラムを不正に読み出す攻撃に対するセキュリティレベルを向上することができる。
〔2〕<暗号鍵書き込みプログラム>
項1において、前記半導体装置は通信インターフェース(5)をさらに備える。前記第2不揮発性メモリ(ROM3)は、暗号鍵書き込みプログラム(80)を、前記第4領域(非暗号化領域31)に保持する。前記暗号鍵書き込みプログラムは、前記CPUによって実行されることにより、前記通信インターフェースを介して外部から入力される前記暗号鍵を、前記複数の分割鍵に分割された状態で、前記第1不揮発性メモリ(EEPROM)の前記第1領域(システム領域41)内の前記複数のアドレス領域に分散して書き込むことができる。
これにより、半導体装置の製造後に、暗号鍵を分割・分散して半導体装置内に書き込むことができる。
〔3〕<暗号鍵書き込み前の認証>
項2において、前記暗号鍵書き込みプログラムにより、前記分割鍵が前記第1不揮発性メモリ(EEPROM)に書き込まれる前に、認証を行う認証ステップ(90)が実行可能に構成される。
これにより、第1不揮発性メモリ(EEPROM)に書き込まれた、分割された暗号鍵を、意図的に書き換えることにより、暗号鍵の真の値を探索する、攻撃に対するセキュリティレベルを、さらに向上することができる。
〔4〕<ユーザモードと鍵書き込み済みの場合の鍵書き込み処理の禁止>
項3において、前記分割鍵が前記第1不揮発性メモリ(EEPROM4)に書き込まれる前に、前記CPUが動作すべき動作モードが前記第1動作モード(システムモード)であることを判定するステップ(61)と、前記第1不揮発性メモリ(EEPROM4)に前記複数の分割鍵が既に書き込まれているか否かを判定するステップ(63)とが実行可能に構成される。前記CPUが動作すべき動作モードが前記第1動作モード(システムモード)であり且つ前記複数の分割鍵が未だ書き込まれていない場合に、前記認証ステップへ進むことが実行可能に構成される。
これにより、ユーザモードにおいて、また、暗号鍵が既に書き込まれた状態で、暗号鍵を意図的に書き換えることにより、暗号鍵の真の値を探索する、攻撃に対するセキュリティレベルを、さらに向上することができる。
〔5〕<暗号鍵書き込み済みフラグ>
項4において、前記第1不揮発性メモリ(EEPROM4)は、前記複数の分割鍵が既に書き込まれたか否かを示すデータを保持するための領域(14)を、前記第1領域(システム領域41)内に有する。
これにより、暗号鍵書き込み済みフラグ(14)を意図的に書き換えることにより、暗号鍵の真の値を探索する攻撃に対するセキュリティレベルを、さらに向上することができる。
〔6〕<複数ビットで構成される暗号鍵書き込み済みフラグ>
項5において、前記複数の分割鍵が既に書き込まれたか否かを示す前記データは、複数ビットで構成される。
これにより、暗号鍵書き込み済みフラグ(14)を意図的に書き換える攻撃に対するセキュリティレベルを、さらに向上することができる。
〔7〕<RSA暗号による認証>
項3から項6のうちのいずれか1項において、前記認証ステップは、保持されるRSAの公開鍵e及びNと期待値pについて、外部から入力されるcを用いて、前記cの前記e乗の前記Nについての剰余を算出し、前記pと比較するステップを含む。
これにより、暗号鍵書き込みの前提となる認証のセキュリティレベルを、さらに向上することができる。
〔8〕<暗号復号器への鍵の転送後にユーザプログラムに分岐>
項2において、前記第2不揮発性メモリ(ROM3)は、前記CPUが動作すべき動作モードが前記第2動作モード(ユーザモード)であると判定し(61)、前記暗号鍵読み込みプログラムが実行された後に、前記CPUを前記第2動作モード(ユーザモード)に遷移させるプログラム(60)を、前記第4領域(非暗号化領域31)に保持する。前記暗号鍵読み込みプログラムは、前記CPUによって前記第1動作モード(システムモード)で実行される。
これにより、分割された暗号鍵(12)が第1不揮発性メモリ(EEPROM4)から読み出され、復元された暗号鍵(11)が暗号復号器(1)に格納された後に、暗号化されたユーザプログラムの実行が可能になる。
〔9〕<不連続なアドレスに分散>
項1において、前記複数の分割鍵(12)を保持するための、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内の分散する前記複数のアドレス領域は、前記第1不揮発性メモリ(EEPROM4)における物理アドレスが不連続であり、且つ、前記CPUによってアクセスするための論理アドレスが不連続である。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間を広くすることができ、セキュリティレベルを、さらに向上することができる。
〔10〕<アドレス間隔の不均一なアドレスに分散>
項9において、前記複数の分割鍵(12)を保持するための、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内の分散する前記複数のアドレス領域に対応する複数の前記物理アドレスの間隔が不均一であり、及び/または、前記複数のアドレス領域に対応する複数の前記論理アドレスの間隔が不均一である。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
〔11〕<鍵アドレス格納アドレス>
項1において、前記第1不揮発性メモリ(EEPROM4)は、前記複数の分割鍵を格納するための前記複数のアドレス領域の複数の鍵アドレス値(15)を格納する鍵アドレス格納領域を、前記第1領域(システム領域41)に有し、前記第2不揮発性メモリ(ROM3)は、前記鍵アドレス格納領域のアドレス値(20)を、前記第4領域(非暗号化領域31)に保持する。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
〔12〕<基点アドレス+偏差で規定されるアドレスに分散>
項1において、前記複数の分割鍵(12)を保持するための、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内の分散する前記複数のアドレス領域に対応する複数のアドレスのそれぞれは、基点アドレス(16)と偏差(17)によって算出されることができる。前記第1不揮発性メモリ(EEPROM4)は、前記基点アドレスと前記偏差を保持するための、前記第1領域(システム領域41)内のアドレス領域を有する。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
〔13〕<シングルチップ>
項1から項12のうちのいずれか1項において、前記CPU(CPU2)と、前記第1不揮発性メモリ(EEPROM4)と、前記第2不揮発性メモリ(ROM3)と、前記暗号復号器(1)とが、単一の半導体基板上に形成される。
これにより、光学的観察、あるいは電気的プロービングによる信号の観測などによる攻撃に対するセキュリティレベルを向上することができる。
〔14〕<暗号鍵書き込み方法>
半導体装置(9)に対して暗号鍵を書き込む暗号鍵書き込み方法であって、前記半導体装置は、以下の構成を備える。
第1動作モード(システムモード)と第2動作モード(ユーザモード)を有するCPU(2)。
前記第2動作モード(ユーザモード)において前記CPUからのアクセスが禁止される第1領域(システム領域41)と第2領域(ユーザ領域42)を有し電気的に書き換え可能な第1不揮発性メモリ(EEPROM4)。
暗号化された命令及び/又はデータである暗号化コードを格納可能な第3領域(暗号化領域32)と第4領域(非暗号化領域31)を有し電気的に書き換え不能な第2不揮発性メモリ(ROM3)。
前記第2動作モード(ユーザモード)において、前記第2不揮発性メモリ(ROM3)の前記第3領域(暗号化領域32)から読み出された前記暗号化コードを暗号鍵により復号して前記CPUへ供給可能な暗号復号器(1)。
通信インターフェース(5)。
前記暗号鍵書き込み方法は、前記通信インターフェースを介して外部から暗号鍵を入力する第1ステップ(81)と、前記入力された前記暗号鍵を、複数の分割鍵に分割された状態で、前記第1不揮発性メモリ(EEPROM)の前記第1領域(システム領域)内の複数のアドレス領域に分散して書き込む第2ステップ(80)とを含む。
これにより、暗号化されたプログラムを不正に読み出す攻撃に対するセキュリティレベルを向上することができる。
〔15〕<動作モードと鍵書き込みフラグの確認+認証>
項14において、前記第2ステップより前に、前記CPUが動作すべき動作モードが前記第1動作モード(システムモード)であることを確認する第3ステップ(61)と、前記第1不揮発性メモリ(EEPROM)の前記複数のアドレス領域に、前記複数の分割鍵が書き込まれていないことを確認する第4ステップ(63)と、暗号鍵の書き込みを認証する第5ステップ(90)をさらに含む。
これにより、ユーザモードにおいて、また、暗号鍵が既に書き込まれた状態で、暗号鍵を意図的に書き換えることにより、暗号鍵の真の値を探索する、攻撃に対するセキュリティレベルを、さらに向上することができる。
〔16〕<暗号復号器に鍵を読込み後ユーザプログラムに分岐>
項14において、暗号鍵書き込み方法は、第6ステップ(70)と第7ステップ(62)をさらに含む。
前記第6ステップ(70)は、前記第3ステップにより前記CPUが動作すべき動作モードが前記第2動作モード(ユーザモード)であると判定されたとき、前記第1動作モード(システムモード)で、前記第1不揮発性メモリ(EEPROM4)に分散して保持される前記複数の分割鍵を読み出し、再構成することにより前記暗号鍵を復元し、前記暗号復号器に供給する。
前記第7ステップ(62)は、前記CPUの動作モードを前記第2動作モード(ユーザモード)に遷移させる。
これにより、分割された暗号鍵(12)が第1不揮発性メモリ(EEPROM4)から読み出され、復元された暗号鍵(11)が暗号復号器(2)に格納された後に、暗号化されたユーザプログラムの実行が可能になる。
〔17〕<不連続なアドレスに分散>
項14において、前記複数の分割鍵(12)を保持するための、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内の分散する前記複数のアドレス領域は、前記第1不揮発性メモリにおける物理アドレスが不連続であり、且つ、前記CPUによってアクセスするための論理アドレスが不連続である。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間を広くすることができ、セキュリティレベルを、さらに向上することができる。
〔18〕<アドレス間隔の不均一なアドレスに分散>
項17において、前記複数の分割鍵(12)を保持するための、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内の分散する前記複数のアドレス領域に対応する複数の前記物理アドレスの間隔が不均一であり、及び/または、前記複数のアドレス領域に対応する複数の前記論理アドレスの間隔が不均一である。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
〔19〕<鍵格納アドレス>
項14において、暗号鍵書き込み方法は、第8ステップをさらに含む。
前記第8ステップは、鍵格納アドレス(15、19)を、前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)または前記第2不揮発性メモリ(ROM3)の前記第4領域(非暗号化領域31)から読み出す。ここで、前記鍵格納アドレス(15、19)は、前記複数の分割鍵(12)を前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内に分散して格納するための、前記複数のアドレス領域のそれぞれを示す。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
〔20〕<基点アドレス+偏差で規定されるアドレスに分散>
項14において、前記複数の分割鍵(12)を前記第1不揮発性メモリ(EEPROM4)の前記第1領域(システム領域41)内に分散して格納するための、前記複数のアドレス領域のそれぞれを示す鍵格納アドレスは、基点アドレス(16)と偏差(17)によって算出されることができる。暗号鍵書き込み方法は、前記通信インターフェースを介して外部から前記基点アドレスと前記偏差を、前記通信インターフェースを介して外部から入力する第9ステップ(83、84)をさらに含む。
これにより、第1不揮発性メモリ(EEPROM4)の第1領域(システム領域41)の内容が、攻撃によってダンプ(ダンプアタック)された場合であっても、暗号鍵の値を探索する空間をさらに広くすることができ、セキュリティレベルを、さらに向上することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
〔実施形態1〕
図1は、実施の一形態に係る半導体装置の構成を表すブロック図である。
暗号復号器1と、CPU2と、電気的に書き換え不能な不揮発性メモリであるROM3と、電気的に書き換え可能な不揮発性メモリであるEEPROM4が、アドレスバス7とデータバス8を介して、互いに接続されている。CPU2は、システムモードとユーザモードを含むいくつかの動作モードで動作することができる。ROM3は、暗号化された命令及び/又はデータである暗号化コードを格納する、暗号化領域32と、暗号化されていない命令及び/又はデータを格納する、非暗号化領域31を備える。EEPROM4は、システムモードではCPU2からのアクセスが許されるが、ユーザモードではCPU2からのアクセスが禁じられる、システム領域41と、どちらのモードでもCPU2からのアクセスが許されるユーザ領域42を備える。
EEPROM4のシステム領域41には、ROM3の暗号化領域31に格納されている暗号化コードを復号するための暗号鍵11を構成する複数の分割鍵12を格納するための、複数のアドレス領域が設けられている。ROM3の非暗号化領域31には、暗号鍵読み込みプログラム70が格納されている。システムモードにおいてCPU2によって暗号鍵読み込みプログラム70が実行されることにより、EEPROM4に分散して保持される複数の分割鍵12を読み出して再構成することにより暗号鍵11を復元し、暗号復号器1に供給する。暗号復号器1は、暗号鍵11を保持し、ユーザモードにおいて、ROM3の暗号化領域32から読み出された暗号化コードを暗号鍵11により復号してCPU2に供給する。
保護すべきユーザプログラムは、暗号鍵11を使って予め暗号化し、ROM3の暗号化領域32に格納しておく。ROM3の暗号化領域32の内容を解読したとしても、正しい暗号鍵11が知られない限り、保護すべきユーザプログラムの内容の秘匿性は保たれる。暗号鍵11は、複数のビット列である分割鍵に分割され、EEPROM4のシステム領域に分散して格納される。分割し分散させることにより、再構成するための組合せの数を大きくすることができ、セキュリティレベルを向上することができる。分割し分散して格納されている分割鍵12は、電源投入後に実行される暗号鍵読み込みプログラム70によって、EEPROM4から読み出され、再構成された暗号鍵11が暗号復号器1に書き込まれる。その後は、ROM3の暗号化領域32に格納されているユーザプログラムは、暗号復号器1によって暗号鍵11を使って復号され、CPU2に供給されることにより、実行可能となる。
これにより、暗号化されたプログラムを不正に読み出す攻撃に対するセキュリティレベルを向上することができる。EEPROM4のシステム領域41は、ユーザモードではアクセスができないので、ダンプアタックから守られている。仮にEEPROM4の内容がダンプされたとしても、暗号鍵は分割され、分散して格納されるので、暗号鍵の探索空間を大きくして、セキュリティレベルを向上することができる。
ROM3やEEPROM4などのメモリに格納される命令コードやデータは、暗号化とは別にスクランブル処理を施されていても良い。その場合には、メモリからデータバス8と暗号復号器1を経てCPU2に至る経路上に、デスクランブル回路を挿入すればよい。
暗号復号器1は、暗号の復号を行うか、入力されたコードをそのままCPU2に供給するかを指定するイネーブルビット13を備えると良い。暗号鍵読み込みプログラム70が実行されるのは、当然ながら、暗号復号器1に暗号鍵11が設定される前である。暗号鍵読み込みプログラム70のように、暗号化されていないプログラムを実行する場合には、イネーブルビット13により、暗号復号器1に復号動作をさせないように設定する。
暗号復号器1は、暗号鍵11を保持するために、レジスタを備えると良い。このとき、レジスタの初期値、即ち電源投入直後のリセット値を、暗号鍵11の初期値として利用することができる。暗号鍵読み込みプログラム70のような、正しい暗号鍵11によって暗号化されていては実行できないプログラムを、レジスタのリセット値である、暗号鍵11の初期値を使って暗号化しておく。上述のイネーブルビット13を設ける代わりに、正しい暗号鍵11が書き込まれるまでの間、暗号復号器1は上記レジスタの初期値を暗号鍵として使った復号を行うようにすることができる。この場合には、暗号鍵読み込みプログラム70は、途中まで暗号鍵11の初期値を使って暗号化しておき、正しい暗号鍵11の書き込みステップの直後から、正しい暗号鍵11で暗号化しておく必要がある。
暗号鍵読み込みプログラム70は、半導体装置の電源投入直後に動作するリセットルーチン60から呼び出される。なお、このリセットルーチンも、暗号鍵読み込みプログラム70と同様に、暗号復号器1に暗号鍵11が設定される前に実行されるため、上述のような簡易な暗号化が施されているか、暗号化されていないことが必要である。リセットルーチン60もROM3の非暗号化領域31に格納されている。
EEPROM4は、システム領域41に、分割鍵12が既に書き込まれているか否かを示す、鍵書き込み済みフラグ14を格納する領域を備えるのが好適である。その作用および効果は、以下のリセットルーチンについての説明に含めて述べる。
図2は、実施の一形態に係る半導体装置におけるリセットルーチンの一例を示すフローチャートである。
リセットルーチン60は、パワーオンリセットによって起動される。まず、CPU2が動作すべき動作モードを判定する(ステップ61)。CPU2が動作すべき動作モードは、一般のマイコンでは、端子の状態で指定されるが、ICカードに用いられるような高いセキュリティレベルが要求されるマイコンでは、そのような端子を設けることができないので、EEPROM4のような不揮発性メモリなどによって、指定される。この判定(ステップ61)自体は、システムモードで動作する。
CPU2が動作すべき動作モードがユーザモードであるとき、鍵読み込み処理70_2を行った後、ユーザモードへ切り替える(ステップ62)。鍵読み込み処理70_2により、EEPROM4から分割鍵12が読み出され、再構成された暗号鍵11が暗号復号器1に書き込まれる。その後は、ROM3の暗号化領域32に格納されているユーザプログラムは、暗号復号器1によって暗号鍵11を使って復号され、CPU2に供給されることにより、ユーザモードで実行可能となる。
CPU2が動作すべき動作モードがシステムモードであるとき、EEPROM4への分割鍵12の書き込みが既になされているか、まだなされていないかが判定される(ステップ63)。このとき、鍵書き込み済みフラグ14を読み出して判断すると良い。分割鍵12がEEPROM4へ書き込み済みの場合、鍵読み込み処理70_1を行うことにより、分割鍵12が読み出され、再構成された暗号鍵11が暗号復号器1に書き込まれる。その後、システムモード用の認証を行い(ステップ64)、認証された場合(ステップ65)にはシステムモードの動作を開始するが、認証に失敗した場合(ステップ65)には、エラー処理(ステップ66_1)を行って、システムをリセットする。システムモードによる動作を開始する前に認証を行うことにより、セキュリティレベルを向上することができる。
CPU2が動作すべき動作モードがシステムモードで、EEPROM4への分割鍵12の書き込みがまだなされていないかと判定(ステップ63)された場合には、鍵書き込み用認証(ステップ90)が行われる。その結果、認証された場合(ステップ67)には、鍵書き込み処理(ステップ80)を行った後に、システムをリセットする。認証に失敗した場合(ステップ67)には、エラー処理(ステップ66_2)を行って、システムをリセットする。
鍵書き込み処理(ステップ80)は、外部から暗号鍵11を受信して、複数のビット列に分割して分割鍵12を生成し、EEPROM4のシステム領域41に分散して書き込む。予め外部で暗号鍵11を複数のビット列に分割することによって生成した複数の分割鍵12を、EEPROM4のシステム領域41に分散して書き込んでもよい。これにより、半導体装置の製造後に、暗号鍵を分割・分散して半導体装置内に書き込むことができる。
以上述べたように、ユーザモードのとき、鍵が既に書き込み済みのとき、また、鍵書き込み用の認証(ステップ90)で認証に失敗した場合には、鍵書き込み処理(ステップ80)が実行されない構成となっている。これにより、EEPROM4に書き込まれた分割鍵12を、1つずつ意図的に書き換えることにより、暗号鍵の真の値を探索するような、攻撃に対するセキュリティレベルを向上することができる。
鍵書き込み済みフラグ14は、1ビットで構成されてもよいが、秘密に管理された複数ビットで構成されるのがより好適である。これにより、暗号鍵書き込み済みフラグ14を意図的に書き換える攻撃に対するセキュリティレベルを向上することができる。
暗号鍵11の分割と分散の方法について、定量的に考察する。
暗号のセキュリティレベルを表す指標の一つに、暗号鍵の探索空間の大きさがある。例えば、暗号鍵が128ビットの場合、2128通りの組合せの中に必ず真の暗号鍵が含まれるので、探索空間は2128である。
これに対し、分割鍵12が書き込まれたEEPROM4全体が、メモリダンプによって読み出された場合を想定する。このとき、EEPROM4のメモリ空間から分割鍵12を探索して再構成するための探索空間を求める。たとえば、256KBのメモリ空間に128bit(16B)の鍵を1ワード(2B)づつのランダムなアドレス領域に格納する場合、128K種類のアドレスから8個のアドレスを順番の違いも考慮した組み合わせで選択することとなるので、おおよそ2(17×8)通り、2136通りの組み合わせとなる。これは、128ビットの暗号鍵が原理的に持っている探索空間2128よりも大きいので、セキュリティレベルは低下していない。一方、たとえば、128bit(16B)の鍵を256KBのメモリ空間の一箇所にまとめて格納すると、256KBのメモリ空間から16Bを切り出すときの切り出し方の組み合わせは、218通りとなる。もともとの暗号鍵が有している探索空間の2128に比べると、探索空間が大幅に減少するので、セキュリティレベルは著しく低下する。
暗号鍵を分割する分割数は、鍵を格納するメモリの実アドレス空間の広さをパラメータとし、鍵の探索空間を基準として、いくつに分割すべきかを決めることができる。たとえば、メモリの実アドレス空間の広さをRバイト、鍵の分割数をLとし、鍵のビット長をM、分割された部分鍵のi番目の部分鍵のビット長をmiとすると、探索空間は、
Figure 0005984625
と表現できる。通常、実メモリ空間は、鍵のビット長に比べて大きいので、
Figure 0005984625
と考えることができ、
Figure 0005984625
と近似できる。また、鍵を同じビット長に分割する場合、
Figure 0005984625
となる。ここで、
Figure 0005984625
を満たす場合は、そもそも鍵がメモリの実アドレス空間のどこに格納されているかを試すよりも、鍵を全数探索した方が早いことを意味する。
こうしたケースは、鍵のビット長Mが短い場合に発生する。通常は、実メモリ空間は十数ビットのアドレスで表現できるサイズであるので、分割数Lが小さい場合はそうしたケースは発生しない。したがって、ダンプアタックに対して、探索空間をSビット以上にしたい場合、
Figure 0005984625
を満たすように分割数Lを設定すればよい。Rは1よりも大きいと仮定してよいので、
Figure 0005984625
となる。また、Sは現在の計算機の能力から、80〜128程度が必要とされている。したがって、たとえば、256KBの実メモリ空間があった場合、
Figure 0005984625
となり、5以上に分割すればよいことがわかる。
本実施形態では、ユーザモードではアクセスができないEEPROM4のシステム領域に、分割鍵を格納することにより、ダンプアタックから守っている。さらに暗号鍵の分割数を上述のように適切に選ぶことにより、仮にセキュリティが破られてダンプアタックを許したとして、探索空間を十分大きく保つことができる。
上述の通りの鍵の分割による大きな探索空間を実現するためには、分割鍵はメモリ上の不連続なアドレスに格納すると良い。分割鍵が連続するアドレスに格納され、攻撃者がその事実を知っていると、分割した効果が失われるからである。また、不連続なアドレスに格納しても、均等な間隔であった場合、攻撃者がその事実を知っていると、分割した効果が失われるので、アドレス間隔は不均一であることが望ましい。このときのアドレスとは、メモリの物理アドレスとCPUからみた論理アドレスを指す。物理アドレスと論理アドレスの両方のアドレスで不連続であることが望ましいが、一方のみ不連続でも、セキュリティレベルの向上効果はある。
図1に示した半導体装置は、単一の半導体基板上に、公知の集積回路製造方法を用いて形成することができる。
図3は、実施の一形態に係るLSIの構成を表すブロック図である。LSI9には、例えば単一のシリコン基板上に、暗号復号器1、CPU2、ROM3、EEPROM4、UART5、及びRAM6が、アドレスバス7とデータバス8を介して互いに接続して形成されている。UART5は、汎用非同期送受信機(Universal Asynchronous Receiver Transmitter)である。同期式送受信機が追加された、汎用同期・非同期送受信機USART(Universal Synchronous and Asynchronous Receiver Transmitter)であっても良い。上記通信インターフェースはUART、USARTに限らず、如何なる通信インターフェースでも良い。LSI9は、VCCとGNDからなる電源、リセット、クロック、及び、UART5の信号端子を端子として備える。また、図示はしないが予備の端子を数本備えてもよい。オンチップ発振器を備えればクロック端子を、パワーオンリセット回路をオンチップに備え、リセットしてパワーオンリセットのみを想定するシステム設計をすれば、リセット端子をも省略することができる。必要最小限の端子のみを備えることにより、LSI9内部の状態を観察あるいは電気的に観測することが困難となり、光学的観察、あるいは電気的プロービングによる信号の観測などによる攻撃に対するセキュリティレベルを向上することができる。
ROM3の内容を暗号化し、CPU2でROM3上のプログラムを実行する際にリアルタイムで復号化を行なうセキュアマイコンにおいて、復号用の暗号鍵をROMやチップ上の回路としてあらかじめ設定しておくのではなく、EEPROMなどの電気的に書き換え可能な不揮発性メモリ上に製造後に書き込むことで、リバースエンジニアリングによる鍵漏洩のリスクを減らす。チップの製造直後は、復号用の暗号鍵を書き込む処理以外は、暗号化された状態で格納されており、CPU2で実行することが出来ない。暗号鍵が書き込まれた後に利用できるようになる。また、ユーザに出荷される場合には、暗号鍵の設定などのROM3の非暗号化領域31の内容については、ユーザモードではアクセスできないようにすることができる。
暗号鍵を分割し、または既に分割された状態で、EEPROM4のシステム領域41に分散して書き込むためには、暗号鍵の書き込みプログラム80を実行する。鍵書き込みプログラム80は、暗号鍵の書き込み前に実行されなければならないから、必然的にその命令コードは暗号化することができず、ROM3の非暗号化領域31に格納される。
暗号鍵書き込みプログラム80を、LSI上に格納する代わりに、出荷する前に、RAM6またはEEPROM4に一旦書き込み、そのプログラムを実行して暗号鍵を分割して書き込み、RAM6またはEEPROM4に書き込んだ暗号鍵書き込みプログラム80を消去してから出荷することもできる。これにより、暗号鍵書き込みプログラム80の内容を知る攻撃からは防御される。一方、RAM6またはEEPROM4上の暗号化されていないプログラムの実行を許す設定を、LSIに残すこととなり、その面での脆弱性を生じる。
〔実施形態2〕<鍵格納アドレスによる分割鍵を格納するアドレスの指定>
図4は、鍵格納アドレスによって分割鍵を格納するアドレスを指定する実施形態における、ROMとEEPROMのメモリマップである。CPU2から見た論理アドレス空間内の異なる領域に、それぞれ割り付けられている。ROM3は非暗号化領域31と暗号化領域32を持ち、EEPROM4はシステム領域41とユーザ領域42を持つ。
鍵格納アドレス19_1、19_2、19_3と鍵書き込み済フラグ格納アドレス18は、それぞれ、EEPROM4のシステム領域41における、分割鍵12_1、12_2、12_3と鍵書き込み済みフラグ14を格納すべきアドレスの値であり、ROM3の非暗号化領域に格納されている。リセットルーチン60は、図2に示したフローチャートの通り、ステップ63で鍵書き込み済みか否かの判定を行う。このとき、鍵書き込み済フラグ格納アドレス18に基づいて、EEPROM4の鍵書き込み済みフラグ14を読み出し、値を判定する。鍵書き込み処理80は、鍵格納アドレス19_1、19_2、19_3に基づいて、EEPROM4に分割鍵12_1、12_2、12_3を書き込む。鍵読み込み処理70_1、70_2は、鍵格納アドレス19_1、19_2、19_3に基づいて、EEPROM4から分割鍵12_1、12_2、12_3を読み出し、暗号復号器1に書き込む。
図10は、鍵格納アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループ)のフローチャートである。EEPROM4上の第i部分鍵12_iをCPU2の汎用レジスタに読み出し(ステップ71)、暗号復号器1の鍵レジスタ内の第i部分鍵12_iに対応するレジスタに、汎用レジスタに読み出した第i部分鍵12_iを書き込む(ステップ72)。暗号鍵の分割数をLとするとき、iを1からLまで繰り返すループによって、ステップ71と72を繰り返し実行する。
図11は、本実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。図10に示した鍵読み込み処理70では、ループによってステップ71と72を繰り返し実行するのに対し、ループを用いず、EEPROM4からの部分鍵読み出し(ステップ71)と暗号復号器1への分鍵書き込み(ステップ72)をL個分の命令コードを順次記述した命令コードによって実行するものである。ループを制御するレジスタ値をレーザ照射等により読み出し値を一時的に破壊し、ループ回数を減らし、鍵の位置部分のみを書き換えるアタックに対して、ループ制御を無くすることでセキュリティレベルを向上することができる。
〔実施形態3〕<鍵アドレス格納アドレスで指定される鍵アドレスを介して分割鍵を格納するアドレスを指定>
暗号鍵書き込みプログラム80はROM3の非暗号化領域31に格納されるので、ROM3を光学的に観察するなどの攻撃を受けることにより、暗号鍵書き込みプログラム80が攻撃者に知られる恐れを否定することができない。このとき、実施形態2で述べた分割鍵を格納するアドレスの指定方法では、ROM3を観察することにより、暗号鍵書き込みプログラム80の内容を解析して分割鍵12が格納されるEEPROM4のアドレスが探知される恐れがある。分割鍵12が格納されているのはEEPROM4のシステム領域41であるので、ユーザからはアクセスができないように設計されているとはいえ、分割鍵12の格納されているアドレスが探知されることは、セキュリティレベルの低下である。
そこで、暗号鍵書き込みプログラム80の内容の解析によっても、深刻なセキュリティレベルの低下を招かない、分割鍵を格納するアドレスの指定方法を、実施形態3及び4に示す。
図5は、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定する実施形態における、ROMとEEPROMのメモリマップである。CPU2から見た論理アドレス空間内の異なる領域に、それぞれ割り付けられている。ROM3は非暗号化領域31と暗号化領域32を持ち、EEPROM4はシステム領域41とユーザ領域42を持つ。
分割鍵12_1、12_2、12_3を書き込むアドレスは、鍵アドレス15_1、15_2、15_3として、EEPROM4のシステム領域41に格納される。鍵アドレス15_1、15_2、15_3を格納すべきアドレスは、鍵アドレス格納アドレス20_1、20_2、20_3として、ROM3の非暗号化領域に格納されている。鍵書き込み済みフラグ14を格納すべきアドレスは、実施形態2と同様に、鍵書き込み済フラグ格納アドレス18によって指定される。リセットルーチン60は、図2に示したフローチャートの通り、ステップ63で鍵書き込み済みか否かの判定を行う。このとき、実施形態2と同様に、鍵書き込み済フラグ格納アドレス18に基づいて、EEPROM4の鍵書き込み済みフラグ14を読み出し、値を判定する。鍵アドレス15_1、15_2、15_3は、例えばUART5を介して外部から入力され、鍵アドレス格納アドレス20_1、20_2、20_3で指定される、EEPROM4のシステム領域41に、書き込まれる。鍵書き込み処理80は、鍵アドレス15_1、15_2、15_3に基づいて、EEPROM4に分割鍵12_1、12_2、12_3を書き込む。このとき、分割鍵12_1、12_2、12_3も、例えばUART5を介して外部から入力される。鍵読み込み処理70_1、70_2は鍵アドレス15_1、15_2、15_3に基づいて、EEPROM4から分割鍵12_1、12_2、12_3を読み出し、暗号復号器1に書き込む。
EEPROM4は、電気的な状態の変化で情報を記憶するので、光学的な観察によっては情報を読み取ることができない。このため、ROM3よりもセキュリティレベルが高い。本実施形態においては、分割鍵12_1、12_2、12_3を格納すべきアドレスである、鍵アドレス15_1、15_2、15_3を、EEPROM4のシステム領域41にすることにより、実施形態1よりもセキュリティレベルを向上することができる。
図12は、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定する実施形態における、鍵読み込み処理(ループ)のフローチャートである。EEPROM4上に格納された第i部分鍵12_iが格納されているアドレスである鍵アドレス15_iをCPU2の汎用レジスタに読み出す(ステップ75)。次に、EEPROM4の、その汎用レジスタが指し示すアドレスから第i部分鍵12_iをCPU2の汎用レジスタに読み出す(ステップ71)。汎用レジスタに読み出した第i部分鍵12_iは、暗号復号器1の鍵レジスタ内の第i部分鍵12_iに対応するレジスタに書き込む(ステップ72)。暗号鍵の分割数をLとするとき、iを1からLまで繰り返すループによって、ステップ75、71と72を繰り返し実行する。
図10に示した、実施形態2における鍵読み込み処理と比較すると、ステップ71がレジスタ間接アドレッシングによるロード命令になっており、その汎用レジスタの値を、その前に実行されるステップ75のロード命令によって決めている。
図13は、本実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。図12に示した鍵読み込み処理70では、ループによってステップ75、71と72を繰り返し実行するのに対し、ループを用いず、ステップ75、71と72をL個分の命令コードを順次記述した命令コードによって実行するものである。実施形態2の場合と同様に、ループを制御するレジスタ値をレーザ照射等により読み出し値を一時的に破壊し、ループ回数を減らし、鍵の位置部分のみを書き換えるアタックに対して、ループ制御を無くすることでセキュリティレベルを向上することができる。
〔実施形態4〕<基点アドレスと偏差によって分割鍵を格納するアドレスを指定>
実施形態3では、分割鍵を格納するアドレスを指定するのに、鍵アドレス格納アドレスによって鍵アドレスを指定し、その鍵アドレスによって分割鍵を格納するアドレスを指定するという、間接的なポインタを仲介させることによって、追跡を困難にし、セキュリティレベルを向上する。これに代えて、分割鍵を格納するアドレスを指定するのに、何らかの関数を用いることによって追跡を困難にし、セキュリティレベルを向上する。例えば、分割鍵を格納するアドレスを、基点アドレスと偏差から算出する。
図6は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する、本実施形態における、ROMとEEPROMのメモリマップである。CPU2から見た論理アドレス空間内の異なる領域に、それぞれ割り付けられている。ROM3は非暗号化領域31と暗号化領域32を持ち、EEPROM4はシステム領域41とユーザ領域42を持つ。
分割鍵12_1、12_2、12_3を書き込むアドレスは、それぞれ、基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3の和によって与えられる。基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3は、EEPROM4のシステム領域41に格納される。基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3を格納すべきアドレスは、それぞれ、基点アドレス格納アドレス21_1、21_2、21_3と偏差格納アドレス22_1、22_2、22_3として、ROM3の非暗号化領域に格納されている。鍵書き込み済みフラグ14を格納すべきアドレスは、実施形態2、3と同様に、鍵書き込み済フラグ格納アドレス18によって指定される。リセットルーチン60は、図2に示したフローチャートの通り、ステップ63で鍵書き込み済みか否かの判定を行う。このとき、実施形態2、3と同様に、鍵書き込み済フラグ格納アドレス18に基づいて、EEPROM4の鍵書き込み済みフラグ14を読み出し、値を判定する。基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3は、例えばUART5を介して外部から入力され、基点アドレス格納アドレス21_1、21_2、21_3と偏差格納アドレス22_1、22_2、22_3で指定される、EEPROM4のシステム領域41に、書き込まれる。
鍵書き込み処理80は、基点アドレス格納アドレス21_1、21_2、21_3と偏差格納アドレス22_1、22_2、22_3で指定される、EEPROM4のシステム領域41から、基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3を読み出し、分割鍵を格納すべきアドレスを算出する。それに基づいてEEPROM4に分割鍵12_1、12_2、12_3を書き込む。
図9は、本実施形態における、鍵書き込み処理に伴う通信フローの例を表す説明図である。図1または図3に示したLSIなどの半導体装置であるチップは、UART5などの通信インターフェースを介してカードリーダライタと接続されている。カードリーダライタは、一般のユーザが使うカードリーダライタではなく、チップをシステムモードで動作させることができ、EEPROM4のシステム領域への書き込みが可能な特殊なものである必要がある。同等の機能があればよく、LSIのロジックテスタなどでもよい。
基点アドレス16_1と偏差17_1と、それに対応する分割鍵12_1は、それぞれ、基点アドレス83_1、偏差84_1、分割鍵81_1として、カードリーダライタから例えばUART5などの通信インターフェースを介してチップに送信される。チップは、基点アドレス16_1と偏差17_1を加算することによって格納すべきアドレスを求め、そのアドレスに分割鍵12_1を書き込む。書き込みが完了すると、鍵書き込み完了ステータス82_1を、カードリーダライタに送信する。これを分割数であるL回繰り返す。
鍵読み込み処理70_1、70_2は基点アドレス格納アドレス21_1、21_2、21_3と偏差格納アドレス22_1、22_2、22_3で指定される、EEPROM4のシステム領域41から、基点アドレス16_1、16_2、16_3と偏差17_1、17_2、17_3を読み出し、分割鍵を格納すべきアドレスを算出する。それに基づいてEEPROM4から分割鍵12_1、12_2、12_3を読み出し、暗号復号器1に書き込む。
実施形態2、3と異なり、分割鍵12_1、12_2、12_3を格納すべきアドレスそのもの(実施形態2では鍵格納アドレス19_1、19_2、19_3、実施形態3では鍵アドレス15_1、15_2、15_3)は、装置上のどのメモリにも格納されていない。これにより、EEPROM4システム領域41の内容までもが、攻撃によってダンプされた場合であっても、分割鍵12_1、12_2、12_3を格納すべきアドレスを容易に求めることができず、セキュリティレベルが向上する。
分割鍵12_1、12_2、12_3を格納すべきアドレスを算出するための関数は、任意に決めることができる。分割鍵ごとに異なる基点アドレスによって指定する実施形態を示したが、一つの基点アドレスと複数の偏差によって定めても良い。その他、如何なる関数によって算出するものとしてもよい。関数自体はROM3の非暗号化領域に、プログラムの一部として格納されるが、そのパラメータ(本実施形態では基点アドレスと偏差)は、EEPROM4のシステム領域41に格納するのが好ましい。
図14は、基点アドレスと偏差によって分割鍵を格納するアドレスを指定する、本実施形態における、鍵読み込み処理(ループ)のフローチャートである。EEPROM4上に格納された第i部分鍵12_iの基点アドレス16_iをCPU2の汎用レジスタ1に読み出し(ステップ73)、偏差17_iをCPU2の汎用レジスタ2に読み出す(ステップ74)。次に、汎用レジスタ1と汎用レジスタ2の和を求め、汎用レジスタ3に格納する(ステップ75)。これが、第i部分鍵12_iを格納すべきアドレスである。次に、その汎用レジスタ3が指し示すアドレスのEEPROM4から第i部分鍵12_iをCPU2の汎用レジスタ4に読み出す(ステップ71)。汎用レジスタ4に読み出した第i部分鍵12_iは、暗号復号器1の鍵レジスタ内の第i部分鍵12_iに対応するレジスタに書き込む(ステップ72)。暗号鍵の分割数をLとするとき、iを1からLまで繰り返すループによって、ステップ73、74、75、71と72を繰り返し実行する。
図15は、本実施形態における、鍵読み込み処理(ループアンローリング)のフローチャートである。図14に示した鍵読み込み処理70では、ループによってステップ73、74、75、71と72を繰り返し実行するのに対し、ループを用いず、ステップ73、74、75、71と72をL個分の命令コードを順次記述した命令コードによって実行するものである。実施形態2、3の場合と同様に、ループを制御するレジスタ値をレーザ照射等により読み出し値を一時的に破壊し、ループ回数を減らし、鍵の位置部分のみを書き換えるアタックに対して、ループ制御を無くすることでセキュリティレベルを向上することができる。
〔実施形態5〕<認証>
鍵書き込み用認証(ステップ90)について、さらに詳しく説明する。
認証の方法にはいくつかの方法がある。たとえば、認証用の秘密の入力データのハッシュ値を期待値としてROMに格納しておき、認証を行なう際には、ハッシュ値を生成するための入力データを認証用に用いる方法が考えられる。また別の方法としては、ブロック暗号の鍵情報を認証用の秘密情報とし、認証用のブロック暗号の鍵を用いて、平文を暗号化し、平文と暗号化文の組をROM内に格納しておき、認証の際には鍵情報を入力値とし、ROM内に格納された平文を入力された鍵で暗号化し、ROM内に格納された暗号化文が得られるかを検査する方法もある。
公開鍵暗号を用いた方法では、DSAの考え方を用いて、RSAの公開鍵、e、Nと、期待値pをROM内に格納しておき、外部からp=Ce mod Nを満たすような値Cを入力する。認証時には、Ce mod Nを計算し、期待値pと等しくなることを確認する。Cの値は、RSAの秘密素数dを用いて、C=pd mod Nで計算が出来る。pからCを求めるのは、RSA暗号を解くことと等価であるため、鍵のビット数が十分に長い場合、現実的な計算時間では求めることが出来ない。これらの方法によればいずれも、第三者がROM内の情報からは期待値を容易に求めることが出来ない。このため、ROMに対するダンプアタックによっては、セキュリティレベルは損なわれない。
図7は、鍵書き込み用の認証及び鍵書き込み処理に伴う通信フローの一例を表す説明図である。
図1または図3に示したLSIなどの半導体装置であるチップは、UART5などの通信インターフェースを介してカードリーダライタと接続されている。カードリーダライタは、一般のユーザが使うカードリーダライタではなく、チップをシステムモードで動作させることができ、EEPROM4のシステム領域への書き込みが可能な特殊なものである必要がある。同等の機能があればよく、LSIのロジックテスタなどでもよい。
カードリーダライタは、予めc = pd mod Nを計算し、cを認証用データ93としてUARTなどの通信インターフェースを介してチップに送信する。チップはROM3内に、p, e, Nを保持している。認証用データ93としてcを受信すると、p' = ce mod Nを計算する(ステップ90)。p' = pであれば認証成功である(ステップ67)。認証成功ステータス94をカードリーダライタに送信して、鍵書き込み用認証処理を完了して鍵書き込み処理(ステップ80)に移る。p'≠pであれば認証失敗であり、エラー処理(ステップ66_2)を行って終了(リセット)する。
鍵書き込み処理(ステップ80)では、ROM3の暗号領域の暗号鍵11の情報81を、カードリーダライタからチップに送信する。暗号鍵11全体を一括して送信しても良いし、予め分割して複数の分割鍵12として送信しても良い。チップは、鍵の書き込み処理を行い、鍵書き込み済みフラグ14を設定した後、鍵書き込み完了ステータス82をカードリーダライタに送信し、鍵書き込み処理(ステップ80)を完了する。
これにより、暗号鍵書き込みの前提となる認証のセキュリティレベルを、さらに向上することができる。
図8は、鍵書き込み用の認証及び鍵書き込み処理に伴う通信フローの別の例を表す説明図である。
カードリーダライタは、認証開始コマンド91を、UARTなどの通信インターフェースを介してチップに送信する。チップはROM3内に、eとNを保持しているが、期待値pは保持していない。チップは認証開始コマンド91を受信すると、期待値として使用する乱数pを生成し、認証用乱数92としてカードリーダライタに送信する。カードリーダライタは、受信した認証用乱数p(92)を用い、c = pd mod Nを計算し、cを認証用データ93としてチップに送信する。チップは、認証用データ93としてcを受信すると、p' = ce mod Nを計算する(ステップ90)。p' = pであれば認証成功である(ステップ67)。認証成功ステータス94をカードリーダライタに送信して、鍵書き込み用認証処理を完了して鍵書き込み処理(ステップ80)に移る。p'≠pであれば認証失敗であり、エラー処理(ステップ66_2)を行って終了(リセット)する。その後、図7の説明と同様の鍵書き込み処理(ステップ80)を行う。
認証の期待値であるpをROM3に格納するのではなく、認証処理の度に内部で乱数として生成するので、セキュリティレベルはより高い。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、実施形態2から4及び図4から6においては、暗号鍵の分割数を3として説明したが、これに制限されるものではない。暗号鍵の分割数は実施形態1で説明した通り、適切に定めればよい。また、図3を用いて単一の半導体チップ上に形成する実施形態について説明したが、これに限定されるものではなく、例えば複数チップを積層して形成したマルチチップモジュールなどに実装しても良い。
1 暗号復号器
2 CPU(CPU)
3 電気的に書き換え不能な不揮発性メモリ(ROM)
31 非暗号化領域
32 暗号化領域
4 電気的に書き換え可能な不揮発性メモリ(EEPROM)
41 システム領域
42 ユーザ領域
5 通信インターフェース(UART)
6 揮発性メモリ(RAM)
7 アドレスバス
8 データバス
9 LSI
11 暗号鍵
12 分割鍵(ビット列に分割された暗号鍵)
13 復号イネーブル制御ビット
14 鍵書き込み済みフラグ
15 鍵アドレス
16 基点アドレス
17 偏差
18 鍵書き込み済みフラグ格納アドレス
19 鍵格納アドレス
20 鍵アドレス格納アドレス
21 基点アドレス格納アドレス
22 偏差格納アドレス
60 リセットルーチン
61 動作モード(システムモード/ユーザモード)判定ステップ
63 暗号鍵書き込み済みフラグ判定ステップ
70 暗号鍵読み込み処理
71 EEPROMからの部分鍵の読み出し
72 暗号復号器への部分鍵の書き込み
73 鍵格納基点アドレスの読み出し
74 鍵格納偏差の読み出し
75 鍵の格納されているアドレスの読み出しまたは算出
80 暗号鍵書き込み処理
81 暗号鍵情報の受信
82 鍵書き込み完了ステータスの返信
83 鍵格納基点アドレスの受信
84 鍵格納偏差の受信
90 暗号鍵書き込み認証
91 認証開始コマンドの受信
92 認証用乱数の返信
93 認証用データの受信
94 認証成功ステータスの返信

Claims (20)

  1. 第1動作モードと第2動作モードを有するCPUと、前記第2動作モードにおいて前記CPUからのアクセスが禁止される第1領域と第2領域を有し電気的に書き換え可能な第1不揮発性メモリと、暗号化された命令及び/又はデータである暗号化コードを格納可能な第3領域と第4領域を有し電気的に書き換え不能な第2不揮発性メモリと、暗号復号器とを備え、
    前記第1不揮発性メモリは、前記暗号化コードを復号するための暗号鍵を構成する複数の分割鍵を保持するための、前記第1領域内の分散する複数のアドレス領域を有し、
    前記暗号復号器は、暗号鍵を保持し、前記第2動作モードにおいて、前記第2不揮発性メモリの前記第3領域から読み出された前記暗号化コードを前記暗号鍵により復号して前記CPUへ供給可能であり、
    前記第2不揮発性メモリは、前記第1動作モードにおいて前記CPUによって実行されることにより、前記第1不揮発性メモリに分散して保持される前記複数の分割鍵を読み出して再構成することにより前記暗号鍵を復元し、前記暗号復号器に供給する、暗号鍵読み込みプログラムを、前記第4領域に保持する、半導体装置。
  2. 請求項1において、前記半導体装置は通信インターフェースをさらに備え、
    前記第2不揮発性メモリは、前記CPUによって実行されることにより、前記通信インターフェースを介して外部から入力される前記暗号鍵を、前記複数の分割鍵に分割された状態で、前記第1不揮発性メモリの前記第1領域内の前記複数のアドレス領域に分散して書き込むことができる暗号鍵書き込みプログラムを、前記第4領域に保持する、半導体装置。
  3. 請求項2において、前記暗号鍵書き込みプログラムにより、前記分割鍵が前記第1不揮発性メモリに書き込まれる前に、認証を行う認証ステップが実行可能に構成される、半導体装置。
  4. 請求項3において、前記暗号鍵書き込みプログラムにより、前記分割鍵が前記第1不揮発性メモリに書き込まれる前に、前記CPUが動作すべき動作モードが前記第1動作モードであることを判定するステップと、前記第1不揮発性メモリに前記複数の分割鍵が既に書き込まれているか否かを判定するステップとが実行可能に構成され、前記CPUが動作すべき動作モードが前記第1動作モードであり且つ前記複数の分割鍵が未だ書き込まれていない場合に、前記認証ステップへ進むことが実行可能に構成される、半導体装置。
  5. 請求項4において、前記第1不揮発性メモリは、前記複数の分割鍵が既に書き込まれたか否かを示すデータを保持するための領域を、前記第1領域内に有する、半導体装置。
  6. 請求項5において、前記複数の分割鍵が既に書き込まれたか否かを示す前記データは、複数ビットで構成される、半導体装置。
  7. 請求項3において、前記認証ステップは、保持されるRSAの公開鍵e及びNと期待値pについて、外部から入力されるcを用いて、前記cの前記e乗の前記Nについての剰余を算出し、前記pと比較するステップを含む、半導体装置。
  8. 請求項2において、前記第2不揮発性メモリは、前記CPUが動作すべき動作モードが前記第2動作モードであると判定し、前記第1動作モードで前記暗号鍵読み込みプログラムが前記CPUによって実行された後、前記CPUを前記第2動作モードに遷移させるプログラムを、前記第4領域に保持する、半導体装置。
  9. 請求項1において、前記複数の分割鍵を保持するための、前記第1不揮発性メモリの前記第1領域内の分散する前記複数のアドレス領域は、前記第1不揮発性メモリにおける物理アドレスが不連続であり、且つ、前記CPUによってアクセスするための論理アドレスが不連続である、半導体装置。
  10. 請求項9において、前記複数の分割鍵を保持するための、前記第1不揮発性メモリの前記第1領域内の分散する前記複数のアドレス領域に対応する複数の前記物理アドレスの間隔が不均一であり、及び/または、前記複数のアドレス領域に対応する複数の前記論理アドレスの間隔が不均一である、半導体装置。
  11. 請求項1において、前記第1不揮発性メモリは、前記複数の分割鍵を格納するための前記複数のアドレス領域の複数の鍵アドレス値を格納する鍵アドレス格納領域を、前記第1領域に有し、前記第2不揮発性メモリは、前記鍵アドレス格納領域のアドレス値を、前記第4領域に保持する、半導体装置。
  12. 請求項1において、前記複数の分割鍵を保持するための、前記第1不揮発性メモリの前記第1領域内の分散する前記複数のアドレス領域に対応する複数のアドレスのそれぞれは、基点アドレスと偏差によって算出されることができ、前記第1不揮発性メモリは、前記基点アドレスと前記偏差を保持するための、前記第1領域内のアドレス領域を有する、半導体装置。
  13. 請求項1において、前記CPUと、前記第1不揮発性メモリと、前記第2不揮発性メモリと、前記暗号復号器とが、単一の半導体基板上に形成された、半導体装置。
  14. 第1動作モードと第2動作モードを有するCPUと、前記第2動作モードにおいて前記CPUからのアクセスが禁止される第1領域と第2領域を有し電気的に書き換え可能な第1不揮発性メモリと、暗号化された命令及び/又はデータである暗号化コードを格納可能な第3領域と第4領域を有し電気的に書き換え不能な第2不揮発性メモリと、前記第2動作モードにおいて、前記第2不揮発性メモリの前記第3領域から読み出された前記暗号化コードを暗号鍵により復号して前記CPUへ供給可能な暗号復号器と、通信インターフェースとを備える半導体装置に対して暗号鍵を書き込む暗号鍵書き込み方法であって、
    前記通信インターフェースを介して外部から暗号鍵を入力する第1ステップと、前記入力された前記暗号鍵を、複数の分割鍵に分割された状態で、前記第1不揮発性メモリの前記第1領域内の複数のアドレス領域に分散して書き込む第2ステップとを含む、暗号鍵書き込み方法。
  15. 請求項14において、前記第2ステップより前に、前記CPUが動作すべき動作モードが前記第1動作モードであることを確認する第3ステップと、前記第1不揮発性メモリの前記複数のアドレス領域に、前記複数の分割鍵が書き込まれていないことを確認する第4ステップと、暗号鍵の書き込みを認証する第5ステップをさらに含む、暗号鍵書き込み方法。
  16. 請求項15において、前記第3ステップにより前記CPUが動作すべき動作モードが前記第2動作モードであると判定されたとき、前記第1動作モードで、前記第1不揮発性メモリに分散して保持される前記複数の分割鍵を読み出し、再構成することにより前記暗号鍵を復元し、前記暗号復号器に供給する、第6ステップと、前記CPUの動作モードを前記第2動作モードに遷移させる第7ステップをさらに含む、暗号鍵書き込み方法。
  17. 請求項14において、前記複数の分割鍵を保持するための、前記第1不揮発性メモリの前記第1領域内の分散する前記複数のアドレス領域は、前記第1不揮発性メモリにおける物理アドレスが不連続であり、且つ、前記CPUによってアクセスするための論理アドレスが不連続である、暗号鍵書き込み方法。
  18. 請求項17において、前記複数の分割鍵を保持するための、前記第1不揮発性メモリの前記第1領域内の分散する前記複数のアドレス領域に対応する複数の前記物理アドレスの間隔が不均一であり、及び/または、前記複数のアドレス領域に対応する複数の前記論理アドレスの間隔が不均一である、暗号鍵書き込み方法。
  19. 請求項14において、前記複数の分割鍵を前記第1不揮発性メモリの前記第1領域内に分散して格納するための、前記複数のアドレス領域のそれぞれを示す鍵格納アドレスを、前記第1不揮発性メモリの前記第1領域または前記第2不揮発性メモリの前記第4領域から読み出す第8ステップをさらに含む、暗号鍵書き込み方法。
  20. 請求項14において、前記複数の分割鍵を前記第1不揮発性メモリの前記第1領域内に分散して格納するための、前記複数のアドレス領域のそれぞれを示す鍵格納アドレスは、基点アドレスと偏差によって算出されることができ、前記通信インターフェースを介して外部から前記基点アドレスと前記偏差を、前記通信インターフェースを介して外部から入力する第9ステップをさらに含む、暗号鍵書き込み方法。
JP2012240051A 2012-10-31 2012-10-31 半導体装置及び暗号鍵書き込み方法 Active JP5984625B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012240051A JP5984625B2 (ja) 2012-10-31 2012-10-31 半導体装置及び暗号鍵書き込み方法
US14/061,619 US9280671B2 (en) 2012-10-31 2013-10-23 Semiconductor device and encryption key writing method
EP13190143.1A EP2728509B1 (en) 2012-10-31 2013-10-24 Semiconductor Device and Encryption Key Writing Method
US15/006,837 US20160140057A1 (en) 2012-10-31 2016-01-26 Semiconductor device and encryption key writing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012240051A JP5984625B2 (ja) 2012-10-31 2012-10-31 半導体装置及び暗号鍵書き込み方法

Publications (2)

Publication Number Publication Date
JP2014089640A JP2014089640A (ja) 2014-05-15
JP5984625B2 true JP5984625B2 (ja) 2016-09-06

Family

ID=49484191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012240051A Active JP5984625B2 (ja) 2012-10-31 2012-10-31 半導体装置及び暗号鍵書き込み方法

Country Status (3)

Country Link
US (2) US9280671B2 (ja)
EP (1) EP2728509B1 (ja)
JP (1) JP5984625B2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10354325B1 (en) 2013-06-28 2019-07-16 Winklevoss Ip, Llc Computer-generated graphical user interface
US10068228B1 (en) * 2013-06-28 2018-09-04 Winklevoss Ip, Llc Systems and methods for storing digital math-based assets using a secure portal
US11282139B1 (en) 2013-06-28 2022-03-22 Gemini Ip, Llc Systems, methods, and program products for verifying digital assets held in a custodial digital asset wallet
US9898782B1 (en) 2013-06-28 2018-02-20 Winklevoss Ip, Llc Systems, methods, and program products for operating exchange traded products holding digital math-based assets
US10269009B1 (en) 2013-06-28 2019-04-23 Winklevoss Ip, Llc Systems, methods, and program products for a digital math-based asset exchange
WO2015087540A1 (ja) * 2013-12-12 2015-06-18 パナソニックIpマネジメント株式会社 モータ駆動装置
US9659191B2 (en) 2014-04-09 2017-05-23 Seagate Technology Llc Encryption key storage and modification in a data storage device
US9853977B1 (en) 2015-01-26 2017-12-26 Winklevoss Ip, Llc System, method, and program product for processing secure transactions within a cloud computing system
US10158480B1 (en) 2015-03-16 2018-12-18 Winklevoss Ip, Llc Autonomous devices
US10915891B1 (en) 2015-03-16 2021-02-09 Winklevoss Ip, Llc Autonomous devices
US10223294B2 (en) * 2015-09-01 2019-03-05 Nxp Usa, Inc. Fast secure boot from embedded flash memory
US10083325B2 (en) * 2015-11-16 2018-09-25 The Boeing Company Secure removable storage for aircraft systems
US10491380B2 (en) * 2016-03-31 2019-11-26 Shenzhen Bell Creative Science and Education Co., Ltd. Firmware of modular assembly system
CN106685646B (zh) * 2016-11-29 2020-08-18 北京奇艺世纪科技有限公司 一种数字证书密钥管理方法及管理服务器
US10506642B2 (en) * 2016-11-30 2019-12-10 Samsung Eletrônica da Amazônia Ltda. Method for verifying authenticity, configuring network credentials and cryptographic keys for internet of things (IoT) devices using near field communication (NFC)
US10223531B2 (en) * 2016-12-30 2019-03-05 Google Llc Secure device state apparatus and method and lifecycle management
JP6972721B2 (ja) * 2017-07-18 2021-11-24 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
FR3069935A1 (fr) * 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
CN107861892B (zh) * 2017-09-26 2021-08-03 大唐微电子技术有限公司 一种实现数据处理的方法及终端
US10929842B1 (en) 2018-03-05 2021-02-23 Winklevoss Ip, Llc System, method and program product for depositing and withdrawing stable value digital assets in exchange for fiat
US11522700B1 (en) 2018-02-12 2022-12-06 Gemini Ip, Llc Systems, methods, and program products for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain
US11200569B1 (en) 2018-02-12 2021-12-14 Winklevoss Ip, Llc System, method and program product for making payments using fiat-backed digital assets
US11139955B1 (en) 2018-02-12 2021-10-05 Winklevoss Ip, Llc Systems, methods, and program products for loaning digital assets and for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain
US10540654B1 (en) 2018-02-12 2020-01-21 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US11909860B1 (en) 2018-02-12 2024-02-20 Gemini Ip, Llc Systems, methods, and program products for loaning digital assets and for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain
US10373129B1 (en) 2018-03-05 2019-08-06 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US11308487B1 (en) 2018-02-12 2022-04-19 Gemini Ip, Llc System, method and program product for obtaining digital assets
US10373158B1 (en) 2018-02-12 2019-08-06 Winklevoss Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US11475442B1 (en) 2018-02-12 2022-10-18 Gemini Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US10438290B1 (en) 2018-03-05 2019-10-08 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
US11334883B1 (en) 2018-03-05 2022-05-17 Gemini Ip, Llc Systems, methods, and program products for modifying the supply, depositing, holding and/or distributing collateral as a stable value token in the form of digital assets
US11263074B1 (en) * 2018-03-29 2022-03-01 Keep Security, Llc Systems and methods for self correcting secure computer systems
US10579465B1 (en) 2018-03-29 2020-03-03 Keep Security LLC Systems and methods for self correcting secure computer systems
US11669389B1 (en) 2018-03-29 2023-06-06 Keep Security, Llc Systems and methods for secure deletion of information on self correcting secure computer systems
US12093942B1 (en) 2019-02-22 2024-09-17 Gemini Ip, Llc Systems, methods, and program products for modifying the supply, depositing, holding, and/or distributing collateral as a stable value token in the form of digital assets
US11501370B1 (en) 2019-06-17 2022-11-15 Gemini Ip, Llc Systems, methods, and program products for non-custodial trading of digital assets on a digital asset exchange
KR20210017268A (ko) 2019-08-07 2021-02-17 삼성전자주식회사 사용자 데이터에 대해 암호화 동작을 수행하는 전자 장치
KR20210046418A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법
TWI775061B (zh) * 2020-03-30 2022-08-21 尚承科技股份有限公司 軟韌體或資料保護系統及保護方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3067179B2 (ja) * 1990-08-21 2000-07-17 株式会社エヌ・ティ・ティ・データ Icカードの秘密鍵制御方法
US6282657B1 (en) * 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
JP4080079B2 (ja) 1998-11-20 2008-04-23 大日本印刷株式会社 Icカード
JP2000252973A (ja) 1999-03-04 2000-09-14 Matsushita Electric Ind Co Ltd 鍵の実装方法及び復元方法
JP2002026902A (ja) * 2000-07-10 2002-01-25 Matsushita Electric Ind Co Ltd 受信端末装置
FI112707B (fi) * 2000-09-29 2003-12-31 Setec Oy Menetelmä salaisen avaimen käsittelemiseksi
FI115257B (fi) * 2001-08-07 2005-03-31 Nokia Corp Menetelmä informaation käsittelemiseksi elektroniikkalaitteessa, järjestelmä, elektroniikkalaite ja suoritinlohko
JP2003333027A (ja) * 2002-05-17 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 暗号鍵記憶装置及び電子機器
IL187043A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure pipeline manager
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
JP2012065123A (ja) * 2010-09-15 2012-03-29 Fuji Electric Retail Systems Co Ltd Icカードシステム、その通信端末、携帯端末
JP2012080295A (ja) * 2010-09-30 2012-04-19 Toshiba Corp 情報記憶装置、情報記憶方法、及び電子機器

Also Published As

Publication number Publication date
EP2728509A3 (en) 2016-10-26
EP2728509A2 (en) 2014-05-07
US9280671B2 (en) 2016-03-08
EP2728509B1 (en) 2019-04-10
JP2014089640A (ja) 2014-05-15
US20160140057A1 (en) 2016-05-19
US20140122903A1 (en) 2014-05-01

Similar Documents

Publication Publication Date Title
JP5984625B2 (ja) 半導体装置及び暗号鍵書き込み方法
EP2506488B1 (en) Secure dynamic on-chip key programming
KR101546204B1 (ko) 호스트 디바이스, 반도체 메모리 디바이스, 및 인증 방법
CN104252881B (zh) 半导体集成电路及系统
TWI468971B (zh) 安全軟體下載
US20150186679A1 (en) Secure processor system without need for manufacturer and user to know encryption information of each other
CN107004083B (zh) 设备密钥保护
US8769312B2 (en) Tampering monitoring system, protection control module, and detection module
KR20090007123A (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
US10771062B1 (en) Systems and methods for enhancing confidentiality via logic gate encryption
US7076667B1 (en) Storage device having secure test process
US20210240833A1 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
CN111488630A (zh) 可配置安全存储区域的存储装置及其操作方法
CN107925574B (zh) 秘密数据的安全编程
JP4787273B2 (ja) ライフサイクルフェーズを有するセキュアメモリカード
CN111512593B (zh) 半导体设备、提供更新数据的方法、接收更新数据的方法以及介质
CN113343215A (zh) 嵌入式软件的授权和认证方法及电子设备
JPWO2006118101A1 (ja) 機密情報処理用ホスト機器および機密情報処理方法
JP2006146608A (ja) メモリ情報保護システムおよびメモリ情報の保護方法
JP5447790B2 (ja) セキュリティトークン及びスクランブル鍵の派生方法
JP7170999B2 (ja) 機密データを保護することが可能な電子機器
US11698993B2 (en) Integrated circuit configured to perform symmetric encryption operations with secret key protection
JP2007193800A (ja) カード認証システムのセキュリティレベルを向上させる装置及び方法
CN110287708B (zh) 一次性可编程加密装置与其加密方法
CN110516457B (zh) 一种数据存储方法及读取方法、存储设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160704

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160728

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160802

R150 Certificate of patent or registration of utility model

Ref document number: 5984625

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150