最后更新:2021-11-06 05:32:02 手机定位技术交流文章
SPL/TLS协议的要点
SSL简介
SSL和TLS:
SSL(Secure Socketetes Dire)是Netscape于1990年建立的一个协议层,目的是保护万维网的连接,其主要功能是确保隐私、信息完整和身份。1994年版本改为SSLv2,1995年版本改为SSLv3。
TLS用于保证两个通信应用程序之间的保密和数据完整性。 IETTF于199年确立了标准协议,而TLS作为一个整体与SSLv3非常相似,仅对SSLv3作了几处补充和修改。
SSL协议介绍:
SSL是TCP/IP与不同的应用级协议之间的一项非平台和依赖应用程序的协议,目的是加强数据连接的安全支持。
ssl位置
图:SSL在协议层中的地位。
SSL 加密是一个众所周知的协议。
HTTP over SSL:
https://shortcuts SSL最初是为加密网页浏览而创建的,而HTTP是使用SSL进行安全的首个应用层协议。
当 Netscape 在其浏览器中使用 HTTP 超过 SSL 时, 它使用 https://tTP 超过 SSL, 因此我的普通 https 的全名是 HTTP 超过 SSL. HTTPS 后来在 RFC 2818 实现了标准化。 HTTPS 在443 端口操作, 而 HTTP 默认操作在 80 端口操作 。
Email over SSL:
电子邮件协议与在SSL上的HTTP类似,包括:
SSL还得到SMTP、POP3和IMAP的支持。
RFC2487根据TLS标准界定SMTP。
RFC2595载有POP3和IMAP在TLS上的标准化文件。
SSL原理详解
SSL协议结构:
SSL结构
图:SSL协议的结构。
SSL结构有两个协议分层:底部的SSL记录协议层(SSL记录协议层)和顶部的SSL Handhake协议层(SSL Handhake协议层)。
SSL合同分为两大层次:
SSL在记录协议方面的目标是为高级别协议提供基本的安保服务;SSL记录协议是专门为HTTP协议而建立的,允许超文本传输协议HTTP在SSL运作;记录与安保有关的活动的不同高级别协议,如压缩、加密解密、计算和MAC核查。
SSL 握手层包括 SSL Hanhake 协议、 SSL 密码更改协议(SSL change Chipher Spec 协议) 和 SSL 警告协议(SSL 警告协议) 。 这些握手协议用于传输 SSL 管理信息, 允许对协议传输数据进行相互验证, 谈判加密方法, 以及关键创建等 。
SSL 握手协议的任务是协调客户和服务器的状况,以便双方的地位能够同步。
记录和握手协议是其中最重要的:
SSL 记录协议:它基于可靠的传输(例如SSL)。 TCP 提供最基本的数据封装、压缩、加密和其他特征,以达成高级别协议。
SSL 握握手协议:该协议以SSL 记录协议为基础,用于认证连接的双方,谈判加密技术,交换加密密钥等。
SSL 的创建步骤与 IPSec VPN 的创建步骤相当 :
有两个主要阶段:
(1) SSL建立了第一阶段:握手阶段:
协商加密算法
认证服务器
创建加密密钥和 MAC 地址 。
此步骤相当于 IKE 在 IPSec VPN 中的工作 。
(2) SSL建立:安全数据传输:
使用已建立的 SSL 连接时数据传输是安全的 。
这一阶段相当于IPSec VPN ESP的工作。
SSL 原则( SSL 配置) 握手协议进程 :
协商过程
图:SSL生成程序概况。
在与 SSL 进行互动之前,先使用 SSL Hanhhake 协议,在对话的两端握手,以便谈判数据传输(例如加密方法、共享密钥、关键生成材料等)中应使用的必要安全设置,并确认终端标识。
SSL安装程序共包括13个包件,初始安装至少需要9个包件。
建立SSL的第一阶段:
客户端先将 ClieentHello 信件发送到服务器, 服务器收到 ClietHello 信件后再使用 ServerHello 信件回复 。
第一阶段
图:第一阶段纸交换表
ClientHello
客户端通过向服务器发送 Cliet 欢迎信息启动握手, 服务器由客户端生成的随机数字组成, 如 Random1 、 客户端支持的加密软件包( 支持 Ciphers) 和 SSL 版本等信息 。
ClientHello
图:Cline Hello报告实例
客户端 Hello 包含以下信息:
客户端版本
列出客户支持的协议版本,按优先顺序排列,优先考虑客户选择支持的最新协议版本。
Randort 客户端的客户端
会话标识符
当客户端第一次连接到服务器时, 字段将保持空。 在以上示例中, 字段是空的, 表明这是您第一次连接到服务器 。
如果字段不是空, 则会提供 Ssession ID 的 Ssession ID, 以检查 Ssessession ID 的地图, 并用先前使用的 symmyrimayl 密钥恢复 Ssession, 在这样的情况下, ca
加密套件:
客户端向服务器提供它已经知道的密码包列表, 客户端优先排序, 但最终要由服务器来决定是否发送。 TLS 中所使用的密码包有标准格式。 在上一份呈件中, 客户端提供了74套加密软件包。 服务端选择其中之一作为通用加密软件包 。
压缩方法:
但是,在TLS攻击成功的情况下,使用压缩攻击可以捕捉HTTP头部提供的参数,而这次攻击可以劫持Cookie,我们称之为CRIME。TLS 1。
扩展包:
附加变量(例如服务器名称、填充、支持的签名方案等)可用作添加内容
这些是客户的问候,如果收到这些问候,则由服务器核实,然后由服务器发送。
ServerHello
收到客户问候后,服务器必须提供服务器问候信息,然后服务器将检查客户指定要求,如TLS版本和算法,如果服务器接受和支持所有条件,服务器将发送证书和其他细节;否则服务器将传送握手失败信息。
如果批准, 服务将发送服务器欢迎信给客户端, 确定一个来自支持塞浦路斯的加密软件包, 其中显示将使用哪些算法加密和创建摘要, 以及随机整数随机随机随机随机随机随机随机随机随机随机随机随机随机随机随机随机数。
ServerHello
图: 服务器 Hello 报告抓取
Server Hello的具体论点如下:
服务器版本 :
服务器选择最新的客户端支持版本 。
服务器上的随机数生成器
服务器和客户端生成32字节的随机数,用于生成加密密钥。
加密套件:
服务器从客户端加密软件包列表中选择加密软件包 。
会议编号:
服务器在 TLS 缓存中保存商定的 SLS 缓存中的 Ssession 参数, 并创建匹配的 Ssession id 。 服务器 Hello 向客户端发送了。 客户可以将商定的参数写入此会话 id 并指定到期日期 。 客户端将在 Clit Hello 中包括此 id 。 如果客户在到期日之前再次连接到服务器, 服务器可以核查与会代号相对应的缓存参数, 并且无需重新使用这些参数
当涉及到亚马逊和谷歌等高流量应用程序时,这一策略有缺陷。 每天有数百万人连接到服务器,服务器必须保留使用会话键的所有会话参数的 TLS 缓存。这是一个巨大的代价。
要解决这个问题, 会话入门已引入扩展的软件包, 客户可以指定它是否支持客户问候中的会话入门。 服务器随后将新建一个会话图, 并使用仅为服务器所知的私人密钥加密 Ssession 参数。 它将保存在客户端上, 所以所有会话数据只存储在客户端计算机上, 但Ticket 仍然安全, 因为只有服务器知道密钥, 会话入门被引入扩展的软件包, 客户可以指定它是否支持客户问候中的会话入门。 服务器随后将新建一个会话图, 并使用只为服务器所知的私人密钥加密 Ssession 参数。 它将保存在客户端上, 所以所有会话数据只存储在客户端计算机上, 但机盘仍然安全, 因为只有服务器知道密钥 。
与Clit Hello合作,这一数据可以作为 " 会话票 " 的分机号提供。
压缩算法:
如果服务器支持它, 它会接受客户端选择的压缩技术 。
扩展包
在这一步骤之后,客户服务器发现了以下信息:
SSL版本
用于关键交换、信息认证和加密的比值
压缩方法
对于创建密钥,使用两个随机数字。
SSL建立第二阶段:
无法关闭临时文件夹:%s。
第二阶段
图:第二阶段的SSL纸质交换矩阵演变情况。
服务器开始了SSL第二阶段的握手,这是现阶段所有通信的唯一发件人,客户是所有信息的唯一收件人。
证书 : 服务器向客户端提供数字证书以及根 CA 的整个链条, 让客户端在服务器证书中验证服务器的公用密钥 。
服务器密钥交换( 可选) : 这取决于密钥交换算法 。
请求证书 : 服务器可能需要客户端验证自己 。
服务器握手已经完成,表明第二阶段已经完成,第三阶段开始。
证书消息 - 首次创建时必须使用证书 。
一般而言,除非会议复会,该电文无需发送,而且必须包含在SSL握手的整个程序中。电文包含X.Cucificate 509. 交换钥匙时,证书包括公用钥匙,该公用钥匙交给客户以验证签名或加密通信。
这一阶段涉及向客户发送自己的证书的服务,让客户核实其真实性,以及客户在认证后从证书中提取公用钥匙。
证书
图:无法清除临时文件夹:%s
交换服务器密钥( 可选)
关键交换技术(如RSA或DH)是根据ClitHello电文中先前提供的加密信息决定的,例如服务器关键交换电文包括完成关键交换所需的一系列参数。
serverKeyExchange
图:服务器密钥交换报告
由于这是一个DH算法,发件人的DH参数是必要的。 RSA技术不需要这一步骤。
客户端无法在 Diffie- Hellman 中计算预密钥; 两者都参与计算, 因此客户端必须从服务器上获取 Diffie- Hellman 公用密钥 。
如上图所示,关键交换也得到签名的保障。
可选证书请求 - 单向或双向认证
此阶段是可选的, 并可在高度安全需要普遍情况下使用。 服务器用于验证客户。 服务器发出来自证书请求的邮件, 请客户提供自己的验证证书。 此信件指定了服务器( RSA、 DSA、 ECDSA等) 和 CA 列表所接受的证书类型( RSA、 DSA、 ECDSA等) 。 该列表包含服务器信任的所有证书签发者的名单, 客户用来筛选证书 。
Server Hello Done
通知中说,服务器已经传送了所有信息,正在等待客户提供更多信息。
ServerHelloDone
数字; 服务器 Hello 完成
建立SSL的第三阶段:
客户端在接收并解释服务器发送的一连串信息后, 客户端将匹配的信息从此端传送到服务器 。
第三阶段
图:SSL第三阶段信息共享矩阵开发。
在这一阶段,客户启动SSL第3阶段,是所有通信的唯一发报机,而服务器是唯一接收所有信件的服务器。
证书( 可选的) : 为了向服务器验证身份, 客户端必须提供可选的证书信息, 在 IIS 中, 需要的客户端证书认证可以配置 。
客户秘密密钥交换(Pre-Master-second):该客户提供该服务的学前钥匙,表示它将使用该服务的公用钥匙加密。
(a) 证书的公用钥匙。
任择证书
如果客户端证书必须在第二阶段服务器上提供, 客户端将在该阶段传输自己的证书。 服务器侧提供证书类型和由服务器侧支持的 CA 列表, 在上一个证书请求电文中, 服务器侧提供由服务器侧支持的证书类型和 CA 列表, 因此客户端会选择符合这两个要求的其自己的证书中的第一个证书。 如果客户端没有证书, 则发送无证书警告 。
Client Key exchange
根据以前从服务器端获得的随机数字,使用多个关键交换方法计算一名高级主管,然后传送到服务器,由高级主管接收主机长。 当然,客户可以使用高级主管计算主机长本身。
如果使用RSA方法,则随机创建48字节,然后在服务器的公用密钥中加密并纳入报告。如果使用 DH 算法,服务器和客户端根据 DH 算法计算相同的预师设置。
ClientKeyExchange
图:ClineKey的交换报告
在将此信件传送到服务器的过程中, 它会使用服务器的公用密钥加密。 服务器解密会使用自己的私人密钥获取预设主钥 。 (向服务器确认您确实拥有客户证书私密密钥 。) 我不知道我在说什么 。
任择证书核查
只有当客户向服务器提交自己的证书时, 此信件才有必要。 它包含自初始信件以来所有握手的签名, 以及 HMAC 值( 带有主机/ 密钥) 。
建立SSL第四阶段:
握手协议已经履行,SSL联系已经形成。
第四阶段
图:SSL为第四阶段绘制了纸质交换图。
客户端启动 SSL 阶段 4 握手以终止服务器 。 此阶段被打破为四个阶段, 前两条信息来自客户端机器, 最后两条信息来自服务器 。
安全连接已经形成, 客户端发布了“ 更改 Cipher Spec ” ( Change Cipher Spec) 信息, 将经过谈判的 CipherSuit 复制到当前连接状态 。 客户端然后使用更新的算法、 可能检查关键交换和认证程序是否成功的关键参数, 以及验证客户端整个握手过程信息的验证值, 发送完整信息 。
ChangeCipherSpec :
代码更改通知表明,将使用相互商定的加密技术和密钥提供以下信号(更改密码系统是一份独立协议,以字节数据包为代表,用于告知服务用户已转而使用先前商定的加密软件包(密码套件),并准备使用先前商定的加密软件包加密和传输数据)。
ClientChangeCipher
图: 密码插件信件报告
是一条事件消息。
Clinet Finished:
客户端握手结束通知, 表示客户端握手阶段已经完成 。 这也是预先传送用于服务器验证的所有内容的散列值( 使用 HMAC 技术计算所有收到和发送的握手摘要, 然后使用错误函数( RFC 5246 中描述的、 加密和交付的 RFC 5246) 计算结果 ) 。
Server Finished:
服务结束时叫大家握手
使用私人密钥解密加密的预机主数据,取决于先前传送的两个明确的随机数字(用户 Hello 和服务器 Hello) Random_C 和 Random_S,使用谈判的密钥计算: enc_key=Fuc (Random_C, Ranom_S, Pre-Master);
计算所有先前信件的散列值,然后解密客户端提供的加密_handshake_message,以确保内容和密钥的准确性。
提供 ChangeCifferSpec (通知客户已更改为已商定的加密软件包状态, 现在准备使用加密软件包和会话秘密加密数据) 。
服务器还使用会话密钥加密完成信件, 以验证握手创建的解密频道是否成功 。
前几届握手会指出,如果客户和部门能够正确解码完成信息并验证正确信息,握手频道已经成功形成,然后数据可以使用由此产生的Session Secret加密。
TLS数据完整性和电文认证代码(HMAC):
当服务器或客户端使用主密钥加密数据时,它也计算了指定数据的校验和(Hashie值),称为电文认证码(MAC)。 然后,MAC在发送该代码之前被列入加密数据中。 键用于从数据中生成MAC。 键用于确保攻击者在传输期间无法从数据中生成同样的MAC, 因此MAC被称为 HMAC。 另一方面,当电文收到时,解分类器将MAC与快递分开,然后用其密钥计算校验和,并将其与MAC收到的密钥进行比较,如果匹配,我们可以断定数据在传输期间没有被篡改。
一些关键隐藏密钥 :
PreMaster secret
PreMaster Secret 是由客户端使用加密技术创建的, 如 RSA 或 Diffie- Hellman 。 它将被用于构建 Master Secret, 与欢迎阶段服务和客户端生成的随机数字相结合。 PreMaster Secret 前两个字节是 TLS 版本号, 这是用于验证握手数据的更关键版本号 。
Master secret
交换结束后,客户和服务处将拥有校长和随机号码;这个随机号码将作为形成硕士秘密的种子,客户和服务处将与PreMaster安全公司一起计算同一名主机。
master
SSL 需要6个加密密钥: 4个密钥和 2个 IV 。 为了信息可信度,客户端需要1个密钥( HMAC ), 因为加密需要1个密钥( HMAC ), 因为组加密需要4个密钥, 服务器也需要1个密钥。 SSL 需要单向的密钥, 不同于其他路径的密钥。 如果一个方向发生攻击, 攻击不会影响另一个方向 。
1
主键由一系列散列值组成。
master_secret = PRF(pre_master_secret,“master secret”,ClientHello.random + ServerHello.random)[0…47];
2
3
使用四个密钥对每一份通信进行加密并按需要核实其完整性:
客户端生成加密密钥: 客户端加密数据, 然后由服务器解密 。
服务器生成加密密钥, 然后服务器加密数据, 客户端解密 。
客户端生成 MAC 密钥 : 客户端生成 MAC, 由服务器验证 。
服务器写入 MAC 密钥: 服务器创建 MAC, 客户认证 MAC 。
SSL会话恢复:
会话恢复表明,如果客户和服务器以前有过一次互动,他们可以绕过第2全面握手阶段进行直接数据传输。
会话恢复
图:SSL会话回收程序。
SSL采用会话回收战略,以减轻SSL握手的巨大开支。
技术和后勤系统协定包括两种类型的会议缓存,以加快建立握手和缓解与协定有关的性能退化和资源消耗的进程(详细分析见下文)。
会话识别会话 ID : 由服务器端支持, 协议中的标准字段, 所以实际上所有服务器都得到了支持, 服务器端为会话节省了身份识别, 通信信息供磋商使用, 恩京克斯的 1M 内存允许保存 4,00 会话识别相关信息, 这些信息消耗了更多的服务器资源 ;
会话会话提示 : 它需要服务器和客户端支持, 是一个扩展的字段, 支持大约60% (没有可靠的统计数据和来源), 在将协议通信信息发送到客户端存储前加密 。 密钥只为服务器所知, 而服务器资源中只有一小部分被使用 。
区别主要在于保存咨询信息的地点和方法,类似于会议以及Cookie,见http://ww.un.org/session/cookie/。如果两者都存在,会议_ticket优先。
恢复特定进程会议(确定会议机制):
如果客户端和服务器已建立连接, 当握手成功时服务器将返回会话 ID, 并在服务器中保存相关通信参数 。
如果客户端需要另一个连接到服务器, 请将已记录的信息从客户端_ ello 中的会话 ID 转到服务器 。
服务器根据收到的信件代号获取缓存记录,如果缓存不恢复,则遵循标准握手程序。
如果找到相关的缓存记录, 请设定更改_ copher_ spec 到加密_ handshake_ message, 这与当前通信参数和主控集散列值相同 。
如果客户端能够通过服务器验证加密数据, 它将另外传输 change_ copher_spec 和加密_ handshake_ message 信件。
当数据由服务器验证时,握手即形成,并开始正常的加密数据交换。
恢复具体届会进程:
如果客户端和服务器之间建立了连接, 服务器将会在客户端将保存的 新的 session_ ticket 数据中提供加密的电文- ticket 信息 。
如果客户端需要另一个连接到服务器, 请在客户端_ ello 中扩展信件- ticket 字段, 并同时将其传送到服务器 。
服务器解密会话- ticket 数据, 如果成功, 则进行常规握手程序 。
如果解密成功, 返回更改_ copher_ spec 和加密_ handshake_ message 信息, 其操作与信件 ID 相似 。
如果客户端能够通过服务器验证加密数据, 它将另外传输 change_ copher_spec 和加密_ handshake_ message 信件。
当数据由服务器验证时,握手即形成,并开始正常的加密数据交换。
SSL记录协议:
SSL记录协议大多用于完成数据分割、加密解密、压缩和降压、完整性检查和数据块密封等高级别协议。
记录协议
图:SSL记录协议的结构。
除其他外,SSL记录包括以下信息:
内容类型
议定书版本号,现为20和3。
记录数据的长度
数据由载荷
信件认证代码 hash 算法计算器
记录
图:SSL说明议定书的运作原则。
将信息分隔成各节;
对每个片段进行压缩
添加片段编号以计算电文代码 MAC 值( 以确保数据完整性) 和压缩片段( 以避免重放攻击) 。
对称密码加密;
最后提交的数据包括数据类型标题、版本号以及压缩长度。
应用数据传输:
一旦所有握握手阶段完成后,应用数据传输可能继续。在传输前应用数据将连接到 MAC 秘密,然后使用写入加密密钥加密数据包。一旦服务器收到客户端的数据,将使用 Cliet 写入加密密钥进行解密,使用服务器的加密加密密钥进行解密,然后使用他们各自的 wriet MAC 密钥核查数据的完整性,包括
本文由 在线网速测试 整理编辑,转载请注明出处。