您的位置:首页 > 业界新闻

加密类型以及相关算法

2016-11-01 23:07 232 查看
让我们从一个简单的故事说起。1.很久很久以前,在笔友盛行的年代,小明交到了笔友小红,然而有件事让他们很苦恼,他们的信封总是被他们家人偷看,青春期的小年轻们总是想有点自己的小秘密的,所以这对于他们来说是无法容忍的,于是呢,小明和小红想了一个办法,他们约定以后写的书信每个字母往后两位,比如a-->c,b-->d,这样 i love you 就变成了 k nqxg aqw ,就这样,他们的父母拿到书信后百思不得其解,然而小红看到脸上却泛起了红晕...

上面的例子就是互联网安全通信的第一个特性:保密性在互联网诞生的最初,互联网是明文传输的,这就很容易被人窃取信息,所以人们想了一些转换规则,把明文通过这些规则转换为密文,再通过转换规则转换回来,从而实现数据传输的保密性。这种转换规则我们称为加密算法。plaintext --> 转换规则 --> ciphertext

2.后来,小明耐不住心中的喜悦把和小红的秘密告诉了猪队友小育,于是小育在小明父母的威逼利诱下出卖了灵魂..于是..
容易得知,如果转换规则被其他人知道,那么就有可能被人破解密文,然而变换转换规则的代价是巨大的,(比如说,上面小明和小红是把字母替换掉,比如a替换为c,我们也可以a替换为d,但是它们都属于替换的一种,我们也可以类似at之间添加一个字符变成aat,或者两个变成aaat,这些都属于添加额外信息的转换规则,显而易见,转换规则不变,把a替换其他字符比把替换规则变成其他规则要来得容易的多。)所以我们需要一种算法,它的算法可以被他人所知,但是如果不知道它的密钥,破解它是不可能的或者代价是非常昂贵的,于是就出现了我们的对称加密。对称加密特点是算法公开、计算量小、加密速度快、加密效率高,双方必须使用相同的秘钥才能解密。因为对称加密算法必须事先知道密钥才能解密,而密钥如果唯一的话,那么别人就可以拿你的密钥去破解你跟别人的通信,所以当你跟多人同时通信的时候,你必须管理许多不同的密钥,如果数量足够多的话,那么光是密钥管理就够你头疼的了。

3.经历沉痛打击的小明和小红大彻大悟,你们不就是想看吗,给你们看就是了,哼,秀恩爱秀死你们这帮damn single!!然而这一切的一切都被小红的青梅竹马小东看在眼里,每一句亲昵的问候都像一把刀深深扎在小东的心里。。终于有天小东踢翻眼前的狗粮,宣誓加入大fffff团,不择手段截取小明的信,并把每句问候都改成恶毒的诅咒..然而这一切小红都蒙在鼓里..

这个就是互联网安全通信的第二个特性:数据的完整性所谓数据的完整性,就是数据在传输过程中不得被他人修改。这就衍生了第二种算法:单向加密 (提取数据特征码)单向加密有以下几种特点:1.雪崩效应(任何微小的改变将会引起数据的巨大改变)2.定长输出(任意长度数据计算后的结果长度一样)3.结果唯一(相同的数据计算后得到的结果一样)4.不可逆性 (无法根据特征码逆向推出结果)单向加密的这四种特性使得,数据在传输过程中,一旦被修改,数据计算所得到的结果将千差万别,所以当A主机发送数据给B主机的时候,只要先利用约定好的密钥加密明文,然后把整个加密后的数据用单向加密算法提取特征码附加在数据后面一起传输,当数据到达B主机的时候,B主机先用一样的单向加密算法提取数据特征码,跟附加在数据后面的特征码对比,如果一致则再利用已知密钥解密密文得到最后结果,否则认为数据被篡改,不予接受。从而数据传输的保密性和完整性都得到了保证。

4.然而小东的暗恋者并兼任小红的闺蜜的小紫把这一切都看在眼里,她既想帮助闺蜜挽回这段感情,又不想被小东知道对自己反感,所以她不能明目张胆地写信给小明,只能采用类似小红和小明约定好秘密的方法,但是她和小明平时素来没有交集,而且自从小明被小育出卖后,闺蜜一直不肯告诉她她和小明的约定..头痛欲裂的小紫忽然想起一个夜黑风高的晚上,小红告诉她,再没有见过小明前,她是怎么和小明约定好通信秘密的。抱着试一试的想法,小紫用小红的方法给小明写了信,奇迹般地,小明回了信,于是,小明终于知道了一切...

