大型互联网站点HTTPS实践(一):详解HTTPS协议和原理

合集下载

HTTPS原理原理解析

HTTPS原理原理解析

HTTPS原理原理解析HTTPS原理解析HTTPS(Hypertext Transfer Protocol Secure)是一种安全的通信协议,用于在互联网上进行数据传输。

它是在HTTP基础上增加了SSL/TLS加密机制,通过建立安全连接,确保数据在传输过程中被加密,从而保护用户隐私和防止数据被篡改。

一、HTTPS的工作原理HTTPS的工作原理可以简单概括为以下几个步骤:1. 客户端发起HTTPS请求。

当客户端(通常是浏览器)需要访问一个使用HTTPS加密的网站时,它会向服务器发起HTTPS请求。

默认情况下,HTTPS使用443端口。

2. 服务器配置SSL证书。

服务器在配置HTTPS前需要准备SSL证书。

SSL证书由被信任的第三方机构(CA,Certificate Authority)颁发,用于证明服务器身份的可信度。

证书包含了服务器公钥和一些其他信息。

3. 服务器发送证书给客户端。

服务器在接收到客户端请求后,会将自己的SSL证书发送给客户端。

4. 客户端验证证书。

客户端接收到服务器发送的证书后,会验证证书的合法性。

具体的验证过程包括查看证书的有效期、校验证书签名,并与客户端内置的根证书进行比对。

如果验证通过,则建立安全连接,否则会提示证书不受信任的警告。

5. 完成握手过程,建立安全连接。

如果证书验证通过,客户端会生成一个随机数,用服务器的公钥对该随机数进行加密,然后发送给服务器。

服务器使用自己的私钥对加密的随机数进行解密,得到该随机数,然后使用该随机数生成对称加密的密钥。

6. 客户端与服务器加密通信。

客户端和服务器都拥有了相同的对称加密密钥,它们之间的通信就可以使用对称加密算法进行加密和解密。

这样,即使传输过程中被窃听,也不会获取到明文信息。

二、为什么使用HTTPS1. 数据加密。

HTTPS采用SSL/TLS协议对传输的数据进行加密,确保数据在传输过程中不会被窃听或篡改,保护用户敏感信息的安全性。

HTTPS协议的工作原理

HTTPS协议的工作原理

HTTPS协议的工作原理HTTPS(Hypertext Transfer Protocol Secure)是一种加密的通信协议,用于在计算机网络上安全地传输数据。

它是HTTP的安全版本,通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密和保护数据。

本文将介绍HTTPS协议的工作原理。

一、HTTP和HTTPS的区别HTTP是一种不安全的协议,数据以明文的形式传输,容易被窃取和篡改。

而HTTPS通过加密技术,确保数据在传输过程中的安全性和完整性。

HTTPS使用了公钥加密以及对称密钥加密的组合方式,有效地防止了数据泄露和数据篡改的风险。

二、HTTPS的加密过程1. 客户端请求建立安全连接当用户在浏览器中输入一个HTTPS的链接时,客户端会向服务器端发送一个请求,告知服务器要建立一个安全连接。

2. 服务器发送证书服务器在收到客户端请求后,会将自己的证书发送给客户端。

证书包含了服务器的公钥以及其他相关信息。

这个证书是由CA(Certificate Authority)机构签发的,用于证明服务器的真实身份。

3. 客户端验证证书客户端在收到服务器发送的证书后,会进行验证。

首先,客户端会检查证书的有效性,包括检查证书的签名是否可信、证书是否过期等。

其次,客户端会比对证书中的域名与实际访问的域名是否一致。

如果验证通过,则继续进行后续步骤。

4. 客户端生成随机密钥验证证书通过后,客户端会生成一个随机的对称密钥,用于后续的对称加密过程。

5. 客户端使用服务器的公钥加密密钥客户端使用服务器的公钥,对生成的对称密钥进行加密,并将加密后的密钥发送给服务器。

6. 服务器使用私钥解密密钥服务器收到加密后的密钥后,使用自己的私钥进行解密,获取到客户端生成的对称密钥。

7. 建立安全连接客户端和服务器都拥有了相同的对称密钥,它们之间的通信将通过使用对称密钥进行加密和解密来保障数据的安全传输。

https 原理及实现

https 原理及实现

https 原理及实现HTTPS(Hypertext Transfer Protocol Secure)是在HTTP的基础上加入了SSL/TLS协议的安全扩展实现的加密通信协议。

它可以保证网络通信的安全性,防止信息在传输过程中被窃取或篡改。

HTTPS的实现原理主要包括以下几个步骤:1. 客户端发起HTTPS请求:客户端使用浏览器等工具向服务器发送HTTPS请求,请求的URL以https://开头。

