「Blu-ray」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(2人の利用者による、間の4版が非表示)
1行目: 1行目:
[[Category:音声/動画]]
+
[[Category:マルチメディア]]
 
[[Category:光ディスク]]
 
[[Category:光ディスク]]
 
[[en:Blu-ray]]
 
[[en:Blu-ray]]
5行目: 5行目:
 
{{Related|光学ディスクドライブ}}
 
{{Related|光学ディスクドライブ}}
 
{{Related articles end}}
 
{{Related articles end}}
この記事では Linux ユーザーが合法的に購入した Blu-ray ディスクをコンピューター上で再生する方法を説明しています。Linux で利用可能な公式の BluRay プレイヤーのソフトウェアは存在しないため、Linux ユーザーはディスクのコンテンツを保護している DRM を扱えるオープンソースのライブラリを使う必要があります。これは相互運用性が許可している国では合法です。日本では著作権法の改正によって保護技術を回避しての複製は違法になっていますが、再生は問題ありません。
+
この記事では Linux ユーザーが合法的に購入した Blu-ray ディスクをコンピューター上で再生する方法を説明しています。Linux で利用可能な公式の Blu-ray プレイヤーのソフトウェアは存在しないため、Linux ユーザーはディスクのコンテンツを保護している DRM を扱えるオープンソースのライブラリを使う必要があります。これは相互運用性が許可している国では合法です。日本では著作権法の改正によって保護技術を回避しての複製は違法になっていますが、再生は問題ありません。
   
 
== 仕組み ==
 
== 仕組み ==
21行目: 21行目:
 
# 計算された VUK を使ってディスクの暗号化された Title Key を解読します。
 
# 計算された VUK を使ってディスクの暗号化された Title Key を解読します。
 
# 最後にこの Title Key がディスクの保護されたメディアコンテンツを解読します。
 
# 最後にこの Title Key がディスクの保護されたメディアコンテンツを解読します。
MKB を含んでいるのはディスクだということに注意してください。MKB は最初の Blu-ray が2006年に市販開始された時から更新が行われています。最新の MKB はバージョン 30 ですが、実際はほとんどの MKB は同じキーを共有しています。ソフトウェアプレイヤーは Host Key/Certificate を提供する一方、ドライブは無効にされた Host Key/Certificate のリストを所持しています。
+
MKB を含んでいるのはディスクだということに注意してください。MKB は最初の Blu-ray が2006年に市販開始された時から更新が行われています。最新の MKB はバージョン 64 ですが、実際はほとんどの MKB は同じキーを共有しています。ソフトウェアプレイヤーは Host Key/Certificate を提供する一方、ドライブは無効にされた Host Key/Certificate のリストを所持しています。(バージョンが新しい MKB を含んだ) 新しいディスクが復号化・再生されたとき、あるいは復号化・再生が試みられたときに Host Key と Certificate の無効化が発生します (ディスクをドライブに入れただけではアップデートは起こりません)。そうなると、ドライブは古い Host Key/Certificate を永遠に使えなくなります。
   
libaacs を使うことで、復号化プロセスの最後の手順に進み、メディアプレイヤーがディスクを再生できるようになるまでの段階をいくつかスキップすることができます。これは {{ic|KEYDB.cfg}} ファイルで以下のどちらか(もしくは両方)を用意することで可能です:
+
{{Pkg|libaacs}} を使うことで、復号化プロセスの最後の手順に進み、メディアプレイヤーがディスクを再生できるようになるまでの段階をいくつかスキップすることができます。これは {{ic|KEYDB.cfg}} ファイルで以下のどちらか(もしくは両方)を用意することで可能です:
 