这个就是我们要讲的,两台从未交流过的主机,怎么在网络上互相协商生成加密密钥,也就是IKE(Internet Key Exchange)解决这个问题的就是著名的diffie-hellman协议假设主机A跟主机B通信首先,A随机生成大素数P和生成数g发给B然后,A在自己的机器上生成随机数X,B在自己的机器上生成随机数Y接着,A把生成数g的x次方模大素数p的值传给B,同理B把g^y%p的值传给A最后,A把B传过来的g^y%p的值取x次方作为密钥,也就是(g^y%p)^x,同样地,B把(g^x%p)^y作为密钥,易证(g^y%p)^x=(g^x%p)^y= g^xy%p整个过程简写如下:A-->B p(大素数)g(生成数)A:xB:yA:g^x%p --> BB: g^y%p --> A容易证明,当素数足够大的时候,分解出x和y代价是巨大的,而且在网络上传输了四个值p、g、g^x%p、g^y%p,真正的密钥g^xy%p并没有在网络上传输,而A、B均已经得知。

5.“小红,你听我解释” “我不听!我不听!.." 此处省略3000字.. 最终小明还是让小红相信了他不可能对她写出那么恶毒的话,毕竟没有什么不开心是一套别墅搞不定的,如果有,那就是两套。 小明痛定思痛,觉得还是采用以前的方法通信,不过现在小明守口如瓶,所以跟小红的秘密只有天知地知和他俩知,并且从谢尔宾斯基地毯悟出真理,写的信格式对称而且全都满格写,不留一点改动空间。并且他们约定的规则都定期更换,用来防范猪队友,心思缜密,以为固若金汤,然而他还是太年轻....当小红迈进大学的那天,她就俘虏了技术宅小良的心..这个小良是笔迹模仿高手,而且封信毫无痕迹,关键他爹还是学校的邮差..于是,当小红的信到达的时候,小良把它扔到一边,并且模仿小明的笔迹跟小红写信,亲爱的,我们的约定的规则太旧了,换一个吧,小红拿到信看到熟悉的笔迹也没生疑,于是发去了新的约定规则,同样地,小良也模仿小红给小明写信...然后开始他罪恶的生涯..每天模仿小明给小红写信,再模仿小红给小明回信,玩得不亦乐乎。终于某天小良觉得时机已经成熟了,他给她俩分别回了“分手吧”!然后趁虚而入,横刀夺爱,十步杀一人,千里不留行....

这个就是互联网安全通信的第三个特性:身份验证当我们的数据在互联网上传输的时候,这个时候如果有中间人截取我们的数据,并且冒充我们的身份去目的主机通信,再假冒目的主机给我们回信,我们是无从得知的,于是催生了第三种加密算法:非对称加密算法非对称加密算法会生成一对密钥对,公开出来给大家的叫做公钥(public key),只有自己知道的叫做私钥(private key),准确地讲,是非对称加密算法先生成私钥,然后公钥再从私钥中提取非对称加密算法的特点是,用公钥加密的数据只能用私钥解密,同样地,用私钥加密的数据,只能用公钥解密假设主机A跟主机B都有自己密钥对,并且都把它们的公钥公布于众,私钥只有自己知道。这样当主机A发信息给主机B的时候,用自己的私钥加密,主机b收到数据后发现只有用主机A的公钥才能解密这段数据,从而确认这段数据确实来自于主机A,从而主机A的身份得到了验证。
然而这仅仅能验证主机A的身份,因为主机A的公钥是公开的,所以当主机C的截取到主机A发给主机B的数据后,也可以用主机A的公钥解密数据,从而数据的保密性无从保证。不过不要紧,我们拥有主机B的公钥,因为利用主机B公钥加密的数据只有主机B能解密,所以我们可以这样:(下列方法之一)1.利用数据先经过主机b的公钥加密,然后再利用主机A的私钥对整个数据进行加密,这样就算主机c能用主机A的公钥解密数据,它得到的扔是一堆密文,而这个密文只有主机B的私钥能解密2.利用数据先经过主机A的私钥加密,然后再利用主机B的公钥对整个数据进行加密,同样地,没有主机B的私钥解密不了密文,而主机A的公钥可以验证主机A的身份
可惜,这样的数据到了主机c手里还是可以作恶,因为它可以篡改里面的数据,也就是数据的完整性无法得到保证。不过不要紧,我们把单向加密算法结合进去就好了,我们可以这样:先对整体数据单向加密提取特征码附加在数据后面,然后对连同特征码在内的数据采取以上两种方法之一,即 先主机B公钥加密再主机A私钥加密或者相反
这样,数据传输的三个特性都得到了满足。事实上,由于非对称加密的速度实在太慢,所以非对称加密一般仅仅用来做身份验证,所以最终数据的传输还是要结合对称密钥来实现,所以数据传输的一般过程可以是这样的:1.主机A和主机B通过ike协议生成对称密钥2.主机A生成明文数据,并对这段数据提取特征码附加在后面3.主机A用自己的私钥加密特征码4.主机A利用对称密钥对明文数据连同加密后的特征码加密发送给B这样子,主机B再收到数据后:1.利用对称密钥解密 (保密性得到保证)2.利用主机A的公钥对特征码解密 (身份得到验证)3.计算明文,提取后的特征码与解密后的特征码对比 (完整性得到保证)
事实,因为主机A和主机B都有对方的公钥,所以上述过程可以略去Ike交换密钥那步,最终在主机A的操作过程如下:1.主机A生成明文数据,并对这段数据提取特征码附加在后面2.主机A随机生成对称密钥3.主机A利用对称密钥对明文和特征码进行加密4.主机A利用主机B的公钥对对称密钥进行加密,并附加到密文后面一起发送给主机B这样,主机B在收到密文后:1.利用自己的私钥解密对称密钥密文(主机B的身份得到验证)2.利用对称密钥解密数据 (保密性得到保证)3.利用主机A的公钥对特征码解密 (主机A的身份得到验证)4.计算明文,提取后的特征码与解密后的特征码对比 (完整性得到保证)

