Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

WFSの認証基盤SDKのセキュリティーに関する取り組み

GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/ShortSession-7

  • Be the first to comment

  • Be the first to like this

WFSの認証基盤SDKのセキュリティーに関する取り組み

  1. 1. WFS認証基盤SDKのセキュリティに関する取り組み 株式会社WFS エンジニア 秦 泳
  2. 2. • 名前:秦 泳(シン エイ) • 所属:株式会社WFS     WFSゲームプラットフォームチーム • 担当:WFS認証基盤Gamelib SDKの開発、サポート 自己紹介 2
  3. 3. •WFS認証基盤とは •WFS基盤SDKのセキュリティ取り組み、対策 •まとめ 目次 3
  4. 4. • WFS自社開発、正式名称はGameLibrary • 課金などに対して共通なAPI機能を提供 • 様々なOS、プラットフォーム、ゲームエンジンをサポート • Android / iOS / Windows • GooglePlay / AppStore / AmazonStore / Steam • Cocos2d-x / Unity / UE4 ネイティブゲーム向けの認証、課金、SNS連携などの共通基盤機能を提 供するAPIサービスとSDKの総称 WFS認証基盤とは 4
  5. 5. • API通信データの不正改ざん • ゲーム内不正課金 • 実行中ゲームデータを改ざん • ゲームの解析、改造(Repackaging) • など 様々なセキュリティ問題を直面 モバイルゲームのセキュリティ課題 5
  6. 6. •SDKとサーバー間のAPI通信を守る対策 •不正課金を防止する対策 •リバースエンジニアリングチート行為の対策 Gamelib基盤SDKに認証、課金など機能を安全に行えるため、様々な セキュリティ対策が講じた 基盤SDKのセキュリティ取り組み 6
  7. 7. •コードの解析ツール • Android:APKTOOL、Xposed • iOS:IDA、Cycript •コードの不正改造、Repackaging • Android:APKTOOL、smali • iOS:insert_dylib ゲームの解析、改造を目的とするリバースエンジニアリングツールが存在 リバースエンジニアリング 7
  8. 8. Gamelibには様々な対策を取っている!
  9. 9. •JARの難読化 •APK不正改造の検知 •実行環境の検知 •SafetyNetの実装 Gamelib SDKでリバースエンジニアリング不正行為に取った対策は リバースエンジニアリング対策 9
  10. 10. •SDKのJARをDecompileで内部の実装を解読可能 •Proguardで内部実装を難読化 JARの難読化でGamelib Android SDKの内部実装ロジックを解読しに くくなる 難読化 10
  11. 11. Gamelib Android SDK JAR難読化 JAR難読化
  12. 12. •getAppSignature API • APKに添付される証明書Signatureを取得 • 開発元でないSignatureの場合、改造APKと判定 ゲームAPKは改造されたものかを検知 APK不正改造の検知 12
  13. 13. getAppSignature API 開発元 証明書 Game APK 改造者 開発証 明書 改造Game APK 開発元証 明書 Signature 改造者開 発証明書 Signature ≠ getAppSignature() 一致しない場合、APKが 改造された可能性!
  14. 14. ● VerifyDevice API • ROOT化や脱獄の検知 • エミュレータの検知 • Debug状態の検知 • インストーラーの検知 ゲームが正常な端末環境中に実行するのか 実行環境を検知 14
  15. 15. ● 特に問題があったのは • ROOT化や脱獄の検知 • エミュレータの検知 ● 検知アルゴリズム ● ROOT化や脱獄の検知BYPASSツールが存在 検知結果100%正確とは限らない 検知の精度問題 15
  16. 16. GamelibにGoogle SafetyNetを実装
  17. 17. •Google SafetyNet Attestation APIを利用 • Google Play Service API • 正規Android デバイスか、正規のアプリかを評価するAPI • 収集したデバイス、アプリ情報のJSON(JWS)を返却 Root化、エミュレータの検知に一定の信頼性を求める場合 Google SafetyNet APIを使用 SafetyNet Attestation API 17
  18. 18. { "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」になる
  19. 19. しかし、このデータを本当に信用できる?
  20. 20. •SafetyNet Attestation APIで返却した JWS(JsonWebSignature)をGamelibサーバーに送信 •JWSの署名を検証、評価 • 本当にGoogle発行したものか? • 異常ユーザーか? GamelibはセキュアなSafetyNet実装を採用 SafetyNetの実装 20
  21. 21. Gamelib SafetyNet実装の構成 Gamelib Server JWS検証 Gamelib SDK Google Play Service Google Server Game Server Game App ②Attestation API With Nonce ①Nonce ③JWS 異常ユーザー 取得API
  22. 22. Gamelibは高い精度でROOT化を検知できる!
  23. 23. •DeviceVerify APIで取集した端末実行環境情報を Gamelibサーバーで評価 •異常と判断した場合、異常ユーザーとしてDBに記録 •GamelibはBANしない •ゲームサーバーにAPIを提供、検索可能 不正を検知した場合、Gamelibは異常ユーザーとして記録 異常ユーザー 23
  24. 24. Gamelib SafetyNet実装の構成 Gamelib Server JWS検証 Gamelib SDK Google Play Service Google Server Game Server Game App ②Attestation API With Nonce ①Nonce ③JWS 異常ユーザー 取得API
  25. 25. •Gamelib SDKにはリバースエンジニアリング不正を検知 APIを提供 •Gamelib SDKのSafetyNet実装で高い精度でROOT化 を検知 • 不正を行った異常ユーザーをゲームに提供するAPI まとめ 25
  26. 26. Happy Hacking

    Be the first to comment

    Login to see the comments

GREE Tech Conference 2020 で発表された資料です。 https://techcon.gree.jp/2020/session/ShortSession-7

Views

Total views

792

On Slideshare

0

From embeds

0

Number of embeds

463

Actions

Downloads

1

Shares

0

Comments

0

Likes

0

×