首页 > 经验 > 关键词  > HTTPS协议最新资讯  > 正文

大型网站的HTTPS实践一:HTTPS协议和原理

2015-05-05 11:37 · 稿源: 百度运维

1 前言

百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS。本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义。

2 HTTPS 协议概述

HTTPS 可以认为是 HTTP + TLS。HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。

TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:

图 1 TLS 协议格式

TLS 协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。

TLS 协议本身又是由 record 协议传输的,record 协议的格式如上图最右所示。

目前常用的 HTTP 协议是 HTTP1.1,常用的 TLS 协议版本有如下几个:TLS1.2, TLS1.1, TLS1.0 和 SSL3.0。其中 SSL3.0 由于 POODLE 攻击已经被证明不安全,但统计发现依然有不到 1% 的浏览器使用 SSL3.0。TLS1.0 也存在部分安全漏洞,比如 RC4 和 BEAST 攻击。

TLS1.2 和 TLS1.1 暂时没有已知的安全漏洞,比较安全,同时有大量扩展提升速度和性能,推荐大家使用。

需要关注一点的就是 TLS1.3 将会是 TLS 协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。不过目前没有明确的发布时间。

同时 HTTP2 也已经正式定稿,这个由 SPDY 协议演化而来的协议相比 HTTP1.1 又是一个非常重大的变动,能够明显提升应用层数据的传输效率。

3 HTTPS 功能介绍

百度使用 HTTPS 协议主要是为了保护用户隐私,防止流量劫持。

HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。

这里提到的中间者主要指一些网络节点,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。

在 HTTP 协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过 HTTPS 是这些劫持行为的克星,能够完全有效地防御。

总体来说,HTTPS 协议提供了三个强大的功能来对抗上述的劫持行为:

1、内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。

2、身份认证。保证用户访问的是百度服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持

3、数据完整性。防止内容被第三方冒充或者篡改。

那 HTTPS 是如何做到上述三点的呢?下面从原理角度介绍一下。

4 HTTPS 原理介绍

4.1 内容加密

加密算法一般分为两种,对称加密和非对称加密。所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。

图 2 对称加密

图 3 非对称加密

对称内容加密强度非常高,一般破解不了。但存在一个很大的问题就是无法安全地生成和保管密钥。假如客户端软件和服务器之间每次会话都使用固定的,相同的密钥加密和解密,肯定存在很大的安全隐患。如果有人从客户端端获取到了对称密钥,整个内容就不存在安全性了,而且管理海量的客户端密钥也是一件很复杂的事情。

非对称加密主要用于密钥交换(也叫密钥协商),能够很好地解决这个问题。浏览器和服务器每次新建会话时都使用非对称密钥交换算法协商出对称密钥,使用这些对称密钥完成应用数据的加解密和验证,整个会话过程中的密钥只在内存中生成和保存,而且每个会话的对称密钥都不相同(除非会话复用),中间者无法窃取。

非对称密钥交换很安全,但同时也是 HTTPS 性能和速度严重降低的“罪魁祸首”。想要知道 HTTPS 为什么影响速度,为什么消耗资源,就一定要理解非对称密钥交换的整个过程。

下面重点介绍一下非对称密钥交换的数学原理及在 TLS 握手过程中的应用。

4.1.1 非对称密钥交换

在非对称密钥交换算法出现以前,对称加密一个很大的问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题,使得对称密钥的生成和使用更加安全。

密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。

常见的密钥交换算法有 RSA,ECDHE,DH,DHE 等算法。它们的特性如下:

  • RSA:算法实现简单,诞生于 1977 年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数(目前常用的是 2048 位)来保证安全强度,很消耗 CPU 运算资源。RSA 是目前唯一一个既能用于密钥交换又能用于证书签名的算法。
  • DH:diffie-hellman 密钥交换算法,诞生时间比较早(1977 年),但是 1999 年才公开。缺点是比较消耗 CPU 性能。
  • ECDHE:使用椭圆曲线(ECC)的 DH 算法,优点是能用较小的素数(256 位)实现 RSA 相同的安全等级。缺点是算法实现复杂,用于密钥交换的历史不长,没有经过长时间的安全攻击测试。  
  • ECDH:不支持 PFS,安全性低,同时无法实现 false start。  
  • DHE:不支持 ECC。非常消耗 CPU 资源。

建议优先支持 RSA 和 ECDH_RSA 密钥交换算法。原因是:

1、ECDHE 支持 ECC 加速,计算速度更快。支持 PFS,更加安全。支持 false start,用户访问速度更快。

2、目前还有至少 20% 以上的客户端不支持 ECDHE,我们推荐使用 RSA 而不是 DH 或者 DHE,因为 DH 系列算法非常消耗 CPU(相当于要做两次 RSA 计算)。

