非正式地,一个函数 是一个单向函数,如果
1. 的描述是公开的,并且其操作不需要任何秘密信息。
2. 给定 ,很容易计算
。
3. 给定 ,在
的范围内,很难找到一个
使得
。更准确地说,任何解决 P 问题 的有效算法以可忽略的概率成功反转
。
单向函数的存在性尚未被证明。如果为真,则意味着 。因此,它将回答 复杂性理论 NP 问题,即所有表面上的 NP 问题是否实际上是 P 问题。然而,许多推测的单向函数在商业和工业中被常规使用。例如,推测(但未证明)以下是单向函数:
1. 因子分解问题:,对于随机选择的素数
。
2. 离散对数问题
对于 为
的生成元,其中
为某个素数。
3. 离散根提取问题:,对于
在
中,
在
中且与
互素,以及
为素数。 这是通常被称为 RSA 加密 的函数。
4. 子集和问题:,对于
,以及
-bit 整数
。
5. 二次剩余 问题。