JP5646631B2 - デバイスの監査 - Google Patents

デバイスの監査 Download PDF

Info

Publication number
JP5646631B2
JP5646631B2 JP2012525523A JP2012525523A JP5646631B2 JP 5646631 B2 JP5646631 B2 JP 5646631B2 JP 2012525523 A JP2012525523 A JP 2012525523A JP 2012525523 A JP2012525523 A JP 2012525523A JP 5646631 B2 JP5646631 B2 JP 5646631B2
Authority
JP
Japan
Prior art keywords
memory
verifier
physical memory
processor
sequence
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
JP2012525523A
Other languages
English (en)
Other versions
JP2013502639A (ja
JP2013502639A5 (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.)
Fatskunk Inc
Original Assignee
Fatskunk 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
Priority claimed from US12/580,891 external-priority patent/US8375442B2/en
Application filed by Fatskunk Inc filed Critical Fatskunk Inc
Publication of JP2013502639A publication Critical patent/JP2013502639A/ja
Publication of JP2013502639A5 publication Critical patent/JP2013502639A5/ja
Application granted granted Critical
Publication of JP5646631B2 publication Critical patent/JP5646631B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/121Wireless intrusion detection systems [WIDS]; Wireless intrusion prevention systems [WIPS]
    • H04W12/122Counter-measures against attacks; Protection against rogue devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
    • 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/2101Auditing as a secondary aspect
    • 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/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

他の出願の相互参照
本出願は、“DETECTION OF MALWARE(マルウェアの検出)”という名称で2009年8月17日に出願された米国仮特許出願番号61/234,604、“AUDITING A DEVICE(デバイスの監査)”という名称で2009年11月2日に出願された米国仮特許出願番号61/257,043、および“AUDITING A DEVICE”という名称で2009年12月14日に出願された米国仮特許出願番号61/286,369の優先権を主張するものであり、これらの各々は、その全体が全ての目的のために参照により本明細書に組み込まれる。
不正なプログラムの存在を検出するための既存の技術は、一般的に多くの資源を必要とする。例えば、概して、それらは(例えば、ブラックリストの)常時更新を必要とし、問題の定期的または継続的スキャンを必要とする。そのような技術により保護されるデバイスが、例えばメモリが限られている、あるいはバッテリを電源とするなど、資源に制限がある場合には、状況はさらに悪くなる。一例として、限られた資源をもつデバイスは、全ての既知の不正プログラムを検出するための定義を記憶することができないことがある。別の例として、不正プログラムをスキャンする動作は一般に多くの電力を必要とし、バッテリ駆動デバイスのバッテリをすぐに使い果たしてしまう恐れがある。環境によっては、不正プログラムの発見を容易にするために中央権限が用いられる。このアプローチの欠点の1つは、一般的に、保護されるデバイスが、デバイス・アクティビティの詳細なログを作成する必要があるということである。そのようなログの生成は、(例えば、大容量のディスク記憶、ログデータを編成するための処理能力、ログデータを中央局に伝送するための帯域幅を必要とするなど)多くの資源を必要とし、また、プライバシーの問題を生じる可能性がある。
また、不正なプログラムの存在を検出するための既存の技術は、概して、誤ったレポートの原因となるようなプログラムによる攻撃に対して、脆弱である。例えば、ルートキットは、アプリケーションによるオペレーティング・システムへの要求を“盗聴”することができ、これらの要求およびその応答に変更を加えることがある。どのようなプロセスが実行中であるかについての情報をアプリケーションが要求した場合に、悪質なルートキット・アプリケーションは、自身に関する情報を、オペレーティング・システムにより返されるレポートから削除することによって、検出を回避することができる。
不正プログラムのインストールまたは実行に対するスクリーニングのための既存の技術もまた、マルウェアの新しいインスタンスに対して脆弱であることが知られており、それらの構造および機能に関する情報が不足していることによって、直ちには検出できない場合がある。従って、デバイスで使用可能な資源にかかわりなく、不正プログラムが十分に精巧であり、さらに/またはこれまでに検出されたことがないものである場合は、それは検出を逃れて、検出されない害を引き起こすことがある。さらに、不正プログラムが、(例えば、ソフトウェアの違法コピーを容易にするため)ユーザによって意図的に検出を回避するようにインストールされた場合は、従来の技術では、不正プログラムまたはその他の不正なアクティビティを見つけられない場合がある。
本発明の様々な実施形態は、以下の詳細な説明および添付の図面において開示される。
図1は、デバイスの監査が行われる環境の一実施形態を示している。
図2は、デバイスの一実施形態を示している。
図3は、デバイスの監査を実行するプロセスの一実施形態を示している。
図4は、デバイスの監査を実行するプロセスの一実施形態を示している。
図5Aは、図3に示すプロセスの実行前のメモリを表したものである。
図5Bは、図3に示すプロセスが実行されている間のメモリを表したものである。
図6は、デバイスの監査を実行するプロセスの一実施形態を示している。
図7は、デバイスの監査に関連して用いられる擬似コードの一例を示している。
図8は、デバイスの監査を実行するプロセスの一例を示している。
図9は、デバイスの監査が行われる環境の一実施形態を示している。
図10は、デバイスの一部分の一実施形態を示している。
図11は、デバイスの監査を実行するプロセスの一実施形態を示している。
図12は、stepによって読み取られるメモリの一部を示している。
図13は、選択的にメモリを読み取るプロセスの実装の一実施形態を示している。
図14は、デバイスの監査の一部における時間計測のプロセスの実装の一実施形態を示している。
本発明は、数多くの方法で実施することが可能であり、それには、プロセス、装置、システム、構成物、コンピュータ読み取り可能な記憶媒体上で実現されるコンピュータプログラム・プロダクトならびに/または、プロセッサに結合されたメモリに記憶された命令および/もしくはそれにより提供される命令を実行するように構成されたプロセッサなどのプロセッサとしての実施が含まれる。本明細書では、このような実施の形態、または本発明が取り得るその他の形態を、技術と呼ぶ場合がある。一般的に、開示されるプロセスのステップの順序は、発明の範囲内で変更することができる。特に明記しない限り、タスクを実行するために構成されたものとして記載されるプロセッサまたはメモリなどのコンポーネントは、所与の時間に一時的にそのタスクを実行するために構成された汎用コンポーネント、またはそのタスクを実行するために作製された専用コンポーネントとして実装してもよい。本明細書において用いられる場合の‘プロセッサ’という用語は、コンピュータプログラム命令などのデータを処理するように構成された1つまたは複数のデバイス、回路、および/または処理コアを指している。
本発明の1つまたは複数の実施形態についての詳細な説明が、以下で、発明の原理を示す添付図面と共に提供される。本発明は、それらの実施形態に関連させて説明されるが、本発明は、いずれの実施形態にも限定されるものではない。本発明の範囲は、請求項によってのみ限定されるものであり、本発明は、多くの代替案、変形、および均等物を包含している。発明についての完全な理解を与えるため、様々な具体的詳細が以下の説明において記載される。これらの詳細は、例示目的で提供されるものであり、本発明は、これら特定の詳細の一部または全部を省いて、請求項に基づき実施することができる。明確にする目的で、発明が不必要に不明瞭になることがないよう、本発明に関連する技術分野で知られている技術的事項については詳細に記載していない。
図1は、デバイスの監査が行われる環境の一実施形態を示している。図示の例では、デバイス102は携帯電話機である。デバイス102は、(例えば、ネットワーク104を介して)ベリファイア106と通信する。図1では、デバイス102は、3Gネットワークを介してベリファイア106と通信する。ベリファイア106は、デバイス102への電話サービスの提供事業者といったキャリアの管理下にある。ベリファイア106は、デバイス102に対応するエントリとデバイス102上のRAM容量とを含むハードウェア構成情報のデータベースを有している。
以下でより詳細に説明するように、デバイス102を監査することが可能であり、これにより、デバイス上に存在する回避的プログラム(例えば、マルウェア)を検出および/または削除することができる。一部の実施形態では、これは、デバイス102上の物理メモリに対して一連の変更を実施することにより達成される。メモリ変更の実行に伴う結果は、ベリファイア106により検証される。デバイス102が、そのような回避的プログラムの影響を受けていないと判断されたら、追加のスキャンを実行することができる。これについても以下でより詳細に説明する。例えば、マルウェア(例えば、ユーザによる認知および/または同意なしにインストールされたソフトウェア)の検出に加えて、本明細書に記載の技術は、キャリアまたはハードウェア・メーカによりインストールされたデジタル著作権管理を回避するなどの目的で、ユーザにより行われた“ジェイルブレイク”処置(例えば、権限昇格)を検出することができる。
多様なデバイスを、本明細書に記載の技術と組み合わせて用いることができる。例えば、一部の実施形態では、デバイス102はビデオゲーム機である。ビデオゲーム機は、インターネット(104)を介して、ゲーム機メーカの管理下にあるベリファイアと通信するように構成されている。デバイス102の所有者が、(例えば、MODチップを使用することにより)デバイス102への不正な変更を行うと、それによる変更をベリファイア106は検出することができる。
本明細書に記載の技術と組み合わせて用いることができるデバイスの他の例には、デスクトップ・コンピュータ、ノート型コンピュータ、ネットブック・コンピュータ、パーソナル・デジタル・アシスタント、ビデオ再生装置(例えば、テレビ、DVDプレーヤ、ポータブル・ビデオプレーヤ)、ルータ、アクセスポイント、セットトップボックス、医療機器、さらにはプロセッサとメモリとを有するその他のほぼ全てのデバイスが含まれる。
様々な実施形態において、ベリファイア106は、別個の機関(entity)による代わりに、デバイス102のユーザによって制御される。例えば、デバイス102のユーザが所有するデスクトップ・コンピュータを、デバイス102に検証サービスを提供するように構成することができる。この場合、デバイス102は、ローカル・ネットワークを介してベリファイアと通信するように構成することができる。また、デバイス102は、(例えば、専用ケーブルによって)ベリファイア106と直接通信するように構成することもでき、ネットワーク104は可能であれば省略される。
一部の実施形態では、ベリファイアは、デバイス102と併置されるか、あるいは直接それに接続されている。例えば、携帯電話機に差し込まれた加入者識別モジュール(“SIM”)カードを、ベリファイア106の機能を携帯電話機に提供するように構成することができる。別の例として、ベリファイア106の機能を、携帯電話機の充電に使用される電源コードに組み込むことができる。これらの実施形態では、外部のベリファイアは、省略することができるか、または併置/接続されたベリファイアにより提供される検証サービスに追加して用いることができるか、いずれかである。一例として、デバイス102は、内蔵のWi‐Fi機能を備えるパーソナル・ビデオプレーヤである。デバイスの充電に使用される電源コードを、充電のたびにデバイスに検証サービスを提供するように構成することができる。加えて、Wi‐Fi無線機がアクティブであれば、デバイスは、デバイスのメーカにより提供されるベリファイアと定期的に通信するように構成することができる。別の例として、ベリファイア106は、ユーザにより定期的にラップトップ102に差し込まれるUSBデバイスに組み込むことができる。加えて、ラップトップ102のユーザがオンライン銀行と銀行取引を行おうとするたびに、銀行が、ユーザのアカウントへのアクセスを許可する前に、ラップトップ102に検証サービスをさらに提供することができる。さらに別の例として、ユーザがネットワークへの接続またはサービスへのアクセスを許可される前に、ネットワーク・オペレータまたはサービス・プロバイダが、ユーザに自身のマシンを監査してもらうように要求することができる。また、ユーザが、例えば危険そうな状況にさらされたことに気付いたら、その後に監査を起動することもできる。ユーザが監査を起動することが可能な一つの方法は、デバイス上でメニュー・オプションを選択することである。別の方法例は、ユーザが、(例えば、ウェブ・フォームによってオンライン要求を送信することにより)ベリファイア106による監査を要求することである。
図2は、デバイスの一実施形態を示している。図示の例では、デバイス102は、プロセッサ202と、第1のメモリ204と、第2のメモリ206と、通信インタフェース208とを備えている。一例として、デバイス102は、528MHzのARMプロセッサ(202)と、128MBのRAM(204)と、ユーザにより1GBのマイクロSDカード(206)が挿入されたマイクロSDカード・スロットと、3Gモデム(208)とを備えている。メモリ204は、本明細書において“高速”メモリとも呼ばれる。メモリ206は、本明細書において“低速”メモリとも呼ばれる。しかしながら、メモリ204および206は、異なる速度である必要はない。さらに、GPS受信機(図示せず)など他の構成要素を、デバイス102内に備えていてもよい。第2のメモリ206などの要素は、可能であれば省略してもよい。アクティブなプログラムを格納することが可能なRAMを高速と呼ぶことができ、データのみ記憶することが可能なRAMを低速とみなすことができる。
本明細書に記載の監査技術を用いて、高速メモリ内にアクティブなプロセスが無いことを確認することができる。そして、この確認が完了した後に、全てのメモリ(例えば、高速と低速の両方)をスキャンすることが可能であり、これによって、高速および低速のメモリの内容またはその一部を識別し、分類し、レポートし、場合によっては変更を加える。高速と低速のメモリは様々に区別することができる。例えば、RAM、フラッシュメモリ、およびハードディスク・ドライブを備えるデバイスでは、RAMのみを高速メモリとし、フラッシュメモリとハードディスク・ドライブを低速メモリとして扱うことが可能である。また、RAMとフラッシュメモリの両方を高速メモリとし、ハードディスク・ドライブを低速メモリとして扱うことも可能である。さらには、所与のデバイス上に物理的に配置されている全てのメモリを高速であるとし、そのデバイスによりアクセス可能な(またはアクセス可能になる可能性がある)外部メモリを低速とみなすこともできる。外部コンポーネントと通信するためのターンアラウンド時間が原因となって、そのような外部アクセスは、外部メモリのタイプおよび実際のローカルアクセス速度にかかわりなく、より低速となる。どのようなタイプのメモリを高速/低速として扱うかにより、それに応じてパラメータの選択が行われることになる。
以下でより詳細に説明するように、デバイス102に不正な変更が加えられていることは、メモリ204に対して一連の変更を実施し、その結果を調べるようにデバイス102を構成することにより検出することができる。例えば、変更を実行するのにかかる時間が所定の時間長の許容誤差を超える場合、または変更に伴って決定された結果が期待される結果と一致しない場合、これは、回避的プログラムの存在を示し得る。様々な実施形態において、メモリへの変更は、メモリ204といった高速メモリに対してのみ実行されるのではなく、デバイス上の全てのメモリ(例えば、メモリ204とメモリ206の両方)に実行される。
図3は、デバイスの監査を実行するプロセスの一実施形態を示している。様々な実施形態において、図3に示すプロセスはデバイス102により実行される。図3に示すプロセスは、様々な方法で起動することができる。(例えば、電力供給を検出したらプロセスを起動するようにデバイスを構成することにより)例えばユーザがデバイスを充電するたびに、プロセスを起動することができる。また、特に大量のトランザクションまたは普段と異なるトランザクションの発生に応じて;ユーザが危険にさらされているという懸念に応じて(例えば、極めて悪質な個人により新しい脆弱性がリリースされたという通知をキャリアが受けたことに応じて);一定の時間が経過したことなどに応じて、プロセスを起動することもできる。図3に示すプロセスの起動をトリガすることができる事象のさらなる例には、支払いまたはその他の金融取引をしようとするデバイス102のユーザによる試行、(例えば、デバイスのユーザが銀行口座にアクセスしようとする)認証試行、およびアクセス要求(例えば、デバイスへの映画のダウンロードの要求)の実行が含まれる。
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取る302で、プロセスは開始する。ハードウェア・パラメータの例には、高速メモリ204の容量および速度が含まれる。例えば、図2に示すデバイスの場合、ハードウェア・パラメータは、“容量=128M”および“速度=300MHz”を含むことになる。使用することができる追加のパラメータには、コアの数、バスのタイプなどが含まれる。
ハードウェア・パラメータは、様々な方法で受け取ることができる。一例として、携帯電話機のSIMが、搭載されているメモリの容量および速度を検出するように構成することができる。別の例として、デバイス102を電源に(またはコンピュータまたは他のデバイスに)接続するのに専用のケーブルを使用する場合には、特定の容量および速度のメモリを有するデバイスとの組み合わせでのみ機能するケーブルによって、パラメータを知る(そして、このようにして“受け取る”)ようにしてもよい。さらに別の例として、デバイスのシリアル番号が、デバイスに搭載されている高速メモリ204の容量および速度を示していてもよい。様々な実施形態において、ユーザ(またはその代表者)は、メモリのパラメータをウェブ・フォームまたは構成ファイルに入力するように要求される。また、可能性が高いデバイスのメモリ構成について仮定することもでき、ベンチマーク・プログラムを実行することにより、その仮定が正しい可能性が高いかどうか確認することができる。
304において、物理メモリに対して変更のシーケンスが実行される。そのような変更を行うことができる方法の例について、以下でより詳細に説明する。一部の実施形態では、実行される変更のシーケンスは、ベリファイアによって決定される。行われるべき変更のセットは、様々な方法でデバイスに提供することができる。例えば、シーケンスは、デバイス上でシード値に基づいて構築することができる。シーケンスは、製造時に、またはサプライヤもしくはキャリアへの出荷時に、または購買時に、デバイス上にプリロードすることができる。また、ユーザ選択により、またはサービス・プロバイダにより、購入後の任意の時点で(例えば、上書き更新として、もしくはファームウェアの更新として)、または監査の実行が必要なときに、ロードすることもできる。パラメータ化は、仕様が分かっていることを前提として、メーカまたはサプライヤまたはキャリアによって行うことができる。また、それを、ユーザまたはサービス・プロバイダによって、例えばシリアル番号のルックアップにより行うこともできる。パラメータは、モデルまたはデバイス名に関連付けることができる。デバイスが、例えばコンポーネントの置換または追加により再構成される場合は、それらの新しいコンポーネントにより、新規または追加のパラメータ化に関する情報を伝えることができる。それらのコンポーネントは、パラメータだけではなく、命令のセット全体を伝えることもできる。あるいは、コンポーネントのシリアル番号、名前、またはタイプによって、パラメータに必要な変更を示すことができる。クライアント・デバイスが、アルゴリズムまたは新しいコンポーネントのインストール時に安全であると考えられる場合には、クライアント・マシンは、(システムの起動の際に一般的に行われているように)どのようなコンポーネントがインストールされたのか問い合わせて、それに応じてパラメータを設定することもできる。
様々な実施形態において、デバイス・メーカは、有効化されていない監査ソフトウェアを無料でプリロードをすることを提案し、後に、監査サービスおよび/または以下でより詳細に説明する追加のスキャン・サービスを有効化するための支払いを要求する。その後、監査ソフトウェアを、エンドユーザまたはサービス・プロバイダによる要求に応じて、キャリアによって有効化することができる。キャリアは、有効化の料金を徴収し、そして任意に、その料金の一部を、携帯電話機メーカ、監査ソフトウェアのプロバイダ、追加のスキャン・ソフトウェア(例えば、アンチウイルス検出サービス)のプロバイダ、および他の取引関係機関に送る。
306において、304で実行されるプロセス部分による1つまたは複数の結果が、ベリファイアに報告される。一部の実施形態では、結果はプロキシ906に提供され、これにより、結果はタイムスタンプが付されて、ベリファイアに提供される。図5に関連して説明するように、一部の実施形態では、メモリへの変更と、ベリファイアとの通信が、複数回繰り返され、これに応じて、図3および4に示すプロセスを適応させる。
図4は、デバイスの監査を実行するプロセスの一実施形態を示している。様々な実施形態において、図4に示すプロセスは、ベリファイア106により実行される。上記で説明したように、一部の実施形態では、図4に示すプロセスは、(キャリアにより管理されるベリファイア上など)デバイス102とは別の機関によって実行される。他の実施形態では、このプロセスは、デバイス102上に配置されているか、またはそれに物理的に接続されているベリファイアによって実行される。
402において、結果を受け取ると、プロセスが開始する。例えば、デバイス102が306で結果を報告すると、これらの結果が402でベリファイアにより受け取られる。
404で受信した結果が、物理的変更の期待されるシーケンスが行われたことを示しているか否か、404において判断される。ベリファイア106は、(不正な変更が加えられていないと仮定した場合に)デバイス106上でのメモリ変更のシーケンスの実行にかかるはずの時間などの情報を持つように構成されている。一部の実施形態では、ベリファイア106は、さらに、シード値、およびデバイス102によって実行された計算の結果など、追加情報を記憶するように構成されている。
物理メモリ変更の期待されるシーケンスが行われた(例えば、デバイス106がメモリ変更のシーケンスを実行した)と判断される場合、デバイスに不正な変更が加えられていないと結論される(406)。また、以前にデバイス102上でアクティブであった可能性のある回避的プロセスは中和されている。(例えば、シーケンスの実行にかかった時間が基準からはずれている、または計算結果が正しくないという理由で)物理メモリ変更の期待されるシーケンスが行われていないと判断される場合は、デバイスに不正な変更が加えられている(例えば、回避的プロセスがデバイス上に存在して、しかも検出を回避しようとしている)と結論される(406)。様々な実施形態において、ネットワーク・ノイズに起因する誤りを回避するために、誤り訂正符号が用いられる。コンテンツのアクティブな改ざんを回避するために、メッセージ認証符号および他の認証技術を用いることができる。コンテンツを難読化して、伝送される平文メッセージを盗聴者が確認できないようにするために、暗号化技術を用いることができる。
図5Aは、図3に示すプロセスの実行前のメモリを表している。図示の例では、カーネル502、許可プログラム504、不正プログラム(例えば、マルウェア・エージェント)508、および監査プログラム506がRAMにロードされている。一般に、回避的プログラムが、デバイス上に常駐し続けるためには、2つのことのうち1つを行う必要がある。RAM(またはスワップ領域)においてアクティブであり続けるか、あるいは、スキャンが実行された後にマルウェア・エージェントによる掌握が可能となるように、正規のプログラム、データ、またはデバイスの構成に変更を加えるか、いずれかが必要である。以下でより詳細に説明するように、本明細書に記載の技術を用いることで、マルウェア・エージェントの存在を、それが採用している検出回避技術にかかわりなく検出することができる。さらに、本明細書に記載の技術を用いると、監査プログラム506がマルウェア・エージェント504の後にロードされる場合でも、マルウェア・エージェントの存在を検出することができる。
図5Bは、図3に示すプロセスが実行されている間のメモリを表している。以下でより詳細に説明するように、監査部506は、監査部506により使用されている領域を除いて、RAM(およびスワップ領域)の記憶をクリアするように構成されている。様々な実施形態において、さらに、他のサービスの最小限のセットによるRAMの占有が許される。例えば、デバイス102が3G通信をサポートしている場合、監査部506がベリファイア106との通信に3Gモデムを使用することができるように、3Gドライバ/モジュールにより占有されているRAM領域はクリアされない。別の例として、一部の実施形態では、マイクロカーネルはRAMの一部を占有することが許可されて、監査部506はRAMのその残りの部分をクリアする。
図6は、デバイスを監査するプロセスの一実施形態を示している。デバイス102などのデバイス上で実行される監査プロセスにより、監査プロセスによる使用が要求されていないメモリ204(およびスワップ領域)の全ての部分がクリアされる602で、プロセスは開始する。一部の実施形態では、これには、カーネル、種々のドライバ、および他の全てのプロセスのアンロードが含まれる。様々な実施形態において、要求のないメモリ領域は、(例えば、ゼロで)クリアされるのではなく、シーケンスによって上書きされる。シーケンスの一例は、擬似ランダム・シーケンスであり、これは、XOR演算を用いることなどにより、元のメモリの内容と組み合わせられる。これによって、先に使用した擬似ランダム・シーケンスに相補的であるか、または等しい擬似ランダム・シーケンスと繰り返し組み合わせることにより、要求のないメモリ領域を後に再生することが可能となる。また、要求のないメモリ領域は、それをクリアするように、但しそのデバイスの標準的な消去操作には相当しない内容で、上書きすることもできる。例えば、01010101というシーケンスまたは他の適当なシーケンスを書き込むことにより、要求のないメモリをクリアすることが可能である。
一部の実施形態において、監査コードは、ローダと可変アルゴリズム・セグメントという2つのコンポーネントを含んでいる。ローダの役目は、非RAM記憶装置(例えば、メモリ204以外のもの)からアルゴリズム・セグメントをロードし、ロードされたアルゴリズム・セグメントに制御を引き渡すことである。アルゴリズム・セグメントが完了すると、その後ローダに制御が返される。
604において、メモリ204の内容がベリファイア106に報告される。一部の実施形態では、内容全体が報告される。他の実施形態では、前回の監査以降の変更についての記述のみが伝えられる。
606において、デバイスはベリファイアから暗号化シードを受け取る。シードは擬似ランダム・ストリングに展開され、そのストリングはRAMに書き込まれる。プロセス600の部分606に従ってRAMにストリングを書き込む方法の例を以下で提示する。
608において、デバイスはベリファイアから暗号鍵を受け取る。
610において、デバイスは受け取った鍵を使用して、デバイスのRAMの内容全体の鍵付きハッシュを計算する。
612において、デバイスは、結果として得られる値をベリファイアに報告する。ベリファイア106は、例えば図4に示すプロセスによって、その結果を評価する。
様々な実施形態において、デバイス102は、606および610での計算からの状態情報を、ベリファイア106により設定された時間間隔で報告する。そのような間隔を用いることによって、デバイス102により実行される計算が(例えば、メモリ206の一部ではなく)メモリ204内で実行されていることが保証される。
デバイス102は、必要に応じて、ベリファイア106からシードと各鍵の更新を得る。更新を用いることによって、デバイス102が計算を外部の高速資源にアウトソーシングしていないことが保証される。例えば、計算をアウトソーシングするためには、回避的プログラムは、シードと鍵の更新を外部デバイスに転送しなければならず、これによって測定可能な遅延が引き起こされることになる。
ベリファイア106は、最終的な関数値と途中結果の両方が正しく、また、許容期限内にデバイス102によってベリファイアに報告されたことを確認する。監査部がそのタスクを実行するのに要する時間を評価するための方法の例を以下で提示する。上述のように、一部の実施形態では、ベリファイア106はデバイス102の外部にあって、デバイスの所有者以外の機関により運営されている。他の実施形態では、ベリファイア106は、デバイス102のユーザの管理下にある。
図6に示すプロセスが完了した後、監査部506は、完全であるか部分的であるかはともかく、デバイスの内容を復元して、前のアクティブなプロセスまたはメモリ内容のさらなるスキャンを実行するプロセスに制御を返すことができる。高速メモリの内容は、それらが時間計測される計算の実行前に低速メモリにスワップアウトされていれば、あるいは元の内容がストリングと組み合わせられていれば、復元することができ、後者の場合は、同様の組み合わせを実行することにより以前の状態を復元することが可能である。また、“起動”状態をロードすることによりデバイスを再起動させることも可能である。さらには、メモリの内容をスキャン、レビュー、レポート、および変更するプロセス、またはこれらの操作の任意のサブセット(以下でより詳細に説明する)のプロセスに、最初に制御を引き渡すことが可能である。レポートは、ベリファイア106に提示することができ、またはメモリ内容の処理の管理を担当するものなど第三機関に提示することができる。後者の場合、ベリファイア106は、悪意のあるアクティブなプロセスが存在しないことを保証することを担当する場合があり、そして第2のベリファイアはデバイスのメモリの処理を担当することができ、これにより、マルウェアの検出、デジタル著作権管理に関係し得る特定のポリシー、またはデバイスのメモリのどのような内容が望ましいのかを識別する他のポリシーにそれが従うものであるかどうか判断される。
攻撃戦略の例
回避的プログラムが、例えば図6に示すプロセスの部分604での検出を回避するためには、それは、固有のプロセス(504)として、あるいは監査部506の破損版の一部として、RAMにおいてアクティブでなければならない。以下は、マルウェア・エージェント504などの回避的プログラムがアクティブであり続けようとすることができる方法の6つの例である。
戦略1:記憶装置をアウトソーシングする
監査部106が、(例えば、602で)適切な空間をクリアすることなく、さらに606で生成される擬似ランダム・ストリングの対応する部分を記憶するのに非RAM記憶装置または外部記憶装置を頼るようにさせることにより、マルウェア・エージェントは、RAMにおいてアクティブであり続けて、検出されない状態を継続させようとすることができる。この場合、610での計算は、マルウェア・エージェントが常駐する空間の代わりに、アウトソーシングした記憶装置を使用するように変更されることになる。
戦略2:欠落データを計算する
擬似ランダム・ストリングの一部をアウトソーシングにより記憶する代わりに、マルウェア・エージェントは、ストリングの変形された表現(例えば、圧縮版、または欠落部分がある版)を記憶して、610における鍵付きハッシュの計算の際に、ストリングの関連部分を必要に応じて再構成することができる。マルウェア・エージェントは、擬似ランダム・ストリングを生成する元となるシードを有しているので、これ―またはその後の擬似乱数発生器の状態―を利用して、データの必要な部分を再生することができる。
戦略3:計算をアウトソーシングする
(Wi‐Fi接続など必要な通信基盤はやはり有効であると仮定して)マルウェア・エージェントは、関連データを外部デバイスに転送することができる。外部デバイスは、デバイス102からデータを受信して、ベリファイア106へのレポートに必要な値を計算し、それらの値をデバイス102上のマルウェア・エージェントに送る。
戦略4:検出コードに変更を加える
マルウェア・エージェントは、監査部506のコードを、変更を加えたコードで置き換えようとすることができる。この代替コードは、損なわれたメモリ内容についてのレポートを抑止するか、または監査の完了後にマルウェア・コードがロードされるためのフックを含むように設計されていてもよい。マルウェア・エージェントは、監査コードの一部をスワップアウトまたは圧縮し、それを必要に応じて再びロードまたは解凍することにより、空間をそれほど多くは占有することなく、そのような変更を監査部506に組み込むことを試みることができる。
高速メモリの充填
このセクションでは、図6に示すプロセスの部分606に関連して用いることができる技術の例について説明する。
図7は、デバイスの監査に関連して用いられる擬似コードの一例を示している。図示の例では、サブルーチンget_permutationが、0からnumber_blocks−1までのnumber_blocks個の要素のランダム順列を示すベクトルを返す。ここで、number_blocksは、RAMを構成するフラッシュメモリ・ブロックに等しいサイズ部分の数から、監査部が必要とするものを引いたものである。サブルーチンnext_string_chunkは、擬似ランダムに生成されたビットのチャンクを返すものであり、チャンクという用語は、メモリバス上に伝送することができるデータ量を指して用いられる。一例として、Android G1電話機の場合、1チャンクは32ビットである。
get_permutationおよびnext_string_chunkは、両方とも、最も新しく提供されたシードを入力として用いる。擬似ランダム・ストリングは、segmenti←hash(segmenti-1)として計算することができ、すなわち、ランダム・アクセスを用いて計算することができないように計算することができる。一例は、ハッシュ関数の非準同形特性を前提として、ハッシュ関数の繰り返し適用に基づく関数である。多様なハッシュ関数を用いることができる。一例は、512ビット・モードのMD6である。
定数roundsは、関数modify_memoryを用いて、擬似ランダム・チャンクがセルの内容にXORされる回数である。roundsの選択により、攻撃者が(欠落データを計算する)第2の攻撃戦略を実行するために行わなければならない仕事量を制御し、また、これが大きな値の場合にアルゴリズムの正当な実行にかかるコストを増加させもする。図示の例において、rounds=2とすると、各セルの値は2つの他のセルに依存するようになるので、rounds=1であるよりも、攻撃者に著しく大きなコストがかかることになる。これによって、攻撃者のメモリ管理戦略を混乱させることができる。図示の例において、chunks_per_blockは、フラッシュメモリ・ブロックに含まれるチャンクの数であり、G1電話機の例では32768(=128kB/32ビット)であり、このときnumber_blocks=1024(=128MB/128kB)である。
関数modify_memory(pos,string)は、位置posの内容を値stringでXORするものであり、pos=0は、演算されるのがRAMの最初のチャンクであることを表しており、pos=number_blocks×chunks_per_block−1は、最後のチャンクであることを表している。
RAM(204)の代わりにフラッシュメモリ(例えば、メモリ206)を使用するように強制された場合、図7に関連して説明したメモリアクセス構造によって、ランダムに順序付けられたブロックの個々のページへのアクセスが生じる。これによって、フラッシュメモリは圧倒的な確率でクリアされることになり、また、擬似ランダム・アクセス順序によって、攻撃者がこの欠点を回避するようにメモリアクセスをスケジューリングすることを防止する。フラッシュメモリ内での計算のコストは、アルゴリズムの正当な実行に有効なRAM内での場合に比較して、著しく多くの時間を費やすものである。
一部の実施形態では、1つのハッシュ関数の適用を利用して、next_string_chunkのいくつかの呼び出しを生成する。これによって、監査プロセスに伴う計算負荷が軽減され、このことは、タスクを実行する時間面でのメモリアクセスの貢献を際立たせている。
様々な実施形態において、ハッシュ関数への入力は、一定数の前の出力であり、このことは、擬似乱数発生器の特定の部分の状態を再構成することを望むマルウェア・エージェントによる記憶を複雑にしており、そのため、(欠落データを計算する)戦略2を利用しようとする試みをさらに妨げるために有効である。
時間計測の実行
このセクションでは、監査タスクの実行の時間計測に用いることができる技術の例について説明する。例えば、一部の実施形態では、図6に対応する記述部分に関連して述べたような技術が、ベリファイア106により採用される。
ベリファイア106は、例えば、記憶装置をアウトソーシングしようとする試み、欠落データを計算しようとする試み、および計算をアウトソーシングしようとする試みを識別するため、図6に示すプロセスの部分606および610の実行を時間計測するように構成されている。
一部の実施形態において、ベリファイア106は、(例えば、ベリファイア106により設定される)小刻みな間隔で、デバイス102から状態情報を取得するように構成されている。状態情報の一例は、最後に更新されたメモリ・チャンクのメモリ内容であり、これは、デバイス102がこの計算段階に達したことを証明するものである。ベリファイア106は、一定時間ごとに、デバイス102に更新要求を送信する。一部の実施形態では、更新要求は、サブルーチンnext_string_chunkの出力の計算に用いられる擬似乱数発生器の状態の更新に対応している。サブルーチンnext_string_chunkの出力が、既に生成された擬似ランダム・ストリングの未使用部分を選択することにより生成される場合、このストリングを同時にクリアすることができ、このようにして新しいシードを直ちに状態に影響させるように強制する。
攻撃戦略3(すなわち、計算のアウトソーシング)を採用する回避的プログラムは、計算を実行する外部デバイスに、擬似ランダム・ストリングの更新を送信する必要があり、その後に、外部デバイスは、デバイス102によってベリファイア106に報告されるべき次の結果値を計算し、これを回避プログラムに送信しなければならない。これによって、ラウンドトリップの遅延が生じる。ラウンドトリップの遅延が計時チェックポイント間の時間を超える場合は、不正行為が検出される。ここで、シードおよび鍵は、他の状態情報と共に、クライアント・デバイスとベリファイアとの間で安全に伝達されるものと仮定する。これを達成するために様々な暗号化技術を使用することができる。
様々な実施形態において、最悪な場合として輻輳のない環境を仮定して、デバイス102が備える通信機器(例えば、Wi‐Fi)を用いて計算をアウトソーシングするのに十分な時間がないように、デバイス固有のチェックポイント間の時間が選択される。
modify_memoryの実行時間は、上記のパラメータの選択、および、どのようなハッシュ関数を用いてnext_string_chunkを計算するのかによって、決定される。例えば、MD6ハッシュ関数は、224から512ビットまで様々に異なる出力サイズに設定することができる。上記で説明したように、一部の実施形態では、512ビット版が使用される。modify_memoryの呼び出しごとの時間は、上記で決定されるチェックポイント間の時間よりも著しく小さい。
様々な回避的プログラムの検出例
以下のセクションでは、上述の様々な戦略を採用する回避的プログラムを、本明細書に記載の技術を用いて検出する方法の例を提示する。
記憶装置をアウトソーシングする―攻撃戦略1に対して防御する
空のSDカードがデバイス102に挿入されたと仮定する。これに対応する書き込み速度は5MB/sに達することがある。上述のように、modify_memoryにより処理されるブロックの大きさは、この例では、128kBに選択される。SDカードにデータを書き込む時間は25msとなる。これに対して、デバイス102上のRAMは100MB/sの書き込み速度であるとする。これに対応する書き込み時間は1.25msとなる。追加される遅延は容易に検出することができる。また、2つのチェックポイント間でSDカードへの複数のアクセスが行われる場合は、追加される遅延の検出がさらに容易となる。
欠落データを計算する―攻撃戦略2に対して防御する
上述のように、擬似ランダム・ストリングは、ランダム・アクセスを用いて計算することができないように計算することが可能である。ある出力の値を計算するには、記憶しているデータから対応する入力を計算する必要がある。rounds>1であるので、RAMに記憶しているデータは、この必要な状態ではなく、2つ以上のroundsの状態の組み合わせである。状態は、その符号空間の一部として、マルウェア・エージェントにより明示的に(RAMに)記憶される必要があり、これから必要な状態が計算される。このため、マルウェア・エージェントは、図6に示すプロセスの部分610の実行中に、“正規の”演算を行うために必要な計算に加えて、少なくともrounds×number_blocks×chunks_per_blockの(そして、実際には、それよりずっと多くの)ハッシュ演算を行うことを強いられる。それは、選択されたパラメータに対して、1億より多くのハッシュ演算となる。ハッシュ関数呼び出しを計算するためのおおよその時間が10μsであるとして、これは約1000sであり、予想よりもおよそ3桁大きく、従って検出が可能である。
つぎに、戦略2に対する防御に対応する論証の実例を提示する。回避的プログラムはメモリ204内に常駐しており、それ自体とその変数のために、あるc個の32ビット・チャンクの少なくとも一部を占めていると仮定する。最悪の場合として、変数の記憶のためにこの空間の全てを効果的に使用することが可能であると仮定することができる。これは、可能ではないが、マルウェアが検出されないままでいるために実行する必要のある仕事量の下限を与えるものである。実際には、c個のチャンクを全て記憶のために用いることはできず、一部はそのコードを記憶する必要があるので、その労力はそれより大きい。
関数を計算するのに必要な値を保持していないc個のRAMチャンクのヒットのそれぞれについて、マルウェア・エージェントは、期待される内容を計算しなければならない。この例では、RAMの充填が行われるより前の元の内容はゼロであったと仮定している。これがそうでない場合は、マルウェア・エージェントの労力はより大きくなり、従って、この仮定は、マルウェア・エージェントの労力についての下限を設定している。RAM充填アルゴリズムにより行われた、このセルへの予想される更新を計算するため、マルウェア・エージェントは、当該メモリ・チャンクの値を全てのroundsパスについて計算する必要がある。メモリにXORされる値は、擬似ランダム・シーケンスによるものである。そして、欠落しているセルのチェーンの状態を再構成することは、記憶のc個のチャンクの一部にマルウェア・エージェントにより記憶されている値から、値next_string_chunkを計算することによってのみ可能である。変数はRAMのみに記憶されていると想定されるか、またはマルウェア・エージェントはさらに(記憶装置をアウトソーシングする)戦略1も成功させる必要があると想定される。
上記で説明したように、擬似乱数発生器は、ランダム・アクセス・アプローチを用いて計算を行うことはできない。チャンク・サイズが32ビット、状態のサイズ(=MD6の出力サイズ)が512ビットであると、状態を記憶するためにL=16のチャンクが必要となる。マルウェア・エージェントは、この状態に関連付けられたRAMの位置(それは必ずしもマルウェア・エージェントがこの状態を記憶した場所ではない)からハッシュ関数呼び出しのシーケンスを再計算しなければならない。
メモリ書き込みの際のセル上でのランダム置換(その順序をマルウェア・エージェントにより予測することはできない)を前提として、記憶された状態に対応するストリング位置までの距離の予想される長さは、少なくともrounds×n/(c/L)である。但し、n=number_blocks×chunks_per_blockはRAMを成すチャンクの数に対応しており、rounds×nは擬似ランダム・ストリングの長さであり、c/Lはマルウェア・エージェントにより記憶される擬似ランダム状態の数である。このように、“不良”セルの各ヒットについて、マルウェア・エージェントは、next_string_chunkの予想されるrounds×n×L/cの呼び出しを実行しなければならず、これはrounds×n×/cに対応している。このようなヒットは、マルウェア・エージェントが予想される状態の1つを計算しようとする際に生じる“不良”セルのヒットはカウントすることなく、c個ある。従って、マルウェア・エージェントは、記憶されている内容からc個の不良ブロックの内容を計算するため、少なくともrounds×nのハッシュ演算を実行しなければならない。(実装の一例に従って)これを行うためのおおよその時間は、正規のクライアントよりも、少なくとも100,000〜1,000,000倍遅く、これは、欠落データを計算しようとする試みが検出されることを示している。
チェーンの計算によって、計算の別のパスのための値を記憶するのに使用されているセルへのアクセスが生じる場合、これによって別のヒットが生じる。それは、各メモリアクセスについて、およその確率(c−c/rounds)/c×c/number_blocks=(c−c/number_blocks)/number_blocks≡c/number_blocksで発生することになり、従って、上記のように、所与の最初の不良セル・ヒットについて、およその確率
Figure 0005646631
で発生することになる。この量の概算は、
Figure 0005646631
である。rounds=2の場合、これは98%超の確率である。この追加的コストは、cの値が増加すると増加することになる。このため、攻撃者は、cを小さくするように最善を尽くそうとする。
以下では、攻撃者がc=L=16個のセルのみを使用し、16個すべてを1つの値を記憶するために使用すると仮定する。この構成によると、“記憶セル”の値から“プログラム・セル”に対応する値を計算できるようにならない方向にチェーンがつながるような状況において、攻撃者は、(外部メモリを使用しない限り)値の計算に失敗することになる。rounds=2の場合、このような失敗が75%の確率で発生する。残りの25%の場合は、攻撃者は、単に速度が劣ることになる。攻撃者は、常に値の計算に成功するためには、それぞれ512ビットの長さである少なくともrounds=2個の値を記憶する必要がある。
計算をアウトソーシングする―攻撃戦略3に対して防御する
一部の実施形態では、デバイス上の通信機器を用いて計算をアウトソーシングする時間がないように、チェックポイント間の時間が選択される。チェックポイント間の時間は、これを直ちに検出可能とするように、ベリファイア106により選択することができる。計算のアウトソーシングを伴う戦略は、ラウンドトリップが攻撃者により正しい値を提供するための2つのチェックポイントの間に完了しなければならないので、失敗する。これは、クライアント・デバイスと検証機関との間の通信速度には依存しない。
検出コードに変更を加える―攻撃戦略4に対して防御する
不正プログラム508は、(例えば、図6に関連して説明したように)一部のステップの実行に悪影響を及ぼすものであると仮定し、進んで正規のコードをロードして、自身を削除するものとする。このような攻撃者は、場合によってプロセスの部分602および604を破壊する可能性があるが、部分606を破壊することはできない。特に、アクティブであり続けるためには、プロセスの(スワップ領域およびRAMをクリアする)部分602を破壊する必要がある。これによって、604で状態の誤ったレポートを引き起こすことが可能となる。しかしながら、これは、メモリ内容の鍵付きハッシュが計算されたとき(610)に検出される。これは、使用されるハッシュ関数の衝突がないことが仮定されていることと、608までは鍵がデバイスに開示されないことと、この両方に起因する。部分608は、606の間にアクティブでなければ破壊されることはあり得ず、これによって、上記のように検出が生じることになる。また、回避的プログラムは、図6に示すプロセスの部分606を実行することなく、612で報告される正しい値を計算することはできない。
4つの攻撃戦略の組み合わせでも、それらの各々が検出され、それらの組み合わせにより基本的なデバイス固有の制限は変更されないので、失敗する。
追加処理
図8は、デバイスの監査を実行するプロセスの例を示している。様々な実施形態において、上記の監査プロセスは、2(またはそれ以上の)段階のプロセスの一段階(802)を成している。デバイス102などのデバイスに関して上記の技術が採用されていれば、デバイスのRAM内にアクティブな回避的ソフトウェアはないと仮定することができる。そこで、任意の追加処理をデバイス上で実行することが可能である(804)。実行することができる追加処理の例について以下で説明する。
例:マルウェア
802の処理を実行した後に、デバイス102は、804において従来のアンチウイルス・ソフトウェアを実行し、これにより、メモリ206に記憶されている可能性のあるものなど、既知の不正ソフトウェアを識別する。804において、デバイス102は、さらに、メモリ206の内容全体またはメモリの部分について、ベリファイア106または他のデバイスにレポートするように構成することもできる。
例:ジェイルブレイク
802の処理を実行した後に、デバイス102は、804において、そのオペレーティング・システム・ローダが特定のハッシュを持つかどうか判断し、および/または、そうでなければオペレーティング・システム・ローダが望ましい状態から変更されているかどうか判断する。
例:電話機のロック解除
802の処理を実行した後に、デバイス102は、804において、そのオペレーティング・システム・ローダが変更されているかどうか判断し、サービス・プロバイダに関連付けられた情報が変更されているかどうか判断する。
例:ソフトウェアの不正コピー
802の処理を実行した後に、デバイス102は、804において、メモリ206内に含まれるソフトウェアが期待される設定から変更されているかどうか判断し、そのソフトウェアに関連するシリアル番号を確認し、および/または、そうでなければ、含まれるソフトウェアが不正に/ライセンスを受けずに用いられているかどうか判断する。一部の実施形態において、デバイス102は、メモリ206の内容またはその一部についてベリファイア106にレポートする。
例:メディアの不正コピー
メディア・ファイル(例えば、音楽ファイル、動画ファイル、または画像ファイル)は、配信時に透かしを使用してカスタマイズされると仮定し、これらの透かしは、例えばMACまたはデジタル署名を使用して暗号的に認証されるものとする。804において、デバイス102上にあるどのファイルが正規の透かしを持っているか、また、これらは有効な認証コードを含んでいるかどうか、判断することができる。この判断は、デバイス102でローカルに行うか、あるいは中央で(例えば、ベリファイア106において)行うか、いずれかが可能である。
様々な実施形態において、(デバイス102にインストールされている音楽プレーヤなどの)アプリケーションが、(アクティビティのログを形成して)使用状況およびその他のデータを記録し、その情報を適当なメディア(例えば、曲ファイル)と関連付ける。ログは、804においてベリファイア106により読み出すことができる。
例:管理の連鎖/使用状況ログ
あるアプリケーション(またはデータ・ファイル)は、これに関連付けられて、トランザクションを記録するのに使用されるログ・ファイルを持つと仮定する。一つの例は、ストアド・バリュー情報を含む金融取引の発生を記録するログ・ファイルである。ログ・ファイルに加えられた変更の正当性は、次のように検証することができる。まず、802の処理が実行される。次に、804において、そのアプリケーション(またはデータ・ファイル)が変更されているか否か、ひいてはログ・ファイルが本物であるかどうかについて、(例えば、プログラム・イメージのハッシュを比較することにより)判断することができる。
この例において804で実行される処理の一つのアプローチは次のとおりである。まず、メモリ206がスキャンされ、アプリケーションおよびアプリケーションに関連付けられたデータ・ファイルのリストが作成される。次に、アプリケーションおよびデータ・ファイルの記述子のリストが決定される。記述子の例は、ファイルの名前およびタイプを加えたファイルのハッシュ、および、それがどのストリング・シーケンス(複数の場合もある)とマッチしたかを示す識別子である。次に、第1のリストの中にまだレポートされていないアプリケーションまたはデータの記述からなる第2のリストが作成される。ここで作成される記述には、アプリケーションのコード、または、それが処理する入力ファイルおよび生成する出力ファイルの種類についての記述の、全てまたは一部が含まれることがある。第2のリストは、ベリファイア106などの外部機関に送信されて、そこで検証される。また、第2のリストは、ポリシー検証サーバから取得したポリシーを用いてローカルに処理することもできる。
検証の結果は、アプリケーションおよびデータへのアクセス許可に影響を及ぼすように用いることができ、さらに、(インターネット、3Gネットワーク、企業ネットワークなどの)ネットワーク資源へのアクセスが認められるかどうかを含めて、外部サーバがデバイスとどのように情報のやりとりを行うかを制御するために用いることができる。別の例として、デバイス上での実行が許可されるソフトウェアを制限することができ、そして、コンプライアンスの欠如をユーザに通知し、ファイルを削除もしくは修復、またはそうでなければ変更することを試みるなどすることができる。
例:ペアレンタル・コントロール・フィルタおよびその他のモニタリング機能
802の処理が実行された後に、様々な実施形態において、追加のミドルウェアがインストールされ、これは、デバイスに関連する様々な事象をログ記録(および/または阻止)するように構成することができる。例として以下のものが含まれる。
(a)デバイスで生成され、後に送信された写真を、(例えば、“セクスティング” を防ぐために)確認する。
(b)時速20マイルを超える速度で走行しながらデバイスが(例えば、テキスティングまたはビデオクリップを見るために)使用されたかどうか、(例えば、デバイス・アクティビティおよびGPSの変化に基づいて)判断する。
(c)(デフォルトのプログラムの他に第2のインスタント・メッセージ・プログラムなど)代替アプリケーションがインストールされているかどうか、(例えば、インストール・アクティビティに基づいて)判断し、そして代替アプリケーションについてのログ・ファイルを作成する。
(d)ユーザがどのようなURLを訪れたのかについて、どのURLには手動ナビゲートにより到達し、どのURLにはアクセスされた他のHTML文書内のリンクにより到達したかを含めて、(例えば、ブラウザの履歴情報に基づいて)判断する。このロギングの一つの利点は、人がフィッシングの被害に遭った可能性があるかどうか、マルウェアを含めて望ましくないコンテンツを配信することが知られているウェブサイトを訪れたかどうか、さらには、デバイスがクリック詐欺に巻き込まれた可能性があるかどうか、特定されることである。このような悪用は、例えば、JavaScript(登録商標)、カスケーディング・スタイルシート、および/または他の関連するスクリプト言語を使用することにより、デバイス自体を感染させることなく達成することが可能である。
例:追加の適用例
本明細書に記載の技術は、上記の例に加えて、さらに多くの利用が可能である。例えば、デバイスの監査は、使用状況、保険の目的、関税、税金、通行料などを測定するための車両用ブラックボックスにおいて、マルウェアと意図的な不正使用の両方を特定する目的で用いることができる。
デバイスを監査する技術は、他のアプリケーションのコンポーネントとして組み込むことができ、これらのアプリケーションは、スキャンを実行するために自身を一時的にサスペンドすることが可能であり、後に、感染のないことがわかっている状態において再び制御を渡される。
さらに別の例として、この技術を、医療機器において、それらが感染しておらず、正しく設定され維持されていることを確認するために用いることができ、さらに、誰がデータおよび機器にアクセスしたのかを知ることが重要となる特別な場合において使用状況を監査するために用いることができる。当該機器は、使用状況の情報を常にログ記録する場合があり、これは、プリロード・アプリケーションが干渉しないように行われる。監査プロセスは、プリロード・アプリケーションが良好な状態のままであること、および競合するアプリケーションまたは設定が存在しないことをアサートするためのメモリ印刷スキャンを含んでいる。
最後に、修正の必要がない、あるいはそれが主な目的ではない状況におけるマルウェアの検出に、本技術を用いることができる。そのようの状況の一つは、オンライン・ゲームにおいて、ゲームで不正をするためのモジュールが無いことを検出する場合である。
プライバシーの保護
一部の実施形態では、全ての状態の記述(例えば、メモリ204の内容)がベリファイア106に伝えられる。しかしながら、秘密鍵および非実行可能プライベート・データなど一部のデータは、好ましくは、デバイス102から転送されるべきではない。次のセクションでは、そのようなデータのプライバシーを保護する技術について説明する。
第1の乱数をxと呼ぶものとし、これは、ある可能な値1...maxxの空間から選択されると仮定する。xは、その目的であった監査プロセスへの入力を提供するだけではなく、マルウェアを符号化することが可能である。正規のプログラムは、入力データx、および(g1,n1)と呼ばれるいくつかのシステム・パラメータから、一方向関数の値yを計算する。これを行う方法の一つの例は、y=g1 x mod n1を計算することによるものであり、ここで、g1は大きなサブグループGn1を生成する。
次に、プログラムにより、値y、および(g2,n2)と呼ばれるいくつかのシステム・パラメータから、第2の一方向関数の値zを計算する。これを行う方法の一つの例は、z=g2 y mod n2を計算することによるものであり、ここで、g2は大きなサブグループGn2を生成する。
次に、(z,g1,g2,n1,n2)がベリファイアにより知られており、(z,x)が知られていないとして、クライアント・マシンは、
Figure 0005646631
となる値xがあることを、(例えば、ゼロ知識証明を用いて)証明すると仮定する。そして、デバイス(“証明者”)は、値xを消去するが、(y,z)およびパラメータ(g1,g2,n1,n2)は保存する。
その後に、デバイスは、自身が保存しているが秘密である値yが、値zに対応していることを証明しなければならない。(ここで、zはデバイス102上に保存することができるが、ベリファイア106により保存することも可能である。)用いることができる証明の一例は、ゼロ知識証明である。
第2の証明が終わり、ベリファイア106がそれを受け入れると、クライアントが記憶している、知られていない値zが、マルウェア・エージェントに対して多くの量の値のデータを隠蔽するのに用いることができない形式であることを、ベリファイアが知る。
ここで、zは、mと呼ばれる他のデータを暗号化するために用いることができ、その暗号文はcと呼ばれる。従って、暗号化アルゴリズムEについて、c=Ez(m)である。対称暗号化と仮定すると、復号アルゴリズムDについて、m=Dz(c)である。デバイスの内容の検証は可能であるが、mは、cを受け取った機関により知られていないままである。この機関は、zを知らないが、zが大量のマルウェア・データを隠蔽することができない何らかの受け入れ可能な形式のものであることのみ知っている。本明細書に記載の監査プロセスによって、検証機関は、クライアント・デバイスのRAM内に正規のプログラムのみが存在すると確信することができるので、プログラムは、cが与えられると、―秘密の値zを用いて―mにアクセスすることが可能であることが分かる。しかし、ベリファイアは不可能である。
アクセスするプログラムが正規のものであることが分かっているので、mは、認められた方法でのみアクセスされることも分かっている。例えば、mがデータであってコードではない場合、アクセスするプログラムは、データを実行しようとしない。
擬似ランダム・ストリング発生器の利用
図9は、デバイスの監査が行われる環境の一実施形態を示している。図示の例では、デバイス902は、図2に示す構成要素に加えて、外部のベリファイア904のプロキシ(906)として機能するように構成されたSIMを備えている。以下でより詳細に説明するように、デバイス102の命令キャッシュに記憶されている(そこにその全体が収まっている)モノリシック・カーネルは、起動されると、(除外するものとして選択したプロセスを除いて)他のすべてのプロセスをスワップアウトして、監査プロセスを実行する。モノリシック・カーネルは、データ・キャッシュ(およびレジスタ)に配置された関連の作業領域を有している。キャッシュは、一般的にRAMを用いて実装されており、ここではその一部と見なされる。本明細書において用いられる“空きRAM”とは、通常のカーネルを含む全てのアプリケーションがスワップアウトされた後に空きになるはずのRAM部分である。一部の実施形態では、“空きRAM”は、承認されたルーチンおよびデータのセットによって占められていないRAMのセグメントとして定義される。例えば、通常のカーネルは、承認されたルーチンとなる場合があり、共通アプリケーションおよびホワイトリストにあるアプリケーションもそうである場合がある。また、承認されたデータは、外部ベリファイアにより知られているデータに対応していることがあり、それはホワイトリストにある(つまり、安全と考えられる)のであれば、どのような形式であってもよい。これらの場合、承認されたプログラムは、(以下でより詳細に説明するように)二次記憶装置にスワップアウトされる必要はなく、その代わりに、監査のメモリ読み取り部分(例えば、1108)の間、常駐したままでいることができる。
一部の実施形態では、モノリシック・カーネルは、既知の実行環境εに対してパラメータ化されたプログラムFεに相当する。上記で説明したように、実行環境は、デバイスのハードウェア構成に対応している。入力xについてFεを実行すると、出力のシーケンスFεi(Fε,x)が、それぞれ実行開始から時間ti(Fε,x)内に生成され、そして終了状態s(Fε,x)が生成される。この例では、Xが全ての正規の入力のセットであるとして、x∈Xである。
プロキシ906は、デバイスからの待ち時間の変動を低減するために用いられるものであり、様々な実施形態において、SIMに代えて、またはこれに加えて、テザリングされた携帯電話機、携帯電話の中継塔などとして実装される。一部の実施形態において、外部のベリファイア904は、(以下でより詳細に説明する)初期計算を実行し、仲介役としてデバイス902を用いて情報の一部をプロキシ906に(例えば、セキュア・チャネルを介して)伝える。プロキシ906は、モノリシック・カーネルにより実行される計算の時間を計測し、時間計測値についてのレポートを外部のベリファイア904に返す。一部の実施形態では、プロキシ906の代わりに、またはこれに加えて、テザリングされた携帯電話機またはコンピュータといった外部デバイス、基地局、もしくは追加の外部ベリファイアが用いられる。また、不正に強いと考えられているソフトウェア・プロキシを用いること、または専用ハードウェア・プロキシを用いることも可能である。
図10は、デバイスの一部分の一実施形態を示している。前述のように、“空きRAM”は、全てのアプリケーションおよび標準カーネルがスワップアウトされた後に空きになるはずのRAM部分であると定義される。バスの幅は1ワードである。メモリの大きさも、やはりワードを単位として記述可能である。例えば、標準的な電話機では、1ワードが32ビットで、図10に示すような512バイトのメモリページは128ワードの大きさである。ここで用いる“チャンク”とは、キャッシュラインの長さである。図示の例では、各ワードが32ビットで、キャッシュラインは8ワードに相当し、従ってチャンクは256ビットである。
図11は、デバイスの監査を実行するプロセスの一実施形態を示している。様々な実施形態において、図11に示すプロセスは、デバイス902により実行される。プロセスは、その計算が特定の時間で完了することが期待されるように構成される。評価される空きRAMの容量に変化があること、および二次記憶装置1004にアクセスしようとする試行があることによって、計算が完了するまでにかかる時間に観測可能な延長が生じる。同様に、ホワイトリストにあるプログラムのいずれか、または関連データの内容が変更されると、遅延または誤った応答が計算される原因となる。
図11に示すプロセスは、図3に示すプロセスに関連して説明した方法など様々な方法で、起動することができる。追加の例として、監査プロセスを、シャットダウンまたはブート・ルートに含めることができる。また、アプリケーションにより監査プロセスを起動させることも可能である。アプリケーションが非アクティブにされ、処理が実行されて、完了すると制御がアプリケーションに戻される。一部の実施形態において、アプリケーションは、最後のスキャンがどれほど最近に実行されたのかについての情報を、中央権限(または当該デバイス)に問い合わせる。SIMカードは、スキャンがいつ実行されたのかについての情報を記憶することができる。SIMカードが、時間の常時測定を可能にする機能を持つ場合は、回答として実際の時刻を与えることができる。それ以外の場合は、その多くは定期的であることが知られている、認識されたトランザクションの数に基づき、推定の時刻を与えることができる。このような情報を、最後のスキャンからの時間を評価するために用いることができる。
プロセスは、モノリシック・カーネル1006(および、保持することが容認できると見なされるプロセス)を除いてメモリ1002の内容が二次記憶装置1004にスワップされる1102で開始する。一部の実施形態では、プロセスの部分1102は、通常のカーネルまたはその部分のスワップアウトを含んでいる。シリアル通信用のデバイスドライバなど不可欠の機能は、モノリシック・カーネル1106に再び組み込まれる。様々な実施形態において、その内容はそのまま逐語的にスワップアウトされるか、または内容のコンパクト記述が、スワップアウトされるか、プロキシ、外部のベリファイア、もしくは他の信頼済みのデバイスに記憶されるか、もしくはアクティブなコードに使用することができない状態でRAMに記憶される。(例えば、命令用ではなくデータのためのみのキャッシュ部分に命令を記憶することが可能である。)一部の実施形態では、“空き”領域が存在せず、図11に示すプロセスの部分1102は省略される。
1104において、ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取る。プロセスのこの部分は、図3に示すプロセスの部分302と同様である。1104では、さらに、擬似ランダム・ストリングを生成するために使用することができるシードなど、初期化情報を受け取る。初期化情報の他の例には、以下でより詳細に説明するように、ステップ値およびキー値が含まれる。
1106において、空きRAMに上書きする。一部の実施形態では、シードを用いて生成される擬似ランダム・ストリングの出力を使用して、空きRAMに上書きする。空きRAMに上書きする1つの方法は、n2ビットの擬似ランダム・ストリングであって、その出力ビットはいずれの1つもその計算に、ビットのブロック全体の計算または512ビット・モードでのMD6の少なくとも512の適用の少なくとも半分の時間がかかるという特別な特性をもつものを生成することである。この方法は3段階を使用し、出力ストリングが空きRAMの全体を埋めるまで(異なるaux値で)繰り返される。
1.生成: “n”ビットの出力サイズのハッシュ関数h(例えば、MD6)を用いて、0≦i≦n−1、および、ある値auxについて、xi=h(seed,i,aux)を生成する。これは、n2の擬似ランダム・ビットを生成する。
2.シャフリング: yj=Πi=0iBITj(xi),0≦j≦n−1,を計算する。ただし、BITjは、入力のj番目の最上位ビットを返す関数である。これによって、値のいずれの1つを再構成するためにも全てのnのハッシュ関数適用を計算することが必要となるように、ビットがシャッフルされる。
3.ブレンディング:0≦j≦n−1について、zj=h(yj)を計算する。これによって、出力の各ビットが、全てのn個の入力ビットの関数であることが保証され、その各々は計算に1つのハッシュ関数評価を必要としたものである。
様々な実施形態において、最終的なストリングの任意の部分を計算するコストをさらに増加させるため、追加のシャフリングおよびブレンディングが実行される。さらに、図11に示すプロセスの部分1106に関連して説明した技術の例の代わりに、空きRAMを上書きする他の技術を用いることができる。
1108において、“ステップ”値により決定される方法でメモリ1002(またはその一部)が読み取られる。結果は累積され、計算結果にはキーを用いて鍵がかけられる。様々な実施形態において、部分1108の処理は、それぞれ以下でより詳細に説明されるメモリアクセス・スケジューラとアキュムレータにより実行される。
メモリアクセス・スケジューラ
“sRAM”を、チャンクを単位として測定されたRAM 1002全体のサイズとする。外部ベリファイア904は、page<step<sRAM−pageの範囲で、乱数値stepを、“step”が奇数値であるように選択する。ここで、“page”は二次記憶装置の1つのメモリページのサイズを示しており、同じくチャンクを単位として測定されたものである。複数のページサイズがある場合(例えば、二次記憶装置を構成するコンポーネントが複数である場合)、様々な実施形態において、最大のページサイズが用いられる。
1108の処理の実行は、メモリにアクセスするループを含み、その結果を結合して鍵付きのメモリチェックサムを形成することを含む。ループの繰り返しごとに、アクセス位置は、sRAMを法として値stepずつ増加される。“step”とsRAMは互いに素であるので、RAMの全てのメモリ位置がちょうど1回ずつアクセスされる。また、アクセス順序は、値“step”が開示されるまで、攻撃者に知られることはない。“step”に従って読み取られるメモリ1002の図解を図12に提示している。
図9に示す例では、デバイス902は、1つのシングルコアCPUを有している。マルチコア・プロセッサおよび/またはマルチプロセッサを有するラップトップ・コンピュータなどのシステムでは、1108の処理は、本質的にシリアルとなるように(従って、これによりマルチプロセッサの利用を阻むように)構成するか、またはマルチプロセッサを活用するように構成するか、いずれかにすることができる。後者の一例として、衝突がなく、各スレッドがメモリの異なる部分に対応するように、いくつかの計算を、オフセットを伴って開始させることができる。
アキュムレータ
前のレジスタ内容(ここでは“状態”と呼ぶ)を、新たに読み取ったメモリ内容(データ)と結合させる単純な非線形関数を用いて、メモリの内容をレジスタに1つずつ累積することができる。累積関数の例として、ハッシュ関数(例えば、MD6)、非線形シフトバック・レジスタ、およびより単純な関数が含まれる。
単純な関数の例は、state←ROR(state+data)である。後者の関数は、関数ROR(...(ROR(state0+data1)+data2)...+datan)に対応しており、ここで、“+”は通常の加算を指し、“ROR”はレジスタの内容を1ビット右に循環させる。この場合、関数自体は非線形ではないかもしれないが、アプリオリには未知であるstepサイズ、および厳しいタイミング要件と組み合わせると、それでも必要な処理要件を満たすのに十分である。
前述のように、様々な実施形態において、累積プロセスは鍵がかけられる。これを達成する一つの方法は、一定の間隔で、値“state”を、(外部ベリファイアまたはプロキシから取得される)新しい“key”値でオフセットさせることである。オフセットは、新しいkey値に現在の値stateを加算することにより実行することができる。
また、1108に関連して説明したプロセスはメモリの読み取りに基づいているが、一部の実施形態では、フラッシュメモリによるさらなる速度低下を生じさせるように、書き込み操作が含まれる。一例として、データがフラッシュメモリに記憶されているのであれば、ブロック全体を消去するものとして、“1”のシーケンスが書き込まれる。書き込む場所のスケジューリング(および、その場合のモノリシック・カーネル)を簡単化するため、場所は、新しいkey値を取得すると同時にプロキシから取得することができる。
1108では、さらに、他の様々なメモリアクセス・シーケンスを実行することができる。例えば、1つではなく2つのstep値を用いることが可能であり、これらのstep値は両方とも偶数とすることができるが、これらはほとんどの場合、空間全体をカバーするものである。場所のシーケンスを選択する関数を決定する数またはパラメータの集まりを使用することも可能である。これは、最大長シーケンスと考えることができ、その出力は場所であって、最大長シーケンスには所定の範囲内のすべての値が含まれ、それらはメモリ位置に対応している。もし、特定の領域(例えば、モノリシック・カーネル)へのアクセスを避けることが望ましいのであれば、そうなるように、それらの値をオフセットさせることができる。最大長シーケンスの場合、外部ベリファイアまたはプロキシにより提供されるキーは、初期状態であるか、あるいはLFSRの様々なセルに関連付けられた重みとすることができる。
1110において、鍵付きの計算結果が外部ベリファイア904に提供される。外部ベリファイアが結果を承認した場合、デバイス902は安全な状態にあるとみなされる。
1112において、デバイス902は、安全な状態で実行されるべきあらゆる機能を実行する。例として、SSL接続の設定、投票、パスワードの入力、二次記憶装置の悪質な/望ましくないプログラムのスキャンなどが含まれる。様々な実施形態において、安全状態の機能のコードが二次記憶装置内にある(すなわち、モノリシック・カーネルの一部ではない)場合、その機能のダイジェストが、モノリシック・カーネル(またはプロキシ)に記憶されている値と比較される。それらの値が一致している場合のみ、機能が有効にされる。様々な実施形態において、プロキシがメッセージ・ダイジェストの計算を実行可能である場合、モノリシック・カーネルは同様のことを行うためのコードを含む必要はない。
1114において、(1102でスワップアウトした)二次記憶装置1004の内容をロードすることにより、RAM 1002の状態が復元される。
図11に示すプロセスにおいて可能性のある負荷の大部分は、RAMから二次記憶装置へのアプリケーションおよびデータのスワップアウトと、そのスワップインにかかわるものである。これを行うことを、例えば時間を節約するために回避することが可能である。これは、アプリケーションをキルすることにより実現することができる。どのようなアプリケーションが実行中であるか、さらに場合によってはそれらの状態またはその一部について、外部ベリファイアまたはその他の資源が知っている場合、この機関は、監査プロセスが実行された後に、選択されたアプリケーションの再起動を支援することが可能である。二次記憶装置またはSIMカードまたは他のオンボード・ユニットは、この情報の一部を保持することが可能である。空間と時間を節約するため、アプリケーションおよびデータは、それらの完全なストリングによってではなく短縮された識別子によって識別することが可能である。検出アルゴリズムが実行された後に、同じ状態をほぼ再生する近似アルゴリズムをもつことが可能である。例えば、これはブラウザを再起動するが、ブラウザの内容を復元できない場合がある。
また、アクティブなアプリケーションは、それらがRAMのある部分のみを占めるのであれば、スワップアウトする必要はない。例えば、それらがRAMの前半のみを占めると仮定する。空きRAM内の各セル(番号i)について、そのセルの内容をより後ろの位置(位置2i)にコピーする。これは、好ましくは終わり(大きい番号の位置)から開始して実行される。これにより、アプリケーションは効果的にスライスされて、偶数位置にのみに存在することになる。この場合、擬似ランダム値は、奇数番号の位置にのみ書き込まれる必要があり、また、奇数番号のセルについてのみ非線形累積を実行する必要がある。注目されるのは、いずれの機能的マルウェアもアクティブのままでいることが不可能であるということである。マルウェアが存在することは可能であるが、それは、その命令が“次の空き空間へのジャンプ”であって、そこが次の命令がある場所である場合に限られる。擬似ランダムなものにより上書きされない全ての空間はジャンプのみとなる(それ以外のための空間は連続空間にない)ので、マルウェアは何も達成できないことがわかる。特に、空間が攻撃者により予測可能でない場合は、スライス間の距離をより大きくすることが可能である。距離は、例えば、シーケンス発生器により予測される場合があり、このとき、異なる距離は異なる長さである。RAM内でのデータおよびプログラムの展開は、これらをランダム・ストリングでオフセットさせることと組み合わせることができる。マイクロカーネル(マルウェア検出を担うプログラム)は、実行が可能な状態のままである必要があるので、このように展開されることはない。
図11に関連して、アプリオリに知られていないstepサイズを用いて、いかにしてRAMを読み取ることができるかについて説明を行った。1以外のstepサイズを用いて(空き)RAMに書き込みをすることも可能であり、この場合のstepサイズはアプリオリに知られていないものであってよい。この効果の一つは、これによって、攻撃者が二次記憶装置に情報を保存したいと望む場合に、二次記憶装置への書き込みが生じることである。この場合の遅延は、二次記憶がフラッシュメモリを使用する場合、読み取り遅延よりも大きい。書き込みされる範囲に対応する整数を法とする単純なstepインクリメントを用いることが可能であり、モノリシック・カーネルが上位アドレスに常駐していない場合は、さらにオフセットが用いられる。演算に特定のモジュロを用いないこと―アドレス可能RAM空間に対応するモジュロを使用することに相当する―も可能であり、書き込みされるセルが、書き込みされるべき範囲にあるかどうか識別される。
図13は、選択的にメモリを読み取るプロセスの実装の一実施形態を示している。一部の実施形態において、図13は、図11に示すプロセスの部分1108の一部を実現するために用いられる。
一部の実施形態では、データ・キャッシュがフルに利用される。具体的には、データは、キャッシュライン幅であるチャンクで処理され、そのサイズは通常8から512バイトに及ぶ。以下では、パラメータ“α”はキャッシュライン幅をワードで示している。パラメータ“period”は、計時周期の長さに相当する。これは、デバイス902から可能性のある外部ヘルパーへの楽観的なラウンドトリップ待ち時間よりも短い時間に対応するように設定される。報告された値と、それらが報告された時刻が、プロキシ906により記録される。
様々な回避的プログラムの検出例
以下のセクションでは、本明細書に記載の技術を用いて、上記の様々な戦略を用いる回避的プログラムをいかにして検出することができるかについて、例を提示する。検出をうまく回避するためには、攻撃者は期待時間ti(Fε,x)+δ内に正しい応答Fεi(x)を提供しなければならない。これを攻撃者が試みることができる様々な方法があり、その各々について以下で説明する。
外部支援―攻撃戦略1に対して防御する
値“key”および“step”が、セキュア・チャネルを介してプロキシに伝えられる。“state”の値が、外側ループの繰り返しごとに報告される。この値の計算は、値“key”に依存する。従って、(値keyを送信してから計算結果を受け取るまでの)ラウンドトリップ待ち時間が時間閾値ti(Fε,x)+δを超える場合、外部デバイスは、応答の生成を支援することが不可能である。ここで、ti(Fε,x)は、Fεが応答を生成する時間である。
二次記憶装置を用いる―攻撃戦略2に対して防御する
攻撃者がRAM内のデータの“k”個のワードに変更を加えたとし、この領域の“意図的な”内容のイメージが二次記憶装置に保持されていると仮定する。変更されたセルの1つにFεがアクセスしようとした場合、代わりにF’が二次記憶装置内のイメージにアクセスする。
これは、3つの方法で行うことができる。(a)RAM全体のイメージを二次記憶装置内につくることができ、各アクセスはそこで行われる。(b)Fεの各メモリアクセスは、そのアドレスを範囲と比較することにより、単に二次記憶装置に転送する選択アクセス試行で置き換えられる。(c)アドレス変換バッファ(TLB:Translation Lookaside Buffer)を用いて、アクセスを自動的に選択された範囲に転送する。
第1のケースでは、各メモリアクセスは、RAMの代わりに二次記憶装置にアクセスすることに伴う遅延が生じる。第2のケースでは、この遅延が転送されるアクセスで生じるだけでなく、各メモリアクセスについて比較を行う必要がある。第3のケースでは、転送されるアクセスについてのみ遅延が生じる。しかしながら、TLBの粒度がやや粗いことによって、アクセスの転送が可能なセルは最少数である。
RAMを用いる―攻撃戦略3に対して防御する
各セルの値は、(一部の実施形態では)第2層のハッシュ関数出力の一部であり、その入力は512の第1層ハッシュ関数評価の関数であるため、空きRAMを埋めるのに用いられる擬似ランダム・ストリングの構築によって、いずれの1つのセルの計算も、少なくとも512のハッシュ関数評価の計算を必要とする。
各ハッシュ関数の計算のセットアップ・コストがあって、それが少なくとも1156クロック・サイクルであると仮定する。同時に、MD6‐512のハッシュ計算は―セットアップが完了していれば―、1バイトあたり155サイクル、または64ビット入力について9920サイクルかかる。これらは両方とも、最適化されたコードと、標準的な32ビット・プロセッサの場合を想定している。従って、この設定では、1つのハッシュ関数評価あたりの総コストは11076サイクルである。RAM内の1つのセルのみの内容の計算で、少なくとも(512+1)*11076サイクルかかることになる。
時間計測へのプロキシの利用
前述のように、一部の実施形態では、新しいシードを配布し、計時チェックポイントからの値の着信時間を計測するために、外部ベリファイアが用いられる。監査されるデバイスと外部ベリファイアとの間の通信モデルの2つの例は、(a)物理的接続、および(b)外部ベリファイアとSIMカードとの間のVPN、である。下りのデータは暗号化され、上りのデータは認証され、および/または双方向認証が行われる。
デバイスとベリファイアとの間で物理的接続が用いられない場合、待ち時間の変動が、計算の時間計測の妨げとなり得る。このため、一部の実施形態では、(待ち時間の変動がより少ない)プロキシを用いて時間計測を支援する。プロキシとして用いることができるハードウェアの一例は、SIMカードである。
計算の開始に伴う変動を低減するためにプロキシを用いることができる。これは、計算タスク全体とサブタスクの両方に当てはまる。これらは、両方とも、計算に必要なキーまたはシードを送信することにより開始させることができ、キーまたはシードを受信するまでは計算が開始されないことが保証される。
SIMカードは暗号化されたシードを受け取って、それらを復号し、デバイス902に値を提供する。この配信時間は、デバイス上で観測される他の事象に関連させることができる。トリプレット(location,data,seed)を考える。ベリファイアは、このようなトリプレットを生成し、それらを暗号化と認証による方法でSIMカードに送信すると仮定する。ここで、locationは、プログラム内での計算ステップ(または段階)を記述し、dataは、このlocationに関連付けられた何らかの状態を記述している。計算は外部ベリファイアにより先読みすることができる、または非常に可能性の高い少数の計算パスを先読みすることができると仮定する。
これによって、外部ベリファイアは、所与のlocation(すなわち段階)で、どのようなdata(すなわち状態)がデバイス上で観測可能となるのかを予測して、このようなトリプレットを計算することが可能である。トリプルの第3の要素であるseedは、locationおよびdataと関連付けられた特定の状態に達した場合のデバイスに配信される値を示している。
SIMカードは、値“location”をデバイスにより計算または予測することができないか、または他の所から受け取ることができないのであれば、これをデバイスに送る。計算が値location(これはループ反復値とすることができる)に関連付けられた段階に達すると、デバイス上のソフトウェアは、最も最近に計算されたある所定のタイプの値―またはその一部―を、SIMカードに送る。これは、最も最近に計算された値、所定のレジスタの内容、または他の適当な値とすることができる。SIMカードは、この値を、locationに関連付けられた値dataと比較し、それらが同一または同等である場合、値seedで応答する。デバイスは、現在のシード値をこの新しいseedの値で置き換える。これによって、デバイスは、所与の計算段階に達したことを証明するある値を計算した時点で、シードを置き換えることが可能である。新しいシードは、これより前には開示されず、このことはセキュリティ上のメリットがある。あるいは、新しい結果が報告されるとすぐに、この報告された値が正しかったか否かにかかわりなく、新しいシードを開示することができる。報告された値はいずれも、それが受信された時間と共に記録され、ベリファイアは、誤った結果を受け取ったかどうか、または顕著な遅延があったかどうか、後に判断することが可能である。プロキシにより送信されるレポートは、可能であれば帯域幅を節約するように、圧縮または要約することができる。
マッチして、関連するシード値が配信されると、計算はトリプル(location,data,seed)に関連付けられた所定のチェックポイントに達する。
一部の実施形態では、SIMカードは、そのようなトリプルの長いベクトルを有しており、並びの最初のもの(ストレートな計算の場合)か、または入力にマッチするもの(外部ベリファイア・ユニットにより予測することができない分岐がある場合)か、いずれかを選択する。予測可能なlocationが用いられる場合は、値locationを省略することが可能である。SIMカードは、トリプルの長いリストを、それらのいずれも電話機または他の機関によって傍受される可能性なく得ることができ、これは、外部ベリファイア(または関連するプロキシ)とSIMカードとの間のポイントツーポイント暗号化を用いることによって可能となる。
値dataの代わりに、ベリファイアにより開始される事象を用いることもできる。この場合、その事象がSIMカードにより観測されると、関連付けられた値seedが開示され、この値でデバイスでの計算が開始される。これは、クロッキングを開始するために用いることができる。また、これは、デバイスにより実施することもでき、デバイスは、計算を開始するために、例えば外部ベリファイアによって電話機に配信され得る特定のデータを提示しなければならない。
シード値の一部は空とすることもでき、この場合、デバイスにシード値は送信されない。これは、通信のどのポイントに電話機が達したのかについてチェックを実行するために用いられることがある。
SIMカードは、クロックされる(つまり時間を知っている)必要はなく、また、電話機上の悪質なコードによるしらみつぶし探索を不可能にするほど値“data”が十分に長いのであれば、シード値を早期に得ることを目的として、敵対的環境で動作することができる。
計算の終了は、上記のように、チェックポイントを持つことにより識別することができ、その後に、SIMカードは、計算時間を外部ベリファイアに報告するか、または計算の始まりから終わりまでの時間の推定値を外部ベリファイアにより計算可能にする情報を報告する。前者の場合、ローカルタイムの値の集まりをSIMカードにより記録することができ、それぞれは、到達する各チェックポイントについてのものである。これは、ペア(location,time)のリストとして記録することができ、この場合の値timeはローカルタイムとすることができ、これは外部ベリファイアの時間の概念と同期している必要はない。あるいは、報告される値と関連する時刻とからなるペアを記録することができる。SIMカードは、このリストを認証し、それを外部ベリファイアに送信することができる。ベリファイアは認証が正しかったことを検証し、その後に、様々な計算タスクにどれほどの時間がかかったかを確認することができる。これを用いて、デバイスのセキュリティ態勢を推測することができる。あるいは、SIMカードが、このセキュリティについての判断を行い、その判断の認証された結果を外部ベリファイアに送信することができる。
SIMカードは、時刻が分からなくても、事象を順序付けることができる。SIMカードは、ベリファイア(または、マルウェアではなくベリファイアと協働する機関)からパケットを受信する際に、デバイスにより報告されるどの事象が最も最近に生じたか判断する。これは、受信されて正しいものとして検証された値“data”に相当する。この場合、値dataは、(外部ベリファイアにより設定された、もしくはそれにより知られている何らかの計算タスクを与えられた)デバイスにより生成することが可能であり、または外部ベリファイアから伝えられた結果とすることができる。
意図的に遅延されるSIMカードへのレポートに対処するため、事象パケットが受信されたときに、SIMカードによる外部ベリファイアへの即時の確認応答を要求することができる。これらのメッセージは、認証されるものであり、および/またはマルウェア・エージェントにより予測することができない形式になっている。これを構築する方法の例は、上記の値“data”を外部ベリファイアからの事象に対応させ、関連付けられた値“seed”をSIMカードから受信したら、これをデバイスにより外部ベリファイアに対して報告させることである。このとき、外部ベリファイアは、先にパケットを送信した後に、この確認応答の着信時刻を測定することができる。あるいは、デバイスは、“data”に対応する値を外部ベリファイアに直接報告可能にすることができる。これは、全てのチェックポイントのうちの一部について実行することができ、または追加のチェックポイントについて実行することができる。
事象Eが生じた後であって、他の事象が生じるよりも前に、ストリングSにより識別されるパケットがSIMカードにより受信された(さらに、SIMカードにより正しく検証された)と仮定する。この場合、ペア(S,E)がログLに追加される。あるいはストリングSおよびEの識別部がログに追加される。ログは、通信の終了時にベリファイアに伝達される。あるいは、順序付け情報が外部ベリファイアに伝達される。
一部の実施形態では、トリプレット(location,data,report)がベクトルに追加され、この場合の“report”は、ベリファイアに送信されるレポートを示す値である。これは、通常のseed値を用いて実現することもでき、この場合、最後に開示されるseed値は、時間計測を停止させるためにデバイスがベリファイアに伝える値である。また、何らかの追加の鍵付きタスクをデバイスに実行させ、シードと引き換えに値を折り返し報告させることにより、時間計測を停止させることもできる。この場合、ストリングSを含む次のパケットの着信によって、(目的の計算が終了した後に、計算されたと思われるサイクル数から推定することにより)時間計測が停止した時点が特定されることになる。
時間計測が終了したら、SIMカードはログを暗号化(さらに、場合によっては認証)し、これをベリファイアに伝送するため、デバイスに渡す。ベリファイアは、それが正しく認証されたかどうか判断して、それを復号し、そして、Sのような値を含むパケットの伝送時間についての情報が所与であるとして、通信の部分的ステップの完了時間がどうであったかログから判断する。それらが電話機に最も近い基地局により送信された時刻がわかる場合があり、または、それらがネットワーク・プロキシまたはパケット自体の発信元により処理された時刻が分かる場合がある。
一部の実施形態では、値Sは、信頼済みのビーコンにより生成され、場合によっては、デバイスで計算が開始する時点まで外部ベリファイアにより知られていない可能性がある。
Sを含むパケットなど、パケットのタイプによっては、それらをネットワークを介して伝送する前に暗号化する必要はない。一部の実施形態では、それらは認証される。しかし、予備ログ・エントリが作成される前に、パケットが正しく認証されたかどうかについてSIMカードによる検証が行われる必要はない。既に作成されたログ・エントリについて認証の検証に失敗した場合は、このログ・エントリを削除することができる。
SIMカードは、半二重通信可能であり、つまり、データの受信と送信を同時に行うことはできない。SIMカードは、スレーブとして動作する。つまり、(例えば、その電源投入時など一部の特例を除いて)装着されたデバイス(電話機)へのデータの送信のみを、そのような要求があった後に行う。しかし、一部のスマートカードは、問い合わせされたことに反応してだけではなく、関連する電話機からの問い合わせの間で独立に動作することができる。
SIMカードがマルチスレッドをサポートしている場合、(時間計測が開始するときに起動される)単純なカウントを1つのスレッドに実行させ、このカウンタを他のスレッドに提供することが可能であり、これによって、この値は、正しいデータ値が受け取られるごとに記録される。このカウンタは、データ値、関連付けられた位置、またはどのデータ値がカウンタに関連付けられているかを示す指標と共に、記憶することができる。1つのデータ値が複数回受け入れられることができないことが保証されていて、受け取られる値に確定的な順序がある場合など、状況によっては、カウンタ値を記録し、データ値またはその他の状態情報は記録しないことがある。
標準的なジャバカード(JavaCard)など、一部のSIMカードでは、SIMカード・インタフェース・デバイス(CAD)からメッセージを受信した後にのみ、計算がサポートされる。通常、SIMカードから応答が生成されてCADに伝送されると、計算は終了する。
SIMカードが、電話機からメッセージを受信する前でも、また、応答を送信した後でも、クロック・サイクルごとに(または別の確定的周期で)カウンタを進めることが可能である場合、マルチスレッドをサポートしていなくても、正確なカウントを維持することが可能である。
SIMカードでは時間ベースの状態を保持することが可能である。また、SIMカードは、事象を(それが生じた時刻を含めて)認証し、そのような認証事象のリストをエクスポートすることも可能である。
図14は、デバイスの監査の一部を時間計測するプロセスの実装の一実施形態を示している。図示の例では、改良を加えたジャバカードをプロキシとして用いる。この改良によって、プロセスは要求に応答した後にアクティブのままでいることが可能となる。プロキシは、外部ベリファイアから入力および出力の値のベクトルを受け取って、ベクトルdurationを生成し、これは、実行完了時に外部ベリファイアに送信される。(プロキシと外部ベリファイアとの間の全ての通信は、認証および暗号化が行われるものと仮定される。)図示の例では、値“∞”が、クライアント上のマルウェア・エージェントによる不正の試みを示すエラーメッセージに相当する。外部ベリファイアは、ベクトルdurationを受信すると、その中の値が全て、正常に完了したことを意味する厳しい制限範囲内にあるかどうか判断し、そうであると言える場合にのみ、クライアントが安全な状態にあると結論付ける。
時間計測にプロキシを用いる追加の方法
SIMまたはこれに類するハードウェアをプロキシとして用いることに加えて、安全な状態であると考えられる他のデバイスをプロキシとして用いることも可能である。最初に(電話機など)1つのデバイスが安全であることを検証することによってセキュリティをブートし、その後そのデバイスを用いて、第2のデバイスのセキュリティを検証するプロセスでローカルタイムの計測および他の検証タスクを実行することが可能である。
デバイスは、様々に異なるタイプのものとすることができる。例えば、外部ベリファイアの要求に応じて、SIMカード、ローカルな携帯電話の中継塔、またはローカル・コンピュータを用いて、電話機のセキュリティ検証を支援してもよい。この外部ベリファイアは、上記のペア(data,seed)など、検証で用いられるデータの事前に用意された部分を持つことが可能である。また、この事前計算は、第三機関により実行することも可能である。様々な実施形態において、シードは、プロキシによって生成される。一例では、プロキシとデバイスの両方が、加速度計または光起電センサなどのセンサを備える。デバイスとプロキシの両方が(例えば、一緒に握られて、一緒に振られることにより)同じ現象を観測して、シードを計算する。この場合、デバイスは観測されたシードを使用し、プロキシは(それが独立に経験した)シードを外部ベリファイアに送信する。
第1のデバイスが安全な状態にあると判断されると直ちに、それを、自動車のインフォテインメント・システム、別の電話機、ネットブック、ラップトップまたはデスクトップまたはその他のデバイスなど、第2のデバイスのセキュリティ評価における時間計測またはその他の支援に用いることができる。このセキュリティ評価は、(例えば、計算タスクを実行する時間に基づく)同じタイプのものとすることができ、または第1のものの上でブートされる代替のセキュリティ評価方法とすることができる。同様に、第1のセキュリティ評価を異なるタイプのものとすることができ、一方、後のセキュリティ評価は、第1のものの上でブートすることができ、これは、計時ベースのアプローチを用いるものであってもよい。
一部の実施形態では、最初に知られる“安全な”デバイスを用いて、シード値のセットの集まりが生成され、これらは後の時点で他のデバイスによって使い尽くされるものである。そのようなセットを、(例えば、PKIを用いて、または値のピア・ベースの認証により)認証することが可能である。また、外部ベリファイアは、オンライン・プロキシの支援を得られる場合は、オフラインで動作することが可能である。例えば、外部ベリファイアは、暗号化および認証されたデータを、監査プロセスよりずっと前の時点で送信することができる。いくつかのそのようなトランスクリプトを一度に送信することができる。それらは、それらを保持することができるプロキシに送られるか、または、監査されるデバイスもしくはそのプロキシに送られて、そこで必要になるまで保持されることになるか、いずれかとすることができる。メモリ印刷の結果としてプロキシにより生成されるトランスクリプトも、やはりデバイスによってバッファリングされる場合があり、後に、それらが要求されたかどうかにかかわらず、または通信チャネルが使用できるときに、外部ベリファイアに送られる。一部の実施形態では、全てのレコードは、それらが認証および場合によってさらに暗号化される前に、タイムスタンプおよびシリアル番号でマークアップされる。
これを、小ノードのネットワークで実施することが可能であり、その場合、一部のノードは、事前に信頼済みであるか、または安全であると評価されているか、どちらかである。これらのノードは、その後、他のノードのセキュリティ評価を支援するために用いられる。これは、再帰的アプローチである可能性があり、また、循環的とすることができ、つまり、先に信頼済みとなって他のデバイスのセキュリティ評価に用いられるデバイスは、後に、これらのデバイスの一部または他の方法で安全であると評価されたデバイスによって検証されることがある。外部ベリファイアは環境に含めることもでき、検証事象の連鎖の開始を支援し、どのノードをいつ誰により検証すべきかのスケジューリングを支援することがある。
圧縮アクセステーブルの利用
一部の実施形態において、メモリアクセスの位置はベクトル“location”の内容により決定され、その内容は、空きRAMの全てのセルの順列に対応している。このベクトルは、空きRAMに保持された場合、そのすべてを占めることができる。それは、一部の実施形態では、(フラッシュメモリなど)二次記憶装置に記憶されており、必要に応じて部分的にスワップインされる。擬似ランダム・アクセス順序を維持しながらメインループでの計算量を最小限に抑える代替アプローチについて、以下で説明する。
2つのベクトル、locationHとlocationLを考える。この両方が、それぞれ部分的なメモリアクセス位置の順列を含むベクトルである。ここで、実際のメモリアクセス位置は、2つの部分的な位置の組み合わせであり、例えば、1つの要素locationHのビットが、1つの要素locationLのビットと連結されたものである。ここで、要素locationHは上位ビットを含み、要素locationLは下位ビットを含むと仮定される。これらの要素は、同一または異なるサイズとすることができるが、組み合わせたときには、1つのメモリ位置をアドレス指定するサイズとなる。それぞれが範囲内の全ての可能な要素を含んでいれば、全ての組み合わせの集まりは、全てのメモリアドレスの集まりに相当することになる。(ここから、組み合わせ結果を閾値と比較することにより、空きRAM内にないものを取り除くことができ、その結果が閾値より低い場合は捨てられる。)この表現は、記憶のためにアドレス指定される空間の大きさの平方根のスペースしか取らない。3つのコンポーネントを用いることが可能であり、この場合、これらはアドレス指定される空間の三乗根のスペースを取る。同様に多数のコンポーネントを用いることも可能である。結合関数の一例は、連結である。
一部の実施形態では、ベクトルの要素のアクセス順序は、圧倒的な可能性で全ての組み合わせが使用されることになるように保証される幾何学的パターンに従う。メモリアクセスに多くのパターンが与えられているとして、1つのベクトル内の1つの同じ項目の複数のアクセスを持たないことは、これによって攻撃者にとっての予測不可能性の程度が減少するけれども、有益となり得る。全てのアクセスが行われることを保証すると同時にメモリへのアクセス総数を制限することは有益であるにもかかわらず、1つの組み合わせを複数回カバーすることが可能であるが、しかし、可能性はごくわずかである。
位置xでlocationHベクトルに、位置yでlocationLベクトルにアクセスし、対角線に沿ってx‐y位置にアクセスすることが可能である。ここで、最初のシーケンスは、位置(x,y)=(0,0)で開始させることができ、その後、ループの繰り返しごとに、xとyが両方とも同時に1ずつ増加される。1つの座標がベクトルの大きさを超えて増加されたら、その座標は再び0に設定される。そして、位置が再び(0,0)になると、これを変更して、位置(x,y)=(1,0)で開始させることができ、その後、インクリメントのシーケンスが繰り返され、再び(1,0)になると、これが(2,0)に変更される。これは、メモリアクセスの場所ではない。これは、メモリアクセスを行う場所を記述するベクトル内での位置である。
また、それ以外に、場所の要素からなるベクトルを持つことで、どのセルにアクセスするかについての記述を圧縮することも可能であり、この場合、そのような各場所は、アドレスの一部のみを記述し、アドレスの残りのビットは、別の方法で計算されるか、または計算時のプログラムの状態から推測される。さらに、これらの2つのアプローチを組み合わせることができ、また、少なくとも部分的に事前に生成されるアクセス場所のさらに別の関連記述と組み合わせることができる。
時間計測に関する追加情報
様々な計算において、計算および部分的計算の時間計測は、次のように行われる。(A)外部ベリファイアまたはそのプロキシから監査部に必要な値が全て提供されると、タイマーが開始される。これらの値は、一般的に値seedを含んでいる。(B)監査部が正しい値“state”を外部ベリファイアまたはそのプロキシに送信すると、タイマーが停止される(そして、開始してからの時間が記録される)。
古いものが終了すると、新しい時間間隔を直ちに開始させることが可能である(この場合、開始は上記のステップAにより表され、終了はステップBにより表される)。また、これらの時間間隔の間に“休み時間”を組み込むことも可能である。これらの休み時間の間は、計算の時間計測が行われなくてもよく、アルゴリズムは、外部機関との通信、二次記憶装置の読み取りもしくは書き込み、または他の機能などのメンテナンス・ルーチンを実行することがある。休み時間は、アルゴリズムが次の時間間隔の開始(例えば、ステップA)を要求すると、終了させることができる。これを行うことができる一つの方法は、外部ベリファイアまたはそのプロキシに次の時間間隔の開始を信号で伝えることによる。あるいは、外部ベリファイアまたはそのプロキシによって新しい時間間隔の開始を選択することにより、行うことができる。
また、休み時間を標準的な時間間隔として組み込むことも可能であり、その長さは、監査されるデバイスのセキュリティ態勢についての最終的な判断にとって重要ではない。
擬似ランダム・アクセス
一部の実施形態において、監査プロセスの一部として実行される選択的な読み取りは、擬似ランダム順序でのアクセスによるアクセス位置の読み取りおよび書き込みのシーケンスによって達成される。擬似ランダム・アクセスを用いる代替の実施形態について以下で説明する。まず、メモリ充填の一例についての説明を行う。そして次に、周期的な時間計測の一例についての説明を行う。
高速メモリの充填
次のメモリ印刷機能を用いて空きRAMを埋めることができる。また、これを他のタイプの高速メモリの充填に用いることも、そのような他のタイプのメモリがアクセス時間の面でRAMと同等である場合には可能である。擬似ランダム・シーケンスが、擬似ランダムな順序で空きRAMにXORされる。その後、RAMの内容全体の鍵付きハッシュが計算される。RAMはブロックおよびページを使用していないが、それでも“仮想の”ブロックおよびページに分割することができ、これらはフラッシュメモリのそれに対応している。フラッシュメモリの連続するチャンクは、ページまたはブロックでアクセスされない。これによって、フラッシュメモリではアクセスが遅くなるが、RAMでは依然として高速である。
擬似ランダム・ストリングで空きRAMを埋めるために、2つの主なステップがある。最初に、セットアップ機能が実行される。これにより、ベリファイアから得られる擬似ランダム値生成のためのシードを用いて、メモリ印刷機能により行われるメモリアクセスのランダムな順序が決定される。テーブルはフラッシュメモリに記憶され、セットアップ機能により使用されるプログラム領域は、セットアップが完了した後にクリアされる。二番目に、メモリ印刷機能を用いて空きRAMを全て充填する。その実行は、始まりから終わりまでと、それより短い間隔の両方で、時間計測される。
ネットワーク遅延への対処
感染によって引き起こされる遅延は、内部配線により;USBなど標準のネットワークポートにより;有線インタフェースを介して;Wi‐Fiネットワークを介して;LANを介して;インターネットを介して;パケット交換ネットワークを介して;通信ネットワークを介して、またはこれらの組み合わせによりクライアント・デバイスに接続されるデバイスから、測定することができる。これらの通信媒体の一部は、遅延および変動を取り込むことがあり、これらは、統計的手法を用いて測定値から分離することができる。
検証は、監査されるデバイスに、ケーブル、LAN、WAN、ブルートゥース、Wi‐Fi、インターネット、他のネットワーク、またはネットワークの組み合わせを用いて接続されたデバイスによって行われる。検証は、受信した結果を、計算した結果と比較することにより行われ、それ(および、それの前のシーケンス)が適切な時間の範囲内で受信されたことが確認される。これらの通信媒体は全て、待ち時間が生じることがあり、また、一部のものはパケットが欠落する場合がある。
“良い”事象のときは、10単位時間プラス1〜5(一般的なネットワーク変動の場合)の時間がかかると仮定する。
この場合、“悪い”事象は、15単位時間に加えて、ネットワーク変動の1〜5の時間がかかると仮定する。
これらの時間での途中結果の受信を考える。
シーケンスa:0,12,25,(パケット欠落),50―このシーケンスは、欠落パケットがあるにもかかわらず、最後の途中結果が欠落パケットを“保証”しているので、良い可能性が高い。
シーケンスb:0,11,30,35,50―このシーケンスは、2番目と3番目のパケットの間に大きな遅延があるにもかかわらず、4番目のパケットの受信が“早すぎる”ので、良い可能性が高い。
シーケンスc:0,11,30,45,57―このシーケンスは、第2のパケットの後に大きな遅延があり、この遅延を説明する事象がないので、悪い可能性が高い。
上記の実施形態は、明確な理解を目的として、ある程度詳細に記載したが、本発明は、提示した詳細に限定されるものではない。本発明を実施する多くの代替の方法がある。開示された実施形態は、例示であって、限定するものではない。
本発明は、たとえば、以下のような態様で実現することもできる。

適用例1:
物理メモリと、
プロセッサと、を備えるシステムであって、
前記プロセッサは、
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、さらに初期化情報を受け取り、
前記物理メモリを選択的に読み取って、少なくとも1つの結果を決定し、
前記結果をベリファイアに提供するように構成されている、システム。

適用例2:
適用例1に記載のシステムであって、
前記初期化情報はシード値を含む、システム。

適用例3:
適用例1のシステムであって、
前記初期化情報はステップ値を含む、システム。

適用例4:
適用例1のシステムであって、
前記初期化情報はプロキシから受け取られる、システム。

適用例5:
適用例1のシステムであって、
前記初期化情報は外部ベリファイアから受け取られる、システム。

適用例6:
適用例1のシステムであって、
前記初期化情報は現象の表現である、システム。

適用例7:
適用例6のシステムであって、
前記初期化情報は、前記システムが備える加速度計から受け取られる、システム。

適用例8:
適用例6のシステムであって、
前記プロセッサは、少なくとも部分的に、現象を測定することにより、前記初期化情報を受け取るように構成されている、システム。

適用例9:
適用例1のシステムであって、
前記プロセッサは、さらに、前記物理メモリの上書きされる部分を関数に従って決定するように構成されている、システム。

適用例10:
適用例1のシステムであって、
前記プロセッサは、さらに、関数に従って前記物理メモリの一部に書き込みを行うように構成されている、システム。

適用例11:
適用例1のシステムであって、
前記プロセッサは、ステップ・カウンタに少なくとも部分的に基づいて、前記物理メモリを選択的に読み取るように構成されている、システム。

適用例12:
適用例11のシステムであって、
前記ステップ・カウンタは、前記物理メモリのサイズの測定値に対して、互いに素である、システム。

適用例13:
適用例11のシステムであって、
複数のプロセッサをさらに備え、
前記ステップ・カウンタは、前記物理メモリのサイズの測定値に前記プロセッサの数を乗じたものに対して、互いに素である、システム。

適用例14:
適用例1のシステムであって、
前記プロセッサは、恒等関数ではない関数であって、前記物理メモリの一部を入力として受け取る関数を少なくとも部分的に用いることにより、前記結果を決定するように構成されている、システム。

適用例15:
適用例1のシステムであって、
前記プロセッサは、アキュムレータを少なくとも部分的に用いることにより、前記結果を決定するように構成されている、システム。

適用例16:
適用例15のシステムであって、
前記アキュムレータは非線形関数を含んでいる、システム。

適用例17:
適用例15のシステムであって、
前記アキュムレータは、XORおよびローテートを用いる、システム。

適用例18:
適用例1のシステムであって、
前記プロセッサは、少なくとも部分的に、プロキシに情報を提供することにより、前記結果を前記ベリファイアに提供するように構成されている、システム。

適用例19:
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、さらに初期化情報を受け取ることと、
物理メモリを選択的に読み取って、少なくとも1つの結果を決定することと、
前記結果をベリファイアに提供することと、を含む方法。

適用例20:
コンピュータ読み取り可能な記憶媒体において実現されるコンピュータプログラム・プロダクトであって、
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、さらに初期化情報を受け取り、
物理メモリを選択的に読み取って、少なくとも1つの結果を決定し、
前記結果をベリファイアに提供する、
ためのコンピュータ命令を含む、コンピュータプログラム・プロダクト。

適用例21:
物理メモリと、
プロセッサと、を備え、
前記プロセッサは、
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、
前記物理メモリに対して変更のシーケンスを実行し、
結果をベリファイアに提供するように構成されている、システム。

適用例22:
適用例21のシステムであって、
前記ベリファイアは、物理メモリ変更の期待されるシーケンスが前記プロセッサにより実行されたかどうかを、受信した前記結果に少なくとも部分的に基づいて判断するように構成されている、システム。

適用例23:
適用例22のシステムであって、
前記判断は、前記変更のシーケンスの実行に関連するタイミング情報に少なくとも部分的に基づいている、システム。

適用例24:
適用例22のシステムであって、
前記判断は、デバイスから受け取る結果の正確さに少なくとも部分的に基づいている、システム。

適用例25:
適用例21のシステムであって、
前記ベリファイアは、デバイス上で前記プロセッサと併置されている、システム。

適用例26:
適用例25のシステムであって、
前記ベリファイアは、加入者識別モジュールに含まれている、システム。

適用例27:
適用例21のシステムであって、
前記ベリファイアは、ネットワーク接続を介して前記プロセッサと通信する、システム。

適用例28:
適用例21のシステムであって、
前記プロセッサは、さらに、前記ベリファイアからシードを取得するように構成されている、システム。

適用例29:
適用例21のシステムであって、
前記変更のシーケンスは、前記ベリファイアから取得される入力に少なくとも部分的に依存する、システム。

適用例30:
適用例21のシステムであって、
前記1つまたは複数のハードウェア・パラメータは、メモリの容量である、システム。

適用例31:
適用例21のシステムであって、
前記1つまたは複数のハードウェア・パラメータは、メモリの速度である、システム。

適用例32:
適用例21のシステムであって、
前記物理メモリ内にアクティブである回避的ソフトウェアはないと判断されたら、前記プロセッサは、スキャンを実行するように構成されている、システム。

適用例33:
適用例32のシステムであって、
前記スキャンは、ライセンスを受けていないソフトウェアのスキャンを含む、システム。

適用例34:
適用例21のシステムであって、
前記メモリは秘密データを含み、
前記ベリファイアに結果を提供することによって、前記秘密データが漏洩することはない、システム。

適用例35:
適用例21のシステムであって、
前記プロセッサは、携帯電話機の中に含まれている、システム。

適用例36:
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取ることと、
物理メモリに対して変更のシーケンスを実行することと、
結果をベリファイアに提供することと、を含む方法。

適用例37:
適用例36の方法であって、
前記ベリファイアは、物理メモリ変更の期待されるシーケンスが実行されたかどうかを、受信した前記結果に少なくとも部分的に基づいて判断するように構成されている、方法。

適用例38:
コンピュータ読み取り可能な記憶媒体において実現されるコンピュータプログラム・プロダクトであって、
ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、
物理メモリに対して変更のシーケンスを実行し、
結果をベリファイアに提供する、
ためのコンピュータ命令を含む、コンピュータプログラム・プロダクト。

適用例39:
プロセッサと、
前記プロセッサに結合され、前記プロセッサに命令を提供するように構成されたメモリと、を備えるシステムであって、
前記プロセッサは、
デバイス上のメモリへの変更のシーケンスの前記デバイスによる実行に関連する1つまたは複数の結果を、前記デバイスから受け取り、
前記デバイス上の前記メモリ内には回避的ソフトウェアがないことを、前記1つまたは複数の結果が示していることを確認し、
前記確認が行われた後に、前記デバイスのスキャンを開始する、ように構成されている、システム。

適用例40:
プロセッサと、
前記プロセッサに結合され、前記プロセッサに命令を提供するように構成されたメモリと、を備えるシステムであって、
前記プロセッサは、
デバイスが結果を決定するように要求を開始させ、
前記デバイスから前記結果を受け取り、
前記結果、および前記結果を前記デバイスが提供するのに要した時間の長さに少なくとも部分的に基づいて、前記デバイスのセキュリティ状態を確認する、ように構成されている、システム。


Claims (39)

  1. 物理メモリと、
    プロセッサと、を備えるシステムであって、
    前記プロセッサは、
    ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、前記1つまたは複数のハードウェア・パラメータは、前記物理メモリの容量と前記物理メモリの速度の少なくとも一方を含み、
    前記物理メモリに対して、少なくとも一つの書き込み処理を含む変更のシーケンスを実行し、
    前記メモリが不正なプログラムによる影響を受けていないことを、部分的に前記物理メモリの速度に基づいて、検証するために、前記変更のシーケンスと関連づけられた複数の結果をベリファイアに提供するように構成されている、システム。
  2. 請求項1に記載のシステムであって、
    前記プロセッサは、さらに、前記物理メモリに対する前記変更のシーケンスを初期化するための初期化情報を受け取るように構成されている、システム。
  3. 請求項2に記載のシステムであって、
    前記初期化情報はシード値を含む、システム。
  4. 請求項2に記載のシステムであって、
    前記初期化情報はステップ値を含む、システム。
  5. 請求項2に記載のシステムであって、
    前記初期化情報はプロキシから受け取られる、システム。
  6. 請求項2に記載のシステムであって、
    前記初期化情報は外部ベリファイアから受け取られる、システム。
  7. 請求項2に記載のシステムであって、
    前記初期化情報は現象の表現である、システム。
  8. 請求項7に記載のシステムであって、
    前記初期化情報は、前記システムが備える加速度計から受け取られる、システム。
  9. 請求項7に記載のシステムであって、
    前記プロセッサは、少なくとも部分的に、現象を測定することにより、前記初期化情報を受け取るように構成されている、システム。
  10. 請求項1に記載のシステムであって、
    前記プロセッサは、さらに、前記物理メモリのうち前記変更のシーケンスが実行される部分を関数に従って決定するように構成されている、システム。
  11. 請求項1に記載のシステムであって、
    前記変更のシーケンスは、関数に従って実行される、システム。
  12. 請求項1に記載のシステムであって、
    前記プロセッサは、
    前記物理メモリの一部を選択的に読み取るように構成される、システム。
  13. 請求項12に記載のシステムであって、
    前記プロセッサは、前記物理メモリの前記選択的読み取りごとに増加される値に少なくとも部分的に基づいて定められるアクセス位置の前記物理メモリを選択的に読み取るように構成されている、システム。
  14. 請求項13に記載のシステムであって、
    前記増加される値の増加量は、前記物理メモリのサイズの測定値に対して、互いに素である、システム。
  15. 請求項1に記載のシステムであって、
    前記プロセッサは、恒等関数ではない関数であって、前記物理メモリの一部を入力として受け取る関数を少なくとも部分的に用いることにより、前記複数の結果を決定するように構成されている、システム。
  16. 請求項1に記載のシステムであって、
    前記プロセッサは、アキュムレータを少なくとも部分的に用いてメモリの内容をレジスタに累積することにより、前記結果を決定するように構成されている、システム。
  17. 請求項16に記載のシステムであって、
    前記アキュムレータは非線形関数を含んでいる、システム。
  18. 請求項16に記載のシステムであって、
    前記アキュムレータは、XORおよびローテートを用いる、システム。
  19. 請求項1に記載のシステムであって、
    前記プロセッサは、少なくとも部分的に、プロキシに情報を提供することにより、前記複数の結果を前記ベリファイアに提供するように構成されている、システム。
  20. 請求項1に記載のシステムであって、
    前記ベリファイアは、物理メモリ変更の期待されるシーケンスが前記プロセッサにより実行されたかどうかを、受信した前記複数の結果に少なくとも部分的に基づいて判断するように構成されている、システム。
  21. 請求項1に記載のシステムであって、
    前記判断は、前記変更のシーケンスの実行に関連するタイミング情報に少なくとも部分的に基づいている、システム。
  22. 請求項1に記載のシステムであって、
    前記判断は、デバイスから受け取る結果の正確さに少なくとも部分的に基づいている、システム。
  23. 請求項1に記載のシステムであって、
    前記ベリファイアは、デバイス上で前記プロセッサと併置されている、システム。
  24. 請求項23に記載のシステムであって、
    前記ベリファイアは、加入者識別モジュールに含まれている、システム。
  25. 請求項1に記載のシステムであって、
    前記ベリファイアは、ネットワーク接続を介して前記プロセッサと通信する、システム。
  26. 請求項1に記載のシステムであって、
    前記プロセッサは、さらに、前記ベリファイアからシードを取得するように構成されている、システム。
  27. 請求項1に記載のシステムであって、
    前記変更のシーケンスは、前記ベリファイアから取得される入力に少なくとも部分的に依存する、システム。
  28. 請求項1に記載のシステムであって、
    前記物理メモリ内にアクティブである回避的ソフトウェアはないと判断されたら、前記プロセッサは、スキャンを実行するように構成されている、システム。
  29. 請求項28に記載のシステムであって、
    前記スキャンは、ライセンスを受けていないソフトウェアのスキャンを含む、システム。
  30. 請求項1に記載のシステムであって、
    前記メモリは秘密データを含み、
    前記ベリファイアに結果を提供することによって、前記秘密データが漏洩することはない、システム。
  31. 請求項1に記載のシステムであって、
    前記プロセッサは、携帯電話機の中に含まれている、システム。
  32. ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取ることであって、前記1つまたは複数のハードウェア・パラメータは、物理メモリの容量と前記物理メモリの速度の少なくとも一方を含む、ハードウェア・パラメータを受け取ることと、
    前記物理メモリに対して、少なくとも一つの書き込み処理を含む変更のシーケンスを実行することと、
    前記メモリが不正なプログラムによる影響を受けていないことを、部分的に前記物理メモリの速度に基づいて、検証するために、前記変更のシーケンスと関連づけられた複数の結果をベリファイアに提供することと、を含む方法。
  33. 請求項32に記載の方法であって、さらに、
    初期化情報を受け取ることを含む、方法。
  34. 請求項32に記載の方法であって、さらに、
    前記物理メモリの一部を選択的に読み取ることを含む、方法。
  35. コンピュータ読み取り可能な記憶媒体において実現されるコンピュータプログラムであって、
    ハードウェア構成に対応する1つまたは複数のハードウェア・パラメータを受け取り、前記1つまたは複数のハードウェア・パラメータは、物理メモリの容量と前記物理メモリの速度の少なくとも一方を含み、
    前記物理メモリに対して、少なくとも一つの書き込み処理を含む変更のシーケンスを実行し、
    前記メモリが不正なプログラムによる影響を受けていないことを、部分的に前記物理メモリの速度に基づいて、検証するために、前記変更のシーケンスと関連づけられた複数の結果をベリファイアに提供する、
    ためのコンピュータ命令を含む、コンピュータプログラム。
  36. 請求項35に記載のコンピュータプログラムであって、さらに、
    初期化情報を受け取ることを含む、コンピュータプログラム。
  37. 請求項35に記載のコンピュータプログラムであって、さらに、
    前記物理メモリの一部を選択的に読み取ることを含む、コンピュータプログラム。
  38. プロセッサと、
    前記プロセッサに結合され、前記プロセッサに命令を提供するように構成されたメモリと、を備えるシステムであって、
    前記プロセッサは、
    デバイス上の物理メモリへの変更のシーケンスの前記デバイスによる実行に関連する1つまたは複数の結果を、前記デバイスから受け取り、
    前記物理メモリの速度を含む、ハードウェア構成に対応する1以上のパラメータに部分的に基づいて、前記デバイス上の前記メモリ内には回避的ソフトウェアがないことを、前記1つまたは複数の結果が示していることを確認し、
    前記確認が行われた後に、前記デバイスのスキャンを開始する、ように構成されている、システム。
  39. プロセッサと、
    前記プロセッサに結合され、前記プロセッサに命令を提供するように構成されたメモリと、を備えるシステムであって、
    前記プロセッサは、
    少なくとも一つの書き込み処理を含む物理メモリへの変更のシーケンスと関連づけられた結果をデバイスが決定するように要求を開始させ、
    前記デバイスから前記結果を受け取り、
    前記結果と、前記結果を前記デバイスが提供するのに要した時間の長さと、前記物理メモリの速度と、に少なくとも部分的に基づいて、前記デバイスのセキュリティ状態を確認する、ように構成されている、システム。
JP2012525523A 2009-08-17 2010-08-11 デバイスの監査 Expired - Fee Related JP5646631B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US23460409P 2009-08-17 2009-08-17
US61/234,604 2009-08-17
US12/580,891 US8375442B2 (en) 2009-08-17 2009-10-16 Auditing a device
US12/580,891 2009-10-16
US25704309P 2009-11-02 2009-11-02
US61/257,043 2009-11-02
US28636909P 2009-12-14 2009-12-14
US61/286,369 2009-12-14
US12/714,547 US8544089B2 (en) 2009-08-17 2010-03-01 Auditing a device
US12/714,547 2010-03-01
PCT/US2010/002214 WO2011022040A1 (en) 2009-08-17 2010-08-11 Auditing a device

Publications (3)

Publication Number Publication Date
JP2013502639A JP2013502639A (ja) 2013-01-24
JP2013502639A5 JP2013502639A5 (ja) 2013-05-02
JP5646631B2 true JP5646631B2 (ja) 2014-12-24

Family

ID=43589382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012525523A Expired - Fee Related JP5646631B2 (ja) 2009-08-17 2010-08-11 デバイスの監査

Country Status (6)

Country Link
US (2) US8544089B2 (ja)
EP (1) EP2467793B1 (ja)
JP (1) JP5646631B2 (ja)
KR (1) KR101547165B1 (ja)
CN (3) CN105868631A (ja)
WO (1) WO2011022040A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352795B2 (en) * 2009-02-11 2013-01-08 Honeywell International Inc. High integrity processor monitor
US8949989B2 (en) 2009-08-17 2015-02-03 Qualcomm Incorporated Auditing a device
US8544089B2 (en) 2009-08-17 2013-09-24 Fatskunk, Inc. Auditing a device
US20110141967A1 (en) * 2009-12-14 2011-06-16 Lane Sean L Methods and apparatus related to substantially real-time data transmission and analysis for sensors
US9459983B2 (en) * 2010-12-31 2016-10-04 Open Invention Network, Llc Method and apparatus of establishing customized network monitoring criteria
KR101352132B1 (ko) * 2011-03-24 2014-01-14 삼성전자서비스 주식회사 스마트폰의 소프트웨어 조작판별시스템
US8661549B2 (en) * 2012-03-02 2014-02-25 Apple Inc. Method and apparatus for obfuscating program source codes
US20140165197A1 (en) * 2012-12-06 2014-06-12 Empire Technology Development, Llc Malware attack prevention using block code permutation
CN105339995B (zh) * 2013-07-18 2018-04-06 日本电信电话株式会社 解密装置、解密能力提供装置、其方法、以及记录介质
US9705678B1 (en) * 2014-04-17 2017-07-11 Symantec Corporation Fast CAN message authentication for vehicular systems
US9330030B2 (en) * 2014-06-24 2016-05-03 Google Inc. Bridge decoder for a vehicle infotainment system
JP2016053956A (ja) * 2014-09-02 2016-04-14 エスケー インフォセック カンパニー リミテッドSK INFOSEC Co.,Ltd. ウェブ基盤の悪性コード探知システムおよび方法
CN105471580B (zh) * 2014-09-11 2021-12-24 苏州海博智能系统有限公司 一种复核签名方法和设备
KR102403063B1 (ko) * 2014-12-05 2022-05-30 삼성전자주식회사 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US10542118B2 (en) * 2015-09-24 2020-01-21 Intel Corporation Facilitating dynamic filtering and local and/or remote processing of data based on privacy policies and/or user preferences
US20170116604A1 (en) 2015-10-21 2017-04-27 Mastercard International Incorporated Systems and Methods for Identifying Payment Accounts to Segments
US20170116584A1 (en) * 2015-10-21 2017-04-27 Mastercard International Incorporated Systems and Methods for Identifying Payment Accounts to Segments
EP3179395A1 (en) * 2015-12-10 2017-06-14 Thomson Licensing Device and method for executing protected ios software modules
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion
CN108369625B (zh) * 2015-12-19 2022-03-04 比特梵德知识产权管理有限公司 用于保护多个网络端点的双重存储器内省
US10367645B2 (en) * 2016-10-26 2019-07-30 International Business Machines Corporation Proof-of-work for smart contracts on a blockchain
RU2673711C1 (ru) * 2017-06-16 2018-11-29 Акционерное общество "Лаборатория Касперского" Способ обнаружения аномальных событий на основании набора сверток безопасных событий
US10733298B2 (en) * 2017-07-31 2020-08-04 Dell Products, L.P. System management audit log snapshot
CN110928537B (zh) * 2018-09-19 2023-08-11 百度在线网络技术(北京)有限公司 模型评测方法、装置、设备及计算机可读介质
EP3664358A1 (en) * 2018-12-03 2020-06-10 Nagravision S.A. Methods and devices for remote integrity verification
CN109743289B (zh) * 2018-12-10 2021-05-14 北京链化未来科技有限公司 一种基于神经网络的数据验证方法、装置及电子设备
JP2022523564A (ja) 2019-03-04 2022-04-25 アイオーカレンツ, インコーポレイテッド 機械学習を使用するデータ圧縮および通信
US11880457B2 (en) * 2019-09-27 2024-01-23 Micron Technology, Inc. Device intrusion detection via variable code comparison
US11386203B2 (en) * 2020-06-15 2022-07-12 Western Digital Technologies, Inc. Detection of compromised storage device firmware
US11266911B1 (en) * 2020-09-21 2022-03-08 Nintendo Co., Ltd. Systems and method for identifying modified program data
KR102354858B1 (ko) 2021-03-03 2022-02-08 쿠팡 주식회사 아이템 판매 정보 처리를 위한 전자 장치 및 그 방법

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ131399A0 (en) * 1999-06-30 1999-07-22 Silverbrook Research Pty Ltd A method and apparatus (NPAGE02)
DE3913263A1 (de) * 1989-04-22 1990-10-25 Teves Gmbh Alfred Unterdruck-bremskraftverstaerker fuer kraftfahrzeuge
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
KR100204542B1 (ko) * 1995-11-09 1999-06-15 윤종용 멀티 서브워드라인 드라이버를 갖는 반도체 메모리장치
US6335927B1 (en) * 1996-11-18 2002-01-01 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
JP3411186B2 (ja) * 1997-06-06 2003-05-26 シャープ株式会社 不揮発性半導体記憶装置
US6901518B1 (en) * 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US7315826B1 (en) * 1999-05-27 2008-01-01 Accenture, Llp Comparatively analyzing vendors of components required for a web-based architecture
US6769066B1 (en) * 1999-10-25 2004-07-27 Visa International Service Association Method and apparatus for training a neural network model for use in computer network intrusion detection
KR100555003B1 (ko) * 2001-06-04 2006-02-24 가부시끼가이샤 르네사스 테크놀로지 기억 장치
US8352582B2 (en) * 2001-06-28 2013-01-08 Koninklijke Philips Electronics N.V. Temporal proximity to verify physical proximity
US9392002B2 (en) * 2002-01-31 2016-07-12 Nokia Technologies Oy System and method of providing virus protection at a gateway
JP2004104539A (ja) * 2002-09-11 2004-04-02 Renesas Technology Corp メモリカード
US7660998B2 (en) * 2002-12-02 2010-02-09 Silverbrook Research Pty Ltd Relatively unique ID in integrated circuit
US7597250B2 (en) * 2003-11-17 2009-10-06 Dpd Patent Trust Ltd. RFID reader with multiple interfaces
DE102004028032B4 (de) * 2004-06-09 2008-04-17 Perkinelmer Optoelectronics Gmbh & Co.Kg Sensorelement
US7454233B2 (en) * 2004-09-23 2008-11-18 Gemalto Inc Communications of UICC in mobile devices using internet protocols
US8887287B2 (en) * 2004-10-27 2014-11-11 Alcatel Lucent Method and apparatus for software integrity protection using timed executable agents
US7793851B2 (en) * 2005-05-09 2010-09-14 Dynamics Inc. Dynamic credit card with magnetic stripe and embedded encoder and methods for using the same to provide a copy-proof credit card
US7770785B2 (en) * 2005-06-13 2010-08-10 Qualcomm Incorporated Apparatus and methods for detection and management of unauthorized executable instructions on a wireless device
US20080229415A1 (en) * 2005-07-01 2008-09-18 Harsh Kapoor Systems and methods for processing data flows
IL181041A0 (en) * 2007-01-29 2007-07-04 Deutsche Telekom Ag Improved method and system for detecting malicious behavioral patterns in a computer, using machine learning
EP1855223A1 (en) * 2006-05-12 2007-11-14 Telefonaktiebolaget LM Ericsson (publ) Extending the DRM realm to external devices
EP1865656A1 (en) * 2006-06-08 2007-12-12 BRITISH TELECOMMUNICATIONS public limited company Provision of secure communications connection using third party authentication
DE102006027200A1 (de) * 2006-06-12 2007-12-27 Giesecke & Devrient Gmbh Datenträger und Verfahren zur kontaktlosen Kommunikation zwischen dem Datenträger und einem Lesegerät
US20080005797A1 (en) 2006-06-30 2008-01-03 Microsoft Corporation Identifying malware in a boot environment
US20080030456A1 (en) * 2006-07-19 2008-02-07 Sony Ericsson Mobile Communications Ab Apparatus and Methods for Providing Motion Responsive Output Modifications in an Electronic Device
US20120129452A1 (en) * 2006-09-24 2012-05-24 Rfcyber Corp. Method and apparatus for provisioning applications in mobile devices
US8118218B2 (en) * 2006-09-24 2012-02-21 Rich House Global Technology Ltd. Method and apparatus for providing electronic purse
WO2008048665A2 (en) * 2006-10-18 2008-04-24 University Of Virginia Patent Foundation Method, system, and computer program product for malware detection analysis, and response
US8978125B2 (en) * 2006-10-19 2015-03-10 Oracle International Corporation Identity controlled data center
DE102006057093B4 (de) * 2006-12-04 2008-10-02 Infineon Technologies Ag Vorrichtung zur Auswahl einer virtuellen Kartenanwendung
ATE438151T1 (de) * 2006-12-21 2009-08-15 Ericsson Telefon Ab L M Verschleierung von computerprogrammcodes
FR2915337B1 (fr) * 2007-04-19 2009-06-05 Bouygues Telecom Sa Procede et systeme de securisation d'acces interne de telephone mobile, telephone mobile et terminal correspondants.
WO2009013700A2 (en) * 2007-07-24 2009-01-29 Nxp B.V. Method, system and trusted service manager for securely transmitting an application to a mobile phone
CN101377756B (zh) * 2007-08-30 2011-04-27 联想(北京)有限公司 一种评估计算机系统老化的方法
WO2009031065A1 (en) * 2007-09-03 2009-03-12 Nxp B.V. Mobile communication device and method for swapping mifare applications
US7967215B2 (en) * 2008-04-18 2011-06-28 Vivotech Inc. Systems, methods, and computer program products for supporting multiple contactless applications using different security keys
CN100585609C (zh) * 2008-04-30 2010-01-27 北京飞天诚信科技有限公司 一种确保操作环境安全的系统和方法
US7917820B1 (en) * 2008-05-20 2011-03-29 Xilinx, Inc. Testing an embedded core
US8364123B2 (en) * 2009-02-25 2013-01-29 Apple Inc. Managing notification messages
GB2461870B (en) * 2008-07-14 2012-02-29 F Secure Oyj Malware detection
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8243541B2 (en) * 2008-12-19 2012-08-14 Oracle America, Inc. Methods and apparatuses for improving reduced power operations in embedded memory arrays
EP2406717A4 (en) * 2009-03-13 2012-12-26 Univ Rutgers SYSTEMS AND METHODS FOR DETECTING DAMAGE PROGRAMS
US8607340B2 (en) * 2009-07-21 2013-12-10 Sophos Limited Host intrusion prevention system using software and user behavior analysis
US8375442B2 (en) 2009-08-17 2013-02-12 Fatskunk, Inc. Auditing a device
US8370935B1 (en) * 2009-08-17 2013-02-05 Fatskunk, Inc. Auditing a device
US8949989B2 (en) 2009-08-17 2015-02-03 Qualcomm Incorporated Auditing a device
US8544089B2 (en) 2009-08-17 2013-09-24 Fatskunk, Inc. Auditing a device
US8468602B2 (en) * 2010-03-08 2013-06-18 Raytheon Company System and method for host-level malware detection
US20130007848A1 (en) * 2011-07-01 2013-01-03 Airtight Networks, Inc. Monitoring of smart mobile devices in the wireless access networks
US9032520B2 (en) * 2012-02-22 2015-05-12 iScanOnline, Inc. Remote security self-assessment framework
US9077688B2 (en) * 2012-06-17 2015-07-07 Skycure Ltd Access control system for a mobile device
US8910263B1 (en) * 2013-09-17 2014-12-09 Iboss, Inc. Mobile device management profile distribution

Also Published As

Publication number Publication date
EP2467793B1 (en) 2016-10-26
US8544089B2 (en) 2013-09-24
JP2013502639A (ja) 2013-01-24
EP2467793A1 (en) 2012-06-27
WO2011022040A1 (en) 2011-02-24
CN105787372A (zh) 2016-07-20
US20110041178A1 (en) 2011-02-17
KR101547165B1 (ko) 2015-08-25
CN102549576B (zh) 2016-05-04
KR20120066018A (ko) 2012-06-21
EP2467793A4 (en) 2013-10-23
US20140101765A1 (en) 2014-04-10
US9202051B2 (en) 2015-12-01
CN102549576A (zh) 2012-07-04
CN105868631A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
JP5646631B2 (ja) デバイスの監査
US8949989B2 (en) Auditing a device
US8370935B1 (en) Auditing a device
US9411955B2 (en) Server-side malware detection and classification
US11502845B2 (en) Network interface device and method
US7500098B2 (en) Secure mode controlled memory
US7953980B2 (en) Signed manifest for run-time verification of software program identity and integrity
US8364973B2 (en) Dynamic generation of integrity manifest for run-time verification of software program
US6385727B1 (en) Apparatus for providing a secure processing environment
US8375442B2 (en) Auditing a device
US20070005957A1 (en) Agent presence monitor configured to execute in a secure environment
US20160055331A1 (en) Detecting exploits against software applications
Jakobsson et al. Retroactive detection of malware with applications to mobile platforms
US10713392B2 (en) Network interface device and method
CN108259490B (zh) 一种客户端校验方法及装置
CN110971443B (zh) 网络接口设备和方法
AU750573B2 (en) Method and apparatus for controlling access to confidential data
Marchand et al. Firmware Integrity Protection: A Survey
WO2024083346A1 (en) Data processing apparatus and method for runtime attestation
CN115879064A (zh) 一种程序运行方法、装置、处理器、芯片及电子设备
JP2018088574A (ja) プログラムイメージを保護する方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140526

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140623

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646631

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

LAPS Cancellation because of no payment of annual fees