加密协议及其相关算法简介

  在TCP/IP设计之初,并没有考虑安全性问题。随着互联网的普及,人们发现,在这种开放式的传输体系之上,网络安全问题层出不穷。例如:有两台主机A、B,A、B之间从来没有通信过,其可能面临的安全问题有:

  1、TCP/IP协议数据传输采用的是明文传输(如:ftp,smtp,http,telnet等),因此数据的机密性无法得到保证

  2、在两台主机数据传输过程当中,传输的数据可能会出现被篡改的情况,数据的完整性无法得到保障;因此,当发现接收到的数据与对方发送过来的数据不一致时,应该拒绝使用这个数据;

  3、对于两台此前从来没有通信过的主机,需要有一种手段保证要通信的那台主机的身份与其声称的身份想匹配,其身份应该得到确认,即需要进行身份验证,避免第三方主机伪造身份来建立通信。

  因此,以下从这三个角度进行分析如何实现TCP/IP数据传输的安全性。

一、TCP/IP中保证数据安全性的分析

1、机密性

  数据的机密性即需保证两台主机之间的数据通信不能被第三方查看,而此前TCP/IP协议的数据都是明文传输的。因此,数据的机密性无法得到保证,此时引入加密机制即可保证数据的机密性。如:当A主机发送数据到B主机时,发送的数据需要通过某种转换规则转换为一串无序字符串,而当B主机接受到数据时,通过对应的转换规则,将无序字符串还原成数据,这个过程就叫做加密传输,转换规则即为密钥,生成转换规则的方法称为加密算法

  简要示例如下:

    加密:plaintext(明文)-->为了不让第三方获取这个信息,需要加密(转换规则)-->ciphertext(密文)

    解密:ciphertext(密文)-->转换规则-->palintext(明文)

  上述状况会出现一个问题,就是转换规则可能被窃取。而此时保证数据安全性的是密钥,而不是算法本身。因此,设计一个

2、数据完整性:

  若A-->B采用明文加密,数据易被篡改。如何保证数据不被篡改掉?

    A:plaintext:footprint(特征码)-->B

    Eve:plaintext2:footprint(被篡改)-->B

    B:plaintext:(footprint)(特征码加密)-->B

  如上述过程,为避免数据被篡改,可将特征码加密附加在数据尾部,当客户端接受数据时,用相同的算法将数据单向加密一次形成特征码,比较两个特征码是否相同,若相同,即数据未被篡改,若不同,将数据丢弃。

  但其中有一个问题,若A,B之间从来没有通信过,如何约定加密通信的密钥呢?此时就需要协商生成密钥:密钥交换(Internet Key Exchange,IKE,双方协商如何生成密钥,但是不让第三方得到密钥,需要特殊的互联网协议支持,最早也是今天被当做基本密钥交换算法(机制)的协议:Diffie-Hellman协议

  使用Diffie-Hellman协议协商过程(算法原理):

    A-->B协商生成一个大素数(只能被1和本身整除的数)p和一个生成数g,随后A在本机内部生成一个随机数x,B在本机内部生成一个随机数y,(A不知道B的y,B不知道A的x)而后A将计算结果g^x%p发送给B,B将计算结果g^y%p发送给A。在互联网上只能看到4个数字,分别为:p,g,g^x%p,g^y%p(因为离散对数的问题,很难倒推出x,y的值)。在A计算密钥:(g^y%p)^x=g^(xy)%p,在B计算密钥:(g^x%p)^y=g^(xy)%p。故而每一次数据通信,都可以通过响应的软件改变一次密钥,提高安全性。

    简述:

      A-->B

        p,g(大素数,生成数)

      A:x(随机数)

      B:y(随机数)

      A:g^x%p-->B

      B:g^y%p-->A

      g,p,g^x%p,g^y%p

      密钥交换算法举例:

        g=2

        p=7

        x=2

        y=3

3、身份认证

  发送方用自己的私钥加密数据,可用于保证身份认证;

二、几类常用的加密算法

1、对称加密算法

  分加密算法和解密算法,加密和解密使用同一个密钥。对称加密的好处在于算法的计算速度非常快,但其安全性几乎完全依赖于密钥本身(因为很多算法是公开的)。当通信对象很多时,无法有效的对密钥进行管理(每一对通信对象都有自己独有的密钥)。因此对称加密算法在一定程度上解决了数据机密性的问题,但没有办法帮用户解决密钥管理问题。

2、单向加密算法

  单向加密算法旨在提取数据的特征码,为保证数据的完整性,其特点如下:

    1、输入一样,输出必然相同;

    2、雪崩效应:输入的微小改变,将会引起结果的巨大改变;

    3、定长输出:无论原始数据多大,结果大小(长度)相同;

    4、不可逆:无法根据特征码还原数据。

3、公钥加密算法:非对称加密算法(主要用于身份验证)

  密钥对(公钥是通过某种机制从私钥中产生的,用公钥加密的数据,只能通过与之配对的私钥解密):

    公钥:p

    私钥:s

  发送方用自己的私钥加密数据,可用于保证身份认证;

  发送方用对方的公钥加密,可用于保证数据的机密性。

  公钥算法很少用来加密数据:(因为密钥太长,故而)速度太慢(一般来讲,公钥加密算法比对称加密算法慢3个数量级(1个数量级是10倍))

小结:(举例)

  上图中 ,A-->B使用A的私钥加密能够保证数据的完整性和实现身份验证,但不能保证数据的机密性。

  A,B能够实现通信的前提是A能够将公钥发送给B,那么A如何把公钥发送给B呢?而B又如何确定接受的公钥是A发送过来的呢?需要借助于第三方可信机构实现。A生成一对密钥(s/p),为了保证公钥传递给B的时候,B能够认可,需要把公钥传递给第三方机构,由第三方机构为其做公证。

  第三方机构制作一个数字证书,证书中包含A的用户名,地址,公钥,发证机构的戳(前面所述信息的特征码)等信息。而发证机关自己也有自己的证书,将自己的证书做成了密钥对,它先给自己发一个证,发证机关先去计算证书的特征码,并将特征码用自己的私钥加密附加在证书后面吗,故而只有拿到机构的公钥才能得到数据信息。哪个附加在证书后的特征码就叫做数字签名(戳)。

  同样的道理,B申请了自己的证书,B为了与A进行通信,B给A发送了请求,随后A将自己的证书发送给了B。B拿到证书后就得到了A的公钥了,B可通过发证机构的公钥(通过发证机构的证书可得到发证机构的公钥)对证书认证其合法性(数据完整性认证)。

  为保证数据的机密性,可通过对称加密实现,A生成一段随机数作为对称密钥,将数据和特征码加密,再使用B的公钥将对称密钥加密,这要对称密钥就只能通过B的私钥解密获得了。

  而这一切的基础都是基于对对方证书的信任。

  私钥可能会丢失,私钥丢失后,势必会导致证书的失效,任何基于此证书与此用户建立的通信都应该宣布失效,如何在互联网上实现这一问题呢?

    可通过CA实现,一个完整的CA应该维护一个证书吊销列表(CRL:保存此前曾发出的未过期但已经被撤销的证书)

原文地址:https://www.cnblogs.com/long-cnblogs/p/10439226.html

时间: 2024-10-11 04:38:23

加密协议及其相关算法简介的相关文章

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

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

TF-IDF算法简介

TF-IDF算法全称为term frequency–inverse document frequency.TF就是term frequency的缩写,意为词频.IDF则是inverse document frequency的缩写,意为逆文档频率. 该算法在信息处理中通常用来抽取关键词.比如,对一个文章提取关键词作为搜索词,就可以采用TF-IDF算法. 要找出一篇文章中的关键词,通常的思路就是,就是找到出现次数最多的词.如果某个词很重要,它应该在这篇文章中多次出现.于是,我们进行"词频"

AES算法简介

AES算法简介 一. AES的结构 1.总体结构 明文分组的长度为128位即16字节,密钥长度可以为16,24或者32字节(128,192,256位).根据密钥的长度,算法被称为AES-128,AES-192或者AE-256. 2.明文密钥组织方式 3.一些相关的的术语定义和表示 • 状态(State):密码运算的中间结果称为状态. • State的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有4行,列数记为Nb. Nb=分组长度(bits)÷ 32.Nb可以取的值为4,对应的分组长

加密类型及其相关算法

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

学习排序算法简介

学习排序算法简介 学习排序(Learning to Rank, LTR)是一类基于机器学习方法的排序算法. 传统经典的模型,例如基于TFIDF特征的VSM模型,很难融入多种特征,也就是除了TFIDF特征之外,就无法融入其他种类的特征了. 而机器学习的方法很容易融合多种特征,而且有成熟深厚的理论基础,参数也是通过迭代计算出来的,有一套成熟理论来解决稀疏.过拟合等问题. LTR方法大致可以分成三类: 1) Pointwise 单文档方法 2) Pairwise 文档对方法 3) Listwise 文

