JP2010503921A - タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のrisc型アセンブリコードのための情報フローの実行 - Google Patents

タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のrisc型アセンブリコードのための情報フローの実行 Download PDF

Info

Publication number
JP2010503921A
JP2010503921A JP2009528317A JP2009528317A JP2010503921A JP 2010503921 A JP2010503921 A JP 2010503921A JP 2009528317 A JP2009528317 A JP 2009528317A JP 2009528317 A JP2009528317 A JP 2009528317A JP 2010503921 A JP2010503921 A JP 2010503921A
Authority
JP
Japan
Prior art keywords
code
timing
information flow
security
channels
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
JP2009528317A
Other languages
English (en)
Other versions
JP5308337B2 (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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of JP2010503921A publication Critical patent/JP2010503921A/ja
Application granted granted Critical
Publication of JP5308337B2 publication Critical patent/JP5308337B2/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

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

Abstract

アセンブリコードのための情報フロー実行を実施するための方法及び装置を開示する。一実施形態では、方法が、コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を有するアセンブリコードを受信するステップと、セキュリティポリシーに基づいて、前記アセンブリコードについて情報フローに関する検証を行うステップとを含む。
【選択図】図4A

Description

優先権
[1]本特許出願は、2006年9月14日に提出した、「Information Flow Enforcement for RISC−style Assembly Code in the Presence of Timing−Related Covert Channels and Multi−Threading」という名称の、対応する仮特許出願番号60/844,974の優先権を主張し、参照のためにそれを組み込むものである。
関連出願
[2]本出願は、本発明の法人譲受人に譲渡された、2005年12月19日に提出した「Information Flow Enforcement for RISC−Style Assembly Code」という名称の同時係属中の米国仮出願番号11/316,621の出願に関連する。
発明の分野
[3]本発明は、プログラムの実行及びセキュリティの分野に関する。より詳細には、本発明は、アセンブリコードにおける情報フローの制約の実行に関する。
発明の背景
[4]情報フローの問題は、一般的に、異なるセキュリティレベル(例えば、高い低いなど)のデータ上で動作するプログラムに関するものである。本明細書では、実際には、低データとはすべてのユーザに開示してもよい公衆データであり、高データとはアクセスを制限する必要がある機密データである。不干渉などの情報フローポリシーは、一般的に、高入力データについての情報が低出力データを見ることによって推測できないことを要求する。実際には、セキュリティレベルは、一般化して格子にすることができる。
[5]言語ベースの技術は、このような情報フローの問題に対処するのに期待できるものとされてきた。それらの技術は、プログラムコードを直接調べることによって、情報フローのセキュリティを強力に保証するものである。それにもかかわらず、既存の言語ベースの情報フロー技術のほとんどは、高レベル言語に重点を置いている。アセンブリコードには高レベルの抽象概念(例えば、プログラム構造及びデータ構造)が欠如していることや、アセンブリコードがきわめてフレキシビリティが高いこと(例えば、メモリエイリアシングやファーストクラスコードポインタ)を主な理由として、それらの技術はアセンブリコードに適用されない。
[6]アプリケーションによってはアセンブリコードで配布されるもの(例えば、モバイルコンピュテーションのためのネイティブコード)や、直接アセンブリコードで書かれているもの(例えば、組み込みシステム)があるので、アセンブリコードについて情報フロー問題に対処することは有益である。このような状況で、型システムが提案されてきた。より具体的には、型システムとは、型注釈を使ってアセンブリコード中の欠けている抽象概念を復元し、また、型維持コンパイルを使って、ソースからターゲットへのセキュリティ証拠を維持するものである。ターゲットレベルにおいてセキュリティ型のチェックを直接行うことにより、コード消費者は、信頼できないコードの挙動がある特定の望ましい情報フローポリシーを満たすものであるという確信を得る。
[7]攻撃者が、プログラムのタイミング挙動など、秘密の情報フローチャネルを悪用することができる場合もあり得る。プログラムの実行時間(外部タイミング)を物理的に観察するか、又はスレッドの相互作用(内部タイミング)を悪用することによって、攻撃者は機密データについての情報を知ることができる。したがって、特に、抽象概念が欠如し極度なフレキシビリティを有するアセンブリコードについて、このようなタイミング関連の秘密チャネルが存在する場合の情報フローセキュリティを保護する解決策を得ることは有益である。
[8]秘密チャネル及びマルチスレッドについての従来の解決策に関しては、Volpano及びSmith著の「Eliminating Covert Flows with Minimum Typings」(10th IEEE Computer Security Foundations Workshop、156−169ページ、ワシントンDC、1997年6月)において、終了に敏感な不干渉が検討され、敏感なプログラムポイントではループの発生を許可しないことによって終端チャネルを閉じる型システムが提案されている。Agatは、「Transforming Out Timing Leaks」(Proc.27th ACM Symposium on Principles of Programming Languages、40−53ページ、マサチューセッツ州ボストン、2000年1月)の中で、プログラム変換を使用してタイミングの漏洩を防いだ。この場合、高分岐の実行時間は適切なダミー命令とのクロスパディングにより等化される。Smith及びVolpano著の「Secure Information Flow in a Multi−Threaded Imperative Language」(Proc.25th ACM Symposium on Principles of Programming Languages、355−364ページ、カリフォルニア州サンディエゴ、1998年1月)は、ここでも敏感なプログラムポイントではループの発生を許可しないことによって、マルチスレッド言語のための可能的不干渉を確立した。Sabelfeld及びSands著の「Probabilistic Noninterference for Multi−Thread Programs」(Proc.13th IEEE Computer Security Foundations Workshop、200−214ページ、イギリスのケンブリッジ、2000年7月)は、スケジューラ非依存のセキュリティ状態に関して、確率的不干渉結果を証明した。これらのシステムは、ソースレベルプログラムのための情報フローセキュリティに対処しており、アセンブリコードには当てはまらない。
[9]型付けされたアセンブリ言語の観点から、近年、ターゲットコードレベルにおいて情報フローセキュリティを直接実行することに向けた努力がなされている。しかし、そのような作業はどれも、秘密チャネル及び/又はマルチスレッドに取り組んではいない。そのため、それらの解決策を、秘密チャネルやスレッドの相互作用が容易に攻撃されうる現実のシナリオに適用する際に、困難が生じる。
発明の概要
[10]アセンブリコードのための情報フロー実行を実施するための方法及び装置を開示する。一実施形態では、方法が、コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を有するアセンブリコードを受信するステップと、セキュリティポリシーに基づいて、前記アセンブリコードについて、情報フローに関する検証を行うステップとを含む。
[11]本発明は、以下に記載の詳細な説明、及び添付の本発明の様々な実施形態の図面を見ることでさらに十分に理解されよう。しかし、それらは、本発明を具体的な実施形態に限定するものと解釈されるべきものではなく、説明及び理解を目的としたものにすぎない。
発明の詳細な説明
[12]タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のアセンブリコード(例えば、RISC型のアセンブリコード)のための情報フロー実行を開示する。本発明の実施形態は、RISC型のアセンブリコードの情報フローセキュリティを保証する型システムの分野に関する。アセンブリコードは、型付け注釈で拡張される。型付け規則に導かれた型チェッカーは、拡張されたコードを調べて、そのコードがある特定の情報フローポリシーを満たすかどうかを判断する。
[13]本発明の実施形態は、シーケンシャルコード及びマルチスレッドコードの両方について情報フローセキュリティを保護し、攻撃者がタイミング関連の秘密チャネルにアクセスできるとしても適用可能である。本発明は、異なる実施形態において、終了、タイミング、可能的及び/又は確率的チャネルが存在する場合の情報フローセキュリティに対処する。
[14]アセンブリコードの情報フローセキュリティのための一連の型システムを開示する。これらのシステムは、タイミング注釈と関連する判断及び規則とを含む。異なるタイミング規則を使用することによって、これらのシステムを異なる実際の設定に適用することができる。特に、それらを使って、シーケンシャルプログラムにおける終端チャネル及びタイミングチャネル、並びにマルチスレッドプログラムにおける可能的チャネル及び確率的チャネルを通じた不正な情報フローを防ぐことができる。
[15]以下に、一般的な型システムTAL としてのこれらの型システムの正規の詳細を提示し、また、認証コンパイルにおけるその使用法を説明する。TAL の異なる「パラメータ」を使って、終了に敏感な不干渉ポリシー、タイミングに敏感な不干渉ポリシー、可能的不干渉ポリシー、及び確率的不干渉ポリシーのそれぞれに対処する一連の型システム及び認証コンパイルスキームを得ることができる。さらに、それらの「パラメータ」の組合せを使って、上記ポリシーの組合せに対処するシステムを得ることができる。
[16]次の説明では、多数の詳細を明記して、本発明をより完全に説明する。しかし、当業者には、それらの具体的な詳細がなくても本発明を実施できることが明らかになろう。他の例では、本発明をわかりにくくすることを避けるために、よく知られている構造及びデバイスは詳細にではなくブロック図の形態で示す。
[17]以下の詳細な説明の一部は、コンピュータメモリ内のデータビット上のオペレーションのアルゴリズム及び記号表現に関するものである。それらのアルゴリズムの記載及び表現は、データ処理技術の当業者が、自分の作業の内容をその分野の他の当業者に最も効率的に伝達するために使用する手段である。本明細書では、また一般的にも、アルゴリズムとは、所望の結果につながる自己無撞着ステップシーケンスであると考えられている。それらのステップは、物理量の物理的操作を必要とするステップである。通常、必ずというわけではないが、これらの量は、保存、転送、結合、比較、及びそれ以外の操作を行うことが可能な、電気又は磁気信号の形態をとる。主として一般的な使用法であるという理由から、これらの信号を時にはビット、値、要素、記号、文字、用語、又は数などと呼ぶことが便利であることがわかっている。
[18]しかしながら、これら及び同様の用語はすべて、該当する物理量に関連付けるべきものであり、また、それらの量に貼られる便利なラベルにすぎないことを心に留めておくべきである。以下の議論から明らかなように、別途明確に記載していない限り、この説明を通して、「処理」、「コンピューティング」、「算出」、「決定」、「表示」などの用語を使った議論は、コンピュータシステムのレジスタやメモリ内の物理(電子)量として表されたデータを操作及び変換して、そのコンピュータシステムのレジスタやメモリ内、又はその他のそのような情報記憶装置、伝送装置又は表示装置内の同じく物理量として表された他のデータにする、コンピュータシステム、又は同様の電子コンピューティングデバイスのアクション及びプロセスについてのものであることを理解されたい。
[19]本発明はまた、本明細書におけるオペレーションを実施するための装置に関する。この装置は、要求される目的のために特別に組み立てられたものであってもよいし、或いは、内部に保存されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータから成るものであってもよい。そのようなコンピュータプログラムを、コンピュータ読み取り可能記憶媒体に記憶することができる。コンピュータ読み取り可能記憶媒体は、フロッピーディスク、光ディスク、CD−ROM、光磁気ディスクを含む任意の種類のディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光カード、或いは電子命令を記憶するのに適した任意の種類の媒体などで、それぞれがコンピュータシステムバスに連結されるものであるが、それらに限定されるものではない。
[20]本明細書で提示されるアルゴリズム及び表示は、本来的にいずれかの特定のコンピュータ又はその他の装置に関連するものではない。本明細書での教示に従って、様々な汎用システムをプログラムと共に使用することができる。或いは、必要な方法ステップを実施するためには、より特殊化された装置を組み立てるのが便利であることがわかる場合もあろう。様々なこれらのシステムに必要な構造が、以下の説明から明らかになろう。さらに、本発明は、いずれかの特定のプログラミング言語に関して記載したものではない。本明細書に記載されているように本発明の教示を実装するために様々なプログラミング言語を使用できることを理解されたい。
[21]マシン読み取り可能媒体には、マシン(例えば、コンピュータ)が読み取り可能な形態で情報を記憶又は伝送するための任意のメカニズムが含まれる。例えば、マシン読み取り可能媒体には、読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気、光、音響、又はその他の形態の伝達信号(例えば、搬送波、赤外線信号、デジタル信号など)などが含まれる。
概略
セキュリティ型システム
[22]以下に、型システムを使ってソース言語のための情報フローセキュリティに対処する方法を簡単に説明する。
[23]図1Aに示す単純な言語について考察する。この言語では2つのセキュリティレベル、低と高が使用されている。環境(Φ)は、変数(V)のセキュリティレベル(t)を指定する。便宜上、h(及びh、h、...)及びl(及びl、l、...)を使って、それぞれ、高変数、低変数を表す。式(E)は定数(i)、変数(V)、又は加算である。コマンド(C)はすべて共通である。高変数から低変数への情報の流れがあってはならないというポリシーが望ましい。より具体的には、以下のような、何種類かの不正な情報フローが妨げられる。
1.l:=hなど、割当てによる明示的フロー。
2.if h then l:=1 else l:=0など、プログラム構造(条件文やwhileループ)による暗示的フロー。
3.ファーストクラスオブジェクト及び/又は関数で拡張した場合は、データ及び/又はコードポインタを通じたさらなる暗示的フローが生じる。
[24]上記の単純な言語については、セキュリティ型システムは一般的に以下を含む。
1.式の型におけるセキュリティレベルを追跡すること。これは、明示的フローを通じた情報漏洩を防ぐのに役立つ−割当てにおけるセキュリティレベルの不整合を許可しない。
2.プログラムカウンタ(PC)にセキュリティレベルを付けること。条件式が高いレベルで保護されている場合、その分岐については、高PCのもとで型チェックが行われる。これは、本質的には、低変数への更新が許可されない「敏感な領域」に分類されるものとして、分岐に印を付けることである。この考え方は、whileループなどの他のプログラム構造にも当てはまる。
3.ポインタを有する言語では、ポインタに2種類のセキュリティレベルが与えられる−1つはポインタのセキュリティレベルであり、もう1つは、参照されるデータ又はコードのセキュリティレベルである。ポインタを通じた不正フローは、ポインタがアクセスされたときにその2つのセキュリティレベルについて適切なチェックを行うことで防ぐことができる。
[25]図1Bは、これらの考え方のうち最初の2つを反映した単純なセキュリティ型システムを示す。そこでの規則については、当業者であれば十分に理解されよう。規則[C4](小前提)が、高い計算を低いセキュリティコンテキストに含めることを認めるのに役立つことに注意されたい−敏感なコンテキストにおいてあるコードを実行することが安全であるならば、敏感ではないコンテキストにおいてその同じコードを実行することも安全であるはずである。
TAL
[26]TALは、2005年12月19日に出願され、本発明の法人譲受人に譲渡された「Information Flow Enforcement for RISC−style Assembly Code」という名称のUS2005000316621に記載されており、アセンブリコードについての情報フロー問題を扱っている。その中に記載されている主な課題の1つが、アセンブリコードはソースコードほど多くの抽象概念を提供してくれないということである。ソースコードのプログラム構造は様々なプログラムポイントのセキュリティレベルを決定するのに役立つのだが、そのような構造はアセンブリコードでは利用できない。例えば、両方の分岐がガード式のセキュリティレベルを考慮するように、ソースプログラム中の条件文をチェックすることができる。このようなチェックはアセンブリコードにおいては難しい。アセンブリコードでは、「扁平な」制御フローがプログラム構造を特定するのにほとんど役立たないからである。条件文は、一般的に、分岐命令及びいくつかのコードブロックに解釈され、そこでは分岐の終了ポイントが明白ではない。
[27]TALは、型注釈を使って、欠如している構造を回復する。これらの注釈は、命令のセキュリティレベル並びにそのセキュリティレベルの終了ポイントについての明示的な情報を提供してくれる。一実施形態では、2つのセキュリティオペレーションを使って注釈を操作し、また、適切な型付け規則を使って、それらの注釈がコードの実際の構造を忠実に反映していることを確認する。
[28]TALの簡略版の構文を図2に示す。元のTALと比べると、スタック及び多相性が省略されている。これは、スタック及び多相性が主にソースプログラム中の関数やプロシージャをサポートするためのものであり、それらの取り扱いは、本明細書で記載している拡張とは直交するためである。記号θを使ってセキュリティレベルを表す。セキュリティコンテキスト
Figure 2010503921
は、プログラムポイントlに到達するまではPCのセキュリティレベルがθ以上でなければならないことを表す。
[29]raise κオペレーションはセキュリティレベルを上げるために使用され、これは、高条件文によって始まる領域などの敏感な領域の開始に対応する。lower lはセキュリティレベルを復元するために使用され、これは、敏感な領域の終了を表すものである。ソースプログラムの構造及び型付けに基づいた認証コンパイルプロセスによって、これらの2種類のセキュリティオペレーションをターゲットコード中に入れることができる。
[30]これらにより、すべてのプログラムポイントのセキュリティレベルが、注釈(コンテキスト)を通して明らかになる。高コンテキストにおいて高分岐が生じ、高コンテキストにおける低データへの割当てが許可されない。さらに、あらゆる参照セルには2種類のセキュリティレベルが与えられる−1つはポインタのセキュリティレベルであり、もう1つは、参照されるデータ又はコードのセキュリティレベルである。
[31]図3は、TALプログラムの例を示す。これは、セキュリティ型付けされたソースプログラムから解釈されたものである。ソースプログラムには、低変数aと、2つの高変数b及びcが含まれている。対応するTALプログラムでは、l、l、lとラベル付けされたヒープセルを使って、それらの変数を表している。TALプログラムは、低セキュリティコンテキスト・中のラベルlとラベル付けされたコードから始まっている。初期設定の後、TALプログラムはそのセキュリティコンテキストを
Figure 2010503921
に上げる。式中、Τは、セキュリティレベルが高であることを表す。次いで、制御はlとラベル付けされたコードに移される。このコードは、高変数bに対するテストを含み、2つの別個の分岐への実行を指示している。この条件文の分岐のどちらにおいても、高変数cが更新され、セキュリティコンテキストはlower lで復元される。次いで、lのコードは、低変数aを再び更新することができる。
[32]関数及びポインタに対するサポート、正確な意味論及び正確な照明、並びにTALをターゲットとした認証コンパイルスキームを含むさらなる詳細については、Yu及びIslam著の「A Typed Assembly Language for Confidentiality」(技術レポートDCL−TR−2005−0002、DoCoMo Communications Laboratories USAカリフォルニア州サンホセ、2005年3月、http://www.docomolabsresearchers−usa.com/−dyu/talc−tr.pdf)を参照されたい。
[33]以下に、様々なセキュリティ上の前提のもとで適用可能な、TALに対する一連の拡張について説明する。これは、不干渉のための低レベルの型システムと実際の用途との間のギャップを埋めるものである。特に、これらの拡張は、以下に説明し、本明細書でTAL と呼ぶ一般的なフレームワークに完全に適合するものである。このように、一般的な型付けされたアセンブリ言語が「カスタマイズされた」不干渉(終了に敏感な、タイミングに敏感な、可能的、確率的、そして単純な)のために利用可能になる。
タイミング関連のチャネル
[34]本明細書では、いくつかの実際的な設定における、アセンブリコードのための情報フローセキュリティに対処するために使用することができる実施形態について説明する。シーケンシャルプログラムについては、終端チャネル及びタイミングチャネルを含み、いくつかの秘密チャネルを閉じるための型システムを説明する。マルチスレッドプログラムについては、可能的且つ確率的不干渉を保証する型システムを説明する。一実施形態では、プログラム実行のタイミングを記録するための追加注釈を含むように、前記の型システムTALを拡張する。これらのタイミング注釈を使って、高セキュリティコンテキストにおいてはループがないことなどの、様々なソースレベルの制約を表現する。
[35]異なるタイミング注釈を使って、異なる情報フローチャネルに対処する。しかし、それでも、基本的な型システムには多くの類似点がある。異なる「タイミング規則」が与えられると、異なる情報フローチャネルに対処する一般的な型システムTAL が公式化される。本発明の実施形態の詳細を、この一般的な型システムの観点から説明する。この一般的な型システムに異なる「パラメータ」を与えることにより、様々な状況に対応した特殊化した型システムが得られる。
[36]図4Aは、情報フロー実行のためのプロセスの一実施形態の流れ図である。このプロセスは、ハードウェア(例えば、電気回路、専用ロジックなど)、ソフトウェア(汎用コンピュータシステム又は専用マシンにおいて実行されるようなもの)、又はその両方の組合せを含むことができる処理ロジックにより実行される。
[37]図4Aを見ると、そのプロセスは、処理ロジック受信アセンブリ又はその他の安全に型付けされたネイティブコードにより開始する(処理ブロック401)。一実施形態では、処理ロジックはそのコードをネットワークロケーションからダウンロード又は検索することにより受信する。
[38]一実施形態では、安全に型付けされたネイティブコードは、セキュリティ型維持翻訳がなされたアセンブリコードを含む。セキュリティ型維持翻訳には、コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報及びタイミング注釈でアセンブリコードに注釈付けを行うことが含まれる。一実施形態では、並列チャネルはマルチスレッドに関連付けられる。一実施形態では、タイミング関連秘密チャネルは、1つ又は複数の終端チャネル、タイミングチャネル、可能的チャネル、及び確率的チャネルを含む。
[39]一実施形態では、タイミング注釈はソースレベルの制約を表現する。一実施形態では、タイミング注釈には、コマンドが実行されるのに必要な時間の量を表す時間値を特定する第1の注釈と、コマンドに関連付けられたタイミングが指定期間の後に変更可能であることを特定する第2の注釈と、特定のセキュリティレベルのもとでコマンドが実行されるための許容できるタイミングを特定する第3の注釈と、コマンドに関連付けられたタイミングが特定のセキュリティレベルの下での時間の経過に一致することを特定する第4の注釈とから成るグループが1つ又は複数含まれる。一実施形態では、タイミング注釈が、アセンブリコードの一部の実行に関連付けられたタイミング情報の観察を可能にするための観察可能なアクションシーケンスに関連付けられた実行時間を表す。一実施形態では、タイミング注釈が、分岐命令の分岐の両方が同じタイミング挙動を示すことを明らかにするためのチェックを可能にする。一実施形態では、分岐命令の両方の分岐が、特定のセキュリティレベルで識別されたコードの終了においてそれらの分岐が同じ時間で合流した場合に、同じタイミング挙動を示す。一実施形態では、タイミング注釈が、第1のセキュリティレベルよりも高い第2のセキュリティレベルを有するコードの領域において第1のセキュリティレベルの変数の出力又は更新が行われないことを確認するためのチェックを可能にする。一実施形態では、注釈が、所定の情報に基づく2つの実行パスが出会うコードの領域の開始と終了を表すためのオペレーションも含む。
[40]コードを受け取った後、処理ロジックは、安全に型付けされたネイティブコードの情報フローに関して、セキュリティポリシーに基づき検証を行う(処理ブロック402)。検証は、装置(例えば、携帯電話などの携帯装置)において、その装置がそのコードを実行する前に行われる。一実施形態では、処理ロジックは、コードの挙動を統計的にチェックして、そのコードがセキュリティポリシーに違反していないかどうかを判断することにより検証を行う。一実施形態では、コードが実行されたときに、識別された型情報がそのコードを実行したデバイスから流出しなかった場合に、そのコードはセキュリティ(安全)ポリシーに違反していないということになる。言い換えれば、アセンブリコードが実行されたときに、そのアセンブリコードの制御下において生じる情報フローを検証する。
[41]検証によりコードがセキュリティポリシーに違反していないと判断された場合には、処理ロジックはそのコードからあらゆる注釈を除去して(処理ブロック403)、そのコードを実行する(処理ロジック404)。
[42]図4Bは、図4Aの情報フロー実行を実装することができる環境を説明する図である。図4Bを見ると、プログラム450に対して、セキュリティポリシー452に基づくセキュリティ型推測451がなされる。その結果が、セキュリティ型付けプログラム453である。認証コンパイラ545は、プログラム453をコンパイルし、その結果、安全に型付けされたターゲットコード455を生成する。
[43]安全に型付けされたターゲットコード455を家庭用装置によってダウンロードすることができる。家庭用装置は、携帯電話、又は以下のようなその他のモバイルデバイスであってよい。家庭用装置は、コード455を実行する前に、安全に型付けされたターゲットコード455上で検証モジュール460を実行する。検証モジュール460は、型チェッカーとして動作しながら、セキュリティポリシー452に基づいて検証を行う。
[44]家庭用装置はまた、コード455を実行する前に、安全に型付けされたターゲットコード455上で削除モジュール470を実行して、認証コンパイラ454によってコードに追加された注釈を削除する。
[45]検証モジュール460がコードが安全であると判断した場合、又は、セキュリティポリシー452に基づいてその他の方法でコードが許容できると検証した場合には、検証モジュール460は、家庭用装置(例えば、家庭用装置上のプロセッサ)が安全に型付けされたターゲットコード455を実行してもよいという信号を、家庭用装置に送る。
[46]本発明の様々な実施形態の詳細を、抽象言語TAL を使って以下に記載する。
終端チャネル
[47]本明細書に記載の技術を使って、情報フローセキュリティに関連するいくつかの異なる問題に取り組む。理解し易いように、以下では、シーケンシャルプログラムにおける終端チャネルについてより詳細に述べる。
[48]TALは、プログラムの挙動を観察する手段として、プログラムの変数(又はアセンブリコードのヒープファイル及びレジスタファイル)の内容を検査することを前提とする。実際には、変数を超えるいくつかの秘密チャネルが存在する。代表的な例の1つが終端チャネルである。より具体的には、攻撃者は、プログラムが終了するかどうかを観察することもでき得る。
[49]終端チャネルを悪用することによって、攻撃者は不正な情報フローを組み立てることができる。以下の2つの例では、いかなる低変数も更新されない。にもかかわらず、プログラムが終了するかどうかを観察することによって、高変数hの値を知ることができる。
1.非終了高ループ:while h do skip;
2.高条件文中の非終了ループ:if h then{while true do skip}else skip.
[50]一実施形態では、すべてのwhileループが最小限の型付けであるlowを有するように制約されている。これは保守的なアプローチであることに注意されたい。なぜならば、終了ループでさえも潜在的に非終了であるとみなされているからである。これは、型システムにおいて、低プログラムカウンタ(PC)のもとでのみwhileループを許可するという形で反映されている。より具体的には、PCがループについてlowでなければならないためには、図1Bの型システムにおいてたった1つの型付け規則、すなわち[C6]を変更しさえすればよい。
Figure 2010503921
[51]この変更は、ソースレベルプログラムにおける終端チャネルを閉じる。前に述べた第1の例では、高ループが許可されなくなる。なぜなら、そのループの高レベルの保護は、低PCのもとでは型付けすることができないからである。第2の例では、高条件文におけるループも許可されなくなる。なぜならば、高条件文の本体は高PCであるが、ループは低PCのもとでのみ許可されるからである。本質的には、ループ構造はこのような分析の鍵となる。なぜならば、ループ構造は高分岐が終了すべきであることを強制するからである。上記の解決策は、ソースプログラムには適用できるが、アセンブリコード対しては機能しない。
[52]型付けされたアセンブリ言語では、ループを容易に識別することができない。なぜならば、ループと条件式はともに、分岐命令を使って実装されるからである。一実施形態では、高分岐の終了は特別に設計された注釈で実行される。TALのセキュリティ注釈は高分岐を識別するのに便利である−分岐は、高コンテキストを有するとき且つそのときに限り、高である。一実施形態では、この先頭において、低領域に戻る前に実行ステップの上界に印を付けるいくつかの追加タイミング注釈が、高分岐に付けられる。TALの解決策は、高分岐の終了が結局は、低領域において、一致する低変数と合流することを保証する。追加タイミング注釈は、高分岐が必ず終了することを保証するものである。
[53]より具体的には、一実施形態では、タイミングタグtがこの目的で使用されている。この場合、tは、自然数(せいぜいこの数のステップ内では実行によっても現在の高領域のままであることを表す)か∞(「未知」又は「潜在的に無限」を表す)である。高コンテキストのもとでは、型システムは、両方の分岐が有限のタイミングタグを有する場合にのみ分岐命令を許可する。言い換えれば、高分岐においては、プログラムの2回の実行が分かれる場合があるが、低領域において有限数のステップで合流する。これは、将来、潜在的に非終了の「後方へのジャンプ」を防ぐ。分岐命令の2つの分岐が異なるタイミングタグを有する場合があることに注意されたい。分岐命令自体にタイミングタグを与えた場合には(入れ子分岐の場合に必要)、長い方の分岐を考慮する。なぜならば、タイミングタグは、本質的に、現在の高領域を出る前の実行ステップの上界だからである。
[54]これらのタイミング注釈は、セキュリティ型付けされたソースコードのコンパイルから得られる。一実施形態では、条件文は、両方の分岐が有限のタイミングをもたらすとき且つそのときに限り有限のタイミングでコンパイルされ、ループは、無限のタイミングで保守的にコンパイルされる。これは、図5及び図6(bとcの両方が高変数)で説明している。図5及び図6では、本発明をわかりにくくすることを避けるため、タイミング注釈及びその他の注釈のみ省略してある。
[55]ループは∞でのみ型付けできることに注意されたい。図6の場合を調べてみると、いかなる有限タイミングもコードブロックl中のjmp lの後方へのジャンプに対して機能しない。同様の推理に基づき、前に挙げた2つのソースレベルの反例についても、有限タイミングで型付けすることはできない。高領域において有限タイミングの注釈のみを許容することによって、型システムはそれらのループを拒否する。
[56]このようなタイミング注釈はまた、非再帰のループフリー関数もサポートすることができる。なぜならば、そのような関数の本体には有限のタイミング注釈を与えることができるからである。コードの再使用をサポートするためには、以下の例のように、多相性の単純な形態を導入することが役立つ。
f:∀m.<m+3>{r:(m)}
コストが2かかる何かを行う
(m+1)jmp r
[57]この「タイミング後の」多相性は、本質的に、異なる型付けコンテキストについて同じ関数の複数のコピーを宣言するものである。一実施形態では、どのコピーを使用すべきかに関する決定が、型のインスタンス化を使って、使用サイト(use site)で行われる。
[58]要約すると、高コンテキストにおいて潜在的に非終了の構造(例えば、ループや再帰関数)を許可しないことによって、終端チャネルが閉じられる。アセンブリコードにおける、部分的なオペレーションによって生じる補足されない例外などの異常終了についてのサポートは、高領域において部分的なオペレーションを許可しないことによって簡単に行える。
TAL
[59]上記の考え方を実装する型付けされたアセンブリ言語TAL について、以下に説明する。特に、TAL はTAL(図2の版を使用しており、そこで説明したように、タイミング挙動に直交する機能は省略してある)の拡張である。
[60]TALによると、セキュリティラベルは格子Lを形成する。変数θを使って、Lの要素を網羅する。記号⊥及びΤを格子の下部と上部として使用し、∪及び∩をlattice joinオペレーション及びlattice meetオペレーションとして使用し、⊆をlattice orderingとして使用する。
[61]構文拡張の一実施形態を図7に示す。タイミング注釈tは、自然数n又は特別な∞のいずれかである。それらは、コード型及びコード値において、セキュリティコンテキストκに付随するものである。
[62]図8では、タイミング注釈用に型付け判断が拡張されている。命令シーケンス及びプログラムが、tに関してさらにチェックされる。一実施形態では、タイミング注釈の4つの判断形態が使用されている。これらの4つの判断形態の異なる定義を使うことによって、様々な情報チャネルを閉じるための型システムが得られる。終端チャネルについては図9に定義を示す。その他のチャネルについての定義はさらに以下に説明する。
[63][comm]=nという判断は、プログラム実行の間の時間経過を追跡するために設計されている。終了に関しては、任意のアセンブリコマンド(又はセキュリティオペレーション)を一単位の時間を消費するものとして考えれば十分である。時間の経過
Figure 2010503921
は、低セキュリティコンテキスト⊥には無関係である。その他のセキュリティコンテキストでは、tがt´とt´´の合計以上であることが要求される。ここで、∞を用いても機能するように、加算+を簡単に拡張する。低セキュリティコンテキスト⊥の下では、いかなるタイミングも容認され得る。対照的に、高セキュリティコンテキストの下では、タイミングが有限であり且つ有限である場合に限って、容認され得る。最後に、マッチングタイミングθ├t〜t´は終端チャネルのための役割を果たさないため、自明に有効であるように定義される。それは、後のセクションにおける拡張のための代替物である。
[64]拡張された型付け規則の一実施形態を図10及び図11に例示する。一実施形態では、TAL において、非命令のための規則についてTALにわずかな変更だけが施される。明らかに、プログラムをチェックするための規則においては余分の不変部分がある。すなわち、コンテキストκのセキュリティレベルに関して、タイミングtはOKでなければならない。この場合、SL(κ)を使ってκのセキュリティラベルコンポーネントを表し、SL(・)は⊥と定義される。
[65]一実施形態では、図11に示すadd、ld、mov、stのための規則が、すべて同じ方法で拡張される。図11を参照すると、時間経過に対する余分のチェックを行って、タイミング注釈が実際の命令に一致することを確認する。命令bnzは、2つの潜在的な継承条件を有する。したがって、時間経過に関して、両方の分岐に対しチェックが行われる。このマッチング判断は、差し当たって自明に有効である。
[66]一実施形態では、raiseにより印が付けられた新しいセキュリティコンテキストに入る際に、新しいタイミングt´がチェックされて、新しいセキュリティレベルθ´のもとでOKであるかどうかが判断される。さらに、時間経過もチェックされる。これは、現在のセキュリティレベルθが⊥ではないかもしれないマルチレベルセキュリティ格子においては役に立つ。この点で、新しいコンテキストκ´の終了ポイントω´のタイミングtを直接チェックする必要はない。一実施形態では、lowerについて、θのもとでOKである時間経過がチェックされる。最も低いセキュリティレベルに行く場合には、これは自明に有効である。
[67]一実施形態では、jmpについて、時間経過がチェックされる。一実施形態では、haltについては特に何も必要とされない。TALは、空のセキュリティコンテキストにおいてはhaltを許可する。このようなコンテキストでは、すべてのタイミング注釈がOKである。
認証コンパイル
[68]一実施形態では、最小限のソース言語からセキュリティ型を維持する翻訳が使用される。より具体的には、このソース言語は、図1Bの型システムが規則[C6´]で改造された場合の図1Aのソース言語である。これによって簡潔な提示が可能になり、それは、簡潔ではあるが、アセンブリコードにおいて終端チャネルを閉じるためのタイミング注釈の使用、という主要な提案を明示するのに十分である。
[69]図1Aの高低セキュリティ階層は、2つの要素⊥及びΤから成る単純な格子を定義している。|t|という表記は、TAL のソース型の翻訳を表す。|low|≡int⊥及び|high|≡intΤである。
[70]プログラムの翻訳は、├H:Ψを満たしソースプログラムのすべての変数に対するエントリを含むヒープH及びヒープ型Ψで開始する。Φ(v)=tである任意のソース変数vについては、Ψ(l)=<|t|>⊥であるようなヒープ中のロケーションlが存在する。この対応を、本明細書ではΦ〜Ψで表す。
[71]フォーム
Figure 2010503921
の式翻訳を図12に定義する。命令ベクトル
Figure 2010503921
はEの値を計算し、その結果がレジスタτに入力される。
Figure 2010503921
を完了するのに必要な時間はtである。
[72]図13において、コマンド翻訳の定義は、ソースプログラムの型付け導出の構造に基づいている。どの翻訳規則を適用するかは、ソースコマンドのチェックに最後に使用した型付け規則によって決定される。型付け導出(場合によっては複数のこともある)はTDを使って表す。特に、一実施形態では、コマンド翻訳は以下の形式である。
Figure 2010503921
[73]6つの引数は、コードヒープ型Ψ、コードヒープH、Cを計算するための開始ラベルlstart及び終了ラベルlend、終了ラベルlendにおけるコードのタイミング注釈t、及びセキュリティコンテキストκである。それは、拡張されたコードヒープ型Ψ´及びコードヒープH´を生成し、開始ラベルlstartのタイミング注釈を生じさせる。
[74]コマンド翻訳の定義は、認証コンパイラの正式なモデルを提供するため、複雑に見える場合もある。しかし、それでも、いくつかの不変部分が翻訳によって維持されるので、定義に従うことは難しくはない。
・Hは、Ψのもとで十分に型付けされ、ソースのすべての変数及びプロシージャに対するエントリを含む。
・Ψ及びHは、lendとラベル付けされた継続コードをすでに含んでいる。
・lendにおけるコードは、tによって反映されたタイミング挙動を有する。
・lstartとラベル付けされた新たなコードがΨ´及びH´に入力される。
・生成された注釈t´は、lstartで開始するコードのタイミング挙動を反映する。
・セキュリティコンテキストκはpcと一致しなければならない。
タイミング注釈の操作
[75]∞を用いても機能するように、加算+を予期された方法で拡張する。規則[TRC1]では、開始ラベルのタイミング注釈t´を計算する際に、ソースコマンドを計算するためのアセンブリ命令のコストを終了ラベルのタイミング注釈tの先頭に追加する。規則[TRC2]では、セキュリティレベルが低のため、特別な注釈∞を使用する。規則[TRC3]は、条件式については、「長い方の」分岐のタイミングを考慮しなければならないと指示している。規則[TRC4]は、本質的に、何らかのラッパーコードを、したがってそのタイミングの計算を導入している。シーケンシャルコマンドについては、規則[TRC5]が、2つのサブコマンドの翻訳をつなぎ合わせている。最後に、whileループについては、規則[TRC6]が、単に特別な注釈∞を使っている。
[76]その他の翻訳規則についてのさらなる情報については、D.Yu及びN.Islam著の「A Typed Assembly Language for Confidentiality」(技術レポートDCL−TR−2005−0002、DoCoMo Communications Laboratories USAカリフォルニア州サンホセ、2005年3月、http://www.docomolabsresearchers−usa.com/−dyu/talc−tr.pdf.)を参照されたい。翻訳の正しさは、2つの補題として公式化されている。それらは、翻訳の導出についての構造帰納法によって簡単に証明され得る。
補題1(式の翻訳)
Figure 2010503921
補題2(コマンドの翻訳)
Figure 2010503921
タイミングチャネル、可能的不干渉、及び確率的不干渉
[77]本発明の一実施形態は、終端チャネルが存在する場合の情報フローセキュリティに関するものである。以下に、タイミングチャネル、可能的不干渉、及び確率的不干渉に関する3つの他の実施形態を説明する。
タイミングチャネル
[78]タイミングチャネルを考えると、我々はマシンモデルを拡張して、実行時間t及び出力アクションのoutput nを明示的に指定し、プログラム実行のより正確なタイミング情報を観察できるようにする。
[79]
Figure 2010503921
の形式の、TALの小ステップの状態遷移の先頭で、プログラム実行とともに生成されるアクションシーケンスが
Figure 2010503921
の形式で指定される。これは、Pが、観察可能なアクションシーケンスasを生成するP’に進むことを意味する。この場合、asは、実行時間tによって分離された出力回数nを表す。
(アクションシーケンス)as::=ε|t as |n as
[80]操作意味論では、asの値は現在の命令によって決定される。以下のサンプルケースについて考える。
Figure 2010503921
これは、即値オペランドωに対してmov命令を実行する操作意味論上のケースである。通常のマシン状態の更新の他に、上記は、この命令を完了するために必要な時間tmoviも指定する。本発明をわかりにくくすることを避けるため、この操作意味論の簡単な定義は省略し、命令commの実行時間を表すのにtcommを使用している。原始的操作(すなわちアセンブリ命令)は、引数として与えられた値にかかわらず、一定の時間で実行すべきであることとする。これが、mov γ,ω(すぐに移動)及びmov γ,γ(レジスタを移動)が異なる時間になることを妨げるものではないことに注意されたい。したがって、このステップ推移の反射的推移的閉鎖が拡張される。
[81]この拡張されたマシンモデルは、タイミングチャネルを通じて情報を漏洩させる。以下のソースレベルプログラムを例として挙げる。
If h then{時間のかかるオペレーション}else skip;
output n
[82]h≠0ならば、プログラムは観察可能なアクションシーケンスtlongnを生成する。この場合、tlongは「時間のかかるオペレーション」の実行時間である。h=0ならば、プログラムはtskipnを生成する。この場合、tskipはskipコマンドの実行時間である。これは、たとえそのプログラムにおいていかなる低データも更新されないとしても、情報の漏洩を引き起こす。
[83]前に説明したTAL のアプローチを使って、タイミングチャネルを通じたこのような情報の漏洩を説明することができる。高領域の終了まで実行ステップの上界を記録する代わりに、タイミング注釈を使って正確な観察可能アクションシーケンスasを記録することができる。高領域において低更新を許可しないのと同じ論法に基づいて、高領域では出力アクションが許可されない。本質的には、拡張されたタイミング注釈は実行時間を反映する。このような拡張されたシステムにおいては、分岐のための型付け規則は、2つの分岐のタイミング注釈が一致することをチェックすべきものである。
[84]図14に、TAL への正確な適用を示す。タイミング判定に異なる定義を与えることにより、タイミングチャネルを閉じるための型システムが得られ、図10及び図11の型付け規則は同じままである。図14のタイミング規則は、正確なタイミングが追跡されるという考え方を反映している。非低コンテキストにおける時間経過
Figure 2010503921
については、tがt´とt´´の合計を正確に反映するようになっている。∞は、依然として、低コンテキストにおいてのみ許可される。最後に、タイミングθ├t〜t´のマッチングは、t=t´として定義される。分岐が同じタイミング挙動を示すことを確認するために分岐命令の型チェックを行うときに、これが使用されたことを思い出されたい。図15に例示のプログラム及び関連するタイミング注釈を示す。
[85]本明細書に記載の認証コンパイルスキームを、安全なソースプログラムをサポートするように改造することができる。安全なソースプログラムとは、例えば、「Transforming Out Timing Leaks」(Proc.27th ACM Symposium on Principles of Programming Languages、40−53ページ、マサチューセッツ州ボストン、2000年1月)でJ.Agatによって提案されているクロスコピー変換によって生成されたものである。プログラムPがクロスコピー変換によって受け付けられ、P´に変換されたならば、改造された認証コンパイルスキームが、P´を十分に型付けされたアセンブリコードに翻訳する。
[86]この改造については、たった1つの変更が規則[TRC3]にある。その場合、「平衡分岐」がコンパイル後も平衡であることが保証される。1つの方法を規則[TRC3´]として図16に示す。変換されたソースプログラムでは、条件文の2つの分岐が平衡であることに注意されたい。したがって、規則[TRC3´]は、t=tであるコードを生成する。前の規則[TRC3]では、ターゲットコードは平衡ではなく、「max」を使用して上界をとっている。さて、規則[TRC3´]は、分岐がターゲットコードにおいても平衡であるように、l´とラベル付けされた余分のコードブロックを挿入する。
可能的不干渉
[87]一実施形態では、マルチスレッド設定における情報フローの問題を考察するのに、不干渉の表記を拡張してスレッドの非決定性実行を説明している。一実施形態では、プログラムの観察可能な挙動を一組の可能な実行結果とみなす簡単な一般化を使用している。
[88]スレッド間の相互作用を情報フローのチャネルとして悪用することができる。攻撃者がプログラムの外部タイミング挙動を観察することができないとしても、例えば、相互作用しているスレッドの実行順序に影響を与えることなどによって、いくつかの内部タイミング挙動が不正な情報フローにつながる可能性は依然としてある。
[89]図17は、3スレッドの例示的プログラムを示す。fの値が初めは0であると仮定する。hが真(true)である場合を考える。スレッド1は初めは「ロックされない」状態になる。スレッド2は、スレッド1の最後のステートメントの後で「ロックされない」状態になる。したがって、lの最終的な値は真(true)になる。同様に、hが偽(false)であるならば、lの最終的な値は偽(false)になる。実質的に、上記のマルチスレッドプログラムは、hの内容をlにコピーする。個々のスレッドの各々は、h及びfが高変数でありlが低変数であるという前提のもとに、一般的なシーケンシャル情報フロー型システム(例えば、図1Bのもの)の下でうまく型付けされている。にもかかわらず、スレッドが一緒になると、高情報を漏洩する。
[90]一実施形態では、非決定性スレッドスケージューリングが存在する場合に可能的不干渉を保証するために、シーケンシャル設定において不干渉のために実行される要件に加えて、2つの要件を満たすよう、あらゆるスレッドがこの型システムにおいて別々にチェックされる。
1.whileループの保護の型は低(low)でなければならない。
2.whileループ自体の型も低(low)でなければならない。
[91]これらの2つの条件は、ソースレベルプログラムにおいて終端チャネルを閉じるための条件と同じである。本質的に、ループは低PCにおいてのみ発生する(上記の規則[C6´]参照)。これは、上記のアセンブリコードのための技術を再使用できるため便利である。特に、高領域において後方へのジャンプが存在しないことが、単調減少するタイミング注釈で実行される。型チェックが各スレッドについて別々に行われるため、マルチスレッドの導入が上記の対処法に悪影響を及ぼすことはない。
確率的不干渉
[92]上記の不干渉の一般化は、一組の可能性ある実行結果を考慮している。これは、時折、実際にはある特定の悪用を防ぐのに十分なほど強力ではないことがある。例えば、可能性ある結果の確率分布が情報フローのチャネルとしての役割を果たす場合がある。
[93]図18は、例示的プログラムを示す。hが高であり、lが低であり、Clongが中間に多くの潜在的なコンテキストスイッチを有する長いステートメントシーケンスであるとする。このプログラムは、上記の可能的不干渉の分析では安全であるとみなされるであろう。しかし、多くのスケジューラの下では、おそらくlの結果はhと同じになるであろう。なぜならば、長い方の分岐を実行するスレッドは、おそらくもう一方のスレッドよりも遅く終わるからである。たとえlの一組の可能性ある結果がhの値にかかわらず同じであったとしても、可能性ある結果の確率分布は異なってくる。
[94]このような可能的攻撃は、プログラムの内部タイミング挙動を悪用する。したがって、一実施形態では、タイミングチャネルを閉じる技術を、外部タイミングに対処するものから内部タイミングに対処するものへと改造している。より具体的には、プログラム命令の外部実行時間を反映する代わりに、タイミング注釈は、潜在的なコンテキストスイッチの数−スレッドによって観察可能な「内部時間」を反映する。この内部時間は、潜在的なコンテキストスイッチがある度に1単位だけ進む。したがって、一実施形態では、タイミングに敏感な不干渉の分析がこれに応じて改造され、以下を実行している。
1.高領域における低割当てを許可しない。
2.高領域におけるwhileループを許可しない。
3.2つの分岐が一致する内部タイミング注釈を有する場合にのみ高条件式を許可する。
[95]アトミックコマンド、スキップ命令、ダミーフォークを正しく実装するよう注意する限り、TAL が安全なソースプログラムの認証コンパイルをサポートするのは当然である(例えば、Sabelfeld及びSands著の「Probabilistic Noninterference for Multi−Thread Programs」、Proc.13th IEEE Computer Security Foundations Workshop、200−214ページ、イギリスのケンブリッジ、2000年7月)。
正当性
[96]セキュリティレベルθに関する2つのプログラムの同等性を定義する。直感的に言えば、2つのプログラム(ヒープファイル及びレジスタファイル)は、それらが低セキュリティの内容について一致する場合に且つその場合にのみ同等である。
定義1(ヒープの同等性)
Figure 2010503921
定義2(レジスタファイルの同等性)
Figure 2010503921
定義3(プログラムの同等性)
Figure 2010503921
[97]上記の関係は、反射的、対照的、且つ推移的である。不干渉の定理は、ともに(重要なキュリティレベルに対して)低セキュリティコンテキストで開始する2つの同等のプログラムの実行に関する。TALでは、両方の実行が終了したならば、結果のプログラムは同等である。余分のタイミング注釈は、最も低いセキュリティレベルのコンテキストでのみ非終了が生じることを保証する。
[98]この証明の考え方は直感的である。重要なセキュリティレベルが与えられると、実行は「低ステップ」及び「高ステップ」に段階的に行われる。低ステップのもとで2つの実行を関連させることは容易である。なぜならば、それらは同じ命令を含むからである。高ステップのもとでは、2つの実行はもはやロックステップにはない。raise及びlowerが、安全に守られた領域の開始及び終了に印を付けることを思い出されたい。高ステップ下で2つの実行を直接関連付けることを避けながら、raiseの前及びlowerの後のプログラムの状態が関連付けられる。さらに、その安全に守られた領域では、非終了はまったく生じない。
[99]正式な詳細を、3つの補題及び不干渉の定理に記載する。補題3は、高ステップにおけるセキュリティコンテキストがraise又はlowerを用いてのみ変更可能であることを示している。補題4は、高コンテキストにおけるプログラムが結局はlowerで現在のセキュリティコンテキストを排出するステップに降格されることを述べている。補題5は、低ステップにおける2つの同等のプログラムの間のロックステップ関係をはっきり述べている。したがって、2つの同等のプログラムが与えられた場合、一方が終了すると、もう一方は最初のものと同等の状態で終了する、という不干渉の定理lが成立する。必然的に、一方が終了しないと、もう一方も終了しないと言える。
[100]以下において、
Figure 2010503921
は、操作意味論の単一ステップの関係
Figure 2010503921
の反射的且つ推移的な閉鎖を表す。
Figure 2010503921
は、Γ´(γ)=τθ´及びθ´⊆θであるようなあらゆるγについて、Γ(γ)=Γ´(γ)であることを意味する。2つの実行を比較する際のプログラムを表すために、Pに加えてQという記号を使用する。
補題3(高ステップ)
Figure 2010503921

ならば、以下のいずれかである。
1.
Figure 2010503921
であるようなΓ、t且つP=(H,R,Iκが存在する、又は
2.Iは形態(raise κ´;I´)又は(lowerω)である。
証明の概略:Iの最初の命令についてのケース分析による。Iはhaltではない。なぜならば、haltの型付け規則は、コンテキストが・であることを要求するからである。操作意味論及び型付け規則の反転により、Iがhalt、raise又はlowerでないならば、次のステップのためのΓ、t及びPを得ることができる。型付け規則中の時間経過判断により、t<tが維持される。型付け規則はまた、低ヒープセル中への書き込みを禁じるので、低ヒープセルはそのステップの後も同じままである。レジスタが更新されると、Γは、それに対して、セキュリティラベルがSL(κ)を考慮している型を与えるので、そのレジスタはΓに高い型を有する。その結果、
Figure 2010503921
である。
補題4(コンテキストの排出)
Figure 2010503921
ならば、
Figure 2010503921
であるような
Figure 2010503921
が存在する。
証明の概略:tに対する一般化された帰納法による。
[101]t=0という基本ケースが容易に排出される。なぜならば、θ≠⊥であるPの十分な型付けの反転によって、t>0を暗に意味する時間経過判断が得られるからである。
[102]帰納的なケースの場合、任意のt<tについてその命題が有効であると仮定する。補題3に従い、考えるべき2つのケースがある
[103]Iの最初の命令がraiseでもlowerでもない場合、補題3により、
Figure 2010503921
であるようなΓ、t及びPが存在し、PのセキュリティコンテキストはPのセキュリティコンテキストと同じである。t及びPについての帰納法の仮定によって、
Figure 2010503921
であるようなΓ´、t´及びP´が存在する。上記を合わせると、
Figure 2010503921
になる。なぜならば、
Figure 2010503921
は定義により推移的であり、t´≦tであり、且つ定義及び
Figure 2010503921
という事実によりΨ;I´├P≒θ´P´だからである。
[104]
Figure 2010503921
というケース。操作意味論の定義により、
Figure 2010503921
。この場合
Figure 2010503921
である。Ψ;Γ;t├Pの反転、及びraiseの型付け規則によりθ⊆θであり、
Figure 2010503921
であるようなt<tが存在する。十分に型付けされたプログラムの定義により、Ψ;Γ;t├Pである。t及びPについての帰納法の仮定により、
Figure 2010503921
であるようなΓ、t、及び
Figure 2010503921
が存在する。したがって、Ψ;Γ├P≒θ´が成立する。なぜならば、P及びPにおけるヒープレジスタ及びレジスタファイルは同じだからである。
[105]H(ω)=code[](κ;t)Γ.Iと仮定する。lower(Pの現在の命令)の型付け規則の反転により、t<tである。操作意味論により、
Figure 2010503921
。この場合P=(H,R,I)κ。Iの十分な型付けの反転により(すなわち、
Figure 2010503921
)、
Figure 2010503921
である。t及びPについての帰納法の仮定により、
Figure 2010503921
であるような、Γ´、t´及び
Figure 2010503921
が存在する。上記を合わせると、
Figure 2010503921
のケースについて、元の命題が有効である。
[106]I=lower ωのケース。lowerの型付け規則の反転により、ω=ωが得られる。Γ´=Γ´、t´=t及びP´=Pを選択することにより、この命題が自明に有効である。
補題5(低ステップ)
P=(H,R,I)κ、SL(κ)⊆θ、Ψ;Γ;t├P、Ψ;Γ;t├Q、Ψ;Γ├P≒θQ、
Figure 2010503921
ならば、Ψ;Γ;t├P、Ψ;Γ;t├Q、且つΨ;Γ├PθであるようなΓ及びtが存在する。
証明の概略:Iの最初の命令についてのケース分析。SL(κ)⊆θ、及び≒θの定義により、P及びQは同じ命令シーケンスを含む。raiseのケースは状態を変えないので、自明に同等性を維持する。その他のケースはすべて、セキュリティコンテキストがθよりも低であることを維持する。型付け規則の検査は、ヒープ中の低ロケーションには低い値しか割当てられないことを示している。いったんレジスタに高い値が与えられるとΓ中のその型は高に変わる。分岐を行う場合、ガードは低でなければならず、したがってP及びQの両方が同じコードに分岐する。したがって、2つのプログラムは1ステップ後も同等のままである。
定理1(不干渉)
P=(H,R,I)κ、SL(κ)⊆θ、Ψ;Γ;t├P、Ψ;Γ;t├Q、Ψ;Γ├P≒θQ、且つ
Figure 2010503921
ならば、
Figure 2010503921
且つΨ;Γ´├(H,R,halt|σ|)・≒θ(H,R,halt|σ|)・であるようなH、R、σ及びΓ´が存在する。
証明の概略:導出
Figure 2010503921
のステップ数の一般化された帰納法による。ゼロステップの基本ケースは自明である。帰納的なケースは、Iの第1の命令のケース分析により証明される。
[107]
Figure 2010503921
であるケースについて考える。操作意味論の定義及び型付け規則により、
Figure 2010503921
であるようなtが存在する。この場合、
Figure 2010503921
である。補題4により、
Figure 2010503921
であるようなΓ、t及び
Figure 2010503921
が存在する。したがって、Ψ├H≒θ且つΓ├R≒θである。
[108]操作意味論のlowerであるケースにより、
Figure 2010503921
である。この場合、P=(H,R,Iκ3且つH(ω)=code[](κ;t)Γ.Iである。Ψ:Γ;t├Pの導出の反転により、Γ⊆Γ、t+1≦t、Ψ;Γ;t├Pである。Γ├R≒θが成立する。Pの命令シーケンスが
Figure 2010503921
である場合の、Ψ;Γ;t├Pの導出の反転により、κ=κが得られる。
[109]同様の推理により、
Figure 2010503921
。この場合、Q=(H´,R´,Iκ3、Ψ├H≒θH´、Γ├R≒θR´、且つΨ;Γ;t├Q。同等関係の推移性により、Ψ├HθH´、且つΓ├RθR´。したがって、Ψ;Γ├Pθ。よって、このケースが帰納法の仮定により成立する。
[110]1ステップの後、その他のケースはすべて低のままである。補題5により、次のステップにおける2つのプログラムは同等であり十分に型付けされている。したがって、これらのケースの証明は、帰納法の仮定により成立する。
コンピュータシステムの例
[111]図19は、本明細書に記載のオペレーションの1つ又は複数を実行することができる例示的コンピュータシステムのブロック図である。図19を参照すると、コンピュータシステム1900は例示的なクライアント又はサーバコンピュータシステムを含む。コンピュータシステム1900は、情報を伝達するための通信メカニズム又はバス1911と、及び情報を処理するための、バス1911と接続されたプロセッサ1912とを備える。プロセッサ1912はマイクロプロセッサを含むが、例えば、Pentium(商標)、PowerPC(商標)、Alpha(商標)などのマイクロプロセッサに限定されるものではない。
[112]システム1900は、ランダムアクセスメモリ(RAM)、又は、バス1911に接続された、情報及びプロセッサ1912が実行するための命令を記憶するためのその他のダイナミック記憶デバイス1904(メインメモリと呼ぶ)をさらに備える。また、メインメモリ1904は、プロセッサ1912が命令を実行している間に、一時的変数やその他の中間情報を記憶するために使用することもできる。
[113]また、コンピュータシステム1900は、読み取り専用メモリ(ROM)、及び/又は、バス1911に接続された、プロセッサ1912のための静的情報及び命令を記憶するためのその他の静的記憶デバイス1906と、磁気ディスクや光ディスク及びそれに対応するディスクドライブなどのデータ記憶デバイス1907とを備える。データ記憶デバイス1907は、情報及び命令を記憶するためにバス1911に接続されている。
[114]システム1900はさらに、コンピュータユーザに情報を表示するためにバス1911に接続された、陰極線管(CRT)や液晶ディスプレイ(LCD)などのディスプレイデバイス1921に接続することもできる。情報やコマンドの選択をプロセッサ1912に伝達するために、英数字及びその他のキーを含む英数字入力デバイス1922もバス1911に接続することができる。さらなるユーザ入力デバイスは、方向情報やコマンドの選択をプロセッサ1912に伝達したりディスプレイ1921上のカーソルの動きを制御するためにバス1911に接続された、マウス、トラックボール、トラックパッド、タッチペン、カーソル方向キーなどのカーソル制御装置1923である。
[115]バス1911に接続することができる別のデバイスとして、紙やフィルムなどの媒体、又は同様の種類の媒体の上に情報をマーキングするために使用できるハードコピーデバイス1924がある。バス1911に接続することができる別のデバイスとして、電話やハンドヘルドパームデバイスへの通信を行うための有線/無線通信機能1925がある。
[116]システム1900の構成要素のいずれか又はすべてと関連ハードウェアとを本発明において使用できることに注意されたい。しかし、当然ながら、このコンピュータシステムの他の構成が、それらのデバイスのいくつか又はすべてを含むことができる。
[117]当業者は、これまでの説明を読めば、本発明の多くの変更及び修正が疑いもなく明らかになろう。しかし、例示の目的で示し、説明した特定の実施形態のいずれも、限定するものとしてみなすことを意図したものでは決してないことを理解されたい。したがって、様々な実施形態の詳細を述べたことは、本発明に不可欠とみなされる特徴のみが記載されている特許請求の範囲を限定することを意図していない。
命令型言語の例を説明する図である。 単純なセキュリティ型システムを説明する図である。 TALの簡略版の構文を説明する図である。 セキュリティ型付けされたソースプログラムから翻訳されたターゲットコードであるTALプログラムの例を説明する図である。 情報フロー実行のためのプロセスの流れ図である。 図4Aの情報フロー実行を実装することができる環境を説明する図である。 条件文のタイミング注釈の一実施形態を説明する図である。 ループのタイミング型注釈の一実施形態を説明する図である。 TAL の構文拡張の一実施形態を説明する図である。 TAL の型付け判断の一実施形態を説明する図である。 終端チャネルを閉じるためのタイミング規則の一実施形態を説明する図である。 非命令のためのTAL の型付け規則の一実施形態を説明する図である。 命令のためのTAL の型付け規則の一実施形態を説明する図である。 式の解釈の一実施形態を説明する図である。 コマンドの解釈の一実施形態を説明する図である。 タイミングチャネルを閉じるためのタイミング規則の一実施形態を説明する図である。 条件文の拡張されたタイミング注釈の一実施形態を説明する図である。 タイミングチャネルが存在する場合の条件式の解釈を説明する図である。 可能的不干渉の例を説明する図である。 確率的不干渉の例を説明する図である。 コンピュータシステムの一実施形態のブロック図である。

Claims (4)

  1. コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を有するアセンブリコードを受信するステップと、
    セキュリティポリシーに基づいて、前記アセンブリコードに対して情報フローに関する検証を行うステップと
    を含む方法。
  2. システムによって実行されると該システムに方法を実行させる命令を記憶している1つ又は複数の記録可能媒体を有する製品であって、
    前記方法が、
    コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を有するアセンブリコードを受信するステップと、
    セキュリティポリシーに基づいて、前記アセンブリコードに対して情報フローに関する検証を行うステップと
    を含む製品。
  3. 注釈付きアセンブリコード、検証モジュール、コード修正モジュールを記憶するメモリであって、前記注釈付きアセンブリコードが、コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を有する、メモリと、
    前記検証モジュールを実行して、セキュリティポリシーに基づいて前記注釈付きコードに対して情報フローに関する検証を行うプロセッサと
    を備える装置。
  4. アセンブリコードに対してセキュリティ型維持翻訳を行うステップであって、コードがセキュリティポリシーに違反しているかどうかについて静的にチェックがなされる際に、1つ又は複数のタイミング関連の秘密チャネル及び並列チャネルに関して情報フローを実行する型情報を備えたタイミング注釈を用いて前記コードに注釈付けを行うことを含む、ステップと、
    前記アセンブリコードが実行された結果である情報フローのコンパイルを証明するステップと、
    前記安全に型付けされたアセンブリコードがネットワークを介してダウンロードされることを可能にするステップと
    を含む方法。
JP2009528317A 2006-09-14 2007-09-13 タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のrisc型アセンブリコードのための情報フローの実行 Active JP5308337B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US84497406P 2006-09-14 2006-09-14
US60/844,974 2006-09-14
US11/840,158 US8091128B2 (en) 2006-09-14 2007-08-16 Information flow enforcement for RISC-style assembly code in the presence of timing-related covert channels and multi-threading
US11/840,158 2007-08-16
PCT/US2007/020067 WO2008033539A1 (en) 2006-09-14 2007-09-13 Information flow enforcement for risc-style assembly code in the presence of timing-related covert channels and multi-threading

Publications (2)

Publication Number Publication Date
JP2010503921A true JP2010503921A (ja) 2010-02-04
JP5308337B2 JP5308337B2 (ja) 2013-10-09

Family

ID=38705141

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009528317A Active JP5308337B2 (ja) 2006-09-14 2007-09-13 タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のrisc型アセンブリコードのための情報フローの実行

Country Status (5)

Country Link
US (1) US8091128B2 (ja)
EP (1) EP2062187B1 (ja)
JP (1) JP5308337B2 (ja)
KR (1) KR101025467B1 (ja)
WO (1) WO2008033539A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749997B2 (en) 2007-10-02 2017-08-29 Samsung Electronics Co., Ltd Repeating transmissions of signals in communication systems

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321666B2 (en) * 2006-08-15 2012-11-27 Sap Ag Implementations of secure computation protocols
US20100023782A1 (en) * 2007-12-21 2010-01-28 Intel Corporation Cryptographic key-to-policy association and enforcement for secure key-management and policy execution
US8990930B2 (en) * 2009-02-06 2015-03-24 Microsoft Corporation Code property analysis for security mitigations
US9275246B2 (en) * 2009-10-08 2016-03-01 International Business Machines Corporation System and method for static detection and categorization of information-flow downgraders
US9032378B2 (en) 2011-12-16 2015-05-12 Microsoft Technology Licensing, Llc Available symbol set generation using untyped variable
US9305166B2 (en) * 2013-03-08 2016-04-05 The Regents Of The University Of California Method and systems for detecting and isolating hardware timing channels
US8955155B1 (en) 2013-03-12 2015-02-10 Amazon Technologies, Inc. Secure information flow
WO2016108980A2 (en) * 2014-10-03 2016-07-07 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for detecting covert timing channels
US10691797B2 (en) * 2016-04-21 2020-06-23 Big Stream Solutions, Inc. Systems and methods for compiler guided secure resource sharing
KR101978812B1 (ko) * 2017-08-09 2019-05-15 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
CN109032934B (zh) * 2018-07-10 2021-07-02 北京计算机技术及应用研究所 一种fpga/ip核逻辑代码安全规则检测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US6253370B1 (en) * 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
WO2006069335A2 (en) * 2004-12-21 2006-06-29 Ntt Docomo, Inc. Information flow enforcement for risc-style assembly code

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US6253370B1 (en) * 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
WO2006069335A2 (en) * 2004-12-21 2006-06-29 Ntt Docomo, Inc. Information flow enforcement for risc-style assembly code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012064269; Dachuan Yu: Toward More Typed Assembly Languages for Confidentiality , 20060811, 第1-24頁 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749997B2 (en) 2007-10-02 2017-08-29 Samsung Electronics Co., Ltd Repeating transmissions of signals in communication systems
US11234221B2 (en) 2007-10-02 2022-01-25 Samsung Electronics Co., Ltd Repeating transmissions of signals in communication systems

Also Published As

Publication number Publication date
WO2008033539A1 (en) 2008-03-20
KR101025467B1 (ko) 2011-04-04
US20080072323A1 (en) 2008-03-20
JP5308337B2 (ja) 2013-10-09
KR20080104167A (ko) 2008-12-01
EP2062187B1 (en) 2019-04-10
EP2062187A1 (en) 2009-05-27
US8091128B2 (en) 2012-01-03

Similar Documents

Publication Publication Date Title
JP5308337B2 (ja) タイミング関連の秘密チャネル及びマルチスレッドが存在する場合のrisc型アセンブリコードのための情報フローの実行
Nelson et al. Scaling symbolic evaluation for automated verification of systems code with Serval
Patrignani et al. Secure compilation to protected module architectures
Dehesa-Azuara et al. Verifying and synthesizing constant-resource implementations with types
US20060143689A1 (en) Information flow enforcement for RISC-style assembly code
Heitmeyer et al. Formal specification and verification of data separation in a separation kernel for an embedded system
Foster et al. Flow-insensitive type qualifiers
Stefan et al. Flexible dynamic information flow control in the presence of exceptions
Barthe et al. A certified lightweight non-interference java bytecode verifier
Hubert et al. Semantic foundations and inference of non-null annotations
Barthe et al. Security of multithreaded programs by compilation
Schlich et al. Reduction of interrupt handler executions for model checking embedded software
Barthe et al. Security types preserving compilation
Hu et al. A security type verifier for smart contracts
Barthe et al. Security types preserving compilation
Medel et al. A typed assembly language for non-interference
Bloem et al. Efficient information-flow verification under speculative execution
Cook et al. Summarization for termination: no return!
Boockmann et al. Generating inductive shape predicates for runtime checking and formal verification
Bonelli et al. Information flow analysis for a typed assembly language with polymorphic stacks
Bichhawat et al. Permissive runtime information flow control in the presence of exceptions
Sarrab Policy based runtime verification of information flow.
Cheang Formal Specification and Verification of Secure Information Flow for Hardware Platforms
Lopez et al. Computer Security: 23rd European Symposium on Research in Computer Security, ESORICS 2018, Barcelona, Spain, September 3-7, 2018, Proceedings, Part I
Medel et al. Non-interference for a typed assembly language

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130109

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130628

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5308337

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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