問題タブ [protection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encryption - 変更不可能なファイルの作成
ファイルを作成してエンドユーザーに配布できるようにしたいのですが、エンドユーザーがファイルを変更できないようにしたいと考えています。
さて、明らかに、私は実際に誰かがファイルを変更するのを止めることはできません.
私の意図は、ファイルの内容の塩漬けハッシュを生成し、それをファイルに追加することです。読み取り時に、残りのファイルを読み取る前にハッシュが検証されます。これの欠点は、ファイルを読み取る実行可能ファイルに固定の「ソルト」を配布する必要があることです。もちろん、ある程度難読化することはできますが、それでもリンクが弱いように感じます。
この種の問題を解決するためのより良いアプローチはありますか?
email - ウェブサイト上の電子メールをスパムボットから保護する方法にはどのようなものがありますか?
営業担当者の電子メールアドレスを含む、インターネットに面した公開 Web サイトを作成しています。
「mailto」を生成し、そのアドレスからの電子メールを表示するが、スパムボットがアドレスを取得するのを制限するには、どのようなプログラミング オプションが必要ですか?
protection - サブスクリプション保護コンテンツ?
レッスンコンテンツを提供するサブスクリプションタイプのWebサイト(Lynda.comなど)を開発するための最良の方法は何ですか?
コンテンツをダウンロード(オーディオとビデオ)からどのように保護しますか?
パスワードを処理するための最良の方法は何ですか?ユーザーはログイン名とパスワードを持っていて、定期的に変更され、他の人のパスワードを使用する人を減らすためにサイトによって配布される追加のパスワードも持つことができますか?
パスワードを他の人と共有する人を最小限に抑えるにはどうすればよいですか?
obfuscation - 小規模ベンダー向けのソフトウェア保護
これは、ある時点で私たち全員が考慮しなければならない問題です。
何年にもわたって多くのアプローチを経て、私は一般的にこの声明に同意する傾向があります。「数百人以上が使用する保護されたソフトウェアについては、ひびの入ったバージョンを見つけることができます。これまでのところ、すべての保護スキームが改ざんされる可能性があります。」 あなたの雇用主は著作権侵害対策ソフトウェアの使用を強制していますか?
さらに、私がこの主題について投稿するたびに、誰かが私に思い出させます。「まず第一に、どのような種類の保護を採用する場合でも、真に専用のクラッカーは、最終的にはすべての保護障壁を通り抜けます。」 単一の開発者のためのお金のc#コード保護のための最高の価値は何ですか
したがって、これら2つの広く真の免責事項に耐えることなく、「保護」について話しましょう。
熟練したクラッカーの時間と注意を払う可能性が低い小さなアプリの場合、保護は価値のある演習だと今でも感じています。
何をしても、クラッカーがアプリケーションにパッチを適用してIFステートメント(jmp)の結果を切り替えることができれば、世界中のすべてのパスワードとドングルが役に立たないことは明らかです。
したがって、私のアプローチは、次のような製品を使用して仮想化でコードを難読化すること でした。http ://www.oreans.com/codevirtualizer.php この製品に非常に満足しています。私の知る限り、それは打ち負かされました。PEcompactを使用して実行可能ファイルを圧縮することもできます。他の誰かがそれを使用した経験がありますか?
EXEcryptor http://www.strongbit.com/news.aspに問題があっただけ で、サイトでさえ使用するのが頭痛の種です。コンパイルされたアプリは、WMI呼び出しを行うとクラッシュします。
このアプローチにより、コードの小さなセクションを難読化で囲み、セキュリティチェックなどを保護できます。
アプリケーションはサーバーからのデータを定期的に必要とするため、ユーザーがオフラインで長期間使用しても意味がないため、オンライン認証アプローチを使用します。定義上、アプリはひびが入っていても、その時点では価値がありません。
したがって、単純な暗号化されたハンドシェイクは十分に優れています。難読化保護の範囲内で時々チェックします。ユーザーがアプリを別のマシンにインストールすると、起動時に新しいIDがアップロードされ、サーバーは古いIDを無効にして、新しい認証を返します。
また、コンパイルされたアプリのハッシュを使用し、起動時に1ビットが変更されているかどうかを確認してから、アプリ内からアプリをファイルとして(読み取りLOCKを使用して)開いて、起動後に変更されないようにします。
すべての静的文字列は.exeファイルに明確に表示されるため、エラーメッセージなどを使用して一般的なものにしようとしています。「認証に失敗しました」という文字列はどこにもありません。
メモリダンプから保護するために、単純なテキスト難読化手法(すべての文字のXORなど)を使用します。これにより、メモリ内のプレーンテキストデータを変数などと区別するのが難しくなります。
そしてもちろん、本当に機密性の高いデータにはAESがあります。テキストのカウンターモードが好きです。これにより、シーケンスが繰り返されず、空白のシーケンスのような基になるデータが表示されます。
しかし、これらすべての手法で、キーまたは初期化ベクトルをメモリからダンプできる場合、またはIFステートメントをバイパスできる場合は、すべてが無駄になります。
私は条件文ではなくswitch文を使う傾向があります。次に、実際に目的のタスクを実行する関数ではなく、基本的に行き止まりの2番目の関数を作成します。
もう1つのアイデアは、変数を追加してポインターをコーディングすることです。変数は承認の結果です(通常はゼロ)。これは、ある時点で必然的にGPFにつながります。私はこれを最後の手段として使用するのは、いくつかの下位レベルの認証が失敗した後です。そうしないと、実際のユーザーがこれに遭遇する可能性があります。次に、ソフトウェアの評判が低下します。
どのようなテクニックを使用していますか?
(これは、何かを実装することのメリットを議論するスレッドではありません。何かをすることに決めた人のために設計されています)
image - Webアプリケーションでの画像メディアの保護
大規模なウェブアプリケーションで画像メディアのデータベースを維持しています。高解像度のjpgは大きく(> 15MB)、ダウンロードできるようにしないでください。次に、画像の詳細(切り抜き)へのアクセスをクライアントに提供する必要があります(ズームイン機能など)。クライアントは、画像のダウンスケーリングされたバージョンを表示し、フルスケールモード(100%)で表示する画像の領域を選択できる必要があります。
これを最もパフォーマンスの高い方法(トラフィックおよびCPUの観点から)でどのように実装できますか?高解像度の画像ファイルが保護されている限り、どのような解決策も受け入れることができます。このアプリケーションは、c#および.netFramework3.5で開発されています。
何か案は?前もって感謝します!
php - PHPパスワードの安全なハッシュとソルト
現在、MD5は部分的に安全ではないと言われています。これを考慮して、パスワード保護にどのメカニズムを使用するかを知りたいです。
この質問、「ダブルハッシュ」パスワードは、一度だけハッシュするよりも安全性が低くなりますか?個々のファイルにパスワード保護を実装する方法 に対して、複数回ハッシュすることは良い考えかもしれないことを示唆しています。塩の使用をお勧めします。
私はPHPを使用しています。安全で高速なパスワード暗号化システムが必要です。パスワードを100万回ハッシュする方が安全かもしれませんが、遅くなることもあります。速度と安全性のバランスをとるには?また、結果には一定の文字数を含めることをお勧めします。
- ハッシュメカニズムはPHPで利用可能である必要があります
- 安全でなければなりません
- それは塩を使うことができます(この場合、すべての塩は等しく良いですか?良い塩を生成する方法はありますか?)
また、データベースに2つのフィールド(たとえば、MD5を使用するフィールドとSHAを使用するフィールド)を格納する必要がありますか?それはそれをより安全にしますか、それとも安全ではありませんか?
十分に明確でない場合は、安全で高速なパスワード保護メカニズムを実現するために、使用するハッシュ関数と適切なソルトを選択する方法を知りたいと思います。
私の質問を完全にカバーしていない関連する質問:
PHPのSHAとMD5の違いは何ですか
単純なパスワード暗号化
キー、asp.netのパスワードを安全に保存する方法
Tomcat5.5でソルトパスワードをどのように実装しますか
security - データベースのセキュリティ
SQL Server データベースが他のデータベースから見えないように保護する方法は?
java - USBベースのハードウェアソリューションを使用した海賊版保護
ここで購入できるようなUSBベースの認証およびパスワード管理ソリューションを使用してJava製品を保護したい: aladdin これは、アプリケーションを起動する前に、USBスティックを特別なソフトウェアに接続する必要があることを意味します。
このようなハードウェアを使用したことのあるユーザーの体験をここに示したいと思います。
- これは思ったほど安全ですか?
- 一般:100倍売れるソフトウェアを保護するためにいくらのお金を費やしますか?
Javaコードを難読化し、ユーザー固有のOS設定を、ハードディスクのどこかにある暗号化されたファイルに保存します。アプリケーションにインターネットは必要ないので、ユーザーにオンライン登録を制限したくありません。
ありがとう
コメント: 私が働いている会社は、現在5年以上Wibuを使用しています。
.net - 難読化はどのくらい効果的ですか?
別の質問、つまりBest .NET obfuscation tools/strategyでは、ツールを使用して難読化を簡単に実装できるかどうかを尋ねます。
私の質問は、難読化は効果的ですか? この回答に返信するコメントで、誰かが「ソースの盗難が心配なら...難読化は本物のクラッカーにとってほとんど些細なことだ」と言っていました。
私は Dotfuscator の Community Edition からの出力を見てきました。難読化されているように見えます。私はそれを維持したくありません!
難読化されたソフトウェアを単純に「クラッキング」するのは比較的簡単かもしれないことを理解しています。なぜなら、クラッキングしたいもの (通常はライセンス保護) を実装しているソフトウェア内の場所を見つけ、それをスキップするジャンプを追加するだけだからです。
しかし、心配がエンドユーザーや「海賊」によるクラッキングだけではない場合: 心配が「ソースの盗難」である場合、つまり、あなたがソフトウェア ベンダーであり、あなたの心配が別のベンダー (潜在的な競合相手) である場合は、逆-ソースをエンジニアリングして、それを自社の製品に使用したり、製品に追加したりできます...単純な難読化は、そのリスクに対する適切または不十分な保護の程度を示していますか?
最初の編集:
問題のコードは、エンド ユーザー マシン (リモート サービスではなくユーザー コントロール) で実行される約 20 KLOC です。
難読化が本当に「本物のクラッカーにとってほとんど些細なこと」である場合、それが効果的でない理由(「どれだけ」効果的でないかだけでなく)についての洞察が欲しいです。
2回目の編集:
私は、誰かがアルゴリズムを逆にすることを心配していません。それよりも、アルゴリズムの実際の実装(つまり、ソース コード) を自分の製品に転用することを心配しています。
20 KLOC の開発に数か月かかると考えた場合、すべての難読化を解除するには、これより (数か月) かかるでしょうか?
何かを「盗む」ために難読化を解除する必要さえありますか? それとも、正気の競合他社が、難読化されたまま製品に大規模に組み込み、メンテナンスの悪夢であることをそのまま受け入れ、メンテナンスがほとんど必要ないことを望んでいるでしょうか? このシナリオが可能である場合、難読化された.Netコードは、コンパイルされたマシンコードよりも脆弱ですか?
難読化の「軍拡競争」のほとんどは、「ソースの盗難」を防ぐことよりも、人々が何かを「クラッキング」することさえ防ぐこと (たとえば、ライセンス保護/強制を実装するコードフラグメントを見つけて削除すること) を主に目的としていますか?
.net - ネットリアクター&クリックワンス展開
VB.NET .exe をビルドした後、その出力が VS2005 展開プロジェクトに含まれる前に、サードパーティの .NET Reactor ユーティリティを使用して難読化されます。クリック ワンスを使用して公開する前に、.exe をスクランブル バージョンに置き換える方法はありますか?
ネットリアクターで保護されたアプリケーションであるワンクリックでデプロイできた人はいますか?