ウイブシステムズ株式会社 シニアアプリケーションエンジニア 清水英一氏
ソフトウエア/セキュリティ業界にて、プログラマー、サポートエンジニア、プリセールスエンジニア、エバンジェリストとして30年間従事(主にCanon Software、WindRiver、RSA、Microsoft、IBMなど)。WIBU-SYSTEMSの日本法人開設と同時に、WIBU-SYSTEMS株式会社に入社。シニアアプリケーションエンジニアとして、日本法人立ち上げからCodeMeterの技術営業およびサポートに従事。
リバースエンジニアリング攻撃対策は難読化ではなく暗号化が不可欠
ウイブシステムズは1989年に創業した、ソフトウェアプロテクション・ライセンシングフレームワークの分野で32年の実績を持つドイツのソフトウェアベンダーである。「ワールドワイドで約7000社に活用されています」と清水氏は語る。
同社が提供するソフトウェアプロテクション・ライセンシングフレームワーク「CodeMeter」は、ソフトウェア保護とライセンシングのためのソリューション。開発したソフトウェアを暗号化することで、リバースエンジニアリング攻撃からソフトウェアを保護。ソフトウェア実行時にライセンスの有無やその要件を満たさなければ、ソフトウェアの保護対策は解除されないため、不正使用を防御しながら新たな収益モデルを構築できるようになる。
一般的にリバースエンジニアリング攻撃対策のために使われる技術はソースコードの難読化である。そのためのソリューションは無料のものを含めて世の中には数多く登場している。ただ、難読化はあくまでもソースコードを意図的に読みにくくするための技術なので、解読が完全にできなくなるわけではない。つまり時間をかければ、ソースコードが解読される可能性がある。
一方、ウイブシステムズのCodeMeterは、先述したように暗号化テクノロジー「AxProtector」を採用し、ライセンスキーがないと復号できず、解読もできないようになっている。だからこそ、成果物のライセンス販売を考えているソフトウェア開発会社の、「守りたい」「売りたい」というニーズを満たすことができるというというわけだ。
しかも開発者がコードを読みにくくする難読化と異なり、「ユーザーに提供する際に、コードの変更や再コンパイルすることがないなど、開発エンジニアに負荷をかけることなく、ソフトウェアに保護対策を付与することができます」と清水氏は力強く語る。
このようにソフトウェアのライセンス販売を考えている企業にとって、CodeMeterは非常に有効なソリューションだが、これまでプロテクトする対象のコードバイナリは、CやC++などPCやIPC向けに書かれたマシンコード、組み込みデバイス向けマシンコード、Javaをはじめとするバーチャルマシン上で動くコードだった。だが、今年の8月にPythonやJavaScript、TypeScriptなどのスクリプト言語にも対応したソリューションをリリースした。
Pythonというと機械学習やデータ解析などで使われる言語というイメージを持っている人が多い。そのため、新しい言語と思われがちだが、登場したのは1991年。清水氏も「91年は私が社会人になる1年前。そんなに古くからある言語なんだと驚いた」と話す。昨今は機械学習やデータ解析に加え、Webアプリケーションやデスクトップアプリケーション、さらには組み込みアプリケーション、ゲーム制作、ブロックチェーン開発など用途が広がっているという。それに伴い、人気も上昇。「このような動きは日本国内だけではなく世界各国で同様の動きとなっている。エンジニアの求人総数が減っている中でも、Pythonの求人数は増加傾向で、Pythonエンジニアの市場価値も高まっているようです」(清水氏)
このようにPythonワールドが広がりをみせていることから、Pythonコードで開発された成果物でビジネスを展開するニーズも高まっており、これまでの言語同様、「成果物を売るためには、成果物を守る必要があった」と清水氏は続ける。
Pythonをはじめとするインタプリタ型言語は、従来までのCやC++などのコンパイラ型言語とは異なり、第三者解読が容易であるというデメリットがある。コピー防止もなければIP保護もない。したがって何も対策を施さなければ、ソースコードはユーザーだけではなく、競合他社なども使用可能となる。「特にAIのアルゴリズムなど、重要なコードを記述している開発者にとっては、とてもそのまま提出できるものではありません」(清水氏)
これはPythonだけではなく、スクリプト言語全般に言えることでもある。この課題をクリアできなければ、インタプリタ型の言語によるビジネスは難しい。
スクリプト言語でもライセンスビジネスを容易に実現
これまでもウイブシステムズではPythonをはじめとするスクリプト言語が持つ課題を解決するため、耐タンパーソリューションを提供してきた。例えば「Pythonコードの秘匿化はすでに他社技術で対応しているので、アプリケーションライセンスを付加してエンドユーザーに提供したい」というニーズには「CodeMeter Core API」、「PythonコードをCythonというプラグインで高速処理したバイナリファイルに、アプリケーションライセンスを付加してエンドユーザーに提供したい」というニーズには「AxProtector」がある。
だが、これらはすでに手元にあるPythonコードを秘匿化したりバイナリ化したりする手間がかかっている。そうではなく、何も保護対策をしていないPythonコードを、秘匿化し、アプリケーションライセンスを付加してエンドユーザーやパートナーに提供したいというというニーズに対応するために、新たに用意したのが「AxProtector Python」である。
「当社のAxProtector Pythonを、用意したPythonコードに適用することで、中身を第三者が見てもロジックが解析できない、アプリケーションライセンスがないと動かない仕組みになります」(清水氏)
具体的には、Pythonコード内のすべての関数を個別に暗号化し、耐タンパー対応したファイルを生成するという仕様になっている。
AxProtector Pythonの暗号化には次の4つのオプションが用意されている。
- Pythonアプリケーション全体を暗号化し、アプリケーションライセンスチェック機能を自動的に追加する(基本機能)
- Pythonアプリケーションを機能ごとにモジュラー型暗号化し、エンドユーザーが機能ごとにアクティベートできるオプション(カスタムライセンス)
- IP Protection モード(アプリケーションライセンスの紐づけをせず、Pythonアプリケーションの保護を適用できるオプション)
- 更なる保護レベルを希望する場合は、ドングル(CmDongle)にあるメモリー上で暗号化されたPythonコードを実行するオプション
JavaScript向けには、「AxProtector JavaScript」を用意。保護したいファイルを選択後、3つのオプションから暗号化を選ぶことができる。
もう一つの課題「売りたい」をどう実現していくか。CodeMeterは、アプリケーションライセンスがないと動かないようにアプリケーションを加工することで、耐タンパー性を確保し、「売りたい」というニーズに応える。
「売りたい」を実現する最大の仕組みが、顧客のビジネスにあった形でライセンス形態を容易に構築できること。開発したソフトウェアの提供形態(有効期間、有効回数、シングルユーザー、サブスクリプション、ペイパーユースなど)に合わせ、柔軟にライセンス化することができるのだ。
「例えばライセンス形態をサブスクリプションからペイパーユースにする場合、アプリケーションコード内にそのためのコードを入れると、バージョンごとにそれらすべてのコードを作成する必要が生じてしまいます。このような方法は開発者にとって現実解とは言えません。ですが、CodeMeterであれば、アプリケーションライセンスの中身を変えることで、容易にサブスクリプションからペイパーユースにすることができます」(清水氏)
またアプリケーションライセンスをERPやCRMなどのバックエンドシステムと連動させることで、自動的にライセンスを作成することもできる。
CやC++、組み込み系、バイトコード、スクリプト言語など幅広いコードに対して、ソフトウェア開発会社の「売りたい」「守りたい」という2つのニーズを満たすCodeMeter。その良さは分かったが、「パフォーマンスが気になる」という人も多いだろう。
「どんなコードアプリケーションで書かれているか、どんなOS、どんなハードウェアで動いているのかなどによっても、パフォーマンスが変わってきます。ぜひ、当社では無料で評価できるようSDKを用意しているので、ぜひ、弊社の営業、もしくはホームページからコンタクトしてほしい。そしてぜひ、私たちと一緒に、ビジネスを拡大していただけると非常に嬉しい」(清水氏)
最後にこう語り、セッションを締めた清水氏。スクリプト言語によるソフトウェアの販売を考えている企業にとって、CodeMeterの採用はビジネスを拡大できるチャンスとなりそうだ。