導航:首頁 > 源碼編譯 > 2018年發布的密碼演算法

2018年發布的密碼演算法

發布時間:2024-05-01 07:14:57

㈠ 瀵嗙爜闀垮害8~16浣,鏁板瓧銆佸瓧姣嶃佸瓧絎﹁嚦灝戝寘鍚涓ょ

鍙瑕佸綋鍓嶅瘑鐮佸悓鏃跺寘鍚鏈夋暟瀛楀拰瀛楁瘝錛屼笖瀵嗙爜8浣嶄互涓16浣嶄互涓嬪氨鍙浠ャ

渚嬶細a4321789銆乤bc12561100銆

瀵嗙爜8~16浣嶏紝鏁板瓧銆佸瓧姣嶏紝鑷沖皯鍖呭惈涓ょ嶅瓧絎︽槸鎸囧瘑鐮侀暱搴︽渶灝戦渶瑕8浣嶏紝鏈闀誇笉瓚呰繃16浣嶏紱涓旈渶瑕佸悓鏃朵嬌鐢ㄦ暟瀛椼佸瓧姣嶄袱縐嶅瓧絎︺

涓涓鏁板瓧鍗充竴涓瀛楃︼紝涓涓瀛楁瘝涔熸槸涓涓瀛楃︺備笉闄愬畾瀛楁瘝銆佹暟瀛楃殑涓鏁板拰欏哄簭錛屽彧瑕佺﹀悎瀵嗙爜闀垮害錛8-16錛夊氨鍙浠ャ傜幇鍦ㄥ緢澶氬瘑鐮侀兘瑕佹眰浣跨敤澶氱嶅瓧絎︾殑娣峰悎鏂瑰紡錛岃繖鏍蜂笉鏄撹鐚滄祴鎴栬呯牬瑙o紝浠ヤ繚鎶ょ敤鎴峰瘑鐮佸畨鍏ㄣ

鎵╁睍璧勬枡錛

RSA綆楁硶鏄絎涓涓鑳藉悓鏃剁敤浜庡姞瀵嗗拰鏁板瓧絳懼悕鐨勭畻娉曪紝涔熸槗浜庣悊瑙e拰鎿嶄綔銆俁SA綆楁硶鏄涓縐嶉潪瀵圭О瀵嗙爜綆楁硶錛屾墍璋撻潪瀵圭О錛屽氨鏄鎸囪ョ畻娉曢渶瑕佷竴瀵瑰瘑閽ワ紝浣跨敤鍏朵腑涓涓鍔犲瘑錛屽垯闇瑕佺敤鍙︿竴涓鎵嶈兘瑙e瘑銆

RSA鐨勭畻娉曟秹鍙婁笁涓鍙傛暟錛歯,e1,e2銆

鍏朵腑錛宯鏄涓や釜澶璐ㄦ暟p鍜宷鐨勭Н錛宯鐨浜岃繘鍒琛ㄧず鏃舵墍鍗犵敤鐨勪綅鏁幫紝灝辨槸鎵璋撶殑瀵嗛掗闀垮害銆

