著者
尾上 浩一 大山 恵弘 米澤 明憲
雑誌
情報処理学会論文誌コンピューティングシステム(ACS) (ISSN:18827829)
巻号頁・発行日
vol.3, no.2, pp.163-176, 2010-06-21

カーネルレベルで稼働するマルウェア (カーネルレベルマルウェア) による攻撃は,システム全体に被害を与えたり,攻撃の検出が困難であったりすることから,その脅威は深刻である.これまでカーネルレベルマルウェアに対する様々なセキュリティシステムが提案されているが,保守的すぎるカーネル拡張の制限や適用時の実行時の性能低下に関して改善すべき点がある.本論文では,仮想マシンモニタ (VMM) を用いて,VM 内で稼働する OS カーネルの振舞いを制御するセキュリティシステム ShadowXeck を提案する.この制御は,読み込み専用のメモリ領域の保護と,OS カーネルにより発行された間接呼び出し命令や間接ジャンプ命令の制御によって実現される.ShadowXeck は,OS カーネルレベルよりも高い特権レベルの VMM による制御であるため,VM 内から ShadowXeck の振舞い制御機構を無効化することは困難である.我々は,AMD 64 アーキテクチャ上で Xen を用いて ShadowXeck を実装し,既存のカーネルレベルマルウェアを用いた ShadowXeck による OS カーネルの振舞い制御の確認や実行時オーバヘッドの計測を行った.
著者
米澤 明憲
出版者
一般社団法人情報処理学会
雑誌
情報処理 (ISSN:04478053)
巻号頁・発行日
vol.20, no.7, pp.p580-589, 1979-07-15
被引用文献数
4
著者
今井 健男 山本 泰宇 遠藤 敏夫 田浦 健次朗 米澤 明憲
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.40, no.1, pp.42-56, 1999-02-15

我々は C++に分散オブジェクトと分散ごみ集め(分散GC)機構を導入した 分散記憶型並列計算機向け拡張言語DisCを開発する. 我々はまず 分散オブジェクトをC/C++上で扱うためのライブラリ(GCライブラリ)を開発する. これは オブジェクトがどのプロセッサ上にあるのかの判定 あるいは遠隔参照の明示的な作成等 分散オブジェクトの基礎的な機能を実現する. そしてこのライブラリに対し 動的にゴミとなった分散オブジェクトを回収する分散ごみ集めの機能を導入する. このごみ集め機構は特定の通信ライブラリに依らないため 広範な環境での動作が可能である. 次に 上記のGCライブラリを暗黙的に呼び出してリモートメソッド呼び出し等の抽象度の高い機能を 構文仕様の変更なしに実現するフロントエンドを構築する. ここでは自己反映言語OpenC++を用いる事により実装を簡便にし 保守性と移植性を確保している. そして このフロントエンドとGCライブラリを既存のC++処理系に組み合わせる事で 既存の処理系に手を加えない形でのC++の拡張を行なう. プログラマは 通常のC++プログラムでのオブジェクトの操作と同様の記述を用いて 分散オブジェクトの機能を暗黙的に使用できる. DisCは 分散GC機構を備えている他に 1)構文仕様の変更が一切なく 通常のC++と同様の記述で分散オブジェクト・プログラミングができ また 2)様々な計算機環境への高い移植性を持つ という特長がある. これにより 分散記憶型計算機上で動くプログラムの開発と保守 及び異なる分散記憶計算機間でのソフトウエア資産の共有が容易になる. 本稿では 上記ライブラリ及び言語処理系の設計及び実装手法について述べ さらに応用プログラムを作成し 実際に分散記憶型計算機上で動かして拡張言語の性能を評価する.We develop DisC, an extension of C++ that supports distributed objects and distributed garbage collection on distributed memory parallel computers. We first develop a library for C/C++, which includes basic functions to manage distributed objects. This library includes a function that tells whether an object is local or remote, functions that explicitly make remote references. It also provides a distributed garbage collection facility that reclaims objects that are no longer used. The facility is portable because of its independency from communication libraries. We also develop an front-end processor that implicitly invokes functions or the library described above, and brings higher abstractions such as remote method invocation, with no changes to the syntax of C++. We use a reflective language Open C++ to implement the processor, we achieve simple implementation and acquire its portability and maintainability. Programmers can invoke methods of distributed objects in our language as if they were normal C++ objects. Besides the distributed garbage collection facility, there are two major advantages in our language: 1)its extension involves no syntactic changes and the users can write programs with distributed objects as if they write programs in original C++, and 2) it is highly portable to various distributed parallel computers or environments, which have diverse interfaces for inter-processor communication. These advantages makes it easier to develop or maintain parallel software that are portable across various distributed-memory parallel environments. We also evaluate our extended C++ with some experiments using several parallel applications.
著者
多賀 奈由太 関口 龍郎 米澤 明憲
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.41, no.2, pp.41-53, 2000-03-15
被引用文献数
1

我々は,C++言語を拡張してC++の例外機構を利用した,通常の実行効率をほとんど損わないマイグレーション機能を実現した.通常の実行効率とは,スレッドマイグレーションの処理以外の部分の実行効率のことである.従来の多くのモーバイル言語システムでは,通常の実行効率を犠牲にしてスレッドマイグレーション機能を実装している.我々の方式はソースコード変換に基づいており多くのコンパイラとプラットフォームに適用することができる.対象となる言語は,マーシャリングができるようにポインタやunionの取り扱いなどが制限されている,我々のマイグレーション方式は透明である.つまり,場所に依存する操作以外の部分のプログラムの意味はスレッドマイグレーションの前後で変化しない.我々は複数のアプリケーションについてベンチマークを実行し,オーバヘッドを分析し,実行効率がほとんど損われないことを確かめた.We present a mobile C++ language system in which normal execution efficiency is hardly degraded, where normal execution efficiency means the execution efficiency of non-migration efficiency. In existing mobile programming languages, the normal execution efficiency is usually degraded due to the implementation of thread migration. Our implementation is based on source-code-level transformation, exploiting the C++ exception handling mechanism. Thus our thread migration mechanism can be applied to many platforms and it can be combined with many compilers. Compared to the standard C++, use of pointers and unions is restricted in our language so that data on the heap can be migrated to a remote host. Our migration scheme is transparent, namely the semantics of a single thread except location-dependent operations does not change with thread migration. We measured execution performance for several application programs, analyzed their overheads, and verified that the normal execution efficiency was hardly degraded.