JP5114617B2 - 秘密鍵を保護する、セキュア端末、プログラム、および方法 - Google Patents

秘密鍵を保護する、セキュア端末、プログラム、および方法 Download PDF

Info

Publication number
JP5114617B2
JP5114617B2 JP2008524653A JP2008524653A JP5114617B2 JP 5114617 B2 JP5114617 B2 JP 5114617B2 JP 2008524653 A JP2008524653 A JP 2008524653A JP 2008524653 A JP2008524653 A JP 2008524653A JP 5114617 B2 JP5114617 B2 JP 5114617B2
Authority
JP
Japan
Prior art keywords
routine
software application
execution
memory
secret key
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.)
Expired - Fee Related
Application number
JP2008524653A
Other languages
English (en)
Other versions
JP2009504061A (ja
Inventor
ジャン‐フィリップ、ペラン
ハラルト、バウアー
パトリック、フルシェリ
Original Assignee
エスティー‐エリクソン、ソシエテ、アノニム
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 エスティー‐エリクソン、ソシエテ、アノニム filed Critical エスティー‐エリクソン、ソシエテ、アノニム
Publication of JP2009504061A publication Critical patent/JP2009504061A/ja
Application granted granted Critical
Publication of JP5114617B2 publication Critical patent/JP5114617B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/73Protecting 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 by creating or determining hardware identification, e.g. serial numbers
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Burglar Alarm Systems (AREA)
  • Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)

Description