e1鍜宔2鏄涓瀵圭浉鍏崇殑鍊礆紝e1鍙浠ヤ換鎰忓彇錛屼絾瑕佹眰e1涓(p-1)*(q-1)浜掕川(浜掕川錛氫袱涓姝f暣鏁鍙鏈鍏綰︽暟1鏃訛紝浠栦滑鐨勫叧緋誨彨浜掕川錛夛紱鍐嶉夋嫨e2錛岃佹眰(e2*e1)mod((p-1)*(q-1))=1銆

(n,e1),(n,e2)灝辨槸瀵嗛掗瀵廣

鍙傝冭祫鏂欐潵婧愶細鐧懼害鐧劇-瀵嗙爜

㈡ 鏈钁楀悕鐨勫叕閽ュ瘑鐮佷綋鍒舵槸浠涔堢畻娉

RSA綆楁硶銆
RSA綆楁硶鏄鐩鍓嶆渶钁楀悕鍜屽箍娉涘簲鐢ㄧ殑鍏閽ュ瘑鐮佷綋鍒朵箣涓銆傚悕瀛楀彇鑷涓変綅鍙戞槑鑰呯殑濮撴皬錛歊ivest銆丼hamir鍜孉dleman銆俁SA綆楁硶鍩轟簬澶ф暟鍒嗚В鐨勫洶闅炬э紝閫氳繃鐢熸垚涓瀵瑰叕閽ュ拰縐侀掗鏉ュ疄鐜板姞瀵嗗拰瑙e瘑鐨勮繃紼嬨傚叕閽ョ敤浜庡姞瀵嗘暟鎹錛岀侀掗鐢ㄤ簬瑙e瘑鏁版嵁銆俁SA綆楁硶鐨勫簲鐢ㄨ寖鍥撮潪甯稿箍娉涳紝鍖呮嫭瀹夊叏閫氫俊銆佹暟瀛楃懼悕銆佽韓浠介獙璇佺瓑棰嗗煙銆傜敱浜庡叾瀹夊叏鎬у拰鍙闈犳э紝RSA綆楁硶琚騫挎硾搴旂敤浜庝繚鎶ゆ晱鎰熶俊鎮鍜屾暟鎹鐨勫畨鍏ㄤ紶杈撱

㈢ 國密演算法指的是什麼

國密演算法是國家密碼局制定標準的一系列演算法。其中包括了對稱加密演算法,橢圓曲線非對稱加密演算法,雜湊演算法。具體包括SM1,SM2,SM3等,其中:

SM2為國家密碼管理局公布的公鑰演算法,其加密強度為256位。

SM1,對稱加密演算法,加密強度為128位,採用硬體實現。

SM3,密碼雜湊演算法,雜湊值長度為32位元組,和SM2演算法同期公布,參見《國家密碼管理局公告(第 22 號)》。

SMS4,對稱加密演算法,隨WAPI標准一起公布,可使用軟體實現,加密強度為128位。

應用舉例:

在門禁應用中,採用SM1演算法進行身份鑒別和數據加密通訊,實現卡片合法性的驗證,保證身份識別的真實性。 安全是關系國家、城市信息、行業用戶、百姓利益的關鍵問題。

國家密碼管理局針對現有重要門禁系統建設和升級改造應用也提出指導意見,加強晶元、卡片、系統的標准化建設。截止目前,國密門禁系統的升級的案例也逐漸增多,基於自主國產知識產權的CPU卡、CPU卡讀寫設備及密鑰管理系統廣泛受到關注。

㈣ 世界上各種密碼的形式

1、二方密碼:

二方密碼(en:Two-square_cipher)比四方密碼用更少的矩陣。

得出加密矩陣的方法和四方密碼一樣。

例如用「example」和「keyword」作密匙,加密lp。首先找出第一個字母(L)在上方矩陣的位置,再找出第二個字母(P)在下方矩陣的位置:

E X A M P

L B C D F

G H I J K

N O R S T

U V W Y Z

K E Y W O

R D A B C

F G H I J

L M N P S

T U V X Z

在上方矩陣找第一個字母同行,第二個字母同列的字母;在下方矩陣找第一個字母同列,第二個字母同行的字母,那兩個字母就是加密的結果:

E X A M P

L B C D F

G H I J K

N O R S T

U V W Y Z

K E Y W O

R D A B C

F G H I J

L M N P S

T U V X Z

help me的加密結果:

he lp me

HE DL XW

這種加密法的弱點是若兩個字同列,便採用原來的字母,例如he便加密作HE。約有二成的內容都因此而暴露。

2、四方密碼

四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字)。

首先選擇兩個英文字作密匙,例如example和keyword。對於每一個密匙,將重復出現的字母去除,即example要轉成exampl,然後將每個字母順序放入矩陣,再將餘下的字母順序放入矩陣,便得出加密矩陣。

將這兩個加密矩陣放在右上角和左下角,餘下的兩個角放a到z順序的矩陣:

a b c d e E X A M P

f g h i j L B C D F

k l m n o G H I J K

p r s t u N O R S T

v w x y z U V W Y Z

K E Y WO a b c d e

R D A BC f g h i j

F G H I J k l m n o

L M N P S p r s t u

T U V X Z v w x y z

加密的步驟:

兩個字母一組地分開訊息:(例如hello world變成he ll ow or ld)

找出第一個字母在左上角矩陣的位置

a b c d e E X A M P

