首页 男生 其他 七夕缘起

第59章 第5.03章 秘钥交换的策略(上)

七夕缘起 七色瑾林 2872 2024-11-14 07:45

  $$ 01 $$

  目前虽然有了不错的加密方法,但这秘钥,确实还是个难题。

  而且,同一个秘钥,使用的时间也不能太长,否则一旦被破解出来,那么通信就会变得很不安全。

  现在,牛郎需要想一种能够快速安全交换秘钥的方式。

  ·

  这个的难点在于,目前要尽量避免使用隐私信息。

  现在牛郎织女不能见面,两人共同知晓的隐秘信息终是有限的,用一个少一个,所以,这些最好先留着,作为以后的“王牌”。

  那么,如果使用现有的秘钥,进行加密传递呢?

  也不行,那跟明文没什么区别。

  ·

  试想,一旦哪一天,这个旧的秘钥泄露了或者被破解了出来,那么,王母就能顺藤摸瓜,得到新的秘钥值。

  尤其是现在加密方法刚刚是初级阶段,目前只有一个“见面日期”的秘钥,破解难度自然没有那么高,简直就是明文。

  所以说,这个新的秘钥,还不能依赖现有的秘钥,也就是“绝对独立”的。

  而且,加密和解密需要相同的秘钥,这就是牛郎目前最大的挑战了:

  ·

  如何在全程明文传输的情况下,(刚才说了,加密没有意义),

  让双方得到相同的秘钥,但其他人却不知道该秘钥。

  ·

  很显然,由一方传递给另一方,显然是行不通的了,这样途中所有的监听者都会知道秘钥。

  是不是觉得“比登天还难”了?既然都全程明文了,还怎么让别人“不知道”?

  ·

  ----

  $$ 02 $$

  不过,仔细想一想,好像还真是有可能的。

  毕竟,我们并不需要像写加密信件一样传递太多信息。

  要做的,仅仅是需要双方拿到一个秘钥而已,再直白一点,那就是个长度为十位的自然数罢了。

  ·

  像个办法,让双方得到一个相同的十位数,很难么?不难。

  那如何在不使用隐秘信息的情况下,让别人不知道呢?

  这个么,其实也是有可能做到的。

  想想之前加密时,提到的“加密强度”:

  “按目前王母的实力,只要加密算法在3亿次尝试之内无法被解密,那么,就可以认为它是安全的。”

  ·

  也就是说,如果能有一种方式,将运算差异化,让双方能够快速计算出结果,

  但是其他人则需要超过3亿以上次运算,那么,就可以实现安全的秘钥交换。

  当然,这样,就不是简单的加密领域了,而是,需要去想一些数学方法。

  ·

  牛郎在喜鹊仙子的帮助下,翻阅了古往今来数学领域的各种著作,突然发现了一种相对单向的运算:

  计算一个数的乘方,是有速算方法的,但是,反过来求其逆运算,基本没有速算方式。

  ·

  举个例子,计算2的4次方,正常是4次乘法,2x2x2x2=16,

  但其实它等价与2的平方的平方,2x2=4,4x4=16,只要2次乘法就能算出来。

  但如果想计算2的几次方等于16,那么要16不断除以2直到值为1,然后看除了几次,

  即16/2=8,8/2=4,4/2=2,2/2=1,需要4次除法运算,是基本没有优化空间的。

  看来,这应该就是本次秘钥交换的核心了。

  ·

  ----

  $$ 03 $$

  只要能找到一种数学方法,形成算法上的隔离,

  让自己和织女能通过乘方速算法计算秘钥,而监听者们只能通过乘方逆运算或者枚举求解,

  当两者的计算量的差距足够大时,那么就可以认为拿到了一个相对安全的秘钥。

  ·

  唉,这个乘方的逆运算,叫起来太不顺口了,反正都是对数字的运算,要不就简称“对数”计算吧。

  现在,算法的思想有了,接下来又出现了另一个难点:怎么去形成这种算法生的隔离呢?

  ·

  如果所有人拿到的信息都一样,那么所有人肯定可以用相同的算法去计算,所以,必然要创造信息上的差异。

  让自己和织女的信息,能够用乘方速算,但其他监听者,却只能用较慢的对数计算。

  只是,要引入信息差异,但还不能引入双方都知道的隐私信息,这改怎么办?

  ·

  哈哈,既然“双方都知道的信息”很有限,不能随便用,那“仅有单方知道的信息”,应该是近乎无限的吧?

  比如说,引入“只有牛郎知道的信息”,让织女不知道该信息也能算出秘钥,但其他人却不行。

  但是,这可能吗?

  ·

  这确实有可能,因为织女有“只有织女知道的信息”,也就是牛郎织女比其他监听者知道的多。

  只要像个办法,让“只有单方面知道的信息”,即参与了运算,又能互相湮灭,就足够了。

  而中间的监听者,因为不知道双方信息湮灭后的产物,要计算秘钥,或者反推双方的信息,还是很有难度的。

  那么,这就是个数学上要处理的问题了。

  ·

  ----

  $$ 04 $$

  具体要怎么处理呢?该回到刚才我们说的“乘方运算”了。

  比如牛郎想到一个数3,织女想到一个数4,互不告诉对方。

  约定以2位底数算乘方,牛郎得到2^3=8,织女得到2^4=16,把这个数告诉对方。

  此时,织女无需知道牛郎想到的是几,只要计算8^4=4096,而牛郎也只需要计算16^3=4096。

  由此,双方不需要知道对方的数字,却可以拿到相同的秘钥:4096。

  ·

  让我们看看,王母安排的监听者们,会得到哪些信息:双方约定的底数2,牛郎发送的8,织女发送的16。

  因为只有这3个数在途中传递了,其他信息没有被传递,监听者是不知道的。

  那么,这些监听者们,能通过已知的这3个数,得到秘钥4096吗?

  ·

  答案是“能”。

  因为,知道底数2,知道牛郎发送的数字8,那么,2的几次方是8呢?

  这个很容易计算,因此他们完全可以反推出,牛郎想到的数字,是3。

  同理,他们也能反推出,织女想到的数字是4。

  ·

  那这个方法有什么用?

  重点来了,刚才监听者们反推牛郎织女的数字,是需要时间计算的。

  我们提供,对数运算基本没有优化空间,所以要得到3和4,他们至少需要3+4=7次计算。

  这就是监听者比牛郎织女多做的事情,怎么样,有思路了吧?

目录
设置
手机
书架
书页
评论