本研究では,(1) 自動解析を用いたMan-At-The-End攻撃(MATE攻撃)からソフトウェアを保護する方法の提案,および,(2) MATE攻撃に対する保護機構の有効性を評価する方法の提案,の2点に取り組んだ. 2022年度は,前年度に引き続き,命令列の自動生成機構を用いたプログラム難読化によるソフトウェア保護方法について検討した.この方法は,プログラム内の単純な命令に対して,その命令と同じ機能が保たれた表現が複雑な「代替命令列」をSMTソルバによって生成し,単純な命令を代替命令列に置換することで,プログラムの解析を困難にすることを目指す.前年度は,LLVM IR(LLVMの中間表現)のレベルで,この方法に基づいた難読化を行うシステムを提案・実装した.2022年度は,入力に依存する条件分岐がシンボリック実行を用いた自動解析攻撃に対する耐性を高める,という既存研究の知見を参考に,演算を行う命令の組み合わせだけでなく,元来の命令のオペランドに関わる条件分岐を含んだ代替命令列を生成できるように方法を発展させた.これにより,元来の命令がプログラムの入力に関係する場合は特に,シンボリック実行を伴う自動解析攻撃への耐性が高まることが期待できる.提案方法によって難読化されたプログラムの自動解析攻撃への耐性や実行パフォーマンスの変化を確認し,結果について議論した. 研究期間全体においては,上記の(1)について,命令列の自動生成機構を用いたプログラム難読化方法を提案したほか,小さい計算コストで自動解析攻撃を防ぐことを目的とした難読化方法についても検討した.また,(2)については,適用された難読化方法を自動判別する攻撃への耐性の評価方法などについて検討した.取り組んだ各テーマについて,論文等で研究成果を発表した.
|