本発明は、秘密鍵を保護する、セキュア端末、ルーチン、および方法に関するものである。
セキュア端末は、典型的には、ソフトウェア・アプリケーションと、当該ソフトウェア・アプリケーションによって呼び出されたルーチンとを実行するプロセッサと、少なくとも1つの秘密鍵と、を備える。
プロセッサは、非セキュア・ソフトウェア・アプリケーションならびにセキュア・ソフトウェア・アプリケーションを実行することができる。
非セキュア・ソフトウェア・アプリケーションとは、容易に更新または変更され得るソフトウェア・アプリケーションを指す。非セキュア・ソフトウェア・アプリケーションは、典型的にはフラッシュ・メモリ等、再書込み可能なメモリに書き込まれる。
対照的に、セキュア・ソフトウェア・アプリケーションとは、容易に変更されることがないアプリケーションを指す。例えば、セキュア・ソフトウェア・アプリケーションは、セキュア端末の製造プロセスの間に読取り専用メモリに書き込まれる。読取り専用メモリは、各セキュア・ソフトウェア・アプリケーションが容易に変更されることがないように保護される。
非セキュア・ソフトウェア・アプリケーションは、ハッカーによって変更される恐れがある故に、セキュア端末の弱点となっている。しかし、セキュア端末の設計は、任意のソフトウェア・アプリケーションを読取り専用メモリに記録することには適さない。このため、ハッカーが非セキュア・ソフトウェア・アプリケーションを変更し、その結果、変更された非セキュア・ソフトウェア・アプリケーションが秘密鍵を読み出し、その秘密鍵をハッカーに開示する恐れが常に存在する。
したがって、本発明の一目的は、非セキュア・ソフトウェア・アプリケーションによって読み出されることから秘密鍵を保護する方法を提供することである。
本発明は、秘密鍵が非セキュア・ソフトウェア・アプリケーションにより読み出されないよう保護する方法であって、前記秘密鍵を実行専用メモリ[executable-only memory]に記憶される実行専用ルーチン[executable-only routine]として記録するステップを含み、前記ルーチンは、前記ルーチンがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせるロード命令と、前記実行専用ルーチンの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵ではなくダミー・データだけが残るようにさせる制御命令と、を有する、方法を提供する。
前記秘密鍵は、実行専用メモリに記憶されるルーチンとして記録される。このため、当該ルーチンは、「実行専用ルーチン」と呼ばれる。前記実行専用ルーチンは、プロセッサによる読出しではなく実行のみ可能なものである。したがって、前記秘密鍵を取得する唯一の手段は、前記実行専用ルーチンを実行することである。しかし、前記ルーチンは、それ自体が実行されたときにも、前記秘密鍵の秘密情報が前記非セキュア・ソフトウェア・アプリケーションに漏洩しないことを保証する。したがって、前記鍵自体は、非セキュア・ソフトウェア・アプリケーションによって読み出すことができない。
前記方法の諸実施形態は、後続の特徴のうちの1つまたは複数を含んでもよい。
前記ロード命令は、それぞれの各値が前記ルーチンのコードに埋め込まれ、それぞれの各値が前記秘密鍵の少なくとも1ビットを表す定数をロードさせる命令である。
前記方法は、前記ロード命令が実行される前にIRQ[Interrupt Request―割込み要求―]が存在すれば当該IRQをディスエーブルするステップと、前記読出し可能なメモリ内の前記秘密鍵が削除された場合にだけ前記IRQを再イネーブルするステップとを含む。
前記実行専用ルーチンは、セキュア・ソフトウェア・アプリケーションにシステム的に[systematically]復帰し、任意のセキュア・ソフトウェア・アプリケーションは、前記IRQを再イネーブルするステップに先立ってロードされている前記秘密鍵を削除する。
前記実行専用ルーチンの復帰先となる前記セキュア・ソフトウェア・アプリケーションは、前記セキュア・ソフトウェア・アプリケーションの呼出し元が前記実行専用ルーチンでなかった場合には、ロードされている前記秘密鍵を直ちに削除する。
本発明の上記諸実施形態は、以下の利点をもたらす。
前記秘密鍵を前記実行専用ルーチンにロード可能な定数として埋め込むことにより、上記諸実施形態のセキュリティを強化すること。
IRQがディスエーブルされている限り非セキュア・ソフトウェア・アプリケーションが実行されることはないため、前記IRQをディスエーブルすることにより、いずれかの非セキュア・ソフトウェア・アプリケーションが前記読取り可能なメモリ内にロードされている前記秘密鍵を読み出すことを防止すること。
前記実行専用ルーチンの実行終了時に、システム的にセキュア・ソフトウェア・アプリケーションに復帰することにより、非セキュア・ソフトウェア・アプリケーションが前記セキュア・ソフトウェア・アプリケーションに対応する復帰アドレスを使用して前記実行専用ルーチンを呼び出すことから成る攻撃を防止すること。
前記実行専用ルーチンの呼出し元がセキュア・ソフトウェア・アプリケーションでなかった場合には、前記読取り可能なメモリから前記秘密鍵を削除して、他の非セキュア・ソフトウェア・アプリケーションが前記実行専用ルーチンを呼び出すことを防止することにより、前記端末のセキュリティを強化すること。
本発明は、秘密鍵が非セキュア・ソフトウェア・アプリケーションによって読み出されないように保護する前記方法で使用されるべき実行専用ルーチンに関するものでもある。 前記実行専用ルーチンは、
前記ルーチンがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせるロード命令と、
前記実行専用ルーチンの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵ではなくダミー・データだけが残るようにさせる制御命令と
を含む。
前記実行専用ルーチンの諸実施形態は、後続の特徴のうちの1つまたは複数を含んでもよい。
前記ロード命令は、それぞれの各値が前記ルーチンのコードに埋め込まれ、それぞれの各値が前記秘密鍵の少なくとも1ビットを表す定数をロードさせる命令である。
前記実行専用ルーチンは、前記実行専用ルーチンの実行開始時にIRQが存在すれば当該IRQをディスエーブルさせる命令を有する。
前記実行専用ルーチンは、前記実行専用ルーチンの実行終了時にセキュア・ソフトウェア・アプリケーションにシステム的に復帰させる命令を有する。
本発明は、セキュア端末であって、
ソフトウェア・アプリケーションと、前記ソフトウェア・アプリケーションによって呼び出されたルーチンとを実行するプロセッサと、
少なくとも1つの秘密鍵と
を備え、また、
実行専用ルーチンを記録するように適応された実行専用メモリも備え、前記実行専用ルーチンは、
前記ルーチンがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせるロード命令と、
前記実行専用ルーチンの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵ではなくダミー・データだけが残るようにさせる制御命令と
を有する、セキュア端末に関するものでもある。
前記セキュア端末の諸実施形態は以下の特徴のうちの1つまたは複数を含んでもよい。
前記ロード命令は、それぞれの各値が前記ルーチンのコードに埋め込まれ、それぞれの各値が前記秘密鍵の少なくとも1ビットを表す定数をロードさせる命令である。
前記端末は、前記読取り可能なメモリ内にロードされている秘密鍵を削除させるセキュア・ソフトウェア・アプリケーションの少なくとも1つの命令コードを含む読取り専用メモリ(ROM)を備える。
前記端末は、
前記端末のリセット後、読出しを1回だけ行うことが可能であり、前記秘密鍵を記録するリード・ワンス・メモリ[read once memory]と、
前記リード・ワンス・メモリに記憶されている前記秘密鍵から前記実行専用ルーチンの前記命令コードを作成し、前記実行専用ルーチンの前記命令コードを前記実行専用メモリ内にロードするセキュア初期化ルーチン[secure initializing routine]を有する読取り専用メモリと
を備える。
前記実行専用メモリは、命令読出し動作だけを許可し、データ読出し動作は禁止するトランザクション・デコーダを有する。
前記端末は、移動電話である。
本発明の上記およびその他の態様は、以下の説明、添付の図面および特許請求の範囲を読めば明らかとなるであろう。
図1は、電子プロセッサ4が外部メモリ6に接続されたセキュア端末2を示す。例えば端末2は移動電話であり、プロセッサ4はベースバンド・プロセッサである。より一般的に言えば、任意のSoC(システム・オン・チップ)である。
メモリ6は、再書込み可能であり、非セキュア・ソフトウェア・アプリケーションのコードを記録するものである。各コードは、プロセッサ4による実行可能な命令から成る。例えば、メモリ6は、フラッシュ・メモリである。
プロセッサ4は、メモリ6に記憶されている非セキュア・ソフトウェア・アプリケーション、ならびにROM(読取り専用メモリ)8に記憶されているセキュア・ソフトウェア・アプリケーションを実行することができる。
簡略化のため、図1にはプロセッサ4の要素のうち、本発明の理解に必要な要素だけが示されている。
プロセッサ4は、
中央処理装置10と、
ROM8と、
少なくとも1つの秘密鍵を永続的に記録する読取り専用ワンスメモリ[read-only once memory]12と、
ユニット10によって実行される任意のソフトウェア・アプリケーションによって読み出され得、使用され得るデータを記憶するRAM(ランダム・アクセス・メモリ)または内部データ・レジスタ18と、
実行専用ルーチン21を記憶するレジスタ・バンク20と、
レジスタ・バンク20へのアクセスを制限するトランザクション・デコーダ22と
を含む。
例えば、すべての上記要素8〜22は、少なくとも1つのダイ上に作成され、同じ集積回路パッケージ内に埋め込まれる。各要素をこのように作成し埋め込むことは、セキュリティの観点から見れば、無計画なハッカーがプロセッサ4の内部要素に対して物理的なアクセスを行なうことができなくなる故に重要な要因となる。
ユニット10は、ルーチンを呼び出すソフトウェア・アプリケーションの復帰アドレスを記録するのに使用される特定のレジスタ14を有する。
例えば、ユニット10は、ARM社のARMプロセッサ(同社ウェブサイト参照:www.arm.com)、または、より一般的に言えば任意のCPU(中央処理装置)である。
単なる例示として、メモリ12は、1つの秘密鍵だけを記録する。メモリ12内の秘密鍵は、プロセッサ4の製造プロセスの間にシリコンのレーザ・カッティングを使用して記憶される。このように記憶された秘密鍵は、プロセッサ4のリセット毎に1回だけ読み出され得る。このため、ユニット10とメモリ12の間のリンク23は、ユニット10とメモリ12とが常に同じタイミングでリセットされることを保証する。
内部データ・レジスタ18は、ユニット10によるソフトウェア・アプリケーションの実行中に、当該ソフトウェア・アプリケーションの実行に必要なデータを記憶するのに使用される。
レジスタ・バンク20は、レジスタ18に秘密鍵をロードする実行専用ルーチン21を記録するように設計されている。ルーチン21は、
レジスタ18に秘密鍵をロードさせるロード命令と、
ルーチン21の呼出し元となるソフトウェア・アプリケーションが非セキュア・ソフトウェア・アプリケーションである場合は、レジスタ18に秘密鍵ではなくダミー・データをロードさせる制御命令と、
ルーチン21の実行開始時にIRQ(割込み要求)が存在すれば当該IRQをディスエーブルさせる命令と、
ルーチン21の実行終了時にセキュア・ソフトウェア・アプリケーションにシステム的に復帰させる命令と
を含む。
ロード命令は、それぞれの各値が秘密鍵の1ビットとなる定数をレジスタ18にロードさせる命令である。各定数の値は、ルーチン21のコードに埋め込まれ、より厳密に言えば、ルーチン21の命令のオペ・コード[op-code]に埋め込まれる。
レジスタ・バンク20とトランザクション・デコーダ22との組合せは、実行専用メモリ24を形成し、当該実行専用メモリ24については、図2に関して後でより詳細に説明する。
ROM8は、プロセッサ4のリセット直後に起動されるソフトウェア・アプリケーションのコードを記録するブートROMである。各コードは、ユニット10によって実行可能な命令から成る。
ROM8は、セキュア・カーネル26の一部となる任意のセキュア・ソフトウェア・アプリケーションのコードを記録する。
例えば、セキュア・カーネル26は、メモリ12の読出しと、実行専用ルーチン21のコードの作成と、当該コードのレジスタ・バンク20へのロードとを行う初期化ルーチン28を有する。
カーネル26は、セキュアではない非セキュア・ソフトウェア・アプリケーションの認証性[authenticity]をチェックするように設計されたセキュア・ソフトウェア・アプリケーションも有する。例えば、カーネル26は、非セキュア・ソフトウェア・アプリケーションが既知の認証機関から署名を受けていること、またはそのような既知の認証機関から認証されていることをチェックすることが可能なセキュア・ソフトウェア・アプリケーション30を有する。アプリケーション30は、このようなタスクを実行するには秘密鍵を必要とし、したがって、ルーチン21を呼び出して秘密鍵を取得するように設計されている。
ルーチン21の呼出し元となるセキュア・ソフトウェア・アプリケーションは何れも、次の処理を行うことができる。
内部レジスタ18に記憶されている秘密鍵が使用された場合は、当該秘密鍵を削除すること。
当該秘密鍵がレジスタ18から削除された後にIRQ(割込み要求)をイネーブルすること。
本明細書では、削除という用語は、秘密鍵を、秘密鍵に関して使用可能などのような情報も漏洩しないダミー・データで置き換えることを意味する。この置き換えは、鍵を0などの定数で上書きすることによって行われてもよい。
ROM8と、メモリ12と、メモリ24と、レジスタ18とは、バス34とアドレス・バス36とを介してユニット10に接続されている。バス34は、ユニット10によって処理されるべきデータの送信と、ユニット10によって実行されるべき命令の送信の、両方に使用される。データおよび命令を択一的に送信する共通のバス34は1つしか存在しないので、バス34は、当該バス上の各アイテムがデータとして扱われるべきかそれとも命令として扱われるべきかを指示するように設定可能なデータ/命令タグを有する。
ユニット10のリセット後、メモリ12の読出しが1回だけ行われ得るように、メモリ12は、バス34を介してユニット10に接続されている。
図2は、実行専用メモリ24を示す。図1で既に説明したメモリ24の各要素は、同じ参照番号を有する。
レジスタ・バンク20は、レジスタ・バンク20に書き込まれるべきデータを受信する1つのポート40と、レジスタ・バンク20に読み込まれたデータを出力する1つのポート42とを有する。ポート40は、書き込まれるべきデータを受信する書込みデータ・バス44に接続されている。ポート42は、読み出されるべきデータを出力する読出しデータ・バス46に接続されている。例えば、バス44および46は、32ビット単位のバスである。レジスタ・バンク20へのデータ書込みは、バンク20の入力47が論理「1」を受信した場合にのみ可能となる。
トランザクション・デコーダ22は、1つの入力ポート52がバス46に接続され、1つの入力ポート54がデータ/命令タグを受信するバス34に接続された論理ANDユニット50を有する。データ/命令タグは、レジスタ・バンク20からデータが読み出されるべき場合には論理「0」と等しくなり、レジスタ・バンク20から命令が読み出されるべき場合には論理「1」と等しくなる。
ユニット50は、バス46上に所在するデータと、データ/命令タグの値との論理AND演算を実行し、その結果をデータ・バス34上に出力する。
メモリ24は、ライト・ワンス・メモリ(write−once memory)である。より厳密に言えば、メモリ24への書込みは、プロセッサ4のリセット毎に1回だけ行われ得る。このため、デコーダ22は、バス34の書込み信号62とインバータ64の出力とにそれ自体の各入力が接続されたANDゲート60を有する。インバータ64の入力66は、ロック式ラッチ70の出力68に接続される。
ゲート60は、書込み信号62とインバータ64の出力との論理ANDを実行し、その結果を入力47に送信する。
ロック式ラッチ70の入力72は、ORゲート74の出力に接続される。ゲート74の第1の入力76は、出力68に接続される。ゲート74の第2の入力78は、書込み信号62に接続される。ゲート74は、ゲート74の入力76上に所在する信号と、ゲート74の入力78上に所在する信号との論理OR演算を実行し、その結果をロック式ラッチ70の入力72に出力する。
ロック式ラッチ70は、プロセッサ4がリセットされた後でそれ自体が初めてアクティブ化されたときは、出力68を介して論理「0」を出力するように設計されている。例えば、ラッチ70は、ユニット10とラッチ70とが常に同じタイミングでリセットされることを保証するために、リンク23等のリンクを使用してユニット10に接続される。その後、ロック式ラッチ70は、出力68を介して、ロック式ラッチ70の入力72上で受信された値と等しい値を出力する。
ここで、図3を参照して端末2の動作について説明する。
まず、ステップ90で、プロセッサ4がリセットされる。ステップ90では、ラッチ70もリセットされ、それ自体の初期状態に復帰する。また、メモリ12もリセットされ、1回の読出し動作が可能となる。
リセット後、ユニット10は、ROM8に記憶されているソフトウェア・アプリケーションの実行を直ちに開始する。
その後ステップ92で、初期化ルーチン28が、メモリ12に記憶されている秘密鍵の値を読み出し、当該値に対応するルーチン21のコードを作成する。ルーチン28によるリセット後、メモリ12の読出しが初めて行われたことになるので、メモリ12は、その後、プロセッサ4がリセットされない限り、それ以上読み出されることはない。
ステップ94で、ルーチン28は、ルーチン21のコードをレジスタ・バンク20に書き込み記録する。
当初、書込み信号62は「1」と等しく、ラッチ70の出力68は「0」と等しい。
処理96の間に、ゲート60は、書込み信号の値と、インバータ64の出力とを比較する。書込み信号の値とインバータ64の出力がいずれも「1」と等しい場合には、入力47上で論理「1」がセットされ、バス44を介して送信されたルーチン21のコードがレジスタ・バンク20に書き込まれ記録される。
対照的に、処理100の間に、インバータ64の出力が「0」と等しくなった場合は、入力47上で論理「0」がセットされ、レジスタ・バンク20に対するデータ書込みが行われることはない。
ステップ94と平行して、ステップ102では、プロセッサ4の次回のリセットが行なわれるまでレジスタ・バンク20への新しいデータ書込みが行われるのを防止するためにレジスタ・バンク20への第1のデータ書込みが既に実行された事実が記憶される。
より厳密に言えば、処理104で、ゲート74によって書込み信号62の値が出力68の値と比較される。入力76と入力79がいずれも「0」と等しい場合には、次いで、ゲート74は、論理「0」を入力72に出力し、そうでない場合には、論理「1」を入力72に出力する。
したがって、レジスタ・バンク20にデータが初めて書き込まれた場合は、出力68は「0」と等しくなり、その結果、インバータ64の出力が「1」と等しくなり、ルーチン21のコードがレジスタ・バンク20に書き込まれ記憶され得るようになる。
レジスタ・バンク20にデータが2回目またはそれ以降に書き込まれた場合は、出力68は「論理1」と等しくなり、その結果、インバータ64の出力が「0」と等しくなり、レジスタ・バンク20にデータが書き込まれることはなくなる。したがって、ルーチン21のコードは、レジスタ・バンク20に記憶された後はプロセッサ4がリセットされない限り変更されることはない。
その結果、メモリ24は、ライト・ワンス・メモリとなる。
ステップ94の最初の実行が終了した時点で、ルーチン21のコードがレジスタ・バンク20に書き込まれる。
次いで、典型的には、プロセッサ4は、非セキュア・ソフトウェア・アプリケーションを実行する。暗号処理が必要な場合は、ソフトウェア・アプリケーション30が呼び出される。例えば、暗号処理は、DRM(デジタル著作権管理)ライセンスの復号に必要となる。
その後ステップ110で、セキュア・ソフトウェア・アプリケーション30は、ルーチン21を呼び出す。この時点で、ユニット10は、処理112の間に呼出し対象アプリケーションの復帰アドレスをレジスタ14に書き込む。
ステップ114で、ユニット10は、レジスタ・バンク20内のルーチン21のコードを読み出して、当該コードを実行する。したがって、データ/命令タグが「1」にセットされる。まず、処理116で、ユニット10は、バス34を介してレジスタ・バンクの読出し命令を送信する。
読出し命令に応答して、ステップ118で、レジスタ・バンク20は、対応する命令をバス46上に載せる。
処理120で、ユニット50は、ポート52上で受信された命令と、ポート54上で受信されたデータ/命令タグの値とを比較する。
処理122で、データ/命令タグの値が「1」と等しい場合には、ユニット50は、バス34上に読み出し命令を出力する。データ/命令タグの値が「1」と等しいので、出力される命令は、ユニット10だけに関する命令として解釈され得ることになり、したがって、ユニット10によって直接実行され得る。データ/命令タグが「1」と等しい場合には、ソフトウェア・アプリケーションがバス34上のデータにアクセスすることはできない。
レジスタ・バンク20に記憶されている命令をデータとして読み出そうとする試みがなされた場合は、次いで、データ/命令タグは「0」と等しくなり、ユニット50は、処理124の間に、対応する命令ではなく「0」だけを出力することになる。
したがって、非セキュア・ソフトウェア・アプリケーションがメモリ24に記憶されているコードを読み出そうと試みた場合にも、ダミー・データ、すなわちいくつかの「0」を取得するだけである。
その結果、メモリ24は、実行専用メモリとなり、また、ルーチン21のコードがユニット10によってのみ実行され得、プロセッサ4によって実行されるソフトウェア・アプリケーションによって読み出されることはなくなるので、ルーチン21は、実行専用ルーチンとなる。
ステップ130では、データ/命令タグが「1」と等しいので、バス34上に所在する各命令がユニット10によって実行される。
ステップ130ではまず、処理132で、ユニット10は、後続の命令の実行が何らかのソフトウェア・アプリケーションによって中断されることがないように、IRQ(割込み要求)が存在すれば当該IRQをディスエーブルする。したがって、他のソフトウェア・アプリケーションは、レジスタ18に記憶されている内部データを読み出すことができなくなる。
その後処理134および136で、ユニット10は、ルーチン21の制御命令を実行する。
処理134で、ユニット10は、ルーチン21の呼出し元がセキュア・ソフトウェア・アプリケーションであることをチェックする。例えば、処理134で、ユニット10は、レジスタ14に書き込まれている復帰アドレスと、ROM 8内の各メモリ・アドレスとを比較する。
レジスタ14に書き込まれている復帰アドレスがROM 8内のアドレス範囲にない場合は、処理136で、ユニット10は、「0」列のようなダミー・データをレジスタ18にロードする。処理136の終了時に、プロセッサ4は、レジスタ14に書き込まれている復帰アドレスに復帰する。その結果、ルーチン21を呼び出した非セキュア・ソフトウェア・アプリケーションは、秘密鍵に関するどのような情報も取得しない。
復帰アドレスがセキュア・ソフトウェア・アプリケーションのアドレスである場合は、次いで、ステップ138で、ユニット10は、ルーチン21のロード命令を実行する。したがって、レジスタ14に秘密鍵の値がロードされる。秘密鍵の値がロードされると、処理140の間に、ユニット10は、ルーチン21の命令を実行して、システム的にセキュア・ソフトウェア・アプリケーションに復帰する。例えば、ユニット10は、セキュア・ソフトウェア・アプリケーション30のアドレスに無条件にジャンプする。当該ジャンプ命令は、復帰アドレスがスタック14の最上部に置かれてさえいれば実行される。例えば処理140の間に、ユニット10は、アプリケーション30を呼び出す。より厳密に言えばユニット10は、アプリケーション30への分岐およびリンク命令を実行する。また、分岐およびリンク命令は、呼び出されたアプリケーションのアドレス、すなわちルーチン21のアドレスを特定のレジスタ14に記録する。
その後フェーズ150の間に、アプリケーション30は、レジスタ18に書き込まれている秘密鍵の値を使用する。
例えば、フェーズ150ではまず、ステップ152で、アプリケーション30は、アプリケーション30がルーチン21によって呼び出されたかどうかをチェックする。例えばユニット10は、レジスタ14に書き込まれているアドレスがルーチン21のアドレスに対応することをチェックする。
かかる条件が満足されない場合には、ステップ154で、ユニット10は、レジスタ18に書き込まれている秘密鍵を削除する。例えば、ユニット10は、秘密鍵を「0」列で置き換える。その後、アプリケーション30は、ルーチン21を呼び出す場合と同様の処理を続行する。
ステップ156で、アプリケーション30は、レジスタ18に書き込まれている秘密鍵を使用して、例えば非セキュア・ソフトウェア・アプリケーションのチェックまたは認証を行なう。チェックまたは認証を行う際に、秘密鍵を使用した暗号処理が実行される。
アプリケーション30が秘密鍵をそれ以上必要としなくなったときは、ステップ158で、ユニット10は、当該秘密鍵をレジスタ18から削除する。
その後ステップ160で、ユニット10は、IRQを再イネーブルする。
次いで、ステップ110で、上記方法は、アプリケーション30の呼出し元となるメインのソフトウェア・アプリケーションに復帰する。
他の様々な実施形態が可能である。例えば、ルーチン21が非セキュア・ソフトウェア・アプリケーションから呼び出されたときは、秘密鍵を削除する代わりに端末2をブロックして、当該端末がそれ以上使用されることがないようにすることも可能である。
IRQは、ルーチン21を呼び出す前にアプリケーション30によってディスエーブルされてもよい。
その場合には、ルーチン21は、端末2がリセットされる度にリフレッシュが必要となる、非永続メモリに書き込まれることになる。一方、レジスタ・バンク20をROMのような永続メモリで置き換えることも可能である。そのような実施形態では、端末2がリセットされる度にルーチン21のコードを復元する必要がなくなる。
上記端末および方法は、1つの秘密鍵ではなく複数の秘密鍵が非セキュア・ソフトウェア・アプリケーションによって読み出されないように保護するように適応されてもよい。
上記の教示は、非セキュア・ソフトウェア・アプリケーションを記憶するメモリがプロセッサ4の内部メモリである場合にも適用される。
本明細書に記載される内容は、移動電話に限定されるものではなく、任意のセキュア電子端末に適用されるものである。
セキュア端末の概略図である。 図1のセキュア端末に実装されるトランザクション・デコーダの概略図である。 秘密鍵が図1の端末内の非セキュア・ソフトウェア・アプリケーションによって読み出されないように保護する方法の流れ図である。

