web-dev-qa-db-ja.com

クライアント側のアルゴリズムを100%保護することは可能ですか?

あなたが新しいアルゴリズムを含むかなり斬新なアイデアを持っていたなら。たとえば、あなたがorbitz.comまたはkayak.com(旅行サイト)を最初に考えた人であり、新しいアルゴリズムのクライアントサイドをすべてjavascriptで実装することができ、実装したいと考えていました。

このようにリバースエンジニアリングできない場合、100%難読化することは可能ですか? リバースエンジニアリングjavascript難読化ツール 、または開発者は、機密性の高いアルゴリズムを完全に保護したい場合(または少なくともそうする可能性が高い)?

2
Frank Visaggio

クライアント側のJavascriptを保護することはできません。ブラウザがそれを実行できる場合、それはJavascript命令がそれらを望む誰でも100%利用可能であることを意味します。

Javascriptを圧縮して隠すことができます。これは、才能のある開発者が余分な時間の投資で回避できる障害にすぎません。そのため、ブラウザベースのJavascriptでは新しいアルゴリズムを保護できません。

アルゴリズムを保護する場合は、サーバー上に常駐して実行する必要があります。結果のみをクライアントに配信し、コードはクライアントに配信しません。

28
jfriend00

誰かがプログラムを実行できるようにしたい場合は、その人にプログラムを提供する必要があります。 (Duh!)CPUにプログラムを実行させる場合、CPUはプログラムを理解する必要があります。 (もう一度。)コンピューターは愚かで、人間よりもはるかに愚かです。エルゴ、CPUがプログラムを理解できれば、人間も理解できます。

1つの方法は、ユーザーにプログラムとCPUの両方を提供することです。コンピューターをブラックボックスにして、何かを出し入れする場所にします。それだけです。ただし、これはhardであることに注意してください。ゲームコンソールの設計者は、ハードウェアの保護に数百万、おそらく数十億を費やしていますが、それでもかなりの速さでクラックされます。 (そして、それは通常、海賊版ゲームを販売する悪質な犯罪シンジケートではありませんが、XBoxでLinuxを実行したい好奇心旺盛な学生です。)

より良い方法は、どちらも提供しないことです。コンピューターとプログラムを所有し、単にサービスを提供するだけです。

または、心配する必要はありません。

19
Jörg W Mittag