* (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な (ドライブによって無効にならない) Host Key/Certificate
 
* (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な (ドライブによって無効にならない) Host Key/Certificate
 
* 特定のディスクの有効な VUK
 
* 特定のディスクの有効な VUK
   
ディスクの MKB バージョンに対応した有効な Processing Key と有効な Host Key/Certificate を libaacs が見つけると、手順2から復号化プロセスが開始されます。ただし、Host Key/Certificate は新しい Blu-ray ディスクによって定期的に無効にされます。一度無効になると、ドライブは新旧両方のディスクが読み込めなくなります。基本的にこれを元に戻すことは不可能で、新しい最新の Host Key/Certificate を用意するしか直す方法はありません (Windows ユーザーの場合、ソフトウェアプレイヤーのアップデートでこれが行われています)。この方法の利点は、Host Key/Certificate が無効にされるまで、Processing Key が判明している MKB バージョンをディスクが使っている限り、libaacs は全てのディスクの VUK を計算することができるということです。現在、MKB バージョン 1 から 28 までの Processing Key が計算済みでインターネットから取得できるようになっています。
+
ディスクの MKB バージョンに対応した有効な Processing Key と有効な Host Key/Certificate を libaacs が見つけると、手順2から復号化プロセスが開始されます。ただし、Host Key/Certificate は新しい Blu-ray ディスクによって定期的に無効にされます。一度無効になると、ドライブは新旧両方のディスクが読み込めなくなります。基本的にこれを元に戻すことは不可能で、新しい最新の Host Key/Certificate を用意するしか直す方法はありません (Windows ユーザーの場合、ソフトウェアプレイヤーのアップデートでこれが行われています)。この方法の利点は、Host Key/Certificate が無効にされるまで、Processing Key が判明している MKB バージョンをディスクが使っている限り、libaacs は全てのディスクの VUK を計算することができるということです。現在、MKB バージョン 61 までの Processing Key が計算済みでインターネットから取得できるようになっています。
   
 
ありがたいことに、有効な Processing Key がなかったり Host Certificate が無効になっているような場合、libaacs にはディスクを復号する代わりの方法があります: {{ic|KEYDB.cfg}} ファイルに有効な VUK を準備することです。これによって libaacs は手順3まで直接飛ぶことができます。Processing Key とは対照的に、VUK はディスクによって異なります。そのためユーザーはサードパーティから VUK を取得する必要があるので、あまり効率的ではありません。しかしながら VUK は無効にされることがないという点では大きく有利です。libaacs は (有効な Host Key/Certificate を使って) 手順2が実行できる場合、手順3で計算した VUK を {{ic|~/.cache/aacs/vuk}} に保存します。同じディスクを二度目に見る時は、libaacs は保存された VUK を再利用できます。そのため作成された VUK はバックアップしておくと良いでしょう。
 
ありがたいことに、有効な Processing Key がなかったり Host Certificate が無効になっているような場合、libaacs にはディスクを復号する代わりの方法があります: {{ic|KEYDB.cfg}} ファイルに有効な VUK を準備することです。これによって libaacs は手順3まで直接飛ぶことができます。Processing Key とは対照的に、VUK はディスクによって異なります。そのためユーザーはサードパーティから VUK を取得する必要があるので、あまり効率的ではありません。しかしながら VUK は無効にされることがないという点では大きく有利です。libaacs は (有効な Host Key/Certificate を使って) 手順2が実行できる場合、手順3で計算した VUK を {{ic|~/.cache/aacs/vuk}} に保存します。同じディスクを二度目に見る時は、libaacs は保存された VUK を再利用できます。そのため作成された VUK はバックアップしておくと良いでしょう。
  +
  +
[http://forum.doom9.org/attachment.php?attachmentid=11170&d=1276615904] や [http://forum.doom9.org/showthread.php?p=1525922#post1525922] など、様々な場所から VUK を収集する試みがありました。最近では [http://www.labdv.com/aacs/] に VUK データベースが存在し 24,000 近くの VUK が公開されていましたが、既に利用できなくなっています。データベースのミラーが [https://vlc-bluray.whoknowsmy.name] など Doom9 のフォーラムに記載されています。
   
 
==== BD+ ====
 
==== BD+ ====
2013年12月、VideoLAN は BD+ 復号化の実験的なサポートを提供する待望の {{AUR|libbdplus}} をリリースしました。ライブラリには BD+ の復号化に必要なキーや証明書が含まれていないので、[http://www.labdv.com/aacs/] と [http://www.labdv.com/aacs/advanced-users.php] で説明されているように、別個に入手してインストールする必要があります。
+
BD+ は Blu-ray DRM の任意の補助コンポーネントです。2013年12月、VideoLAN は BD+ 復号化の実験的なサポートを提供する待望の {{AUR|libbdplus}} をリリースしました。ライブラリには BD+ の復号化に必要なキーや証明書が含まれていないので、別個に入手してインストールする必要があります。
   
  +
{{Note|提供されているファイルは ''.tar.bz2'' アーカイブですが、名前は {{ic|bdplus-vm0.bz2}} となっています。{{ic|~/.config/bdplus}} に {{ic|vm0}} という名前のフォルダを作成すると良いでしょう。フォルダの名前を {{ic|bdplus-vm0}} としてはいけません。GUI の圧縮ツールを使っている場合はファイルの拡張子を ''.tar.bz2'' に変えてください。}}
=== 概要 ===
 
1. ユーザーが libbluray と libaacs をサポートしているビデオプレイヤーで Blu-ray の再生を始めます。
 
   
  +
==再生==
2. BR ディスクが AACS で暗号化されていない場合、4a に行きます。
 
  +
===準備===
   
  +
# {{pkg|libbluray}} と {{pkg|libaacs}} パッケージを[[インストール]]してください。
3. BR ディスクが AACS で暗号化されている場合、libaacs は以下を実行します:
 
  +
# [https://vlc-bluray.whoknowsmy.name] から [https://vlc-bluray.whoknowsmy.name/files/KEYDB.cfg KEYDB.cfg] ファイルをダウンロードして {{ic|~/.config/aacs}} ディレクトリにコピーしてください。ファイルには PK, HC, VUK データが含まれており、以下で説明している復号化プロセスで必要になります。
  +
# 必要であれば (ボリュームがシステムに自動的にマウントされない場合)、ディスクをディレクトリにマウントしてください。例: {{bc|# mount /dev/sr0 /media/blurays}}
   
  +
=== 復号化プロセス ===
:3.1. ディスクの有効な VUK が {{ic|~/.cache/aacs/vuk/}} に存在するか確認します。存在する場合、4a に行きます。存在しない場合、次のステップに進みます。
 
   
  +
VLC など Blu-ray に対応しているソフトウェアプレイヤーを起動して、ディスクを再生してください (VLC ではメディア -> ディスクを開くから、ディスクタブで Blu-ray を選択します。「ディスクメニューなし」にはチェックを入れてください)。ソフトウェアプレイヤーは以下のような復号化プロセスを辿ります:
:3.2. {{ic|~/.config/aacs/KEYDB.cfg}} を読み込みます:
 
   
  +
# ユーザーが libbluray と libaacs をサポートしているビデオプレイヤーで Blu-ray の再生を始めます。
::3.2.1. 有効な VUK が存在する場合、4a に行きます。存在しない場合、次のステップに進みます。
 
  +
# BR ディスクが AACS で暗号化されていない場合、4.1 に進みます。
  +
# BR ディスクが AACS で暗号化されている場合、libaacs は以下を実行します:
  +
## ディスクの有効な VUK が {{ic|~/.cache/aacs/vuk/}} に存在するか確認します。存在する場合、4.1 に進みます。存在しない場合、次のステップに進みます。
  +
## {{ic|~/.config/aacs/KEYDB.cfg}} を読み込みます:
  +
### 有効な VUK が存在する場合、4.1 に進みます。存在しない場合、次のステップに進みます。
  +
### (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な Host Key/Certificate が存在する場合、libaacs は VUK を計算します。今後の使用のために VUK は {{ic|~/.cache/aacs/vuk}} に保存されます。その後ステップ 4.1 に進みます。有効な PK/HKC が存在しない場合、ステップ 4.2 に進みます。
  +
# 結果
  +
## ソフトウェアプレイヤーはディスクのコンテンツを再生することができます。
  +
## ソフトウェアプレイヤーはディスクのコンテンツを読み込むことができません。
   
  +
==== VUK による復号化 (ステップ 3.1 または 3.2.1) ====
::3.2.2. (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な Host Key/Certificate が存在する場合、libaacs は VUK を計算します。今後の使用のために VUK は {{ic|~/.cache/aacs/vuk}} に保存されます。ステップ 4a に行きます。
 
   
  +
ディスク固有の VUK を使用する方法はいつでも機能し、無効化されることはありません。Blu-ray ディスクの直近の復号化キーだからです。ただし、VUK はディスク毎に異なるため、VUK リストやデータベースに依存します。VUK は以下のどちらかの方法で入手できます:
:3.3 有効なキーが存在しない場合、ステップ 4b に行きます。
 
  +
* PK と Host K/C による復号化が上手くいくと、ディスクの VUK が {{ic|~/.cache/aacs/vuk}} に保存されます。
  +
* 第三者からディスクの VUK を取得する ({{ic|KEYDB.cfg}} に指定します)。
  +
たとえディスクの MKB バージョンによって PK と Host Key/Certificate が無効化されても VUK があればディスクを読み込むことができます。VUK が存在しない場合、ソフトウェアプレイヤーは以下の方法を使って復号化を行います。
   
  +
==== PK と Host K/C による復号化 (ステップ 3.2.2) ====
4a. ソフトウェアプレイヤーはディスクのコンテンツを再生することができます。
 
   
  +
(特定の MBK バージョンまでの) あらゆるディスクを復号化して再生に必要な VUK を計算できる方法です。VUK が判明すると、次の利用のために保存されます。
4b. ソフトウェアプレイヤーはディスクのコンテンツを読み込むことができません。
 
   
  +
{{Note|2016年12月現在、最新の市販 Blu-ray ディスクは MKB v64 を搭載しています。MKB v61 から先の PK は判明していないため、新しいディスクではこちらの方法を使うことはできません。}}
==再生==
 
===準備===
 
まず[[公式リポジトリ]]から {{pkg|libbluray}} と {{pkg|libaacs}} を[[pacman|インストール]]してください。それから方法1を試してみて、それでダメだったら、方法2を試して下さい。2つの方法は共存することができ、同じ {{ic|KEYDB.cfg}} ファイルで両方の方法を使うことができます。
 
   
  +
この方法では {{ic|KEYDB.cfg}} ファイルの最初にある Processing Key と Host Key/Certificate を使用します。現在、MKB v61 までのディスクを再生できますが、MKB v62 以上のディスクを再生しようとするとドライブによって {{ic|KEYDB.cfg}} ファイル内の Host Key/Certificate が無効化されて再生できなくなります。
==== 方法 1 (PK と Host K/C) ====
 
http://vlc-bluray.whoknowsmy.name/files/KEYDB.cfg を {{ic|~/.config/aacs/}} にダウンロードしてください (VUK は含まれていませんが、MKB v28 までの Processing Key と Host Key/Certificate が含まれています。MKB v30 のディスクでは無効になっています)。あなたのドライブがこの {{ic|KEYDB.cfg}} ファイルの Host Key/Certificate を無効にしない場合にだけこの方法が使えます。
 
{{bc|$ cd ~/.config/aacs/ && wget http://vlc-bluray.whoknowsmy.name/files/KEYDB.cfg}}
 
   
  +
ディスクの再生が上手くいった場合、libaacs は VUK を {{ic|~/.cache/aacs/vuk}} に保存します。ファイル名はディスク ID になります。VLC は {{ic|KEYDB.cfg}} ファイルが使えなくなっても場合、フォルダ内の VUK を再利用するため、将来のためにバックアップすることを推奨します。
次に、bluray をディレクトリにマウントしてください。例: {{bc|# mount /dev/sr0 /media/blurays}}
 
   
  +
==== BD+ のサポート ====
(mplayer や vlc を使って) ディスクを再生すると、libaacs は {{ic|~/.cache/aacs/vuk}} に VUK を保存します。ファイル名はディスクの ID で中身は VUK です。有効な {{ic|KEYDB.cfg}} ファイルが見つからないとき VLC はこの VUK を再利用するため、今後のためにこのディレクトリをバックアップしておくと良いかもしれません。
 
   
  +
{{AUR|libbdplus}} は BD+ の復号化を実験的にサポートしていますが、上手く行かない場合は {{AUR|makemkv}} や [[#他の有用なソフトウェア|DVDFab]] などの商用アプリケーションを使う必要があります。
==== 方法 2 (VUK) ====
 
上述の hcert による blu-ray 再生が上手く行かない場合、http://forum.doom9.org/attachment.php?attachmentid=11170&d=1276615904 や http://forum.doom9.org/showthread.php?p=1525922#post1525922 (こちらの方が新しい) から VUK のリストをダウンロードしてください。{{ic|~/.config/aacs}} ディレクトリに2つのファイルを作成する必要があります。残念ながら、どちらも 'KEYDB' という名前で配布されています。幸いにも、doom9 のフォーラムでは VUK ファイルは基本的に KEYDB.txt という名前が付けられています。'KEYDB.cfg' ファイルはそのままこのディレクトリにダウンロードできます。'KEYDB.txt' ファイルは 'vuk' に名前を変更してください (ファイルの拡張子は必要ありません)。VUK エントリを KEYDB.cfg ファイルに挿入しようとするとファイルが無効になります。VUK エントリのフォーマットは libaacs の初期バージョンから変更されていることに注意してください。全てのキーは先頭に 0x が必要です。次のコマンドはキーのフォーマットを自動的に変更します:
 
{{bc|<nowiki>$ sed -i 's/\([[:xdigit:]]\)\{5,\}/0x&/g' ~/.config/aacs/vuk</nowiki>}}
 
   
  +
BD+ は基本的に動画ストリームにエラーデータを追加することで暗号化を施します。暗号化された状態でも全く視聴できなくなるわけではありませんが、動画に乱れがずっと発生するので見れたものではありません。公式プレイヤーはインターネットからダウンロードしたテーブルを使って、壊れた動画ストリームを正しい動画ストリームに変換します。libbdplus はかなり前から機能しなくなっており、オープンソースのアプリケーションで BD+ で保護されたディスクを再生する方法は現在存在しません。
次に、blu-ray をディレクトリにマウントしてください。例: {{bc|# mount /dev/sr0 /media/blurays}}
 
 
==== 方法 3 (PK と VUK、BD+ サポート) ====
 
[http://www.labdv.com/aacs/] と [http://www.labdv.com/aacs/advanced-users.php] のページに、フリーのソフトウェアプレイヤーを使って Blu-ray ディスクを再生する方法とキーが載っています。このウェブサイトのメンテナの努力次第で、上手く行けば Blu-ray ディスクを簡単に再生できるようになるでしょう。
 
   
 
=== メディアプレーヤー ===
 
=== メディアプレーヤー ===
 
以下のメディアプレーヤーは libbluray や libaacs を使って AACS で暗号化された Blu-ray ディスクを再生できます。
 
以下のメディアプレーヤーは libbluray や libaacs を使って AACS で暗号化された Blu-ray ディスクを再生できます。
   
==== mplayer ====
+
==== MPlayer ====
mplayerblu-ray を再生する基本の再生コマンドは:
+
[[MPlayer]]Blu-ray を再生する基本の再生コマンドは:
{{bc|$ mplayer br:///</bluray/mount/dir>}}
+
$ mplayer br:///</bluray/mount/dir>
   
 
もしくは:
 
もしくは:
  +
$ mplayer br://<title number> -bluray-device </bluray/mount/dir>
 
{{bc|$ mplayer br://<title number> -bluray-device </bluray/mount/dir>}}
 
   
 
=====動画が遅れる=====
 
=====動画が遅れる=====
おそらく blu-ray をスムーズに再生するためにハードウェアアクセラレーションやマルチコアの CPU サポートを有効にする必要があります。
+
おそらく Blu-ray をスムーズに再生するためにハードウェアアクセラレーションやマルチコアの CPU サポートを有効にする必要があります。
   
nvidia のカードを使っている場合、libvdpau をインストールして mplayer '-vo vdpau' オプションを使ってハードウェアアクセラレーションを有効にしてください。例:
+
nvidia のカードを使っている場合、libvdpau をインストールして mplayer {{ic|1=--hwdec=auto}} オプションを使ってハードウェアアクセラレーションを有効にしてください。例:
{{bc|$ mplayer -vo vdpau br:///</bluray/mount/dir>}}
+
$ mplayer --hwdec=auto br:///</bluray/mount/dir>
   
マルチコアの CPU サポートを有効にするには '-lavdopts threads=N' オプションを使って下さい。'N' はコアの数に置き換えて下さい。例:
+
マルチコアの CPU サポートを有効にするには {{ic|1=--vd-lavc-threads=''N''}} オプションを使って下さい。{{ic|''N''}} はコアの数に置き換えて下さい。例:
{{bc|1=$ mplayer -lavdopts threads=2 br:///</bluray/mount/dir>}}
+
$ mplayer --vd-lavc-threads=4 br:///</bluray/mount/dir>
  +
  +
詳しくは[[ハードウェアビデオアクセラレーション]]を見てください。
   
 
=====音声言語が間違っている=====
 
=====音声言語が間違っている=====
'#' キーを使って再生言語を切り替えることができます。
+
{{ic|#}} キーを使って再生言語を切り替えることができます。
   
 
=====音声がズレる=====
 
=====音声がズレる=====
mplayer の最初の出力から、その blu-ray に使用されているコーデックを探す必要があります。"Selected video codec" という行の最後にあります。
+
mplayer の最初の出力から、その Blu-ray に使用されているコーデックを探す必要があります。"Selected video codec" という行の最後にあります。
   
H.264 ディスクなら '-vc ffh264vdpau' オプションを使って下さい。例:
+
H.264 ディスクなら {{ic|1=-vc ffh264vdpau}} オプションを使って下さい。例:
{{bc|$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir>}}
+
$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir>
  +
VC-1 ディスクなら '-vc ffvc1vdpau' を使って下さい。例:
 
  +
VC-1 ディスクなら {{ic|1=-vc ffvc1vdpau}} を使って下さい。例:
{{bc|$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir>}}
 
  +
$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir>
MPEG ディスクなら '-vc ffmpeg12vdpau' を使って下さい。例:
 
  +
{{bc|$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir>}}
 
  +
MPEG ディスクなら {{ic|-vc ffmpeg12vdpau}} を使って下さい。例:
  +
$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir>
   
 
==== VLC ====
 
==== VLC ====
バージョン 2.0.0 から、vlcblu-ray の再生を実験的にサポートしています。Blu-ray のメニューはまだ使えません (ただし、開発は行われています。{{pkg|libbluray}} の代わりに {{AUR|libbluray-git}} を使ってみてさい)。
+
バージョン 2.0.0 から、[[VLC]]Blu-ray の再生を実験的にサポートしています。Blu-ray のメニューはまだ使えません (ただし、開発は行われています。{{pkg|libbluray}} の代わりに {{AUR|libbluray-git}} を使ってみてください)。
   
次のコマンドで再生を開始します: {{bc|$ vlc bluray://</bluray/mount/dir>}}
+
次のコマンドで再生を開始します:
  +
$ vlc bluray://</bluray/mount/dir>
   
 
==== xine ====
 
==== xine ====
 
次のコマンドで再生を開始します:
 
次のコマンドで再生を開始します:
{{bc|$ xine bluray://</bluray/mount/dir>}}
+
$ xine bluray://</bluray/mount/dir>
   
 
===トラブルシューティング===
 
===トラブルシューティング===
123行目: 134行目:
   
 
====無効になった Host Key/Certificate====
 
====無効になった Host Key/Certificate====
残念ながら、新しい Blu-ray ディスクを再生しようとするとドライブによって Host Key/Certificate (ライセンスを受けたソフトウェアプレイヤーのキー) が無効になることがあります。このような場合、{{AUR|aacskeys}} は次のメッセージを返します:
+
残念ながら、新しい Blu-ray ディスクを再生しようとするとドライブによって Host Key/Certificate (ライセンスを受けたソフトウェアプレイヤーのキー) が無効になることがあります。無効化されると、{{AUR|aacskeys}} は次のメッセージを返します:
   
The given Host Certficate / Private Key has been revoked by your drive.
+
The given Host Certficate / Private Key has been revoked by your drive.
   
 
これは AACS の保護機構に含まれていることです: インターネットにリークされた古いソフトウェアプレイヤーの Host Key は無効にすることができ、新しい市販のディスクのリリースによってリストが配布されます。これは不可逆の措置で、ドライブのフラッシュメモリを書き換えても戻すことはできません。修正する方法はたった2つしか存在しません:
 
これは AACS の保護機構に含まれていることです: インターネットにリークされた古いソフトウェアプレイヤーの Host Key は無効にすることができ、新しい市販のディスクのリリースによってリストが配布されます。これは不可逆の措置で、ドライブのフラッシュメモリを書き換えても戻すことはできません。修正する方法はたった2つしか存在しません:
* {{ic|KEYDB.cfg}} の Host Key/Certificate を(まだ)無効になっていないキーに更新する
+
* {{ic|KEYDB.cfg}} の Host Key/Certificate を(まだ)無効になっていないキーに更新する
* [[#方法 2 (VUK)|上述]]のとおり各ディスクの VUK を {{ic|KEYDB.cfg}} に追加する。VUK が無効にされることはありません。
+
* [[#VUK による復号化 (ステップ 3.1 または 3.2.1)|上述]]のとおり各ディスクの VUK を {{ic|KEYDB.cfg}} に追加する。VUK が無効にされることはありません。
 
(mplayer や vlc を使って) ディスクの復号化が成功した場合、libaacs は {{ic|~/.cache/aacs/vuk}} に VUK を保存します。後になって {{ic|KEYDB.cfg}} の Host Key/Certificate が無効になっても、VLC は保存された VUK を使うことができます。そのため今後のために {{ic|~/.cache/aacs}} ディレクトリはバックアップすることを推奨します。
 
(mplayer や vlc を使って) ディスクの復号化が成功した場合、libaacs は {{ic|~/.cache/aacs/vuk}} に VUK を保存します。後になって {{ic|KEYDB.cfg}} の Host Key/Certificate が無効になっても、VLC は保存された VUK を使うことができます。そのため今後のために {{ic|~/.cache/aacs}} ディレクトリはバックアップすることを推奨します。
   
 
==== aacskeys を使う ====
 
==== aacskeys を使う ====
{{AUR|aacskeys}} をインストールしてください。有効な Host Key/Certificate と Processing Key が含まれているディレクトリに移動してから:
+
{{AUR|aacskeys}} をインストールしてください。有効な Host Key/Certificate と Processing Key が含まれているディレクトリに移動してから {{AUR|aacskeys}} を実行してください:
  +
$ aacskeys </bluray/mount/dir>
{{bc|$ cd /usr/share/aacskeys}} {{AUR|aacskeys}} を実行してください: {{bc|$ aacskeys </bluray/mount/dir>}} 例: {{bc|$ cd /usr/share/aacskeys && aacskeys /media/blurays}}
 
  +
  +
例:
  +
$ cd /usr/share/aacskeys && aacskeys /media/blurays
   
 
必要ならば、BR をキーデータベースに追加することができます: {{ic|~/.config/aacs/KEYDB.cfg}} を編集して以下の形式で aacskeys による情報出力を追加してください:
 
必要ならば、BR をキーデータベースに追加することができます: {{ic|~/.config/aacs/KEYDB.cfg}} を編集して以下の形式で aacskeys による情報出力を追加してください:
{{bc|<nowiki>0x<unit key file hash> = Film Title | V | 0x<volume unique key></nowiki>}}
+
0x<unit key file hash> = Film Title | V | 0x<volume unique key>
   
 
===== aacskeys がキーを生成できない場合 =====
 
===== aacskeys がキーを生成できない場合 =====
 
wine を使って [http://forum.doom9.org/showthread.php?p=993782 DumpVID] で VolumeID を生成してみて下さい。現在 VolumeID を使うことで aacskeys の VolumeID オプションによって bluray キーを生成できるようになっています。
 
wine を使って [http://forum.doom9.org/showthread.php?p=993782 DumpVID] で VolumeID を生成してみて下さい。現在 VolumeID を使うことで aacskeys の VolumeID オプションによって bluray キーを生成できるようになっています。
{{bc|Usage: aacskeys [options] <mountpath> [volume id / binding nonce]}}
+
Usage: aacskeys [options] <mountpath> [volume id / binding nonce]
  +
  +
====正しい VUK を使っているのに Blu-ray が再生されない====
  +
  +
一部の Blu-ray ドライブは sg モジュールの[[modprobe|ロード]]を必要とします:
  +
# modprobe sg
   
 
==他の有用なソフトウェア==
 
==他の有用なソフトウェア==
148行目: 167行目:
   
 
*{{AUR|aacskeys}} - オープンソース
 
*{{AUR|aacskeys}} - オープンソース
*{{AUR|dumphd}} - オープンソース
 
 
*{{AUR|makemkv}} - クローズドソース/無料制限ベータ
 
*{{AUR|makemkv}} - クローズドソース/無料制限ベータ
   
  +
* [https://github.com/m4tthi4s/vukextract vukextract] - プロプライエタリの DVDFab を使って VUK を抽出するオープンソースソフトウェア。
 
*[http://www.slysoft.com/en/anydvdhd.html anydvdhd] - 市販ソフトウェア、VM 上の Microsoft OS で動かす必要があります。
 
*[http://www.slysoft.com/en/anydvdhd.html anydvdhd] - 市販ソフトウェア、VM 上の Microsoft OS で動かす必要があります。
  +
*[https://appdb.winehq.org/objectManager.php?sClass=application&iId=2377 DVDFab HD Decrypter] - Windows 用の商用ソフトウェア。[[Wine]] で動作します。

2018年2月27日 (火) 21:48時点における版

関連記事

この記事では Linux ユーザーが合法的に購入した Blu-ray ディスクをコンピューター上で再生する方法を説明しています。Linux で利用可能な公式の Blu-ray プレイヤーのソフトウェアは存在しないため、Linux ユーザーはディスクのコンテンツを保護している DRM を扱えるオープンソースのライブラリを使う必要があります。これは相互運用性が許可している国では合法です。日本では著作権法の改正によって保護技術を回避しての複製は違法になっていますが、再生は問題ありません。

仕組み

Blu-ray DRM

ユニークな暗号化キーが発見されて簡単に突破された DVD の CSS とは対照的に、Blu-ray はより強固な DRM 機構を使っており、それによって難易度が跳ね上がっています。まず、AACS 規格はディスクのコンテンツを保護するために非常に複雑な暗号プロセスを使用しているだけでなく、突破されたキーを無効にすることが可能になっており、新しい BR ディスクを使って新しいキーを配布できるようになっています。次に、Blu-ray はもうひとつの保護レイヤーである BD+ を使うことも可能です。市販のディスクのほとんどは AACS を使っていますが、中にはそれに加えて BD+ も利用しているものも少数ながら存在します。2007年に、AACS システムは解読され、復号キーがインターネットに出回りました。多くの復号化プログラムが利用可能になりましたが、Linux ユーザーにとって重要なのは(合法に購入した)ディスクをコンピューターで再生できるかということです。業界は最初にリークされた復号キーを無効にすることができましたが、イタチごっこのように新しいキーが定期的に公開されています。

AACS

AACS の仕様と復号プロセスは [1] で公開されています。さらに詳細な説明が多数の記事や研究論文でなされています: [2], [3], [4]libaacs は VideoLAN 開発チームによる Advanced Access Content System の仕様を実装するという研究プロジェクトです。オープンソースのライブラリとして配布されています [5]。このプロジェクトでは著作権保護で暗号化されたデータをデコードするのに使うキーや証明書を提供していません。しかしながら、キーのデータベースファイルと組み合わせることで、AACS 規格を使っている Blu-ray ディスクを再生するのに使用することが可能です。このファイルは KEYDB.cfg と呼ばれており、libaccs は ~/.config/aacs からアクセスします。このファイルのフォーマットは [6] から確認できます。

AACS の復号プロセス

ライセンスを受けたプレイヤーによる保護ディスクの AACS 復号化プロセスは4段階に分けて行われています:

  1. ソフトウェアや組み込みプレイヤーの Device Key と、ディスクの Media Key Block (MKB) データを使って "Processing Key" を取得します。さらに (MKB の他のデータと合わせて) それによって Media Key を計算します。
  2. この Media Key と、ドライブの有効な Host Certificate を持つプレイヤーによって取得されたディスクの Volume ID (VID) を使って、Volume Unique Key (VUK) を計算します。
  3. 計算された VUK を使ってディスクの暗号化された Title Key を解読します。
  4. 最後にこの Title Key がディスクの保護されたメディアコンテンツを解読します。

MKB を含んでいるのはディスクだということに注意してください。MKB は最初の Blu-ray が2006年に市販開始された時から更新が行われています。最新の MKB はバージョン 64 ですが、実際はほとんどの MKB は同じキーを共有しています。ソフトウェアプレイヤーは Host Key/Certificate を提供する一方、ドライブは無効にされた Host Key/Certificate のリストを所持しています。(バージョンが新しい MKB を含んだ) 新しいディスクが復号化・再生されたとき、あるいは復号化・再生が試みられたときに Host Key と Certificate の無効化が発生します (ディスクをドライブに入れただけではアップデートは起こりません)。そうなると、ドライブは古い Host Key/Certificate を永遠に使えなくなります。

libaacs を使うことで、復号化プロセスの最後の手順に進み、メディアプレイヤーがディスクを再生できるようになるまでの段階をいくつかスキップすることができます。これは KEYDB.cfg ファイルで以下のどちらか(もしくは両方)を用意することで可能です:

  • (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な (ドライブによって無効にならない) Host Key/Certificate
  • 特定のディスクの有効な VUK

ディスクの MKB バージョンに対応した有効な Processing Key と有効な Host Key/Certificate を libaacs が見つけると、手順2から復号化プロセスが開始されます。ただし、Host Key/Certificate は新しい Blu-ray ディスクによって定期的に無効にされます。一度無効になると、ドライブは新旧両方のディスクが読み込めなくなります。基本的にこれを元に戻すことは不可能で、新しい最新の Host Key/Certificate を用意するしか直す方法はありません (Windows ユーザーの場合、ソフトウェアプレイヤーのアップデートでこれが行われています)。この方法の利点は、Host Key/Certificate が無効にされるまで、Processing Key が判明している MKB バージョンをディスクが使っている限り、libaacs は全てのディスクの VUK を計算することができるということです。現在、MKB バージョン 61 までの Processing Key が計算済みでインターネットから取得できるようになっています。

ありがたいことに、有効な Processing Key がなかったり Host Certificate が無効になっているような場合、libaacs にはディスクを復号する代わりの方法があります: KEYDB.cfg ファイルに有効な VUK を準備することです。これによって libaacs は手順3まで直接飛ぶことができます。Processing Key とは対照的に、VUK はディスクによって異なります。そのためユーザーはサードパーティから VUK を取得する必要があるので、あまり効率的ではありません。しかしながら VUK は無効にされることがないという点では大きく有利です。libaacs は (有効な Host Key/Certificate を使って) 手順2が実行できる場合、手順3で計算した VUK を ~/.cache/aacs/vuk に保存します。同じディスクを二度目に見る時は、libaacs は保存された VUK を再利用できます。そのため作成された VUK はバックアップしておくと良いでしょう。

[7][8] など、様々な場所から VUK を収集する試みがありました。最近では [9] に VUK データベースが存在し 24,000 近くの VUK が公開されていましたが、既に利用できなくなっています。データベースのミラーが [10] など Doom9 のフォーラムに記載されています。

BD+

BD+ は Blu-ray DRM の任意の補助コンポーネントです。2013年12月、VideoLAN は BD+ 復号化の実験的なサポートを提供する待望の libbdplusAUR をリリースしました。ライブラリには BD+ の復号化に必要なキーや証明書が含まれていないので、別個に入手してインストールする必要があります。

ノート: 提供されているファイルは .tar.bz2 アーカイブですが、名前は bdplus-vm0.bz2 となっています。~/.config/bdplusvm0 という名前のフォルダを作成すると良いでしょう。フォルダの名前を bdplus-vm0 としてはいけません。GUI の圧縮ツールを使っている場合はファイルの拡張子を .tar.bz2 に変えてください。

再生

準備

  1. libbluraylibaacs パッケージをインストールしてください。
  2. [11] から KEYDB.cfg ファイルをダウンロードして ~/.config/aacs ディレクトリにコピーしてください。ファイルには PK, HC, VUK データが含まれており、以下で説明している復号化プロセスで必要になります。
  3. 必要であれば (ボリュームがシステムに自動的にマウントされない場合)、ディスクをディレクトリにマウントしてください。例:
    # mount /dev/sr0 /media/blurays

復号化プロセス

VLC など Blu-ray に対応しているソフトウェアプレイヤーを起動して、ディスクを再生してください (VLC ではメディア -> ディスクを開くから、ディスクタブで Blu-ray を選択します。「ディスクメニューなし」にはチェックを入れてください)。ソフトウェアプレイヤーは以下のような復号化プロセスを辿ります:

  1. ユーザーが libbluray と libaacs をサポートしているビデオプレイヤーで Blu-ray の再生を始めます。
  2. BR ディスクが AACS で暗号化されていない場合、4.1 に進みます。
  3. BR ディスクが AACS で暗号化されている場合、libaacs は以下を実行します:
    1. ディスクの有効な VUK が ~/.cache/aacs/vuk/ に存在するか確認します。存在する場合、4.1 に進みます。存在しない場合、次のステップに進みます。
    2. ~/.config/aacs/KEYDB.cfg を読み込みます:
      1. 有効な VUK が存在する場合、4.1 に進みます。存在しない場合、次のステップに進みます。
      2. (ディスクの MKB バージョンに対応している) 有効な Processing Key と有効な Host Key/Certificate が存在する場合、libaacs は VUK を計算します。今後の使用のために VUK は ~/.cache/aacs/vuk に保存されます。その後ステップ 4.1 に進みます。有効な PK/HKC が存在しない場合、ステップ 4.2 に進みます。
  4. 結果
    1. ソフトウェアプレイヤーはディスクのコンテンツを再生することができます。
    2. ソフトウェアプレイヤーはディスクのコンテンツを読み込むことができません。

VUK による復号化 (ステップ 3.1 または 3.2.1)

ディスク固有の VUK を使用する方法はいつでも機能し、無効化されることはありません。Blu-ray ディスクの直近の復号化キーだからです。ただし、VUK はディスク毎に異なるため、VUK リストやデータベースに依存します。VUK は以下のどちらかの方法で入手できます:

  • PK と Host K/C による復号化が上手くいくと、ディスクの VUK が ~/.cache/aacs/vuk に保存されます。
  • 第三者からディスクの VUK を取得する (KEYDB.cfg に指定します)。

たとえディスクの MKB バージョンによって PK と Host Key/Certificate が無効化されても VUK があればディスクを読み込むことができます。VUK が存在しない場合、ソフトウェアプレイヤーは以下の方法を使って復号化を行います。

PK と Host K/C による復号化 (ステップ 3.2.2)

(特定の MBK バージョンまでの) あらゆるディスクを復号化して再生に必要な VUK を計算できる方法です。VUK が判明すると、次の利用のために保存されます。

ノート: 2016年12月現在、最新の市販 Blu-ray ディスクは MKB v64 を搭載しています。MKB v61 から先の PK は判明していないため、新しいディスクではこちらの方法を使うことはできません。

この方法では KEYDB.cfg ファイルの最初にある Processing Key と Host Key/Certificate を使用します。現在、MKB v61 までのディスクを再生できますが、MKB v62 以上のディスクを再生しようとするとドライブによって KEYDB.cfg ファイル内の Host Key/Certificate が無効化されて再生できなくなります。

ディスクの再生が上手くいった場合、libaacs は VUK を ~/.cache/aacs/vuk に保存します。ファイル名はディスク ID になります。VLC は KEYDB.cfg ファイルが使えなくなっても場合、フォルダ内の VUK を再利用するため、将来のためにバックアップすることを推奨します。

BD+ のサポート

libbdplusAUR は BD+ の復号化を実験的にサポートしていますが、上手く行かない場合は makemkvAURDVDFab などの商用アプリケーションを使う必要があります。

BD+ は基本的に動画ストリームにエラーデータを追加することで暗号化を施します。暗号化された状態でも全く視聴できなくなるわけではありませんが、動画に乱れがずっと発生するので見れたものではありません。公式プレイヤーはインターネットからダウンロードしたテーブルを使って、壊れた動画ストリームを正しい動画ストリームに変換します。libbdplus はかなり前から機能しなくなっており、オープンソースのアプリケーションで BD+ で保護されたディスクを再生する方法は現在存在しません。

メディアプレーヤー

以下のメディアプレーヤーは libbluray や libaacs を使って AACS で暗号化された Blu-ray ディスクを再生できます。

MPlayer

MPlayer で Blu-ray を再生する基本の再生コマンドは:

$ mplayer br:///</bluray/mount/dir>

もしくは:

$ mplayer br://<title number> -bluray-device </bluray/mount/dir>
動画が遅れる

おそらく Blu-ray をスムーズに再生するためにハードウェアアクセラレーションやマルチコアの CPU サポートを有効にする必要があります。

nvidia のカードを使っている場合、libvdpau をインストールして mplayer で --hwdec=auto オプションを使ってハードウェアアクセラレーションを有効にしてください。例:

$ mplayer --hwdec=auto br:///</bluray/mount/dir>

マルチコアの CPU サポートを有効にするには --vd-lavc-threads=N オプションを使って下さい。N はコアの数に置き換えて下さい。例:

$ mplayer --vd-lavc-threads=4 br:///</bluray/mount/dir>

詳しくはハードウェアビデオアクセラレーションを見てください。

音声言語が間違っている

# キーを使って再生言語を切り替えることができます。

音声がズレる

mplayer の最初の出力から、その Blu-ray に使用されているコーデックを探す必要があります。"Selected video codec" という行の最後にあります。

H.264 ディスクなら -vc ffh264vdpau オプションを使って下さい。例:

$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir>

VC-1 ディスクなら -vc ffvc1vdpau を使って下さい。例:

$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir>

MPEG ディスクなら -vc ffmpeg12vdpau を使って下さい。例:

$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir>

VLC

バージョン 2.0.0 から、VLC は Blu-ray の再生を実験的にサポートしています。Blu-ray のメニューはまだ使えません (ただし、開発は行われています。libbluray の代わりに libbluray-gitAUR を使ってみてください)。

次のコマンドで再生を開始します:

$ vlc bluray://</bluray/mount/dir>

xine

次のコマンドで再生を開始します:

$ xine bluray://</bluray/mount/dir>

トラブルシューティング

KEYDB.cfg ファイルが存在しない

有効な VUK が ~/.cache/aacs/vuk に存在する場合、libaacs はコンテンツを復号するのに KEYDB.cfg を使う必要はありません。しかしながら、~/.config/aacs/KEYDB.cfg ファイルは必要です(ファイルが空であったとしても)。

無効になった Host Key/Certificate

残念ながら、新しい Blu-ray ディスクを再生しようとするとドライブによって Host Key/Certificate (ライセンスを受けたソフトウェアプレイヤーのキー) が無効になることがあります。無効化されると、aacskeysAUR は次のメッセージを返します:

The given Host Certficate / Private Key has been revoked by your drive.

これは AACS の保護機構に含まれていることです: インターネットにリークされた古いソフトウェアプレイヤーの Host Key は無効にすることができ、新しい市販のディスクのリリースによってリストが配布されます。これは不可逆の措置で、ドライブのフラッシュメモリを書き換えても戻すことはできません。修正する方法はたった2つしか存在しません:

  • KEYDB.cfg の Host Key/Certificate を(まだ)無効になっていないキーに更新する。
  • 上述のとおり各ディスクの VUK を KEYDB.cfg に追加する。VUK が無効にされることはありません。

(mplayer や vlc を使って) ディスクの復号化が成功した場合、libaacs は ~/.cache/aacs/vuk に VUK を保存します。後になって KEYDB.cfg の Host Key/Certificate が無効になっても、VLC は保存された VUK を使うことができます。そのため今後のために ~/.cache/aacs ディレクトリはバックアップすることを推奨します。

aacskeys を使う

aacskeysAUR をインストールしてください。有効な Host Key/Certificate と Processing Key が含まれているディレクトリに移動してから aacskeysAUR を実行してください:

$ aacskeys </bluray/mount/dir>

例:

$ cd /usr/share/aacskeys && aacskeys /media/blurays

必要ならば、BR をキーデータベースに追加することができます: ~/.config/aacs/KEYDB.cfg を編集して以下の形式で aacskeys による情報出力を追加してください:

0x<unit key file hash> = Film Title    | V | 0x<volume unique key>
aacskeys がキーを生成できない場合

wine を使って DumpVID で VolumeID を生成してみて下さい。現在 VolumeID を使うことで aacskeys の VolumeID オプションによって bluray キーを生成できるようになっています。

Usage: aacskeys [options] <mountpath> [volume id / binding nonce]

正しい VUK を使っているのに Blu-ray が再生されない

一部の Blu-ray ドライブは sg モジュールのロードを必要とします:

# modprobe sg

他の有用なソフトウェア

DVD では、libdvdcss パッケージが必要な復号化ライブラリを提供します。以下は Blu-ray/HD-DVD の復号に使えるソフトウェアです:

  • aacskeysAUR - オープンソース
  • makemkvAUR - クローズドソース/無料制限ベータ
  • vukextract - プロプライエタリの DVDFab を使って VUK を抽出するオープンソースソフトウェア。
  • anydvdhd - 市販ソフトウェア、VM 上の Microsoft OS で動かす必要があります。
  • DVDFab HD Decrypter - Windows 用の商用ソフトウェア。Wine で動作します。