需要注意通常所说的 ECDHE 密钥交换默认都是指 ECDHE_RSA,使用 ECDHE 生成 DH 算法所需的公私钥,然后使用 RSA 算法进行签名最后再计算得出对称密钥。

非对称加密相比对称加密更加安全,但也存在两个明显缺点:

1、CPU 计算资源消耗非常大。一次完全 TLS 握手,密钥交换时的非对称解密计算量占整个握手过程的 90% 以上。而对称加密的计算量只相当于非对称加密的 0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。

2、非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是 2048 位,意味着待加密内容不能超过 256 个字节。

所以公钥加密目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。

非对称密钥交换算法是整个 HTTPS 得以安全的基石,充分理解非对称密钥交换算法是理解 HTTPS 协议和功能的关键。

下面分别通俗地介绍一下 RSA 和 ECDHE 在密钥交换过程中的应用。

4.1.1.1 RSA 密钥协商

4.1.1.1.1 RSA 算法介绍

RSA 算法的安全性是建立在乘法不可逆或者大数因子很难分解的基础上。RSA 的推导和实现涉及到了欧拉函数和费马定理及模反元素的概念,有兴趣的读者可以自行百度。

RSA 算法是统治世界的最重要算法之一,而且从目前来看,RSA 也是 HTTPS 体系中最重要的算法,没有之一。

RSA 的计算步骤如下:

1、随机挑选两个质数 p, q,假设 p = 13, q = 19。 n = p * q = 13 * 19 = 247;

2、∅(n) 表示与整数 n 互质数的个数。如果 n 等于两个质数的积,则∅(n)=(p-1)(q-1) 挑选一个数 e,满足 1< e <∅(n) 并且 e 与互质,假设 e = 17;

3、计算 e 关于 n 的模反元素, ed=1 mod ∅(n) , 由 e = 17 ,∅(n) =216  可得 d = 89;

4、求出了 e,和 d,假设明文 m = 135,密文用 c 表示。

那么加解密计算如下:

实际应用中,(n,e) 组成了公钥对,(n,d)组成了私钥对,其中 n 和 d 都是一个接近 22048的大数。即使现在性能很强的 CPU,想要计算 m≡c^d mod(n),也需要消耗比较大的计算资源和时间。

公钥对 (n, e) 一般都注册到了证书里,任何人都能直接查看,比如百度证书的公钥对如下图,其中最末 6 个数字(010001)换算成 10 进制就是 65537,也就是公钥对中的 e。e 取值比较小的好处有两个:

1、由 c=m^e mod(n) 可知,e 较小,客户端 CPU 计算消耗的资源较少。

2、加大 server 端的破解难度。e 比较小,私钥对中的 d 必然会非常大。所以 d 的取值空间也就非常大,增加了破解难度。

那为什么 (n,e) 能做为公钥公开,甚至大家都能直接从证书中查看到,这样安全吗?分析如下:

由于 ed≡1 mod ∅(n),知道了 e 和 n,想要求出私钥 d,就必须知道∅(n)。而∅(n)=(p-1)*(q-1),必须计算出 p 和 q 才能确定私钥 d。但是当 n 大到一定程度时(比如接近 2^2048),即使现在最快的 CPU 也无法进行这个因式分解,即无法知道 n 是由哪个数 p 和 q 乘出来的。所以就算知道了公钥,整个加解密过程还是非常安全的。

