http认证原理和https工作流程

一、http认证原理

  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的列表以防止重用。

  【http摘要访问认证缺点】

  1 RFC 2617 中的许多安全选项都是可选的。如果服务器没有指定保护质量(qop),客户端将以降低安全性的早期的 RFC 2069 的模式操作。

  2 摘要访问认证容易受到中间人攻击。举例而言,一个中间人攻击者可以告知客户端使用基本访问认证或早期的RFC 2069摘要访问认证模式。

  进一步而言,摘要访问认证没有提供任何机制帮助客户端验证服务器的身份。一些服务器要求密码以可逆加密算法存储。但是,仅存储用户名、realm、和密码的摘要是可能的。它阻止了使用强密码哈希函数(如bcrypt)保存密码(因为无论是密码、或者用户名、realm、密码的摘要都要求是可恢复的)。

  二、https工作流程

  【https】

  将http同一组基于证书的加密技术组合一起,SSL介于http和tcp之间,负责http报文的加密和解密;

  若URL为https,客户端打开一条到服务器443端口的连接,以二进制格式与服务器握手交换SSL安全参数,并附上加密的http命令;

  SSL协议可分为两层:

  (1)SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

  (2)SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  【服务器认证阶段】

  1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

  2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

  3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

  4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

  【用户认证阶段】

  经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

  【握手过程】

  SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。

  ①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数。

  ②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

  ③客户利用服务器传过来的信息验证服务器的合法性,证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”

  ④客户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥对其加密,传给服务器。

  ⑦服务器和客户端用相同的主密码,即对称密钥用于SSL 协议的安全数据通讯的加解密通讯

  【https隧道】

  建立连接时客户端采用服务器的公开密钥对发送数据加密,代理就无法读取http首部,也就不知道将请求转向何处;

  https ssl隧道协议允许客户端先告知代理欲连接的服务器和端口,即通过connect方法明文发送端点信息,代理建立同服务器的tcp连接,客户端直接采用此隧道同服务器通信;

  隧道:通过http连接发送非http流量

  【上述相关名词解释】

  (1)密钥:改变密码行为的数字化参数;

  对称密钥加密:编码、解码采用同一个密钥,通信双方对话前一定要有一个共享的保密密钥;破解者需要遍历每一个可能密钥;

  公开密钥加密:使用两个非对称密钥,分别用于编码和解码,前者是公共的,后者只有本地主机保存;RSA为MIT发明的公开密钥加密系统;

  (2)数字签名

  即加密的校验和,可防止报文被篡改;

  1 A将变长报文提取为定长摘要,对其应用签名函数(使用用户的私钥作参数),将签名附加在报文末尾;

  2 B接收报文时对签名进行检查,使用公开密钥进行反函数,若拆包后摘要与明文摘要不匹配,说明报文被篡改或没有使用A的私钥;

  (3)数字证书

  包含:对象名;过期时间;证书发布者;公开密钥;数字签名;大部分证书都使用X.509 V3格式;

  通过https建立一个安全web事务后,浏览器会主动获取服务器的数字证书,若没有证书则安全连接失败;

更多相关信息请前往沃通CA数字证书网了解更多www.wosign.com

时间: 2024-12-23 15:05:19

http认证原理和https工作流程的相关文章

HTTPS工作流程(入门)

1.CA(为服务器做担保的第三方机构)将包含CA[公钥C]等信息的[证书C]发送给浏览器: 2.服务器将其[公钥S]和网站信息发送给CA: 3.CA用CA[私钥C]将这些信息加密得到了签名后的[服务器证书S],发送给服务器: 4.浏览器输入使用https协议的url; 5.浏览器与服务器建立TCP连接: 6.浏览器与服务器建立TLS(SSL)连接(1):主要传输浏览器支持的加密算法列表等,其中还包括用于生成对称密钥的客户端随机数: 7.浏览器与服务器建立TLS(SSL)连接(2):传输服务器选择

(转)详解LVS负载均衡之三种工作模型原理和10种调度算法

前言:最近在为我们的产品在做高可用,一边搭环境,一边了解相关知识,搜到这篇博客,质量不错,表述清晰,于是转载过来学习. 标签:详解LVS负载均衡之三种工作模型原理和10种调度算法 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LVS负载均衡原理和算法详解    Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大

HTTPS协议工作流程

被问到了,复习一下HTTPS的工作流程 提到https,不得不提SSL SSL 1.        安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议. 2.    SSL协议的三个特性 Ø  保密:在握手协议中定义了会话密钥后,所有的消息都被加密. Ø  鉴别:可选的客户端认证,和强制的服务器端认证. Ø  完整性:传送的消息包括消息完整性检查(使用MAC). 3.    SSL的位置 客户端在使用HTTPS方式与Web服务器通信

SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)

SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接:2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息:3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器:4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器.      用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证

https工作原理及流程

https工作原理及流程 解决的问题:https解决的是传输过程中的安全问题 核心技术:非对称加密 工作流程: 1.客户端告诉服务器自己支持的加密方式(对称加密).hash算法, a) 对称加密:aes.des.rc4.3des等 b) hash算法:MD5.sha1.SHA256等 2.服务器响应ca证书给客户端(包含域名.公钥等信息) 3.客户端随机生成密码,并使用公钥加密后,上传给服务器 4.使用私钥解密客户端密码,使用此密码加密数据,然后响应给客户端 5.客户端使用密码,解密服务器数据

SSL协议握手工作流程详解(双向HTTPS流程)

参考学习文档:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程: 服务器认证阶段: 1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接: 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的"Hello"信息时将包含生成主密钥所需的信息: 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器

[git] git 分支管理和工作流程

分支管理 列举本地分支.下面的 * 是 HEAD 所指向的分支,标识当前工作目录所用的分支.其他分支隐藏在 git 仓库中,通过 git checkout 命令才能访问和修改. $ git branch iss53 * master testing 选项 --merged 显示的分支,已经合并到当前分支,可以被删除. branch -d 用于删除分支. $ git branch --merged iss53 * master --no-merged 显示还没有被合并的分支 $ git branc

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

ssl协议工作流程详解

SSL 协议 (HTTPS) 握手.工作流程详解 (双向 HTTPS 流程 )SSL 协议的工作流程:服务器认证阶段: 1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接; 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的"Hello"信息时将包含生成主密钥所需的信息; 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信