ゲーム内の暗号化されたコンテンツ


45

私は、暗号化を使用して、ユーザーがプログラム自体の外にある私のプログラムのコンテンツを理解できないようにするという考えを持っています。ユーザーのように、ゲームのデータを調べながら、ゲームで決して使用されていないテクスチャが、ある種のイースターエッグの一部であることに気付くかもしれません。これは、たとえば、オンラインで投稿された場​​合、全員を台無しにする可能性があります。

プレイヤーがゲーム内のセキュリティドアの正しい番号を押す必要がある秘密の部屋を想像してください。正しい番号が正しい場合は正しい解読キーを生成し、レベルのその部分を解読してドアを開けます。したがって、キーは実際には保存されないため、ゲームデータを調べてもイースターエッグにアクセスできなくなります。これは、ユーザー入力に基づいて生成されます。

ここに私が想像していたものの別の例があります。20のレベルのパズルゲームがあり、それぞれが異なるキーを使用して暗号化されています。解読キーをプログラムに保存して、誰かがプログラムを逆コンパイルして見つけられるようにする代わりに、前のパズルの解に基づいて暗号化/解読キーを生成します。この方法では、ゲームデータを見ても、プレーヤーは次のレベルに関する情報を取得する前にパズルを実際に把握する必要があります。

プレーヤーは、知識があれば、パズルソリューションの数がおそらく復号化キーの数より少ないことを考えると、「簡単に」ブルートフォースすることができます。それは本当にパズルの問題の複雑さであり、ここではあまり重要ではありません。私はそれに関する答えをここに投稿しましたが

今日、このようなことをしたプログラム/ゲームはありますか?暗号化されたコンテンツをゲームに保存しますか?そして、もしそうでなければ、なぜですか?店舗または国レベルで、それに関する多くの規則と規制がありますか?誰かが私が見落としている明らかな落とし穴を見ていますか?ユーザーエクスペリエンスのようなものを無視すると、このアイデアは私には聞こえるかもしれませんが、なぜこれを見たことがないのか興味があります。

編集:私が言っていることは正確には明確ではないかもしれないので、ここでより具体的な例を示します。

20文字の文字列を受け取り、ゲーム内の一部のコンテンツを暗号化/復号化するために使用できる対称キーを生成する関数があるとします。ユーザーがそのコンテンツにアクセスできる唯一の方法は、これらの20文字を知って同じキーを生成することです。このキーは直接保存されることはなく、ユーザーの入力に基づいてその場で生成されます。これらのキャラクターは、本やNPCとの対話など、ゲームの外に隠されていたり、ゲームの外でも箱の後ろに隠れていることがあります。

そのため、2 * 10 ^ 28通りの組み合わせを試してみると、ゲームデータを調べるよりも、意図した方法でコンテンツを見つける可能性が高くなります。

編集2:問題のコンテンツは、消費者に出荷されるに、任意の秘密鍵で暗号化されます。このキーは明らかにゲームに同梱されません。キーに基づいて作成された一連の手がかりを考えると、彼または彼女は何らかの方法でキーを一緒に戻さなければならず、それはゲーム全体またはどこかで隠されています。ただし、実際にゲームデータを調べない限り、コンテンツが暗号化されていることがわからないため、このシステムはユーザーに対して透過的です。

多くの人が言及しているように、これにはユースケースが限られているという明らかな欠点があります。一人の人がそれを理解したら、彼/彼女はそれを他のすべての人と共有するかもしれません。しかし、あなたの意図が何かを秘密にして、一人で解決できないようにし、人々が協力して解決する必要がある場合、またはイースターエッグが非常によく隠れて(設計上)それが怖い場合誰かがゲームプレイを通してではなくコード内でそれを見つける可能性が高いです。その後、これはうまくいくと思います。

個人的には、ゲームごとに一度だけ、コアゲームプレイに影響を与えないもの、たとえばイースターエッグ、秘密の結末などにのみ使用することをお勧めします。コンテンツを暗号化するのに十分なほど人々を遅くするためには、パズルは非常に複雑であるか、十分に隠されている必要があります。


56
回答は技術的な詳細に焦点を当てるが、あなたの目標は非表示スポイラーにある場合、この情報はで利用可能になることを考えるだけでゲームをプレイするには、(あなたのゲームが普及している場合)、その時点で、に皆のためのウィキアの記事へ直進します読んで、プレーヤーかどうか。
ルーシェンコ