f g h i j L B C D F

k l m n o G H I J K

p r s t u N O R S T

v w x y z U V W Y Z

K E Y W O a b c d e

R D A B C f g h i j

F G H I J k l m n o

L M N P S p r s t u

T U V X Z v w x y z

同樣道理,找第二個字母在右下角矩陣的位置:

a b c d e E X A M P

f g h i j L B C D F

k l m n o G H I J K

p r s t u N O R S T

v w x y z U V W Y Z

K E Y W O a b c d e

R D A B C f g h i j

F G H I J k l m n o

L M N P S p r s t u

T U V X Z v w x y z

找右上角矩陣中,和第一個字母同行,第二個字母同列的字母:

a b c d e E X A M P

f g h i j L B C D F

k l m n o G H I J K

p r s t u NO R S T

v w x y z U V W Y Z

K E Y W O a b c d e

R D A B C f g h i j

F G H I J k l m n o

L M N P S p r s t u

T U V X Z v w x y z

找左下角矩陣中,和第一個字母同列,第二個字母同行的字母:

a b c d e E X A M P

f g h i j L B C D F

k l m n o G H I J K

p r s t u N O R S T

v w x y z U V W Y Z

K E Y W O a b c d e

R D A B C f g h i j

F G H I J k l m n o

L M N P S p r s t u

T U V X Z v w x y z

這兩個字母就是加密過的訊息。

he lp me ob iw an ke no bi的加密結果:

FY GM KY HO BX MF KK KI MD

3、三分密碼

首先隨意製造一個3個3×3的Polybius方格替代密碼,包括26個英文字母和一個符號。然後寫出要加密的訊息的三維坐標。訊息和坐標四個一列排起,再順序取橫行的數字,三個一組分開,將這三個數字當成坐標,找出對應的字母,便得到密文。

(4)2018年發布的密碼演算法擴展閱讀:

加密方法:

替換加密法:用一個字元替換另一個字元的加密方法。

換位加密法:重新排列明文中的字母位置的加密法。

回轉輪加密法:一種多碼加密法,它是用多個回轉輪,每個回轉輪實現單碼加密。這些回轉輪可以組合在一起,在每個字母加密後產生一種新的替換模式。

多碼加密法:一種加密法,其替換形式是:可以用多個字母來替換明文中的一個字母。

夾帶法:通過隱藏消息的存在來隱藏消息的方法。

㈤ aes128綆楁硶 瀵嗘枃鍜屾槑鏂囧備綍綆楀嚭瀵嗙爜

