SAGE在单元组子群中实现离散对数

时间:2016-10-31 11:35:48

标签: cryptography algebra sage finite-group-theory

这是一个与this相关的问题。简而言之,在具有基础组的ElGammal密码系统中,以质数p I m为模的单元组被告知找到索引2的子组以解决离散对数问题以便破坏系统。

显然,由于以质数为模的单位组是循环的,如果x是生成器,则x ^ 2生成索引2的子组。现在,什么是解决sage上的离散对数问题的好方法?如何在该子组中使用求解离散对数问题的结果来解决整个群体中的问题?

1 个答案:

答案 0 :(得分:3)

Sage知道如何计算有限域中的离散对数:

sage: K = GF(19)
sage: z = K.primitive_element()
sage: a = K.random_element()
sage: b = a.log(z)
sage: z^b == a
True

您可以使用此功能来解决索引2的子组中的离散对数

sage: x = z^2
sage: a = K.random_element()^2
sage: a.log(x)
6

这只是一个玩具示例,但请注意,这并不比解决全组中的离散对数更有效。

通用算法(例如,Baby step-Giant step,Pollard rho,......)的效率确实与子组的大小直接相关;然而,用于求解有限域(数域筛,函数场筛)中的离散对数的算法对乘法子群的大小几乎不敏感,并且通常比通用算法更有效。