5
これは、エンターテインメント製品にとっては少し過剰ではありませんか?ウォークスルーを見たり、プレイしたり、すでにプレイした人に聞いたりすることで、人々が「キー」を手に入れることができるということです。また、この「多かれ少なかれ曖昧な」ものを扱う方法のために、ゲームはよりエラーを起こしやすくなるかもしれません。それ以外の場合、私はアイデアが好きで、それは素晴らしい仕掛けになりますが、それでも人々がハッキング/不正行為を止めることはありませんが、むしろそれをより難しくします
BlueWizard

3
ユーザーがゲームをハッキングすることで知られていて、パズルが本当に難しい場合、これは特にクールだと思います。フォーラムで「この奇妙な暗号化されたファイルとは」を想像できます。
-PyRulez

5
@PyRulezああそう!それがこの背後にある私の主な動機でした。それらの厄介な政府がすべてのイースターエッグを見つけるためにゲームファイルを調べるとき、私はそれを嫌います。敵のフォーラムに投稿して、国の道徳を台無しにすることができるように。
クリスター

回答:


90

この質問は、特定のゲームコンテンツのロックを解除するためにハッキングする代わりに、少なくとも1人のユーザーにパズルの解決を強制することが可能かどうか(商業的に実行可能か他の解釈だけでなく)を尋ねています。

私の知る限り、これは間違いなく可能です。実際、キーが生成も保存もされておらず、ゲーム状態から読み込まれるだけであると明確に述べられている場合でも、他の答えは不可能だと言っているのは奇妙です値)。「ゲームはそれを復号化する方法を知っている」ので動作しないという議論は、オープンソースの暗号化/復号化ソフトウェア(TrueCryptなど)が本質的に安全でないことを意味します。キーボード入力に基づく文字列、それは簡単ですよね?)。

絶対に最も単純なケースでは、ゲーム自体がキーボードシミュレーターであり、「暗号化されたファイルのパスワードは何ですか?」という質問をすると想像してください。明らかに、ゲームのソースコードを持っていても役に立たないことに同意します。ゲームが「最小の動物の名前と連結された地球上の最大の動物の名前は何ですか?」という質問をすることを想像してください。ゲームのソースコードを持っていても役に立たないことは明らかではなく、パズルを解決する必要がありますか?

これが可能かどうかに関しては、答えは「はい」です。これは可能です。


9
私の質問を完全に理解しているように見えるのは、これまでのところあなたの答えだけだと思います。あまりにも多くの人が、私の質問は暗号化に関する他の特定の質問に似ていると自動的に考えるようです。彼らがどこから来ているのか理解していますが、私の質問をもう少し読んでほしいと思います。
クリスター

7
あなたが提案しているのは、問題の解決策が暗号化された方法でのみ保存されているということです。有効な解決策を確定することは間違いなく可能ですが、そこから元に戻すことは基本的に不可能です。(how-to-store-passwords-101)。どのように表示されるように、ユーザー入力を必要としない非表示コンテンツへの質問の2番目の部分は、(私は、ユーザー入力を言わないとき、私は非常に厳格な方法であることを意味することに注意を)解決するしかし不可能です
WorldSEnder

3
主なポイントは、1人のユーザーにパズルを解くように強制することしかできないということです。最初のユーザーは他のすべてのユーザーに通知できるからです。これにより、暗号化の全体的なポイントがミュートされます。
cmaster

4
ソースコード(またはstrings実行可能ファイル)を使用して、「最大の動物の名前は何ですか?」などのなぞなぞ プレーヤー/ハッカーが解決する必要があるかもしれませんが、少なくとも彼はゲーム内の問題が発生する場所への危険な移動を回避できます。したがって、なぞなぞ自体もある程度非表示にする必要があります(グラフィックとしてのテキストで十分な場合があります。より精巧に言うと、特定のポイントから見たときに通常の3Dオブジェクトがなぞなぞやその他の重要なソリューションに遠近法で組み合わされたゲームを覚えていると思います情報...)
ハーゲンフォンアイゼン

4
「これは、たとえば、オンラインで投稿すると、すべての人にとって台無しになる可能性があります。元の質問から...申し訳ありませんが、この答えにはポイントがありません。それは次のようになり、単に答えまたは復号化されたファイルまたは何が掲載されている場合は皆のためにそれを台無しにするように脆弱、とあるだけで、それらを掲示するように脆弱。
ネイサンタギー

57

試されました。何回も。暗号化を使用して、ユーザーが適切と思われるプログラムにアクセスできないようにすることに専念しているサブ業界全体があります。そして、それは決して機能しません。最良の保護スキームは、クラックされる前に約1か月続く傾向があり、インターネットに関することは、一度クラックされると、誰かが投稿するとすぐにどこでも永久にクラックされることです。欠落している明らかな落とし穴は、プログラムがデータを使用するために、データを解読するために必要なすべての情報を含まなければならず、コンピューターがそれを実行できる場合、コンピューターにアクセスできる人が実行できることですそれ。

