3.4 一次一密

未匹配的标注

一次一密 ( OTP )

一个序列密码称为一次一密,必须满足以下条件:
1.通过真随机数生成器得到密钥序列s_0, s_1, s_2,…;
2.只有合法的通信方才知道密钥序列;
3.每次密钥序列s_i仅使用一次。
一次一密是无条件安全的
证明 OTP 是无条件安全的:
对每个密文位,可得到以下形势的等式:

y_0 = x_0 + s_0\ mod\ 2\\ y_1 = x_1 + s_1\ mod\ 2\\ ·\\ ·\\ ·\\

每个单独的关系都是两个未知数的线性等式模 2,它们是无法求解的。即使攻击者知道了y_0的值(0 或 1),他也无法确定x_0的值。实际上,如果s_0来自于一个真随机源,且值为 0 或 1 的概率都是 50%,则解x_0 = 0x_0 = 1的概率也完全相同。第二个等式以及后面所有的等式情况相同。请注意,如果s_i的值不是真随机数,则情况将完全不同。在那种情况下,x_0, y_0之间会存在一定的函数关系,以上等式也不是完全独立的,即使求解等式系统仍然非常困难,但它却不是可证明安全的。
三个条件的含义:
第一个条件意味着需要一个 TRNG,也意味着需要一个可以生成真随机位的设备,比如基于半导体白噪音的设备。由于标准 PC 没有 TRNG,这个要求可能不是那么容易满足,但肯定也能满足。
第二个条件意味着 Alice 必须将此随机位安全地传给 Bob。
第三个条件可能是最不切合实际的一个:密钥序列不能被重复使用。这意味着每个明文位都需要一个密钥位!因此,一次一密的密钥长度必须和明文长度一样,这也许是 OTP 最大缺点。
正因为这些原因,OTP 在实际中很少使用。但是,它为安全密码提供了很好的设计思想:如果将真随机位与明文进行 XOR 操作,则攻击者肯定无法破解到密文。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~