加密的类型及其相关算法--密钥交换

前两节讲到了信息的加密和信息的完整性,可是无法解决密码(密钥)传输保密的问题。如何在不安全的网络上来进行协商密码(密钥)呢?

1976年,W.Diffie和M.Hellman在发表的论文中提出了公钥加密算法思想,但当时并没有给出具体的实施方案,原因在于没有找到单向函数(也就是消息摘要算法),但在该论文中给出了通信双方通过信息交换协商密钥的算法,即Diffie-Hellman密钥交换算法(简称为DH算法)。该算法的目的在于让消息的收发双方可以在安全的条件下交换密钥,以备后续加密/解密使用。因此,DH算法是第一个密钥协商算法,但仅能用于密钥分配,不能用于加密或者解密消息。

那么这是如何进行密钥交换的呢?

1、A与B协商一个大素数p和一个生成数g,在网络上都是公开的,任何人都可以截取到

2、此时A与B就偷偷的在背后搞小动作,A生成随机数x,B生成随机数y

3、A对g^x%p的结果发送给B

4、B对g^y%p的结果发送给A

5、网络上仅能看到p,g,g^x%p,g^y%p这四个数字

6、A能得到p,g,g^y%p,x

7、B能得到p,g,g^x%p,y

8、此时A与B分别开始计算,A就是(g^y%p)^x % p,B就是(g^x%p)^y %p,这个结果就是A与B协商的结果了。

此图来自网络

既然如此,我们来做数学题验证一下吧。

1、A与B协商了p=23和g=5

2、A生成一个随机数x=3,计算A=g^a%p并发送给B

A=5^3%23=10

3、B生成一个随机数y=5,计算B=g^b%p并发送给A

B=5^5%23=20

4、将A得到的信息进行计算密码(密钥)K1=(g^b%p)^x%p

K1=20^3%23=19

5、将B得到的信息进行计算密码(密钥)K2=(g^a%p)^x%p

K2=10^5%23=19

此时就可以得到K1=K2=19,这个就是A与B进行密钥交换了。

每次A与B进行通讯时可以重新生成密码(密钥)。原本这种算法,想通过暴力破解都很难,每次通讯都重新协商新的密码,这样就极大减少了被暴力破解的可能。

事到如此,我们能够放心了吗?不!!!E这个坏家伙又跑出来了,A与B每次通讯都是使用随机密码,那么还是A还是无法验证通讯的对象就是B,E可以伪装成B的嘛。E又在从中作梗,截取A发往B的信息,协商密码,然后篡改之后,又发起与B通讯,协商密码。这样我们又掉进坑里了,好像永远都无法解决通讯安全的问题。那么还有没有一种机制能够帮助到我们呢?欲知详情,请继续关注下回讲解。^_^

原文地址:http://blog.51cto.com/lythjq/2088885

时间: 2024-11-06 11:42:29

加密的类型及其相关算法--密钥交换的相关文章

加密的类型及其相关算法--简介

在计算机的发展之初,互联网发展是非常缓慢,普及面非常小,能实现两台机之间通讯已经是非常了不起的了.所以在TCP/IP协议开发的时候并没有过多的考虑安全性,都是明文传输的.随着互联网的发展,同时也验证了"林子大了之啥鸟都有"的理论,在互联网存在了各种网络攻击,使得两机之间通讯的安全问题日益突出. 假设A与B之间需要相互通信.在此之前A与B是没有通信过的,两者之间需要建立通讯的时候会面临什么风险呢? 假设A与B之在谈恋爱,他们之间通讯是通过明信片联系的,那么在明信片投递的过程中,每个环节的

加密的类型及其相关算法--对称加密

上节我们讲到加密所围绕的三个方面:机密性.完整性.身份验证 为了实现A与B之间通讯是机密,让第三者即便截获了信息都无法看得懂,那就要对明文数据进行加密. 我们知道加密其实就是运用一些算法去实现的(这也就是为啥计算机与数学家之间关系是这么紧密的了,计算机就是各种逻辑运算^_^).例如最简单的算法就例如将a-e向又移动5位成为f-j,那么解密就是向左移动5位,这样加密和解密使用同一套算法的就称之为对称加密算法. 又例如,大家有没有看过<风语者>里纳瓦霍密码,"战斗机"被称为&q

