IKE(Internet Key Exchange):密钥交换
密钥交换,双方通过交换密钥来实现数据加密解密。
密钥交换的两种方式:
1.对称密钥加密:
将公钥加密后通过网路传输到对方进行解密,这种方式有很大可能被截取破解,所以不常用。
2.DH (Deffie-Hellman) :
双方共有一些参数,共同协商加密算法,除此之外双方还有属于自己的私有参数,通过共有的参数、私有参数和算法信息来进行加密。
然后双方将计算后的结果进行交换,交换完成后再后属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,而这个结果就是密钥。
参看:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
DH的实现:
1 、A: a,p 协商生成公开的整数a,大素数p
B: a,p
2 、A: 生成隐私据数据 :x (x<p ),计算得出 a^x%p ,发送给B
B: 生成隐私据数据 :y, 计算出得出a^y%p ,发送给A
3 、A:计算得出 [(a^y%p)^x] %p = a^xy%p,生成为密钥
B:计算得出 [(a^x%p)^y] %p = a^xy%p ,生成为密钥
数字签名
数字签名就是对非对称加密和摘要算法的一种应用,能确保信息在发布后不会被篡改,保证数据的完整性和可信性(摘要算法特性)。
同时也可以防止数据被他人伪造(非对称加密算法特性)。
数字签名可快速验证文本的完整性和合法性。
实现过程:
加密过程:
数据,通过摘要算法得到数据的摘要,之后使用私钥加密得到密文(签名),然后将源文件、密文(签名)以及公钥一起发布出去。
解密过程:
首先验证公钥是否是发布者的公钥,然后用公钥对密文进行解密得到摘要,使用发布组对文本同样的摘要算法得到摘要文本,比对摘要是否一致即可确认信息是否被篡改或者是否是发布者发布的。
随机数生成器:(伪随机数字)random和urandom
在操作系统上有一个叫熵池的地方,用来保存硬件中断参数的随机数(每次硬件中断都会产生一个随机数)
/dev/random:
仅从熵池返回随机数,随机数用尽,取随机数的进程将被阻塞
/dev/urandom:
先从熵池取随机数,随机数用尽,就通过伪随机数生成器生成随机数, 非阻塞。