图 5 百度 HTTPS 证书公钥

  • 相关推荐
  • 大家在看
  • SEO优化,URL突然变成HTTPS,对排名影响大吗?

    很多SEO同行和企业主都非常好奇,为什么我可以每天可以长期输出各种不同的SEO问题,并提供相关的解决方案,实际上,这些问题的来源,都是大量从SEO实战中遇到的。

  • GM BrightDrop宣布Merchants Fleet加大订购规模:增至1.8万辆

    通用汽车(GM)的BrightDrop为其EV410电动送货车赢得了第二个客户:车队管理公司Merchants Fleet,这家公司周四表示,它已经订购了5400辆中型电动货车。新订单是在Merchants之前承诺购买12600辆BrightDrop旗舰车型EV600货车之外的。现在的总订单达到了18000辆,这是BrightDrop迄今为止接到的最大的客户订单。BrightDrop是GM在2021年初推出的第一英里到最后一英里的业务部门。它是从汽车制造商的内部组织全球创新中分离出来的,该组织

  • TikTok联手Zynga推出一款基于HTML5打造的手机游戏

    眼下,TikTok正在进行游戏试验,它将率先跟手机游戏巨头Zynga展开合作。当地时间周一,Zynga宣布其计划在TikTok平台上独家推出一款基于HTML5的新游戏《Disco Loco 3D》。这款休闲游戏是一款单人无尽跑酷游戏,玩家在挑战朋友的同时要收集自己的舞蹈动作、在走猫步时要避开障碍物并收集奖章,这些跟Zynga的《High Heels》类似。虽然TikTok说这个游戏是为了测试其受众对其应用内的游戏的普遍兴趣,但该公司证实,他们跟其他游戏制造?

  • 经历数月测试:苹果终于推出macOS版TestFlight预览

    早在今年 6 月的全球开发者大会(WWDC 2021)上,苹果就首次披露了 Mac 版的 TestFlight 。自那以后,该项目一直处于测试阶段。起初,我们在 8 月份看到了一些即将推出的迹象。当时开发者报告称能够通过 Xcode 13 beta,将 macOS 应用程序的测试版本提交到 App Store Connect 。数月过后,我们终于迎来了 macOS 版 TestFlight 预览。如承诺的那样,TestFlight 现已“正式”登陆 Mac App Store 预览,这也是该公司首次将应用程序测?

  • 传英特尔DG2-128EU台式入门显卡配备https://m.cnbeta.com/cdn-cgi/l/email-protection" class="__cf_email__

    有关英特尔 Alchemist GPU 产品线的传闻已经持续好几周,现 Moores Law Is Dead 又为我们带来了最新的爆料。本次消息的主角是入门级的 DG2-128EU 版本,可知其有望搭载 6GB @ 96-bit 位宽的 GDDR6 显存。早前报道称这张台式机显卡可能只有 64-bit 的位宽,但 MLID 还有其它内容要分享。比如在桌面级的 DG2-128EU GPU / 6GB @ 96-bit GDDR6 显存之外,英特尔还有望推出 4GB GDDR6 的衍生版本,以及面向移动平台的 64-bit 位宽 ARC A

  • ARGB灯效 德商必酷be quiet!发布Light Wings静音风扇

    2011 年 11 月 10 日,来自德国的高端PC配件制造商德商必酷(be quiet!),刚刚发布了全新Light Wings系列风扇,这也是德商必酷(be quiet!)第一款带有ARGB灯效的风扇产品。除此以外,研发重点还专注于性能、低噪音运行以及be quiet!一贯的高品质。Light Wings系列风扇支持PWM调速,风扇正面有一个LED灯环,反面还单独配备了另一个稍窄些的LED灯环,形成双灯环配置,并且提供120mm和140mm两种尺寸可供选择。动态灯效Light Wings的

  • Google Arts & Culture新增Pet Portraits功能:宠物照可匹配艺术品

    Google ArtsCulture 在 2018 年曾短暂推出过一项相机功能,可以将你自拍和著名的肖像画进行比较而一时走红。现在该应用程序现在为宠物提供了同样的功能。在 Android 端升级到 9.0.27 版本之后,点击底栏中间的相机按钮就能进入“Pet Portraits”。给你的宠物拍照,Google 会将其与“来自世界各地博物馆的艺术品”进行比较。在官方介绍中写道:“在艺术作品中畅游,发现哪些作品最像你的宠物。这项新的实验性功能使用计算机视觉技术

  • 《精灵宝可梦Go》开发商推Lightship平台:欲构建“现实元宇宙”应用程序

    在今天召开的发布会上,《精灵宝可梦Go》游戏开发商 Niantic 宣布推出名为 Lightship 的新平台,用于构建所谓的“现实元宇宙”应用程序。公司首席执行官 John Hanke 表示:“该平台将围绕着将数字和现实世界拼接在一起所需的部分而构建”。Hanke 表示,Lightship 将让移动应用程序识别用户的相机是指向天空还是水面,实时绘制环境的表面和深度,或将一个虚拟物体放在一个物理物体后面。Hanke 表示,通过 Lightship,该公司正在“打

  • 苹果开发SportKit框架 有望为Apple TV引入更多体育内容

    围绕 Apple TV 机顶盒,苹果已经构建了一套相当成熟的生态。长期以来,苹果一直在投资和聘请相关专业人士来加入该部门。与此同时,该公司对于体育领域的兴趣,也早就不是什么秘密。最新消息是,9to5Mac 已经找到了支持这些传闻的新线索,其中就包括在适用于 iOS / tvOS 应用程序的全新“SportsKit”框架。(图 via 9to5Mac)在 10 月下旬面向开发者发布的首个 iOS 15.2 测试版本中,9to5Mac 在系统内部文件中发现了对“SportsKit”

  • Google推Pet Portraits:将你的宠物和知名艺术品进行匹配

    Google 旗下的 Arts and Culture 应用近日推出了名为“Pet Portraits”的功能,能够将你拍摄的宠物照和知名艺术品进行匹配,通过这种新奇的方式让你了解更多的艺术品。Pet Portraits 功能首先让你拍摄狗、猫、鱼、鸟、爬行动物、马或兔子等宠物的照片,并让机器学习算法找到具有类似外观动物的艺术作品。这个过程只需要几秒钟,作为奖励,你可以点击艺术品,了解更多关于它们的信息。你甚至可以将你的结果保存为视频幻灯片。该工具

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天