Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WFSの認証基盤SDKのセキュリティーに関する取り組み
Search
gree_tech
PRO
September 18, 2020
Technology
0
620
WFSの認証基盤SDKのセキュリティーに関する取り組み
GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/ShortSession-7
gree_tech
PRO
September 18, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
28
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
24
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
23
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
27
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
29
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
31
ヒューリスティック評価を用いたゲームQA実践事例
gree_tech
PRO
0
27
ライブサービスゲームQAのパフォーマンス検証による品質改善の取り組み
gree_tech
PRO
0
26
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
140
Other Decks in Technology
See All in Technology
「AI2027」を紐解く ― AGI・ASI・シンギュラリティ
masayamoriofficial
0
130
【 LLMエンジニアがヒューマノイド開発に挑んでみた 】 - 第104回 Machine Learning 15minutes! Hybrid
soneo1127
0
170
DeNA での思い出 / Memories at DeNA
orgachem
PRO
4
1.8k
AIドリブンのソフトウェア開発 - うまいやり方とまずいやり方
okdt
PRO
9
720
Jaws-ug名古屋_LT資料_20250829
azoo2024
3
180
プロダクトの成長に合わせたアーキテクチャの段階的進化と成長痛、そして、ユニットエコノミクスの最適化
kakehashi
PRO
1
100
Yahoo!広告ビジネス基盤におけるバックエンド開発
lycorptech_jp
PRO
1
300
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
160
見てわかるテスト駆動開発
recruitengineers
PRO
6
2k
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
20
10k
Preferred Networks (PFN) とLLM Post-Training チームの紹介 / 第4回 関東Kaggler会 スポンサーセッション
pfn
PRO
1
280
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
26
1.8k
A Modern Web Designer's Workflow
chriscoyier
696
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Producing Creativity
orderedlist
PRO
347
40k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Being A Developer After 40
akosma
90
590k
Code Review Best Practice
trishagee
70
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Rails Girls Zürich Keynote
gr2m
95
14k
Optimizing for Happiness
mojombo
379
70k
Transcript
WFS認証基盤SDKのセキュリティに関する取り組み 株式会社WFS エンジニア 秦 泳
• 名前:秦 泳(シン エイ) • 所属:株式会社WFS WFSゲームプラットフォームチーム • 担当:WFS認証基盤Gamelib SDKの開発、サポート
自己紹介 2
•WFS認証基盤とは •WFS基盤SDKのセキュリティ取り組み、対策 •まとめ 目次 3
• WFS自社開発、正式名称はGameLibrary • 課金などに対して共通なAPI機能を提供 • 様々なOS、プラットフォーム、ゲームエンジンをサポート • Android / iOS
/ Windows • GooglePlay / AppStore / AmazonStore / Steam • Cocos2d-x / Unity / UE4 ネイティブゲーム向けの認証、課金、SNS連携などの共通基盤機能を提 供するAPIサービスとSDKの総称 WFS認証基盤とは 4
• API通信データの不正改ざん • ゲーム内不正課金 • 実行中ゲームデータを改ざん • ゲームの解析、改造(Repackaging) • など
様々なセキュリティ問題を直面 モバイルゲームのセキュリティ課題 5
•SDKとサーバー間のAPI通信を守る対策 •不正課金を防止する対策 •リバースエンジニアリングチート行為の対策 Gamelib基盤SDKに認証、課金など機能を安全に行えるため、様々な セキュリティ対策が講じた 基盤SDKのセキュリティ取り組み 6
•コードの解析ツール • Android:APKTOOL、Xposed • iOS:IDA、Cycript •コードの不正改造、Repackaging • Android:APKTOOL、smali • iOS:insert_dylib
ゲームの解析、改造を目的とするリバースエンジニアリングツールが存在 リバースエンジニアリング 7
Gamelibには様々な対策を取っている!
•JARの難読化 •APK不正改造の検知 •実行環境の検知 •SafetyNetの実装 Gamelib SDKでリバースエンジニアリング不正行為に取った対策は リバースエンジニアリング対策 9
•SDKのJARをDecompileで内部の実装を解読可能 •Proguardで内部実装を難読化 JARの難読化でGamelib Android SDKの内部実装ロジックを解読しに くくなる 難読化 10
Gamelib Android SDK JAR難読化 JAR難読化
•getAppSignature API • APKに添付される証明書Signatureを取得 • 開発元でないSignatureの場合、改造APKと判定 ゲームAPKは改造されたものかを検知 APK不正改造の検知 12
getAppSignature API 開発元 証明書 Game APK 改造者 開発証 明書 改造Game
APK 開発元証 明書 Signature 改造者開 発証明書 Signature ≠ getAppSignature() 一致しない場合、APKが 改造された可能性!
• VerifyDevice API • ROOT化や脱獄の検知 • エミュレータの検知 • Debug状態の検知 •
インストーラーの検知 ゲームが正常な端末環境中に実行するのか 実行環境を検知 14
• 特に問題があったのは • ROOT化や脱獄の検知 • エミュレータの検知 • 検知アルゴリズム • ROOT化や脱獄の検知BYPASSツールが存在
検知結果100%正確とは限らない 検知の精度問題 15
GamelibにGoogle SafetyNetを実装
•Google SafetyNet Attestation APIを利用 • Google Play Service API •
正規Android デバイスか、正規のアプリかを評価するAPI • 収集したデバイス、アプリ情報のJSON(JWS)を返却 Root化、エミュレータの検知に一定の信頼性を求める場合 Google SafetyNet APIを使用 SafetyNet Attestation API 17
{ "timestampMs": 9860437986543, "nonce": "R2Rra24fVm5xa2Mg", "apkPackageName": "com.package.name.of.requesting.app", "apkCertificateDigestSha256": ["base64 encoded,
SHA-256 hash of the certificate used to sign requesting app"], "ctsProfileMatch": true, "basicIntegrity": true } SafetyNet Attestation APIの返却JWSのPayload SafetyNetのデータ 18 Google認証された正規Androidデバイスであれば、「ctsProfileMatch」と 「basicIntegrity」の値はともに「true」になる
しかし、このデータを本当に信用できる?
•SafetyNet Attestation APIで返却した JWS(JsonWebSignature)をGamelibサーバーに送信 •JWSの署名を検証、評価 • 本当にGoogle発行したものか? • 異常ユーザーか? GamelibはセキュアなSafetyNet実装を採用
SafetyNetの実装 20
Gamelib SafetyNet実装の構成 Gamelib Server JWS検証 Gamelib SDK Google Play Service
Google Server Game Server Game App ②Attestation API With Nonce ①Nonce ③JWS 異常ユーザー 取得API
Gamelibは高い精度でROOT化を検知できる!
•DeviceVerify APIで取集した端末実行環境情報を Gamelibサーバーで評価 •異常と判断した場合、異常ユーザーとしてDBに記録 •GamelibはBANしない •ゲームサーバーにAPIを提供、検索可能 不正を検知した場合、Gamelibは異常ユーザーとして記録 異常ユーザー 23
Gamelib SafetyNet実装の構成 Gamelib Server JWS検証 Gamelib SDK Google Play Service
Google Server Game Server Game App ②Attestation API With Nonce ①Nonce ③JWS 異常ユーザー 取得API
•Gamelib SDKにはリバースエンジニアリング不正を検知 APIを提供 •Gamelib SDKのSafetyNet実装で高い精度でROOT化 を検知 • 不正を行った異常ユーザーをゲームに提供するAPI まとめ 25
Happy Hacking
None