【问题标题】:How to perform polynomial subtraction and division in galois field如何在伽罗瓦域中进行多项式减法和除法
【发布时间】:2020-02-20 16:21:51
【问题描述】:

在我的加密课程中,我得到了两个多项式,紧凑形式和一个不可约多项式,并被要求在 GF(2^8) 中执行 4 个基本算术运算。完成了加法和乘法,我现在想知道如何处理减法和除法。为方便起见,我们假设输入按位顺序始终为 8 位

1st bit sequence: 11001100
2nd bit sequence: 11110000
irreducible polynomial(fixed): x^8 + x^4 + x^3 + x^1

如何执行减法/除法?

【问题讨论】:

  • 记住:“减法”和“除法”不是单独定义的,它们总是通过引用加法和乘法来定义。也就是说,A "-" B 只是 A+(-B),而 -B 只是您需要 add 到 B 以使其为零的东西。在 GF(2^) 中,那个东西就是 B。这就是为什么 A-B 等于 A+B。类似地,A/B 定义为 A*(1/B),其中 1/B 是您必须 B 才能使其为 1 的东西。但是,没有什么可以乘以 0得到 1。你不能除以零。除法更复杂,@frieu 对计算 1/B 的方法给出了很好的解释。
  • 有关这些算术运算的简单解释,请尝试查看:stackoverflow.com/a/13224531/10763533
  • @PresidentJamesK.Polk,您可能想让您的评论成为答案。很有帮助!

标签: cryptography galois-field


【解决方案1】:

多项式x^8 + x^4 + x^3 + x^1 不是不可约的:x 显然是一个因式!我的赌注是与 x^8 + x^4 + x^3 + x + 1 混淆,这是字典上第一个 8 次不可约多项式。

在我们修正多项式之后,GF(28) 是一个场,其中每个元素都是自己的对立面。这意味着减法与加法相同。

该字段中的乘法 * 减去零形成一组 255 个元素。因此,对于任何非零 B,它都满足 B255 = 1。因此,这种 B 的乘法逆元是 B254

因此,当 B 不为零时,可以将 A / B 计算为 B254 * A。如果除以零得出零,则公式没有特殊情况。

B254 可以通过标准二进制求幂方法(平方和乘法)使用 13 次乘法计算,依次将 B 提升到 2、3、6、7、14、15、30、31 , 62, 63, 126, 127, 254th 次方。此answer on crypto.SE 中的C 代码。可以减少到 11 次乘法,并用 255 次乘法构建一个完整的逆表; Try It Online!.

获得(一个)模逆的其他稍快的方法包括扩展欧几里得 GCD 算法和对数/反对数表,请参阅 other answer on crypto.SE。然而:

  • 当速度成为问题时,我们可以预先制作模逆。
  • 那就更复杂了。
  • 作为 B254 的模逆计算是恒定时间的(在密码学中可用于防止侧信道定时攻击),主要条件是乘法,几乎不可能保证使用其他方法,包括现代硬件和大多数计算机语言上的表格,可能会节省汇编。

【讨论】:

  • 对不起,多项式是x^8+x^4+x^3+x+1,漏掉了最后一个
  • 正如我所说,我得到了一个位序列,比如 11001100 - 我如何将其提高到 255 的幂以得到逆?
  • @Saf:问题提到了“完成加法和乘法”。就像为这些操作一样准备一个输入位串,然后将其提高到 254 次方(不是 255 次方)以获得逆涉及乘法。基本上,准备工作是:从零开始(相当于空位串),输入位串的每一位乘以x(相当于左移),然后添加输入位。如果输入位超过 8 个,您可能希望减少,就像乘法一样。
  • 我可以在这个字段中将两个多项式相乘,那么执行 254 次乘法会是一个优雅的选择吗?
  • @Saf:从 B 开始的 253 次 B 乘法将起作用;但优雅的选项涉及 13 次乘法,交替与前一个结果和 B 相乘(如链接的answer on crypto.SE 中);或按照我解释的方法进行 11 次乘法。
猜你喜欢
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多