「暗号の基本的な問題」と呼ばれていますアリスは、ボブにメッセージを送信したいのですが、チャーリーはそれを理解しても読めません。 あなたが提案しているアプローチの問題は、この場合、ボブとチャーリーが同じ人物であるということです。

ユーザーをだめにしたくないという願望は理解できますが、もし人々がネタバレを望むなら、彼らはそれを見つけ、もしそうでなければ、ネタバレを積極的に避ける傾向があります。しかし、本当に素晴らしいゲームを作りたいのであれば、反対の道、すなわち過激な開放性を選んでください。Neverwinter NightsStarcraft、またはElder Scrollsシリーズなど、リリース後何年もの間人気を博しているゲームを見てください。ユーザーがすべてを掘り下げ、それがどのように機能するかを把握し、独自のコンテンツを構築して共有できる強力なデザインツールをゲームに同梱しているためです。ゲームは、コミュニティになり、コミュニティが耐えるまで、単なるゲームです。


3
この場合、暗号化を解読することは、パズルを解くボットを書くことと同等です。単にゲームを完了して答えを書き留めるよりもおそらく難しい
ユアン

15
この答えは私の質問に実際に答えるものではないと言いたいだけです!私は実際に人々に「コードを解読する」か、むしろ私のパズルを解いてもらいたい。それが全体のポイントであり、はい、誰かがそれを理解したら、私は彼が解決策を共有するのを止めることはできません、私はしようとはしていません。しかし、「情報を解読するために必要なすべての情報を含まなければならない」と言っているのは間違っています。なぜなら、この情報はユーザーによって与えられたものだからです。詳細については、更新された質問をお読みください。
クリスト

6
それはありませんし、ここに理由です@Christer:メイソンが言っている彼らはパズルの答えを見つけるためにゲームファイルに入ることができるかどうか気に誰がためだけの少数が実際にそれを行います ...
非常識

9
@JonasDralleそれはうんざりするほど皮肉な視点であり、それも真実ではありません。MorrowindOblivionの周囲に築かれた強力で永続的なコミュニティは、Skyrimの販売を妨げませんでした。どちらかといえば、それはより成功した!
メイソンウィーラー

3
@Cronax「ワンタイムパッド」スタイルの暗号化を使用する場合、この場合、キーはパズルソリューションであり、攻撃者はキースペースのサイズを総当たりするよりも優れたオプションを持ちません。適切な種類のパズルを使用すれば、宇宙の寿命内で解決するために不明確に大きくなる可能性があります。また、イースターエッグが、たとえば開発者からのメッセージである場合、攻撃者は実際のメッセージをランダムな正解メッセージと区別する方法がありません。
ベンアーロンソン

10

私は、コンテンツがそこにある場合、誰かがそれを見つけるだろうということを知るのに十分な時間を過ごしてきました。それを難し​​くすることは、より多くの決心した人々を引き付けるでしょう。製品の人気が高いほど、興味深いものになります。部分的には挑戦だからです。部分的には、この種の情報を投稿することで「信用」を得ることができる場所が非常に多いからです。

キーがゲームによってローカルで生成される場合、キーが生成されるポイントまでゲームをチートする方法を見つけるか、単に適切なコードを掘り下げることができます。ゲームの特定のステップを完了したときにサーバーからキーが送信された場合、誰かがサーバーをだまして、十分に手に入れたと信じ込ませます。

最終的に、ゲームは次のレベルの色が何であるかを見つけるのを難しくするよりも、楽しくて魅力的にすることに費やす時間からより多くの利益を得ます。


ローカルに保存されたキーで暗号化されたデータは、常にハッキングされる可能性があります。実際には、最新のアプリやゲームはすべてこれをある程度使用しています。
ユアン

soomlaをチェックアウトし、それがコインどうするか
ユアン・

この質問は、通貨やプレーヤーの統計を改ざんから保護する方法ではなく、好奇心の強いプレーヤーから将来のコンテンツを隠すことに関するものだと思います
-axl

1
これはイースターエッグに関するものなので、注意を引くことはまさにあなたが望むものです。
-PyRulez

6
より難しくすることで、より多くの人引き付けることができます。これはゲームの素晴らしいマーケティング戦略だと思います:)
sampathsris

9

これがgamedev.SEにあるべきである主な理由は、この暗号化を行うとゲームプレイに影響が出るからです。

