JP2008541211A - ファームウェアへの認証の追加実装 - Google Patents

ファームウェアへの認証の追加実装 Download PDF

Info

Publication number
JP2008541211A
JP2008541211A JP2008509281A JP2008509281A JP2008541211A JP 2008541211 A JP2008541211 A JP 2008541211A JP 2008509281 A JP2008509281 A JP 2008509281A JP 2008509281 A JP2008509281 A JP 2008509281A JP 2008541211 A JP2008541211 A JP 2008541211A
Authority
JP
Japan
Prior art keywords
memory
accessory
program code
value
firmware program
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.)
Granted
Application number
JP2008509281A
Other languages
English (en)
Other versions
JP4898790B2 (ja
JP2008541211A5 (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 JP2008541211A publication Critical patent/JP2008541211A/ja
Publication of JP2008541211A5 publication Critical patent/JP2008541211A5/ja
Application granted granted Critical
Publication of JP4898790B2 publication Critical patent/JP4898790B2/ja
Active 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
    • 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
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/2129Authenticate client device independently of the user

Landscapes

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

Abstract

【課題】本発明は、埋め込みシステム又は付属品におけるプログラムコードの整合性を検証するための、安価で、ソフトウェアベースのセキュリティ追加実装ソリューションを、高価なハードウェアの交換によらずに提供する。プログラムコードイメージを格納するために使用できる付属品上の全ての未使用メモリは、ランダムデータにより満たされる。ホストシステムはまた、ランダムデータを含む付属品のプログラムイメージのコピーを局所的に格納する。ホストシステムは、付属品上のメモリアドレス又はメモリレンジのリストを付属品に送信し、それは常に異なり本質的にランダムである。付属品は、セキュアハッシュ関数への入力として、メモリアドレスに格納された値を使用してダイジェストを生成する。ホストシステムは、埋め込まれたプログラムコードの整合性を、付属品により生成され、そこから返された結果としてのダイジェストを検証することにより検証する。
【選択図】図1

Description

本発明は、一般的には暗号法の分野に関する。より特別には、本発明は、埋め込みシステムにおけるプログラムコードの整合性を検証するための、安価で、ソフトウェアベースのセキュリティ追加実装ソリューションに関する。
コンピュータシステムは、典型的には、周辺装置をシステムの機能を補完するために使用する。このような状況においては、コンピュータシステムは、ホストシステムと称され、その周辺装置は、付属品と称される。付属品は通常、プログラムコード、マイクロコード、またはファームウェアでプログラムまたは再プログラムできるマイクロプロセッサまたはマイクロコントローラを使用して構築されているので、計算が可能である。これら付属品の機能と正確な操作は、付属品内に常駐するプログラムの正確さに依存している。
プログラムコードにおいて発見された欠陥のために、既に設置された付属品をアップグレードしたり、追加装置を取り付けたりする必要が起こることがある。例えば、医療機器のような高価な適用において危険度の高い装置をアップグレードすることが必要になることがある。これらのタイプの装置は、しばしば政府により規制されている。欠陥が発見され、再設計が進行中のときは、即座の暫定ソリューションが利用できる。従って、そのようなソリューションを既に現場に設置された装置に適用することが望ましい。
個人は時として、付属品のプログラムコードを、ホストシステムの観点からは不正な動作を行い、しかも、ホストシステムには通常の動作を報告することにより、ホストシステムが不都合は何も起きていないと思わせるように、悪意を持って改竄することがある。アップグレードを行う前に、付属品プログラムコードのいかなる不正な変更も検出し、アップグレードはそのような不正な変更が検出されない場合のみに行うことが望ましい。
この問題に対する1つのソリューションは、付属品が現場に設置される前に、例えば、容認される前のすべてのマイクロコードのアップグレードを認証する信頼できるマイクロコントローラを使用して、付属品に対してセキュリティ設計を行うことである。しかし、最初に付属品が現場に設置されるときは、セキュリティに対する関心および危険レベルは低く、時間の経過と共に、状況が変わって、安全でない付属品に関連する危険性が思いがけなく増大するというケースがたまにある。付属品を交換し、またはハードウェアの変更を行うためのコストは高すぎると考えられており、そのため、ホストシステムは、高リスクの環境において安全でない付属品を有することになる。
この問題に対する単純なソリューションは、ホストシステムに、付属品からのすべてのプログラムコードを読み取らせ、セキュアハッシング関数を使用してダイジェストを計算させ、その結果を、ある局所的に維持されるダイジェストと比較させることである。このアプローチには、2つの問題がある。第1番目として、付属品は、それがオリジナルのプログラムコードのコピーを維持し、ホストシステムからの読み込み要求を不正に取得し、ホストシステムに、オリジナルの格納プログラムコードのイメージを戻すように再プログラムできるということである。第2番目として、付属品に格納されたプログラムコードは、低速なシリアル接続を介して効果的に送信し、または遠隔的にアクセスするには大きすぎるということである。これらの例においては、ホストシステムに検証のために返されるダイジェストを計算することはより効果的である。
チャレンジレスポンスメカニズムを使用したとしても、単にダイジェストを計算するだけでは、付属品上のどこかのメモリにオリジナルのプログラムコードのコピーを維持している改竄された付属品を効果的に無効にすることはできない。
本発明の目的は、上記の不都合点の少なくとも1つを緩和あるいは除去することである。
一般的には、本発明は、プログラムコードイメージを格納するために使用できる付属品装置上の未使用のすべてのメモリを、高エントロピーのランダムデータで満たすことを含む。ホストシステムはまた、ランダムデータを含む付属品のメモリイメージの信頼できるコピーへのアクセスを有していなければならない。
付属品上の既存のプログラムは、ホストシステムにより呼び出し可能なアプリケーションプログラムインタフェース(API)を有している。付属品は、もしAPIを1つも有していないときは、必要であれば書き換えて、追加のAPIを含むことができる。ホストシステムはAPIを使用して、付属品上のメモリアドレスまたはメモリレンジのリストを付属品に送信する。このリストは、付属品により時間的に先行して推測されることを防止するために、常に内容が異なり、完全に予測不可能である。付属品は、リストと、リストにより参照された付属品装置のメモリの値から決定された代表値を生成する。好ましくは、代表値は、セキュアハッシュ関数への入力としての、供給されたメモリアドレスにおけるメモリ値を使用するダイジェストである。付属品により生成される、結果としてのダイジェストは、検証のためにホストシステムに返される。
メモリをランダムデータで埋めることにより、攻撃者は、プログラムイメージを交換し、古いプログラムイメージを維持するための付属品上の十分な領域を有することができない。プログラムイメージのみを交換しても、その前に、ハードウェアの交換を攻撃者に要求する、付属品に追加メモリを追加することなしには、攻撃者が付属品を改竄することはできない。メモリをランダムデータで埋めることにより、そして、このように暗黙的に認証過程にランダムデータを含むことにより、攻撃者は、検出されることなくプログラムイメージへの不正な変更を加えることが更にできなくなる。
最終的な結果は、ホストシステムが、付属品のプログラムコードは悪意を持って変更されていないというある保証を有することができることである。
以下の説明およびそこで記載される実施形態は、本発明の原理の特別な実施形態の、例または複数の例を示すことにより提供される。これらの例は、本発明のそれらの原理を説明するためのものであり、それに制限されるものではない。以下の記述において、明細書および図を通して、類似の部分は、同じ個々の参照番号が付けられている。
図1を参照すると、付属品22と通信するホスト20が示されている。ホスト20は一般的には、CPU24と、CPU24にアクセス可能なホストメモリ装置26と、これもまたCPU24にアクセス可能なホスト格納媒体28と、ある入出力装置(図示せず)を有するコンピュータシステムである。アプリケーションプログラム30は、CPU24上で実行される。アプリケーションプログラム30は、ホスト格納媒体28に格納でき、ホスト格納媒体28は、ホスト20に永続的にインストールされ、またはホスト20から除去可能であり、またはホスト20に遠隔アクセス可能である。アプリケーションプログラム30は、付属品22と通信し、その動作を指示する。
付属品22は、一般的にはある計算能力を有している。典型的には、マイクロプロセッサまたはマイクロコントローラ32を有している。付属品22もまた、十分な計算能力を有する他のタイプのプログラマブルプロセッサを有している。例えば、付属品22は、DSP(デジタル信号プロセッサ)またはFPGA(フィールド・プログラマブル・ゲート・アレイ)を備えていてもよい。プロセッサまたはマイクロコントローラ32は、一般的にはメモリ格納空間へのアクセスを有しており、メモリ格納空間は、付属品メモリ装置34と、揮発性メモリ装置36に分割できる。ファームウェアプログラムコード38、または埋め込みプログラムコード、またはマイクロコードは、マイクロコントローラ32上で実行され、ホスト20上で実行されるアプリケーションプログラム30を補完し、更に、付属品22の動作を制御する。
ファームウェアプログラムコード38および永続的(不変)データは、付属品メモリ装置34上または任意の永続的媒体上に格納できる。揮発性データ、つまり、プログラムの作動状態に関連するデータは、揮発性メモリ装置36上に格納される。付属品メモリ装置34または揮発性メモリ装置36のいずれかはまた、半永続的データ、つまりパワーサイクルの間は永続的であるが、各パワーサイクルの間にプログラム的に改変できるデータを格納するためにも使用される。
データリンク40は、アプリケーションプログラム30とファームウェアプログラムコード38の間の通信チャネルを必要なときに提供する。データリンク40は、有線でもワイヤレスでもよい。例えば、接続ケーブルであっても、無線周波数接続であってもよい。ホスト20と付属品22の間の直接接続であってもよく、または、ある仲介ホストシステムを通して中継されてもよい。データリンク40は恒久的であってもよく、またはより好ましくは、オンデマンドで確立される接続である。
アプリケーションプログラム30とファームウェアプログラムコード38のそれぞれは、お互いに通信するためのアプリケーションプログラムインタフェース(API)を有している。特に、後述するが、ファームウェアプログラムコード38は、アプリケーションプログラム30が呼び出して、メモリアドレスのリストを転送するためのAPIと、それを通してファームウェアプログラムコード38が、メモリアドレスのリストの内容に基づいて計算されたダイジェストのような代表値を返すAPIを有している。概念的にはファームウェアプログラムコード38は、2つの分離したAPIを有していると記述されるが、これらの2つのAPIは、実際には単一のAPIとして提供されてもよい。アプリケーションプログラム30もまた、メモリアドレスのリストを送信し、返される代表値を受信するための対応するAPIを有している。
ここでは、より揮発性が高いデータの格納のために使用される傾向にあるホストメモリ装置26と、より永続性が高いデータの格納のために使用される傾向にあるホスト格納媒体28があると区別されているが、ホスト20は、揮発性および永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。同様に、付属品22は、揮発性および永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。
理解されるであろうが、ホスト20は、汎用コンピュータ、カスタマイズされた特別用途コンピュータ、または他のプログラマブル計算装置であってもよい。更に、ホスト20は単一コンピュータシステムとして示され、記述されているが、それは、単に説明に都合がよいからである。ホスト20は、集合的に組み合わされたシステムであり、いくつかのコンピュータシステムを含み、上記のようにタスクを実行すると理解される。当業者には理解できることであるが、ホスト20により実行される計算および格納は、いくつかのネットワーク化されたコンピュータに分配してもよく、それによりシステムの機能および上述した方法の性能に影響を与えることはない。
図2および図3を参照すると、ファームウェアプログラムコード38の整合性を検証する方法の例が詳細に記載されている。図2において、点線の左側は、ホスト20により、またはホスト20の構成要素上で一般的に実行される操作である。図2において点線の右側は、付属品22または付属品22の構成要素上で一般的に実行される操作である。
通常、ファームウェアプログラムコード38のサイズは、付属品メモリ装置34上で利用できるメモリのサイズよりも小さい。つまり、付属品メモリ装置34は、通常は、未使用メモリ空間、つまり、ファームウェアプログラムコード38にもファームウェアプログラムコード38に関連するデータにも占有されていない空間を有する。敵対者が未使用メモリ空間を使用して任意の不正コードを格納するという機能を制限するために、検証に先立ち、すべての未使用メモリ空間は、ランダムデータで満たされる。ランダムデータは、好ましくは、高エントロピーを有する。高エントロピーのランダムデータは、圧縮するのが困難な傾向にあり、一方、ランダム性を有するが、低エントロピーのデータは、圧縮しやすい傾向がある。好ましくは、付属品メモリ装置34のすべてのメモリ空間は、非圧縮性データで占有される。すべてのメモリ空間を非圧縮性データで満たすことは、敵対者がデータを圧縮して、それによりメモリ空間を得ようとすることを防止する。高エントロピーランダムデータを生成するために、多数の乱数生成アルゴリズムが利用できる。例えば、米国における米国立標準技術研究所(NIST)により発刊された「デジタル署名規格」である、米国連邦情報処理標準規格公告186-2の「Change Notice 1(変更通知)」で指定された乱数生成アルゴリズムを使用できる。更に、エントロピーのより低いデータのブロック暗号化は、より高いエントロピーを生成する傾向にある。
ステップ110において、付属品装置22上のすべての未使用メモリは、ランダムデータにより満たされ、埋められたメモリイメージの信頼できるコピーは、後の参照または使用のために検索される。このステップは、付属品装置22により実行することもできるが、すべての未使用メモリをランダムに生成された高エントロピーデータで埋めることを可能にする既存のツールがある。一般的には、データのランダム性は、未使用メモリ空間を満たすために採用されるツールにより制御される。好ましくは、メモリの埋め込みは、付属品が市場に出される前に、開発設備または製造現場において実行される。
ランダムデータで埋めた後、付属品22上のすべてのメモリ空間は占有される。図3を参照すると、付属品メモリ空間200は、連続するプログラムコードおよび永続的データ空間202と、未使用メモリ空間204に分割される。未使用メモリ空間204は、ランダムデータ206で満たされる。図3は、ファームウェアプログラムコード38がメモリの連続セグメント、つまり、プログラムコードおよび永続的データ空間202の連続部分を占有しているが、ファームウェアプログラムコード38が、いくつかの離散メモリセグメントを占有することもできる。同様に、永続的(不変)データは、メモリの連続セグメントまたはいくつかの離散メモリセグメントを占有することもできる。プログラムコードおよび永続的データ空間202は連続してもいなくても、未使用すべてのメモリ空間はランダムデータにより満たされ、または埋められる。
理解されることではあるが、付属品メモリ空間200は、揮発性メモリ装置36上の揮発性データにより占有されたメモリ空間を含むことができる。検証工程において変化しない(またはよく定義された方法で変化しない)メモリ要素は検証できる。付属品メモリ空間200はまた、シリアルEEPROMのような「周辺」メモリ装置上のデータにより占有されたメモリ空間も含むことができる。実際、付属品メモリ空間200は、付属品メモリ装置34と揮発性メモリ装置36両者の物理的空間外の部分さえも含むことができる(しかし、これらのアドレスは、物理的アドレスの陰の部分として折り返されている)。当然、これらは、付属品22(およびホスト20)が任意の、そしてすべての利用できるメモリ空間にアドレスできるメモリアドレス方式をサポートし、バンク切替え、オーバーレイ、およびシャドウイングのような特別なメモリ構成をサポートすることを要求する。実際、異なるメモリアドレス方式および特別なメモリ構成を、セキュリティをより高めるために有効に利用することができる。例えば、検証されたメモリアドレスが物理的メモリ空間の外側のメモリ空間に対応するときは、互換性があり、しかしより大きなメモリ領域を必要とする修正されたプログラムが、必然的により大きな装置上で起動中に、オリジナルプログラムと、より小型の装置の検証工程をエミュレートすることは難しい。
付属品22上のメモリのイメージは、占有されていないメモリ空間は残されていないが、後の参照または使用のために検索される。イメージは、信頼される方法で生成されて保存される。例えば、イメージは、付属品22の製造現場でのプログラミングのような、信頼できる操作中に付属品22から取得できる。工場が付属品イメージを大量にプログラムし、イメージを、これもまたホストコードとデータイメージを生成する開発設備の別の場所で生成することも可能である。イメージがどのように生成されようとも、イメージは信頼できる方法で生成され提供される。イメージが保存されるときは、イメージはまた信頼できる方法で保存される。最終的な結果、イメージの信頼できるコピーが、必要なときに、取得できる。
ホスト20は、占有されていないメモリ空間は残されていない、付属品22上のメモリのイメージの信頼できるコピーをステップ120で取得する。一般的に、ホスト20は、イメージが改竄されるリスクを最小限に抑えるために局所的には信頼できるイメージを格納しない。その代わりに、ホスト20には、イメージの信頼できるコピーへのアクセスが提供される。ここではただ1つの信頼できるメモリイメージにしか言及しなかったが、付属品22のいくつかの異なるメモリイメージをホスト20が利用できるようにしなければならないようにすることも可能である。これは、付属品22が、その製造者により、時間の経過と共に、何回かアップグレードされることもあるからである。それぞれの以前のアップグレードは、異なるメモリイメージという結果になる。付属品22が現場でアップグレードされると、付属品22は、いくつかのアップグレードのいずれかの1つに対応するか、またはそのオリジナルバージョンに対応する。
理解されるであろうが、このステップは、メモリイメージの信頼できるコピーの保存に続く次のステップとして説明されているが、これら2つのステップは、何日も、何ヶ月も、または数年も離れていることもある。メモリイメージの信頼できるコピーが付属品の製造中に保存され、イメージの信頼できるコピーが、何年も後になって、現場において展開された付属品の修理が行われるときに検索されることもある。更に、このステップは、ホスト側の第1ステップとして説明されたが、これは必要なことではない。このステップは、予測代表値を計算する前に完了する必要があり、計算前であれば、いつでも実行できる。
図2を参照すると、ホスト20はステップ130で、付属品22に、検証工程を開始するためのメモリアドレスのリストを送信する。このリストは、付属品メモリ装置34上のメモリアドレスのレンジ、またはメモリアドレスのいくつかのレンジである。例えば、図3は、ランダムに選択された3つのメモリセグメントまたはメモリレンジを示している。それらは、第1開始アドレス210と第1終了アドレス212の間の第1メモリレンジ208、つまりメモリセグメントAと、第2開始アドレス216と第2終了アドレス218の間の第2メモリレンジ214、つまりメモリセグメントBと、第3開始アドレス222と第3終了アドレス224の間の第3メモリレンジ220、つまりメモリセグメントCである。
このリスト、またはメモリアドレスのレンジは、本質的にランダムであり、または少なくとも予測不可能であり、それによりレンジを付属品22が予測することはできない、つまり、リストを、付属品22上に格納されているファームウェアコードを悪意を持って改竄しようと試みる敵対者が予測することはできない。開始点と終了点の選択が予測不可能であるばかりでなく、選択されたメモリレンジの順番も予測不可能である。例えば、リストは、セグメントCのアドレスを第1レンジとして、セグメントAのアドレスを第2レンジとして、そしてセグメントBのアドレスを第3レンジとして含むことができる。選択されたメモリレンジの順番を変更することにより異なるリストが生成され、以下に説明するように、ステップ140において異なる代表値が生成されることになる。このリストは、典型的にはホスト20により生成される。しかし、リストは、それが完全に予測不可能であり、それが生成されるたびに異なっている限りいかなる方法で生成してもよい。ホスト20は、一般的には、より大きな計算能力を有しているので、ホスト20は、典型的には、リストを生成してそれを付属品22に送信する。
例としての1つの実践において、リストに含まれるメモリアドレスレンジの1つは、付属品22の操作にとって重要であると考えられるプログラムコードを常に含んでいる。つまり、ホスト20は、アプリケーションプログラム30の全体の重要コードを含むメモリセグメントを常に含んでいる。重要なコードを含むメモリは常に選択されたメモリレンジに含まれるが、重要コードを含むメモリセグメントは、上述したように、リスト内にランダムに配置することができる。
メモリアドレスのリストを受信すると、付属品22はステップ140において、入力としてメモリアドレスのリストを取る値と、供給されたアドレスでのメモリ値を生成する。生成された値は、供給されたアドレスにおけるメモリ値の代表である。生成された値が、リストと、供給されたメモリアドレスでの実際の値を代表するのであれば、多数のアルゴリズムを使用して値を生成することができる。例えば、供給されたメモリアドレスのメモリの値はまず読み込まれて、ストリングとして連結することができる。このストリングは、従って代表値である。好ましくは、代表値は、セキュアハッシュアルゴリズムを使用して計算されたダイジェストである。セキュアハッシュアルゴリズムは、供給されたメモリアドレスにおけるメモリ値をその入力としてダイジェストを計算する。SHA(セキュアハッシュアルゴリズム)のセキュリティ特性を有するいかなるダイジェスト用アルゴリズムも使用することができる。このセキュアハッシュ関数は、例えば、SHA−1またはMD5に基づく1つである。好ましくは、付属品手段に既に存在するSHAのセキュリティ特性を有するダイジェスト用アルゴリズムを使用できるか、または付属品22の特別なプロセッサタイプでの効率に依存して、SHA−1またはSHA−256の1つを使用することができる。付属品22は、結果としての代表値を、ステップ150においてホスト20に返す、つまり送信し、それはステップ160において、ホスト20により受信される。
図3に示される例は、永続的データおよびファームウェアプログラムコード38により全体が占有されているメモリ空間に対応する第1メモリレンジ208と、ランダムデータで満たされた、未使用メモリ空間204に対応する第3メモリレンジ220と、部分的にファームウェアプログラムコード38と、部分的にランダムデータを含むメモリのセクションに対応する第2メモリレンジ214を有する。理解されるであろうが、他の選択も可能である。重要なことは、リストの可能なセット(ホスト20により要求され得る)が、十分に大きくて、アドレスの選択が完全に予測不可能であるということである。これは、計算が、格納および計算という両者の観点から見て、対価の高い、または実現不可能であるので、対応する代表値のすべて(またはその意味のあるサブセットでさえも)を予め計算することを阻止する。
ファームウェアプログラムコード38は、これらのセキュアハッシングアルゴリズムの1つまたはいくつかを実践するモジュールを有することができる。1つのセキュアハッシングアルゴリズムのみが実践されるときは、付属品は実践されたセキュアハッシング関数を使用してダイジェストを計算し、受信したメモリレンジを入力とし、結果としてのダイジェストをホストシステムに送信する。ファームウェアプログラムコード38が2つ以上のセキュアハッシングアルゴリズムを実践するときは、実践されたセキュアハッシングアルゴリズムの1つを使用してダイジェストが生成される。結果としてのダイジェストは、使用されたセキュアハッシングアルゴリズムの表示と共にホスト20に送信される。理解されるであろうが、ホスト20または付属品22のいずれかは、特別なセキュアハッシングアルゴリズムを選択して、ダイジェストを生成するために使用したセキュアハッシングアルゴリズムを他に知らせてもよい。
ファームウェアに追加実装するときは、ファームウェアプログラムコード38は、ランダムに生成されたメモリアドレスのリストを受信するためのAPIを有していなくてもよい。また、セキュアハッシュアルゴリズムを使用してダイジェストを生成するモジュールも有していなくてよい。そのような付属品に対して安全なアップグレード、つまり、ファームウェアコードが認証できた場合のみに実行されるアップグレードを準備するために、まず、認証機能を付属品上に追加実装することが必要である。つまり、まず、付属品22上の既存のプログラムを書き換え、ホスト20により、メモリアドレスのリストを受け取るために呼び出すことができる追加APIと、リストから計算された代表値をホストに返すことができる追加APIを含むようにすることが必要である。書き換えられたファームウェアプログラムは、代表値を計算するためのモジュールまたはダイジェストを計算するためのセキュアハッシングアルゴリズムを実行する1つのまたは複数のモジュールも含む。
ホスト20が結果としてのダイジェストまたは代表値をステップ160において付属品22から受信した後、ホスト20は、付属品のメモリイメージの信頼できるコピーを使用して予測代表値をステップ170において計算する。好ましくは、付属品22により使用されたアルゴリズムと同じものがホスト20により使用されて、予測代表値が生成される。しかし、これは必要なことではない。ホスト20により使用されたアルゴリズムは、予測代表値が受信した代表値と同じであるために、付属品22により使用されたものと等価であることのみが必要である。付属品22が2つ以上のセキュアハッシングアルゴリズムを実行し、しかし、その1つのみを使用してダイジェストを計算すると、ホスト20は、同じまたは等価なアルゴリズムを選択して、予測代表値を計算する。
ステップ180において、ホスト20は、付属品22から受信した代表値を、付属品プログラムイメージを検証するために局所的に計算された予測代表値と比較する。ファームウェアプログラムコード38は、これらの2つの値が同一またはお互いに等価でなければ認証されない。
上述したように、本方法の第1ステップは、付属品上のすべてのメモリが占有されていることを確実にすることである。付属品の機能を実行するために使用されるコンパイルされたプログラムが付属品上の物理的メモリよりも小さい場合は、残りの部分は、完全にランダムな、高エントロピーデータにより埋め込まれる。埋め込まれたデータは、メモリイメージの一部となり、追加実装アップグレードの間、ホストシステムにより利用されるようになる。
更なる例としての実践において、ホスト20は、データストリングをステップ130において、メモリアドレスのリストと共に付属品22に送信する。ストリングはランダムであってもよく、または、付属品(または、ホストシステムまでも)の固有識別情報のような識別情報を含んでいてもよい。ストリングが、セキュアハッシュ関数への補助入力として使用されるときは、本方法は典型的には、チャレンジレスポンス法と称される。しかし、付属品への不法なプログラムコードの注入を防止することは、依然として、メモリイメージ中のランダムな埋め込みデータに依存している。
種々の例が詳細に説明された。当業者は、多数の修正、適合、および変形が、本発明の範囲を逸脱することなく上記の例になされることを理解するであろう。上記の好適な実施例における変更またはそこへの追加は、本発明の性質、精神、または範囲から逸脱することなくなされるので、本発明は、これらの詳細に制限されず、付随する請求項によってのみ制限される。
説明の目的で、しかしこれに制限されることなく、実施形態が、添付された図面を参照して、例により、より詳細に説明される。
付属品と通信するホストシステムを示すブロック図である。 図1に示された付属品におけるプログラムコードの整合性を検証する方法のステップを示すフローチャート図である。 ランダムデータで埋められた、図1に示された付属品上の未使用メモリ空間と、ホストシステムによりランダムに選択された付属品上のメモリレンジを模式的に示している。

Claims (12)

  1. 付属品に埋め込まれたプログラムコードの整合性を検証する方法であって、前記付属品は、プログラムコードと、プログラムコードに関連するデータを格納するメモリ装置を有し、メモリ装置のすべての未使用メモリ空間はランダムデータで満たされ、ホストは、メモリ装置のメモリイメージへのアクセスを有し、前記方法は、
    付属品へメモリアドレスのリストを送信するステップと、
    付属品から値を受信し、前記値は、前記リスト中の指定されたメモリアドレスにおけるメモリの値から生成され、それを代表しているステップと、
    メモリイメージと前記リストから予測値を生成するステップと、
    付属品から受信した前記値を、前記予測値と比較するステップとを含み、
    プログラムコードの整合性は、前記受信値が前記予測値と等価であれば検証される方法。
  2. 前記値は、前記リストにおいて指定された連続する前記指定されたメモリアドレスにおけるメモリの前記値を連結したものである請求項1に記載の方法。
  3. 前記値は、セキュアハッシングアルゴリズムを使用して、前記指定されたメモリアドレスにおけるメモリの前記値をそこへの入力として計算されたダイジェストであり、前記予測値は、前記セキュアハッシングアルゴリズムと等価な第2セキュアハッシングアルゴリズムを使用して計算された予測ダイジェストである請求項1に記載の方法。
  4. ランダムデータストリングを付属品に送信するステップを更に含み、
    ダイジェストは受信したランダムデータストリングを追加入力として計算され、予測ダイジェストは、ランダムデータストリングを第2入力として生成される請求項3に記載の方法。
  5. 付属品を、そのファームウェアプログラムコードを認証するために準備する方法であって、前記ファームウェアプログラムコードおよび、前記ファームウェアプログラムコードに関連するデータは前記付属品のメモリ装置に格納され、前記方法は、
    前記ファームウェアプログラムコードに、前記ファームウェアプログラムコードによりアドレス可能なメモリアドレスに対応するアドレスのリストをホストから受信するための第1APIを提供するステップと、
    前記ファームウェアプログラムコードに、前記リストと、前記リスト中で指定された前記アドレスにおけるメモリの値から代表値を生成するための暗号プログラムを提供するステップと、
    前記ファームウェアプログラムコードに、前記ホストへ前記代表値を返すための第2APIを提供するステップと、
    前記ファームウェアプログラムコードと前記データにより占有されていないメモリ装置のすべてのメモリ空間をランダムデータで満たすステップと、
    前記メモリ装置のメモリイメージを参照のために提供するステップと、を含み、
    前記ファームウェアプログラムコードは、認証操作において、前記代表値が予測代表値と等価である場合に認証され、前記予測代表値は、前記リストを使用して前記メモリイメージのコピーから前記ホストにより計算される方法。
  6. 前記代表値は、セキュアハッシングプログラムを使用して計算されたダイジェストである請求項5に記載の方法。
  7. 前記予測代表値は、前記セキュアハッシングアルゴリズムと等価な第2セキュアハッシングアルゴリズムを使用して計算された予測ダイジェストである請求項6に記載の方法。
  8. ランダムデータストリングを付属品に送信するステップを更に含み、
    ダイジェストは受信したランダムデータストリングを追加入力として計算され、予測ダイジェストは、ランラムデータストリングを第2入力として生成される請求項7に記載の方法。
  9. 認証可能ファームウェアプログラムコードを有する付属品であって、前記ファームウェアプログラムコードおよび前記ファームウェアプログラムコードに関連するデータは、前記付属品のメモリ装置に格納され、前記ファームウェアプログラムコードと前記データにより占有されていない前記メモリ装置のすべてのメモリ空間は、ランダムデータにより全体が占有され、前記付属品は、前記メモリ装置の外部格納メモリイメージを有し、前記ファームウェアプログラムコードは、
    前記ファームウェアプログラムコードによりアドレス可能な前記メモリ装置上のメモリアドレスに対応するアドレスのリストをホストから受信するためのAPIと、
    前記リストと、前記リストにおいて指定された前記アドレスにおけるメモリの値からダイジェストを生成するためのセキュアハッシュプログラムと、
    前記ダイジェストを前記ホストに返すための第2APIとを備え、
    前記ホストは、前記リストを使用して、前記メモリイメージの信頼できるコピーから予測ダイジェストを生成し、前記予測ダイジェストを、前記ファームウェアプログラムコードから返された前記ダイジェストと比較して、前記ファームウェアプログラムコードを認証する付属品。
  10. 認証可能ファームウェアプログラムコードを有する付属品であって、前記ファームウェアプログラムコードおよび前記ファームウェアプログラムコードに関連するデータは、前記付属品のメモリ装置に格納され、前記付属品は、前記メモリ装置の外部格納メモリイメージを有し、前記ファームウェアプログラムコードは、
    ホストからの入力を受信し、値をホストに返すためのインタフェースと、
    前記入力と、前記メモリ装置上の選択されたアドレスにおけるメモリの値から値を生成するプログラムを備え、
    前記ホストは、前記入力を使用して、前記メモリイメージの信頼できるコピーから予測値を生成し、前記予測値を、前記ファームウェアプログラムコードから返された前記値と比較して、前記ファームウェアプログラムコードを認証する付属品。
  11. 前記プログラムはセキュアハッシングプログラムであり、前記値は前記セキュアハッシングプログラムにより生成されたダイジェストである請求項10に記載の付属品。
  12. 前記入力は、ホストにより生成されたランダム値である請求項10に記載の付属品。
JP2008509281A 2005-05-05 2006-05-05 ファームウェアへの認証の追加実装 Active JP4898790B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67781605P 2005-05-05 2005-05-05
US60/677,816 2005-05-05
PCT/CA2006/000711 WO2006116871A2 (en) 2005-05-05 2006-05-05 Retrofitting authentication onto firmware

Publications (3)

Publication Number Publication Date
JP2008541211A true JP2008541211A (ja) 2008-11-20
JP2008541211A5 JP2008541211A5 (ja) 2009-06-25
JP4898790B2 JP4898790B2 (ja) 2012-03-21

Family

ID=37308333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008509281A Active JP4898790B2 (ja) 2005-05-05 2006-05-05 ファームウェアへの認証の追加実装

Country Status (6)

Country Link
US (1) US8566791B2 (ja)
EP (1) EP1877947A4 (ja)
JP (1) JP4898790B2 (ja)
CN (1) CN101218588B (ja)
CA (1) CA2606981C (ja)
WO (1) WO2006116871A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171041A (ja) * 2007-01-05 2008-07-24 Ricoh Co Ltd 画像形成装置、画像形成装置の起動方法、制御装置及び拡張ユニットの起動方法
JP2014525637A (ja) * 2011-09-07 2014-09-29 インテル・コーポレーション デバイスのファームウェア整合性の検証
WO2016047462A1 (ja) * 2014-09-26 2016-03-31 国立大学法人名古屋大学 書換検出システム及び情報処理装置
JP2016162213A (ja) * 2015-03-02 2016-09-05 日本電信電話株式会社 認証システム、認証結果利用サーバ及び認証方法
US10049232B2 (en) 2013-09-20 2018-08-14 National University Corporation Nagoya University Rewrite detection system, rewrite detection device and information processing device
WO2023162048A1 (ja) * 2022-02-22 2023-08-31 日本電信電話株式会社 認証システム、生成装置、生成方法および生成プログラム

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2590065C (en) * 2004-12-22 2014-12-09 Certicom Corp. Partial revocation list
US8467528B2 (en) * 2006-08-31 2013-06-18 Advanced Micro Devices, Inc. Multimedia content protection
US7841010B2 (en) 2007-01-08 2010-11-23 Apple Inc. Software or other information integrity verification using variable block length and selection
CA2618544C (en) * 2007-01-16 2015-07-21 Bally Gaming, Inc. Rom bios based trusted encrypted operating system
US8171275B2 (en) 2007-01-16 2012-05-01 Bally Gaming, Inc. ROM BIOS based trusted encrypted operating system
US20100174920A1 (en) * 2009-01-06 2010-07-08 Jonathan Peter Buckingham Data processing apparatus
US20110268265A1 (en) * 2010-04-30 2011-11-03 Lathrop Alexander M Disk media security system and method
US8918907B2 (en) * 2011-04-13 2014-12-23 Phoenix Technologies Ltd. Approaches for firmware to trust an application
EP2907075B1 (en) * 2012-10-11 2016-09-14 Irdeto B.V. Chip verification
EP2808818B1 (en) * 2013-05-29 2016-07-13 Nxp B.V. Processing system
CN104376276B (zh) * 2013-08-16 2017-12-29 昆达电脑科技(昆山)有限公司 嵌入式Linux设备映像文件验证方法
US10044654B2 (en) * 2014-10-30 2018-08-07 Oracle International Corporation Operating a match cooperative without handling personally identifiable information
US10616197B2 (en) * 2016-04-18 2020-04-07 Atmel Corporation Message authentication with secure code verification
US10114941B2 (en) 2016-08-24 2018-10-30 Altera Corporation Systems and methods for authenticating firmware stored on an integrated circuit
US10268823B2 (en) * 2016-10-27 2019-04-23 Wind River Systems, Inc. Device, system, and method for securing executable operations
CN107451468A (zh) * 2017-07-14 2017-12-08 杭州谷逸网络科技有限公司 一种控制设备的在线安全检测实现方法
US11036863B2 (en) 2017-08-01 2021-06-15 Dell Products, L.P. Validating an image using an embedded hash in an information handling system
US11720674B2 (en) * 2021-01-28 2023-08-08 Northrop Grumman Systems Corporation Systems and methods for malware detection
CN113360177A (zh) * 2021-06-07 2021-09-07 中电科思仪科技股份有限公司 一种用于矢量网络分析仪固件程序在线升级的装置及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207776A (ja) * 1996-12-31 1998-08-07 Motorola Inc ワイヤレス通信装置において電子情報を機密化する装置および方法
JPH11134189A (ja) * 1997-10-30 1999-05-21 Oki Electric Ind Co Ltd メモリカ−ドと認証デ−タ作成装置とメモリカ−ド装置
JP2004509392A (ja) * 2000-09-08 2004-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェアのセキュア認証済チャネル
JP2005301968A (ja) * 2003-08-12 2005-10-27 Ricoh Co Ltd 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
JP2006191491A (ja) * 2005-01-07 2006-07-20 Canon Inc 情報処理装置及びその方法並びにプログラム及び記憶媒体

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2205667B (en) 1987-06-12 1991-11-06 Ncr Co Method of controlling the operation of security modules
US6138236A (en) * 1996-07-01 2000-10-24 Sun Microsystems, Inc. Method and apparatus for firmware authentication
US6026293A (en) * 1996-09-05 2000-02-15 Ericsson Inc. System for preventing electronic memory tampering
GB9626241D0 (en) 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
WO2000018162A1 (en) 1998-09-18 2000-03-30 Qualcomm Incorporated Method and apparatus for authenticating embedded software in a remote unit over a communications channel
US6480800B1 (en) * 1999-02-08 2002-11-12 International Business Machines Corp. Method and system for generating self-testing and random input stimuli for testing digital systems
US6571335B1 (en) 1999-04-01 2003-05-27 Intel Corporation System and method for authentication of off-chip processor firmware code
AU2000263715B2 (en) * 2000-07-25 2004-11-04 Rovi Solutions Corporation System and method of verifying the authenticity of dynamically connectable executable images
GB0116568D0 (en) * 2001-07-06 2001-08-29 Ncipher Corp Ltd Firmware validation
US7142891B2 (en) * 2003-10-10 2006-11-28 Texas Instruments Incorporated Device bound flashing/booting for cloning prevention
US20060101310A1 (en) * 2004-10-22 2006-05-11 Nimrod Diamant Device, system and method for verifying integrity of software programs
US7818585B2 (en) * 2004-12-22 2010-10-19 Sap Aktiengesellschaft Secure license management
US20060143600A1 (en) 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
US7490352B2 (en) * 2005-04-07 2009-02-10 Microsoft Corporation Systems and methods for verifying trust of executable files

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207776A (ja) * 1996-12-31 1998-08-07 Motorola Inc ワイヤレス通信装置において電子情報を機密化する装置および方法
JPH11134189A (ja) * 1997-10-30 1999-05-21 Oki Electric Ind Co Ltd メモリカ−ドと認証デ−タ作成装置とメモリカ−ド装置
JP2004509392A (ja) * 2000-09-08 2004-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェアのセキュア認証済チャネル
JP2005301968A (ja) * 2003-08-12 2005-10-27 Ricoh Co Ltd 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
JP2006191491A (ja) * 2005-01-07 2006-07-20 Canon Inc 情報処理装置及びその方法並びにプログラム及び記憶媒体

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171041A (ja) * 2007-01-05 2008-07-24 Ricoh Co Ltd 画像形成装置、画像形成装置の起動方法、制御装置及び拡張ユニットの起動方法
JP2014525637A (ja) * 2011-09-07 2014-09-29 インテル・コーポレーション デバイスのファームウェア整合性の検証
US10049232B2 (en) 2013-09-20 2018-08-14 National University Corporation Nagoya University Rewrite detection system, rewrite detection device and information processing device
WO2016047462A1 (ja) * 2014-09-26 2016-03-31 国立大学法人名古屋大学 書換検出システム及び情報処理装置
JP2016072669A (ja) * 2014-09-26 2016-05-09 国立大学法人名古屋大学 書換検出システム及び情報処理装置
CN106716919A (zh) * 2014-09-26 2017-05-24 国立大学法人名古屋大学 重写检测系统及信息处理装置
JP2016162213A (ja) * 2015-03-02 2016-09-05 日本電信電話株式会社 認証システム、認証結果利用サーバ及び認証方法
WO2023162048A1 (ja) * 2022-02-22 2023-08-31 日本電信電話株式会社 認証システム、生成装置、生成方法および生成プログラム

Also Published As

Publication number Publication date
JP4898790B2 (ja) 2012-03-21
CN101218588A (zh) 2008-07-09
WO2006116871A2 (en) 2006-11-09
WO2006116871A3 (en) 2006-12-21
US20070156638A1 (en) 2007-07-05
CA2606981C (en) 2016-09-06
EP1877947A2 (en) 2008-01-16
CN101218588B (zh) 2010-05-19
US8566791B2 (en) 2013-10-22
CA2606981A1 (en) 2006-11-09
EP1877947A4 (en) 2009-11-25

Similar Documents

Publication Publication Date Title
JP4898790B2 (ja) ファームウェアへの認証の追加実装
US8250373B2 (en) Authenticating and verifying an authenticable and verifiable module
US7131036B2 (en) Method of detecting malicious code
US7921286B2 (en) Computer initialization for secure kernel
KR101795457B1 (ko) 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
US8327153B2 (en) Method and system for verifying software platform of vehicle
JP5646631B2 (ja) デバイスの監査
US8171275B2 (en) ROM BIOS based trusted encrypted operating system
AU2001266228A1 (en) Method of detecting malicious code
US20090285390A1 (en) Integrated circuit with secured software image and method therefor
US8516574B2 (en) Software update system, management apparatus, recording medium, and integrated circuit
CA2618544A1 (en) Rom bios based trusted encrypted operating system
US11336444B2 (en) Hardware security module for verifying executable code, device having hardware security module, and method of operating device
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
US20210064734A1 (en) Cross authentication method for computer system security
CN111177709A (zh) 一种终端可信组件的执行方法、装置及计算机设备
CN112417422B (zh) 安全芯片升级方法及计算机可读存储介质
US20180331834A1 (en) Semiconductor device, boot method, and boot program
JP7268529B2 (ja) 電子機器
CN117556418A (zh) 一种确定内核状态的方法和相关设备
JP2014178906A (ja) 認証方法、認証プログラムおよび認証装置

Legal Events

Date Code Title Description
A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20081028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090501

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090501

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100120

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

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: 20111215

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111226

R150 Certificate of patent or registration of utility model

Ref document number: 4898790

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150106

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250