webrtc 的回声抵消(aec、aecm)算法简介(转)

webrtc 的回声抵消(aec.aecm)算法简介 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) 3.NLP(非线性滤波) 4.CNG(舒适噪声产生),一般经典aec算法还应包括双端检测(DT).考虑到webrtc使用的NLMS.NLP和CNG都属于经典算法范畴,故只做简略介绍,本文重点介绍webrtc的回声时延估计算法,这也是webrtc回声抵消算法区别一般算法(如视频会议中的算法)比较有特色的地方. 1

机器学习算法简介

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:吴懿伦 导语: 本文是对机器学习算法的一个概览,以及个人的学习小结.通过阅读本文,可以快速地对机器学习算法有一个比较清晰的了解.本文承诺不会出现任何数学公式及推导,适合茶余饭后轻松阅读,希望能让读者比较舒适地获取到一点有用的东西. 引言 本文是对机器学习算法的一个概览,以及个人的学习小结.通过阅读本文,可以快速地对机器学习算法有一个比较清晰的了解.本文承诺不会出现任何数学公式及推导,适合茶余饭后轻松阅读,希望能让读者比较舒适地获取到

【STL学习】堆相关算法详解与C++编程实现(Heap)

转自:https://blog.csdn.net/xiajun07061225/article/details/8553808 堆简介 堆并不是STL的组件,但是经常充当着底层实现结构.比如优先级队列(Priority Queue)等等. 堆是一种完全二叉树,因此我们可以用数组来存储所有节点.在这里的实现中,采用了一个技巧:将数组中索引为0的元素保留,设置为极大值或者为极小值(依据大顶堆或者小顶堆而定).那么当某个节点的索引是i时,其左子节点索引为2*i,右子节点索引为2*i+1.父节点是i/2

拓展 - Webrtc 的回声抵消(aec、aecm)算法简介

webrtc 的回声抵消(aec.aecm)算法简介 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) 3.NLP(非线性滤波) 4.CNG(舒适噪声产生),一般经典aec算法还应包括双端检测(DT).考虑到webrtc使用的NLMS.NLP和CNG都属于经典算法范畴,故只做简略介绍,本文重点介绍webrtc的回声时延估计算法,这也是webrtc回声抵消算法区别一般算法(如视频会议中的算法)比较有特色的地方. 1