AES-128鏄涓縐嶅圭О鍔犲瘑綆楁硶錛屼嬌鐢ㄧ浉鍚岀殑瀵嗛掗榪涜屽姞瀵嗗拰瑙e瘑銆傚瘑閽ラ暱搴︿負128浣嶏紙16瀛楄妭錛夛紝瀵嗛掗鍙浠ユ槸闅忔満鐢熸垚鐨勩
瑕佽$畻鍑哄瘑鐮侊紙鍗沖瘑鏂囧拰鏄庢枃涔嬮棿鐨勮漿鎹錛夛紝闇瑕佷互涓嬫ラわ細
1. 瀵嗛掗鐢熸垚錛氶栧厛錛岄渶瑕佺敓鎴愪竴涓128浣嶇殑瀵嗛掗銆傚瘑閽ュ彲浠ユ槸闅忔満鐢熸垚鐨勶紝涔熷彲浠ヤ嬌鐢ㄥ瘑鐮佸﹀畨鍏ㄧ殑浼闅忔満鏁扮敓鎴愬櫒鐢熸垚銆
2. 鍒嗙粍鍜屽~鍏咃細灝嗘槑鏂囧垎鎴愬滻瀹氶暱搴︾殑鍧楋紙閫氬父涓128浣嶏級銆傚傛灉鏄庢枃鐨勯暱搴︿笉鏄鍧楅暱搴︾殑鏁存暟鍊嶏紝闇瑕佽繘琛屽~鍏咃紝浠ユ弧瓚沖潡闀垮害鐨勮佹眰銆
3. 鍒濆嬭疆瀵嗛掗鍔狅細灝嗙敓鎴愮殑瀵嗛掗涓庣涓涓瀵嗘枃鍧楄繘琛屽紓鎴栨搷浣溿
4. 杞鍑芥暟錛欰ES綆楁硶涓浣跨敤浜嗕竴緋誨垪鐨勮疆鍑芥暟錛屽寘鎷瀛楄妭浠f崲錛圫ubBytes錛夈佽屼綅縐伙紙ShiftRows錛夈佸垪娣鋒穯錛圡ixColumns錛夊拰杞瀵嗛掗鍔狅紙AddRoundKey錛夌瓑鎿嶄綔銆傝繖浜涙搷浣滃湪姣忎竴杞涓閮戒細琚搴旂敤鍒板瘑鏂囧潡涓娿
5. 杞鏁板驚鐜錛氭牴鎹瓵ES綆楁硶鐨勮勫畾錛屾牴鎹瀵嗛掗闀垮害紜瀹氬姞瀵嗚疆鏁般傛瘡涓杞涓閮戒細瀵瑰瘑鏂囧潡榪涜屼竴緋誨垪鐨勮疆鍑芥暟鎿嶄綔銆
6. 鏈鍚庝竴杞錛氬湪鏈鍚庝竴杞涓錛屼笉浼氭墽琛屽垪娣鋒穯錛圡ixColumns錛夋搷浣溿
7. 瀵嗘枃鐢熸垚錛氱粡榪囨墍鏈夎疆鏁扮殑澶勭悊鍚庯紝鏈鍚庡緱鍒扮殑瀵嗘枃鍗充負鍔犲瘑鍚庣殑緇撴灉銆
瑙e瘑榪囩▼涓庡姞瀵嗚繃紼嬬浉浼礆紝鍙鏄鍦ㄨ疆瀵嗛掗鍔狅紙AddRoundKey錛夋ラや腑浣跨敤鐨勬槸閫嗗瘑閽ワ紝浠ラ嗗簭榪涜岃В瀵嗘搷浣溿
闇瑕佹敞鎰忕殑鏄錛屽姞瀵嗗拰瑙e瘑浣跨敤鐩稿悓鐨勫瘑閽ワ紝鍥犳ゅ湪榪涜屾暟鎹浼犺緭鏃訛紝闇瑕佺『淇濆瘑閽ョ殑瀹夊叏鎬э紝浠ュ厤琚鏈鎺堟潈鐨勪漢鑾峰緱瀵嗛掗騫惰В瀵嗘暟鎹銆

㈥ 十大常見密碼加密方式

一、密鑰散列

採用MD5或者SHA1等散列演算法,對明文進行加密。嚴格來說,MD5不算一種加密演算法,而是一種摘要演算法。無論多長的輸入,MD5都會輸出一個128位(16位元組)的散列值。而SHA1也是流行的消息摘要演算法,它可以生成一個被稱為消息摘要的160位(20位元組)散列值。MD5相對SHA1來說,安全性較低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。

二、對稱加密

採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密。對稱加密演算法中常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

三、非對稱加密

非對稱加密演算法是一種密鑰的保密方法,它需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰和私有密鑰。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。非對稱加密演算法有:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。

四、數字簽名

數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑒別數字信息的方法。

五、直接明文保存

早期很多這樣的做法,比如用戶設置的密碼是「123」,直接就將「123」保存到資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。

六、使用MD5、SHA1等單向HASH演算法保護密碼

使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

七、特殊的單向HASH演算法

由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能泄露,這就會遇到「保護對稱密鑰」一樣的問題,一旦「鹽」泄露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH,也只是增加了破解的時間,並沒有本質上的提升。

八、PBKDF2

該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。

九、BCrypt

BCrypt 在1999年就產生了,並且在對抗 GPU/ASIC 方面要優於 PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。

十、SCrypt

SCrypt 在如今是一個更好的選擇:比 BCrypt設計得更好(尤其是關於內存方面)並且已經在該領域工作了 10 年。另一方面,它也被用於許多加密貨幣,並且我們有一些硬體(包括 FPGA 和 ASIC)能實現它。 盡管它們專門用於采礦,也可以將其重新用於破解。

㈦ 鍗佸ぇ甯歌佸瘑鐮佸姞瀵嗘柟寮

