關注「區鏈數科」,讓你從入門到精通區塊鏈!
前面講到了對稱加密算法,今天講講非對稱加密算法。
可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。
非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。
在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
私鑰和公鑰的保密程度是不同的。
私鑰,顧名思義,私鑰往往是個人持有,其他人沒有持有者給予是不可獲取的,常用於解密。其通過隨機算數法生成,然後再進行Hash加密,從而達到一個更高程度的隨機性。
公鑰,則是公開的,他人是可以獲取的,常用於加密。其可以以私鑰為根據,再經一定的算法生成。
目前,在非對稱算法中,典型的代表有RSA、EIGamal、ECC(Elliptic Curve Crytosysitems橢圓曲線)、SM2系統等。
在所有的非對稱算法中,都有一個共同的特徵,即安全性基於數學問題解題難度。也就是說,非對稱加密算法以數學原理為依據,並且是公開透明的,這和對稱加密算法就有所不同了。
下面我們就來了解了解以上這些典型的非對稱加密算法,了解了解它們的原理是怎樣的:
1、RSA算法
RSA算法,是1978年由Ron Rivest、Adi Shamir和Leonard Adleman三人共同提出的,算法的名字就是它們名字的首字母的組合。
RSA是目前最有影響力和最常用的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰數據加密標準。
RSA算法的原理是基於一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
例如,2是最小的質數,那麼很容易因式分解得到1乘以2,如果給了兩個質數的乘積是243013,你多久能因式分解出來。兩個質數的位數越大,那麼要將它們的乘積因式分解就越難。目前,已發現的最大質數長達2233萬位,可想而知,數字越大,因式分解將越難。
隨著設備或技術的不斷先進,這種加密算法開始受到質疑,理論上是可以通過一定的算力將其分解,但是目前仍沒有任何可靠的攻擊較長RSA密鑰的方式被提出。
2、ElGamal
ElGamal算法於1986年由Taher ElGamal提出,ElGamal算法與RSA算法類似。RSA算法依據的是大質數的因式分解,而ElGamal算法依據的是模運算下求解離散對數困難。
所謂的離散對數,是一種基於同餘運算和原根的一種對數算法。
例如,有y是n的一個原根,令n=5,y=2,如果存在有滿足(k,n)=1的k存在,那麼k關於y的離散對數定義為存在一個整數t,使得下面的式子成立:
y^t=k mod n
整數t可以隨意取值,
如果t=0,則有2^0≡1;
如果t=1,則有2^1≡2;
如果t=2,則有2^2≡4;
如果t=3,則有2^3≡3。
離散對數的求解目標就是找到這個正整數係數k。
這種算法,目前還沒有找到一個快速計算離散對數的解法。
3、ECC(Elliptic Curve Crytosysitems橢圓曲線)
ECC算法於1985年由NcalKoblitz和VictorMiller分別獨立提出。
ECC算法充分利用了對橢圓曲線上特定的點執行乘法後的逆運算困難的獨特性質。
其基本原理是:在一個橢圓曲線方程上隨機找到一個點,並使用該點對私鑰執行乘法運算以得到公鑰。在私鑰較長的情況下,由公鑰得到私鑰是非常困難的。
相比於RSA等經典的算法,其安全性更高,但其有一個明顯的缺點就是計算的過程比較費時間。
4、SM2算法
SM2算法,也叫ShangMi2,國家商用密碼算法。於2010年12月有國家密碼管理局發布。
SM2算法出現較晚,是由ECC改進而來,但也是依據於橢圓曲線,但是其加密強度更高,甚至優於經典、公認程度更高的RSA算法。
同由國家密碼管理局發布的還有SM1、SM3、SM4和SSF33等,它們可以說與SM2算法齊名。
非對稱加密算法相較於對稱加密算法你更傾向於哪一種算法呢?
歡迎留言討論!!!
- - - END - - -
關注「區鏈數科」,讓你從入門到精通區塊鏈!