网络安全 与 加密算法 (3)

这就要求 我们对 每一个块(在对称加密算法中, 正是将数据分成一个又一个的块), 都发送相应的Ri 用于处理数据。 Ri可以明文发送, 即使Ri被劫持到, 在没有秘钥的情况下, 依然是没有用的。

但这种方式同样会带来一个缺点,即对于每一个块, 我们都需要发送等长的Ri给对方(异或预算必然要求两者长度一样,才能进行异或运算。) 这样我们的数据长度就变为原来的两倍, 这实在是一笔不小的开销。

因此通常采用的方式是CBC, 其基本思想是, 仅随第一个报文发送一个随机值, 在之后的通讯中 通过计算获取 相应的编码。

因此,仅需要N+1个块, 就能够实现 对相同的明文,产生不同的密文。

公开秘钥加密

但在对称秘钥体系中, 会有这样一个问题, 如果一切依托于现实, 我们可以彼此约定一个只有双方知道的秘钥, 完成加密解密的相关工作。

但在网络通讯中, 这并不现实, TCP链接时时刻刻都在被销毁与创建中不断循环, 我们不可能在路由器两端使用固定的密码, 如果这样做的话 就意味着线路两端的路由器都要完成解密 然后加密的操作。 用自己的密码加密之后 发送给下一个节点。

我们也不可能将密码直接明文 在 通讯中直接传输, 那样的话, 和不加密又有什么区别呢?

这好像是个难题。

直到公开密码的出现:

是以这样的方式使用:

对于小B来说, 存在两个秘钥, 一个是 公知的 Kb+ 以及 只有自己存有的秘钥 Kb-, 当小A想要给小B发送消息时, 首先会取得 Kb+ 用一个公知的 加密算法 进行加密,得到密文 Kb+(m), 而当小B接收到 Kb+(m) 时, 用一个公知的 解密算法 配以私钥 Kb- 进行解密, 最终使得 Kb-(Kb+(m)) = m。 这样需要解密密文, 就必须要两个秘钥才能够解密。

虽然这样会引入一个新的问题, 即 任何人都可以 截获 发送给小B的消息, 然后用自己准备好的明文, 通过 Kb+对明文加密, 发送给小B。

这就要求我们能够验证数据的来源方究竟是谁, 需要做端点鉴别, 即确确实实是小A自身发送给小B的消息, 而不是别人冒用名义 发送 分手吧 这样的悲惨消息。

RSA算法

对于RSA算法, 个人比较感兴趣, 在这里描述的可能就会多一点。

对于任何数据流, 我们都不能忘记其本质 依然是 bit流, 而任何bit流 自然也能够用 唯一的 整数 去表示。

加密这个bit流 自然实际上就是加密这个 唯一数值。

在RSA算法中, 并没有将数据看成是 字符的集合, 而是数值, 这样我们就可以使用种种数学公式加以匹配。

RSA包含两个部分:

加密解密算法

两个秘钥, 公钥和私钥。

秘钥的生成

选择两个大素数, 这个值越大越好, 甚至已经超出了常规意义上的 大数值。 该值越大, 破解RSA算法越困难。 推荐公司使用时, p q 两个数的乘积 需要 为 1024bit数量级。

计算 n=pq 和 z=(p - 1)(q - 1)

选择小于n的一个数值 e, 且 e 和 z 互素。

求解一个数d, 使得 ed - 1 可以被 z整除。换成数值表达则是:

ed mod z = 1

则公钥是 (n, e), 私钥是 (n, d);

加解密过程

要求被加密的整数 m, m < n

求解 c = (m ^ e) mod n, c即是加密后的密文

求解 m = (c ^ d) mod n.

看上去实在是很简单的过程。

但是 我们需要注意到的是这样几个问题, p q 本身就是数百bit的值。
被加密的整数一般也都不会非常小。

需要计算 m ^ e c ^ d, 这种种操作本身就是非常消耗计算力的过程。

更何况还需要求得大素数q p 本身。

工作原理

将上述 加解密过程 合并起来看:

求解m时 即是求解: ((m^e) mod n)^d mod n

在模运算中有这样一个性质:

a ^ b mod n = ((a mod n)^b) mod n

则上述公式可以变为:

m^ed mod n

因此现在就需要证明:

m ^ ed mod n = m

在数论中, 有:

如果 p q 是素数,且有 n = pq 和 z = (p -1) * (q - 1) 则 X^y mod n = X ^ (y mod z) mod n

因此上述被替换成:

m ^ (ed mod z) mod n => m ^ 1 mod n => (m 小于 n) m

同时如果注意到另一个特点:

如果加解密流程微调:

c = (m ^ d) mod n

m = (m ^ e) mod n

原因则是: m ^ ed mod n 等价于 m ^ de mod n

这个特性意味着什么呢?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsppzg.html