1銆丷SA綆楁硶瀵嗙爜RSA綆楁硶鏄絎涓涓鑳藉悓鏃剁敤浜庡姞瀵嗗拰鏁板瓧絳懼悕鐨勭畻娉曪紝涔熸槗浜庣悊瑙e拰鎿嶄綔銆俁SA綆楁硶鏄涓縐嶉潪瀵圭О瀵嗙爜綆楁硶錛屾墍璋撻潪瀵圭О錛屽氨鏄鎸囪ョ畻娉曢渶瑕佷竴瀵瑰瘑閽ワ紝浣跨敤鍏朵腑涓涓鍔犲瘑錛屽垯闇瑕佺敤鍙︿竴涓鎵嶈兘瑙e瘑銆

2銆佹瘮濡傜敤鎴瘋劇疆鐨勫瘑鐮佹槸鈥123456鈥濓紝鐩存帴灝嗏123456鈥濅繚瀛樺湪鏁版嵁搴撲腑錛岃繖縐嶆槸鏈綆鍗曠殑淇濆瓨鏂瑰紡錛屼篃鏄鏈涓嶅畨鍏ㄧ殑鏂瑰紡銆備絾瀹為檯涓婁笉灝戜簰鑱旂綉鍏鍙革紝閮藉彲鑳介噰鍙栫殑鏄榪欑嶆柟寮忋

3銆佸圭О鍔犲瘑瀵圭О鍔犲瘑閲囩敤鍗曢掗瀵嗙爜緋葷粺鐨勫姞瀵嗘柟娉曪紝鍚屼竴涓瀵嗛掗鍙浠ュ悓鏃剁敤浣滀俊鎮鐨勫姞瀵嗗拰瑙e瘑錛岃繖縐嶅姞瀵嗘柟娉曠О涓哄圭О鍔犲瘑錛屼篃縐頒負鍗曞瘑閽ュ姞瀵嗐

㈧ 加密技術06-加密總結

對稱密碼是一種用相同的密鑰進行加密和解密的技術,用於確保消息的機密性。在對稱密碼的演算法方面,目前主要使用的是 AES。盡管對稱密碼能夠確保消息的機密性,但需要解決將解密密鑰配送給接受者的密鑰配送問題。

主要演算法

DES

數據加密標准(英語:Data Encryption Standard,縮寫為 DES)是一種對稱密鑰加密塊密碼演算法,1976年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),隨後在國際上廣泛流傳開來。它基於使用56位密鑰的對稱演算法。

DES現在已經不是一種安全的加密方法,主要因為它使用的56位密鑰過短。

原理請參考: 加密技術01-對稱加密-DES原理

3DES

三重數據加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個數據塊應用三次DES演算法。由於計算機運算能力的增強,原版DES由於密鑰長度過低容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。

注意:有3個獨立密鑰的3DES的密鑰安全性為168位,但由於中途相遇攻擊(知道明文和密文),它的有效安全性僅為112位。

3DES使用「密鑰包」,其包含3個DES密鑰,K1,K2和K3,均為56位(除去奇偶校驗位)。

密文 = E k3 (D k2 (E k1 (明文)))

而解密則為其反過程:

明文 = D k3 (E k2 (D k1 (密文)))

AES

AES 全稱 Advanced Encryption Standard(高級加密標准)。它的出現主要是為了取代 DES 加密演算法的,因為 DES 演算法的密鑰長度是 56 位,因此演算法的理論安全強度是 56 位。於是 1997 年 1 月 2 號,美國國家標准技術研究所宣布希望徵集高級加密標准,用以取代 DES。AES 也得到了全世界很多密碼工作者的響應,先後有很多人提交了自己設計的演算法。最終有5個候選演算法進入最後一輪:Rijndael,Serpent,Twofish,RC6 和 MARS。最終經過安全性分析、軟硬體性能評估等嚴格的步驟,Rijndael 演算法獲勝。

AES 密碼與分組密碼 Rijndael 基本上完全一致,Rijndael 分組大小和密鑰大小都可以為 128 位、192 位和 256 位。然而 AES 只要求分組大小為 128 位,因此只有分組長度為 128 位的 Rijndael 才稱為 AES 演算法。

本文 AES 默認是分組長度為 128 位的 Rijndael 演算法

原理請參考: 加密技術02-對稱加密-AES原理

