はじめに
発信者が複数の受信者との通信を行う上での考え方に
「放送暗号(Broadcast encryption)」
というものがあります。
実際、デジタル放送ではテレビ番組は暗号化された状態で送られてきています。
本記事では、そのようなシーンでベースになる放送暗号の考え方について簡単に説明します。
放送暗号
分かりやすい例は、有料番組を放送局から流す場合です。
データとしては全ユーザに垂れ流してしまいますが、その中から有料番組を閲覧する資格があるユーザのみ閲覧できるようにしたいところです。
4ユーザに有料配信をする例
閲覧許可ユーザに同じ鍵を配布する
簡単に思いつくアイデアとして、閲覧資格があるユーザに秘密鍵を配布するものがあります。
A,B,C,DのユーザでA,Cのみに閲覧を許可する場合は以下のように秘密鍵Xを配布します。
秘密鍵Xで暗号化したものを垂れ流せば、秘密鍵Xを持っているユーザのみ復号可能です。
A | 秘密鍵X | 閲覧可能 |
---|---|---|
B | なし | 閲覧不可 |
C | 秘密鍵X | 閲覧可能 |
D | なし | 閲覧不可 |
一方で問題があります。
例えば、Cが解約した場合です。
秘密鍵Xで暗号化したものではCは復号できてしまうため、再度Aにのみ新たな鍵Yを配布する必要が出てきます。
全員に異なる秘密鍵を配布しておく
再配布の手間を考慮し、予め全ユーザに異なる秘密鍵a,b,c,dを配布する案もあります。
この状態で秘密鍵aで暗号化したものと秘密鍵cで暗号化したものとを別々に流せば、対応した鍵を持つユーザのみ閲覧可能です。
A | 秘密鍵a | 閲覧可能 |
---|---|---|
B | 秘密鍵b | 閲覧不可 |
C | 秘密鍵c | 閲覧可能 |
D | 秘密鍵d | 閲覧不可 |
万が一、Cが解約しても、秘密鍵cで暗号化したものを流すのをやめればCは閲覧できなくなります。
このデメリットは、ユーザが増えれば増えるほどに別々にデータを流す必要がある点です。
上で挙げたそれぞれのデメリット
- 解約した場合の鍵の再配布
- ユーザの数に比例したデータ送付
を解決するアイデアが、放送暗号です。
放送暗号
ポイントは、閲覧許可を持つユーザーが暗号化キーを再構築できるための秘密鍵を配布します。
例えば、以下のように鍵を配布したとします。Aはb,c,dという3つの鍵を受け取ります。
A | 秘密鍵b,c,d |
---|---|
B | 秘密鍵a,c,d |
C | 秘密鍵a,b,d |
D | 秘密鍵a,b,c |
ここで、AとCのみに閲覧許可を与えるためにb+dで作成した新たな鍵(BD)で暗号化します。
b+dは、例えばそれぞれの鍵の排他的論理和でもなんでも構いません。
要は、BDを作成できるのはbとdを持つAとCのみなので、該当するユーザのみ閲覧可能です。送るデータも一つだけです。
また、Cが解約した場合は、b+c+dから作成する鍵(BCD)で暗号化します。そうすると、Aしか復号できません。
終わりに
放送暗号と検索すると北朝鮮の乱数放送のページで溢れていたので、本記事では放送暗号の考え方について簡単に説明しました。
また、不正なユーザが閲覧許可のないユーザに鍵を配布すると利用ができてしまう点を防ぐ仕組みとして、裏切り者追跡アルゴリズムというものも似たようなテーマであります。興味があればぜひ調べてみてください。
以上、放送暗号の入門記事でした。