Claims (15)

  1. 秘密鍵が非セキュア・ソフトウェア・アプリケーションによって読み出されないように保護する、プロセッサによって実行される、方法であって、前記秘密鍵を読取り専用ワンスメモリ中に記録するステップを含み、前記秘密鍵は前記プロセッサのリセット後に読み出され且つ実行専用メモリに記憶されている実行専用ルーチンを動作させるのに使用され、
    前記ルーチンは、前記ルーチンがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせる、プロセッサによって実行される、ロード命令と、
    前記実行専用ルーチンの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵をロードすることなくダミー・データだけをそのままにしておく、プロセッサによって実行される、制御命令と
    を有し
    前記プロセッサ、前記読取り専用ワンスメモリ、前記実行専用メモリ及び前記読出し可能なメモリは1つの装置内に備えられている、
    方法。
  2. 前記ロード命令は、秘密鍵としての定数をロードさせる命令であって、前記各定数の値は、前記ルーチンのコードに埋め込まれており、且つ、前記秘密鍵の少なくとも1ビットを表している、請求項1に記載の方法。
  3. 前記ロード命令が実行される前にIRQ(割込み要求)が存在すれば当該IRQをディスエーブルするステップと、前記読出し可能なメモリ内の前記秘密鍵が削除された場合にだけ前記IRQを再イネーブルするステップとを含む請求項1または2に記載の方法。
  4. 前記実行専用ルーチンは、セキュア・ソフトウェア・アプリケーションに復帰し、任意のセキュア・ソフトウェア・アプリケーションは、前記IRQを再イネーブルするステップに先立って、ロードされている前記秘密鍵を削除する、請求項3に記載の方法。
  5. 前記実行専用ルーチンの復帰先となる前記セキュア・ソフトウェア・アプリケーションは、前記セキュア・ソフトウェア・アプリケーションの呼出し元が前記実行専用ルーチンでなかった場合には、ロードされている前記秘密鍵を直ちに削除する、請求項4に記載の方法。
  6. 請求項1乃至5のいずれか一項に記載の秘密鍵を保護する方法で使用されるべき実行専用ルーチンプログラムであって、前記実行専用ルーチンプログラムはロード命令と制御命令とを備えており、
    前記ルーチンプログラムがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせる前記ロード命令と、
    前記実行専用ルーチンプログラムの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵ではなくダミー・データだけが残るようにさせる前記制御命令と
    を含む実行専用ルーチンプログラム
  7. 前記ロード命令は、それぞれの各値が前記ルーチンのコードに埋め込まれ、それぞれの各値が前記秘密鍵の少なくとも1ビットを表す定数をロードさせる命令である、請求項6に記載の実行専用ルーチンプログラム
  8. 前記実行専用ルーチンは、前記実行専用ルーチンの実行開始時にIRQが存在すれば当該IRQをディスエーブルさせる命令を有する、請求項6または7に記載の実行専用ルーチンプログラム
  9. 前記実行専用ルーチンは、前記実行専用ルーチンの実行終了時にセキュア・ソフトウェア・アプリケーションにシステム的に復帰させる命令を有する、請求項8に記載の実行専用ルーチンプログラム
  10. セキュア端末であって、
    ソフトウェア・アプリケーションと、前記ソフトウェア・アプリケーションによって呼び出されたルーチンとを実行するプロセッサと、
    読取り専用ワンスメモリに格納された少なくとも1つの秘密鍵であって、前記秘密鍵は前記プロセッサのリセット後に読み出され且つ実行専用ルーチンを生成するのに使用される、秘密鍵と
    を備え、また、
    前記実行専用ルーチンを記録するように適応された実行専用メモリは、
    前記ルーチンがセキュア・ソフトウェア・アプリケーションによって呼び出された場合は、前記セキュア・ソフトウェア・アプリケーションおよび非セキュア・ソフトウェア・アプリケーションによって読出し可能なメモリ内に前記秘密鍵をロードさせるロード命令と、
    前記実行専用ルーチンの呼出し元となる前記ソフトウェア・アプリケーションが前記非セキュア・ソフトウェア・アプリケーションである場合は、前記読出し可能なメモリ内に前記秘密鍵ではなくダミー・データだけが残るようにさせる制御命令と
    を有する、セキュア端末。
  11. 前記ロード命令は、それぞれの各値が前記ルーチンのコードに埋め込まれ、それぞれの各値が前記秘密鍵の少なくとも1ビットを表す定数をロードさせる命令である、請求項10に記載の端末。
  12. 前記端末は、前記読出し可能なメモリ内にロードされている秘密鍵をプロセッサによって削除させる、セキュア・ソフトウェア・アプリケーションの少なくとも1つの命令コードを含む読取り専用メモリ(ROM)を備える、請求項10または11に記載の端末。
  13. 前記プロセッサのリセット後、読出しを1回だけ行うことが可能であり、前記秘密鍵を記録する読取り専用ワンスメモリと、
    前記読取り専用ワンスメモリに書き込まれている前記秘密鍵から前記実行専用ルーチンの命令コードを作成し、前記実行専用ルーチンの前記命令コードを前記実行専用メモリ内にロードするセキュア初期化ルーチンプログラムを有する読取り専用メモリと
    を備える請求項10または11に記載の端末。
  14. 前記実行専用メモリは、命令読出し動作だけを許可し、データ読出し動作は禁止するトランザクション・デコーダを有する、請求項13に記載の端末。
  15. 前記端末は、移動電話である、請求項10乃至14のいずれか一項に記載の端末。