2. 服务器的证书验证:服务器接收到请求后,会将自己的数字证书发送给客户端。

客户端会对证书的有效性进行验证,包括证书的有效期、颁发机构的可信度等。

3. 公钥交换:如果证书验证通过,客户端会生成一个随机的对称密钥,并通过服务器的公钥对其进行加密,然后发送给服务器。

4. 服务器的私钥解密:服务器使用自己的私钥对接收到的密文进行解密,得到对称密钥。

5. 数据加密传输:客户端和服务器获取到相同的对称密钥后,使用对称加密算法对通信的数据进行加密和解密。

通过以上步骤,HTTPS可以实现数据的加密传输和安全通信。

客户端和服务器之间的通信内容都是经过加密的,第三方无法窃取敏感信息或者篡改通信内容。

要实现HTTPS,需要以下几个关键组件:1. 数字证书:由第三方机构(如权威认证机构)签发的数字证书。

数字证书中包含了服务器的公钥,以及一些其他的信息。

2. 公钥加密算法:用于客户端对对称密钥进行加密和服务器对密文进行解密。

常用的公钥加密算法有RSA、Diffie-Hellman 等。

3. 对称加密算法:用于对通信数据进行加密和解密,常用的对称加密算法有AES、DES等。

4. 散列函数:用于对数据进行哈希,以保证数据的完整性。

常用的散列函数有MD5、SHA-1等。

通过以上组件的配合,HTTPS可以提供相对较高的安全性,并广泛应用于网络传输场景中,特别是用于保护用户的敏感信息,如登录密码、信用卡信息等的安全传输。

HTTPS原理简介

HTTPS原理简介

HTTPS原理简介HTTPS(Hypertext Transfer Protocol Secure)是一个用于保护网络通信安全的协议,它是基于HTTP协议的加密版本。

相比于HTTP协议,HTTPS通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据传输,确保通信的机密性和完整性。

本文将介绍HTTPS的原理及其在保护网站安全中的重要性。

一、HTTPS的原理HTTPS的核心原理是通过在HTTP和TCP之间加入SSL/TLS协议层,对HTTP的数据进行加密和解密。

在进行HTTPS通信时,客户端和服务器之间的数据传输是经过加密处理的,第三方无法对数据进行窃听或篡改。

具体来说,HTTPS的原理包括以下几个步骤:1. 客户端请求:用户在浏览器中输入URL后,浏览器会向服务器发起HTTPS请求。

请求中包含有关加密和协议支持的信息。

2. 服务器证书:服务器将其证书(包含公钥和一些其他信息)返回给客户端。

3. 验证证书:客户端会验证服务器证书的有效性,包括证书的签名是否可信、证书是否过期等。

若证书有效,客户端将继续与服务器进行通信。

4. 公钥交换:若服务器证书有效,客户端会生成一个随机的对称加密密钥,并使用服务器的公钥加密该密钥,发送给服务器。

5. 数据加密:服务器使用自己的私钥解密客户端发来的对称密钥,并与客户端协商使用的加密算法和密钥长度。

之后,客户端和服务器将使用这个共享密钥进行数据加密和解密。

6. 加密通信:客户端和服务器将使用共享密钥对传输的数据进行加密和解密,确保数据的机密性和完整性。

二、HTTPS的重要性HTTPS在保护网站安全方面起着至关重要的作用。

以下是HTTPS的几个重要优势:1. 数据传输安全:HTTPS通过加密数据传输,防止黑客截取传输数据进行窃听或篡改。

这对于用户在进行网上支付、登陆个人账号等涉及敏感信息的操作至关重要。

https 协议的工作原理是什么?

https 协议的工作原理是什么?

https 协议的工作原理是什么?
HTTPS(超文本传输安全协议)是HTTP(超文本传输协议)的安全版本,它在传输数据时使用SSL/TLS协议为数据通信提供加密,确保数据的安全性和完整性。

HTTPS的工作原理可以分为以下几个步骤:
1.TCP连接:首先,浏览器与服务器建立一个TCP连接,为HTTPS通信提供基础的传输通道。

2.SSL/TLS握手:
•密钥交换:浏览器向服务器发送一个“Client Hello”消息,包含浏览器支持的加密算法列表、一个客户端生成的随机数等信息。

服务器回应一个“Server Hello”消息,选定一个浏览器也支持
的算法和一个服务器生成的随机数。

•服务器认证:服务器发送其SSL证书,包含公钥、证书颁发机构(CA)等信息。

浏览器通过预装的CA列表验证证书的有效性。

