多变元公钥密码算法:Matsumoto-Imai Cryptosystems

目录

前言

一. MI密码系统的发展历程

二. 构建Matsumoto-Imai系统结构

三.  公私钥与加密解密

3.1 公钥

3.2 私钥

3.3 加密过程

3.4 解密

四. 公钥多项式的次数


前言

多变元公钥密码系统中,Matsumoto-Imai密码系统(MI)是在其发展过程中一个很重要的组成部分。1988年,Matsumoto和Imai提出了一种新的设计多变元公钥密码系统的数学思想,其思想利用了k^n的向量空间与隐藏的域结构。且利用了k的一个大的扩域上的映射作为变换的基础。前提需要构造一个有限域k,利用一个n级不可约多项式将k扩张到n维空间向量k^n上。

Kk^n之间是标准的k-线性同构,此种同构映射可用来构建两个不同空间之间的联系。寻找在向量空间k^n上的可逆映射,可以转化为寻找在k向量空间扩域K上的可逆映射,K是k的n级扩张,也就是K可以看成k上n维向量空间。相反过程求可逆映射也是对的。

一. MI密码系统的发展历程

MI和C^*就是基于前言中所述的方法构建出来的公钥密码系统,由于它们在实际应用中的高效率和潜力,吸引了密码界许多学者的高度关注。事实上,MI密码系统还被提交为日本政府的安全标准的一个候选算法,不幸的是,在最后一轮的筛选前,MI系统就被Jacques Patarun使用代数攻击的方法破解了,利用的思想是有关线性方程的。这一破解方法利用了MI密码系统中所隐含的特定代数结构。

在MI密码系统被破解后,很多人都以为MI密码系统的发展将会受到很大的限制,有趣的是,后来的事实证明并非如此。一个原因是MI密码系统代表着一个数学观点的突破,一个全新的数学思想。这给公钥密码领域的研究带来了蓬勃朝气,引来了更深入的研究和广泛的拓展。

另一个原因是有许多基于MI密码系统而发展起来的新安全系统不断涌现,包含Sflash签名方案。在由NESSIE发起的新的欧洲签名数据完整性加密方案项目中,经过重重选拔,此思想在2004年被接受为通过最后筛选的方案之一,应用主要集中于低配置的智能卡。

以下将会介绍单支MI密码系统,Patarin对MI密码系统的分析思想,以及相关攻击和安全性分析。

二. 构建Matsumoto-Imai系统结构

给定k是一个特征为2的有限域,它的元素个数为|k|=q。任取g(x)\in k[x]是n级不可约多项式,进一步定义K=k[x]/(g(x))为k的一个n级扩张。

\phi:K\to k^n是在Kk^n之间自然k线性同构,定义如下式子:

\phi(a_0+a_1x+\ldots+a_{n-1x^{n-1}})=(a_0,a_1,\ldots,a_{n-1})

K的子域以自然的方式在k^n中嵌入,如下:

\phi(a)=(a,0,\ldots,0),\quad\forall a\in k

当然,如果把k看成K的一个子域,上式子中的\phi就是k-线性映射,取0\leq\theta\leq n,且满足如下式子:

gcd(q^\theta+1,q^n-1)=1

上式子中的q是有限域k的元素个数。

定义K上的映射\tilde F,如下:

\tilde F(X)=X^{1+q^\theta}

如果存在t满足下列式子,则\tilde F是一个可逆的映射:

t(1+q^\theta)=1\quad mod(q^n-1)

所以可以定义映射\tilde F^{-1},如下:

\tilde F^{-1}(X)=X^t

假定F为k^n上的映射,定义为如下:

F(x_1,\ldots,x_n)=\phi\circ\tilde F\circ\phi^{-1}(x_1,\ldots,x_n)=(f_1,\ldots,f_n)

上式子中f_1,\ldots,f_n\in k[x_1,\ldots,x_n]

 引入L_1L_2k^n上可逆的仿射变换。定义k^n上的映射如下:

\bar F(x_1,\ldots,x_n)=L_1\circ F\circ L_2(x_1,\ldots,x_n)=(\bar f_1,\ldots,\bar f_n)

上式子中\bar f_1,\ldots,\bar f_n\in k[x_1,\ldots,x_n]。将上述中所有的映射变换形成一张框架图,如下:

三.  公私钥与加密解密

3.1 公钥

