事故はランダムではありません:疑似ランダム関数(PRF)のファミリーは誰ですか

1984年、Goldreich、Goldwasser、およびMicaliは、疑似ランダム関数の概念を形式化し、長さ2倍の疑似ランダムジェネレーター(PRG)に基づくPRF実装を提案しました。それ以来、疑似ランダム関数は非常に重要な抽象化であることが証明され、メッセージ認証や定理証明などのさまざまな分野でアプリケーションが見つかりました。この記事では、次のことを説明します。





  • ランダム関数(RF)とは





  • 疑似ランダム関数(PRF)とは





  • あなたのこれらの家族は誰ですか?





  • PRF対。PRG





  • ブロック暗号はそれと何の関係がありますか?





ランダム性

すでに名前から、疑似ランダム関数はランダム関数のように「見える」ものであることが明らかになります。さて、私たちの場合のランダム関数は何ですか?まず、我々は長さの0と1の文字列を表示する関数への配慮の私達の範囲を制限するであろうnと同じ長さの0と1の文字列に n、それはあります





\アンダーブレース{1110 ... 0010} _ {n} \右矢印\アンダーブレース{0100 ... 0011} _ {n} \左右矢印\ {0,1 \} ^ n \右矢印\ {0,1 \} ^ n

一般的に、これは省略でき、ある長さの文字列から別の長さの文字列へのマッピングを検討できますが、この場合、寸法の違いに注意する必要があります。次に、マッピングを実行して\ {0,1 \} ^ n \右矢印\ {0,1 \} ^ nそれを示すすべての関数のセットを紹介 \ text {Func} _nます。





. , | {\ text {Func} _n} |  = 2 ^ {n2 ^ n}.





-
\ text {長さの個別の文字列の合計} n \スペース-\スペース2 ^ n。 \ text {保存するには} 2 ^ n \ text {必要な行} n2 ^ n \ text {ビット}\ text {これら} n2 ^ {n} \ text {ビットと目的のマッピングを設定します} 2 ^ n \ text {lines。}\ text {そしてそのようなマッピングの合計があります} 2 ^ {n2 ^ n}。





. – \ text {Func} _n. , 2 ^ n - 2 ^ n. ,





P(f(x)= y_0)= 2 ^ {-n}

f\ text {Func} _n, y_0 – .





, – - , . , .





, :





P(f(x)\ in \ {\ forall y:first \ space bit = 1 \})= \ frac {1} {2}

, :





P(f(x)\ in \ {\ forall y:last \ space bit = 1 \})= \ frac {1} {2}

n :





P(f(x)\ in \ {\ forall y:number \ space zeros = number \ space ones \})= \ frac {1} {2 ^ n} \ begin {pmatrix} n \\ n / 2 \ end {pmatrix}

\ begin {pmatrix} n \\ n / 2 \ end {pmatrix}n n / 2 ( n / 2 n ).





. , , 20 . :





P(A_i(f(x))= 1)

, , \ varepsilon:





| P(A_i(f(x))= 1)-P(A_i(F(x))= 1)|  <\ varepsilon

f(x) – , F(x) – , .





. -, , , ? , . .





F(t、\ varepsilon)-, A , t





| P(A(f(x))= 1)-P(A(F(x))= 1)|  <\ varepsilon

, , , , . , , , F_k :





F_k(x)= F(k、x), , \ {0,1 \} ^ m \回\ {0,1 \} ^ n \右矢印\ {0,1 \} ^ l, F_k . k .





m = l = n.





, k .





\ {0,1 \} ^ n \右矢印\ {0,1 \} ^ n \ text {Func} _n. , F_k \ text {Func} _n.





, , , :





F_k , k D F_k f \ in \ text {Func} _n.





, , . , - . , . , . , - x_0 y_0, , , x_0, y_1 \ neq y_0. , , - , . , . . , , F_k, , k ( ).





PRF vs. PRG

PRG – . , . , PRG – PRF, PRF – PRG. , PRG, . , PRG (), n (seed) m> n. , PRG , PRF , . .





G(k)= F_k(0 ... 0)| F_k(0 ... 1)

| – , PRG PRF. , . , PRF , PRG.





PRF F_k , . , , F_k k. F ^ {-1}(y) .





, . , : , n, F_k, k , , () .





, , AES.





. , .





P.S. . , . , c:





P.P.S. – .





ランダム関数の作成方法-tyk





疑似ランダム関数:30年後-tyk





現代暗号学入門-tyk





疑似ランダム関数とブロック暗号-tyk












All Articles