一方向性関数
出典: フリー百科事典『ウィキペディア(Wikipedia)』
一方向性関数(いちほうこうせいかんすう, oneway function)とは、簡単に計算できるが逆関数の計算は非常に困難である関数の事。暗号理論の概念。素因数分解問題の困難性を用いたものが代表的。 以下特に断りがなければ、単に「多項式時間アルゴリズム」といったら平均多項式時間確率アルゴリズムを指すものとする。
目次 |
[編集] 厳密な定義
で自然数の集合を現す。 Σ = {0, 1} とし、
とする。
関数 が以下を満たす時、関数 f は一方向性関数であるという:
- f は多項式時間で計算可能。すなわちある多項式時間アルゴリズム C があって C(x) = f(x)
- 任意の多項式時間アルゴリズム A に対し、ある negligible な関数 ν とある
が存在して、全ての k > k0 に対し、
。
[編集] 一方向性関数の存在性
現在のところ、一方向性関数の存在性は証明されていない。 (一方向性関数の存在性が示せれば、P≠NP が系として従う)。 しかし、一方向性関数の候補となる関数はいくつか知られている。 一方向性関数が本当に存在するのかどうかは誰も分からないものの、 暗号理論では一方向性関数の存在性を仮定して議論を進める。
[編集] 一方向性関数族
I を Σ* の部分集合とし、 D = {Dn}n ∈ I、R = {Rn}n ∈ I を Σ* の部分集合の族とする。 G1、G2 を多項式時間アルゴリズムとし、 F = {fk: Dk → Rk} を関数の族とする。 組 (D, R, G1, G2, F) が以下を満たすとき、(D, R, G1, G2, F) を一方向性関数族という:
- G1 は 1k を入力すると n ∈ I∩Σk を出力するアルゴリズム。
- G2 は n ∈ I を入力すると x ∈ Dn を出力するアルゴリズム。
- ある多項式時間アルゴリズム C があって C(x, n) = fn(x)。
- 任意の多項式時間アルゴリズム A に対し、ある negligible な関数 ν とある k0 ∈
が存在して、全ての k > k0 に対し、Pr[x ← A(n, y) | n ← G1(1k), x ← G2(n), y ← f(x)] < ν(l)。
一方向性関数が存在する事は一方向性関数族が存在する事の必要十分条件である事が知られている。
[編集] 弱一方向性関数
関数 f: Σ* → Σ* が以下を満たす時、関数 f は弱一方向性関数であるという:
- f は多項式時間で計算可能。
- ある多項式 P が存在し、任意の多項式時間アルゴリズム A に対し、ある k0 が存在し、全ての k0 > 0 に対し、Pr[z≠f(x) | x ←R Σk, y ← f(x), z ← A(1k, y)] > 1/P(k)。
定理 一方向性関数が存在する必要十分条件は弱一方向性関数が存在する事である。
証明の概略(⇒)自明。
(⇐)f を弱一方向性関数とする。g を g(x1 || … || xN) = f(x1) || … || f(xN) と定義する。ただしここで「||」はビット列の連接、N = 2kP(k)。(P は弱一方向性関数の定義の条件 2 にあるもの)。 この時 g-1 を求めるには、f -1 を N 回計算しなければならない。
どのようなアルゴリズムを用いても f -1 を計算するには 1/P(k) ステップかかるので、f -1 を N 回計算するのは多項式時間ではできない。□
[編集] non uniform な一方向性関数
関数 f: Σ* → Σ* が以下を満たす時、関数 f は non uniform な一方向性関数であるという:
- f は多項式時間で計算可能。
- 任意の多項式時間サイズの回路族 A = {Ak} に対し、ある negligible な関数 ν が存在して、Pr[x ← Ak(y) | x ←R Σk, y ← f(x)] < ν(l)。
多項式時間アルゴリズムは多項式時間サイズの回路族で表す事ができるので、non uniform な一方向性関数は必ず一方向性関数である。しかし逆はよく分かっていない。
[編集] 一方向性関数の候補
集合 {(p, q) ∈ 2 | p, q は素数で、p のビット数 = q のビット数} から自然数の集合
への写像 (p, q)
pq は一方向性関数であると予想されている。
[編集] 必要十分条件
以下は全て同値である。
[編集] 関連項目
カテゴリ: 数学関連のスタブ項目 | 暗号技術 | 関数