•密钥生成:根据协商的加密算法,浏览器和服务器分别生成会话密钥用于后续的数据加密通信。

3.加密通信:完成握手过程后,客户端与服务器开始使用协商的密钥对数据进行加密,然后进行数据交换。

这确保了传输过程中数据的机密性和完整性。

4.数据传输:客户端和服务器使用对称加密算法加密通信内容,保证信息传输的安全性。

每次请求都会使用SSL/TLS协议对数据进行加密和解密。

5.会话结束:任何一方都可以发起关闭通信会话的请求,随后双方完成最后的数据传输,释放资源,结束HTTPS会话。

总结来说,HTTPS通过SSL/TLS协议在客户端与服务器之间建立一个加密的通道,确保数据在传输过程中的安全性和完整性。

这包括了密钥交换、服务器认证、数据加密等步骤,有效地保护了数据不被中间人攻击和窃听。

HTTPS协议的原理与实现

HTTPS协议的原理与实现

HTTPS协议的原理与实现HTTPS(Hyper Text Transfer Protocol Secure)是一种通过SSL/TLS 加密传输的 HTTP 协议,其目的是保障网站通信的安全性与完整性。

在互联网环境下,未经加密的 HTTP 请求与响应数据会被中间人窃听或篡改,而 HTTPS 协议通过加密传输保证了数据的安全性。

HTTPS 实现的过程HTTPS 在实现过程中,主要借助 SSL/TLS 协议来保证通信的安全性。

SSL/TLS 协议是一种公认的安全传输协议,通过对通信双方进行身份验证、加密传输与完整性保护等安全措施来保证通信的安全。

HTTPS 使用 SSL/TLS 协议的主要步骤如下:1. 客户端请求建立 SSL/TLS 连接浏览器向服务器发送 HTTPS 请求时,包含了一个 SSL/TLS 协议版本号以及支持的加密算法类型。

这样服务器就知道了客户端支持哪些加密算法可以使用,并可以选择对应的加密算法响应客户端。

2. 服务器返回 SSL/TLS 证书如果服务器支持 SSL/TLS 协议,服务器会返回一个数字证书,用于证明服务器或网站的身份信息。

数字证书包含了网站基本信息、申请人信息、公钥和数字签名等。

3. 客户端验证 SSL/TLS 证书浏览器会验证数字证书,确认服务器的身份信息是否可靠。

如果数字证书过期或是根证书未被信任,浏览器会弹出一个安全警告页面,提示用户当前网站不安全。

4. 客户端与服务器协商加密方式客户端对收到的数字证书进行验证,确认其可信后,浏览器会生成一个随机数,用于之后对称加密算法的密钥生成。

之后,浏览器会发送一个加密消息,其中包含了该随机数,告诉服务器加密方式以及密钥。

5. SSL/TLS 协议会话一旦客户端和服务器都同意使用 TLS 协议,就会生成一个SSL/TLS 会话,该会话包括了所有加密和解密所需要的信息,如密钥、加密方式、摘要算法以及其他参数等等。

这样,通过会话协商,服务器和浏览器可以开始加密“对话”。

HTTPS原理解析与加密

HTTPS原理解析与加密

HTTPS原理解析与加密HTTPS,即超文本传输协议安全版(Hypertext Transfer Protocol Secure),是一种通过计算机网络进行安全通信的协议。

