互联网通信协议 & HTTPS
互联网通信协议
人与人之间的交流依靠共同的语言和约定俗成的语法;计算机的交互则通过二进制数据(高低电平)以及各种协议。
通信协议定义了通信中的语法学, 语义学和同步规则以及可能存在的错误检测与纠正。
国际电信联盟电信标准化部门(ITU-T)与国际标准组织(ISO)参与制定标准。
OSI
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI)是一种概念模型,由 ISO 提出。它试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1(标准收费)。
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。平时我们接触到只都是最上面一层,而底层的交互我们是未曾感觉到的。
一、物理层
物理层(Physical Layer)为传输数据所需要的物理链路的创建、维持、拆除,提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可以在各种物理媒体上传输。它的主要功能就在于:为数据端设备提供传送数据的通路;传输数据。
常见物理层协议
电话网络modems- V.92
IRDA (Infrared Data Association 红外通讯技术)物理层
USB (Universal Serial Bus 通用串行总线)物理层
...
常见物理层设备
网卡、光纤、集线器、CTA-5线 ...
二、数据链路层
数据链路层(Data Link Layer)在两个网络实体之间提供数据链路连接的创建、维持和释放管理。构成数据链路数据单元(frame 帧),并对帧定界、同步、收发顺序进行控制。以及传输过程中的网络流量控制、差错检测和差错控制等方面。
以太网
以太网 (Ethernet 协议)规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
MAC地址
连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。数据包(“帧” Frame)的标头(Head)中 就包含发送方和接收方的MAC地址。
交换机
当同一局域网内的A主机给B主机传输数据时,数据包在以HUB(集线器)为架构的网络上是以广播方式传输的,由每一台终端通过验证数据报头的MAC地址来确定是否接收。也就是说,在这种工作方式下,同一时刻网络上只能传输一组数据帧的通讯,如果发生碰撞还得重试。这就是通常意义上的共享带宽。而这种情况下,所有可以收到广播数据的终端就构成一个冲突域。
交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在,广播到所有的端口,接收端口回应后交换机会“学习”新的MAC地址,并把它添加入内部MAC地址表中。交换机可以划分冲突域(交换机划分每一台终端单独的冲突域,以避免冲突),但不能分割广播域(也就意味着,连接在该交换机上的每一个设备都能够收到来自其他设备的广播)。
三、网络层
网络层(Network Layer)提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。由于TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层。
交换机无法分割广播域,它只能形成一个个局域网,那么如何将这些局域网统统连接起来,成为互联网呢?
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
IP
IP(Internet Protocol 网际协议)目的是根据源主机和目的主机的地址来传送数据。
IP封装
数据在IP互联网中传送时会被封装为数据包。IP协议的独特之处在于:在报文交换网络中主机在传输数据之前,无须与先前未曾通信过的目的主机预先创建好一条特定的“通路”。互联网协议提供了一种“不可靠的”数据包传输机制(也被称作“尽力而为”或“尽最大努力交付”);也就是说,它不保证数据能准确的传输。数据包在到达的时候可能已经损坏,顺序错乱(与其它一起传送的报文相比),产生冗余包,或者全部丢失。如果应用需要保证可靠性,一般需要采取其他的方法,例如利用IP的上层协议控制。
IP提供的服务
由于封装带来的抽象机制,IP能够在各种各样的网络上工作,例如以太网,ATM,FDDI,Wi-Fi,令牌环等等。每个链路层的实现可能有自己的方法(也有可能是完全没有它自己的方法),把IP地址解析成相应的数据链路地址。IPv4使用地址解析协议(ARP),而IPv6采用邻居发现协议(NDP)。
可靠性
互联网协议的设计原则,假定网络基础设施本身就是不可靠的单一网络元素或传输介质,并且它使用的是动态的节点和连接。不存在中央监测和性能衡量机制来跟踪和维护网络的状态。为了减少网络的复杂性,大部分网络只能故意地分布在每个数据传输的终端节点。传输路径中的路由器只是简单地将数据报文发送到下一个匹配目的地址的路由前缀的本地网关。
由于这种设计的结果,互联网协议只提供尽力传送,其服务也被视为是不可靠的。在网络专业语言中是一种无连接的协议,相对于所谓的面向连接的模式。在缺乏可靠性的条件下允许下列任何故障发生:
(1)数据损坏
(2)丢失数据包
(3)重复到来
(4)数据包传递乱序;意思是,如果包'A'是在包'B'之前发送的,但B可能在A到达前到达。
互联网协议提供的唯一帮助是,IPv4规定通过在路由节点计算校验和来确保IP数据报头是正确的。这个带来的副作用是当场丢弃报头错误的数据报文。在这种情况下不需要发送通知给任一个终端节点,但是互联网控制消息协议(ICMP)中存在一个机制来做到这一点。
但是,IPv6为了快速传输已经放弃了计算校验和的使用。
对这些可靠性问题的更正是一个上层协议的责任。例如,一个上层协议为了确保按顺序传送可能要缓存数据,直到数据可以传递给应用程序。
除了可靠性问题,互联网及其组成部分的动态性和多样性不能确保任何路径是有能力地或合适地完成所要求的数据传输,即使路径是有效并且可靠的。技术限制之一是在给定的链路上允许的数据包的大小。应用程序必须确保它使用适当的传输特性。这种责任还在于一些在应用层协议和IP之间的上层协议。存在审查的本地连接尺寸最大传输单位(MTU),以及整个预计到目标路径时使用IPv6。IPv4的网络层有自动分片成更小的单位进行传输原始数据报的能力。在这种情况下,IP确实能够为乱序的分片进行顺序排序。
ARP
ARP(Address Resolution Protocol 地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。ARP协议,可以工作在同一个网段的终端之间,也可以工作在不同网段的路由器之间。
路由器
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。
因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息。
四、传输层
传输层(Transport Layer)为应用进程提供端到端的通信服务,提供面向连接的数据流支持、可靠性、流量控制、多路复用等服务。简单来说,传输层提供应用程序到应用程序的可靠连接,以及为该连接服务的多种功能,例如数据流支持、流量控制、多路复用等等
传输层服务通过传输层协议的编程接口传递给应用进程。该服务可以包括以下功能:
- 连接导向式通信:通常对于一个应用进程来说,把连接解读为数据流而非处理底层的无连接模型(如用户数据报协议(UDP)与网际协议(IP)的数据报文模型)更加容易。
- 相同次序交付:网络层通常不保证数据包到达顺序与发送顺序相同,但这往往是一个可取的特点。这通常是通过给报文段编号来完成的,接收者按次序将它们传给应用进程。这可能会造成队头阻塞。
- 可靠性:由于网络拥塞和错误,数据包可能在传输过程中丢失。通过检错码(如校验和),传输协议可以检查数据是否损坏,并通过向发送者传ACK或NACK消息确认正确接收。自动重发请求方案可用于重新传输丢失或损坏的数据。
- 流量控制:有时必须控制两个节点之间的数据传输速率以阻止快速的发送者传输超出接收缓冲器所能承受的数据,造成缓冲区溢出。这也可以通过减少缓冲区不足来提高效率。
- 拥塞避免:拥塞控制可以控制进入到电信网络的流量。
- 多路复用:端口可以在单个节点上提供多个端点。例如,邮政地址的名称是一种多路复用,并区分同一位置的不同收件人。每个计算机应用进程会监听它们自己的端口,这使得在同一时间可以使用多个网络服务。它是在TCP/IP模型中是传输层的一部分,但在OSI模型中属于会话层。
UDP
UDP(User Datagram Protocol 用户数据报协议)数据包,也是由"标头"和"数据"两部分组成。"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
TCP
UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP(Transmission Control Protocol 传输控制协议)就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
TCP 运作方式
TCP协议的运行可划分为三个阶段:连接创建(connection establishment)、数据传送(data transfer)和连接终止(connection termination)。操作系统将TCP连接抽象为套接字表示的本地端点(local end-point),作为编程接口给程序使用。在TCP连接的生命期内,本地端点要经历一系列的状态改变。
TCP 创建通路
TCP用三路握手(或称三次握手,three-way handshake)过程创建一个连接。在连接创建过程中,很多参数要被初始化,例如序号被初始化以保证按序传输和连接的强壮性。
TCP 连接的正常创建
一对终端同时初始化一个它们之间的连接是可能的。但通常是由一端打开一个套接字(socket)然后监听来自另一方的连接,这就是通常所指的被动打开(passive open)。服务器端被被动打开以后,用户端就能开始创建主动打开(active open)。
(1)客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三路握手的一部分。客户端把这段连接的序号设定为随机数A。
(2)服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机产生的序号B。
(3)最后,客户端再发送一个ACK。当服务端收到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包的序号被设定为收到的确认号A+1,而响应号则为B+1。
如果服务器端接到了客户端发的SYN后回了SYN-ACK后客户端掉线了,服务器端没有收到客户端回来的ACK,那么,这个连接处于一个中间状态,即没成功,也没失败。于是,服务器端如果在一定时间内没有收到的TCP会重发SYN-ACK。在Linux下,默认重试次数为5次,重试的间隔时间从1s开始每次都翻倍,5次的重试时间间隔为1s, 2s, 4s, 8s, 16s,总共31s,第5次发出后还要等32s才知道第5次也超时了,所以,总共需要 1s + 2s + 4s+ 8s+ 16s + 32s = 63s,TCP才会断开这个连接。使用三个TCP参数来调整行为:tcp_synack_retries 减少重试次数;tcp_max_syn_backlog,增大SYN连接数;tcp_abort_on_overflow决定超出能力时的行为。
TCP 资源使用
主机收到一个TCP包时,用两端的IP地址与端口号来标识这个TCP包属于哪个session。使用一张表来存储所有的session,表中的每条称作Transmission Control Block(TCB),tcb结构的定义包括连接使用的源端口、目的端口、目的ip、序号、应答序号、对方窗口大小、己方窗口大小、tcp状态、tcp输入/输出队列、应用层输出队列、tcp的重传有关变量等。
服务器端的连接数量是无限的,只受内存的限制。客户端的连接数量,过去由于在发送第一个SYN到服务器之前需要先分配一个随机空闲的端口,这限制了客户端IP地址的对外发出连接的数量上限。从Linux 4.2开始,有了socket选项IP_BIND_ADDRESS_NO_PORT,它通知Linux内核不保留usingbind使用端口号为0时内部使用的临时端口(ephemeral port),在connect时会自动选择端口以组成独一无二的四元组(同一个客户端端口可用于连接不同的服务器套接字;同一个服务器端口可用于接受不同客户端套接字的连接)。
对于不能确认的包、接收但还没读取的数据,都会占用操作系统的资源。
TCP 数据传输
在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和检测报文段的错误,即无错传输;使用确认和计时器来检测和纠正丢包或延时;流控制(Flow control);拥塞控制(Congestion control);丢失包的重传。
- 可靠传输
通常在每个TCP报文段中都有一对序号和确认号。TCP报文发送者称自己的字节流的编号为序号,称接收到对方的字节流编号为确认号。TCP报文的接收者为了确保可靠性,在接收到一定数量的连续字节流后才发送确认。这是对TCP的一种扩展,称为选择确认(Selective Acknowledgement)。选择确认使得TCP接收者可以对乱序到达的数据块进行确认。每一个字节传输过后,ISN号都会递增1。
通过使用序号和确认号,TCP层可以把收到的报文段中的字节按正确的顺序交付给应用层。序号是32位的无符号数,在它增大到232-1时,便会回绕到0。对于ISN的选择是TCP中关键的一个操作,它可以确保强壮性和安全性。
TCP协议使用序号(sequence number)标识每端发出的字节的顺序,从而另一端接收数据时可以重建顺序,无惧传输时的包的乱序交付或丢包。在发送第一个包时(SYN包),选择一个随机数作为序号的初值,以克制TCP序号预测攻击.
发送确认包(Acks),携带了接收到的对方发来的字节流的编号,称为确认号,以告诉对方已经成功接收的数据流的字节位置。Ack并不意味着数据已经交付了上层应用程序。
可靠性通过发送方检测到丢失的传输数据并重传这些数据。包括超时重传(Retransmission timeout,RTO)与重复累计确认(duplicate cumulative acknowledgements,DupAcks)。 - 基于重复累计确认的重传
如果一个包(不妨设它的序号是100,即该包始于第100字节)丢失,接收方就不能确认这个包及其以后的包,因为采用了累计ack。接收方在收到100以后的包时,发出对包含第99字节的包的确认。这种重复确认是包丢失的信号。发送方如果收到3次对同一个包的确认,就重传最后一个未被确认的包。阈值设为3被证实可以减少乱序包导致的无作用的重传(spurious retransmission)现象。选择性确认(SACK)的使用能明确反馈哪个包收到了,极大改善了TCP重传必要的包的能力。 - 超时重传
发送方使用一个保守估计的时间作为收到数据包的确认的超时上限。如果超过这个上限仍未收到确认包,发送方将重传这个数据包。每当发送方收到确认包后,会重置这个重传定时器。典型地,定时器的值设定为 {\displaystyle {\text{smoothed RTT}}+\max(G,4\times {\text{RTT variation}})} {\displaystyle {\text{smoothed RTT}}+\max(G,4\times {\text{RTT variation}})} 其中 {\displaystyle G} G是时钟粒度。进一步,如果重传定时器被触发,仍然没有收到确认包,定时器的值将被设为前次值的二倍(直到特定阈值)。这可对抗 中间人攻击方式的拒绝服务攻击,这种攻击愚弄发送者重传很多次导致接受者被压垮。 - 数据传输举例
(1)发送方首先发送第一个包含序列号为1(可变化)和1460字节数据的TCP报文段给接收方。接收方以一个没有数据的TCP报文段来回复(只含报头),用确认号1461来表示已完全收到并请求下一个报文段。
(2)发送方然后发送第二个包含序列号为1461,长度为1460字节的数据的TCP报文段给接收方。正常情况下,接收方以一个没有数据的TCP报文段来回复,用确认号2921(1461+1460)来表示已完全收到并请求下一个报文段。发送接收这样继续下去。
(3)然而当这些数据包都是相连的情况下,接收方没有必要每一次都回应。比如,他收到第1到5条TCP报文段,只需回应第五条就行了。在例子中第3条TCP报文段被丢失了,所以尽管他收到了第4和5条,然而他只能回应第2条。
(4)发送方在发送了第三条以后,没能收到回应,因此当时钟(timer)过时(expire)时,他重发第三条。(每次发送者发送一条TCP报文段后,都会再次启动一次时钟:RTT)。
(5)这次第三条被成功接收,接收方可以直接确认第5条,因为4,5两条已收到。
五、应用层
应用层(Application layer)直接和应用程序接口并提供常见的网络应用服务。
常见的应用层协议,HTTP、HTTPS、FTP、IMAP、DNS...
HTTPS (Hyper Text Transfer Protocol over Secure Socket Layer) 安全的超文本传输协议
Hash(散列函数)
把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
常用hash算法的介绍:
MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest(消息摘要) 的缩写。它适用在32位字长的处理器上用高速软件实现——它是基于 32位操作数的位操作来实现的。
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。"数字指纹"特性。
SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于2^64的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。
对称加密算法
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。 收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
大多数的对称算法中,加密密钥和解密密钥是相同的(即使不同,加密密钥也能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来),所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。
具体的算法:DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
非对称加密算法
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;甲方再用自己的私匙对乙方发送回来的数据进行验签。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
常见的RSA加密算法就是一种非对称加密算法。
TLS
SSL(Secure Sockets Layer)是网景公司设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。
2014年10月,Google发布在SSL 3.0中发现设计缺陷,建议禁用此一协议。攻击者可以向其发送虚假错误提示,然后将安全连接强行降级到过时且不安全的SSL 3.0,然后就可以利用其中的设计漏洞窃取敏感信息。Google在自己公司相关产品中陆续禁止回溯兼容,强制使用TLS(Transport Layer Security 传输层安全性协议)协议。Mozilla也在11月25日发布的Firefox 34中彻底禁用了SSL 3.0。微软同样发出了安全通告。
IETF(互联网工程任务组)将SSL标准化,并将其称为TLS(Transport Layer Security)。从技术上讲,TLS 1.0与SSL 3.0的差异非常微小。但正如RFC所述:“本协议和SSL 3.0之间的差异并不是显著,却足以排除TLS 1.0和SSL 3.0之间的互操作性”。
TLS包含三个基本阶段:
(1)对等协商支持的密钥算法
(2)基于非对称密钥的信息传输加密和身份认证、基于PKI证书的身份认证
(3)基于对称密钥的数据传输保密
在第一阶段,客户端与服务器协商所用密码算法。当前广泛实现的算法选择如下:
- 公钥私钥非对称密钥保密系统:RSA、Diffie-Hellman、DSA;
- 对称密钥保密系统:RC2、RC4、IDEA、DES、Triple DES、AES以及Camellia;
- 单向散列函数:MD5、SHA1以及SHA256。
Client Hello
ClientVersion 3,1
ClientRandom[32]
SessionID: None (new session)
Suggested Cipher Suites:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_DES_CBC_SHA
Suggested Compression Algorithm: NONE
Server Hello
Version 3,1
ServerRandom[32]
SessionID: bd608869f0c629767ea7e3ebf7a63bdcffb0ef58b1b941e6b0c044acb6820a77
Use Cipher Suite:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
Compression Algorithm: NONE