あるパズルのソリューションを次のパズルの暗号化キーにしたい場合。つまり、そのソリューションの実際のデータは次のパズルを解読する必要があります。これは、復号化キーがゲームのデータの一部ではないことを意味します。プレイヤーによって生成されます。

そして、これが結果です。通常、復号化はバイナリです。データを暗号化解除するために必要な正確な復号化キーを持っているか、持っていないかのどちらかです。

ここでの結果は、あなたが設計するゲームはどれも非常に狭く焦点を合わせなければならないので、すべてのレベルに対して可能な唯一の解決策があるということです。そのため、プレイヤーが意図とは異なる方法でパズルを解決できないように、パズルの仕組みを非常に慎重に設計する必要があります。

たとえば、ポータル、テストチェンバー10を見てください。あなたは、プラットフォームを下げるために、左に行って何かをしてから、右に行っていくつかのことをすることになっています。

または、自分に速度を与えて、すぐに足を踏み入れてプラットフォームに飛び込むことができます。

GLaDOS:パズルゲームを作成しました。パズルゲームを最も楽しんでいる人々を罰するパズルゲーム。よくやった。しかし、少なくともこれらのハッカーはあなたの貴重なデータを取得しません。パズルゲームを解くのが好きな人は、オンラインでパズルゲームの解決策を探す人とまったく同じだからです。

だから、それは完全に価値があります。

そのため、Adventures of Lolo、SpaceCHEM、Portal(他にも数百万ある)のようなパズルゲームはすぐに使用できます。代わりに、複数のソリューションを持つパズルを作成できないようにゲームを設計する必要があります。それには非常に多くの注意が必要で、通常はゲームプレイを大幅に制限する必要があります。

GLaDOS:パズルゲームを作成しました。パズルの創造的な解決策を見つけるのが好きな人がプレイすることを意図したゲーム。そして、パズルに対する創造的な解決策のないゲームを作成しました。*スロークラップ*

このようなゲームを作成できないと言っているわけではありません。または、そのようなゲームは良いことではありません。そのようなゲームは、特定の方法で設計する必要があります。

ああ、機械的に解決策を見つけることが不可能な(または非常に難しい)このゲームプレイを設計する必要があります。

GLaDOS:パズルゲームを作成しました。プレイするよりもハッキングする方が面白いパズルゲーム。よくやった。


もちろん、これには1つの注意事項があります。「ソリューション」の意味です。それ以上に、ソリューションのどの要素を考慮しますか?

キャラクターの移動を伴うゲームでは、おそらくキャラクターの正確な動きを使用して復号化キーを構築することはないでしょう。たとえば、プレイヤーがパズルを「解決」するために特定のアイテムを拾う必要があるパズルゲームがある場合、それらのアイテムがタッチされる順序に応じてキーを作成できます。

もちろん、これは上記の問題にぶつかります。そこでは、プレーヤーが順不同で物事を行う方法を見つけます。これもまた、物を拾うことができる順序が1つだけになるようにパズルを設計する必要があることを意味します。

さらに、復号化キーの構築に使用する要素はすべて、ブルートフォース復号化を困難にするために十分なエントロピーを提供する必要があります。上記の収集順序の仕組みを使用すると、各新しいアイテムは事実上1ビット余分になります。レベルに8つのアイテムしかない場合、8ビット暗号化を実行しています。これはがらくたです。ほとんどのスマートフォンは数秒でそれを処理できます。

今日では、わずかに挑戦するために少なくとも128が必要です。これは、各レベルに多くのものを入れる必要があることを意味しますが、それでもゲームデザインに影響を与えます。


2
@Christer:あなたの例は、あなたの全体的な質問の無意味さを裏切るだけです。「クエスト以外の秘密の祭壇」の内容は、本質的にクエストを完了することを基本とするゲームには関係ありません。そして、あなたのゲームがクエストを完了することではないのなら、なぜあなたはそこにクエストを持っているのですか?いずれにせよ、全体的な事実は残ります。あなたは、あなたのゲームやプレイヤーに実際に関係のないものに非常に多くの時間を費やしています。限られた時間とエネルギーを重要なことに集中する必要があります。
ニコルボーラス

2
@Christer:「また、暗号化が使用されているという事実はユーザーの99.9%に透過的であるため、それは恐ろしいアイデアであるための有効な引数ではありません。」本当に便利な機能に移動して、はい、それは恐ろしいアイデアです。この機能に値するよりも多くの時間を質問と回答への回答の作成に費やしました。そのとき、あなたは実際のゲームを書いていたかもしれません。ユーザーの99.9%に対して透過的である場合...暗号化されている場合、なぜそれが重要なのでしょうか?なぜ0.1%の人々に時間を費やすのですか?
ニコルボーラス