它利用了SSL (Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密和保护数据的传输。

本文将对HTTPS的原理进行解析,并重点介绍其加密机制。

一、HTTPS的基本原理HTTPS的基本原理是在HTTP的基础上添加SSL/TLS协议层,通过对数据进行加密,建立安全的通信通道,保护数据在传输过程中的安全性。

其主要过程如下:1. 客户端发起HTTPS请求当用户在浏览器中输入一个以"https://"开头的网址时,浏览器会默认使用HTTPS协议进行通信。

客户端(浏览器)会向服务器发起一个HTTPS请求。

2. 服务器端响应请求服务器收到HTTPS请求后,会生成一个SSL证书,并将证书发送给客户端。

证书中包含了一些加密算法和密钥信息,用于后续的数据加密和解密。

3. 客户端验证证书客户端在收到服务器发送的证书后,会对证书进行验证。

验证过程包括检查证书是否有效、是否过期,以及证书中的公钥是否可信等。

若验证通过,则继续下一步,否则会提示用户证书不可信。

4. 客户端生成密钥如果证书验证通过,客户端会生成一个用于后续加密通信的随机密钥,并利用服务器证书中的公钥进行加密,将加密后的密钥发送给服务器。

5. 服务器解密密钥服务器收到客户端发送的加密密钥后,利用自己的私钥进行解密,得到客户端生成的密钥。

6. 客户端和服务器建立安全通道客户端和服务器使用双方都拥有的密钥进行对称加密通信,保证数据在传输过程中的机密性和完整性。

此后的通信过程中,客户端和服务器使用该密钥进行加密和解密。

二、HTTPS加密机制HTTPS的加密机制主要基于SSL/TLS协议,采用了非对称加密和对称加密相结合的方式。

HTTPS原理HTTPS如何保护敏感数据的传输

HTTPS原理HTTPS如何保护敏感数据的传输

HTTPS原理HTTPS如何保护敏感数据的传输HTTPS原理及如何保护敏感数据的传输近年来,随着互联网的迅速发展,人们对于数据安全的需求也越来越高。

为了保护用户的隐私和敏感数据,HTTPS(Hypertext Transfer Protocol Secure)应运而生。

本文将介绍HTTPS的原理,并探讨它如何保护敏感数据的传输。

一、HTTPS的原理HTTPS是在HTTP的基础上加入了SSL/TLS(Secure SocketsLayer/Transport Layer Security)协议进行加密传输的一种网络协议。

它通过使用SSL/TLS协议,在客户端和服务器之间建立一条安全的通信连接,保证数据在传输过程中的安全性和完整性。

传统的HTTP协议是明文传输的,数据在传输过程中容易被窃听、篡改或者伪装攻击。

而HTTPS通过SSL/TLS协议对数据进行加密处理,极大地提高了数据的安全性。

SSL/TLS协议是一种基于公钥加密和对称密钥加密相结合的加密方式。

它的工作原理可以简要概括为以下几个步骤:1. 客户端向服务器发起HTTPS请求。

2. 服务器将自己的证书发送给客户端。

证书中包含了服务器的公钥和一些其他信息。

3. 客户端使用自己的根证书验证服务器证书的合法性,确保通信建立在可信任的基础之上。

4. 客户端生成一个随机的对称密钥,并使用服务器的公钥进行加密,然后发送给服务器。

5. 服务器使用自己的私钥解密客户端发来的数据,获得对称密钥。

6. 客户端和服务器双方都获得了相同的对称密钥,用于之后的通信过程。

7. 客户端和服务器之间的数据传输通过对称密钥进行加密和解密,确保数据的机密性和完整性。

二、HTTPS如何保护敏感数据的传输HTTPS通过使用SSL/TLS协议,提供了以下几个方面的保护,确保敏感数据在传输过程中的安全性。

1. 数据加密:HTTPS使用对称密钥加密算法对数据进行加密。

对称密钥只有通信双方知道,第三方无法破解加密的数据内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大型互联网站点HTTPS实践(一):详解HTTPS协议和原理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 协议提供了三个强大的功能来对抗上述的劫持行为:内容加密浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。

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

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

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

4 HTTPS 原理介绍4.1 内容加密加密算法一般分为两种,对称加密和非对称加密。

所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。

而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。

对称内容加密强度非常高,一般破解不了。

但存在一个很大的问题就是无法安全地生成和保管密钥。

假如客户端软件和服务器之间每次会话都使用固定的,相同的密钥加密和解密,肯定存在很大的安全隐患。

如果有人从客户端端获取到了对称密钥,整个内容就不存在安全性了,而且管理海量的客户端密钥也是一件很复杂的事情。

非对称加密主要用于密钥交换(也叫密钥协商),能够很好地解决这个问题。

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

非对称密钥交换很安全,但同时也是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 证书公钥4.1.1.1.2 握手过程中的RSA 密钥协商介绍完了RSA 的原理,那最终会话所需要的对称密钥是如何生成的呢?跟RSA 有什么关系?以TLS1.2 为例简单描述一下,省略跟密钥交换无关的握手消息。

过程如下:1、浏览器发送client_hello,包含一个随机数random1。

2、服务端回复server_hello,包含一个随机数random2,同时回复certificate,携带了证书公钥P。

3、浏览器接收到random2 之后就能够生成premaster_secrect 以及master_secrect。

其中premaster_secret 长度为48 个字节,前2 个字节是协议版本号,剩下的46 个字节填充一个随机数。

结构如下:Struct {byte Version[2];bute random[46];}master secrect 的生成算法简述如下:Master_key = PRF(premaster_secret, “master secrect”, 随机数1+随机数2)其中PRF 是一个随机函数,定义如下:PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR P_SHA-1(S2, label + seed)从上式可以看出,把premaster_key 赋值给secret,”master key”赋值给label,浏览器和服务器端的两个随机数做种子就能确定地求出一个48 位长的随机数。

相关文档
最新文档