Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- m/n暗号
- ・中央サーバは存在しない
- ・自分一人だけで復号できては困る
- ・自分の知らないパスワードがなければならない
- ・友人パスワードは任意の個数発行できる。発行した後は変えられない。
- ・友人パスワードのうち、復号に必要な数は最初に設定する。
- - 5人分パスワードを発行して、そのうち3人のパスワードが必要であるようにしたい
- ・復号化の時、友人は自分にパスワードを見せてくれるのではなく、自分が提示した(任意の?)文をそのパスワードでハッシュ化したものを返す。その任意の文と生成されたハッシュを用いて、鍵とする。
- ・友人は自分にパスワードを見せる必要がない。
- 例)
- アルゴリズム作成に必要なもの: 自分のパスワード(p[-1])、パスワードを発行する人数(0≤n)、復号化に最低限必要な人数(0≤m≤n) -> n個のパスワードが生成される(p[0],...,p[n-1])、使い捨てシード(同じアルゴリズムを2つ生成しないようにするため)
- 暗号化に必要なもの: 自分のパスワード(p[-1])
- 復号化に必要なもの: 自分のパスワード(p[-1])、任意のm個の文(s[0],s[1],...,s[m-1])、n人のうち誰でもいいので最低m人のパスワード(p[i_0],...,p[i_m-1])を用いてそれらをハッシュ化した文(h(p[i_0], s[0]),...,h(p[i_m-1], s[m-1]))。
- 擬似的に、中央サーバを使って実現できる。
- サーバはまず、n,mをうけとる。また、全てのパスワードを保持しておく。
- 暗号化: p[-1]が正しければ平文を受け取り保存する。
- 復号化: p[-1]が正しいか確かめる。文とパスワードによるハッシュが正しいかどうか、全てのパスワードについて調べ、そのうち少なくともm個合致していれば平文を送信する。
- 問題:
- 任意のn,mについて上を成立させるアルゴリズムを作れ。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement