- 北境漫步
-
HTTPS目前是网站标配,否则浏览器会提示链接不安全,同HTTP相比比,HTTPS提供安全通信,具体原因是多了个“S”层,或者说SSL层[Secure Sockets Layer],现在一般都是TLS[Transport Layer Security],它是HTTP 明文 通信变成安全 加密通信 的基础,SSL/TLS介于应用层和TCP层之间,从应用层数据进行加密再传输。安全的核心就在加密上:
如上图所示,HTTP明文通信经中间路由最终发送给对方,如果中间某个路由节点抓取了数据,就可以直接看到通信内容,甚至可以篡改后,路由给目标对象,如下:
可见HTTP传输是不安全的,但,如果传输的是只有双方可校验的密文,就可以避免被偷窃、篡改,保证传输的安全性,这就是SSL/TLS层做的事情。
SSL/TLS协议主要从三方面来保证数据传输的安全性:保密、鉴别、完整:
对用户端而言:怎么保证访问的网站就是目标网站?答案就是 证书 。每个HTTPS网站都需要TLS证书,在数据传输开始前,服务端先将证书下发到用户端,由用户根据证书判断是否是目标网站。这其中的原理是什么,证书又是如何标识网站的有效性呢?证书也叫 digital certificate 或者public key certificate,是密码学中的概念,在TLS中就是指CA证书【 由证书的签发机构(Certificate Authority,简称为 CA)颁布的证书 】,好比是权威部门的公章,WIKI百科解释如下:
大意就是证书包含了目标站点的身份信息,并可以通过某种方式校验其合法性,对于任何一个HTTPS网站,你都可以拿到其CA证书公钥信息,在Chrome浏览器中点击HTTPS网站的锁标志,就可以查看公钥信息,并可以导出CA二进制文件:
浏览器就是通过这个文件来校验网站是否安全合法,可以看到,证书其实内置了一个颁发链条关系,根证书机构->次级证书机构->次次级->网站自身,只要验证这个链条是安全的,就证明网站合法,背后的技术其实是 信任链+RSA的非对称加密+系统内置根证书 。CA在颁发证书的时候,会用自己的私钥计算出要颁发证书的签名,其公钥是公开的,只要签名可被公钥验证就说明该证书是由该CA颁发的,核心校验逻辑如下
那么上级的CA又是如何保证安全呢?重复上述操作即可,最终都是靠根证书来验证的,根证书的安全性不需要验证,由系统保证,如此就形成了一个证书的信任链,也就能验证当前网站证书的有效性,证书的信任链校验如下:
TLS协议最大的提升点就是数据的安全,通HTTP通信相比,HTTPS的通信是加密的,在协商阶段,通过非对称加密确定对称加密使用的秘钥,之后利用对称秘钥进行加密通信,这样传输的数据就是密文,就算中间节点泄漏,也可以保证数据不被窃取,从而保证通信数据的安全性。
第三个问题,虽然中间节点无法窃取数据,但是还是可以随意更改数据的,那么怎么保证数据的完整性呢,这个其实任何数据传输中都会有这个问题,通过MAC[Message Authentication Codes]信息摘要算法就可以解决这个问题,同普通MD5、SHA等对比,MAC消息的散列加入了秘钥的概念,更加安全,是MD5和SHA算法的升级版,可以认为TLS完整性是数据保密性延伸,接下来就借助WireShark看看TLS握手的过程,并看看是如何实现身份鉴别、保密性、完整性的。
HTTPS安全通信简化来说: 在协商阶段用非对称加密协商好通信的对称秘钥 ,然后 用对称秘钥加密进行数据通信 ,简易的WireShark TLS/SSL协商过程示意如下:
细化分离后示意如下:
握手分多个阶段,不过一次握手可以完成多个动作,而且也并不是所有类型的握手都是上述模型,因为协商对称秘钥的算法不止一种,所以握手的具体操作也并非一成不变,比如RSA就比ECDHE要简单的多,目前主流使用的都是ECDHE,具体流程拆分如下:
Client Hello是TLS/SSL握手发起的第一个动作,类似TCP的SYN,Client Hello 阶段客户端会指定版本,随机数、支持的密码套件供服务端选择,具体的包数据如下
启动TLS握手过程, 提供自己所能支持各种算法,同时提供一个将来所能用到的随机数 。
ContentType指示TLS通信处于哪个阶段阶段,值22代表Handshake,握手阶段,Version是TLS的版本1.2,在握手阶段,后面链接的就是握手协议,这里是Client Hello,值是1,同时还会创建一个随机数random给Server,它会在生成session key【对称密钥】时使用。之后就是支持的供服务端选择的密码套件,接下来等服务端返回。
Handshake Type: Server Hello (2),作为对Client Hello的响应 , 确定使用的加密套件 : TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f),密钥协商使用 ECDHE,签名使用 RSA,
数据通信通信使用 AES 对称加密,并且密钥长度是128位,GCM分组,同时生成一个服务端的random及会话ID回传。
这一步服务器将配置的证书【链】发送给客户端,客户端基于上文所述的证书链校验证书的有效性,这里发送的证书是二进制格,可以利用wireshark右键“Export Packet Bytes”功能,导出.CER格式的证书。如下可以看到传输的证书链。
导出的CER格式的证书如下,最关键的就其公钥跟数字签名。
Server Key Exchange是针对选定的ECDHE协商所必须的步骤,Diffie-Hellman模型解释如下:
大意就是ephemeral Diffie-Hellman不会使用证书中的静态公钥参与对称秘钥的生成,而是需要服务端与客户端通过彼此协商确定对称秘钥,而D-H算法模型需要两对非对称秘钥对,各端保留自己的私钥,同时握有双方的公钥,然后基于D-H算法双端可以算出一样的对称加密秘钥,而这就需要C/S互传自己的公钥
服务端做完这一步,其实ECDHE算法中服务端需要提供的信息已经结束,发送 Server Hello Done告诉客户端,然后等待客户端回传它的D-H公钥。
算法:
其中p和g是公开的DH参数,只要P是一个足够大的数,在不知道私钥的情况下,即使截获了双方的公钥,也是很难破解的。
客户端收到服务端的证书后,利用信任链检测证书有效性,同时也会同Server Key Exchange 类似,将自己的Diffie-Hellman公钥发送给Server端,
至此,ECDHE协商所需要的信息都传输完毕, 双方都可以基于ECDHE算法算出的共享密钥,同时结合之前的随机数生成最终的对称加密秘钥:
之后客户端发送Change Cipher Spec与 Encrypted Handshake Message标识握手完成,同时传输一个加密的数据给Server,验证双方确立的秘钥是否正确,这就需要服务端也要重复这个操作给客户端,这样才能验证彼此的加解密一致,即服务端也要来一次Encrypted Handshake Message回传给客户端校验,
走完如上流程,双方就确认了正确的对称加密通道,后面就是TLS的数据通信,其Record Layer的ContentType 也会变成 Content Type: Application Data (23):
最终对称会话密钥包含三部分因子:
Client Hello与Server Hello阶段交换的随机数,是为了提高秘钥的「随机」程度而进行的,这样有助于提高会话密钥破解难度。
HTTPS通过加密与完整性校验可以防止数据包破解与篡改,但对于主动授信的抓包操作是没法防护,比如Charles抓包,在这个场景用户已经风险,并且将Charles提供的证书信任为根证书,这从源头上构建了一条虚拟的信任链:在握手阶段,Charles利用自己的公钥,生成客户端可以信任的篡改证书,从而可以充作中间人进而抓包,所谓中间人攻击,感觉跟Https抓包原理一样,都是要强制添加一个自己的信任根证书。
SSL协议的工作原理是什么
TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,为此需要引入权威的第三方机构CA。CA 负责核实公钥的拥有者的信息,并颁发认证"证书",同时能够为使用者提供证书验证服务,即PKI体系。基本的原理为,CA负责审核信息,然后对关键信息利用私钥进行"签名",公开对应的公钥,客户端可以利用公钥验证签名。CA也可以吊销已经签发的证书,基本的方式包括两类 CRL 文件和 OCSP。CA使用具体的流程如下:2023-08-11 08:12:514
SSL工作原理,SSL加密原理,SSL证书怎么加密
SSL证书的工作原理:①客户端向服务器请求HTTPS连接客户端向服务器传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。②服务器确认并返回证书服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。③客户端验证服务器发来的证书客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果验证通过,将继续进行。④信息验证通过,客户端生成随机密钥A,用公钥加密后发给服务器从第③步验证过的证书里面可以拿到服务器的公钥,客户端生成的随机密钥就使用这个公钥来加密,加密之后,只有拥有该服务器(持有私钥)才能解密出来,保证安全。⑤服务器用私钥解密出随机密钥A,以后通信就用这个随机密钥A来对通信进行加密这个握手过程并没有将验证客户端身份的逻辑加进去。因为在大多数的情况下,HTTPS只是验证服务器的身份而已。如果要验证客户端的身份,需要客户端拥有证书,在握手时发送证书,而这个证书是需要成本的。2023-08-11 08:13:322
SSL协议的工作原理
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL HandshakeProtocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。2023-08-11 08:13:483
SSL证书的认证原理
安全套接字层(SSL) 技术通过加密信息和提供鉴权,保护您的网站安全。一份 SSL 证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。浏览器指向一个安全域时,SSL 同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。它们可以启动一个保证消息的隐私性和完整性的安全会话。SSL的工作原理中包含如下三个协议。握手协议(Handshake protocol)记录协议(Record protocol)警报协议(Alert protocol) 记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:(1)保密性:使用握手协议定义的秘密密钥实现(2)完整性:握手协议定义了MAC,用于保证消息完整性 客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。2023-08-11 08:14:121
ssl证书的工作原理?
SSL连接始终由客户端启动。在SSL会话开始时,将执行SSL握手。此握手生成会话的加密参数。解释原因:客户端提交https请求服务器响应客户,并把证书公钥发给客户端客户端验证证书公钥的有效性有效后,会生成一个会话密钥用证书公钥加密这个会话密钥后,发送给服务器服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信解决办法:Gworg获得SSL证书。2023-08-11 08:14:283
ssl会话建立的过程(原理)是什么?
SSL是安全套接字层的缩写,这是一种加密用户和网站之间通信的技术。使用了SSL协议的网站比未使用SSL协议的网站更安全,安装等 可以找天威诚信团队2023-08-11 08:14:512
数字证书(SSL)的工作原理?
SSL工作原理2007-03-08 22:15SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信。 在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。 SSL 握手 SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。 图 SSL的客户端与服务器端的认证握手 (1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法。消息也包含 28 字节的随机数。 (2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。 注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。 (3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。) 如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。 (4) 服务器发出服务器“您好完成”消息并等待客户端响应。 (5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。 如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。 (6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret (一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码 ( MAC )密钥(用服务器的公用密钥加密的)。 如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。 注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。 (7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret ,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。 (8) 服务器以自己的“更改密码规范”和“已完成”消息响应。 (9) SSL 握手结束,且可以发送加密的应用程序数据。 天威诚信CA数字认证中心2023-08-11 08:15:003
SSL工作原理,SSL加密原理,SSL证书怎么加密
SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信。在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。2023-08-11 08:15:143
HTTPS网站 | SSL证书的工作原理 ?
Web服务器向浏览器/服务器发送其SSL证书的副本。浏览器/服务器检查它是否信任SSL证书。如果是,它会向Web服务器发送一条消息。Web服务器发回经过数字签名的确认以启动SSL加密会话。2023-08-11 08:15:223
SSL证书的工作原理
SSL证书是如何工作的?当您收到SSL证书时,您可以在服务器上安装它。您可以安装一个中间证书,通过将SSL证书链接到CA的根证书来建立其可信度。根证书是自签名的,是基于X.509的公钥基础设施(PKI)的基础。支持HTTPS安全浏览和电子签名方案的PKI依赖于一组根证书。在X.509证书的其他应用中,证书的层次结构证明证书的颁发的有效性。这种层次结构被称为“信任链”信任链信任链指的是您的SSL证书及其到可信证书颁发机构的链接。要使SSL证书受信任,它必须追溯到受信任的根CA。信任链确保所有相关方的隐私、信任和安全。每个PKI的核心是根CA;它充当整个系统的可信完整性源。根证书颁发机构对SSL证书进行签名,从而启动信任链。如果根CA是公共信任的,那么所有主要的internet浏览器和操作系统都会信任链接到根CA的任何有效CA证书。中间CA(又称从属CA或颁发CA)是将最终证书链接到根证书的后续证书,其中链中的每个证书都由前面的CA签名。需要中级证书对于公共受信任的CA,CA/浏览器论坛的基线要求禁止直接从根CA颁发最终实体证书,根CA必须保存在脱机设备(如硬件安全模块(HSM))中。在建立信任链时,正确配置根证书和中间证书至关重要。如果根CA的私钥受到损害,则会使根证书和所有中间证书不可信。因此,中间CA的主要功能是颁发终端实体服务器证书;这创建了管理SSL证书的能力,而无需根CA的直接操作。如果中间证书受损,那么根CA只需要撤销中间证书及其任何从属证书,然后创建一个新证书以重新启动链。因此,当根CA在脱机存储中受到保护时,中间CA提供额外的安全级别,从而保持系统的完整性。2023-08-11 08:15:292
SSL/TLS协议原理解读
HTTPS是什么相信大家都知道,如果你不知道。。。请关闭此文!!! HTTP的数据是明文传输的,没有安全性可言。HTTPS是秘文传输,那么HTTPS是怎么实现数据的安全(加密)传输的?那是因为HTTPS比HTTP多了个"S"。 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 SSL/TLS协议是网络安全通信的重要基石,本文将简单介绍SSL/TLS协议,主要关注SSL/TLS协议的安全性,特别是SSL规范的正确实现。 本系列的文章大体分为几个部分: 1、SSL/TLS简介 2、SSL/TLS协议的基本流程 3、从SSL到TLS 4、SSL/TLS的流行实现库 SSL全称是Secure Sockets Layer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL已经成为互联网保密通信的工业标准。 SSL最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从3.1版本开始,SSL协议由因特网工程任务小组(IETF)正式接管,并更名为TLS(Transport Layer Security),发展至今已有TLS 1.0、TLS1.1、TLS1.2这几个版本。 如TLS名字所说,SSL/TLS协议仅保障传输层安全。同时,由于协议自身特性(数字证书机制),SSL/TLS不能被用于保护多跳(multi-hop)端到端通信,而只能保护点到点通信。 SSL/TLS协议能够提供的安全目标主要包括如下几个: 认证性——借助数字证书认证服务器端和客户端身份,防止身份伪造 机密性——借助加密防止第三方窃听 完整性——借助消息认证码(MAC)保障数据完整性,防止消息篡改 重放保护——通过使用隐式序列号防止重放攻击 为了实现这些安全目标,SSL/TLS协议被设计为一个两阶段协议,分为握手阶段和应用阶段: 握手阶段也称协商阶段,在这一阶段,客户端和服务器端会认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及MasterSecret。后续通信使用的所有密钥都是通过MasterSecret生成。 在握手阶段完成后,进入应用阶段。在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信。 Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换; ChangeCipherSpec 协议:一条消息表明握手协议已经完成; Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型的错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告; Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等。 图2、图3都是表示的协议流程,大同小异。可以对比着看加深理解。 每一个SSL/TLS链接都是从握手开始的,握手过程包含一个消息序列,用以协商安全参数、密码套件,进行身份认证以及密钥交换。握手过程中的消息必须严格按照预先定义的顺序发生,否则就会带来潜在的安全威胁。今年顶级安全会议CCS 有文章提出了建立综合状态机来检查SSL链接中消息序列…… 2.1 握手过程中的消息序列 ClientHello:ClientHello通常是握手过程中的第一条消息,用于告知服务器客户端所支持的密码套件种类、最高SSL/TLS协议版本以及压缩算法。 ClientHello中还包含一个随机数,这个随机数由4个字节的当前GMT UNIX时间以及28个随机选择的字节组成,共32字节。该随机数会在密钥生成过程中被使用。 另外,ClientHello中还可能包含客户端支持的TLS扩展。(TLS扩展可以被用来丰富TLS协议的功能或者增强协议的安全性) ServerHello:服务器接受到ClientHello后,会返回ServerHello。服务器从客户端在ClientHello中提供的密码套件、SSL/TLS版本、压缩算法列表里选择它所支持的项,并把它的选择包含在ServerHello中告知客户端。接下来SSL协议的建立就基于服务器选择的密码套件类型、SSL/TLS协议版本以及压缩算法。 ServerHello中同样会包含一个随机数,同样4+28 字节类型,由服务器生成。 Certificate:客户端和服务器都可以发送证书消息来证明自己的身份,但是通常客户端证书不被使用。 服务器一般在ServerHello后会接一条Certificate消息,Certificate消息中会包含一条证书链,从服务器证书开始,到Certificate authority(CA)或者最新的自签名证书结束。下图形象地描述了证书链: SSL中使用的证书通常是X.509类型证书,X.509证书的内容如下表所示: 在用的X.509证书包含Version 1和Version 3两种版本,其中v1版本的证书存在安全隐患,同时不支持TLS扩展,被逐渐弃用。现在大多数在用的SSL证书都是V3版本。 同时证书会附带与协商好的密钥交换算法对应的密钥。密钥交换算法以及它们所要求的密钥类型如下表所示。 ServerKeyExchange:该消息仅当以下密钥交换算法被使用时由服务器发出: RSA_EXPORT(仅当服务器的公钥大于512bit时)、DHE_DSS、DHE_DSS_EXPORT、DHE_RSA、DHE_RSA_EXPORT、DH_anon 使用其它密钥交换算法时,服务器不能发送此消息。 ServerkeyExchange消息会携带这些密钥交换算法所需要的额外参数,以在后续步骤中协商PreMasterSecret。这些参数需要被签过名。 CertificateRequest:这个消息通常在要求认证客户端身份时才会有。消息中包含了证书类型以及可接受的CA列表。 ServerHelloDone:服务器发送这条消息表明服务器部分的密钥交换信息已经发送完了,等待客户端的消息以继续接下来的步骤。这条消息只用作提醒,不包含数据域。 ClientKeyExchange:这条消息包含的数据与所选用的密钥交换算法有关。 如果选择的密钥交换算法是RSA,那么消息包含的参数为用服务器RSA公钥(包含在之前证书中的或者是ServerKeyExchange中的)加密过的PreMasterSecret,它有48个字节,前2个字节表示客户端支持的最高协议版本,后46个字节是随机选择的。 如果选择的密钥交换算法是DH或者DHE,则可能有两种情况: 隐式DH公开值:包含在Certificate消息里; 显示DH公开值:公开值是本消息的一部分。 CertificateVerify:这条消息用来证明客户端拥有之前提交的客户端证书的私钥。 Finished:表明握手阶段结束。这是第一条用协商的算法和密钥保护的消息。 因为是用协商好的密钥加密的消息,它可以用来确认已经协商好的密钥。 同时Finished消息包含一个verify_data域,可以用来校验之前发送和接收的信息。 Verify_data域是一个PRF函数的输出(pseudo-random function)。这个伪随机函数的输入为:(1)两个hash值:一个SHA-1,一个MD5,对之前握手过程中交换的所有消息做哈希;(2)the MasterSecret,由预备主密钥生成;(3)finished_label,如果客户端发送的则是”client finished”,服务器发送的则是”server finished”。关于这个PRF的细节在3.3节中会具体描述。 此外,Finished 消息不能够在ChangeCipherSpec前发送。 2.2 不同密钥交换算法对应的握手过程 不同的密钥交换算法对应的握手过程中的消息序列是不同的,相应的实现方式也不同,本节介绍几个常见密钥交换算法对应的握手过程。 TLS-RSA:在这个场景下,PreMasterSecret是由客户端指定的,并用RSA公钥加密发送给服务器。服务器不影响PReMasterSecret的生成。 TLS-DH:基于DH的密钥交换也被称为静态Diffie-Hellman。在这种场景下,可能是双方各自提交一个证书包含DH公开值,或者服务器端提交证书包含DH公开值,客户端在每次会话中选择一个值。协商好的DH值被用作PreMasterSecret。显然证书中的参数是固定的,那么每次链接的PreMasterSecret也是相同的。 TLS-DH不能提供前向安全性。 TLS-DHE:基于DHE的TLS握手中会有ServerKeyExchange消息。握手过程中交换参数的认证通过数字签名来实现,支持的签名算法包括RSA和DSS。DH参数会有它的数字签名一起被包含在ServerKeyExchange中被发送出去。客户端在ClientKeyExchange中返回它的公开DH参数,但没有签名保护。同样协商出来的DH密钥被用作PreMasterSecret。 2.3 密钥生成 Pseudo-random Function(PRF):伪随机函数是SSL协议中的一个重要组成部分,它被用来秘密扩展以及生成密钥。在3.1节讲解Finished消息时已经简单提及PRF,在这里我们详细讨论PRF的工作原理。SSL/TLS协议中的PRF如下图所示: 这个PRF基于两个hash函数:MD5和SHA-1,它有3个输入,一个Secret(比如PreMasterSecret),一个标志符(比如”client finished”, “server finished”),还有一个种子值(比如客户端随机数+服务器端随机数)。 Secret在使用时被分为长度相同的两半:S1和S2,分别作为P_MD5和P_SHA-1的输入。 PRF的输出按如下方式处理得到: P_MD5和P_SHA-1都是扩展函数,用来扩展秘密值以用于密钥生成,它们的计算方式如下: 其中A(0) = seed, A(i) = HMAC hash( secret, A( i u22121) ) 这个秘密扩展会一直进行直到得到足够多的扩展数据。 Key Derivation:主密钥(MasterSecret)是利用上述PRF从预备主密钥(PreMasterSecret)生成的。每个MasterSecret为48字节,生成方式如下: 得到MasterSecret后,它会被进一步处理最后生成4个不同的密钥和2个初始向量(IV)。处理过程如下: 处理过程一直持续到足够多的输出被生成,然后把输出分为4个key和2个IV: 下图完整阐述了SSL/TLS协议中的密钥生成过程。 本节介绍SSL/TLS协议的版本变迁,不同版本的区别以及安全特性等。 SSL 1.0由于从来没有被公开过,并且存在严重安全漏洞,我们就不讨论了。 SSL 2.0:SSL 2.0于1995年4月被发布。SSL 2.0中主要存在的问题如下: MAC不能覆盖填充长度域,攻击者可能利用这点破坏消息完整性; 缺乏握手认证,攻击者可以篡改密码套件列表,诱骗通信双方使用较弱的密码套件; 使用较弱的或有问题的密码算法(如MD5,RC4等),或者使用不安全的分组模式(如CBC模式); 对于不同的密码学基元使用相同的密钥,违背基本安全常识。 由于以上安全问题,RFC 6176已经明确提出避免使用SSL 2.0,但是现实生活中还有少量客户端和服务器支持SSL 2.0. SSL 3.0:SSL 3.0引入了一些新的特性和机制解决了很多之前版本存在的漏洞。此外,SSL 3.0中引入了ChangeCipherSpec子协议。SSL 3.0向后兼容SSL 2.0,相对于SSL 2.0,它的主要改变包括以下几点: 支持更多的密码套件(支持更多的密码算法如DSS,SHA-1) 在握手阶段支持密钥协商(DH和FORTEZZA) 支持密码学参数的重协商 增加了消息压缩选项 MAC能够覆盖填充长度域了,同时MAC可以使用MD5或者SHA-1 不同的密码学基元使用不同的key Alert子协议能对任何错误给出两种提示:Warning和Fatal 中止链接的时候会用一个close_notify警告通知通信双方 支持证书链,而非单个证书 通过Finished消息认证所有发送和接收的消息 加密了的PreMasterSecret包含当前使用的协议版本,防止协议回滚 TLS 1.0:TLS 1.0和SSL 3.0差别非常小。实际上,TLS 1.0是SSL 3.1,在IETF接手后改名为TLS。TLS 1.0版本是目前使用最广泛的SSL/TLS协议版本。 TLS 1.0不再支持使用FORTEZZA的密码套件。 TLS 1.0中MAC被替换成HMAC。 之前提到ChangeCipherSpec消息必须在Finished消息前发送,在TLS 1.0中,如果消息序列不符合这个要求,会产生FATAL警告并终止链接。 TLS 1.1:这个版本相比之前改动也很小。最重要的改动是预防了针对CBC分组模式的一些攻击。现在的填充错误变的和非法MAC错误不可区分了,防止攻击者利用可区分错误响应建立解密预言机对密文进行攻击。 在每次加密过程中,使用CBC分组模式时,都需要显示给出IV,而不用再密钥生成时使用PRF生成IV。 此外,TLS 1.1禁止为适应之前出口限制而使用弱化的密码套件。 TLS 1.2:这是最新的版本,部署的还比较少。这个版本禁用了PRF中的MD5和SHA-1,而用一个可配置的hash函数取代了它们,这样的修改简化了计算过程。修改后的PRF风格如下: 此外,TLS 1.2的一个重要变化是支持认证加密模式(支持GCM等)。但是由于一些AEAD(Authenticated Encryption with Associated Data)密码算法要求IV为隐式的,所以IV又恢复到由MasterSecret生成,即TLS 1.0以前的风格。 TLS 1.2支持使用GCM、CCM的新密码套件。 同时SSL 2.0被宣布放弃,不再向后兼容SSL 2.0. 本节简单介绍一下流行的SSL/TLS实现库,SSL协议非常复杂,由开发者自己实现常常会出错,开发者在具体实现SSL协议时通常会依赖于这些密码学库。 4.1 常见的SSL/TLS 实现 OpenSSL:这是非常流行的开源SSL/TLS实现。 OpenSSLim完全用C语言实现,支持SSL 2.0/3.0,TLS 1.0/1.1/1.2以及DTLS 1.0。 OpenSSL 近年来出现了很多的安全漏洞,比如2014年曝出的著名的Heartbleed漏洞等。 JSSE:这是使用Java实现的,支持SSL 3.0,TLS 1.0/1.1/1.2. Bouncy Castle:它不仅仅支持SSL/TLS,它是一个完整的密码学库,支持各种密码学算法和协议。不过它仅仅支持TLS 1.0版本。 Android平台主要使用这个密码学库。 GnuTLS:这是另一个用C语言实现的库,支持SSL 3.0,TLS 1.0/1.1/1.2以及DTLS 1.0。主要在Unix世界被使用。同时以各种安全漏洞多而闻名。 NSS:这是最初由网景公司(Netscape)开发的库,支持SSL 2.0/3.0,TLS 1.0/1.1,现在主要被浏览器和客户端软件使用,比如Firefox使用的就是NSS库,Chrome使用的是一个NSS库的修正版。 下表是一些常见软件以及它们所使用的SSL/TLS实现库的情况: 其它还有一些常用的SSL实现库,如cryptlib、CyaSSL、MatrixSSL、PolarSSL等,由于市场占有率不高,我们这里就不多做介绍了。 4.2 流行SSL/TLS实现库的安全研究 最近几年曝出的高风险SSL安全漏洞大多跟SSL实现库有关,比如2014年4月曝出的“心脏滴血”漏洞,存在于OpenSSL 1.0.1-1.0.1f版本中,影响全球近17%的Web服务器;同样是2014年曝出的苹果公司iOS 7.0.6版本系统中存在的“gotofail”漏洞,因为程序员的疏忽导致SSL证书校验中的签名校验失效;包括今年曝出的SSL Freak攻击也是由于SSL实现库的安全漏洞导致的攻击,我们研究小组的同学对这个攻击有详细的分析,参见《SSL Freak来袭:如何实施一个具体的SSL Freak攻击》。同时我们还开发了一个基于python的中间人代理攻击框架“风声”对某国内知名电商的服务器进行具体的攻击,并上报了漏洞。 考虑到大量SSL/TLS实现库中存在安全问题,同时这些主流的SSL/TLS实现库对开发者而言使用难度较高,比如有些SSL/TLS实现库要求开发者自己进行随机数生成或密钥管理,让缺乏系统信息安全知识培训的开发者去使用这样高度复杂的密码学库容易产生很多安全问题。我们在这里推荐一些高级密码学库:Google keycazer、NaCl、Cryptlib、GPGME。这些密码学库存在的安全问题较少,同时封装了一些底层的密码学操作,降低了开发者的使用难度。 以上就是本次要介绍的SSL /TLS协议基本知识,后续的文章我们会对一些典型SSL/TLS攻击进行具体介绍。 参考: 1、 http://netsecurity.51cto.com/art/201505/476337.htm 2、 http://www.cnblogs.com/NathanYang/p/9183300.html 3、 https://www.cnblogs.com/bhlsheji/p/4586597.html2023-08-11 08:15:491
SSL安全登录的实现原理
在SSL登陆会话产生时,服务器会传送它的证书,用户端浏览器会自动的分析服务器证书,并根据不同版本的浏览器,从而产生40位或128位的会话密钥,用于对登陆的信息进行加密。所有的过程都会自动完成,对用户是透明的,因而,服务器证书可分为两种:最低40位和最低128位(这里指的是SSL会话时生成加密密钥的长度,密钥越长越不容易破解)证书。最低40位的服务器证书在建立会话时,根据浏览器版本不同,可产生40位或128位的SSL会话密钥用来建立用户浏览器与服务器之间的安全通道。而最低128位的服务器证书不受浏览器版本的限制可以产生128位以上的会话密钥,实现高级别的加密强度,无论是IE或Netscape浏览器,即使使用强行攻击的办法破译密码,也需要10年。2023-08-11 08:15:561
全站HTTPS能带来怎样的优势?HTTPS原理是什么,如何加密
1、加密用户会话SSL 加密在Internet 中传输敏感信息,确保只有目标接收方能够理解相关信息。2、辅助身份验证如果服务器包含SSL 证书,用户可以放心,敏感数据仅供安全的服务器使用,不会落入不法分子手中。3、防范钓鱼攻击钓鱼和“鱼叉式捕鱼”电子邮件一般含有恶意链接,引诱疏于防备的用户访问克隆网站。如果在用户连接到虚假网站时出现“不受信任的证书颁发机构”消息,大部分用户会关闭虚假网站,不会出现泄露机密信息的情况。4、提升客户信任度重视安全的消费者和企业客户认为在电子商务中有SSL 保护的Internet 更加可靠。为此,Google 进行了一项改进它,决定在其搜索引擎中采用 SSL/HTTPS 作为网站排名因素,加密网站将比非加密网站获得更高的排名。SSL加密在国外应用广泛,几乎80%的站点都进行了SSL加密。在国内,仅仅在网上银行、电子商城、金融证券、移动支付领域应用较多。5、目前百度搜索引擎、360搜索、搜狗优先收录HTTPS网站。2023-08-11 08:16:113
ssl负载均衡的原理
ssl负载均衡的原理。安全套接字层(SSL)是用于对网络上的通信进行身份验证和加密的加密协议的原始名称,正式地,SSL在一段时间之前被称为TLS(传输层安全性)的更新协议所取代,SSL的主要目的是在服务器和客户端这两个端点之间提供安全的传输层连接,此连接通常在网站服务器和客户端的浏览器之间,邮件服务器和客户端的电子邮件应用程序之间。2023-08-11 08:16:181
SSL协议原理及WEB安全实现
SSL (Secure Socket Layer)为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。 当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议提供的服务主要有:1)认证用户和服务器,确保数据发送到正确的客户机和服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。SSL协议的工作流程:服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。 https介绍HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。限制它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者尝试窃听数据于传输中。商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。2023-08-11 08:16:271
HTTPS的安全原理
HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。 通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。 u200b 在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。也就是说HTTP加上加密处理和认证以及完整性保护后即是HTTPS。 u200b u200b HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。 u200b u200b 1、解决内容可能被窃听的问题——加密 方法1.对称加密 这种方式加密和解密同用一个密钥。加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。 以对称加密方式加密时必须将密钥也发给对方。可究竟怎样才能安全地转交?在互联网上转发密钥时,如果通信被监听那么密钥就可会落人攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。 方法2.非对称加密 公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。 使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。 u200b u200b 非对称加密的特点是信息传输一对多,服务器只需要维持一个私钥就能够和多个客户端进行加密通信。 s这种方式有以下缺点: 方法3.对称加密+非对称加密(HTTPS采用这种方式) 使用对称密钥的好处是解密的效率比较快,使用非对称密钥的好处是可以使得传输的内容不能被破解,因为就算你拦截到了数据,但是没有对应的私钥,也是不能破解内容的。就比如说你抢到了一个保险柜,但是没有保险柜的钥匙也不能打开保险柜。那我们就将对称加密与非对称加密结合起来,充分利用两者各自的优势,在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。 具体做法是:发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,然后对方用自己的私钥解密拿到“对称的密钥”,这样可以确保交换的密钥是安全的前提下,使用对称加密方式进行通信。所以,HTTPS采用对称加密和非对称加密两者并用的混合加密机制。 2、解决报文可能遭篡改问题——数字签名 网络传输过程中需要经过很多中间节点,虽然数据无法被解密,但可能被篡改,那如何校验数据的完整性呢?----校验数字签名。 数字签名有两种功效: 数字签名如何生成: u200b u200b 将一段文本先用Hash函数生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文文一起传送给接收者。接下来就是接收者校验数字签名的流程了。 校验数字签名流程: u200b u200b 接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与上一步得到的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。 假设消息传递在Kobe,James两人之间发生。James将消息连同数字签名一起发送给Kobe,Kobe接收到消息后,通过校验数字签名,就可以验证接收到的消息就是James发送的。当然,这个过程的前提是Kobe知道James的公钥。问题的关键的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Kobe,或者说拿到的公钥如何证明是James的。 此时就需要引入了证书颁发机构(Certificate Authority,简称CA),CA数量并不多,Kobe客户端内置了所有受信任CA的证书。CA对James的公钥(和其他信息)数字签名后生成证书。 3、解决通信方身份可能被伪装的问题——数字证书 数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。 u200b u200b 我们来介绍一下数字证书认证机构的业务流程: u200b 1.Client发起一个HTTPS(比如 https://juejin.im/user/5a9a9cdcf265da238b7d771c )的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。 2.Server把事先配置好的公钥证书(public key certificate)返回给客户端。 3.Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。 4.Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server。 5.Server使用自己的私钥(private key)解密这个消息,得到对称密钥。至此,Client和Server双方都持有了相同的对称密钥。 6.Server使用对称密钥加密“明文内容A”,发送给Client。 7.Client使用对称密钥解密响应的密文,得到“明文内容A”。 8.Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B”。 深入理解HTTPS工作原理2023-08-11 08:16:351
SSL证书的工作流程
1、客户联接到你的Web站名,该Web站名受服务器证书所维护。(可由查询 URL的开始是不是为"https:"来开展辩识,或电脑浏览器会出示你有关的信息内容)。2、你的服务器进行没有响应,并全自动传输你网址的ca证书给客户,用以辨别你的网址。3、客户的浏览器工具程序流程造成一把唯一的“会话锁匙码,用于跟网址中间全部的通信全过程开展数据加密。4、使用人的电脑浏览器以网址的公钥对沟通交流锁匙码开展数据加密,便于只能给你的网址足以阅读文章此沟通交流锁匙码。2023-08-11 08:16:454
简述SSL协议与SET协议的工作原理
你们老板是谁,我去找,你这个逼脸员工2023-08-11 08:17:122
https工作原理
HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段 首先,非对称加密的加解密效率是 非常低 的,而 HTTP 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。 另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。 防止中间人攻击 SSL加密的过程包括以下步骤:①通过验证以后,所有数据通过密钥进行加密,使用DEC和RC4加密进行加密。②随后客户端随机生成一个对称密钥。③信息通过HASH加密,或者一次性加密()。(MD5/SHA)进行完整性确认。④客户端和服务器协商建立加密通道的特定算法。 A . ④③①② B . ④①③② C . ④②③① D . ④②①③2023-08-11 08:17:331
关于https中的ssl证书,服务器发往客户端的信息是安全的吗
肯定是安全的2023-08-11 08:17:422
Https原理及流程
原文地址 我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。 在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识。 明文 : 明文指的是未被加密过的原始数据。 密文 :明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。 密钥 :密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。 对称加密 :对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。 其加密过程如下: 明文 + 加密算法 + 私钥 => 密文 解密过程如下: 密文 + 解密算法 + 私钥 => 明文 对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。 其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。 非对称加密 :非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。 被公钥加密过的密文只能被私钥解密,过程如下: 明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文 被私钥加密过的密文只能被公钥解密,过程如下: 明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文 由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。 在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。 HTTPS协议 = HTTP协议 + SSL/TLS协议 ,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。 SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL,其最新的版本是3.0 TLS的全称是Transport Layer Security,即安全传输层协议,最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。虽然TLS与SSL3.0在加密算法上不同,但是在我们理解HTTPS的过程中,我们可以把SSL和TLS看做是同一个协议。 HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。 以下图片来自于 limboy的博客 HTTPS在传输的过程中会涉及到三个密钥: 服务器端的公钥和私钥,用来进行非对称加密 客户端生成的随机密钥,用来进行对称加密 一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。 1.客户端向服务器发起HTTPS请求,连接到服务器的443端口 2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。 3.服务器将自己的公钥发送给客户端。 4.客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。 5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。 6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。 7.然后服务器将加密后的密文发送给客户端。 8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。2023-08-11 08:17:561
HTTPS 协议原理?
HTTPS的全称是Hypertext Transfer Protocol over Secure Socket Layer,即基于SSL的HTTP协议,简单地说就是HTTP的安全版。HTTPS协议由当时著名的浏览器厂商网景(Netscape)公司首创,虽然网景在与微软(Microsoft)的浏览器之争中败北,但是HTTPS这一项技术得到了传承,当前几乎所有的浏览器和服务器都能够很好地支持HTTPS 协议。依托SSL协议,HTTPS协议能够确保整个通信过程都是经过加密的,密钥随机产生,并且能够通过数字证书验证通信双方的身份,以此来保障信息安全。其中证书中包含了证书所代表一端的公钥,以及一些其所具有基本信息,如机构名称、证书所作用域名、证书的数字签名等,通过数字签名能校验证书的真实性。通信的内容使用对称加密方式进行加密,通信两端约定好通信密码后,通过公钥对密码进行加密传输,只有该公钥对应的私钥,也就是通信的另一端能够解密获得通信密码,这样既保证了通信的安全,也使加密性能和时间成本可控。2023-08-11 08:18:041
HTTPS的前世今生和原理详解
HTTPS百科: HTTP是明文传输的协议,数据很容易被窃听和篡改,并且攻击者很容易冒充客户端和服务端,HTTPS可以解决这两个的安全问题。HTTS仍是HTTP协议,只是在HTTP与TCP之间添加了用于加密数据的TSL/SSL协议。很多其它应用层的协议也采用在传输层之上添加TSL/SSL协议来保证安全,如FTPS、IMAPS。 加密和解密使用的是同一个密钥。加密和解密的双发都需要持有同一个密钥。常见对称加密算法:AES、DES、3DES。 加密和解密使用的是不同的密钥,加密时使用的密钥称为公钥匙,解密是使用的密钥称为私钥。使用公钥加密的密文只能用私钥解开。公钥可以发布出去使用,但私钥一定不能泄漏。常见的非对称加密算法:RSA、背包算法、ECC。 数字签名用于校验数据是否被篡改,即数据是否和原数据是否一致。 数字签名包含签名和验证两个运算。数字签名具有不可抵赖性,签名验证正确后就不能否认。 数字签名一般包含一个自己知道的私钥和一个公开的公钥,与传统的加密不同的是签名时使用私钥,验证签名是使用公钥。 1994年Netscape提出了SSL协议并制订了SSL协议的原始规范,即SSL1.0。但由于SSL1.0使用的是弱加密算法而受到密码学界的质疑,所以SSL1.0并没有公共发布。 SSL1.0之后Netscape对SLL协议规范进行了重大改近,并在1995年发布 SSL2.0协议 。虽然SSL2.0版本被认为是一个相当强大且健壮的协议,但仍存在一些易受攻击的漏洞,所以并没有得到广泛的使用。 由于SSL2.0的安全问题,Netscape联合哈佛的Paul Kocher等人重新设计了SSL协议,并在1996年发布,即SSL3.0版本,该版本较2.0版本有较大的差别。 SSL 3.0协议 获得了互联网广泛认可和支持。 随着互联网的飞速发展,网络安全越来越重要,业界非常迫切的需要一个标准的安全协议,于是IETE接手了SSL协议,并将其更名为 TSL(Transport Layer Security Protocol,安全传输层协议 ,并在1999年发布了TSL1.0版本。 不过TSL1.0于SSL3.0差别并不大(TLS 1.0 内部的协议版本号其实是3.1)。 虽然TSL是SSL的升级,但一些称呼上还存在混淆,所以大家通常将二者统称为SSL/TLS协议。 TSL1.1 于2006年发布,主要是修复了一些漏洞。 TSL1.2于2008年发布,1.2版本主要移除了一些老旧的加密套件,并引入了 AEAD 加密模式。1.2版本是目前应用最广泛的版本。 TSL1.3 于2018年发布。1.3版本在2014年提出,经4年的反复修改直到第28个草案才于2018年正式纳入标准。 1.3版本相较1.2版本有很大的改动,即增强了安全性也也大大提升了访问速度。主要有以下改动: 在公网通讯时想要保证通信信道的安全,目前来看只有将通信的数据进行加密后可防止窃听、冒充和篡改。 防止窃听: 数据加密后传输的就是加密后的密文,这些密文即使被窃听了但在没有解密的密钥的情况下是得不到真正的内容的。 防冒充和篡改: 通讯的数据加密后传输,在没有加密用的秘钥的情况下时无法构造出合法的数据包的,也就无法冒充或篡改数据。 将通信数据加密后传输可以解决很多的安全问题,但要实现通信的加密最为关键的点在于通信的双发用于加密的密钥怎么协商才能保证密钥不被泄漏和篡改那?密钥协商是HTTPS中最大的难点。 通信时使用对称加密,并且在客户端请求时直接将对称加密的密钥返回给客户端。 但在安全的信道建立起来之前任何传输仍是明文的,使用明文风发密钥毫无安全性可言,并且由对称加密使用同一个密钥,所以第三方在窃听到密钥后即可以窃听和篡改数据也可以冒充客户端和服务端。 所以直接分发对称加密的密钥显然行不通。 为方便说明这里只看客户端单向向服务端发送数据的情况,服务端向客户端发送数据与其类似。 通信时使用非对称加密,在客户端请求时将公钥放回给客户端。 但返回公钥时仍然是明文传输的,所以公钥还是很容易就会被泄漏,泄漏了公钥后,虽然第三方无在没有密钥的情况下是没法窃听数据或直接冒充服务端,但由于泄漏了公钥第三方还是可以冒充客户端或者进行‘中间人"攻击。 所以单纯使用非对称加密也是行不通的。 "中间人"攻击: 只要通信时使用的密钥不泄漏,那么在通信时完全没必要使用非对称加密,毕竟对称加密的效率更高。所以可以在通信正式开始前使用非对称加密来协商出通信时使用的对称加密的密钥,步骤如下: 虽然对称加密与非对称加密结合可以使我们或得两种的优点,但这样还是无法避免‘中间人"攻击。 DH密钥协商算法不会直接交互密钥,而是交互用于生产密钥的参数,DH算法基于当前‘无法"对大数进行质数分解来保证即使参数泄漏了,第三方也无法通过参数推导出密钥。 DH算法密钥协商步骤: 通过以上步骤客户端和服务端就协商出了密钥s,并且整个过程中没有传输过s。为了防止被破解a和b通常非常大,p 是一个至少 300 位的质数,g一般很小通常是3或者5. 但DH算法的缺点也很明显,DH无法防止冒充,还是会受到中间人攻击。 数字证书(digital certificate),又称公开密钥认证(Public key certificate)或身份证书(identity certificate),用来下发公钥匙和证明公钥拥有者的身份。 证书由第三机构颁发用来验证服务提供方的合法性,使用时服务提供方将证书给到客户端,客户端通过特定的机制验证书的合法性,从而信任提供证书的服务端和证书中的公钥。 数字证书以文件的形式存在,证书文件中包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对数字证书自身的数字签名,证书的数字签名用来保证证书没有被篡改。 一般我们向CA申请证书时不用我们我们提供公钥和私钥,CA会给我们分配一个密钥对,并将公钥写到证书中,然后将证书和私钥给我们。 证书有统一的标准,其合法性(证书是否过期、数字签名是否有效、颁发的机构是否可信)通过一定的程序按标准来进行验证,如浏览器会保证HTTPS证书是否是合法的,Linux下openSSL库提供了证书验证功能。 核对证书后若证书可信,就可以使用证书中的公钥对数据进行加密与证书的拥有者进行通信。 HTTPS的证书在扩展字段中包含了域名相关的信息,所以HTTPS的证书在申请的时候CA会严格的校验申请的机构或个人是否真的拥有这个域名。 数字证书认证机构(英语:Certificate Authority,缩写为CA)。证书标准是公开的任何人都可以去制作证书,但自己制作的证书是不受信任的,只有权威的CA机构颁发的证书才被信任。 权威的CA证书审核和部署流程严苛而繁杂,所以权威的根证书的有效期一般在几十年内。 也只有权威的CA的根证书会被各大操作系统支持,将其预制与操作系统内。 证书一般遵循X.509规范,主要包含以下内容: CA生成的证书包含以上内容和一些扩展字段外,还包含CA使用自己的私钥对这些内容进行加密后的密文。在验证证书时使用CA的根证书对秘文进行验证,从而判断证书是否是合法的。 权威结构使用根证书来签发二级CA证书,二级CA证书可以给其它服务签发证书。但不是所有证书都可以继续签发新的证书,证书使用基础约束扩展来限制证书的签发,我们普通申请到证书基础约束扩展都是False的。查看根证书的基本约束可以看到证书颁发机构为‘是"。 根证书并不直接签发服务的证书,只要基于以下两点: 上一级证书对下一级证书进行签名,签名值包含在证书中,可以使用上一级证书中的公钥来验证下一级证书的签名值。根证书的签名是自己签的,并且验证签名的公钥包含在根证书中。 完整的证书连的关系应该有服务器放回,但有的并没有返回,对于没有放回完整证书连的证书,证书中的扩展字段CA 密钥标识符( Authority Key Identifier)记录了证书的上一个证书,通过该字段获取到上一级中间证书,再从中间证书的该字段中继续向上查找,直到根证书。 服务端最好可以返回证书连,这样可以避免浏览器自己去查找,提示握手速度。服务器返回的证书链并不包含根证书,根证书预至与操作系统内部。 在linux中openssl库会集成根证书。openssl的根证书的存放路径通过‘openssl version -a"查看。 校验证书时先根据证书链逐级校验证书的签名,签名校验的最关键的在根证书。根证书预至于操作系统中,CA要将自己的证书预至与各个系统中是非常困难的,所以预支与系统中的根证书是可信的。 回顾一下对于HTTPS的证书来说申请的时候CA会严苛的验证,保证这个域名是属于申请这个证书的机构的。这样攻击者或许可以伪造一个改域名的证书,但伪造的证书的根证书在系统中并不会存在,所以伪造的证书是不会被信任的。这样通过证书链的校验就可以有效的防止服务端被‘冒充"。 经过上面证书数字签名验证只是验证了证书确实是合法的证书,后还要验证证书的有效性,有效性验证主要包括以下字段: 验证合法的证书也可能由于种种原因被吊销,如证书的私钥泄漏了、证书错发了等,为了验证证书是否有效引入了证书吊销机制。 OSCP是证书提供方提供的证书验证接口,用户通过调用OSCP接口验证证书是否被吊销了。 但OCSP服务可能因为策略或服务故障导致无法访问,这时一般浏览器会选择信任证书,毕竟证书被吊销的情况只是极少数。也有部分CA将OCSP失败后的策略写到证书的扩展字段中,用用户根据扩展字段去做处理。 OSCP方式有自己明显的缺陷,为了验证证书而请求OSCP的同时也将自己在什么时候访问了什么服务也告诉了CA,CA利用我们的访问数据作恶咋办,还有OCSP的接口很慢的话不就拖慢了我们服务的相应数独。为了解决这两个问题各大CA厂商联手推出了CRL方案。 CRL方案是将被吊销的证书列表定期拉去到本机,一般是几天拉取一次。在校验证书时去本机列表中查找。 CA会在证书的扩展字段中写入CRL更新的地址: CRL也有自己明显的确定,首先CRL是定期拉取的不能保证实时生效,然后CRL的列表一般很大可能达到数M。 CRLSet是chrome自建自用的解决方案。google觉得CRL更新太慢了,每个CA都有自己的CRL并且CRL内容也太多了。于是自己搞了一个CRLSet,将各大CA被吊销的高风险证书添加到CRLSet中,chrome在校验证书时可以去自己CRLSet中校验。 CRLSet只有各个CA吊销的证书的部分,大概包含所有吊销证书的2%。 CRLSet的更新相对快一些,最慢几个小时就会从各个CA中更新一次,CRLSet可以用在需要紧急吊销证书的情况下让吊销快速生效。 CRLSet提供了 https://github.com/agl/crlset-tools 工具来拉取和校验证书是否在CRLSet中。 可以在 chrome://components/ 中更新chrome的CRLSet 客户端向服务端发送hello请求,里面包含了客户端SSL/TSL的版本、支持的加密套件和一个随机数Random1 服务端收到客户端的hello后,根据客服端支持的加密套件和自己支持的加密套件选择出后面使用的加密和散列套件并返回给客户端,同时返回的还有服务端生产的一个随机数 Random2 服务端向客户端返回自己的证书,客户端收到证书后通过校验证书来信任服务端,并从证书中获取到证书中的公钥。 服务端在返回证书后会立即向客户端发送该请求。不过该请求不是必须的,只有选择的加密套件需要额外的参数是才会发送该请求交互参数。 如果密钥协议商算法是DH算法,那么DH的参数就在该请求中返回给客户端,DH算法有以下几种:DHE_DSS、DHE_RSA、ECDHE_ECDSAECDHE_RSA dh算法会返回dh的参数p、g、dh的公钥和公钥的签名,公钥即g^b mod p,b为服务端的随机数 这里g就是0X03,p就是0X0017。 服务端在发送完上述信息后,就会立马发送Server Hello Done,来告知客户端服务端的相关信息已经发送完毕,就等客户端开始做密钥协商了。 客户端在收到该消息后就开始验证证书,协商密钥等工作。 在接受到服务器的Server Hello Done信息之后,客户端会计数出预备主密钥,并将其返回给服务端。 如果使用的是RSA/ECDSA算法,那么发送的就是预备主密钥。 如果使用的是DH算法,那么发送的就是通过之前的参数计数出来的公钥匙,即B( g^b mod p)服务端在收到B后通过 B ^ a mod p得到第三个随机数。而客户端已经通过s = A b mod 得到了s。 到了这里服务端和客户端已经得到了三个随机数,通过之前协商好的加密算法使用这个三个随机数就得到一个对称加密的密钥,后面通信时就使用该密钥。 该请求用于通知对方已经计数出通信用的密钥,接下来的通信都使用该密钥进行。服务端和客户端都会发出该请求,一般是服务端先发出。 在完成上述步骤以后,双发都会发送一个Finished请求给对方,Finished的数据是通过协商好的密钥加密的,以此来验证之前协商好的密钥、协议版本是否是有效的。 参考资料:2023-08-11 08:18:121
关于https原理
简单的说:你想去某商店买东西,带了1000块钱,往那个店走。http方式,你把钱直接揣到衣服兜里,走向目的地,路上遇到劫匪,可能就被洗劫了。。。https方式,你把钱放进一个保险柜,然后背在身上,走向目的地,劫匪把保险柜拿去了,也只能干瞪眼,钱是“安全”的,想要,必须要“密钥”打开保险柜才行。当然http SSL的整个过程,要比上面这个例子复杂多了。过程要多几个步骤2023-08-11 08:18:214
HTTPS传输安全原理
HTTP(Hyper Text Transfer Protocol),超文本传输协议。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件、图片文件、查询结果等。 HTTP的安全缺陷: 非对称加密可以为网络数据传输安全性提供保障。 MAC(Message Authentication Code):消息验证码 为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的摘要数据,这串摘要值与原数据存在对应关系,就是原数据会生成这个摘要,但是,这个摘要是不能还原成原数据的。也就是说,发送者使用共享密钥通过MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。 MAC消息验证码摘要算法为网络数据传输的完整性提供保障。 CA(Certificate Authority):证书授权认证中心 CA中心是被认可的权威、可信、公正的第三方机构,专门负责发放并管理所有参与网上业务的实体所需的数字证书。数字证书是网络世界中的身份证。因为数字证书是CA颁发的所以也叫CA证书。国内外有很多权威CA机构,如:DigiCert、GeoTrust等。 如上图所示,CA证书申请者向CA机构提交公钥、域名和申请者信息,CA机构经线上或线下审核后颁发CA证书。CA证书文件包含了公钥、公钥拥有者名称、CA的数字签名、有效期、授权中心名称、证书序列号等信息。下图是cn.bing.com的CA证书(浏览器查看): X.509是一种 数字证书 的 格式标准 。SSL/TLS使用的证书就是x.509格式的。 CA证书为身份认证提供了保障。 HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。 SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。 TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。 SSL/TLS发展史: SSL/TLS认证过程: 从上图可见SSL/TLS解决了HTTP的安全问题,握手建立SSL连接通过CA证书认证服务器身份,使用非对称公私钥加密保证共享密钥(对称加密密钥)协商的安全性,握手完成后双方使用共享了的会话密钥加解密传输数据保证数据不被窃取和篡改。 另外,如果服务器需认证客户端身份可使用SSL/TLS双向认证,客户端需将它的证书发送服务器以验证其身份。如银行网银账号登录使用的U盾。2023-08-11 08:18:411
1- Https流程和原理
在这里整理一下最近这两天整理的https的相关知识。 大家都知道要使用https,需要在网站的服务器上配置https证书(一般是nginx,或者tomcat),证书可以使用自己生成,也可以向专门的https证书提供商进行购买。这两种的区别是自己生成的证书是不被浏览器信任的,所以当访问的时候回提示不安全的网站,需要点击信任之后才能继续访问 而购买的https证书会提示安全 这是因为浏览器中预置了一些https证书提供商的证书,在浏览器获取到服务器的https证书进行验证的时候就知道这个https证书是可信的;而自己生成的证书,浏览器获取到之后无法进行验证是否可信,所以就给出不安全的提示。 下面对具体的一些知识点进行介绍 https简单的说就是安全版的http,因为http协议的数据都是明文进行传输的,所以对于一些敏感信息的传输就很不安全,为了安全传输敏感数据,网景公司设计了SSL(Secure Socket Layer),在http的基础上添加了一个安全传输层,对所有的数据都加密后再进行传输,客户端和服务器端收到加密数据后按照之前约定好的秘钥解密。 Https的发展和密码学的发展是分不开的。大家应该知道加密方式可以大体分为对称加密和非对称加密(反正我就知道这两种) 1 在服务器上生成CSR文件(证书申请文件,内容包括证书公钥、使用的Hash算法、申请的域名、公司名称、职位等信息) 可以使用命令在服务器上生成;也可以使用线上的工具进行生成,线上的工具会把公钥加入到CSR文件中,并同时生成私钥。 2 把CSR文件和其他可能的证件上传到CA认证机构,CA机构收到证书申请之后,使用申请中的Hash算法,对部分内容进行摘要,然后 使用CA机构自己的私钥对这段摘要信息进行签名 , 3 然后CA机构把签名过的证书通过邮件形式发送到申请者手中。 4 申请者收到证书之后部署到自己的web服务器中。下面会在写一篇关于部署的文章 当然这是不通过CA代理机构进行申请的流程,现在网上有好多CA的代理机构,像腾讯云,阿里云都可以申请https证书,流程都差不多。 阿里云申请证书流程 PreMaster secret2023-08-11 08:18:491
HTTPS从原理到应用(三):SSL/TLS协议
有了前面 加密和哈希 以及 数字证书和数字签名 两篇文章的铺垫,终于可以来认识 HTTPS 的核心所在了, SSL/TLS 协议。本篇从 SSL/TLS 发展历史到握手以及传输的详细过程来讲解。 此篇文章的逻辑图 计算机网络的 OSI 七层模型和 TCP/IP 四层模型想必大家都知道。其中 SSL/TLS 是一种介与于传输层(比如 TCP/IP )和应用层(比如 HTTP )的协议。它通过"握手协议 (Handshake Protocol) "和"传输协议 (Record Protocol) "来解决传输安全的问题。 SSL/TLS 是一个可选层,没有它,使用 HTTP 也可以通信,它存在的目的就是为了解决安全问题,这也就是 HTTPS 相对于 HTTP 的精髓所在。 SSL/TLS 协议发展历史参看下表,更详细的发展历史参看维基百科的 SSL/TLS协议发展历史 。 目前,应用最广泛的是 TLS 1.0 ,接下来是 SSL 3.0 。但是,主流浏览器都已经实现了 TLS 1.2 的支持。值得一提的是 iOS9 的 App ,需将 HTTP 连接升级到 HTTPS ,并且 TLS 版本不得低于 1.2 (当然升级为 HTTPS 并非必须的)。 上面提到SSL/TLS有两个阶段 握手协议 和 传输协议 , 握手协议 就是建立起连接的过程,这个阶段采用非对称加密,这个过程完毕后会生成一个 对话秘钥 ,从而 传输协议 过程,就是用这个 对话秘钥 使用对称加密进行传输。之所以这样做,是因为,非对称加密是很耗性能的。而握手协议过程中,使用数字证书保证了公钥的安全性。当然这个过程既可以双向证书验证,也可以只验证服务端的证书单向证书验证。这也是前两节所作的铺垫,不至于这儿看的太迷糊。 结合上图(图2-0),我来说明上图中一步步的都发生了什么? 对应上图第一步,客户端发出请求,这一步客户端主要向服务端提供以下信息: 收到客服端的请求之后,服务端向客户端回应以下信息: 客户端收到服务端的回应后,首先验证服务端的数字证书,如果证书没有问题继续下去,如果证书有问题,则会有相应提示,或者对话直接关闭。然后客户端在向服务端发送以下信息: 如果有客户端的证书,就先验证客户端的证书 这时客户端和服务端都有了 session key ,然后握手协议阶段就结束了。下面开始使用 session key 对称加密数据,进行传输,就进入了下一个阶段,传输协议过程。 这块的重点在与 SSL/TSL 协议的握手协议过程。在第三步,客户端验证证书的时候,如果服务端的证书在系统默认信任证书列表中(系统会默认信任一些 CA 认证中心的根证书)则会直接通过,如果没有在系统默认信任证书列表中,浏览器可能会弹窗让用户选择是否信任该证书,也有可能会直接关闭连接,提示用户,证书不可信。而在 App 内,如果想要信任未在系统信任列表中的证书,则需要在 App 内提前置入服务端证书,关于这一点有讲。而关于认证方式,大多数也都是采用的单向认证,也就是说仅仅认证服务端的证书,而像银行等机构则多使用双向认证的方式。2023-08-11 08:19:081
什么是SSL/TLS协议
什么是SSL/TLS协议?SSL/TLS协议是什么?介绍一下它的基本工作原理和应用场景SSL/TLS协议是现代互联网通信中广泛使用的一种安全传输协议。它的基本作用是将在传输过程中的数据进行加密和验证,以保证数据传输的安全性。下面我们将详细介绍这种协议的基本工作原理和应用场景。SSL协议是SecureSocketsLayer(安全套接层)协议的简称,而TLS协议则是TransportLayerSecurity(传输层安全)协议的简称,它是SSL协议的升级版。目前SSL3.0版本和TLS1.0版本是最常用的两个版本。在传统的HTTP协议中,客户端和服务器之间传输的数据是明文的,容易被黑客窃取和篡改。而使用SSL/TLS协议后,客户端和服务器之间的通信就变得安全可靠了。SSL/TLS协议的基本工作原理是通过给数据加上一段密钥信息,来保证传输过程中的数据不被窃取和篡改。这种加密方式通常采用公钥和私钥的加密技术,其中公钥用于加密信息,而私钥则用于解密信息。不仅在传输数据时使用SSL/TLS协议可以确保数据传输的安全性,在许多企业的应用场景中,这种协议也被广泛使用。例如企业的电子商务平台、网上银行、在线支付等,都需要通过SSL/TLS协议保证数据传输的安全性。此外,在一些大型企业中使用SSL/TLS协议还能够有效地防止内部信息泄露风险。综上所述,SSL/TLS协议是确保数据传输安全的重要手段之一,它的应用非常广泛,并成为企业在数据传输过程中不可或缺的安全保障方式。2023-08-11 08:19:151
什么是ssl
ssl就是安全套接层,是Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听的一种应用软件 -----采纳于职Q小助手2023-08-11 08:19:397
HTTPS加密原理
HTTP、HTTPS在我们日常开发中是经常会接触到的。 我们也都知道,一般 Android 应用开发,在请求 API 网络接口的时候,很多使用的都是 HTTP 协议;使用浏览器打开网页,也是利用 HTTP 协议。看来 HTTP 真是使用广泛啊,但是,HTTP 是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用 Fiddler 来抓包,搜集一些有趣的 API 接口。 那么问题来了,如何保证 HTTP 的安全性呢?基本上所有的人都会脱口而出:使用 HTTPS 协议。99.9% 的人都知道 HTTPS 会将传输的内容进行加密,但是接着问具体加密的过程和步骤,很多人就哑口无言了。 为了防止出现这种尴尬的局面,所以今天你就要好好看看这篇的内容了。以后就可以装个逼,哈哈! 先科普一下,加密算法的类型基本上分为了两种: 对称加密的意思就是说双方都有一个共同的密钥,然后通过这个密钥完成加密和解密,这种加密方式速度快,但是安全性不如非对称加密好。 举个例子,现在学霸小明这里有一道数学题的答案:123 。他想把答案传给自己一直暗恋的小红。所以他们双方在考试开考前,约定了一把密钥:456 。那么小明就把答案内容经过密钥加密,即 123 + 456 = 579 ,将 579 写在小纸条上扔给小红。如果此时别人捡到了小纸条,不知道他们是加密传输的,看到上面的 579 ,会误以为答案就是 579 ;如果是小红捡到了,她拿出密钥解密,579 - 456 = 123 ,得到了正确的答案。 这就是所谓的对称加密,加解密效率高,速度快,但是双方任何一方不小心泄露了密钥,那么任何人都可以知道传输内容了。 讲完了对称加密,我们看看啥是非对称加密。 非对称加密就是有两把密钥,公钥和私钥。私钥自己藏着,不告诉任何人;而公钥可以公开给别人。 经过了上次作弊后,小红发现了对称加密如果密钥泄露是一件可怕的事情。所以她和小明决定使用非对称加密。小红生成了一对公钥和私钥,然后把公钥公开,小明就得到了公钥。小明拿到公钥后,把答案经过公钥加密,然后传输给小红,小红再利用自己的私钥进行解密,得到答案结果。如果在这个过程中,其他人得到传输的内容,而他们只有小红公钥,是没有办法进行解密的,所以也就得不到答案,只有小红一个人可以解密。 因此,相比较对称加密而言,非对称加密安全性更高,但是加解密耗费的时间更长,速度慢。 对称加密和非对称加密的具体应用我还是深有体会的,因为所在的公司是做金融支付方面的,所以加解密基本上算是天天见了。 说完加密类型后,我们再来看看 HTTPS 。 我们先来看一个公式: HTTPS = HTTP + SSL 从这个公式中可以看出,HTTPS 和 HTTP 就差在了 SSL 上。所以我们可以猜到,HTTPS 的加密就是在 SSL 中完成的。 所以我们的目的就是要搞懂在 SSL 中究竟干了什么见不得人的事了? 这就要从 CA 证书讲起了。CA 证书其实就是数字证书,是由 CA 机构颁发的。至于 CA 机构的权威性,那么是毋庸置疑的,所有人都是信任它的。CA 证书内一般会包含以下内容: 正好我们把客户端如何校验 CA 证书的步骤说下吧。 CA 证书中的 Hash 值,其实是用证书的私钥进行加密后的值(证书的私钥不在 CA 证书中)。然后客户端得到证书后,利用证书中的公钥去解密该 Hash 值,得到 Hash-a ;然后再利用证书内的签名 Hash 算法去生成一个 Hash-b 。最后比较 Hash-a 和 Hash-b 这两个的值。如果相等,那么证明了该证书是对的,服务端是可以被信任的;如果不相等,那么就说明该证书是错误的,可能被篡改了,浏览器会给出相关提示,无法建立起 HTTPS 连接。除此之外,还会校验 CA 证书的有效时间和域名匹配等。 接下来我们就来详细讲一下 HTTPS 中的 SSL 握手建立过程,假设现在有客户端 A 和服务器 B : 到此,SSL 握手过程就讲完了。可能上面的流程太过于复杂,我们简单地来讲: 我们可以发现,在 HTTPS 加密原理的过程中把对称加密和非对称加密都利用了起来。即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。真的是设计得非常精妙,令人赞不绝口。 好了,HTTPS 加密原理到这就讲的差不多了,不知道电脑前的你有没有看懂呢? 如果有哪里不明白的地方,可以在底下留言交流。 bye ~~2023-08-11 08:19:561
认证原理,SSL双向认证和SSL单向认证的区别
双向认证SSL 协议的具体通讯过程,这种情况要求服务器和客户端双方都有证书。 单向认证SSL 协议不需要客户端拥有CA证书,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户端的是没有加过密的(这并不影响SSL过程的安全性)密码方案。这样,双方具体的通讯内容,就是加密过的数据。如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用128位加密通讯的原因。一般Web应用都是采用单向认证的,原因很简单,用户数目广泛,且无需做在通讯层做用户身份验证,一般都在应用逻辑层来保证用户的合法登入。但如果是企业应用对接,情况就不一样,可能会要求对客户端(相对而言)做身份验证。这时就需要做双向认证。2023-08-11 08:20:051
ssl协议是什么
所谓SSL即Secure Socket Layer缩写,它是在传输通信协议上实现的一种安全协议,SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。2023-08-11 08:20:154
SSl是什么意思?
SSL 证书就是遵守 SSL 安全套接层协议的服务器数字证书。而 SSL 安全协议最初是由美国网景 Netscape Communication 公司设计开发的,全称为:安全套接层协议 (Secure Sockets Layer) , 它指定了在应用程序协议 ( 如 HTTP 、 Telnet 、 FTP) 和 TCP/IP 之间提供数据安全性分层的机制,它是在传输通信协议 (TCP/IP) 上实现的一种安全协议,采用公开密钥技术,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。由于此协议很好地解决了互联网明文传输的不安全问题,很快得到了业界的支持,并已经成为国际标准。SSL 证书由浏览器中“受信任的根证书颁发机构”在验证服务器身份后颁发,具有网站身份验证和加密传输双重功能。如果用户遇到的问题不能解决,可通过wosign官网客服寻求帮助,凡是选择wosign ssl证书的网站用户,wosign可提供免费一对一的ssl证书技术部署支持网页链接,免除后顾之忧。2023-08-11 08:20:337
什么是SSL加密技术???
SSL代表安全套接字层,简而言之,它是一种标准技术,用于保持互联网连接安全并保护在两个系统之间发送的任何敏感数据,防止犯罪分子读取和修改任何传输的信息,包括潜在的个人详细信息。2023-08-11 08:22:003
SSL协议的工作原理是什么?
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL HandshakeProtocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。2023-08-11 08:22:214
SSL工作原理是什么?
在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。SSL工作原理:网页链接:2023-08-11 08:22:454
SSL安全证书的实现机制
SSL安全机制是依靠数字证书来实现的。用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。具体过程如下 :1.Client Hello:客户端将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息(如加密算法和能支持的密钥大小)发送到服务器。2.Server Hello:服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给客户端3.Certificate(可选):服务器发一个证书或一个证书链到客户端,证书链开始于服务器公共钥匙并结束于证明权威的根证书。该证书用于向客户端确认服务器的身份,该消息是可选的。如果配置服务器的SSL需要验证服务器的身份,会发送该消息。多数电子商务应用都需要服务器端身份验证。4.Certificate Request(可选):如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。 多数电子商务不需要客户端身份验证,不过,在支付过程中经常需要客户端身份验证。5.Server Key Exchange(可选):如果服务器发送的公共密钥对加密密钥的交换不是很合适,则发送一个服务器密钥交换消息。6.ServerHelloDone:通知客户端,服务器已经完成了交流过程的初始化。7.Certificate(可选):客户端发送客户端证书给服务器。仅当服务器请求客户端身份验证的时候会发送客户端证书8.Client Key Exchange:客户端产生一个会话密钥与服务器共享。在SSL握手协议完成后,客户端与服务器端通信信息的加密就会使用该会话密钥。如果使用RSA加密算法,客户端将使用服务器的公钥将会话加密后再发送给服务器。服务器使用自己的私钥对接收的消息进行解密得到共享的会话密钥。9.Certificate Verify:如果服务器请求验证客户端,则这消息允许服务器完成验证过程。10.Change cipher spec:客户端要求服务器在后续的通信中使用加密模式11.Finished:客户端告诉服务器已经准备好安全通信了。12.Change cipher spec:服务器要求客户端在后续的通信中使用加密模式13.Finished:服务器告诉客户端它已经准备好安全通信了。SSL握手完成的标志14.Encrypted Data:客户端和服务端在安全信道上进行加密信息的交流当上述动作完成之后,两者的资料传送就会加密。发送时信息用会话密钥加密形成一个数据包A,对称密钥用非对称算法加密形成另一个数据包B,再把两个包一起发送。接收的过程域发送正好相反,先用非对称算法打开对称密钥的加密包B,获得会话密钥,然后再用会话密钥解密数据包A,获取发送过来的信息原文。会话密钥还被描述为对称密钥,或“共享秘密”。具有对称密钥很重要,因为它减少了事务双方所需执行的计算量。如果每个消息都要求对 Nonce 和哈希进行新的交换,那么性能将会下降。因此,SSL 的最终目标是使用允许消息在通信双方之间自由流动的对称密钥,同时具有更高程度的安全和效率。2023-08-11 08:23:202
简述ssl的工作原理
SSL通信的工作原理 SSL协议的主要用途是在两个通信应用程序之间提供私密性和可靠性,这个过程通过3个元素来完成: (1)握手协议:这个协议负责被子用于客户机和服务器之间会话的加密参数。当一个SSL客户机和服务器第一次开始通信时,它们在一个协议版本上达成一致,选择加密算法和认证方式,并使用公钥技术来生成共享密钥。 (2)记录协议:这个协议用于交换应用数据。应用程序消息被分割成可管理的数据块,还可以压缩,并产生一个MAC(消息认证代码),然后结果被加密并传输。接受方接受数据并对它解密,校验MAC,解压并重新组合,把结果提供给应用程序协议。 (3)警告协议:这个协议用于每时示在什么时候发生了错误或两个主机之间的会话在什么时候终止。 SSL协议通信的握手步骤如下: 第1步,SSL客户机连接至SSL服务器,并要求服务器验证它自身的身份; 第2步,服务器通过发送它的数字证书证明其身份。这个交换还可以包括整个证书链,直到某个根证书颁发机构(CA)。通过检查有效日期并确认证书包含可信任CA的数字签名来验证证书的有效性。 第3步,服务器发出一个请求,对客户端的证书进行验证,但是由于缺乏公钥体系结构,当今的大多数服务器不进行客户端认证。 第4步,协商用于加密的消息加密算法和用于完整性检查的哈希函数,通常由客户端提供它支持的所有算法列表,然后由服务器选择最强大的加密算法。 第5步,客户机和服务器通过以下步骤生成会话密钥: ·客户机生成一个随机数,并使用服务器的公钥(从服务器证书中获取)对它加密,以送到服务器上。 ·服务器用更加随机的数据(客户机的密钥可用时则使用客户机密钥,否则以明文方式发送数据)响应。 ·使用哈希函数从随机数据中生成密钥。 SSL VPN的主要优势和不足 上面我们介绍了有关SSL VPN的一些基本情况,但是就像任何新技术的产生一样,相对传统的技术肯定会存在一些重要的优点,当然不足之处通常也是有的,下面就分别予以介绍。 1.SSL VPN的主要优点 这样一种新型的VPN技术主要优势体现在哪里呢?目前这种VPN技术的应用正逐渐呈上升趋势,原因何在呢?下面就是几个主要的方面: (1)无需安装客户端软件:在大多数执行基于SSL协议的远程访问是不需要在远程客户端设备上安装软件。只需通过标准的Web浏览器连接因特网,即可以通过网页访问到企业总部的网络资源。这样无论是从软件协议购买成本上,还是从维护、管理成本上都可以节省一大笔资金,特别是对于大、中型企业和网络服务提供商。 (2)适用大多数设备:基于Web访问的开放体系可以在运行标准的浏览器下可以访问任何设备,包括非传统设备,如可以上网的电话和PDA通讯产品。这些产品目前正在逐渐普及,因为它们在不进行远程访问时也是一种非常理想的现代时尚产品。 (3)适用于大多数操作系统:可以运行标准的因特网浏览器的大多数操作系统都可以用来进行基于Web的远程访问,不管操作系统是Windows、Macintosh、UNIX还是 Linux。可以对企业内部网站和Web站点进行全面的访问。用户可以非常容易地得到基于企业内部网站的资源,并进行应用。 (4)支持网络驱动器访问:用户通过SSL VPN通信可以访问在网络驱动器上的资源。 (5)良好的安全性:用户通过基于SSL的Web访问并不是网络的真实节点,就像IPSec安全协议一样。而且还可代理访问公司内部资源。因此,这种方法可以非常安全的,特别是对于外部用户的访问。 (6)较强的资源控制能力:基于Web的代理访问允许公司为远程访问用户进行详尽的资源访问控制。 (7)减少费用:为那些简单远程访问用户(仅需进入公司内部网站或者进行Email通信),基于SSL 的VPN网络可以非常经济地提供远程访问服务。 (8)可以绕过防火墙和代理服务器进行访问:基于SSL的远程访问方案中,使用NAT(网络地址转换)服务的远程用户或者因特网代理服务的用户可以从中受益,因为这种方案可以绕过防火墙和代理服务器进行访问公司资源,这是采用基于IPSec安全协议的远程访问所很难或者根本做不到的。 2.SSL VPN的主要不足之处 上面介绍SSL VPN技术这么多优势,那么为什么现在不是所有用户都使用SSL VPN,且据权威调查机构调查显示目前绝大多部分企业仍采用IPSec VPN呢?SSL VPN的主要不足在哪里呢? (1)必须依靠因特网进行访问:为了通过基于SSL VPN进行远程工作,当前必须与因特网保持连通性。因为此时Web浏览器实质上是扮演客户服务器的角色,远程用户的Web浏览器依靠公司的服务器进行所有进程。正因如此,如果因特网没有连通,远程用户就不能与总部网络进行连接,只能单独工作。 (2)对新的或者复杂的Web技术提供有限支持:基于SSL的VPN方案是依赖于反代理技术来访问公司网络的。因为远程用户是从公用因特网来访问公司网络的,而公司内部网络信息通常不仅是处于防火墙后面,而且通常是处于没有内部网IP地址路由表的空间中。反代理的工作就是翻译出远程用户Web浏览器的需求,通常使用常见的URL地址重写方法,例如,内部网站也许使用内部DNS服务器地址链接到其他的内部网链接,而URL地址重写必需完全正确地读出以上链接信息,并且重写这些URL地址,以便这些链接可以通过反代理技术获得路由,当有需要时,远程用户可以轻松地通过点击路由进入公司内部网络。对于URL地址重写器完全正确理解所传输的网页结构是极其重要的,只有这样才可正确显示重写后的网页,并在远程用户计算机浏览器上进行正确地操作。 (3)只能有限地支持Windows应用或者其它非Web系统:因为大多数基于SSL的VPN都是基Web浏览器工作的,远程用户不能在Windows,、UNIX、Linux、AS400或者大型系统上进行非基于Web界面的应用。虽然有些SSL提供商已经开始合并终端服务来提供上述非Web应用,但不管如何,目前SSL VPN还未正式提出全面支持,这一技术还有待讨论,也可算是一个挑战。 (4)只能为访问资源提供有限安全保障:当使用基于SSL协议通过Web浏览器进行VPN通信时,对用户来说外部环境并不是完全安全、可达到无缝连接的。因为SSL VPN只对通信双方的某个应用通道进行加密,而不是对在通信双方的主机之间的整个通道进行加密。在通信时,在Web页面中呈现的文件很难也基本上无法保证只出现类似于上传的文件和邮件附件等简单的文件,这样就很难保证其它文件不被暴露在外部,存在一定的安全隐患2023-08-11 08:23:451
请问SSL证书的原理是什么,谁能介绍下
SSL连接始终由客户端启动。在SSL会话开始时,将执行SSL握手。此握手生成会话的加密参数。解释原因:客户端提交https请求服务器响应客户,并把证书公钥发给客户端客户端验证证书公钥的有效性有效后,会生成一个会话密钥用证书公钥加密这个会话密钥后,发送给服务器服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信请点击输入图片描述解决办法:Gworg获得SSL证书。2023-08-11 08:23:545
https的工作原理和流程
https的工作原理和流程简述:1、客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器。2、服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数。3、客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/解密),并将加密后的信息发送给服务器;4、客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和MAC密钥;5、客户端将所有握手消息的MAC值发送给服务器;6、服务器将所有握手消息的MAC值发送给客户端。2023-08-11 08:24:183
Https 协议简析及中间人攻击原理
对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES、AES等 对称加密算法加密流程和解密流程 非对称加密算法的特点是加密密钥K1和解密密钥K2是不一样的,他们是一对可互为加解密的密钥,一个可以公开,叫公钥;一个自己保留,不能让其他人知道,叫私钥。这样就能比较好的解决信息传递的安全性,相对来说加解密速度较慢,典型的非对称加密算法有RSA、DSA等。问题是如何保证加密用的接收者的公钥,即如何安全的传递公钥。 非对称加密算法加密流程和解密流程 F(M) = D E(D)=S F是单向散列函数:即如果已知x,很容易计算F(x),但已知F(x),却很难算出x 数字签名就是用私钥将摘要加密的结果,这样能够保证数据的完整性、防篡改、以及不可抵赖性。 摘要算法及数字签名过程 乙方把接收到的发送方的明文用单向哈希函数取得摘要值与甲方的公钥解密甲方的数字签名而得到的摘要值进行比较,如果一样说明信息完整,未受篡改,如果不一样说明受到篡改 检验数据完整性过程 在发送过程中首先将甲方的明文取摘要值,再将此摘要值用甲方的私钥加密得到甲方的签名,然后将甲的明文、数字签名和数字证书合在一起用甲方随机生成的对称密钥加密得到密文;第二步是将这一随机生成的对称密钥用乙方的公钥加密后得到数字信封;最后将密文和数字信封一起发送给乙方。 在乙方接收过程中,首先将收到数字信封用乙方的私钥解密,得到随机生成的对称密钥,第二步是解密得到的随机生成的对称密钥将密文解密,得到甲方的明文、数字签名和数字证书;第三步将甲方的明文取摘要值与甲方的数字签名用甲方的公钥解密得到的摘要进行比较,从而验证签名和检验数据的完整性。这一流程同时用到对称算法和非对称算法,是比较安全的流程 数字证书在这里起到的作用有:提供甲方的公钥,保证发送信息方的不可抵赖性。 严密的数字加解密、数字签名和验证流程 为了保证证书的一致性,国际电信联盟设计了一套专门针对证书格式的标准X.509,其核心提供了一种描述证书的格式。 X.509数字证书不仅包括用户名和密码,而且还包含了与用户有关的其他信息,通过使用证书,CA可以为证书接收者提供一种方法,使他们不仅信任证书主体的公钥,而且还信任有关证书主体的其他信息 X.509证书有有效期限、证书在期满后就会失效。期间CA可能会出于某些原因吊销证书。要吊销证书,CA保存并分发一个吊销证书的列表,即证书吊销列表CRL。网络用户可以访问CRL以确定证书的有效性 目前, X.509标准已在编排公共密钥格式方面被广泛接受,用户许多网络安全的应用程序,其中包括Ipsec, SSL, SET, S/MIME(安全多媒体Internet邮件扩展) 证书中主要域 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。其实现是在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 SSL协议位于TCP/IP协议与各种应用协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性。SSL层所处位置如下 SSL示意图 ①SSL协议可用于保护正常运行与TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telent的通信,最常见的是用户SSL来保护HTTP通信 ②SSL协议的优点在于它是应用层协议无关的。高层的应用协议能透明的建立于SSL协议之上 ③SSL协议的应用层协议之前就完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密。从而保证通信的安全性。 ④SSL协议使用通信双方的客户证书以及CA根证书。允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方建立起了一条安全的、可信任的通信通道。 ⑤该协议使用密钥对传送数据加密,许多网站都是通过这种协议从客户端接收信用卡编号等保密信息。常用于交易过程 Sl工作基本流程图如下所示 SSl工作基本流程图 SSL协议既用到了非对称加密技术又用到了对称加密技术。对称加密技术虽然比公钥加密技术的速度快,可是非对称加密技术提供的更好的身份认证技术。SSL的握手协议非常有效的让客户端和服务器之间完成相互之间的身份认证。其主要过程如下: 1)客户端向服务器传输客户端的SSL协议版本号,支持的加密算法的种类,产生的随机数Key1及其他信息 2)服务器在客户端发送过来的加密算法列表中选取一种,产生随机数Key2,然后发送给客户端 3)服务器将自己的证书发送给客户端 4)客户端验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者的公钥能否正确解开服务器证书的”发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配,如果合法性验证没有通过,通信将断开,如果合法性验证通过,将继续向下进行; 5)客户端随机产生一个Pre-Master-Key,然后用服务器的公钥(从证书中获得)对其加密,然后将该Pre-Master-Key发送给服务器 6)服务器接收到Pre-Master-Key,则使用协商好的算法(H)计算出真正的用户通信过程中使用的对称加密密钥Master-Key=H(C1+S1+PreMaster); 7)至此为止,服务器和客户端之间都得到Master-Key,之后的通信过程就使用Master-Key作为对称加密的密钥进行安全通信; 针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击 SSL劫持攻击即SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到客户端和目标网站之间;在传输过程中伪造服务器的证书,将服务器的公钥替换成自己的公钥,这样,中间人就可以得到明文传输带Key1、Key2和Pre-Master-Key,从而窃取客户端和服务端的通信数据; 但是对于客户端来说,如果中间人伪造了证书,在校验证书过程中会提示证书错误,由用户选择继续操作还是返回,由于大多数用户的安全意识不强,会选择继续操作,此时,中间人就可以获取浏览器和服务器之间的通信数据 这种攻击方式也需要将攻击者设置为中间人,之后将HTTPS范文替换为HTTP返回给浏览器,而中间人和服务器之间仍然保持HTTPS服务器。由于HTTP是明文传输的,所以中间人可以获取客户端和服务器传输数据2023-08-11 08:24:441
服务器证书的工作原理
SSL证书的工作原理ssl证书的工作原理是到底是什么呢,其实证书主要作用是在SSL握手中,我们来看一下SSL的握手过程: 1. 客户端提交https请求 2. 服务器响应客户,并把证书公钥发给客户端 3. 客户端验证证书公钥的有效性 4. 有效后,会生成一个会话密钥 5. 用证书公钥加密这个会话密钥后,发送给服务器 6. 服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥 7. 客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信当您在服务器上安装 SSL 证书且浏览器连接到服务器时,SSL 证书会触发 SSL 或 TLS 协议,此类协议将会加密服务器和浏览器之间(或服务器之间)发送的信息。当然了,证书工作的实际详情可能会更复杂一些。SSL 直接在传输控制协议 (TCP) 基础上高效运行,像安全毯一样发挥着重要防护作用。它允许更高协议层保持不变,同时确保连接安全。所以在 SSL 层之下,其他协议层能够正常工作。在正确使用 SSL 证书的情况下,攻击者只能看见您的网络连接至哪个 IP 和端口,以及传送的大概数据量。攻击者可能会终止连接,但服务器和用户都能判断连接已被第三方断开。但是,他们无法拦截任何信息,因此攻击也基本上是无功而返。黑客可能会绞尽脑汁找到用户连接的主机名,但关键问题是,他们找不到其他 URL。因为连接已加密,重要信息仍然安全无虞。SSL 直接在传输控制协议 (TCP) 基础上高效运行,像安全毯一样发挥着重要防护作用。它允许更高协议层保持不变,同时确保连接安全。所以在 SSL 层之下,其他协议层能够正常工作。好了,关于ssl证书的工作原理就介绍到这里了!!!2023-08-11 08:24:533
ssl用哪些加密算法,认证机制
要知道算法跟机制做什么先?虽然不太清楚你的意图,不过如果想做ssl数字证书,可以找NICE BOX做,收费便宜,也能省事。2023-08-11 08:25:523
电子商务简答题:简述SSL协议银行卡网上支付的过程
具体地说,SSL (Secure Socket Layer)为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。 服务器认证阶段:1客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。 用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。2023-08-11 08:26:012
全站HTTPS能带来怎样的优势?HTTPS原理是什么,如何加密
HTTPS的主要好处之一是它增加了安全性和信任。它可以保护用户免受可以从受损或不安全的网络发起的中间人(MitM)攻击。黑客可以使用此类技术窃取您客户的敏感信息。2023-08-11 08:26:095
全站HTTPS能带来怎样的优势?HTTPS原理是什么,如何加密
全站https会带来以下优势:1、全网站加https会更安全https的主要功能之一是确保数据在传输的过程中被加密,只有相应的服务器或用户浏览器接收时才能被解密,避免了被第三方拦截和篡改。https还有另外一个功能是提供可信的服务器认证,这是一套黑客不能随意篡改的认证信息,使相关用户确定他们正在与正确的服务器通信。如果没有全网站加https,会导致一些页面为https,而一些也页面则还是http,当通过http或不安全的baiCDN服务加载其他资源(例如JS或CSS文件)时,网站也存在用户信息被泄露的风险,而全网站https是防止这种风险最简单且有效的方法。2、帮用户识别钓鱼网站上面提到了https可以进行服务器认证,当服务器的真实身份得到认证之后可以有效的区别于钓鱼网站。全网站加https后,浏览器则会内置安全机制,实时查验证书状态,通过浏览器向用户展示网站的认证信息,让用户能够轻松识别网站的真实身份,防止误入钓鱼、仿冒网站。3、对搜索引擎更友好当网站存在https和http两种协议时,需要以https这http两种方式管理整个网站,并且需要仔细、精确的控制重定向。网站很容易在两个协议中被一个或多个网页解析,导致搜索引擎抓取和索引出单个网页的两个版本,从而导致网页的搜索可见性降低(因为搜索引擎会认为这两个网页相互竞争)。即使没有这种风险,搜索引擎有时会索引某些错误协议的网页,从而对点击进入的用户进行不必要的重定向,反而对服务器造成了不必要的压力,稀释了搜索权限并会减慢网页加载速度。2023-08-11 08:26:513
HTTP和HTTPS原理和区别
HTTP协议: HTTP(超文本传输协议),是应用层协议,并且是无状态协议,常基于TCP/IP协议传输数据。协议本身并不会保存用户的任何信息,每次请求都是独立的,独立的请求可以减小服务器的压力,支持更大的并发需求。 HTTPS协议 HTTPS是以安全为目标的HTTP通道,即HTTP下加入SSL层,HTTPSDE安全基础是SSL。 两者的区别: 1、HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费。 2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的ssl加密传输协议。 3、HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。 4、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。2023-08-11 08:26:591
HTTPS 为什么安全? 真的安全吗?
https是目前互联网中比较安全的一种信息传输方式,也是越来越受网民们的喜爱,因为它可以保障隐私数据在传输的过程中不被监听、窃取和篡改。首先客户端发起https请求:客户端会发送一个密文族给服务器端。(采用https协议的服务器必须要有一张SSL证书,因此是需要申请SSL证书的。)然后服务器端进行配置:服务器端则会从这些密文族中,挑选出一个。然后是传送证书:这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构、过期时间等等。接下来客户端解析证书:客户端会验证公钥是否有效。然后进行传送加密信息:传送证书加密后的随机值。服务器端进行解密信息:服务器端利用私钥进行解密,得到了客户端传过来的随机值,然后把内容通过该值进行对称加密。传输加密后的信息:服务器端用随机值加密后的信息,可以在客户端被还原。最后客户端进行解密信息:客户端用之前生成的随机值解密服务端传送过来的信息,于是获取了解密后的内容。整个过程配合的非常完美,第三方是无法插手干预的,这就保障了数据在传输过程中的安全。2023-08-11 08:27:112
Https为什么是安全的
HTTPS使用SSL/TLS协议对通信进行加密,使攻击者无法窃取数据。SSL/TLS还确认网站服务器是它所说的那个人,防止假冒。这可以阻止多种网络攻击(就像食品安全可以预防疾病一样)。2023-08-11 08:27:543
ssl协议在哪一层
https工作在什么层1、第七层。网络七层协议(OSI)是一个开放性的通信系统互连参考模型,从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层。第7应用层与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。2、应用传输:HTTP工作于应用层、HTTPS工作在传输层。3、HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。HTTPS主要作用是:(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;(2)对网站服务器进行真实身份认证。4、HTTPS工作原理是什么什么是HTTPSHTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。ssl协议工作在哪一层ssl属于安全套接层加密。SSL(SecureSocketLayer安全套接层)以及其继承者TSL(TransportLayerSecurity传输层安全)是为了网络通信安全提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。按书上的话,那SSL应该属于运输层了。但是这应该两字让我又上网查了一下,发现各种说法都有:会话层、表示层、介于两层之间...都有。SSL(SecureSocketsLayer安全套接字协议),及其继任者传输层安全(TransportLayerSecurity,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。ssl协议工作在tcp/ip的什么协议层之上SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL协议是一种位于TCP/IP协议之上的安全协议,它使用公钥加密技术和对称密钥加密技术来保证数据传输的安全。SSL/TSL到底是属于哪一层的协议?按书上的话,那SSL应该属于运输层了。但是这应该两字让我又上网查了一下,发现各种说法都有:会话层、表示层、介于两层之间...都有。ssl属于安全套接层加密。SSL(SecureSocketLayer安全套接层)以及其继承者TSL(TransportLayerSecurity传输层安全)是为了网络通信安全提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议。它通过握手协议(HandshakeProtocol)和传输协议(RecordProtocol)来解决传输安全的问题。2023-08-11 08:28:271