Kecelakaan tidak acak: siapa keluarga dari fungsi pseudo-random (PRFs)

Pada tahun 1984, Goldreich, Goldwasser, dan Micali meresmikan konsep fungsi pseudo-random dan mengusulkan implementasi PRF berdasarkan generator pseudo-random penggandaan panjang (PRG). Sejak itu, fungsi pseudo-random telah terbukti menjadi abstraksi yang sangat penting yang telah menemukan aplikasi di berbagai bidang, seperti otentikasi pesan dan pembuktian teorema. Dalam artikel ini saya akan membahas:





  • Apa itu fungsi acak (RF)





  • Apa itu fungsi pseudo-random (PRF)





  • Siapa keluargamu ini?





  • PRF vs. PRG





  • Apa hubungannya block cipher dengan itu?





Keserampangan

Dari namanya sudah jelas bahwa fungsi pseudo-random adalah sesuatu yang "terlihat" seperti fungsi acak. Nah, apa fungsi acak dalam kasus kita? Untuk memulainya, kami akan membatasi ruang lingkup pertimbangan kami ke fungsi yang menampilkan string nol dan satu dengan panjang nstring nol dan satu dengan panjang yang sama n, yaitu





\ underbrace {1110 ... 0010} _ {n} \ rightarrow \ underbrace {0100 ... 0011} _ {n} \ Leftrightarrow \ {0,1 \} ^ n \ rightarrow \ {0,1 \} ^ n

Secara umum, hal ini dapat dihindari dan kita dapat mempertimbangkan pemetaan string dari satu panjang ke string dengan panjang lain, tetapi dalam hal ini kita harus memperhatikan perbedaan dalam dimensi. Selanjutnya, kami memperkenalkan himpunan semua fungsi yang melakukan pemetaan \ {0,1 \} ^ n \ sisi kanan \ {0,1 \} ^ ndan menunjukkannya \ text {Func} _n.





Pertimbangkan kardinalitas himpunan ini. Jelas sekali | {\ teks {Func} _n} |  = 2 ^ {n2 ^ n}.





-
\ text {Total panjang string berbeda} n \ spasi - \ spasi 2 ^ n. \ text {Untuk menyimpan} 2 ^ n \ text {baris yang Anda butuhkan} n2 ^ n \ text {bits.}\ text {Ini} n2 ^ {n} \ text {bit dan akan menyetel pemetaan yang diinginkan} 2 ^ n \ text {baris.}\ text {Dan akan ada total pemetaan seperti itu} 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 zero = 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)-, SEBUAH , t





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

, , , , . , , , F_k :





– F_k (x) = F (k, x), , \ {0,1 \} ^ m \ times \ {0,1 \} ^ n \ sisi kanan \ {0,1 \} ^ l, F_k . k .





m = l = n.





, k .





\ {0,1 \} ^ n \ sisi kanan \ {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. – .





Bagaimana Membangun Fungsi Acak - tyk





Fungsi Pseudorandom: Tiga Dekade Kemudian - tyk





Pengantar Kriptografi Modern - tyk





Fungsi Pseudorandom dan Blok Cipher - tyk












All Articles