演算法對比

公鑰密碼是一種用不同的密鑰進行加密和解密的技術,和對稱密碼一樣用於確保消息的機密性。使用最廣泛的一種公鑰密碼演算法是 RAS。和對稱密碼相比,公鑰密碼的速度非常慢,因此一般都會和對稱密碼一起組成混合密碼系統來使用。公鑰密碼能夠解決對稱密碼中的密鑰交換問題,但存在通過中間人攻擊被偽裝的風險,因此需要對帶有數字簽名的公鑰進行認證。

公鑰密碼學的概念是為了解決對稱密碼學中最困難的兩個問題而提出

應用場景

幾個誤解

主要演算法

Diffie–Hellman 密鑰交換

迪菲-赫爾曼密鑰交換(英語:Diffie–Hellman key exchange,縮寫為D-H) 是一種安全協議。它可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道創建起一個密鑰。這個密鑰可以在後續的通訊中作為對稱密鑰來加密通訊內容。公鑰交換的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而這個密鑰交換方法,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年發表,也是在公開文獻中發布的第一個非對稱方案。

Diffie–Hellman 演算法的有效性是建立在計算離散對數很困難的基礎上。簡單地說,我們可如下定義離散對數。首先定義素數 p 的本原跟。素數 p 的本原根是一個整數,且其冪可以產生 1 到 p-1 之間所有整數,也就是說若 a 是素數 p 的本原根,則

a mod p, a 2 mod p,..., a p-1 mod p 各不相同,它是整數 1 到 p-1 的一個置換。

對任意整數 b 和素數 p 的本原跟 a,我們可以找到唯一的指數 i 使得

b ≡ a i (mod p) 其中 0 <= i <= p-1

其中 a, b, p 這些是公開的,i 是私有的,破解難度就是計算 i 的難度。

Elgamal

1985年,T.Elgamal 提出了一種基於離散對數的公開密鑰體制,一種與 Diffie-Hellman 密鑰分配體制密切相關。Elgamal 密碼體系應用於一些技術標准中,如數字簽名標准(DSS) 和 S/MIME 電子郵件標准。

基本原理就是利用 Diffie–Hellman 進行密鑰交換,假設交換的密鑰為 K,然後用 K 對要發送的消息 M,進行加密處理。

所以 Elgamal 的安全系數取決於 Diffie–Hellman 密鑰交換。

另外 Elgamal 加密後消息發送的長度會增加一倍。

RSA

MIT 的羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在 1977 年提出並於 1978 年首次發表的演算法。RSA 是最早滿足要求的公鑰演算法之一,自誕生日起就成為被廣泛接受且被實現的通用的公鑰加密方法。

RSA 演算法的有效性主要依據是大數因式分解是很困難的。

原理請參考: 加密技術03-非對稱加密-RSA原理

ECC

大多數使用公鑰密碼學進行加密和數字簽名的產品和標准都使用 RSA 演算法。我們知道,為了保證 RSA 使用的安全性,最近這些年來密鑰的位數一直在增加,這對使用 RSA 的應用是很重的負擔,對進行大量安全交易的電子商務更是如此。近來,出現的一種具有強大競爭力的橢圓曲線密碼學(ECC)對 RSA 提出了挑戰。在標准化過程中,如關於公鑰密碼學的 IEEE P1363 標准中,人們也已考慮了 ECC。

與 RSA 相比,ECC 的主要誘人之處在於,它可以使用比 RSA 短得多的密鑰得到相同安全性,因此可以減少處理負荷。

ECC 比 RSA 或 Diffie-Hellman 原理復雜很多,本文就不多闡述了。

演算法對比

公鑰密碼體制的應用

密碼分析所需計算量( NIST SP-800-57 )

註:L=公鑰的大小,N=私鑰的大小

散列函數是一種將長消息轉換為短散列值的技術,用於確保消息的完整性。在散列演算法方面,SHA-1 曾被廣泛使用,但由於人們已經發現了一些針對該演算法理論上可行的攻擊方式,因此該演算法不應再被用於新的用途。今後我們應該主要使用的演算法包括目前已經在廣泛使用的 SHA-2,以及具有全新結構的 SHA-3 演算法。散列函數可以單獨使用,也可以作為消息認證、數字簽名以及偽隨機數生成器等技術的組成元素來使用。

