美文网首页
第十四章:安全HTTP

第十四章:安全HTTP

作者: 闫鹏飞写字的地方 | 来源:发表于2021-10-12 11:18 被阅读0次

    14.1保护HTTP的安全
    人们会用Web事务来处理--些很重要的事情。如果没有强有力的安全保证,人们就无法安心地进行网络购物或使用银行业务。如果无法严格限制访问权限,公司就不能将重要的文档放在Web服务器上。Web需要一种安全的HTTP形式。

    HTIP的安全版本要高效、可移植且易于管理,不但能够适应不断变化的情况而且还应该能满足社会和政府的各项要求。我们需要一种能够提供下列功能的HTTP安全技术。·服务器认证(客户端知道它们是在与真正的而不是伪造的服务器通话)。
    ·客户端认证(服务器知道它们是在与真正的而不是伪造的客户端通话)。·完整性(客户端和服务器的数据不会被修改)。
    ·加密(客户端和服务器的对话是私密的,无需担心被窃听)。
    ·效率(一个运行的足够快的算法,以便低端的客户端和服务器使用)。·普适性(基本上所有的客户端和服务器都支持这些协议)。
    ·管理的可扩展性(在任何地方的任何人都可以立即进行安全通信)。·适应性(能够支持当前最知名的安全方法)。
    ·在社会上的可行性(满足社会的政治文化需要)。

    SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层应用层之间对网络连接进行加密。

    image.png

    14.2数字加密
    在详细探讨HTTPS之前,我们先介绍一些SSL和HTTPS用到的加密编码技术的背景知识。在接下来的几节里,我们会对数字加密的本质进行一个快速的入门性介绍。如果你已经掌握了数字加密的技术和术语,可以直接阅读14.7节。
    在这个数字加密技术的入门介绍中,我们会讨论以下内容。
    ·密码
    对文本进行编码,使偷窥者无法识别的算法。·密钥
    改变密码行为的数字化参数。·对称密钥加密系统
    编/解码使用相同密钥的算法。·不对称密钥加密系统
    编/解码使用不同密钥的算法。·公开密钥加密系统
    一种能够使数百万计算机便捷地发送机密报文的系统。·数字签名
    用来验证报文未被伪造或篡改的校验和。·数字证书
    由一个可信的组织验证和签发的识别信息。
    14.2.1 密码编制的机制与技巧
    密码学是对报文进行编/解码的机制与技巧。人们用加密的方式来发送秘密信息已经有数千年了。但密码学所能做的还不仅仅是加密报文以防止好事者的读取,我们还可以用它来防止对报文的篡改,甚至还可以用密码学来证明某条报文或某个事务确实出自你手,就像支票上的手写签名或信封上的压纹封蜡一样。

    14.2.2密码
    密码学基于一种名为密码((cipher)的秘密代码。密码是一套编码方案——一种特殊的报文编码方式和一种稍后使用的相应解码方式的结合体。加密之前的原始报文通常被称为明文(plaintext或cleartext)。使用了密码之后的编码报文通常被称作密文(ciphertext)。图14-3显示了一个简单的例子。


    image.png

    用密码来生成保密信息已经有数千年了。传说尤利乌斯·凯撒(Julius Caesar)曾使用过一种三字符旋转密码,报文中的每个字符都由字母表中三个位置之后的字符来取代。在现代的字母表中,“A”就应该由“D”来取代,“B”就应该由“E”来取代,以此类推。
    比如,在图14-4中,用rot3(旋转3字符)密码就可以将报文“meet me at the pierat midnight”编码为密文“phhw ph dw wkh slhu dw plgqljkw”。'通过解码,在字母表中旋转-3个字符,就可以将密文解密回原来的明文报文。


    image.png

    14.2.3密码机
    最初,人们需要自己进行编码和解码,所以起初密码是相当简单的算法。因为密码很简单,所以人们通过纸笔和密码书就可以进行编解码了,但聪明人也可以相当容易地“破解”这些密码。
    随着技术的进步,人们开始制造一些机器,这些机器可以用复杂得多的密码来快速、精确地对报文进行编解码。这些密码机不仅能做一些简单的旋转,它们还可以替换字符、改变字符顺序,将报文切片切块,使代码的破解更加困难。2
    14.2.4 使用了密钥的密码
    编码算法和编码机都可能会落入敌人的手中,所以大部分机器上都有一些号盘,可以将其设置为大量不同的值以改变密码的工作方式。即使机器被盗,没有正确的号盘设置(密钥值),解码器也无法工作。3
    这些密码参数被称为密钥(key)。要在密码机中输入正确的密钥,解密过程才能正确进行。密码密钥会让一个密码机看起来好像是多个虚拟密码机一样,每个密码机都有不同的密钥值,因此其行为都会有所不同。
    图14-5显示了使用密钥的密码实例。加密算法就是普通的“旋转–N字符”密码。N的值由密钥控制。将同一条输入报文“meet me at the pier at midnight”通过同一台编码机进行传输,会随密钥值的不同产生不同的输出。现在,基本上所有的加密算法都会使用密钥。
    14.2.5数字密码
    随着数字计算的出现,出现了以下两个主要的进展。
    ·从机械设备的速度和功能限制中解放出来,使复杂的编/解码算法成为可能。支持超大密钥成为可能,这样就可以从一个加密算法中产生出数万亿的虚拟加密算法,由不同的密钥值来区分不同的算法。密钥越长,编码组合就越多,通过随机猜测密钥来破解代码就越困难。


    image.png

    与金属钥匙或机械设备中的号盘设置相比,数字密钥只是一些数字。这些数字密钥值是编/解码算法的输入。编码算法就是一些函数,这些函数会读取一块数据,并根据算法和密钥值对其进行编/解码。
    给定一段明文报文P、一个编码函数E和一个数字编码密钥e,就可以生成一段经过编码的密文C(参见图14-6)。通过解码函数D和解码密钥d,可以将密文C解码为原始的明文P。当然,编/解码函数都是互为反函数的,对P的编码进行解码就会回到原始报文P上去。

    image.png

    14.3.1密钥长度与枚举攻击
    保持密钥的机密状态是很重要的。在很多情况下,编/解码算法都是众所周知的,因此密钥就是唯一保密的东西了。
    好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解代码。用暴力去尝试所有的密钥值称为枚举攻击(enumeration attack)。如果只有几种可能的密钥值,居心不良的人通过暴力遍历所有值,就能最终破解代码了。但如果有大量可能的密钥值,他可能就要花费数天、数年,甚至无限长的时间来遍历所有的密钥,去查找能够破解密码的那一个。
    可用密钥值的数量取决于密钥中的位数,以及可能的密钥中有多少是有效的。就对称密钥加密技术来说,通常所有的密钥值都是有效的。'8位的密钥只有256个可能的密钥值,40位的密钥可以有2*个可能的密钥值(大约是一万亿个密钥),128位的密钥可以产生大约340 000 000 o00 000 000 000 000 000 000 000 000 000个可能的密钥值。

    14.4公开密钥加密技术
    公开密钥加密技术没有为每对主机使用单独的加密/解密密钥,而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来对主机报文解码。编码密钥是众所周知的(这也是公开密钥加密这个名字的由来),但只有主机才知道私有的解密密钥(参见图14-8)。这样,每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单。但解码密钥是保密的,因此只有接收端才能对发送给它的报文进行解码。

    image.png

    14.4 公开密钥加密技术
    公开密钥加密技术没有为每对主机使用单独的加密/解密密钥,而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来对主机报文解码。编码密钥是众所周知的(这也是公开密钥加密这个名字的由来),但只有主机才知道私有的解密密钥(参见图14-8)。这样,每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单。但解码密钥是保密的,因此只有接收端才能对发送给它的报文进行解码。

    image.png

    14.4.1RSA
    所有公开密钥非对称加密系统所面临的共同挑战是,要确保即便有人拥有了下面所有的线索,也无法计算出保密的私有密钥:
    注7:我们稍后会看到,大部分公开密钥查找工作实际上都是通过数字证书来实现的,但如何找到公开密钥
    现在并不重要——只要知道可以在某个地方公开获取就行了。
    ·公开密钥(是公有的,所有人都可以获得)﹔
    一小片拦截下来的密文(可通过对网络的嗅探获取)﹔
    ·一条报文及与之相关的密文(对任意一段文本运行加密器就可以得到)。
    RSA算法就是一个满足了所有这些条件的流行的公开密钥加密系统,它是在MIT发明的,后来由RSA 数据安全公司将其商业化。即使有了公共密钥、任意一段明文、用公共密钥对明文编码之后得到的相关密文、RSA算法自身,甚至RSA实现的源代码,破解代码找到相应的私有密钥的难度仍相当于对一个极大的数进行质因数分解的困难程度,这种计算被认为是所有计算机科学中最难的问题之一。因此,如果你发现了一种能够快速地将一个极大的数字分解为质因数的方法,就不仅能够入侵瑞士银行的账户系统,而且还可以获得图灵奖了。
    RSA 加密技术的细节中包括很多繁琐的数学问题,我们的介绍不会那么深入。你不需要拥有数论方面的博士学位,有大量的库可以用来执行RSA算法。

    14.5数字签名
    到目前为止,我们已经讨论了各种使用对称和非对称密钥加/解密保密报文的密钥加密技术。
    除了加/解密报文之外,还可以用加密系统对报文进行签名(sign),以说明是谁编写的报文,同时证明报文未被篡改过。这种技术被称为数字签名(digital signing),对下一节将要讨论的因特网安全证书系统来说非常重要。

    签名是加了密的校验和
    数字签名是附加在报文上的特殊加密校验码。使用数字签名有以下两个好处。
    ·签名可以证明是作者编写了这条报文。只有作者才会有最机密的私有密钥,"因
    此,只有作者才能计算出这些校验和。校验和就像来自作者的个人“签名”一样。·签名可以防止报文被篡改。如果有恶意攻击者在报文传输过程中对其进行了修改,校验和就不再匹配了。由于校验和只有作者保密的私有密钥才能产生,所以攻击者无法为篡改了的报文伪造出正确的校验码。

    14.6数字证书
    本节将介绍因特网上的“ID卡”—--数字证书。数字证书(通常被称作“certs”,有点像certs 牌薄荷糖)中包含了由某个受信任组织担保的用户或公司的相关信息。我们每个人都有很多形式的身份证明。有些ID,比如护照和驾照,都足以在很多场合证明某人的身份。例如,你可以用美国的驾照在新年前夜搭乘前往纽约的航班,在你到那儿之后,接着用它来证明你的年龄,这样你就能和朋友们一起喝酒了。受信程度更高的身份证明,比如护照,是由政府在特殊的纸上签发并盖章的。很难伪造,因此可以承载较高的信任度。有些公司的徽章和智能卡中包含有电子信息,以强化使用者的身份证明。有些绝密的政府组织甚至会对你的指纹或视网膜毛细血管模式进行匹配以便确认你的ID !
    有些形式的ID,比如名片,相对来说更容易伪造,因此人们不太信任这些信息。虽然足以应付职场交流,但申请住房贷款时,可能就不足以证明你的就业情况了。

    14.7.4SSL握手
    在发送已加密的HTTP报文之前,客户端和服务器要进行一次SSL握手,在这个握手过程中,它们要完成以下工作:
    ·交换协议版本号;
    ·选择一个两端都了解的密码,·对两端的身份进行认证;
    ·生成临时的会话密钥,以便加密信道。

    相关文章

      网友评论

          本文标题:第十四章:安全HTTP

          本文链接:https://www.haomeiwen.com/subject/fbrdoltx.html