MI密码系统的公钥包含以下两项:

(1)有限域k以及域上的加法和乘法运算

(2)n个二次多项式,\bar f_1,\ldots,\bar f_n\in k[x_1,\ldots,x_n]

3.2 私钥

MI密码系统的私钥包含两个可逆的仿射变换L_1L_2。参数\theta是否保密对整个加密系统影响不大。由于\theta可以选择的个数少于n,而且n也不会太大,所以是否隐藏\theta破解攻击的复杂度通常影响不会太大。

3.3 加密过程

给定明文(x_1',\ldots,x_n'),相对应的密文(y_1',\ldots,y_n'),每一个加密的密文可定义为如下式子:

y_i'=\bar f_i(x_1',\ldots,x_n'),\quad i=1,\ldots,n

由于公钥对任何人都是可见的,所以大家都可以对明文进行加密。

3.4 解密

通过下面的过程对密文(y_1',\ldots,y_n')进行解密:

\bar F^{-1}(y_1',\ldots,y_n')\\

\\=L_2^{-1}\circ F^{-1}\circ L_1^{-1}(y_1',\ldots,y_n')\\=L_2^{-1}\circ\phi\circ\tilde F^{-1}\circ\phi^{-1}\circ L_1^{-1}(y_1',\ldots,y_n')

通常\tilde F^{-1}项的次数非常高,因此实际对密文(y_1',\ldots,y_n')的解密过程有如下三个步骤:

(1)首先计算(z_1',\ldots,z_n')=L_1^{-1}(y_1',\ldots,y_n')

(2)然后计算(\bar z_1,\ldots,\bar z_n)=\phi\circ\tilde F^{-1}\circ\phi^{-1}(z_1',\ldots,z_n')

(3)最后计算(x_1',\ldots,x_n')=L_2^{-1}(\bar z_1,\ldots,\bar z_n)

理论上讲,只有能够得到私钥的人才能执行解密过程,此MI密码系统才是安全的。加密和解密的基本流程图可见如下:

四. 公钥多项式的次数

映射F是由k[x_1,\ldots,x_n]上的多个多项式构成的。实际上,由于把变量x_1,\ldots,x_n看成有限域k上的明文信息比特,将取定f_1,\ldots,f_n在以下k^nk多项式环上的最小总次数的代表元,如下:

Fun(k^n,k)=\frac{k[x_1,\ldots,x_n]}{(x_1^q-x_1,\ldots,x_n^q-x_n)}

为了记号使用方便,用k[x_1,\ldots,x_n]代替Fun(k^n,k)。除非特意标注,否则不会用k[x_1,\ldots,x_n]代替k上的x_1,\ldots,x_n的多项式环。同理,K[X]表示K到K的多项式环。为了简化分析,将用K[X]代表\frac{K[X]}{X^{q^n}-X}

现在开始讨论\tilde F的次数与f_1,\ldots,f_n次数的关系。

K映射T_i(X)=X^{q^i},\quad i=0,1,\ldots,n-1,是有名的Frobenius映射。实际上,这些映射的集合恰好是Galois群G=Gal(\frac{K}{k}),群环KG=\lbrace\sum_{i=0}^{n-1}\alpha_iT_i|\alpha_i\in K\rbrace是K上k-线性映射的集合。由此,可得对\forall L(X)\in KG,都有\phi\circ L\circ\phi^{-1}k^n上的k线性映射,每个\phi\circ L\circ\phi^{-1}分量多项式k[x_1,\ldots,x_n]上总次数为1。

为了更好地研究H(X)\in K[X]的次数和\phi\circ H\circ\phi^{-1}各分量多项式总次数的关系,定义单项式X^e\in K[X]q-汉明重量次数是e以q进制展开的系数的总和,也就是e的q-汉明重量。函数H(X)\in K[X]的q-汉明重量次数是H(X)的各单项式q-汉明重量次数的最大值。以上讨论的e均满足0\leq e\leq q^n

假定函数H(X)\in K[X]的q-汉明重量次数为d,那么\phi\circ L\circ\phi^{-1}各分量多项式的总次数也为d。特别地,由于\tilde F的q-汉明重量次数为2,也就是每一个f_1,\ldots,f_n的总次数为2。由于L_1L_2是可逆的仿射变换,所以每一个\bar f_1,\ldots,\bar f_n的总次数也为2。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值