6.伤心欲绝的小明,对这个世界感到深深的失望。这一切都被他妈妈看在眼里,终于有一天他妈妈拿到村里传说级的村花的联系方式。抱着试试看,大不了不买的态度,小明给村花按给小红的方式发了一封信,这一次,出于对小明的愧疚,小良不仅没使坏而且帮小明排除了所有的安全隐患,而小明也成功地获取到了小红的来信,仿佛被唤醒了第二春,一生的不幸唏嘘,都是为了这次的独特相遇..然而,小明还是太年轻..一天,为了给这个村花一个surprise,小明起早摸黑赶了几千里去找她,终于发现,这个村花居然tm是个男的。。从此小明步入了永夜的黑暗...

这个就是我们要讲的互联网安全通信的保证:证书。经过以上的例子我们知道,我们要想身份验证就必须要有私钥密钥对,然后把公钥发布出去。但是我们怎么证明公钥就是我们自己的呢?自己说自己是显然是不太具有说服力的,就好比当小明在村里,大家都认识小明这个人,但是进城后,小明要想证明自己的身份就必须要有公安部发布的身份证。同样地,在互联网中,要想证明自己的主机身份,就必须要有权威机构发布的凭证,这个权威机构必须双方主机都认可,在互联网中这个权威机构我们叫做证书机构(CA certifying authority),这个凭证我们叫做证书。那么,证书机构是怎么给主机发证书呢?假设我们给主机A发证,整个过程大概是这样的:1.首先,证书机构必须要能证明自己,所以必须要生成有自己的密钥对,然后利用自己的私钥给自己签署证书,并把公钥公布出去。2.主机A生成一对密钥对,私钥自己保存3.主机A填写好自己的信息(公司、住址等)并附加上自己的公钥做成证书签署请求发送给CA4.CA拿到这份证书签署请求后,确认没有问题(一般人工审核),于是提取出客户的信息和公钥结合在一起,计算特征码,附加在后面(数据完整性,保证信息没被篡改),并对特征码用自己的私钥进行加密(验明CA的身份),生成证书回送给主机A以后,每次主机A要与其他主机安全通信的时候,主机A就把自己的证书发送给对方。对方收到证书后,如果认可证书的签署机构,那么就用CA的公钥对特征码解密,然后计算特征码对比,从而获取主机A的公钥。然而CA机构的证书又怎么获得呢?其实这是个死循环,在互联网里面没有绝对安全的通信。为了证明CA的身份,我们只有自己不辞辛苦跑一趟了。整个互联网的安全通信大概是这样,至于怎么创建ca,签署等,详见下篇 ssl协议与ca的创建
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  互联网加密通信