SSL/TLS协议理解、mbedtls开源库介绍、及应用(SSL+TCP 、SSL+FTP)

7 篇文章 2 订阅
6 篇文章 1 订阅

0.前言

  • SSL/TLS协议

  • 一、作用

不使用SSL/TLS的网络通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

(1) 窃听风险(eavesdropping):第三方可以获知通信内容。

(2) 篡改风险(tampering):第三方可以修改通信内容。

(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

SSL/TLS协议是为了解决这三大风险而设计的,希望达到:

(1) 所有信息都是加密传播,第三方无法窃听。

(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。

(3) 配备身份证书,防止身份被冒充。

互联网的通信安全,建立在SSL/TLS协议之上

  • 二、历史

1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。

1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。

1996年,SSL 3.0版问世,得到大规模应用。

1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版

2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版

  • 三、运行过程

SSL/TLS协议的基本思路是采用公钥加密法(非对称加密),也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密

(1)如何保证公钥不被篡改?

解决方法:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。

(2)公钥加密计算量太大,如何减少耗用的时间?

解决方法:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

因此,SSL/TLS协议的基本过程是这样的:

(1) 客户端向服务器端索要并验证公钥。

(2) 双方协商生成"对话密钥"。

(3) 双方采用"对话密钥"进行加密通信。

上面过程的前两步,又称为"握手阶段"(handshake)。

  • 握手阶段的详细过程 

       

step1:   客户端发出请求(ClientHello)

首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。

在这一步,客户端主要向服务器提供以下信息。

(1) 支持的协议版本,比如TLS 1.0版。

(2) 一个客户端生成的随机数,稍后用于生成"对话密钥"。

(3) 支持的加密方法,比如RSA公钥加密。

(4) 支持的压缩方法

这里需要注意的是,客户端发送的信息之中不包括服务器的域名。也就是说,理论上服务器只能包含一个网站,否则会分不清应该向客户端提供哪一个网站的数字证书。这就是为什么通常一台服务器只能有一张数字证书的原因。

对于虚拟主机的用户来说,这当然很不方便。2006年,TLS协议加入了一个Server Name Indication扩展,允许客户端向服务器提供它所请求的域名。

step2: 服务器回应(SeverHello)

服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。服务器的回应包含以下内容。

(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信

(2) 一个服务器生成的随机数,稍后用于生成"对话密钥"。

(3) 确认使用的加密方法,比如RSA公钥加密。

(4) 服务器证书

除了上面这些信息,如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供"客户端证书"。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。

step3: 客户端回应

客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。

如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送下面三项信息。

(1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。

(2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

(3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称"pre-master key"。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。

至于为什么一定要用三个随机数,来生成"会话密钥",dog250解释得很好:

"不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。

对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。

pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。"

此外,如果前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息。

step4: 服务器的最后回应

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。

(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容 

 

以上参考连接 :http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 

 

1.mbedtls介绍

mbedTLS(前身 PolarSSL)是一个由 ARM 公司开源和维护的 SSL/TLS 算法库。其使用 C 编程语言以最小的编码占用空间实现了 SSL/TLS 功能及各种加密算法,易于理解、使用、集成和扩展,方便开发人员轻松地在嵌入式产品中使用 SSL/TLS 功能。 

  • 获取途径

https://tls.mbed.org/ 

  •  mbedTLS 软件包提供了如下的能力:
  1. 完整的 SSL v3、TLS v1.0、TLS v1.1 和 TLS v1.2 协议实现
  2. X.509 证书处理
  3. 基于 TCP 的 TLS 传输加密
  4. 基于 UDP 的 DTLS(Datagram TLS)传输加密
  5. 其它加解密库实现。
  •  编译

        mbedtls库本身是基于Linux环境的,在Linux环境下无需改动既可以编译执行。在源码根目录直接执行make命令,就开始自动编译,编译成功后会在programs\ssl目录下生成几个可执行文件,每一个可执行文件对应一个应用示例。通过更改这些用例代码,很容易可以验证自己对于SSL的疑问。

https://www.dazhuanlan.com/2020/03/29/5e809c2ba3582/ 

2.openssl介绍

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用来自动验证和加密/解密通过Internet传输的数据。PowerTCP SSL Tool集成了Microsoft CryptoAPI、Security SupportProvider Interface和Winsock API,通过SSL2、SSL3、PCT和TLS安全协议确保TCP/IP数据的安全。它所包含的功能可用于安全的web访问、FTP客户端和服务器、电子邮件(POP)、TCP客户端和服务器等。可以用它来创建一个安全的eCommerce站点,或只是通过Internet安全地传输应用程序数据,如文件。 概述 运用了世界各地确保事务处理安全的安全协议。Secure Socket Layer(SSL)验证和加密可以确保数据在公共网络上传输时是保密的。 · 与.NET 100%兼容,运用了.NET COM interop技术,包含样例。 · 其特殊的功能是可以运用Dart公司私有的FirewallReady,穿过防火墙在FTP上实现SSL(在连接的两端都需要PowerTCP产品)。 · 支持FTPSSL的所有主要的标准,可以为其它非标准情况进行配置! · 支持Globalscape(TM)、WS_FTP(TM) 和SERV_U的安全实现。 · 与普通的UNIX兼容,如OpenSSL和Certicom Plus(TM)。 · CertificateStore可以创建你自己的证书。 · 通过SSL2、SSL3、PCT或TLS自动验证和加密/解密在Internet或Intranet上发送/接收的数据。 · 可以为TCPTCP Server、 POP3、FTPFTP Server确保ActiveX COM控件的安全。 · 也包含不安全的 TCP和Daemon 控件,用来构建代理服务器应用程序。 · 支持客户端和服务器端验证。 · 可以编写提供客户端验证的HTTP/S应用程序,而且不会显示另人讨厌的让用户选择安全证书的对话框,。 · CertificateList ActiveX 控件可以很容易地管理数字证书。 · Certificate COM 对象提供了所发送的和接收的数字证书的细节。 · CertificateStore COM 对象提供了安装的Certificate对象的集合,以方便Current User和Local Machine进行管理,并可以将Secure Servers也作为Services来构建。 · 用于证书验证的属性和事件可以让你完全控制接收的或拒绝的内容。 · 支持 COM+ Component Services。 · 可用于多线程的环境。 · 包含免费版权。 · 包含封装类,可以方便地集成到Visual C++中。
复习TCP/IP协议原理与应用第五版这本书需要注意以下几个方面: 1. 理解TCP/IP协议族的基本结构和功能 需要理解TCP/IP协议族的分层结构,包括物理层、数据链路层、网络层、传输层和应用层,以及各层的功能和特点。此外,还需要了解TCP/IP协议族的基本概念,例如IP地址、子网掩码、MAC地址、端口号等。 2. 掌握TCP协议和UDP协议的基本原理和区别 需要掌握TCP协议和UDP协议的基本原理和区别,包括三次握手、四次挥手、流量控制、拥塞控制等TCP协议的实现原理,以及UDP协议的简单实现和应用场景。 3. 熟悉常见的应用协议和其工作原理 需要熟悉常见的应用协议,例如HTTP、FTP、DNS、SMTP等,以及它们的工作原理和应用场景。此外,还需要了解基于TCP/IP协议的网络安全协议,例如SSL/TLS、IPSec等。 4. 掌握网络分析工具的使用方法 需要掌握一些网络分析工具的使用方法,例如Wireshark、tcpdump等,以及如何使用这些工具分析网络数据包,查找网络问题。 考试题目可能会从以下几个方面出题: 1. 理解TCP/IP协议族的基本结构和功能,并能够解释各层的作用和特点。 2. 理解TCP协议和UDP协议的基本原理和区别,并能够解释TCP协议中流量控制、拥塞控制等机制的实现原理。 3. 熟悉常见的应用协议,例如HTTP、FTP、DNS、SMTP等,并能够解释它们的工作原理和应用场景。 4. 能够使用网络分析工具分析网络数据包,查找网络问题,并能够解释网络分析工具的使用方法和技巧。 5. 理解基于TCP/IP协议的网络安全协议,例如SSL/TLS、IPSec等,并能够解释它们的作用和实现原理。 总之,复习TCP/IP协议原理与应用第五版这本书需要全面、深入地理解协议的原理和实现,同时掌握相关工具和方法,不断实践和提升自己的技能水平。在考试中,需要注意理解题目要求,结合实际场景进行分析,并注重细节和实践操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值