安全的伪随机数生成器界说

打印 上一主题 下一主题

主题 851|帖子 851|积分 2553

伪随机生成器的安全界说

伪随机数的统计测试

Let G:                                        K                            →                            {                            0                            ,                            1                                       }                               n                                            K \rightarrow \{0,1\}^n                     K→{0,1}n
具有密钥空间K,并输出                                   n                              n                  n位伪随机数
                                         [                            k                                       ←                                           r                                                 K                            ,                            o                            u                            t                            p                            u                            t                            G                            (                            k                            )                            ]                                  [k \xleftarrow{r} K, output G(k)]                     [kr             ​K,outputG(k)]
r 表示从聚集K中均匀选择,要证明这种伪随机字符串的分布与真正均匀的分布,是不可区分的。换句话说,如果我们只是在0到1的N次方中选择,n个字符串,并简单输出这个字符r。均匀分布可以随机输出这些字符串中的恣意一个,这就是均匀分布的界说。种子空间非常小,以是可能的输出聚集也非常的小。在                                    {                         0                         ,                         1                         }                              \{0,1\}                  {0,1}N位中非常小。这就是这个生成器所能输出的全部。为了界说这种随机不可区分的概念,须要举行Statical Test,设定一个算法 A(x) 输出 0或1。0的意思黑白随机的,1的意思是随机的。

  •                                         A                            (                            x                            )                            =                            1                                  A(x) = 1                     A(x)=1,当且仅当:                                         ∣                                  |                     ∣#                                        0                            (                            x                            )                                  0(x)                     0(x) - #                                        1                            (                            x                            )                            ∣                                  1(x)|                     1(x)∣                                         ≤                                  \leq                     ≤                                         10                                       n                                            10\sqrt{n}                     10n             ​ ,我们就说字符串                                        x                                  x                     x是随机的,否则不随机。
  •                                         A                            (                            x                            )                            =                            1                                  A(x) = 1                     A(x)=1,当且仅当:                                         ∣                                  |                     ∣#                                        00                            (                            x                            )                                  00(x)                     00(x) -                                                    n                               4                                            \frac{n}{4}                     4n​                                         ∣                                  |                     ∣                                         ≤                                  \leq                     ≤                                         10                                       n                                            10\sqrt{n}                     10n             ​,我们说字符串                                        x                                  x                     x是随机的,否则不随机。
  •                                         A                            (                            x                            )                            =                            1                                  A(x) = 1                     A(x)=1,当且仅当:                                        m                            a                            x                            −                            r                            u                            n                            −                            o                            f                            −                            0                            (                            x                            )                                  max-run-of-0(x)                     max−run−of−0(x)                                         ≤                                  \leq                     ≤                                         10                            l                            o                                       g                               2                                      n                                  10log_{2}n                     10log2​n,则字符串                                        x                                  x                     x是随机的。                                        m                            a                            x                            −                            r                            u                            n                            −                            o                            f                            −                            0                            (                            x                            )                                  max-run-of-0(x)                     max−run−of−0(x)是指字符串                                        x                                  x                     x中最长的零序列。
    除外,另有很多其他的统计测试,当通过了这些测试后,就会说这是一个好的生成器。
如何判定一个统计测试是好还是坏呢?

Advantage
Let                                    G                         :                         K                                   →                                                              {                         0                         ,                         1                                   }                            n                                       G:K \xrightarrow{} \{0,1\}^n                  G:K            ​{0,1}n 作为伪随机数生成器,                                   A                              A                  A作为在                                   {                         0                         ,                         1                                   }                            n                                       \{0,1\}^n                  {0,1}n范围内的统计测试。
                                    A                         d                                   v                                       P                               R                               G                                            [                         A                         ,                         G                         ]                         =                         ∣                         P                         r                         [                         A                         (                         G                         (                         k                         )                         )                         =                         1                         ]                         −                         P                         r                         [                         A                         (                         r                         )                         =                         1                         ]                         ∣                         ∈                         [                         0                         ,                         1                         ]                              Adv_{PRG}[A,G]=|Pr[A(G(k))=1]-Pr[A(r)=1]|\in[0,1]                  AdvPRG​[A,G]=∣Pr[A(G(k))=1]−Pr[A(r)=1]∣∈[0,1]
