Pythonアプリケーション:コードを何らかの方法で保護できますか?
-
19-08-2019 - |
質問
本当に「最良の」方法がある場合、Pythonアプリを出荷し、人々が(簡単に)一般的なアルゴリズム/セキュリティ/作業をリバースエンジニアリングできないようにするための最良の方法は ですか?
「最良の」方法がない場合、利用可能なさまざまなオプションは何ですか?
背景: 私はPythonでのコーディングが大好きで、Pythonでより多くのアプリをリリースしたいと思っています。私が疑問に思うことの1つは、私が入れたライセンスコードを人々が回避したり、ソースベース全体をただちぎり取ったりする可能性があることです。 Py2Exeおよび同様のアプリケーションのことを聞いたことがありますが、それを行うための「好ましい」方法があるかどうか、またはこの問題が単なる現実であるかどうかに興味があります。
解決
あいまいさによるセキュリティ決しては機能しません。プロプライエタリライセンスを使用する必要がある場合は、中途半端な難読化の試みではなく、法律で強制してください。
セキュリティ(暗号化など)アルゴリズムの学習について心配している場合は、同じことが当てはまります。アルゴリズムが完全に知られていても、実際の便利なセキュリティアルゴリズム(AESなど)は安全です。
他のヒント
C#やJavaなどのコンパイル済み言語を使用する場合でも、意欲があり技術的に有能であれば、リバースエンジニアリングを実行できます。難読化は、これに対する信頼できる保護ではありません。
リバースエンジニアリングに対する禁止を、ソフトウェアのエンドユーザーライセンス契約に追加できます。ほとんどの専有会社はこれを行います。しかし、それは違反を防ぐものではなく、法的手段を提供するだけです。
最良のソリューションは、コードを読み取るためのユーザーのアクセスが製品またはサービスを販売する能力を損なわない製品およびサービスを提供することです。コード自体ではなく、提供されるサービス、またはデータの定期的な更新のサブスクリプションに基づいてビジネスを行います。
例:Slashdotは、実際にWebサイトのコードを利用可能にします。これは、Webサイトを実行する能力を損ないますか?いいえ。
別の解決策は、製品を使用するために正当なライセンスを購入するよりも、コードを海賊版化する努力のコストが高くなるように価格を設定することです。 Joel Spolskyは、彼の記事とポッドキャストでこの効果を推奨しています。
市販のMacデスクトップアプリをPythonで出荷する場合、他の回答で説明したとおりに行います。難読化するのではなく、適切なEULAを使用して法律で保護します。
私たちのコードをリバースエンジニアリングする人とのトラブルは一度もありません。そして、そうすれば、法的措置を取ることができると確信しています。はい、それは人生の事実です。しかし、一緒に暮らすのはそれほど難しくないものです。まともなEULAを作成するまともな弁護士を雇うだけです。
探している言葉はわかりにくいです。グーグルの簡単な説明:
http://www.lysator.liu.se/~astrand/ projects / pyobfuscate /
しかし:
a)著作権侵害が問題になる場合、法律はあなたの側にあります(すべてのファイルに適切な著作権表示を含める限り)。
b)賢明であれば、オープンソースアプリケーションで利益を上げることもできます。
c)知的財産を本当に安全にしたい場合、唯一の答えは、そもそも誰にもそれを持たせないことです:アプリケーションをWebアプリとして作成します(djangoを使用することをお勧めします)。ホスティングプロバイダーはコードにアクセスできます。
py2exe
Windowsでは、py2exeはエンドユーザーにコードを配布する1つの方法であり、py2exeはpythonインタープリター、必要なdll、およびPythonバイトコードにコンパイルされたコードをバンドルします。
これがどのようなものかを知るためのPythonバイトコードの指示は次のとおりです。
http://www.python.org/doc/2.5 .2 / lib / bytecodes.html
または dis を使用して、いくつかのpyc / pyoファイルを逆アセンブルできます。
したがって、py2exeの使用は、コンパイル済みのpython(pyc / pyo)ファイルの配布に似ています。
Shedskin C ++コンパイラ
Shedskinコンパイラは、PythonのサブセットをC ++にコンパイルし、任意のコンパイラを使用してネイティブコードにコンパイルできます。
py
PyPyについてあまり知りません。彼らのドキュメントによると、PypyはCコードを生成できます。