想象一下,如果我們不采用任何技術(shù)手段,在一條不加密的網(wǎng)絡(luò)鏈路上傳輸信息可能會(huì)面臨哪些問題呢?
•竊聽風(fēng)險(xiǎn):黑客可能監(jiān)聽雙方的通信鏈路,偷聽雙方的通信內(nèi)容。
•篡改風(fēng)險(xiǎn):黑客可以隨意修改雙方的通信內(nèi)容,使得雙方無法正確地傳遞信息。
•冒充風(fēng)險(xiǎn):黑客可以冒充任意一個(gè)人的身份參與通信。
可以看到,如果在一條不加密的網(wǎng)絡(luò)鏈路上通信是無法保證信息的可靠傳輸?shù)?,在此基礎(chǔ)上建立的應(yīng)用也就沒有可信之說。為了解決上面的三個(gè)問題,我們需要一個(gè)密碼體系。
基本元素
通常一個(gè)密碼體系由一個(gè)五元組組成,這個(gè)五元組的構(gòu)成如下。
•明文M:原始數(shù)據(jù),待加密的數(shù)據(jù)。
•密文C:對明文M進(jìn)行一定變換或偽裝后得到的輸出。
•密鑰K:加密或解密中所使用的專門工具。
•加密E:將明文M通過密鑰K變換或偽裝得到密文C的過程。
•解密D:將密文C還原成明文M的過程。
一個(gè)密碼體系的構(gòu)建是基于這個(gè)五元組的,無論是傳統(tǒng)互聯(lián)網(wǎng),還是以太坊千億美元市值的數(shù)字貨幣都是基于這個(gè)密碼體系的,甚至包括整個(gè)區(qū)塊鏈系統(tǒng)都是基于這個(gè)密碼體系展開的。
需要特別注意的是,并非所有加密算法的安全性都可以在數(shù)學(xué)上得到證明。
目前被大家公認(rèn)的高強(qiáng)度加密算法,以及其具體實(shí)現(xiàn)往往經(jīng)過長時(shí)間和各方面充分實(shí)踐和論證后,才被大家認(rèn)可,但是并不代表其不存在漏洞。
因此自行設(shè)計(jì)和發(fā)明未經(jīng)大規(guī)模驗(yàn)證的加密算法是一種不太明智的行為,即使不公開算法的加密過程,也很容易遭到破解,無法在安全性上得到保障。
對稱加密
對稱加密(Symmetric Encryption)算法是一種混淆算法,能夠讓數(shù)據(jù)在非安全信道上進(jìn)行安全通信。
對稱加密是指進(jìn)行明文到密文加密時(shí)所使用的密鑰和進(jìn)行密文到明文解密時(shí)所使用的密鑰是相同的。
例1:
1.當(dāng)Alice需要向Bob發(fā)送一些加密消息時(shí),需要先向Bob請求獲得密鑰K,
2.當(dāng)Alice獲得密鑰K后就可以使用密鑰對消息加密,
3.當(dāng)加密后的消息發(fā)送給Bob后,Bob同樣需要使用密鑰K進(jìn)行解密。
結(jié)論:只要Alice和Bob能保證密鑰K的安全,那么他們就可以一直安全地通信。
優(yōu)點(diǎn):對稱加密的優(yōu)點(diǎn)是加密速度快,保密強(qiáng)度高,適用于對大量數(shù)據(jù)進(jìn)行加密的場景。
缺點(diǎn)1:但是由于雙方使用相同的密鑰,密鑰的傳輸和管理成為一個(gè)很大的問題,如果傳輸過程不安全,密鑰就無法可靠地傳遞,只能通過其他方法進(jìn)行交換,如郵件、電話、短信等,可是這些通信方式是否可靠還有待商榷。
為了解決這個(gè)問題,一般需要借助基于橢圓曲線的迪菲-赫爾曼密鑰交換(Elliptic Curve Diffie–Hellman keyExchange,ECDH)協(xié)議來完成密鑰分發(fā)。
缺點(diǎn)2:在對稱加密中,每一對發(fā)送者和接收者都需要使用一個(gè)共同密鑰。于是在區(qū)塊鏈這種擁有大量節(jié)點(diǎn)、需要大規(guī)模通信的網(wǎng)絡(luò)中會(huì)產(chǎn)生大量的密鑰,這無疑會(huì)極大增加節(jié)點(diǎn)管理密鑰的負(fù)擔(dān)。
對稱加密代表算法:DES、AES、SM4。