2
すみませんが、ゲームを作るのが楽しいです!誰もがゲーム制作ロボットになれるわけではありません。また、これにどれくらい時間がかかるか、どれだけ喜んで費やすかを判断させてください。暗号化部分自体は、少なくとも実装が簡単です。
クリスター

1
The consequence here is that whatever game you design must be so narrowly focused that there is only one possible solution to every level.必ずしもそうではありません。彼は、考えられるソリューションごとにコンテンツを暗号化し、考えられるすべてのソリューションに対して重複した暗号化コンテンツを出荷できました。スペースを使用して保存することができ、2層の暗号化 - ユーザーのキー固有のソリューションへのリンク解答対応における文書の内容に対応します。
ムカホ

4
@mucaho:事前に「可能な解決策」を知る必要があります。
ニコルボーラス

8

ここでの答えは良いです。しかし、私は別の観点からそれを見ます。あなたが説明しているのは機能です。機能にはコストと利点があります。コストには、機能の作成にかかる費用と「機会費用」の両方が含まれます。有限のドルと有限の時間と有限のプログラマーがいる世界では、あなたが行うすべての機能は、その場所で行われなかった無数の可能な機能を意味します。

質問は次のとおりです。この機能のコストを実際の条件で説明できますか?無料の機能はありませんので、コストについて現実的に考えてください。この機能に対して1000ドルを支払うつもりはありますか?10万?100万?この機能を使用するために、どの機能をカットしますか?

コスト、メリット、見逃した機会の観点から物事の優先順位付けを開始すると、ゲームをもっと楽しくする方法を考えていたとしても、この機能について考えるのに時間がかかりすぎていることに気付くでしょう。


5

アリスのボブとイブの問題はこれをよく示しています。メイソンが彼の答えで指摘したように、イブがボブでもあるなら、イブから秘密を守ることはできません。

したがって、すべてのソリューションは、ボブがすべての必要な情報を持っていないことで構成されます。各レベルを、個別に暗号化された個別のメッセージとして扱い、メッセージを適切にゲートキープできる次のレベルのメッセージの外部ソースを用意する必要があります。

しかし、最終的にはそれは論争になります。誰かが自分でゲームをプレイできる場合は、ゲームを取り込むプログラムも作成できます。したがって、あなたがしているのは、外部ソース(おそらく何らかのサーバー)からそれらを強制的に前後に移動させることだけです。サーバーへのメッセージを作成する方法をクラックしたら、それは同じ古い話です。

しかし、ここで重要な要素を忘れています。それはゲームです。誰かがゲームで不正行為をしたら、大騒ぎ。不正行為者向けのゲームは作成していません。クエストウォークスルーやレベリングガイドでも同じです。自分で解決するという挑戦を望む人々は、投稿されたソリューションを無視します。プレイせずにゲームのクラッキングを不可能にすることができたとしても(それが論理的に不可能であることはわかっていますが、可能であっても)、たった1人の男がそれを打ち負かすのに必要なすべてを投稿する前に歩くだけで済みます。だから、避けられないものを遅らせるだけです。

素晴らしいゲームを作るために時間を費やしてください。すべてのゲームが必要とする10の事柄があり、最後に私が見た、暗号化はそれらの1つではありませんでした。


2

あなたの考えは無意味だと思います。

誰かがあなたのゲームをプレイするとき、彼らはそれをプレイすることを選択します、彼らは賞を獲得するためにそれをしていません、彼らは楽しみのためにそれをやっています。

ユーザーは、お客様がストーリーテラーとして既に信頼しているため、最も楽しいのはあなたが意図した方法でプレイすることでありカンニングをしないことです。

また、誰かがパズル、つまりあなたの鍵の解決策を見つけたらすぐに、インターネット上のどこかに簡単に投稿できます。
チートしたいプレイヤーは、まだそれをすることができます。


ただし、スーパーマリオランドの秘密レベルなど、ゲームに複数のソリューションが存在する場合、アセットを暗号化すると、これらのソリューションに簡単にアクセスできなくなります。

これはあなたのアイデアを支持する点のように見えますが、最終的にはそうではありません。

暗号化を使用しても、このような秘密のソリューションが存在することを知ることは可能です。
秘密の解が存在することが知られているならば、彼らはまだゲーム自体を介してゲームの隠された部分にアクセスしたいと秘密の資産を見てから選手を防止することは無関係になりそう(彼らはすでに、すべての隠された見てきた場合でも、テクスチャ/クリップ/オーディオ/テキスト)。

