CPUのセキュリティ対策を可能にする Reduced Assembly Set Compiler の提案と実装
DAY 1
14:00-
14:40
組込みシステムにおいては様々なCPUアーキテクチャが用いられる.一方,ソフトウェアの脆弱性対策のひとつとして,CPUによるセキュリティ対策がある.これにはセキュリティのための専用命令の追加やセキュリティに配慮した新たなCPUアーキテクチャの設計・開発が考えられるが,それらに対応したコンパイラの開発が障壁となる.またスタック・プロテクタに代表されるコンパイラのセキュリティ機構はソースコードを修正せずに適用できる点で有効であるが,新たなセキュリティ機構を検証・導入する際にはコンパイラの改造が前提となる.さらに脆弱性解析を新たなCPUに対して行う場合にはそのCPUの動作理解が必要であるが,そのためにはそのCPUの実行コードを生成できるコンパイラの存在がやはり重要となる.
これらのためには新たなCPUアーキテクチャに迅速に対応できるコンパイラが求められる.従来のオープンソースのコンパイラにはGCC等のように複数のCPUアーキテクチャに対応しているものもあるが,それらの多くは高度な最適化のため,新たなCPUアーキテクチャへの対応は非常に難解になっており現実的でない.
そこで生成するアセンブリのパターンを限定することで新たなCPUアーキテクチャへの対応を容易にした Reduced Assembly Set Compiler (RASC) を提案し,RASCの実装としてCコンパイラNLCCを開発した.
NLCCは64種類のアセンブリパターンを登録するだけで新たなCPUアーキテクチャに対応可能であり,さらに24種類のパターンはビルトインにより省略可能となっている.x86やARMを含む12種類のCPUアーキテクチャに対応させた結果,平均8時間程度で対応できたため,1日で新たなCPUアーキテクチャに対応できる 1day-compiler としての利用が可能である.RASCの可能性とNLCCでのセキュリティ機能について検討・考察する.
-
Location :
-
Track 3(Room 3)
-
-
Category :
-
Bluebox
-
-
Share :
Speakers
-
Hiroaki Sakai
坂井 弘亮
幼少の頃よりプログラミングに親しみ,独自組込みOS「KOZOS」の開発,多種CPUのアセンブリ解読などの活動を経て,現在は独自Unix互換環境プロジェクト(NLUX)にて独自標準Cライブラリ(nllibc),独自Cコンパイラ(nlcc),独自プログラミング言語(nll)等を開発中. アセンブラ短歌 六歌仙のひとり(白樺派) バイナリかるた・バイナリ駄洒落 エバンジェリスト 他,セキュリティ・キャンプやSecHack365などの講師・運営,各種オープンソース・ソフトウェアの開発,イベントへの出展やセミナーでの発表などで活動中. 雑誌記事・書籍執筆多数.(「12ステップで作る 組込みOS自作入門」(カットシステム),「大熱血!アセンブラ入門」(秀和システム),「リンカ・ローダ 実践開発テクニック」(CQ出版)など) 技術士(情報工学部門)