アフィリエイト広告を利用しています
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
タグクラウド
カテゴリーアーカイブ
ファン
最新コメント
プロフィール
ゼロから始めるシステム開発さんの画像
ゼロから始めるシステム開発
 こんにちは!ナビゲータのEVEです。各種研究室を用意し、次期EVEシステムを製造しようと日々頑張っています。現在一番力を入れているのが、資金調達です。このブログもその一環ですので、ご協力いただければ嬉しいです。
プロフィール

2024年02月17日

運用時に使用するPHPプログラムを暗号化する 〜システム開発研究室〜


 こんにちは!
 ナビゲータのEVEです。
デスクワーク.jpg
 昨日、X(旧ツイッター)でつぶやきましたが、日本ニュースステーションという番組で、AIについてかなりでたらめな報道をしていました。
 細かいことを書くと長くなるので、ポイントだけ話すと、生まれたばかりの生成AIが、犬の動画を作ったり、女性が歩く動画を作れるようになったという報道です。まっ、この業界の技術のスピードは、かなり早く何があっても驚かないのですが、こればかりはいただけません。だって、生まれたてのAIが、犬とか女性がどういうモノなのか知るわけがないからです。
 全くデータがない状態から、AIが将棋とかが強くなると言うケースはあるのですが、それでも、将棋、囲碁のルールは最初に教えなければいけません。
 東大の教授がその番組の中で発言をしていましたが、自分のコメントが使われるのだから、一度中身を見た方が良かったのでは?っと思った昨晩の、報道でした。
 では、今日は、昨日の続きの検討です。

[プログラムをお客さまに見せたくない]
 昨日は、大きすぎるプログラムサイズへの対応を考えましたが、その中で、リリース方式という機能を、構成管理システムへ追加することにしました。その方式の中で、3つのやり方を検討しています。

❶製造したプログラムを以下の項目を指定してアップロードする。
 @プログラム概要
 Aシステムバージョン
 Bプログラムバージョン
 Cリリース日
  ・日付指定
  ・即時反映
 Dリリース方式(New)
  1)ソース(原本)
  2)不要ロジック削除
  3)暗号化(不要ロジック削除)



 D1)については、デバック環境へ、何の変更も加えずリリースする方法です。コンピュータ的に不要でも、開発者からするとかなり重要な情報が含まれています。それを削除しないように、アップロードしたままをデバック環境へリリースする機能です。
D2)については、本番環境へコメントなどの不要ロジックを削除したうえでリリースするという機能です。これは昨日検討した、プログラムサイズが大きくなったことにより、システムへの負担が大きくなってきたということへの対応です。
 D3)については、不要なロジックを削除したうえで、リリースしたプログラムを暗号化するという方法です。
 今回のシステム真剣に作っています。そして、販売も視野に入れて製造しているのですが、販売先でソースを見られ突っ込まれるのが正直言って嫌(笑)!
 今回のシステムは、前回と違い、ChatGPTにデバックしてもらったうえでリリースするので、一般的な規約とかと大きく違ったものは出来上がるということはないと思うのですが、システムに関連するすべての仕様を読み理解しているわけではありません。そのため、システム仕様でふさわしくないといわれる方法でも、できるならやってしまいます。
 数億円といった費用をかけたシステムなら、そんなことはないということを、私一人で作るシステムでは、やってしまう可能性があるのです。

[PHPを暗号化し運用する]
 そんなことできるのっていうことで、Bardで調べてみたのですが、できるそうです。

 PHPプログラムを暗号化して納品し、運用することは可能です。お客様のソースコードを保護するという意味では有効な手段と言えるでしょう。ただし、いくつか注意点があります。

❶暗号化方法
 PHPプログラムの暗号化には、さまざまな方法があります。代表的なものは以下の3つです。
@ファイル暗号化
 1)opensslなどのツールを使用してファイルを暗号化できる」
Aコード難読化
 1)変数名や関数名を意味不明な文字列に変換
 2)ソースコードの構造を複雑にする
B仮想化
 1)PHPプログラムを独自の仮想マシン上で動作させる

 それぞれの方法にはメリットとデメリットがあり、プロジェクトの要件に合わせて選ぶ必要があります。

2. 動作環境
 暗号化されたPHPプログラムを実行するには、専用のデコードツールや仮想マシンが必要になります。そのため、お客様の環境にそのツールや仮想マシンが導入されていない場合は、事前に準備しておく必要があります。

3. デバッグ
 暗号化されたプログラムは、デバッグが非常に困難になります。問題が発生した場合、原因を特定するのが難しく、解決に時間がかかる可能性があります。

4. パフォーマンス
 暗号化処理やデコード処理には、多少のオーバーヘッドが発生します。そのため、プログラムの処理速度が遅くなる可能性があります。

5. セキュリティ
 暗号化技術は常に進化しており、完璧な暗号化方法は存在しません。悪意のある攻撃者によっては、暗号化を解読されてしまう可能性もあります。

 これらの点を考慮した上で、お客様のプロジェクトに適した暗号化方法を選択する必要があります。


 ちょっと、私が聞きたい内容と不整合な解答もあり、製品としては、どのようなモノがあるのか聞いてみました。

1. Zend Guard
2. ionCube Encoder
3. SourceGuardian
4. PHP-Obfuscator
5. Phalcon



[あとがき]
 製品そのものを調べれば実際にできるかどうか分かるでしょう?
 今回のシステムですが、バグがあることが前提ではありません。ブラックボックス試験では正常に動くが、ロジックを1ステップ1ステップ見た場合、PHPの製造元が意図しない方法を採用しているとったケースへの対応です。
 お客様にソースを見られたくないという要望に対して、暗号化という方法の他に、Bardからの解答の中に、難読化というものがありました。その難読化の方法として、GoogleJavaScriptを提供する方法が利用できるかもしれません。
 まっ、とりあえず、自分が作らないと前に進まないプロジェクトなので、がんばります!

 では、また!!!

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/12432253
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック