Http定义了两个官方认证:基本认证和摘要认证,两者遵循相同的流程:
1 客户端发起GET请求
2 服务器响应401 Unauthorized,WWW-Authenticate指定认证算法,realm指定安全域
3 客户端重新发起请求,Authorization指定用户名和密码信息
4 服务器认证成功,响应200,可选Authentication-Info
基本认证
将“用户名:密码”打包并采用Base-64编码
缺点:密码很容易被窥探,可以挟持编码后的用户名、密码信息,然后发给服务器进行认证;
可以与SSL配合,隐藏用户名密码;
摘要认证
不以明文发送密码,在上述第2步时服务器响应返回随机字符串nonce
而客户端发送响应摘要 =MD5(HA1:nonce:HA2),其中HA1=MD5(username:realm:password),HA2=MD5(method:digestURI)
在 HTTP 摘要认证中使用 MD5 加密是为了达成"不可逆的",也就是说,当输出已知的时候,确定原始的输入应该是相当困难的。
如果密码本身太过简单,也许可以通过尝试所有可能的输入来找到对应的输出(穷举攻击),甚至可以通过字典或者适当的查找表加快查找速度。
HTTP摘要认证的安全性增强如下:
1 密码并非直接在摘要中使用,而是 HA1 = MD5(username:realm:password)。这就允许一些实现(如,JBoss DIGESTAuth)仅存储 HA1 而不是明文密码。
2 在 RFC 2617 中引入了客户端随机数 nonce,这将使客户端能够防止选择明文攻击(否则,像Rainbow table这类东西就会成为摘要认证构架的威胁)。
3 服务器随机数 nonce 允许包含时间戳。因此服务器可以检查客户端提交的随机数 nonce,以防止重放攻击。
4 服务器也可以维护一个最近发出或使用过的服务器随机数nonce的列表以防止重用。
在安全性方面,摘要访问认证有几个缺点:
1 RFC 2617 中的许多安全选项都是可选的。如果服务器没有指定保护质量(qop),客户端将以降低安全性的早期的 RFC 2069 的模式操作。
2 摘要访问认证容易受到中间人攻击。举例而言,一个中间人攻击者可以告知客户端使用基本访问认证或早期的RFC 2069摘要访问认证模式。
进一步而言,摘要访问认证没有提供任何机制帮助客户端验证服务器的身份。
一些服务器要求密码以可逆加密算法存储。但是,仅存储用户名、realm、和密码的摘要是可能的。[2]
它阻止了使用强密码哈希函数(如bcrypt)保存密码(因为无论是密码、或者用户名、realm、密码的摘要都要求是可恢复的)。
介绍https之前需要了解相关名词
密钥:改变密码行为的数字化参数;
对称密钥加密:编码、解码采用同一个密钥,通信双方对话前一定要有一个共享的保密密钥;破解者需要遍历每一个可能密钥;
公开密钥加密:使用两个非对称密钥,分别用于编码和解码,前者是公共的,后者只有本地主机保存;RSA为MIT发明的公开密钥加密系统;
数字签名
即加密的校验和,可防止报文被篡改;
1 A将变长报文提取为定长摘要,对其应用签名函数(使用用户的私钥作参数),将签名附加在报文末尾;
2 B接收报文时对签名进行检查,使用公开密钥进行反函数,若拆包后摘要与明文摘要不匹配,说明报文被篡改或没有使用A的私钥;
数字证书
包含:对象名;过期时间;证书发布者;公开密钥;数字签名;大部分证书都使用X.509 V3格式;
通过https建立一个安全web事务后,浏览器会主动获取服务器的数字证书,若没有证书则安全连接失败;
HTTPS
将http同一组基于证书的加密技术组合一起,SSL介于http和tcp之间,负责http报文的加密和解密;
若URL为https,客户端打开一条到服务器443端口的连接,以二进制格式与服务器握手交换SSL安全参数,并附上加密的http命令;
SSL协议可分为两层:
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议的工作流程
服务器认证阶段
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段
经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
握手过程
SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。
①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数。
②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性,证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”
④客户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥对其加密,传给服务器。
⑦服务器和客户端用相同的主密码,即对称密钥用于SSL 协议的安全数据通讯的加解密通讯
https隧道
建立连接时客户端采用服务器的公开密钥对发送数据加密,代理就无法读取http首部,也就不知道将请求转向何处;
https ssl隧道协议允许客户端先告知代理欲连接的服务器和端口,即通过connect方法明文发送端点信息,代理建立同服务器的tcp连接,客户端直接采用此隧道同服务器通信;
隧道:通过http连接发送非http流量
相关推荐
实现基于SSL的身份认证和访问控制的原理,实际上是建立在网络通信双方之间的安全信任机制之上。通过技术手段确保身份的真实性和信息传输的机密性、完整性和不可否认性,再通过不同的授权和认证方法实现细粒度的访问...
HTTPS原理介绍 HTTPS(Hypertext Transfer Protocol Secure)是一种...HTTPS 的工作原理可以分为单向认证和双向认证两种,HTTPS 使用 TCP 端口为 443,对用户及网站进行身份确认,对交互信息进行加密和完整性验证。
本文将深入探讨BASIC认证的原理以及如何在实际环境中实现这一机制。 一、BASIC认证概述 BASIC认证是HTTP协议中的一种身份验证方法,它允许服务器在接收到未授权的请求时,要求客户端提供用户名和密码。当客户端...
HTTPS 的实现原理主要包括机密性、完整性、身份认证和不可否认四大安全特性。 机密性 HTTPS 使用对称加密和非对称加密来确保数据的机密性。对称加密使用同一个秘钥进行加密和解密,而非对称加密使用公钥和私钥来...
HTTPS和HTTP的区别在于:HTTPS协议的主要功能基本都依赖于TLS/SSL协议,TLS/SSL的功能实现主要依赖于三类基本算法:散列函数Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用...
本文将通过图文并茂的方式,详细介绍HTTPS的工作原理及其与HTTP之间的区别。 #### HTTPS概述 HTTPS实际上是由HTTP和SSL/TLS两部分组成的。简单来说,HTTPS就是在HTTP的基础上增加了一个用于处理加密信息的模块——...
#### 一、HTTPS原理及TLS/SSL特性 **1. HTTP、HTTPS、SSL、TLS的关系** - **HTTP**(HyperText Transfer Protocol): 是一种应用层协议,用于从Web服务器传输超文本到本地浏览器的传输协议,HTTP协议传输的数据都...
HTTP鉴权认证是网络安全的重要组成...综上所述,HTTP鉴权认证是保障Web服务安全的关键机制,理解其原理和使用方法对于网络开发和运维人员至关重要。正确配置和利用鉴权认证,可以有效地保护网络资源,防止未授权访问。
HTTPS基于HTTP协议,通过SSL/TLS层提供加密传输和服务器身份验证。双向认证不仅验证服务器的身份,还要求客户端证明其身份,以确保双方都是可信的实体。这通常在金融、政府或高安全性应用场景中使用。 在Netty中...
### 电信天翼客户端认证流程解析 #### 一、引言 随着移动互联网技术的不断发展,用户对于网络连接的需求越来越强烈。特别是在公共场合,如学校、咖啡馆等地方,人们通常会选择通过无线网络来接入互联网。为了更好地...
Tomcat作为流行的Java Servlet容器,提供了支持HTTPS协议的能力,这包括了单向认证(也称为服务器认证)和双向认证(也称为客户端认证)。这两种认证机制都是基于SSL(Secure Sockets Layer)和TLS(Transport Layer...
#### 三、动态口令认证原理与工作机制 ##### 1. 动态口令的定义 动态口令(One-Time Password, OTP)是一种只能使用一次的临时密码,它通常由认证服务器实时生成并通过某种方式发送给用户。相比于传统的静态密码,...
理解HTTP和HTTPS的工作原理,首先需要了解网络通信的基础,即OSI(开放系统互连)七层模型。 OSI模型分为以下七层: 1. 物理层:这是最基础的一层,负责实际的物理连接,如电缆、光纤、网卡等硬件设备,确保电子...
HTTP协议的明文传输使得用户数据容易被中间人窥探或篡改,HTTPS通过内容加密、身份认证和数据完整性检查三方面提供安全保障: - **内容加密**:使用加密算法(对称加密与非对称加密)确保数据在传输过程中不被读取...
总结来说,处理需要客户端认证的HTTPS接口需要理解SSL/TLS协议、HttpClient的内部工作原理以及如何自定义安全配置。通过`InstallCert.java`和`HTTPSSecureProtocolSocketFactory.java`这两个文件,我们可以实现这个...
1. 性能开销:相比HTTP,HTTPS会增加计算和网络资源的消耗。 2. 成本:获取和维护SSL证书可能需要费用,尤其是EV证书。 3. 部署复杂:配置不当可能导致安全问题。 六、HTTP/2与HTTPS HTTP/2是HTTP协议的升级版,它...
### OAuth 认证原理详解 OAuth 是一种开放标准授权协议,允许客户端访问服务器资源,而无需直接分享资源所有者的凭证(如用户名和密码)。本文旨在深入解析 OAuth 的基本原理及其实现过程,以便读者能够更好地理解 ...
### 使用JSONP完成HTTP和HTTPS之间的跨域访问 在现代Web开发中,跨域问题是一项常见挑战,尤其是在涉及不同协议(如HTTP与HTTPS)的数据交互时。本文将深入探讨如何利用JSONP(JSON with Padding)技术来实现HTTP与...
HTTPS是HTTP协议的安全版本,它通过SSL/TLS协议来加密通信,以保护数据不被窃取或篡改。SSL/TLS认证分为单向认证和双向认证。单向认证是指客户端只验证服务器的身份,而双向认证则要求服务器和客户端都需要验证对方...