ライブ配信のキーローテーション

コンテンツキーの変更頻度、視聴者数、そして各プレイヤーの再生位置がライブエッジからどの程度分散しているかを設定してください。このページでは、キーがプレイヤーに渡る3つの方式それぞれについて、キーの総数と発生するライセンス要求の回数、そしてキー変更時にライセンスサーバーが受ける負荷を計算します。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — ライブ配信のキーローテーション

コンテンツキーとは、メディアを暗号化するAESキーのことです。プレイヤーは、そのデバイス専用に発行されたライセンスの中にキーを含めてライセンスサーバーから受け取ります。ライブ配信中、暗号化期間ごとにコンテンツキーを入れ替える仕組みをキーローテーションと呼び、プレイヤーはその都度新しいキーを必要とします。一方、キー階層ではライセンス内にルートキーが含まれます。このときコンテンツキーはリーフキーと呼ばれ、ストリーム自体の中に埋め込まれて届き、ルートキーと組み合わせた場合のみ使用できます。

各記号の意味

T
暗号化期間。一つのコンテンツキーが使用される時間(秒)
N
同時に視聴している人数
w
再生位置がライブエッジからどの程度分散しているか。全員がキーの境界を越える時間の幅を意味する
R
キー階層において、一つのルートキーが有効な時間(時間)
前提
境界ごとに視聴者一人あたり1回のライセンス要求が行われ、その中に期間中のすべてのキーが含まれていること、そして全員が配信の最初から最後まで視聴し続けることを前提としています。変更時に要求する場合、要求は境界後のw秒間に均等に分散し、事前取得する場合は期間全体に均均に分散すると仮定します。実際のアクセスはこれらの平均値の前後で波打ち、サーバーはそれを吸収する余裕を持たせて設計されます。したがって、ここでのピーク値はサーバーが耐えるべき最低限の基準となります。なお、視聴者の途中参加や退出、要求失敗時の再試行、および各プレイヤーが再生開始時に取得する最初のライセンスについては除外しています。
成り立たない場合
流出したキーがデバイス自身のキーである場合、話は変わります。ローテーションは一つのコンテンツキーの被害を限定し、階層は一つのルートキーの被害を限定します。しかし、デバイスキーが抽出されてしまったプレイヤーは、サービスが発行するすべてのキーを要求し、解読し続けることができます。こうなると暗号化期間は意味をなしません。そのデバイスへのライセンス発行を拒否するか、拒否すべきライセンスサーバーが存在しない場合は、デバイスを取り消す(無効化する)必要があります。デバイス失効のページで計算しているのはまさにこの点です。

262,800個のキーは簡単な部分にすぎない 🖖

1年間、2分間隔を押してください。1年は31,536,000秒です。120秒ごとにキーを変更すれば262,800個のコンテンツキーが生成され、1キーあたり16バイトとすれば1年分のキーデータは4.20 MBになります。これによってキーストアが圧迫されることはありません。この数字が真に示しているのは、すべての視聴者が発行しなければならない要求の数です。各視聴者から262,800回のライセンス要求が寄せられ、100万人の視聴者全体では2.628×10¹¹回に達します。配信が続く限り、平均して毎秒8,333回の負荷がかかる計算です。次に、4つの暗号化トラックを押してください。音声と3つの画質がそれぞれ独立したキーで暗号化されます。DASH-IFのキー交換フォーマットでも、ストリームに複数のキーを含める理由としてSD、HD、UHDの個別暗号化を挙げています。キーの数は1,051,200個に増えますが、一つのライセンスで4つすべてを送信できるため要求数は変わりません。

ピークを決めるのはキー変更の頻度ではなく、プレイヤーが要求するタイミングである 🖖