主要應用

主要演算法

MD5

MD5消息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個 128 位( 16 位元組,被表示為 32 位十六進制數字)的散列值(hash value),用於確保信息傳輸完整一致。MD5 由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於 1992 年公開,用以取代 MD4 演算法。這套演算法的程序在 RFC 1321 中被加以規范。

2009年,中國科學院的謝濤和馮登國僅用了 2 20.96 的碰撞演算法復雜度,破解了MD5的碰撞抵抗,該攻擊在普通計算機上運行只需要數秒鍾。2011年,RFC 6151 禁止MD5用作密鑰散列消息認證碼。

原理請參考: 加密技術04-哈希演算法-MD5原理

SHA-1

SHA-1(英語:Secure Hash Algorithm 1,中文名:安全散列演算法1)是一種密碼散列函數,美國國家安全局設計,並由美國國家標准技術研究所(NIST)發布為聯邦資料處理標准(FIPS)。SHA-1可以生成一個被稱為消息摘要的160位(20位元組)散列值,散列值通常的呈現形式為40個十六進制數。

2005年,密碼分析人員發現了對SHA-1的有效攻擊方法,這表明該演算法可能不夠安全,不能繼續使用,自2010年以來,許多組織建議用SHA-2或SHA-3來替換SHA-1。Microsoft、Google以及Mozilla都宣布,它們旗下的瀏覽器將在2017年停止接受使用SHA-1演算法簽名的SSL證書。

2017年2月23日,CWI Amsterdam與Google宣布了一個成功的SHA-1碰撞攻擊,發布了兩份內容不同但SHA-1散列值相同的PDF文件作為概念證明。

2020年,針對SHA-1的選擇前綴沖突攻擊已經實際可行。建議盡可能用SHA-2或SHA-3取代SHA-1。

原理請參考: 加密技術05-哈希演算法-SHA系列原理

SHA-2

SHA-2,名稱來自於安全散列演算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼散列函數演算法標准,由美國國家安全局研發,由美國國家標准與技術研究院(NIST)在2001年發布。屬於SHA演算法之一,是SHA-1的後繼者。其下又可再分為六個不同的演算法標准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

SHA-2 系列的演算法主要思路和 SHA-1 基本一致

原理請參考: 加密技術05-哈希演算法-SHA系列原理

SHA-3

SHA-3 第三代安全散列演算法(Secure Hash Algorithm 3),之前名為 Keccak 演算法。

Keccak 是一個加密散列演算法,由 Guido Bertoni,Joan Daemen,Michaël Peeters,以及 Gilles Van Assche 在 RadioGatún 上設計。

2012年10月2日,Keccak 被選為 NIST 散列函數競賽的勝利者。SHA-2 目前沒有出現明顯的弱點。由於對 MD5、SHA-0 和 SHA-1 出現成功的破解,NIST 感覺需要一個與之前演算法不同的,可替換的加密散列演算法,也就是現在的 SHA-3。

SHA-3 在2015年8月5日由 NIST 通過 FIPS 202 正式發表。

原理請參考: 加密技術05-哈希演算法-SHA系列原理

演算法對比

閱讀全文

與2018年發布的密碼演算法相關的資料

熱點內容
dos命令中提示拒絕訪問 瀏覽:269
js調用java後台方法 瀏覽:309
我的世界命令教程 瀏覽:381
程序員生活中的自律習慣 瀏覽:160
java中編譯與載入 瀏覽:566
正版秒贊源碼官網 瀏覽:102
android雲盤開發 瀏覽:963
139郵箱的發送伺服器地址 瀏覽:826
長沙銀行用什麼樣的APP 瀏覽:891
無憂推客源碼 瀏覽:463
怎樣用文件夾發微信上去 瀏覽:426
單片機movp1a什麼意思 瀏覽:580
plc編程龍門銑床 瀏覽:375
畢業做程序員好嗎 瀏覽:717
python最好的web框架 瀏覽:233
程序員同學玩騰訊 瀏覽:349
pdf掃描壓縮 瀏覽:164
程序員面試學歷太重要了 瀏覽:420
excel轉pdf不全 瀏覽:513
命令任務管理器 瀏覽:208