当前位置: 首页 > 科技观察

这篇文章将带你深入了解HTTP安全问题

时间:2023-03-19 22:06:25 科技观察

上一篇文章讲了cookie的内容,但也提出了一些问题,比如HTTP是如何处理安全问题的?在此,本文为您介绍HTTP安全问题。01.HTTPSHTTPS是一种比较流行的HTTP安全形式。它由Netscape首创,所有主流浏览器和服务器都支持该协议。让我们来看看这张照片。HTTPS方案的URL以https://开头而不是http://,所以可以看出一个网页是通过HTTPS而不是HTTP访问的(有些浏览器还会显示一些符号安全提示)使用HTTPS时,所有HTTP请求和响应数据在通过网络发送之前都经过加密。HTTPS在HTTP之下提供传输级加密安全层。我们可以看看围绕HTTP和HTTPS的层。大多数硬编码和解码工作都在SSL或TLS库中完成,因此Web客户端和服务器在使用安全HTTP时不需要过多修改其协议处理逻辑。在大多数情况下,只需将TCP调用替换为SSLI/O调用,并添加一些其他调用来配置和管理安全信息。02.DigitalEncryption数字加密很容易理解。你看过一些“神剧”吗?抗战时期的电报电码都是记事本形式,电码本的不同字母对应不同的数据。信息,然后将相应的数字拼接在一起。这只是我们对数字密码的简单理解。官方声明:这里的编码器和解码器不就是“神剧”中密码本的存在吗?使用密码生成机密信息已有数千年的历史。传说JuliusCaesar使用了一种三字符循环移位密码,其中消息中的每个字符都被字母表中后面三个位置的字符替换。在现代字母表中,“A”会被“D”代替,“B”会被“E”代替,等等。以“旋转3”为例,密码可以将消息“午夜码头见”编码为密文“phhwphdwwkhslhudwplgqljkw”。1通过解码,通过旋转字母表中的-3个字符,可以将密文解密回原始明文消息。但是我们也可以同时想到缺点。密码本很容易被对方得到,编码机也很容易被敌人得到。战争年代,密码本是必备的。所以大多数机器都有可以设置为很多不同值的拨号盘来改变密码的工作方式。即使机器被盗,如果没有正确的拨号设置(键值),解码器也无法工作。这些加密参数称为密钥。只有将正确的密钥输入密码机,才能正确执行解密过程。密码密钥使密码机看起来像是多个虚拟密码机,每个都有不同的密钥值,因此表现不同。上图显示了使用不同密钥的旋转N字符密码。.密钥越长,编码组合越多,随机猜测密钥破解密码的难度就越大。给定明文消息P、编码函数E和数字编码密钥e,可以生成如下图所示的编码密文C。通过解码函数D和解码密钥d,可以将密文C解码为原始明文P。当然,编码/解码函数互为反函数,解码P的编码会返回原始信息P.03.对称密钥加密让我们仔细看看密钥和密码如何协同工作。许多数字加密算法称为对称密钥密码术,因为它们使用相同的密钥值(e=d)进行编码和解码。我们将它们统称为密钥k。在对称密钥加密技术中,发送方和接收方必须共享相同的密钥k才能进行通信。发送方用共享密钥对消息进行加密,并将得到的密文发送给接收方。接收方收到密文并对其应用解密函数和相同的共享密钥以恢复原始明文。我们看下图:对称密钥加密算法使用相同的密钥进行编码/解码。流行的对称密钥加密算法包括:DES、Triple-DES、RC2和RC4。3.1、密钥长度和枚举攻击在很多情况下,编码/解码算法是众所周知的,所以密钥是唯一保密的东西。一个好的加密算法会迫使攻击者尝试每一个可能的密钥来破解密码。使用暴力尝试所有键值的方法称为枚举攻击(enumerationattack)。如果只有几个可能的键值,恶意人员最终可以通过暴力破解所有值来破解代码。但是如果有大量可能的密钥值,他可能要花几天、几年,甚至无限长的时间遍历所有的密钥,才能找到能破解密码的那个。可用键值的数量取决于键中的位数,以及有多少可能的键是有效的。一个8位的密钥只有256个可能的密钥值,一个40位的密钥可以有240个可能的密钥值(大约一万亿个密钥),一个128位的密钥可以产生大约340000000000000000000000000000000000000个可能的键值。但也有例外。并非所有加密技术中的所有密钥值都是有效的。例如,在最著名的非对称加密算法RSA中,有效密钥必须以某种方式与质数相关。只有少数可能的键值具有这个属性。在传统的对称密钥加密中,40位密钥对于小的、不重要的交易来说足够安全。但是今天每秒可以执行数十亿次计算的高速工作站可以破解这个问题。相反,对于对称密钥密码术,128位密钥被认为非常强大。事实上,长密钥对密码安全的影响如此重要,以至于美国政府甚至对使用长密钥的加密软件实施出口管制,以防止潜在的敌对组织创建国家安全局(NSA)无法自行破译的密码.《AppliedCryptography》一书中有一张表记录了1995年通过猜测所有密钥破解一个DES密码所需的时间。也许这个数据不是很适用。现在,计算机的速度呈指数增长,但是我们也可以把这个数字乘以相应的倍数,还是比较有参考价值的。对称密钥加密的缺点之一是发送方和接收方必须拥有共享密钥才能相互通信。比如你想和淘宝卖家建立私密对话,你需要和淘宝建立私密秘钥,才能安全下单。您需要一种方法来生成密钥并记住它。网络上的人就是这样,所以他们可能会记住太多的东西,这是一个噩梦般的存在。于是就出现了下面的内容,请看下面:04.公钥加密公钥加密技术并不是对每一对主机使用单独的加密/解密密钥,而是使用两个非对称密钥:一个和一个用于对主机消息进行编码,另一个用于解码主机消息。编码密钥是已知的(因此称为公钥加密),但私有解密密钥只有主机知道。每个人都可以找到特定主机的公钥,密钥的建立变得更加容易。但解码密钥是保密的,因此只有接收端才能解码发送给它的消息。公钥密码术是非对称的,使用不同的密钥进行编码和解码。然后我们需要比较对称密钥加密和公钥加密。所有公钥非对称加密系统面临的共同挑战是:公钥(公开且对所有人可用);一小段截获的密文(可通过嗅探网络获得);报告文本及其相关的密文(您可以通过对任何文本运行加密器来获得它)。即使知道这三个条件,也无法计算出秘密的私钥。这就是公钥非对称加密系统将面临的挑战。RSA算法是一种流行的公钥加密系统,它满足所有这些条件。关于RSA算法,本文先不深究,等我看了密码学的书再给大家讲解。05.数字签名我们已经谈到了对称和非对称密钥的加密/解密。让我们谈谈数字签名是什么意思。百度百科:数字签名(又称公钥数字签名)是只有信息的发送者才能生成,他人无法伪造的数字串。这个数字串也是信息发送者所发送信息真实性的有效证明。它是一种验证数字信息的方法,类似于写在纸上的普通物理签名,但使用公钥密码学领域的技术实现。一组数字签名通常定义两个互补的操作,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术和数字抽象技术的应用。其实,说白了,数字签名就是附加在消息上的一种特殊的加密校验和。让我们用一个例子来解释。我们先看一张图,节点A是如何给节点B发送消息并签名的。节点A提取可变长度的消息作为固定长度的摘要。节点A对摘要应用“签名”函数,它将用户的私钥作为参数。因为只有用户知道私钥,所以正确的签名函数会声明签名者是它的所有者。图中,由于解码函数D包含了用户的私钥,我们将其作为签名函数。一旦计算出签名,节点A将其附加到消息的末尾,并将消息和签名都发送给B。在接收端,如果节点B需要确认消息确实是节点A写的并且没有被篡改,节点B可以检查签名。节点B接收用私钥编码的签名,并使用公钥应用反函数。如果解压后的摘要与节点B自己的摘要版本不匹配,要么消息在传输过程中被篡改,要么发送方没有节点A的私钥(即它不是节点A)。看懂图片了,是不是很容易理解数字签名?06.数字证书看看百度百科的解释:数字证书是指由CA(电子认证服务)机构签发的电子文件。它是一串能够表示网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方法,因此数字证书也称为数字身份证。数字证书以加密或解密的形式为网络用户在计算机网络通信中保证信息和数据的完整性和安全性。数字证书其实没有我们想象的那么难。数字证书的基本结构是公钥PKI,它使用一对密钥来实现加密和解密。密钥包括私钥和公钥。私钥主要用于签名和解密,由用户定义,只有用户自己知道;公钥用于签名验证和加密,可由多个用户共享。HTTPS建立安全的Web事务后,现代浏览器会自动获取它们所连接的服务器的数字证书。如果服务器没有证书,安全连接将失败。服务器证书包含许多字段,包括:网站的名称和主机名;网站的公钥;签署机构的名称;signaturesfromthesigningauthority浏览器在收到证书时检查签名机构。1如果这个组织是一个非常权威的公共签名机构,浏览器可能已经知道它的公钥(浏览器会预装许多签名机构的证书)。在对签名机构一无所知的情况下,浏览器无法确定它是否应该信任签名机构,它通常会向用户显示一个对话框,以查看他是否信任签名颁发者。签名颁发者可能是本地IT部门或软件供应商。容易理解吗?07.参考资料《图解 HTTP》《HTTP 权威指南》