我們接著上一篇再來細緻講一下加密解密功能,相信大家對加密解密其實並不陌生,比如我們去銀行轉賬我們需要輸入密碼,一開始我們對我們銀行卡設置密碼的過程稱為加密過程,轉賬時輸入密碼稱為解密過程。這個是我們經典加密算法。那我們就一起來了解一下密碼學的加密解密算法吧~
一、加密/解密
1、對稱加密
剛剛所提到的銀行卡案例,叫做對稱加密,對稱加密的特點是這樣的:
加密解密使用的是同樣的密鑰(也就是密碼)
加密,解密的算法是公開的,可以在網上找到自己做
加密,解密速度是比較快的
不好的地方在於安全性不夠好,容易被暴力破解
密鑰需要在網絡上傳輸(最大的缺點)
需要加大密碼長度和複雜度來保證安全
2、非對稱加密
非對稱加密對於大家來說可能稍微陌生一些,大家可能聽過,但是沒有用過。相對於對稱加密來說是絕對安全的。他有什麼特點呢?
加密,解密使用不同的密鑰
有2個密鑰,私鑰和公鑰
公鑰公開,私鑰不能公開
迄今為止是世界上最安全的
那缺點是什麼呢?加密,解密的速度慢
二、非對稱加密原型
下面我們來看一個生活當中非對稱加密的原型,明白這個案例基本上就知道什麼叫公鑰,什麼叫私鑰了。我們來一起看一下。
張三要告訴李四一個秘密,如圖:
可以看到例子裡面的一個對應關係,案例裡面我們看到打開的保險櫃就叫公鑰,保險櫃的鑰匙稱為私鑰,公鑰可以在網絡中傳輸,私鑰絕不能。
三、ssh私鑰和公鑰
瞭解了私鑰和公鑰,那我們來看一下私鑰和公鑰長什麼樣子,如圖:
這就是ssh裡的私鑰和公鑰,左邊是私鑰,右邊是公鑰。
四、比特幣私鑰和公鑰
左邊是比特幣的私鑰,右邊是公鑰。私鑰千萬不能丟了。這個私鑰我們看起來比較長,之前課程裡我們提到過比特幣另外一種Wif格式,這是最原始格式,如圖就是這個樣子的。
五、比特幣地址和私鑰
我們再來看一下比特幣的地址和私鑰,對於非對稱加密的私鑰來說包含的信息是比較多的,比公鑰更多。也就是我們常講的從私鑰可以推出公鑰,但是反之不行。
對非對稱加密來說遵循這樣的規則
私鑰加密的內容,公鑰才能解開
公鑰加密的內容,私鑰才能解開
六、非對稱加密算法(RSA和ECC)
我們先來看看RSA算法
RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamir和Leonard Adleman一起提出來的,1987年7月首次在美國公佈,當時他們三人都在麻省理工學院工作實習,RSA就是他們三人姓氏開頭字母拼在一起組成的。
RSA算法基於一個的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰
再來看看ECC(Ellipse Curve Cryptography)橢圓曲線算法(比特幣使用)
與傳統的基於大質數因子分解困難性的加密方法不同,ECC通過橢圓曲線方程式性質闡述密鑰ECC164位的密鑰產生一個安全級,相當於RSA1024位密鑰提供的保密強度,而且計算量較小,處理速度更快,儲存空間和傳輸帶寬佔用較少,目前居民二代身份證正在使用246位的橢圓曲線密碼,虛擬貨幣比特幣也選擇ECC作為加密算法。
RSA和ECC對比
橢圓曲線公鑰系統是代替RSA的強有力的競爭者。橢圓曲線加密方法與RSA方法相比有以下的優點:
1、安全性能更高,160位ECC與1024位RSA、DSA有相同的安全強度。
2、計算量小,處理速度快在私鑰的處理速度上(解密和簽名),ECC比RSA、DSA更快。
3、儲存空間佔用小,ECC的密鑰尺寸和系統參數與RSA,DSA相比要小得多,所以佔用的儲存空間要小得多。
4、寬帶要求低,使得ECC具有廣泛的應用前景。
七、對稱加解密AES/DES
看了非對稱加密,我們也稍微來了解一下對稱加密吧
常用的對稱加密算法有:
DES加解密算法
比較老的算法,一共有三個參數入口(原文,密鑰,加密模式)。而3DES只是DES的一種模式,是以DES為基礎更安全的變形,對數據進行了三次加密,也是被指定為AES的過渡算法)
AES加解密算法
AES是高級加密標準,加密速度更快,安全性更高。
八、商業加密方式
在實際的商業領域方式是這樣的,混合對稱加密和非對稱加密。
我們再一起來看看他們的優缺點:
對稱加密
優點:加密,解密快速,使用簡單
缺點:密碼/密鑰需要在網絡上傳輸,不安全
非對稱加密
優點:只有公鑰在網絡傳輸,私鑰就留在本地,安全
缺點:加密,解密速度比較慢,使用複雜
混合模式(對稱和非對稱)https/tls
使用對稱加密模式,但是對稱加密的密碼使用非對稱加密方式傳輸
組合了對稱加密和非對稱加密的優點,摒棄了它們的缺點
九、常見的商業應用
我們常見的WinRar、zip,word,pdf等裡面的加密都是使用對稱加密
OpenSSL、VPN,https數字證書就是用的非對稱加密
數字貨幣,銀行安全信道採用非對稱加密
Https中多采用混合方式
比如,服務器吧公鑰證書給瀏覽器,然後通過證書加密,一個對稱機密的口令(密碼),用這個密碼來做真實數據的加密,這樣就能保證又安全又快。
好了,今天講的有點多了,大家好好消化,我們明天見~
閱讀更多 白鯨大話區塊鏈 的文章