研究課題/領域番号 |
22650003
|
研究機関 | 名古屋大学 |
研究代表者 |
酒井 正彦 名古屋大学, 大学院・情報科学研究科, 教授 (50215597)
|
研究分担者 |
坂部 俊樹 名古屋大学, 大学院・情報科学研究科, 教授 (60111829)
|
キーワード | チューリング完全 / 高級アセンブリ言語 / ソフトウェア保護 |
研究概要 |
本研究の目的は、プログラムの解読・改ざんが大変困難なプログラム言語であるMalbogeを、ソフトウェア保護の目的に利用できるようにすることである。最も大きな問題点は、該当の言語でのプログラム作成が不可能といわれるほど難しいことにある。本研究ではその常識を覆し、Malbolgeのチューリング完全性を示し、また、Malbolgeプログラム作成手法の確立を目指すものである。 今年度は、以下の成果が得られた。 1.昨年度に作成した3進数の筆算に近い方法による加算プログラムの手法を整理し、これを高級アセンブリ言語にライブラリとして組み込み、実装した。ライブラリを呼び出すために用いている低級アセンブリ言語プログラムの変更には、大変緻密な職人的作業が必要であった。一方で、この実装によりMalbolgeの仮想機械のメモリ空間である3の10乗のうち、プログラムを置くための空間が残り少なくなり、大きなプログラ秦の実装が不可能になるという問題点がわかった。 2.昨年度にMalbolgeの弱チューリング完全性を証明しているが、変数に格納できる値の最大値があり、また、配列のようなデータ列を扱う機能を持っていないことから、チューリング完全性を持つとは言い難い。今年度は、配列データを扱うための基本機能である、インデックスレジスタの機能を高級アセンブリ言語に導入し、それを低級アセンブラで実現しライブラリとして組み込んだ。これにより、メモリがいくらでも増やせる環境であれば、真の意味でのチューリング完全性をもつことの証明が可能になる。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
インデックスレジスタの機能が実現できたため、プログラム可能な範囲が理論的には十分になった。一方で、実際の仮想機械のメモリ空間が少なく、現実のプログラムはそのままでは困難であることも判明した。
|
今後の研究の推進方策 |
メモリ空間の問題が明らかになったため、これを3の20乗に増やした仮想機械を定義する。定義自体は簡単であるが、その実行系の実現にはページング機能の組込が必要である。一方で、低級アセンブラはワード長に強く依存するため、再設計が必要となる。 高級アセンブリプログラムは、現在、インタプリタ方式で実行されるように、Malbolgeプログラムに変換されるように設計されているが、これから元のプログラムを抽出することはそれほど難しくなくできることが判明した。依然として、プログラム改ざんは困難ではあるものの、リバースエンジニアリングを防ぐためにインタプリタ方式による実装から、コンパイル方式への展開が必要と考えられる。
|