加密的类型及其相关算法--公钥加密(非对称加密)

前面讲了几节,对称加密(解决:机密性),单向加密(解决:完整性),密钥交换(解决:完整性).但总是能被E在从中捣乱,有没有一种办法能解决验证对方身份的方法呢? 这个时候公钥加密算法出来了.众所周知公钥加密算法是密钥对:公钥(公开出去的,从私钥中按照某种算法或机制提取出来):私钥(自己随机生成的,一般密钥都很长,1024,2056等). 公钥加密本身也可以用于信息加密,假设A将信息用自己的私钥进行加密,并传递给B,B用A的公钥解密,既然是公钥,那么在网络上传输的时候,E这个坏家伙也能得到A的公钥,

加密的类型及其相关算法--单向加密

上一节我们讲到对称加密能解决通讯机密性的问题,可是无法保证信息的完整性. 那我们引入一种算法--单向加密.单向加密就如人的指纹,会独一无二. A向B传递信息的时候会在末尾附加这个信息的单向加密结果,B接收到以后用同样的单向加密算法,计算加密的结果与传递过来的密码对比.如果一致,证明信息是完整的. 那么单向加密需要有什么特性呢? 1.输入的一样,计算结果必定是一样 2.雪崩效应,一点点的不同,就会导致计算结果完全不同 3.定长输出,无论原信息的大小,输出的结果长度必定一致 4.不可逆,不可以通过结

linux学习之路之加密类型及其相关算法

加密类型及其相关算法 随着互联网越演越烈,互联网上的各种攻击层出不穷,因此在互联网上相互传递的信息越来越不安全,因此为了防止用户在互联网上传递的数据被窃取,因此我们很有必须加强传递的数据的安全性. 数据的安全性主要包括以下三个方面: 数据的机密性:保证传递的数据不被读取 要想使传递的数据不被读取,可以对这些数据进行加密,因为默认这些数据是以明文来传递的 整个加密过程可以这么来理解: 加密:plaintext--->转换规则--->ciphertext 解密:ciphertext--->转

加密类型及其相关算法

在互联网通信过程中,如何保证数据的安全性? 在通信过程中,数据安全主要从三个方面考虑:机密性(数据的内容不能被窃取) 完整性(数据的内容不能被修改) 身份验证(确定通信双方的身份) 加密类型:1.对称加密,加密和解密使用同一个密钥,但是密钥如何安全传输比较重要,对称加密数度较快,适于加密数据 2.单向加密,提取数据指纹,主要用于保证数据的完整性 单向加密的特点:输入相同则输出一定相同 雪崩效应:输入的微小改变会引起结果的巨大反差 定长输出 3.非对称加密,使用一对密钥(public-key和pr

加密类型以及相关算法

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

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(转)

第 2 部分: 深入推荐引擎相关算法 - 协同过滤 本系列的第一篇为读者概要介绍了推荐引擎,下面几篇文章将深入介绍推荐引擎的相关算法,并帮助读者高效的实现这些算法. 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.它以其方法模型简单,数据依赖性低,数据方便采集 , 推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”.本文将带你深入了解协同过滤的秘密,并给出基于 Apache Mahout 的协同过滤算法的高效实现.Apache Mahout 是 ASF 的一个

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类

聚类分析 什么是聚类分析? 聚类 (Clustering) 就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大.所以,在很多应用中,一个簇中的数据对象可以被作为一个整体来对待,从而减少计算量或者提高计算质量. 其实聚类是一个人们日常生活的常见行为,即所谓"物以类聚,人以群分",核心的思想也就是聚类.人们总是不断地改进下意识中的聚类模式来学习如何区分各个事物和人.同时,聚类分析已经广泛的应用在许多应用中,包