JP2008524653A 2005-08-03 2006-08-01 秘密鍵を保護する、セキュア端末、プログラム、および方法 Expired - Fee Related JP5114617B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP05300649.0 2005-08-03
EP05300649 2005-08-03
PCT/IB2006/052616 WO2007015204A2 (en) 2005-08-03 2006-08-01 A secure terminal, a routine and a method of protecting a secret key

Publications (2)

Publication Number Publication Date
JP2009504061A JP2009504061A (ja) 2009-01-29
JP5114617B2 true JP5114617B2 (ja) 2013-01-09

Family

ID=37708991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008524653A Expired - Fee Related JP5114617B2 (ja) 2005-08-03 2006-08-01 秘密鍵を保護する、セキュア端末、プログラム、および方法

Country Status (8)

Country Link
US (1) US8689338B2 (ja)
EP (1) EP1913511B1 (ja)
JP (1) JP5114617B2 (ja)
KR (1) KR100970040B1 (ja)
CN (1) CN101238473B (ja)
AT (1) ATE499658T1 (ja)
DE (1) DE602006020288D1 (ja)
WO (1) WO2007015204A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886162B2 (en) * 2007-05-29 2011-02-08 International Business Machines Corporation Cryptographic secure program overlays
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US8826006B2 (en) * 2008-10-31 2014-09-02 Motorola Solutions, Inc. Method and device for enabling a trust relationship using an unexpired public key infrastructure (PKI) certificate
US8812959B2 (en) * 2009-06-30 2014-08-19 International Business Machines Corporation Method and system for delivering digital content
CN102056339B (zh) * 2009-11-02 2015-06-03 中兴通讯股份有限公司 移动终端及其***数据防克隆方法
US9047263B2 (en) * 2013-01-24 2015-06-02 Dell Products L.P. System and method for secure SMI memory services
EP2930663B1 (en) * 2014-04-11 2020-07-01 Nxp B.V. Electronic circuit chip for an RFID tag with a read-only-once functionality
KR20160039922A (ko) * 2014-10-02 2016-04-12 삼성전자주식회사 영상처리장치 및 그 제어방법
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
WO2016109558A1 (en) * 2014-12-29 2016-07-07 Rubicon Labs, Inc. System and method for secure code entry point control
GB201511385D0 (en) * 2015-06-29 2015-08-12 Nagravision Sa Secure programming of secret data
US10193872B2 (en) * 2015-08-12 2019-01-29 Cyphyx, Llc System and methods for dynamically and randomly encrypting and decrypting data
US10235303B2 (en) * 2015-09-10 2019-03-19 Qualcomm Incorporated Secure entry and exit for software modules protected by controlled encryption key management
US20180004946A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Regulating control transfers for execute-only code execution
KR102432451B1 (ko) * 2018-01-10 2022-08-12 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
US10785028B2 (en) * 2018-06-29 2020-09-22 Intel Corporation Protection of keys and sensitive data from attack within microprocessor architecture
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US6317742B1 (en) * 1997-01-09 2001-11-13 Sun Microsystems, Inc. Method and apparatus for controlling software access to system resources
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
FR2792141B1 (fr) * 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
JP2002014871A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd コンテンツチェック方法、コンテンツ更新方法、および処理装置
JP2002082909A (ja) 2000-09-07 2002-03-22 Fujitsu Ltd 情報管理装置および情報管理システム
JP3666400B2 (ja) * 2001-03-07 2005-06-29 オムロン株式会社 監視装置および方法、記録媒体、並びにセキュリティシステム
JP2002351563A (ja) * 2001-05-30 2002-12-06 Canon Inc 情報処理装置、情報処理方法およびプログラム
JP3773431B2 (ja) * 2001-09-20 2006-05-10 松下電器産業株式会社 鍵実装システムおよびこれを実現するためのlsi、並びに鍵実装方法
DE10146516A1 (de) * 2001-09-21 2003-04-24 Infineon Technologies Ag Programmgesteuerte Einheit
JP4145118B2 (ja) 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
JP3904921B2 (ja) 2001-12-27 2007-04-11 株式会社 エヌティーアイ 情報処理装置及びアクセス制御方法
US7313705B2 (en) * 2002-01-22 2007-12-25 Texas Instrument Incorporated Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
US20030154355A1 (en) * 2002-01-24 2003-08-14 Xtec, Incorporated Methods and apparatus for providing a memory challenge and response
JP3863447B2 (ja) * 2002-03-08 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 認証システム、ファームウェア装置、電気機器、及び認証方法
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
JP3950010B2 (ja) 2002-05-17 2007-07-25 株式会社エヌ・ティ・ティ・ドコモ データ処理装置、プログラムおよび記録媒体
JP3979194B2 (ja) * 2002-06-25 2007-09-19 ソニー株式会社 情報記憶装置、およびメモリアクセス制御方法、並びにコンピュータ・プログラム
JP2004046532A (ja) 2002-07-11 2004-02-12 Ricoh Co Ltd 情報処理装置、情報処理方法および記録媒体
US7826613B2 (en) * 2002-08-19 2010-11-02 Qualcomm Incorporated Stream cipher cryptographic system and method
FR2845493A1 (fr) * 2002-10-04 2004-04-09 Canal Plus Technologies Logiciel embarque et procede d'authentification de celui-ci
ITTO20020939A1 (it) * 2002-10-30 2004-04-30 Tecnost Sistemi S P A Sistema distribuito per l'emissione di valori e o titoli
DE10251839A1 (de) * 2002-11-07 2004-05-19 Robert Bosch Gmbh Verfahren zur sicheren Überprüfung eines Speicherbereiches eines Mikrocontrollers in einem Steuergerät und Steuergerät mit einem geschützten Mikrocontroller
FR2849311B1 (fr) * 2002-12-18 2005-04-15 France Telecom Procede de communication entre deux unites, et terminal mettant en oeuvre le procede
US7051251B2 (en) * 2002-12-20 2006-05-23 Matrix Semiconductor, Inc. Method for storing data in a write-once memory array using a write-many file system
JP4067985B2 (ja) * 2003-02-28 2008-03-26 松下電器産業株式会社 アプリケーション認証システムと装置
US7107388B2 (en) * 2003-04-25 2006-09-12 Intel Corporation Method for read once memory
US20060004829A1 (en) * 2004-05-27 2006-01-05 Silverbrook Research Pty Ltd Rolling keys