いくつかの忘却のテクニック1を使用することで、秘密のソリューションの存在の漏洩を防ぐことができますが、それでも疑わしいです(秘密のソリューションがない場合はどうしてですか?) 、それ以上。
結局、イースターエッグをトリガーするためにゲームを完了した後、数時間以上プレイできますが、トリガーするのに巨人の努力が必要な場合はもう1分間プレイしません!


あなたがしたいことは、読者が自分自身の結末を台無しにするのを防ぐために、次の章が現在の章の単語で暗号化されている本を書くようなものです。
それについて考えてください、それは無意味ではありませんか?

1 VeraCryptが隠しボリュームで行うのとほとんど同じです。


1
私は実際にその本のアイデアのように親切です。それは多くの人々を苛立たせる可能性があることを理解していますが、実際にそのような本を望んでいる人も想像できます。私は、そうしないときでさえ、前にスキップすることによって自分自身のために結末を台無しにするのを助けることができない人々を知っています。だから私はそのような本が役立つと思います。キーが個人化されない限り、彼らはまだオンラインでキーを調べることができましたが。それでも、彼らはエンディングを直接調べることができました。それでも彼らが必死なら、あなたが言ったように彼らをさらに止めようとしても意味がありません。
クリスター

1

商業的な実行可能性についてはコメントしませんが、純粋な技術的な観点からは、これは面白い挑戦です。


まず、暗号化されていないものは保護できないことに注意してください。エントリを秘密にゲートすることはできません。クラッカーはゲートの周りに方法を見つけますが、代わりに秘密全体をゲート自体にする必要があります。アセットに関しては、これはテクスチャ全体などを意味する必要はありません...単に計画を暗号化するだけで、使用される方法と十分な方法であり、パフォーマンス上の理由から、できるだけ少ないデータを暗号化することをお勧めします。


第二に、キーがソフトウェアに含まれている場合、ソフトウェアからキーが引き出されるというのは正しいことです。多くのゲームは、コンテンツを保護する際に、不明瞭なセキュリティまたはゲームソフトウェアが変更されていないことを保証するメカニズムを使用しようとします。それらは戦術を遅らせるだけです。

謎の解をキーとして使用するというアイデアはかなり興味深いものですが、直接提供されたキーを使用することは簡単に総当たり攻撃される可能性があります。代わりに、ユーザー入力をパスワードとして扱い、最新のパスワードハッシュスキームを使用します。生成されたハッシュがキーです。

ただし、それでも、キーがゲームに存在しないという仮定には誤りがあります。そうでない場合は、プレイヤーをそれに向けることはできません。したがって、セーフを総当たり攻撃しようとするのではなく、手がかりを探してゲームアセットをリバースエンジニアリングできます。私が考えることができる1つの潜在的なパズルは、グリフをエンコードするためにテクスチャを使用することです。そして、パスワードはキーボード上で利用可能ないくつかで構成されます。

  • 問題の核心は、コンピュータにとって画像認識が依然としてやや難しいということです
  • その上に、CAPTCHAクラッカーがカスタムグリフではなく文字と数字用に調整されているという事実を重ねます
  • その上に、複数のテクスチャ(透明度付き)を組み合わせてプレーヤーにグリフを表示することにより、ゲーム内の単一のアセットにグリフの外観が含まれないという事実を重ねます。
  • 他のテクスチャー(断片を含む)をあちこちで使用しますが、プレーヤーが到達できない非表示の場所を除き、完全なグリフを生成するような方法で使用しないでください。

そして、勝者のグリフの組み合わせを自動的に抽出するプログラムには、1日の地獄があります。


第三に、次の問題は共有です。いったん秘密の解決策が見つかった、それは明らかにされます。理想的には、各個人にわずかに異なるバージョンのソフトウェアを渡す必要があります。キーはゲームのバージョンに固有のものです。実用的にするために、ゲーム(アセット)を「秘密」(暗号化)および「秘密ドライバー」(キージェネレーター、多くの異なる場所にテクスチャの断片を多数配置する)から分離する方が簡単だと思います、その一部はパスワードを構成します)。

明らかな攻撃ベクトルは、ジェネレーターをだまして常に同じパスワードを選択させるか、検証者をだまして常に同じパスワードを受け入れさせる(他人の秘密ファイルをダウンロードするなど)ことです。

