第七十六讲——加密类型机器算法(粗略涉及) 本文共有15401个字,关键词: TCP/IP中不提供任何加密协议,传输都是以明文的方式,就像明信片的方式传输,其他人可以查看其中的信息。 数据传输的机密性:明文传输有(ftp/http/smtp/telent) 数据传输的完整性:无论是别人篡改,还是在传输过程中由于信号问题导致数据错乱,我们都拒绝使用这样的数据,这样就能够保证数据的完整性,但是数据的完整性并不意味着全部的问题。 身份的认证:即身份的验证,在建立联系的时候能够有一种有效的手段来保证它就是所声称的那个人,这个过程就是身份验证的问题。 如何保证数据的机密性?一般来说,我们会对数据进行一定程度的处理,让人从表面的数据上猜测不出来其中的意思,这样的过程就是加密,加密本身就是一种转换规则,这种转换规则能够将我们输入的数据转换成一堆杂乱无章的难以识别的数据。 加密过程:明文(plaintext)---->(转换规则) 密文(ciphertext) 解密过程:密文(ciphertext) --->(转换规则) 明文(plaintext) 转换算法: 互联网安全体系结构设计中的一种基本法则,保证数据机密性的不是算法本身,而是秘钥,我们是依靠秘钥来保证数据的安全性的,这样一来即使得到了转换的规则但是没有秘钥也无法将密文转换成明文。 我们更换密钥是相当简单的,但是更换算法相当麻烦,而且算法是有限的,也不是说能设计就能够设计出来的,转换算法本身是复杂的数学运算实现的,一般来说,算法都是由数学家设计的,设计一个算法需要很长的时间,需要考虑各种因素,还要进行全方位的测试,还要考虑到计算能力的发展速度,几十年内会不会被破解,所以数据的安全性不是依赖算法,二是依赖秘钥,当然,算法是基础。 最初的时候TCP/IP协议设计的时候只是为了将两台计算机连接起来,并没有考虑到安全性的问题。 先讲一讲对称加密算法: 为什么叫对称加密算法?原因就是这个算法提供一个黑盒子,但是需要用户提供密钥,加密解密都是同一个密钥,所以才称为对称加密算法。 对称加密算法的特点是加密速度很快,但是其安全性几乎完全依靠秘钥。在通信对象很多的时候,对称加密算法无法完成有效的秘钥管理。 所以说对称加密算法在一定程度上解决了数据机密性的问题,但是没有办法帮助用户解决秘钥有效管理的问题。 数据完整性的问题:保证数据的完整性。 使用单项加密提取数据的指纹(特征码),将特征码附加在明文的后面,而后进行传递明文,以确定这串明文还是之前的那一段,没有被修改过。那么怎么去确定这段明文没有被修改过? 我们可以使用同样的加密算法对明文进行特征码的提取,并与接的特征码进行比较,如果特征码相同,则数据没有被修改。 单项加密的特性: 输入一样,输出必然一样。 雪崩效应,输入的一些微小改变,将会引起结果的巨大改变,避免密码的暴力破解。 定长输出,无论原始数据的大小,结果都是相同的 不可逆,单项加密的过程是不可逆的,也就是说无法根据特征码还原数据。 但是我们在传输的过程中有可能会因为传输设备的原因造成特征码或者数据的改变,造成提取的特征码与原特征码不相符,这样的情况数据就会拒绝接受。 我们需要防范中间人攻击,所以数据机密性手段并不能保证机密性本身,还需要借助额外的其他机制,将生成的特征码加密处理,用于数据完整性的校验。 还可以协商生成密码:密钥交换(IKE internet key exchange) Diffie-Heliman协议,是著名的互联网交换协议算法,其交换的过程如下: A----->B p、g(大素数,生成数[生成其它数]) p、g在换联网差UN蔬果称中国是可见的。 A主机在本地选择一个随机数x B主机在本地选择一个随机数y 且A主机不知道y,B不知道x。 A:g^x%p g的x次方对p取模 B:g^y%p g的y次方对p取模 根据离散对数原理,此时A只知道x,但是获取到了g^y%p的值B只知道y,但是获取到了g^x%p的值。由此我们可以列出一组方程 A:(g^y%p)^x=g^xy%p B:(g^x%p)^y=g^xy%p 我们可以看到,经过计算后A和B主机得到了相同的值,这个值就是秘钥。 这种算法的出现使得双方的秘钥交换变得十分简便,虽然解决了密码的问题但是却不能进行身份的验证。这种需求催生出了非对称加密算法的产生,也就是公钥算法。 公钥是从私钥中提取出来的,为了保证其安全性,私钥一般很长,使用公钥加密的只能使用私钥解密,使用私钥加密的只能使用公钥解密。 非对称加密算法中,公钥是公开的,所有人都知道,发送方使用的私钥能够实现身份的验证,发送方使用对方的公钥加密可以保证数据的机密性,公钥算法很少用来加密数据,因为其加密速度太慢,一般用于实现身份的验证。 于是,有了公钥算法之后,我们就可以将数据的特征码使用私钥加密,所有人都能够解密,但是不能够还原回去,这样结合起来就完成了数据的完整性和身份的验证。 但是公钥的获取成了一个难题,怎么在能知道这个公钥是不是对方的?为了解决这个问题,借助第三方机构进行认证。用户将自己的公钥提供给第三方机构,由第三方机构进行公证,制作一个数字证书,通信双方都有相同的证书机构发证机关的安全性很重要,因为我们需要自己去copy一份,合作和提交自己的公钥制作好之后下发,但是这个是收费的服务,而且费用不菲。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-02-14 评论 2316 次浏览