PlayReady バージョン 3.0 で導入された PlayReady Secure Stop は、PlayReady デバイスが、特定のコンテンツに対してメディア再生が停止したメディア ストリーミング サービスに自信を持ってアサートするための手段を提供する機能です。 この機能により、メディア ストリーミング サービスは、特定のアカウントの異なるデバイスに対する使用制限の正確な適用とレポートを提供します。
Secure Stop の概要
メディアの再生が停止したとき、またはユーザーがメディア プレゼンテーションを途中で停止したために、Secure Stop イベントがクライアントによって Secure Stop Server に報告されます。 Secure Stop イベントが報告され、Secure Stop イベントが記録された時点で、PlayReady クライアントはコンテンツ キーがメモリから消去されることを確認します。 セキュア ストップは、前のセッションが予期せず終了したときにも報告されます (たとえば、システムやアプリケーションのクラッシュが原因)。
注
Secure Stop は、非永続的ライセンスにのみ適用されます。

Secure Stop チャレンジを送信する主なシナリオは 2 つあります。
- メディアの再生が最後に停止したとき、またはユーザーが中央のどこかでメディア プレゼンテーションを停止した場合。
- 前のセッションが予期せず終了したとき (システムやアプリのクラッシュなど)。 アプリは、起動時またはシャットダウン時に、未処理の Secure Stop セッションに対してクエリを実行し、他のメディア再生とは別にチャレンジを送信する必要があります。
UWP アプリでのセキュア ストップの詳細については、PlayReady DRM に関する記事の「セキュリティで保護された停止の追加」セクションを参照してください。
セキュア ストップ 2
PlayReady バージョン 4.2 以降、 PlayReady Secure Stop 2 は、セキュリティ レベル 3000 の信頼された実行環境 (TEE) でクライアントに Secure Stop 機能を適用することで、セキュリティを強化します。
サービスでは、SecureStop 機能を使用して、同じユーザー アカウントに属する複数のクライアント間で再生を強制できます。 そのユーザー アカウント内の特定のクライアントの構成に応じて、サービスはクライアントから若干異なるメッセージを受信します。
次の表は、さまざまなクライアント セキュリティ レベルと Secure Stop バージョンのサーバー アプリ ロジックを示しています。
| クライアントのバージョン | SecureStop サーバー ロジック | 頑健性 |
|---|---|---|
| PlayReady バージョン 2.0+ SL2000 | サーバーは、クライアントから SecureStop メッセージを受信しません。 これを行うには、アプリ ロジックを使用します。 | 低 |
| PlayReady バージョン 3.0+ SL3000 (例: Windows 10 アプリ) | サーバーは、クライアントから SecureStop1 メッセージを受信します。 攻撃に対するこのメッセージの堅牢性は、単純なアプリ ロジックよりも高くなります。 | ミディアム |
| PlayReady バージョン 4.2+ SL3000 | サーバーは、クライアントから SecureStop2 メッセージを受信します。 このクライアントからの悪意のある SecureStop2 メッセージでは、クライアントの信頼された実行環境 (TEE) で攻撃が必要になります。 攻撃に対するこのメッセージの堅牢性は、SecureStop1 よりも高くなります。 | 高 |
Secure Stop 2 機能を利用するには、サーバー アプリケーションで次のように機能を有効にする必要があります。
- Secure Stop でライセンスを発行するときに、MediaLicense クラスに SecureStop2AESKey プロパティを設定します。 (これは、クライアントが Secure Stop 2 をサポートしているかどうかに関係なく実行できます)。
- ISecureStop2Handler インターフェイス (他のハンドラーと同様) を実装するクラスを作成します。これにより、特定の KID に対して、その KID を使用して MediaLicense で SecureStop2AESKey プロパティを設定するときに使用されたのと同じキーが返されます。
- GetSecureStopData を呼び出した後、SecureStopDataChallenge クラスの SecureStop2VerifiedSession プロパティに対してクエリを実行します。 Guid.Empty に設定されている場合、クライアントは SecureStop1 メッセージを送信しました。 他の Guid に設定されている場合、クライアントは SecureStop2 メッセージを送信しました。 返される Guid は、SecureStop2 チャレンジ内の単一セッションのセッション ID です。これは、悪意のない (クライアントの信頼された実行環境 (TEE) が正常に攻撃されなかったと仮定して) 確認できます。