-
Notifications
You must be signed in to change notification settings - Fork 0
/
翻訳_Android_DRM.txt
316 lines (216 loc) · 17.6 KB
/
翻訳_Android_DRM.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
DRM
デジタル著作権マネージメント
This document provides an overview of the Android DRM framework, and introduces the interfaces a DRM plug-in must implement.
このドキュメントはアンドロイドのDRMのフレームワークの外観をしめす。そして、DRMプラグインが実装しなければいけないインターフェースの紹介をする。
This document does not describe robustness rules or compliance rules that may be defined by a DRM scheme.
このドキュメントはDRMによって規定されるロバストネスルールやコンプライアンスるーるについては言及しない。
============
Introduction
紹介
============
The Android platform provides an extensible DRM framework that lets applications manage rights-protected content according to the license constraints associated with the content.
アンドロイドは、アプリケーションが著作権保護コンテンツをコンテンツに紐づくライセンスの制約に従って管理できる、拡張可能なDRMフレームワークを提供する。
The DRM framework supports many DRM schemes; which DRM schemes a device supports is up to the device manufacturer.
DRMフレームワークは数多くのDRMスキーマをサポートする。 (デバイスがサポートするDRM方式は、デバイスの製造元に任されている)
The DRM framework introduced in Android 3.0 provides a unified interface for application developers and hides the complexity of DRM operations.
Android3.0で導入されたDRMフレームワークは、アプリケーション開発者に統一されたインターフェースを提供し、DRM操作の複雑さを隠蔽します。
The DRM framework provides a consistent operation mode for protected and non-protected content.
DRMフレームワークは保護、非保護コンテンツの双方について首尾一貫した操作モードを提供します。
DRM schemes can define very complex usage models by license metadata.
DRMスキーマは、ライセンスのメタデータによって、非常に複雑なユーセージモデルを、定義できる。
The DRM framework provides the association between DRM content and license, and handles the rights management.
DRMフレームワークはDRMコンテンツととライセンスの紐付けを提供する。また、権利の管理をハンドルする。
This enables the media player to be abstracted from DRM-protected or non-protected content.
これはメディアプレイヤーがDRM保護コンテンツ、非保護コンテンツから抽象化されることを可能とする、
See MediaDrm for the class to obtain keys for decrypting protected media streams.
鍵取得やプロテクトされたメディアストリームの復号用のクラスについては MediaDrm を参照のこと。
Figure 1. DRM Hardware Abstraction Layer
図1.DRMハードウェア抽象化レイヤ
Availability of rich digital content is important to users on mobile devices.
モバイルデバイスのユーザにとってリッチなデジタルコンテンツが利用可能なことは重要である。
To make their content widely available, Android developers and digital content publishers need a consistent DRM implementation supported across the Android ecosystem.
コンテンツを広く利用できるために、アンドロイド開発者とデジタルコンテンツ発行者は、アンドロイドエコシステムでサポートされる、一貫したDRMの実装が必要である。
To make that digital content available on Android devices and to ensure at least one consistent DRM available across all devices, Google provides DRM without license fees on compatible Android devices.
アンドロイドデバイスでデジタルコンテンツを利用できるようにしたり、すべてのデバイスで少なくとも一つの一貫性があるDRMが利用可能であることを確実にするために、Googleはアンドロイドデバイス互換のラインセンスフリーなDRMを提供する。
On Android 3.0 and higher platforms, the DRM plug-in is integrated with the Android DRM framework and can use hardware-backed protection to secure premium content and user credentials.
アンドロイド3.0かそれ以降のプラットフォームでは、DRMプラグインがアンドロイドDRMフレームワークに統合されている。そして、プレミアムコンテンツとユーザの資格情報の保護に、hardware-backedな保護が利用できる。
The content protection provided by the DRM plug-in depends on the security and content protection capabilities of the underlying hardware platform.
DRMプラグインで提供されるコンテンツ保護は、セキュリティと、ハードウェアプラット・フォームが基礎をなすコンテンツ保護能力に依存する。
The hardware capabilities of the device include hardware secure boot to establish a chain of trust of security and protection of cryptographic keys.
そのデバイスのハードウェアの能力は、信頼の鎖を確立するためのセキュアブートと環濠化された鍵の保護を含む。
Content protection capabilities of the device include protection of decrypted frames in the device and content protection via a trusted output protection mechanism.
そのデバイスのコンテンツ保護の能力は、デバイスでの復号されたフレームの保護と、信頼ある出力保護メカニズムを通じたコンテンツ保護を含む。
Not all hardware platforms support all of the above security and content protection features.
すべてのハードウェアプラットフォームがすべての上記のセキュリティとコンテンツ保護機能を有するわけではない。
Security is never implemented in a single place in the stack, but instead relies on the integration of hardware, software, and services.
セキュリティは一か所のスタックでは決して実装できず、ハードウェア、ソフトウェア、サービスの統合に頼っている。
The combination of hardware security functions, a trusted boot mechanism, and an isolated secure OS for handling security functions is critical to providing a secure device.
ハードウェアのセキュリティ機能、トラストブートの機構、そしてセキュア関数の実行をするための独立したセキュアOSがセキュアデバイスのかなめである。
============
Architecture
アーキテクチャ
============
The DRM framework is designed to be implementation agnostic and abstracts the details of the specific DRM scheme implementation in a scheme-specific DRM plug-in.
DRMフレームワークは、特定のスキームを持つDRMのプラグインの、特定のDRMスキームの実装の詳細について知らないで済む、かつ抽象化されたデザインになっている。
The DRM framework includes simple APIs to handle complex DRM operations, register users and devices to online DRM services, extract constraint information from the license, associate DRM content and its license, and finally decrypt DRM content.
DRMフレームワークは複雑なDRM操作をハンドルするための、シンプルなAPIを含む。オンラインのDRMサーバにユーザとデバイスを登録するとか、ライセンスから制約情報を取得するとか、DRMコンテンツをライセンスと結びつけるとか、最終的にコンテンツを復号するとか。
The Android DRM framework is implemented in two architectural layers:
アンドロイドDRMフレームワークは2層のアーキテクチャレイヤで実装されている。
A DRM framework API, which is exposed to applications through the Android application framework and runs through the Dalvik VM for standard applications.
DRMフレームワークAPIは、アンドロイドアプリケーションフレームワークを通してアプリに露出し、通常アプリ用のDalvik VMによって実行される。
A native code DRM manager, which implements the DRM framework and exposes an interface for DRM plug-ins (agents) to handle rights management and decryption for various DRM schemes.
ネーティブコードのDRMマネージャは、DRMフレームワークを実装し、権利の管理と、様々なDRMスキーマを復号するための、インターフェースをDRMプラグインに露出する。
Figure 2. DRM framework
図2.DRMフレームワーク
For details, refer to the Android DRM package reference.
詳細については、Android DRM package refernece を参照。
http://developer.android.com/intl/ja/reference/android/drm/package-summary.html
========
Plug-ins
プラグイン
========
As shown in the figure below, the DRM framework uses a plug-in architecture to support various DRM schemes.
下記の図で示されるように、DRMフレームワークは数々のDRMスキーマをサポートするためにプラグインアーキテクチャを利用している。
The DRM manager service runs in an independent process to ensure isolated execution of DRM plug-ins.
DRMマネージャサービスは独立したプロセス実行される。これは、DRMプラグインの実行との隔離を確実にするため。
Each API call from DrmManagerClient to DrmManagerService goes across process boundaries by using the binder IPC mechanism.
DrmManagerClientからDrmManagerServiceへのAPIコールはBinderのIPCメカニズムによってプロセス境界を超える。
The DrmManagerClient provides a Java programming language implementation as a common interface to runtime applications;
DrmManagerClientはランタイムアプリに共通インターフェースとしてJavaの実装を提供する。
it also provides a DrmManagerClient-native implementation as the interface to native modules.
【?】それはネーティブモジュールにインターフェースとして、DrmManagerClient-native実装をも提供する。
The caller of DRM framework accesses only the DrmManagerClient and does not have to be aware of each DRM scheme.
DRMフレームワークの呼び出し者はDrmManagerClientだけにアクセスし、各々のDRMスキームには気づかない。
Figure 3. DRM framework with plug-ins
図3.プラグインとDRMフレームワーク
Plug-ins are loaded automatically when DrmManagerService is launched.
プラグインはDrmManagerServiceがローンチされる際に、自動的にロードされる。
As shown in the figure below, the DRM plug-in manager loads/unloads all the available plug-ins.
下記の図の通り、DRMプラグインマネージャはすべての利用可能なプラグインをロード・アンロードする。
The DRM framework loads plug-ins automatically by finding them under:
下記のディレクトリ中に見つかったプラグインは自動的にロードされる。
/system/lib/drm/plugins/native/
Figure 4. DRM plug-in lifecycle
図4.DRMプラグインのライフサイクル
The plug-in developer should ensure the plug-in is located in the DRM framework plug-in discovery directory.
プラグインの開発者はプラグインがDRMフレームワーク発見対象ディレクトリの中にあることを保証せねばならない。
See implementation instructions below for details.
実装の説明の詳細については以下を参照のこと。
==============
Implementation
実装
==============
----------
IDrmEngine
----------
IDrmEngine is an interface with a set of APIs for DRM use cases.
IDrmEngineはDRMユースケースの為のAPIセットをもつインターフェースである。
Plug-in developers must implement the interfaces specified in IDrmEngine and the listener interfaces specified below.
プラグイン開発者はIDrmEngineに規定されるインターフェースと下記で示されるリスナインターフェースをを実装しなければならない。
The interface definition is available in the source tree at:
インターフェースの定義はソースツリーの以下の場所にある。
<platform_root>/frameworks/base/drm/libdrmframework/plugins/common/include
--------
DRM Info
--------
DrmInfo is a wrapper class that wraps the protocol for communicating with the DRM server.
DrmInfoはDRMサーバとの通信プロトコルのラッパクラスである。
Server registration, deregistration, license acquisition, or any other server-related transaction can be achieved by processing an instance of DrmInfo.
サーバ登録、登録解除、ライセンス取得、あるいは他のサーバ関連のトランザクションはDrmInfoのインスタンスを処理することによって達成することができる。
The protocol should be described by the plug-in in XML format.
プロトコルはプラグインによってXMLフォーマットによって記述されねばならない。
Each DRM plug-in would accomplish the transaction by interpreting the protocol.
各々のDRMプラグインはプロトコルを解釈することによりトランザクションを達成する。
The DRM framework defines an API to retrieve an instance of DrmInfo called acquireDrmInfo().
DRMフレームワークは、aquireDrmInfo()とよばれる、DrmInfoのインスタンスを取得するAPIを定義する。
DrmInfo* acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest);
Retrieves necessary information for registration, deregistration or rights acquisition information. See DrmInfoRequest for more information.
登録、登録解除、権利獲得情報に必要な情報の獲得をする。詳細については DrmInfoRequest を参照のこと。
DrmInfoStatus* processDrmInfo(int uniqueId, const DrmInfo* drmInfo);
processDrmInfo() behaves asynchronously and the results of the transaction can be retrieved either from OnEventListener or OnErrorListener.
processDrmInfoは非同期に動作し、トランザクションの結果は OnEventListener もしくは OnErrorListenerで取得できる。
----------
DRM rights
----------
The association of DRM content and the license is required to allow playback of DRM content.
DRMコンテンツとライセンスの紐付けはDRMコンテンツの再生を許可するのに必要である。
Once the association has been made, the license will be handled in the DRM framework so the Media Player application is abstracted from the existence of license.
一度紐付けが確立されれば、ライセンスはDRMフレームワークでハンドルされる。よって、MediaPlayerアプリケーションはライセンスの存在から隔離される。
int checkRightsStatus(int uniqueId, const String8& path, int action);
Check whether the given content has valid rights or not.
コンテンツが有効な権利を持つかどうかチェックする。
The input parameters are the content file path where the content was saved and the action to query rights for, for example: Action::DEFAULT, Action::PLAY.
入力パラメタはコンテンツがセーブされているパス、および権利があるかチェックしたいアクション。 たとえばデフォルトとか再生とか。
Returns the status of the rights for the protected content, such as RightsStatus::RIGHTS_VALID, RightsStatus::RIGHTS_EXPIRED.
保護されたコンテンツの権利の状態を返す。たとえば、有効とか期限切れとか。
status_t saveRights(int uniqueId, const DrmRights& drmRights, const String8& rightsPath, const String8& contentPath);
Save DRM rights to the specified rights path and make association with content path.
DRM権限を指定されたパスに保存し、コンテンツパスとの結合を作成する。
The input parameters are the DrmRights to be saved, the rights file path where rights are to be saved, and the content file path where content was saved.
パラメタは保存するDrmRight、権利が保存されるファイルパス、コンテンツが保存されているパス。
----------------
License Metadata
----------------
License metadata such as license expiry time, repeatable count and etc., may be embedded inside the rights of the protected content.
ライセンスの期限、繰り返し数などのライセンスメタデータは保護されたコンテンツの権利の中に組み込まれているかもしれない。
The Android DRM framework provides APIs to return constraints associated with input content.
アンドロイドDRMフレームワークは入力されたコンテンツに紐づけられた制約を返すAPIを提供する。
See DrmManagerClient for more information.
詳細についてはDrmManagerClientを参照のこと。
DrmConstraints* getConstraints(int uniqueId, const String path, int action);
The getConstraint function call returns key-value pairs of constraints embedded in protected content.
getConstraint関数呼び出しは 保護されたコンテンツに組み込まれた制約についての 鍵-値 のペアを返す。
To retrieve the constraints, the uniqueIds (the Unique identifier for a session and path of the protected content) are required.
制約を取得するには uniqueIds (保護コンテンツのパスとセッションに関するユニークID) が必要となる。
The action, defined as Action::DEFAULT, Action::PLAY, etc., is also required.
アクション(デフォルトとか、再生とか定義された)も必要。
Figure 5. Retrieve license metadata
図5.ライセンスメタデータの取得
DrmMetadata* getMetadata(int uniqueId, const String path);
Get metadata information associated with input content for a given path of the protected content to return key-value pairs of metadata.
指定パスの保護コンテンツで示される入力コンテンツと紐づけられたメタデータ情報の取得。メタデータは鍵-値のペアで返される。
---------------
Decrypt session
---------------
To maintain the decryption session, the caller of the DRM framework must invoke openDecryptSession() at the beginning of the decryption sequence.
復号セッションを維持するために、DRMフレームワークの呼び出し者はopenDecryptSession()を復号シーケンスの冒頭で呼ばなければならない。
openDecryptSession() asks each DRM plug-in if it can handle input DRM content.
openDecryptSession()は各DRMプラグインに、入力されたDRMコンテンツのハンドルが可能か尋ねる。
status_t openDecryptSession( int uniqueId, DecryptHandle* decryptHandle, int fd, off64_t offset, off64_t length);
The above call allows you to save DRM rights to specified rights path and make association with content path.
上記呼び出しによって指定した right パスへのDRM権利の保存と、コンテンツパスへの紐付けが可能となる。
DrmRights parameter is the rights to be saved, file path where rights should be and content file path where content should be saved.
DrmRightsのパラメータは、保存される権利、権利が保存されるファイルパス、コンテンツが保存されるパス。
---------------------
DRM plug-in Listeners
---------------------
Some APIs in DRM framework behave asynchronously in a DRM transaction.
DRMフレームワークのAPIの中には、DRMトランザクション中で非同期にふるまうものがある。
An application can register three listener classes to DRM framework.
アプリケーションは3つのリスナをDRMフレームワークに登録することができる。
OnEventListener for results of asynchronous APIs
OnEventListenerは非同期APIの結果取得のため。
OnErrorListener for receiving errors of asynchronous APIs
OnErrorLisntenerは非同期APIのエラー取得のため。
OnInfoListener for any supplementary information during DRM transactions.
OnInfoListenerはDRMトランザクション中の補足的な情報の取得のため。
------
Source
------
The Android DRM framework includes a passthru plug-in as a sample plug-in.
アンドロイドDRMフレームワークはサンプルプラグインとしてパススループラグインを含む。
The implementation for passthru plug-in can be found in the Android source tree at:
パススループラグインの実装は以下のディレクトリで見つかるよ。
<platform_root>/frameworks/base/drm/libdrmframework/plugins/passthru
---------------------
Build and Integration
---------------------
Add the following to the Android.mk of the plug-in implementation.
プラグインの実装には Android.mk に以下を追加する。
The passthruplugin is used as a sample.
パススループラグインがサンプルとして使われている。
PRODUCT_COPY_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/<plugin_library>:system/lib/drm/plugins/native/<plugin_library> e.g.,
PRODUCT_COPY_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/ libdrmpassthruplugin.so:system/lib/drm/plugins/native/libdrmpassthruplugin.so
Plug-in developers must locate their respective plug-ins under this directory like so:
プラグイン開発者はそれぞれのプラグインを下記のディレクトリに配置しなければならない。こんな風に。
/system/lib/drm/plugins/native/libdrmpassthruplugin.so