大数据系统与大规模数据分析学习笔记(区块链篇)

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的公钥、私钥的组成,以及加密过程、解密过程的公式可见于下表:

公钥KUn:两素数p和q的乘积(p和q必须保密)(n为模值)e:与(p-1)*(q-1)互质(e称为公钥指数)
私钥KRn:两素数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加密。