ハイライト
Apple は 3 層のセキュリティ ツールを提供しています。アカウント ハイジャックを防止するための Apple でのサインイン (組み込みの 2 要素認証 + 実際のユーザー検出による)、プロモーションでの悪用を防止するための DeviceCheck (デバイスごとに 2 ビットの永続タグ)、およびコンテンツの盗難を防止するための App Attest (サーバーに接続されている App が本物であり、改ざんされていないことを確認する)。
主要内容
アプリにはユーザー アカウント システムがあります。フィッシング Web サイトを使用してパスワードを一括で盗み、闇市場で販売する人もいます。ユーザーが他の Web サイトで同じパスワードを使用し、攻撃者が漏洩した資格情報ライブラリを使用してログイン インターフェイスを侵害しました。
あなたのアプリにはプロモーションがあります。新規ユーザーは最初の注文が 50% オフになります。何者かが偽のアカウントを一括登録するスクリプトを作成し、割引を受け取った後にアカウントを放棄しました。
アプリには有料コンテンツがあります。誰かがパケットをキャプチャして API を分析し、有料検証をバイパスするサードパーティ クライアントを作成し、無料で配布しました。
これら 3 つのシナリオは、アカウント リスク、プロモーションの悪用、コンテンツの盗難という 3 種類のリスクに対応しています。セッションは Apple プラットフォームに 3 つのロックを与えます。
詳細
Apple でサインイン: アカウント セキュリティの防御の第一線
(04:42)
Apple でサインインには 2 要素認証が付属しています。ユーザーは、パスワードを入力せずに Apple デバイスの Face ID または Touch ID を使用して再認証できます。
さらに重要なのは、最初の認証時に返される情報です。realUserStatusロゴ。 Apple は、デバイス側のプライベート機械学習モデルとサーバー側の推論を組み合わせて、ユーザーが本物の人間なのかロボットなのかを判断します。
let credential: ASAuthorizationAppleIDCredential = // ...
switch credential.realUserStatus {
case .likelyReal:
// 高い信頼度で実在ユーザーと判断され、追加検証は不要
proceedWithRegistration()
case .unknown, .unsupported:
// スクリプトによるトラフィックを防ぐため、追加のチャレンジ(CAPTCHA など)が必要
showAdditionalVerification()
}
キーポイント:
realUserStatusサーバーの検証を待たずにクライアントで確認できます。- プラットフォームがサポートしていない場合、または不明を返す場合は、ヒューマンマシン検証を追加することをお勧めします。
- 2020 年フィッシング対策ワーキング グループ レポート: 世界的なフィッシング攻撃の数は 1 年で倍増
DeviceCheck: デバイスごとに 2 ビットの永続タグ
(07:03)
DeviceCheck を使用すると、各 Apple デバイスに次の 2 ビットの情報 (値 0 ~ 3) を設定できます。
- デバイスの信頼性による強力なバインディング
- デバイスを完全にリセットした後でも読み取り可能
- デバイスのアイデンティティやユーザーのプライバシーを公開しません
典型的な 2 つの用途:
プロモーション引き換えの数を制限します:
1. ユーザーが初めてオファーを引き換えるときに、DeviceCheck の 2 bit 値を照会する
2. 値が 0(未引き換え)の場合は引き換えを許可し、値を 1(引き換え済み)に設定する
3. 値が 1 の場合は、重複した引き換えを拒否する
4. 一定期間後(例: 1 年後)に 0 へリセットし、再度引き換えられるようにする
単一デバイスの登録アカウント数を制限します:
1. ユーザーがアカウントを登録するときに、DeviceCheck の値を照会する
2. 値が 0: 登録を許可し、1 に設定する
3. 値が 1: 登録を許可し、2 に設定する
4. 値が 2: 登録を許可し、3 に設定する
5. 値が 3: 登録を拒否する(上限に達している)
キーポイント:
- Apple サーバー経由でサーバーによって設定およびクエリされる 2 ビット値
- ビジネスニーズに応じて各値の意味を自由に定義できます ・機種変更時などに備えて、定期的にリセットすることをお勧めします。
アプリの証明: アプリの信頼性を検証します。
(10:04)
App Attest が解決する中心的な問題: サーバーに接続されているクライアントは、本当に公開した本物のアプリですか?
攻撃者は次のことを行うことができます。
- アプリを逆コンパイルし、ロジックを変更し、配布用に再パッケージ化します。
- クライアント検証をバイパスして API を直接呼び出します
- 自動ツールを使用してインターフェイスをバッチでフラッシュします
App Attest は Secure Enclave を使用して暗号証明を生成します。
- アプリはデバイスに証明書を要求します
- Secure Enclave は、アプリ ID 情報を含む暗号化されたアサーションを生成します
- アプリはアサーションをサーバーに送信します
- サーバー検証アサーション: アプリが App Store からの正規品であり、変更されておらず、実際のデバイスで実行されていることを確認します。
- 機密性の高いコンテンツは、検証に合格した後にのみ返されます。
キーポイント:
- iOS 14以降およびtvOS 15以降をサポート
- 各キー操作前に確認可能
- 検証はサーバー側で完全に行われるため、Apple サーバーに接続する必要はありません。
- サーバー検証プロセスの詳細については、「App Attest と DeviceCheck による不正行為の軽減」セッションを参照してください。
3 種類のリスクに対する保護戦略
(00:37)
| リスクの種類 | 攻撃方法 | 保護ツール | コアメカニズム |
|---|---|---|---|
| アカウント乗っ取り | パスワード漏洩、フィッシング攻撃 | Apple でサインイン | 二要素認証 + 実ユーザー検出 |
| 昇進の悪用 | 一括登録、繰り返し引き換え | デバイスチェック | デバイスレベルの 2 ビット永続タグ |
| コンテンツの盗難 | リバースエンジニアリング、APIパケットキャプチャ | アプリの認証 | Secure Enclave 暗号化の検証 |
キーポイント:
- 3 層ツールは単独で使用することも、組み合わせて使用することもできます。
- Apple でサインインと DeviceCheck はどちらもユーザーのプライバシーを保護し、デバイスや ID 情報を公開しません
- App Attest の検証オーバーヘッドは非常に小さいため、機密性の高いリクエストの前に実行するのに適しています。
重要ポイント
-
自分で作成したアカウント システムではなく、Apple でサインインを使用します。アプリに複雑なアカウント システムが必要ない場合は、「Apple でサインイン」に接続するだけです。ユーザーはパスワードを覚える必要がなく、パスワードが漏洩する心配もありません。
realUserStatusまた、バッチに登録されたロボットをフィルターで除外するのにも役立ちます。入口API:ASAuthorizationAppleIDCredential.realUserStatus。 -
新規ユーザー割引に DeviceCheck の制限を追加します。初回注文の 50% オフや無料トライアルなどのプロモーションは、簡単に獲得できます。 DeviceCheck の 2 ビット マークを使用して、デバイスが割引を受けているかどうかを記録します。アンインストール、再インストール、工場出荷時の設定に戻しても、逃れることはできません。入口API:
DCDevice.current.generateToken()+ Apple サーバーのクエリ。 -
コンテンツ API の前に App Attest 検証を追加します。アプリが有料のビデオ、オーディオ、ゲーム コンテンツを提供する場合は、リソース URL を返す前にクライアントの証明書を検証してください。呼び出し元が公開した本物のアプリであり、サードパーティのパケット キャプチャ ツールではないことを確認してください。入口API:
DCAppAttestService.shared.attestKey()。 -
3 層のツールを組み合わせて多層防御を構築します。 「Apple でサインイン」はログインしている人が本人であることを保証し、DeviceCheck はデバイスごとの操作数が制限されていることを確認し、App Attest はサーバーに接続しているクライアントが本物であることを確認します。 3 つのレイヤーが重なると、攻撃コストは指数関数的に増加します。エントリ: 3 つの API はリクエスト リンクの順序でデプロイされます。
-
異常なパターンのアカウント作成とプロモーションの引き換えを定期的に監査します。保護ツールがある場合でも、同じ IP 範囲のバッチ登録、短期間での大量の引き換えリクエスト、異常な地理的位置などのデータを監視する必要があります。ツールは自動化を防ぎ、手動レビューは高度な攻撃を防ぎます。エントリ: サーバー ログ + 異常検出ルール。
関連セッション
- App Attest と DeviceCheck で不正行為を軽減する — App Attest と DeviceCheck の技術的な実装の詳細とサーバー側の検証プロセスの詳細な説明
- ワンタップ アカウント セキュリティ アップグレード — ワンタップ アカウント セキュリティ アップグレード、強力なパスワード、自動入力のベスト プラクティス
- どこでも自動入力 — パスワード自動入力の完全な実装ガイド
- プライバシーとアプリ — プライバシー保護のフレームワークとベスト プラクティス
コメント
GitHub Issues · utterances