神经密码机 介绍

人工神经网络的实现和应用 之 神经密码机

神经密码机 介绍

帖子annnlp » 2015-05-15 17:27

考虑一下下面的场景:您需要把一份重要的,保密的文件通过网络传送给您的同事。您会怎么做呢?
如果您先用压缩或者打包软件将它打包好,并设定一个强度足够大的密码,那么恭喜您,您的文件基本上很难被破解了,因为现在的压缩工具加密基本上都是采用的AES,哪怕是密钥是16个字节的AES-128,都是非常难破解的。
那么问题来了,您要怎么告诉您的同事密码是什么呢?
把密码传过去不就行了?当然,大多数人都是这么干的。但是如果密码和文件一起被“截获”了呢?那密码不是白设了吗。通过安全通道?好吧,那您又怎么保证通道是真正安全的呢?像涂了安全层的SSL通道,能拦截通道外的盗取,但是通道毕竟是由别人建设起来的,电话有可能被录音,邮件有可能保存在服务器里…… :twisted:
神经密码机是一种真正安全传送密码的机制(不是安全传送文件或者加密解密文件哦,那些还是采用传统的对称和非对称加密来进行比较好),与其说是“传”密码,不如说是一种由双方“协商”出一个密码比较好。普通的传送密码,你给我或者我给你,一次就够了,而通过神经密码机,双方经过数千次(次数越高密码强度越大)的互相传数据,计算,“妥协”(更新自己神经网络权重),得出一个双方一致同意的密码。Ok,然后您再用这个密码加密文件,文件发送给同事后,他自然就知道解密的密码了,没有“传密码”的过程! :o
这种方式真的安全吗?是不是因为比较新潮,别人不知道你俩在干嘛才无法获取这个“密码”呢? :D
不是的,哪怕大家都用这种方式,如果光监视而不实际参与这个“妥协”的过程,也完全无法得到最后的结果——密码。 8-)

极客讨论器结合源代码一起阅读,理解神经密码机的工作原理和代码实现。
GTalkabout 写道:Click to open by GTalkabout: a96f2b00-fae4-11e4-954c-1aee658114e8
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第13行(文件NeuralCryptoMachine.cpp中)

帖子annnlp » 2015-05-15 17:53

作为示例代码,MACHINE A,MACHINE B,以及PUBLIC CHANNEL都是在一台机器上。
这是双方的树形奇偶机。
GTalkabout 写道:Click to open by GTalkabout: 3fb7e30f-fae8-11e4-b38b-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第26行(文件TreeParityMachine.cpp中)

帖子annnlp » 2015-05-15 17:57

输入层的权重是随机分配的。范围在 -L 到 L 之间。
GTalkabout 写道:Click to open by GTalkabout: d99bf1b0-fae8-11e4-bf77-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第20行(文件NeuralCryptoMachine.cpp中)

帖子annnlp » 2015-05-15 17:59

应该由 PUBLIC CHANNEL 生成的输入向量。它的元素个数和输入层节点是一样的。
GTalkabout 写道:Click to open by GTalkabout: 0c29d6b0-fae9-11e4-96f9-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第21行(文件InputVector.cpp中)

帖子annnlp » 2015-05-15 18:00

向量的每个元素也都是随机生成的。
GTalkabout 写道:Click to open by GTalkabout: 34f78c40-fae9-11e4-9d02-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第21行(文件NeuralCryptoMachine.cpp中)

帖子annnlp » 2015-05-15 18:02

MACHINE A的树形奇偶机计算向量的值。
GTalkabout 写道:Click to open by GTalkabout: 7267d98f-fae9-11e4-9a00-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第47行(文件TreeParityMachine.cpp中)

帖子annnlp » 2015-05-15 18:04

很容易看懂,这就是树形奇偶机的计算公式:
图片
GTalkabout 写道:Click to open by GTalkabout: c334f830-fae9-11e4-9a91-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第23行(文件NeuralCryptoMachine.cpp中)

帖子annnlp » 2015-05-15 18:06

MACHINE B的树形奇偶机计算向量的值,得出和MACHINE A一样的话(都是1或者都是-1)……
GTalkabout 写道:Click to open by GTalkabout: 215b728f-faea-11e4-88b7-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第25行(文件NeuralCryptoMachine.cpp中)

帖子annnlp » 2015-05-15 18:08

各自更新自己的树形奇偶机(的权重)。
GTalkabout 写道:Click to open by GTalkabout: 517b8be1-faea-11e4-87c2-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

讨论代码在第72行(文件TreeParityMachine.cpp中)

帖子annnlp » 2015-05-15 18:21

权重更新采用赫布学习算法,计算公式是:图片
图片表示新权重,图片是相等判断,if(a == b) then 1 else 0。
GTalkabout 写道:Click to open by GTalkabout: 299935cf-faec-11e4-a776-1aee658114e8
图片
头像
annnlp
 
帖子: 11
注册: 2015-05-15 11:26

下一页

回到 ann 的项目

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客