1

人々。私は、コミュニティがこれを関連する質問と見なすと信じています。そうでない場合はお詫びします。改造してください。閉じてください。

私は顧客のために静的コンテンツを含むビデオ再生アプリを開発しています。私の顧客は、誰かがデプロイされたアプリ(Android用)を解凍してMPEGをコピーするのを防ぐために、基本的なセキュリティを実装することを望んでいます。私の顧客は基本的な保護を重要な要件にしており、彼は請求書を支払っています:)

ファイルが大きすぎてその場で解読できないので、次のアプローチを検討しています。代替案についての考えや提案を歓迎します。私は、コピー防止スキームと隠すことによるセキュリティに対する賛否両論を認識しています。これは、私の提案するアプローチで使用されており、私の質問は「すべきか」ではありません。

MPGのヘッダーのどこかから、バイトのブロック、たとえば256を取得します。これらのバイトをランダムな値に置き換えて、MPEGを修復するための多大な労力なしにMPEGが再生されないようにします。元の256バイトをアプリのビットマップの1つに保存して、ビットマップが引き続き正しく表示されるようにします。ビデオを再生するときは、バイトストリームを介してビデオを読み込み、バイトを元の値に置き換えてから、出力ストリームに渡します。

要約すれば:

  1. MPEGのヘッダーから256バイトを抽出します
  2. これらのバイトをビットマップに格納します
  3. 元のバイトの値をランダム化する
  4. 実行時に、ビットマップから256バイトを読み取ります
  5. バイト配列バッファを使用して、入力ストリームを介してMPEGを読み取ります
  6. ランダム化されたバイトを元の値に置き換えます
  7. ビデオプレーヤーへの入力である出力ストリームに入力をストリーミングします。

私はこれを打ち負かすための少なくとも2つの方法、リバースエンジニアリングと画面の取得を認識していますが、要点は、平均的な泥棒が努力なしに顧客のコンテンツを単にコピーするのを防ぐことです。

人々を考えますか?

ありがとう

4

1 に答える 1

0

ストリーム全体に暗号化/復号化スキームを使用することをお勧めします。

  1. リアルタイムのビデオストリームの復号化は、この問題に対処するための標準的な方法です。実際のビデオデコードと比較した場合、その処理オーバーヘッドはごくわずかです。たとえば、そこにあるすべてのDVDプレーヤーはCSS暗号化スキームをサポートしています。

    Javaを使用すると、さまざまなCPU固有の命令を効果的に使用できないなど、いくつかの制限が課せられますが、それほど高価ではない復号化アルゴリズムを見つけることができるはずです。手に負えないストリーム暗号化アルゴリズムを拒否する前に、アプリケーションをプロファイリングすることをお勧めします。

  2. ヘッダーを操作すると、一部のビデオファイルが読みにくくなりますが、不可能にはほど遠いです。一部のファイルには冗長な情報が含まれていますが、他のファイルは実際には、後続のセグメントを読み取り可能のままにする、まっすぐな連結の結果です。一部のストリーミングビデオコーデックは、実際には、数秒ごとにストリームを再構築するのに十分なメタデータを挿入します。そして、そこにはたくさんのビデオフォーマットがあります。

    つまり、ファイルの先頭から任意の数のバイトを削除すると、ファイルが読み取れなくなることを保証する方法はありません。また、クライアントが使用できるビデオ形式に多くの制限を課すことは合理的ではなく、アプリケーションの将来の有用性を制限すると思います。

于 2012-04-06T08:47:39.903 に答える