本文章将用一个“toy"例子来理解Matsumoto-Imai密码系统(MI)。
一. 定义与铺垫
k为含有个元素的有限域,表达形式如下:
域中非零元素的乘法群可以由域元素产生,
满足如下等式:
域k中的元素可以由表示,且它们的加法与乘法定义的运算如下表:
取,且g(x)为k[x]中一个不可约多项式,所以取定
,K的定义如下:
在这个例子中的取值有两种可能性,也就是
或者
,在后续的讨论中
取2。映射
的定义如下:
映射的求逆过程定义如下:
和
给定如下:
二. 获得公钥多项式
明文变量表示为,为了获得公钥多项式,首先需要计算
,如下形式:
将上式子用X表示,接着计算,如下:
依次对X进行乘方运算,此过程不算太难。由于是在特征为2的有限域k内进行运算的,所以不会有超过二次的项,最终计算的结果如下:
最后一步计算就可以得到公钥多项式,如下:
三. 加密过程
取明文,加密过程为分别计算
,如下:
到此,密文则为
四. 解密过程
解密的过程需要三步的计算和
。第一步计算的式子如下:
将密文(0,0,1)代入,可得如下计算:
得到的结果写为,代入
进行计算如下:
此过程的计算可以利用二进制法(也就是平方相乘法)。在实际的应用中,由于X的指数t是非常大的,所以运算时间会较长。如果将t写成二进制模型,此举会大大加快计算
的过程。
到目前为止已经得到。最后一步
的计算法则可见如下:
代入计算如下:
此结果与最初的明文一致。
五. MI密码系统的密钥长度与效率
MI密码系统的公钥是一组次数为2的多项式。每个多项式的项数计算如下:
因此,当q>2时,公钥可取自域k的系数个数可计算如下:
当q=2时,由于满足,所以没有平方项,这种情况下的公钥长度会更短一些。
在1988年Matsumoto-Imai原来建议的参数规模,,公钥比RSA要更大一些。但是MI公钥加密系统在计算效率上,仍然占有很大的优势。如果选择较小的q=|k|,就可以把乘法运算表存入内存,实现基于域k中的非零元素组成循环乘法群。因为RSA需要用到大数运算,使得MI加密比RSA更快。在MI密码系统的解密运算中,计算
需要大量运算,此种技术细节也可以应用。
综合以上,MI公钥加密系统是第一个预想比RSA更快实现且具有相同安全性的方案。