そこで,本研究では,プログラム中のデータを符号化し,かつ 符号化したままの状態で演算するような難読化手法を提案する. 提案手法の実施手順は,大きく分けて3つのステップから構成される: (1)プログラム中のデータを符号化する, (2)演算結果も符号化された状態になるように,演算子の置き換えを行う, (3)得られた演算結果を必要な時に復号する. そして,線形変換によるデータの符号化に対して,演算子の変換規則を提案し, 規則的適用後のプログラムの仕様が保存されることを数学的に証明した. また,符号化するデータを選択することによって, それぞれ異なる難読化変換の結果が得られることを示した.
提案手法によって得られるプログラムは, データが符号化されたままの状態で演算が行われるため, プログラムスタック上には符号化されたデータが現れることになる. 提案手法は,実行時にプログラムスタック上に現れるデータを 常に監視するような解析に対しても有効であり, 復号鍵,復号アルゴリズム,認証等のセキュリティに関わる ソフトウェアシステムを保護する効果が期待できる.