1. 核心定义
离散对数是实数对数在模运算环境下的推广。建立离散对数的前提是模 必须存在原根。
- 定义:设 是模 的一个 原根,对于任意与 互素的整数 (即 ),满足以下同余式的唯一整数 : 称为以 为底 的 离散对数(或指标,Index)。
- 记号:通常记为 或 。
2. 运算性质 (算术规则)
离散对数完美继承了普通对数“将乘法变加法”的特性,但要注意运算是在 模 的加法群中进行的。
- 特殊值:
- 乘积变和:
- 幂次变乘积:
- 换底公式:若 也是原根,则
注意
指数形式 mod(),对数形式 mod()
进行变形时,需要注意 mod 的增根、少根,代回验证。
3. 重要关联:指数与离散对数
元素 的 指数(Order,即阶)可以通过其离散对数直接计算: 意义:这告诉我们,一个元素的阶取决于它的离散对数与群阶 的最大公约数。
类比
想象一个圆形跑道,全长 米。
- 原根 :每次跳 1米。它需要跳 次才能回到起点(转一圈)。
- 元素 :每次跳 米( 就是离散对数)。
问题: 需要跳多少次()才能回到起点?
- 如果 每次跳的距离 能整除跑道长度 ,那么它只需要跳 次。
- 如果 不能整除跑道长度,它可能需要多跑几圈才能恰好落在起点。
- 公式含义: 代表了 的步长 与跑道总长 的“公共节奏”。去除这个公共部分后,剩下的就是 需要跳的次数。
4. 离散对数问题 (DLP)
这是密码学关注的核心。
- 正向计算(易):给定 ,计算 。这是模幂运算,使用“平方-乘”算法可以非常快地算出。
- 逆向计算(难):给定 ,求 使得 。这就是 离散对数问题 (Discrete Logarithm Problem, DLP)。
- 当 是大素数时,目前没有已知的高效多项式时间算法能解出 。
5. 典型应用
利用 DLP 的困难性构建的密码体制:
- Diffie-Hellman 密钥交换:允许双方在公开信道协商出共享密钥 ,攻击者截获 和 无法推算出 。
- ElGamal 加密/签名:安全性直接依赖于在有限域上求解离散对数的难度。
- DSA (Digital Signature Algorithm):美国国家标准数字签名算法,基于 DLP 变体。
计算示例
模数 ,原根选 ()。
- 建立表(部分):
- 利用性质计算:求 。 已知 。
- (威尔逊定理/原根性质)。
- 我们需要知道 。假设已知 (因为 )。
- 。
- 验证:。正确。