多项式(Polynomials)
多项式对我们而言并不陌生,从中学的一次、二次函数到大学线性代数里的次多项式,它在代数学里具有重要的作用。而在本节,我们将尝试将多项式应用于模运算及密码学的应用中,探讨如何应用其性质构造秘钥共享。
- 首先我们回顾一下多项式的形式:,其中为变量,为系数(均为实数),为多项式的次数(degree)。
- 定义多项式的根满足:(即函数图像与轴的交点坐标)
- 下面给出两个关于多项式的重要性质:
- 任意次非零多项式至多有个根。
- 给定个点,其中所有点的坐标互不相同,那么就有且仅有一个次多项式满足。
多项式插值(Polynomial Interpolation)
- 那么,如何从已知的个点推出次多项式的表达式呢?这里就要用到一种插值的方法:拉格朗日插值。
- 它的原理本质与中国剩余定理比较相似:即构造一系列项的和,对于每个项,当代入某个点时值为,而代入时值为。
- 具体而言,我们可以构造以下基项:
那么多项式就可以表示为:
- 举个简单的例子:假设多项式函数过点,那么各个可如下计算:
- 所以多项式为
- 可以验证其满足经过这三个点。
性质2的证明
- 前面我们已经证明了存在性,下面就来证明其唯一性。
- 假设除了,还有另一个不同的多项式满足经过这个点。则考察:因为与均为次多项式,所以的次数也至多为,那么由性质1(后面会证明),至多有个根。而又因为在个点上均成立,故应该有个根,产生矛盾。所以只能。
多项式除法(Polynomial Division)
- 在对性质1进行证明之前,先简要说明下多项式除法。
- 多项式除法类似带余除法,形式如下:
其中为被除式,为除式,为商式,为余式(且次数低于)。
- 而具体的计算可以使用长除法(在此省略)。
性质1的证明
- 为了证明性质1,我们先证明下面两个引理:
- 如果是次多项式的根(),那么可表示为,其中为次多项式。
- 由条件得,故,而次数只能为,所以只能为常数项。又因为,所以,故原式成立。
- 如果次多项式有个各不相同的根,那么它就可以表示为,其中为非零实数。
- 对进行归纳:
- 当时,结论显然成立;
- 若时结论成立,那么对于次多项式(根为),由上面的引理得,其中为次多项式。
- 又因为对任意均成立,故均为的根。由归纳假设得(为非零实数),所以。
- 归纳完成。
- 有了第二条引理,我们就能立刻得到性质1(因为任意都不是的根)。
有限域(Finite Fields)
- 下面我们对多项式系数的数域进行讨论。上面的所有结论对应的系数都是在实数域上,但当我们将实数域换成复数域或有理数域时,这些结论也成立。然而,如果换成整数域(或自然数域),结论就不一定成立(具体而言,性质2不成立)。
- 实际上,我们对两个性质进行的证明都是基于其对应数域的运算封闭性展开的,所以对于整数域(自然数域),因为其在除法计算上不封闭,所以性质2就无法推出。
- 不过,对于整系数多项式,我们可以加入模运算(这里为质数),将整数域限制在,这样就又能做到四则运算均封闭了(做除法时除了都存在乘法逆元)。所以在这个数域上,两条性质同样成立。
- 注:如果为合数又会导致两个性质不成立。比如:当时,的解有,不满足性质1,类似也不满足性质2。
- 对于这个有限域,也被记为或(代表Galois,伽罗瓦)【这就涉及到一些群论(抽象代数)的一些知识,感兴趣的可自行探索】
多项式个数统计
- 对于模的整数域上的多项式,我们可以进一步研究以下问题:经过若干个点的不同次多项式有多少?如果要从系数角度讨论满足的多项式会比较复杂,但如果我们换个角度——从多项式经过的点的角度,那么就会简单很多:
- 由上面得到的结论,一个次多项式至少需要个不同点唯一确定。那么,如果给定了个点(),就剩下个点没有被确定,而每个点的值域均为种可能,总共就有种可能的多项式。
秘密共享(Secret Sharing)
- 那么多项式如何应用在秘密共享系统中呢?我们可以想象下面这个场景:
- 为了预防敌国的打击,C国部署了核弹防御系统,为了保证非必要不启用,系统设置了核弹发射密码(这里简化为整数);而密码只能由个重要人员得到,且:
- 只有这些人中至少个人共享信息,密码才能被计算出;
- 任意个人共享信息,都无法计算出真实密码;
- 为了预防敌国的打击,C国部署了核弹防御系统,为了保证非必要不启用,系统设置了核弹发射密码(这里简化为整数);而密码只能由个重要人员得到,且:
- 这里就可以使用多项式为各个人员分配信息:
- 首先,确定一个比大的质数,将数域限制在模的整数域中;
- 然后,随机生成一个次多项式,要求满足;接着分别将的值提供给各个重要人员。
- 那么:
- 对于其中任意个重要人员,如果他们共享信息,那么就只能确定多项式经过的个点,而满足条件的多项式仍然有个,即密码仍然有种可能(这样猜测正确的概率与每个人单独猜测的概率相同);
- 而只要人员数达到个,就可以利用拉格朗日插值法(注:涉及到的所有除法都转化为乘以对应的乘法逆)解出,进而计算出。
- 所以这种系统就保证了共同决策的最小规模,维护了系统的安全。