ここで、潜在的な解決策は、ファイルをユーザーのアカウントにリンクし、通常推奨されるようにパスワードをソルトすることです。

  • ユーザーが一連のファイルを要求すると、ランダムにソルトとシークレットの数だけパスワードを生成し、シークレットアセットを作成します(たとえば、サーバーの過負荷を避けるために、このプロセスを1日1回/ユーザーに制限することができます)
  • 世代のタイムスタンプとソルトをユーザーのアカウント情報に保存します
  • タイムスタンプとパーソナライズされた秘密ファイルをユーザーに送り返す

次に、ユーザーがパスワードを送信する準備ができたら:

  • ユーザーにログインしてもらいます(まだログインしていない場合)
  • タイムスタンプとグリフパスワードの両方をソフトウェアに送信させる
  • タイムスタンプが保存されているタイムスタンプと異なる場合、古いシークレットファイルのセットを使用しているユーザーにアドバイスする
  • パスワードがすでに何度も試行されている場合は、古いシークレットファイルのセットを使用しているユーザーにアドバイスする
  • それ以外の場合は、salt + passwordをハッシュしてキーを生成します
  • そうでない場合は、キーをユーザーに返送して、ユーザーがパーソナライズされたファイルを表示できるようにします
  • このアカウントがこのパスワードを試行した回数を増やす

ここでの目標は、アカウントの共有を可能な限り妨げることです。

  • 秘密ファイルを生成するためにアカウントを共有することは、(a)1日に1つしか生成できないため制限され、(b)生成された最新のものがもう一方を廃止するため、役に立たない
  • アカウントを共有して関連するシークレットファイルを配布することは無用です。これは、指定されたパスワードは、キーを取得できなくなるまでN回しか使用できないためです。

そして、私たちはもうすぐそこにいます。


最後に、クラッカーは、秘密資産が復号化されて直接統合されたゲームの修正版をリリースする可能性があります(慎重な検証スキームをバイパスします)。

解決策はシンプルです(そして、上記のほぼすべてを廃止します1):クライアントを信頼しないでください。

ウェブサイトにリーダーボードを作成し、アカウント内のプレーヤーの進捗状況を追跡します。プレイヤーは自分が望むすべてのゲームを終了したと主張できますが、アカウントにこれが反映されていない限り、誰もが不正行為を行っていることがわかります...

...これは社会的圧力と呼ばれます;)

1 プログラムがキーを推測するのを防ぎ、ユーザーがキーを取得できるようにするために使用したテクスチャポジショニングファイルを除きます。


思慮深い答えをありがとう。あなたは良い点を挙げます。あなたが言ったように、キー/ソリューションをゲームに保存する必要がないことを付け加えたいと思います。たとえば、ゲームWebページのhtmlに非表示にすることもできます。そのようなものを見ている人に報酬を与えたいかもしれません。しかし、ゲームでも、謎として解答を使用したり、角度から見たときに情報を明らかにするジオメトリを使用したり、多くの知識を読んでいない限り取得できないコンテキスト関連のものを使用するなど、より創造的である可能性がありますゲーム。Skyrimが本を持っているか、コンピューター端末にログインしているように。
クリスター

私は質問でこれを言及しなかったので、心配しないでください。私がこれを想像していたのは、あなたがゲーム全体をプレイし、完全なゲームのように感じたということでした。しかし、この隠されたドアには奇妙な鍵がかかっていて、決して通り抜けることはできませんでした。うまくいけば、人々が興味を持ち、話をするようになるでしょう。誰もそれを理解していないので、それもまた理解するために持つべき栄光のようなものです。十分な時間が経過すると、ドアのとらえどころのない秘密が伝説を生み出します!ゲームアセットをただ見ているだけで、それが台無しになっているのを吸います。
クリスター

@Christer:ゲームアセットを見ているだけで誰かが台無しにしているのを吸います。=>これは...秘密はしかし1回になると、それはアウトだ、(主に既存のテクスチャを再利用する)実際の場所を記述するための秘密のファイルを使って解けるです
マシューM.

0

それは面白いアイデアです。パズルディスクのバリエーションと、手入力によるコピー防止システムです。「ARG」ゲームのいくつかはこのように機能すると思います。そこでは、プレーヤーがゲームデザイナーに対して集合的に行動していることがある程度理解されています。

明らかに、最初の人がそれを解読したら、彼らはそれをインターネットに公開します。

生成コンテンツまたは手続きコンテンツは同じように機能します。「シード」を共有しない限り、他のプレイヤーと同じ世界を見ることはできません。

法的な問題は見当たりませんが、AppleはApp Storeから拒否する場合があり、ゲームコンソールで承認するにはソリューションを提供する必要があります。


0

追加のセキュリティ対策を検討するのは楽しいですが、製品に具体的な価値を追加するものではありません。製品に遭遇したクラッカーに対する素直さを示しています。原則として、あなたの敵はあなたに追いつきます。

