Android 13 以降のデバイスで Play Integrity の仕様変更が行われた。カスタム ROM 冬の時代の到来か。
Android デバイスの完全性をチェックする、Play Integrity API の仕様変更が行われ、Android 13 以降のデバイスで API の挙動が変更された。簡潔にまとめると、このように変わっている。
まとめ
Android 13 以降のデバイスで、
- 今までの
MEETS_STRONG_INTEGRITY
は、MEETS_DEVICE_INTEGRITY
に格下げされた。 - 仕様変更後に
MEETS_STRONG_INTEGRITY
を得るには、新しいMEETS_DEVICE_INTEGRITY
に加えて、1 年間以内のセキュリティパッチが適用されていることが必要になった。 - 仕様変更は (アプリ開発者が) 今から適用することもできるし、適用しない場合でも 2025 年 5 月には新しい仕様に強制的に切り替わる。
今まで Play Integrity Fix でパスできていた MEETS_DEVICE_INTEGRITY
は、新しい仕様ではパスできなくなる。MEETS_DEVICE_INTEGRITY
をパスするには、ブートローダーがロックされていて、なおかつ Google の認定を受けた OS が実行されている必要がある。
STRONG を要求するアプリは減っていくかも
このような仕様変更が行われるので、例えば MEETS_STRONG_INTEGRITY
を使用していたアプリ開発者は、新しい仕様では基準を MEETS_DEVICE_INTEGRITY
に落とす必要性があるだろう。なぜならば、MEETS_STRONG_INTEGRITY
はあまりにも厳しすぎる。
過去 1 年間以内のセキュリティパッチの適用が必要となると、アップデートを打ち切られたデバイスは当然パスできなくなる。未だにろくにセキュリティパッチすら更新しないようなベンダーが存在する以上、アプリ開発者が切り捨てることはしないと思う。もちろん古い Android バージョンも捨てることになるしね。
カスタム ROM 冬の時代の到来か……
なぜ Google が新しい仕様を作ったのか。それはやはり Play Integrity の信頼性を大きく揺るがすことがあったからであろう。最近、Play Integrity 界隈 (そんな界隈ある?) では、今までパスすることが難しかった MEETS_STRONG_INTEGRITY
を獲得することができるようになっていた。
そうなると、アンチチート的な意味で Play Integrity を利用していたデベロッパーからの信頼を損なうことになる。営利企業としてはまずい。
新しい仕様において MEETS_DEVICE_INTEGRITY
を要求されるようになると、例えばカスタム ROM を導入していたり、端末をルート化は要件を満たさなくなる。デベロッパーが一段階低いものに下げるか、別のアプローチでさらなる回避策が生まれない限り、きびしい時期がやってきそうだ……。
デベロッパーには Play Integrity に依存しないチェックを薦めたい
Android にはプライバシーに特化したカスタム ROM や、最新のアップデートを受けられなくなったデバイスを長く使えるようにするためのカスタム ROM などが公開されていて、ユーザーが自由に使うことができる。残念ながら、そのようなカスタム ROM では、ルート化の有無に依らず Play Integrity を完全にパスすることはできない。
Play Integrity 上では、何年もアップデートが来ていないプリンストールされた OS より、最新のセキュリティパッチが導入されているカスタム ROM の方が悪い結果になってしまう。おかしな話である。
これは僕の意見ではあるが、アンチチートなどの不正対策は、Play Integrity に依存しないチェックにした方が良いと思う。ハードウェアの認証自体はローカルで可能だし、何よりも最大の対策は「サーバーがチェックすること」だと思うので、そうするべきなんだと思う。