2分周期で1年間を選んだまま、リクエストのグラフを見てください。各プレーヤーは境界を越えた瞬間に新しいキーIDに出会い、そこでキーを要求します。再生位置が10秒間に分散していても、その10秒間に100万件のリクエストが集中します。秒間100,000件、平均の12.0倍です。DASH-IFのガイドラインも、まさにこの方式について「すべてのプレーヤーが同時にライセンスを要求する」と指摘しています。事前取得を押してください。同じリクエストを一つ前の期間内のランダムな時点で送ると、秒間8,333件に分散し、壁のような集中は消えます。表の下のラダー図が示すとおり、キーのローテーションが10秒ごとでも一日一回でも、切り替え時のピークは秒間100,000件で変わりません。周期を短くして増えるのはピークの回数だけです。10秒周期なら一日8,640回、2分周期なら720回で、高さは変わりません。

キー階層は要求数と被害範囲を等価で交換する 🖖

キー階層を押してください。1日1回取得されるルートライセンスが、メディアセグメント内に届く2分間隔のリーフキーを順次解除します。視聴者の年間要求数は262,800回から365回へと、720分の1に減少します。DASH-IFではこの構成を「ライセンス要求が1日に1回のみ実行されるシナリオ」と説明しています。その代償は最後の行に表れています。一つのコンテンツキーの流出では暗号化された2分間が解読されるのに対し、一つのルートキーの流出ではルートが変更されるまでのすべてのリーフキー、つまり24時間分(720期間)のストリームが解読されてしまいます。ライセンスサーバーへの要求を減らした係数が、そのまま流出時の被害に上乗せされています。どちらもルートキーの有効期間を暗号化期間で割った値だからです。また、ルートライセンスを事前取得しない限り、ルートキー変更時には依然として毎秒100,000という要求の壁が立ちはだかります(頻度は720回から1日1回に減りますが)。これらを導入しても、個々のキーの解読が困難になるわけではありません。同じガイドラインでも、コンテンツキーの変更について「コンテンツ保護の暗号論的な安全性を高めるものではない」と断言しています。

全プロセスの詳細解説

  1. 1台のライセンスサーバーで決勝戦を捌けるか? 4 ステップ

    暗号化期間はどこまで短くできるか? カップ戦の決勝を押してください。視聴者は3,000,000人。2分間隔のキーローテーションと事前取得方式により、毎秒25,000の要求が発生します。ここでライセンスサーバーの処理能力は20,000であるとします。事前取得方式でこのサーバーが耐え得る最短の暗号化期間、変更時に要求した場合にサーバーにかかる負荷、そして1日有効なルートキーを事前取得した場合の代償を求めてください。

    この問題をツールで開く

    1. 事前取得の場合、すべての視聴者が1期間に1回要求し、その要求は期間全体に均等に分散します。そのため負荷はN/Tとなり、これがサーバーの処理能力である20,000以下に収まらなければなりません。

    2. 2分間隔の場合、負荷は処理能力の1.25倍に達します。代わりにTについて解くと、150秒以上である必要があるとわかります。

    3. 変更時に要求する場合、再生位置が分散している10秒間に全視聴者が要求を行います。つまりすべての境界において毎秒300,000となり、処理能力の15倍に達します。N/wの式にTは含まれないため、暗号化期間をどう調整しても解決しません。解決策はただ一つ、再生位置を150秒間に分散させることだけです。

    4. 1日有効なルートライセンスを前日のランダムなタイミングで事前取得する階層構造の場合、発生するのはルートキーの要求のみです。つまり、1日(86,400秒)の間にN回の要求となります。

    解答

    事前取得で最低150秒、変更時の要求で毎秒300,000、1日有効なルートの事前取得で毎秒34.72。 コンテンツキーを一つずつ配布する方式では、どちらを選んでも2分間隔のローテーションをこのサーバーで処理することはできず、2分半であっても全く余裕がありません。階層構造にすれば576倍の余裕が生まれますが、その代償は3つ目の洞察で述べた通りです。一つのルートキーが流出しただけで、決勝戦の1日分が丸ごと解読されてしまいます。

参考文献 (2)