
書誌情報
書名:オンラインゲームセキュリティ
著作者名:松田和樹(株式会社ラック)
発行:データハウス
発売日:2022年6月18日
価格:3,500円(+税)
単行本(ソフトカバー):496ページ ※電子書籍版はありません。
ISBN-13:978-4-7817-0251-3
↓をクリックするとAmazon.co.jpの商品ページにジャンプします。
↑をクリックするとAmazon.co.jpの商品ページにジャンプします。店頭在庫はこちらから
紀伊國屋書店 / TSUTAYA
概要
本書はオンラインゲームにおけるチート行為と、それに立ち向かうために必要な知識や手法を防御視点で記した、(おそらく)世界初となる書籍です。
オンラインゲームにおけるチートと、それに対するチート対策の基本的な考察から、クライアントサイドとサーバーサイドのゲームセキュリティを学び、オンラインゲームに限らずさまざまなゲームにおける不正を振り返ります。
目次
本書について
まえがき第1章 オンラインゲームセキュリティとは
1-1 序論
なぜオンラインゲームセキュリティなのか
なぜ脆弱性が生まれるのか
なぜ脆弱性や不正行為を放置してはいけないのか
なぜ不正行為が発生するのか
1-2 本書の読み方
すべてを網羅することはできない
セキュアなやり方を強制するわけではない
倫理上の注意事項
本書におけるオンライン要素を含むゲームの定義と各要素
1-3 オンラインゲームセキュリティの実現に必要なもの
オンラインゲームの開発に求められるスキル
堅牢なオンラインゲームの理想形は?
いつからセキュリティを考慮すべきか
自社で脆弱性診断を行うべきか
オフラインのゲーム開発に由来するバッドノウハウ
守る技術は正しく使わなければならない
COLUMN
WinGrooveの事件第2章 チート行為に対してどう立ち向かうべきか
2-1 情報セキュリティに関する「表現の不自由」
情報公開と表現の不自由
2-2 チーターの行動様式を考察する
チーターの数はゲームの人気度に比例する
チーターはソースコードを所有していない
チーターは独自のコミュニティを形成している
2-3 通信の改ざん
今日の「常時SSL/TLS」
「常時SSL/TLS」と中間者攻撃
「常時SSL/TLS」はチート対策にはならない
2-4 クライアントとサーバー、不正行為の検出はどちらでやる?
検出するポイントを分類する
利用者を目視で監視する(オフライン限定)
2-5 思考実験:ハイスコア集計におけるウソスコアとその攻防第3章 クライアントサイドのゲームセキュリティ
3-1 そもそもクライアントは信用できない
クライアントは改造可能である
設計段階から考慮する
曜日替わりイベントをどう実装するか?
ゲーム開発者は不正対策をやりたくない
3-2 クライアントのセキュリティと解析
ゲーム開発にセキュリティを組み込むのは難しい
マルチプラットフォーム化の流れ
プラットフォーム別に見るクライアント概観
3-3 ゲーム改造とクラック対策
ゲーム改造とそれに対するクラック対策の概要
クライアントプログラムのクラック対策には限界がある
COLUMN
歴代最強のプロテクトは何か?第4章 サーバーサイドのゲームセキュリティ
4-1 ゲームにおけるセキュアコーディング
家庭用ゲーム開発に由来するバッドノウハウ
サーバーサイドのゲームセキュリティの要点
4-2 一般的な脆弱性
管理機能への不正アクセス
ファイルの露出
XSS(クロスサイトスクリプティング)
SQLインジェクション
多重ログイン(同時ログイン)
認証・認可不備
課金処理
4-3 オンラインゲーム固有のチート可能な脆弱性
本項で使われる用語「API」の説明
ファイルパス・ファイル名の推測による隠し情報の漏洩
デバッグ用/開発者用APIの露出
抽選結果の漏えい(意図しないリセマラ)
ガチャに対する不正行為
ゲームの仕様に反するデータ露出
制限回避
特定パケットの受信・送信拒否
DoS攻撃(サービス拒否攻撃)
リプレイ攻撃
なりすましによる他プレイヤーへの攻撃
アイテム複製と排他制御
不適切なAPIの設計(機能単位ではない通信)第5章 「ゲーム」における様々な不正
5-1 家庭用ゲームにおける「裏技」とゲーム改造の是非
かつて存在した裏技ブーム
ゲーム改造ツールの存在
Modから考える「遊び方の問題」
5-2 家庭用ゲームにおけるセーブデータの汚染
ポケモンシリーズで考えるゲーム改造
ドラクエIXで考えるゲーム改造
改造ツールが他人に及ぼす影響
5-3 不正コピー・CFW・マジコンの蔓延と規制(前編)
パソコンソフトの不正コピー
家庭用ゲーム機の不正コピー
エミュレータによる動作
カスタムファームウェアによる動作
マジコンによる動作
5-4 不正コピー・CFW・マジコンの蔓延と規制(中編)
マジコン概説
マジコンを使う人の話
マジコンを売る人の話
マジコンを作る人の話
ストレージ業界への影響
マジコンの法規制
5-5 不正コピー・CFW・マジコンの蔓延と規制(後編)
公式開発と非公式開発、公認ソフトと非公認ソフト
非公式開発、公認ソフトの話
非公式開発、非公認ソフトの話
現在の非公式開発、非公認ソフト
「無いものは作る」Homebrew
マジコン利用の隠れ蓑にされたHomebrew
Homebrewの終了
グレーゾーンがホワイトになった「Kinectハック」
MODチップの話
5-6 オンラインゲームの生存期間
パッケージとオンラインの寿命の違い
なぜ生存期間を調査しようと思ったのか
結論は「ない」
多様過ぎるプラットフォーム
プレスがない、消えてなくなるから再評価のしようがない
ステマ・欺瞞的顧客誘引の疑いのある商行為
ソーシャル以前のアダルトゲーム
アダルトゲームとソーシャルの相性は最悪
ガラケー専用タイトルの記録は絶望的
5-7 オンラインゲームの終了とその保全
過去のゲームの掘り起こし
何をもって「保存」なのか?
何を「保存」の対象とするのか?
オンラインゲームは後世に残せるのか?
エミュレーションサーバーによる「動態保存」
コンテンツのフリー化による「保存」
『星宝転生ジュエルセイバー』の保存
『Paragon』の保存
5-8 配信元が定義する「不正な」ツール
どこからが「不正」?
なぜ「不正ツール」が生まれるのか?
どうやって「不正ツール」と定義するのか?
どのように「不正ツール」を排除するのか?
公式の(?)チートツール
5-9 不正プレイヤーへの処罰のやり方
アカウントの停止(アカウントBAN)
通報制度の設置
泳がせる
監視国家のもとでサービスする(超暴論)
5-10 内部犯行と刑事事件
日本で起こった主なインシデント
どうすれば犯罪は減らせるのか?
刑事・民事事件にするべきか?
ガチャと確率操作は?
結局は、健全なビジネスを行っているか次第
5-11 乱数の話
奥が深すぎるコンピュータの乱数
乱数が必要となるゲーム
コンピューターゲーム創世記からの乱数
シード値の決定
擬似乱数の内部状態と周期
生成アルゴリズム
ゲームで使われるプロシージャル
暗号論的擬似乱数生成器
ハードウェア乱数
まとめ
5-12 ギャンブルにおけるチート行為
テーブルゲームのイカサマ
カジノにおけるイカサマ
オンライン賭博におけるイカサマ
ぱちんこ、パチスロにおけるイカサマ
ぱちんこ、パチスロの乱数生成器
攻略法を失った末路「オカルト」
まとめ
5-13 パッケージソフトに未来はあるのか?
ソフトウェア著作権の誕生
パッケージのコピー
パッケージからの脱却とライセンス形態の変異参考文献
あとがき
正誤情報 2022.10.03最終更新
p183
- ガチャの回数のような離散的な値が、-1のような負数や、
+ ガチャの回数のような自然数となる値が、-1のような負数や、
p226
- 例えば、前傾したURLを再掲する。
+ 例えば、前掲したURLを再掲する。
p254
比較例を下記のものに差し替えます。
1 == "1" // true 1 === "1" // false 12345 == " 12345" // true 12345 === "12345" // false null == false // true null === false // false "php" == true // true "php" === true // false "php" == 0 // false (PHP 8.0.0以前ではtrue) "php" === 0 // false "1php" == 1 // false (PHP 8.0.0以前ではtrue) "1php" === 1 // false 0 == "" // false (PHP 8.0.0以前ではtrue) 0 === "" // false
排他制御の説明で挙げているソースに不備があり、適切な排他制御がなされていない問題がありました。
p278 12行目から
// (4)データベースから現在の「石」の所持数を取得して // 必要なコストぶん所持しているかを検査する $stmt = $pdo->prepare( "SELECT normal_stone". " FROM socialgoat.sg_status". " WHERE user_id = :user_id" + // (d)排他ロックを実施する + // ." FOR UPDATE" );
p280 本文1行目
- 排他制御のために新たに追加すべき処理は(a)、(b)、(c)、(c')の4箇所であるが、説明のためにコメントアウトしている。
+ 排他制御のために新たに追加すべき処理は(a)、(b)、(c)、(c')、(d)の5箇所であるが、説明のためにコメントアウトしている。
p282 1行目
- 今回の実装では(a)、(b)、(c)、(c')の4箇所のコメントを削ればよい。
+ 今回の実装では(a)、(b)、(c)、(c')、(d)の5箇所のコメントを削ればよい。
執筆者
松田 和樹(まつだ かずき)
北海道札幌市出身。1996年に放送されたNHKのドキュメント番組『新・電子立国 第4回 ビデオゲーム~巨富の攻防~』を観て人生を踏み外し、学生時代から書籍執筆を行う。
中堅SIerにて大手カード会社のWebシステムの開発・運用を行うJava/PHPプログラマを経て、ネットエージェント株式会社に入社。通信パケットやプログラムの解析、組み込み機器向けミドルウェアの研究開発からサポートまで、機種を問わず行う。
2000年代からゲームセキュリティの研究開発に着手し、商業化に成功する。国内最大手MMORPGのゲームセキュリティ診断に参画、他社タイトルの診断も行う。
共著『0と1のコンピュータ世界 バイナリで遊ぼう!』(マイナビ)、別名義での共著『クラッキングバイブル』(データハウス)など共著多数。