功能型密码算法设计与分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 ElGamal公钥加密方案

ElGamal加密算法由Taher ElGamal于1985年提出,它是一个基于Diffie-Hellman密钥交换的非对称加密算法,方案描述如下。

1.4.1 方案描述

SysGen:输入安全参数λ,系统参数生成算法生成循环群(G,p,g),p为群G的阶,g为群G的生成元,输出系统参数SP=(G,p,g)。

KeyGen:输入系统参数SP,私钥生成算法选取随机数αZp,计算g1=gα,输出公钥pk=g1,私钥sk=α

Encrypt:输入待加密的明文数据m∈G,公钥pk,系统参数SP,加密算法选取随机数rZp,计算C1=grC2=·m,输出密文CT=(C1C2)。

Decrypt:输入密文CT,私钥sk,系统参数SP,解密算法计算C2·=·(gr=m获取明文数据。

1.4.2 安全性分析

ElGamal加密算法的安全性基于判定性Diffie-Hellman(Decisional Diffie-Hellman,DDH)问题的难解性,我们首先给出DDH困难问题的定义。

DDH问题:设G为循环群,p为群G的阶,g为群G的生成元,已知(ggagbZ),判断Z是否等于gab

定理1.2 如果DDH问题是难解的,那么ElGamal加密方案是IND-CPA安全的。

证明:假设在IND-CPA安全模型中,存在一个敌手A能以不可忽略的优势ε攻破ElGamal加密方案,那么可以构造一个模拟算法B通过与A交互,以不可忽略的优势给出DDH问题的解。设B以循环群(G,pg)上的DDH问题实例(ggagbZ)作为输入。

系统建立:令SP=(G,pg),B设置公钥为g1=ga,其中a未知,公钥可以从给定问题实例中得到。

挑战A输出两个不同的挑战明文数据m0m1∈G。B随机选取比特c∈{0,1},计算挑战密文CT*==(gbZ·mc)并发送给敌手,其中gbZ来自问题实例。设r=b,若Z=gab,则

因此,若Z=gab,CT*为消息mc正确的挑战密文。

猜测A输出对c的猜测,若c′=cB输出True,表示Z=gab,否则输出False,表示Zgab

由于证明中用到的ab都是随机数,因此模拟和真实攻击环境是同分布、不可区分的。模拟过程没有出现终止情况,所以模拟成功的概率为1。下面分析A攻破挑战密文的概率。若Z=gab,方案的模拟与真实攻击环境不可区分,因此根据假设,敌手正确猜到加密消息的概率为1/2+ε/2。若Zgab,那么Z是随机的,与C1*无关,则CT*是一次一密加密。因此,敌手正确猜测到加密消息的概率为1/2。综上所述,B解决DDH问题的概率为