概率算法:原理、类型与应用
1. 概率算法概述
在密码学领域,概率算法有着举足轻重的地位。一方面,加密和数字签名方案中所使用的算法常常包含随机选择,例如 Vernam 一次性密码本、DSA 等,这些算法都具有概率性;另一方面,在研究密码方案的安全性时,攻击者通常被建模为概率算法。
确定性算法的输出完全由输入决定。对于确定性算法 A,若输入为 x,其输出 y 是通过程序员预先确定的一系列步骤从 x 计算得出的。每次对相同的输入 x 应用 A,都会得到相同的输出 y,就像一个数学映射。我们可以用数学符号 A : X → Y 来表示确定性算法 A,其中输入来自集合 X,输出在集合 Y 中。常见的确定性算法的形式化模型之一是图灵机,确定性算法由具有确定性状态转移的图灵机来建模,即状态转移完全由输入决定。
而概率算法 A 的行为部分由随机事件控制。对于输入 x,其输出 y 的计算依赖于有限次随机实验的结果。对相同的输入 x 两次应用概率算法 A,可能会得到不同的输出。
2. 抛硬币算法
概率算法具备抛硬币的能力,其控制流程取决于抛硬币的结果,因此表现出随机行为。
2.1 定义
给定输入 x,概率(或随机化)算法 A 在计算输出 y 的过程中可能会有限次抛硬币,下一步的操作可能依赖于之前抛硬币的结果。抛硬币的次数可能取决于之前的结果,但对于给定的输入 x,它受某个常数 tx 的限制。抛硬币是相互独立的,且硬币是公平的,即每一面出现的概率均为 1/2。
2.2 示例
以下是一些概率算法的示例:
- Vernam 一次性密码本、OAEP 和 ElGamal
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