Also Published As

Publication number Publication date
US20080229425A1 (en) 2008-09-18
WO2007015204A2 (en) 2007-02-08
JP2009504061A (ja) 2009-01-29
WO2007015204A3 (en) 2007-07-05
KR100970040B1 (ko) 2010-07-16
EP1913511B1 (en) 2011-02-23
CN101238473A (zh) 2008-08-06
CN101238473B (zh) 2011-10-26
DE602006020288D1 (de) 2011-04-07
EP1913511A2 (en) 2008-04-23
ATE499658T1 (de) 2011-03-15
KR20080031998A (ko) 2008-04-11
US8689338B2 (en) 2014-04-01

Similar Documents

Publication Publication Date Title
JP5114617B2 (ja) 秘密鍵を保護する、セキュア端末、プログラム、および方法
EP2854066B1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
US8006095B2 (en) Configurable signature for authenticating data or program code
US7010684B2 (en) Method and apparatus for authenticating an open system application to a portable IC device
US8656146B2 (en) Computer system comprising a secure boot mechanism
US8478973B2 (en) System and method for providing a secure application fragmentation environment
CN107003936B (zh) 具有非可读页的存储器保护
JP5415531B2 (ja) 安全なメモリ管理システム及び方法
US20040093505A1 (en) Open generic tamper resistant CPU and application system thereof
US8639946B2 (en) System and method of using a protected non-volatile memory
US9390264B2 (en) Hardware-based stack control information protection
CN110020561B (zh) 半导体装置和操作半导体装置的方法
US11269986B2 (en) Method for authenticating a program and corresponding integrated circuit
CN112948863B (zh) 敏感数据的读取方法、装置、电子设备及存储介质
CN110569205A (zh) 安全***单芯片及其操作方法
US20050210274A1 (en) Apparatus and method for intellectual property protection using the microprocessor serial number

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110425

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110506

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110525

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120223

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120622

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120723

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees