Tsukutta

【C++/PHP互換】鍵から難読化レシピを自動生成する難読化エンジン「TransCipher」を作ってみた

開発者の方なら一度は、「ゲームの設定ファイルやセーブデータ、あるいはちょっとした通信内容を、そのまま見せるのは抵抗があるけれど、ガチガチの重い暗号化を組み込むほどでもない……」という場面に遭遇したことがあるのではないでしょうか。 そんな時に「ちょうどいい」難読化・データ保護モジュ…

BLUE2026年5月11日公開
About 5 min read40

開発者の方なら一度は、「ゲームの設定ファイルやセーブデータ、あるいはちょっとした通信内容を、そのまま見せるのは抵抗があるけれど、ガチガチの重い暗号化を組み込むほどでもない……」という場面に遭遇したことがあるのではないでしょうか。

そんな時に「ちょうどいい」難読化・データ保護モジュールを自作してみました。

リポジトリ (GitHub): https://github.com/BLUE000/TransCipher-Dist.git

どんなツールか

この「TransCipher」は、新しい暗号化アルゴリズムを開発したものではありません。 既存の信頼された方式(AES-GCM、Base64、バイト反転、パーセントエンコーディング等)をパズルのように組み合わせる、「難読化フレームワーク」 です。

工夫点

秘密鍵から変換レシピ(手順書)を決定論的に生成

  • 同じ鍵を使えば、常に同じ手順で多段変換が行われる。
  • 鍵が変われば、変換の順番や組み合わせ(AESを先にやるか、Base64を後にやるか等)がガラリと変わる。

これにより、アルゴリズムがバレても「鍵」がわからなければ、どのような順番でデータが加工されたかの解析コストを大幅に引き上げできます。

  • サーバー(PHP)とアプリ(C++)で連携できる。

C++(DLL/CLI)と PHP の両方で同じロジックを実装したので、アプリで難読化してサーバーで復号といった運用もできます。

用途

内部で AES-GCM を採用しているため一定の強度は確保していますが、個人情報や決済情報のような「万が一にも漏洩が許されないデータ」の保護を目的としたものではありません。

あくまで:

  • ゲームのセーブデータや設定ファイルの難読化
  • 自作ツール間の通信内容を「とりあえず見えなくしたい」
  • リバースエンジニアリングの難易度をちょっと上げたい

といった、状況を想定しています。

その他

データフォーマットはこんな感じです。

## 免責事項

このソフトウェアは現状有姿で提供されます。作者はこのソフトウェアの使用によって生じた、いかなる損害についても責任を負いません。
ソースコードは非公開ですが、公開APIを通じた利用は問題ありません。

※以下、GitHubにも記載がありますが、後から追記しました。

クレジット表記について(開発者向け)

本ソフトウェアを自身のアプリケーションに組み込んで配布する場合、アプリケーション内の「バージョン情報」や「ライセンス一覧」等に、以下のいずれかの形式で権利表記を行ってください。

表記例 1(シンプル):

Includes TransCipher, Copyright (c) 2026 BLUE000.

表記例 2(サードパーティ・ライセンス項目として):

This software uses TransCipher library.
Copyright (c) 2026 BLUE000.

※ アプリケーション全体の著作権者(あなた)と、ライブラリの著作権者(BLUE000)が区別できるよう、混同を避ける形で記載してください。

その他表現など

5/18時点で

FIPS/NIST規格、輸出規制に完全準拠・抵触回避するために表現を難読化に一貫させました。
あくまで難読化という扱いになります。

この記事が良かったら

BLUE さんへの応援になります

シェア
2フォロワー

Comments(0)

No comments yet

Log in to leave a comment

Log in to comment