創造性に優れた開発者とは対照的に、クラッカーは分析的な人々です。彼らはあなたのプログラムを直感的に悪用することができます。開発者が過度のセキュリティ対策を講じる傾向がある場合、クラッカーが再び保護スキームを覆す可能性があることを否定ます。

このバックグラウンド競争に参加するかどうか、それがあなたの呼びかけです。しかし、最終製品から気を散らさないようにしてください。ゲームをスラッグに変える風変わりな暗号化スキームは役に立ちません。


0

メイソン・ウィーラーはそれを正しく持っています:あなたはそれをすることはできません。誰かが望むなら、いつでもあなたのゲームをリバースエンジニアリングできます。

とにかくあなたが説明する方法でゲームを「保護」する必要はありません。一人がイースターエッグを見つけると、その秘密はすぐに手に入ります。ゲームの各コピーに異なるイースターエッグがある場合、ハッカーのコピーのみが認識されます。1000人中1人のハッカーがゲームプレイをせずにイースターエッグを見つけたことを本当に気にしていますか?

著作権法は、誰も深刻な訴訟の危険を冒すことなくゲームからお金をmakeけることができないため、著作権はあなたを保護します。

ランダムなユーザーがあなたのテクスチャをフォーラムのアバターに置いている限りでは、どうでしょうか?草の根広告と考えてください。

「保護」に執着することは、ゲームを作るなどの難しい現実からあなたをそらすだけです。

製品がない人が存在しないもののIP保護スキームについて話しているのを見ると、プロジェクト全体に大きなでたらめな赤旗を立てるので、ちょっとした瞬間です。


-1

いくつかの可能性:

  • 単純な古いコードの難読化。コードをデコードすることを不可能にすることはありませんが、少なくとも難しいでしょう。

  • サーバー側のソリューション。サーバーに特別なコマンドを送信すると、サーバーからコードを送信したり、DLCをダウンロードしたりできます。

  • Steganographyを使用して、他のコンテンツの実行可能コードを隠すことができます。

これはあなたの秘密を100%安全にしませんが、秘密が明らかにされても誰もお金を失うことはないようです。


-1

キーとアルゴリズムの両方をクライアントに保存する他のスキーマと同じように役に立ちません。「キーはどこにあるのか、ユーザーの入力に依存し、自分で保存しないのか」と尋ねた場合、パズルにはルールによってルールとリソースが定義されていることに注意してください。この正確なアルゴリズムとそのリソースは、難読化された状態でゲームにハードコーディングしたばかりのキー生成アルゴリズムです。ルールに従ってパズルを解く小さなプログラムを書くだけで、誰でも「存在しない」キーを取得できます。


1
しかし、すべてのパズルがコンピューターによって簡単に解決できるわけではありません。たとえば、これまでに作成されたことのない謎です。また、コンピューターがゲーム内のすべてのダイアログを読み取り、すべてのテクスチャを処理することは困難です。たとえそれがあったとしても、このパズルに関連する何かがポップアップしたことをどのようにして知るのでしょうか?完全なキーをゲームに保存する必要さえありません。おそらく、キーがある箱の裏側を読む手がかりがあります。コンピューターはそれを行うことができません。パズルが数独のようにコンピューターで解決できるものであったとしても、少なくともパズルを回避せずに解決することになります。
クリスター

@Christer、他の「隠蔽によるセキュリティ」自家製暗号化を考え出すことも同じです。「オンザボックス」- ユーザー与える「ファイル」リソースの代わりに、ユーザー与える「紙の表紙」リソースにキーを書いただけです。大したこと。
オレグV.ボルコフ

@Chriser、つまり「これまでに作成されていない謎」を解決することは、「以前に作成されていない自家製の暗号化アルゴリズムを解決する」とまったく同じです。
オレグV.ボルコフ

ユーザー入力に基づいて復号化キーを生成する方法がわかりませんか?このユーザー入力が何かであることがわかりませんか?あなたが求める良い復号化キーを生成する正しいユーザー入力は何ですか?誰もが知っているように、それはあらゆる種類の興味深い方法でゲーム全体に隠されています。それがそれの全体的なポイントであるので、あなたがそれを見つけることを願っています!それ以外の場合はそのコンテンツに到達する幸運。
クリスター

ソースを読むことと一体どのくらい違いますか?設定されたルールに従ってタスクを実行します->キーを取得します。それで全部です。ただし、実際にゲームをプレイするのではなく、他のゲームリソースから「手がかり」を読むだけでショートカットを取ることができます。
オレグV.ボルコフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.