(                                   k                                   ←                                       r                                            K                              k \xleftarrow{r} K                  kr            ​K,                                   r                                   ←                                       R                                            {                         0                         ,                         1                                   }                            n                                       r \xleftarrow{R} \{0,1\}^n                  rR            ​{0,1}n,k是从种子空间均匀选择的)
                                    A                         d                         v                              Adv                  Adv close to 1,则                                   A                              A                  A 可以区分出G和random。                                   A                         d                         v                              Adv                  Adv close to 0,则                                   A                              A                  A 不可以区分出G和random。
假设我们有一个生成器G
                                         K                            →                            {                            0                            ,                            1                                       }                               n                                            K \rightarrow \{0,1\}^n                     K→{0,1}n for 2/3 keys in K,满足
                                         m                            s                            b                            (                            G                            (                            k                            )                            )                            =                            1                                  msb(G(k)) = 1                     msb(G(k))=1对于三分之二的秘钥,生成器输出的第一位恰好是1。如果我以三分之二的概率选择一个随机秘钥,生成器将输出1作为它的第一位。
可以界说                                    A                         (                         x                         )                              A(x)                  A(x):
if [msb(x)=1] output “1” else output “0”
如果给我的字符串最高位有用位是1,将认为是“1”(随机的),否则是“0”(不随机的)。那么这个测试A对于生成器G的上风是什么?
                                         A                            d                                       v                                           P                                  R                                  G                                                 [                            A                            ,                            G                            ]                            =                            ∣                            P                            r                            [                            A                            (                            G                            (                            k                            )                            )                            =                            1                            ]                            −                            P                            r                            [                            A                            (                            r                            )                            =                            1                            ]                            ∣                            =                            ?                                  Adv_{PRG}[A,G]=|Pr[A(G(k))=1]-Pr[A(r)=1]| = ?                     AdvPRG​[A,G]=∣Pr[A(G(k))=1]−Pr[A(r)=1]∣=?
假设我们给一个伪随机输入,则根据G的界说,会有2/3的概率输出1。对于一个随机字符串而言,恰好会有一半的概率在最高位是1,在这种情况下,最高位输出1的概率是1/2。以是该式等价于:                                             2                            3                                  −                                   1                            2                                  =                                   1                            6                                       \frac{2}{3}-\frac{1}{2}=\frac{1}{6}                  32​−21​=61​。这是个一个相对大的数字,意味着A能够区分伪随机数和真正的随机数,称为:A breaks G with the advantage 1/6。意味着这个生成器G欠好,有题目。
什么是安全的伪随机生成器呢?

Def: We say that G:                                   K                         →                         {                         0                         ,                         1                                   }                            n                                       K \rightarrow \{0,1\}^n                  K→{0,1}n is a secure PRG if 对于全部efficiency的统计测试A,A对于G的Adv基本可以忽略,即非常靠近于0。如果我们要求全部的统计测试,无论它们是否有用,都无法将伪随机和真正随机区分,现实上是无法满足的。
我们可否构建一个生成器,然后证明现实上它是一个安全的伪随机数?

即证明没有高效的统计测试能够区分它的输出和真正的随机数。结果是不行的,事实上是否存在可证明安全的伪随机数生成器是未知的。原因是,如果你能够证明,某个生成器是安全的,现实上意味着P不便是NP。如果你能够证明P便是NP,很容易能证明不存在安全的伪随机生成器。如果你能证明某个特定的伪随机数生成器是安全的,意味着P不便是NP。
一个安全的伪随机生成器必然是不可预测的

