大數據系統與大規模數據分析學習筆記(區塊鏈篇) 1. 一致性哈希(distributed hash table)
傳統哈希方法在增加或者減少服務器節點時,會導致哈希得到的結果不一致,從而將流量全導向後臺服務器,造成緩存雪崩。一致性哈希,該算法可以有效解決分佈式存儲結構下動態增加和刪除節點帶來的問題。
原理:構造出一個哈希環,將每個節點都放在一個哈希環上,當用戶需要獲取資源時,都在哈希環上順時針查找,找到的第一個節點就是資源存儲的位置,當新加入一個服務器節點時,隻會使一部分緩存失效,不會像傳統方法一樣全部失效,當減少一個節點時,同理。
缺點:容易造成哈希傾斜,節點並不會理想的均勻在哈希環上分佈,負載均衡不均勻。
解決方法:虛擬出多個節點,由一個真實服務器節點虛擬出多個虛擬節點分佈在哈希環上,當請求資源時,先找到虛擬節點,再找到虛擬節點的真實節點,最後獲取到資源。
2. 零知識證明(zero-knowledge proof)
它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。舉例:
A要向B證明自己擁有某個房間的鑰匙,假設該房間隻能用鑰匙打開鎖,而其他任何方法都打不開。這時有2個方法:
①A把鑰匙出示給B,B用這把鑰匙打開該房間的鎖,從而證明A擁有該房間的正確的鑰匙。
②B確定該房間內有某一物體,A用自己擁有的鑰匙打開該房間的門,然後把物體拿出來出示給B,從而證明自己確實擁有該房間的鑰匙。
後面的②方法屬於零知識證明。它的好處在於,在整個證明的過程中,B始終不能看到鑰匙的樣子,從而避免瞭鑰匙的泄露。
3. DES算法
典型對稱加密算法
-
優點:密鑰較短,加密處理簡單,加解密速度快,適用於加密大量數據的場合。
-
缺點:密鑰單一,不能由其中一個密鑰推導出另一zd個密鑰。
4. RSA算法
RSA加密算法是最常用的非對稱加密算法。非對稱加密算法的特點就是加密秘鑰和解密秘鑰不同,秘鑰分為公鑰和私鑰,用私鑰加密的明文,隻能用公鑰解密;用公鑰加密的明文,隻能用私鑰解密。
RSA算法描述:RSA的公鑰、私鑰的組成,以及加密過程、解密過程的公式可見於下表:
公鑰KU | n:兩素數p和q的乘積(p和q必須保密)(n為模值)e:與(p-1)*(q-1)互質(e稱為公鑰指數) |
---|---|
私鑰KR | n:兩素數p和q的乘積(p和q必須保密)(n為模值)d:滿足(de) mod ((p-1)(q-1)) = 1(d稱為私鑰指數) |
加密過程 | C=M^e mod n (C為密文) |
解密過程 | M=C^d mod n (M為明文) |
其中,符號^表示數學上的指數運算;mod表示模運算,即相除取餘數。具體算法步驟如下:
(1)選擇一對不同的、足夠大的素數p,q。
(2)計算n=pq。
(3)計算f(n)=(p-1)(q-1),同時對p, q嚴加保密,不讓任何人知道。
(4)找一個與f(n)互質的數e作為公鑰指數,且1<e<f(n)。
(5)計算私鑰指數d,使得d滿足(d*e) mod f(n) = 1
(6)公鑰KU=(e,n),私鑰KR=(d,n)。
(7)加密時,先將明文變換成0至n-1的一個整數M。若明文較長,可先分割成適當的組,然後再進行交換。設密文為C,則加密過程為:C=M^e mod n。
(8)解密過程為:M=C^d mod n。
缺點:密鑰尺寸大,加解密速度慢,一般用來加密少量數據,比如DES的密鑰 優點:安全性高
應用:數字簽名、數字證書、ssh和https的加密連接等。在實際應用中,由於公鑰加密的計算量大、速度慢,通常會跟對稱加密算法一起使用,公鑰加密算法常被用於最初連接的建立,真正數據的傳輸加密會交給對稱加密來處理。
5.橢圓曲線(ECC)算法
橢圓曲線加密算法,即:Elliptic Curve Cryptography,簡稱ECC,是基於橢圓曲線數學理論實現的一種非對稱加密算法。相比RSA,ECC優勢是可以使用更短的密鑰,來實現與RSA相當或更高的安全。據研究,160位ECC加密安全性相當於1024位RSA加密,210位ECC加密安全性相當於2048位RSA加密。