簡(jiǎn)述ElGamal加密算法

我們之前聊了不少加密算法,今天我們來聊一個(gè)以人名命名的加密算法——ElGamal加密算法。

什么是ElGamal加密算法?

ElGamal加密算法是由Tather ElGamal(塔希爾·蓋莫爾)在1985年提出的一個(gè)基于迪菲-赫爾曼密鑰(D-H)交換的非對(duì)稱加密算法。

它是一種基于離散對(duì)數(shù)難題的加密體系,與RSA算法一樣,都能用于數(shù)據(jù)加密和數(shù)據(jù)簽名。但是兩者的原理不一樣,ElGamal算法基于離散對(duì)數(shù)問題,而RSA算法基于大素?cái)?shù)分解困難問題。

與RSA算法相比,ElGamal算法的特點(diǎn)就是,哪怕是使用相同的私鑰,對(duì)相同的明文進(jìn)行加密,每次加密后得到的簽名也各不相同,有效的防止了網(wǎng)絡(luò)中可能出現(xiàn)的重放攻擊。

Elgamal加密算法

ElGamal加密算法的原理

ElGamal密鑰生成

  1. 隨機(jī)選擇一個(gè)大素?cái)?shù)p,且要求p-1有大素?cái)?shù)因子。再選擇一個(gè)模p的本原元α。將p和α公開。
  2. 隨機(jī)選擇一個(gè)整數(shù)d作為密鑰,2≤d≤p-2 。
  3. 計(jì)算y=α^d mod p,取y為公鑰。

ElGamal加密

  1. 對(duì)于明文M加密,隨機(jī)地選取一個(gè)整數(shù)k,2≤k≤p-2
  2. C1=α^k mod p
  3. C2=MY^k mod p
  4. 密文為(C1,C2)

ElGamal解密

由密文可得明文M,M=C2/C1^d mod p

ElGamal加密算法的使用

1985年,Tather ElGamal利用ElGamal算法設(shè)計(jì)出ElGamal數(shù)字簽名方案,該數(shù)字簽名是經(jīng)典數(shù)字簽名方案之一,具有高度的安全性與實(shí)用性。后來,ElGamal數(shù)字簽名體制的變體被使用于數(shù)字簽名標(biāo)準(zhǔn)DSS(數(shù)字簽名標(biāo)準(zhǔn))中。直到今天,很多新的數(shù)字簽名方案仍然屬于ElGamal數(shù)字簽名體制的變體或擴(kuò)展。GnuPG和PGP等很多密碼學(xué)系統(tǒng)中也都應(yīng)用到了ElGamal算法。

Elgamal加密算法

ElGamal加密算法的安全性

現(xiàn)代密碼學(xué)一般是基于因數(shù)分解、或者離散對(duì)數(shù)等數(shù)學(xué)難題,ElGamal算法就是基于離散對(duì)數(shù)問題,其安全性依賴于計(jì)算有限域上離散對(duì)數(shù)這一難題,目前求解離散對(duì)數(shù)仍然是很困難的,因此它的安全性有一定保障。

ElGamal加密算法的缺點(diǎn)

ELGamal算法的安全密鑰長(zhǎng)度和其他一些加密算法相比還是較長(zhǎng),因此它的運(yùn)算速度有待提高,而且由于ElGamal密碼系統(tǒng)加密和解密的數(shù)學(xué)算法完全不同,造成簽名和驗(yàn)證的時(shí)間消耗不同,以及加密和解密的花費(fèi)的時(shí)間也不同。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。