给定生成器输出一个前缀,不可能预测出下一位。
如果PRG是可预测的,则PRG是不安全的,必然可以区分出伪随机和真实随机。
Suppose A is an efficient algorithm:
                                    P                         r                         [                         A                         (                         G                         (                         k                         )                                   ∣                                       1                               ,                               2                               ,                               .                               .                               .                               ,                               i                                            )                         =                         G                         (                         k                         )                                   ∣                                       i                               +                               1                                            ]                         =                              Pr[A(G(k)|_{1,2,...,i})=G(k)|_{i+1}]=                  Pr[A(G(k)∣1,2,...,i​)=G(k)∣i+1​]=                                              1                            2                                  +                         ε                              \frac{1}{2}+ε                  21​+ε
k是从秘钥空间随机选取的。                                   ε                         =                         1                         /                         1000                              ε =1/1000                  ε=1/1000 已是一个伤害的预测器了。
Define statistical test B as:
                                    B                         (                         x                         )                         =                         1                              B(x) = 1                  B(x)=1 ,当且仅当                                    A                         (                         x                                   ∣                                       1                               ,                               2                               ,                               .                               .                               .                               ,                               i                                            )                         =                                   x                                       i                               +                               1                                                 A(x|_{1,2,...,i}) = x_{i+1}                  A(x∣1,2,...,i​)=xi+1​,否则输出0。
                                    r                                   ←                                       R                                            {                         0                         ,                         1                                   }                            n                                       r \xleftarrow{R} \{0,1\}^n                  rR            ​{0,1}n,                                   P                         r                         [                         B                         (                         r                         )                         =                         1                         ]                         =                                   1                            2                                       Pr[B(r)=1]=\frac{1}{2}                  Pr[B(r)=1]=21​
                                    k                                   ←                                       R                                            K                              k \xleftarrow{R} K                  kR            ​K,                                   P                         r                         [                         B                         (                         G                         (                         k                         )                         )                         =                         1                         ]                         >                                   1                            2                                  +                         ε                              Pr[B(G(k))=1]>\frac{1}{2}+ε                  Pr[B(G(k))=1]>21​+ε
可以得到                                   A                         d                                   v                                       P                               R                               G                                            [                         B                         ,                         G                         ]                         >                         ε                              Adv_{PRG}[B,G] > ε                  AdvPRG​[B,G]>ε
即:如果算法A能够以                                   ε                              ε                  ε的上风预测下一位,那么算法B能够以                                   ε                              ε                  ε的上风区分生成器的输出。
A是一个好的生成器,B就是一个能打破生成器的统计测试。
G如果是一个安全的生成器,那么就不存在好的统计测试。
Thm(Yao’82) an unpredictable PRG is secure
如果存在i属于{0,1,…,n-1} PRG G无法预测第i位的数值,那么G就是一个安全的PRG。
More Generally

P1、P2 是                                   {                         0                         ,                         1                                   }                            n                                       \{0,1\}^n                  {0,1}n的两个分布,P1 和 P2在计算上是不可区分的,写作:                                    P                         1                              P1                  P1                                              ≈                            P                                       ≈_{P}                  ≈P​                                    P                         2                              P2                  P2
对于全部的有用的统计测试:                                   ∣                              |                  ∣                                    P                                   r                                       x                               ←                               P                               1                                            [                         A                         (                         x                         )                         =                         1                         ]                              Pr_{x \leftarrow P1} [A(x)=1]                  Prx←P1​[A(x)=1] -                                    P                                   r                                       x                               ←                               P                               2                                            [                         A                         (                         x                         )                         =                         1                         ]                              Pr_{x \leftarrow P2} [A(x)=1]                  Prx←P2​[A(x)=1]                                    ∣                              |                  ∣ 可以忽略不计
就说着这两个分布在计算上不可区分。
a PRG is secure if                                         [                            k                                       ←                                           R                                                 K                            ,                            G                            (                            k                            )                            ]                                       ≈                               P                                      u                            n                            i                            f                            o                            r                            m                            (                            {                            0                            ,                            1                                       }                               n                                      )                                  [k \xleftarrow{R} K, G(k)] ≈_{P} uniform(\{0,1\}^n)                     [kR             ​K,G(k)]≈P​uniform({0,1}n)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表